Protocolos Básicos
Autenticação
Protocolos Básicos
Esquemas de autenticação
São métodos através dos quais alguém pode provar sua
identidade, sem revelar conhecimentos importantes e que
possam ser usados de forma maliciosa no futuro.
Protocolos Básicos
Autenticação usando Hash
A → S : senha
Alice envia sua senha para um servidor S.
S : Hash (senha) S calcula o Hash da senha recebida.
S : Compara com valor Hash da senha, previamente armazenado.
A lista de hash de senhas é sem utilidade, porque uma função Hash
não pode ter inversa para recuperar senhas.
Ataque do Dicionário e Salt
• Um arquivo de senhas cifrado com uma função Hash é
ainda vulnerável.
• Em seu tempo livre, Mallory gera 1000.000 de senhas
mais comuns. Ele opera sobre todas 1000.000 destas
com uma função Hash e armazena os hashes
resultantes.
• Se cada senha tem 8 bytes, o arquivo resultante será
não mais do que 8 Megabytes.
Ataque do Dicionário e Salt
• Mas, se Mallory furta, em um host, um arquivo de
senhas criptografadas (por Hash), ele compara esse
arquivo com seu arquivo de senhas possíveis
criptografadas, e vê o que corresponde.
• Este é o ataque do dicionário que pode ser realizado.
• Um salt é uma string aleatória, que dificulta este ataque.
• Salts são concatenados com senhas, antes de serem
operados com uma função Hash.
Ataque do Dicionário e Salt
• Então, ambos, o valor salt e o resultado da função Hash
são armazenados numa base de dados no host.
• Se o número de valores salt é bastante grande, isto
praticamente elimina o ataque do dicionário contra
senhas usadas comumente, porque Mallory tem de
gerar um hash para cada valor salt possivel.
Problemas de segurança
• Mesmo com salt, o protocolo de autenticação usando
hash tem problema de segurança: quando Alice envia
sua senha à S, qualquer um que tenha acesso ao
caminho dos dados de Alice, poderá ler sua senha.
• A senha não pode ser lida antes de S calcular o hash
dessa.
• Criptografia de chave pública pode resolver este
problema.
Protocolos Básicos
Autenticação com chave compartilhada “K” entre A e B
A → B : NA
B → A : NB || V = EK ( NA || NB || IDB )
A : DK ( V ) == NA || NB || IDB
A → B : Q = EK ( NB || IDA )
B : DK ( Q ) == NB || IDA
Autenticação com chave compartilhada “K” entre A e B
• Criptografia simétrica provê alguma autenticação.
• Quando Bob recebe uma mensagem de Alice,
criptografada com a chave compartilhada, Bob sabe que
a mensagem veio de Alice.
Autenticação com chave compartilhada “K” entre A e B
• É assumido que ninguém mais conhece tal chave K.
• Contudo, se existir uma terceira parte (Trent)
conhecendo K, Bob não tem nenhum modo de
convencer Trent. Bob não pode enviar a mensagem a
Trent e convencê-lo de que veio de Alice.
• Trent pode estar convencido de que a mensagem veio
de Alice ou de Bob, e não tem nenhum modo para saber
que veio de qual deles.
Autenticação com criptografa de chave pública
(1) S  A : N N é uma string aleatória
(2) A  S : EKRA(N) || IDA
(3) S procura a chave pública de Alice, KUA ,
correspondente à chave privada KRA , em sua base
de dados de chaves públicas.
(4) S decripta com essa chave pública DKUA(N) obtendo N.
(5) Se N corresponde ao que S enviou à A (Alice) em (1),
S permitirá que Alice acesse ao sistema.
A : N == DKUA ( EKRA ( N ) ) ?
Se ninguém mais tem acesso à chave privada de Alice,
ninguém poderá se passar por Alice.
Protocolos Básicos
Autenticação e Troca de Chave
Protocolos Básicos
Autenticação e Troca de Chave
Estes protocolos combinam autenticação e troca de
chave para resolver um problema geral: Alice e Bob
estão nas extremidades opostas de uma rede e
desejam se comunicar com segurança.
Como pode Alice e Bob trocarem uma chave secreta e
ter certeza que ele e ela estão falando entre eles, e
não com o atacante Mallory ?
A maioria dos protocolos assumem que Trent
compartilha uma diferente chave secreta com cada
participante, e que todas essas chaves estão em
algum lugar antes do protocolo iniciar.
Protocolos Básicos
Autenticação arbitrada “T” : Wide-Mouth-Frog Protocol
A → T : IDA || EKA ( TA || KS || IDB )
T → B : EKB ( TB || KS || IDA )
T é um servidor confiável.
KA e KB são chaves compartilhadas com T que só
servem para distribuição e não para encriptar mensagens.
TA e TB são rótulos de tempo
Protocolos Básicos
Yahalom
A → B : IDA || NA
B → T : IDB || EKB ( IDA,NA,NB )
T → A : EKA ( IDB,KS,NA,NB) || EKB ( IDA,KS )
A → B : EKB ( IDA,KS ) || EKS ( NB )
B : DKB ( EKB ( IDA,KS ) )
DKS ( EKS (NB) )
A e B ficam convencidos que estão falando entre eles e não com
uma terceira parte, o atacante Mallory.
Protocolos Básicos
Needham-Schroeder
A → T : IDA || IDB || NA
T → A : [ EKA ( NA || IDB || KS ) || EKB ( KS || IDA ) ] (2)
A → B : EKB ( KS,IDA )
B → A : EKS ( NB )
A → B : EKS ( NB -1 )
(5)
Needham-Schroeder Protocol
• Tudo em torno de NA , NB , NB-1 é evitar ataques de
repetição.
• Nestes ataques, Mallory pode registrar mensagens já
transmitidas e então usá-las mais tarde em uma
tentativa de subverter o protocolo.
Needham-Schroeder Protocol
• A presença de NA em (2) assegura a Alice que a
mensagem de Trent é legítima e não uma repetição de
uma resposta de uma execução prévia do protocolo.
• Quando Alice decifra NB e envia (NB – 1) em (5), Bob é
garantido que as mensagens de Alice não são
repetições de execuções prévias do protocolo.
Protocolos Básicos
Kerberos
A → T : IDA, IDB
T → A : EKA ( t || L || KS || IDB ) || EKB ( t || L || KS || IDA )
A → B : EKS ( IDA, t ) || EKB ( t || L || KS || IDA )
B → A : EKS ( t+1 )
Kerberos
• Variante de Needham-Schroeder. Alice e Bob
compartilham chaves com Trent (KDC)
• Alice deseja gerar uma chave de sessão para
conversação com Bob.
• O protocolo funciona, mas assume que todos os clocks
estão sincronizados com o clock de Trent (KDC).
• Na prática, o efeito é obtido por sincronizar cloks dentro
de poucos minutos de um servidor de tempo seguro e
detectar repetições dentro de um intervalo de tempo.
Download

Protocolos Básicos - Troca de Chave e Autenticação