2. LOS CREADORES DEL RSA
RON RIVEST ADI SHAMIR LEONARD ADLEMAN
SILER AMADOR DONADO
3. Qué es RSA?
El RSA es un sistema de clave pública
implementado por Rivest, Shamir y Adleman
basado en la exponenciación modular
desarrollada por Diffie-Hellman, donde la clave
pública son pares de números (e,n) formados por
un exponente e y un módulo n que es el
producto de dos grandísimos números primos p y
q tales que mcd(e,fi(n))=1 (donde fi(n) es el
número de enteros menores que n y primos con
él)
SILER AMADOR DONADO
4. Definición del criptosistema RSA?
Sea f una función unidireccional definida así:
M C
f:M C
m1 f(m) = c c1
m2 c2
m3 c3
m4 c4
. .
. .
. .
Donde M es el conjunto de todos los mensajes en texto
claro, para todo m Є M. Donde C es el conjunto de todos los
mensajes cifrados, para todo c Є C. Luego f(m) = c
SILER AMADOR DONADO
5. Definición del criptosistema RSA?
Sea f-1 una función unidireccional inversa definida así:
-1 :C C M
f M
c1 f-1(c) = m m1
c2 m2
c3 m3
c4 m4
. .
. .
. .
Donde M es el conjunto de todos los mensajes en texto claro,
para todo m Є M. Donde C es el conjunto de todos los
mensajes cifrados, para todo c Є C. Luego f-1 (c) = m
SILER AMADOR DONADO
6. El algoritmo RSA
Si un usuario A desea enviar un mensaje m=cuy al usuario B.
fb(m) = c f-1b(c) = f-1b(fb(m)) = m
fb(cuy) = go f-1b(go) = f-1b(fb(cuy)) = cuy
Usuario A A envía go a B Usuario B
Pública(ea, na) Pública(eb, nb)
Privada(da) Privada(db)
Pública(eb, nb) Pública(ea, na)
SILER AMADOR DONADO
7. El algoritmo RSA
Pasos a seguir para cada usuario A y B, a continuación solo se calcula
para el usuario A, lo mismo se debe realizar para el usuario B:
1. El usuario A elige 2 números primos pa y qa
2. Calculamos el Grupo Z*na , entonces na = pa * qa
3. Calculamos el Orden del Grupo (na) = (pa -1)*(qa -1)
4. Seleccionamos un entero positivo ea, 1<= ea < (na), | sea primo
con el Orden del Grupo, es decir mcd(ea, (na))=1
5. Basado en el algoritmo de Euclides extendido calculamos dA que
es el inverso modular de ea en Z (na); ea* da ≡ 1 (mod( (na)) con
1<= da < (na)
6. La llave publica del usuario A es (ea, na) y la llave privada es (da)
SILER AMADOR DONADO
8. Cómo cifrar y descifrar con el algoritmo
RSA?
Si un usuario A desea enviar cifrado un mensaje m
Є Zn al usuario B, A utiliza la llave pública de B, (eb,
eb
nb), para calcular el valor de m (mod nb) = c, que
luego envía a B.
Para descifrar el mensaje original m, B debe usar la
db eb db ebdb
llave privada (db) para calcular c = (m ) = m
db
≡ m (mod nb). Entonces m= c (mod nb)
SILER AMADOR DONADO
9. Cómo firmar un mensaje con el algoritmo
RSA?
A cuenta con la llave pública (ea, na) y su llave privada (da). Si un
usuario A desea enviar la firma digital de un mensaje m Є Zn al usuario
B:
da
1. Calcula el valor de su rúbrica r ≡ m (mod na).
2. Determina la firma cifrando con la llave pública de B la rúbrica. s ≡
eb
r (mod nb).
El mensaje firmado que A envía a B es la pareja formada por (c,s),
donde c es el mensaje m cifrado. Para que B pueda verificar la firma de
A, debe comprobar que:
db eb db ebdb
1. s (mod nb) ≡ (r (mod nb)) (mod nb) ≡ r (mod nb) = r
ea daea
2. r (mod na) ≡ m (mod na) = m
SILER AMADOR DONADO
10. Ejemplo del algoritmo RSA (½)
Cifrando y Descifrando
Alfabeto español:
A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
m ≡ CUY, entonces C(272)+U(271)+Y(270) ≡ 1458+567+25 = 2050 < 2231 y 2050 < 2929
El usuario B elige pb=23, qb=97, nb=2231 Usuario A elige pa=101,qa=29, (na)=2800,ea=17
El orden del Grupo es (nb)=2112 na = 2929, ya realizó sus cálculos obteniendo:
B elige el número eb = 17 la llave privada de A es da = 1153
mcd(17,2112) = 1 OK Entonces la llave pública de A (17, 2929)
Calculamos el inverso modular: Ciframos m con la llave pública de B:
eb* db ≡ 1 (mod (nb)) con 1<= db < (nb) eb
C = m (mod nb) entonces
, luego C = 205017 (mod 2231) = 177, entonces
17 * db ≡ 1 (mod 2112) con 1<= db<2112 C = 6(271) + 15(270) ≡ GO
Luego la llave privada de B es db = 497 Paraddescifrar usamos la llave privada de B(db)
Entonces la llave pública de B (17, 2231) b
m=c (mod nb)=177497(mod 2231), luego
El mensaje m descifrado es: 2050 ≡ CUY
SILER AMADOR DONADO
11. Ejemplo del algoritmo RSA (2/2)
Firmando y Verificando
Alfabeto español:
A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
m ≡ CUY, entonces C(272)+U(271)+Y(270) ≡ 1458+567+25 = 2050 < 2231 y 2050 < 2929
El usuario B elige pb=23, qb=97, nb=2231 Usuario A elige pa=101,qa=29, (na)=2800,ea=17
El orden del Grupo es (nb)=2112 na = 2929, ya realizó sus cálculos obteniendo:
B elige el número eb = 17 la llave privada de A es da = 1153
mcd(17,2112) = 1 OK Entonces la llave pública de A (17, 2929)
Calculamos el inverso modular: El usuario A calcula su rúbrica para el mensaje.
eb* db ≡ 1 (mod (nb)) con 1<= db < (nb) , da
r = m (mod na) = 20501153(mod 2929) = 1851
luego eb
s = r (mod nb) = 185117(mod 2231) = 1463
17 * db ≡ 1 (mod 2112) con 1<= db<2112 s = 2(272) + 0(271) + 5(270) ≡ CAF, entonces B
Luego la llave privada de B es db = 497 recibe la pareja: (c,s) ≡ (GO, CAF), luego que B
Entonces la llave pública de B (17, 2231) ha descifrado c, verifica s = 1463, entonces:
db
r = s (mod nb) = 1463497(mod 2231) = 1851 y
recupera de nuevo el mensaje así:
ea
m=r (mod na)= 185117(mod 2929) = 2050,
luego el mensaje m es: 2050 ≡ CUY Firma OK!
SILER AMADOR DONADO
13. ANTECEDENTES DEL RSA
• 1976 – Propuesta por Diffie y Hellman. Se basa en la
dificultad de calcular logaritmos discretos (resolver ax
= b mod n para x).
• 1977 – Algoritmo RSA desarrollado por Rivest, Shamir y
Adleman. Se basa en la dificultad de factorizar números
grandes. RSA129 (129 dígitos) publicado como desafío.
• 1994 – RSA129 roto con 1600 ordenadores en red.
• 1999 – RSA140 roto con 185 ordenadores en red en 8,9
años- CPU.
• 1999 – RSA155 (clave de 512 bits) roto con 300 equipos
en red.
• 2002 – RSA recomiendan claves de 1024 bits.
SILER AMADOR DONADO
14. CRIPTOANALISIS DEL RSA
• Factorizar n, que es público, y así obtienes p y q
• Calcular (n) = (p-1)(q-1)
• Calcular d tal que d(e)mod (n) = 1 (e es público)
• La clave privada es = d
Ejemplo: Conocemos nb=2231, entonces hallamos
sus factores primos pb=23, qb=97, luego se calcula
(nb)=(22)(96)=2112, luego se calcula db así:
db(eb)mod (nb)=1, entonces el inverso modular es:
db(17)mod (2112)=1 ≡ 497 es la llave privada de B
SILER AMADOR DONADO