FuzzyExtractor

A Python implementation of fuzzy extractor

class fuzzy_extractor.FuzzyExtractor(length, ham_err, rep_err=0.001, **locker_args)

The most basic non-interactive fuzzy extractor

__init__(length, ham_err, rep_err=0.001, **locker_args)

Initializes a fuzzy extractor

Parameters:
  • length – The length in bytes of source values and keys.
  • ham_err – Hamming error. The number of bits that can be flipped in the source value and still produce the same key with probability (1 - rep_err).
  • rep_err – Reproduce error. The probability that a source value within ham_err will not produce the same key (default: 0.001).
  • locker_args – Keyword arguments to pass to the underlying digital lockers. See parse_locker_args() for more details.
parse_locker_args(hash_func='sha256', sec_len=2, nonce_len=16)

Parse arguments for digital lockers

Parameters:
  • hash_func – The hash function to use for the digital locker (default: sha256).
  • sec_len – security parameter. This is used to determine if the locker is unlocked successfully with accuracy (1 - 2 ^ -sec_len).
  • nonce_len – Length in bytes of nonce (salt) used in digital locker (default: 16).
generate(value)

Takes a source value and produces a key and public helper

This method should be used once at enrollment.

Note that the “public helper” is actually a tuple. This whole tuple should be passed as the helpers argument to reproduce().

Parameters:value – the value to generate a key and public helper for.
Return type:(key, helper)
reproduce(value, helpers)

Takes a source value and a public helper and produces a key

Given a helper value that matches and a source value that is close to those produced by generate, the same key will be produced.

Parameters:
  • value – the value to reproduce a key for.
  • helpers – the previously generated public helper.
Return type:

key or None