Protocolo de Needham-Schroeder

Notaciones criptográficas utilizadas en protocolos de autenticación e intercambio de claves
Identificadores de Alice ( Alice ), la iniciadora de la sesión
Identificador de Bob ( Bob ), el lado desde el que se establece la sesión
Identificador de Trent ( Trent ), una parte intermediaria de confianza
Las claves públicas de Alice, Bob y Trent
Claves secretas de Alice, Bob y Trent
Cifrado de datos con la clave de Alice o la clave conjunta de Alice y Trent
Cifrado de datos con la clave de Bob o la clave conjunta de Bob y Trent
Cifrado de datos con claves secretas de Alice, Bob (firma digital)
Número de secuencia de la sesión (para evitar ataques de reproducción)
Clave de sesión aleatoria que se utilizará para el cifrado de datos simétrico
Cifrado de datos con una clave de sesión temporal
Marcas de tiempo añadidas a los mensajes por Alice y Bob respectivamente
Números aleatorios ( nonce ) que fueron elegidos por Alice y Bob respectivamente

El protocolo Needham-Schroeder es un nombre común para la autenticación  simétrica y asimétrica y los protocolos de intercambio de claves. Ambos protocolos fueron propuestos por Michael Schroeder y Roger Needham [1] . Una variante basada en el cifrado simétrico utiliza una parte de confianza intermedia. Este protocolo se convirtió en la base de toda una clase de tales protocolos. Por ejemplo, Kerberos es una de las opciones para el protocolo simétrico Needham-Schroeder. Una variante basada en el cifrado asimétrico está diseñada para la autenticación mutua de las partes. En su forma original, ambas versiones del protocolo son vulnerables [2] [3] .

Historia

Michael Schroeder y Roger Needham formularon en 1978 un protocolo para la autenticación de claves simétricas, quizás el protocolo de autenticación y establecimiento de claves más famoso [1] . Sin embargo, es vulnerable a un ataque inventado por Dorothy E. Denning  y Giovanni Maria Sacco en 1981 [ 2] .  A pesar de esto, se convirtió en la base de toda una clase de tales protocolos. En particular, el protocolo Kerberos es una de las variantes del protocolo de autenticación Needham-Schroeder basado en un tercero de confianza y sus modificaciones propuestas por Denning y Sacco [2] . El protocolo Needham-Schroeder para la autenticación de clave pública también es vulnerable. En 1995, Gavin Lowe describió un posible ataque al protocolo [3] .  

Protocolo Needham-Schroeder para autenticación de clave simétrica

Con un esquema de cifrado de clave simétrica, se supone que la clave secreta es conocida tanto por el servidor de autenticación (Trent) como por ambos sujetos del intercambio : (Alice) y (Bob). Inicialmente, ambos sujetos tienen claves secretas: y , conocidas solo por ellos y por alguna parte de confianza: el servidor de autenticación. Durante la ejecución del protocolo, Alice y Bob reciben una nueva clave de sesión secreta del servidor para cifrar los mensajes mutuos en esta sesión de comunicación, es decir, solo Bob puede descifrar los mensajes de Alice a Bob, solo Alice puede descifrar los mensajes de Bob a Alice. . Además, los sujetos del intercambio deben estar seguros de que el mensaje entrante se envió exactamente a aquellos con quienes se debe realizar el intercambio. Bob debe estar seguro de que recibió el mensaje de Alice y viceversa. Esto también lo proporciona el protocolo. Suponga que Alice inicia el intercambio. Asumiremos que tienen un servidor de autenticación común. Considere la implementación del protocolo [4] :

El intercambio comienza con Alice generando algún número aleatorio (identificador) que se usa una vez. El primer mensaje de Alice a Trent contiene los nombres de los participantes en el próximo intercambio y un número aleatorio generado por Alice:

Este mensaje se envía en texto sin cifrar, pero se puede cifrar con la clave de Alice :

Al recibir este mensaje, Trent recupera las claves privadas de Alice y Bob de la base de datos: y , y calcula una nueva clave de sesión . Trent luego le envía a Alice el siguiente mensaje:

Alice puede decodificar y leer el mensaje de Trent. Comprueba su identificación en el mensaje, lo que confirma que el mensaje es una respuesta a su primer mensaje a Trent. También comprueba el nombre del sujeto con el que va a intercambiar datos. Esta verificación es obligatoria, porque si este nombre no estuviera allí, el Intruso podría reemplazar el nombre de Bob con el suyo propio en el primer mensaje, y Alice, sin sospechar nada, interactuaría más con el Intruso. Alice no puede leer parte del mensaje porque esta parte está encriptada con la clave de Bob. Alice le envía a Bob un fragmento encriptado con su clave:

Solo Bob puede descifrarlo, ya que está encriptado con su clave privada. Después del descifrado, Bob también posee la clave de sesión . El nombre de Alice en el mensaje confirma el hecho de que el mensaje es de ella. Además, al intercambiar datos, se utilizará la clave de sesión. Para hacer que el esquema sea simétrico y reducir la posibilidad de un ataque de repetición , Bob genera un número aleatorio (ID de Bob) y envía a Alice el siguiente mensaje, encriptado con la clave de sesión:

Alice lo descifra y envía la respuesta que espera Bob, también encriptada con la clave de sesión:

Para los socios que interactúan regularmente, puede reducir la cantidad de mensajes a tres eliminando los dos primeros. En este caso, la tecla se usará repetidamente [5] .

Un ataque al protocolo Needham-Schroeder para la autenticación de claves simétricas

El protocolo Needham-Schroeder es vulnerable a un ataque de retransmisión de mensajes inventado por Dorothy E. Denning  y Giovanni Maria Sacco en 1981 [ 2] .  Durante el ataque, el atacante intercepta y reemplaza los mensajes de los párrafos 3,4,5 del protocolo. El atacante intercepta el mensaje de Alice a Bob en el tercer paso del protocolo y bloquea a Alice. Luego reemplaza el mensaje actual de Alice con otro de la sesión anterior entre Alice y Bob. Basándose en la suposición de que la clave de sesión anterior es vulnerable, un atacante puede averiguar su valor y comenzar a intercambiar datos con Bob bajo la apariencia de Alice [4] .

Como resultado, Bob piensa que tiene una nueva clave de sesión con Alice, pero en realidad la clave es antigua y conocida por el atacante.

Considere una posible implementación del ataque:

Como resultado, Bob está seguro de haber establecido una sesión de comunicación con Alice, ya que todos los pasos necesarios del protocolo se realizaron correctamente y todos los mensajes resultaron ser correctos.

Este ataque da lugar a un peligro más grave: la falta de una conexión real entre los socios. El atacante no tiene que esperar a que Alice inicie el protocolo. Dado que conoce la clave de sesión anterior , puede iniciar el ataque él mismo iniciando el protocolo desde el paso 3. Bob pensará que se puso en contacto con Alice, mientras que Alice no contactó en absoluto [6] .

Corrección de vulnerabilidad

Denning y Sacco propusieron el uso de marcas de tiempo en los mensajes para evitar ataques como el mencionado anteriormente [2] . Designemos tal etiqueta con una letra . Considere la opción para corregir la vulnerabilidad:

  1. ,

Después de recibir mensajes de protocolo de Trent, Alice y Bob pueden encontrar que sus mensajes no han sido respondidos al verificar la desigualdad:

donde (hora actual) es la hora local actual del destinatario;  es un intervalo que representa la diferencia permitida entre la hora de Trento y la hora local;  es el retraso de tiempo esperado. Desde aquí están convencidos de la "frescura" de los mensajes y en especial de la clave de sesión. Dado que la marca de tiempo está encriptada con las claves secretas de Alice y Bob, la imitación de Trent es imposible en un esquema de encriptación ideal [7] .

También en esta especificación de protocolo revisada , se destaca explícitamente la necesidad de proteger la integridad de los datos . Si los mensajes intercambiados entre los participantes del protocolo no se distorsionaron durante la transmisión, luego del procedimiento de verificación , ambas partes pueden estar seguras de que la clave de sesión es consistente tanto con los usuarios como con el identificador de "frescura". Esto debería convencerlos de que cada uno es auténtico y que la clave de sesión anterior no se está utilizando [8] .

El caso de diferentes servidores de autenticación

En la vida real, Alice y Bob pueden estar lo suficientemente separados como para que no haya un servidor de autenticación común [5] . Por eso, en general, Alice puede tener su propio servidor de autenticación: , y Bob el suyo: . Ya que en este caso, Alice también se enfrenta a la tarea de construir un mensaje de la forma para Bob . Ambos servidores estarán involucrados en su formación, ya que solo puede cifrar con la clave de Alice y solo puede usar la clave de Bob: . Al mismo tiempo, se supone que debe garantizarse la seguridad del intercambio entre servidores. Considere un ejemplo para el caso de dos servidores diferentes que tienen una conexión entre sí:

Los pasos 1, 4-7 corresponden a los pasos 1-5 del caso anterior del servidor de autenticación común. En el segundo paso, el servidor de Alice, al no encontrar a Bob en la lista de sus clientes, contacta al servidor de Bob. Conoce la clave de Bob y puede realizar el cifrado necesario. Después de eso, la información cifrada se envía de vuelta al servidor de autenticación de Alice, que la envía a Alice [5] .

Protocolo de autenticación de entidad

El mecanismo de "respuesta-revocación" [9] del protocolo proporciona la llamada autenticación de entidad [ISO 1] . La autenticación de una entidad se realiza mediante la verificación por parte del usuario verificador de alguna operación criptográfica. Demuestra la existencia de un usuario probador, que se considera confirmado si el usuario probador ha realizado alguna operación criptográfica posterior al evento que otro usuario considera la última.

En la segunda etapa del protocolo Needham-Schroeder, Alice descifra el número aleatorio único que ella misma generó en la primera etapa. Esto confirma el hecho de que Trent realizó el cifrado después de recibir el mensaje de Alice. Como resultado, Alice sabe que Trent existió después de este evento, es decir, Trent pasó la autenticación de existencia en relación con Alice. Al mismo tiempo, Bob, participando en el mismo protocolo, no puede estar seguro de la existencia de Trent [7] .

Protocolo Needham-Schroeder para autenticación de clave pública

Criptosistemas de clave pública

Introduzcamos la notación:

Además, solo Alice conoce la clave secreta, y los demás conocen la clave pública.

Esto significa que se garantiza que Alice creará el texto con un cifrado perfecto, porque solo ella posee esta clave secreta. Es por eso que el texto cifrado se denomina firma de mensaje digital . Su descifrado utilizando la clave pública se denomina verificación de la firma de Alice [10] .

Protocolo Needham-Schroeder para autenticación de clave pública

Una variante asimétrica (esquema de dos claves) del protocolo Needham-Schroeder. Trent posee las claves públicas de todos los clientes a los que atiende. Alice tiene una clave pública y una clave privada , Bob tiene ambas , Trent tiene y . Deje que Alice inicie una nueva sesión con Bob [11] :

Alice, la iniciadora del protocolo, le pide a Trent la clave pública de Bob en el primer mensaje:

A lo que Trent, en la segunda etapa del protocolo, responde con un mensaje con la clave pública de Bob y su nombre. El mensaje está encriptado con la clave privada de Trent , es decir, es su firma digital . Esta firma debería convencer a Alice de que recibió el mensaje de Trent. Se supone que Alice conoce la clave pública de Trent y puede descifrar el mensaje, es decir, verificar la firma.

A continuación, Alice genera un número aleatorio y se lo envía a Bob junto con su nombre, habiéndolo cifrado previamente con la clave pública de Bob.

Solo Bob puede descifrar este mensaje, ya que requiere su clave privada . Por el mensaje, se entera de que Alice quiere comenzar a intercambiar datos con él. Por lo tanto, Bob necesita la clave pública de Alice y realiza las mismas operaciones que hizo Alice:

Como resultado, los participantes del intercambio conocen las claves públicas de los demás. Después de eso, la autenticación mutua se realiza utilizando números aleatorios generados :

Needham y Schroeder sugirieron usar números para inicializar la clave secreta compartida [1] , que proporciona una conexión secreta entre Alice y Bob. Denning y Sacco señalaron más tarde que este protocolo no garantiza que las claves públicas sean nuevas y no duplicadas de las antiguas. Este problema se puede resolver de varias formas, en particular, mediante el uso de marcas de tiempo [2] en mensajes con claves. Needham y Schroeder también consideraron el uso de sellos de tiempo, pero rechazaron esta idea debido a la falta de un estándar de tiempo cualitativo [12] .

Un ataque al protocolo Needham-Schroeder para la autenticación de clave pública

Gavin Lowe [3 ] propuso un ataque al protocolo .  Dividió el protocolo en dos partes que no estaban relacionadas lógicamente. Primero: 1, 2, 4, 5 etapas del protocolo: obtención de una clave pública. Segundo: 3, 6, 7 etapas: autenticación de Alice y Bob. Supondremos que ha tenido lugar la primera parte y consideraremos la segunda:

3. 6. 7.

Deje que el atacante sea una persona que sea un usuario legítimo del sistema . Puede realizar sesiones de comunicación estándar con otros usuarios del sistema. Para el ataque se utiliza el lanzamiento simultáneo de dos protocolos: en el primero, Alice realiza una sesión correcta con el Atacante, en el segundo, el Atacante se hace pasar por Alice cuando se comunica con Bob [13] .

1.3. 2.3. 2.6. 1.6. 1.7. 2.7.

En el paso 1.3, Alice envía un número aleatorio al atacante, que el atacante envía inmediatamente a Bob en la etapa 2.3 de otro protocolo. Bob recibe este mensaje y en el paso 2.6 genera su propio número aleatorio y responde lo que cree que es Alice. El atacante no puede descifrar este mensaje, por lo que se lo envía a Alice en el paso 1.6. Alice recibe un mensaje no sospechoso, lo descifra y devuelve el número aleatorio de Bob al atacante en el paso 1.7 cifrando el mensaje con la clave pública del atacante. Ahora el Atacante conoce el número aleatorio de Bob y puede responderle en el paso 2.7. Bob está seguro de que estableció una sesión de comunicación con Alice, porque encriptó el mensaje con un número aleatorio con su clave y recibió la respuesta correcta.

El punto clave del ataque es que el atacante puede obligar a Alice a descifrar el número aleatorio de Bob por él. Alice en este ataque actúa como un oráculo  , un usuario del sistema que realiza alguna operación criptográfica en interés del atacante [14] .

Un ejemplo de consecuencias

Considere un ejemplo de las consecuencias de este ataque. Deja que Bob sea un banco. Luego, el atacante, haciéndose pasar por Alice, puede usar su cuenta y transferir dinero de ella a la suya. El banco estará seguro de que la operación fue realizada por Alice [14] .

Corrección de protocolo simple

Para evitar el ataque descrito anteriormente, en el sexto paso, agregue el nombre del respondedor al mensaje:

2.6.

En este caso, el Atacante no podrá reenviar el mensaje a Alice, ya que Alice esperará el siguiente mensaje de él, respectivamente:

1.6.

que el atacante no puede obtener ni reenviando los mensajes de Bob ni por su cuenta [14] .

Corrección de vulnerabilidad

Primera opción 3. 6. 7.

En la especificación revisada  , este es un mensaje que debe verificarse utilizando la clave pública de Alice, es decir, es la firma de Alice . En esta especificación, los números aleatorios primero se firman y luego se cifran con la clave pública de otro usuario. Debido a que Bob firma su número en el paso 6, el ataque de Low se vuelve imposible. Si el atacante reenvía el mensaje a Alice, notará un error de verificación [15] .

Segunda opción

Usando el método "cifrar y firmar", puede refinarlo de la siguiente manera:

3. 6. 7.

Ahora el atacante ni siquiera puede iniciar el protocolo de comunicación con Bob en nombre de otra persona [15] .

Uso práctico

El protocolo Kerberos está diseñado para resolver el problema de la autenticación de usuarios de red . Su idea principal es utilizar un tercero de confianza que otorgue al usuario acceso al servidor utilizando una clave de sesión común compartida entre el usuario y el servidor. Este protocolo se basa en una variante del protocolo Needham-Schroeder que utiliza una marca de tiempo [16] [1] .

Notas

  1. 1 2 3 4 Needham, Schroeder, 1978 .
  2. 1 2 3 4 5 6 Denning, Sacco, 1981 .
  3. 1 2 3 Lowe, 1995 .
  4. 12 Mao , 2005 , pág. 76.
  5. 1 2 3 Semenov Yu.A. .
  6. Mao, 2005 , pág. 77.
  7. 12 Mao , 2005 , pág. 79.
  8. Mao, 2005 , pág. 641.
  9. Mao, 2005 , pág. 75.
  10. Mao, 2005 , pág. 80.
  11. Mao, 2005 , pág. 81.
  12. Needham, Schroeder, 1987 .
  13. Mao, 2005 , pág. 83.
  14. 1 2 3 Mao, 2005 , pág. 84.
  15. 12 Mao , 2005 , pág. 643.
  16. Mao, 2005 , pág. 462.

Estándares

  1. ISO 9798-2: Tecnología de la información - Técnicas de seguridad - Mecanismos de autenticación de entidades - Parte 2: Autenticación de entidades mediante técnicas simétricas.

Literatura

  • Roger M. Needham, Michael D. Schroeder. Uso de encriptación para autenticación en grandes redes de computadoras   // Commun . ACM. - Nueva York, NY, EE. UU.: ACM, 1978. - vol. 21 , edición. 12 _ - Pág. 993-999 . — ISSN 0001-0782 . doi : 10.1145/ 359657.359659 .
  • Dorothy E. Denning, Giovanni María Sacco. Marcas de tiempo en protocolos de distribución de claves   // Commun . ACM. - Nueva York, NY, EE. UU.: ACM, 1981. - Vol. 24 , edición. agosto de 1981 , n. 8 _ - Pág. 533-536 . — ISSN 0001-0782 . -doi : 10.1145/ 358722.358740 .
  • Roger M. Needham, Michael D. Schroeder. Autenticación revisada  //  SIGOPS Oper. sist. Rev.. - Nueva York, NY, EE. UU.: ACM, 1987. - Vol. 21 , edición. 1 . - Pág. 7-7 . — ISSN 0163-5980 . doi : 10.1145/ 24592.24593 .
  • Gavin Lowe. Un ataque al protocolo de autenticación de clave pública Needham-Schroeder  //  Cartas de procesamiento de información. - 1995. - vol. 56 , núm. 3 . - pág. 131-133 . — ISSN 0020-0190 . - doi : 10.1016/0020-0190(95)00144-2 .
  • Schneier B. Criptografía aplicada. Protocolos, algoritmos, código fuente en lenguaje C = Criptografía Aplicada. Protocolos, Algoritmos y Código Fuente en C. - M. : Triumph, 2002. - 816 p. - 3000 copias.  - ISBN 5-89392-055-4 .
  • Wenbo Mao. Criptografía moderna: teoría y práctica = Criptografía moderna: teoría y práctica. - Editorial Williams, 2005. - ISBN 5-8459-0847-7 .
  • Semenov Yu.A. Protocolo de autenticación Needham-Schroeder en casos de sistemas de cifrado simétricos y asimétricos . Recuperado: 8 de diciembre de 2012.

Enlaces