¿Por qué molestarse y asegurarse de que la otra parte posea el secreto compartido correcto? Se dice que este es un requisito para un intercambio de claves seguro. Pero ¿por qué?
Además de otras razones, a veces se requiere una confirmación de clave durante la validación del algoritmo. Por ejemplo, El Sistema de Validación de Esquemas de Acuerdo Clave (KASVS) de NIST los requiere en algunas instancias.
Para completar, aquí está la definición de NIST de la Sección 4.1, página 7:
Un procedimiento para proporcionar seguridad a una parte (el destinatario de la confirmación de la clave) de que la otra parte (el proveedor de la confirmación de la clave) posee realmente el material de codificación y / o el secreto compartido correcto.
Incluso si la otra parte no ha calculado un valor correcto para el secreto compartido, no importa. No podrá descifrar la información enviada de todos modos.
Esto puede no ser necesariamente cierto. Si un malo puede manchar el intercambio, él / ella puede aprender algunas cosas en ausencia de una ruptura total mediante el control de los parámetros. En este caso, la ejecución del protocolo se detendría inmediatamente en la fase de confirmación de la clave en lugar de darle al atacante más de un bocado de la manzana proverbial.
Protocolos de autenticación y establecimiento de claves (pp. 162-63) en realidad detalla un ataque al intercambio de claves que se ve frustrado por la conformación de las claves, por lo que no es teórico.
Nunca he implementado un protocolo de confirmación de claves, pero espero que sean un protocolo de desafío / respuesta de dos vías que no use el material de claves directamente. Probablemente agrega de 2 a 4 mensajes adicionales al protocolo.
Es bidireccional porque ambas partes deben demostrar el conocimiento de la clave. No utiliza el material de claves directamente para evitar revelar información sobre la clave real a un adversario.
En una nota relacionada, nunca usas directamente el secreto compartido / material clave. Debe moverlo del dominio Diffie-Hellman a otro dominio donde los valores son igualmente probables (es decir, distribuidos uniformemente). IPSec usa HKDF para este paso.