Report

advertisement
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
Download