Protocolo de Needham–Schroeder

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

O protocolo de Needham-Schroeder se refere a um dos dois protocolos de comunicação para uso sobre uma rede insegura, ambos propostos por Roger Needham e Michael Schroeder[1] em um artigo em 1978. Eles são:

  • O protocolo de chave simétrica de Needham-Schroeder é baseado em um algoritmo de chave simétrica. Forma a base do protocolo Kerberos. O objetivo deste protocolo é estabelecer uma chave de seção entre duas partes em uma rede, normalmente para proteger uma comunicação futura.
  • O protocolo de chave pública de Needham-Schroeder é baseado em uma criptografia de chave pública. Seu objetivo é fornecer uma autenticação mútua entre duas partes que se comunicam através de uma rede, mas na forma proposta é inseguro.

O protocolo simétrico[editar | editar código-fonte]

Neste caso, Alice(A) inicia uma comunicação com Bob(B). Desta maneira,

  • A e B são identificados como Alice e Bob, respectivamente
  • S é um servidor confiado por ambas partes
  • KAS é uma chave simétrica que conhece apenas A e S
  • KBS é uma chave simétrica que conhece apenas B e S
  • NA e NB são nonces

O protocolo pode ser especificado usando a notação de protocolos de segurança como segue:

A \rightarrow S: A,B,N_A

Alice envia uma mensagem ao servidor intentificando a si mesma e a Bob, dizendo ao servidor que quer se comunicar com Bob.

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

O servidor gera a chave {K_{AB}} e a envia a Alice, criptografada usando {K_{BS}}, para que Alice a envie a Bob e uma cópia da chave para ela. Dado que Alice pode estar solicitando chaves para usar com pessoa distintas, o nonce dá garantia a Alice que a mensagem é recente e que o servidor está respondendo a uma determinada mensagem e a inclusão de Bob diz a Alice com quem deve compartilhar esta chave.

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

Alice reenvia a chave a Bob, que pode descriptografá-la com a chave que ele compartilha com o servidor, autenticando assim esta informação.

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

Bob envia a Alice um nonce criptografado usando {K_{AB}} para demonstrar que ele obteve a chave.

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

Alice realiza uma operação simples sobre o nonce, volta a criptografá-lo e o envia de volta a Bob, para que ele verifique que ela existe e que obteve a chave também.

Este protocolo é vulnerável a um ataque de replay (também identificado por Denning e Sacco[2] ). Se um atacante armazena as mensagens deste protocolo e logo descobre o valor KAB que foi usado, pode voltar a enviar a mensagem \{K_{AB}, A\}_{K_{BS}} a Bob, que a aceitará e não será capaz de dizer se a chave é recente ou não (a não ser que mantenha um registro de todas as chaves que ele usou). Esse bug foi corrigido no protocolo Kerberos, com a inclusão de um timestamp.

Referências[editar | editar código-fonte]

  1. (December 1978) "Using encryption for authentication in large networks of computers.". Communications of the ACM 21 (12): 993–999. DOI:10.1145/359657.359659.
  2. Denning, Dorothy E. (1981). "Timestamps in key distributed protocols". Communication of the ACM 24 (8): 533–535. DOI:10.1145/358722.358740.

Links Externos[editar | editar código-fonte]