No Time to Hash: On Super Efficient Entropy Accumulation

Abstract

Real-world random number generators (RNGs) cannot afford to use (slow) cryptographic hashing every time they refresh their state RR with a new entropic input XX. Instead, they use ``superefficient\u27\u27 simple entropy-accumulation procedures, such as Rrotα,n(R)X,R \leftarrow \mathsf{rot}_{\alpha, n}(R) \oplus X, where rotα,n\mathsf{rot}_{\alpha,n} rotates an nn-bit state RR by some fixed number α\alpha. For example, Microsoft\u27s RNG uses α=5\alpha=5 for n=32n=32 and α=19\alpha=19 for n=64n=64. Where do these numbers come from? Are they good choices? Should rotation be replaced by a better permutation π\pi of the input bits? In this work we initiate a rigorous study of these pragmatic questions, by modeling the sequence of successive entropic inputs X1,X2,X_1,X_2,\ldots as independent (but otherwise adversarial) samples from some natural distribution family D{\mathcal D}. Our contribution is as follows. * We define 22-monotone distributions as a rich family D{\mathcal D} that includes relevant real-world distributions (Gaussian, exponential, etc.), but avoids trivial impossibility results. * For any α\alpha with gcd(α,n)=1\gcd(\alpha,n)=1, we show that rotation accumulates Ω(n)\Omega(n) bits of entropy from nn independent samples X1,,XnX_1,\ldots,X_n from any (unknown) 22-monotone distribution with entropy k>1k > 1. * However, we also show that some choices of α\alpha perform much better than others for a given nn. E.g., we show α=19\alpha=19 is one of the best choices for n=64n=64; in contrast, α=5\alpha=5 is good, but generally worse than α=7\alpha=7, for n=32n=32. * More generally, given a permutation π\pi and k1k\ge 1, we define a simple parameter, the covering number Cπ,kC_{\pi,k}, and show that it characterizes the number of steps before the rule (R1,,Rn)(Rπ(1),,Rπ(n))X(R_1,\ldots,R_n)\leftarrow (R_{\pi(1)},\ldots, R_{\pi(n)})\oplus X accumulates nearly nn bits of entropy from independent, 22-monotone samples of min-entropy kk each. * We build a simple permutation π\pi^*, which achieves nearly optimal Cπ,kn/kC_{\pi^*,k}\approx n/k for all values of kk simultaneously, and experimentally validate that it compares favorably with all rotations rotα,n\mathsf{rot}_{\alpha,n}

    Similar works