0% encontró este documento útil (0 votos)
195 vistas13 páginas

Rsa Explicacion

El documento describe el algoritmo RSA, el sistema criptográfico de clave pública más utilizado. RSA usa claves públicas y privadas para cifrar y descifrar mensajes. La clave pública se usa para cifrar mensajes, mientras que la clave privada se usa para descifrarlos. La seguridad de RSA se basa en la dificultad de factorizar números enteros grandes en productos de primos.

Cargado por

brunorafaellima
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
195 vistas13 páginas

Rsa Explicacion

El documento describe el algoritmo RSA, el sistema criptográfico de clave pública más utilizado. RSA usa claves públicas y privadas para cifrar y descifrar mensajes. La clave pública se usa para cifrar mensajes, mientras que la clave privada se usa para descifrarlos. La seguridad de RSA se basa en la dificultad de factorizar números enteros grandes en productos de primos.

Cargado por

brunorafaellima
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 13

RSA

En criptografía, RSA (Rivest, Shamir y Adleman) es un sistema


criptográfico de clave públicadesarrollado en 1977. En la actualidad, RSA
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 10200,
y se prevé que su tamaño aumente 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.
La computación cuántica podría proveer de una solución a este problema
de factorización.

Contenido
[ocultar]

• 1 Historia
• 2 Algoritmo RSA
o 2.1 Idea del algoritmo
o 2.2 Generación de claves
o 2.3 Cifrado
o 2.4 Descifrado
• 3 Ejemplo
• 4 Padding schemes (Esquema de relleno)
• 5 Autenticación de mensajes
• 6 Seguridad
• 7 Consideraciones prácticas
o 7.1 Generación de claves
o 7.2 Velocidad
• 8 Distribución de claves
• 9 Véase también
• 10 Referencias
o 10.1 Notas al pie
o 10.2 Bibliografía

• 11 Enlaces externos

[editar]Historia

El algoritmo fue descrito en 1977 por Ron Rivest, Adi Shamir y Len
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.

[editar]Algoritmo RSA
El algoritmo consta de tres pasos: generación de claves, cifrado y
descifrado.
[editar]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 una cerradura abierta, de la que solo
Alicia tiene la llave. Bob recibe la caja, escribe el mensaje, lo pone en la
caja y la cierra con su cerradura (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 la cerradura es la «clave pública» de Alicia, y la llave de la
cerradura es su «clave privada».
Técnicamente, Bob envía a Alicia un «mensaje llano» M en forma de un
número m menor que otro número n, mediante un protocolo reversible
conocido como padding scheme («patrón de relleno»). A continuación
genera el «mensaje cifrado» c mediante la siguiente operación:
,
donde e es la clave pública de Alicia.
Ahora Alicia descifra el mensaje en clave c mediante la operación
inversa dada por

,
donde d es la clave privada que solo Alicia conoce.
[editar]Generación de claves
1. Cada usuario elige dos números primos distintos p y q.
 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 n = pq.
 n se usa como el módulo para ambas claves,
pública y privada.
3. Se calcula , donde es
la función φ de Euler.
4. Se escoge un entero positivo e menor que , que
sea coprimo con .
 e se da a conocer como el exponente de la clave
pública.
 Si se escoge un e con una suma
encadenada corta, el cifrado será más efectivo. Un
exponente e muy pequeño (p. ej. e = 3) podría suponer
un riesgo para la seguridad.1
5. Se determina un d (mediante aritmética modular) que
satisfaga la congruencia .
 Expresado de otra manera, de − 1 divide
a .
 Esto suele calcularse mediante el algoritmo de
Euclides extendido.
 d se guarda como el exponente de la clave
privada.

La clave pública es (n,e), esto es, el módulo y el exponente de


cifrado. La clave privada es(n,d), esto es, el módulo y el
exponente de descifrado, que debe mantenerse en secreto.
Nota:

PKCS#1 v2.0 y PKCS#1 v2.1 se especifican mediante


la función de Carmichael λ(n) = mcm(p− 1,q − 1) en vez de la
función φ de Euler, donde mcm es 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:
 p y q: los primos para la generación de las claves,
 y ,
 .

[editar]Cifrado
Alicia comunica su clave pública (n,e) a Bob y guarda la clave
privada en secreto. Ahora Bob desea enviar un mensaje M a
Alicia.
Primero, Bob convierte M en un número entero m menor
que n mediante un protocolo reversible acordado de antemano.
Luego calcula el texto cifrado c mediante la operación
.
Esto puede hacerse rápido mediante el método
de exponenciación binaria. Ahora Bob transmitec a Alicia.
[editar]Descifrado
Alicia puede recuperar m a partir de c usando su
exponente d de la clave privada mediante el siguiente
cálculo:

.
Ahora que tiene m en su poder, puede recuperar el
mensaje original M invirtiendo el padding scheme.
El procedimiento anterior funciona porque

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

.
La última congruencia se sigue directamente
del teorema de Euler cuando m es coprimo
con n. Puede demostrarse que las ecuaciones
se cumplen para todo m usando congruencias y
elteorema chino del resto.
Esto muestra que se obtiene el mensaje
original:

.
[editar]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énOpenSSL para
generar y examinar una par de claves
reales.

1º nº primo
p=61
Privado

2º nº primo
q=53
Privado

n=pq=3233 producto p*q


exponente
e=17
Público

exponente
d=2753
Privado

La clave pública (e, n). La clave privada es


d. La función de cifrado es:
encrypt(m) = me(mod n) = m17(mod 3233)
Donde m es el texto sin cifrar. La
función de descifrado es:
decrypt(c) = cd(mod n) = c2753(mod 3233)
Donde c es el texto cifrado. Para
cifrar el valor del texto sin cifrar 123,
nosotros calculamos:
encrypt(123) = 12317(mod 3233) = 855
Para descifrar el valor del texto
cifrado, nosotros calculamos:
decrypt(855) = 8552753(mod 3233) = 123
Ambos de estos cálculos
pueden ser eficientemente
usados por el algoritmo de
multiplicación cuadrática
para exponenciación
modular.

[editar]Padding
schemes
(Esquema de
relleno)
RSA debe ser combinado
con alguna versión del
padding scheme, ya que si
no el valor de M puede
llevar a textos cifrados
inseguros. RSA usado sin
padding scheme podría
sufrir muchos problemas.

 El valor m=0 o m=1 siempre produce textos cifrados iguales


para 0 o 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 randomized padding 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.
Estándares como PKCS han sido cuidadosamente diseñados para la
seguridad de los de mensajes importantes con el cifrado RSA. Porque el
pad scheme rellena el texto sin cifrar m con algunos números adicionales
(bits); el tamaño del mensaje un-padded M debe ser algo más pequeño.
RSA-padding scheme debe ser cuidadosamente diseñado así como para
prevenir ataques sofisticados los cuales podrían ser facilitados por la
predictibilidad de la estructura del mensaje. Versiones más recientes del
PKCS Standard usando construcciones ad-hoc, las cuales fueron
encontradas vulnerabilidades más tarde en la practica adaptativa de
elección de ataques de textos cifrados. Las construcciones modernas
usan técnicas seguras como Optimal Asymetric Encryption
Padding (OAEP) para proteger los mensajes mientras previenen estos
ataques. El PKCS estándar también incorpora procesado de esquemas
diseñados para proveer adicionalmente la seguridad de autentificaciones
RSA. Por ejemplo: the Probabilistic Signature Scheme for RSA (RSA-
PSS).

[editar]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.

[editar]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 eth módulo
a componer n: recuperando un valor m tal que me=c ≡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 computar el exponente secreto d desde una clave pública (e, n),
entonces descifra c usando el procedimiento standard. Para conseguir
esto, un atacante factoriza n en p y q, y computa (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 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; con 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 computador 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. Es actualmente recomendado 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.

[editar]Consideraciones prácticas
[editar]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 sólo factores primos pequeños, n puede ser factorizado
rápidamente, con lo que estos valores de p o q deben ser descartados.
Uno no debería emplear un método de búsqueda de primos con el cual
dar alguna información cualquiera sobre los primos al atacante. En
particular, un buen generador aleatorio de números primos para el
comienzo del valor empleado. Observar que el requerimiento esta en
ambos ‘aleatorios’ e ‘impredecibles’. Esto no son los mismos criterios; un
número podría haber sido elegido por un proceso aleatorio, pero si éste
es predecible de cualquier forma (o parcialmente predecible), el método
usado resultara una seguridad baja. Por ejemplo: la tabla de números
aleatorios de Rand Corp en 1950 podría muy bien ser verdaderamente
aleatoria, pero ha sido publicada y a ésta puede acceder el atacante. Si
el atacante puede conjeturar la mitad de los dígitos de p o q, ellos
podrían rápidamente computar la otra mitad. (Ver Coppersmith en 1997).
Es importante que la clave secreta d sea muy grande. Wiener mostró en
1990 que si p esta entre q y 2q (es típico) y d<n1/4/3, entonces d puede
ser computado eficientemente de n y e. Aunque valores de e son bajos
como 3 han sido usados en el pasado, los exponentes pequeños en RSA
esta actualmente en desuso, por razones incluyendo el unpadded del
texto sin cifrar, vulnerabilidad listada sobre 65537 es normalmente usado
para el 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
[editar]Velocidad
RSA es mucho más lento que DES y que otros criptosistemas simétricos.
En la practica, Bob normalmente cifra mensajes con algoritmos
simétricos, cifra la clave simétrica con RSA, y transmite a ambos la clave
simétrica RSA-cifrada 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 simétrica de RSA
mediante la adivinación de la clave simétrica.

[editar]Distribución de claves
Como todos los cifrados, es importante como 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.

[editar]Véase también
Clifford Cocks

Criptografía asimétrica

Competición de factorización RSA

Criptografía cuántica

Criptología

Firma digital ciega

Problema RSA

Teoría de la complejidad computacional


[editar]Referencias

[editar]Notas al pie
↑ Boneh, Dan (1999). «Twenty Years of attacks on the RSA Cryptosystem» (en
inglés). Notices of the American Mathematical Society (AMS) 46 (2): pp. 203–
213.
[editar]Bibliografía

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


[editar]Enlaces externos
Algoritmo RSA

Ataques RSA I

Discusión sobre Algoritmo RSA

PKCS #1: RSA Cryptography Standard (Sitio oficial de RSA


Laboratories )

A Method for Obtaining Digital Signatures and Public-Key Cryptosystems,


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.

Una introducción a RSA, M. Griep, Oct. 2002

The PKCS #1 standard "tiene recomendaciones para la implementación


de la clave públicabasada en el algoritmo RSA".
Sencilla calculadora on-line de encriptación RSA que muestra paso a
paso todos los cálculos

Crear llaves públicas y privadas en formato XML implementando RSA


desde C# (.net)Escrito por Alfonso Jesus Flores Alvarado (en español)

También podría gustarte