Articulo de referencia

Sistema criptográfico RSA

[[Shor's algorithm]] for quantum computers. An [[RSA-250|829-bit key]] has been broken."}},"i":0}}]}"> El criptosistema RSA ( Rivest–Shamir–Adleman ) es una familia de criptosis...

El criptosistema RSA ( Rivest–Shamir–Adleman ) es una familia de criptosistemas de clave pública (uno de los más antiguos), ampliamente utilizado para la transmisión segura de datos. Las siglas "RSA" provienen de los apellidos de Ron Rivest , Adi Shamir y Leonard Adleman , quienes describieron públicamente el algoritmo en 1977. [ 1 ] [ 2 ] [ 3 ] Un sistema equivalente fue desarrollado secretamente en 1973 en el Cuartel General de Comunicaciones del Gobierno (GCHQ), la agencia británica de inteligencia de señales , por el matemático inglés Clifford Cocks . Ese sistema fue desclasificado en 1997. [ 4 ]

RSA se utiliza en firmas digitales como RSASSA-PSS o RSA-FDH , [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] cifrado de clave pública de mensajes muy cortos (casi siempre una clave simétrica de un solo uso en un criptosistema híbrido ) como RSAES-OAEP , [ 11 ] [ 12 ] [ 13 ] [ 10 ] y encapsulación de clave pública . [ 14 ] [ 15 ] [ 16 ]

En la criptografía basada en RSA, la clave privada de un usuario —que se puede usar para firmar o descifrar mensajes enviados a ese usuario— es un par de números primos grandes elegidos al azar y mantenidos en secreto. La clave pública del usuario —que se puede usar para verificar los mensajes del usuario o cifrarlos de forma que solo ese usuario pueda descifrarlos— es el producto de esos números primos.

La seguridad de RSA está relacionada con la dificultad de factorizar el producto de dos números primos grandes , el " problema de factorización ". Romper el cifrado RSA se conoce como el problema RSA . Si es tan difícil como el problema de factorización es una cuestión abierta. [ 17 ] No existen métodos publicados para vulnerar el sistema si se utiliza una clave suficientemente grande.

Historia

Adi Shamir , coinventor de RSA (los otros son Ron Rivest y Leonard Adleman ).

La idea de un criptosistema asimétrico de clave pública-privada se atribuye a Whitfield Diffie y Martin Hellman , quienes publicaron este concepto en 1976. También introdujeron las firmas digitales e intentaron aplicar la teoría de números. Su formulación utilizó una clave secreta compartida creada a partir de la exponenciación de algún número, módulo un número primo. Sin embargo, dejaron abierto el problema de realizar una función unidireccional, posiblemente porque la dificultad de la factorización no estaba bien estudiada en ese momento. [ 18 ] Además, al igual que Diffie-Hellman , RSA se basa en la exponenciación modular .

Ron Rivest , Adi Shamir y Leonard Adleman, del Instituto Tecnológico de Massachusetts (MIT), realizaron varios intentos a lo largo de un año para crear una función difícil de invertir. Rivest y Shamir, como informáticos, propusieron muchas funciones potenciales, mientras que Adleman, como matemático, se encargó de encontrar sus debilidades. Probaron diversos enfoques, incluyendo el método de la mochila y los polinomios de permutación. Durante un tiempo, pensaron que lo que querían lograr era imposible debido a requisitos contradictorios. [ 19 ] En abril de 1977, pasaron la Pascua judía en casa de un estudiante y bebieron bastante vino antes de regresar a sus hogares alrededor de la medianoche. [ 20 ] Rivest, incapaz de dormir, se tumbó en el sofá con un libro de matemáticas y comenzó a pensar en su función unidireccional. Pasó el resto de la noche formalizando su idea y tenía gran parte del artículo listo al amanecer. El algoritmo se conoce ahora como RSA , las iniciales de sus apellidos en el mismo orden que su artículo. [ 21 ] 

Clifford Cocks , matemático inglés que trabajaba para el Cuartel General de Comunicaciones del Gobierno (GCHQ), la agencia de inteligencia británica , describió un sistema similar en un documento interno en 1973. [ 22 ] Sin embargo, debido al elevado coste de los ordenadores necesarios para su implementación en aquel momento, se consideró principalmente una curiosidad y, hasta donde se sabe públicamente, nunca se puso en marcha. Sus ideas y conceptos no se revelaron hasta 1997 debido a su clasificación como alto secreto.

Kid-RSA (KRSA) es un cifrado de clave pública simplificado e inseguro publicado en 1997, diseñado con fines educativos. Kid-RSA ofrece una visión general de RSA y otros cifrados de clave pública, de forma análoga a una versión simplificada de DES . [ 23 ] [ 24 ] [ 25 ] [ 26 ] [ 27 ]

Patentar

El 20 de septiembre de 1983, el MIT obtuvo una patente que describe el algoritmo RSA: Patente estadounidense 4,405,829 "Sistema y método de comunicaciones criptográficas". Según el resumen de la patente del DWPI :

El sistema incluye un canal de comunicación conectado a al menos un terminal con un dispositivo de codificación y a al menos un terminal con un dispositivo de decodificación. El mensaje a transmitir se cifra en el terminal de codificación, convirtiéndolo en un número M de un conjunto predeterminado. Este número se eleva a una primera potencia predeterminada (asociada al receptor) y, finalmente, se calcula. El resto, C, se obtiene dividiendo el número elevado entre el producto de dos números primos predeterminados (asociados al receptor).

Una descripción detallada del algoritmo se publicó en agosto de 1977 en la columna de Juegos Matemáticos de Scientific American . [ 2 ] [ 21 ] Esto precedió a la fecha de presentación de la patente, en diciembre de 1977. Por consiguiente, la patente carecía de validez legal fuera de los Estados Unidos . Si el trabajo de Cocks hubiera sido de dominio público, una patente en los Estados Unidos tampoco habría sido legal.

Cuando se emitió la patente, su vigencia era de 17 años. La patente estaba a punto de expirar el 21 de septiembre de 2000, pero RSA Security liberó el algoritmo al dominio público el 6 de septiembre de 2000. [ 28 ]

Operación

El algoritmo RSA consta de cuatro pasos: generación de claves , distribución de claves, operación con clave pública (utilizada para el cifrado o la verificación de una firma) y operación con clave privada (utilizada para el descifrado o la firma de un mensaje).

Un principio básico detrás de RSA es la observación de que es práctico encontrar tres enteros positivos muy grandes e , d y n , tales que para todos los enteros x ( 0 x < n ), tanto ( x e ) d como x tienen el mismo resto cuando se dividen por n (son congruentes módulo n ):(incógnitami)dincógnita(modnorte).{\displaystyle (x^{e})^{d}\equiv x{\pmod {n}}.}Sin embargo, cuando solo se conocen e y n , es inviable calcular las raíces e- ésimas módulo n ; es decir, para una variable aleatoria uniforme y ( 0 y < n ), es extremadamente difícil encontrar x tal que x ey (mod n ) .

Los números enteros n y e forman la clave pública, y d es la clave privada. La exponenciación modular elevada a la potencia e se utiliza en el cifrado y en la verificación de firmas, y la exponenciación elevada a la potencia d se utiliza en el descifrado y en la firma de mensajes.

Generación de claves

Las claves para el algoritmo RSA se generan de la siguiente manera:

  1. Elige dos números primos grandes y distintos, p y q .
    • Para que la factorización sea inviable, p y q deben elegirse aleatoriamente de un amplio espacio de posibilidades, como todos los números primos entre 2¹⁰²³ y 2¹⁰²⁴ (correspondientes a una clave de 2048 bits). En la práctica se utilizan muchos algoritmos diferentes para la selección de primos. [ 29 ]
    • p y q se mantienen en secreto.
  2. Calcula n = pq .
    • n se utiliza como módulo tanto para la clave pública como para la privada. Su longitud, generalmente expresada en bits, es la longitud de la clave .
    • n se publica como parte de la clave pública.
  3. Calcula λ ( n ) , donde λ es la función totiente de Carmichael . Como n = pq , λ ( n ) = mcm ( λ ( p ), λ ( q ))  , y como p y q son primos, λ ( p ) = φ ( p ) = p − 1 , y de igual manera λ ( q ) = q − 1 . Por lo tanto λ ( n ) = mcm( p − 1, q − 1) .
    • El mcm se puede calcular mediante el algoritmo euclidiano , ya que mcm( a , b   ) = | ab | / mcd ( a , b ) .
    • λ ( n )se mantiene en secreto.
  4. Elija un entero e tal que 1 < e < λ ( n ) y mcd ( e , λ ( n )) = 1 ; es decir, e y λ ( n ) son coprimos .
    • e con una longitud de bits corta y un peso de Hamming pequeño da como resultado un cifrado más eficiente ; el valor más comúnmente elegido para e es 2 16 + 1 = 65 537 . El valor más pequeño (y más rápido) posible para e es 3, pero un valor tan pequeño para e puede exponer vulnerabilidades en esquemas de relleno inseguros. [ 30 ] [ a ]
    • e se publica como parte de la clave pública.
  5. Determina d como de −1 (mod λ ( n )) ; es decir, d es el inverso multiplicativo modular de e módulo λ ( n ) .
    • Esto significa: resolver para d la ecuación de ≡ 1 (mod λ ( n )) ; d se puede calcular eficientemente utilizando el algoritmo euclidiano extendido , ya que, gracias a que e y λ ( n ) son coprimos, dicha ecuación es una forma de la identidad de Bézout , donde d es uno de los coeficientes.
    • d se mantiene en secreto como el exponente de la clave privada .

La clave pública consta del módulo n y el exponente público e . La clave privada consta del exponente privado d , que debe mantenerse en secreto. p , q y λ ( n ) también deben mantenerse en secreto porque pueden usarse para calcular d . De hecho, todos ellos pueden descartarse una vez que se haya calculado d . [ 31 ]

En el artículo original de RSA, [ 3 ] se utiliza la función totiente de Euler φ ( n ) = ( p − 1)( q − 1) en lugar de λ ( n ) para calcular el exponente privado d . Dado que φ ( n ) siempre es divisible por λ ( n ) , el algoritmo también funciona. La posibilidad de utilizar la función totiente de Euler también resulta del teorema de Lagrange aplicado al grupo multiplicativo de enteros módulo pq . Por lo tanto, cualquier d que satisfaga de ≡ 1 (mod φ ( n )) también satisface de ≡ 1 (mod λ ( n )) . Sin embargo, el cálculo de d módulo φ ( n ) a veces dará un resultado mayor de lo necesario (es decir, d > λ ( n ) ). La mayoría de las implementaciones de RSA aceptarán exponentes generados mediante cualquiera de los dos métodos (siempre que utilicen el exponente privado d , en lugar del método de descifrado optimizado basado en el teorema chino del resto que se describe a continuación), pero algunos estándares, como FIPS  186-4 (Sección B.3.1), pueden requerir que d < λ ( n ) . Cualquier exponente privado "sobredimensionado" que no cumpla este criterio siempre se puede reducir módulo λ ( n ) para obtener un exponente equivalente más pequeño.

Nota: Los autores del artículo original sobre RSA llevan a cabo la generación de claves eligiendo d y luego calculando e como el inverso multiplicativo modular de d módulo φ ( n ) , mientras que la mayoría de las implementaciones actuales de RSA, como las que siguen a PKCS#1 , hacen lo contrario : eligen e y calculan d a partir de él. Dado que e puede ser pequeño y fijo de forma segura, mientras que d debe elegirse de un espacio lo suficientemente grande como para resistir ataques, el enfoque moderno puede reducir el coste de la operación de clave pública sin pérdida de seguridad. [ 3 ] [ 32 ]

Distribución clave

Supongamos que Bob quiere enviar mensajes secretos a Alice o verificar los mensajes de Alice. Si deciden usar RSA, Bob debe conocer la clave pública de Alice para cifrar sus mensajes secretos o verificar los de Alice, y Alice debe usar su clave privada para descifrar los mensajes secretos de Bob o firmar los suyos.

Para que Bob pueda enviar sus mensajes cifrados o verificar los mensajes futuros de Alice, ella le transmite su clave pública ( n , e ) a través de una ruta confiable, pero no necesariamente secreta. La clave privada de Alice ( d ) nunca se distribuye.

Cifrado

Una vez que Bob obtiene la clave pública de Alice, puede enviarle un mensaje M.

Para ello, primero convierte M en un número entero m , el texto plano rellenado , de modo que 0 m < n , utilizando un protocolo reversible acordado conocido como esquema de relleno . A continuación, calcula el texto cifrado c , utilizando la clave pública e de Alice , mediante:

dometromi(modnorte).{\displaystyle c\equiv m^{e}{\pmod {n}}.}

Esto se puede hacer con bastante rapidez, incluso para números muy grandes, usando exponenciación modular . Bob luego transmite c a Alice. Nótese que al menos nueve valores de m producirán un texto cifrado c igual a m , [ b ] pero es muy improbable que esto ocurra en la práctica.

Descifrado

Alice puede recuperar m a partir de c utilizando su exponente de clave privada d mediante el cálculo

dod(metromi)dmetro(modnorte).{\displaystyle c^{d}\equiv (m^{e})^{d}\equiv m{\pmod {n}}.}

Dado m , ella puede recuperar el mensaje original M invirtiendo el esquema de relleno, o descartarlo como corrupto si el relleno no es válido.

Alice debe descartar m si el relleno es inválido: si revela alguna información sobre m cuando tiene un relleno inválido, un adversario podría aprovechar esto para descifrar (o firmar) mensajes sin conocer la clave privada, enviándole textos cifrados aleatorios o diseñados maliciosamente y observando cómo responde. [ 33 ]

Ejemplo

Aquí hay un ejemplo de cifrado y descifrado RSA, ignorando los detalles del relleno: [ c ]

  1. Elija dos números primos distintos, como por ejemplo:
    pag=61{\displaystyle p=61}yq=53{\displaystyle q=53}.
  2. Calcula n = pq dando
    norte=61×53=3233.{\displaystyle n=61\times 53=3233.}
  3. Calcula la función totiente de Carmichael del producto como λ ( n ) = mcm ( p − 1, q − 1) dando como resultado
    λ(3233)=lcm(60,52)=780.{\displaystyle \lambda (3233)=\operatorname {lcm} (60,52)=780.}
  4. Escoge cualquier número 1 < e < 780 que sea coprimo con 780. Si elegimos un número primo para e, solo nos queda comprobar que e no sea divisor de 780.
    Dejarmi=17{\displaystyle e=17}.
  5. Calcula d , el inverso multiplicativo modular de e (mod λ ( n )) , obteniendod=413,{\displaystyle d=413,}como1=(17×413)mod780.{\displaystyle 1=(17\times 413){\bmod {7}}80.}

La clave pública es ( n = 3233, e = 17) . Para un mensaje de texto plano relleno m , la función de cifrado es do(metro)=metromimodnorte=metro17mod3233.{\displaystyle {\begin{aligned}c(m)&=m^{e}{\bmod {n}}\\&=m^{17}{\bmod {3}}233.\end{aligned}}}

La clave privada es ( n = 3233, d = 413) . Para un texto cifrado c , la función de descifrado es metro(do)=dodmodnorte=do413mod3233.{\displaystyle {\begin{aligned}m(c)&=c^{d}{\bmod {n}}\\&=c^{413}{\bmod {3}}233.\end{aligned}}}

Por ejemplo, para cifrar m = 65 , se calcula do=6517mod3233=2790.{\displaystyle c=65^{17}{\bmod {3}}233=2790.}

Para descifrar c = 2790 , se calcula metro=2790413mod3233=65.{\displaystyle m=2790^{413}{\bmod {3}}233=65.}

Ambos cálculos se pueden realizar de manera eficiente utilizando el algoritmo de elevación al cuadrado y multiplicación para la exponenciación modular . En situaciones reales, los números primos seleccionados serían mucho mayores; en nuestro ejemplo, sería trivial factorizar n = 3233 (obtenido de la clave pública disponible) para obtener los números primos p y q . Luego, e , también de la clave pública, se invierte para obtener d , adquiriendo así la clave privada.

Las implementaciones prácticas utilizan el teorema chino del resto para acelerar el cálculo utilizando el módulo de los factores (mod pq usando mod p y mod q ).

Los valores d p , d q y q inv , que forman parte de la clave privada, se calculan de la siguiente manera: dpag=dmod(pag1)=413mod(611)=53,dq=dmod(q1)=413mod(531)=49,qinv=q1modpag=531mod61=38(qinv×q)modpag=38×53mod61=1.{\displaystyle {\begin{aligned}d_{p}&=d{\bmod {(}}p-1)=413{\bmod {(}}61-1)=53,\\d_{q}&=d{\bmod {(}}q-1)=413{\bmod {(}}53-1)=49,\\q_{\text{inv}}&=q^{-1}{\bmod {p}}=53^{-1}{\bmod {6}}1=38\\&\Rightarrow (q_{\text{inv}}\times q){\bmod {p}}=38\times 53{\bmod {6}}1=1.\end{aligned}}}

Aquí se muestra cómo se utilizan d p , d q y q inv para un descifrado eficiente (el cifrado es eficiente mediante la elección de un par d y e adecuados):metro1=dodpagmodpag=279053mod61=4,metro2=dodqmodq=279049mod53=12,h=(qinv×(metro1metro2))modpag=(38×8)mod61=1,metro=metro2+h×q=12+1×53=65.{\displaystyle {\begin{aligned}m_{1}&=c^{d_{p}}{\bmod {p}}=2790^{53}{\bmod {6}}1=4,\\m_{2}&=c^{d_{q}}{\bmod {q}}=2790^{49}{\bmod {5}}3=12,\\h&=(q_{\text{inv}}\times (m_{1}-m_{2})){\bmod {p}}=(38\times -8){\bmod {6}}1=1,\\m&=m_{2}+h\times q=12+1\times 53=65.\end{aligned}}}

Firma

Supongamos que Alice desea enviar un mensaje firmado m a Bob. Ella produce un valor hash h = hash( m ) del mensaje m , lo eleva a la potencia de d (módulo n ) y adjunta s = h d mod n como una "firma" al mensaje.

Verificando

Cuando Bob recibe el mensaje m y la firma s , utiliza el mismo algoritmo hash junto con la clave pública de Alice para calcular h = hash( m ) . Eleva la firma s a la potencia de e (módulo n ) y compara el valor hash resultante con el valor hash del mensaje:smi¿h(modnorte){\displaystyle s^{e}\mathrel {\stackrel {?}{\equiv }} h{\pmod {n}}}Si ambos coinciden, él sabe que el autor del mensaje estaba en posesión de la clave privada de Alice y que el mensaje no ha sido manipulado desde que fue enviado.

Esta ecuación se satisface cuando s = h d mod n debido a las reglas de exponenciación : smi=(hd)mi=hdmi=hmid=(hmi)dh(modnorte).{\displaystyle s^{e}=(h^{d})^{e}=h^{de}=h^{ed}=(h^{e})^{d}\equiv h{\pmod {n}}.}

La exponenciación modular para la firma y la verificación se basa en las mismas matemáticas que para el descifrado y el cifrado, pero todos los demás detalles del esquema de relleno para el cifrado seguro de clave pública y el hash para la firma digital segura son diferentes. [ 32 ]

El uso de un hash, propuesto por primera vez en 1978 por Michael O. Rabin en el algoritmo de firma de Rabin relacionado , [ 34 ] [ 35 ] y la seguridad del hash, es esencial para la seguridad de la firma: [ 36 ] [ 37 ] si Alice y Bob omitieran el hash, y Bob verificara s em (mod n ) en su lugar , entonces cualquiera podría falsificar la firma s = 1 en el mensaje m = 1 , o tomar dos mensajes firmados ( m1 , s1 ) y ( m2 , s2 ) de Alice y luego falsificar un tercero por multiplicación, ( m1m2 , s1s2 ) , sin conocimiento de la clave privada .

Pruebas de corrección

Demostración mediante el pequeño teorema de Fermat.

La prueba de la corrección de RSA se basa en el pequeño teorema de Fermat , que establece que a p − 1 ≡ 1 (mod p ) para cualquier entero a y primo p , que no divida a . [ nota 1 ]

Queremos demostrar que (metromi)dmetro(modpagq){\displaystyle (m^{e})^{d}\equiv m{\pmod {pq}}} para cada entero m cuando p y q son números primos distintos y e y d son enteros positivos que satisfacen ed ≡ 1 (mod λ ( pq )) .

Dado que λ ( pq ) = mcm ( p − 1, q − 1) es, por construcción, divisible tanto por p − 1 como por q − 1 , podemos escribir mid1=h(pag1)=k(q1){\displaystyle ed-1=h(p-1)=k(q-1)} para algunos enteros no negativos h y k . [ nota 2 ]

Para comprobar si dos números, como m ed y m , son congruentes módulo pq  , basta (y de hecho es equivalente) comprobar que son congruentes módulo p  y módulo q  por separado. [ nota 3 ]

Para demostrar que m edm (mod p ) , consideramos dos casos:

  1. Si m ≡ 0 (mod p ) , m es un múltiplo de p . Por lo tanto, m ed es un múltiplo de p . Así que m ed ≡ 0 ≡ m (mod p ) .
  2. Si m ≢ 0 (mod p ) ,
    metromid=metromid1metro=metroh(pag1)metro=(metropag1)hmetro1hmetrometro(modpag),{\displaystyle m^{ed}=m^{ed-1}m=m^{h(p-1)}m=(m^{p-1})^{h}m\equiv 1^{h}m\equiv m{\pmod {p}},}
    donde utilizamos el pequeño teorema de Fermat para reemplazar m p −1 mod p con 1.

La verificación de que m edm (mod q ) procede de una manera completamente análoga:

  1. Si m ≡ 0 (mod q ) , m ed es un múltiplo de q . Por lo tanto, m ed ≡ 0 ≡ m (mod q ) .
  2. Si m ≢ 0 (mod q ) ,
    metromid=metromid1metro=metrok(q1)metro=(metroq1)kmetro1kmetrometro(modq).{\displaystyle m^{ed}=m^{ed-1}m=m^{k(q-1)}m=(m^{q-1})^{k}m\equiv 1^{k}m\equiv m{\pmod {q}}.}

Esto completa la demostración de que, para cualquier entero m y enteros e y d tales que ed ≡ 1 (mod λ ( pq )) , (metromi)dmetro(modpagq).{\displaystyle (m^{e})^{d}\equiv m{\pmod {pq}}.}

Notas

  1. No podemos romper trivialmente RSA aplicando el teorema (mod pq ) porque pq no es primo.
  2. En particular, la afirmación anterior se cumple para cualquier e y d que satisfagan ed ≡ 1 (mod ( p − 1)( q − 1)) , ya que ( p − 1)( q − 1) es divisible por λ ( pq ) , y por lo tanto trivialmente también por p − 1 y q − 1 . Sin embargo, en las implementaciones modernas de RSA, es común usar un exponente privado reducido d que solo satisface la condición más débil, pero suficiente, ed ≡ 1 (mod λ ( pq )) .
  3. Esto forma parte del teorema chino del resto , aunque no es la parte significativa de ese teorema.

Demostración mediante el teorema de Euler.

Aunque el artículo original de Rivest, Shamir y Adleman utilizó el pequeño teorema de Fermat para explicar por qué funciona RSA, es común encontrar demostraciones que se basan en el teorema de Euler .

Queremos demostrar que m edm (mod n ) , donde n = pq es un producto de dos números primos distintos, y e y d son enteros positivos que satisfacen ed ≡ 1 (mod φ ( n )) . Dado que e y d son positivos, podemos escribir ed = 1 + h φ ( n ) para algún entero no negativo h . Suponiendo que m es coprimo con n , tenemos metromid=metro1+hφ(norte)=metro(metroφ(norte))hmetro(1)hmetro(modnorte),{\displaystyle m^{ed}=m^{1+h\varphi (n)}=m(m^{\varphi (n)})^{h}\equiv m(1)^{h}\equiv m{\pmod {n}},}

donde la penúltima congruencia se deduce del teorema de Euler .

De manera más general, para cualquier e y d que satisfagan ed ≡ 1 (mod λ ( n )) , se llega a la misma conclusión a partir de la generalización de Carmichael del teorema de Euler , que establece que m λ (n) ≡ 1 (mod n ) para todo m relativamente primo a n .

Cuando m no es primo relativo con n , el argumento anterior es inválido. Esto es muy improbable (solo una proporción de los números 1/ p + 1/ q − 1/( pq ) poseen esta propiedad), pero incluso en este caso, la congruencia deseada sigue siendo cierta. O bien m ≡ 0 (mod p ) o bien m ≡ 0 (mod q ) , y estos casos pueden tratarse utilizando la demostración anterior.

Relleno

Ataques contra RSA simple

Existen varios ataques contra RSA estándar, como se describe a continuación.

  • Al cifrar con exponentes de cifrado bajos (por ejemplo, e = 3 ) y valores pequeños de m (es decir, m < n 1/ e ), el resultado de m e es estrictamente menor que el módulo n . En este caso, los textos cifrados se pueden descifrar fácilmente tomando la raíz e del texto cifrado sobre los enteros.
  • Si se envía el mismo mensaje en texto plano a e o más destinatarios de forma cifrada, y los receptores comparten el mismo exponente e , pero diferentes p , q y, por lo tanto , n , entonces es fácil descifrar el mensaje original en texto plano mediante el teorema chino del resto . Johan Håstad observó que este ataque es posible incluso si los textos planos no son iguales, pero el atacante conoce una relación lineal entre ellos. [ 38 ] Este ataque fue mejorado posteriormente por Don Coppersmith (véase el ataque de Coppersmith ). [ 39 ]
  • Debido a que el cifrado RSA es un algoritmo de cifrado determinista (es decir, no tiene un componente aleatorio), un atacante puede lanzar con éxito un ataque de texto plano elegido contra el criptosistema, cifrando posibles textos planos con la clave pública y comprobando si son iguales al texto cifrado. Un criptosistema se considera semánticamente seguro si un atacante no puede distinguir dos cifrados entre sí, incluso si conoce (o ha elegido) los textos planos correspondientes. RSA sin relleno no es semánticamente seguro. [ 40 ]
  • RSA tiene la propiedad de que el producto de dos textos cifrados es igual al cifrado del producto de los respectivos textos planos. Es decir, m 1 e m 2 e ≡ ( m 1 m 2 ) e (mod n ) . Debido a esta propiedad multiplicativa, es posible un ataque de texto cifrado elegido . Por ejemplo, un atacante que quiera conocer el descifrado de un texto cifrado cm e (mod n ) puede pedirle al poseedor de la clave privada d que descifre un texto cifrado aparentemente inofensivo c ′ ≡ cr e (mod n ) para algún valor r elegido por el atacante. Debido a la propiedad multiplicativa, c ' es el cifrado de mr (mod n ) . Por lo tanto, si el atacante tiene éxito con el ataque, conocerá mr (mod n ), a partir del cual puede derivar el mensaje m multiplicando mr por el inverso modular de r módulo n . [ 33 ] [ 41 ]
  • Dado el exponente privado d , se puede factorizar eficientemente el módulo n = pq . Y dada la factorización del módulo n = pq , se puede obtener cualquier clave privada ( d ', n ) generada contra una clave pública ( e ', n ). [ 30 ]  

Esquemas de relleno

Para evitar estos problemas, las implementaciones prácticas de RSA suelen incorporar algún tipo de relleno aleatorio y estructurado al valor m antes de cifrarlo. Este relleno garantiza que m no se encuentre dentro del rango de textos planos inseguros y que un mensaje dado, una vez rellenado, se cifrará en uno de un gran número de posibles textos cifrados diferentes.

Estándares como PKCS#1 se han diseñado cuidadosamente para rellenar mensajes de forma segura antes del cifrado RSA. Dado que estos esquemas rellenan el texto plano m con una cierta cantidad de bits adicionales, el tamaño del mensaje sin rellenar M debe ser algo menor. Los esquemas de relleno RSA deben diseñarse cuidadosamente para prevenir ataques sofisticados que podrían verse facilitados por una estructura de mensaje predecible. Las primeras versiones del estándar PKCS#1 (hasta la versión 1.5) utilizaban una construcción que aparentemente hacía que RSA fuera semánticamente seguro. Sin embargo, en Crypto 1998, Bleichenbacher demostró que esta versión es vulnerable a un ataque práctico adaptativo de texto cifrado elegido . Además, en Eurocrypt 2000, Coron et al. [ 42 ] demostraron que, para algunos tipos de mensajes, este relleno no proporciona un nivel de seguridad suficientemente alto. Las versiones posteriores del estándar incluyen el Relleno de Cifrado Asimétrico Óptimo (OAEP), que previene estos ataques. Por lo tanto, se recomienda utilizar OAEP en cualquier aplicación nueva y  reemplazar el relleno PKCS#1 v1.5 siempre que sea posible. El estándar PKCS#1 también incorpora esquemas de procesamiento diseñados para brindar seguridad adicional a las firmas RSA, como el Esquema de Firma Probabilística para RSA ( RSA-PSS ).

Los esquemas de relleno seguro, como RSA-PSS, son tan esenciales para la seguridad de la firma de mensajes como para su cifrado. Se concedieron dos patentes estadounidenses sobre PSS ( patente estadounidense 6,266,771 y patente estadounidense 7,036,014 ); sin embargo, estas patentes expiraron el 24 de julio de 2009 y el 25 de abril de 2010, respectivamente. El uso de PSS ya no parece estar limitado por patentes. Cabe señalar que el uso de diferentes pares de claves RSA para el cifrado y la firma es potencialmente más seguro. [ 43 ]

Consideraciones de seguridad y prácticas

Utilizando el algoritmo chino del resto

Para mayor eficiencia, muchas bibliotecas criptográficas populares (como OpenSSL , Java y .NET ) utilizan para el descifrado y la firma la siguiente optimización basada en el teorema chino del resto . [ 44 ] Los siguientes valores se precalculan y almacenan como parte de la clave privada:

  • pag{\displaystyle p}yq{\displaystyle q}  los números primos de la generación de claves,
  • dPAG=d(modpag1),{\displaystyle d_{P}=d{\pmod {p-1}},}
  • dQ=d(modq1),{\displaystyle d_{Q}=d{\pmod {q-1}},}
  • qinv=q1(modpag).{\displaystyle q_{\text{inv}}=q^{-1}{\pmod {p}}.}

Estos valores permiten al receptor calcular la exponenciación m = c d (mod pq ) de manera más eficiente de la siguiente manera:   metro1=dodPAG(modpag){\displaystyle m_{1}=c^{d_{P}}{\pmod {p}}},   metro2=dodQ(modq){\displaystyle m_{2}=c^{d_{Q}}{\pmod {q}}},   h=qinv(metro1metro2)(modpag){\displaystyle h=q_{\text{inv}}(m_{1}-m_{2}){\pmod {p}}}, [ d ]  metro=metro2+hq{\displaystyle m=m_{2}+hq}.

Esto resulta más eficiente que calcular la exponenciación elevando al cuadrado , aunque se deban calcular dos exponenciaciones modulares. La razón es que ambas exponenciaciones modulares utilizan un exponente y un módulo menores.

Factorización de enteros y el problema RSA

La seguridad del criptosistema RSA se basa en dos problemas matemáticos: el problema de factorizar números grandes y el problema RSA . Se considera que el descifrado completo de un texto cifrado RSA es inviable, dado que ambos problemas son difíciles ; es decir, no existe un algoritmo eficiente para resolverlos. Proporcionar seguridad contra el descifrado parcial puede requerir la adición de un esquema de relleno seguro . [ 45 ]

El problema RSA se define como la tarea de tomar e -ésimas raíces módulo un número compuesto n : recuperar un valor m tal que cm e (mod n ) , donde ( n , e ) es una clave pública RSA y c es un texto cifrado RSA. Actualmente, el enfoque más prometedor para resolver el problema RSA es factorizar el módulo n . Con la capacidad de recuperar factores primos, un atacante puede calcular el exponente secreto d a partir de una clave pública ( n , e ) , y luego descifrar c usando el procedimiento estándar. Para lograr esto, un atacante factoriza n en p y q , y calcula mcm( p -1, q -1) que permite determinar d a partir de e . Aún no se ha encontrado ningún método de tiempo polinomial para factorizar grandes enteros en una computadora clásica, pero no se ha demostrado que no exista ninguno; consulte factorización de enteros para una discusión de este problema.

La primera factorización RSA-512 en 1999 utilizó cientos de computadoras y requirió el equivalente a 8400 años MIPS, en un tiempo transcurrido de aproximadamente siete meses. [ 46 ] Para 2009, Benjamin Moody podía factorizar una clave RSA de 512 bits en 73 días utilizando solo software público (GGNFS) y su computadora de escritorio (un Athlon64 de doble núcleo con una CPU de 1900 MHz). Se requirieron  poco menos de 5 gigabytes de almacenamiento en disco y alrededor de 2,5 gigabytes de RAM para el proceso de cribado.  

Rivest, Shamir y Adleman señalaron [ 3 ] que Miller ha demostrado que, asumiendo la veracidad de la hipótesis de Riemann extendida , encontrar d a partir de n y e es tan difícil como factorizar n en p y q (salvo una diferencia de tiempo polinomial). [ 47 ] Sin embargo, Rivest, Shamir y Adleman señalaron, en la sección IX/D de su artículo, que no habían encontrado una prueba de que invertir RSA sea tan difícil como factorizar.

A partir de 2020, el número RSA factorizado más grande conocido públicamente tenía 829  bits (250 dígitos decimales, RSA-250 ). [ 48 ] Su factorización, mediante una implementación distribuida de última generación, tomó alrededor de 2700 años de CPU. En la práctica, las claves RSA suelen tener una longitud de 1024 a 4096 bits. En 2003, RSA Security estimó que las claves de 1024 bits probablemente se volverían descifrables para 2010. [ 49 ] A partir de 2020, no se sabe si tales claves pueden descifrarse, pero las recomendaciones mínimas han pasado a al menos 2048  bits. [ 50 ] Generalmente se presume que RSA es seguro si n es suficientemente grande, fuera de la computación cuántica.

Si n es de 300 bits o menos, se puede factorizar en unas pocas horas en un ordenador personal , utilizando software ya disponible gratuitamente. Se ha demostrado que las claves de 512 bits son prácticamente vulnerables desde 1999, cuando se factorizó RSA-155 utilizando varios cientos de ordenadores, y ahora se factorizan en unas pocas semanas utilizando hardware común. En 2011 se informaron exploits que utilizaban certificados de firma de código de 512 bits que podrían haber sido factorizados. [ 51 ] Un dispositivo de hardware teórico llamado TWIRL , descrito por Shamir y Tromer en 2003, puso en duda la seguridad de las claves de 1024 bits. [ 49 ]  

En 1994, Peter Shor demostró que una computadora cuántica , si alguna vez se pudiera crear una de manera práctica para ese propósito, sería capaz de factorizar en tiempo polinomial , rompiendo RSA; véase el algoritmo de Shor .

Generación de clave defectuosa

La búsqueda de los números primos grandes p y q generalmente se realiza probando números aleatorios del tamaño correcto con pruebas de primalidad probabilísticas que eliminan rápidamente casi todos los números no primos.

Los números p y q no deben estar "demasiado cerca", para que la factorización de Fermat para n no tenga éxito. Si pq es menor que 2 n 1/4 ( n = pq , que incluso para valores "pequeños" de 1024 bits de n es3 × 10 77 ), resolver para p y q es trivial. Además, si p − 1 o q − 1 tienen solo factores primos pequeños, n se puede factorizar rápidamente mediante el algoritmo p − 1 de Pollard , y por lo tanto, tales valores de p o q deben descartarse.

Es importante que el exponente privado d sea suficientemente grande. Michael J. Wiener demostró que si p está entre q y 2q (lo cual es bastante típico) y d < n 1/4 /3 , entonces d se puede calcular eficientemente a partir de n y e . [ 52 ] 

No se conoce ningún ataque contra exponentes públicos pequeños como e = 3 , siempre que se utilice el relleno adecuado. El ataque de Coppersmith tiene muchas aplicaciones en ataques a RSA, especialmente si el exponente público e es pequeño y si el mensaje cifrado es corto y no tiene relleno. 65537 es un valor comúnmente utilizado para e ; este valor puede considerarse un compromiso entre evitar posibles ataques de exponentes pequeños y permitir cifrados eficientes (o verificación de firma). La publicación especial del NIST sobre seguridad informática (SP 800-78 Rev. 1 de agosto de 2007) no permite exponentes públicos e menores que 65537, pero no indica el motivo de esta restricción.   

En octubre de 2017, un equipo de investigadores de la Universidad Masaryk anunció la vulnerabilidad ROCA , que afecta a las claves RSA generadas por un algoritmo integrado en una biblioteca de Infineon conocida como RSALib. Se demostró que un gran número de tarjetas inteligentes y módulos de plataforma segura (TPM) estaban afectados. Las claves RSA vulnerables se identifican fácilmente mediante un programa de prueba publicado por el equipo. [ 53 ]

Importancia de la generación de números aleatorios robustos

Para generar los números primos p y q , se debe utilizar un generador de números aleatorios criptográficamente robusto , debidamente inicializado con la entropía adecuada. A principios de 2012, Arjen K. Lenstra , James P. Hughes, Maxime Augier, Joppe W. Bos, Thorsten Kleinjung y Christophe Wachter realizaron un análisis comparativo de millones de claves públicas recopiladas de Internet . Lograron factorizar el 0,2 % de las claves utilizando únicamente el algoritmo de Euclides. [ 54 ] [ 55 ]   

Explotaron una vulnerabilidad exclusiva de los criptosistemas basados ​​en la factorización de enteros. Si n = pq es una clave pública y n ′ = pq es otra, entonces si por casualidad p = p (pero q no es igual a q '), entonces un cálculo simple de mcd( n , n ′) = p factoriza tanto n como n ', comprometiendo totalmente ambas claves. Lenstra et al. señalan que este problema puede minimizarse utilizando una semilla aleatoria robusta con una longitud de bits que duplica el nivel de seguridad previsto, o empleando una función determinista para elegir q dado p , en lugar de elegir p y q de forma independiente.

Nadia Heninger formó parte de un grupo que realizó un experimento similar. Utilizaron una idea de Daniel J. Bernstein para calcular el MCD de cada clave RSA n contra el producto de todas las demás claves n ' que habían encontrado (un número de 729 millones de dígitos), en lugar de calcular cada mcd( n , n ') por separado, logrando así una aceleración muy significativa, ya que después de una división grande, el problema del MCD tiene un tamaño normal.

Heninger afirma en su blog que las teclas defectuosas se produjeron casi exclusivamente en aplicaciones integradas, incluyendo «cortafuegos, enrutadores, dispositivos VPN, dispositivos de administración remota de servidores, impresoras, proyectores y teléfonos VoIP» de más de 30 fabricantes. Heninger explica que el problema del número primo compartido, descubierto por los dos grupos, se debe a situaciones en las que el generador de números pseudoaleatorios se inicializa con una semilla deficiente y luego se reinicializa entre la generación del primer y el segundo número primo. El uso de semillas con una entropía suficientemente alta, obtenidas a partir de la temporización de las pulsaciones de teclas, el ruido de los diodos electrónicos o el ruido atmosférico de un receptor de radio sintonizado entre estaciones, debería solucionar el problema. [ 56 ]

La generación de números aleatorios robustos es fundamental en todas las fases de la criptografía de clave pública. Por ejemplo, si se utiliza un generador débil para las claves simétricas distribuidas por RSA, un intruso podría eludir RSA y adivinar directamente las claves simétricas.

Ataques de sincronización

Kocher describió un nuevo ataque contra RSA en 1995: si la atacante Eve conoce el hardware de Alice con suficiente detalle y puede medir los tiempos de descifrado para varios textos cifrados conocidos, Eve puede deducir rápidamente la clave de descifrado d . Este ataque también se puede aplicar contra el esquema de firma RSA. En 2003, Boneh y Brumley demostraron un ataque más práctico capaz de recuperar factorizaciones RSA a través de una conexión de red (por ejemplo, desde un servidor web habilitado para Secure Sockets Layer (SSL)). [ 57 ] Este ataque aprovecha la información filtrada por la optimización del teorema chino del resto utilizada por muchas implementaciones de RSA.

Una forma de frustrar estos ataques es asegurar que la operación de descifrado tome un tiempo constante para cada texto cifrado. Sin embargo, este enfoque puede reducir significativamente el rendimiento. En cambio, la mayoría de las implementaciones de RSA utilizan una técnica alternativa conocida como enmascaramiento criptográfico . El enmascaramiento RSA aprovecha la propiedad multiplicativa de RSA. En lugar de calcular c d (mod n ) , Alice primero elige un valor aleatorio secreto r y calcula ( r e c ) d (mod n ) . El resultado de este cálculo, después de aplicar el teorema de Euler , es rc d (mod n ) , por lo que el efecto de r se puede eliminar multiplicando por su inverso. Se elige un nuevo valor de r para cada texto cifrado. Con el enmascaramiento aplicado, el tiempo de descifrado ya no está correlacionado con el valor del texto cifrado de entrada, por lo que el ataque de temporización falla.

Ataques adaptativos de texto cifrado elegido

En 1998, Daniel Bleichenbacher describió el primer ataque práctico adaptativo de texto cifrado elegido contra mensajes cifrados con RSA utilizando el esquema de relleno  PKCS #1  v1 (un esquema de relleno aleatoriza y añade estructura a un mensaje cifrado con RSA, lo que permite determinar si un mensaje descifrado es válido). Debido a fallos en el esquema PKCS #1, Bleichenbacher pudo realizar un ataque práctico contra las implementaciones RSA del protocolo Secure Sockets Layer y recuperar las claves de sesión. Como resultado de este trabajo, los criptógrafos recomiendan ahora el uso de esquemas de relleno con seguridad demostrable, como el Relleno de Cifrado Asimétrico Óptimo , y RSA Laboratories ha publicado nuevas versiones de PKCS #1 que no son vulnerables a estos ataques.  

Una variante de este ataque, denominada "BERserk", regresó en 2014. [ 58 ] [ 59 ] Afectó a la biblioteca criptográfica NSS de Mozilla, que era utilizada notablemente por Firefox y Chrome.

Ataques de análisis de canal lateral

Se ha descrito un ataque de canal lateral mediante análisis de predicción de bifurcaciones (BPA). Muchos procesadores utilizan un predictor de bifurcaciones para determinar si es probable que se ejecute una bifurcación condicional en el flujo de instrucciones de un programa. A menudo, estos procesadores también implementan multihilo simultáneo (SMT). Los ataques de análisis de predicción de bifurcaciones utilizan un proceso espía para descubrir (estadísticamente) la clave privada cuando se procesa con estos procesadores.

El Análisis Simple de Predicción de Ramas (SBPA) afirma mejorar el BPA de una manera no estadística. En su artículo, "Sobre el poder del Análisis Simple de Predicción de Ramas" [ 60 ] , los autores del SBPA (Onur Aciicmez y Cetin Kaya Koc) afirman haber descubierto 508 de los 512  bits de una clave RSA en 10 iteraciones.

Ataque de inyección de fallos

En 2010 se describió un ataque de fallo de alimentación en implementaciones de RSA. [ 61 ] El autor recuperó la clave variando el voltaje de alimentación de la CPU fuera de los límites; esto provocó múltiples fallos de alimentación en el servidor.

La implementación de CRT es sensible a los ataques de inyección de fallos . Si un atacante puede obtener una firma defectuosa, se puede calcular la clave privada. [ 62 ]

Implementación complicada

Hay muchos detalles que tener en cuenta para implementar RSA de forma segura ( un generador de números pseudoaleatorios robusto , un exponente público aceptable, etc.). Esto hace que la implementación sea compleja, hasta el punto de que el libro Criptografía práctica con Go sugiere evitar RSA si es posible. [ 63 ]

Implementaciones

Algunas bibliotecas de criptografía que ofrecen soporte para RSA incluyen:

Véase también

Notas

  1. e = 2 también es posible (e incluso más rápido) pero cualitativamente diferente porque elevar al cuadrado no es una permutación; esta es la base del algoritmo de la firma de Rabin .
  2. Es decir, los valores de m que son iguales a −1, 0 o 1 módulo p, mientras que también son iguales a −1, 0 o 1 módulo q . Habrá más valores de m que tengan c = m si p  1 o q  1 tienen otros divisores en común con e  1 además de 2 porque esto da más valores de m tales quemetromi1modpag=1{\displaystyle m^{e-1}{\bmod {p}}=1}ometromi1modq=1{\displaystyle m^{e-1}{\bmod {q}}=1}respectivamente.
  3. Los parámetros utilizados aquí son artificialmente pequeños, pero también se puede utilizar OpenSSL para generar y examinar un par de claves real .
  4. Simetro1<metro2{\displaystyle m_{1}<m_{2}}, entonces algunas bibliotecas calculan h comoqinv[(metro1+qpagpag)metro2](modpag){\displaystyle q_{\text{inv}}\left[\left(m_{1}+\left\lceil {\frac {q}{p}}\right\rceil p\right)-m_{2}\right]{\pmod {p}}}.

Referencias

  1. Rivest, RL ; Shamir, A .; Adleman, L. (1977). Un método para obtener firmas digitales y criptosistemas de clave pública (PDF) (Informe técnico). Laboratorio de Ciencias de la Computación del MIT . hdl : 1721.1/148910 . MIT-LCS-TM-082.
  2. 1 2 Gardner, Martin (agosto de 1977). «Juegos matemáticos: un nuevo tipo de cifrado que tardaría millones de años en descifrarse» (PDF) . Scientific American . Vol. 237, n.º 2. doi : 10.1038/scientificamerican0877-120 . Archivado del original (PDF) el 11 de julio de 2025.  
  3. 1 2 3 4 Rivest, R.; Shamir, A.; Adleman, L. (febrero de 1978). "Un método para obtener firmas digitales y criptosistemas de clave pública" (PDF) . Communications of the ACM . 21 (2): 120– 126. CiteSeerX 10.1.1.607.2677 . doi : 10.1145/359340.359342 . Archivado del original (PDF) el 27 de enero de 2023. Recuperado el 30 de julio de 2025 . 
  4. Smart, Nigel (19 de febrero de 2008). "Dr. Clifford Cocks CB" . Universidad de Bristol . Recuperado el 20 de junio de 2025 .
  5. Bellare, Mihir ; Rogaway, Phillip . Maurer, Ueli (ed.). La seguridad exacta de las firmas digitales: Cómo firmar con RSA y Rabin . Avances en criptología—EUROCRYPT '96 . Notas de clase en informática. Springer. págs. 399–416 . doi : 10.1007/3-540-68339-9_34 . ISBN  978-3-540-61186-8.
  6. Aumasson, Jean-Philippe (2018). «10. RSA: Firma con RSA». Criptografía seria . No Starch Press. págs. 188–191 . ISBN  978-1-59327-826-7.
  7. Stinson, Douglas (2006). "7: Esquemas de firma". Criptografía: Teoría y práctica (3.ª ed.). Chapman & Hall/CRC. págs. 281–318 . ISBN   978-1-58488-508-5.
  8. Ferguson, Niels ; Kohno, Tadayoshi ; Schneier, Bruce (2010). "12. RSA". Ingeniería criptográfica . Wiley. págs. 195–211 . ISBN  978-0-470-47424-2.
  9. Galbraith, Steven (2012). «§ 24.6: Firmas digitales basadas en RSA y Rabin». Matemáticas de la criptografía de clave pública . Cambridge University Press. pp. 7–9 . ISBN   978-1-107-01392-6.
  10. 1 2 B. Kaliski; A. Rusch; J. Johnsson; A. Rusch (noviembre de 2016). K. Moriarty (ed.). PKCS #1: Especificaciones de criptografía RSA Versión 2.2 . Grupo de trabajo de ingeniería de Internet . doi : 10.17487/RFC8017 . ISSN 2070-1721 . RFC 8017 . Informativo. Sustituye a RFC 3447 . 
  11. Bellare, Mihir ; Rogaway, Phillip . Santis, Alfredo (ed.). Cifrado asimétrico óptimo . Avances en criptología—EUROCRYPT '94 . Notas de clase en informática. Springer. págs. 92–111 . doi : 10.1007/BFb0053428 . ISBN  978-3-540-60176-0.
  12. Aumasson, Jean-Philippe (2018). "10. RSA: Cifrado con RSA". Criptografía seria . No Starch Press. págs. 185–188 . ISBN  978-1-59327-826-7.
  13. Galbraith, Steven (2012). «§24.7: Cifrado de clave pública basado en RSA y Rabin». Matemáticas de la criptografía de clave pública . Cambridge University Press. pp. 511–512 . ISBN  978-1-107-01392-6.
  14. Shoup, Victor (2001), Propuesta de una norma ISO para el cifrado de clave pública (versión 2.1) , Cryptology ePrint Archive, International Association for Cryptologic Research
  15. Ferguson, Niels ; Kohno, Tadayoshi ; Schneier, Bruce (2010). "12. RSA". Ingeniería criptográfica . Wiley. págs. 195–211 . ISBN  978-0-470-47424-2.
  16. R. Housley; S. Turner (febrero de 2025). Uso del algoritmo RSA-KEM en la sintaxis de mensajes criptográficos (CMS) . Grupo de trabajo de ingeniería de Internet . doi : 10.17487/RFC9690 . RFC 9690 .Norma propuesta. Sustituye a RFC 5990 . 
  17. Castelvecchi, Davide (30-10-2020). "Pionero de la computación cuántica advierte sobre la complacencia en la seguridad de Internet" . Nature . 587 ( 7833): 189. Bibcode : 2020Natur.587..189C . doi : 10.1038/d41586-020-03068-9 . PMID 33139910. S2CID 226243008 .  Entrevista a Peter Shor en 2020 .
  18. Diffie, W. ; Hellman, ME (noviembre de 1976). "Nuevas direcciones en criptografía" (PDF) . IEEE Transactions on Information Theory . 22 (6): 644– 654. Bibcode : 1976ITIT...22..644D . CiteSeerX 10.1.1.37.9720 . doi : 10.1109/TIT.1976.1055638 . ISSN 0018-9448 . Archivado del original (PDF) el 29-11-2014 . Recuperado el 30-07-2025 .  
  19. Rivest, Ronald. "Los primeros días de RSA: historia y lecciones" (PDF) .
  20. Calderbank, Michael (2007-08-20). "El criptosistema RSA: historia, algoritmo, números primos" (PDF) .
  21. 1 2 Robinson, Sara (junio de 2003). "Aún protegiendo secretos tras años de ataques, RSA recibe elogios para sus fundadores" (PDF) . SIAM News . 36 (5). Archivado del original (PDF) el 15 de diciembre de 2022.
  22. Cocks, CC (20 de noviembre de 1973). "Una nota sobre el cifrado no secreto" (PDF) . www.gchq.gov.uk. Archivado del original (PDF) el 28 de septiembre de 2018. Recuperado el 30 de mayo de 2017 .
  23. Jim Sauerberg. "De cifrados de clave privada a clave pública en tres sencillos pasos" .
  24. Margaret Cozzens y Steven J. Miller. "Las matemáticas del cifrado: una introducción elemental" . pág. 180.
  25. Alasdair McAndrew. "Introducción a la criptografía con software de código abierto" . pág. 12.
  26. ^ Surender R. Chiluka. "Criptografía de clave pública" .
  27. Neal Koblitz. "La criptografía como herramienta de enseñanza" . Cryptologia, vol. 21, n.º 4 (1997).
  28. "RSA Security publica el algoritmo de cifrado RSA en el dominio público" . Archivado del original el 21 de junio de 2007. Consultado el 3 de marzo de 2010 .
  29. Švenda, Petr; Nemec, Matúš; Sekan, Peter; Kvašňovský, Rudolf; Formánek, David; Komárek, David; Matyáš, Vashek (agosto de 2016). La pregunta del millón de claves: investigación de los orígenes de las claves públicas RSA . 25º Simposio de Seguridad USENIX. Austin, TX, Estados Unidos: Asociación USENIX. págs. 893–910 . ISBN  978-1-931971-32-4.
  30. 1 2 Boneh, Dan (1999). "Veinte años de ataques al criptosistema RSA" . Notices of the American Mathematical Society . 46 (2): 203– 213.
  31. Criptografía aplicada, John Wiley & Sons, Nueva York, 1996. Bruce Schneier , pág. 467.
  32. 1 2 Johnson, J.; Kaliski, B. (febrero de 2003). Estándares de criptografía de clave pública (PKCS) n.° 1: Especificaciones de criptografía RSA, versión 2.1 . Grupo de trabajo de redes. doi : 10.17487/RFC3447 . RFC 3447. Recuperado el 9 de marzo de 2016 .
  33. 1 2 Bleichenbacher, Daniel (1998). Krawczyk, Hugo (ed.). Ataques de texto cifrado elegido contra protocolos basados ​​en el estándar de cifrado RSA PKCS #1 . Avances en criptología—CRYPTO '98 . Notas de clase en ciencias de la computación. Springer. págs. 1–12 . doi : 10.1007/BFb0055716 . ISBN  978-3-540-68462-6.
  34. Rabin, Michael O. (1978). «Firmas digitales». En DeMillo, Richard A .; Dobkin, David P .; Jones, Anita K .; Lipton, Richard J. (eds.). Fundamentos de la computación segura . Nueva York: Academic Press. pp. 155–168 . ISBN  0-12-210350-5.
  35. Rabin, Michael O. (enero de 1979). Firmas digitales y funciones de clave pública tan intratables como la factorización (PDF) (Informe técnico). Cambridge, MA, Estados Unidos: Laboratorio de Ciencias de la Computación del MIT . TR-212.
  36. Bernstein, Daniel J. (31 de enero de 2008). Firmas RSA y firmas Rabin-Williams: estado del arte (Informe).(Información adicional en https://cr.yp.to/sigs.html )
  37. Bellare, Mihir ; Rogaway, Phillip (mayo de 1996). Maurer, Ueli (ed.). La seguridad exacta de las firmas digitales: cómo firmar con RSA y Rabin . Avances en criptología – EUROCRYPT '96 . Notas de clase en informática. Vol. 1070. Zaragoza, España: Springer. pp. 399–416 . doi : 10.1007/3-540-68339-9_34 . ISBN   978-3-540-61186-8.
  38. Håstad, Johan (1986). "Sobre el uso de RSA con exponente bajo en una red de clave pública". Avances en criptología – Actas de CRYPTO '85 . Notas de clase en informática. Vol. 218. págs. 403–408 . doi : 10.1007/3-540-39799-X_29 . ISBN   978-3-540-16463-0.
  39. Coppersmith, Don (1997). "Soluciones pequeñas a ecuaciones polinomiales y vulnerabilidades RSA de bajo exponente" (PDF) . Journal of Cryptology . 10 (4): 233– 260. CiteSeerX 10.1.1.298.4806 . doi : 10.1007/s001459900030 . S2CID 15726802 .  
  40. Goldwasser, Shafi ; Micali, Silvio (5 de mayo de 1982). "Cifrado probabilístico y cómo jugar al póker mental manteniendo en secreto toda la información parcial" . Actas del decimocuarto simposio anual de la ACM sobre Teoría de la Computación - STOC '82 . Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 365–377 . doi : 10.1145/800070.802212 . ISBN  978-0-89791-070-5. S2CID 10316867 . 
  41. Davida, George I. (1982). Criptoanálisis de firma elegida del criptosistema de clave pública RSA (MIT) (Informe técnico). Departamento de Ingeniería Eléctrica e Informática, Universidad de Wisconsin, Milwaukee. Informe técnico TR-CS-82-2.
  42. Coron, Jean-Sébastien; Joye, Marc; Naccache, David; Paillier, Pascal (2000). «Nuevos ataques al cifrado PKCS#1 v1.5». En Preneel, Bart (ed.). Avances en criptología — EUROCRYPT 2000. Lecture Notes in Computer Science. Vol. 1807. Berlín, Heidelberg: Springer. pp. 369–381 . doi : 10.1007/3-540-45539-6_25 . ISBN   978-3-540-45539-4.
  43. "Algoritmo RSA" .
  44. "OpenSSL bn_s390x.c" . Github . Consultado el 2 de agosto de 2024 .
  45. Machie, Edmond K. (29 de marzo de 2013). Ataque de rastreo de seguridad de red y reacción en la red del Departamento de Defensa de los Estados Unidos . Trafford. pág. 167. ISBN  978-1466985742.
  46. Lenstra, Arjen; et al. (Grupo) (2000). "Factorización de un módulo RSA de 512 bits" (PDF) . Eurocrypt. 
  47. Miller, Gary L. (1975). "La hipótesis de Riemann y las pruebas de primalidad" (PDF) . Actas del séptimo simposio anual de la ACM sobre teoría de la computación . págs. 234–239 . 
  48. Zimmermann, Paul (28 de febrero de 2020). "Factorización de RSA-250" . Cado-nfs-discuss. Archivado del original el 28 de febrero de 2020. Consultado el 12 de julio de 2020 .
  49. 1 2 Kaliski, Burt (2003-05-06). "TWIRL y tamaño de clave RSA" . RSA Laboratories . Archivado del original el 17-04-2017 . Recuperado el 24-11-2017 .
  50. Barker, Elaine; Dang, Quynh (22 de enero de 2015). "Publicación especial NIST 800-57 Parte 3 Revisión 1: Recomendación para la gestión de claves: Guía de gestión de claves específica para aplicaciones" (PDF) . Instituto Nacional de Estándares y Tecnología . pág. 12. doi : 10.6028/NIST.SP.800-57pt3r1 . Recuperado el 24 de noviembre de 2017 . 
  51. Sandee, Michael (21 de noviembre de 2011). "Abuso de certificados RSA-512 en la práctica" . Blog de Fox-IT International .
  52. Wiener, Michael J. (mayo de 1990). "Criptoanálisis de exponentes secretos RSA cortos" (PDF) . IEEE Transactions on Information Theory . 36 (3): 553– 558. Bibcode : 1990ITIT...36..553W . doi : 10.1109/18.54902 . S2CID 7120331 . 
  53. Nemec, Matus; Sys, Marek; Svenda, Petr; Klinec, Dusan; Matyas, Vashek (noviembre de 2017). "El regreso del ataque Coppersmith: factorización práctica de módulos RSA ampliamente utilizados" (PDF) . Actas de la Conferencia ACM SIGSAC de 2017 sobre seguridad informática y de comunicaciones . CCS '17. doi : 10.1145/3133956.3133969 .
  54. Markoff, John (14 de febrero de 2012). "Se encuentra una falla en un método de cifrado en línea" . The New York Times .
  55. ^ Lenstra, Arjen K.; Hughes, James P.; Augier, Maxime; Bos, Joppe W.; Kleinjung, Thorsten; Wachter, Christophe (2012). "Ron estaba equivocado, Whit tiene razón" (PDF) .
  56. Heninger, Nadia (15 de febrero de 2012). "Nueva investigación: no hay necesidad de entrar en pánico por las claves factorizables; solo hay que tener cuidado con lo básico" . Freedom to Tinker .
  57. Brumley, David; Boneh, Dan (2003). "Los ataques de temporización remota son prácticos" (PDF) . Actas de la 12.ª Conferencia sobre el Simposio de Seguridad USENIX . SSYM'03.
  58. "Se descubre un error conocido como 'BERserk' en la biblioteca criptográfica NSS de Mozilla que afecta a Firefox y Chrome . Dark Reading . 25 de septiembre de 2014. Consultado el 4 de enero de 2022 .
  59. "Falsificación de firma RSA en NSS" . Mozilla .
  60. Acıiçmez, Onur; Koç, Çetin Kaya; Seifert, Jean-Pierre (2007). "Sobre el poder del análisis de predicción de bifurcaciones simples". Actas del 2.º Simposio ACM sobre Seguridad de la Información, la Computación y las Comunicaciones . ASIACCS '07. págs. 312–320 . CiteSeerX 10.1.1.80.1438 . doi : 10.1145/1229285.1266999 .  
  61. Pellegrini, Andrea; Bertacco, Valeria; Austin, Todd (marzo de 2010). «Ataque basado en fallos a la autenticación RSA». Conferencia y Exposición de Diseño, Automatización y Pruebas en Europa de 2010 (DATE 2010) . págs. 855–860 . doi : 10.1109/DATE.2010.5456933 . ISBN  978-3-9810801-6-2.
  62. Boneh, Dan; DeMillo, Richard A.; Lipton, Richard J. (noviembre de 2000). "Sobre la importancia de eliminar errores en los cálculos criptográficos". Journal of Cryptology . 14 (2): 106– 107. doi : 10.1007/s001450010016 . ISSN 0933-2790 . 
  63. Isom, Kyle. "Criptografía práctica con Go" . Consultado el 4 de enero de 2022 .

Lecturas adicionales

  • La patente original de RSA presentada ante la Oficina de Patentes de los Estados Unidos por Rivest; Ronald L. (Belmont, MA), Shamir; Adi (Cambridge, MA), Adleman; Leonard M. (Arlington, MA), el 14 de diciembre de 1977, patente estadounidense 4,405,829 .
  • RFC 8017: PKCS #1: Especificaciones de criptografía RSA Versión 2.2
  • Explicación de RSA usando lámparas de colores en YouTube
  • Recorrido completo por RSA
  • El juego del escondite con números primos: cómo funciona el cifrado RSA
  • Onur Aciicmez, Cetin Kaya Koc, Jean-Pierre Seifert: Sobre el poder del análisis de predicción de ramificaciones simples
  • Presentación interactiva de RSA por CrypTool
Obtenido de " https://en.wikipedia.org/w/index.php?title=RSA_cryptosystem&oldid=1362865980 "