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?