Protocolo de Needham–Schroeder

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 objectivo deste protocolo é estabelecer uma chave de sessã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 objectivo é 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

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:

 

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

 

O servidor gera a chave   e a envia a Alice, criptografada usando  , 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.

 

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

 

Bob envia a Alice um nonce criptografado usando   para demonstrar que ele obteve a chave.

 

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   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

  1. Needham, Roger; Schroeder, Michael (dezembro de 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.; Sacco, Giovanni Maria (1981). «Timestamps in key distributed protocols». Communication of the ACM. 24 (8): 533–535. doi:10.1145/358722.358740 

Ligações externas editar