fbpx
Wikipedia

RSA

En criptografía, RSA (Rivest, Shamir y Adleman) es un sistema criptográfico de clave pública desarrollado en 1979, que utiliza factorización de números enteros. Es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente.

La seguridad de este algoritmo radica en el problema de la factorización de números enteros. Los mensajes enviados se representan mediante números, y el funcionamiento se basa en el producto, conocido, de dos números primos grandes elegidos al azar y mantenidos en secreto. Actualmente estos primos son del orden de , y se prevé que su tamaño siempre crezca con el aumento de la capacidad de cálculo de los ordenadores.

Como en todo sistema de clave pública, cada usuario posee dos claves de cifrado: una pública y otra privada. Cuando se quiere enviar un mensaje, el emisor busca la clave pública del receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado llega al receptor, este se ocupa de descifrarlo usando su clave privada.

Se cree que RSA será seguro mientras no se conozcan formas rápidas de descomponer un número grande en producto de primos. Aunque se cree que la computación cuántica podría proveer de una solución al problema de factorización, existen investigadores que dudan que dichos avances vayan a volver obsoletos estos algoritmos. [1]

Historia

 
Adi Shamir, uno de los tres inventores de RSA (los otros dos son Ron Rivest y Leonard Adleman).

El algoritmo fue descrito en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman, del Instituto Tecnológico de Massachusetts (MIT); las letras RSA son las iniciales de sus apellidos. Clifford Cocks, un matemático británico que trabajaba para la agencia de inteligencia británica GCHQ, había descrito un sistema equivalente en un documento interno en 1973. Debido al elevado coste de las computadoras necesarias para implementarlo en la época su idea no trascendió. Su descubrimiento, sin embargo, no fue revelado hasta 1997 ya que era confidencial, por lo que Rivest, Shamir y Adleman desarrollaron RSA de forma independiente.

El algoritmo fue patentado por el MIT en 1983 en Estados Unidos con el número 4.405.829. Esta patente expiró el 21 de septiembre de 2000. Como el algoritmo fue publicado antes de patentar la aplicación, esto impidió que se pudiera patentar en otros lugares del mundo. Dado que Cocks trabajó en un organismo gubernamental, una patente en Estados Unidos tampoco hubiera sido posible.

Es un algoritmo puramente asimétrico, junto con DSA. Este algoritmo como su nombre lo indica, sirve para firmar (autenticar) y para cifrar información. Una desventaja del algoritmo DSA es que requiere mucho más tiempo de cómputo que RSA.

Algoritmo RSA

El algoritmo consta de tres pasos: generación de claves, cifrado y descifrado

Idea del algoritmo

Supongamos que Bob quiere enviar a Alicia un mensaje secreto que solo ella pueda leer.

Alicia envía a Bob una caja con un candado abierto, del que solo Alicia tiene la llave. Bob recibe la caja, escribe el mensaje, lo pone en la caja y la cierra con su candado (ahora Bob no puede leer el mensaje). Bob envía la caja a Alicia y ella la abre con su llave. En este ejemplo, la caja con el candado es la «clave pública» de Alicia, y la llave del candado es su «clave privada».

Técnicamente, Bob envía a Alicia un «mensaje llano»   en forma de un número   menor que otro número  , mediante un protocolo reversible conocido como padding scheme («patrón de relleno»). A continuación genera el «mensaje cifrado»   mediante la siguiente operación:

 ,

donde   es la clave pública de Alicia.

Ahora Alicia descifra el mensaje en clave   mediante la operación inversa dada por

 ,

donde   es la clave privada que solo Alicia conoce.

Generación de claves

  1. Se eligen dos números primos distintos   y  .
    • Por motivos de seguridad, estos números deben escogerse de forma aleatoria y deben tener una longitud en bits parecida. Se pueden hallar primos fácilmente mediante test de primalidad.
  2. Se calcula  .
    •   se usa como el módulo para ambas claves, pública y privada.
  3. Con   es la función φ de Euler calcula   aprovechando las dos propiedades de la función de Euler siguientes:
    •   si   es primo.
    • Si m y n son primos entre sí, entonces  .
  4. Se escoge un entero positivo   menor que  , que sea coprimo con  .
    •   se da a conocer como el exponente de la clave pública.
    • Si se escoge un   con una suma encadenada corta, el cifrado será más efectivo. Un exponente   muy pequeño (p. ej.  ) podría suponer un riesgo para la seguridad.[2]
  5. Se determina un   (mediante aritmética modular) que satisfaga la congruencia  , es decir, que   sea el multiplicador modular inverso de  
    • Expresado de otra manera,   es dividido exactamente por  .
    • Esto suele calcularse mediante el algoritmo de Euclides extendido.
    •   se guarda como el exponente de la clave privada.
La clave pública es  , esto es, el módulo y el exponente de cifrado. La clave privada es  , esto es, el módulo y el exponente de descifrado, que debe mantenerse en secreto.
Usando las propiedades de la función de Euler, el Teorema de Euler y el Teorema del resto chino se puede demostrar que  [3][4]


Notas
  • PKCS#1 v2.0 y PKCS#1 v2.1 se especifican mediante la función de Carmichael   en vez de la función   de Euler, donde   indica el mínimo común múltiplo.
  • Para una mayor eficiencia los siguientes valores se calculan de antemano y se almacenan como parte de la clave privada:
    •   y  : los primos para la generación de las claves,
    •   y  ,
    •  .

Cifrado

Alicia comunica su clave pública   a Bob y guarda la clave privada en secreto. Ahora Bob desea enviar un mensaje   a Alicia.

Primero, Bob convierte   en un número entero   menor que  . Luego calcula el texto cifrado   mediante la operación

 .

Esto puede hacerse rápido mediante el método de exponenciación binaria. Ahora Bob transmite   a Alicia.

Descifrado

Alicia puede recuperar   a partir de   usando su exponente   de la clave privada mediante el siguiente cálculo:

 .

Ahora que tiene   en su poder, puede recuperar el mensaje original   invirtiendo el padding scheme.

El procedimiento anterior funciona porque

 .

Esto es así porque, como hemos elegido   y   de forma que  , se cumple

 .

La última congruencia se sigue directamente del teorema de Euler cuando   es coprimo con  . Puede demostrarse que las ecuaciones se cumplen para todo   usando congruencias y el teorema chino del resto.

Esto muestra que se obtiene el mensaje original:

 .

Ejemplo

Aquí tenemos un ejemplo de cifrado/descifrado con RSA. Los parámetros usados aquí son pequeños y orientativos con respecto a los que maneja el algoritmo, pero podemos usar también OpenSSL para generar y examinar un par de claves reales.

p = 61 1º n.º primo privado
q = 53 2º n.º primo privado
n = p·q = 3233 producto p×q
e = 17 exponente público
d = 2753 exponente privado

La clave pública es (e, n). La clave privada es (d, n). La función de cifrado es:

 

Donde m es el texto sin cifrar. La función de descifrado es:

 

Donde c es el texto cifrado. Para cifrar el valor del texto sin cifrar 123, nosotros calculamos:

 

Para descifrar el valor del texto cifrado, nosotros calculamos:

 

Los cálculos de potencias grandes y del módulo pueden ser eficientemente realizados por el algoritmo de multiplicación cuadrática para exponenciación modular.

Esquemas

RSA debe ser combinado con algún esquema de relleno, ya que si no el valor de M puede llevar a textos cifrados inseguros.

  • El valor m=0, m=1 o m=n-1 siempre produce textos cifrados iguales para 0, 1 o n-1 respectivamente, debido a propiedades de los exponentes.
  • Cuando ciframos con exponentes pequeños (e=3) y valores pequeños de m, el resultado de m podría ser estrictamente menor que el módulo de n. En este caso, el texto cifrado podría ser fácilmente descifrado, tomando la raíz e-ésima del texto cifrado sin tener en cuenta el módulo.
  • Dado que el cifrado RSA es un algoritmo determinista (no tiene componentes aleatorios) un atacante puede lanzar con éxito un ataque de texto elegido contra el criptosistema, construyendo un diccionario de textos probables con la llave pública, y almacenando el resultado cifrado. Observando los textos cifrados en un canal de comunicación, el atacante puede usar este diccionario para descifrar el contenido del mensaje.

En la práctica, el primero de los dos problemas podría presentarse cuando enviamos pequeños mensajes ASCII donde m es la concatenación de uno o más carácter/es ASCII codificado/s. Un mensaje consiste en un solo carácter ASCII NUL (cuyo valor es 0) se codificaría como m=0, produciendo un texto cifrado de 0 sin importar qué valores de e y N son usados. Probablemente, un solo ASCII SOH (cuyo valor es 1) produciría siempre un texto cifrado de 1. Para sistemas convencionales al usar valores pequeños de e, como 3, un solo carácter ASCII mensaje codificado usando este esquema sería inseguro, ya que el máximo valor de m sería 255, y 255³ es menor que cualquier módulo razonable. De esta manera los textos sin cifrar podrían ser recuperados simplemente tomando la raíz cúbica del texto cifrado. Para evitar estos problemas, la implementación práctica del RSA se ayuda de algunas estructuras, uso del rellenado aleatorio dentro del valor de m antes del cifrado. Esta técnica asegura que m no caerá en el rango de textos sin cifrar inseguros, y que dado un mensaje, una vez que este rellenado, cifrará uno de los números grandes de los posibles textos cifrados. La última característica es la incrementación del diccionario haciendo este intratable a la hora de realizar un ataque.

El esquema de relleno de RSA (en inglés RSA-padding scheme) debe ser cuidadosamente diseñado para prevenir ataques sofisticados los cuales podrían ser facilitados por la predictibilidad de la estructura del mensaje. Ejemplos de esquema de relleno usados con RSA:[5][6]

  • RSA-OAEP (Optimal Asymetric Encryption Padding) o su versión moficada RSA-OAEP+. Este tipo de relleno es usado por ejemplo en PKCS#1 y en la red de anonimato TOR
  • RSA-SAEP+ (Simplified Asymmetric Encryption Padding)
  • RSA-REACT
  • RSA-PSS (Probabilistic Signature Scheme). Usado por ejemplo en PKCS#1

Algunos de estos esquemas de relleno, por ejemplo RSA-OAEP y RSA-PSS, encuentran su 'justificación' teórica en el polémico modelo de oráculo aleatorio.

Autenticación de mensajes

RSA puede también ser usado para autenticar un mensaje. Supongamos que Alicia desea enviar un mensaje autentificado a Bob. Ella produce un valor hash del mensaje, lo eleva a la potencia de d≡ mod n (como ella hace cuando descifra mensajes), y lo adjunta al mensaje como una “firma”. Cuando Bob recibe el mensaje autentificado, utiliza el mismo algoritmo hash en conjunción con la clave pública de Alice. Eleva la firma recibida a la potencia de e≡ mod n (como hace cuando cifra mensajes), y compara el resultado hash obtenido con el valor hash del mensaje. Si ambos coinciden, él sabe que el autor del mensaje estaba en posesión de la clave secreta de Alicia, y que el mensaje no ha sido tratado de forzar (no ha sufrido ataques).

Se debe observar que la seguridad de los padding-schemes como RSA-PSS son esenciales tanto para la seguridad de la firma como para el cifrado de mensajes, y que nunca se debería usar la misma clave para propósitos de cifrado y de autentificación.

Seguridad

La seguridad del criptosistema RSA está basado en dos problemas matemáticos: el problema de factorizar números grandes y el problema RSA. El descifrado completo de un texto cifrado con RSA es computacionalmente intratable, no se ha encontrado un algoritmo eficiente todavía para ambos problemas. Proveyendo la seguridad contra el descifrado parcial podría requerir la adición de una seguridad padding scheme.

El problema del RSA se define como la tarea de tomar raíces e-ésimas módulo a componer n: recuperando un valor m tal que mec (mod n), donde (e, n) es una clave pública RSA y c es el texto cifrado con RSA. Actualmente la aproximación para solventar el problema del RSA es el factor del módulo n. Con la capacidad para recuperar factores primos, un atacante puede calcular el exponente secreto d desde una clave pública (e, n), entonces descifra c usando el procedimiento estándar. Para conseguir esto, un atacante debe factorizar n en p y q, y calcular (p-1)(q-1) con lo que le permite determinar d y e. No se ha encontrado ningún método en tiempo polinómico para la factorización de enteros largos. Ver factorización de enteros para la discusión de este problema.

La factorización de números grandes, por lo general proponen métodos teniendo 663 bits de longitud usando métodos distribuidos avanzados. Las claves RSA son normalmente de entre 1024-2048 bits de longitud. Algunos expertos creen que las claves de 1024 bits podrían comenzar a ser débiles en poco tiempo; claves de 4096 bits podrían ser rotas en un futuro. Por lo tanto, si n es suficientemente grande el algoritmo RSA es seguro. Si n tiene 256 bits o menos, puede ser factorizado en pocas horas con un ordenador personal, usando software libre. Si n tiene 512 bits o menos, puede ser factorizado por varios cientos de computadoras como en 1999. Un dispositivo hardware teórico llamado TWIRL descrito por Shamir y Tromer en el 2003 cuestionó a la seguridad de claves de 1024 bits. Se recomienda actualmente que n sea como mínimo de 2048 bits de longitud.

En 1993, Peter Shor publicó su algoritmo, mostrando que una computadora cuántica podría en principio mejorar la factorización en tiempo polinomial, mostrando RSA como un algoritmo obsoleto. Sin embargo, las computadoras cuánticas no se esperan que acaben su desarrollo hasta dentro de muchos años.

Consideraciones prácticas

Generación de claves

Buscando números primos grandes p y q por el test de aleatoriedad y realizando tests probabilísticos de primalidad los cuales eliminan virtualmente todos los no-primos (eficientemente).

Los números p y q no deberían ser suficientemente cercanos para que la factorización de Fermat para n sea exitosa. Además, si cualquier p-1 o q-1 tiene solo factores primos pequeños, n puede ser factorizado rápidamente, con lo que estos valores de p o q deben ser descartados.

No se debería emplear un método de búsqueda de primos con el cual se dé alguna información cualquiera sobre los primos al atacante. En particular, se debe utilizar un buen generador aleatorio de números primos para el valor empleado. Obsérvese que el requerimiento está en que ambos sean aleatorios e impredecibles. No son el mismo criterio; un número podría haber sido elegido por un proceso aleatorio, pero si este es predecible de cualquier forma (o parcialmente predecible), el método usado resultará en una baja seguridad. Por ejemplo: la tabla de números aleatorios de Rand Corp en 1950 podría servir muy bien como ejemplo de criterio verdaderamente aleatorio, pero ha sido publicada y a esta puede acceder el atacante. Si el atacante puede conjeturar la mitad de los dígitos de p o q, él podría rápidamente calcular la otra mitad. (Ver Coppersmith en 1997).

Es importante que la clave secreta d sea muy grande. Wiener mostró en 1990 que si p está entre q y 2q (es típico) y d < n1/4/3, entonces d puede calcularse eficientemente a partir de n y e. Aunque valores de e tan bajos como 3 se han usado en el pasado, los exponentes pequeños en RSA están actualmente en desuso, por razones que incluyen el no relleno del texto sin cifrar, vulnerabilidad listada antes. 65537 es normalmente usado como valor de e, considerado demasiado grande para evitar ataques de exponenciación pequeños, de hecho tiene un peso de Hamming suficiente para facilitar una exponenciación eficiente.

Velocidad

RSA es mucho más lento que DES y que otros criptosistemas simétricos. En la práctica, Bob normalmente cifra mensajes con algoritmos simétricos, cifra la clave simétrica con RSA, y transmite a ambos dicha clave (es decir la transmite cifrada con RSA) y el mensaje simétricamente cifrado a Alicia.

Esto plantea además problemas adicionales de seguridad, por ejemplo, es de gran importancia usar un generador aleatorio fuerte para claves simétricas, porque de otra forma Eve (un atacante que quiera averiguar el contenido del mensaje) podría puentear la clave asimétrica de RSA mediante la adivinación de la clave simétrica.

Distribución de claves

Como con todos los cifrados, es importante cómo se distribuyan las claves públicas del RSA. La distribución de la clave debe ser segura contra un atacante que se disponga a espiar el canal para hacer un ataque de replay. Supongamos Eve (atacante) tiene alguna forma de dar a Bob arbitrariamente claves y hacerle creer que provienen de Alicia. Supongamos que Eve puede interceptar transmisiones entre Alicia y Bob. Eve envía a Bob su propia clave pública, como Bob cree que es de Alicia, Eve puede entonces interceptar cualquier texto cifrado enviado por Bob, descifrarlo con su propia clave secreta, guardar una copia del mensaje, cifrar el mensaje con la clave pública de Alicia, y enviar el nuevo texto cifrado a Alicia. En principio, ni Alicia ni Bob han detectado la presencia de Eve. Contra la defensa de ataques algunos están basados en certificados digitales u otros componentes de infraestructuras de la clave pública.

Véase también

Referencias

Notas al pie

  1. Bernstein, Daniel J.; Heninger, Nadia; Lou, Paul; Valenta, Luke (26 de junio de 2017). «Post-quantum RSA». Post-Quantum Cryptography. Lecture Notes in Computer Science (en inglés) (Springer, Cham): 311-329. ISBN 9783319598789. doi:10.1007/978-3-319-59879-6_18. Consultado el 17 de abril de 2018. 
  2. Boneh, Dan (1999). «Twenty Years of attacks on the RSA Cryptosystem». Notices of the American Mathematical Society (AMS) (en inglés) 46 (2): 203-213. 
  3. Una introducción a la criptografía de clave pública. Segunda Edición. Wolfgag Willems et al. Ediciones Uninorte 2010
  4. RSA Proof of Correctness
  5. David Pointcheval. «How to Encrypt Properly with RSA» (en inglés). Consultado el 5 de octubre de 2011. 
  6. Jean-Sébastien Coron, Marc Joye, David Naccache y Pascal Paillier. «Universal Padding Schemes for RSA» (en inglés). Consultado el 5 de octubre de 2011. 

Bibliografía

Enlaces externos

  • (en inglés) (Sitio oficial de RSA Laboratories )
  • (en inglés) , El documento de la revista Communications of the ACM, Vol. 21 (2), 1978, páginas 120--126 escrita por R. Rivest, A. Shamir y L. Adleman, Posterior al "Technical Memo" de abril de 1977.
  • Calculadora en línea de cifrado RSA que muestra paso a paso todos los cálculos
  • | Blog de Telefónica.
  •   Datos: Q181551

para, otros, usos, este, término, véase, desambiguación, criptografía, rivest, shamir, adleman, sistema, criptográfico, clave, pública, desarrollado, 1979, utiliza, factorización, números, enteros, primer, más, utilizado, algoritmo, este, tipo, válido, tanto, . Para otros usos de este termino vease RSA desambiguacion En criptografia RSA Rivest Shamir y Adleman es un sistema criptografico de clave publica desarrollado en 1979 que utiliza factorizacion de numeros enteros Es el primer y mas utilizado algoritmo de este tipo y es valido tanto para cifrar como para firmar digitalmente La seguridad de este algoritmo radica en el problema de la factorizacion de numeros enteros Los mensajes enviados se representan mediante numeros y el funcionamiento se basa en el producto conocido de dos numeros primos grandes elegidos al azar y mantenidos en secreto Actualmente estos primos son del orden de 10 300 displaystyle 10 300 y se preve que su tamano siempre crezca con el aumento de la capacidad de calculo de los ordenadores Como en todo sistema de clave publica cada usuario posee dos claves de cifrado una publica y otra privada Cuando se quiere enviar un mensaje el emisor busca la clave publica del receptor cifra su mensaje con esa clave y una vez que el mensaje cifrado llega al receptor este se ocupa de descifrarlo usando su clave privada Se cree que RSA sera seguro mientras no se conozcan formas rapidas de descomponer un numero grande en producto de primos Aunque se cree que la computacion cuantica podria proveer de una solucion al problema de factorizacion existen investigadores que dudan que dichos avances vayan a volver obsoletos estos algoritmos 1 Indice 1 Historia 2 Algoritmo RSA 2 1 Idea del algoritmo 2 2 Generacion de claves 2 3 Cifrado 2 4 Descifrado 3 Ejemplo 4 Esquemas 5 Autenticacion de mensajes 6 Seguridad 7 Consideraciones practicas 7 1 Generacion de claves 7 2 Velocidad 8 Distribucion de claves 9 Vease tambien 10 Referencias 10 1 Notas al pie 10 2 Bibliografia 11 Enlaces externosHistoria Editar Adi Shamir uno de los tres inventores de RSA los otros dos son Ron Rivest y Leonard Adleman El algoritmo fue descrito en 1977 por Ron Rivest Adi Shamir y Leonard Adleman del Instituto Tecnologico de Massachusetts MIT las letras RSA son las iniciales de sus apellidos Clifford Cocks un matematico britanico que trabajaba para la agencia de inteligencia britanica GCHQ habia descrito un sistema equivalente en un documento interno en 1973 Debido al elevado coste de las computadoras necesarias para implementarlo en la epoca su idea no trascendio Su descubrimiento sin embargo no fue revelado hasta 1997 ya que era confidencial por lo que Rivest Shamir y Adleman desarrollaron RSA de forma independiente El algoritmo fue patentado por el MIT en 1983 en Estados Unidos con el numero 4 405 829 Esta patente expiro el 21 de septiembre de 2000 Como el algoritmo fue publicado antes de patentar la aplicacion esto impidio que se pudiera patentar en otros lugares del mundo Dado que Cocks trabajo en un organismo gubernamental una patente en Estados Unidos tampoco hubiera sido posible Es un algoritmo puramente asimetrico junto con DSA Este algoritmo como su nombre lo indica sirve para firmar autenticar y para cifrar informacion Una desventaja del algoritmo DSA es que requiere mucho mas tiempo de computo que RSA Algoritmo RSA EditarEl algoritmo consta de tres pasos generacion de claves cifrado y descifrado Idea del algoritmo Editar Supongamos que Bob quiere enviar a Alicia un mensaje secreto que solo ella pueda leer Alicia envia a Bob una caja con un candado abierto del que solo Alicia tiene la llave Bob recibe la caja escribe el mensaje lo pone en la caja y la cierra con su candado ahora Bob no puede leer el mensaje Bob envia la caja a Alicia y ella la abre con su llave En este ejemplo la caja con el candado es la clave publica de Alicia y la llave del candado es su clave privada Tecnicamente Bob envia a Alicia un mensaje llano M displaystyle M en forma de un numero m displaystyle m menor que otro numero n displaystyle n mediante un protocolo reversible conocido como padding scheme patron de relleno A continuacion genera el mensaje cifrado c displaystyle c mediante la siguiente operacion c m e mod n displaystyle c m e pmod n donde e displaystyle e es la clave publica de Alicia Ahora Alicia descifra el mensaje en clave c displaystyle c mediante la operacion inversa dada por m c d mod n displaystyle m c d pmod n donde d displaystyle d es la clave privada que solo Alicia conoce Generacion de claves Editar Se eligen dos numeros primos distintos p displaystyle p y q displaystyle q Por motivos de seguridad estos numeros deben escogerse de forma aleatoria y deben tener una longitud en bits parecida Se pueden hallar primos facilmente mediante test de primalidad Se calcula n p q displaystyle n p cdot q n displaystyle n se usa como el modulo para ambas claves publica y privada Con f displaystyle varphi es la funcion f de Euler calcula f n p 1 q 1 displaystyle varphi n p 1 cdot q 1 aprovechando las dos propiedades de la funcion de Euler siguientes f p p 1 displaystyle varphi p p 1 si p displaystyle p es primo Si m y n son primos entre si entonces f m n f m f n displaystyle varphi mn varphi m varphi n Se escoge un entero positivo e displaystyle e menor que f n displaystyle varphi n que sea coprimo con f n displaystyle varphi n e displaystyle e se da a conocer como el exponente de la clave publica Si se escoge un e displaystyle e con una suma encadenada corta el cifrado sera mas efectivo Un exponente e displaystyle e muy pequeno p ej e 3 displaystyle e 3 podria suponer un riesgo para la seguridad 2 Se determina un d displaystyle d mediante aritmetica modular que satisfaga la congruencia e d 1 mod f n displaystyle e cdot d equiv 1 pmod varphi n es decir que d displaystyle d sea el multiplicador modular inverso de e mod f n displaystyle e mod varphi n Expresado de otra manera d e 1 displaystyle d cdot e 1 es dividido exactamente por f n p 1 q 1 displaystyle varphi n p 1 cdot q 1 Esto suele calcularse mediante el algoritmo de Euclides extendido d displaystyle d se guarda como el exponente de la clave privada La clave publica es n e displaystyle n e esto es el modulo y el exponente de cifrado La clave privada es n d displaystyle n d esto es el modulo y el exponente de descifrado que debe mantenerse en secreto Usando las propiedades de la funcion de Euler el Teorema de Euler y el Teorema del resto chino se puede demostrar que x x e d mod n x Z n displaystyle x equiv x ed pmod n forall x in mathbf Z n 3 4 Notas dd PKCS 1 v2 0 y PKCS 1 v2 1 se especifican mediante la funcion de Carmichael l n m c m p 1 q 1 displaystyle lambda n rm mcm p 1 q 1 en vez de la funcion f displaystyle varphi de Euler donde m c m displaystyle mathrm mcm indica el minimo comun multiplo Para una mayor eficiencia los siguientes valores se calculan de antemano y se almacenan como parte de la clave privada p displaystyle p y q displaystyle q los primos para la generacion de las claves d mod p 1 displaystyle d mod p 1 y d mod q 1 displaystyle d mod q 1 q 1 mod p displaystyle q 1 mod p Cifrado Editar Alicia comunica su clave publica n e displaystyle n e a Bob y guarda la clave privada en secreto Ahora Bob desea enviar un mensaje M displaystyle M a Alicia Primero Bob convierte M displaystyle M en un numero entero m displaystyle m menor que n displaystyle n Luego calcula el texto cifrado c displaystyle c mediante la operacion c m e mod n displaystyle c equiv m e pmod n Esto puede hacerse rapido mediante el metodo de exponenciacion binaria Ahora Bob transmite c displaystyle c a Alicia Descifrado Editar Alicia puede recuperar m displaystyle m a partir de c displaystyle c usando su exponente d displaystyle d de la clave privada mediante el siguiente calculo m c d mod n displaystyle m equiv c d pmod n Ahora que tiene m displaystyle m en su poder puede recuperar el mensaje original M displaystyle M invirtiendo el padding scheme El procedimiento anterior funciona porque c d m e d m e d mod n displaystyle c d m e d equiv m ed pmod n Esto es asi porque como hemos elegido d displaystyle d y e displaystyle e de forma que e d 1 k f n displaystyle ed 1 k varphi n se cumple m e d m 1 k f n m m f n k m mod n displaystyle m ed m 1 k varphi n m m varphi n k equiv m pmod n La ultima congruencia se sigue directamente del teorema de Euler cuando m displaystyle m es coprimo con n displaystyle n Puede demostrarse que las ecuaciones se cumplen para todo m displaystyle m usando congruencias y el teorema chino del resto Esto muestra que se obtiene el mensaje original m c d mod n displaystyle m c d pmod n Ejemplo EditarAqui tenemos un ejemplo de cifrado descifrado con RSA Los parametros usados aqui son pequenos y orientativos con respecto a los que maneja el algoritmo pero podemos usar tambien OpenSSL para generar y examinar un par de claves reales p 61 1º n º primo privadoq 53 2º n º primo privadon p q 3233 producto p qe 17 exponente publicod 2753 exponente privadoLa clave publica es e n La clave privada es d n La funcion de cifrado es encrypt m m e mod n m 17 mod 3233 displaystyle mbox encrypt m m e pmod n m 17 pmod 3233 dd Donde m es el texto sin cifrar La funcion de descifrado es decrypt c c d mod n c 2753 mod 3233 displaystyle mbox decrypt c c d pmod n c 2753 pmod 3233 dd Donde c es el texto cifrado Para cifrar el valor del texto sin cifrar 123 nosotros calculamos encrypt 123 123 17 mod 3233 855 displaystyle mbox encrypt 123 123 17 pmod 3233 855 dd Para descifrar el valor del texto cifrado nosotros calculamos decrypt 855 855 2753 mod 3233 123 displaystyle mbox decrypt 855 855 2753 pmod 3233 123 dd Los calculos de potencias grandes y del modulo pueden ser eficientemente realizados por el algoritmo de multiplicacion cuadratica para exponenciacion modular Esquemas EditarRSA debe ser combinado con algun esquema de relleno ya que si no el valor de M puede llevar a textos cifrados inseguros El valor m 0 m 1 o m n 1 siempre produce textos cifrados iguales para 0 1 o n 1 respectivamente debido a propiedades de los exponentes Cuando ciframos con exponentes pequenos e 3 y valores pequenos de m el resultado de m podria ser estrictamente menor que el modulo de n En este caso el texto cifrado podria ser facilmente descifrado tomando la raiz e esima del texto cifrado sin tener en cuenta el modulo dd Dado que el cifrado RSA es un algoritmo determinista no tiene componentes aleatorios un atacante puede lanzar con exito un ataque de texto elegido contra el criptosistema construyendo un diccionario de textos probables con la llave publica y almacenando el resultado cifrado Observando los textos cifrados en un canal de comunicacion el atacante puede usar este diccionario para descifrar el contenido del mensaje dd En la practica el primero de los dos problemas podria presentarse cuando enviamos pequenos mensajes ASCII donde m es la concatenacion de uno o mas caracter es ASCII codificado s Un mensaje consiste en un solo caracter ASCII NUL cuyo valor es 0 se codificaria como m 0 produciendo un texto cifrado de 0 sin importar que valores de e y N son usados Probablemente un solo ASCII SOH cuyo valor es 1 produciria siempre un texto cifrado de 1 Para sistemas convencionales al usar valores pequenos de e como 3 un solo caracter ASCII mensaje codificado usando este esquema seria inseguro ya que el maximo valor de m seria 255 y 255 es menor que cualquier modulo razonable De esta manera los textos sin cifrar podrian ser recuperados simplemente tomando la raiz cubica del texto cifrado Para evitar estos problemas la implementacion practica del RSA se ayuda de algunas estructuras uso del rellenado aleatorio dentro del valor de m antes del cifrado Esta tecnica asegura que m no caera en el rango de textos sin cifrar inseguros y que dado un mensaje una vez que este rellenado cifrara uno de los numeros grandes de los posibles textos cifrados La ultima caracteristica es la incrementacion del diccionario haciendo este intratable a la hora de realizar un ataque El esquema de relleno de RSA en ingles RSA padding scheme debe ser cuidadosamente disenado para prevenir ataques sofisticados los cuales podrian ser facilitados por la predictibilidad de la estructura del mensaje Ejemplos de esquema de relleno usados con RSA 5 6 RSA OAEP Optimal Asymetric Encryption Padding o su version moficada RSA OAEP Este tipo de relleno es usado por ejemplo en PKCS 1 y en la red de anonimato TOR RSA SAEP Simplified Asymmetric Encryption Padding RSA REACT RSA PSS Probabilistic Signature Scheme Usado por ejemplo en PKCS 1 dd Algunos de estos esquemas de relleno por ejemplo RSA OAEP y RSA PSS encuentran su justificacion teorica en el polemico modelo de oraculo aleatorio Autenticacion de mensajes EditarRSA puede tambien ser usado para autenticar un mensaje Supongamos que Alicia desea enviar un mensaje autentificado a Bob Ella produce un valor hash del mensaje lo eleva a la potencia de d mod n como ella hace cuando descifra mensajes y lo adjunta al mensaje como una firma Cuando Bob recibe el mensaje autentificado utiliza el mismo algoritmo hash en conjuncion con la clave publica de Alice Eleva la firma recibida a la potencia de e mod n como hace cuando cifra mensajes y compara el resultado hash obtenido con el valor hash del mensaje Si ambos coinciden el sabe que el autor del mensaje estaba en posesion de la clave secreta de Alicia y que el mensaje no ha sido tratado de forzar no ha sufrido ataques Se debe observar que la seguridad de los padding schemes como RSA PSS son esenciales tanto para la seguridad de la firma como para el cifrado de mensajes y que nunca se deberia usar la misma clave para propositos de cifrado y de autentificacion Seguridad EditarLa seguridad del criptosistema RSA esta basado en dos problemas matematicos el problema de factorizar numeros grandes y el problema RSA El descifrado completo de un texto cifrado con RSA es computacionalmente intratable no se ha encontrado un algoritmo eficiente todavia para ambos problemas Proveyendo la seguridad contra el descifrado parcial podria requerir la adicion de una seguridad padding scheme El problema del RSA se define como la tarea de tomar raices e esimas modulo a componer n recuperando un valor m tal que me c mod n donde e n es una clave publica RSA y c es el texto cifrado con RSA Actualmente la aproximacion para solventar el problema del RSA es el factor del modulo n Con la capacidad para recuperar factores primos un atacante puede calcular el exponente secreto d desde una clave publica e n entonces descifra c usando el procedimiento estandar Para conseguir esto un atacante debe factorizar n en p y q y calcular p 1 q 1 con lo que le permite determinar d y e No se ha encontrado ningun metodo en tiempo polinomico para la factorizacion de enteros largos Ver factorizacion de enteros para la discusion de este problema La factorizacion de numeros grandes por lo general proponen metodos teniendo 663 bits de longitud usando metodos distribuidos avanzados Las claves RSA son normalmente de entre 1024 2048 bits de longitud Algunos expertos creen que las claves de 1024 bits podrian comenzar a ser debiles en poco tiempo claves de 4096 bits podrian ser rotas en un futuro Por lo tanto si n es suficientemente grande el algoritmo RSA es seguro Si n tiene 256 bits o menos puede ser factorizado en pocas horas con un ordenador personal usando software libre Si n tiene 512 bits o menos puede ser factorizado por varios cientos de computadoras como en 1999 Un dispositivo hardware teorico llamado TWIRL descrito por Shamir y Tromer en el 2003 cuestiono a la seguridad de claves de 1024 bits Se recomienda actualmente que n sea como minimo de 2048 bits de longitud En 1993 Peter Shor publico su algoritmo mostrando que una computadora cuantica podria en principio mejorar la factorizacion en tiempo polinomial mostrando RSA como un algoritmo obsoleto Sin embargo las computadoras cuanticas no se esperan que acaben su desarrollo hasta dentro de muchos anos Consideraciones practicas EditarGeneracion de claves Editar Buscando numeros primos grandes p y q por el test de aleatoriedad y realizando tests probabilisticos de primalidad los cuales eliminan virtualmente todos los no primos eficientemente Los numeros p y q no deberian ser suficientemente cercanos para que la factorizacion de Fermat para n sea exitosa Ademas si cualquier p 1 o q 1 tiene solo factores primos pequenos n puede ser factorizado rapidamente con lo que estos valores de p o q deben ser descartados No se deberia emplear un metodo de busqueda de primos con el cual se de alguna informacion cualquiera sobre los primos al atacante En particular se debe utilizar un buen generador aleatorio de numeros primos para el valor empleado Observese que el requerimiento esta en que ambos sean aleatorios e impredecibles No son el mismo criterio un numero podria haber sido elegido por un proceso aleatorio pero si este es predecible de cualquier forma o parcialmente predecible el metodo usado resultara en una baja seguridad Por ejemplo la tabla de numeros aleatorios de Rand Corp en 1950 podria servir muy bien como ejemplo de criterio verdaderamente aleatorio pero ha sido publicada y a esta puede acceder el atacante Si el atacante puede conjeturar la mitad de los digitos de p o q el podria rapidamente calcular la otra mitad Ver Coppersmith en 1997 Es importante que la clave secreta d sea muy grande Wiener mostro en 1990 que si p esta entre q y 2q es tipico y d lt n1 4 3 entonces d puede calcularse eficientemente a partir de n y e Aunque valores de e tan bajos como 3 se han usado en el pasado los exponentes pequenos en RSA estan actualmente en desuso por razones que incluyen el no relleno del texto sin cifrar vulnerabilidad listada antes 65537 es normalmente usado como valor de e considerado demasiado grande para evitar ataques de exponenciacion pequenos de hecho tiene un peso de Hamming suficiente para facilitar una exponenciacion eficiente Velocidad Editar RSA es mucho mas lento que DES y que otros criptosistemas simetricos En la practica Bob normalmente cifra mensajes con algoritmos simetricos cifra la clave simetrica con RSA y transmite a ambos dicha clave es decir la transmite cifrada con RSA y el mensaje simetricamente cifrado a Alicia Esto plantea ademas problemas adicionales de seguridad por ejemplo es de gran importancia usar un generador aleatorio fuerte para claves simetricas porque de otra forma Eve un atacante que quiera averiguar el contenido del mensaje podria puentear la clave asimetrica de RSA mediante la adivinacion de la clave simetrica Distribucion de claves EditarComo con todos los cifrados es importante como se distribuyan las claves publicas del RSA La distribucion de la clave debe ser segura contra un atacante que se disponga a espiar el canal para hacer un ataque de replay Supongamos Eve atacante tiene alguna forma de dar a Bob arbitrariamente claves y hacerle creer que provienen de Alicia Supongamos que Eve puede interceptar transmisiones entre Alicia y Bob Eve envia a Bob su propia clave publica como Bob cree que es de Alicia Eve puede entonces interceptar cualquier texto cifrado enviado por Bob descifrarlo con su propia clave secreta guardar una copia del mensaje cifrar el mensaje con la clave publica de Alicia y enviar el nuevo texto cifrado a Alicia En principio ni Alicia ni Bob han detectado la presencia de Eve Contra la defensa de ataques algunos estan basados en certificados digitales u otros componentes de infraestructuras de la clave publica Vease tambien EditarClifford Cocks Criptografia asimetrica Competicion de factorizacion RSA Criptografia cuantica Criptologia DSA Firma digital ciega Problema RSA Teoria de la complejidad computacionalReferencias EditarNotas al pie Editar Bernstein Daniel J Heninger Nadia Lou Paul Valenta Luke 26 de junio de 2017 Post quantum RSA Post Quantum Cryptography Lecture Notes in Computer Science en ingles Springer Cham 311 329 ISBN 9783319598789 doi 10 1007 978 3 319 59879 6 18 Consultado el 17 de abril de 2018 Boneh Dan 1999 Twenty Years of attacks on the RSA Cryptosystem Notices of the American Mathematical Society AMS en ingles 46 2 203 213 Una introduccion a la criptografia de clave publica Segunda Edicion Wolfgag Willems et al Ediciones Uninorte 2010 RSA Proof of Correctness David Pointcheval How to Encrypt Properly with RSA en ingles Consultado el 5 de octubre de 2011 Jean Sebastien Coron Marc Joye David Naccache y Pascal Paillier Universal Padding Schemes for RSA en ingles Consultado el 5 de octubre de 2011 Bibliografia Editar R Rivest A Shamir L Adleman A Method for Obtaining Digital Signatures and Public Key Cryptosystems Communications of the ACM Vol 21 2 pp 120 126 1978 Previously released as an MIT Technical Memo in April 1977 Initial publication of the RSA scheme Thomas H Cormen Charles E Leiserson Ronald L Rivest and Clifford Stein Introduction to Algorithms Second Edition MIT Press and McGraw Hill 2001 ISBN 0 262 03293 7 Section 31 7 The RSA public key cryptosystem pp 881 887 Wing H Wong Timing Attacks on RSA Revealing Your Secrets through the Fourth Dimension An Attack on RSA Digital Signature Behrends EhrhardFive Minute Mathematics American Mathematical Society pp 86 91 ISBN 978 0 8218 4348 2 fechaacceso requiere url ayuda Enlaces externos EditarAlgoritmo RSA Ataques RSA I en ingles PKCS 1 RSA Cryptography Standard Sitio oficial de RSA Laboratories en ingles A Method for Obtaining Digital Signatures and Public Key Cryptosystems El documento de la revista Communications of the ACM Vol 21 2 1978 paginas 120 126 escrita por R Rivest A Shamir y L Adleman Posterior al Technical Memo de abril de 1977 Calculadora en linea de cifrado RSA que muestra paso a paso todos los calculos No no se ha encontrado una vulnerabilidad en RSA que permite atacar uno de cada 172 certificados por Sergio De Los Santos Blog de Telefonica Datos Q181551 Obtenido de https es wikipedia org w index php title RSA amp oldid 139140925, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos