El protocolo Needham-Schroeder es uno de los dos protocolos de transporte clave previstos para su uso en una red insegura, ambos propuestos por Roger Needham y Michael Schroeder . [1] Estos son:
- El protocolo de clave simétrica de 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 en una red, generalmente para proteger la comunicación adicional.
- El protocolo de clave pública Needham-Schroeder , basado en criptografía de clave pública . Este protocolo está destinado a proporcionar autenticación mutua entre dos partes que se comunican en una red, pero en su forma propuesta es inseguro.
El protocolo simétrico
Aquí, Alice inicia la comunicación con Bob . es un servidor en el que confían ambas partes. En la comunicación:
- y son identidades de Alice y Bob respectivamente
- es una clave simétrica conocida solo por y
- es una clave simétrica conocida solo por y
- y son nonces generados por y respectivamente
- es una clave simétrica, generada, que será la clave de sesión de la sesión entre y
El protocolo se puede especificar de la siguiente manera en la notación de protocolo de seguridad :
- Alice envía un mensaje al servidor identificándose a sí misma y a Bob, diciéndole al servidor que quiere comunicarse con Bob.
- El servidor genera y envía a Alice una copia encriptada bajo para que Alice se lo 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 reciente 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 debe compartir esta clave.
- Alice reenví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 encriptado bajo para demostrar que tiene la llave.
- Alice realiza una operación simple en el nonce, lo vuelve a encriptar y lo envía de regreso 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 utiliza un valor más antiguo y comprometido para, luego puede reproducir el mensaje a Bob, quien lo aceptará, no pudiendo decir que la clave no está fresca.
Arreglando el ataque
Esta falla se corrige en el protocolo Kerberos mediante la inclusión de una marca de tiempo . También se puede solucionar 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 quiere comunicarse con Bob.
- Tenga en cuenta la inclusión del nonce.
Luego, el protocolo continúa 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 debería tener la forma que el atacante no puede falsificar ya que no tiene .
El protocolo de clave pública
Esto supone el uso de un algoritmo de cifrado de clave pública .
Aquí, Alice y Bob utilizar un servidor de confianza para distribuir claves públicas bajo pedido. Estas claves son:
- y , respectivamente mitades públicas y privadas 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, utilizado para firmar un mensaje y utilizado para la verificación. debe ser conocido y antes de que comience el protocolo).
El protocolo se ejecuta de la siguiente manera:
- peticiones claves públicas de
- responde con clave pública junto a de identidad, firmada por el servidor con fines de autenticación.
- elige al azar y lo envía a .
- ahora sabe que A quiere comunicarse, así que peticiones claves públicas.
- El servidor responde.
- elige al azar y lo envía a junto con para demostrar la capacidad de descifrar con .
- confirma a , para demostrar la capacidad de descifrar con
Al final del protocolo, y conocer las identidades de los demás, y conocer a 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 persuadir para iniciar una sesión con ellos, pueden transmitir los mensajes a y convencer con el que se está comunicando .
Ignorando el tráfico hacia y desde , que no cambia, el ataque se ejecuta de la siguiente manera:
- envía a , que descifra el mensaje con
- transmite el mensaje a , fingiendo que se está comunicando
- envía
- se lo transmite a
- descifra y lo confirma a , quien lo aprende
- vuelve a encriptar y convence que ella lo descifró
Al final del ataque, cree falsamente que se está comunicando con él, y que y son conocidos solo por y .
El siguiente ejemplo ilustra el ataque. Alice (A) quisiera contactar a su banco (B). Suponemos que un impostor (I) convence con éxito a A de que son el banco. Como consecuencia, A usa la clave pública de I en lugar de usar la clave pública de B para cifrar los mensajes que pretende enviar a su banco. Por lo tanto, A envía I su nonce cifrado con la clave pública de I. I descifra el mensaje usando su clave privada y contacta B enviándolo el nonce de A cifrado con la clave pública de B. B no tiene forma de saber que este mensaje fue realmente enviado por I. B responde con su propio nonce y encripta el mensaje con la clave pública de A. Dado que I no está en posesión de la clave privada de A, tienen que retransmitir el mensaje a A sin conocer el contenido. A descifra el mensaje con su clave privada y responde con el nonce de B cifrado con la clave pública de I. Yo descifro el mensaje usando su clave privada y ahora está en posesión de nonce A y B. Por lo tanto, ahora pueden hacerse pasar por el banco y el cliente respectivamente.
Arreglando el ataque man-in-the-middle
El ataque fue descrito por primera vez en un artículo de 1995 por Gavin Lowe . [4] El documento también describe una versión fija del esquema, denominado 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 fija:
y el intruso no puede reproducir correctamente el mensaje porque A espera un mensaje que contenga la identidad de I, mientras que el mensaje tendrá la identidad de B.
Ver también
Referencias
- ^ Needham, Roger; Schroeder, Michael (diciembre de 1978). "Utilización de cifrado para autenticación en grandes redes de ordenadores". 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 .
- ^ Needham, RM ; Schroeder, MD (1987). "Autenticación revisada". Revisión de sistemas operativos ACM SIGOPS . 21 (1): 7. doi : 10.1145 / 24592.24593 . S2CID 33658476 .
- ^ Lowe, Gavin (noviembre de 1995). "Un ataque al protocolo de autenticación de clave pública Needham-Schroeder" . Cartas de procesamiento de información . 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
- Roger Needham y Michael Schroeder (1978). "Clave pública Needham-Schroeder" . Laboratoire Spécification et Vérification.Mantenimiento de CS1: utiliza el parámetro de autores ( enlace )
- Roger Needham y Michael Schroeder (1978). "Llave simétrica de Needham Schroeder" . Laboratoire Spécification et Vérification.Mantenimiento de CS1: utiliza el parámetro de autores ( enlace )
- Gavin Lowe (1995). "Versión fija de Lowe's de Needham-Schroder Public Key" . Laboratoire Spécification et Vérification.Mantenimiento de CS1: utiliza el parámetro de autores ( enlace )