Protocolo de Needham-Schroeder

Protocolo de Needham-Schroeder

Protocolo de Needham-Schroeder

El protocolo de Needham-Schroeder se refiere a uno de los dos protocolos de comunicación para uso sobre una red insegura, ambos propuestos por Roger Needham y Michael Schroeder en un artículo en 1978. Ellos son:

  • El protocolo de clave simétrica de Needham-Schroeder, basado en un algoritmo de cifrado simétrico. Forma la base del protocolo Kerberos. El objetivo de este protocolo es establecer una clave de sesión entre dos partes en una red, normalmente para proteger la comunicación subsequente.
  • El protocolo de clave pública de Needham-Schroeder, basado en un criptografía asimétrica. Su objetivo es brindar autenticación mutua entre dos partes que se comunican a través de una red, pero en su forma propuesta es inseguro.

Contenido

El protocolo simétrico

En este caso, Alice (A) inicia una comunicación con Bob (B). De esta manera,

  • S es un servidor confiado por ambas partes
  • KAS es una clave simétrica que conocen sólo A y S
  • KBS es una clave simétrica que conocen sólo B y S
  • NA y NB son nonces

El protocolo puede especificarse mediante la notación de protocolos de seguridad de la siguiente manera:

A \rightarrow S: A,B,N_A

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

S \rightarrow A: \{N_A, K_{AB}, B, \{K_{AB}, A\}_{K_{BS}}\}_{K_{AS}}

El servidor genera la clave KAB y se la envía a Alice, cifrada usando KBS, para que Alice se la envíe a Bob, y una copia de la clave para ella. Dado que Alice puede estar solicitando claves para usar con distintas personas, el nonce le garantiza a Alice que el mensaje es reciente y que el servidor está respondiendo a un determinado mensaje y la inclusión de Bob le dice a Alice con quién debe compartir esta clave.

A \rightarrow B: \{K_{AB}, A\}_{K_{BS}}

Alice le reenvía la clave a Bob, quien la puede descifrar con la clave que él comparte con el servidor, autenticando así esta información.

B \rightarrow A: \{N_B\}_{K_{AB}}

Bob le envía a Alice un nonce cifrado usando KAB para demostrarle que él obtuvo la clave.

A \rightarrow B: \{N_B-1\}_{K_{AB}}

Alice realiza una operación sencilla sobre el nonce, lo vuelve a cifrar y se lo envía de vuelta a Bob, para que él verifique que ella existe y que obtuvo la clave también.

Este protocolo es vulnerable a un ataque de replay. Si un atacante almacena los mensajes de este protocolo y luego descubre el valor KAB que fue usado, puede volver a enviarle el mensaje \{K_{AB}, A\}_{K_{BS}} a Bob, quien lo aceptará y no será capaz de decir si la clave es reciente o no (a no ser que lleve un registro de todas las claves que él usó). Este fallo se resuelve en el protocolo Kerberos mediante la inclusión de un timestamp.

El protocolo de clave pública

Este protocolo asume el uso de un algoritmo de cifrado de clave pública.

En este caso, Alice (A) y Bob (B) interactúan junto con un servidor de confianza (S) para la distribución de claves públicas a pedido. Estas claves son:

  • KPA y KSA, las mitades pública y privada respectivamente de un par de claves de cifrado de A
  • KPB y KSB, idem para B
  • KPS y KSS, idem para S. (Nótese que en este caso KSS se usa para cifrar y KPS para descifrar).

El protocolo se desarrolla de la siguiente manera:

A \rightarrow S: A, B

A le solicita a S la clave pública de B.

S \rightarrow A: \{K_{PB}, B\}_{K_{SS}}

S responde con la identidad de B junto con KPB para constatar.

A \rightarrow B: \{N_A, A\}_{K_{PB}}

A inventa NA y se lo envía a B.

B \rightarrow S: B, A

B solicita la clave pública de A.

S \rightarrow B: \{K_{PA}, A\}_{K_{SS}}

El servidor responde.

B \rightarrow A: \{N_A, N_B\}_{K_{PA}}

B inventa NB y se lo envía a A junto con NA para demostrar su capacidad de poder descifrar con KSB.

A \rightarrow B: \{N_B\}_{K_{PB}}

A le confirma NB a B para demostrar su capacidad de poder descifrar con KSA.

Al final del protocolo, A y B conocen la identidad del otro, NA y NB. Estos nonces son desconocidos para oyentes furtivos.

Ataques al protocolo

Desafortunadamente, este protocolo es vulnerable al ataque Man-in-the-middle. Si un impostor I es capaz de persuadir a A para que inicie una sesión con él, éste puede reenviar los mensajes a B y hacerle creer a B de que se está comunicando con A.

Ignorando el tráfico desde y hacia S, que no varía, el ataque se desarrolla de la siguiente manera:


A \rightarrow I: \{N_A, A\}_{K_{PI}}

A le envía NA a I, quien descifra el mensaje con KSI.

I \rightarrow B: \{N_A, A\}_{K_{PB}}

I le reenvía el mensaje a B, haciendo de cuenta que es A quien se está intentando comunicar.

B \rightarrow I: \{N_A, N_B\}_{K_{PA}}

B le envía NB.

I \rightarrow A: \{N_A, N_B\}_{K_{PA}}

I se lo reenvía a A.

A \rightarrow I: \{N_B\}_{K_{PI}}

A descifra NB y se lo confirma a I, quien pasa a conocerlo.

I \rightarrow B: \{N_B\}_{K_{PB}}

I vuelve a cifrar NB, y convence a B de que él lo ha descifrado.

Al final del ataque, B cree erróneamente de que A se está comunicando con él y que NA y NB son conocidos únicamente por A y B.

El ataque fue descrito por primera vez en un artículo en 1995 por Gavin Lowe. El artículo describe también una versión fija del esquema, al cual se lo llama el protocolo de Needham-Schroeder-Lowe.

Véase también

  • Kerberos
  • Protocolo de Otway-Rees
  • Protocolo Wide Mouth Frog

Enlaces externos

Referencias

  • Roger Needham y Michael Schroeder. Usando cifrado para autenticación en redes de computadora grandes. Communications of the ACM, 21(12), diciembre de 1978.
  • Gavin Lowe. Un ataque al protocolo de autenticación de clave pública de Needham-Schroeder. Information Processing Letters, 56(3):131--136, noviembre de 1995.

Wikimedia foundation. 2010.

Игры ⚽ Поможем написать реферат

Mira otros diccionarios:

  • Kerberos — es un protocolo de autenticación de redes de ordenador que permite a dos computadores en una red insegura demostrar su identidad mutuamente de manera segura. Sus diseñadores se concentraron primeramente en un modelo de cliente servidor, y brinda… …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”