Nota: soy un investigador de redes, pero un novato en seguridad. Por lo tanto, esta publicación puede contener una comprensión errónea de la seguridad, incluyendo DH y RSA. Si es así, hágamelo saber.
He diseñado una cierta extensión de protocolo de red, que genera claves secretas compartidas entre dos terminales, Alice y Bob. Para este fin, primero usé un ECDH simple. (Los parámetros de la curva elíptica se negocian de forma inalámbrica a través de otros mensajes, pero los mensajes se omiten en la siguiente figura).
Sinembargo,noconsideréaunatacantemalicioso,Mallory.ParaevitarMITMypermitirqueambosverifiquenquelosmensajes3y4provienendelacontraparteválida,nodeMallory,adoptélafirmayverificacióndelaclavepúblicaRSA.
Nota:
- El mensaje 1 se transmite periódicamente para que cualquiera pueda capturarlo.
- El mensaje 2 se envía si Alice quiere compartir una clave secreta con Bob.
-
sign(data, priv)
yverify(data, pub)
son firma y verificación RSA. - El secreto compartido resultante se usará para generar otro secreto compartido (que se usa en el protocolo existente) y se descartará de inmediato.
¿Es esta una implementación correcta de DH sobre RSA de forma inalámbrica? ¿O hay algo que me estoy perdiendo?