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.