Protocolo de Needham-Schroeder para niños
El protocolo de Needham-Schroeder es un conjunto de reglas para que las computadoras se comuniquen de forma segura en una red que no es segura. Fue creado por Roger Needham y Michael Schroeder en 1978. Existen dos versiones principales de este protocolo:
- El protocolo de clave simétrica de Needham-Schroeder: Utiliza un tipo de cifrado donde ambas partes comparten la misma "clave secreta". Este protocolo es la base de sistemas de seguridad como Kerberos. Su objetivo es que dos computadoras se aseguren de que son quienes dicen ser (autenticación) y que creen una clave secreta temporal para proteger su conversación.
- El protocolo de clave pública de Needham-Schroeder: Usa un tipo de cifrado donde hay dos claves: una pública (que todos pueden ver) y una privada (que solo tú conoces). Este protocolo también busca la autenticación mutua, pero la versión original tenía un problema de seguridad.
Contenido
¿Cómo funciona el protocolo simétrico?
Imagina que Alice (A) quiere hablar de forma segura con Bob (B). Para ello, necesitan la ayuda de un servidor (S) que es de confianza para ambos.
- S es un servidor en el que Alice y Bob confían.
- KAS es una clave secreta que solo conocen Alice y el servidor.
- KBS es una clave secreta que solo conocen Bob y el servidor.
- NA y NB son números aleatorios únicos (llamados "nonces") que se usan una sola vez para asegurar que los mensajes son nuevos y no repetidos.
El proceso es así:
- Alice le dice al servidor: "Hola, soy Alice y quiero hablar con Bob. Aquí tienes un número aleatorio (NA) para que sepas que este mensaje es nuevo."
- El servidor le responde a Alice: El servidor crea una nueva clave secreta temporal (KAB) para que Alice y Bob la usen. Le envía a Alice un mensaje cifrado con la clave de Alice (KAS). Dentro de este mensaje, hay:
* El número aleatorio de Alice (NA), para que Alice sepa que el servidor le está respondiendo a su solicitud. * La nueva clave secreta (KAB). * El nombre de Bob (B). * Un paquete especial para Bob: la clave KAB y el nombre de Alice (A), todo cifrado con la clave de Bob (KBS). Alice no puede leer este paquete, pero sabe que es para Bob.
- Alice le envía el paquete a Bob: Alice le reenvía a Bob el paquete especial que recibió del servidor. Bob puede descifrarlo con su clave secreta (KBS) y así obtiene la clave KAB y sabe que es de Alice.
- Bob le responde a Alice: Bob genera su propio número aleatorio (NB) y se lo envía a Alice, cifrado con la nueva clave KAB. Esto le demuestra a Alice que Bob recibió la clave y puede usarla.
- Alice le confirma a Bob: Alice toma el número aleatorio de Bob (NB), le hace un pequeño cambio (por ejemplo, le resta 1), lo vuelve a cifrar con KAB y se lo envía a Bob. Esto le demuestra a Bob que Alice también tiene la clave y que es ella quien está respondiendo.
¿Qué problemas puede tener?
Este protocolo puede ser vulnerable a un tipo de ataque llamado "ataque de repetición" (replay attack). Si un atacante guarda los mensajes de una conversación anterior y luego descubre la clave secreta (KAB) que se usó, podría reenviar el mensaje a Bob. Bob podría aceptar el mensaje sin saber que es antiguo.
Para solucionar esto, protocolos más modernos, como Kerberos, añaden una marca de tiempo (timestamp) a los mensajes. Así, Bob puede saber si el mensaje es reciente o no.
¿Cómo funciona el protocolo de clave pública?
Este protocolo usa un tipo de cifrado donde cada persona tiene dos claves: una pública (que puede compartir con cualquiera) y una privada (que guarda en secreto).
Alice (A) y Bob (B) se comunican con la ayuda de un servidor de confianza (S) que guarda las claves públicas de todos.
- KPA y KSA: Son la clave pública y privada de Alice.
- KPB y KSB: Son la clave pública y privada de Bob.
- KPS y KSS: Son la clave pública y privada del servidor.
El proceso es el siguiente:
- Alice le pide al servidor: "Servidor, dame la clave pública de Bob."
- El servidor le responde a Alice: El servidor le envía a Alice la clave pública de Bob (KPB), firmada con su propia clave privada (KSS) para que Alice sepa que es auténtica.
- Alice le envía un mensaje a Bob: Alice crea un número aleatorio (NA) y se lo envía a Bob, junto con su nombre (A), todo cifrado con la clave pública de Bob (KPB). Solo Bob puede descifrarlo con su clave privada.
- Bob le pide al servidor: "Servidor, dame la clave pública de Alice."
- El servidor le responde a Bob: El servidor le envía a Bob la clave pública de Alice (KPA), firmada con su propia clave privada (KSS).
- Bob le responde a Alice: Bob crea su propio número aleatorio (NB) y se lo envía a Alice, junto con el número aleatorio de Alice (NA), todo cifrado con la clave pública de Alice (KPA). Esto demuestra que Bob pudo descifrar el mensaje anterior de Alice.
- Alice le confirma a Bob: Alice descifra el mensaje de Bob y le envía de vuelta el número aleatorio de Bob (NB), cifrado con la clave pública de Bob (KPB). Esto demuestra que Alice pudo descifrar el mensaje de Bob.
Al final de este proceso, Alice y Bob saben que están hablando entre ellos y que los números aleatorios NA y NB son secretos para cualquier otra persona.
¿Qué problemas puede tener?
Lamentablemente, la versión original de este protocolo es vulnerable a un ataque llamado "hombre en el medio" (Man-in-the-middle). Imagina que un impostor (I) se interpone entre Alice y Bob. El impostor puede hacer creer a Alice que está hablando con Bob, y a Bob que está hablando con Alice, mientras él intercepta y reenvía todos los mensajes.
El ataque funciona así:
- Alice le envía su número aleatorio (NA) al impostor, pensando que es Bob.
- El impostor reenvía el mensaje a Bob, haciéndole creer que es Alice.
- Bob le envía su número aleatorio (NB) al impostor, pensando que es Alice.
- El impostor reenvía el mensaje a Alice, haciéndole creer que es Bob.
- Alice le confirma el número NB al impostor, pensando que es Bob.
- El impostor reenvía la confirmación a Bob, haciéndole creer que es Alice.
Al final, Bob cree que está hablando con Alice y que sus números secretos (NA y NB) son conocidos solo por ellos dos, cuando en realidad el impostor también los conoce.
Este problema fue descubierto y explicado por Gavin Lowe en 1995. Él también propuso una versión mejorada del protocolo, conocida como el protocolo de Needham-Schroeder-Lowe, que soluciona este problema.
Galería de imágenes
Véase también
En inglés: Needham–Schroeder protocol Facts for Kids