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] .
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] .
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] .
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] .
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:
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] .
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] .
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] .
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] .
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] .
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 consecuenciasConsidere 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 simplePara 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] .
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ónUsando 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] .
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] .
Protocolos de autenticación e intercambio de claves | |
---|---|
Con algoritmos simétricos | |
Con algoritmos simétricos y asimétricos | |
Protocolos y servicios utilizados en Internet |