A quiere enviar a B el mensaje M y B quiere estar seguro de que el mensaje M proviene de A
Llamamos EB al algoritmo de enciframiento de mensajes para B (conocido por todos), es decir EB aplicado al mensaje M consiste en:
1. mirar código de B ,
que es (e,n)
2. formar M'=M^e (mod n)
Podemos escribir EB(M)=M'
Llamamos DB al algoritmo de desciframiento que usa B para los mensajes que le llegan a él (sólo conocido por B). Es decir DB aplicado a M' consiste en:
1. B recuerda su descodificador
secreto d
2. B calcula M=M'^d (mod n)
Podemos escribir M=DB(M')
DB(EB(H))=H=EB(DB(H))
es decir DB y EB son algoritmos inversos.
Proceso que sigue A para "firmar" su mensaje M para B.
1. A codifica M primero con su propio algoritmo (secreto) de desciframiento para los mensajes que le viene a él, es decir A forma DA(M). Observación: sólo A puede construir DA(M) a partir de M,
2. A codifica ahora DA(M) con
el algoritmo de enciframiento de mensajes para B (público), es decir
obtiene EB(DA(M)).
Observación: sólo
B puede recuperar DA(M) a partir de EB(DA(M)).
3. A envía a B por canal público EB(DA(M)) y B recibe este mensaje.
4. B trata primero el mensaje
EB(DA(M)) que ha recibido con su propio algoritmo de desciframiento DB
(que sólo él conoce) y obtiene
DB(EB(DA(M)))=DA(M)
5. A continuación trata este resultado DA(M) con el algoritmo (público) EA de enciframiento de mensajes para A. Obtiene así
B puede estar ahora seguro
de que el mensaje proviene de
A.