El protocolo Needham-Schroeder es uno de los dos protocolos de transporte clave pensados para su uso en redes inseguras, ambos propuestos por Roger Needham y Michael Schroeder . [1] Estos son:
Protocolo de clave simétrica Needham-Schroeder , basado en un algoritmo de cifrado simétrico , constituye la base del protocolo Kerberos . Este protocolo tiene como objetivo establecer una clave de sesión entre dos partes de una red, normalmente para proteger la comunicación posterior.
Protocolo de clave pública Needham-Schroeder , basado en criptografía de clave pública . Este protocolo está pensado para proporcionar autenticación mutua entre dos partes que se comunican en una red, pero en su forma propuesta es inseguro.
Protocolo simétrico
Aquí , Alice inicia la comunicación con Bob . Es un servidor en el que ambas partes confían. En la comunicación:
Alice envía un mensaje al servidor identificándose a sí misma y a Bob, diciéndole al servidor que desea comunicarse con Bob.
El servidor genera y envía de vuelta a Alice una copia cifrada para que Alice la reenvíe a Bob y también una copia para Alice. Dado que Alice puede estar solicitando claves para varias personas diferentes, el nonce le asegura a Alice que el mensaje es nuevo y que el servidor está respondiendo a ese mensaje en particular y la inclusión del nombre de Bob le dice a Alice con quién compartirá esta clave.
Alice envía la clave a Bob, quien puede descifrarla con la clave que comparte con el servidor, autenticando así los datos.
Bob le envía a Alice un nonce cifrado para demostrar que tiene la clave.
Alice realiza una operación simple en el nonce, lo vuelve a cifrar y lo envía de vuelta verificando que todavía está viva y que tiene la clave.
Ataques al protocolo
El protocolo es vulnerable a un ataque de repetición (como lo identificaron Denning y Sacco [2] ). Si un atacante usa un valor más antiguo y comprometido para , puede reproducir el mensaje a Bob, quien lo aceptará, sin poder saber que la clave no es nueva.
Arreglando el ataque
Esta falla se corrige en el protocolo Kerberos mediante la inclusión de una marca de tiempo . También se puede corregir con el uso de nonces como se describe a continuación. [3] Al comienzo del protocolo:
Alice le envía una solicitud a Bob.
Bob responde con un nonce encriptado bajo su clave con el Servidor.
Alice envía un mensaje al servidor identificándose a sí misma y a Bob, diciéndole al servidor que desea comunicarse con Bob.
Tenga en cuenta la inclusión del nonce.
El protocolo continúa luego como se describe a través de los tres pasos finales como se describe en el protocolo original anterior. Tenga en cuenta que es un nonce diferente de . La inclusión de este nuevo nonce evita la reproducción de una versión comprometida de ya que dicho mensaje tendría que ser de un formato que el atacante no pueda falsificar ya que no tiene .
Aquí, Alice y Bob utilizan un servidor de confianza para distribuir claves públicas a pedido. Estas claves son:
y , respectivamente, las mitades pública y privada de un par de claves de cifrado pertenecientes a ( significa "clave secreta" aquí )
y , similar perteneciente a
y , similar perteneciente a . (Tenga en cuenta que este par de claves se utilizará para firmas digitales , es decir, se utilizará para firmar un mensaje y se utilizará para verificación. debe ser conocido por y antes de que comience el protocolo).
El protocolo funciona de la siguiente manera:
solicita las claves públicas de .
responde con la clave pública junto con la identidad de , firmada por el servidor para fines de autenticación.
elige uno al azar y lo envía a .
Ahora sabe que A quiere comunicarse, por lo que solicita las claves públicas de .
El servidor responde.
elige un aleatorio y lo envía a junto con para demostrar la capacidad de descifrar con .
confirma que , demuestra la capacidad de descifrar con .
Al final del protocolo, y conocer las identidades de cada uno, y conocer ambos y . Estos nonces no son conocidos por los espías.
Un ataque al protocolo
Este protocolo es vulnerable a un ataque de intermediario . Si un impostor puede persuadirlos para que inicien una sesión con ellos, pueden retransmitirles los mensajes y convencerlos de que se están comunicando con ellos .
Ignorando el tráfico hacia y desde , que no cambia, el ataque se ejecuta de la siguiente manera:
envía a , quien descifra el mensaje con .
transmite el mensaje a , simulando que se está comunicando.
Envía .
lo transmite a .
lo descifra y lo confirma a quien lo aprende.
vuelve a cifrarlo y la convence de que lo ha descifrado.
Al final del ataque, cree falsamente que se está comunicando con él, y que y son conocidos sólo por y .
El siguiente ejemplo ilustra el ataque. Alice ( ) desea contactar con su banco ( ). Suponemos que un impostor ( ) convence con éxito de que es el banco. Como consecuencia, usa la clave pública de en lugar de usar la clave pública de para cifrar los mensajes que pretende enviar a su banco. Por lo tanto, envía su nonce cifrado con la clave pública de . descifra el mensaje usando su clave privada y contacta enviándole el nonce de cifrado con la clave pública de . no tiene forma de saber que este mensaje fue realmente enviado por . responde con su propio nonce y cifra el mensaje con la clave pública de . Dado que no está en posesión de la clave privada de , tiene que retransmitir el mensaje a sin conocer el contenido. A descifra el mensaje con su clave privada y responde con el nonce de encrypted con la clave pública de . descifra el mensaje usando su clave privada y ahora está en posesión de nonce y . Por lo tanto, ahora pueden hacerse pasar por el banco y el cliente respectivamente.
Cómo solucionar el ataque del hombre en el medio
El ataque fue descrito por primera vez en un artículo de 1995 de Gavin Lowe . [4]
El artículo también describe una versión corregida del esquema, conocida como el protocolo Needham–Schroeder–Lowe . La solución implica la modificación del mensaje seis para incluir la identidad del respondedor, es decir, reemplazamos:
con la versión corregida:
y el intruso no puede reproducir exitosamente el mensaje porque A espera un mensaje que contenga la identidad de I mientras que el mensaje tendrá la identidad de .
^ Needham, Roger; Schroeder, Michael (diciembre de 1978). "Uso de cifrado para autenticación en grandes redes de computadoras". Comunicaciones de la ACM . 21 (12): 993–999. CiteSeerX 10.1.1.357.4298 . doi :10.1145/359657.359659. S2CID 7704786.
^ Denning, Dorothy E. ; Sacco, Giovanni Maria (1981). "Marcas de tiempo en protocolos de distribución de claves". Comunicaciones de la ACM . 24 (8): 533–535. doi : 10.1145/358722.358740 . S2CID 3228356.
^ Lowe, Gavin (noviembre de 1995). "Un ataque al protocolo de autenticación de clave pública Needham-Schroeder". Information Processing Letters . 56 (3): 131–136. CiteSeerX 10.1.1.394.6094 . doi :10.1016/0020-0190(95)00144-2 . Consultado el 17 de abril de 2008 .
Enlaces externos
Wikimedia Commons alberga una categoría multimedia sobre Protocolo Needham-Schroeder .
Roger Needham; Michael Schroeder (1978). "Clave pública de Needham-Schroeder". Laboratorio de especificación y verificación.
Roger Needham; Michael Schroeder (1978). "Clave simétrica de Needham Schroeder". Laboratorio de especificación y verificación.
Gavin Lowe (1995). "Versión fija de Lowe's de la clave pública de Needham-Schroder". Laboratorio de especificación y verificación.
Explicación del ataque man-in-the-middle de Computerphile .