Articulo de referencia

Criptosistema Blum-Goldwasser

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 pr...

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 y 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 la secuencia de claves . El descifrado se logra manipulando el estado final del generador BBS mediante la clave privada , con el fin de encontrar la semilla inicial y reconstruir la secuencia de claves.

El criptosistema BG es semánticamente seguro basado en la intratabilidad asumida de la factorización de enteros ; específicamente, factorizar un valor compuesto.norte=pagq{\displaystyle N=pq}dóndepag,q{\displaystyle p,q}son primos grandes . BG tiene múltiples ventajas sobre esquemas de cifrado probabilístico anteriores como el criptosistema Goldwasser-Micali . Primero, su seguridad semántica se reduce únicamente a la factorización de enteros, sin requerir ninguna suposición adicional (por ejemplo, la dificultad del problema de residuos cuadráticos o el problema RSA ). Segundo, 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 elecciones de exponente). Sin embargo, BG es altamente vulnerable a ataques adaptativos de texto cifrado elegido (ver más abajo).

Dado que el cifrado se realiza mediante un algoritmo probabilístico, un texto plano determinado puede generar textos cifrados muy diferentes cada vez que se cifra. Esto ofrece 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 probabilístico de generación de claves que produce una clave pública y una clave privada, un algoritmo de cifrado probabilístico y un algoritmo de descifrado determinista.

Generación de claves

Las claves pública y privada se generan de la siguiente manera:

  1. Elige dos números primos grandes y distintos.pag{\displaystyle p}yq{\displaystyle q}de tal manera quepag3mod4{\displaystyle p\equiv 3{\bmod {4}}}yq3mod4{\displaystyle q\equiv 3{\bmod {4}}}.
  2. Calcularnorte=pagq{\displaystyle n=pq}. [ 1 ]

Entoncesnorte{\displaystyle n}es la clave pública y el par(pag,q){\displaystyle (p,q)}es la clave privada.

Cifrado

Un mensajeMETRO{\displaystyle M}está cifrado con la clave públicanorte{\displaystyle n}como sigue:

  1. Calcula el tamaño del bloque en bits,h=logramo2(logramo2(norte)){\displaystyle h=\lfloor log_{2}(log_{2}(n))\rfloor }.
  2. ConvertirMETRO{\displaystyle M}a una secuencia det{\displaystyle t}bloquesmetro1,metro2,,metrot{\displaystyle m_{1},m_{2},\dots ,m_{t}}donde cada bloque esh{\displaystyle h}bits de longitud.
  3. Seleccione un número entero aleatorio.r<norte{\displaystyle r<n}.
  4. Calcularincógnita0=r2modnorte{\displaystyle x_{0}=r^{2}{\bmod {n}}}.
  5. Parai{\displaystyle i}del 1 alt{\displaystyle t}
    1. Calcularincógnitai=incógnitai12modnorte{\displaystyle x_{i}=x_{i-1}^{2}{\bmod {n}}}.
    2. Calcularpagi={\displaystyle p_{i}=}el menos significativoh{\displaystyle h}trozos deincógnitai{\displaystyle x_{i}}.
    3. Calculardoi=metroipagi{\displaystyle c_{i}=m_{i}\oplus p_{i}}.
  6. Finalmente, calcularincógnitat+1=incógnitat2modnorte{\displaystyle x_{t+1}=x_{t}^{2}{\bmod {n}}}.

El cifrado del mensajeMETRO{\displaystyle M}es entonces todo eldoi{\displaystyle c_{i}}valores más el finalincógnitat+1{\displaystyle x_{t+1}}valor:(do1,do2,,dot,incógnitat+1){\displaystyle (c_{1},c_{2},\dots ,c_{t},x_{t+1})}.

Descifrado

Un mensaje cifrado(do1,do2,,dot,incógnita){\displaystyle (c_{1},c_{2},\dots ,c_{t},x)}Se puede descifrar con la clave privada.(pag,q){\displaystyle (p,q)}como sigue:

  1. Calculardpag=((pag+1)/4)t+1mod(pag1){\displaystyle d_{p}=((p+1)/4)^{t+1}{\bmod {(p-1)}}}.
  2. Calculardq=((q+1)/4)t+1mod(q1){\displaystyle d_{q}=((q+1)/4)^{t+1}{\bmod {(q-1)}}}.
  3. Calcularpag=incógnitadpagmodpag{\displaystyle u_{p}=x^{d_{p}}{\bmod {p}}}.
  4. Calcularq=incógnitadqmodq{\displaystyle u_{q}=x^{d_{q}}{\bmod {q}}}.
  5. Utilizando el algoritmo euclidiano extendido , calculerpag{\displaystyle r_{p}}yrq{\displaystyle r_{q}}de tal manera querpagpag+rqq=1{\displaystyle r_{p}p+r_{q}q=1}.
  6. Calcularincógnita0=qrpagpag+pagrqqmodnorte{\displaystyle x_{0}=u_{q}r_{p}p+u_{p}r_{q}q{\bmod {n}}}Este será el mismo valor que se utilizó en el cifrado (ver prueba a continuación).incógnita0{\displaystyle x_{0}}luego se puede utilizar para calcular la misma secuencia deincógnitai{\displaystyle x_{i}}valores que se utilizaron en el cifrado para descifrar el mensaje, como se indica a continuación.
  7. Parai{\displaystyle i}del 1 alt{\displaystyle t}
    1. Calcularincógnitai=incógnitai12modnorte{\displaystyle x_{i}=x_{i-1}^{2}{\bmod {n}}}.
    2. Calcularpagi={\displaystyle p_{i}=}el menos significativoh{\displaystyle h}trozos deincógnitai{\displaystyle x_{i}}.
    3. Calcularmetroi=doipagi{\displaystyle m_{i}=c_{i}\oplus p_{i}}.
  8. Finalmente, vuelva a ensamblar los valores.(metro1,metro2,,metrot){\displaystyle (m_{1},m_{2},\dots ,m_{t})}en el mensajeMETRO{\displaystyle M}.

Ejemplo

Dejarpag=19{\displaystyle p=19}yq=7{\displaystyle q=7}. Entoncesnorte=133{\displaystyle n=133}yh=logramo2(logramo2(133))=3{\displaystyle h=\lfloor log_{2}(log_{2}(133))\rfloor =3}Para cifrar el mensaje de seis bits1010012{\displaystyle 101001_{2}}, lo dividimos en dos bloques de 3 bitsmetro1=1012,metro2=0012{\displaystyle m_{1}=101_{2},m_{2}=001_{2}}, entoncest=2{\displaystyle t=2}Seleccionamos un número aleatorio.r=36{\displaystyle r=36}y calcularincógnita0=362mod133=99{\displaystyle x_{0}=36^{2}{\bmod {1}}33=99}. Ahora calculamos eldoi{\displaystyle c_{i}}valores como sigue:

incógnita1=992mod133=92=10111002;pag1=1002;do1=10121002=0012incógnita2=922mod133=85=10101012;pag2=1012;do2=00121012=1002incógnita3=852mod133=43{\displaystyle {\begin{aligned}x_{1}&=99^{2}{\bmod {1}}33=92=1011100_{2};\quad p_{1}=100_{2};\quad c_{1}=101_{2}\oplus 100_{2}=001_{2}\\x_{2}&=92^{2}{\bmod {1}}33=85=1010101_{2};\quad p_{2}=101_{2};\quad c_{2}=001_{2}\oplus 101_{2}=100_{2}\\x_{3}&=85^{2}{\bmod {1}}33=43\end{aligned}}}

Entonces el cifrado es(do1=0012,do2=1002,incógnita3=43){\displaystyle (c_{1}=001_{2},c_{2}=100_{2},x_{3}=43)}.

Para descifrar, calculamos

dpag=53mod18=17dq=23mod6=2pag=4317mod19=4q=432mod7=1(rpag,rq)=(3,8) desde 319+(8)7=1incógnita0=1319+4(8)7mod133=99{\displaystyle {\begin{aligned}d_{p}&=5^{3}{\bmod {1}}8=17\\d_{q}&=2^{3}{\bmod {6}}=2\\u_{p}&=43^{17}{\bmod {1}}9=4\\u_{q}&=43^{2}{\bmod {7}}=1\\(r_{p},r_{q})&=(3,-8){\text{ since }}3\cdot 19+(-8)\cdot 7=1\\x_{0}&=1\cdot 3\cdot 19+4\cdot (-8)\cdot 7{\bmod {1}}33=99\\\end{aligned}}}

Se puede observar queincógnita0{\displaystyle x_{0}}tiene el mismo valor que en el algoritmo de cifrado. Por lo tanto, el descifrado se realiza de la misma manera que el cifrado:

incógnita1=992mod133=92=10111002;pag1=1002;metro1=00121002=1012incógnita2=922mod133=85=10101012;pag2=1012;metro2=10021012=0012{\displaystyle {\begin{aligned}x_{1}&=99^{2}{\bmod {1}}33=92=1011100_{2};\quad p_{1}=100_{2};\quad m_{1}=001_{2}\oplus 100_{2}=101_{2}\\x_{2}&=92^{2}{\bmod {1}}33=85=1010101_{2};\quad p_{2}=101_{2};\quad m_{2}=100_{2}\oplus 101_{2}=001_{2}\end{aligned}}}

Prueba de corrección

Debemos demostrar que el valorincógnita0{\displaystyle x_{0}}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ónincógnita0{\displaystyle x_{0}}es un residuo cuadrático módulonorte{\displaystyle n}. Por lo tanto, también es un residuo cuadrático módulopag{\displaystyle p}, como todos los demásincógnitai{\displaystyle x_{i}}valores obtenidos a partir de él elevándolo al cuadrado. Por lo tanto, según el criterio de Euler ,incógnitai(pag1)/21modpag{\displaystyle x_{i}^{(p-1)/2}\equiv 1\mod {p}}. Entonces

incógnitat+1(pag+1)/4(incógnitat2)(pag+1)/4)incógnitat(pag+1)/2incógnitat(incógnitat(pag1)/2)incógnitatmodpag{\displaystyle x_{t+1}^{(p+1)/4}\equiv (x_{t}^{2})^{(p+1)/4)}\equiv x_{t}^{(p+1)/2}\equiv x_{t}(x_{t}^{(p-1)/2})\equiv x_{t}\mod {p}}

Similarmente,

incógnitat(pag+1)/4incógnitat1modpag{\displaystyle x_{t}^{(p+1)/4}\equiv x_{t-1}\mod {p}}

Elevando la primera ecuación a la potencia(pag+1)/4{\displaystyle (p+1)/4}obtenemos

incógnitat+1((pag+1)/4)2incógnitat(pag+1)/4incógnitat1modpag{\displaystyle x_{t+1}^{((p+1)/4)^{2}}\equiv x_{t}^{(p+1)/4}\equiv x_{t-1}\mod {p}}

Repitiendo estot{\displaystyle t}veces, tenemos

incógnitat+1(pag+1)/4)t+1incógnita0modpag{\displaystyle x_{t+1}^{(p+1)/4)^{t+1}}\equiv x_{0}\mod {p}}
incógnitat+1dpagpagincógnita0modpag{\displaystyle x_{t+1}^{d_{p}}\equiv u_{p}\equiv x_{0}\mod {p}}

Y mediante un argumento similar podemos demostrar queincógnitat+1dqqincógnita0modq{\displaystyle x_{t+1}^{d_{q}}\equiv u_{q}\equiv x_{0}\mod {q}}.

Finalmente, dado querpagpag+rqq=1{\displaystyle r_{p}p+r_{q}q=1}, podemos multiplicar porincógnita0{\displaystyle x_{0}}y obtener

incógnita0rpagpag+incógnita0rqq=incógnita0{\displaystyle x_{0}r_{p}p+x_{0}r_{q}q=x_{0}}

de cuálqrpagpag+pagrqqincógnita0{\displaystyle u_{q}r_{p}p+u_{p}r_{q}q\equiv x_{0}}, módulo ambospag{\displaystyle p}yq{\displaystyle q}y por lo tantoqrpagpag+pagrqqincógnita0modnorte{\displaystyle u_{q}r_{p}p+u_{p}r_{q}q\equiv x_{0}\mod {n}}.

Seguridad y eficiencia

El esquema Blum-Goldwasser es semánticamente seguro debido a la dificultad de predecir los bits de la secuencia de claves conociendo únicamente el estado final del BBS.y{\displaystyle y}y la clave públicanorte{\displaystyle N}Sin embargo, los textos cifrados de la formado,y{\displaystyle {\vec {c}},y}son vulnerables a un ataque adaptativo de texto cifrado elegido en el que el adversario solicita el descifrado.metro{\displaystyle m^{\prime }}de un texto cifrado elegidoa,y{\displaystyle {\vec {a}},y}. El descifradometro{\displaystyle m}del texto cifrado original se puede calcular comoametrodo{\displaystyle {\vec {a}}\oplus m^{\prime }\oplus {\vec {c}}}.

Dependiendo del tamaño del texto plano, BG puede ser más o menos costoso computacionalmente que RSA. Dado 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 supera a BG para todos los mensajes, excepto los más cortos. Sin embargo, como el exponente de descifrado de RSA se distribuye aleatoriamente, la exponenciación modular puede requerir una cantidad comparable de elevaciones al cuadrado/multiplicaciones que el descifrado de 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

  1. Sección 6.2.2 del RFC 4086 : "El generador de secuencias Blum Blum Shub" 
  1. 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.
  2. 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
  • Menezes, Oorschot, Vanstone, Scott: Manual de criptografía aplicada (descargas gratuitas en PDF), véase el capítulo 8.