Michael Coco CRYPTOGRAPHY COSC 4301-01 July 1, 2006 Blum Blum Shub Random numbers have been used for many applications outside of computers. After computers were invented, people realized there was a need for randomness in computers. A computer program however is hard to make random. A computer only follows instructions it is told to do and as a result hard to make random. Engineers introduced randomization by pseudo-random number generators. The numbers are not random, rather a mathematical formula. The numbers seem as if they are random but are actually predictable if you know where the first number is taken from. These numbers are used for computer games and also used for a generation of cryptographic keys. There are many different cryptographic algorithms. Some are difficult to crack but make extensive demands to processing power and key management. The most difficult method to crack is the Blum Blum Shub (BBS); it requires as many random bits as the information to be encrypted. Others are easier to crack but better suited for some applications. Blum Blum Shub is a pseudorandom number generator proposed in 1986 by Lenore Blum, Manuel Blum and Michael Shub. The function of this is: M is the product of two large primes’ p and q. P and q both should be congruent to 3 (mod 4) and the gcd (φ (p-1), φ (q-1)) should be small. The reason we want this to be small is because it will make the cycle length large. At each step of the algorithm, some output is derived from xn. With the BBS generator you have the possibility to calculate any xi value by using: xi = (x02^i mod ((p-1)(q-1))) mod M This means that in applications where you do not have enough space to save all of the random bits, it is not necessary to save them all. Each bit can be found and recovered by using the sequence of the initial x and M. The algorithm of the Blum Blum Shub is fairly simple, but yet hard to break if you don’t know the original numbers. First you generate a p and q, two large Blum prime numbers (3 (mod 4)). Then you generate M by multiplying p time’s q. Next you can either choose or generate a random seed that is between 1 and m-1. Now you can start generating your random primes. You get your first prime by using x0 := s² (mod m). After this you now create a recursive function using a for loop with xi := x²i−1 (mod m) as a function. The security of this algorithm is extremely good. Making it hard to figure out the numbers used in the computation make it more secure. When the M is made larger, it makes it harder to figure out the next output. In the same form, it’s harder to use the output in figuring out M. If integer factorization is difficult, then BBS with a large M will not easily be figured out with any sort of computation without knowing the original numbers used in the algorithm. This makes it as secure as other encryptions with factorization problem, such as RSA. The only way to generate the sequence of the random numbers is to know M. Given that, not knowing M makes it seem more random that it is. Just by knowing the previous number will not help in figuring out the next number in the sequence. However like every pseudorandom number generator there is a weakness. The obvious being it is an algorithm not a true random number generator. More of a weakness is that to make sure the number n is too large for anyone to factor; it needs to be significantly more than 32(bits) numbers in length, which means that any program implementing the Blum Blum Shub requires an entire implementation of itself. While Blum Blum Shub is a great way of generating pseudorandom numbers, its implementation is too complex for many purposes. It takes n² steps to generate one random number of the bit-stream. No matter the weakness of the Blum Blum Shub, the useful benefits far outweigh that of its weakness. This very masterful way of generating numbers at random has proven in many cases to be very cryptographically secure, even though the algorithm is very simple to use and understand. Although the algorithm is very secure, it is not probable for many uses. The algorithm produces random numbers but it does not produce them quickly enough for most applications. Things such as games would slow them down and be difficult to play. Bibliography URL: http://en.wikipedia.org/wiki/Blum_Blum_Shub http://seldon.it.northwestern.edu/sscc/acmldoc/Blum_002dBlum_002dShub-Generator.html May 30 2001 http://www.cs.dartmouth.edu/~akapadia/project2/node11.html Gawande, Kaustubh Mundle, Maithily “Various Implementations of Blum Blum Shub Pseudo-Random Sequence Generator” http://islab.oregonstate.edu/koc/ece679/project/2003/gawande-mundle.pdf