Blum Blum Shub
Blum Blum Shub (BBS) es un generador pseudoaleatorio de números propuesto por Lenore Blum, Manuel Blum y Michael Shub en 1986.
El algoritmo BBS es:
- xn+1 = (xn)2 mod M
donde M=pq es el producto de dos números primos muy grandes p y q. En cada paso del algoritmo, se obtiene un resultado para xn; el resultado es por lo general o bien el bit de paridad de xn ó uno o más de los bits menos significativos de xn.
Los dos números primos, p y q, deben ser ambos congruentes a 3 (mod 4) (esto asegura que cada residuo cuadrático posee una raíz cuadrada que también es un residuo cuadrático) y mcd(φ(p-1), φ(q-1)) debe ser pequeña (esto hace que la longitud del ciclo sea extensa).
Una característica interesante del generador BBS es la posibilidad de calcular todo valor xi en forma directa:
Seguridad
editarEl generador es apropiado para ser utilizado en criptografía, aunque no en simulaciones, ya que no es muy rápido. Sin embargo, es muy resistente desde el punto de vista de su seguridad, lo que se relaciona con la calidad del generador en cuanto a la complejidad computacional de la factorización de enteros. Cuando se eligen los primos en forma adecuada, y los bits menos significativos O(log log M) de cada xn se eligen como resultado, entonces en el límite cuando M se hace muy grande, distinguir los bits resultado de una secuencia aleatoria será por lo menos tan difícil como factorizar M.
Si la factorización de enteros es difícil (como es de esperar) entonces BBS con grandes M tendrán un resultado libre de todo patrón no aleatorio que puede ser descubierto mediante una cantidad razonable de cálculos. Esto hace que el método sea tan seguro como otras tecnologías de cifrado asociadas al problema de factorización, como por ejemplo el cifrado RSA.
Ejemplo
editarSea p=11, q=19 y s=3. Podemos esperar obtener un ciclo largo para estos números pequeños, porque mcd(φ(p-1), φ(q-1))=2. El generador comienza a evaluar x0 utilizando x -1=s y crea la sucesión x0, x1, x2,... x5= 9, 81, 82, 36, 42, 92. Si se utiliza el bit de paridad para definir el resultado, entonces los bits resultados son 1 1 0 0 0 0.
Referencias
editar- Lenore Blum, Manuel Blum, and Michael Shub. "A Simple Unpredictable Pseudo-Random Number Generator", SIAM Journal on Computing, volume 15, pages 364–383, May 1986.
- Lenore Blum, Manuel Blum, and Michael Shub. "Comparison of two pseudo-random number generators", Advances in Cryptology: Proceedings of Crypto '82. Available as PDF.
- Martin Geisler, Mikkel Krøigård, and Andreas Danielsen. "About Random Bits", December 2004. Available as PDF and Gzipped Postscript.
Enlaces externos
editar- GMPBBS - una implementación en GMP del Blum Blum Shub.
- Algoritmo Blum Blum Shub en Java
- Pruebas de aleatoriedad