Algoritmo de cifrado de clave asimétrica
El criptosistema Blum-Goldwasser (BG) es un algoritmo de cifrado de clave asimétrica propuesto por Manuel Blum y Shafi Goldwasser en 1984. Blum-Goldwasser es un criptosistema probabilístico , semánticamente seguro con una expansión de texto cifrado de tamaño constante . El algoritmo de cifrado implementa un cifrado de flujo basado en XOR utilizando el generador de números pseudoaleatorios Blum-Blum-Shub (BBS) para generar el flujo de claves . El descifrado se logra manipulando el estado final del generador BBS utilizando la clave privada , para encontrar la semilla inicial y reconstruir el flujo de claves.
El criptosistema BG es semánticamente seguro basándose en la supuesta intratabilidad de la factorización de números enteros ; específicamente, factorizar un valor compuesto donde son primos grandes . BG tiene múltiples ventajas sobre los esquemas de cifrado probabilístico anteriores, como el criptosistema Goldwasser-Micali . En primer lugar, su seguridad semántica se reduce únicamente a la factorización de números enteros, sin requerir ningún supuesto adicional (por ejemplo, la dureza del problema de residuosidad cuadrática o el problema RSA ). En segundo lugar, BG es eficiente en términos de almacenamiento, induciendo una expansión de texto cifrado de tamaño constante independientemente de la longitud del mensaje. BG también es relativamente eficiente en términos de computación, y se desempeña bien incluso en comparación con criptosistemas como RSA (dependiendo de la longitud del mensaje y las opciones de exponente). Sin embargo, BG es altamente vulnerable a ataques de texto cifrado elegido adaptativo (ver más abajo).
Como el cifrado se realiza mediante un algoritmo probabilístico, un texto simple determinado puede generar textos cifrados muy diferentes cada vez que se cifra. Esto tiene ventajas significativas, ya que impide que un adversario reconozca los mensajes interceptados comparándolos con un diccionario de textos cifrados conocidos.
Operación
El criptosistema Blum-Goldwasser consta de tres algoritmos: un algoritmo de generación de claves probabilístico que produce una clave pública y una privada, un algoritmo de cifrado probabilístico y un algoritmo de descifrado determinista.
Generación de claves
Las claves públicas y privadas se generan de la siguiente manera:
- Elija dos números primos grandes y distintos tales que y .
- Calcular . [1]
Entonces es la clave pública y el par es la clave privada.
Encriptación
Un mensaje se cifra con la clave pública de la siguiente manera:
- Calcular el tamaño del bloque en bits, .
- Convertir a una secuencia de bloques , donde cada bloque tiene una longitud de bits.
- Seleccione un número entero aleatorio .
- Calcular .
- Para del 1 al
- Calcular .
- Calcular los bits menos significativos de .
- Calcular .
- Finalmente, calcule .
El cifrado del mensaje es entonces todos los valores más el valor final : .
Descifrado
Un mensaje cifrado se puede descifrar con la clave privada de la siguiente manera:
- Calcular .
- Calcular .
- Calcular .
- Calcular .
- Utilizando el algoritmo euclidiano extendido , calcule y tal que .
- Calcular . Este será el mismo valor que se utilizó en el cifrado (ver prueba a continuación). Luego se puede utilizar para calcular la misma secuencia de valores que se utilizaron en el cifrado para descifrar el mensaje, de la siguiente manera.
- Para del 1 al
- Calcular .
- Calcular los bits menos significativos de .
- Calcular .
- Por último, vuelva a ensamblar los valores en el mensaje .
Ejemplo
Sea y . Entonces y . Para cifrar el mensaje de seis bits , lo dividimos en dos bloques de 3 bits , por lo que . Seleccionamos un valor aleatorio y calculamos . Ahora calculamos los valores de la siguiente manera:
Entonces el cifrado es .
Para descifrar, calculamos
Se puede observar que tiene el mismo valor que en el algoritmo de cifrado. Por lo tanto, el descifrado se realiza de la misma manera que el cifrado:
Prueba de corrección
Debemos demostrar que el valor calculado en el paso 6 del algoritmo de descifrado es igual al valor calculado en el paso 4 del algoritmo de cifrado.
En el algoritmo de cifrado, por construcción es un residuo cuadrático módulo . Por lo tanto, también es un residuo cuadrático módulo , al igual que todos los demás valores obtenidos a partir de él al elevarlo al cuadrado. Por lo tanto, por el criterio de Euler , . Entonces
Similarmente,
Elevando la primera ecuación a la potencia obtenemos
Repitiendo esto veces, tenemos
Y con un argumento similar podemos demostrar que .
Finalmente, como , podemos multiplicar por y obtener
de donde , módulo ambos y , y por lo tanto .
Seguridad y eficiencia
El esquema Blum–Goldwasser es semánticamente seguro en función de la dificultad de predecir los bits de la secuencia de claves dados únicamente el estado final de BBS y la clave pública . Sin embargo, los textos cifrados de la forma son vulnerables a un ataque de texto cifrado elegido adaptativo en el que el adversario solicita el descifrado de un texto cifrado elegido . El descifrado del texto cifrado original se puede calcular como .
Dependiendo del tamaño del texto sin formato, BG puede ser más o menos costoso computacionalmente que RSA. Debido a que la mayoría de las implementaciones de RSA utilizan un exponente de cifrado fijo optimizado para minimizar el tiempo de cifrado, el cifrado RSA generalmente superará a BG para todos los mensajes, excepto los más cortos. Sin embargo, como el exponente de descifrado RSA se distribuye aleatoriamente, la exponenciación modular puede requerir una cantidad comparable de elevaciones al cuadrado/multiplicaciones a la descifrado BG para un texto cifrado de la misma longitud. BG tiene la ventaja de escalar de manera más eficiente a textos cifrados más largos, donde RSA requiere múltiples cifrados separados. En estos casos, BG puede ser significativamente más eficiente.
Referencias
- ^ RFC 4086 sección "6.2.2. El generador de secuencias Blum Blum Shub"
- M. Blum, S. Goldwasser, "Un esquema de cifrado de clave pública probabilístico eficiente que oculta toda la información parcial", Actas de Advances in Cryptology – CRYPTO '84 , págs. 289–299, Springer Verlag, 1985.
- Menezes, Alfred; van Oorschot, Paul C.; y Vanstone, Scott A. Manual de criptografía aplicada . CRC Press, octubre de 1996. ISBN 0-8493-8523-7
Enlaces externos
- Menezes, Oorschot, Vanstone, Scott: Manual de criptografía aplicada (descargas gratuitas en PDF), consulte el Capítulo 8