Uma técnica informal de prevenç ˜ao de ataques

Transcrição

Uma técnica informal de prevenç ˜ao de ataques
Uma técnica informal de prevenção de ataques baseada em
estruturas de mensagens
Trabalho final de MC933
Fabio R. Piva1
1
Instituto de Computação – Universidade Estadual de Campinas (UNICAMP)
Caixa Postal 6176 – 13084-971 – Campinas – SP – Brasil
[email protected]
Abstract. Neste trabalho analisamos diversos ataques clássicos a protocolos
criptográficos, sob o ponto de vista de estruturas patológicas de mensagens.
Identificamos quatro estruturas que potencialmente introduzem falhas de segurança
a protocolos: Isomorfismo de cifras, desafios-resposta NX –{NX }K , mensagens
de estabelecimento de chaves sem garantias de freshness e componentes nãoverificáveis. Propusemos uma técnica de análise informal, de simples aplicação
e resultados rápidos, que pode ser uma ferramenta útil para o projeto de protocolos corretos.
1. Introdução
Com a expansão da Internet e o advento do comércio eletrônico, tornou-se necessário
o desenvolvimento de técnicas para garantir a possibilidade de enviar e receber informações
virtuais de maneira segura. Os protocolos criptográficos têm por objetivo satisfazer estas
necessidades, mas para que estas ferramentas executem corretamente seu papel é preciso garantir alguns parâmetros de segurança. É a esta tarefa que se destina a verificação
formal de protocolos.
As várias metodologias existentes podem ser classificadas em duas abordagens
principais: A verificação por prova de teoremas [1, 2, 3, 4] e a verificação por modelos
[5, 6, 7, 8]. Na primeira, o provador modela o protocolo de acordo com a sintaxe oferecida
pela metodologia e tenta mapear as propriedades daquele protocolo na forma de teoremas
a serem demonstrados. Na última, ele cria uma espécie de máquina de estados que procura
cobrir todos os comportamentos possı́veis do protocolo. Neste caso, é comum a utilização
de uma ferramenta automática em pelo menos parte do processo.
Embora os métodos formais de verificação sejam fundamentais tanto no desenvolvimento quanto na validação de protocolos criptográficos, a publicação de novos protocolos desenvolvidos sem o auxı́lio de ferramentas formais é prática comum. Isso pode
ser parcialmente justificado pela inexistência de uma ferramenta unificada e reconhecida
globalmente por toda a comunidade cientı́fica – o que acaba desencorajando a produção
de demonstrações de corretude utilizando uma ou outra metodologia. Mas o principal responsável pelo desenvolvimento de protocolos não-verificados talvez seja a alta complexidade oferecida pela maioria dos métodos formais. Enquanto a verificação por modelos
depende de numerosas explosões de estados (que nem sempre refletem todos os possı́veis
cenários do protocolo), as técnicas baseadas em provas de teoremas geralmente exigem
que ao menos parte da prova seja conduzida manualmente, exigindo muitas vezes o conhecimento de uma linguagem de especificação própria.
2
Piva
Assim, a maioria dos métodos formais disponı́veis não permite verificações rápidas
ou fáceis de conduzir, o que dificulta sua aplicação durante o processo de desenvolvimento de protocolos. Por este motivo, diversos protocolos acabam reincidindo em falhas
clássicas de segurança, e muitas vezes estão sujeitos a ataques que foram efetivos em protocolos antigos. Este trabalho propõe uma técnica informal de detecção de falhas clássicas
baseada em estruturas de mensagens, que pode auxiliar na produção de protocolos criptográficos seguros. Embora claramente incompleta, a técnica permite que o engenheiro
de protocolos atente para estruturas potencialmente patológicas – que poderiam ou não
converter-se em falhas – durante o projeto (i.e., antes de protocolo estar pronto). Além
disso, novas estruturas-problema podem ser acrescentadas dinamicamente, o que permite
que a técnica torne-se mais robusta.
Este documento está organizado da seguinte forma: A seção 2 apresenta uma
breve descrição das taxonomias de ataques estudadas em [9, 10]. A seção 3 apresenta
a notação básica de protocolos criptográficos, utilizada nas seções seguintes. A seção 4
introduz o estudo de estrutura de mensagens como ferramenta de detecção de ataques. Na
seção 5 discutimos os resultados obtidos através do estudo. O apêndice A apresenta uma
demonstração do protocolo Woo-Lam Π publicada em [11], que foi o ponto de partida
para este trabalho.
2. Taxonomias de ataques
Um ataque consiste em uma seqüência de passos que podem ser tomados por um
adversário para minar os objetivos de segurança do protocolo. Todo ataque explora uma
ou mais falhas de segurança, o que sugere que ataques possam ser bastante diferentes
entre si. Embora isto seja verdade, o estudo de ataques mostra que existem tendências e
padrões suficientes que justificam as diversas taxonomias publicadas [9, 10]. Nesta seção
apresentaremos algumas destas taxonomias, que serviram como base para o nosso estudo.
2.1. Ataques de replay
Em [9], Syverson analisa e classifica uma ampla gama de ataques que inclui
grande parte dos ataques a protocolos clássicos. Nestes ataques, comumente denominados ataques de replay, o adversário tem poderes de observação sobre os canais de
comunicação, podendo capturar mensagens trocadas entre participantes honestos durante
execuções regulares do protocolo atacado. A partir das mensagens observadas, o atacante
constrói mensagens e as envia aos participantes, a fim de passar-se por outro participante (ataque de man in the middle, [12]), forçar que um participante honesto forneça
informação sensı́vel (ataque de oráculo, [12]) ou simplesmente inviabilizar o estabelecimento de uma chave de sessão para comunicação posterior entre dois participantes.
Syverson estabelece sua taxonomia analisando dois aspectos fundamentais: Origem
de mensagens (externa ou interna ao protocolo atacado), e destino de mensagens (que estabelece uma relação entre o participante que deveria receber a informação enviada pelo
atacante, e o participante para o qual tal informação é transmitida durante o ataque).
Em sua análise quanto à origem das mensagens, Syverson conclui que as informações
utilizadas pelo adversário podem provir de execuções externas (Run external attacks) ou
de mensagens previamente enviadas durante a execução atual, sobre a qual o ataque está
sendo realizado (Run internal attacks). No primeiro caso, as execuções externas podem
Uma técnica informal de prevenção de ataques baseada em estruturas de mensagens
3
tanto estar ocorrendo paralelamente à execução atacada (intercalações), como podem ser
execuções antigas (replays clássicos) cujas mensagens foram observadas e armazenadas
pelo adversário.
Quando o adversário intercepta mensagens do protocolo – sejam estas mensagens
externas ou internas à execução atual – não podemos garantir que estas atingirão seu
destino original, ou quando isto ocorrerá. Isso justifica o segundo aspecto analisado
por Syverson em seu trabalho: o destino das mensagens. Existem três possibilidades,
classificadas pelo autor em duas categorias: As informações podem sofrer deflexões –
quando são desviadas de seu destino original – ou replays diretos – quando são transmitidas pelo adversário ao destinatário original, porém em algum ponto no futuro, após
sofrerem atraso. No primeiro caso, as deflexões podem ser para o próprio remetente
(reflexões) ou para participantes diferentes do remetente e destinatário, que incluem o
próprio adversário.
A figura 1 mostra a taxonomia completa de Syverson.
1. Ataques de execução externa (Run external attacks): replay de mensagens externas à atual execução do protocolo
(a) Intercalações (Interleavings): requerem execuções contemporâneas do
protocolo
i. Deflexões (Deflections): mensagem é direcionada a um participante diferente do intencionado
A. Reflexões (Reflections): mensagem é enviada de volta ao
rementente
B. Deflexões para uma terceira parte
ii. Replays diretos (Straight replays): participante intencionado recebe a mensagem, mas ela é atrasada
(b) Replays clássicos: execuções não precisam ser contemporâneas
i. Deflexões (Deflections): mensagem é direcionada a um participante diferente do intencionado
A. Reflexões (Reflections): mensagem é enviada de volta ao
rementente
B. Deflexões para uma terceira parte
ii. Replays diretos (Straight replays): participante intencionado recebe a mensagem, mas ela é atrasada
2. Ataques de execução interna (Run internal attacks): replay de mensagens internas
à atual execução do protocolo
(a) Deflexões (Deflections): mensagem é direcionada a um participante diferente do intencionado
i. Reflexões (Reflections): mensagem é enviada de volta ao rementente
ii. Deflexões para uma terceira parte
(b) Replays diretos (Straight replays): participante intencionado recebe a
mensagem, mas ela é atrasada
Figura 1. Taxonomia completa de Syverson para ataques de replay
4
Piva
2.2. Taxonomia de falhas
Em [10], os autores fazem uma análise inversa à de Syverson, categorizando falhas
de segurança ao invés dos ataques que as exploram. Além disso, Gritzalis et. al. não se
limitaram apenas a ataques de replay; em seu trabalho os autores buscam analisar todo o
processo de engenharia de protocolos de segurança, desde seu projeto até sua utilização
pelo usuário final, passando pela implementação e escolha de criptossistemas. A figura 2
mostra a taxonomia proposta pelos autores em [10].
1.
2.
3.
4.
5.
6.
Falhas elementares de protocolos
Falhas de adivinhação de senhas/chaves
Falhas de mensagens
Falhas de sessões paralelas
Falhas internas aos protocolos
Falhas de criptossistema
Figura 2. Taxonomia de Gritzalis et. al. para falhas de segurança
A taxonomia proposta, particularmente o item 3 (Falhas de mensagens), tem como
base a taxonomia proposta em [9].
3. Notação para as seções subseqüentes
Nesta seção descrevemos a notação utilizada nas seções subseqüentes.
•
•
•
•
•
A, B: Participantes honestos do protocolo;
I: Adversário;
IX : Adversário mascarando-se como participante X;
X → Y : G: Transmissão da mensagem G do participante X ao participante Y ;
{G}K : Texto cifrado a partir da aplicação de um esquema genérico de ciframento
sobre a mensagem G, utilizando a chave K;
• NX , MX : Números gerados randomicamente pelo participante X para utilização
como desafios (nonces);
• TX : Estampa de tempo (timestamp) de X.
4. Uma técnica informal para prevenção de ataques de replay
Embora o trabalho desenvolvido em [10] levante importantes questões quanto à
origem de falhas de segurança, é sabido que a maioria dos principais ataques a protocolos criptográficos baseia-se em falhas de projeto, como [13, 9, 14, 15]. Mais ainda,
tais ataques são conduzidos pelo adversário, ao menos em parte, através do envio de
informação previamente capturada. Isso justifica a preocupação de Syverson e outros
estudiosos em estabelecer os limites dos ataques de replay.
Na seção 2.1 apresentamos a taxonomia de ataques de Syverson [9], orientada por
aspectos de origem e destino de mensagens. Nesta seção analisaremos de que forma a
estrutura das mensagens envolvidas no protocolo pode caracterizar ataques de replay1 .
1
Por ataques de replay referimo-nos a qualquer ataque que baseie-se em transmissão de informação previamente
capturada. Como exemplo, podemos citar ataques de oráculo (oracle attacks), ataques de homem no meio (man in the
middle), ataques de tipo (typing attacks), ataques de protocolo escolhido (chosen protocol attacks), entre outros.
Uma técnica informal de prevenção de ataques baseada em estruturas de mensagens
5
4.1. Mensagens-problema
Um estudo prévio sobre métodos formais de prova de teoremas [11] forneceunos os primeiros indı́cios de que algumas estruturas de mensagens são caracterı́sticas em
diversos protocolos atacados na literatura. Neste trabalho reproduzimos a falha apontada
por Syverson [9] sobre a versão proposta em [1] por Burrows et. al. para o protocolo
Yahalom, utilizando o método de espaço de fitas [2]. O ataque será descrito na seção
4.2 e tem origem no isomorfismo entre duas componentes de uma das mensagens. Outro
exemplo é a falha que viabiliza o ataque [13] ao protocolo de autenticação de Woo-Lam
Π proposto em [16], também reproduzido em [11] através do método de espaço de fitas.
A verificação deste protocolo através do método pode ser estudada no apêndice A; a
aplicação do método deixa clara a influência destrutiva de determinada estrutura sobre os
objetivos do protocolo, detalhada na seção 4.3.
4.2. Isomorfismo de cifras
Diversos protocolos apresentam uma ou mais mensagens formadas por componentes isomórficas entre si, ou mesmo componentes isomórficas a outras mensagens. Esta
caracterı́stica pode permitir ao adversário que intercepte uma componente e a substitua
pela outra, obtendo alguma vantagem. Um exemplo de protocolo que apresenta isomorfismo de cifras é o protocolo Yahalom modificado por Burrows et al., descrito na figura
3. Este protocolo está sujeito ao ataque apresentado na figura 4, proposto por Syverson.
1.
2.
3.
4.
A → B : A, NA
B → S : B, NB , {A, NA }KBS
S → A : NB , {B, KAB , NA }KAS , {A, KAB , NB }KBS
A → B : {A, KAB , NB }KBS , {NB }KAB
Figura 3. Protocolo Yahalom modificado por Burrows et al.
1. A → IB : A, NA
1’ IB → A : B, NA
2’ A → IS : A, NA0 , {B, NA }KAS
2” IA → S : A, NA , {B, NA }KAS
3’ S → IB : NA , {A, KAB , NA }KBS , {B, KAB , NA }KAS
2. Omitted
3. IS → A : NI , {B, KAB , NA }KAS , {A, KAB , NA }KBS
Figura 4. Ataque de Syverson ao protocolo Yahalom modificado por Burrows et al.
O ataque de Syverson ocorre da seguinte forma: Inicialmente, o adversário I intercepta a mensagem inicial de A para B (passo 1). A seguir, I inicia uma execução
paralela com A (passo 10 ) utilizando NA como desafio (nonce) e mascarando-se como B.
Esta segunda execução do protocolo segue da seguinte forma: I modifica a mensagem
de A para S (passos 20 e 200 ), substituindo o novo nonce NA0 pelo antigo NA . Então, I
intercepta a mensagem de S para B (passo 30 ) e a reenvia para A (passo 3), invertendo
a ordem das componentes, que tem a mesma estrutura. Ao final do ataque, A concluirá
erroneamente que B está ativo e compartilha da chave de sessão KAB .
Este ataque só é possı́vel devido ao isomorfismo entre a segunda e terceira componentes da mensagem 3 do protocolo. Se estas componentes pudessem ser diferenciadas
6
Piva
de alguma forma (acrescentando-se termos a uma delas, por exemplo), tal ataque poderia
ser evitado.
Há outros protocolos que sofrem ataques semelhantes. O protocolo de NeumanStubblebine de estabelecimento de chave de sessão [17], ilustrado pela figura 5, baseia-se
no Yahalom, mas não apresenta o mesmo isomorfismo entre componentes visto na terceira
mensagem da versão de Burrows et al. Ao invés disso, a segunda componente da segunda
mensagem e a segunda componente da terceira mensagem (que é replicada nas mensagens
4 e 5) são isomorfas2 .
1.
2.
3.
4.
5.
6.
7.
A → B : A, NA
B → S : B, {A, NA , TB }KBS , NB
S → A : {B, NA , KAB , TB }KAS , {A, KAB , TB }KBS , NB
A → B : {A, KAB , TB }KBS , {NB }KAB
A → B : MA , {A, KAB , TB }KBS
B → A : MB , {MA }KAB
A → B : {MB }KAB
Figura 5. Protocolo Neuman-Stubblebine de estabelecimento de chave de sessão
No ataque de tipo proposto em [14] ao protocolo, Hwang et. al. explora o isomorfismo substituindo a componente {A, KAB , TB }KBS da quarta mensagem pela componente {A, NA , TB }KBS da segunda mensagem. Dessa forma, B acredita ao final da
execução que pode comunicar-se com A (que é, na realidade, I mascarando-se como A),
utilizando NA como chave de sessão NA .
4.2.1. Soluções
Ataques que exploram isomorfismo de cifras podem ser prevenidos simplesmente
eliminando-se o isomorfismo. Existem diversos trabalhos [9, 18, 19] que sugerem a
introdução de assimetrias como medida de segurança contra este tipo de ataque de replay; esta solução é utilizada por Hwang em [14] para inviabilizar o ataque ao protocolo
de Neuman-Stubblebine.
Outra possibilidade, especialmente efetiva contra ataques de tipo, refere-se a identificar cada campo das mensagens através de marcadores, que podem incluir a função do
campo (nonce, chave, identidade de participante, etc), identidade do participante remetente/destinatário e/ou o passo atual do protocolo. Tais soluções são estudadas em [18, 2].
4.3. Desafios-resposta NX –{NX }K
Em protocolos de autenticação, é comum a utilização de desafios-resposta baseados em nonces para verificar a atividade (liveness) de uma entidade, ou mesmo validar
chaves de sessão recém-estabelecidas. Este processo consiste na geração de um número
aleatório NX pelo participante X, que o envia à sua entidade par Y . Se X receber no
futuro uma mensagem {...NX ...}K , em que K é uma chave boa para a comunicação entre
2
Existe certa discussão sobre este tipo de isomorfismo. Alguns métodos [2] sugerem que a implementação de mecanismos que diferenciem tipos elimina qualquer possibilidade de ataques de tipo, evitando por exemplo a substituição
de nonces por chaves. Mesmo que este seja o caso, a especificação do protocolo deve explicitar a necessidade de tais
mecanismos, o que não ocorre no caso do protocolo de Neuman-Stubblebine e torna o ataque válido.
Uma técnica informal de prevenção de ataques baseada em estruturas de mensagens
7
X e Y 3 , então X conclui que Y está ou esteve ativo desde a geração de NX . Embora
o conceito pareça satisfatório para garantir autenticação entre X e Y , existem diversos
ataques que exploram a estrutura da resposta {...NX ...}K ao desafio. Em [20] os autores
realizam um estudo detalhado de estruturas de desafio-resposta (testes de autenticação)
sob a perspectiva do método de espaço de fitas.
Embora existam diversas estruturas patológicas de mensagens de resposta a desafios, a estrutura {NX }K parece ser a mais atacada [1, 15, 13, 14] devido à pobreza de
informação derivável a partir dela. É possı́vel demonstrar que em várias situações a única
conclusão a que um participante pode chegar através de um desafio-resposta NX –{NX }K
é que existe uma entidade ativa que conhece a chave K (que pode ser até mesmo o próprio
X, no caso de um ataque de oráculo em rodadas paralelas). Esta situação é ilustrada no
protocolo de Neuman-Stubblebine (mensagens 5, 6 e 7), discutido na seção 4.2 e ilustrado
pela figura 5.
Além do isomorfismo explorado pelo ataque [14], o protocolo se utiliza de desafiosresposta NX –{NX }K para autenticação de chave de sessão entre os participantes4 . Esta
falha deu origem a um segundo ataque ao protocolo, também publicado em [14] e ilustrado
pela figura 6. Os passos 1-4 foram omitidos por simplificação.
5 IA → B : MA , {A, KAB , TB }KBS
6 B → IA : MB , {MA }KAB
5’ IA → B : MB , {A, KAB , TB }KBS
6’ B → IA : MB0 , {MB }KAB
1. IA → B : {MB }KAB
Figura 6. Ataque ao protocolo Neuman-Stubblebine explorando desafios-resposta NX –
{NX }K
Neste ataque, I utiliza B como oráculo, convencendo-o através de uma execução
paralela do protocolo a cifrar seu próprio desafio MB , utilizado na execução original.
Embora I não conheça a chave KAB , ele tem sucesso em obter de B a resposta {MB }KAB .
Ao final do protocolo, B concluirá erroneamente que A respondeu ao seu desafio, quando
na verdade foi ele próprio quem gerou a resposta.
É importante observar que nem sempre pares NX –{NX }K são utilizados como
desafio-resposta para demonstrar atividade. No protocolo BAN Concrete Andrew Secure
RPC, proposto em [1] e ilustrado pela figura 7, A e B utilizam o conceito para demonstrar
0
conhecimento da chave de seção KAB
recém-estabelecida (autenticação de chaves).
Embora tente contornar o problema do desafio-resposta NX –{NX }K introduzindo
um passo intermediário (passo 2), este protocolo está sujeito ao ataque publicado em [15]
e ilustrado pela figura 8. Neste ataque I utiliza A como oráculo, de maneira semelhante
à do ataque anterior. Observe, porém, que o passo intermediário exige que o adversário
utilize o outro participante como oráculo em dois momentos: primeiro nos passos 1’ e
3
Existem situações em que X e Y não possuem uma chave de seção boa para comunicação. Neste caso, o desafioresposta pode ser realizado em duas passadas, através de um servidor confiável que funcione como centro de tradução
de chaves. Este processo é análogo ao descrito e está sujeito às mesmas falhas, conforme pode-se observar no protocolo
Woo-Lam Π.
4
Note que a segunda componente da sexta mensagem e a mensagem sete também são mensagens isomórficas, e que
a discussão realizada na seção 4.2 também se aplica a elas.
8
Piva
1.
2.
3.
4.
A → B : A, NA
0
B → A : {NA , KAB
}KAB
0
A → B : {NA }KAB
B → A : NB
Figura 7. Protocolo BAN Concrete Andrew Secure RPC de estabelecimento de chave de
sessão
0
2’, para obter o texto cifrado {NA , KAB
}KAB a ser retransmitido no passo 2, e depois nos
0
passos 2 e 3, para obter por fim a resposta {NA }KAB
ao desafio recebido em 1.
1. A → IB : A, NA
1’ IB → A : B, NA
0
2’ A → IB : {NA , KAB
}KAB
0
2. IB → A : {NA , KAB }KAB
0
3. A → IB : {NA }KAB
0
3’ IB → A : {NA }KAB
0
4’ A → IB : NA
4. IB → A : NI
Figura 8. Ataque de Lowe ao protocolo BAN Concrete Andrew Secure RPC
4.3.1. Soluções
Os ataques provenientes de exploração de estruturas NX –{NX }K enquadram-se
na categoria de intercalações (Interleavings) da taxonomia proposta por Syverson, e portanto podem ser evitados da mesma forma. Uma possibilidade é inserir informações que
identifiquem unicamente a execução do protocolo de origem, como as identidades dos
participantes e os papéis interpretado por eles naquela execução. Dessa forma, o adversário fica impedido de intercambiar mensagens entre duas rodadas paralelas do protocolo. Uma versão desta solução pode ser vista nos protocolos Woo-Lam Π 1 e Woo-Lam
Π f, que visam corrigir esta falha no protocolo Woo-Lam Π proposto em [16]. Ambos
os protocolos introduzem as identidades de A e B na resposta ao desafio, que passa a ser
{A, B, NB }KBS .
4.4. Mensagens de estabelecimento de chaves sem garantias de freshness
Mensagens de estabelecimento de chaves devem ser cuidadosamente planejadas
durante projeto de protocolos. Se um adversário tiver sucesso em obter a nova chave
KAB , seja através de ataques de oráculo ou através de substituição da nova chave por uma
chave de seu conhecimento, ele poderá não só ler todo o conteúdo cifrado em seções entre
A e B como mascarar-se como A ou B para B ou A, respectivamente.
A figura 9 ilustra o protocolo de Needham-Schroeder de chave compartilhada,
proposto em [21]. Este protocolo tenta estabelecer uma chave de sessão KAB para a
comunicação posterior dos participantes A e B, através de uma mensagem {KAB , A}KBS
enviada no passo 2 e retransmitida no passo 3. O problema desta mensagem é que ela
não possui nenhuma garantia de ter sido gerada recentemente. Embora os participantes
confiem que o servidor S gera sempre chaves recentes, é preciso garantir que a mensagem
Uma técnica informal de prevenção de ataques baseada em estruturas de mensagens
1.
2.
3.
4.
5.
9
A → S : A, B, NA
S → A : {NA , B, {KAB , A}KBS }KAS
A → B : {KAB , A}KBS
B → A : {NB }KAB
A → B : {NB − 1}KAB
Figura 9. Protocolo de Needham-Schroeder de chave conpartilhada
de transmissão da chave em si é recente; do contrário, um adversário pode simplesmente
0
substituir a mensagem 3 do protocolo por uma mensagem {KAB
, A}KBS do mesmo passo
capturada em uma execução antiga (ataque de Denning-Sacco, [22]). Em uma primeira
0
análise, este ataque apenas força A e B a utilizarem uma chave sessão obsoleta KAB
; mas
é razoável supor que, com tempo e poder computacional suficientes, o atacante pode ter
0
tido sucesso em obter a chave KAB
por criptanálise das mensagens antigas. Neste caso,
todas as mensagens trocadas entre A e B utilizando a chave obsoleta estariam comprometidas.
4.4.1. Soluções
Mensagens de estabelecimento de mensagens devem sempre conter termos que
garantam f reshness, como nonces e timestamps, caso contrário resultam em ataques
de execução externa segundo a taxonomia de Syverson. Além disso, é fundamental
que sejam transmitidas aos participantes através de textos cifrados com chaves seguras,
preferivelmente chaves de longa-duração (nunca chaves de sessão antigas). Protocolos
que garantam acordo de chaves (key agreement), em que ambas os participantes contribuem com valores recém-gerados para a nova chave de sessão, são uma boa alternativa.
4.5. Componentes não-verificáveis
Protocolos de três ou mais participantes muitas vezes utilizam um dos participantes como intermediário entre determinadas mensagens. Nestes casos, é comum que
um participante receba mensagens cifradas com chaves que desconhece, com o único intuito de repassá-las a outro participante. Tais protocolos estão muitas vezes sujeitos a
ataques simples de negação de serviço (denial of service, DOS), já que a entidade não
pode verificar a integridade da mensagem recebida antes de reenviá-la. Estes ataques podem ser especialmente nocivos a uma famı́lia particular de protocolos criptográficos – os
protocolos de trocas justas [23].
Os protocolos de trocas justas visam, dentre outros objetivos, garantir que os participantes completem a execução do protocolo de maneira consistente (i.e., sem simplesmente abandoná-la) em algum momento (propriedade de tepestividade (timeliness)). Para
tanto, muitas vezes o participante deve invocar um servidor para auxiliá-lo no processo
de cancelamento da execução. Em [24] demonstramos que se esta invocação depender
de mensagens que contenham componentes não-verificáveis, um participante malicioso
pode enviar uma componente inválida para um participante honesto e então abandonar
a execução. O participante honesto tentará invocar o servidor, enviando a componente
inválida a ele. O servidor então verificará a componente e detectará o erro, atribuindo a
falha ao participante honesto e negando auxı́lio. Sem sua entidade par e sem o auxı́lio do
10
Piva
servidor, o participante honesto não tem alternativa senão abandonar a execução incorretamente. O ataque publicado em [25] ao protocolo de troca justa ZDB proposto em [26]
exemplifica este problema.
4.5.1. Solução
Componentes não-verificáveis devem ser utilizadas com cautela por engenheiros
de protocolo. Se um participante não puder verificar determinada componente, o protocolo não deve exigir que ele realize computação sensı́vel sobre ela (como assinatura, por
exemplo). Além disso, qualquer requisição de serviço junto a um servidor deve exigir
apenas componentes verificáveis pelo participante como comprovação, a fim de evitar
ataques como o descrito em [25].
5. Conclusão
Métodos formais são fundamentais para o projeto de protocolos de segurança
corretos, mas sua complexidade e verificações muitas vezes demoradas fazem com que
muitos engenheirso de protocolos menosprezem sua importância. Além disso, o conhecimento e entendimento de falhas cometidas no passado são fundamentais para o projeto
de protocolos criptográficos corretos.
Neste trabalho sugerimos uma análise de estruturas de mensagens que que estão
no centro de falhas que resultam em ataques de replay. Apresentamos diversas situações
em que um planejamento cuidadoso de estrutura de mensagens, aliado a um estudo de
erros cometidos no passado, poderiam ter evitado ataques de maneira simples e eficaz. É
evidente que uma simples análise estrutural não substitui uma prova formal de segurança;
mas utilização desta técnica simples e rápida durante o processo de planejamento de protocolos pode evitar erros clássicos mesmo antes de o protocolo estar completo.
Os poucos exemplos de mensagens-problema fornecidos na seção 4 podem e devem ser expandidos para quantas mais for possı́vel. A criação de um banco de dados
internacional de mensagens-problemas, que pudesse receber constantes entradas da comunidade cientı́fica, seria um instrumento inestimável no projeto de protocolos corretos.
Uma iniciativa semelhante de criação de banco de dados de protocolos e ataques é o Security Protocols Open Repository (SPORE) [27], mas o projeto está abandonado deste
2003.
Referências
[1] Michael Burrows, Martı́n Abadi, and Roger Needham. A logic of authentication. Technical Report 39, Digital Systems Research Center, Palo Alto, California, february
1989.
[2] F. Javier Thayer, Jonathan C. Herzog, and Joshua D. Guttman. Strand spaces: Proving
security protocols correct. Journal of Computer Security, 7(2–3):191–230, 1999.
[3] Paul F. Syverson and Iliano Cervesato. The logic of authentication protocols. In Riccardo Focardi and Roberto Gorrieri, editors, Foundations of Security Analysis and
Design (FOSAD 2000), Tutorial Lectures, volume LNCS 2171 of Lecture Notes in
Computer Science, pages 63–136. Springer-Verlag, September 2000.
Uma técnica informal de prevenção de ataques baseada em estruturas de mensagens
11
[4] Lawrence C. Paulson. Proving properties of security protocols by induction. In Proceedings of the 10th Computer Security Foundations Workshop (CSFW ’97), page 70,
Rockport, MA, USA, June 1997. IEEE Computer Society Press.
[5] Gavin Lowe. Breaking and fixing the Needham-Schroeder public-key protocol using
FDR. In Proceedings of the Second International Workshop on Tools and Algorithms
for Construction and Analysis of Systems, pages 147–166. Springer-Verlag, 1996.
[6] John C. Mitchell, Mark Mitchell, and Ulrich Stern. Automated analysis of cryptographic
protocols using Murφ. In Proceedings of the 1997 IEEE Symposium on Security and
Privacy, page 141. IEEE Computer Society Press, May 1997.
[7] Edmund M. Clarke, Somesh Jha, and Will Marrero. Verifying security protocols with
Brutus. ACM Trans. Softw. Eng. Methodol., 9(4):443–487, 2000.
[8] Catherine Meadows. The NRL protocol analyzer: An overview. Journal of Logic Programming, 26(2):113–131, February 1996.
[9] Paul Syverson. A taxonomy of replay attacks. In Computer Security Foundations Workshop VII. IEEE Computer Society Press, 1994.
[10] Stefanos Gritzalis and Diomidis Spinellis. Cryptographic protocols over open distributed
systems: A taxonomy of flaws and related protocol analysis tools. In 16th International Conference on Computer Safety, Reliability and Security: SAFECOMP ’97,
pages 123–137, Berlin, Germany / Heidelberg, Germany / London, UK / etc., 1997.
Springer Verlag.
[11] Fabio Rogério Piva, Augusto Jun Devegili, and Ricardo Dahab. Verification of three
authentication protocols using BAN, SVO and Strand Spaces. Technical Report IC06-17, September 2006.
[12] Colin Boyd and Anish Mathuria. Protocols for Authentication and Key Establishment.
Springer, 2003.
[13] Thomas Y. C. Woo and Simon S. Lam. A lesson on authentication protocol design. Operating Systems Review, 28(3):24–37, 1994.
[14] Tzonelih Hwang, Narn-Yoh Lee, Chuang-Ming Li, Ming-Yung Ko, and Yung-Hsiang
Chen. Two attacks on neumann-stubblebine authentication protocols. Information
Processing Letters, 53:103 – 107, 1995.
[15] Gavin Lowe. Some new attacks upon security protocols. In PCSFW: Proceedings of The
9th Computer Security Foundations Workshop. IEEE Computer Society Press, 1996.
[16] Thomas Y. C. Woo and Simon S. Lam. Authentication for distributed systems, from
computer, january, 1992. In William Stallings, Practical Cryptography for Data
Internetworks, IEEE Computer Society Press, 1996. 1996.
[17] B. Clifford Neuman and Stuart G. Stubblebine. A note on the use of timestamps as nonces.
Operating Systems Review, 27(2):10–14, 1993.
[18] C. Mitchell. Limitations of challenge-response entity authentication. In Electronics Letters 25, pages 1195–1196, August 1995.
[19] Li Gong. Variations on the themes of message freshness and replay—or the difficulty
of devising formal methods to analyze cryptographic protocols. In Proceedings of
12
Piva
the Computer Security Foundations Workshop VI, pages 131–136. IEEE Computer
Society Press, 1993.
[20] Joshua D. Guttman and F. Javier Thayer. Authentication tests and the structure of bundles.
Theor. Comput. Sci., 283(2):333–380, 2002.
[21] Roger Needham and Michael Schroeder. Using encryption for authentication in large
networks of computers. Communications of the ACM, 21(12):993–999, 1978.
[22] Dorothy E. Denning and Giovanni Maria Sacco. Timestamps in key distribution protocols.
Commun. ACM, 24(8):533–536, 1981.
[23] N. Asokan. Fairness in Electronic Commerce. PhD thesis, University of Waterloo, 1998.
[24] Fabio R. Piva, José R. M. Monteiro, Augusto J. Devegili, and Ricardo Dahab. Applying
strand spaces to certified delivery proofs. In Anais do IV SBSeg, Simpósio Brasileiro
em Segurança da Informação e de Sistemas Computacionais, September 2006.
[25] Sigrid Gürgens, Carsten Rudolph, and Holger Vogt. On the security of fair nonrepudiation protocols. Int. J. Inf. Secur., 4(4):253–262, 2005.
[26] Jianying Zhou, Robert H. Deng, and Feng Bao. Evolution of fair non-repudiation with
ttp. In ACISP ’99: Proceedings of the 4th Australasian Conference on Information
Security and Privacy, pages 258–269, London, UK, 1999. Springer-Verlag.
[27] Security Protocols Open Repository (SPORE). http://www.lsv.ens-cachan.fr/spore.
[28] F. Javier Thayer Fábrega, Jonathan C. Herzog, and Joshua D. Guttman. Strand space
pictures. In Electronic Proceedings of Workshop on Formal Methods and Security
Protocols, 1998.
Uma técnica informal de prevenção de ataques baseada em estruturas de mensagens
13
A. The Woo-Lam Π Protocol
The Woo-Lam Π authentication protocol intendeds to authenticate the initiator to
the responder, using an indirect challenge-response mechanism which is assisted by a key
translation center (that is, the server). This protocol is known to have different attacks.
Woo and Lam discuss the design ideas and the attacks on this protocol in [13]. Figure 10
describes this protocol.
1.
2.
3.
4.
5.
A→B:A
B → A : NB
A → B : {NB }KAS
B → S : {A, {NB }KAS }KBS
S → B : {NB }KBS
Figura 10. The Woo-Lam Π protocol
Note that the responder is unable to read the nonce from inside message 3, as he
does not possess the long term key KAS . The responder then forwards this message to the
server, who deciphers and re-encrypts it with another key (the responder’s long term key).
In this section we show that the Woo-Lam Π fails to provide unilateral entity
authentication. We show two security failures, both published on [13]: One leads to the
attack shown in figure 10, and the other is explored by Abadi’s attack.
A.1. Strand space verification of Woo-Lam Π
Figure 11 shows the strand space representation of the Woo-Lam Π protocol.
A
B
A
/◦
◦o
NB
◦
{NB }KAS
/◦
◦
◦
S
{A,{NB }KAS }KBS
{NB }KBS
◦
◦o
/◦
◦
Figura 11. Woo-Lam Π protocol
We specialise the term algebra A: let Tname ⊂ T be the set of principal names.
A.1.1. Regular strands definition
There are three types of regular strands in this protocol:
14
Piva
• A strand s ∈ Init[X, N ] iff s has trace of the form
h+X, −N, +{N }KXS i,
where X ∈ Tname and N ∈
/ Tname . The principal associated with a strand s ∈
Init[X, N ] is A.
• A strand s ∈ Resp[X, Y, N, H] iff s has trace of the form
h−X, +N, −H, +{X H}KY S , −{N }KY S i,
where X, Y ∈ Tname . The principal associated with a strand s ∈ Resp[X, Y, N, H]
is B.
• A strand s ∈ Serv[X, Y, N ] iff s has trace of the form
h−{X {N }KXS }KY S , +{N }KXS i,
where X, Y ∈ Tname and N ∈
/ Tname . The principal associated with a strand
s ∈ textServ[X, Y, N, L, K] is S.
The sets Serv, Resp and Init are pairwise disjoint.
A.1.2. Authentication
To verify the authentication property of the Woo-Lam Π protocol, one proposition
is necessary:
Proposition A.1. Let C be a bundle in Σ. No term of the form {g}KXS , with X ∈ Tname , S
a server with a strand s ∈ Serv, g ∈ T and KXS ∈
/ KP , can be originated in a penetrator
node.
Demonstração. Let U = {KXS } and k = K. We can safely state that KXS does not
originate in any regular node in C (this means that no regular node in C is an entry point
for Ik [U ]), since the traces of Serv, Init and Resp do not contain any node whose term
has KXS as subterm (only the session key K appears as subterm, and by the definition of
Serv, K is not a long term key). So we may apply Corollary 1.2.
A.1.3. Responder’s guarantee
Woo-Lam Π does not provide to the Responder the existence of an Initiator or a
Server in the same protocol run.
Let C be a bundle in Σ, Nb uniquely originating in C and KAS , KBS ∈
/ KP , and
s ∈ Resp[A, B, Nb ].
Theorem A.2. If s has C-height = 5, then there is a strand sserv ∈ Serv[A, B, Nb ] in
bundle C with C-height = 2.
Demonstração. If s ∈ Resp and s has C-height = 5, then there is a node ns,4 ∈ s which
is the last node in strand s and term(ns,4 ) = {Nb }KBS . By Lemmas ?? and ??, we know
that there is a node m ∈ C with term(m) = +uns term(ns,4 ).
Uma técnica informal de prevenção de ataques baseada em estruturas de mensagens
15
According to Prop. A.1, {Nb }KBS originates in a regular node in C. By the structure of {Nb }KBS , it can only originate in node ninit,2 (third node of an Initiator strand) or
in node nserv,1 (second node in a Server strand).
In the first case, term {Nb }KBS would have originated in a strand sinit ∈ Init[B, Nb ].
This would be possible if B were participating in a parallel execution of the protocol as
an Initiator and had received its very nonce Nb . This flaw is described in Figure 12 and
was reproduced in [28].
1.
2.
1’.
2’.
3’.
3.
4.
5.
IA → B : A
B → IA : NB
B → IC : B
IC → B : NB
B → IC : {NB }KBS
IA → B : H
B → IS : {A, H}KBS
IS → B : {NB }KBS
Figura 12. An attack on Woo-Lam Π
In the second case, term {Nb }KBS would have originated in a strand sserv ∈
Serv[∗, B, Nb ]. There is nothing that guarantees that the Initiator that B sees is the same
that S authenticates. This fact is used in Abadi’s attack to the protocol [13].
This shows that the Responder cannot obtain any guarantee with respect to the
existence of an Initiator or a Server in the same protocol run. The attack based on the
first case does not even require the existence of an active server – the penetrator can
impersonate a Responder and a Server by forcing B to initiate a protocol run and use it as
an oracle. On the other hand, Abadi’s attack needs an active server.

Documentos relacionados