Articulo de referencia

Protocolo de Needham-Schroeder

Esquema de protocolo simétrico de Needham-Schroeder El protocolo Needham-Schroeder es uno de los dos protocolos de transporte clave destinados a ser utilizados sobre una red ins...

Esquema de protocolo simétrico de Needham-Schroeder

El protocolo Needham-Schroeder es uno de los dos protocolos de transporte clave destinados a ser utilizados sobre una red insegura, ambos propuestos por Roger Needham y Michael Schroeder . [ 1 ] Estos son:

  • El 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 en una red, generalmente para proteger las comunicaciones posteriores.
  • El protocolo de clave pública Needham-Schroeder se basa en la criptografía de clave pública . Este protocolo pretende proporcionar autenticación mutua entre dos partes que se comunican en una red, pero en su forma propuesta es inseguro.

Protocolo simétrico

Aquí tienes, Alicia.(A){\displaystyle (A)}inicia la comunicación con BobB{\displaystyle B}.S{\displaystyle S}es un servidor de confianza para ambas partes. En la comunicación:

  • A{\displaystyle A}yB{\displaystyle B}son las identidades de Alice y Bob respectivamente
  • KAS{\displaystyle {K_{AS}}}es una clave simétrica conocida solo porA{\displaystyle A}yS{\displaystyle S}
  • KBS{\displaystyle {K_{BS}}}es una clave simétrica conocida solo porB{\displaystyle B}yS{\displaystyle S}
  • norteA{\displaystyle N_{A}}ynorteB{\displaystyle N_{B}}son nonces generados porA{\displaystyle A}yB{\displaystyle B}respectivamente
  • KAB{\displaystyle {K_{AB}}}es una clave generada simétrica, que será la clave de sesión de la sesión entreA{\displaystyle A}yB{\displaystyle B}

El protocolo se puede especificar de la siguiente manera en notación de protocolo de seguridad :

AS:A,B,norteA{\displaystyle A\rightarrow S:\left.A,B,N_{A}\right.}
Alice envía un mensaje al servidor identificándose a sí misma y a Bob, indicándole al servidor que desea comunicarse con Bob.
SA:{norteA,KAB,B,{KAB,A}KBS}KAS{\displaystyle S\rightarrow A:\{N_{A},K_{AB},B,\{K_{AB},A\}_{K_{BS}}\}_{K_{AS}}}
El servidor generaKAB{\displaystyle {K_{AB}}}y le envía a Alice una copia encriptada bajoKBS{\displaystyle {K_{BS}}}para que Alice se lo reenvíe a Bob y también 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 indica a Alice con quién debe compartir esta clave.
AB:{KAB,A}KBS{\displaystyle A\rightarrow B:\{K_{AB},A\}_{K_{BS}}}
Alice le envía la clave a Bob, quien puede descifrarla con la clave que comparte con el servidor, autenticando así los datos.
BA:{norteB}KAB{\displaystyle B\rightarrow A:\{N_{B}\}_{K_{AB}}}
Bob le envía a Alice un nonce cifrado bajoKAB{\displaystyle {K_{AB}}}para demostrar que tiene la llave.
AB:{norteB1}KAB{\displaystyle A\rightarrow B:\{N_{B}-1\}_{K_{AB}}}
Alice realiza una operación sencilla con el nonce, lo vuelve a encriptar y lo envía de vuelta, verificando que sigue viva y que posee 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 anterior y comprometido para KAB{\displaystyle K_{AB}} , entonces puede reproducir el mensaje{KAB,A}KBS{\displaystyle \{K_{AB},A\}_{K_{BS}}}a Bob, quien la aceptará, sin poder darse cuenta de que la llave no es nueva.

Solucionando el ataque

Este fallo 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:

AB:A{\displaystyle A\rightarrow B:A}
Alice le envía una petición a Bob.
BA:{A,norteB}KBS{\displaystyle B\rightarrow A:\{A,N_{B}'\}_{K_{BS}}}
Bob responde con un nonce cifrado bajo su clave con el servidor.
AS:A,B,norteA,{A,norteB}KBS{\displaystyle A\rightarrow S:\left.A,B,N_{A},\{A,N_{B}'\}_{K_{BS}}\right.}
Alice envía un mensaje al servidor identificándose a sí misma y a Bob, indicándole al servidor que desea comunicarse con Bob.
SA:{norteA,KAB,B,{KAB,A,norteB}KBS}KAS{\displaystyle S\rightarrow A:\{N_{A},K_{AB},B,\{K_{AB},A,N_{B}'\}_{K_{BS}}\}_{K_{AS}}}
Nótese la inclusión del nonce.

El protocolo continúa entonces como se describe a través de los tres últimos pasos tal como se describe en el protocolo original anterior . Tenga en cuenta quenorteB{\displaystyle N_{B}'}es un nonce diferente de norteB{\displaystyle N_{B}} . La inclusión de este nuevo nonce impide la reproducción de una versión comprometida de{KAB,A}KBS{\displaystyle \{K_{AB},A\}_{K_{BS}}}ya que dicho mensaje tendría que ser de la forma{KAB,A,norteB}KBS{\displaystyle \{K_{AB},A,N_{B}'\}_{K_{BS}}}que el atacante no puede falsificar ya que no tieneKBS{\displaystyle K_{BS}}.

Protocolo de clave pública

Esto presupone el uso de un algoritmo de cifrado de clave pública .

Aquí tienes, Alicia.(A){\displaystyle (A)}y Bob(B){\displaystyle (B)}Utilice un servidor de confianza.(S){\displaystyle (S)}para distribuir claves públicas a petición. Estas claves son:

  • KPAGA{\displaystyle K_{PA}}yKSA{\displaystyle K_{SA}} , respectivamente las mitades pública y privada de un par de claves de cifrado perteneciente aA{\displaystyle A}(S{\displaystyle S}significa "clave secreta" aquí)
  • KPAGB{\displaystyle K_{PB}}yKSB{\displaystyle K_{SB}} , similar perteneciente aB{\displaystyle B}
  • KPAGS{\displaystyle K_{PS}}yKSS{\displaystyle K_{SS}} , similar perteneciente aS{\displaystyle S} . (Tenga en cuenta que este par de claves se utilizará para firmas digitales , es decir,KSS{\displaystyle K_{SS}}utilizado para firmar un mensaje yKPAGS{\displaystyle K_{PS}}utilizado para verificación. KPAGS{\displaystyle K_{PS}}debe ser conocidoA{\displaystyle A}yB{\displaystyle B}antes de que comience el protocolo.)

El protocolo funciona de la siguiente manera:

AS:A,B{\displaystyle A\rightarrow S:\left.A,B\right.}
A{\displaystyle A}solicitudesB{\displaystyle B}Claves públicas de S{\displaystyle S}.
SA:{KPAGB,B}KSS{\displaystyle S\rightarrow A:\{K_{PB},B\}_{K_{SS}}}
S{\displaystyle S}responde con clave públicaKPAGB{\displaystyle K_{PB}}junto aB{\displaystyle B}Identidad del usuario , firmada por el servidor con fines de autenticación.
AB:{norteA,A}KPAGB{\displaystyle A\rightarrow B:\{N_{A},A\}_{K_{PB}}}
A{\displaystyle A}elige un al azarnorteA{\displaystyle N_{A}}y lo envía aB{\displaystyle B}.
BS:B,A{\displaystyle B\rightarrow S:\left.B,A\right.}
B{\displaystyle B}ahora sabe que A quiere comunicarse, así queB{\displaystyle B}solicitudesA{\displaystyle A}claves públicas de
SB:{KPAGA,A}KSS{\displaystyle S\rightarrow B:\{K_{PA},A\}_{K_{SS}}}
El servidor responde.
BA:{norteA,norteB}KPAGA{\displaystyle B\rightarrow A:\{N_{A},N_{B}\}_{K_{PA}}}
B{\displaystyle B}elige uno al azarnorteB{\displaystyle N_{B}}y lo envía aA{\displaystyle A}junto connorteA{\displaystyle N_{A}}para demostrar la capacidad de descifrar conKSB{\displaystyle K_{SB}}.
AB:{norteB}KPAGB{\displaystyle A\rightarrow B:\{N_{B}\}_{K_{PB}}}
A{\displaystyle A}confirmanorteB{\displaystyle N_{B}}aB{\displaystyle B} , para demostrar la capacidad de descifrar conKSA{\displaystyle K_{SA}}.

Al final del protocolo,A{\displaystyle A}yB{\displaystyle B}conocer las identidades del otro y conocer ambasnorteA{\displaystyle N_{A}}ynorteB{\displaystyle N_{B}}Estos nonces no son conocidos por los espías.

Un ataque al protocolo

Este protocolo es vulnerable a un ataque de intermediario . Si un impostorI{\displaystyle I}puede persuadirA{\displaystyle A}Para iniciar una sesión con ellos, pueden transmitir los mensajes aB{\displaystyle B}y convencerB{\displaystyle B}que se está comunicando conA{\displaystyle A}.

Ignorando el tráfico de entrada y salidaS{\displaystyle S}, que permanece sin cambios, el ataque se desarrolla de la siguiente manera:

AI:{norteA,A}KPAGI{\displaystyle A\rightarrow I:\{N_{A},A\}_{K_{PI}}}
A{\displaystyle A}envíanorteA{\displaystyle N_{A}}aI{\displaystyle I} , quien descifra el mensaje conKSI{\displaystyle K_{SI}}.
IB:{norteA,A}KPAGB{\displaystyle I\rightarrow B:\{N_{A},A\}_{K_{PB}}}
I{\displaystyle I}transmite el mensaje aB{\displaystyle B} , fingiendo queA{\displaystyle A}se está comunicando.
BI:{norteA,norteB}KPAGA{\displaystyle B\rightarrow I:\{N_{A},N_{B}\}_{K_{PA}}}
B{\displaystyle B}envíanorteB{\displaystyle N_{B}}.
IA:{norteA,norteB}KPAGA{\displaystyle I\rightarrow A:\{N_{A},N_{B}\}_{K_{PA}}}
I{\displaystyle I}lo transmite aA{\displaystyle A}.
AI:{norteB}KPAGI{\displaystyle A\rightarrow I:\{N_{B}\}_{K_{PI}}}
A{\displaystyle A}descifranorteB{\displaystyle N_{B}}y lo confirma aI{\displaystyle I} , quien lo aprende.
IB:{norteB}KPAGB{\displaystyle I\rightarrow B:\{N_{B}\}_{K_{PB}}}
I{\displaystyle I}vuelve a encriptarnorteB{\displaystyle N_{B}}y convenceB{\displaystyle B}que ella lo ha descifrado.

Al final del ataque,B{\displaystyle B}cree erróneamente queA{\displaystyle A}se está comunicando con él, y quenorteA{\displaystyle N_{A}}ynorteB{\displaystyle N_{B}}son conocidos únicamente porA{\displaystyle A}yB{\displaystyle B}.

El siguiente ejemplo ilustra el ataque. Alice ( A{\displaystyle A} ) ​​quisiera ponerse en contacto con su banco (B{\displaystyle B} ). Suponemos que un impostor (I{\displaystyle I}) convence con éxitoA{\displaystyle A}que ellos son el banco. En consecuencia,A{\displaystyle A}utiliza la clave pública deI{\displaystyle I}en lugar de utilizar la clave pública deB{\displaystyle B}para cifrar los mensajes que pretende enviar a su banco. Por lo tanto,A{\displaystyle A}envíaI{\displaystyle I}su nonce cifrado con la clave pública de I{\displaystyle I}.I{\displaystyle I}descifra el mensaje usando su clave privada y contactosB{\displaystyle B}enviándole el nonce deA{\displaystyle A}cifrado con la clave pública deB{\displaystyle B}.B{\displaystyle B}no tiene forma de saber que este mensaje fue enviado realmente porI{\displaystyle I}.B{\displaystyle B}responde con su propio nonce y cifra el mensaje con la clave pública de A{\displaystyle A}DesdeI{\displaystyle I}no posee la clave privada deA{\displaystyle A}tienen que transmitir el mensaje aA{\displaystyle A}sin conocer el contenido. A descifra el mensaje con su clave privada y responde con el nonce deB{\displaystyle B}cifrado con la clave pública deI{\displaystyle I}.I{\displaystyle I}descifra el mensaje usando su clave privada y ahora está en posesión del nonce.A{\displaystyle A}yB{\displaystyle B}Por lo tanto, ahora pueden suplantar la identidad del banco y del cliente, respectivamente.

Solucionando el ataque de intermediario

El ataque fue descrito por primera vez en un artículo de 1995 por Gavin Lowe . [ 4 ] El artículo también describe una versión corregida del esquema, denominada protocolo Needham-Schroeder-Lowe . La corrección implica la modificación del mensaje seis para incluir la identidad del respondedor, es decir, reemplazamos:

BA:{norteA,norteB}KPAGA{\displaystyle B\rightarrow A:\{N_{A},N_{B}\}_{K_{PA}}}

con la versión corregida:

BA:{norteA,norteB,B}KPAGA{\displaystyle B\rightarrow A:\{N_{A},N_{B},B\}_{K_{PA}}}

y el intruso no puede reproducir el mensaje con éxito porqueA{\displaystyle A} espera un mensaje que contenga la identidad deI{\displaystyle I} mientras que el mensaje tendrá identidad deB{\displaystyle B}.

Véase también

Referencias

  1. Needham, Roger; Schroeder, Michael (diciembre de 1978). "Uso del cifrado para la autenticación en grandes redes de computadoras" . Communications of the ACM . 21 (12): 993– 999. CiteSeerX 10.1.1.357.4298 . doi : 10.1145/359657.359659 . S2CID 7704786 .  
  2. Denning, Dorothy E. ; Sacco, Giovanni Maria (1981). "Marcas de tiempo en protocolos de distribución de claves" . Communications of the ACM . 24 (8): 533– 535. doi : 10.1145/358722.358740 . S2CID 3228356 . 
  3. Needham, RM ; Schroeder, MD (1987). "Autenticación revisitada" . ACM SIGOPS Operating Systems Review . 21 (1): 7. doi : 10.1145/24592.24593 . S2CID 33658476 . 
  4. 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 . Recuperado el 17 de abril de 2008 . 
  • 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 de intermediario (man-in-the-middle) por Computerphile .