|
Blum Blum Shub (BBS) is a pseudorandom number generator proposed in 1986 by Lenore Blum, Manuel Blum and Michael Shub (Blum et al, 1986). BBS takes the form: xn+1 = (xn)2 mod M where M=pq is the product of two large primes p and q. At each step of the algorithm, some output is derived from xn; the output is commonly either the bit parity of xn or one or more of the least significant bits of xn. The two primes, p and q, should both be congruent to 3 (mod 4) (this guarantees that each quadratic residue has one square root which is also a quadratic residue) and gcd(φ(p-1), φ(q-1)) should be small (this makes the cycle length large). An interesting characteristic of the BBS generator is the possibility to calculate any xi value directly: ight) mod M.
Security The generator is not appropriate for use in simulations, only for cryptography, because it is not very fast. However, it has an unusually strong security proof, which relates the quality of the generator to the computational difficulty of integer factorization. When the primes are chosen appropriately, and O(log log M) lower-order bits of each xn are output, then in the limit as M grows large, distinguishing the output bits from random will be at least as difficult as factoring M. If integer factorization is difficult (as is suspected) then BBS with large M will have an output free from any nonrandom patterns that can be discovered with any reasonable amount of calculation. This makes it as secure as other encryption technologies tied to the factorization problem, such as RSA encryption. Example Let p=11, q=19 and s=3. We can expect to get a large cycle length for those small numbers, because gcd(φ(p-1), φ(q-1))=2. The generator starts to evaluate x0 by using x -1=s and creates the sequence x0, x1, x2, ... x5= 9, 81, 82, 36, 42, 92. The resulting output bits b0b1...b5 are 0 1 1 0 1 0. | ||||||||
|
| |||||||||
![]() |
|
| |