Debo decir que la explicación de Wikipedia es muy confusa para mí.
El respondedor envía su identificador dentro de la respuesta, de modo que, si
recibe una respuesta que tiene su identificador, puede rechazarla.
Sobre la base del cuarto paso, asumo que significaban:
El respondedor envía su identificador dentro de la respuesta, por lo tanto, si el retador recibe una respuesta que tiene su identificador, puede rechazarlo.
Lo que añade una noción de propiedad de la respuesta. Ahora, así es como entiendo el problema y la solución:
Olvide la criptografía y las direcciones IP y piense en un caso real. Estás en el aula y, aunque eres un bastardo perezoso, te sientes afortunado y quieres responder una pregunta complicada (desafío), solo para los nerds. Supongamos que la pregunta es siempre diferente (nonce). Tu maestro te hace la pregunta pero (como es de esperar), no sabes la respuesta, pero aún así quieres lucir bien, entonces, le preguntas al niño nerd que está detrás de ti (respondedor), y dice que la pregunta era para él. Supongamos que nadie se da cuenta (puedes gritar: ¡mira a Diffie-Hellman desde la ventana!).
Escoges la respuesta y la dices en voz alta a tu profesor como tuyo. Es correcto y te salvas el día. ¿Cuál es uno de los problemas aquí ?:
Sabiendo la respuesta, puedes anunciarla fácilmente como tuya, ya que no está vinculada a una persona.
La primera línea de defensa sería compartir claves entre los nerds y el profesor (los niños tontos hablan claro) y hacer que cifren sus mensajes. Solo los niños inteligentes podrían cifrar una respuesta (nonce). Sin embargo, surge otro problema:
Eres lo suficientemente inteligente como para hacerle la pregunta al niño nerd y obtener el
jibber jabber de él (respuesta cifrada) y vuelva a reproducirlo en su
maestro (aquí la repetición no significa un ataque de repetición, solo estás diciendo
lo que dijo el niño anteriormente).
La maestra acepta la solución porque, aunque solo los niños inteligentes pueden responder y cifrar, no hay forma de que ella pueda saber si la respuesta fue realmente tuya. Debería haber una manera para que ella lo descubra:
Introducción, identificadores: cada respuesta está encriptada con el nombre del niño y el problema está resuelto. En el mundo real, es posible que una persona valide esto fácilmente: el maestro obtiene una respuesta de usted, pero el identificador es del niño, lo que conduce a una falta de coincidencia.
En el mundo de TI, una forma sería, como dijiste, usar direcciones IP. Si el atacante envía un mensaje con la IP de otra PC, no funcionará. Claro que él podría falsificar la fuente para que coincida, pero no se pudo establecer una conexión. Esto podría funcionar si la aplicación fuera un simple ejecutor de comandos: el atacante envía el comando autodestruirse y la otra PC se destruiría a sí misma y no requeriría ACK ni más intercambios de mensajes.
Mantente seguro;)