Blum–Micali algorithm

From testwiki
Jump to navigation Jump to search

The Blum–Micali algorithm is a cryptographically secure pseudorandom number generator. The algorithm gets its security from the difficulty of computing discrete logarithms.[1]

Let p be an odd prime, and let g be a primitive root modulo p. Let x0 be a seed, and let

xi+1=gxi mod p.

The ith output of the algorithm is 1 if xi≤p−12. Otherwise the output is 0. This is equivalent to using one bit of xi as the random number. It has been shown that n−c−1 bits of xi can be used if solving the discrete log problem is infeasible even for exponents with as few as c bits.[2]

In order for this generator to be secure, the prime number p needs to be large enough so that computing discrete logarithms modulo p is infeasible.[1] To be more precise, any method that predicts the numbers generated will lead to an algorithm that solves the discrete logarithm problem for that prime.[3]

There is a paper discussing possible examples of the quantum permanent compromise attack to the Blum–Micali construction. This attacks illustrate how a previous attack to the Blum–Micali generator can be extended to the whole Blum–Micali construction, including the Blum Blum Shub and Kaliski generators.[4]

References

Template:Reflist


Template:Crypto-stub

  1. ↑ 1.0 1.1 Bruce Schneier, Applied Cryptography: Protocols, Algorithms, and Source Code in C, pages 416-417, Wiley; 2nd edition (October 18, 1996), Template:ISBN
  2. ↑ Template:Cite journal
  3. ↑ Template:Cite journal
  4. ↑ Template:Cite arXiv