Strong extractors from universal hashing #
The leftover hash lemma, read as a statement about extractors: if hash is a two-universal family
under the uniform seed, then ext x s = hash s x is a strong (k, ε)-extractor with
ε = √(|Output| · 2⁻ᵏ) / 2 (IsTwoUniversal.isStrongExtractor). If
log₂ |Output| + 2 log₂ (1 / δ) ≤ k, the error is at most δ / 2
(IsTwoUniversal.isStrongExtractor_of_logb_le), so universal hashing extracts all but
2 log₂ (1 / δ) bits of the min-entropy Vadhan, Chapter 6,
Håstad, Impagliazzo, Levin, Luby. More generally, an ε-universal family gives error
√(|Output| · (2⁻ᵏ + ε) - 1) / 2 (IsUniversalHash.isStrongExtractor).
A uniformly random Boolean m × n matrix is a two-universal family, so multiplying by it is a
strong extractor from n-bit sources of min-entropy at least m + 2 log₂ (1 / δ) to m bits with
error δ / 2 and an m n-bit seed (BitString.LinearHash.isStrongExtractor).
Main results #
Cslib.Probability.IsTwoUniversal.isStrongExtractor: the leftover hash lemma as a strong extractor.Cslib.Probability.IsTwoUniversal.isStrongExtractor_of_logb_le: its entropy-loss form.Cslib.Probability.IsUniversalHash.isStrongExtractor: the same forε-universal families.Cslib.BitString.LinearHash.isStrongExtractor: Boolean matrix multiplication is a strong extractor.
References #
The leftover hash lemma as a strong extractor. A two-universal family under the uniform
seed is a strong (k, √(|Output| · 2⁻ᵏ) / 2)-extractor.
Entropy loss of hashing. If log₂ |Output| + 2 log₂ (1 / δ) ≤ k, a two-universal family
under the uniform seed is a strong (k, δ / 2)-extractor.
ε-universal hashing as a strong extractor. An ε-universal family under the uniform
seed is a strong (k, √(|Output| · (2⁻ᵏ + ε) - 1) / 2)-extractor. For ε = 1 / |Output| this is
the two-universal bound IsTwoUniversal.isStrongExtractor.
Boolean matrix multiplication is a strong extractor. Multiplying an n-bit source of
min-entropy at least m + 2 log₂ (1 / δ) by a uniformly random Boolean m × n matrix gives m
bits within statistical distance δ / 2 of uniform, even given the matrix.