CRIPTOGRAFIA DE CLAVE ABIERTA
RSA (Rivest, Shamir, Adleman, 1977)
¿Cómo funciona?
Cada usuario P tiene un código
público
para que lo utilice quien le quiera enviar mensajes. Como un número
de teléfono.
Consiste en un par de números
a disposición de todos (eP ,
nP ).
(Todas las operaciones que aquí
aparecen se realizan
de forma automática por
el ordenador)
(1) A quiere enviar a B el mensaje M
(p.e. 102114, cualquier mensaje
se traduce a números de una forma usada por todos).
(2) A mira el código (e, n) de B
(p.e. éste es (613,274279))
(3) A calcula M'=M^e (mod n), es decir calcula el resto
de la división de M^e por n.
(p.e. 245220=102114^613 (mod
274279)
(4) M' es el mensaje M codificado
para
B.
A envía M' a B por
canal público.
Para que alguien pudiera
recobrar M a partir del conocimiento de M' tendría que ser capaz
de resolver la ecuación x^613= 245220 (mod 274279).
(Muchos miles de años
para un n de 300 dígitos con la tecnología actual)
(5) B recupera M fácilmente
con su decodificador secreto d.
(en el ejemplo d=1333)
B calcula M'^d divide por n y
halla el resto que es M, es decir M'^d=M (mod n)
(en el ejemplo 245220^1333=102114
(mod 274279)
Así es como B recupera
el mensaje M, 102114
Preguntas curiosas:
¿Cómo se eligen
los números del código (e,n)?
¿Cómo se obtiene
el descodificador d?
¿Existe la posibilidad
de firmar un mensaje de modo que B esté seguro de que el mensaje
M proviene de A?
¿Hasta qué punto
es seguro el sistema?