Seguridad de la información: ¿Qué tiene de malo este protocolo de protocolo de enlace de seguridad?

Charles puede jugar man-in-the-middle, interceptando la clave secreta K, mientras que A se establece una conexión entre A y B. Lo hace interceptando el mensaje A-> B, modificándolo ligeramente cambiando su remitente y volviendo a reproducirlo. hacia la respuesta de B. B se dirigirá a C y revelará el secreto K.

Supongamos que A y B realizan su apretón de manos según el protocolo y Charles (C) logró grabar estos mensajes mientras viajaban. Deje que C tenga una clave privada [math] k_c [/ math] y una clave pública [math] k_C. [/ Math]

Entonces C grabó el mensaje de A-> B:

[matemáticas] E (k_a, A + E (k_B, K + t)) [/ matemáticas]

luego puede recuperar el contenido firmado fácilmente (descifrando esto usando la clave pública de A [math] k_A [/ math]), para obtener:

[matemáticas] A + E (k_B, K + t) [/ matemáticas]

él modifica esto para:

[matemáticas] C + E (k_B, K + t) [/ matemáticas]

y lo firma con su clave privada para obtener

[matemáticas] E (k_c, C + E (k_B, K + t)) [/ matemáticas]

que luego envía a B. A cambio, B comprobará que la firma es la del remitente (C). Cuando la verificación se realiza correctamente, B procede a descifrar el mensaje que K + t le envió. Finalmente, encripta [math] K + t_1 [/ math] usando la clave pública de C [math] k_C [/ math], lo firma y lo envía de vuelta a C. C recibe

[matemáticas] E (k_b, E (k_C, K + t_1)) [/ matemáticas]

C luego extrae [matemáticas] E (K_C, K + t_1) [/ matemáticas], y descifra esto usando su clave privada. C ahora recuperó [matemáticas] K + t_1 [/ matemáticas]. A partir de esto, corta los bits finales que representan [math] t_1 [/ math] para obtener K.

Moraleja de la historia: asegúrese de que el protocolo no brinde a las personas arbitrarias la oportunidad de engañarlo (B) para que descifre los mensajes ([matemática] K + t [/ matemática]) dirigidos a usted y le envíe esta información ([matemática] K + t_1 [/ math]) atrás. La vulnerabilidad podría repararse devolviendo solo el hash de [math] K + t [/ math], por ejemplo. Entonces A aún podría verificar que el apretón de manos fue exitoso, pero C no podría inferir la clave solo por su hash.