Protocolo Needham-Schroeder

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Protocolo de transporte clave
Sistema de protocolo de Needham-Schroeder

El protocolo Needham-Schroeder es uno de los dos protocolos de transporte clave destinados a su uso en una red insegura, ambos propuestos por Roger Needham y Michael Schroeder. Estos son:

  • El Needham-Schroeder Protocolo clave simétrico, basado en un algoritmo de cifrado simétrico. Forma la base para el protocolo Kerberos. Este protocolo tiene por objeto establecer una sesión clave entre dos partes en una red, normalmente para proteger la comunicación futura.
  • El Needham-Schroeder Public-Key Protocol, basado en la criptografía de clave pública. Este protocolo tiene por objeto proporcionar autenticación mutua entre dos partes que se comunican en una red, pero en su forma propuesta es insegura.

El protocolo simétrico

Aquí, Alice. ()A){displaystyle (A)} inicia la comunicación a Bob B{displaystyle B}. S{displaystyle S. es un servidor confiado por ambas partes. En la comunicación:

  • A{displaystyle A} y B{displaystyle B} son identidades de Alice y Bob respectivamente
  • KAS{displaystyle {K_{AS}} es una clave simétrica conocida sólo A{displaystyle A} y S{displaystyle S.
  • KBS{displaystyle {K_{BS}} es una clave simétrica conocida sólo B{displaystyle B} y S{displaystyle S.
  • NA{displaystyle N_{A} y NB{displaystyle N_{B} no se generan por A{displaystyle A} y B{displaystyle B} respectivamente
  • KAB{displaystyle {K_{AB}} es una clave simétrica y generada, que será la clave del período de sesiones entre A{displaystyle A} y B{displaystyle B}

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

A→ → S:A,B,NA{displaystyle Arightarrow S:left.A,B,N_{A}right.}

Alice envía un mensaje al servidor identificándose con Bob, diciéndole al servidor que quiere comunicarse con Bob.

S→ → A:{}NA,KAB,B,{}KAB,A}KBS}KAS{displaystyle Srightarrow A:{N_{A},K_{AB},B,{K_{K_ {K_{BS}}}_{K_{AS}}

El servidor genera KAB{displaystyle {K_{AB}} y envía a Alice una copia encriptada KBS{displaystyle {K_{BS}} para Alice para enviar a Bob y también una copia para Alice. Desde Alice puede estar pidiendo claves para varias personas diferentes, la noción asegura a Alice que el mensaje es fresco y que el servidor está respondiendo a ese mensaje particular y la inclusión del nombre de Bob dice Alice con quien va a compartir esta llave.

A→ → B:{}KAB,A}KBS{displaystyle Arightarrow B:{K_{AB}A}_{K_{BS}

Alice envía la clave a Bob que puede descifrarla con la llave que comparte con el servidor, autenticando así los datos.

B→ → A:{}NB}KAB{displaystyle Brightarrow A:{N_{B}}_ {K_{AB}}

Bob envía Alice un nonce encriptado KAB{displaystyle {K_{AB}} para demostrar que tiene la llave.

A→ → B:{}NB− − 1}KAB{displaystyle Una derecha B.

Alice realiza una operación sencilla en el nonce, lo vuelve a encriptar y lo envía de nuevo verificando que todavía está viva y que tiene la llave.

Ataques al protocolo

El protocolo es vulnerable a un ataque de repetición (como lo identifica Denning y Sacco). Si un atacante utiliza un valor más viejo y comprometido para KAB{displaystyle K_{AB}, entonces puede reproducir el mensaje {}KAB,A}KBS{displaystyle ¿Qué? a Bob, quien lo aceptará, siendo incapaz de decir que la llave no es fresca.

Arreglando el ataque

Esta falla se soluciona 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. Al inicio del protocolo:

A→ → B:A{displaystyle Arightarrow B:A}
Alice envía a Bob una petición.
B→ → A:{}A,NB.}KBS{displaystyle Brightarrow A:{A,mathbf {N_{B} {K_{BS}}}
Bob responde con un nonce encriptado bajo su llave con el Servidor.
A→ → S:A,B,NA,{}A,NB.}KBS{displaystyle Arightarrow S:left.A,B,N_{A},{A,mathbf {N_{B} Bien.
Alice envía un mensaje al servidor identificándose con Bob, diciéndole al servidor que quiere comunicarse con Bob.
S→ → A:{}NA,KAB,B,{}KAB,A,NB.}KBS}KAS{displaystyle Srightarrow A:{N_{A},K_{AB},B,{K_{AB}A,mathbf {N_{B} {fnK}}} {K_{AS}}
Observe la inclusión del nonce.

El protocolo continúa como se describe a través de los tres pasos finales que se describen en el protocolo original anterior. Note que NB.{displaystyle N_{B} es un nonce diferente de NB{displaystyle N_{B}. La inclusión de este nuevo nonce impide la repetición de una versión comprometida de {}KAB,A}KBS{displaystyle ¿Qué? ya que ese mensaje tendría que ser de la forma {}KAB,A,NB.}KBS{displaystyle A, Mathbf {N_{B} {K_{BS}}} que el atacante no puede forjar ya que no tiene KBS{displaystyle K_{BS}.

El protocolo de clave pública

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

Aquí, Alice. ()A){displaystyle (A)} y Bob ()B){displaystyle (B)} utilizar un servidor de confianza ()S){displaystyle (S)} para distribuir llaves públicas bajo petición. Estas llaves son:

  • KPA{displaystyle K_{PA} y KSA{displaystyle K_{SA}, respectivamente, las mitades públicas y privadas de un llavero de cifrado perteneciente a A{displaystyle A} ()S{displaystyle S. significa "la clave secreta" aquí)
  • KPB{displaystyle K_{PB} y KSB{displaystyle K_{SB}, similar belonging to B{displaystyle B}
  • KPS{displaystyle K_{PS} y KSS{displaystyle K_{SS}, similar belonging to S{displaystyle S.. (Nota que este teclado se utilizará para las firmas digitales, es decir, KSS{displaystyle K_{SS} utilizado para firmar un mensaje y KPS{displaystyle K_{PS} utilizado para la verificación. KPS{displaystyle K_{PS} debe ser conocido A{displaystyle A} y B{displaystyle B} antes de que comience el protocolo.)

El protocolo se ejecuta de la siguiente manera:

A→ → S:A,B{displaystyle Arightarrow S:left.A,Bright.}

A{displaystyle A} Solicitudes B{displaystyle B}'s llaves públicas de S{displaystyle S.

S→ → A:{}KPB,B}KSS{displaystyle Srightarrow A: {K_{PB},B}_{K_{SS}}

S{displaystyle S. responde con clave pública KPB{displaystyle K_{PB} junto B{displaystyle B}'s identidad, firmada por el servidor para fines de autenticación.

A→ → B:{}NA,A}KPB{displaystyle Arightarrow B:{N_{A}A}_{K_{PB}

A{displaystyle A} elige un azar NA{displaystyle N_{A} y lo envía a B{displaystyle B}.

B→ → S:B,A{displaystyle Brightarrow S:left.B,Aright.}

B{displaystyle B} Ahora lo sabe. Un quiere comunicarse, así que B{displaystyle B} Solicitudes A{displaystyle A}Es clave pública.

S→ → B:{}KPA,A}KSS{displaystyle Srightarrow B: {K_{PA},A}_{K_{SS}}

El servidor responde.

B→ → A:{}NA,NB}KPA{displaystyle Brightarrow A:{N_{A},N_{B}}_{K_{K_}

B{displaystyle B} elige un azar NB{displaystyle N_{B}, y lo envía a A{displaystyle A} junto con NA{displaystyle N_{A} para demostrar la capacidad de descifrar con KSB{displaystyle K_{SB}.

A→ → B:{}NB}KPB{displaystyle Una derecha B.

A{displaystyle A} confirmaciones NB{displaystyle N_{B} a B{displaystyle B}, para probar la capacidad de descifrar con KSA{displaystyle K_{SA}

Al final del protocolo, A{displaystyle A} y B{displaystyle B} conocer las identidades del otro, y conocer ambos NA{displaystyle N_{A} y NB{displaystyle N_{B}. Estos noces no son conocidos por los audífonos.

Un ataque al protocolo

Este protocolo es vulnerable a un ataque humano en medio. Si un impostor I{displaystyle Yo... puede persuadir A{displaystyle A} para iniciar una sesión con ellos, pueden transmitir los mensajes B{displaystyle B} y convencer B{displaystyle B} que se está comunicando con A{displaystyle A}.

Ignorar el tráfico hacia y desde S{displaystyle S., que no cambia, el ataque corre como sigue:

A→ → I:{}NA,A}KPI{displaystyle Arightarrow I: '{N_{A},A}_{K_{PI}

A{displaystyle A} envía NA{displaystyle N_{A} a I{displaystyle Yo..., que descifra el mensaje con KSI{displaystyle K_{SI}

I→ → B:{}NA,A}KPB{displaystyle I'rightarrow B:{N_{A},A}_{K_{PB}

I{displaystyle Yo... transmite el mensaje a B{displaystyle B}, fingiendo que A{displaystyle A} se está comunicando

B→ → I:{}NA,NB}KPA{displaystyle Brightarrow I:{N_{A},N_{B}_{K_}}

B{displaystyle B} envía NB{displaystyle N_{B}

I→ → A:{}NA,NB}KPA{displaystyle I'rightarrow A:{N_{A},N_{B}}_{K_{K_}

I{displaystyle Yo... lo transmite a A{displaystyle A}

A→ → I:{}NB}KPI{displaystyle Un derecho:

A{displaystyle A} Decrypts NB{displaystyle NB. y lo confirma I{displaystyle Yo..., que lo aprende

I→ → B:{}NB}KPB{displaystyle I'rightarrow B.

I{displaystyle Yo... re-encriptaciones NB{displaystyle N_{B}, y convence B{displaystyle B} que está descifrada

Al final del ataque, B{displaystyle B} falsamente cree que A{displaystyle A} se comunica con él, y eso NA{displaystyle N_{A} y NB{displaystyle N_{B} son conocidos sólo A{displaystyle A} y B{displaystyle B}.

El siguiente ejemplo ilustra el ataque. Alice (A) desea ponerse en contacto con su banco (B). Suponemos que un impostor (I) convence exitosamente a A de que es el banco. Como consecuencia, A utiliza la clave pública de I en lugar de utilizar la clave pública de B para cifrar los mensajes que pretende enviar a su banco. Por lo tanto, A le envía su nonce cifrado con la clave pública de I. I descifra el mensaje usando su clave privada y contacta a B enviándole 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 cifra el mensaje con la clave pública de A. Como I no posee la clave privada de A, tienen que transmitir 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. I descifra el mensaje usando su clave privada y ahora está en posesión de los nonce A y B. Por lo tanto, ahora pueden hacerse pasar por el banco. y el cliente respectivamente.

Arreglando el ataque del intermediario

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

B→ → A:{}NA,NB}KPA{displaystyle Brightarrow A:{N_{A},N_{B}}_{K_{K_}

con la versión fija:

B→ → A:{}NA,NB,B}KPA{displaystyle Brightarrow A:{N_{A},N_{B},B}_{K_{K_}

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.

Contenido relacionado

Extranet

Una extranet es una red privada controlada que permite el acceso a socios, vendedores y proveedores o un conjunto autorizado de clientes, normalmente a un...

Fabián Pascual

Fabian Pascal es un consultor rumano-estadounidense de grandes proveedores de software como IBM, Oracle Corporation y Borland, pero es más conocido como...

Máquina GNU

GNU Mach es una implementación del microkernel Mach. Es el microkernel predeterminado en GNU Hurd. GNU Mach se ejecuta en máquinas IA-32. GNU Mach es...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save