18.11.2014 Views

Anais - Engenharia de Redes de Comunicação - UnB

Anais - Engenharia de Redes de Comunicação - UnB

Anais - Engenharia de Redes de Comunicação - UnB

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ANAIS


Organização do SBSeg 2011<br />

Coor<strong>de</strong>nadores Gerais<br />

An<strong>de</strong>rson Clayton Alves Nascimento, <strong>UnB</strong><br />

Rafael Timóteo <strong>de</strong> Sousa Júnior, <strong>UnB</strong><br />

Comitê <strong>de</strong> Organização Local<br />

An<strong>de</strong>rson Clayton Alves Nascimento, <strong>UnB</strong><br />

Aletéia Patrícia Favacho <strong>de</strong> Araújo, <strong>UnB</strong><br />

Dino Macedo Amaral,<strong>UnB</strong><br />

Edna Dias Canedo, <strong>UnB</strong><br />

Flávio Elias Gomes <strong>de</strong> Deus, <strong>UnB</strong><br />

Maristela Terto <strong>de</strong> Holanda, <strong>UnB</strong><br />

Laerte Peotta <strong>de</strong> Melo, <strong>UnB</strong><br />

Priscila América Solis M. Barreto, <strong>UnB</strong><br />

Rafael Timóteo <strong>de</strong> Sousa Júnior, <strong>UnB</strong><br />

Ricardo Staciarini Puttini, <strong>UnB</strong><br />

Coor<strong>de</strong>nadores do Comitê <strong>de</strong> Programa<br />

Jeroen van <strong>de</strong> Graaf, UFMG<br />

Luiz Fernando Rust da Costa Carmo, UFRJ<br />

Coor<strong>de</strong>nadores <strong>de</strong> Minicursos<br />

Célia Ghedini Ralha, <strong>UnB</strong><br />

Antonio Cândido Faleiros, UFABC<br />

Coor<strong>de</strong>nadora do WTICG<br />

Michelle Nogueira, UFPR<br />

Coor<strong>de</strong>nadores do WGID<br />

Michelle S. Wangham, UNIVALI<br />

Prof. Joni da Silva Fraga, UFSC<br />

Coor<strong>de</strong>nador do Fórum <strong>de</strong> Segurança Corporativa<br />

Rafael Timóteo <strong>de</strong> Sousa Júnior, <strong>UnB</strong><br />

2


Mensagem da Coor<strong>de</strong>nação Geral<br />

O Simpósio Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais (SBSeg)<br />

é um evento científico promovido anualmente pela Socieda<strong>de</strong> Brasileira <strong>de</strong> Computação (SBC). A<br />

partir <strong>de</strong> 2005, concomitantemente à criação da Comissão Especial em Segurança da Informação<br />

e <strong>de</strong> Sistemas Computacionais, o SBSeg <strong>de</strong>ixou <strong>de</strong> ser organizado como um workshop e passou<br />

a ser um simpósio completo. Isso permitiu que, imediatamente, passasse a aten<strong>de</strong>r às <strong>de</strong>mandas<br />

crescentes da comunida<strong>de</strong> brasileira <strong>de</strong> pesquisadores e profissionais atuantes na área e assumisse a<br />

posição <strong>de</strong> principal fórum no País para a apresentação <strong>de</strong> pesquisas e ativida<strong>de</strong>s relevantes ligadas<br />

à segurança da informação e <strong>de</strong> sistemas.<br />

Des<strong>de</strong> que se estabeleceu como simpósio em 2005, o evento foi organizado, com gran<strong>de</strong><br />

sucesso, nas cida<strong>de</strong>s <strong>de</strong> Florianópolis, Santos, Rio <strong>de</strong> Janeiro, Gramado, Campinas e Fortaleza.<br />

A 11ª. edição do simpósio ocorre entre 6 e 11 <strong>de</strong> novembro <strong>de</strong> 2011 em Brasília, DF, organizada<br />

pelo grupo <strong>de</strong> <strong>Engenharia</strong> <strong>de</strong> Re<strong>de</strong>s do Departamento <strong>de</strong> <strong>Engenharia</strong> Elétrica e pelo Departamento<br />

<strong>de</strong> Ciência da Computação, ambos da Universida<strong>de</strong> <strong>de</strong> Brasília. O simpósio conta com uma rica<br />

varieda<strong>de</strong> <strong>de</strong> ativida<strong>de</strong>s, a saber: 7 sessões técnicas <strong>de</strong> artigos completos e resumos estendidos,<br />

6 minicursos, 4 palestras proferidas por especialistas estrangeiros, Painel <strong>de</strong> Segurança e Defesa<br />

Cibernética, Fórum <strong>de</strong> Segurança Corporativa e Workshop <strong>de</strong> Trabalhos <strong>de</strong> Iniciação Científica e <strong>de</strong><br />

Graduação e o 1º. Workshop <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s.<br />

Um aspecto fundamental do SBSeg é o comprometimento com a qualida<strong>de</strong>. Tem operado<br />

seguindo, rigorosamente, indicadores visando ao atendimento do padrão Qualis A, conforme critérios<br />

da CAPES. Entre esses critérios, <strong>de</strong>stacamos a taxa <strong>de</strong> aceitação <strong>de</strong> artigos completos inferior <strong>de</strong><br />

33% e a composição <strong>de</strong> Comitês <strong>de</strong> Programa por pesquisadores brasileiros e estrangeiros com<br />

gran<strong>de</strong> renome e inserção na área.<br />

Para a realização do SBSeg 2011, o envolvimento e a colaboração <strong>de</strong> várias pessoas e<br />

entida<strong>de</strong>s foram imprescindíveis. Em especial, gostaríamos <strong>de</strong> agra<strong>de</strong>cer aos membros do comitê<br />

<strong>de</strong> organização geral e local que, por conta <strong>de</strong> seu trabalho voluntário e incansável, ajudaram a<br />

proporcionar à comunida<strong>de</strong> <strong>de</strong> segurança um evento que julgamos <strong>de</strong> ótimo nível técnico. Gostaríamos<br />

<strong>de</strong> agra<strong>de</strong>cer, também, à SBC, pelo apoio prestado ao longo das muitas etapas da organização, e<br />

aos patrocinadores, pelo incentivo à divulgação <strong>de</strong> ativida<strong>de</strong>s <strong>de</strong> pesquisa conduzidas no País e<br />

pela confiança <strong>de</strong>positada neste Simpósio. Por fim, nossos agra<strong>de</strong>cimentos aos alunos, técnicos e<br />

professores do Laboratório <strong>de</strong> <strong>Engenharia</strong> <strong>de</strong> Re<strong>de</strong>s (LabRe<strong>de</strong>s), Laboratório <strong>de</strong> Tecnologias da<br />

Tomada <strong>de</strong> Decisão (Latitu<strong>de</strong>), Grupo <strong>de</strong> Pesquisa Crypto&InformationTheory e Programa <strong>de</strong> Pós-<br />

Graduação em <strong>Engenharia</strong> Elétrica (PPGEE), da <strong>UnB</strong>, por viabilizarem a realização <strong>de</strong> um evento<br />

do porte do SBSeg.<br />

Nesta semana <strong>de</strong> 6 a 11 <strong>de</strong> novembro estão reunidos em Brasília estudantes, professores,<br />

pesquisadores, governo e profissionais da indústria, todos com o objetivo <strong>de</strong> trocar i<strong>de</strong>ias,<br />

compartilhar experiências e estabelecer laços pessoais. Brasília é, portanto, o centro da discussão<br />

sobre avanços realizados e <strong>de</strong>safios a serem superados na área <strong>de</strong> segurança da informação e <strong>de</strong><br />

sistemas. Sejam bem-vindos ao Planalto Central e <strong>de</strong>sfrutem <strong>de</strong> uma semana agradável e proveitosa!<br />

An<strong>de</strong>rson Clayton Alves Nascimento, <strong>UnB</strong><br />

Rafael Timóteo <strong>de</strong> Sousa Júnior, <strong>UnB</strong><br />

Coor<strong>de</strong>nadores Gerais do SBSeg 2011<br />

3


Mensagem dos Coor<strong>de</strong>nadores do Comitê <strong>de</strong> Programa<br />

O Simpósio Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais<br />

(SBSeg) é um evento já consolidado como um dos importantes eventos científicos no país.<br />

O E, na Simpósio sua décima Brasileiro primeira em edição, Segurança continua da a mostrar Informação a sua e importância. <strong>de</strong> Sistemas Foram Computacionais 81 registros<br />

(SBSeg) para submissão é um evento <strong>de</strong> artigos, já consolidado dos quais como sessenta um dos e um importantes (61) foram eventos integralmente científicos realizados, no país.<br />

E, abrangendo na sua décima os diversos primeira tópicos edição, <strong>de</strong>finidos continua para a mostrar o evento. a sua Desse importância. conjunto foram Foram selecionados 81 registros<br />

para <strong>de</strong>zenove submissão (19) artigos <strong>de</strong> artigos, completos dos quais e um (1) sessenta na forma e um <strong>de</strong> (61) artigo foram curto. integralmente realizados,<br />

abrangendo os diversos tópicos <strong>de</strong>finidos para o evento. Desse conjunto foram selecionados<br />

<strong>de</strong>zenove Com estes (19) números artigos estamos completos compondo e um (1) na um forma programa <strong>de</strong> artigo bastante curto. diversificado, com sete<br />

sessões técnicas, que expressa através dos trabalhos selecionados a qualida<strong>de</strong> da pesquisa<br />

Com realizada estes no números país na área estamos <strong>de</strong> Segurança. compondo um programa bastante diversificado, com sete<br />

sessões técnicas, que expressa através dos trabalhos selecionados a qualida<strong>de</strong> da pesquisa<br />

realizada O Simpósio no país Brasileiro na área em <strong>de</strong> Segurança. da Informação e <strong>de</strong> Sistemas Computacionais vem<br />

nos últimos anos se caracterizando por um processo <strong>de</strong> seleção <strong>de</strong> artigos bastante<br />

O criterioso, Simpósio envolvendo Brasileiro várias em Segurança etapas. Neste da Informação trabalho árduo e <strong>de</strong> participa Sistemas uma Computacionais parte consi<strong>de</strong>rável vem<br />

nos da comunida<strong>de</strong> últimos anos científica se caracterizando brasileira <strong>de</strong> Segurança. por um processo E neste <strong>de</strong> momento seleção é bom <strong>de</strong> artigos que se divida bastante o<br />

criterioso, reconhecimento envolvendo e os elogios várias com etapas. todas Neste estas trabalho pessoas árduo que participaram uma <strong>de</strong>ste parte processo consi<strong>de</strong>rável que<br />

da resultou comunida<strong>de</strong> no programa científica do SBSeg brasileira 2011. <strong>de</strong> Segurança. E neste momento é bom que se divida o<br />

reconhecimento e os elogios com todas estas pessoas que participaram <strong>de</strong>ste processo que<br />

resultou Em primeiro no programa lugar, é importante do SBSeg 2011. o agra<strong>de</strong>cimento aos 239 autores, na sua maioria formada<br />

por brasileiros (236), que reconhecem a importância do SBSeg e que a cada nova edição<br />

Em ajudam primeiro a manter lugar, os é números importante <strong>de</strong> submissões o agra<strong>de</strong>cimento em níveis aos 239 expressivos. autores, na É a sua continuida<strong>de</strong> maioria formada <strong>de</strong>stes<br />

por números brasileiros <strong>de</strong> submissões (236), que e <strong>de</strong> reconhecem autores envolvidos a importância que <strong>de</strong>finitivamente do SBSeg e que consolidou a cada nova o simpósio. edição<br />

ajudam a manter os números <strong>de</strong> submissões em níveis expressivos. É a continuida<strong>de</strong> <strong>de</strong>stes<br />

números É importante <strong>de</strong> submissões também o e agra<strong>de</strong>cimento autores envolvidos e o reconhecimento que <strong>de</strong>finitivamente a todos os consolidou colegas membros o simpósio. do<br />

Comitê <strong>de</strong> Programa que este ano contou com 42 especialistas nos temas do simpósio.<br />

É Destes, importante 3 são também convidados o agra<strong>de</strong>cimento instituições e o reconhecimento estrangeiras, e os a todos <strong>de</strong>mais os colegas atuam no membros Brasil. do O<br />

Comitê trabalho <strong>de</strong>stes Programa colegas, que completamente este ano contou voluntário, com 42 foi especialistas muito importante nos temas nesta do edição. simpósio. Este<br />

Destes, trabalho 3 que são não convidados se encerra <strong>de</strong> com instituições o processo estrangeiras, <strong>de</strong> seleção, continua e os <strong>de</strong>mais ainda atuam com a no coor<strong>de</strong>nação Brasil. O<br />

trabalho das sessões <strong>de</strong>stes técnicas. colegas, completamente voluntário, foi muito importante nesta edição. Este<br />

trabalho que não se encerra com o processo <strong>de</strong> seleção, continua ainda com a coor<strong>de</strong>nação<br />

das No processo sessões técnicas. <strong>de</strong> seleção, tivemos a participação <strong>de</strong> 91 revisores e nisto se inclui também os<br />

membros do comitê <strong>de</strong> programa, gerando um total <strong>de</strong> 201 revisões. Foram pelo menos três<br />

No revisões processo para <strong>de</strong> cada seleção, artigo tivemos submetido. a participação Agra<strong>de</strong>cemos 91 todo revisores o empenho e nisto <strong>de</strong>stes se inclui revisores também para os a<br />

membros confecção do <strong>de</strong> comitê diagnósticos <strong>de</strong> programa, técnicos gerando e precisos, um total e para <strong>de</strong> a 201 imprescindível revisões. Foram contemporização pelo menos três na<br />

revisões hora da solução para cada <strong>de</strong> artigo conflitos. submetido. Agra<strong>de</strong>cemos todo o empenho <strong>de</strong>stes revisores para a<br />

confecção <strong>de</strong> diagnósticos técnicos e precisos, e para a imprescindível contemporização na<br />

hora da solução <strong>de</strong> conflitos.<br />

Gostaríamos também <strong>de</strong> agra<strong>de</strong>cer à Coor<strong>de</strong>nação Geral do SBSeg 2011 pelo convite honroso<br />

e a confiança que nos <strong>de</strong>positou ao nos fazer coor<strong>de</strong>nadores do Comitê <strong>de</strong> Programa<br />

Gostaríamos do SBSeg 2011. também Os <strong>de</strong>mais agra<strong>de</strong>cer participantes à Coor<strong>de</strong>nação da Organização Geral do do SBSeg simpósio 2011 pelo foram convite também honroso<br />

incansáveis e a confiança na tarefa que nos <strong>de</strong> fornecer <strong>de</strong>positou os ao meios nos fazer necessários coor<strong>de</strong>nadores para que do o Comitê <strong>de</strong> <strong>de</strong> Programa<br />

do atingisse SBSeg todos 2011. os Os seus <strong>de</strong>mais objetivos. participantes da Organização do simpósio foram também<br />

incansáveis na tarefa <strong>de</strong> fornecer os meios necessários para que o Comitê <strong>de</strong> Programa<br />

Finalmente, queremos <strong>de</strong>sejar aos participantes que são a razão maior do nosso evento, que<br />

atingisse todos os seus objetivos.<br />

tenham um excelente SBSeg!!<br />

Jeroen van <strong>de</strong> Graaf (DCC/UFMG)<br />

Luiz Fernando Rust da Costa Carmo (INMETRO)<br />

Coor<strong>de</strong>nadores do Comitê <strong>de</strong> Programa do SBSeg 2011<br />

4


Mensagem da Coor<strong>de</strong>nadora do WTICG<br />

Mensagem do Coor<strong>de</strong>nador do WTICG/SBSeg 2011 <br />

O Workshop <strong>de</strong> Trabalhos <strong>de</strong> Iniciação Científica e <strong>de</strong> Graduação (WTICG) do <br />

Simpósio Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais <br />

(SBSeg) visa incentivar a participação <strong>de</strong> recém-­‐graduados e <strong>de</strong> alunos <strong>de</strong> graduação <br />

na produção e divulgação <strong>de</strong> trabalhos científicos, fortalecendo a comunicação e a <br />

troca <strong>de</strong> conhecimentos sobre pesquisas já concluídas e em andamento. Nesta <br />

quinta edição, o WTICG contou com 18 artigos submetidos. Dentre estes, há artigos <br />

das mais diversas unida<strong>de</strong>s fe<strong>de</strong>rativas do Brasil, apontando a crescente <br />

atrativida<strong>de</strong> e visibilida<strong>de</strong> do evento. <br />

O Comitê <strong>de</strong> Programa <strong>de</strong>sta edição do WTICG foi constituído por 12 pesquisadores. <br />

Esse comitê contou ainda com o apoio <strong>de</strong> 8 avaliadores externos, sendo 3 <strong>de</strong>stes <br />

avaliadores anônimos, formando uma equipe <strong>de</strong> 20 profissionais para a condução <br />

do processo <strong>de</strong> avaliação dos artigos. Cada artigo recebeu pelo menos 3 avaliações <br />

in<strong>de</strong>pen<strong>de</strong>ntes e, ao final do processo <strong>de</strong> avaliação dos artigos submetidos, tivemos <br />

ao todo 56 revisões. Dentre os 18 artigos submetidos, 10 artigos foram selecionados <br />

para a publicação e apresentação oral no evento. Ressalto que todos os artigos <br />

selecionados aten<strong>de</strong>ram à restrição dos autores serem estudantes <strong>de</strong> graduação <br />

regularmente matriculados, ou ainda, recém-­‐graduados que tenham concluído a <br />

graduação após 30 <strong>de</strong> junho <strong>de</strong> 2010. <br />

A programação do WTICG está divida em 3 sessões técnicas que cobrem temas <br />

variados nas áreas <strong>de</strong> segurança da informação e segurança <strong>de</strong> sistemas <br />

computacionais. A primeira sessão trata especificamente <strong>de</strong> problemas relacionados <br />

ao Gerenciamento <strong>de</strong> Chaves e <strong>de</strong> Certificados. A segunda sessão contém artigos que <br />

investigam problemas relacionados à Segurança em Re<strong>de</strong>s e Sistemas. Finalmente, a <br />

terceira sessão é <strong>de</strong>dicada a artigos sobre Gerência <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e Anonimato. <br />

Gostaria <strong>de</strong> agra<strong>de</strong>cer aos membros do comitê <strong>de</strong> programa e aos revisores por <br />

terem aceitado participar voluntariamente dos processos <strong>de</strong> divulgação e avaliação <br />

neste evento. Agra<strong>de</strong>ço-­‐os também pela competência e <strong>de</strong>dicação na realização do <br />

processo <strong>de</strong> avaliação dos artigos. Gostaria <strong>de</strong> expressar também os meus <br />

agra<strong>de</strong>cimentos aos coor<strong>de</strong>nadores gerais do SBSeg 2011 pela oportunida<strong>de</strong> e <br />

confiança ao me atribuírem essa função. Finalmente, gostaria <strong>de</strong> agra<strong>de</strong>cer aos <br />

autores que submeteram os seus trabalhos e que anualmente fortalecem o interesse, <br />

visibilida<strong>de</strong> e sucesso crescentes do WTICG. <br />

Saúdo a todos os participantes do V Workshop <strong>de</strong> Trabalhos <strong>de</strong> Iniciação Científica e <br />

<strong>de</strong> Graduação com os votos <strong>de</strong> um excelente workshop e <strong>de</strong> uma excelente estadia <br />

em Brasília! <br />

Michele Nogueira <br />

5


Mensagem dos Coor<strong>de</strong>nadores do WGID<br />

O Workshop <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s (WGID), evento integrante do SBSeg,<br />

visa ser um fórum para discussões e apresentações técnicas <strong>de</strong> trabalhos recentes e/ou em<br />

andamento em torno do estado da arte <strong>de</strong> tecnologias relacionadas com gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s.<br />

Além disso, busca-se também i<strong>de</strong>ntificar os <strong>de</strong>safios <strong>de</strong> pesquisa na área e possibilitar o<br />

mapeamento dos grupos <strong>de</strong> pesquisa.<br />

Pesquisadores foram convidados a submeter trabalhos originais relacionados à Gestão<br />

<strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s, sendo que quatro trabalhos foram selecionados e serão apresentados na sessão<br />

técnica. Gostaríamos <strong>de</strong> agra<strong>de</strong>cer todo o empenho dos membros do comitê <strong>de</strong> programa<br />

pela alta qualida<strong>de</strong> do trabalho realizado nas revisões. Registramos um agra<strong>de</strong>cimento<br />

especial a todos os autores que prestigiaram o I WGID ao submeterem trabalhos relatando<br />

suas pesquisas.<br />

O programa do Workshop contemplará ainda duas palestras do pesquisador David<br />

Chadwick (University of Kent), uma palestra do Sr. Ruy Ramos, representante do ITI<br />

(Instituto Nacional <strong>de</strong> Tecnologia da Informação), uma palestra do Sr. Paulo Ayran, represente<br />

do Comitê Gestor do RIC (Registro <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> Civil), uma palestra da equipe <strong>de</strong> serviços<br />

da RNP (Re<strong>de</strong> Nacional <strong>de</strong> Ensino e Pesquisa), uma palestra sobre o projeto EduRoam.br<br />

e um painel com pesquisadores brasileiros que discutirá os <strong>de</strong>safios <strong>de</strong> segurança na gestão<br />

<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s.<br />

Gostaríamos também <strong>de</strong> agra<strong>de</strong>cer a todos que colaboraram na organização do<br />

WGID, especialmente, ao André Marins (RNP) e aos professores Noemi Rodriguez e<br />

Ricardo Custódio (coor<strong>de</strong>nadores do Comitê Técnico <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s da RNP).<br />

Agra<strong>de</strong>cemos ainda o apoio financeiro da Re<strong>de</strong> Nacional <strong>de</strong> Ensino e Pesquisa (RNP) e o<br />

apoio da Comissão Especial em Segurança da Informação e <strong>de</strong> Sistemas Computacionais da<br />

SBC e da Coor<strong>de</strong>nação Geral do SBSeg 2011 e <strong>de</strong> toda a sua equipe do comitê local.<br />

Em nome do Comitê <strong>de</strong> Programa, saudamos a todos os participantes do WGID 2011,<br />

com votos <strong>de</strong> um evento bastante profícuo.<br />

Prof. Joni da Silva Fraga, UFSC<br />

Profa. Michelle S. Wangham, UNIVALI<br />

Coor<strong>de</strong>nadores do Comitê <strong>de</strong> Programa do WGID 2011<br />

6


Comitê <strong>de</strong> Programa e Revisores do SBSeg<br />

Aldri dos Santos - UFPR<br />

Alexandre Alexandre - FEEC<br />

Altair Santin - PUCPR<br />

An<strong>de</strong>rson Nascimento -UNB<br />

André dos Santos - UECE<br />

André Grégio - CTI<br />

Antonio Maio - Kryptus<br />

Arlindo L. Marcon Jr. - PUCPR<br />

Arun Lakhotia - University of Louisiana USA<br />

Bruno Augusti Mozzaquatro - UFSM<br />

Carla Merkle Westphall - UFSC<br />

Carlos Maziero - UTFPR<br />

Carlos Westphall - UFSC<br />

Célio Vinicius Neves <strong>de</strong> Albuquerque - UFF<br />

Charles Prado - INMETRO<br />

Cinthia Freitas - PUCPR<br />

Claudio Miceli <strong>de</strong> Farias - UFRJ<br />

Cleber Kiel Olivo - PUCPR<br />

Cleber Souza - UNICAMP<br />

Craig Miles - University of Louisiana USA<br />

Daniel Fernan<strong>de</strong>s Macedo - UFMG<br />

Dario Fernan<strong>de</strong>s - UNICAMP<br />

Davi Böger - UFSC<br />

Davidson Boccardo - INMETRO<br />

Dener Didoné - UFPE<br />

Diogo Mattos - UFRJ<br />

Djamel H. Sadok -UFPE<br />

Dorgival Gue<strong>de</strong>s - UFMG<br />

Elisa Mannes - UFPR<br />

Emerson Ribeiro <strong>de</strong> Mello - IF-SC<br />

Fernando Gielow - UFPR<br />

Fernando Teixeira - UFMG<br />

Flavia Delicato - UFRJ<br />

Gabriel Cavalcante - UNICAMP<br />

George Cavalcanti - UFPE<br />

Gliner Alencar - UFPE<br />

Hao Chi Wong - Intel USA<br />

Henrique Arcover<strong>de</strong> - UFPE<br />

Hugo Carvalho - UFRJ<br />

Jacques Facon - PUCPR<br />

Jean Martina - University of Cambridge GB<br />

Jeroen van <strong>de</strong> Graaf - UFMG<br />

Joaquim Celestino Júnior - UECE<br />

José De Souza - UFC<br />

Joni da Silva Fraga - UFSC<br />

Julio Hernan<strong>de</strong>z - UNICAMP<br />

Lau Cheuk Lung - UFSC<br />

Leonardo Fagun<strong>de</strong>s - Unisinos<br />

Leonardo Oliveira - UNICAMP<br />

Leonardo Ribeiro - INMETRO<br />

Lisandro Zambene<strong>de</strong>tti Granville - UFRGS<br />

Luci Pirmez - UFRJ<br />

Luciano Paschoal Gaspary - UFRGS<br />

Luiz Fernando Rust da Costa Carmo - UFRJ<br />

Luiz Carlos Albini - UFPR<br />

Lyno Ferraz - UFRJ<br />

Maicon Stihler - PUCPR<br />

Marinho Barcellos - UFRGS<br />

Mauro Fonseca - PUCPR<br />

Michel Abdalla - École Normale Supérieure FR<br />

Michele Nogueira - UFPR<br />

Michelle Wangham - Univali<br />

Natalia Castro Fernan<strong>de</strong>s - UFRJ<br />

Otto Carlos Muniz Ban<strong>de</strong>ira Duarte UFRJ<br />

Paulo Barreto - USP<br />

Paulo Mafra - UFSC<br />

Paulo Padovan - UFPE<br />

Paulo André da Silva Gonçalves - UFPE<br />

Pedro Pisa - UFRJ<br />

Pedro Velloso - UFF<br />

Rafael Obelheiro - UDESC<br />

Raphael Machado - INMETRO<br />

Raul Ceretta Nunes - UFSM<br />

Raul Weber - UFRGS<br />

Reinaldo Braga - UFC<br />

Ricardo Custódio - UFSC<br />

Ricardo Dahab - UNICAMP<br />

Ricardo Tombesi Macedo - UFSM<br />

Roben Lunardi - UFRGS<br />

Roberto Gallo - Kryptus<br />

Robson Gomes <strong>de</strong> Melo - UFPR<br />

Rossana Andra<strong>de</strong> - UFC<br />

Routo Terada - USP<br />

Silvana Rossetto - UFRJ<br />

Thiago Rosa - PUCPR<br />

Tiago Nascimento - UFRJ<br />

Vinícius Thiago - Exército Brasileiro<br />

Vinicius Moll - UFSC<br />

Vitor Afonso - UNICAMP<br />

Weverton Luis da Costa Cor<strong>de</strong>iro - UFRGS<br />

Wilton Speziali Caldas - Empresa1<br />

7


Comitê <strong>de</strong> Programa e Revisores do WTICG<br />

Coor<strong>de</strong>nação Geral do SBSeg2011<br />

An<strong>de</strong>rson Nascimento, <strong>UnB</strong><br />

Coor<strong>de</strong>nação do Workshop<br />

Michelle S. Wangham, UNIVALI<br />

Ricardo Custódio, UFSC<br />

Noemi Rodriguez, PUC-RIO<br />

André Marins, RNP<br />

Coor<strong>de</strong>nação do Comitê <strong>de</strong> Programa<br />

Joni Fraga, UFSC<br />

Michelle Wangham, UNIVALI<br />

Comitê <strong>de</strong> Programa<br />

Aldri dos Santos, UFPR<br />

Altair Santin, PUC-PR<br />

Débora Muchaluat, UFF<br />

Eleri Cardozo, UNICAMP<br />

Emerson Ribeiro <strong>de</strong> Mello, IFSC<br />

Jeroen van <strong>de</strong>r Graaf, UFMG<br />

Joni Fraga, UFSC<br />

Marinho Barcellos, UFRGS<br />

Michelle Wangham, UNIVALI<br />

Michele Nogueira, UFPR<br />

Noemi Rodriguez, PUC-Rio<br />

Ricardo Custódio, UFSC<br />

Roberto Samarone, UFPA<br />

Vinod Rebello, UFF<br />

8


Comitê <strong>de</strong> Programa e Revisores do WGID<br />

Coor<strong>de</strong>nação Geral do SBSeg2011<br />

An<strong>de</strong>rson Nascimento, <strong>UnB</strong><br />

Coor<strong>de</strong>nação do Workshop<br />

Michelle S. Wangham, UNIVALI<br />

Ricardo Custódio, UFSC<br />

Noemi Rodriguez, PUC-RIO<br />

André Marins, RNP<br />

Coor<strong>de</strong>nação do Comitê <strong>de</strong> Programa<br />

Joni Fraga, UFSC<br />

Michelle Wangham, UNIVALI<br />

Comitê <strong>de</strong> Programa<br />

Aldri dos Santos, UFPR<br />

Altair Santin, PUC-PR<br />

Débora Muchaluat, UFF<br />

Eleri Cardozo, UNICAMP<br />

Emerson Ribeiro <strong>de</strong> Mello, IFSC<br />

Jeroen van <strong>de</strong>r Graaf, UFMG<br />

Joni Fraga, UFSC<br />

Marinho Barcellos, UFRGS<br />

Michelle Wangham, UNIVALI<br />

Michele Nogueira, UFPR<br />

Noemi Rodriguez, PUC-Rio<br />

Ricardo Custódio, UFSC<br />

Roberto Samarone, UFPA<br />

Vinod Rebello, UFF<br />

Revisores<br />

Aldri dos Santos, UFPR<br />

Altair Santin, PUC-PR<br />

Débora Muchaluat, UFF<br />

Eleri Cardozo, UNICAMP<br />

Emerson Ribeiro <strong>de</strong> Mello, IFSC<br />

Jeroen van <strong>de</strong>r Graaf, UFMG<br />

Joni Fraga, UFSC<br />

Maicon Stihler, PUCPR<br />

Marinho Barcellos, UFRGS<br />

Michelle Wangham, UNIVALI<br />

Michele Nogueira, UFPR<br />

9


Sumário dos <strong>Anais</strong> dos Artigos SBSeg 2011<br />

Um Mecanismo <strong>de</strong> Proteção <strong>de</strong> Quadros <strong>de</strong> Controle para Re<strong>de</strong>s IEEE<br />

802.11<br />

Tratamento Automatizado <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Segurança da Informação em<br />

Re<strong>de</strong>s <strong>de</strong> Campus<br />

15<br />

29<br />

Uma Ontologia para Mitigar XML Injection 43<br />

Carimbos do Tempo Autenticados para a Preservação por Longo Prazo <strong>de</strong><br />

Assinaturas Digitais<br />

57<br />

SCuP - Secure Cryptographic Microprocessor 71<br />

Fault Attacks against a Cellular Automata Based Stream Cipher 85<br />

Zero-knowledge I<strong>de</strong>ntification based on Lattices with Low Communication<br />

Costs<br />

95<br />

A Framework for Fully Simulatable Oblivious Transfer 108<br />

Syndrome-Fortuna: A viable approach on Linux random number generation 122<br />

SpSb: um ambiente seguro para o estudo <strong>de</strong> spambots 135<br />

Fatores que afetam o comportamento <strong>de</strong> spammers na re<strong>de</strong> 141<br />

Segmentação <strong>de</strong> Overlays P2P como Suporte para Memórias Tolerantes a<br />

Intrusões<br />

Caracterização e Mo<strong>de</strong>lagem da Disseminação <strong>de</strong> Conteúdo Ilícito em<br />

Sistemas Par-a-Par <strong>de</strong> Compartilhamento <strong>de</strong> Arquivos<br />

155<br />

169<br />

Método Heurístico para Rotular Grupos em Sistema <strong>de</strong> Detecção <strong>de</strong><br />

Intrusão baseado em Anomalia<br />

183<br />

10


Detecção <strong>de</strong> Intrusos usando Conjunto <strong>de</strong> k-NN gerado por Subespaços<br />

Aleatórios<br />

Combinando Algoritmos <strong>de</strong> Classificação para Detecção <strong>de</strong> Intrusão em<br />

Re<strong>de</strong>s <strong>de</strong> Computadores<br />

197<br />

211<br />

Static Detection of Address Leaks 225<br />

Um esquema bio-inspirado para tolerância à má-conduta em sistemas <strong>de</strong><br />

quórum para MANETs<br />

239<br />

Aumentando a segurança do MD6 em relação aos ataques diferenciais 253<br />

Acordo <strong>de</strong> Chave Seguro contra Autorida<strong>de</strong> Mal Intencionada 265<br />

11


Sumário dos <strong>Anais</strong> WTICG<br />

Especificação <strong>de</strong> Proprieda<strong>de</strong>s Temporais do Protocolo <strong>de</strong> Chaves Públicas<br />

Needham Schroe<strong>de</strong>r<br />

280<br />

Troca <strong>de</strong> Chaves Criptográficas com Re<strong>de</strong>s Neurais Artificiais 290<br />

Análise e implementação <strong>de</strong> um protocolo <strong>de</strong> gerenciamento <strong>de</strong> certificados 300<br />

Mobile Steganography Embed<strong>de</strong>r 310<br />

Avaliação do Impacto do Uso <strong>de</strong> Assinaturas Digitais em uma Aplicação<br />

Distribuída que Utiliza Re<strong>de</strong>s Veiculares<br />

Uma Avaliação <strong>de</strong> Segurança no Gerenciamento <strong>de</strong> Mobilida<strong>de</strong> nas Re<strong>de</strong>s<br />

em Malha sem Fio<br />

320<br />

329<br />

Análise Visual <strong>de</strong> Comportamento <strong>de</strong> Código Malicioso 339<br />

Uma Maneira Simples <strong>de</strong> Obter Regiões <strong>de</strong> Interesse em Imagens <strong>de</strong><br />

Impressões Digitais<br />

349<br />

Uma aplicação <strong>de</strong> privacida<strong>de</strong> no gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s em nuvem<br />

com uApprove<br />

A New Scheme for Anonymous Communication in Wireless Mesh<br />

Networks<br />

359<br />

369<br />

12


Sumário dos <strong>Anais</strong> WGID<br />

Avaliação <strong>de</strong> um Sistema <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e Acesso em uma<br />

Organização Pública Fe<strong>de</strong>ral<br />

378<br />

Uma Plataforma para Gerenciamento <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong> Software como<br />

Serviço em uma Infraestrutura como Serviço<br />

388<br />

Electronic Documents with Signature Constraints 397<br />

Using Notary Based Public Key Infrastructure in Shibboleth 405<br />

13


ANAIS<br />

14


Um Mecanismo <strong>de</strong> Proteção <strong>de</strong> Quadros <strong>de</strong> Controle<br />

para Re<strong>de</strong>s IEEE 802.11<br />

Marcos A. C. Corrêa Júnior, Paulo André da S. Gonçalves<br />

Centro <strong>de</strong> Informática (CIn)<br />

Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Pernambuco (UFPE)<br />

50.740-560 – Recife – PE – Brasil<br />

{maccj, pasg}@cin.ufpe.br<br />

Abstract. Only control frames of all the frame types <strong>de</strong>fined by IEEE 802.11<br />

stardard are not yet protected by any kind of security mechanism. This makes it<br />

easier for malicious entities to exploit them in or<strong>de</strong>r to carry out <strong>de</strong>ny-of-service<br />

attacks on the network. Techniques to forge or tamper control frames as well as<br />

techniques to reinject them into the network are typically used un<strong>de</strong>r such attacks.<br />

This paper proposes a mechanism for protecting IEEE 802.11 control<br />

frames against such attacks. The proposed mechanism protects all the control<br />

frames by using sequence numbers and Message Authentication Co<strong>de</strong>s. Compared<br />

to similar studies that aim to protect all the control frames, the proposed<br />

mechanism has reduced overhead and provi<strong>de</strong>s increased security.<br />

Resumo. De todos os quadros <strong>de</strong>finidos pelo padrão IEEE 802.11, apenas<br />

os quadros <strong>de</strong> controle ainda não possuem qualquer tipo <strong>de</strong> mecanismo <strong>de</strong><br />

segurança. Isso permite que entida<strong>de</strong>s maliciosas, mesmo não pertencentes à<br />

re<strong>de</strong>, se utilizem <strong>de</strong> técnicas <strong>de</strong> forjamento, manipulação e reinjeção <strong>de</strong>sses quadros<br />

a fim <strong>de</strong> gerar algum tipo <strong>de</strong> negação <strong>de</strong> serviço na re<strong>de</strong>. Este artigo propõe<br />

um mecanismo <strong>de</strong> segurança para os quadros <strong>de</strong> controle do IEEE 802.11. O<br />

mecanismo proposto se vale do uso <strong>de</strong> números <strong>de</strong> sequência e da geração <strong>de</strong><br />

Códigos <strong>de</strong> Autenticação <strong>de</strong> Mensagem a fim <strong>de</strong> evitar que estações maliciosas,<br />

não pertencentes à re<strong>de</strong>, tenham sucesso ao forjar, manipular ou reinjetar quadros<br />

<strong>de</strong> controle que levariam à negação <strong>de</strong> serviços. Além <strong>de</strong> proteger todos<br />

os quadros <strong>de</strong> controle indistintamente, o mecanismo proposto possui um maior<br />

grau <strong>de</strong> segurança e introduz, nesses quadros, um overhead significativamente<br />

menor em comparação aos trabalhos relacionados que também se propõem a<br />

proteger todos os quadros <strong>de</strong> controle.<br />

1. Introdução<br />

As re<strong>de</strong>s locais sem fio que seguem o padrão IEEE 802.11 [IEEE Standard 802.11 2007]<br />

vêm sendo amplamente adotadas em residências, empresas e locais públicos como shoppings,<br />

aeroportos e restaurantes. Os mecanismos <strong>de</strong> segurança que atuam na camada<br />

enlace <strong>de</strong>ssas re<strong>de</strong>s têm evoluído frequentemente <strong>de</strong>vido à <strong>de</strong>scoberta recorrente <strong>de</strong> vulnerabilida<strong>de</strong>s<br />

[Tews 2007]. Em geral, essas vulnerabilida<strong>de</strong>s são exploradas através do<br />

uso malicioso dos diferentes tipos <strong>de</strong> quadros que trafegam na re<strong>de</strong>. O padrão IEEE<br />

802.11 <strong>de</strong>fine três tipos <strong>de</strong> quadros: quadros <strong>de</strong> dados, quadros <strong>de</strong> gerenciamento e quadros<br />

<strong>de</strong> controle. Os quadros <strong>de</strong> dados são utilizados para transportar dados e algumas<br />

15


informações <strong>de</strong> controle em seu cabeçalho. Os quadros <strong>de</strong> gerenciamento são usados,<br />

entre outras coisas, para sinalizar a presença <strong>de</strong> uma re<strong>de</strong> sem fio, iniciar e encerrar a<br />

associação <strong>de</strong> estações com o Ponto <strong>de</strong> Acesso ou AP (Access Point). Os quadros <strong>de</strong> controle,<br />

por sua vez, são usados principalmente para a reserva do canal <strong>de</strong> comunicação e<br />

para a confirmação do recebimento <strong>de</strong> alguns tipos <strong>de</strong> quadros.<br />

Em relação à proteção dos quadros <strong>de</strong> dados, os seguintes protocolos <strong>de</strong> segurança<br />

foram <strong>de</strong>finidos ao longo dos anos: o WEP (Wired Equivalent Privacy) [IEEE Standard<br />

802.11 1999], o WPA (Wi-Fi Protected Access) [Wi-Fi Alliance 2003] e o WPA2 [IEEE<br />

Standard 802.11i 2004]. Dentre os protocolos citados, o WEP é consi<strong>de</strong>rado ultrapassado<br />

dada a sua longa lista <strong>de</strong> vulnerabilida<strong>de</strong>s [Tews 2007]. Já a proteção aos quadros <strong>de</strong><br />

gerenciamento é especificada na emenda IEEE 802.11w [IEEE Standard 802.11w 2009],<br />

a qual complementa as especificações do WPA e do WPA2. Essa ementa foi ratificada<br />

somente uma década após o surgimento do padrão IEEE 802.11, o que permitiu uma<br />

ampla janela <strong>de</strong> tempo para o <strong>de</strong>senvolvimento <strong>de</strong> vários ataques efetivos aos quadros<br />

<strong>de</strong> gerenciamento. Exemplos incluem o pedido falsificado <strong>de</strong> <strong>de</strong>sassociação <strong>de</strong> clientes<br />

legítimos da re<strong>de</strong> e a captura <strong>de</strong> informações sensíveis sendo transportadas nesses quadros<br />

(e.g. dados sobre recursos <strong>de</strong> rádio, i<strong>de</strong>ntificadores baseados em localização e dados para<br />

execução <strong>de</strong> handoffs rápidos) [IEEE Standard 802.11k 2008] [IEEE Standard 802.11r<br />

2008] [IEEE Standard 802.11v 2011].<br />

A emenda IEEE 802.11w associada ao WPA2 resolve gran<strong>de</strong> parte das vulnerabilida<strong>de</strong>s<br />

conhecidas nas re<strong>de</strong>s IEEE 802.11. Contudo, ainda não existe um padrão<br />

IEEE que se proponha a proteger os quadros <strong>de</strong> controle <strong>de</strong>ssas re<strong>de</strong>s contra qualquer tipo<br />

<strong>de</strong> ataque. Também não há qualquer grupo <strong>de</strong> trabalho IEEE <strong>de</strong>senvolvendo emendas<br />

para a segurança <strong>de</strong>sses quadros. A ausência <strong>de</strong> mecanismos <strong>de</strong> segurança nos quadros<br />

<strong>de</strong> controle permite a qualquer estação maliciosa, pertencente ou não à re<strong>de</strong>, efetuar diversos<br />

ataques <strong>de</strong> negação <strong>de</strong> serviço ou DoS (Denial-of-Service). Exemplos incluem o<br />

bloqueio do uso do canal <strong>de</strong> comunicação por um período <strong>de</strong> tempo pré-<strong>de</strong>terminado, a<br />

confirmação falsa <strong>de</strong> recebimento <strong>de</strong> informações que não foram efetivamente recebidas<br />

e a solicitação falsificada <strong>de</strong> transmissão <strong>de</strong> informações armazenadas no AP que seriam<br />

<strong>de</strong>stinadas a estações que não estariam prontas para recebê-las, causando, na prática, o<br />

<strong>de</strong>scarte <strong>de</strong>ssas informações.<br />

Por causa do impacto dos vários ataques aos quadros <strong>de</strong> controle, diversas pesquisas<br />

vêm sendo realizadas com o intuito <strong>de</strong> prover mecanismos efetivos para a segurança<br />

<strong>de</strong>sses quadros [Myneni and Huang 2010], [Khan and Hasan 2008]. Este artigo propõe um<br />

mecanismo <strong>de</strong> segurança para a proteção dos quadros <strong>de</strong> controle <strong>de</strong> re<strong>de</strong>s IEEE 802.11.<br />

O mecanismo proposto se vale do uso <strong>de</strong> números <strong>de</strong> sequência e da geração <strong>de</strong> Códigos<br />

<strong>de</strong> Autenticação <strong>de</strong> Mensagem ou MACs (Message Authentication Co<strong>de</strong>s) a fim <strong>de</strong> evitar<br />

que estações maliciosas, não pertencentes à re<strong>de</strong>, tenham sucesso ao forjar, manipular<br />

ou reinjetar quadros <strong>de</strong> controle que levariam à negação <strong>de</strong> serviços. Além <strong>de</strong> proteger<br />

todos os quadros <strong>de</strong> controle indistintamente, o mecanismo proposto possui um maior<br />

grau <strong>de</strong> segurança e introduz, nesses quadros, um overhead significativamente menor em<br />

comparação aos trabalhos relacionados que também se propõem a proteger todos os quadros<br />

<strong>de</strong> controle.<br />

O restante <strong>de</strong>ste artigo está organizado da seguinte forma: a Seção 2 apresenta<br />

os quadros <strong>de</strong> controle do IEEE 802.11 e os ataques existentes contra eles. A Seção 3<br />

16


apresenta os trabalhos relacionados e como o trabalho proposto se diferencia <strong>de</strong> cada um<br />

<strong>de</strong>les. A Seção 4 apresenta o mecanismo proposto neste artigo para a proteção dos quadros<br />

<strong>de</strong> controle IEEE 802.11. A Seção 5 apresenta um estudo do overhead introduzido<br />

pelo mecanismo proposto no tráfego total <strong>de</strong> uma re<strong>de</strong> sem fio. Finalmente, a Seção 6<br />

apresenta as conclusões <strong>de</strong>ste trabalho.<br />

2. Quadros <strong>de</strong> Controle do IEEE 802.11<br />

Esta seção apresenta as funcionalida<strong>de</strong>s dos 8 tipos <strong>de</strong> quadros <strong>de</strong> controle <strong>de</strong>finidos pelo<br />

padrão IEEE 802.11 [IEEE Standard 802.11 2007]. Os diversos ataques contra tais quadros<br />

também são apresentados. É importante ressaltar que o foco <strong>de</strong>ste artigo está nos<br />

ataques <strong>de</strong> origem externa, ou seja, naqueles executados por entida<strong>de</strong>s maliciosas não<br />

pertencentes à re<strong>de</strong> sem fio.<br />

2.1. RTS (Request To Send) e CTS (Clear to Send)<br />

O mecanismo RTS/CTS é utilizado em re<strong>de</strong>s IEEE 802.11 para a redução <strong>de</strong> colisões no<br />

meio <strong>de</strong> comunicação. Um nó que <strong>de</strong>seja transmitir dados inicia um handshake com o<br />

<strong>de</strong>stinatário, enviando um quadro RTS. Ao receber o RTS, o <strong>de</strong>stinatário respon<strong>de</strong> com<br />

um quadro CTS. Qualquer outro nó da re<strong>de</strong>, ao escutar o RTS ou o CTS enviados, <strong>de</strong>ve<br />

postergar suas transmissões por um <strong>de</strong>terminado período <strong>de</strong> tempo. Tal período engloba<br />

o tempo necessário para a subsequente transmissão dos dados e recepção da confirmação<br />

<strong>de</strong> seu recebimento. Assim sendo, o mecanismo RTS/CTS permite a reserva do canal<br />

<strong>de</strong> comunicação para a troca <strong>de</strong> dados. Tipicamente, o uso do mecanismo RTS/CTS só<br />

ocorre quando o tamanho do quadro com os dados exce<strong>de</strong> um limiar pré-<strong>de</strong>finido que<br />

po<strong>de</strong> variar <strong>de</strong> 0 a 2347 bytes.<br />

O RTS possui 20 bytes <strong>de</strong> comprimento, sendo dividido em 5 campos: FC (Frame<br />

Control), Duração, En<strong>de</strong>reço 1, En<strong>de</strong>reço 2 e FCS (Frame Check Sequence). O campo<br />

FC possui 2 bytes. Ele permite i<strong>de</strong>ntificar o tipo <strong>de</strong> quadro e provê algumas informações<br />

<strong>de</strong> controle. O campo Duração possui 2 bytes e informa o tempo <strong>de</strong> reserva do canal.<br />

Seu valor máximo é <strong>de</strong> 32.767 µs [IEEE Standard 802.11 2007]. Os campos En<strong>de</strong>reço<br />

1 e 2 possuem 6 bytes cada e representam, respectivamente, o en<strong>de</strong>reço do receptor e do<br />

transmissor. O campo FCS possui 4 bytes e é preenchido com um CRC-32 para a <strong>de</strong>tecção<br />

<strong>de</strong> erros. O quadro CTS possui 4 dos 5 campos do quadro RTS. O campo ausente no CTS<br />

é o campo En<strong>de</strong>reço 2, tornando o comprimento do quadro igual a 14 bytes.<br />

Existem dois ataques conhecidos contra o mecanismo RTS/CTS [Myneni and Huang<br />

2010]: o ataque <strong>de</strong> replay e o ataque <strong>de</strong> injeção <strong>de</strong> RTS e CTS falsificados. No<br />

primeiro ataque, uma estação maliciosa escuta o canal para capturar quadros RTS ou CTS<br />

e reinjetá-los na re<strong>de</strong>. No segundo ataque, uma estação maliciosa cria quadros RTS ou<br />

CTS com um ou mais campos forjados e os envia à re<strong>de</strong>. Este último ataque po<strong>de</strong> ser<br />

potencializado se a estação maliciosa preencher o campo Duração <strong>de</strong>sses quadros com o<br />

valor máximo permitido.<br />

Ambos os ataques são efetivos porque o IEEE 802.11 não provê qualquer mecanismo<br />

<strong>de</strong> autenticação <strong>de</strong> quadros <strong>de</strong> controle, nem <strong>de</strong> i<strong>de</strong>ntificação <strong>de</strong> quadros <strong>de</strong> controle<br />

previamente transmitidos. Assim, as estações que escutam os quadros RTS e CTS usados<br />

nesses ataques executam as ações previstas pelo protocolo, bloqueando temporariamente<br />

suas transmissões e, portanto, sofrendo uma negação <strong>de</strong> serviço.<br />

17


2.2. ACK (Acknowledgement)<br />

Os quadros ACK são usados para confirmar o recebimento <strong>de</strong> alguns tipos <strong>de</strong> quadros.<br />

O ACK possui o mesmo formato e tamanho do CTS. Os ataques conhecidos aos quadros<br />

ACK são os seguintes: injeção <strong>de</strong> ACK falsificado e ataque <strong>de</strong> replay. Em [Chen<br />

and Muthukkumarasamy 2006], é mostrado como forjar ACKs para a manipulação do<br />

tempo <strong>de</strong> reserva do canal <strong>de</strong> comunicação. Os autores <strong>de</strong>mostram que os quadros ACK<br />

po<strong>de</strong>m ser utilizados <strong>de</strong> forma tão efetiva quanto os quadros RTS/CTS para a negação<br />

<strong>de</strong> serviços. Em [Rachedi and Benslimane 2009], é apresentado um ataque <strong>de</strong>nominado<br />

False Packet Validation. Nesse ataque, a entida<strong>de</strong> maliciosa força a ocorrência <strong>de</strong> uma<br />

colisão num receptor-alvo para, em seguida, enviar um ACK falsificado que confirma ao<br />

emissor a correta recepção das informações enviadas. Caso a colisão tenha sido efetuada<br />

com sucesso, o emissor, ao receber o ACK forjado, concluirá erroneamente que as<br />

informações transmitidas foram corretamente recebidas no receptor.<br />

2.3. BAR (Block Ack Request) e BA (Block Ack)<br />

Os quadros BAR e BA foram introduzidos pela emenda IEEE 802.11e [IEEE Standard<br />

802.11e 2005] e tiveram suas funcionalida<strong>de</strong>s estendidas pela especificação IEEE<br />

802.11n. Esses quadros são usados para permitir a confirmação <strong>de</strong> um bloco <strong>de</strong> quadros<br />

usando apenas um quadro <strong>de</strong> confimação. O quadro BAR é usado para se requisitar a<br />

confirmação <strong>de</strong> recepção <strong>de</strong> um bloco <strong>de</strong> quadros enquanto o quadro BA serve como resposta.<br />

O quadro BA po<strong>de</strong> ainda ser utilizado para a confirmação <strong>de</strong> recepção <strong>de</strong> um bloco<br />

<strong>de</strong> quadros sem a necessida<strong>de</strong> <strong>de</strong> uso do quadro BAR.<br />

O quadro BAR possui 24 bytes <strong>de</strong> comprimento e é formado por 7 campos: FC<br />

(Frame Control), Duração, En<strong>de</strong>reço 1, En<strong>de</strong>reço 2, BAR control, Block Ack Starting<br />

Sequence Control e FCS (Frame Check Sequence). O campo BAR control possui 2 bytes<br />

e é usado, entre outras coisas, para informar parâmetros <strong>de</strong> qualida<strong>de</strong> <strong>de</strong> serviço. O campo<br />

Block Ack Starting Sequence Control possui 2 bytes e inclui, entre outras informações, o<br />

número <strong>de</strong> sequência do primeiro quadro em um bloco. O campo Duração possui 2 bytes<br />

e informa um tempo maior ou igual ao necessário para a recepção do quadro BA a ser<br />

enviado como resposta. Os <strong>de</strong>mais campos possuem o mesmo tamanho e <strong>de</strong>scrição já<br />

apresentados para os quadros RTS.<br />

O quadro BA possui 152 bytes <strong>de</strong> comprimento e inclui 8 campos: FC (Frame<br />

Control), Duração, En<strong>de</strong>reço 1, En<strong>de</strong>reço 2, BA control, Block Ack Starting Sequence<br />

Control, Block Ack Bitmap e FCS (Frame Check Sequence). O campo BA control possui<br />

2 bytes e armazena informações <strong>de</strong> controle específicas do quadro. O campo Block Ack<br />

Starting Sequence Control, também <strong>de</strong> 2 bytes, é usado para informar a qual quadro BAR<br />

pertence a resposta. O campo Block Ack Bitmap possui 128 bytes e informa, através <strong>de</strong><br />

um mapa <strong>de</strong> bits, quais quadros <strong>de</strong> um bloco não foram recebidos. O campo Duração<br />

possui 2 bytes e a informação <strong>de</strong> tempo contida nele <strong>de</strong>pen<strong>de</strong> do quadro ser ou não uma<br />

resposta a um quadro BAR. Os <strong>de</strong>mais campos possuem tamanho e <strong>de</strong>scrição similares<br />

aos apresentados para o quadro RTS.<br />

O mecanismo <strong>de</strong> confirmação em bloco <strong>de</strong> quadros também po<strong>de</strong> ser explorado<br />

através da falsificação <strong>de</strong> informações em quadros BAR. Um estudo sobre o uso malicioso<br />

dos quadros BAR é apresentado em [Cam-Winget et al. 2007]. Os autores mostram<br />

que é possível manipular o número <strong>de</strong> sequência informado nos quadros BAR, causando<br />

18


o <strong>de</strong>scarte <strong>de</strong> qualquer quadro com número <strong>de</strong> sequência menor do que o informado.<br />

Um único quadro BAR manipulado po<strong>de</strong> causar uma negação <strong>de</strong> serviço na re<strong>de</strong> por 10<br />

segundos [Koenings et al. 2009].<br />

2.4. PS-Poll (Power Save Poll)<br />

Os APs são projetados para dar suporte a toda estação que esteja utilizando gerenciamento<br />

<strong>de</strong> energia em sua interface <strong>de</strong> comunicação. Nesse caso, a estação <strong>de</strong>sliga e liga sua<br />

interface <strong>de</strong> comunicação periodicamente para economizar energia. O AP <strong>de</strong>ve armazenar<br />

os quadros <strong>de</strong>stinados à estação até que a mesma esteja pronta para a recepção <strong>de</strong> quadros.<br />

Ao religar sua interface, a estação procura por beacons do AP que informam se existem<br />

quadros armazenados para ela. Caso haja, a estação <strong>de</strong>ve enviar um quadro <strong>de</strong> controle<br />

PS-Poll para recuperar os quadros armazenados pelo AP. A estação po<strong>de</strong> voltar a <strong>de</strong>sligar<br />

sua interface após recuperar todos os quadros armazenados ou após ouvir do AP algum<br />

beacon indicando que não há quadros armazenados para aquela estação.<br />

O quadro PS-Poll possui 20 bytes <strong>de</strong> comprimento e é formado por 5 campos: FC<br />

(Frame Control), AID (Association ID), En<strong>de</strong>reço 1, En<strong>de</strong>reço 2 e FCS (Frame Check<br />

Sequence. O campo AID representa um i<strong>de</strong>ntificador <strong>de</strong> associação da estação e possui<br />

2 bytes. Os <strong>de</strong>mais campos possuem tamanho e <strong>de</strong>scrição idênticos aos já apresentados<br />

para o RTS.<br />

Em [Qureshi et al. 2007], é mostrado como o quadro PS-Poll po<strong>de</strong> ser utilizado<br />

para que uma estação maliciosa assuma, perante ao AP, a i<strong>de</strong>ntida<strong>de</strong> <strong>de</strong> uma estação<br />

legítima para a qual o AP possua quadros armazenados. Ao receber o quadro falso, o<br />

AP enviará os quadros armazenados que seriam <strong>de</strong>stinados à estação legítima. Assim<br />

sendo, o ataque causa o “<strong>de</strong>scarte” <strong>de</strong> informações pertencentes a outra estação, efetivando<br />

uma negação <strong>de</strong> serviço. Mais uma vez, o ataque só é possível por causa da falta<br />

<strong>de</strong> autenticação dos quadros PS-Poll.<br />

2.5. CF-End (Contention Free End) e CF-End+CF-Ack (CF-End+Contention Free<br />

Ack)<br />

A PCF (Point Coordination Function) é uma forma opcional <strong>de</strong> acesso ao meio <strong>de</strong>finido<br />

no IEEE 802.11 e utilizada para a oferta, por parte do AP, <strong>de</strong> períodos livres <strong>de</strong> contenção<br />

às estações. Por ser um método opcional, poucos dispositivos o implementam. Quando<br />

um período livre <strong>de</strong> contenção termina, o AP transmite um quadro CF-End para liberar<br />

as estações das regras <strong>de</strong> operação do modo PCF e informá-las do início do serviço baseado<br />

em contenção sob o método DCF (Distributed Coordination Function). O quadro<br />

CF-End+CF-Ack combina duas funções, sendo utilizado pelo AP quando o mesmo precisa<br />

informar o término <strong>de</strong> um período livre <strong>de</strong> contenção e confirmar, ao mesmo tempo,<br />

quadros anteriormente recebidos.<br />

Ambos os quadros possuem 20 bytes <strong>de</strong> comprimento divididos em 5 campos: FC<br />

(Frame Control), Duração, En<strong>de</strong>reço 1, En<strong>de</strong>reço 2 e FCS (Frame Check Sequence). Em<br />

particular a esses quadros, o campo En<strong>de</strong>reço 1 <strong>de</strong>ve conter o en<strong>de</strong>reço <strong>de</strong> broadcast da<br />

re<strong>de</strong> e o campo Duração <strong>de</strong>ve conter o valor zero. O significado dos <strong>de</strong>mais campos e<br />

seus tamanhos são idênticos aos já <strong>de</strong>scritos para o RTS.<br />

Em [Malekza<strong>de</strong>h et al. 2010], é mostrado experimentalmente que a manipulação<br />

do campo Duração dos quadros CF-End e CF-End+CF-Ack permite lançar ataques que<br />

19


tornam a re<strong>de</strong> indisponível, bloqueando a comunicação <strong>de</strong> dispositivos legítimos. Os efeitos<br />

são idênticos aos obtidos com ataques similares a outros tipos <strong>de</strong> quadros <strong>de</strong> controle.<br />

3. Trabalhos Relacionados<br />

Em [Bellardo and Savage 2003], são apresentadas propostas para se minimizar os efeitos<br />

<strong>de</strong> ataques ao mecanismo RTS/CTS. Uma das propostas consiste na limitação do valor<br />

máximo informado no campo Duração dos quadros <strong>de</strong> controle. Outra proposta consiste<br />

na observação da sequência <strong>de</strong> transmissões a partir <strong>de</strong> um RTS. A ausência <strong>de</strong> dados<br />

transmitidos após o RTS é consi<strong>de</strong>rada uma indicação <strong>de</strong> que a re<strong>de</strong> está sendo atacada.<br />

Nesse caso, as estações voltariam imediatamente a concorrer pelo uso do canal. Em [Ray<br />

and Starobinski 2007], a mesma i<strong>de</strong>ia <strong>de</strong> observação da sequência <strong>de</strong> transmissões a partir<br />

<strong>de</strong> um RTS é utilizada para se propor técnicas não-criptográficas <strong>de</strong> mitigação <strong>de</strong> ataques<br />

ao mecanismo RTS/CTS, mas no contexto <strong>de</strong> re<strong>de</strong>s sem fio multihop. Em [Qureshi et al.<br />

2007], é apresentada uma proposta para se proteger apenas os quadros PS-Poll contra<br />

ataques <strong>de</strong> falsificação e replay. A medida proposta se concentra no uso <strong>de</strong> artifícios<br />

criptográficos exclusivamente sobre o campo Association ID.<br />

A primeira proposta <strong>de</strong> proteção criptográfica <strong>de</strong> todos os quadros <strong>de</strong> controle<br />

do IEEE 802.11 é apresentada em [Khan and Hasan 2008]. Nessa proposta, o campo<br />

FCS dos quadros <strong>de</strong> controle <strong>de</strong>ixa <strong>de</strong> ser preenchido com um CRC-32 para conter um<br />

código <strong>de</strong> autenticação <strong>de</strong> 16 bits seguido <strong>de</strong> um CRC-16. Isso objetiva a manutenção do<br />

tamanho original dos quadros <strong>de</strong> controle. O código <strong>de</strong> autenticação é gerado por uma<br />

versão modificada <strong>de</strong> uma PRF (Pseudo Random Function) do WPA2 para produzir uma<br />

saída <strong>de</strong> 16 bits. Contudo, o uso <strong>de</strong> apenas 16 bits para o código <strong>de</strong> autenticação torna<br />

a proteção provida pelo mecanismo fraca [Whiting et al. 2003]. As PRFs usadas em<br />

especificações do IEEE 802.11, por exemplo, têm saída <strong>de</strong> pelo menos 128 bits, po<strong>de</strong>ndo<br />

alcançar 512 bits em caso <strong>de</strong> necessida<strong>de</strong> <strong>de</strong> aumento do nível <strong>de</strong> segurança. A proposta<br />

apresentada por [Khan and Hasan 2008] também não traz mecanismos contra ataques <strong>de</strong><br />

replay.<br />

Outra proposta que visa proteger <strong>de</strong> forma criptográfica todos os quadros <strong>de</strong> controle<br />

é apresentada em [Myneni and Huang 2010]. Para i<strong>de</strong>ntificar ataques <strong>de</strong> replay e<br />

po<strong>de</strong>r torná-los sem efeito, os autores se valem do uso <strong>de</strong> um número <strong>de</strong> sequência <strong>de</strong> 32<br />

bits em todos os quadros <strong>de</strong> controle. O framework IAPP (Inter-Access Point Protocol) ou<br />

IEEE 802.11F é utilizado para a distribuição e gerenciamento da chave criptográfica a ser<br />

utilizada. O IEEE 802.11F era uma extensão opcional do IEEE 802.11 para o provimento<br />

<strong>de</strong> serviços <strong>de</strong> comunicação entre APs compondo um ESS (Exten<strong>de</strong>d Service Set). O protocolo<br />

permite a troca <strong>de</strong> contextos <strong>de</strong> segurança entre APs durante períodos <strong>de</strong> handoff<br />

das estações. Em 2006, o IEEE retirou a extensão 802.11F do padrão 802.11.<br />

Ainda em relação ao trabalho apresentado em [Myneni and Huang 2010], o<br />

mesmo também se propõe a proteger os quadros <strong>de</strong> controle por meio <strong>de</strong> um código <strong>de</strong><br />

autenticação <strong>de</strong> mensagem (MAC). O MAC possui 160 bits e é gerado através do HMAC-<br />

SHA1. Como o MAC po<strong>de</strong> ser usado para verificação <strong>de</strong> integrida<strong>de</strong>, o campo FCS dos<br />

quadros <strong>de</strong> controle é eliminado. O uso do MAC <strong>de</strong> 160 bits dificulta a falsificação dos<br />

quadros <strong>de</strong> controle em relação à proposta em [Khan and Hasan 2008], porém introduz<br />

neles um overhead significativo. Além disso, há estudos que mostram fraquezas do<br />

HMAC-SHA1 [Kim et al. 2006], [Rechberger and Rijmen 2008]. Em particular à SHA-<br />

20


1, a mesma apresenta diversas vulnerabilida<strong>de</strong>s importantes [Cannière and Rechberger<br />

2006], [Manuel 2008]. Um dos ataques mais rápidos contra a versão completa da SHA-<br />

1 possui complexida<strong>de</strong> <strong>de</strong> tempo O(2 63 ) ao passo que a complexida<strong>de</strong> <strong>de</strong> tempo <strong>de</strong> um<br />

ataque <strong>de</strong> força bruta é O(2 80 ) [Bellovin and Rescorla 2005].<br />

Dentre os trabalhos relacionados, apenas [Myneni and Huang 2010] e [Khan and<br />

Hasan 2008] se propõem a proteger todos os quadros <strong>de</strong> controle, sendo que o primeiro<br />

apresenta uma proposta mais segura e completa, embora incorra em um overhead significativo.<br />

Neste artigo, é proposto um mecanismo <strong>de</strong> proteção <strong>de</strong> quadros <strong>de</strong> controle contra<br />

ataques que levariam à negação <strong>de</strong> serviços. O objetivo principal é, em comparação à proposta<br />

em [Myneni and Huang 2010], prover um maior grau <strong>de</strong> segurança com um menor<br />

overhead, fazendo uso dos mecanismos <strong>de</strong> segurança mais recentes presentes no IEEE<br />

802.11. Além disso, a proposta faz uso <strong>de</strong> chave criptográfica já empregada no protocolo<br />

<strong>de</strong> segurança WPA2, evitando a necessida<strong>de</strong> <strong>de</strong> se usar o IEEE 802.11F dado que o<br />

mesmo foi removido do padrão IEEE 802.11.<br />

4. O Mecanismo <strong>de</strong> Proteção Proposto<br />

O mecanismo aqui proposto também se vale do uso <strong>de</strong> números <strong>de</strong> sequência e da geração<br />

<strong>de</strong> códigos <strong>de</strong> autenticação <strong>de</strong> mensagens para proteger os quadros <strong>de</strong> controle. Contudo,<br />

a geração <strong>de</strong>sses códigos emprega partes do protocolo CCMP (Counter Mo<strong>de</strong> with<br />

Cipher Block Chaining Message Authentication Co<strong>de</strong> Protocol) já utilizado pelo WPA2.<br />

O CCMP usa o modo <strong>de</strong> operação do AES (Advanced Encryption Standard) conhecido<br />

por CCM, o qual combina o CTR (Counter Mo<strong>de</strong>) com o CBC-MAC (Cipher Block Chaining<br />

Message Authentication Co<strong>de</strong>). O CTR é utilizado para prover confidência enquanto<br />

o CBC-MAC é utilizado para prover autenticação e integrida<strong>de</strong>. A seguir, a proposta é<br />

<strong>de</strong>talhada.<br />

4.1. Novos Quadros <strong>de</strong> Controle<br />

O mecanismo proposto neste artigo introduz 8 novos tipos <strong>de</strong> quadros <strong>de</strong> controle no<br />

padrão IEEE 802.11. Esses quadros <strong>de</strong> controle são versões seguras dos quadros <strong>de</strong><br />

controle originais. O padrão IEEE 802.11 utiliza 4 bits para a i<strong>de</strong>ntificação <strong>de</strong> tipos<br />

<strong>de</strong> quadros <strong>de</strong> controle. Como já existem 8 tipos <strong>de</strong> quadros <strong>de</strong> controle <strong>de</strong>finidos, a<br />

especificação consegue acomodar os novos quadros <strong>de</strong>finidos pelo mecanismo proposto.<br />

A versão segura dos quadros <strong>de</strong> controle se diferencia dos quadros <strong>de</strong> controle originais<br />

apenas por não possuir o campo FCS e, em seu lugar, haver o campo NS (Número <strong>de</strong><br />

Sequência) <strong>de</strong> 4 bytes seguido do campo MAC (Message Authentication Co<strong>de</strong>) <strong>de</strong> 8 bytes.<br />

A Figura 1 apresenta, como exemplo, o ACK atual do padrão IEEE 802.11 e sua<br />

versão a ser utilizada no mecanismo <strong>de</strong> segurança proposto.<br />

Octetos: 2 2 6 4<br />

Octetos: 2 2 6<br />

4 8<br />

Frame<br />

Control<br />

Duração<br />

RA<br />

FCS<br />

Frame<br />

Control<br />

Duração<br />

RA<br />

NS<br />

MAC<br />

Cabeçalho MAC<br />

(a) ACK no padrão IEEE 802.11.<br />

Cabeçalho MAC<br />

(b) Versão segura do ACK no mecanismo proposto.<br />

Figura 1. Formato dos quadros <strong>de</strong> controle ACK.<br />

21


O campo MAC permitirá, ao nó receptor, verificar a autenticida<strong>de</strong> e a integrida<strong>de</strong><br />

do quadro <strong>de</strong> controle recebido. Como o campo MAC permitirá a <strong>de</strong>tecção <strong>de</strong> mudanças<br />

no quadro <strong>de</strong> controle, não há necessida<strong>de</strong> <strong>de</strong> se manter o campo FCS original para a<br />

<strong>de</strong>tecção <strong>de</strong> erros. O campo NS carregará a informação do número <strong>de</strong> sequência do quadro.<br />

Assim, cada nó da re<strong>de</strong> <strong>de</strong>ve manter um contador <strong>de</strong> 32 bits, o qual <strong>de</strong>verá ser<br />

incrementado <strong>de</strong> 1 unida<strong>de</strong> a cada novo quadro <strong>de</strong> controle. O campo NS <strong>de</strong>verá ser preenchido<br />

com o valor atual <strong>de</strong>sse contador e nunca po<strong>de</strong>rá ser repetido durante a utilização<br />

da mesma chave <strong>de</strong> segurança utilizada no cálculo do MAC.<br />

4.2. Cálculo do Valor do Campo MAC<br />

O CBC-MAC [Whiting et al. 2003] consi<strong>de</strong>ra uma mensagem B, a ser autenticada, dividida<br />

em uma sequência <strong>de</strong> blocos B 0 ,B 1 ,B 2 ...B n , on<strong>de</strong> n+1 é o número total <strong>de</strong> blocos<br />

da mensagem. O CBC-MAC também <strong>de</strong>fine E() como sendo a função <strong>de</strong> criptografia por<br />

blocos a ser utilizada, K como sendo a chave criptográfica e T como sendo o código <strong>de</strong><br />

autenticação. O cálculo <strong>de</strong> T é feito <strong>de</strong> acordo com o Algoritmo 4.1. Inicialmente, B 0 é<br />

criptografado e o resultado é armazenado em X 1 . Em seguida, é realizada um XOR entre<br />

X 1 e o próximo bloco B 1 . O resultado é armazenado em X 2 . O processo se repete para<br />

cada bloco seguinte até a obtenção <strong>de</strong> X (n+1) , sendo este último o código <strong>de</strong> autenticação<br />

e o qual po<strong>de</strong> ser truncado para os M primeiros bytes se necessário.<br />

✓<br />

Algoritmo 4.1: T (K,B,n,M)<br />

X 1 ← E(K,B 0 )<br />

para i = 1 até n faça<br />

X (i+1) ← E(K,X i ⊕ B i )<br />

T ← M primeiros bytes <strong>de</strong> X (n+1)<br />

✏<br />

✒<br />

✑<br />

Em particular, a mensagem a ser autenticada precisa ter o primeiro bloco B 0 formatado<br />

como mostra a Tabela 1. Nessa tabela, l(m) é o número <strong>de</strong> bytes da mensagem<br />

m, on<strong>de</strong> 0 ≤ l(m) ≤ 2 (8L) . O Nonce é um valor único que nunca <strong>de</strong>verá ser repetido com<br />

o uso <strong>de</strong> uma mesma chave criptográfica. As Flags ocupam 1 byte e também possuem<br />

formatação pré-<strong>de</strong>finida conforme <strong>de</strong>scrição a seguir: o primeiro bit <strong>de</strong> or<strong>de</strong>m mais alta<br />

é reservado para uso futuro e <strong>de</strong>ve ser sempre zero. O segundo bit <strong>de</strong> or<strong>de</strong>m mais alta,<br />

Adata, indica a utilização da técnica <strong>de</strong> autenticação <strong>de</strong> dados adicionais ou AAD quando<br />

igual a 1. Caso a técnica não seja utilizada, Adata <strong>de</strong>ve ser zero. Os 3 bits seguintes<br />

codificam M contendo o valor (M − 2)/2. Assim, M só po<strong>de</strong> assumir valores pares <strong>de</strong> 0<br />

a 16. Os 3 bits <strong>de</strong> or<strong>de</strong>m mais baixa codificam L contendo o valor L − 1. Valores válidos<br />

para L estão no intervalo <strong>de</strong> 2 a 8.<br />

Byte Nº 0 1 . . .(15 − L) (16 − L)...15<br />

Conteúdo Flags Nonce l(m)<br />

Tabela 1. Composição do Bloco B 0 .<br />

O CBC-MAC foi projetado para uso com algoritmos <strong>de</strong> cifra por blocos <strong>de</strong> 128<br />

bits, sendo o tamanho da chave <strong>de</strong>pen<strong>de</strong>nte do algoritmo <strong>de</strong> cifra por bloco utilizado. Os<br />

22


locos com menos <strong>de</strong> 128 bits <strong>de</strong>vem ser completados com zeros. No caso do CCMP<br />

<strong>de</strong>finido pelo WPA2, é utilizado o AES com operações com chaves e blocos <strong>de</strong> 128 bits.<br />

Assim sendo, toda a operação para o cálculo do código <strong>de</strong> autenticação com o mecanismo<br />

proposto segue esse mesmo princípio. O cômputo do valor do campo MAC é feito através<br />

do uso da implementação do CBC-MAC no CCMP. A Figura 2 ilustra esse processo. O<br />

bloco inicial a ser criptografado possui 128 bits e é representado pelo IV (Initialization<br />

Vector). Sua formação é explicada como segue:<br />

IV<br />

Nonce<br />

Flag<br />

Priority<br />

Octet<br />

A2(TA)<br />

NS<br />

l(m)<br />

64<br />

bits<br />

64<br />

bits<br />

AES(K)<br />

AES(K)<br />

AES(K)<br />

AES(K)<br />

Cálculo<br />

MAC<br />

...<br />

Quadro<br />

Texto em Claro<br />

Cabeçalho do Quadro<br />

... 128 bits<br />

NS<br />

MAC<br />

Figura 2. Geração do valor do campo MAC.<br />

• Flag - possui 1 byte. Contém as informações previstas para o campo Flags <strong>de</strong>finido<br />

em [Whiting et al. 2003] e possui valor igual a (00011011) b . Ou seja, não é<br />

utilizada a técnica AAD, M = 8 e L = 4;<br />

• Nonce - possui 11 bytes e é formado pela concatenação do Priority Octet (1 byte)<br />

com os 48 bits do en<strong>de</strong>reço do transmissor ou A2(TA) e o número <strong>de</strong> sequência<br />

NS <strong>de</strong> 32 bits do quadro <strong>de</strong> controle. Esse tipo <strong>de</strong> construção respeita a formação<br />

<strong>de</strong> nonces usada pelo CCM no WPA2 e é usada aqui para fins <strong>de</strong> compatibilida<strong>de</strong>.<br />

O CCM no WPA2 especifica que o campo Priority Octet <strong>de</strong>ve ser preenchido<br />

com zeros quando não houver o campo <strong>de</strong> controle <strong>de</strong> QoS (Quality of Service)<br />

no cabeçalho do quadro como é o caso dos quadros <strong>de</strong> controle. A forma <strong>de</strong><br />

construção do nonce permite que os nós da re<strong>de</strong> usem sempre nonces distintos<br />

entre eles.<br />

• l(m) - possui 4 bytes e segue a <strong>de</strong>finição em [Whiting et al. 2003] para informar<br />

o tamanho da mensagem a ser autenticada.<br />

O processo <strong>de</strong> construção do MAC segue o algoritmo 4.1 tendo o IV como bloco<br />

inicial B 0 . Os próximos blocos são obtidos dividindo-se o quadro <strong>de</strong> controle em pedaços<br />

<strong>de</strong> 128 bits mas com a exclusão dos campos NS e MAC. No caso do ACK e do CTS,<br />

haverá apenas 80 bits <strong>de</strong> informação que <strong>de</strong>vem ser concatenados com 48 bits iguais a<br />

zero para compor o próximo e último bloco B 1 . No caso dos quadros RTS, CF-End e<br />

CF-End+Cf-Ack, o próximo e último bloco B 1 já conterá exatos 128 bits. O quadro BAR<br />

gerará mais dois blocos (B 1 e B 2 ), sendo que o último <strong>de</strong>verá ser completado com 96<br />

bits iguais a zero. O quadro BA gerará mais <strong>de</strong>z blocos (B 1 ...B 10 ), sendo que o último<br />

também <strong>de</strong>verá ser completado com 96 bits iguais a zero.<br />

Para que um nó da re<strong>de</strong> possa construir o MAC e permitir a qualquer outro verificar<br />

a autenticida<strong>de</strong> e a integrida<strong>de</strong> do quadro, é necessário que uma chave K em comum<br />

23


seja empregada. A chave criptográfica comum utilizada no WPA2 é a GEK (Group encryption<br />

Key) que faz parte da chave hieráquica GTK (Group Temporal Key). A GEK é<br />

a chave usada para a criptografia <strong>de</strong> tráfego <strong>de</strong>stinado a múltiplos nós da re<strong>de</strong>. A GTK<br />

é distribuída durante o processo <strong>de</strong> 4-Way Handshake e renovada periodicamente usando<br />

o protocolo GKH (Group Key Handshake). Adicionalmente aos critérios <strong>de</strong> renovação<br />

da GTK <strong>de</strong>finidos pelo WPA2, o uso do mecanismo proposto requer a renovação <strong>de</strong>ssa<br />

chave para evitar que um nó utilize um mesmo número <strong>de</strong> sequência com uma mesma<br />

GTK. Assim, o nó que esgotar seus números <strong>de</strong> sequência <strong>de</strong>ve solicitar a renovação da<br />

GTK da re<strong>de</strong> através do uso do protocolo GKH (Group Key Handshake).<br />

Ao receber um quadro <strong>de</strong> controle do mecanismo proposto, o nó da re<strong>de</strong> sem<br />

fio <strong>de</strong>ve recalcular o MAC e comparar o valor obtido com aquele informado no campo<br />

MAC. Para isso, ela precisará da chave K e do IV . A chave K é conhecida por todas<br />

as estações da re<strong>de</strong>. O IV possui duas partes: uma parte com valor fixo e pré-<strong>de</strong>finido<br />

(Flag, Priority Octet e l(m)), o qual é conhecido pelas estações e uma parte com valor<br />

variável composta pelo NS e pelo en<strong>de</strong>reço do transmissor. O NS que é transportado<br />

em claro pelo quadro. O en<strong>de</strong>reço do transmissor está presente em todos os quadros <strong>de</strong><br />

controle, exceto nos quadros CTS e ACK. Para os quadros CTS e ACK, o padrão IEEE<br />

802.11 prevê que o receptor obtenha o en<strong>de</strong>reço do transmissor a partir dos respectivos<br />

RTS ou dos respectivos quadros sendo confirmados <strong>de</strong> acordo com o caso. Ao recalcular o<br />

MAC, caso o valor obtido seja diferente daquele informado no campo MAC, a mensagem<br />

foi alterada e <strong>de</strong>ve ser <strong>de</strong>sconsi<strong>de</strong>rada. Caso o valor do MAC recalculado seja igual ao<br />

informado no campo MAC do quadro recebido, o nó <strong>de</strong>ve verificar se não é um quadro<br />

repetido usando como base o número <strong>de</strong> sequência esperado. Caso o quadro não seja uma<br />

repetição, o nó receptor <strong>de</strong>verá consi<strong>de</strong>rar a mensagem e a origem da mesma autenticadas.<br />

4.3. Segurança<br />

A segurança do mecanismo proposto está intimamente ligada à segurança do WPA2. Em<br />

re<strong>de</strong>s IEEE 802.11 protegidas pelo WPA2, é possível encontrar a chave GTK através<br />

<strong>de</strong> um ataque <strong>de</strong> dicionário quando a re<strong>de</strong> usa o método <strong>de</strong> autenticação pessoal em<br />

conjunto com uma passphrase. Contudo, esse ataque só é praticável se a passphrase<br />

possuir menos <strong>de</strong> 20 caracteres [Fogie 2005]. Essa vulnerabilida<strong>de</strong> é consi<strong>de</strong>rada do<br />

usuário/administrador e não do protocolo <strong>de</strong> segurança. Em [Rogaway 2011], é apresentado<br />

um estudo que mostra que o CCM apresenta proprieda<strong>de</strong>s <strong>de</strong> segurança suficientemente<br />

a<strong>de</strong>quadas. O estudo também mostra que as principais críticas ao CCM estão<br />

ligadas à sua eficiência <strong>de</strong> execução. Em relação à segurança do AES, o ataque mais<br />

rápido <strong>de</strong> recuperação <strong>de</strong> chave contra sua versão completa <strong>de</strong> 128 bits possui complexida<strong>de</strong><br />

<strong>de</strong> tempo O(2 126,1 ) enquanto a complexida<strong>de</strong> <strong>de</strong> tempo <strong>de</strong> um ataque <strong>de</strong> força bruta<br />

é O(2 128 ) [Bogdanov et al. 2011].<br />

4.4. Resumo Comparativo<br />

A Tabela 2 apresenta um resumo da proteção oferecida pelo mecanismo proposto e pelos<br />

trabalhos relacionados para cada tipo <strong>de</strong> quadro <strong>de</strong> controle. A existência <strong>de</strong> proteção<br />

contra forja e manipulação do quadro é indicada por X. A existência <strong>de</strong> proteção contra<br />

ataques <strong>de</strong> replay é indicada por 0.<br />

24


RTS CTS ACK BA BAR PS-<br />

Poll<br />

CF-<br />

End<br />

CF-End +<br />

CF-Ack<br />

[Bellardo and Savage 2003] X X X<br />

[Qureshi et al. 2007]<br />

X<br />

[Ray and Starobinski 2007] X<br />

[Khan and Hasan 2008] X X X X X X X X<br />

[Rachedi and Benslimane 2009] X X X<br />

[Myneni and Huang 2010] X/0 X/0 X/0 X/0 X/0 X/0 X/0 X/0<br />

Proposta neste artigo X/0 X/0 X/0 X/0 X/0 X/0 X/0 X/0<br />

Tabela 2. Comparativo da proteção oferecida pelas diversas propostas.<br />

5. Estudo <strong>de</strong> Caso<br />

Esta seção estuda o impacto do mecanismo proposto neste artigo e em [Myneni and Huang<br />

2010] no tráfego global <strong>de</strong> uma re<strong>de</strong> sem fio. Para esse estudo, foram capturados quadros<br />

ao longo <strong>de</strong> 1 hora na re<strong>de</strong> sem fio do Centro <strong>de</strong> Informática da UFPE, gerando um<br />

arquivo trace com aproximadamente 1.500.000 quadros. Todos os quadros capturados<br />

eram provenientes <strong>de</strong> um único AP escolhido ou direcionados a ele.<br />

A Figura 3(a) apresenta a quantida<strong>de</strong> capturada dos 3 tipos <strong>de</strong> quadros. Note<br />

que há uma predominância dos quadros <strong>de</strong> controle. A Figura 3(b) <strong>de</strong>talha os tipos <strong>de</strong><br />

quadros <strong>de</strong> controle capturados. Em particular, observa-se que foram capturados quadros<br />

<strong>de</strong> controle <strong>de</strong> todos os tipos, exceto o quadro CF-End+CF-Ack.<br />

Quantida<strong>de</strong><br />

1e+07<br />

1e+06<br />

100000<br />

10000<br />

1000<br />

100<br />

Gereciamento<br />

Controle<br />

Dados<br />

Quantida<strong>de</strong><br />

1e+07<br />

1e+06<br />

100000<br />

10000<br />

1000<br />

100<br />

Gereciamento<br />

Dados<br />

Ack<br />

CTS<br />

RTS<br />

PS-Poll<br />

CF-End<br />

BA<br />

BAR<br />

10<br />

10<br />

1<br />

1<br />

0.1<br />

Quadros<br />

0.1<br />

Quadros<br />

(a)<br />

(b)<br />

Figura 3. Distribuição da frequência dos quadros.<br />

A partir do trace obtido, foram acrescentados aos quadros <strong>de</strong> controle o overhead<br />

do mecanismo proposto e da proposta em [Myneni and Huang 2010] para fins <strong>de</strong><br />

comparação. A i<strong>de</strong>ia é simular o mesmo tráfego <strong>de</strong> quadros sob esses dois mecanismos<br />

<strong>de</strong> segurança. A Figura 4(a) apresenta o número cumulativo <strong>de</strong> bytes transferidos<br />

em função da quantida<strong>de</strong> <strong>de</strong> quadros. Note que o mecanismo proposto possui um menor<br />

overhead cumulativo do que a proposta em [Myneni and Huang 2010].<br />

A Figura 4(b) apresenta o overhead normalizado do tráfego consi<strong>de</strong>rando as duas<br />

propostas avaliadas. Note que até aproximadamente os 300.000 primeiros quadros capturados,<br />

o mecanismo proposto têm um impacto <strong>de</strong> próximo <strong>de</strong> 57% enquanto a proposta do<br />

Myneni tem um impacto <strong>de</strong> quase 143%. A medida que o volume <strong>de</strong> quadros aumenta,<br />

25


9e+07<br />

8e+07<br />

7e+07<br />

Padrao<br />

Myneni<br />

Proposta<br />

1.8<br />

1.6<br />

1.4<br />

Proposta<br />

Myneni<br />

6e+07<br />

1.2<br />

Bytes<br />

5e+07<br />

4e+07<br />

3e+07<br />

Overhead<br />

1<br />

0.8<br />

0.6<br />

2e+07<br />

0.4<br />

1e+07<br />

0.2<br />

0<br />

0 350000 700000 1.05e+06 1.4e+06<br />

Quadros Capturados<br />

0<br />

0 350000 700000 1.05e+06 1.4e+06<br />

Quadros Capturados<br />

(a) Bytes usados para transmitir a mesma<br />

informação útil.<br />

(b) Overhead normalizado em relação ao formato<br />

padrão dos quadros.<br />

Figura 4. Comparação entre propostas.<br />

observa-se que o impacto do mecanismo proposto ten<strong>de</strong> à 20% enquanto o impacto do<br />

mecanismo proposto por Myneni ten<strong>de</strong> à 40%.<br />

6. Conclusões<br />

Este artigo apresentou um mecanismo <strong>de</strong> proteção <strong>de</strong> quadros <strong>de</strong> controle contra ataques<br />

<strong>de</strong> negação <strong>de</strong> serviço. O mecanismo foi construído <strong>de</strong> forma a manter a compatibilida<strong>de</strong><br />

com o padrão IEEE 802.11. O objetivo principal da proposta, em comparação à proposta<br />

em [Myneni and Huang 2010], foi o <strong>de</strong> prover um maior grau <strong>de</strong> segurança com um menor<br />

overhead, fazendo uso dos mecanismos <strong>de</strong> segurança mais recentes presentes no IEEE<br />

802.11. Adicionalmente, a proposta fez uso da chave <strong>de</strong> grupo já empregada no protocolo<br />

<strong>de</strong> segurança WPA2, evitando a necessida<strong>de</strong> <strong>de</strong> se utilizar um mecanismo <strong>de</strong> gerenciamento<br />

e distribuição <strong>de</strong> chaves abandonado pelo IEEE. Para dar proteção aos quadros<br />

<strong>de</strong> controle contra os ataques estudados, o mecanismo proposto se utilizou <strong>de</strong> números<br />

<strong>de</strong> sequência e <strong>de</strong> códigos <strong>de</strong> autenticação <strong>de</strong> mensagens obtidos através do emprego do<br />

CBC-MAC do CCMP. O overhead introduzido com o uso do mecanismo proposto é, por<br />

quadro <strong>de</strong> controle, 2,5 vezes menor do que aquele introduzido pela proposta <strong>de</strong> Myneni.<br />

Um estudo <strong>de</strong> caso enfatizou que o mecanismo proposto produziu um impacto significativamente<br />

menor no tráfego global da re<strong>de</strong> do que aquele produzido pela proposta <strong>de</strong><br />

Myneni. Como trabalho futuro, será realizado um estudo da vazão da re<strong>de</strong> ao se utilizar o<br />

mecanismo proposto.<br />

Referências<br />

Bellardo, J. and Savage, S. (2003). 802.11 Denial-of-Service Attacks: Real Vulnerabilities<br />

and Practical Solutions. In Proc. of the 12th USENIX Security Symposium (SSYM),<br />

pages 15–28, Washington, DC, USA.<br />

Bellovin, S. and Rescorla, E. (2005). Deploying a New Hash Algorithm. Technical report.<br />

Bogdanov, A., Khovratovich, D., and Rechberger, C. (2011). Biclique Cryptanalysis of<br />

the Full AES. In Proc. of the 17th Annual International Conference on the Theory and<br />

Application of Cryptology and Information Security (ASIACRYPT), Seoul, Korea, (To<br />

appear).<br />

26


Cam-Winget, N., Smith, D., and Walker, J. (2007). IEEE 802.11-07/2163r0 - A-MPDU<br />

Security Issues. Technical report.<br />

Cannière, C. D. and Rechberger, C. (2006). Finding SHA-1 Characteristics: General<br />

Results and Applications. In Lecture Notes in Computer Science - ADVANCES IN<br />

CRYPTOLOGY (ASIACRYPT), volume 4284, pages 1–20.<br />

Chen, B. and Muthukkumarasamy, V. (2006). Denial of Service Attacks Against 802.11<br />

DCF Abstract.<br />

Fogie, S. (2005). Cracking Wi-Fi Protected Access (WPA), Part 2. http://www.<br />

fermentas.com/techinfo/nucleicacids/maplambda.htm.<br />

IEEE Standard 802.11 (1999). IEEE Standards for Information technology - Telecommunications<br />

and information exchange between systems - Local and metropolitan area<br />

networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />

(MAC) and Physical Layer (PHY) Specifications.<br />

IEEE Standard 802.11 (2007). IEEE Standards for Information technology - Telecommunications<br />

and information exchange between systems - Local and metropolitan area<br />

networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />

(MAC) and Physical Layer (PHY) Specifications.<br />

IEEE Standard 802.11e (2005). IEEE Standards for Information technology - Telecommunications<br />

and information exchange between systems - Local and metropolitan area<br />

networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />

(MAC) and Physical Layer (PHY) Specifications - Amendment 8: Medium Access<br />

Control (MAC) Quality of Service Enhancements.<br />

IEEE Standard 802.11i (2004). IEEE Standards for Information technology - Telecommunications<br />

and information exchange between systems - Local and metropolitan area<br />

networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />

(MAC) and Physical Layer (PHY) Specifications - Amendment 6: Medium Access<br />

Control (MAC) Security Enhancements Interpretation.<br />

IEEE Standard 802.11k (2008). IEEE Standards for Information technology - Telecommunications<br />

and information exchange between systems - Local and metropolitan area<br />

networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />

(MAC) and Physical Layer (PHY) Specifications - Amendment 1: Radio Resource<br />

Measurement of Wireless LANs.<br />

IEEE Standard 802.11r (2008). IEEE Standards for Information technology - Telecommunications<br />

and information exchange between systems - Local and metropolitan area<br />

networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />

(MAC) and Physical Layer (PHY) Specifications - Amendment 2: Fast Basic Service<br />

Set (bss).<br />

IEEE Standard 802.11v (2011). IEEE Standards for Information technology - Telecommunications<br />

and information exchange between systems - Local and metropolitan area<br />

networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />

(MAC) and Physical Layer (PHY) Specifications - Amendment 8: IEEE 802.11 Wireless<br />

Network Management.<br />

27


IEEE Standard 802.11w (2009). IEEE Standards for Information technology - Telecommunications<br />

and information exchange between systems - Local and metropolitan area<br />

networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />

(MAC) and Physical Layer (PHY) Specifications - Amendment 4: Protected Management<br />

Frames.<br />

Khan, M. and Hasan, A. (2008). Pseudo random number based authentication to counter<br />

<strong>de</strong>nial of service attacks on 802.11. In Proc. of 5th IFIP International Conference on<br />

Wireless and Optical Communications Networks (WOCN), pages 1–5.<br />

Kim, J., Biryukov, A., Preneel, B., and Hong, S. (2006). On the Security of HMAC<br />

and NMAC Based on HAVAL, MD4, MD5, SHA-0, and SHA-1. Designs, Co<strong>de</strong>s<br />

Cryptography, 4116:242–256.<br />

Koenings, B., Schaub, F., Kargl, F., and Dietzel, S. (2009). Channel Switch and Quiet<br />

attack: New DoS Attacks Exploiting the 802.11 Standard. In Proc. of the 34th IEEE<br />

Conference on Local Computer Networks (LCN), Zurich, Switzerland.<br />

Malekza<strong>de</strong>h, M., Ghani, A. A. A., and Subramaniam, S. (2010). Design of Cyberwar<br />

Laboratory Exercises to Implement Common Security Attacks against IEEE 802.11<br />

Wireless Networks. J. Comp. Sys., Netw., and Comm., pages 5:1–5:15.<br />

Manuel, S. (2008). Classification and Generation of Disturbance Vectors for Collision<br />

Attacks against SHA-1. Cryptology ePrint Archive, Report 2008/469.<br />

Myneni, S. and Huang, D. (2010). IEEE 802.11 Wireless LAN Control Frame Protection.<br />

In Proc. of the 7th IEEE Conference on Consumer communications and Networking<br />

Conference (CCNC), pages 844–848, Piscataway, NJ, USA. IEEE Press.<br />

Qureshi, Z. I., Aslam, B., Mohsin, A., and Javed, Y. (2007). A Solution to Spoofed<br />

PS-Poll Based Denial of Service Attacks in IEEE 802.11 WLANs. In Proc. of the<br />

11th WSEAS International Conference on Communications, pages 7–11, Stevens Point,<br />

Wisconsin, USA. World Scientific and Engineering Aca<strong>de</strong>my and Society (WSEAS).<br />

Rachedi, A. and Benslimane, A. (2009). Impacts and Solutions of Control Packets Vulnerabilities<br />

with IEEE 802.11 MAC. Wireless Communications and Mobile Computing,<br />

9(4):469–488.<br />

Ray, S. and Starobinski, D. (2007). On False Blocking in RTS/CTS-Based Multihop<br />

Wireless Networks. IEEE Transactions on Vehicular Technology, 56(2):849–862.<br />

Rechberger, C. and Rijmen, V. (2008). New Results on NMAC/HMAC when Instantiated<br />

with Popular Hash Functions. Universal Computer Science, 14(3):347–376.<br />

Rogaway, P. (2011). Evaluation of Some Blockcipher Mo<strong>de</strong>s of Operation. Technical<br />

report, Cryptography Research and Evaluation Committees (CRYPTREC).<br />

Tews, E. (2007). Attacks on the WEP Protocol. Cryptology ePrint Archive, Report<br />

2007/471.<br />

Whiting, D., Housley, R., and Ferguson, N. (2003). RFC 3610 - Counter with CBC-MAC<br />

(CCM).<br />

Wi-Fi Alliance (2003). Wi-Fi Protected Access: Strong, Standards-based, Interoperable<br />

Security for Today’s Wi-Fi Networks.<br />

28


Tratamento Automatizado <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Segurança da<br />

Informação em Re<strong>de</strong>s <strong>de</strong> Campus<br />

Italo Valcy 1,2 , Luciano Porto Barreto 1,2 , Jerônimo Bezerra 1,2<br />

1 Universida<strong>de</strong> Fe<strong>de</strong>ral da Bahia (UFBA)<br />

Salvador, BA – Brasil<br />

2 Grupo <strong>de</strong> Resposta a Inci<strong>de</strong>ntes <strong>de</strong> Segurança - Bahia/Brasil (CERT.Bahia)<br />

Salvador, BA – Brasil<br />

{italovalcy, lportoba, jab}@ufba.br<br />

Resumo. O crescimento atual da Internet tem alavancado o número <strong>de</strong><br />

inci<strong>de</strong>ntes <strong>de</strong> segurança da informação em diversas instituições. Os prejuízos<br />

causados por tais inci<strong>de</strong>ntes e sua dificulda<strong>de</strong> <strong>de</strong> prevenção requerem o<br />

estabelecimento <strong>de</strong> políticas e mecanismos eficientes <strong>de</strong> tratamento e resposta<br />

a inci<strong>de</strong>ntes <strong>de</strong> segurança. Entretanto, a correta i<strong>de</strong>ntificação <strong>de</strong> equipamentos<br />

comprometidos ou participantes em um inci<strong>de</strong>nte <strong>de</strong> segurança é severamente<br />

prejudicada pela ampla existência <strong>de</strong> re<strong>de</strong>s que utilizam técnicas <strong>de</strong> tradução<br />

ou atribuição dinâmica <strong>de</strong> en<strong>de</strong>reços IP (como o NAT ou DHCP), as quais<br />

dificultam a i<strong>de</strong>ntificação precisa dos equipamentos internos. Este trabalho<br />

<strong>de</strong>screve o projeto, a implementação e avaliação da ferramenta TRAIRA, a<br />

qual automatiza o procedimento <strong>de</strong> <strong>de</strong>tecção, i<strong>de</strong>ntificação e isolamento dos<br />

equipamentos geradores <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança em re<strong>de</strong>s com estas características.<br />

A ferramenta está atualmente em produção e uso efetivo em uma re<strong>de</strong><br />

<strong>de</strong> campus com cerca <strong>de</strong> 12.000 equipamentos conectados.<br />

1. Introdução<br />

A popularização da Internet tem proporcionado relevante <strong>de</strong>mocratização do acesso às<br />

informações em re<strong>de</strong>, porém, paralelo a esse fenômeno, é notório o aumento substancial<br />

na ocorrência <strong>de</strong> inci<strong>de</strong>ntes relacionados à segurança da informação. Tais inci<strong>de</strong>ntes<br />

são diversos e variam sobremaneira em gravida<strong>de</strong>, impacto e escala. Exemplos abrangem<br />

<strong>de</strong>s<strong>de</strong> a infecção e disseminação <strong>de</strong> software malicioso, apropriação <strong>de</strong> senhas e<br />

informações privadas até frau<strong>de</strong>s bancárias, violação <strong>de</strong> sigilo e proprieda<strong>de</strong> intelectual,<br />

ataque a sites comerciais e ciberterrorismo. No âmbito das empresas e instituições<br />

governamentais, torna-se fundamental atuação efetiva da alta administração visando à<br />

prevenção, <strong>de</strong>tecção e tratamento a<strong>de</strong>quado <strong>de</strong> tais eventos adversos com o intuito <strong>de</strong><br />

proteger os ativos organizacionais (patrimônio, imagem, pessoas).<br />

Instituições lidam com a questão geralmente através da atuação em dois eixos.<br />

O primeiro estabelece uma Política <strong>de</strong> Segurança da Informação (PSI) que normatiza<br />

regras, condutas e planos <strong>de</strong> ação, bem como possíveis sanções aos usuários em caso do<br />

<strong>de</strong>scumprimento das regras estatuídas. O segundo eixo perpassa a constituição <strong>de</strong> um<br />

grupo especializado <strong>de</strong> resposta a inci<strong>de</strong>ntes <strong>de</strong> segurança (CSIRT, do inglês, Computer<br />

Security Information Response Team) responsável pelas questões operacionais <strong>de</strong>s<strong>de</strong> a<br />

fase <strong>de</strong> i<strong>de</strong>ntificação até a resolução dos inci<strong>de</strong>ntes <strong>de</strong> segurança. Seguindo essa linha <strong>de</strong><br />

29


atuação em segurança da informação, nossa instituição contempla a administração <strong>de</strong> uma<br />

re<strong>de</strong> <strong>de</strong> campus que interliga diversas instituições acadêmicas e <strong>de</strong> pesquisa perfazendo<br />

aproximadamente 12.000 equipamentos (<strong>de</strong>sconsi<strong>de</strong>rando equipamentos conectados em<br />

re<strong>de</strong>s sem fio). A<strong>de</strong>mais, no período compreendido entre janeiro e julho <strong>de</strong> 2011, foram<br />

reportados aproximadamente 2.000 inci<strong>de</strong>ntes <strong>de</strong> segurança da informação referentes às<br />

instituições <strong>de</strong> pesquisa e ensino monitoradas pelo nosso CSIRT [CERT.Bahia 2010], o<br />

que atesta a necessida<strong>de</strong> <strong>de</strong> tratamento efetivo e eficaz <strong>de</strong> tais inci<strong>de</strong>ntes.<br />

Os prejuízos causados por tais inci<strong>de</strong>ntes aliados à sua dificulda<strong>de</strong> <strong>de</strong> prevenção<br />

[Scarfone et al. 2008] <strong>de</strong>mandam o estabelecimento <strong>de</strong> políticas e mecanismos eficientes<br />

<strong>de</strong> tratamento e resposta. A gran<strong>de</strong> maioria <strong>de</strong>sses inci<strong>de</strong>ntes são reportados por CSIRTs<br />

externos à instituição, a exemplo do CERT.br e do CAIS/RNP. Lentidão, leniência no<br />

tratamento do inci<strong>de</strong>nte, bem como a reincidência po<strong>de</strong>m ensejar sanções severas e in<strong>de</strong>sejáveis,<br />

tais como o bloqueio <strong>de</strong> acesso e a recusa <strong>de</strong> e-mails originários da instituição<br />

comprometida. A infecção e disseminação <strong>de</strong> malware, a exemplo do vírus Conficker,<br />

ou a participação (ainda que involuntária) <strong>de</strong> máquinas em botnets (re<strong>de</strong>s <strong>de</strong> ataques<br />

em larga escala) são exemplos dos tipos <strong>de</strong> inci<strong>de</strong>ntes mais frequentes na geração <strong>de</strong><br />

notificações externas. Portanto, os prejuízos institucionais <strong>de</strong>correntes <strong>de</strong> tais sanções são<br />

consi<strong>de</strong>ráveis em nosso contexto (instituições acadêmicas e <strong>de</strong> pesquisa), o que requer<br />

atuação rápida e efetiva do time <strong>de</strong> resposta a inci<strong>de</strong>ntes.<br />

Entretanto, um dos principais entraves à correta i<strong>de</strong>ntificação <strong>de</strong> equipamentos<br />

comprometidos ou participantes em um inci<strong>de</strong>nte <strong>de</strong> segurança consiste na ampla<br />

existência <strong>de</strong> re<strong>de</strong>s configuradas com faixas <strong>de</strong> en<strong>de</strong>reços IP “falsos” (i.e., nãoroteáveis<br />

na Internet [Rekhter et al. 1996]) e NAT (do inglês, Network Address Translation)<br />

[Egevang and Francis 1994]. Estas re<strong>de</strong>s geralmente utilizam o serviço <strong>de</strong> DHCP<br />

(do inglês, Dynamic Host Configuration Protocol) [Droms 1997], o qual po<strong>de</strong> atribuir<br />

temporariamente e aleatoriamente en<strong>de</strong>reços às máquinas da re<strong>de</strong>. Essa configuração,<br />

adotada em gran<strong>de</strong> parte das instituições, oculta a i<strong>de</strong>ntida<strong>de</strong> precisa das máquinas internas<br />

comprometidas, o que dificulta sobremaneira o tratamento a<strong>de</strong>quado <strong>de</strong> inci<strong>de</strong>ntes.<br />

Outros fatores complicadores, nesse contexto, incluem o elevado volume <strong>de</strong><br />

notificações recebidas e a heterogeneida<strong>de</strong> dos elementos da re<strong>de</strong>. O uso <strong>de</strong> roteadores<br />

e switches <strong>de</strong> fabricantes diversos (caso geral nas instituições) compromete ou limita<br />

a utilização <strong>de</strong> soluções proprietárias. Ainda que o parque organizacional <strong>de</strong> equipamentos<br />

seja o mais homogêneo possível, as soluções proprietárias existentes são significativamente<br />

onerosas, o que po<strong>de</strong> inviabilizar sua adoção. Por fim, mesmo instituições <strong>de</strong><br />

médio e gran<strong>de</strong> porte carecem <strong>de</strong> equipe e ferramentas <strong>de</strong> segurança especializadas para<br />

tratar os principais tipos <strong>de</strong> inci<strong>de</strong>ntes.<br />

De fato, a automatização a<strong>de</strong>quada do processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes po<strong>de</strong><br />

reduzir substancialmente os custos financeiros do tratamento <strong>de</strong> inci<strong>de</strong>ntes (especialmente<br />

o <strong>de</strong> pessoal alocado para esta tarefa) além <strong>de</strong> resolução mais célere dos problemas. No<br />

cenário i<strong>de</strong>al, concretamente, uma ferramenta po<strong>de</strong> automaticamente <strong>de</strong>tectar e isolar as<br />

máquinas comprometidas para, em seguida, acionar a equipe <strong>de</strong> apoio (help<strong>de</strong>sk) a fim<br />

<strong>de</strong> proce<strong>de</strong>r a <strong>de</strong>sinfecção das máquinas. Assim, os analistas <strong>de</strong> segurança, cujo custo <strong>de</strong><br />

contratação é comumente alto, po<strong>de</strong>m se ater ao tratamento <strong>de</strong> inci<strong>de</strong>ntes mais importantes<br />

ou complexos.<br />

30


Diante <strong>de</strong>ste cenário <strong>de</strong> problemas reais, este trabalho <strong>de</strong>screve o <strong>de</strong>senvolvimento<br />

e avaliação <strong>de</strong> uma ferramenta, chamada TRAIRA (Tratamento <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong><br />

Re<strong>de</strong> Automatizado), que automatiza as principais etapas do processo <strong>de</strong> tratamento <strong>de</strong><br />

inci<strong>de</strong>ntes <strong>de</strong> segurança (<strong>de</strong>tecção e contenção da máquina interna causadora do inci<strong>de</strong>nte).<br />

A ferramenta <strong>de</strong>senvolvida foi avaliada em um ambiente real, na re<strong>de</strong> <strong>de</strong> campus<br />

da Universida<strong>de</strong> Fe<strong>de</strong>ral da Bahia (UFBA), on<strong>de</strong> é utilizada como base do processo <strong>de</strong><br />

tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança gerados pela instituição há aproximadamente um<br />

ano, ajudando a equipe <strong>de</strong> segurança a tratar e respon<strong>de</strong>r uma média <strong>de</strong> 30 notificações<br />

<strong>de</strong> inci<strong>de</strong>ntes por semana. O baixo custo <strong>de</strong> implantação e execução da ferramenta indica<br />

a viabilida<strong>de</strong> <strong>de</strong> sua aplicação prática em outros ambientes corporativos.<br />

O restante <strong>de</strong>ste artigo está estruturado da seguinte maneira. A seção 2 <strong>de</strong>staca os<br />

principais <strong>de</strong>safios acerca do processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança; fatores<br />

motivadores para <strong>de</strong>senvolvimento da ferramenta . Em seguida, <strong>de</strong>screvemos a arquitetura<br />

e funcionamento da ferramenta TRAIRA (seção 3), bem como os resultados obtidos<br />

mediante sua utilização em ambientes reais (seção 4). Por fim, discutimos trabalhos correlatos<br />

quanto à automatização do processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança na<br />

seção 5 e apresentamos as consi<strong>de</strong>rações finais e trabalhos futuros na seção 6.<br />

2. Fases e <strong>de</strong>safios no tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança<br />

O guia para tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança do NIST (do inglês, National Institute<br />

of Standards and Technology) [Scarfone et al. 2008] <strong>de</strong>compõe o processo <strong>de</strong> resposta a<br />

inci<strong>de</strong>ntes em quatro fases: Preparação, Detecção e Análise, Contenção, Mitigação e<br />

Recuperação e Ações Pós-Inci<strong>de</strong>nte. A fase <strong>de</strong> Preparação envolve o estabelecimento e<br />

treinamento <strong>de</strong> um grupo <strong>de</strong> resposta a inci<strong>de</strong>ntes, aquisição <strong>de</strong> ferramentas e recursos necessários,<br />

armazenamento dos registros <strong>de</strong> ativida<strong>de</strong>s dos sistemas para futuras auditorias<br />

etc. A fase <strong>de</strong> Detecção e Análise visa <strong>de</strong>tectar ou i<strong>de</strong>ntificar a existência <strong>de</strong> um inci<strong>de</strong>nte.<br />

A fase Contenção, Mitigação e Recuperação, por sua vez, objetiva evitar que os efeitos<br />

do inci<strong>de</strong>nte se propaguem ou afetem outros recursos da re<strong>de</strong>, e restaurar o funcionamento<br />

normal dos serviços afetados. Por fim, a etapa Ações Pós-Inci<strong>de</strong>nte consiste em avaliar o<br />

processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes e verificar a eficácia das soluções adotadas.<br />

Cada uma <strong>de</strong>stas fases requer ações específicas <strong>de</strong> mitigação ou controle. Por<br />

exemplo, na fase <strong>de</strong> <strong>de</strong>tecção e análise, <strong>de</strong>ve-se registrar os recursos afetados (no caso<br />

<strong>de</strong> inci<strong>de</strong>ntes contra a organização) ou a origem do inci<strong>de</strong>nte (no caso <strong>de</strong> inci<strong>de</strong>ntes<br />

originados na organização). Na fase <strong>de</strong> contenção e mitigação <strong>de</strong>ve-se isolar os sistemas<br />

diretamente relacionados ao inci<strong>de</strong>nte e efetuar o tratamento do recurso em questão<br />

(<strong>de</strong>sinfecção <strong>de</strong> uma máquina contaminada com vírus/worm, remoção <strong>de</strong> um artefato malicioso,<br />

recuperação <strong>de</strong> uma página web modificada, etc). No entanto, alguns serviços<br />

comumente utilizados na configuração <strong>de</strong> re<strong>de</strong>s, a exemplo do NAT e DHCP, po<strong>de</strong>m dificultar<br />

consi<strong>de</strong>ravelmente a consecução <strong>de</strong>ssas ações corretivas.<br />

A técnica <strong>de</strong> NAT visa traduzir os en<strong>de</strong>reços IP utilizados na re<strong>de</strong> interna em um<br />

en<strong>de</strong>reço IP (ou faixa <strong>de</strong> en<strong>de</strong>reços) utilizado na re<strong>de</strong> externa (Internet). Os en<strong>de</strong>reços IP<br />

internos são, portanto, <strong>de</strong>sconhecidos dos equipamentos externos, tal qual o número <strong>de</strong><br />

um ramal <strong>de</strong> um telefone é escondido quando efetuada uma ligação via PABX. Assim, a<br />

re<strong>de</strong> externa <strong>de</strong>sconhece o verda<strong>de</strong>iro emissor do pacote. No que tange ao tratamento <strong>de</strong><br />

inci<strong>de</strong>ntes <strong>de</strong> segurança, a principal dificulda<strong>de</strong> adicionada pelo NAT consiste em <strong>de</strong>ter-<br />

31


minar com precisão o en<strong>de</strong>reço IP interno que foi traduzido no en<strong>de</strong>reço IP externo, uma<br />

vez que as notificações <strong>de</strong> inci<strong>de</strong>ntes recebidas <strong>de</strong> fontes externas (e.g. outros CSIRTs)<br />

contêm apenas o en<strong>de</strong>reço IP externo.<br />

Outro agravante resi<strong>de</strong> no uso disseminado do Protocolo <strong>de</strong> Configuração<br />

Dinâmica <strong>de</strong> Hosts (DHCP) [Droms 1997], que permite a um host obter en<strong>de</strong>reço(s) IP, e<br />

outros parâmetros <strong>de</strong> configuração da re<strong>de</strong>, automaticamente. Em uma re<strong>de</strong> com DHCP, é<br />

possível que um mesmo dispositivo possua diferentes en<strong>de</strong>reços IP ao longo do dia, da semana<br />

ou do mês, a <strong>de</strong>pen<strong>de</strong>r da política <strong>de</strong> tempo <strong>de</strong> concessão (lease time) utilizada. Por<br />

isso, limitar a i<strong>de</strong>ntificação da máquina a um en<strong>de</strong>reço IP po<strong>de</strong> ser ineficaz ou produzir<br />

resultados errôneos (o que seria bastante prejudicial em caso <strong>de</strong> bloqueio automatizado da<br />

máquina comprometida). Portanto, atualmente consi<strong>de</strong>ra-se mais a<strong>de</strong>quada a utilização<br />

do en<strong>de</strong>reço MAC (Media Access Control) como i<strong>de</strong>ntificador único do host.<br />

Um terceiro <strong>de</strong>safio para o tratamento <strong>de</strong> inci<strong>de</strong>ntes é a falta <strong>de</strong> gerenciamento<br />

dos registros <strong>de</strong> ativida<strong>de</strong>s (logs) <strong>de</strong> dispositivos. Esses registros são <strong>de</strong> gran<strong>de</strong> valia<br />

quando da ocorrência <strong>de</strong> um inci<strong>de</strong>nte, pois auxiliam a auditoria dos sistemas afetados.<br />

Não obstante, a quantida<strong>de</strong>, volume e varieda<strong>de</strong> dos logs <strong>de</strong> segurança dos sistemas têm<br />

crescido bastante, comprometendo e, por vezes, até inviabilizando, a investigação <strong>de</strong><br />

inci<strong>de</strong>ntes <strong>de</strong> segurança gerados por uma instituição. Essa investigação consiste geralmente<br />

em efetuar buscas nos logs do dispositivo <strong>de</strong> NAT por uma ocorrência do IP e<br />

porta listados na notificação e cuja data e hora estejam em concordância com os dados.<br />

Vale salientar que, consi<strong>de</strong>rando os entraves supracitados, o processo <strong>de</strong> tratamento <strong>de</strong><br />

inci<strong>de</strong>ntes <strong>de</strong> segurança, em muitos casos, ten<strong>de</strong> a ser interrompido nessa etapa. Portanto,<br />

a automatização a<strong>de</strong>quada <strong>de</strong>ssa etapa é <strong>de</strong> fundamental importância para o tratamento<br />

efetivo <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança em tempo hábil.<br />

3. TRAIRA: uma ferramenta para Tratamento Automatizado <strong>de</strong> Inci<strong>de</strong>ntes<br />

<strong>de</strong> Re<strong>de</strong><br />

O TRAIRA é um programa que atua em todas as fases do tratamento <strong>de</strong> inci<strong>de</strong>ntes (a<br />

saber, preparação, <strong>de</strong>tecção e análise, contenção, mitigação e recuperação e ações pósinci<strong>de</strong>nte<br />

[Scarfone et al. 2008]) <strong>de</strong> forma que a <strong>de</strong>tecção e contenção da máquina interna<br />

causadora do inci<strong>de</strong>nte são totalmente automatizadas. Na fase <strong>de</strong> preparação <strong>de</strong>stacam-se<br />

dois recursos requeridos pelo TRAIRA: i) a configuração do serviço <strong>de</strong> logging remoto<br />

do equipamento <strong>de</strong> NAT e ii) a utilização <strong>de</strong> um sistema <strong>de</strong> registro sobre a atribuição <strong>de</strong><br />

IPs, associando-os aos en<strong>de</strong>reços físicos dos dispositivos <strong>de</strong> re<strong>de</strong>: os en<strong>de</strong>reços MAC.<br />

Já na fase <strong>de</strong> <strong>de</strong>tecção e análise, o TRAIRA utiliza os recursos configurados anteriormente<br />

para automaticamente extrair as informações relevantes <strong>de</strong> uma notificação;<br />

buscar por evidências nos logs do dispositivo <strong>de</strong> NAT que informem o(s) IP(s) interno(s)<br />

responsável(veis) pela notificação recebida; associar o en<strong>de</strong>reço IP interno a um en<strong>de</strong>reço<br />

MAC da máquina, <strong>de</strong> forma que sua i<strong>de</strong>ntificação seja única; gerar relatórios e estatísticas<br />

sobre os inci<strong>de</strong>ntes recebidos; e respon<strong>de</strong>r à organização que reportou o inci<strong>de</strong>nte. A fase<br />

<strong>de</strong> contenção implementa políticas <strong>de</strong> cessação da ativida<strong>de</strong> maliciosa através do isolamento<br />

da máquina comprometida como, por exemplo, bloqueio no switch gerenciável<br />

ou roteador mais próximo. Ao final do tratamento <strong>de</strong> uma notificação, o TRAIRA gera<br />

uma resposta automática à organização que reportou o inci<strong>de</strong>nte e também um relatório<br />

<strong>de</strong>talhado para a equipe <strong>de</strong> apoio a fim <strong>de</strong> que as medidas cabíveis sejam aplicadas. No<br />

32


Figura 1. Visão geral da arquitetura do TRAIRA<br />

âmbito <strong>de</strong>sse artigo, serão enfatizadas as fases <strong>de</strong> preparação e <strong>de</strong>tecção e analise e alguns<br />

aspectos relacionados à contenção.<br />

No nosso contexto e em diversas outras instituições, há utilização disseminada<br />

do Request Tracker (RT) [BestPractical 2011] e como sistema <strong>de</strong> help<strong>de</strong>sk e tratamento<br />

inicial <strong>de</strong> inci<strong>de</strong>ntes. A fim <strong>de</strong> preservar o conhecimento e a utilização <strong>de</strong>ssas ferramentas,<br />

o TRAIRA foi i<strong>de</strong>alizado como um aprimoramento do RT através <strong>de</strong> extensões específicas<br />

para o tratamento automatizado <strong>de</strong> inci<strong>de</strong>ntes em re<strong>de</strong>s. Tal <strong>de</strong>cisão <strong>de</strong> projeto reduziu o<br />

tempo e custo <strong>de</strong> <strong>de</strong>senvolvimento, permitindo a reutilização <strong>de</strong> diversas funcionalida<strong>de</strong>s<br />

existentes nessas ferramentas (autenticação, backup, atualização) e da própria base <strong>de</strong><br />

inci<strong>de</strong>ntes <strong>de</strong> segurança pré-existente. Além disso, isso facilita a adoção do TRAIRA por<br />

outras instituições interessadas em incrementar a automatização dos procedimentos <strong>de</strong><br />

tratamento <strong>de</strong> inci<strong>de</strong>ntes.<br />

Na subseção seguinte, a arquitetura e funcionamento do TRAIRA será apresentada<br />

em maiores <strong>de</strong>talhes.<br />

3.1. Arquitetura do TRAIRA<br />

A concepção do TRAIRA foi estruturada em uma arquitetura modular, apresentada na<br />

Figura 1. Nessa figura, os componentes em formato <strong>de</strong> elipse representam os módulos que<br />

foram <strong>de</strong>senvolvidos como parte do TRAIRA e os componentes em formato <strong>de</strong> retângulo<br />

representam programas ou recursos externos necessários ao funcionamento do TRAIRA.<br />

Os cinco módulos do TRAIRA são: Parser, NAT Mapping, IP2MAC, Post-Detection e<br />

Containment. A seguir, apresentamos uma breve <strong>de</strong>scrição das funcionalida<strong>de</strong>s <strong>de</strong>sses<br />

módulos.<br />

• Parser: Responsável pelo recebimento da notificação e pela extração das<br />

informações essenciais ao tratamento do inci<strong>de</strong>nte: en<strong>de</strong>reço IP e porta <strong>de</strong> origem,<br />

data e horário.<br />

• NAT Mapping: Utiliza as informações extraídas pelo parser e realiza<br />

uma busca nos logs do dispositivo <strong>de</strong> NAT para associar a tupla<br />

a um en<strong>de</strong>reço IP interno, responsável <strong>de</strong><br />

fato pelo inci<strong>de</strong>nte.<br />

33


• IP2MAC: aqui é feita a associação do IP interno ao en<strong>de</strong>reço MAC da máquina.<br />

Esse passo é importante em instituições que utilizam o DHCP, pois um IP po<strong>de</strong><br />

ter sido usado por mais <strong>de</strong> uma máquina ao longo do tempo.<br />

• Post-Detection: Responsável pela extração <strong>de</strong> dados da notificação e do tratamento<br />

realizado a fim <strong>de</strong> gerar estatísticas sobre os inci<strong>de</strong>ntes, gerar relatórios<br />

à equipe <strong>de</strong> help<strong>de</strong>sk (para, por exemplo, efetuar o isolamento e <strong>de</strong>sinfecção da<br />

máquina) e respon<strong>de</strong>r à instituição que reportou o inci<strong>de</strong>nte.<br />

• Containment: Neste módulo é feito o isolamento do host que causou o inci<strong>de</strong>nte<br />

para evitar que ele continue com a ativida<strong>de</strong> maliciosa na re<strong>de</strong> ou afete outros<br />

recursos.<br />

O TRAIRA foi <strong>de</strong>senvolvido como uma extensão do RT, permitindo que o tratamento<br />

dos inci<strong>de</strong>ntes <strong>de</strong> segurança seja feito tanto pela interface web, on<strong>de</strong> o usuário<br />

fornece manualmente a notificação do inci<strong>de</strong>nte, quanto via e-mail quando a organização<br />

que reporta o inci<strong>de</strong>nte envia uma mensagem para um en<strong>de</strong>reço <strong>de</strong> e-mail especialmente<br />

<strong>de</strong>signado para este fim. Foi utilizada a linguagem <strong>de</strong> programação Perl, com a qual o<br />

próprio RT foi implementado. Em sua primeira versão, possui aproximadamente 2.500<br />

linhas <strong>de</strong> código entre interfaces <strong>de</strong> usuário, núcleo da aplicação, módulos <strong>de</strong> interface<br />

com recursos externos (logs, tabela <strong>de</strong> en<strong>de</strong>reços MAC, etc) e <strong>de</strong>mais componentes. O<br />

TRAIRA é distribuído sob a licença GPLv2 ou superior 1 e encontra-se disponível para<br />

download em [TRAIRA 2011].<br />

Tratamento <strong>de</strong> Inci<strong>de</strong>ntes no TRAIRA<br />

O tratamento <strong>de</strong> inci<strong>de</strong>ntes automatizados pelo TRAIRA segue um fluxo <strong>de</strong> trabalho composto<br />

pelas etapas a seguir.<br />

1. Uma entida<strong>de</strong> (interna ou externa) submete uma notificação ao TRAIRA reportando<br />

um inci<strong>de</strong>nte <strong>de</strong> segurança. Essa notificação <strong>de</strong>ve conter evidências suficientes<br />

para comprovar a ativida<strong>de</strong> maliciosa e incluir, no mínimo, o en<strong>de</strong>reço<br />

IP, porta <strong>de</strong> origem, data, hora e timezone da ocorrência. A entida<strong>de</strong> que reporta<br />

inci<strong>de</strong>ntes po<strong>de</strong> ser materializada nos CSIRTs (e.g., CAIS, CERT.br), em sensores<br />

<strong>de</strong> monitoramento <strong>de</strong> ativida<strong>de</strong>s maliciosas (IDSs, honeypots etc) ou até mesmo<br />

em usuários que submetem inci<strong>de</strong>ntes através da interface web;<br />

2. O TRAIRA verifica se existe um parser específico para o tipo <strong>de</strong> notificação recebido.<br />

Em caso afirmativo, o parser extrai os dados importantes da notificação e<br />

o tratamento avança para a <strong>de</strong>tecção da máquina interna. Caso inexista um parser<br />

apropriado, a notificação permanece em aberto no RT aguardando pelo tratamento<br />

manual da equipe <strong>de</strong> segurança;<br />

3. A partir dos dados extraídos da notificação (tupla<br />

) é feita uma busca nos logs do dispositivo<br />

<strong>de</strong> NAT para <strong>de</strong>terminar o respectivo en<strong>de</strong>reço IP da máquina da re<strong>de</strong><br />

interna;<br />

4. De posse do en<strong>de</strong>reço IP da máquina causadora do inci<strong>de</strong>nte, é realizada uma<br />

busca para <strong>de</strong>scobrir o respectivo en<strong>de</strong>reço MAC;<br />

1 GPL é uma sigla usada para GNU Public License, uma licença <strong>de</strong> software livre especificada pela Free<br />

Software Foundation.<br />

34


5. Caso o módulo <strong>de</strong> Contenção esteja habilitado para executar automaticamente, a<br />

máquina em questão (representado pelo MAC obtido na etapa anterior) é bloqueado<br />

ou movido para uma Re<strong>de</strong> Virtual (VLAN) <strong>de</strong> quarentena;<br />

6. De posse do en<strong>de</strong>reço MAC e do resultado do módulo <strong>de</strong> Contenção, o TRAIRA<br />

notifica a equipe <strong>de</strong> help<strong>de</strong>sk para tomada das medidas cabíveis;<br />

7. Uma resposta automática (e-mail) é enviada à instituição produtora da notificação<br />

para informar a i<strong>de</strong>ntificação da máquina causadora do inci<strong>de</strong>nte e o início dos<br />

procedimentos <strong>de</strong> tratamento e recuperação.<br />

Diante do exposto, o TRAIRA automatiza completamente o processo inicial <strong>de</strong><br />

tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança. Cabe ainda ao administrador executar as providências<br />

necessárias para resolução do inci<strong>de</strong>nte, a exemplo da <strong>de</strong>sinfecção <strong>de</strong> máquinas<br />

contaminadas com vírus/worm ou aplicar as medidas administrativas cabíveis à uma<br />

violação <strong>de</strong> copyright. Vale salientar, entretanto, que, em virtu<strong>de</strong> do consi<strong>de</strong>rável volume<br />

<strong>de</strong> notificações recebidos pelas instituições e a carência <strong>de</strong> pessoal especializado<br />

e em número suficiente para respon<strong>de</strong>r às notificações, a etapa <strong>de</strong> <strong>de</strong>tecção ten<strong>de</strong>, muitas<br />

vezes, a nem ser iniciada. As etapas <strong>de</strong>scritas acima são executadas <strong>de</strong> forma on-line.<br />

Portanto, assim que um inci<strong>de</strong>nte é reportado ao TRAIRA, seu tratamento tem início imediato.<br />

Assim, o TRAIRA proporciona uma importante contribuição para o processo <strong>de</strong><br />

tratamento e resposta aos inci<strong>de</strong>ntes <strong>de</strong> segurança <strong>de</strong> uma instituição.<br />

As subseções seguintes visam <strong>de</strong>talhar duas etapas importantes do tratamento do<br />

inci<strong>de</strong>nte pelo TRAIRA: <strong>de</strong>tecção e isolamento do host responsável pelo inci<strong>de</strong>nte.<br />

3.2. Detecção do host responsável pelo inci<strong>de</strong>nte<br />

Apesar <strong>de</strong> suas <strong>de</strong>svantagens [Egevang and Francis 1994, Seção 4], o NAT é uma técnica<br />

bastante utilizada pelas instituições <strong>de</strong> ensino e pesquisa conectadas à Internet, principalmente<br />

pela possibilida<strong>de</strong> <strong>de</strong> economia <strong>de</strong> en<strong>de</strong>reços IPv4 e ocultação da topologia da<br />

re<strong>de</strong> interna. Por outro lado, sua utilização traz implicações no tratamento <strong>de</strong> inci<strong>de</strong>ntes<br />

<strong>de</strong> segurança, uma vez que o en<strong>de</strong>reço listado na notificação não representa diretamente a<br />

máquina da re<strong>de</strong> interna que realmente causou o inci<strong>de</strong>nte. Nesse caso, faz-se necessário<br />

um mapeamento entre o IP e porta listados na notificação e o IP interno que causou o<br />

inci<strong>de</strong>nte. Para realizar esse mapeamento, o módulo NATMapping utiliza as informações<br />

extraídas pelo Parser e as correlaciona aos logs do(s) dispositivo(s) <strong>de</strong> NAT, retornando<br />

o(s) IP(s) internos responsáveis pelo inci<strong>de</strong>nte.<br />

O processo <strong>de</strong> correlacionar essas duas entradas, no entanto, não é uma tarefa trivial.<br />

É necessário consi<strong>de</strong>rar a gran<strong>de</strong> diversida<strong>de</strong> <strong>de</strong> dispositivos <strong>de</strong> NAT disponíveis<br />

(cada um <strong>de</strong>les po<strong>de</strong> produzir logs <strong>de</strong> forma específica), o gran<strong>de</strong> volume <strong>de</strong> dados a serem<br />

processados e, ainda pior, a correspondência entre a data/horário que é listado na<br />

notificação e aqueles listados nos logs. Para lidar com este último problema, a ferramenta<br />

incorpora a <strong>de</strong>finição <strong>de</strong> um valor, configurável, <strong>de</strong> tolerância temporal entre os horários<br />

da notificação e dos logs. O valor mais a<strong>de</strong>quado para uma instituição <strong>de</strong>pen<strong>de</strong> das características<br />

da re<strong>de</strong>. Um fator obrigatório a ser observado nessa <strong>de</strong>finição é a relação<br />

<strong>de</strong> máquinas da re<strong>de</strong> interna por IP <strong>de</strong> NAT: quanto mais máquinas são associadas a um<br />

único NAT, maior será a taxa <strong>de</strong> reaproveitamento <strong>de</strong> portas e, consequentemente, menor<br />

po<strong>de</strong>rá ser a tolerância à diferença nos relógios.<br />

Para tratar da diversida<strong>de</strong> na utilização <strong>de</strong> dispositivos <strong>de</strong> NAT nas instituições,<br />

35


e, até mesmo internamente à uma instituição (com diferentes dispositivos <strong>de</strong> NAT<br />

por segmento <strong>de</strong> re<strong>de</strong>), o módulo NATMapping foi <strong>de</strong>senvolvido <strong>de</strong> forma que seja<br />

possível <strong>de</strong>finir um dispositivo <strong>de</strong> NAT para cada segmento <strong>de</strong> re<strong>de</strong> (levando-se em<br />

consi<strong>de</strong>ração a sobreposição entre segmentos) e um dispositivo padrão a ser usado<br />

caso não haja uma <strong>de</strong>finição específica para <strong>de</strong>terminado segmento <strong>de</strong> re<strong>de</strong>. Por<br />

exemplo, o administrador po<strong>de</strong> <strong>de</strong>finir que a re<strong>de</strong> 200.128.99.0/24 utiliza o<br />

ASA/Cisco, já a re<strong>de</strong> 200.128.196.0/23 utiliza IPTables/Netfilter com exceção<br />

da sub-re<strong>de</strong> 200.128.197.0/28 que também utiliza ASA/Cisco e, finalmente, a<br />

re<strong>de</strong> 200.128.199.0/24 não utiliza NAT. Note que o mapeamento acima é sobre<br />

uma visão externa ou, mais especificamente, consi<strong>de</strong>rando os dados da notificação.<br />

Essa flexibilida<strong>de</strong> <strong>de</strong> configuração permite, por exemplo, <strong>de</strong>finir as re<strong>de</strong>s privadas<br />

[Rekhter et al. 1996] como “sem NAT”, o que viabiliza também o tratamento <strong>de</strong><br />

inci<strong>de</strong>ntes internos (<strong>de</strong>tectados a partir <strong>de</strong> sensores posicionados na re<strong>de</strong> interna).<br />

3.3. Isolamento do host responsável pelo inci<strong>de</strong>nte<br />

A etapa <strong>de</strong> isolamento efetua a contenção do host <strong>de</strong>tectado anteriormente para evitar<br />

que ele continue com a ativida<strong>de</strong> maliciosa na re<strong>de</strong> ou comprometa outros recursos.<br />

Esta contenção po<strong>de</strong> acontecer por diversas vias: <strong>de</strong>sligamento da máquina, remoção<br />

do cabo <strong>de</strong> re<strong>de</strong>, bloqueio no dispositivo <strong>de</strong> re<strong>de</strong> gerenciável mais próximo etc. Essa<br />

última alternativa é mais interessante do ponto <strong>de</strong> vista <strong>de</strong> automatização. Em contrapartida,<br />

o inconveniente é que o usuário <strong>de</strong>sconhece a razão pela qual sua estação está<br />

sem comunicação na re<strong>de</strong>. Nesse sentido, uma técnica mais apropriada, proposta em<br />

[Kaiser et al. 2006], consiste em direcionar o tráfego <strong>de</strong> re<strong>de</strong> do host comprometido para<br />

uma VLAN <strong>de</strong> quarentena. Nesta VLAN, as requisições do usuário seriam encaminhadas<br />

a uma página web da instituição que informa sobre o bloqueio preventivo da máquina e<br />

ações que este <strong>de</strong>ve tomar (e.g., contactar imediatamente o help<strong>de</strong>sk).<br />

Tal abordagem <strong>de</strong> contenção tem sido reiteradamente consi<strong>de</strong>rada na literatura,<br />

principalmente, através do uso <strong>de</strong> ferramentas como firewall e IDS. Não obstante, essa<br />

abordagem mostra-se ineficiente do ponto <strong>de</strong> vista <strong>de</strong> propagação da ativida<strong>de</strong> maliciosa<br />

na re<strong>de</strong> local do host <strong>de</strong>tectado, pois, para os segmentos diretamente conectados, os pacotes<br />

não trafegam pelo firewall ou IDS. De fato, o bloqueio mais eficaz po<strong>de</strong> ser realizado<br />

na camada 2 (Layer 2), por exemplo, nos switches gerenciáveis ao qual o host comprometido<br />

está conectado. Devido à possível variação no ambiente <strong>de</strong> re<strong>de</strong> das instituições,<br />

o TRAIRA consi<strong>de</strong>ra três estratégias possíveis para etapa <strong>de</strong> isolamento do processo <strong>de</strong><br />

tratamento <strong>de</strong> um inci<strong>de</strong>nte: i) bloqueio do host no equipamento <strong>de</strong> firewall, ii) bloqueio<br />

no switch gerenciável mais próximo ao host <strong>de</strong>tectado, iii) direcionamento do host para<br />

uma VLAN <strong>de</strong> quarentena.<br />

Cada uma <strong>de</strong>ssas estratégias possui vantagens, <strong>de</strong>svantagens e requisitos <strong>de</strong><br />

implantação específicos. Portanto, a <strong>de</strong>cisão final acerca da política mais apropriada <strong>de</strong>pen<strong>de</strong><br />

das características <strong>de</strong> cada instituição. A opção mais simples consiste no bloqueio<br />

do host no equipamento <strong>de</strong> firewall. Essa estratégia mostra-se eficaz para contenção <strong>de</strong><br />

ataques cujo <strong>de</strong>stino seja outra instituição ou esteja em outro segmento <strong>de</strong> re<strong>de</strong> ao qual<br />

host <strong>de</strong>tectado pertence. Também possibilita a criação <strong>de</strong> regras para redirecionar <strong>de</strong><br />

forma transparente o tráfego oriundo do host comprometido para uma página web, a qual<br />

informa ao usuário o bloqueio <strong>de</strong> sua máquina e explica a razão para tal ação. Contudo,<br />

não aten<strong>de</strong> ao tratamento da propagação <strong>de</strong> ativida<strong>de</strong> maliciosa na re<strong>de</strong> local. O requisito<br />

36


<strong>de</strong> implantação consiste basicamente no suporte à criação <strong>de</strong> filtros <strong>de</strong> pacotes e regras<br />

<strong>de</strong> redirecionamento baseadas em en<strong>de</strong>reço MAC no firewall da instituição (característica<br />

comumente encontrada nos firewalls mais usados).<br />

Outra variante mais completa consiste em direcionar o tráfego do host comprometido<br />

para uma VLAN <strong>de</strong> quarentena no nível da camada <strong>de</strong> enlace, o que evita o<br />

problema supracitado <strong>de</strong> ativida<strong>de</strong> maliciosa na re<strong>de</strong> local e simplifica sobremaneira o<br />

procedimento <strong>de</strong> contenção. Entretanto, esta opção tem requisitos <strong>de</strong> implantação mais<br />

complexos. É necessário que a máquina esteja conectada em algum switch que possibilite<br />

a criação <strong>de</strong> filtros (ACLs) para modificar a VLAN baseado no en<strong>de</strong>reço MAC <strong>de</strong> origem<br />

dos pacotes. Tal funcionalida<strong>de</strong> é também conhecida como MAC-based VLAN. Todavia,<br />

em pesquisas realizadas, constatamos que apenas um fabricante <strong>de</strong> equipamentos <strong>de</strong> re<strong>de</strong><br />

implementa essa funcionalida<strong>de</strong>. Consi<strong>de</strong>rando a efetivida<strong>de</strong> <strong>de</strong>ssa solução, <strong>de</strong>cidimos<br />

reorientar nossos procedimentos <strong>de</strong> compra para a aquisição <strong>de</strong> novos equipamentos com<br />

esta funcionalida<strong>de</strong>.<br />

4. Avaliação experimental e resultados obtidos<br />

Des<strong>de</strong> a implantação do TRAIRA na re<strong>de</strong> da UFBA em setembro <strong>de</strong> 2010, todas as<br />

notificações <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança recebidas pela equipe (sejam aquelas enviadas<br />

por ferramentas <strong>de</strong> monitoramento interno, tais como honeypots, IDSs, ou as enviadas<br />

pelos grupos <strong>de</strong> segurança, tais como CAIS e CERT.br) tem sido tratados automaticamente.<br />

Por exemplo, as notificações <strong>de</strong> inci<strong>de</strong>nte relacionadas ao projeto Honeypot.BR<br />

do CERT.br [Honeynet.BR 2011], do qual a UFBA participa, correspon<strong>de</strong>m a uma média<br />

diária <strong>de</strong> 5 a 10 notificações, e cada notificação contém cerca <strong>de</strong> 20 inci<strong>de</strong>ntes.<br />

Um recurso fundamental aos grupos <strong>de</strong> resposta a inci<strong>de</strong>ntes <strong>de</strong> segurança<br />

(CSIRTs) consiste na produção <strong>de</strong> estatísticas relevantes ao contexto <strong>de</strong> tratamento<br />

<strong>de</strong> inci<strong>de</strong>ntes e tomada <strong>de</strong> <strong>de</strong>cisão para a alta administração [Arvidsson et al. 2001].<br />

A obtenção <strong>de</strong> tais dados auxiliam os CSIRTs a <strong>de</strong>tectar tendências, prever futuros<br />

ataques em gran<strong>de</strong> escala e direcionar ativida<strong>de</strong>s, <strong>de</strong>ntre outros. A implementação<br />

atual do TRAIRA fornece estatísticas importantes geradas automaticamente a partir <strong>de</strong><br />

informações retiradas da notificação recebida e do tratamento efetuado. A seguir, discutiremos<br />

os resultados obtidos a partir <strong>de</strong>ssas estatísticas.<br />

Situação e taxa <strong>de</strong> tratamento dos inci<strong>de</strong>ntes. O gráfico quantitativo (Figura 2)<br />

po<strong>de</strong> ser utilizado para aferir a efetivida<strong>de</strong> do tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança na<br />

instituição. Neste âmbito, são listados os inci<strong>de</strong>ntes reportados versus os que foram resolvidos.<br />

No caso i<strong>de</strong>al, espera-se que a linha <strong>de</strong> inci<strong>de</strong>ntes resolvidos esteja o mais próximo<br />

possível da linha dos inci<strong>de</strong>ntes reportados.<br />

Tendo em vista que a re<strong>de</strong> da UFBA conta mais <strong>de</strong> 12.000 equipamentos, o tratamento<br />

<strong>de</strong> todas essas notificações era extremamente custoso, do ponto <strong>de</strong> vista <strong>de</strong> alocação<br />

<strong>de</strong> pessoal qualificado. Conforme po<strong>de</strong> ser visto na Figura 2 (extraída do TRAIRA),<br />

<strong>de</strong>s<strong>de</strong> o início <strong>de</strong> 2011, nossa instituição recebeu mais <strong>de</strong> 550 notificações, sendo que a<br />

gran<strong>de</strong> maioria <strong>de</strong>las foi tratada automaticamente pelo TRAIRA. Nesta figura, uma linha<br />

representa os inci<strong>de</strong>ntes reportados, enquanto a outra indica quais <strong>de</strong>stes inci<strong>de</strong>ntes foram<br />

tratados automaticamente pelo TRAIRA. Portanto, a proximida<strong>de</strong> das linhas indica a<br />

eficácia do uso da ferramenta no tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança.<br />

37


Figura 2. Situação do tratamento <strong>de</strong> inci<strong>de</strong>ntes reportados a UFBA entre janeiro<br />

a julho <strong>de</strong> 2011<br />

Segmentação <strong>de</strong> inci<strong>de</strong>ntes por Re<strong>de</strong> Virtual (VLAN). Nossa re<strong>de</strong> institucional é estruturada<br />

em VLANs a fim <strong>de</strong> estabelecer políticas <strong>de</strong> controle <strong>de</strong> acesso e segmentação<br />

<strong>de</strong> tráfego. Atualmente, diversas instituições têm adotado esse mo<strong>de</strong>lo como facilitador<br />

da administração <strong>de</strong> grupos <strong>de</strong> usuários e recursos em re<strong>de</strong>s <strong>de</strong> campus e <strong>de</strong> larga escala.<br />

A Figura 3 apresenta tal gráfico para a UFBA no período <strong>de</strong> janeiro a julho <strong>de</strong><br />

2011. Esse gráfico ressalta as VLANs (cujos nomes reais foram sombreados por questões<br />

<strong>de</strong> segurança e privacida<strong>de</strong>) que mais impactam na geração <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança,<br />

o que permite direcionar medidas <strong>de</strong> prevenção específicas. Tais dados são fundamentais<br />

para re<strong>de</strong>s <strong>de</strong> campus ou extensas, visto que há forte tendência nas instituições em<br />

administrar re<strong>de</strong>s por meio <strong>de</strong> uma estruturada combinada <strong>de</strong> VLANs.<br />

Figura 3. As <strong>de</strong>z principais VLANs geradoras <strong>de</strong> inci<strong>de</strong>ntes na re<strong>de</strong> UFBA (janeiro<br />

a julho <strong>de</strong> 2011)<br />

Em nosso ambiente institucional, a análise das estatísticas produzidas pelo<br />

TRAIRA permitiram a i<strong>de</strong>ntificação precisa das principais sub-re<strong>de</strong>s geradoras <strong>de</strong><br />

inci<strong>de</strong>ntes. Com base nesse resultado, pô<strong>de</strong>-se iniciar um trabalho específico e direcionado<br />

aos usuários, dirigentes e administradores <strong>de</strong>stas sub-re<strong>de</strong>s visando i<strong>de</strong>ntificar o<br />

motivo da ativida<strong>de</strong> maliciosa e implantar estratégias <strong>de</strong> controle e mitigação.<br />

38


I<strong>de</strong>ntificação <strong>de</strong> máquinas reinci<strong>de</strong>ntes. Esta métrica indica a taxa <strong>de</strong> reincidência na<br />

geração <strong>de</strong> inci<strong>de</strong>ntes em <strong>de</strong>terminado host. Po<strong>de</strong> ser usada como indicador qualitativo<br />

do tratamento e pós-tratamento <strong>de</strong> inci<strong>de</strong>ntes. A interpretação <strong>de</strong>sse dado po<strong>de</strong> levantar<br />

diversas hipóteses, tais como: a fase <strong>de</strong> isolamento e <strong>de</strong>sinfecção está sendo ineficaz; no<br />

caso dos inci<strong>de</strong>ntes <strong>de</strong> vírus/worm po<strong>de</strong> indicar inexperiência ou <strong>de</strong>sleixo do usuário no<br />

uso do recurso, propiciando novas infecções com facilida<strong>de</strong>; <strong>de</strong>ntre outros.<br />

A automatização proporcionada pelo TRAIRA simplifica o procedimento <strong>de</strong> tratamento<br />

dos principais inci<strong>de</strong>ntes, pois a equipe <strong>de</strong> help<strong>de</strong>sk apenas recebe o en<strong>de</strong>reço<br />

MAC dos dispositivos suspeitos i<strong>de</strong>ntificados pelo sistema e realiza o tratamento das<br />

máquinas. A resposta às notificações que envolvem contenção automática é praticamente<br />

instantânea, quando comparada à abordagem manual em que cada inci<strong>de</strong>nte era resolvido<br />

em cerca <strong>de</strong> 30 minutos. Tal <strong>de</strong>mora ensejava, por vezes, o não atendimento <strong>de</strong> algumas<br />

notificações por restrições <strong>de</strong> tempo da equipe. A economia <strong>de</strong> tempo na i<strong>de</strong>ntificação e<br />

contenção da máquina comprometida representa um ganho qualitativo fundamental frente<br />

às instituições externas que reportam inci<strong>de</strong>ntes, bem como em celerida<strong>de</strong> e precisão em<br />

relação ao cessamento da propagação <strong>de</strong> ativida<strong>de</strong>s maliciosas na re<strong>de</strong> interna.<br />

5. Trabalhos correlatos<br />

A literatura apresenta uma série <strong>de</strong> trabalhos que versam sobre a <strong>de</strong>finição <strong>de</strong> políticas<br />

<strong>de</strong> segurança e tratamento dos inci<strong>de</strong>ntes [Ceron et al. 2009, Scarfone et al. 2008,<br />

Werlinger et al. 2007, Lun<strong>de</strong>ll 2009], porém, no melhor <strong>de</strong> nosso conhecimento, poucos<br />

<strong>de</strong>les têm se preocupado com a automatização do procedimento a fim <strong>de</strong> minorar custos<br />

e reduzir o tempo <strong>de</strong> tratamento dos inci<strong>de</strong>ntes.<br />

De maneira geral, a maioria dos CSIRTs usa sistemas <strong>de</strong> help<strong>de</strong>sk customizados<br />

(também conhecidos como sistemas <strong>de</strong> chamados) para tratar seus inci<strong>de</strong>ntes, a fim <strong>de</strong><br />

melhor aten<strong>de</strong>r às <strong>de</strong>mandas do processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes [Kaiser et al. 2006].<br />

Dois sistemas bem conhecidos são o Request Tracker (RT) [BestPractical 2011] e o Open<br />

Source Ticket Request System (OTRS) [OTRS 2011]. Existe ainda uma extensão para<br />

o RT chamada Request Tracker for Inci<strong>de</strong>nt Response (RTIR), que se concentra na resposta<br />

aos inci<strong>de</strong>ntes <strong>de</strong> segurança (classificação <strong>de</strong> inci<strong>de</strong>ntes, geração <strong>de</strong> estatísticas,<br />

etc.). Até nosso conhecimento, nenhuma <strong>de</strong>ssas ferramentas, no entanto, atua especificamente<br />

na automatização do processo <strong>de</strong> tratamento e resposta a inci<strong>de</strong>ntes. Outros<br />

frameworks e ferramentas específicos incluem o SIRIOS [KLINGMÜLLER 2005], que<br />

apresenta algumas funcionalida<strong>de</strong>s interessantes, como a <strong>de</strong> gerenciamento <strong>de</strong> contatos <strong>de</strong><br />

segurança <strong>de</strong> uma instituição e a possibilida<strong>de</strong> <strong>de</strong> troca <strong>de</strong> informações <strong>de</strong> segurança com<br />

outros CSIRTs. O SANS Institute <strong>de</strong>senvolveu o Orion [Jarocki 2010], uma distribuição<br />

em Live-CD baseada no BackTrack para o tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança. Apesar<br />

<strong>de</strong> prover boas ferramentas para tratamento, o Orion ainda lida precariamente com a<br />

contenção <strong>de</strong> inci<strong>de</strong>ntes em re<strong>de</strong>s.<br />

Em [Kaiser et al. 2006] os autores propõem um gerenciamento semiautomatizado<br />

dos inci<strong>de</strong>ntes <strong>de</strong> segurança, on<strong>de</strong> os inci<strong>de</strong>ntes menos importantes<br />

são tratados pelo próprio usuário envolvido, ao passo que os inci<strong>de</strong>ntes mais sérios são<br />

encaminhados para uma equipe <strong>de</strong> segurança qualificada. Para possibilitar ao usuário<br />

não-especializado tratar um inci<strong>de</strong>nte, a instituição <strong>de</strong>ve prover documentação suficiente<br />

e compreensível sobre as questões técnicas e organizacionais relacionadas. Os autores<br />

39


propõem um sistema <strong>de</strong> gerenciamento <strong>de</strong> inci<strong>de</strong>ntes, o PRISM (Portal for Reporting<br />

Inci<strong>de</strong>nts and Solution Management), que consiste em três componentes. O primeiro<br />

recebe as notificações no formato IDMEF 2 . O segundo componente contém a lógica<br />

para tratamento <strong>de</strong> inci<strong>de</strong>ntes e medidas corretivas relacionadas. Por fim, o terceiro<br />

componente é responsável pela geração <strong>de</strong> páginas web dinâmicas que informam aos<br />

usuários as soluções indicadas para o inci<strong>de</strong>nte reportado. Entretanto, essa solução não<br />

contempla o tratamento <strong>de</strong> notificações externas, as quais requerem, por exemplo, a<br />

resolução <strong>de</strong> mapeamento entre o NAT efetuado e as máquinas internas.<br />

Farnham [Farnham 2009] apresenta uma solução proprietária da Cisco, chamada<br />

Cisco Security Agent (CSA), e seu impacto nas várias fases do tratamento <strong>de</strong> inci<strong>de</strong>ntes.<br />

O CSA é um sistema <strong>de</strong> prevenção <strong>de</strong> intrusão baseado em hosts (HIPS, do inglês Host<br />

Intrusion Prevention System) que po<strong>de</strong> ser usado tanto em servidores quanto em máquinas<br />

clientes. No CSA, cada host possui um agente e um centro <strong>de</strong> gerenciamento, que <strong>de</strong>fine<br />

as políticas <strong>de</strong> segurança do host e centraliza o registro <strong>de</strong> eventos (logging). O software é<br />

baseado em regras e examina as ativida<strong>de</strong>s do sistema (no agente) e o tráfego <strong>de</strong> re<strong>de</strong> a fim<br />

<strong>de</strong> diferenciar comportamentos normais daqueles indicadores <strong>de</strong> uma anomalia ou ataque.<br />

O autor analisa a a<strong>de</strong>quação do CSA nas etapas <strong>de</strong> tratamento <strong>de</strong> um inci<strong>de</strong>nte, usando<br />

como estudo <strong>de</strong> caso o software malicioso Conficker 3 . As <strong>de</strong>svantagens <strong>de</strong>ssa solução<br />

estão relacionados, principalmente, ao alto custo <strong>de</strong> implantação e <strong>de</strong> sua ina<strong>de</strong>quação a<br />

ambientes heterogêneos <strong>de</strong> re<strong>de</strong>.<br />

Em [Ceron et al. 2010], propõe-se uma arquitetura voltada para <strong>de</strong>tecção e<br />

contenção automatizada <strong>de</strong> máquinas participantes <strong>de</strong> botnets. A arquitetura i) coleta arquivos<br />

binários maliciosos (e.g., através <strong>de</strong> honeypots), ii) extrai informações dos binários<br />

coletados (tais como tentativas <strong>de</strong> acesso a en<strong>de</strong>reços IP suspeitos), iii) utiliza essas<br />

informações na geração <strong>de</strong> assinaturas e monitoramento do tráfego <strong>de</strong> re<strong>de</strong> da instituição,<br />

e iv) prevê a contenção automatizada <strong>de</strong>ssas máquinas por meio, por exemplo, do bloqueio<br />

no firewall daqueles en<strong>de</strong>reços IPs i<strong>de</strong>ntificados. Até nosso conhecimento, o trabalho não<br />

consi<strong>de</strong>ra a tradução automática <strong>de</strong> en<strong>de</strong>reços via NAT e DHCP, enfatizando o tratamento<br />

<strong>de</strong> um tipo específico <strong>de</strong> inci<strong>de</strong>nte: máquinas participantes <strong>de</strong> botnets. Outra limitação<br />

resi<strong>de</strong> no fato da contenção basear-se apenas no en<strong>de</strong>reço IP do host <strong>de</strong>tectado e ser realizada<br />

no firewall da instituição. Tal bloqueio, infelizmente, não previne a propagação <strong>de</strong><br />

ativida<strong>de</strong> maliciosa na re<strong>de</strong> local. Por essas razões, o TRAIRA utiliza o en<strong>de</strong>reço MAC<br />

como i<strong>de</strong>ntificador <strong>de</strong> host (que, apesar da possibilida<strong>de</strong> <strong>de</strong> alteração, requer conhecimentos<br />

avançados para efetuá-la) e permite a escolha da estratégia <strong>de</strong> contenção: bloqueio no<br />

equipamento gerenciável mais próximo ou direcionamento para VLAN <strong>de</strong> quarentena.<br />

2 Motivado pela necessida<strong>de</strong> <strong>de</strong> se <strong>de</strong>finir um padrão <strong>de</strong> arquitetura e comunicação para Sistemas <strong>de</strong><br />

Detecção <strong>de</strong> Intrusão (IDS, do inglês Intrusion Detection System), o IETF, através do grupo <strong>de</strong> trabalho<br />

IDWG (Intrusion Detection Working Group) especificou o protocolo IDXP (Intrusion Detection Exchange<br />

Protocol) [Feinstein and Matthews 2007] e um formato para troca <strong>de</strong> alertas entre IDSs, <strong>de</strong>nominado ID-<br />

MEF (Intrusion Detection Message Exchange Format) [Debar et al. 2007]. Apesar <strong>de</strong> originalmente concebidos<br />

para uso em sistemas IDS, esses padrões também são bastante utilizados para notificações <strong>de</strong><br />

inci<strong>de</strong>ntes <strong>de</strong> segurança.<br />

3 O Conficker, também conhecido como Downadup ou Kido, é um worm que ficou bastante conhecido<br />

pelo número <strong>de</strong> sistemas que conseguiu infectar ao redor do mundo. Ele explora uma vulnerabilida<strong>de</strong><br />

conhecida do MS Windows Server (MS08-067) e po<strong>de</strong> comprometer uma série <strong>de</strong> versões do Windows<br />

[CWG 2011].<br />

40


6. Consi<strong>de</strong>rações finais<br />

Este trabalho apresentou o projeto, implementação e avaliação <strong>de</strong> uma ferramenta para<br />

automatizar o processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança em re<strong>de</strong>s <strong>de</strong> campus<br />

e <strong>de</strong> larga escala. A ferramenta atua em todas etapas do tratamento <strong>de</strong> um inci<strong>de</strong>nte,<br />

o que permite melhor aproveitamento dos recursos humanos <strong>de</strong>stinados à gestão e<br />

operacionalização da segurança da informação.<br />

Os requisitos <strong>de</strong> hardware e software necessários à implantação e execução <strong>de</strong>ssa<br />

solução são triviais e muito pouco onerosos, o que reforça a viabilida<strong>de</strong> <strong>de</strong> sua aplicação<br />

prática em ambientes complexos e heterogêneos, tais como instituições acadêmicas <strong>de</strong><br />

ensino e pesquisa, governamentais ou corporações privadas.<br />

Atualmente, o TRAIRA encontra-se em produção e uso efetivo na re<strong>de</strong> <strong>de</strong> campus<br />

da UFBA <strong>de</strong>s<strong>de</strong> setembro <strong>de</strong> 2010, sendo usado como ferramenta primária no tratamento<br />

do ciclo <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança das notificações recebidas pela instituição e produzidas<br />

internamente. Em verda<strong>de</strong>, baseados em nossas <strong>de</strong>mandas e na situação existentes<br />

em outras instituições parceiras, consi<strong>de</strong>ramos que os problemas solucionados pela<br />

ferramenta são úteis a diversas instituições. Assim, nossa intenção é compartilhar nossa<br />

experiência no <strong>de</strong>senvolvimento e uso <strong>de</strong>ssa ferramenta a fim <strong>de</strong> aprimorar os processos<br />

<strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança em outras instituições brasileiras e, como<br />

consequência, estabelecer parcerias <strong>de</strong> pesquisa e inovação com potenciais usuários e <strong>de</strong>senvolvedores<br />

interessados.<br />

Como trabalhos futuros, <strong>de</strong>stacam-se a necessida<strong>de</strong> <strong>de</strong> otimização no armazenamento<br />

e consulta dos logs, principalmente das traduções NAT (e.g. através <strong>de</strong> informações<br />

resumidas em bancos <strong>de</strong> dados); adoção <strong>de</strong> padrões para notificações (e.g. IDMEF)<br />

no parser; extensão para outros mapeamentos <strong>de</strong> en<strong>de</strong>reço <strong>de</strong> re<strong>de</strong>, como no caso do<br />

uso <strong>de</strong> proxy <strong>de</strong> cache http, on<strong>de</strong> uma requisição HTTP é intermediada pelo proxy e<br />

assim o en<strong>de</strong>reço <strong>de</strong> origem visto no servidor remoto é o en<strong>de</strong>reço do proxy e não<br />

do cliente original; adicionar suporte a outros dispositivos <strong>de</strong> NAT, por exemplo o PF-<br />

Sense/FreeBSD.<br />

7. Agra<strong>de</strong>cimentos<br />

Este trabalho foi parcialmente financiando pela FAPESB.<br />

Referências<br />

Arvidsson, J., Cormack, A., Demchenko, Y., and Meijer, J. (2001). TERENA’S Inci<strong>de</strong>nt<br />

Object Description and Exchange Format Requirements. RFC 3067 (Informational).<br />

Disponível em: http://www.ietf.org/rfc/rfc3067.txt. Último acesso em Julho <strong>de</strong> 2011.<br />

BestPractical (2011). RT: Request Tracker. Disponível em:<br />

http://www.bestpractical.com/rt/. Último acesso em Julho <strong>de</strong> 2011.<br />

Ceron, J., Boos Jr, A., Machado, C., Martins, F., and Rey, L. (2009). O processo <strong>de</strong><br />

tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança. IV Workshop <strong>de</strong> TI das IFES.<br />

Ceron, J., Granville, L., and Tarouco, L. (2010). Uma Arquitetura Baseada em Assinaturas<br />

para Mitigação <strong>de</strong> Botnets. In X Simpósio Brasileiro em Segurança da Informação e<br />

<strong>de</strong> Sistemas Computacionais (SBSEG’10), pages 105–118. SBC.<br />

41


CERT.Bahia (2010). Estatísticas do CERT.Bahia. Disponível em:<br />

http://www.certbahia.pop-ba.rnp.br/Estatisticas. Último acesso em Julho <strong>de</strong> 2011.<br />

CWG (2011). Conficker Working Group. Disponível em:<br />

http://www.confickerworkinggroup.org/wiki/. Último acesso em Julho <strong>de</strong> 2011.<br />

Debar, H., Curry, D., and Feinstein, B. (2007). The Intrusion Detection Message<br />

Exchange Format (IDMEF). RFC 4765 (Experimental). Disponível em:<br />

http://www.ietf.org/rfc/rfc4765.txt. Último acesso em Julho <strong>de</strong> 2011.<br />

Droms, R. (1997). Dynamic Host Configuration Protocol. RFC 2131 (Draft Standard).<br />

Updated by RFCs 3396, 4361, 5494.<br />

Egevang, K. and Francis, P. (1994). The IP Network Address Translator (NAT). RFC<br />

1631 (Informational). Obsoleted by RFC 3022.<br />

Farnham, G. (2009). Cisco Security Agent and Inci<strong>de</strong>nt Handling. SANS Institute InfoSec<br />

Reading Room.<br />

Feinstein, B. and Matthews, G. (2007). The Intrusion Detection Exchange<br />

Protocol (IDXP). RFC 4767 (Experimental). Disponível em:<br />

http://www.ietf.org/rfc/rfc4767.txt. Último acesso em Julho <strong>de</strong> 2011.<br />

Honeynet.BR (2011). Brazilian Honeypots Alliance. Disponível em:<br />

http://www.honeypots-alliance.org.br/. Último acesso Julho <strong>de</strong> 2011.<br />

Jarocki, J. (2010). Orion Inci<strong>de</strong>nt Response Live CD.<br />

Kaiser, J., Vitzthum, A., Holleczek, P., and Dressler, F. (2006). Automated resolving of security<br />

inci<strong>de</strong>nts as a key mechanism to fight massive infections of malicious software.<br />

In GI SIDAR International Conference on IT-Inci<strong>de</strong>nt Management and IT-Forensics<br />

(IMF 2006), volume LNI P-97, pages 92–103.<br />

KLINGMÜLLER, T. (2005). SIRIOS: A Framework for CERTs. FIRST Conference on<br />

Computer Security Inci<strong>de</strong>nt Handling.<br />

Lun<strong>de</strong>ll, M. (2009). Inci<strong>de</strong>nt Handling as a Service. SANS Institute InfoSec Reading<br />

Room.<br />

OTRS (2011). Open source trouble ticket system. Disponível em: http://www.otrs.org/.<br />

Último acesso em Julho <strong>de</strong> 2011.<br />

Rekhter, Y., Moskowitz, B., Karrenberg, D., <strong>de</strong> Groot, G. J., and Lear, E. (1996). Address<br />

Allocation for Private Internets. RFC 1918 (Best Current Practice). Disponível em:<br />

http://www.ietf.org/rfc/rfc1918.txt. Último acesso em Julho <strong>de</strong> 2011.<br />

Scarfone, K., Grance, T., and Masone, K. (2008). Computer Security Inci<strong>de</strong>nt Handling<br />

Gui<strong>de</strong>. NIST Special Publication, 800–61.<br />

TRAIRA (2011). TRAIRA – Tratamento <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Re<strong>de</strong> Automatizado. Disponível<br />

em: http://www.pop-ba.rnp.br/files/sw/rt-traira.tgz. Último acesso em Julho<br />

<strong>de</strong> 2011.<br />

Werlinger, R., Botta, D., and Beznosov, K. (2007). Detecting, analyzing and responding<br />

to security inci<strong>de</strong>nts: a qualitative analysis. In Proceedings of the 3rd symposium on<br />

Usable privacy and security, pages 149–150. ACM.<br />

42


Uma Ontologia para Mitigar XML Injection<br />

Thiago M. Rosa, Altair O. Santin, Andreia Malucelli<br />

Programa <strong>de</strong> Pós-Graduação em Informática (PPGIa) – Pontifícia Universida<strong>de</strong> Católica<br />

do Paraná (PUCPR) – Curitiba – PR – Brasil<br />

{tmattosr,santin,malu}@ppgia.puc.br<br />

Abstract. The un<strong>de</strong>rlying technologies used by web services bring well-known<br />

vulnerabilities from other domains to this new environment. Anomaly-based<br />

intrusion <strong>de</strong>tection approaches produce high false positive rates, while<br />

signature-based intrusion <strong>de</strong>tection approaches do not <strong>de</strong>tect attack<br />

variations. This paper presents a novel hybrid attack <strong>de</strong>tection engine that<br />

brings together the main advantages of these classical <strong>de</strong>tection approaches.<br />

An ontology is applied as a strategy-based knowledge-base to assist mitigating<br />

XML injection attacks, while maintaining low false positive <strong>de</strong>tection rates.<br />

Resumo. As tecnologias utilizadas em web services trazem vulnerabilida<strong>de</strong>s<br />

conhecidas em outros domínios para este novo ambiente. As abordagens <strong>de</strong><br />

<strong>de</strong>tecção <strong>de</strong> intrusão baseadas em anomalia geralmente produzem alta taxa<br />

<strong>de</strong> falsos positivos, enquanto que abordagens baseadas em assinatura não<br />

<strong>de</strong>tectam variações <strong>de</strong> ataque. Este artigo apresenta um mecanismo híbrido<br />

<strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques que agrega as principais vantagens <strong>de</strong>stas abordagens<br />

clássicas. Aplica-se uma ontologia como a base <strong>de</strong> conhecimento <strong>de</strong> ataques<br />

baseada em estratégia (sequencia enca<strong>de</strong>ada <strong>de</strong> ações) para mitigar ataques<br />

<strong>de</strong> XML injection, mantendo baixas as taxas <strong>de</strong> falsos positivos.<br />

1. Introdução<br />

Web services vem sendo usados crescentemente em sistemas distribuídos na internet, já<br />

que provêm um meio padrão <strong>de</strong> interoperabilida<strong>de</strong> entre diferentes aplicações, que<br />

po<strong>de</strong>m estar executando em uma varieda<strong>de</strong> <strong>de</strong> plataformas e frameworks [Booth et al.<br />

2004]. Entretanto, as tecnologias utilizadas por web services (e.g. SOAP − Simple<br />

Object Access Protocol, HTTP − Hypertext Transfer Protocol e XML − Extensible<br />

Markup Language) favoreceram a exploração <strong>de</strong> vulnerabilida<strong>de</strong>s conhecidas neste<br />

novo ambiente.<br />

De acordo com o relatório anual <strong>de</strong> segurança do Open Web Application<br />

Security Project [OWASP 2009], ataques <strong>de</strong> injection estariam entre as<br />

vulnerabilida<strong>de</strong>s mais exploradas em 2010. Esta estatística se confirma no ranking das<br />

25 falhas <strong>de</strong> software mais perigosas [CWE e SANS 2010], pois as duas primeiras<br />

posições da lista são relacionadas a injections.<br />

Este artigo aborda especialmente ataques <strong>de</strong> XML injection − XML Cross-Site<br />

Scripting e XPath/XQuery injection. XML injections são ataques que produzem alguma<br />

mudança nos componentes internos <strong>de</strong> um documento XML tentando comprometer<br />

aplicações que executam web services. Isto po<strong>de</strong> ser alcançado inserindo conteúdo<br />

malicioso em uma mensagem XML, por exemplo, através da inserção <strong>de</strong> caracteres<br />

XML inválidos [CWE 2011].<br />

Uma maneira <strong>de</strong> proteger web services <strong>de</strong> ataques <strong>de</strong> injection é através <strong>de</strong><br />

43


sistemas <strong>de</strong> <strong>de</strong>tecção baseados em assinaturas [Siddavatam e Gadge 2008]. Uma<br />

assinatura é um payload que i<strong>de</strong>ntifica um ataque através <strong>de</strong> um conteúdo malicioso.<br />

Sistemas <strong>de</strong> <strong>de</strong>tecção baseados em assinaturas normalmente produzem baixa taxa <strong>de</strong><br />

erros <strong>de</strong> classificação dos ataques – conhecidos como falsos positivos. Entretanto, uma<br />

limitação importante da <strong>de</strong>tecção <strong>de</strong> ataques baseada em assinaturas é que esta<br />

abordagem não <strong>de</strong>tecta ataques <strong>de</strong>sconhecidos (novos), mesmo que estes representem<br />

pequenas variações <strong>de</strong> um payload conhecido.<br />

Outra forma <strong>de</strong> proteger web services contra ataques <strong>de</strong> injection é através <strong>de</strong><br />

sistemas <strong>de</strong> <strong>de</strong>tecção baseados em anomalias [Yee, Shin e Rao 2007], que aplicam uma<br />

técnica normalmente baseada em algum tipo <strong>de</strong> comportamento (implementado como<br />

um perfil). Por exemplo, os ataques po<strong>de</strong>m ser mo<strong>de</strong>lados/classificados em duas classes<br />

distintas, uma para comportamentos normais − contendo todas as ações esperadas para<br />

tal perfil − e outra representando ataques, i.e., envolvendo ações que não são<br />

consi<strong>de</strong>radas normais. Técnicas <strong>de</strong> <strong>de</strong>tecção baseadas em anomalias conseguem <strong>de</strong>tectar<br />

novos ataques, mas na maioria das vezes produzem alta taxa <strong>de</strong> falsos positivos (erros<br />

<strong>de</strong> avaliação) na <strong>de</strong>tecção.<br />

A técnica <strong>de</strong> <strong>de</strong>tecção baseada em assinaturas é a mais utilizada, porém, permite<br />

ataques do tipo zero-day, que ocorrem quando uma vulnerabilida<strong>de</strong> (falha <strong>de</strong> software)<br />

se torna publicamente conhecida antes que sua correção esteja disponível para ser<br />

inserida na base <strong>de</strong> assinaturas do sistema <strong>de</strong> <strong>de</strong>tecção [Zero Day Initiative 2011].<br />

In<strong>de</strong>pen<strong>de</strong>ntemente <strong>de</strong> como uma vulnerabilida<strong>de</strong> se torna publicamente<br />

conhecida, a efetivida<strong>de</strong> <strong>de</strong> um ataque zero-day po<strong>de</strong> variar <strong>de</strong> horas até meses [Zero<br />

Day Initiative 2011].<br />

A abordagem <strong>de</strong> <strong>de</strong>tecção clássica constrói sua base <strong>de</strong> assinaturas catalogando<br />

os ataques in<strong>de</strong>pen<strong>de</strong>ntemente um do outro. Neste caso, não é levado em consi<strong>de</strong>ração<br />

que a estratégia (engine) <strong>de</strong> um ataque é similar para a maioria das categorias e que<br />

geralmente só há variações no payload, gerado em função <strong>de</strong> alterações na estratégia <strong>de</strong><br />

cada ataque. Porém, os resultados <strong>de</strong>sta mudança são suficientes para confundir a<br />

abordagem <strong>de</strong> <strong>de</strong>tecção por anomalias, produzindo alertas falhos (falsos positivos), ou<br />

driblar a engine <strong>de</strong> <strong>de</strong>tecção da abordagem por assinaturas.<br />

O objetivo <strong>de</strong>ste trabalho é mo<strong>de</strong>lar os ataques através <strong>de</strong> uma estratégia<br />

representada por classes e seus relacionamentos em uma ontologia. Acredita-se que<br />

conhecendo a estratégia <strong>de</strong> um ataque, que <strong>de</strong>fine o relacionamento semântico entre<br />

elementos do mesmo, po<strong>de</strong>-se facilmente <strong>de</strong>tectar variações nos payloads e, como<br />

consequência, adicioná-los automaticamente à base <strong>de</strong> conhecimento da ontologia.<br />

A contribuição <strong>de</strong>sta proposta consiste em prover uma abordagem <strong>de</strong> sistema <strong>de</strong><br />

<strong>de</strong>tecção para XML injection baseado em estratégia (XID), para também mitigar<br />

ataques zero-day resultantes <strong>de</strong> variações dos ataques contidos na ontologia. Já que<br />

ataques novos (<strong>de</strong>sconhecidos) são <strong>de</strong>rivados <strong>de</strong> estratégias conhecidas, <strong>de</strong>verá ser<br />

observada uma baixa taxa <strong>de</strong> falsos positivos na <strong>de</strong>tecção. Para este propósito<br />

apresenta-se o sistema <strong>de</strong> <strong>de</strong>tecção baseado em estratégia como uma abordagem híbrida<br />

− suportando <strong>de</strong>tecção baseada em anomalias, <strong>de</strong>rivada da <strong>de</strong>tecção baseada em<br />

assinaturas. Aplica-se uma ontologia para construir a base <strong>de</strong> ataques <strong>de</strong> XML injection<br />

contra web services.<br />

O restante do artigo está organizado da seguinte forma: a seção 2 aborda<br />

brevemente ontologia; a seção 3 explica como foi construída a ontologia baseada em<br />

estratégia; a seção 4 apresenta a proposta (XID) e alguns cenários <strong>de</strong> avaliação; na<br />

seção 5 são <strong>de</strong>scritos alguns trabalhos relacionados e a seção 6 conclui o trabalho.<br />

44


2. Ontologia<br />

Uma ontologia <strong>de</strong>screve um vocabulário comum usando conceitos (objetos) e<br />

proprieda<strong>de</strong>s (relacionamentos) que são importantes para um <strong>de</strong>terminado domínio.<br />

Esta <strong>de</strong>scrição é alcançada através <strong>de</strong> um conjunto <strong>de</strong> <strong>de</strong>finições que associam os<br />

conceitos à linguagem humana, <strong>de</strong>screvendo seus significados e um conjunto <strong>de</strong><br />

axiomas (formais) que restringem a interpretação e o uso <strong>de</strong>stes conceitos<br />

[Konstantinou, Spanos e Mitrou 2008]. Por exemplo, no domínio “alunos <strong>de</strong> uma<br />

universida<strong>de</strong>”, conceitos po<strong>de</strong>riam ser aluno, professor, curso, disciplina, etc. Os<br />

relacionamentos po<strong>de</strong>riam ser “é aluno <strong>de</strong>”, “é professor <strong>de</strong>”, “é disciplina <strong>de</strong>”, etc.<br />

Outro recurso <strong>de</strong> uma ontologia é permitir interoperabilida<strong>de</strong> entre sistemas<br />

através <strong>de</strong> seu vocabulário comum, permitindo que inferências sejam feitas <strong>de</strong> acordo<br />

com os axiomas pré-<strong>de</strong>finidos [Dou, McDermott e Qi 2004]. Axiomas são <strong>de</strong>finições,<br />

expressas através <strong>de</strong> lógica <strong>de</strong> primeira or<strong>de</strong>m, que envolvem classes, instâncias,<br />

relacionamentos e operadores lógicos. Axiomas são utilizados para representar uma<br />

verda<strong>de</strong> reconhecida para um <strong>de</strong>terminado domínio <strong>de</strong> conhecimento. Os mesmos são<br />

avaliados por máquinas <strong>de</strong> inferência – software que faz <strong>de</strong>duções a partir do<br />

conhecimento expresso em uma ontologia, com o intuito <strong>de</strong> <strong>de</strong>rivar <strong>de</strong>sta ontologia um<br />

novo conhecimento. Tomando como exemplo o domínio <strong>de</strong> conhecimento “alunos <strong>de</strong><br />

uma universida<strong>de</strong>” citado acima, um axioma para tal domínio po<strong>de</strong>ria ser “todo aluno<br />

do curso <strong>de</strong> matemática é aluno da disciplina álgebra”, apresentado aqui em lógica <strong>de</strong><br />

primeira or<strong>de</strong>m:<br />

“AlunoDisciplinaAlgebra ≡ ∃éAlunoDe.CursoMatematica”<br />

De acordo com Gruber [1993], os critérios preliminares que <strong>de</strong>vem ser levados<br />

em consi<strong>de</strong>ração antes <strong>de</strong> se construir uma ontologia são clareza, coerência,<br />

extensibilida<strong>de</strong> e um mínimo compromisso ontológico.<br />

Observando esses critérios, algumas escolhas <strong>de</strong>vem ser feitas quando se vai<br />

construir uma ontologia. Por exemplo, <strong>de</strong>finições <strong>de</strong> classes e axiomas <strong>de</strong>vem restringir<br />

o número <strong>de</strong> interpretações possíveis para satisfazer o critério da clareza. Porém,<br />

minimizar o compromisso ontológico significa admitir vários possíveis mo<strong>de</strong>los para<br />

um domínio <strong>de</strong> conhecimento. Portanto, <strong>de</strong>cisões <strong>de</strong> mo<strong>de</strong>lagem <strong>de</strong>vem ser tomadas <strong>de</strong><br />

acordo com o objetivo da ontologia.<br />

A principal vantagem <strong>de</strong> se utilizar ontologia para mo<strong>de</strong>lar dados é o fato <strong>de</strong>sta<br />

prover uma semântica explícita e formal. Além disto, a ontologia po<strong>de</strong> ser<br />

compartilhada (utilizada em vários sistemas escritos em linguagens diferentes) e<br />

reutilizada − adaptada para contemplar outros objetivos. Através do uso <strong>de</strong> inferências,<br />

ontologias também po<strong>de</strong>m prover informações sobre um <strong>de</strong>terminado domínio que não<br />

estejam explicitamente <strong>de</strong>finidas na base <strong>de</strong> conhecimento [Konstantinou, Spanos e<br />

Mitrou 2008]. Usando o exemplo do domínio <strong>de</strong> conhecimento “alunos <strong>de</strong> uma<br />

universida<strong>de</strong>”, se existe um aluno do curso <strong>de</strong> matemática na base <strong>de</strong> conhecimento da<br />

ontologia, a informação <strong>de</strong> que esse aluno está inscrito na disciplina álgebra não<br />

precisaria ser manualmente adicionada na ontologia, pois esta informação seria<br />

automaticamente inferida a partir <strong>de</strong> um axioma.<br />

3. Ontologia Baseada em Estratégia<br />

Para satisfazer os critérios propostos por Gruber [Gruber 1993] na construção da<br />

ontologia, utilizou-se inicialmente a taxonomia <strong>de</strong> ataques apresentada pelo website da<br />

CAPEC [CAPEC 2011]. A CAPEC <strong>de</strong>screve mecanismos utilizados para explorar<br />

falhas <strong>de</strong> software <strong>de</strong> acordo com a perspectiva do atacante. Esta <strong>de</strong>scrição é feita em<br />

45


alto nível, por isto a ontologia foi refinada baseando-se também em algumas<br />

ferramentas <strong>de</strong> teste <strong>de</strong> segurança (seção 4.1).<br />

A ontologia proposta é composta <strong>de</strong> classes e proprieda<strong>de</strong>s (Fig. 1), instâncias<br />

(Fig. 2) e axiomas. Para facilitar o entendimento, neste artigo utiliza-se somente uma<br />

classe <strong>de</strong> ataques a web services (XMLInjection) e três subclasses (XPathInjection,<br />

XQueryInjection e XSSInjection) para exemplificar a estratégia dos ataques. As duas<br />

superclasses da ontologia são AttackAction e WebServicesAttack. AttackAction possui<br />

subclasses contendo instâncias <strong>de</strong> ações suspeitas (payloads) capturadas na re<strong>de</strong>.<br />

Figura 1. Diagrama <strong>de</strong> classes da ontologia<br />

A classe WebServicesAttack possui subclasses representando categorias <strong>de</strong><br />

ataques a web services. Cada uma <strong>de</strong>stas subclasses possui instâncias representando<br />

assinaturas <strong>de</strong> ataques conhecidos. A assinatura <strong>de</strong> uma instância <strong>de</strong> ataque é<br />

representada na ontologia por relacionamentos que a mesma tem com ações –<br />

implementados através da proprieda<strong>de</strong> hasAttackAction. Uma instância <strong>de</strong> ataque po<strong>de</strong><br />

ter uma ou mais ações e uma ação po<strong>de</strong> ser parte <strong>de</strong> várias instâncias <strong>de</strong> ataque.<br />

Figura 2. Exemplos <strong>de</strong> instâncias da ontologia<br />

Na ontologia, os axiomas <strong>de</strong>finidos para uma classe (categoria <strong>de</strong> ataque)<br />

restringem o número e o tipo <strong>de</strong> ações que as instâncias daquela classe terão. Além<br />

disso, neste caso os axiomas também po<strong>de</strong>m ajudar a máquina <strong>de</strong> inferência a <strong>de</strong>duzir se<br />

um tipo <strong>de</strong> ataque ocorreu quando o padrão i<strong>de</strong>ntificado (instância) ainda não está na<br />

base <strong>de</strong> conhecimento da ontologia, permitindo que este novo conhecimento seja<br />

adicionado à ontologia a partir <strong>de</strong>sta <strong>de</strong>dução. Os axiomas foram mo<strong>de</strong>lados para cada<br />

“XQueryInjection ≡ ∃hasAttackAction.Discovery ⨅ ∃hasAttackAction.ProbeXPath ⨅<br />

∃hasAttackAction.InjectXQuery” (1)<br />

46


classe <strong>de</strong> ataque baseando-se nas estratégias <strong>de</strong> ataque propostas pela CAPEC, e foram<br />

validados/ajustados baseando-se em ferramentas <strong>de</strong> teste <strong>de</strong> segurança para web<br />

services (seção 4.1). Por exemplo, na ontologia criou-se o axioma (1) para a classe<br />

XQueryInjection, representado aqui através <strong>de</strong> lógica <strong>de</strong> primeira or<strong>de</strong>m.<br />

Este axioma instrui a máquina <strong>de</strong> inferência a <strong>de</strong>duzir que qualquer ataque<br />

possuidor <strong>de</strong> uma ação do tipo Discovery, uma ação do tipo ProbeXPath, e uma ação do<br />

tipo InjectXQuery terá que obrigatoriamente ser uma instância da classe<br />

XQueryInjection. Na lógica <strong>de</strong> <strong>de</strong>tecção do XID isto significa que um ataque do tipo<br />

XQueryInjection ocorreu.<br />

Um exemplo prático do uso <strong>de</strong>ste axioma específico é representado pelos<br />

pacotes (2), (3) e (4), <strong>de</strong>tectados pelo XID antes da instância <strong>de</strong> ataque xqueryInjection1<br />

ser adicionada na ontologia.<br />

“GET /WSDigger_WS/WSDigger_WS.asmx?wsdl HTTP/1.0\r\n” (2)<br />

O pacote (2) representa um usuário acessando o documento WSDL <strong>de</strong> um web<br />

service, fazendo com que o XID crie um relacionamento (através da proprieda<strong>de</strong><br />

hasAttackAction) com a ação específica getWSDL (Fig. 2) − uma das instâncias da<br />

classe Discovery na ontologia.<br />

“//*” (3)<br />

O pacote (3) contém caracteres (‘//*’) que não <strong>de</strong>veriam estar presentes em<br />

nenhum campo <strong>de</strong> um pacote enviado por um usuário em uma operação XPath. Com<br />

isto, o XID cria outro relacionamento, <strong>de</strong>sta vez com a ação probeXPath1 (Fig. 2) −<br />

instância da classe ProbeXPath que representa o payload ‘//*’.<br />

“count(/child::no<strong>de</strong>())” (4)<br />

Finalmente, o pacote (4) contém o payload ‘count(’, que representa uma ação<br />

ilegal <strong>de</strong> um usuário, neste caso tentando obter o número <strong>de</strong> ocorrências <strong>de</strong> algum<br />

elemento da estrutura da base <strong>de</strong> dados XML. Isto fez o XID criar um relacionamento<br />

com a ação injectXQuery1 (Fig. 2), instância da classe InjectXQuery na ontologia.<br />

O XID então inferiu na ontologia para verificar se essas ações po<strong>de</strong>riam<br />

representar um ataque. Observe que mesmo a base <strong>de</strong> conhecimento da ontologia não<br />

contendo esta instância <strong>de</strong> ataque específico, a máquina <strong>de</strong> inferência consi<strong>de</strong>rou o<br />

conjunto <strong>de</strong> eventos capturados como uma instância da classe XQueryInjection – <strong>de</strong><br />

acordo com o axioma <strong>de</strong>finido. Isto permitiu à ontologia apren<strong>de</strong>r um novo ataque, pois<br />

em seguida o mesmo foi automaticamente adicionado pelo XID à base <strong>de</strong> conhecimento<br />

na forma <strong>de</strong> uma instância da classe XQueryInjection. Ou seja, na próxima vez que este<br />

ataque ocorrer será <strong>de</strong>tectado sem que a máquina <strong>de</strong> inferência precise ser acionada.<br />

As instâncias e relacionamentos na ontologia po<strong>de</strong>m ser comparados com os<br />

padrões <strong>de</strong> ataques conhecidos em uma abordagem <strong>de</strong> <strong>de</strong>tecção baseada em assinaturas.<br />

Porém, o padrão <strong>de</strong> ataque na ontologia representa a estratégia do ataque (sequência<br />

bem <strong>de</strong>finida <strong>de</strong> ações), enquanto que na abordagem <strong>de</strong> <strong>de</strong>tecção baseada em<br />

assinaturas o padrão é apenas um payload. Adicionalmente, as classes e axiomas da<br />

ontologia permitem que a máquina <strong>de</strong> inferência <strong>de</strong>duza que um ataque ocorreu mesmo<br />

que esse ainda não esteja na base <strong>de</strong> conhecimento, dando à abordagem proposta<br />

similarida<strong>de</strong> com a abordagem <strong>de</strong> <strong>de</strong>tecção baseada em anomalias. Esta similarida<strong>de</strong> do<br />

XID com as outras duas abordagens <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques o torna uma abordagem<br />

híbrida que explora as melhores características das outras duas.<br />

4. Detecção <strong>de</strong> XML Injection Baseada em Ontologia<br />

A ontologia proposta foi mo<strong>de</strong>lada utilizando a ferramenta Protégé [Stanford 2011] e a<br />

47


linguagem Web Ontology Language [McGuinness e Harmelen 2009].<br />

Utilizando o diagrama <strong>de</strong> classes da Fig. 1 mo<strong>de</strong>lou-se a estrutura das classes na<br />

ontologia (lado esquerdo da Fig. 3), criou-se instâncias <strong>de</strong> ataques (e.g.<br />

xqueryInjection1) e suas proprieda<strong>de</strong>s e relacionamentos (lado direito da Fig. 3).<br />

Figura 3. Visão parcial da ontologia proposta catalogada no Protégé<br />

A máquina <strong>de</strong> inferência Pellet [Clarck&Parsia 2011] foi invocada através da<br />

interface DIG [Bechhofer 2006] no Protégé para inferir na ontologia. Na fase <strong>de</strong><br />

mo<strong>de</strong>lagem da ontologia a máquina <strong>de</strong> inferência po<strong>de</strong> sugerir mudanças estruturais e<br />

i<strong>de</strong>ntificar inconsistências, baseando-se nos axiomas criados para as classes.<br />

Primeiramente, as classes XQueryInjection e XPathInjection estavam no mesmo<br />

nível (classes irmãs) abaixo da classe XMLInjection, como sugerido pela taxonomia da<br />

CAPEC. Entretanto após a execução do Pellet, esse sugeriu que XQueryInjection<br />

<strong>de</strong>veria ser uma subclasse <strong>de</strong> XPathInjection. Depois <strong>de</strong> analisar tal inferência,<br />

concluiu-se que esta sugestão fazia sentido, já que a XQueryInjection possui todas as<br />

restrições da XPathInjection. Também é possível encontrar fundamentação para isto no<br />

site da W3C [Boag et al. 2011], que sugere que a linguagem XQuery seja uma extensão<br />

da XPath. A inferência, neste caso, ajudou a aperfeiçoar a organização das classes <strong>de</strong><br />

ataque na ontologia e, por conseguinte, a tornar os resultados da <strong>de</strong>tecção mais efetivos.<br />

4.1. Protótipo<br />

Para avaliar a ontologia proposta foi <strong>de</strong>senvolvido um protótipo <strong>de</strong> sistema <strong>de</strong> <strong>de</strong>tecção<br />

<strong>de</strong> intrusão (Fig. 4), utilizando a tecnologia Java [Oracle 2011].<br />

Para capturar pacotes na re<strong>de</strong> foi utilizada a Jpcap [SourceForge 2011], uma<br />

biblioteca <strong>de</strong> captura <strong>de</strong> pacotes <strong>de</strong> re<strong>de</strong> para aplicações Java. A Jpcap po<strong>de</strong> filtrar<br />

pacotes IP e TCP, que são então transferidos para o módulo <strong>de</strong> <strong>de</strong>tecção, cuja função é<br />

analisar conteúdos relativos a web services – conteúdo codificado em XML que serve<br />

para <strong>de</strong>tecção no XID.<br />

A base <strong>de</strong> conhecimento da ontologia foi manipulada pelo protótipo em tempo<br />

<strong>de</strong> execução utilizando o framework Jena [SourceForge 2011], que já possui uma<br />

interface nativa do Pellet. As instâncias <strong>de</strong> ataque foram consultadas utilizando<br />

SPARQL [Prud'hommeaux e Seaborne 2008], uma linguagem para consulta em<br />

arquivos RDF e OWL (arquivo da ontologia).<br />

As estratégias dos ataques (extraídas inicialmente da CAPEC) foram refinadas e<br />

validadas utilizando o framework Metasploit [Metasploit 2011] e algumas das<br />

ferramentas <strong>de</strong> teste <strong>de</strong> segurança sugeridas pelo Open Web Application Security<br />

Project [OWASP 2011] para gerar ataques <strong>de</strong> XPath/XQuery injection. Também foram<br />

utilizados scripts contidos no site ha.ckers [Hansen 2008] para gerar ataques <strong>de</strong> XML<br />

48


Cross-Site Scripting. O sniffer Wireshark [Combs 2011] foi utilizado para capturar<br />

pacotes na re<strong>de</strong> para análise funcional dos módulos do protótipo.<br />

Figura 4. Visão geral da arquitetura do XID<br />

Uma visão geral do funcionamento do módulo <strong>de</strong> <strong>de</strong>tecção e inferência do XID<br />

é apresentada na Fig. 5. É possível observar que quando uma ação é <strong>de</strong>tectada (evento i)<br />

em um pacote da re<strong>de</strong> pela primeira vez o protótipo cria uma instância (evento ii) <strong>de</strong><br />

ataque (por enquanto sem persisti-la na ontologia), criando também um relacionamento<br />

da instância com esta ação (evento iii). Ou seja, a estratégia <strong>de</strong> um possível ataque<br />

começa a ser perseguida.<br />

A seguir o protótipo verifica se existe alguma instância na base <strong>de</strong> conhecimento<br />

da ontologia que seja idêntica à criada anteriormente (evento iv) – o que indicaria que o<br />

ataque é conhecido (evento v). Isto é feito através <strong>de</strong> uma busca na ontologia por uma<br />

instância <strong>de</strong> ataque que esteja relacionada exatamente com as mesmas ações<br />

encontradas na <strong>de</strong>tecção até este evento.<br />

Figura 5. Fluxograma <strong>de</strong> <strong>de</strong>tecção do XID<br />

Quando não é encontrada uma instância idêntica a criada no evento ii, o<br />

protótipo tenta inferir um novo ataque a partir das informações contidas na base <strong>de</strong><br />

49


conhecimento da ontologia (evento vi), verificando se a instância po<strong>de</strong> ser consi<strong>de</strong>rada<br />

uma variação <strong>de</strong> ataque.<br />

É através <strong>de</strong>sta inferência, levando em conta classes e axiomas na ontologia, que<br />

a abordagem tenta apren<strong>de</strong>r novos ataques e adicioná-los à base <strong>de</strong> conhecimento. Não<br />

chegando a uma inferência conclusiva, o protótipo continua analisando os próximos<br />

pacotes até encontrar uma nova ação. Esta nova ação é adicionada à instância (contendo<br />

agora duas ações) e novamente é verificado se um ataque ocorreu.<br />

Este ciclo <strong>de</strong> eventos ocorre até que uma instância seja apontada como um<br />

ataque <strong>de</strong> acordo com o conjunto <strong>de</strong> ações <strong>de</strong>tectadas, quando então a sequência do<br />

algoritmo <strong>de</strong> <strong>de</strong>tecção é reiniciada.<br />

Um ataque po<strong>de</strong> ser alertado pelo protótipo (evento v) se for encontrada uma<br />

instância idêntica na ontologia (através do SPARQL) ou se for inferida uma instância<br />

como um novo ataque (através do Pellet).<br />

Quando um ataque é inferido, antes <strong>de</strong> alertar o ataque o protótipo verifica se a<br />

classe da instância inferida contém subclasses, o que significa que há possibilida<strong>de</strong> do<br />

ataque ser mais específico. Caso encontre subclasses na ontologia, o protótipo aguarda a<br />

próxima ação a ser <strong>de</strong>tectada e faz uma nova inferência. Se esta nova inferência não<br />

alertar nenhuma subclasse mais específica, o protótipo alerta o ataque inferido<br />

inicialmente como uma mensagem informativa (evento viii), o que significa que o<br />

ataque po<strong>de</strong> não estar completo ou que se trata <strong>de</strong> uma nova categoria (subclasse) <strong>de</strong><br />

ataques. Em caso contrário alerta o ataque – porque a subclasse mais específica foi<br />

alcançada.<br />

Além <strong>de</strong> emitir o alerta o protótipo adiciona a nova instância à base <strong>de</strong><br />

conhecimento da ontologia (evento vii), abaixo da classe correspon<strong>de</strong>nte. Assim, o<br />

protótipo e a ontologia (XID) po<strong>de</strong>m ser consi<strong>de</strong>rados um sistema <strong>de</strong> <strong>de</strong>tecção com uma<br />

abordagem híbrida. O XID permite <strong>de</strong>tecção baseada em assinaturas através das<br />

instâncias, mas também permite a <strong>de</strong>tecção <strong>de</strong> variações <strong>de</strong> ataques através <strong>de</strong><br />

inferência nas classes e axiomas.<br />

4.2. Avaliação quantitativa<br />

Para avaliar a eficiência do XID foram <strong>de</strong>senvolvidos três cenários. No primeiro foi<br />

aplicado SPARQL, no segundo Pellet e no terceiro um arquivo texto – base <strong>de</strong><br />

assinaturas Snort [Sourcefire 2011].<br />

O objetivo dos experimentos foi comparar a escalabilida<strong>de</strong> e o <strong>de</strong>sempenho da<br />

base <strong>de</strong> conhecimento da ontologia com os da base <strong>de</strong> dados baseada em assinaturas,<br />

pois havia a dúvida se <strong>de</strong>vido à necessida<strong>de</strong> <strong>de</strong> inferências em alguns casos da <strong>de</strong>tecção<br />

<strong>de</strong> ataques tal abordagem seria viável.<br />

Para avaliação foi utilizada uma base composta <strong>de</strong> até 128 ataques catalogados<br />

no Protégé. Esta base iniciou com quatro classes <strong>de</strong> ataques pré-cadastradas<br />

(XMLInjection, XPathInjection, XQueryInjection e XSSInjection) e quatro instâncias <strong>de</strong><br />

ataques (xpathInjection1, xpathInjection2, xqueryInjection1 e xssInjection1).<br />

Adicionando incrementos <strong>de</strong> 2 x (x = 2, 3, 4, ...) instâncias <strong>de</strong> ataques por vez a base foi<br />

sendo aumentada até totalizar os 128 ataques. Para compor a base, diversas instâncias<br />

<strong>de</strong> ataques e ações foram simuladas com o intuito <strong>de</strong> imitar as variações <strong>de</strong> ataques que<br />

vão sendo incorporadas à ontologia em uma aplicação real da proposta.<br />

O primeiro experimento testou a ontologia consultando-a com apoio do<br />

SPARQL. Esta abordagem analisou os pacotes da re<strong>de</strong> procurando por ações<br />

maliciosas, que já estavam pré-cadastradas na base <strong>de</strong> conhecimento da ontologia,<br />

50


elacionando as mesmas com instâncias <strong>de</strong> ataques que foram previamente introduzidas<br />

utilizando o Protégé.<br />

O segundo experimento utilizou o Pellet para avaliar a ontologia em tempo <strong>de</strong><br />

execução. Neste experimento não havia instâncias <strong>de</strong> ataques na ontologia quando a<br />

mesma foi consultada pelo SPARQL, portanto a máquina <strong>de</strong> inferência tentou <strong>de</strong>rivar<br />

novos ataques baseando-se em axiomas pré-<strong>de</strong>finidos para cada classe <strong>de</strong> ataques. Em<br />

outras palavras, já que o módulo SPARQL falhou, o módulo <strong>de</strong> inferência foi invocado<br />

para <strong>de</strong>terminar se os conjuntos <strong>de</strong> ações sendo capturadas po<strong>de</strong>riam ser consi<strong>de</strong>rados<br />

novos ataques.<br />

Figura 6. Tempo <strong>de</strong> <strong>de</strong>tecção relativo (Assinaturas x SPARQL)<br />

Sempre que uma nova sequência <strong>de</strong> ações é inferida como sendo um ataque<br />

(nova assinatura), uma nova instância para este ataque é automaticamente adicionada à<br />

base <strong>de</strong> conhecimento da ontologia. Assim, não se <strong>de</strong>sperdiça tempo invocando o<br />

módulo <strong>de</strong> inferência caso este ataque específico seja capturado no futuro, pois o<br />

SPARQL irá <strong>de</strong>tectá-lo primeiro, eliminando a possibilida<strong>de</strong> <strong>de</strong> ataques zero-day.<br />

O terceiro experimento não utilizou a ontologia como base <strong>de</strong> conhecimento; foi<br />

utilizado o arquivo <strong>de</strong> texto contendo regras do Snort como base <strong>de</strong> dados <strong>de</strong> assinaturas<br />

– sem nenhuma técnica <strong>de</strong> otimização <strong>de</strong> consultas.<br />

Figura 7. Tempo <strong>de</strong> <strong>de</strong>tecção relativo (Assinaturas x Pellet)<br />

O terceiro experimento foi executado duas vezes. Na primeira vez o arquivo <strong>de</strong><br />

assinaturas foi consultado para procurar payloads (aleatoriamente inseridos do início ao<br />

final do arquivo), com o objetivo <strong>de</strong> comparação com o <strong>de</strong>sempenho do SPARQL (Fig.<br />

6). Na segunda vez, o arquivo <strong>de</strong> assinaturas foi consultado buscando-se por payloads<br />

(em número, variando entre 4 e128) que não se encontravam no mesmo – o objetivo foi<br />

comparar seu <strong>de</strong>sempenho com o Pellet (Fig. 7).<br />

51


O gráfico da Fig. 6 compara o experimento <strong>de</strong> <strong>de</strong>tecção baseada em assinaturas<br />

com o experimento utilizando o SPARQL em um cenário on<strong>de</strong> os ataques estão précadastrados<br />

no arquivo <strong>de</strong> texto e na base <strong>de</strong> conhecimento da ontologia.<br />

O gráfico da Fig. 7 compara o experimento <strong>de</strong> <strong>de</strong>tecção baseada em assinaturas<br />

com o experimento do Pellet, em um cenário on<strong>de</strong> as assinaturas sendo procuradas não<br />

estão presentes no arquivo texto e os conjuntos <strong>de</strong> ações sendo capturadas não<br />

correspon<strong>de</strong>m a nenhuma instância <strong>de</strong> ataque na base <strong>de</strong> conhecimento da ontologia.<br />

As Fig. 6 e Fig. 7 mostram gráficos comparando o tempo <strong>de</strong> <strong>de</strong>tecção relativo,<br />

tomando como referência o tempo <strong>de</strong> busca por quatro ataques através <strong>de</strong> <strong>de</strong>tecção<br />

baseada em assinaturas. A motivação para tal escolha é que, observando-se o ponto <strong>de</strong><br />

partida da curva do Pellet na Fig. 7, nota-se que o mesmo gastou um tempo extra (se<br />

comparado a abordagem baseada em assinaturas), necessário para <strong>de</strong>rivar novas<br />

instâncias através dos axiomas das classes <strong>de</strong> ataques da ontologia. Foi observado que o<br />

tempo gasto para avaliar as classes <strong>de</strong> ataques sem sucesso utilizando Pellet e o tempo<br />

gasto para inferência e adição <strong>de</strong> uma nova instância abaixo <strong>de</strong> uma das classes é<br />

similar.<br />

O gráfico da Fig. 7 mostrou o pior caso para <strong>de</strong>tecções do XID, pois as consultas<br />

resultam em perda <strong>de</strong> tempo <strong>de</strong> processamento pelo fato dos ataques não estarem na<br />

base, logo toda a base é consultada sem sucesso. Entretanto, mesmo o Pellet<br />

consumindo três vezes mais tempo do que a <strong>de</strong>tecção baseada em assinaturas, sua<br />

abordagem ainda é vantajosa (em relação à <strong>de</strong>tecção baseada em assinaturas) pelo fato<br />

<strong>de</strong> que esse módulo é executado uma única vez para cada nova variação <strong>de</strong> ataque. Uma<br />

vez que o Pellet infere uma nova instância <strong>de</strong> ataque, este módulo não será mais<br />

executado no futuro se o mesmo ataque for capturado novamente, pois o SPARQL irá<br />

<strong>de</strong>tectar o ataque primeiro na sua próxima ocorrência. Já na <strong>de</strong>tecção baseada em<br />

assinaturas este processamento sempre significará perda <strong>de</strong> tempo.<br />

Observando a Fig. 6 constata-se uma tendência do <strong>de</strong>sempenho do SPARQL<br />

ultrapassar a <strong>de</strong>tecção baseada em assinaturas quando a base chegar a 512 ataques. Em<br />

aplicações reais as bases <strong>de</strong> ataques são muito amplas, logo a abordagem proposta teria<br />

a vantagem quantitativa <strong>de</strong> maior escalabilida<strong>de</strong> no tempo <strong>de</strong> <strong>de</strong>tecção.<br />

Baseando-se nos resultados relatados acima é possível concluir que a proposta<br />

<strong>de</strong>ste trabalho, que mistura o primeiro e o segundo cenário, é vantajosa em relação ao<br />

terceiro cenário (abordagem clássica), obtendo a melhor relação custo benefício <strong>de</strong><br />

<strong>de</strong>tecção – baseada em assinaturas (SPARQL) vs baseada em conhecimento (Pellet).<br />

4.3. Avaliação qualitativa<br />

Em ontologias as <strong>de</strong>finições <strong>de</strong> conceitos <strong>de</strong>vem ser feitas através <strong>de</strong> axiomas lógicos<br />

[Gruber 1993]. Além disso, Gruber menciona que estas <strong>de</strong>finições <strong>de</strong>vem ser completas,<br />

ou seja, especificadas explicitando-se as condições necessárias e suficientes que as<br />

instâncias <strong>de</strong>vem aten<strong>de</strong>r para serem classificadas por tais conceitos. Isto porque se uma<br />

instância aten<strong>de</strong> às condições necessárias e suficientes (<strong>de</strong>finidas através <strong>de</strong> axiomas) <strong>de</strong><br />

uma classe, obrigatoriamente será inferida como instância daquela classe.<br />

Consi<strong>de</strong>rando as afirmações <strong>de</strong> Gruber, em um mundo perfeito não haveria a<br />

possibilida<strong>de</strong> <strong>de</strong> alertas falsos serem gerados pelo XID, já que instâncias <strong>de</strong>tectadas ou<br />

inferidas necessariamente aten<strong>de</strong>m aos axiomas <strong>de</strong>finidos para suas classes <strong>de</strong> ataques.<br />

Porém, Gruber também ressalta que se o resultado <strong>de</strong> uma inferência gerar um<br />

conhecimento que não correspon<strong>de</strong> à <strong>de</strong>finição formal do domínio sendo representado,<br />

a ontologia po<strong>de</strong> estar incoerente. Ou seja, mesmo que os axiomas garantam que nada<br />

52


diferente do que foi <strong>de</strong>finido será <strong>de</strong>tectado ou inferido pela proposta, sempre há a<br />

possibilida<strong>de</strong> <strong>de</strong> uma entrada incorreta na <strong>de</strong>finição da ontologia por erro humano –<br />

assim como em qualquer outro sistema automatizado, se a entrada está incorreta, o<br />

resultado será impreciso. No caso da proposta a possibilida<strong>de</strong> <strong>de</strong> erro <strong>de</strong> especificação<br />

do ataque na ontologia é minimizada <strong>de</strong>vido ao uso da taxonomia da CAPEC.<br />

Se o ataque está completamente <strong>de</strong>scrito (contendo as condições necessárias e<br />

suficientes que refletem a estratégia do ataque no mundo real) a probabilida<strong>de</strong> <strong>de</strong> falso<br />

positivo é nula. Porém, se o conjunto <strong>de</strong> atributos (relacionamentos) e restrições não<br />

estiver precisamente <strong>de</strong>scrito há possibilida<strong>de</strong> <strong>de</strong> ocorrência <strong>de</strong> falsos positivos.<br />

A partir <strong>de</strong>stas consi<strong>de</strong>rações, dois cenários foram criados para testar a taxa <strong>de</strong><br />

falsos positivos da abordagem proposta na <strong>de</strong>tecção através do Pellet (módulo <strong>de</strong><br />

inferência do XID que se utiliza dos axiomas para <strong>de</strong>duzir ataques), visando garantir<br />

que a ontologia tenha sido projetada <strong>de</strong> forma coerente.<br />

Para o teste dos cenários foram criadas 128 instâncias (reais e simuladas) para<br />

avaliar os axiomas das quatro classes <strong>de</strong> ataques da proposta (XMLInjection,<br />

XPathInjection, XQueryInjection e XSSInjection). No primeiro cenário a lógica <strong>de</strong><br />

<strong>de</strong>tecção alertou ataques a cada inferência conclusiva, ou seja, assim que as restrições<br />

(axiomas) <strong>de</strong> qualquer classe eram atendidas o ataque era alertado. Já no segundo<br />

cenário (abordagem do XID), o protótipo verificou se os ataques continham subclasses<br />

(indícios <strong>de</strong> que um ataque mais específico estaria ocorrendo) antes <strong>de</strong> alertá-los.<br />

A avaliação dos cenários foi dividida em duas fases. Na primeira fase, 64 dos<br />

128 ataques criados foram utilizados, com o intuito <strong>de</strong> se fazer uma avaliação<br />

(treinamento) inicial da ontologia e ajustar as classes e axiomas caso fosse necessário.<br />

Portanto, 50% da amostragem <strong>de</strong> instâncias já estavam na ontologia ao término da<br />

primeira fase. Pequenos ajustes foram feitos na lógica <strong>de</strong> <strong>de</strong>tecção do protótipo após os<br />

resultados <strong>de</strong>ste treinamento, nenhuma alteração foi feita na ontologia. Na segunda fase,<br />

as 64 instâncias <strong>de</strong> ataque restantes foram simuladas para testar a porcentagem <strong>de</strong> acerto<br />

da proposta nas inferências feitas em tempo <strong>de</strong> execução, para ambos os cenários.<br />

O resultado da avaliação para o primeiro cenário foi que 7/64 instâncias <strong>de</strong><br />

ataque não foram <strong>de</strong>tectadas corretamente. Estas sete instâncias continham três ações<br />

cada uma, uma ação da classe Discovery, uma da classe ProbeXPath e uma da classe<br />

ProbeXQuery. Estas sequências <strong>de</strong> três ações <strong>de</strong>veriam alertar um ataque do tipo<br />

XQueryInjection <strong>de</strong> acordo com o axioma <strong>de</strong>finido para esta classe. Porém, o protótipo<br />

alertou para cada uma das sete instâncias como ataques <strong>de</strong> XPathInjection e <strong>de</strong><br />

XMLInjection, respectivamente (totalizando 14 ataques alertados). Isto ocorreu porque a<br />

primeira parte dos ataques gerados (ação <strong>de</strong> Discovery e ação <strong>de</strong> ProbeXPath) satisfaz o<br />

axioma da classe <strong>de</strong> ataque XPathInjection, e a parte restante (ação <strong>de</strong> ProbeXQuery)<br />

satisfaz sozinha o axioma da classe genérica XMLInjection.<br />

Assim, no primeiro cenário o resultado da <strong>de</strong>dução foi impreciso em alguns<br />

casos porque não foi consi<strong>de</strong>rado integramente o conjunto <strong>de</strong> ações que aten<strong>de</strong>m as<br />

restrições da classe mais específica. Isto é, a <strong>de</strong>dução consi<strong>de</strong>rou apenas um<br />

subconjunto <strong>de</strong> ações que satisfaziam as restrições dos axiomas <strong>de</strong> classes mais<br />

genéricas – primeiras a serem testadas na lógica <strong>de</strong> <strong>de</strong>tecção.<br />

No segundo cenário, o protótipo foi programado para apenas alertar um ataque<br />

mais genérico após verificar as classes mais específicas do ataque sendo inferido. Desta<br />

forma, todas as 64 instâncias <strong>de</strong> ataque foram inferidas com sucesso e adicionadas às<br />

classes corretas na ontologia. Como neste cenário o protótipo aguardou a <strong>de</strong>tecção da<br />

próxima ação antes <strong>de</strong> alertar um ataque – quando havia a possibilida<strong>de</strong> <strong>de</strong> um ataque<br />

53


mais específico estar ocorrendo – não houve imprecisões na <strong>de</strong>tecção.<br />

Imprecisões <strong>de</strong> inferência não são consi<strong>de</strong>radas como falsos positivos para o<br />

XID na abordagem do segundo cenário (ataque genérico alertado mesmo <strong>de</strong>pois <strong>de</strong><br />

verificadas as subclasses), porque falsos positivos são resultantes <strong>de</strong> classificação<br />

errônea <strong>de</strong> ações normais consi<strong>de</strong>radas como ataques. Na abordagem proposta estas<br />

imprecisões são <strong>de</strong>duzidas em classes mais genéricas e, portanto, são alertadas como<br />

mensagens informativas e não como ataques. Isto é, quando o nível <strong>de</strong> especificida<strong>de</strong> do<br />

ataque sendo <strong>de</strong>duzido não é suficiente para atingir um grau <strong>de</strong> precisão confiável<br />

(<strong>de</strong>pois <strong>de</strong> verificadas suas subclasses na ontologia), o mesmo é alertado como<br />

informativo ao invés <strong>de</strong> ataque.<br />

Neste caso, quando a <strong>de</strong>dução não é conclusiva po<strong>de</strong> haver indícios <strong>de</strong> que o<br />

ataque <strong>de</strong>tectado po<strong>de</strong> não estar completo (alguma ação das estratégias das subclasses<br />

foi perdida na <strong>de</strong>tecção, por exemplo), ou uma nova categoria <strong>de</strong> ataque po<strong>de</strong> ter sido<br />

<strong>de</strong>tectada. Este tipo <strong>de</strong> informação po<strong>de</strong> então ser investigado por um<br />

administrador/especialista para verificar se uma nova subclasse teria que ser criada ou<br />

se a instância se encaixa em alguma subclasse existente.<br />

4.4. Consi<strong>de</strong>rações<br />

Apesar <strong>de</strong> aplicar ontologia, a performance da <strong>de</strong>tecção utilizando SPARQL é similar à<br />

abordagem baseada em assinaturas, levando em conta que instâncias <strong>de</strong> ataques estão<br />

pré-cadastradas na base <strong>de</strong> conhecimento. Além disso, o Pellet trabalha inferindo na<br />

ontologia para <strong>de</strong>rivar novos ataques quando o SPARQL não encontra combinações<br />

exatas dos ataques. A inferência neste caso mantém a taxa <strong>de</strong> falsos positivos na<br />

<strong>de</strong>tecção similar à <strong>de</strong> abordagens baseadas em assinaturas, pois novos ataques só po<strong>de</strong>m<br />

ser <strong>de</strong>rivados <strong>de</strong> classes e axiomas pré-cadastrados na ontologia.<br />

A falha encontrada no primeiro cenário da avaliação qualitativa, que gerou<br />

imprecisão na <strong>de</strong>tecção, foi <strong>de</strong>vida a adoção <strong>de</strong> uma estratégia <strong>de</strong> <strong>de</strong>tecção que buscava<br />

apenas i<strong>de</strong>ntificar condições necessárias e suficientes, nem sempre levando em conta os<br />

axiomas das subclasses mais específicas. No segundo cenário esta falha não ocorreu, já<br />

que os axiomas das subclasses eram sempre verificados. Porém, quando classes <strong>de</strong><br />

ataque mais específicas não eram encontradas, as instâncias <strong>de</strong>duzidas eram alertadas<br />

como mensagens informativas ao invés <strong>de</strong> ataques.<br />

A inferência na ontologia po<strong>de</strong> ser utilizada tanto em tempo <strong>de</strong> execução<br />

(quando necessário) para apren<strong>de</strong>r novos ataques, quanto na fase <strong>de</strong> mo<strong>de</strong>lagem para<br />

sugerir mudanças estruturais e encontrar inconsistências, otimizando a hierarquia <strong>de</strong><br />

classes. Além disso, <strong>de</strong>pen<strong>de</strong>ndo do tamanho da ontologia, redundâncias na <strong>de</strong>finição<br />

da mesma que levariam horas para serem encontradas por um humano po<strong>de</strong>m ser<br />

encontradas por uma máquina <strong>de</strong> inferência em alguns segundos.<br />

5. Trabalhos Relacionados<br />

A gran<strong>de</strong> maioria das propostas encontradas na literatura técnica utiliza abordagens <strong>de</strong><br />

<strong>de</strong>tecção clássicas [Siddavatam e Gadge 2008][Yee, Shin e Rao 2007][Bravenboer,<br />

Dolstra e Visser 2010] e as que utilizam outras abordagens não trabalham com ataques a<br />

web services [Un<strong>de</strong>rcoffer et al. 2004].<br />

Siddavatam e Gadge [Siddavatam e Gadge 2008] propuseram submeter<br />

requisições SOAP a uma série <strong>de</strong> algoritmos <strong>de</strong> teste para <strong>de</strong>terminar se as mesmas<br />

po<strong>de</strong>riam representar algum tipo <strong>de</strong> ataque. Todas as requisições que não passam no<br />

teste são separadas para que ações posteriores possam ser tomadas. Os autores<br />

apresentam testes e resultados para sua proposta, porém não <strong>de</strong>talham suficientemente<br />

54


os algoritmos e os mecanismos <strong>de</strong> <strong>de</strong>tecção dos ataques.<br />

Yee e seus colegas [Yee, Shin e Rao 2007] aplicaram um framework adaptável<br />

para tentar compensar as diferenças entre a <strong>de</strong>tecção baseada em anomalias e<br />

assinaturas, através da integração <strong>de</strong> agentes, técnicas <strong>de</strong> mineração <strong>de</strong> dados e técnicas<br />

<strong>de</strong> lógica difusa. Para os autores, o uso <strong>de</strong>stas técnicas permite tomar <strong>de</strong>cisões em<br />

ambientes incertos e imprecisos. Porém, nenhum resultado concreto foi apresentado.<br />

A abordagem <strong>de</strong> Bravenboer e seus colegas [Bravenboer, Dolstra e Visser 2010]<br />

sugere a incorporação <strong>de</strong> sintaxe, <strong>de</strong> acordo com as linguagens utilizadas no guest e<br />

host (e.g. XPath com Java), para gerar automaticamente o código que irá prevenir<br />

vulnerabilida<strong>de</strong>s para ataques <strong>de</strong> injection (e.g. adicionando funções para filtrar<br />

caracteres inválidos). Os autores argumentam que a proposta é genérica, po<strong>de</strong>ndo ser<br />

aplicada com facilida<strong>de</strong> a qualquer combinação <strong>de</strong> linguagens. Porém, uma limitação<br />

apontada é o fato <strong>de</strong> nem todas as linguagens possuírem uma sintaxe livre <strong>de</strong> contexto.<br />

A proposta <strong>de</strong> Un<strong>de</strong>rcoffer e seus colegas [Un<strong>de</strong>rcoffer et al. 2004] aplica<br />

ontologia para categorizar classes <strong>de</strong> ataques baseando-se principalmente no<br />

componente alvo dos mesmos, também consi<strong>de</strong>ra os meios e as conseqüências do<br />

ataque e a localização do atacante. Esta ontologia é compartilhada por diversos sistemas<br />

<strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão – o intuito é disseminar a todos um ataque <strong>de</strong>scoberto por um<br />

<strong>de</strong>les. Porém, não é mencionado o uso <strong>de</strong> axiomas ou inferência, além disto, os autores<br />

não avaliam a proposta com testes.<br />

Vorobiev e Han [Vorobiev e Han 2006] propuseram a abordagem que está mais<br />

próxima <strong>de</strong>ste trabalho, os autores aplicaram uma ontologia especificamente para<br />

abordar o domínio <strong>de</strong> ataques a web services. Entretanto, a implementação da ontologia<br />

não foi encontrada e a proposta não utiliza inferência para <strong>de</strong>tectar novos ataques. A<br />

ontologia é principalmente um ‘dicionário’ comum para diferentes ambientes.<br />

6. Conclusão<br />

Este artigo apresentou uma abordagem baseada em ontologia (XID) para proteger web<br />

services <strong>de</strong> ataques <strong>de</strong> XML injection e para mitigar o problema dos ataques que são<br />

variações <strong>de</strong> ataque conhecidos. Os ataques <strong>de</strong> XML injection que já estavam na base<br />

<strong>de</strong> conhecimento foram <strong>de</strong>tectados com sucesso utilizando SPARQL para consultar a<br />

ontologia. Adicionalmente, as variações <strong>de</strong> payload foram <strong>de</strong>tectadas utilizando<br />

inferência com nenhuma ocorrência <strong>de</strong> falsos positivos, já que novos payloads<br />

(instâncias) foram <strong>de</strong>tectados baseando-se somente em classes e axiomas <strong>de</strong> ataques<br />

pré-existentes. Os novos payloads foram automaticamente adicionados à base <strong>de</strong><br />

conhecimento da ontologia como instâncias – abaixo das classes relacionadas,<br />

eliminando os ataques que são variantes <strong>de</strong> ataques conhecidos.<br />

O XID agrega as principais vantagens das abordagens clássicas <strong>de</strong> <strong>de</strong>tecção.<br />

Permite a <strong>de</strong>tecção <strong>de</strong> ataques conhecidos, como na abordagem baseada em assinaturas,<br />

e permite a <strong>de</strong>tecção <strong>de</strong> novos ataques, como na abordagem baseada em anomalias. Esta<br />

segunda abordagem <strong>de</strong> <strong>de</strong>tecção é feita pelo XID através <strong>de</strong> inferência na ontologia.<br />

Como relação ao <strong>de</strong>sempenho a proposta é comparável à <strong>de</strong>tecção baseada em<br />

assinaturas quando os ataques são conhecidos. Quando os ataques não são conhecidos a<br />

proposta per<strong>de</strong> em <strong>de</strong>sempenho quando comparada à abordagem por assinaturas, porém,<br />

neste caso po<strong>de</strong>m ser <strong>de</strong>tectadas variações <strong>de</strong> payloads com taxa nula <strong>de</strong> falsos<br />

positivos, mitigando ataques zero-day, por exemplo. Esta inferência <strong>de</strong> ataques que não<br />

estão pré-cadastrados na base não é possível na abordagem clássica <strong>de</strong> <strong>de</strong>tecção baseada<br />

em assinaturas e imprecisa na baseada em anomalias.<br />

55


Referências<br />

Bechhofer, S. (2006) “DIG 2.0: The DIG Description Logic Interface”,<br />

http://dig.cs.manchester.ac.uk.<br />

Boag, S., Chamberlin, D., Fernán<strong>de</strong>z, M. F., Florescu, D., Robie, J. e Siméon, J. (2011)<br />

“XQuery 1.0: An XML Query Language (Second Edition)”, http://www.w3.org/TR/xquery.<br />

Booth, D., Haas, H., Mccabe, F., Newcomer, E., Champion, M., Ferris, C. e Orchard, D. (2004)<br />

“Web Services Architecture”, http://www.w3.org/TR/ws-arch.<br />

Bravenboer, M., Dolstra, E. e Visser, E. (2010). Preventing injection attacks with syntax<br />

embeddings. In Science of Computer Programming archive, pages 473-495.<br />

CAPEC (2011) “Common Attack Pattern Enumeration and Classification”,<br />

http://capec.mitre.org/data/graphs/1000.html.<br />

Clarck&Parsia (2011) “Pellet: OWL 2 Reasoner for Java”, http://clarkparsia.com/pellet.<br />

Combs, G. (2011) “Wireshark – Go Deep”, http://www.wireshark.org.<br />

CWE e SANS (2010) “2010 CWE/SANS Top 25 Most Dangerous Software Errors”,<br />

http://cwe.mitre.org/top25/in<strong>de</strong>x.html.<br />

CWE (2011) “Common Weakness Enumeration”, http://cwe.mitre.org/data/<strong>de</strong>finitions/91.html.<br />

Siddavatam, I. e Gadge, J. (2008). Comprehensive Test Mechanism to Detect Attack on Web<br />

Services. In 16th IEEE International Conference on Networks, pages 1-6.<br />

Dou, D., McDermott, D. e Qi, P. (2004). Ontology Translation on the Semantic Web. In Journal<br />

on Data Semantics (JoDS) II, pages 35-57.<br />

Gruber, T. R. (1993). Toward Principles for the Design of Ontologies Used for Knowledge<br />

Sharing. In International Journal Human-Computer Studies 43, pages 907-928.<br />

Hansen, R. (2008) “XSS (Cross Site Scripting) Cheat Sheet”, http://ha.ckers.org/xss.html.<br />

Konstantinou, N., Spanos, D. e Mitrou, N. (2008). Ontology and Database Mapping: A Survey<br />

of Current Implementations and Future Directions. In Journal of Web Engineering, pg. 1-24.<br />

McGuinness, D., e Harmelen, F. (2009) “OWL 2 Web Ontology Language”,<br />

http://www.w3.org/TR/owl-features.<br />

Metasploit (2011) “Metasploit - Penetration Testing Resources”, http://www.metasploit.com.<br />

Oracle (2011) “For Java Developers”, http://www.oracle.com/technetwork/java/in<strong>de</strong>x.html.<br />

OWASP (2009) “The Open Web Application Security Project”,<br />

http://www.owasp.org/images/3/3f/2009AnnualReport.pdf.<br />

OWASP (2011) “The Open Web Application Security Project”, http://www.owasp.org.<br />

Prud'hommeaux, E., e Seaborne, A. (2008) “SPARQL Query Language for RDF”,<br />

http://www.w3.org/TR/rdf-sparql-query.<br />

Sourcefire (2011) “Sourcefire VRT Certified Rules - The Official Snort Ruleset”,<br />

http://www.snort.org/snort-rules.<br />

SourceForge (2011) “Jena – A Semantic Web Framework for Java”, http://jena.sourceforge.net.<br />

SourceForge (2011) “Network Packet Capture Facility for Java”,<br />

http://sourceforge.net/projects/jpcap.<br />

Stanford (2011) “The Protégé Ontology Editor and Knowledge Acquisition System”,<br />

http://protege.stanford.edu.<br />

Un<strong>de</strong>rcoffer, J., Pinkston, J., Joshi, A. e Finin, T. (2004). A Target-Centric ontology for<br />

intrusion <strong>de</strong>tection. In Proceedings of the IJCAI W. on Ontologies and Dist. Sys., pg. 47-58.<br />

Vorobiev, A. e Han, J. (2006). Security Attack Ontology for Web Services. In Proceedings of<br />

the Second International Conference on Semantics, Knowledge, and Grid, paper 42 (6pp).<br />

Yee, C. G., Shin, W. H. e Rao, G. S. V. R. K. (2007). An Adaptive Intrusion Detection and<br />

Prevention (ID/IP) Framework for Web Services. In Proceedings of IEEE International<br />

Conference on Convergence Information Technology, pages 528-534.<br />

Zero Day Initiative (2011) “Zero Day Initiative”, http://www.zerodayinitiative.com/<br />

advisories/upcoming/.<br />

56


Carimbos do Tempo Autenticados para a Preservação por<br />

Longo Prazo <strong>de</strong> Assinaturas Digitais<br />

Nelson da Silva 1 , Thiago Acórdi Ramos 1 , Ricardo Felipe Custódio 1<br />

1 Laboratório <strong>de</strong> Segurança em Computação (LabSEC)<br />

Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina (UFSC)<br />

Caixa Postal 476 – 88040-900 – Florianópolis – SC – Brasil<br />

{nelson, thg, custodio}@inf.ufsc.br<br />

Abstract. Digital signatures are usually employed as the digital counterpart of<br />

handwritten signatures, allowing the authentication of electronic documents.<br />

These signatures, however, may quickly lose its validity, creating a preservation<br />

challenge for those documents that must be kept for a longer period of time. In<br />

this paper, we improve the efficiency and reliability of the usual approach for<br />

this problem, through a new time-stamp scheme. Such time-stamps carries a<br />

Certificate of Authenticity, with reduces its storage and validation costs, while<br />

protecting the signature even in the presence of an adversary able to compromise<br />

the Time Stamping Authority’s private key or its signature scheme.<br />

Resumo. Assinaturas digitais são comumente usadas como a contraparte digital<br />

das assinaturas manuscritas, possibilitando a autenticação <strong>de</strong> documentos<br />

eletrônicos. Tais assinaturas, contudo, po<strong>de</strong>m rapidamente per<strong>de</strong>r sua valida<strong>de</strong>,<br />

criando um <strong>de</strong>safio para a preservação daqueles documentos que precisam ser<br />

guardados por um tempo maior. Neste trabalho, aumentamos a eficiência e confiabilida<strong>de</strong><br />

da abordagem usual para o problema, através <strong>de</strong> um novo esquema<br />

<strong>de</strong> datação. Esses carimbos carregam um Certificado <strong>de</strong> Autenticida<strong>de</strong>, que reduz<br />

seus custos <strong>de</strong> armazenamento e validação, enquanto protege a assinatura<br />

mesmo na presença <strong>de</strong> um adversário capaz <strong>de</strong> comprometer a chave privada<br />

da Autorida<strong>de</strong> <strong>de</strong> Carimbo do Tempo ou seu esquema <strong>de</strong> assinatura.<br />

1. Introdução<br />

Assinaturas digitais são comumente usadas como a contraparte digital das assinaturas<br />

manuscritas, possibilitando a autenticação <strong>de</strong> documentos eletrônicos. Diversos<br />

países vêm, inclusive, atribuindo a elas o mesmo valor legal das assinaturas manuscritas,<br />

como forma <strong>de</strong> facilitar o uso <strong>de</strong> documentos eletrônicos como meio <strong>de</strong> prova. Na União<br />

Européia, por exemplo, essa questão é abordada na Diretiva Européia 1999/93/EC. No<br />

Brasil, isso é assunto da Medida Provisória 2.200-2.<br />

Apesar <strong>de</strong> amplamente usadas, as assinaturas digitais po<strong>de</strong>m rapidamente per<strong>de</strong>r<br />

sua valida<strong>de</strong>, o que constitui um <strong>de</strong>safio para a preservação daqueles documentos<br />

eletrônicos que precisam ser guardados por um longo período <strong>de</strong> tempo. Na<br />

implementação usual <strong>de</strong>ssas assinaturas, por exemplo, tal problema ocorre por diversos<br />

fatores, tais como o enfraquecimento do esquema <strong>de</strong> assinatura usado pelo signatário e<br />

a perda <strong>de</strong> valida<strong>de</strong> <strong>de</strong> seu caminho <strong>de</strong> certificação X.509. Nesses casos, a segurança<br />

oferecida pela assinatura acaba sendo comprometida.<br />

57


Tal problema torna necessária alguma forma <strong>de</strong> preservação que permita manter<br />

a valida<strong>de</strong> <strong>de</strong>ssas assinaturas pelo tempo que for necessário. Assim várias estratégias já<br />

foram propostas, sendo a sobreposição <strong>de</strong> carimbos do tempo, criada por Bayer, Haber e<br />

Stornetta [6], a principal <strong>de</strong>las. É essa a estratégia usada nas principais recomendações<br />

técnicas que atualmente abordam o problema [12, 13, 14], sendo igualmente uma das mais<br />

estudadas na literatura. Do mesmo modo, é essa a estratégia usada no Padrão Brasileiro <strong>de</strong><br />

Assinatura Digital, publicado pelo Instituto Nacional <strong>de</strong> Tecnologia da Informação (ITI).<br />

A preservação por carimbos do tempo, contudo, implica em custos cumulativos<br />

para o usuário, além <strong>de</strong> não garantir que a assinatura realmente mantenha sua valida<strong>de</strong><br />

pelo tempo necessário. Tais custos dificultam a preservação e validação <strong>de</strong>ssas assinaturas<br />

em dispositivos com poucos recursos computacionais, bem como a preservação <strong>de</strong><br />

gran<strong>de</strong>s volumes <strong>de</strong> documentos [24]. A baixa confiabilida<strong>de</strong> <strong>de</strong>ssa estratégia, por sua<br />

vez, acaba tornando necessárias medidas preventivas, como o uso <strong>de</strong> carimbos do tempo<br />

redundantes [14], que terminam por aumentar ainda mais os custos <strong>de</strong> preservação.<br />

Neste trabalho aumentamos a eficiência e confiabilida<strong>de</strong> da preservação por carimbos<br />

do tempo através <strong>de</strong> um novo esquema <strong>de</strong> datação, os Carimbos do Tempo Autenticados.<br />

O uso <strong>de</strong>sse esquema permite reduzir drasticamente os custos <strong>de</strong> armazenamento<br />

e validação das assinaturas preservadas, assim como ter maiores garantias quanto<br />

a preservação da assinatura pelo tempo que for necessário. Além disso, seu uso torna<br />

possível a validação off-line <strong>de</strong> assinaturas, uma vez que essas se tornam auto-contidas.<br />

O restante <strong>de</strong>ste trabalho é organizado da seguinte forma. A Seção 2 apresenta o<br />

estado da arte sobre a preservação <strong>de</strong> assinaturas digitais. A Seção 3 <strong>de</strong>screve o esquema<br />

<strong>de</strong> datação tradicional e revisa a preservação por carimbos do tempo. A Seção 4 apresenta<br />

o esquema <strong>de</strong> datação proposto, assim como as suas implicações sobre os procedimentos<br />

<strong>de</strong> preservação e validação <strong>de</strong> assinaturas. A Seção 5 avalia os benefícios e limitações da<br />

proposta. Finalmente, a Seção 6 apresenta as consi<strong>de</strong>rações finais.<br />

2. Trabalhos Relacionados<br />

A preservação <strong>de</strong> assinaturas digitais é um tema quase tão antigo quanto a própria<br />

criptografia assimétrica. Já no final da década <strong>de</strong> 70, Popek e Kline [21] sugeriam que<br />

a valida<strong>de</strong> <strong>de</strong> uma assinatura fosse preservada por meio <strong>de</strong> “carimbos do tempo”, emitidos<br />

por terceiras partes confiáveis, on<strong>de</strong> constaria o momento em que a assinatura fora<br />

produzida. A i<strong>de</strong>ia era que assinaturas autênticas seriam aquelas realizadas antes <strong>de</strong> sua<br />

falsificação se tornar viável.<br />

Massias e Quisquater [18], por outro lado, propuseram a preservação <strong>de</strong> assinaturas<br />

digitais através da autenticação <strong>de</strong> outro fato, a sua própria valida<strong>de</strong>. Esse ateste<br />

seria uma alternativa para a comprovação da valida<strong>de</strong> da assinatura quando, através das<br />

verificações tradicionais, essa já fosse inválida.<br />

Ambas as estratégias <strong>de</strong> notarização, como ficaram conhecidas por remeter aos<br />

atos praticados pelos notários no mundo real [16], foram tema <strong>de</strong> diversos trabalhos.<br />

Carimbos do tempo, por exemplo, foram aprimorados por Haber e Stornetta [15], que<br />

sugeriram seu enca<strong>de</strong>amento como forma <strong>de</strong> reduzir a confiança necessária nas entida<strong>de</strong>s<br />

responsáveis por sua produção. Blibech e Gabillon [7], por sua vez, reduziram os custos<br />

<strong>de</strong>correntes da validação <strong>de</strong>sses carimbos, re<strong>de</strong>finindo a forma como são enca<strong>de</strong>ados.<br />

58


Atestes da valida<strong>de</strong> <strong>de</strong> assinaturas, por outro lado, foram aprimoradas por Ansper<br />

et al. [3], que sugeriram a agregação das assinaturas em Árvores <strong>de</strong> Merkle [19], <strong>de</strong> modo<br />

a reduzir o esforço computacional necessário para a sua produção. Por outro lado, Custodio<br />

et al. [10], propuseram a associação do método <strong>de</strong> NOVOMODO a esses atestes,<br />

como forma <strong>de</strong> minimizar os recursos computacionais necessários à sua validação.<br />

Além das estratégias <strong>de</strong> notarização, uma outra abordagem vem sendo usada na<br />

literatura para a preservação <strong>de</strong> assinaturas digitais, focada nas primitivas criptográficas<br />

envolvidas em sua geração e validação. São os esquemas especiais <strong>de</strong> assinatura, com<br />

proprieda<strong>de</strong>s que as tornam menos vulneráveis ao efeito do tempo. São exemplos <strong>de</strong>sses<br />

esquemas o <strong>de</strong> chave evolutiva e as assinaturas incondicionalmente seguras.<br />

Esquemas <strong>de</strong> chave evolutiva [2] são voltados à proteção das assinaturas produzidas<br />

contra o comprometimento da chave privada do signatário. Nesses esquemas a chave<br />

privada evolui <strong>de</strong> modo que o comprometimento da chave privada atual, não invalidaria<br />

assinaturas realizadas com as chaves anteriores.<br />

Esquemas <strong>de</strong> assinaturas incondicionalmente seguras, por sua vez, tratam do problema<br />

relacionado ao enfraquecimento dos algoritmos criptográficos [8]. Diferentemente<br />

dos esquemas convencionais, tais esquemas não baseiam sua segurança em suposições<br />

quanto ao po<strong>de</strong>r computacional do adversário. Po<strong>de</strong>r esse que ten<strong>de</strong> a aumentar com o<br />

tempo.<br />

Nenhuma das estratégias citadas, contudo, é capaz <strong>de</strong> preservar assinaturas digitais<br />

por um prazo arbitrariamente gran<strong>de</strong>. Carimbos do tempo e atestes, por exemplo,<br />

per<strong>de</strong>m com o tempo sua valida<strong>de</strong> assim como as próprias assinaturas. Esquemas especiais<br />

<strong>de</strong> assinatura, por sua vez, ten<strong>de</strong>m a tratar apenas uma parte dos problemas, sempre<br />

<strong>de</strong>ixando as assinaturas vulneráveis a problemas remanescentes.<br />

Um dos primeiros trabalhos a tratar da preservação por longo prazo <strong>de</strong> assinaturas<br />

digitais foi o trabalho <strong>de</strong> Bayer, Haber e Stornetta [6]. Na proposta, parcialmente apresentada<br />

num trabalho anterior [15], uma assinatura digital seria preservada pela sobreposição<br />

<strong>de</strong> carimbos do tempo. A i<strong>de</strong>a era que novos carimbos seriam adicionados na medida<br />

que os anteriores estivessem por per<strong>de</strong>r sua valida<strong>de</strong>. Cada um dos carimbos <strong>de</strong>monstraria<br />

que o anterior fora produzido antes <strong>de</strong> se tornar falsificável. I<strong>de</strong>ia semelhante à<br />

sobreposição <strong>de</strong> carimbos do tempo foi posteriormente proposta para atestes da valida<strong>de</strong><br />

<strong>de</strong> assinaturas [17, 24].<br />

3. Preservação por Carimbos do Tempo<br />

Dentre as estratégias até então propostas para a preservação por longo prazo <strong>de</strong><br />

assinaturas digitais, a preservação por carimbos do tempo é aquela adotada pelas principais<br />

recomendações técnicas sobre o tema [12, 13, 14], sendo, igualmente, uma das mais<br />

estudadas na literatura. Nessa estratégia, carimbos do tempo são usados para <strong>de</strong>monstrar<br />

a valida<strong>de</strong> da assinatura e dos próprios carimbos usados no processo.<br />

3.1. Carimbos do Tempo<br />

Em sua forma mais comum, usada em recomendações técnicas como a<br />

RFC 3161 [1], carimbos do tempo são documentos eletrônicos assinados por uma terceira<br />

parte confiável, <strong>de</strong>nonimada Autorida<strong>de</strong> <strong>de</strong> Carimbo do Tempo (ACT), on<strong>de</strong> constam<br />

tanto o resumo criptográfico da informação datada, quanto a data em que o carimbo<br />

59


foi emitido. São duas as operações relacionadas a esses carimbos, a sua solicitação e<br />

validação. A primeira segue o protocolo representado a seguir:<br />

U −→ ACT : H(x)<br />

ACT −→ U : {H(x), t}, Sign ACT ({H(x), t})<br />

} {{ }<br />

ts<br />

Nele, um usuário solicita um carimbo do tempo para uma informação qualquer<br />

x ∈ {0, 1} + , enviando seu resumo criptográfico H(x). Ao receber o resumo, a ACT<br />

então anexa a data atual t, assina o conjunto e retorna o carimbo formado. A partir <strong>de</strong><br />

então é possível comprovar que x existia em t. Para tanto, é necessário validar o carimbo.<br />

Um carimbo do tempo é válido se:<br />

• a assinatura da ACT for válida;<br />

• o resumo criptográfico presente no carimbo for igual a H(x) e H for uma função<br />

<strong>de</strong> resumo criptográfico segura.<br />

Tais condições visam comprovar, respectivamente, a autenticida<strong>de</strong> do carimbo e<br />

a integrida<strong>de</strong> da informação datada. A função H <strong>de</strong>ve ser segura pois, do contrário,<br />

essa integrida<strong>de</strong> acaba se tornando duvidosa. Em maiores <strong>de</strong>talhes, H po<strong>de</strong>rá ser apenas<br />

resistente à segunda inversão, <strong>de</strong>s<strong>de</strong> que em t tenha sido resistente, igualmente, à colisão.<br />

Dessas condições é possível concluir o prazo <strong>de</strong> valida<strong>de</strong> <strong>de</strong> um carimbo. Esse termina<br />

com a perda <strong>de</strong> valida<strong>de</strong> da assinatura da ACT ou com o enfraquecimento <strong>de</strong> H, o que<br />

ocorrer primeiro.<br />

3.2. Preservação <strong>de</strong> Assinaturas<br />

A preservação <strong>de</strong> uma assinatura digital por meio <strong>de</strong> carimbos do tempo segue<br />

os seguintes passos, on<strong>de</strong> s, d, C s e R s , são, respectivamente, a assinatura, o documento<br />

assinado, os certificados do caminho <strong>de</strong> certificação do signatário e os dados <strong>de</strong> revogação<br />

atuais:<br />

1. inicialização: adicionar um carimbo do tempo ts 1 sobre {s, d, C s , R s }, obtendo<br />

{{s, d, C s , R s }, ts 1 , C 1 ts};<br />

2. agendamento: agendar a sobreposição do carimbo. Essa sobreposição <strong>de</strong>ve ocorrer<br />

antes <strong>de</strong> o carimbo per<strong>de</strong>r sua valida<strong>de</strong>, sendo, em geral, agendada para um<br />

momento próximo da expiração do certificado da ACT;<br />

3. sobreposição: no momento agendado, validar ts 1 . Sendo válido, adicionar ts 2<br />

sobre {{s, d, C s , R s }, ts 1 , C 1 ts, R 1 ts}, obtendo {{{s, d, C s , R s }, ts 1 , C 1 ts, R 1 ts}, ts 2 ,<br />

C 2 ts}. Caso ts 1 já tenha perdido sua valida<strong>de</strong>, a preservação falha;<br />

4. repetição: para os próximos carimbos, repetir os passos 2 e 3 enquanto for necessário<br />

preservar a valida<strong>de</strong> da assinatura. Dessa forma, na adição do n-ésimo<br />

carimbo, obtêm-se {{...{{{s, d, C s , R s }, ts 1 , C 1 ts, R 1 ts}, ts 2 , C 2 ts, R 2 ts}, ...}, ts n ,<br />

C n ts}.<br />

3.3. Validação <strong>de</strong> Assinaturas<br />

Uma assinatura preservada {{...{{{s, d, C s , R s }, ts 1 , C 1 ts, R 1 ts}, ts 2 , C 2 ts, R 2 ts},<br />

...}, ts n , C n ts} é válida se:<br />

• o carimbo do tempo ts n for atualmente válido;<br />

• para todo ts i , com 1 ≤ i ≤ n − 1, ts i era válido na data indicada por ts i+1 ;<br />

• a assinatura s era válida na data indicada por ts 1 .<br />

60


4. Carimbos do Tempo Autenticados<br />

Neste trabalho aumentamos a eficiência e confiabilida<strong>de</strong> da preservação baseada<br />

em carimbos do tempo por meio <strong>de</strong> um novo esquema <strong>de</strong> datação, chamado Carimbos<br />

do Tempo Autenticados. Esse esquema esten<strong>de</strong> o convencional adicionando duas novas<br />

operações, as operações <strong>de</strong> autenticação e renovação <strong>de</strong> carimbos, viabilizadas pela<br />

cooperação entre a Autorida<strong>de</strong> <strong>de</strong> Carimbo do Tempo (ACT) e a Âncora <strong>de</strong> Confiança do<br />

usuário, comumente, a Autorida<strong>de</strong> Certificadora Raiz (AC-Raiz). Tal esquema tem como<br />

objetivo reduzir a velocida<strong>de</strong> com que crescem os custos relacionados às assinaturas preservadas<br />

assim como aumentar as chances <strong>de</strong> a assinatura permanecer válida pelo tempo<br />

necessário.<br />

A operação <strong>de</strong> autenticação busca reduzir os custos por carimbo adicionado.<br />

Através <strong>de</strong>la é possível substituir as informações necessárias à verificação da autenticida<strong>de</strong><br />

do carimbo, tais como seu caminho <strong>de</strong> certificação, por um Certificado <strong>de</strong> Autenticida<strong>de</strong>,<br />

on<strong>de</strong> a própria Âncora <strong>de</strong> Confiança confirma essa proprieda<strong>de</strong>. A operação <strong>de</strong><br />

renovação, por sua vez, busca reduzir o número <strong>de</strong> carimbos do tempo adicionados durante<br />

a preservação. Por meio <strong>de</strong>la é possível renovar o Certificado <strong>de</strong> Autenticida<strong>de</strong> do<br />

carimbo, prolongando sua valida<strong>de</strong>, e assim postergando a adição <strong>de</strong> novos carimbos.<br />

4.1. Certificados <strong>de</strong> Autenticida<strong>de</strong><br />

Certificados <strong>de</strong> Autenticida<strong>de</strong> são documentos eletrônicos, assinados pela Âncora<br />

<strong>de</strong> Confiança, on<strong>de</strong> ela reconhece a autenticida<strong>de</strong> dos carimbos do tempo emitidos pela<br />

ACT. Por meio <strong>de</strong>sse certificado a Âncora <strong>de</strong> Confiança persiste a autenticida<strong>de</strong> do carimbo,<br />

tornando <strong>de</strong>snecessária a validação <strong>de</strong> sua assinatura bem como do caminho <strong>de</strong><br />

certificação relacionado. Como resultado, é possível minimizar os custos <strong>de</strong> armazenamento<br />

e validação do carimbo, bem como tolerar a maioria dos fatores que tradicionalmente<br />

levariam a perda <strong>de</strong> sua valida<strong>de</strong>.<br />

De maneira simplificada, tal conceito po<strong>de</strong>ria ser implementado através <strong>de</strong> um<br />

serviço online, oferecido pela Âncora <strong>de</strong> Confiança, on<strong>de</strong> ela publicaria um Certificado<br />

<strong>de</strong> Autenticida<strong>de</strong> para cada carimbo do tempo a ela apresentado. Nesse caso, cada carimbo<br />

emitido pela ACT, seria encaminhado a Âncora <strong>de</strong> Confiança, que então validaria<br />

sua assinatura e, sendo válida, publicaria um documento eletrônico assinado, on<strong>de</strong> reconheceria<br />

a autenticida<strong>de</strong> do carimbo.<br />

Apesar <strong>de</strong> funcional, uma implementação como essa possui problemas <strong>de</strong> or<strong>de</strong>m<br />

prática que a tornam inviável. Um dos principais problemas está na necessida<strong>de</strong> <strong>de</strong> manter<br />

a Âncora <strong>de</strong> Confiança online <strong>de</strong> modo a aten<strong>de</strong>r às solicitações recebidas. Algo que<br />

contraria boas práticas <strong>de</strong> segurança caso, por exemplo, essa âncora seja uma AC-Raiz.<br />

Outro problema resi<strong>de</strong> no volume <strong>de</strong> informações necessárias para a produção dos Certificados<br />

<strong>de</strong> Autenticida<strong>de</strong>. Ela requer o envio <strong>de</strong> cada um dos carimbos do tempo para a<br />

Âncora <strong>de</strong> Confiança.<br />

Dessa forma, na abordagem adotada, a Âncora <strong>de</strong> Confiança publica um Certificado<br />

<strong>de</strong> Autenticida<strong>de</strong> para cada conjunto <strong>de</strong> carimbos emitido. Nesse caso, ao invés <strong>de</strong><br />

receber cada um dos carimbos, ela recebe pequenas representações <strong>de</strong>sses conjuntos, calculadas<br />

por meio <strong>de</strong> construções criptográficas como as Árvores <strong>de</strong> Merkle. O Certificado<br />

<strong>de</strong> Autenticida<strong>de</strong> <strong>de</strong> cada carimbo é então formado pelo certificado do conjunto ao qual<br />

61


ele pertence, e por sua Prova <strong>de</strong> Associação, capaz <strong>de</strong> comprovar que o carimbo é um dos<br />

elementos <strong>de</strong>sse conjunto.<br />

Tal abordagem permite à Âncora <strong>de</strong> Confiança operar <strong>de</strong> maneira periódica, publicando<br />

Certificados <strong>de</strong> Autenticida<strong>de</strong> apenas ao fim <strong>de</strong>sses períodos, <strong>de</strong> modo semelhante<br />

ao que já ocorre na publicação <strong>de</strong> Listas <strong>de</strong> Certificados Revogados (LCRs) [9]. Algo<br />

particularmente interessante caso, por exemplo, a Âncora <strong>de</strong> Confiança seja mantida offline<br />

em uma Sala Cofre. Essa abordagem igualmente reduz o volume <strong>de</strong> informações<br />

necessárias para a produção <strong>de</strong>sses certificados.<br />

4.2. Serviços <strong>de</strong> Suporte<br />

Nesse sentido, a produção <strong>de</strong> Carimbos do Tempo Autenticados <strong>de</strong>pen<strong>de</strong> <strong>de</strong> três<br />

serviços, o <strong>de</strong> emissão <strong>de</strong> carimbos do tempo e os <strong>de</strong> publicação e renovação <strong>de</strong> Certificados<br />

<strong>de</strong> Autenticida<strong>de</strong>. O fornecimento <strong>de</strong>sses serviços ainda requer a manutenção <strong>de</strong><br />

estruturas <strong>de</strong> dados pela ACT e pela Âncora <strong>de</strong> Confiança, respectivamente, o Repositório<br />

<strong>de</strong> Provas <strong>de</strong> Associação (RPA) e o Repositório <strong>de</strong> Certificados para Conjuntos (RCC).<br />

A emissão <strong>de</strong>sses carimbos ocorre mediante a solicitação do usuário, seguindo<br />

uma versão estendida do protocolo tradicional representada a seguir:<br />

U −→ ACT : H(x)<br />

ACT −→ U : {H(x), t}, Sign ACT ({H(x), t}) , p a<br />

} {{ }<br />

ts<br />

Nessa versão estendida, a ACT registra o resumo criptográfico H(ts) <strong>de</strong> cada<br />

carimbo do tempo emitido no RPA, e informa, por meio <strong>de</strong> uma extensão não assinada<br />

do carimbo, o período pelo qual o seu Certificado <strong>de</strong> Autenticida<strong>de</strong> ficará disponível,<br />

chamado <strong>de</strong> Período <strong>de</strong> Autenticação. Nesse registro, a função <strong>de</strong> resumo criptográfico<br />

usada <strong>de</strong>ve ser segura e igual aquela usada no carimbo.<br />

A publicação do Certificado <strong>de</strong> Autenticida<strong>de</strong> <strong>de</strong> cada carimbo emitido ocorre no<br />

início <strong>de</strong> seu Período <strong>de</strong> Autenticação e é precedida por uma fase <strong>de</strong> preparação, on<strong>de</strong> se<br />

dá a solicitação e posterior produção do certificado para o conjunto ao qual ele pertence.<br />

Tais Certificados para Conjuntos são solicitados periodicamente pela ACT.<br />

Em cada solicitação a ACT calcula uma representação do conjunto <strong>de</strong> carimbos do<br />

tempo registrados durante o período no RPA, enviando para a Âncora <strong>de</strong> Confiança um documento<br />

eletrônico assinado contendo essa representação, e seus dados <strong>de</strong> i<strong>de</strong>ntificação.<br />

Por meio <strong>de</strong> tal solicitação a ACT <strong>de</strong>clara ter emitido os carimbos do tempo ali representados.<br />

A representação <strong>de</strong>sses carimbos, por sua vez, é o nó raiz da Árvore <strong>de</strong> Merkle<br />

formada a partir <strong>de</strong>les e calculada por meio <strong>de</strong> algoritmos como o TREEHASH [23].<br />

Por igualmente operar <strong>de</strong> maneira periódica, a Âncora <strong>de</strong> Confiança apenas valida<br />

e registra a solicitação no RCC, aguardando o fim do período para assinar o Certificado<br />

<strong>de</strong> Autenticida<strong>de</strong> do conjunto ali representado. É com a publicação <strong>de</strong>sse certificado e<br />

da Prova <strong>de</strong> Associação correspon<strong>de</strong>nte, que termina a fase <strong>de</strong> preparação. Tais provas,<br />

por sua vez, são os caminhos <strong>de</strong> autenticação <strong>de</strong> cada carimbo na Árvore <strong>de</strong> Merkle,<br />

calculados pela ACT por meio <strong>de</strong> algoritmos <strong>de</strong> travessia como o <strong>de</strong> Szydlo [23].<br />

Iniciado o Período <strong>de</strong> Autenticação, é possível obter o Certificado <strong>de</strong> Autenticida<strong>de</strong><br />

do carimbo por meio dos protocolos <strong>de</strong> solicitação <strong>de</strong> Provas <strong>de</strong> Associação e <strong>de</strong><br />

Certificados para Conjuntos. O primeiro é apresentado a seguir:<br />

62


U −→ ACT : H(ts)<br />

ACT −→ U : Auth ts<br />

Nele, o usuário solicita a Prova <strong>de</strong> Associação <strong>de</strong> um carimbo, enviando o seu resumo<br />

criptográfico H(ts). Ao receber o resumo, a ACT obtêm a Prova <strong>de</strong> Associação correspon<strong>de</strong>nte<br />

no RPA e a retorna para o usuário. Certificados <strong>de</strong> Conjunto, por sua vez, são<br />

obtidos através do seguinte protocolo:<br />

U −→ Âncora : φ<br />

Âncora −→ U : {id ACT , φ}, SignÂncora ({id ACT , φ})<br />

} {{ }<br />

sl φ<br />

Nesse protocolo, o usuário solicita o Certificado para Conjuntos <strong>de</strong> um carimbo, enviando<br />

a representação <strong>de</strong> seu conjunto. Ao receber a representação, a Âncora <strong>de</strong> Confiança<br />

obtêm o Certificado para Conjuntos correspon<strong>de</strong>nte no RCC e o retorna para o usuário.<br />

Tal representação po<strong>de</strong> ser calculada a partir da Prova <strong>de</strong> Associação do carimbo, empregando<br />

o algoritmo para validação <strong>de</strong> caminhos <strong>de</strong> autenticação em Árvores <strong>de</strong> Merkle<br />

[19].<br />

Terminado o Período <strong>de</strong> Autenticação do carimbo, ocorre a <strong>de</strong>struição <strong>de</strong> sua<br />

Prova <strong>de</strong> Associação pela ACT. Tal <strong>de</strong>struição tem por objetivo limitar os custos <strong>de</strong> armazenamento<br />

relacionados a essas provas. Certificados para Conjuntos, por outro lado,<br />

permanecem no RCC <strong>de</strong> modo a suportar futuras renovações do Certificado <strong>de</strong> Autenticida<strong>de</strong><br />

do carimbo.<br />

A renovação <strong>de</strong> Certificados <strong>de</strong> Autenticida<strong>de</strong> ocorre mediante a solicitação do<br />

usuário, e segue o protocolo a seguir:<br />

U −→ Âncora : φ<br />

Âncora −→ U : {id ACT , φ}, Sign ′ Âncora ({id ACT , φ})<br />

} {{ }<br />

sl ′ φ<br />

Nele, o usuário solicita a renovação <strong>de</strong> seu Certificado <strong>de</strong> Autenticida<strong>de</strong>, enviando a<br />

representação presente no Certificado para Conjuntos. Ao receber tal representação, a<br />

Âncora <strong>de</strong> Confiança obtêm a nova versão do Certificado para Conjuntos no RCC e a<br />

retorna para o usuário. O Certificado <strong>de</strong> Autenticida<strong>de</strong> é renovado pela substituição do<br />

antigo Certificado para Conjuntos pelo novo.<br />

Novas versões do Certificado para Conjuntos ficam disponíveis a medida que as<br />

anteriores per<strong>de</strong>m sua valida<strong>de</strong>. Tal problema ocorre com a revogação ou expiração do<br />

certificado <strong>de</strong> chaves públicas da Âncora <strong>de</strong> Confiança, ou com o enfraquecimento do<br />

esquema <strong>de</strong> assinatura usado no Certificado para Conjuntos. Nesses casos, cabe a Âncora<br />

<strong>de</strong> Confiança contornar tais problemas e se preciso reassinar o certificado no RCC. Para<br />

tanto, po<strong>de</strong> ser necessário que ela primeiramente renove seu certificado <strong>de</strong> chaves públicas<br />

ou atualize seu esquema <strong>de</strong> assinatura.<br />

Por fim, <strong>de</strong> modo a limitar os custos relacionados à renovação dos Certificados <strong>de</strong><br />

Autenticida<strong>de</strong>, ocorre periodicamente a otimização do Repositório <strong>de</strong> Certificados para<br />

Conjuntos. Nessas otimizações são removidos do RCC todos os registros cuja função<br />

<strong>de</strong> resumo criptográfico usada não seja mais resistente à segunda inversão. Quando essa<br />

resistência é perdida, tanto o registro per<strong>de</strong> sua serventia, quanto o carimbo do tempo<br />

per<strong>de</strong> sua capacida<strong>de</strong> <strong>de</strong> comprovar a integrida<strong>de</strong> da informação datada.<br />

63


4.3. Preservação <strong>de</strong> Assinaturas<br />

A preservação <strong>de</strong> uma assinatura digital por meio <strong>de</strong> Carimbos do Tempo Autenticados<br />

segue os seguintes passos, on<strong>de</strong> s, d, C s e R s , são, respectivamente, a assinatura, o<br />

documento assinado, os certificados do caminho <strong>de</strong> certificação do signatário e os dados<br />

<strong>de</strong> revogação atuais:<br />

1. inicialização: adicionar um carimbo do tempo ts 1 sobre {s, d, C s , R s }, obtendo<br />

{{s, d, C s , R s }, ts 1 , C 1 ts};<br />

2. agendamento: agendar a sobreposição do carimbo. Essa sobreposição <strong>de</strong>ve ocorrer<br />

antes <strong>de</strong> o carimbo não po<strong>de</strong>r mais ser renovado, sendo, em geral, agendada<br />

para um momento próximo ao enfraquecimento da função <strong>de</strong> resumo criptográfico<br />

usada;<br />

3. autenticação: autenticar o carimbo durante o seu Período <strong>de</strong> Autenticação, obtendo<br />

{{s, d, C s , R s }, ts 1 , sl 1 ts};<br />

4. sobreposição: no momento agendado, validar ts 1 . Se inválido, renovar o carimbo.<br />

Sendo ts 1 o carimbo possivelmente renovado, adicionar ts 2 sobre {{s, d, C s , R s },<br />

ts 1 , sl 1 ts} obtendo {{{s, d, C s , R s }, ts 1 , sl 1 ts}, ts 2 , C 2 ts}. Caso ts 1 já tenha perdido<br />

sua valida<strong>de</strong>, e sua renovação não seja possível, a preservação falha;<br />

5. repetição: para os próximos carimbos, repetir os passos 2 e 3 enquanto for necessário<br />

preservar a valida<strong>de</strong> da assinatura. Dessa forma, na adição do n-ésimo<br />

carimbo, obtêm-se {{...{{{s, d, C s , R s }, ts 1 , sl 1 ts}, ts 2 , sl 2 ts}, ...}, ts n , C n ts}.<br />

4.4. Validação <strong>de</strong> Assinaturas<br />

Uma assinatura preservada {{...{{{s, d, C s , R s }, ts 1 , sl 1 ts}, ts 2 , sl 2 ts}, ...}, ts n ,<br />

C n ts} ou {{...{{{s, d, C s , R s }, ts 1 , sl 1 ts}, ts 2 , sl 2 ts}, ...}, ts n , sl n ts} é válida se:<br />

• o carimbo do tempo ts n for atualmente válido. Caso já esteja inválido, po<strong>de</strong> ser<br />

preciso autenticar e/ou renovar o carimbo;<br />

• para todo ts i , com 1 ≤ i ≤ n − 1, ts i era válido na data indicada por ts i+1 , sendo<br />

que a autenticida<strong>de</strong> <strong>de</strong> cada carimbo <strong>de</strong>ve ser verificada através <strong>de</strong> seu Certificado<br />

<strong>de</strong> Autenticida<strong>de</strong>.<br />

• a assinatura s era válida na data indicada por ts 1 .<br />

Um Certificado <strong>de</strong> Autenticida<strong>de</strong> {Auth ts , sl φ }, por sua vez, é válido se:<br />

• seu caminho <strong>de</strong> autenticação, presente na Prova <strong>de</strong> Associação, for válido;<br />

• a assinatura da Âncora <strong>de</strong> Confiança, presente no Certificado para Conjuntos, for<br />

válida.<br />

5. Análise<br />

Os principais benefícios trazidos pelo uso <strong>de</strong> Carimbos do Tempo Autenticados<br />

são o aumento na eficiência e confiabilida<strong>de</strong> na preservação das assinaturas digitais. Um<br />

outro benefício está na possibilida<strong>de</strong> <strong>de</strong> validação off-line <strong>de</strong>ssas assinaturas, permitindo<br />

que essa ocorra em dispositivos sem conexão <strong>de</strong> re<strong>de</strong>. O suporte à emissão, autenticação<br />

e renovação <strong>de</strong>sses carimbos, todavia, implica em custos adicionais para a Autorida<strong>de</strong> <strong>de</strong><br />

Carimbo do Tempo (ACT) e Âncora <strong>de</strong> Confiança.<br />

64


5.1. Custos na Preservação e Validação <strong>de</strong> Assinaturas<br />

O esquema <strong>de</strong> datação proposto é capaz <strong>de</strong> reduzir os custos na preservação e<br />

validação <strong>de</strong> assinaturas digitais por diminuir tanto a quantida<strong>de</strong> <strong>de</strong> carimbos adicionados<br />

durante a preservação, quanto os custos por carimbo adicionado. Tais melhorais po<strong>de</strong>m<br />

ser observadas consi<strong>de</strong>rando o mo<strong>de</strong>lo matemático apresentado abaixo.<br />

θ U (p p ) =<br />

n ∑ pp<br />

(α(ts i ) + α(V i )) (1)<br />

i=1<br />

n pp =<br />

⌈<br />

pp<br />

p ts<br />

⌉<br />

(2)<br />

A função 1 reflete as informações armazenadas durante a preservação por carimbos<br />

do tempo, on<strong>de</strong> o custo <strong>de</strong> armazenamento após um certo período <strong>de</strong> preservação p p<br />

é dado pelo espaço necessário para cada carimbo adicionado α(ts i ), bem como para as<br />

informações necessárias a sua validação, representado por α(V i ). O número <strong>de</strong> carimbos<br />

adicionados n pp , por sua vez, é dado pelo período <strong>de</strong> preservação divido pelo tempo médio<br />

pelos quais os carimbos permanecem válidos, até que a sua sobreposição seja necessária.<br />

A quantida<strong>de</strong> <strong>de</strong> carimbos do tempo adicionados é reduzida graças as operações<br />

<strong>de</strong> autenticação e renovação que permitem postergar a sobreposição dos carimbos. Graças<br />

a elas, <strong>de</strong>ntre todos os problemas que tradicionalmente <strong>de</strong>mandariam essa sobreposição,<br />

fica restando apenas um, o enfraquecimento da função <strong>de</strong> resumo criptográfico usada,<br />

geralmente um dos últimos a ocorrer. Essa redução po<strong>de</strong> ser observada consi<strong>de</strong>rando a<br />

forma como o período entre as sobreposições passa a ser calculado.<br />

Tradicionalmente, esse período po<strong>de</strong> ser aproximado pelo prazo <strong>de</strong> valida<strong>de</strong> médio<br />

dos certificados da ACT, pois a sua expiração ten<strong>de</strong> a ser o primeiro problema a <strong>de</strong>mandar<br />

a sobreposição do carimbo. De maneira mais realista, é usual consi<strong>de</strong>rar a meta<strong>de</strong> <strong>de</strong>sse<br />

prazo, pois os carimbos ten<strong>de</strong>m a ser obtidos tanto em seu início quanto no fim. Nos Carimbos<br />

do Tempo Autenticados, por outro lado, esse período é dado pela meta<strong>de</strong> daquele<br />

pelo qual as funções <strong>de</strong> resumo criptográfico usadas geralmente permanecem seguras.<br />

Assim, o número <strong>de</strong> carimbos adicionados diminui pois o período entre as<br />

sobreposições aumenta, uma vez que a segurança <strong>de</strong> funções <strong>de</strong> resumo criptográfico<br />

ten<strong>de</strong> a durar mais que certificados. Algo que po<strong>de</strong> ser observado ao se consi<strong>de</strong>rar<br />

recomendações técnicas sobre o período <strong>de</strong> valida<strong>de</strong> <strong>de</strong>sses certificados [4, 20], bem<br />

como o histórico das principais funções <strong>de</strong> resumo criptográficas até então publicadas.<br />

Enquanto o NIST, por exemplo, recomenda prazos <strong>de</strong> até 3 anos, funções <strong>de</strong> resumo ten<strong>de</strong>m<br />

a permanecer seguras por mais <strong>de</strong> 10 anos [11, 22].<br />

Os custos por carimbo adicionado, por sua vez, são reduzidos graças a operação <strong>de</strong><br />

autenticação que modifica a forma como a autenticida<strong>de</strong> <strong>de</strong>sses carimbos <strong>de</strong>ve ser verificada<br />

bem como as informações necessárias para essa verificação. O que tradicionalmente<br />

ocorreria pela validação da assinatura do carimbo e <strong>de</strong> seu caminho <strong>de</strong> certificação X.509,<br />

passa a ocorrer pela validação <strong>de</strong> seu Certificado <strong>de</strong> Autenticida<strong>de</strong>, que ten<strong>de</strong> a requerer<br />

tanto um espaço <strong>de</strong> armazenamento, quanto um tempo para validação, menores.<br />

Os custos <strong>de</strong> armazenamento por carimbo são reduzidos pois, enquanto os tradicionais<br />

requerem a guarda <strong>de</strong> cada certificado do caminho <strong>de</strong> certificação, bem como dos<br />

65


Variável Valor Variável Valor Variável Valor<br />

α(ts) 700 bytes p H 10 anos n i ts, n tr<br />

ts 604.800 carimbos<br />

α(C ts ) 3700 bytes α(Auth ts ) 380 bytes p tr 7 dias<br />

α(R ts ) 111600 bytes α(sl φ ) 500 bytes n pa<br />

tr 4 períodos<br />

p ACT 3 anos α(h ts ) 20 bytes n i ACT 100 ACTs<br />

Tabela 1. Valores usados nas simulações.<br />

dados <strong>de</strong> revogação relacionados, tais como Listas <strong>de</strong> Certificados Revogados (LCR) ou<br />

respostas OCSP, nos Carimbos do Tempo Autenticados é necessário apenas o armazenamento<br />

do Certificado <strong>de</strong> Autenticida<strong>de</strong>. Esse último formado por um Certificado para<br />

Conjuntos, e por uma ca<strong>de</strong>ia <strong>de</strong> resumos criptográficos que cresce logaritmicamente em<br />

função do número <strong>de</strong> carimbos que o certificado autentica.<br />

O tempo para validar o carimbo, por sua vez, é menor principalmente por tornar<br />

<strong>de</strong>snecessária a obtenção <strong>de</strong> informações complementares pela re<strong>de</strong>. Nos carimbos tradicionais<br />

isso é requerido para permitir a validação do caminho <strong>de</strong> certificação com dados<br />

<strong>de</strong> revogações atuais. Nos Carimbos do Tempo Autenticados isso não ocorre porque o<br />

Certificado <strong>de</strong> Autenticida<strong>de</strong> é auto-contido. Nesse caso, consi<strong>de</strong>rando a implementação<br />

tradicional, on<strong>de</strong> uma Âncora <strong>de</strong> Confiança é válida se estiver cadastrada no repositório<br />

<strong>de</strong> âncoras do usuário.<br />

De modo a estimar os ganhos trazidos na prática por essa proposta, foram realizadas<br />

simulações da preservação <strong>de</strong> uma assinatura por 50 anos, empregando valores<br />

tipicamente encontrados em infraestruturas <strong>de</strong> chaves públicas (ICP) <strong>de</strong> gran<strong>de</strong> porte.<br />

Dois <strong>de</strong>sses valores requerem maiores consi<strong>de</strong>rações, sendo eles o prazo <strong>de</strong> valida<strong>de</strong> dos<br />

certificados da ACT e o período <strong>de</strong> uso das funções <strong>de</strong> resumo criptográfico.<br />

O prazo <strong>de</strong> valida<strong>de</strong> <strong>de</strong>sses certificados é o prazo máximo citado em<br />

recomendações técnicas como a do NIST [4], sendo, igualmente, aquele usado na Infraestrutura<br />

<strong>de</strong> Chaves Públicas Brasileira (ICP-Brasil). O período <strong>de</strong> uso das funções <strong>de</strong><br />

resumo criptográfico, por sua vez, consi<strong>de</strong>ra o histórico das principais funções já publicadas,<br />

assim como previsões quanto a segurança das funções atualmente em uso [11, 5, 22].<br />

Tal período po<strong>de</strong> ser consi<strong>de</strong>rado conservador, uma vez que no esquema proposto<br />

a resistência à segunda inversão é suficiente para a renovação dos carimbos, e essa ten<strong>de</strong><br />

a se per<strong>de</strong>r certo tempo após tais funções serem consi<strong>de</strong>radas inseguras. Consi<strong>de</strong>rando<br />

ataques <strong>de</strong> força bruta, por exemplo, a quebra da resistência à colisão, que já tornaria a<br />

função insegura, requer o cálculo <strong>de</strong> 2 n/2 resumos criptográficos, sendo n o número <strong>de</strong><br />

bits do resumo. A quebra da resistência à segunda inversão, por outro lado, requer 2 n<br />

operações.<br />

Os valores relacionados ao esquema proposto, usados na simulação, por sua vez,<br />

foram obtidos a partir <strong>de</strong> uma implementação dos Carimbos do Tempo Autenticados, realizada<br />

sobre uma especificação ASN.1 dos protocolos. Esses valores, assim como aqueles<br />

usados na configuração <strong>de</strong>sse esquema <strong>de</strong> datação, são apresentados na tabela 1. Como<br />

alguns <strong>de</strong>les crescem com o tempo, assume-se que sejam os valores médios encontrados<br />

durante o período <strong>de</strong> preservação, consi<strong>de</strong>rando que tenha começado no passado e que<br />

continue no futuro.<br />

66


Nas simulações, os custos <strong>de</strong> armazenamento com carimbos tradicionais chegaram<br />

a 3,65 MB. Na preservação com Carimbos do Tempo Autenticados, por outro lado,<br />

esse custo foi <strong>de</strong> apenas 15,42 KB, uma redução <strong>de</strong> 99,59%. Essa redução foi particularmente<br />

influenciada pelo espaço necessário para o armazenamento das informações <strong>de</strong><br />

validação <strong>de</strong>sses carimbos, esse foi 99,23% menor que o requerido pelos carimbos tradicionais.<br />

5.2. Confiabilida<strong>de</strong> na Preservação <strong>de</strong> Assinaturas<br />

O esquema <strong>de</strong> datação proposto é capaz <strong>de</strong> aumentar a confiabilida<strong>de</strong> do processo<br />

<strong>de</strong> preservação por carimbos do tempo por tornar toleráveis a maioria dos problemas que<br />

tradicionalmente levariam a preservação a falhar. Particularmente, aqueles problemas que<br />

impediriam futuras sobreposições do último carimbo até então adicionado, por torná-lo<br />

inválido antes do previsto no agendamento. Tradicionalmente tais problemas compreen<strong>de</strong>m:<br />

1. revogação do certificado da Âncora <strong>de</strong> Confiança;<br />

2. quebra do esquema <strong>de</strong> assinatura usado pela Âncora;<br />

3. revogação do certificado <strong>de</strong> alguma das ACs do caminho <strong>de</strong> certificação;<br />

4. quebra <strong>de</strong> algum esquema <strong>de</strong> assinatura usado por essas ACs;<br />

5. revogação do certificado da ACT;<br />

6. quebra do esquema <strong>de</strong> assinatura usado pela ACT;<br />

7. quebra da função <strong>de</strong> resumo criptográfico usada pela ACT.<br />

No caso dos Carimbos do Tempo Autenticados, a maioria <strong>de</strong>sses problemas (3,<br />

4, 5 e 6) já é anulada na autenticação do carimbo. Os restantes são tolerados por meio<br />

da operação <strong>de</strong> renovação do carimbo que permite restabelecer a sua valida<strong>de</strong> quando<br />

perdida. As únicas exceções são a revogação da Âncora <strong>de</strong> Confiança, <strong>de</strong>vido a perda <strong>de</strong><br />

integrida<strong>de</strong> do Repositório <strong>de</strong> Certificados para Conjuntos (RCC), e a quebra da função<br />

<strong>de</strong> resumo criptográfico usada no carimbo pela ACT. Particularmente, a perda <strong>de</strong> sua<br />

resistência à segunda inversão. Nesses casos, mesmo a renovação do carimbo não é mais<br />

possível.<br />

5.3. Serviços <strong>de</strong> Suporte<br />

Apesar dos benefícios oferecidos por esse novo esquema <strong>de</strong> datação, seu suporte<br />

implica em custos adicionais para a ACT e Âncora <strong>de</strong> Confiança. No caso da ACT, tais<br />

custos estão particularmente relacionados à produção e armazenamento das Provas <strong>de</strong><br />

Associação, no Repositório <strong>de</strong> Provas <strong>de</strong> Associação (RPA).<br />

A produção <strong>de</strong>ssas provas possui custos <strong>de</strong> memória e processamento que <strong>de</strong>pen<strong>de</strong>m<br />

principalmente do algoritmo adotado para a travessia da Árvore <strong>de</strong> Merkle. No <strong>de</strong><br />

Szydlo [23], por exemplo, a geração <strong>de</strong> cada caminho <strong>de</strong> autenticação requer o cálculo <strong>de</strong><br />

no máximo 2log 2 (n) resumos criptográficos, e o armazenamento <strong>de</strong> menos <strong>de</strong> 3log 2 (n)<br />

resumos em memória, on<strong>de</strong> n é o número <strong>de</strong> carimbos do tempo emitidos no período. Os<br />

custos <strong>de</strong> armazenamento <strong>de</strong>ssas provas, por sua vez, po<strong>de</strong>m ser representados por meio<br />

do seguinte mo<strong>de</strong>lo:<br />

θ ACT (p o ) =<br />

tr−1 n<br />

∑ ∑<br />

i ts<br />

(<br />

i=tr−n otr j=1<br />

α(Auth i,j<br />

ts )) +<br />

n tr<br />

ts<br />

∑<br />

α(h i ts) (3)<br />

i=1<br />

67


tr − npa tr + |tr − n pa<br />

tr |<br />

n otr = tr −<br />

2<br />

⌈ ⌉<br />

po<br />

tr =<br />

p tr<br />

(4)<br />

(5)<br />

A função 3 reflete as informações armazenadas no RPA durante as operações da ACT.<br />

Nessa função, o custo <strong>de</strong> armazenamento após um período <strong>de</strong> operação p o , é dado pelo<br />

caminho <strong>de</strong> autenticação <strong>de</strong> cada um dos n i ts carimbos emitidos, nos n otr períodos anteriores<br />

que ainda estão em Período <strong>de</strong> Autenticação, somado ao espaço necessário para o<br />

resumo criptográfico h i ts <strong>de</strong> cada um dos n tr<br />

ts carimbos emitidos no período atual tr. On<strong>de</strong><br />

p tr é a duração <strong>de</strong> um período e n pa<br />

tr é a duração do Período <strong>de</strong> Autenticação em número<br />

<strong>de</strong> períodos.<br />

No caso da Âncora <strong>de</strong> Confiança, o suporte a esse esquema <strong>de</strong> datação traz custos<br />

relacionados, principalmente, à reassinatura dos Certificados para Conjuntos e armazenamento<br />

<strong>de</strong>sses certificados no RCC. A reassinatura dos certificados possui custos relacionados<br />

principalmente ao esquema <strong>de</strong> assinatura usado e ao número <strong>de</strong> certificados emitidos<br />

e ainda suportados. Número esse que <strong>de</strong>pen<strong>de</strong> da quantida<strong>de</strong> <strong>de</strong> ACTs em operação, bem<br />

como da duração dos períodos da Âncora <strong>de</strong> Confiança. Os custos <strong>de</strong> armazenamento<br />

<strong>de</strong>sses certificados, por sua vez, po<strong>de</strong>m ser representados por meio do seguinte mo<strong>de</strong>lo:<br />

θÂncora (p o ) =<br />

ar−1 n<br />

∑<br />

i ACT<br />

∑<br />

(<br />

i=0 j=1<br />

n ar<br />

r∑<br />

α(sl i,j<br />

φ )) +<br />

i=1<br />

α(r i ) (6)<br />

ar =<br />

⌈<br />

po<br />

p ar<br />

⌉<br />

(7)<br />

A função 6 reflete as informações armazenadas no RCC durante as operações da Âncora<br />

<strong>de</strong> Confiança, <strong>de</strong>sconsi<strong>de</strong>rando as otimizações periódicas do RCC. Nessa função, o custo<br />

<strong>de</strong> armazenamento após um período <strong>de</strong> operação p o é dado pelos Certificados para Conjuntos<br />

até então publicados para as n i ACT ACTs em operação, somado ao espaço necessário<br />

para cada uma das n ar<br />

r solicitações recebidas no período atual ar. On<strong>de</strong> p ar é<br />

a duração <strong>de</strong> um período <strong>de</strong> Âncora <strong>de</strong> Confiança.<br />

De modo a estimar os custos trazidos na prática para a ACT e Âncora <strong>de</strong><br />

Confiança, foram realizadas simulações das operações <strong>de</strong>ssas entida<strong>de</strong>s por 10 anos. Nessas<br />

simulações foram igualmente consi<strong>de</strong>rados os valores da tabela 1, sendo que o número<br />

<strong>de</strong> carimbos emitidos em cada período da ACT assume a taxa <strong>de</strong> um carimbo por segundo<br />

durante todo o período.<br />

Nas simulações os custos <strong>de</strong> armazenamento para a ACT chegaram a 888 MB, se<br />

mantendo praticamente constantes <strong>de</strong>vido a remoção das Provas <strong>de</strong> Associação ao fim do<br />

Período <strong>de</strong> Autenticação dos carimbos emitidos. No caso da Âncora <strong>de</strong> Confiança, foram<br />

necessários 24 MB para o armazenamento dos Certificados para Conjuntos emitidos ao<br />

longo <strong>de</strong>sses 10 anos. Nesse caso, não foi consi<strong>de</strong>rada a operação <strong>de</strong> otimização do RCC,<br />

que removeria registros conforme a função <strong>de</strong> resumo criptográfico usada se tornasse<br />

insegura.<br />

68


6. Conclusões<br />

O uso <strong>de</strong> documentos eletrônicos vem crescendo em importância nas relações<br />

entre os cidadãos, empresas e governos, tornando a preservação <strong>de</strong> assinaturas digitais<br />

uma questão fundamental no caso daqueles documentos que precisam ser preservados<br />

por um longo período <strong>de</strong> tempo. Assim, várias estratégias já foram propostas, sendo a<br />

sobreposição <strong>de</strong> carimbos do tempo a principal <strong>de</strong>las.<br />

Neste trabalho aumentamos a eficiência e confiabilida<strong>de</strong> <strong>de</strong>ssa estratégia <strong>de</strong><br />

preservação por meio <strong>de</strong> um novo esquema <strong>de</strong> datação, os Carimbos do Tempo Autenticados.<br />

Tal esquema reduz drasticamente os custos na preservação e validação <strong>de</strong> assinaturas<br />

digitais, além <strong>de</strong> oferecer maiores garantias quanto a preservação <strong>de</strong>ssas assinaturas pelo<br />

tempo necessário.<br />

Esses benefícios, além da possibilida<strong>de</strong> <strong>de</strong> validação off-line das assinaturas, tornam<br />

esse esquema <strong>de</strong> datação particularmente interessante para dispositivos com poucos<br />

recursos computacionais, ou na preservação <strong>de</strong> gran<strong>de</strong>s volumes <strong>de</strong> documentos. Tal esquema<br />

po<strong>de</strong> ser usado não só na preservação <strong>de</strong> assinaturas digitais, mas igualmente em<br />

outras áreas on<strong>de</strong> carimbos do tempo são empregados. Exemplos <strong>de</strong>ssas áreas incluem a<br />

proteção da proprieda<strong>de</strong> intelectual, o comércio e votação eletrônicos.<br />

Trabalhos futuros po<strong>de</strong>m focar na análise formal dos protocolos criptográficos<br />

envolvidos nesse esquema <strong>de</strong> datação, bem como na implementação <strong>de</strong> mecanismos <strong>de</strong><br />

herança que permitam migrar o conteúdo dos Repositórios <strong>de</strong> Certificados para Conjuntos<br />

para novas Âncoras <strong>de</strong> Confiança. Outros tópicos incluem o uso dos Certificados <strong>de</strong><br />

Autenticida<strong>de</strong> para a otimização <strong>de</strong> assinaturas <strong>de</strong> curto prazo, bem como a integração das<br />

operações <strong>de</strong> autenticação e renovação em outras estratégias <strong>de</strong> notarização, aumentando<br />

sua eficiência e confiabilida<strong>de</strong>.<br />

Referências<br />

[1] C. Adams, P. Cain, D. Pinkas, and R. Zuccherato. Internet X.509 Public Key Infrastructure Time-Stamp<br />

Protocol (TSP). RFC 3161 (Proposed Standard), August 2001. Updated by RFC 5816.<br />

[2] R. An<strong>de</strong>rson. Invited lecture. In Fourth Annual Conference on Computer and Communications Security,<br />

ACM, 1997.<br />

[3] A. Ansper, A. Buldas, M. Roos, and J. Willemson. Efficient long-term validation of digital signatures. In<br />

Public Key Cryptography, pages 402–415. Springer, 2001.<br />

[4] E. Barker, W. Barker, W. Burr, W. Polk, and M. Smid. Nist sp800-57: Recommendation for key<br />

management–part 1: General (revised). Technical report, NIST, 2007.<br />

[5] E. Barker and A. Roginsky. Draft nist sp800-131: Recommendation for the transitioning of cryptographic<br />

algorithms and key sizes. Technical report, NIST, jan 2010.<br />

[6] D. Bayer, S. Haber, and W.S. Stornetta. Improving the efficiency and reliability of digital time-stamping.<br />

Sequences II: Methods in Communication, Security, and Computer Science, pages 329–334, 1993.<br />

[7] K. Blibech and A. Gabillon. A new timestamping scheme based on skip lists. Computational Science and<br />

Its Applications-ICCSA 2006, pages 395–405, 2006.<br />

[8] D. Chaum and S. Roijakkers. Unconditionally-secure digital signatures. Advances in Cryptology-<br />

CRYPT0’90, pages 206–214, 1991.<br />

69


[9] D. Cooper, S. Santesson, S. Farrell, S. Boeyen, R. Housley, and W. Polk. Internet X.509 Public Key Infrastructure<br />

Certificate and Certificate Revocation List (CRL) Profile. RFC 5280 (Proposed Standard),<br />

May 2008.<br />

[10] R.F. Custodio, M.A.G. Vigil, J. Romani, F.C. Pereira, and J. da Silva Fraga. Optimized Certificates–A<br />

New Proposal for Efficient Electronic Document Signature Validation. In Public Key Infrastructure:<br />

5th European PKI Workshop: Theory and Practice, EuroPKI 2008 Trondheim, Norway, June 16-17,<br />

2008, Proceedings, page 49. Springer-Verlag New York Inc, 2008.<br />

[11] European Telecommunications Standards Institute. Electronic Signatures and Infrastructures (ESI); Algorithms<br />

and Parameters for Secure Electronic Signatures; Part 1: Hash functions and asymmetric<br />

algorithms, Nov 2007.<br />

[12] European Telecommunications Standards Institute. Electronic Signatures and Infrastructures (ESI); CMS<br />

Advanced electronic Signatures (CAdES), Nov 2009.<br />

[13] European Telecommunications Standards Institute. Electronic Signatures and Infrastructures (ESI); XML<br />

Advanced electronic Signatures (XAdES), Jun 2009.<br />

[14] T. Gondrom, R. Brandner, and U. Por<strong>de</strong>sch. Evi<strong>de</strong>nce Record Syntax (ERS). RFC 4998 (Proposed Standard),<br />

August 2007.<br />

[15] S. Haber and W. Stornetta. How to time-stamp a digital document. Advances in Cryptology-CRYPT0’90,<br />

pages 437–455, 1991.<br />

[16] M.K. Just. On the temporal authentication of digital data. PhD thesis, Carleton University, 1998.<br />

[17] D. Lekkas and D. Gritzalis. Cumulative notarization for long-term preservation of digital signatures. Computers<br />

& Security, 23(5):413–424, 2004.<br />

[18] H. Massias and J.J. Quisquater. Time and cryptography. US-patent n, 5:12, 1997.<br />

[19] R.C. Merkle. Protocols for public key cryptosystems. 1980.<br />

[20] D. Pinkas, N. Pope, and J. Ross. Policy Requirements for Time-Stamping Authorities (TSAs). RFC 3628<br />

(Informational), November 2003.<br />

[21] G.J. Popek and C.S. Kline. Encryption and secure computer networks. ACM Computing Surveys (CSUR),<br />

11(4):331–356, 1979.<br />

[22] B. Preneel. The First 30 Years of Cryptographic Hash Functions and the NIST SHA-3 Competition. Topics<br />

in Cryptology-CT-RSA 2010, pages 1–14, 2010.<br />

[23] Michael Szydlo. Merkle tree traversal in log space and time. In In Eurocrypt 2004, LNCS, pages 541–554.<br />

Springer-Verlag, 2004.<br />

[24] M. A. G. VIGIL, N. SILVA, R. MORAES, and R. F. CUSTODIO. Infra-estrutura <strong>de</strong> chaves públicas<br />

otimizada: Uma icp <strong>de</strong> suporte a assinaturas eficientes para documentos eletrônicos. In Simpósio<br />

Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais, pages 129–142, 2009.<br />

70


SCuP - Secure Cryptographic Microprocessor<br />

Roberto Gallo 12 , Henrique Kawakami 1 ,<br />

Ricardo Dahab 2∗<br />

1 KRYPTUS Security Solutions Ltd., Campinas, SP, Brazil<br />

2 Campinas State University, Campinas, SP, Brazil<br />

{gallo,rdahab}@ic.unicamp.br, {gallo,kawakami}@kryptus.com<br />

Abstract. In this paper we present SCuP - the Secure Cryptographic Micro-<br />

Processor with secure co<strong>de</strong> execution (encrypted, signed). SCuP is an asymmetric<br />

multicore processor for general applications with several innovative protection<br />

mechanisms against logical and physical attacks. Among the main processor<br />

features are the hardware firewall (HWF) and the <strong>de</strong>ep inspection/introspection<br />

mechanism (MIP) along with the secure execution packages (PES). SCuP has<br />

been validated in simulations and in FPGAs and its semiconductor diffusion will<br />

be done in the next few months.<br />

Resumo. Neste artigo apresentamos o SCuP - Processador Criptográfico com<br />

Execução Segura <strong>de</strong> Código (cifrada, assinada). O SCuP é um processador <strong>de</strong><br />

múltiplos núcleos assimétrico para aplicações gerais, que apresenta diversos<br />

mecanismos inovadores <strong>de</strong> proteção contra ataques lógicos e físicos ao processador.<br />

Dentre as principais características do processador estão o firewall<br />

<strong>de</strong> hardware (HWF) e o mecanismo <strong>de</strong> inspeção/introspecção profunda (MIP)<br />

combinados com os pacotes <strong>de</strong> execução seguros (PES). O SCuP foi validado<br />

em simulações e em FPGAs e <strong>de</strong>verá seguir para difusão semicondutora nos<br />

próximos meses.<br />

1. Introdução<br />

A importância da segurança nos sistemas baseados em hardware e software é bem estabelecida<br />

e dispensa justificativas. Entretanto, apesar <strong>de</strong> sua relevância, sistemas computacionais<br />

seguros têm se mostrado supreen<strong>de</strong>ntemente difíceis <strong>de</strong> serem obtidos. Parte<br />

<strong>de</strong>sta dificulda<strong>de</strong> po<strong>de</strong> ser atribuída ao fato <strong>de</strong> que segurança mais do que uma área do<br />

conhecimento, é uma transversal que perpassa diversas áreas, como Teoria do Números,<br />

Codificação Segura, Criptografia, Estatística e Física <strong>de</strong>ntre outras. Desta forma, até o<br />

momento não existe uma teoria unificada para Segurança, o que explica as recorrentes<br />

falhas reportadas em toda sorte <strong>de</strong> sistemas.<br />

O SCuP foi <strong>de</strong>senvolvido <strong>de</strong>ntro da visão mais ampla <strong>de</strong> segurança e que consi<strong>de</strong>ra<br />

que quaisquer componentes dos sistemas po<strong>de</strong>m conter <strong>de</strong>feitos <strong>de</strong> segurança.<br />

Nossa Contribuição Neste artigo apresentamos o SCuP - o Secure Cryptographic<br />

Microprocessor, um processador <strong>de</strong> uso geral cuja arquitetura foi projetada para garantir<br />

altos níveis <strong>de</strong> proteção e resiliência mesmo contra os adversários mais motivados com<br />

um cenário <strong>de</strong> ataques ampliado. Entre as características que tornam o SCuP único estão:<br />

i) o emprego <strong>de</strong> múltiplos núcleos com processamento assimétrico; ii) mecanismos <strong>de</strong><br />

71


inspeção e introspeção <strong>de</strong> software; iii) suporte a mecanismos <strong>de</strong> reparação dinâmica <strong>de</strong><br />

software; e iv) mecanismos <strong>de</strong> execução segura <strong>de</strong> pacotes.<br />

Organização do Artigo Na Seção 2 fazemos uma ampla revisão <strong>de</strong> problemas e<br />

soluções <strong>de</strong> sistemas seguros; na Seção 3 apresentamos a arquitetura do SCuP e os seus<br />

componentes; na Seção 4 apresentamos alguns resultados <strong>de</strong> implementação; a Seção 5<br />

conclui e apresenta algumas possibilida<strong>de</strong>s <strong>de</strong> trabalhos futuros.<br />

2. O Problema e Trabalhos Relacionados<br />

Processadores e sistemas seguros estão relacionado com, entre outras, as áreas <strong>de</strong>: i)<br />

arquiteturas seguras <strong>de</strong> hardware; ii) co-processadores seguros; iii) prevenção, <strong>de</strong>tecção e<br />

recuperação <strong>de</strong> violação <strong>de</strong> segurança; iv) métricas <strong>de</strong> segurança; e v) interfaces seguras.<br />

Co-Processadores Criptográficos<br />

Os trabalhos relacionados mais relevantes, que abrangem mais <strong>de</strong> uma área mencionada,<br />

incluem o trabalho pioneiro do <strong>de</strong>senvolvimento do módulo criptográfico IBM4758 [4],<br />

precursor <strong>de</strong> diversos dos mecanismos <strong>de</strong> segurança atualmente empregados em hardware<br />

seguro, principalmente do ponto <strong>de</strong> vista <strong>de</strong> segurança física. O IBM4758 é um dispositivo<br />

(placa) PCI, multi-chip, com funções <strong>de</strong> Hardware Security Module (HSM) e também<br />

capaz <strong>de</strong> executar programas <strong>de</strong> usuários, previamente assinados, em seu processador com<br />

arquitetura 80486.<br />

Apesar <strong>de</strong> seu elevado nível <strong>de</strong> segurança física, o IBM4758 é inapropriado para<br />

diversos cenários <strong>de</strong> uso. Neste sentido, a arquitetura AEGIS [20] representa uma evolução<br />

importante ao propor um processador (em um único componente) capaz <strong>de</strong> realizar a<br />

execução segura <strong>de</strong> código utilizando os conceitos <strong>de</strong> ca<strong>de</strong>ia <strong>de</strong> confiança (que parte <strong>de</strong><br />

um processo <strong>de</strong> boot seguro) e o isolamento <strong>de</strong> processos seguros daqueles não seguros<br />

por meio <strong>de</strong> modificações <strong>de</strong> arquitetura em um núcleo <strong>de</strong> processador MIPS . O AE-<br />

GIS também emprega <strong>de</strong> maneira inovadora a proteção da memória RAM (off-chip) do<br />

processador por meio da cifração e autenticação do conteúdo <strong>de</strong> memória.<br />

O processador Cerium [2] é uma outra proposta também relevante, menos completa<br />

do ponto <strong>de</strong> vista <strong>de</strong> arquitetura, mas que traz um benefício importante: saídas certificadas<br />

(assinadas) da execução <strong>de</strong> aplicações. Com isso, entida<strong>de</strong>s externas (clientes ou<br />

atestadores) po<strong>de</strong>m confiar nos resultados da computação através da verificação das assinaturas<br />

produzidas. Há uma clara diferença <strong>de</strong> visão em relação aos trabalhos anteriores:<br />

o interessado na integrida<strong>de</strong> <strong>de</strong> um sistema não necessariamente é o seu proprietário, a<br />

exemplo <strong>de</strong> aplicações <strong>de</strong> DRM (Digital Rights Management).<br />

Execução Segura <strong>de</strong> Código<br />

As aplicações <strong>de</strong> DRM estão sujeitas a um mo<strong>de</strong>lo <strong>de</strong> ameaças (threat mo<strong>de</strong>l) particularmente<br />

interessante: se por um lado conteúdo (aplicações, músicas, filmes) po<strong>de</strong> custar<br />

milhões <strong>de</strong> dólares para ser produzido, o ganho do adversário individual com a pirataria<br />

do mesmo conteúdo é or<strong>de</strong>ns <strong>de</strong> gran<strong>de</strong>za menor; ou, <strong>de</strong> outra forma, a motivação <strong>de</strong> um<br />

72


adversário para copiar alguns arquivos <strong>de</strong> música é muito limitada, em especial se o custo<br />

do “ataque” for proporcional ao número <strong>de</strong> arquivos copiados.<br />

Esse mo<strong>de</strong>lo <strong>de</strong> ameaças foi aquele utilizado na concepção da geração atual do<br />

padrão do Trusted Platform Module (TPM) do Trusted Computing Group (TCG) [22],<br />

a plataforma (hardware + software) padrão <strong>de</strong> mercado para computação confiável em<br />

dispositivos como computadores pessoais e aparelhos celulares. O TPM-TCG é um periférico<br />

soldado à placa mãe do sistema e que possui capacida<strong>de</strong>s <strong>de</strong> assinatura digital,<br />

verificação <strong>de</strong> assinatura e software measurement. Em um sistema habilitado, o TPM<br />

po<strong>de</strong> ser utilizado para a verificação da ca<strong>de</strong>ia <strong>de</strong> boot do sistema e, após inicializado, na<br />

verificação (measurement) da integrida<strong>de</strong> das aplicações em execução.<br />

A proposta do TPM tem alguns méritos: i) tem baixo custo; ii) não requer refatoração<br />

<strong>de</strong> código legado; e iii) vai no caminho certo ao consi<strong>de</strong>rar tanto integrida<strong>de</strong> <strong>de</strong> binários<br />

como <strong>de</strong> imagens em execução. Por outro lado, possui sérias limitações: i) é um dispositivo<br />

escravo <strong>de</strong> barramento, po<strong>de</strong>ndo ser completamente ignorado pelo sistema, e também<br />

não possui po<strong>de</strong>r <strong>de</strong> inspeção; ii) possui arquitetura similar a <strong>de</strong> um smartcard, com barramento<br />

LPC, resultando em baixa banda <strong>de</strong> comunicação com sistema e baixo po<strong>de</strong>r<br />

computacional; iii) po<strong>de</strong> ser subvertido por meio <strong>de</strong> modificações na BIOS do sistema (na<br />

sessão CRTM); e iv) não consi<strong>de</strong>ra sigilo, relegando às aplicações essa tarefa.<br />

De forma a melhorar o perfil <strong>de</strong> segurança sem aumento consi<strong>de</strong>rável <strong>de</strong> custos,<br />

Costan et al [3] propuseram e implementaram (utilizando um processador Javacard) o<br />

Trusted Execution Module (TEM), capaz <strong>de</strong> executar código seguro no próprio módulo,<br />

através <strong>de</strong> Secure Execution Closure Packs (SECpacks). Os SECpacks permitem que<br />

aplicações <strong>de</strong> tamanho arbitrário, especialmente escritas, sejam fatoradas em pequenos<br />

módulos e executadas no ambiente embarcado seguro (smartcards, processadores seguros)<br />

ao custo <strong>de</strong> operações <strong>de</strong> E/S adicionais e da <strong>de</strong>gradação <strong>de</strong> performance que acompanha<br />

a fatoração.<br />

O emprego <strong>de</strong> pacotes <strong>de</strong> execução segura no TEM remonta, possivelmente, ao<br />

IBM4758, mas foi no IBM Cell [19], utilizado no Sony Playstation 3, que ela foi utilizada<br />

<strong>de</strong> uma forma mais consistente. O Cell é um processador multi-núcleo assimétrico<br />

especialmente voltado para o mercado <strong>de</strong> entretenimento, on<strong>de</strong> po<strong>de</strong>r <strong>de</strong> processamento<br />

e proteção <strong>de</strong> conteúdo têm priorida<strong>de</strong>s altas. De especial interesse no Cell são os Synergistic<br />

Processing Elements (SPE), responsáveis pelo processamento <strong>de</strong> alto <strong>de</strong>sempenho<br />

do processador. Cada SPE po<strong>de</strong> ser colocado em modo <strong>de</strong> execução seguro (com código e<br />

dados assinados e cifrados), isolado dos <strong>de</strong>mais núcleos, no modo secure processing vault<br />

- com memória interna própria. Neste modo nenhum outro núcleo é capaz <strong>de</strong> inspecionar<br />

ou alterar código ou dados em execução. Os ganhos são claros: aumento do nível <strong>de</strong><br />

proteção contra pirataria ao diminuir o risco <strong>de</strong> que fragilida<strong>de</strong>s nos softwares executando<br />

nos <strong>de</strong>mais núcleos sejam utilizadas para atacar o SPE no modo vault.<br />

A execução segura <strong>de</strong> pacotes po<strong>de</strong> ser vista como um tipo especial <strong>de</strong> isolamento<br />

<strong>de</strong> threads, ou execução segura <strong>de</strong> threads, on<strong>de</strong> o número <strong>de</strong> processos executando simultaneamente<br />

no processador é limitado ao número <strong>de</strong> núcleos; ou, <strong>de</strong> outra forma, threads<br />

seguras não coexistem com threads normais em um mesmo núcleo.<br />

A execução <strong>de</strong> threads seguras (ou isoladas) simultaneamente em um mesmo<br />

núcleo foi implementada tanto na proposta do AEGIS por meio <strong>de</strong> instruções e modos<br />

73


<strong>de</strong> execução privilegiados, como mais recentemente na arquitetura SP [9, 13]. A arquitetura<br />

SP, no entanto é <strong>de</strong> uso mais geral e minimalista e po<strong>de</strong> ser aplicada com menor<br />

número <strong>de</strong> intervenções em arquiteturas <strong>de</strong> processadores já existentes, como as famílias<br />

x86 e SPARC. A Arquitetura SP utiliza alterações <strong>de</strong> instruction sets e a adição <strong>de</strong> componentes<br />

<strong>de</strong> cifração <strong>de</strong> memória; e, utilizando o proposto Trusted Software Module, um<br />

sistema operacional seguro minimalista, provê serviços <strong>de</strong> confi<strong>de</strong>ncialida<strong>de</strong> e atestação<br />

remotos.<br />

Arquiteturas para Execução Monitorada<br />

Apesar <strong>de</strong> não apontado pelo trabalho <strong>de</strong> Lee [9], po<strong>de</strong>mos conjecturar que, com modificações<br />

no TSM, a arquitetura SP (e também na pilha <strong>de</strong> software do AEGIS) po<strong>de</strong>ria ser utilizada<br />

para introspecção <strong>de</strong> software entre processos. Esse uso, no entanto, parte do princípio<br />

<strong>de</strong> que o sistema verificador (SV) não sofre das mesmas fragilida<strong>de</strong>s que o sistema em<br />

verificação (SEV), e que também não é influenciado por alguma execução faltosa. Para<br />

diminuir riscos implícitos <strong>de</strong> segurança provenientes <strong>de</strong> problemas <strong>de</strong> implementação e<br />

arquiteturas <strong>de</strong> solução complexas, muito se fala [18, 9] da utilização <strong>de</strong> bases minimalistas<br />

<strong>de</strong> computação confiada on<strong>de</strong> a pilha <strong>de</strong> software (BIOS segura, S.O. seguro,<br />

aplicações seguras...) é reduzida a alguns poucos milhares <strong>de</strong> linhas <strong>de</strong> código.<br />

Entretanto, tanto quanto saibamos, nenhum trabalho tem se atentando ao fato <strong>de</strong><br />

que as arquiteturas <strong>de</strong> hardware <strong>de</strong> processadores (e sistemas) são <strong>de</strong>scritas em centenas<br />

<strong>de</strong> milhares ou mesmo milhões <strong>de</strong> linhas <strong>de</strong> código <strong>de</strong> linguagens <strong>de</strong> <strong>de</strong>scrição <strong>de</strong> hardware<br />

e, portanto, estão sujeitas a problemas <strong>de</strong> implementação tanto quanto os softwares,<br />

na medida em que segurança não é uma consi<strong>de</strong>ração comum no mundo dos sintetizadores<br />

<strong>de</strong> hardware. Desta forma, é temerário esperar que um sistema típico não possua<br />

problemas ocultos <strong>de</strong> segurança em termos <strong>de</strong> implementação.<br />

Trabalhos como CuPIDS [23] e CoPilot [15], por sua vez, caminham por uma linha<br />

<strong>de</strong> pesquisa distinta: utilizam pares <strong>de</strong> sistemas, um monitor <strong>de</strong> (políticas) <strong>de</strong> segurança<br />

e outro monitorado. O CoPilot é voltado para o monitoramento e recuperação <strong>de</strong> ataques<br />

<strong>de</strong> rootkits. Ele é implementado por meio <strong>de</strong> uma placa PCI-mestre <strong>de</strong> barramento (sistema<br />

monitor), conectada a um hospe<strong>de</strong>iro (sistema monitorado) e é capaz <strong>de</strong> inspecionar<br />

todo o seu espaço <strong>de</strong> en<strong>de</strong>reçamento.<br />

O monitor não compartilha recursos com o sistema monitorado; assim, em caso <strong>de</strong><br />

instalação <strong>de</strong> um rootkit no sistema principal, a placa PCI é capaz <strong>de</strong> verificar que houve<br />

modificações no espaço <strong>de</strong> en<strong>de</strong>reçamento do kernel do sistema e assim corrigir o sistema<br />

e avisar uma estação <strong>de</strong> monitoramento externa. Por possuírem arquiteturas completamente<br />

diferentes, monitor e monitorado também minimizam a possibilida<strong>de</strong> <strong>de</strong><br />

compartilharem <strong>de</strong>feitos.<br />

Já as limitações do CoPilot estão principalmente ligadas à <strong>de</strong>gradação <strong>de</strong> <strong>de</strong>sempenho<br />

causada pelo processamento, pelo monitor, do espaço <strong>de</strong> en<strong>de</strong>reçamento do sistema<br />

monitorado, o que restringe a usabilida<strong>de</strong> da proposta à verificação do kernel do sistema<br />

em RAM. O custo do hardware também é um problema.<br />

No CuPIDS, por sua vez, a i<strong>de</strong>ia <strong>de</strong> sistema in<strong>de</strong>pen<strong>de</strong>nte <strong>de</strong> monitoramento é<br />

revisitada com uma nova arquitetura <strong>de</strong> hardware e novos objetivos <strong>de</strong> monitoramento.<br />

74


Com o uso <strong>de</strong> uma motherboard com dois processadores, seus autores divi<strong>de</strong>m o sistema<br />

em porção monitora e porção monitorada. Ao contrário do CoPilot, que tem como alvo<br />

o próprio sistema operacional, no CuPIDS existe, para cada serviço implementado na<br />

porção monitorada, um co-serviço <strong>de</strong> monitoramento na porção monitora (possivelmente<br />

por meio <strong>de</strong> uma política EM-enforceable [18]). Os potenciais problemas com o CuPIDS<br />

estão ligados à garantia da própria integrida<strong>de</strong> da porção monitora. Sendo implementados<br />

em processadores <strong>de</strong> uso geral, estão sujeitos a diversos tipos <strong>de</strong> ataque, como substituição<br />

<strong>de</strong> binários, por exemplo.<br />

Integrida<strong>de</strong> dos Sistemas<br />

Em aplicações on<strong>de</strong> a integrida<strong>de</strong> dos serviços prestados pelo sistema (mais do que a<br />

integrida<strong>de</strong> do próprio sistema) é preocupação primordial, diferentes técnicas têm sido<br />

utilizadas, em especial na área <strong>de</strong> sistemas <strong>de</strong> votação. Sistemas <strong>de</strong> votação eletrônica<br />

<strong>de</strong>vem atingir simultaneamente objetivos aparentemente inconciliáveis: i) um voto por<br />

eleitor; ii) voto registrado conforme a intenção (do eleitor); iii) voto contado conforme o<br />

registro; iv) sigilo do voto; v) verificabilida<strong>de</strong> do voto; e vi) resistência à coerção [17].<br />

Quaisquer tentativas <strong>de</strong> se atingir estes objetivos têm implicações diretas na concepção<br />

das máquinas <strong>de</strong> votação (digital recording electronic voting machine - DRE).<br />

Admite-se, como regra, que os sistemas não são confiáveis e que po<strong>de</strong>m ser adulterados.<br />

Desta forma, mecanismos eficientes <strong>de</strong> verificação da integrida<strong>de</strong> do sistema e<br />

dos próprios serviços <strong>de</strong>vem ser implementados e imediatamente acessíveis aos interessados.<br />

A integração entre integrida<strong>de</strong> dos sistemas e os usuários foi explorada em trabalhos<br />

como VoteBox Nano [12], assim como em [5, 6], utilizando a noção <strong>de</strong> caminhos confiados<br />

e classe <strong>de</strong> nível <strong>de</strong> confiança.<br />

A confiança obtida pela verificação do sistema em produção, no entanto, sempre<br />

está ligada (e limitada) pela confiança nas fases <strong>de</strong> <strong>de</strong>senvolvimento, ou no ciclo <strong>de</strong> vida,<br />

do dispositivo, como apontam Mirjalili e Lenstra [10]. Neste sentido, padrões como o<br />

FIPS 140-2 [11] e o Common Criteria [21] têm papeis relevantes. O padrão FIPS 140-2<br />

apresenta um conjunto <strong>de</strong> requisitos e recomendações que um módulo criptográfico <strong>de</strong> uso<br />

específico (geração, guarda e uso <strong>de</strong> chaves criptográficas) <strong>de</strong>ve obe<strong>de</strong>cer. Apesar <strong>de</strong> não<br />

fixar diretamente nenhum item <strong>de</strong> arquitetura <strong>de</strong> tais módulos, o padrão é relevante por ser<br />

completo nos diversos aspectos <strong>de</strong> segurança que um módulo <strong>de</strong>ve satisfazer (proteções<br />

lógicas, físicas, controle <strong>de</strong> acesso, sensoriamento, auto-testes, etc).<br />

Verificação dos Sistemas e Padrões<br />

O Common Criteria, por sua vez, é um meta-padrão, que <strong>de</strong>fine templates sobre os quais<br />

perfis <strong>de</strong> segurança os (security profiles) <strong>de</strong>vem ser elaborados, e que <strong>de</strong>screve as características<br />

esperadas <strong>de</strong> um dado sistema (seguro), o qual é mais tar<strong>de</strong> certificado com base<br />

no próprio perfil. A principal contribuição do CC é a listagem ampla <strong>de</strong> itens que <strong>de</strong>vem<br />

ser cobertos por um perfil <strong>de</strong> segurança.<br />

No quesito verificação, <strong>de</strong> uma forma mais ampla, a nossa proposta está marginalmente<br />

relacionada aos trabalhos <strong>de</strong> verificação formal <strong>de</strong> sistemas, on<strong>de</strong> componentes<br />

75


(lógicos) <strong>de</strong> software e hardware são <strong>de</strong>scritos formalmente e técnicas <strong>de</strong> obtenção <strong>de</strong><br />

provas são utilizadas para se <strong>de</strong>terminar a valida<strong>de</strong> das especificações. Apesar <strong>de</strong> po<strong>de</strong>rosas,<br />

no entanto, tais técnicas têm complexida<strong>de</strong> NP-difícil ou in<strong>de</strong>cidível [7, 8, 16],<br />

dificultando o seu uso na prática. Desta forma, técnicas totalmente informais ou mistas<br />

são utilizadas na verificação das proprieda<strong>de</strong>s dos sistemas [1]. Neste sentido, técnicas<br />

<strong>de</strong> verificação lógica <strong>de</strong> segurança baseadas em simulação, em especial via introspecção<br />

<strong>de</strong> máquinas virtuais, têm se mostrado úteis, como mostram os trabalhos <strong>de</strong> Payne [14] e<br />

Dwoskin [13].<br />

3. Arquitetura do SCuP<br />

A Figura 1 mostra a arquitetura do SCuP. Nela é possível i<strong>de</strong>ntificar dois núcleos SPARC<br />

<strong>de</strong> 32 bits, baseados no Leon 3, instanciados <strong>de</strong> maneira assimétrica, o Application Core<br />

- AC, e o Secure Core - SC. Estes dois núcleos estão ligados aos barramentos internos<br />

AHB (e APB) modificados. Estes barramentos implementam um firewall <strong>de</strong> hardware,<br />

programado por SC e que limita o acesso dos mestres <strong>de</strong> barramento aos periféricos.<br />

Os componentes periféricos encontrados no processador são divididos em dois<br />

principais grupos: componentes sem função <strong>de</strong> segurança (caixas mais claras e que incluem,<br />

<strong>de</strong>ntre outros, USB, PCI, Controle <strong>de</strong> DDR2) e componentes com funcionalida<strong>de</strong>s<br />

seguras (como cifradores <strong>de</strong> memória externa e o TRNG (true random number generator)).<br />

No que se segue apresentamos uma breve <strong>de</strong>scrição dos componentes do SCuP e<br />

em seguida algumas das funcionalida<strong>de</strong>s <strong>de</strong> segurança permitidas pela nossa plataforma.<br />

3.1. Componentes do Sistema<br />

3.1.1. Os Núcleos AC e SC<br />

A arquitetura do SCuP permite que coexistam diversos (n) Núcleos <strong>de</strong> Aplicação (AC)<br />

com diversos (m) Núcleos <strong>de</strong> Segurança (SC). Na Figura 1, n = m = 1. O AC é<br />

um núcleo completo para uma CPU, com unida<strong>de</strong> <strong>de</strong> ponto flutuante, cache <strong>de</strong> dados e<br />

programa e MMU, e que serve para a execução <strong>de</strong> aplicações <strong>de</strong> usuários convencionais<br />

como, por exemplo, executar um S.O. Linux com uma aplicação <strong>de</strong> votação. O AC é<br />

controlado e monitorado pelo SC, com mecanismos que serão <strong>de</strong>scritos mais a adiante.<br />

O SC, por sua vez, é um núcleo minimalista e que foi modificado para ser uma das<br />

raízes <strong>de</strong> confiança do sistema. Para minimizar possibilida<strong>de</strong>s <strong>de</strong> <strong>de</strong>feitos <strong>de</strong> segurança no<br />

próprio VHDL do processador, FPU e MMU foram eliminados, ao mesmo tempo em que<br />

uma memória interna, <strong>de</strong> acesso exclusivo ao núcleo foi adicionada. Esta memória, chamada<br />

<strong>de</strong> scratchpad, é essencial na segurança do sistema e foi projetada para permitir que<br />

operações que <strong>de</strong>mandam sigilo (manipulação <strong>de</strong> chaves e outros parâmetros críticos <strong>de</strong><br />

sistema) pu<strong>de</strong>ssem ser realizados com a menor possibilida<strong>de</strong> <strong>de</strong> vazamento e sem a necessida<strong>de</strong><br />

<strong>de</strong> memória externa. O SC tem capacida<strong>de</strong> para executar um sistema operacional<br />

mínimo, seguindo o princípio da minimização da Trusted Computing Base (TCB).<br />

O SC tem controle sobre todos os outros componentes do SCuP, permitindo, <strong>de</strong>ntre<br />

outros, o Mecanismo <strong>de</strong> Inspeção/Introspecção Profunda (MIP) e a Sequência <strong>de</strong> Boot<br />

Seguro.<br />

76


A arquitetura do SCuP mostrando os seus diversos módulos e pe-<br />

Figura 1.<br />

riféricos.<br />

77


3.1.2. O Firewall <strong>de</strong> Hardware<br />

O Firewall <strong>de</strong> Hardware (HWF) permite que o SC controle o acesso dos mestres <strong>de</strong> barramentos<br />

internos do SCuP aos periféricos. Esta funcionalida<strong>de</strong> tem como principal objetivo<br />

impedir que componentes (<strong>de</strong> software, <strong>de</strong> hardware) comprometidos tenham acesso<br />

a canais <strong>de</strong> comunicação com dados em claro.<br />

O HWF funciona por meio da programação <strong>de</strong> múltiplas regras <strong>de</strong> firewall que<br />

contém as seguintes informações: [mestre, faixa-<strong>de</strong>-en<strong>de</strong>reços, permissões]. Nesta regra,<br />

o acesso do “mestre” à “faixa-<strong>de</strong>-en<strong>de</strong>reços” está sujeita às respectivas “permissões”.<br />

Um exemplo <strong>de</strong> uso é nos casos <strong>de</strong> protocolos <strong>de</strong> votação. Se por um lado toda<br />

a parte gráfica e <strong>de</strong> controle <strong>de</strong> periféricos do software <strong>de</strong> votação po<strong>de</strong> ser executado no<br />

AC, esta mesma pilha <strong>de</strong> software po<strong>de</strong>rá conter <strong>de</strong>feitos que permitam que a entrada do<br />

usuário (o voto digitado) vaze ou seja capturado por uma aplicação mal-intencionada. Em<br />

nossa arquitetura, a captura do voto e a sua cifração po<strong>de</strong>m ficar por conta do SC, que,<br />

programando o HWF, impe<strong>de</strong> o acesso pelo AC ao periférico PS/2 ao mesmo tempo que<br />

permite o uso para si. Obviamente a aplicação precisa ser adaptada para este tipo <strong>de</strong> uso.<br />

O HWF ainda impe<strong>de</strong> que transações malignas, advindas dos periféricos-mestre<br />

<strong>de</strong> barramento externos ao SCuP tenham a possibilida<strong>de</strong> <strong>de</strong> acessar regiões <strong>de</strong> en<strong>de</strong>reçamento<br />

não ativamente permitidas, aumentando o nível <strong>de</strong> segurança também contra ataques externos.<br />

3.1.3. Cifrador <strong>de</strong> Memória Externa<br />

O cifrador <strong>de</strong> memória externa (CryptoMem) permite que regiões da memória RAM externa<br />

sejam cifrados <strong>de</strong> maneira automática com gran<strong>de</strong> aceleração por hardware. Isto<br />

permite que o processador AC/SC execute código cifrado da memória externa <strong>de</strong> maneira<br />

transparente. As chaves do CryptoMem são diretamente controladas pelo SC, assim<br />

como as faixas <strong>de</strong> en<strong>de</strong>reçamento que <strong>de</strong>vem ser protegidas. O CryptoMem emprega o<br />

algoritmo NIST-FIPS PUB 197 - AES - com chaves <strong>de</strong> 256 bits em modo <strong>de</strong> operação<br />

não-padrão. O CryptoMem tem performance <strong>de</strong> processamento <strong>de</strong> 128 bits/ciclo.<br />

3.1.4. Módulo AES-256 e Módulo SHA-512 <strong>de</strong> Alto Desempenho<br />

O módulo AES implementa o NIST FIPS PUB 197 com chaves <strong>de</strong> 256 bits nos modos<br />

<strong>de</strong> operação ECB, CTR, CBC e GCM e <strong>de</strong>sempenho <strong>de</strong> pico <strong>de</strong> processamento <strong>de</strong> 8<br />

bits/ciclo. O módulo SHA implementa o NIST FIPS PUB 180-3, com hashes <strong>de</strong> 512 bits<br />

e <strong>de</strong>sempenho <strong>de</strong> pico ≥ 12 bits/ciclo.<br />

Estes blocos operam como aceleradores <strong>de</strong> hardware internos ao processador e<br />

servem aplicações executando tanto no SC como no AC <strong>de</strong> forma direta ou através da<br />

biblioteca criptográfica da plataforma SCuP. Esta biblioteca também faz uso do acelerador<br />

<strong>de</strong> curvas elípticas presente no processador.<br />

78


3.1.5. Outros Componentes<br />

O SCuP possui diversos outros componentes com funções <strong>de</strong> segurança, mas que por<br />

questões <strong>de</strong> espaço somente mencionaremos. Um <strong>de</strong>stes componentes é o TRNG do processador,<br />

item essencial na operação da maioria dos esquemas criptográficos. O TRNG<br />

do SCuP é não <strong>de</strong>terminístico e explora características físicas das portas lógicas convencionais<br />

do semicondutor para a geração e com alta entropia. O TRNG será tema <strong>de</strong> artigo<br />

futuro e por enquanto representa segredo industrial.<br />

Outro componente que merece menção é o Mailbox, utilizado para a comunicação<br />

entre núcleos. Este componente foi especificamente projetado para permitir que informações<br />

entre AC e SC possam ser trocadas <strong>de</strong> maneira rápida e protegida do acesso externo.<br />

O último componente que mencionamos é o IRQMP-CPS, componente central<br />

no MIP. O IRQMP-CPS possui modificações em relação a um gerenciador convencional<br />

<strong>de</strong> requisições (IRQs) <strong>de</strong> forma que, quando o AC é provocado pelo SC, o primeiro<br />

obrigatoriamente executa um trecho <strong>de</strong> código confiado <strong>de</strong>terminado por SC.<br />

3.2. Funcionalida<strong>de</strong>s do SCuP<br />

3.2.1. SBS - Sequência <strong>de</strong> Boot Seguro<br />

A sequência <strong>de</strong> boot seguro (SBS) é fundamental para garantir que o estado da plataforma<br />

seja conhecido (íntegro) em ambos os núcleos quando o sistema termina a inicialização.<br />

Para tanto, utilizamos uma sequência <strong>de</strong> boot com verificação <strong>de</strong> assinaturas digitais que<br />

vai da BIOS às aplicações <strong>de</strong> usuário. A sequência é a seguinte:<br />

Etapa/Fase Nome Descrição<br />

1 Load/Deco<strong>de</strong> O software que carrega e <strong>de</strong>cifra o software da ROM<br />

externa, estará gravado na ROM interna, e ele utilizará<br />

o scratchpad do SC como sua memória RAM<br />

1.1 Auto-testes SC Realiza auto-testes <strong>de</strong> funções criptográficas e <strong>de</strong> integrida<strong>de</strong><br />

interna<br />

1.2 Zeração Zera todos os buffers e caches internos e a RAM<br />

1.3 Cópia da ROM Copia o conteúdo da ROM externa para o scratchpad<br />

1.4 Decifra Decifra o conteúdo carregado no scratchpad<br />

1.5 Verifica Verificar a assinatura digital do conteúdo do scratchpad<br />

1.6 Carga Limpa registradores e ajusta o PC para o início do<br />

scratchpad<br />

2 Execute O software da ROM externa (BIOS) está carregado no<br />

scratchpad, e utiliza essa memória como RAM<br />

2.1 HFW Configura o HWF (libera acessos a <strong>de</strong>terminados recursos<br />

do sistema)<br />

2.2 SC Configura o SC<br />

2.3 Imagem AC Obtém a imagem <strong>de</strong> boot do Linux (o qual executará<br />

no AC). Opcionalmente (a) Verifica hardware, (b)<br />

Continua boot pela re<strong>de</strong>, (c) Acessa a memória externa,<br />

(d) Atualiza a ROM externa<br />

79


2.4 Decifra Decifra a imagem <strong>de</strong> boot do Linux<br />

2.5 Verificar Verifica a imagem <strong>de</strong> boot do Linux<br />

2.6 Carrega Carrega a imagem <strong>de</strong> boot do Linux no en<strong>de</strong>reço inicial<br />

do AC<br />

2.7 Libera Libera o AC (“acorda” o processador AC)<br />

3 Boot Linux Imagem <strong>de</strong> boot do Linux carregada, recursos liberados<br />

e AC “ acordado”<br />

O mecanismo <strong>de</strong> boot seguro impe<strong>de</strong> que ataques <strong>de</strong> substituição/alteração <strong>de</strong><br />

binários sejam possíveis no SCuP. Tanto quanto pu<strong>de</strong>mos averiguar, o SCuP é o primeiro<br />

processador a implementar uma sequência <strong>de</strong> boot seguro multi-core e também o<br />

primeiro a fazer isso com serviços <strong>de</strong> assinatura digital e sigilo simultaneamente. Entretanto,<br />

este mecanismo não é suficiente para proteger contra ataques online, on<strong>de</strong> <strong>de</strong>feitos<br />

das aplicações são exploradas pelos adversários, como em ataques <strong>de</strong> estouro <strong>de</strong> pilha<br />

(execução <strong>de</strong> dados).<br />

Por este motivo, mecanismos <strong>de</strong> proteção contra ataques em tempo <strong>de</strong> execução<br />

foram incluídos no SCuP, como o MIP.<br />

3.2.2. MIP - Mecanismo <strong>de</strong> Introspecção/Inspeção Profunda<br />

O objetivo do MIP é permitir que o estado do núcleo AC seja totalmente conhecido e<br />

acessível para inspeção completa impedindo que código malicioso se aloje em qualquer<br />

parte dos elementos <strong>de</strong> memória do núcleo. Isto é necessário pois o núcleo AC executa<br />

uma pilha extensa <strong>de</strong> software, com elementos possivelmente não assinados digitalmente<br />

(e não verificados pela SBS).<br />

MIP foi inspirado no CoPilot, mas apresenta diversas modificações e vantagens.<br />

Em primeiro lugar, o CoPilot não é capaz <strong>de</strong> ter acesso total ao estado da CPU principal do<br />

sistema dado que seu acesso era externo, via PCI, o que também limita o seu <strong>de</strong>sempenho.<br />

O funcionamento do MIP po<strong>de</strong> ser assim sumarizado:<br />

• Sob requisição do usuário ou <strong>de</strong> tempos em tempos, o SC inicia o ciclo <strong>de</strong> verificação;<br />

• para tanto, o SC gera uma interrupção não mascarável <strong>de</strong> máxima priorida<strong>de</strong> no<br />

AC (via componente IRQMP-CPS);<br />

• o AC imediatamente começa a servir a requisição em um trecho <strong>de</strong> código fixo<br />

em ROM que realiza verificações (V-COM). Por estar em ROM, não po<strong>de</strong> ser<br />

modificado por adversários;<br />

• V-ROM é utilizado então para verificar a assinatura <strong>de</strong> código adicional escrito<br />

por SC (V-RAM) em posição pré-<strong>de</strong>terminada <strong>de</strong> memória. Se a assinatura for<br />

correta, inicia a execução <strong>de</strong>ste novo trecho <strong>de</strong> código;<br />

• V-RAM é o código que comanda a verificação do sistema seja por inspeção ou por<br />

introspecção. No caso da introspecção, no primeiro passo, o AC empilha todos os<br />

seus registradores e <strong>de</strong>scarrega a cache (instrução “flush”) e continua executando<br />

o “anti-malware”. No caso da inspeção, AC permanece em “stall” e SC realiza<br />

toda as verificação;<br />

• finalizado o trecho V-RAM, o AC retorna à execução normal.<br />

80


Com a arquitetura do SCuP, a verificação realizada no ciclo do MIP é altamente<br />

eficiente, uma vez que a comunicação entre o SC e o AC é realizada por meio do barramento<br />

interno ao processador. Além disso, a nossa arquitetura também permite que o SC<br />

mantenha serviços essenciais ao sistema enquanto o AC passa pelo MIP tarefas como, por<br />

exemplo, manutenção <strong>de</strong> “watchdogs” ou mesmo controles <strong>de</strong>mandados por periféricos<br />

<strong>de</strong> tempo real.<br />

Por meio do uso do HFW e do MIP simultaneamente, nossa arquitetura permite<br />

a construção <strong>de</strong> mecanismos <strong>de</strong> recuperação dinâmica <strong>de</strong> kernel e <strong>de</strong>tecção <strong>de</strong> rootkits<br />

<strong>de</strong> alta eficiência. Para tanto, o SC protege uma região <strong>de</strong> memória on<strong>de</strong> mantém uma<br />

cópia do kernel saudável <strong>de</strong> AC. Assim, ao executar o MIP em modo <strong>de</strong> inspeção, o SC<br />

po<strong>de</strong> facilmente comparar cópias do kernel e restaurar imagens anteriores, uma vez que<br />

um adversário em AC é incapaz <strong>de</strong> corromper tanto o mecanismo <strong>de</strong> verificação, como<br />

as próprias imagens protegidas por SC. Tanto quanto saibamos, o SCuP é o primeiro<br />

processador a dar suporte a este tipo <strong>de</strong> operação integrada.<br />

3.2.3. Outras Funcionalida<strong>de</strong>s<br />

Além dos mecanismos SBS e MIP, o SCuP ainda incorpora o conceito <strong>de</strong> pacote <strong>de</strong><br />

execução segura, introduzido pelo IBM Cell e mais tar<strong>de</strong> formalizado pela proposta do<br />

TEM. Um pacote <strong>de</strong> execução segura é um blob que contém dados e binários assinados<br />

e possivelmente cifrados e que são entregues para um núcleo para processamento. Antes<br />

<strong>de</strong> iniciar a execução, este núcleo verifica a assinatura sobre o pacote (e possivelmente o<br />

<strong>de</strong>cifra) antes <strong>de</strong> iniciar a sua execução, em modo exclusivo.<br />

Apesar <strong>de</strong> baseado nestas arquiteturas, nossa proposta difere <strong>de</strong> ambas soluções:<br />

tanto no Cell como no TEM, as unida<strong>de</strong>s processantes (núcleos) funcionam como escravos<br />

<strong>de</strong> barramento. Isto significa que pacotes <strong>de</strong> execução segura vindas do ambiente<br />

externo não po<strong>de</strong>m ser utilizadas para verificar o estado do sistema como um todo, ou<br />

mesmo levá-lo a um estado conhecido.<br />

No SCuP, entretanto, o SC (responsável pela execução dos pacotes seguros) é o<br />

mestre do sistema, o que permite que tais pacotes sejam executados em um ambiente<br />

controlado (via MIP e HMW), <strong>de</strong> fato adicionando uma camada <strong>de</strong> segurança, em vez <strong>de</strong><br />

ser um mecanismo acessório. O SCuP é o primeiro processador a realizar esta abordagem.<br />

4. Implementação e Resultados<br />

O SCuP foi implementado em VHDL utilizando a licença comercial do Gaisler Leon 3 e<br />

simulado e sintetizado com o Quartus II Full para a plataforma alvo <strong>de</strong> <strong>de</strong>senvolvimento<br />

Altera Stratix III EP3SL200C2 em um kit <strong>de</strong> <strong>de</strong>senvolvimento projetado por nós. O<br />

sistema completo consumiu 69.438 ALUTs da FPGA e operou a uma frequência máxima<br />

<strong>de</strong> 140MHz.<br />

A Tabela 2 mostra o consumo <strong>de</strong> elementos dos principais componentes do sistema.<br />

Nota-se que os principais consumos são dos componentes criptográficos <strong>de</strong> alto<br />

<strong>de</strong>sempenho, correspon<strong>de</strong>ndo por cerca <strong>de</strong> 52% da área (ALUT) do processador.<br />

Se por um lado o impacto em elementos consumidos é alto, por outro a plataforma<br />

se adapta bem quando mais instâncias <strong>de</strong> AC e SC são inclusas, pois os componentes<br />

81


Componente ALUT %<br />

AC 10,5K 15<br />

SC 6,5K 10<br />

AES 256 7,5K 11<br />

SHA 512 3,5K 5<br />

HWF 2,0K 2<br />

MemCrypt 25,0K 36<br />

TRNG 1K 1<br />

Outros 13,5K 20<br />

Total 69,5K 100<br />

Tabela 2. Consumo <strong>de</strong> elementos<br />

criptográficos po<strong>de</strong>m ser compartilhados por todos os núcleos.<br />

No quesito <strong>de</strong>sempenho, a implementação das funcionalida<strong>de</strong>s <strong>de</strong> segurança do<br />

SCuP teve pequeno impacto na frequência máxima <strong>de</strong> operação. Sintetizando um processador<br />

sem os componentes <strong>de</strong> segurança, obtivemos fmax <strong>de</strong> 150MHz, contra 140MHz<br />

<strong>de</strong> nosso <strong>de</strong>sign, uma penalida<strong>de</strong> <strong>de</strong> apenas 6,7%.<br />

Os testes <strong>de</strong> <strong>de</strong>sempenho dos módulos AES-256 e SHA-512 a partir da biblioteca<br />

criptográfica da plataforma foram <strong>de</strong> 380Mbps e 500Mbps, respectivamente, valores bastante<br />

altos para a frequência <strong>de</strong> operação <strong>de</strong> 140MHz, mostrando pequeno “overhead” <strong>de</strong><br />

software.<br />

5. Conclusão e Trabalhos Futuros<br />

O SCuP traz uma arquitetura inovadora, <strong>de</strong>senvolvida levando-se em conta ataques físicos,<br />

ataques lógicos (online e off-line) e os inexoráveis <strong>de</strong>feitos <strong>de</strong> software (e hardware). Para<br />

tanto, além possuir tal arquitetura, no SCuP introduzimos os mecanismos <strong>de</strong> introspecção/inspeção<br />

profunda e firewall <strong>de</strong> hardware que, em conjunto com os pacotes <strong>de</strong> execução segura, garantem<br />

múltiplas camadas <strong>de</strong> segurança in<strong>de</strong>pen<strong>de</strong>ntes no processador. O SCuP, portanto,<br />

representa uma nova filosofia no projeto <strong>de</strong> processadores, on<strong>de</strong> um cenário <strong>de</strong> ataques<br />

ampliado é consi<strong>de</strong>rado, resultando em um sistema mais robusto e mais resistente a quebras<br />

<strong>de</strong> segurança <strong>de</strong> sub-componentes. Os resultados <strong>de</strong> implementação até o momento<br />

apontam para a total viabilida<strong>de</strong> do processador, com <strong>de</strong>gradação mínima <strong>de</strong> <strong>de</strong>sempenho<br />

(<strong>de</strong> 150 para 140MHz, -6,7%) e custos mo<strong>de</strong>rados em termos <strong>de</strong> área (53%). A difusão<br />

em silício, esperada para os próximos meses, permitirá que números ajustados <strong>de</strong> <strong>de</strong>sempenho<br />

sejam obtidos e que figuras <strong>de</strong> <strong>de</strong>sempenho globais sejam estabelecidas, inclusive<br />

com o SBS, o MIP e o PES.<br />

Os trabalhos futuros estarão centrados no <strong>de</strong>senvolvimento das bibliotecas <strong>de</strong> software<br />

e aplicações para uso do SCuP em diversos cenários, <strong>de</strong>s<strong>de</strong> votação eletrônica, até<br />

aviônica.<br />

Referências<br />

[1] Gianpiero Cabodi, Sergio Nocco, and Stefano Quer. Improving SAT-based Boun<strong>de</strong>d Mo<strong>de</strong>l<br />

Checking by Means of BDD-based Approximate Traversals. In in Design, Automation<br />

and Test in Europe, 2003, pages 898–903, 2003.<br />

82


[2] Benjie Chen and Robert Morris. Certifying program execution with secure processors. In<br />

HOTOS’03: Proceedings of the 9th conference on Hot Topics in Operating Systems,<br />

pages 23–23, Berkeley, CA, USA, 2003. USENIX Association.<br />

[3] Victor Costan, Luis F. Sarmenta, Marten van Dijk, and Srinivas Devadas. The Trusted<br />

Execution Module: Commodity General-Purpose Trusted Computing. In CAR-<br />

DIS ’08: Proceedings of the 8th IFIP WG 8.8/11.2 International Conference on<br />

Smart Card Research and Advanced Applications, pages 133–148, Berlin, Hei<strong>de</strong>lberg,<br />

2008. Springer-Verlag.<br />

[4] Joan G. Dyer, Mark Lin<strong>de</strong>mann, Ronald Perez, Reiner Sailer, Leen<strong>de</strong>rt van Doorn,<br />

Sean W. Smith, and Steve Weingart. Building the IBM 4758 secure coprocessor.<br />

Computer, 34(10):57–66, 2001.<br />

[5] Roberto Gallo, Henrique Kawakami, and Ricardo Dahab. On <strong>de</strong>vice i<strong>de</strong>ntity establishment<br />

and verification. In Proc of EuroPKI’09 Sixth European Workshop on Public<br />

Key Services, Applications and Infrastructures, September 2009.<br />

[6] Roberto Gallo, Henrique Kawakami, Ricardo Dahab, Rafael Azevedo, Saulo Lima, and<br />

Guido Araujo. A hardware trusted computing base for direct recording electronic<br />

vote machines. Austin, Texas, USA, 2010. ACM.<br />

[7] Warren A. Hunt. Mechanical mathematical methods for microprocessor verification. In<br />

Rajeev Alur and Doron A. Peled, editors, Computer Ai<strong>de</strong>d Verification, volume 3114<br />

of Lecture Notes in Computer Science, pages 274–276. Springer Berlin - Hei<strong>de</strong>lberg,<br />

2004.<br />

[8] Hiroaki Iwashita, Satoshi Kowatari, Tsuneo Nakata, and Fumiyasu Hirose. Automatic<br />

test program generation for pipelined processors. In Proceedings of the 1994 IEEE-<br />

ACM international conference on Computer-ai<strong>de</strong>d <strong>de</strong>sign, ICCAD 94, pages 580–<br />

583, Los Alamitos, CA, USA, 1994. IEEE Computer Society Press.<br />

[9] Ruby B. Lee, Peter C. S. Kwan, John P. McGregor, Jeffrey Dwoskin, and Zhenghong<br />

Wang. Architecture for protecting critical secrets in microprocessors. SIGARCH<br />

Comput. Archit. News, 33:2–13, May 2005.<br />

[10] A Mirjalili, S, and Lenstra. Security Observance throughout the Life-Cycle of Embed<strong>de</strong>d<br />

Systems. In International Conference on Embed<strong>de</strong>d Systems, 2008.<br />

[11] NIST. Security requirements for cryptographic modules, Fe<strong>de</strong>ral Information Processing<br />

Standards Publication (FIPS PUB) 140-2, 2002.<br />

[12] E. Oksuzoglu and D.S. Wallach. VoteBox Nano: A Smaller, Stronger FPGA-based Voting<br />

Machine (Short Paper). usenix.org, 2009.<br />

[13] John P., Dwoskin, and Ruby B. Lee. A framework for testing hardware-software security<br />

architectures. Austin, Texas, USA, 2010. ACM.<br />

[14] Bryan D. Payne, Martim Carbone, Monirul Sharif, and Wenke Lee. Lares: An architecture<br />

for secure active monitoring using virtualization. In Proceedings of the 2008 IEEE<br />

Symposium on Security and Privacy, pages 233–247, Washington, DC, USA, 2008.<br />

IEEE Computer Society.<br />

[15] Nick L. Petroni, Jr., Timothy Fraser, Jesus Molina, and William A. Arbaugh. Copilot -<br />

a coprocessor-based kernel runtime integrity monitor. In Proceedings of the 13th<br />

83


conference on USENIX Security Symposium - Volume 13, SSYM’04, pages 13–13,<br />

Berkeley, CA, USA, 2004. USENIX Association.<br />

[16] Sandip Ray and Warren A. Hunt. Deductive verification of pipelined machines using firstor<strong>de</strong>r<br />

quantification. In Rajeev Alur and Doron A. Peled, editors, Computer Ai<strong>de</strong>d<br />

Verification, volume 3114 of Lecture Notes in Computer Science, pages 254–256.<br />

Springer Berlin - Hei<strong>de</strong>lberg, 2004.<br />

[17] Naveen K Sastry. Verifying security properties in electronic voting machines. PhD thesis,<br />

University Of California, Berkeley, 2007.<br />

[18] F. Schnei<strong>de</strong>r, Greg Morrisett, and Robert Harper. A language-based approach to security.<br />

In Informatics, pages 86–101. Springer, 2001.<br />

[19] K. Shimizu, H. P. Hofstee, and J. S. Liberty. Cell broadband engine processor vault<br />

security architecture. IBM J. Res. Dev., 51(5):521–528, 2007.<br />

[20] G. Edward Suh, Charles W. O’Donnell, and Srinivas Devadas. Aegis: A single-chip<br />

secure processor. IEEE Design and Test of Computers, 24(6):570–580, 2007.<br />

[21] The Common Criteria Recognition Agreement. Common criteria for information technology<br />

security evaluation v3.1 revision 3, July 2009.<br />

[22] Trusted Computing Group. Trusted Platform Module Main Description Level 2 version<br />

1.2 revision 116, March 2011.<br />

[23] Paul D. Williams. CuPIDS: increasing information system security through the use of<br />

<strong>de</strong>dicated co-processing. PhD thesis, West Lafayette, IN, USA, 2005. AAI3191586.<br />

84


Fault Attacks against a<br />

Cellular Automata Based Stream Cipher<br />

José Carrijo 1 , An<strong>de</strong>rson C. A. Nascimento 1 ,<br />

Rafael Tonicelli 1 , Vinícius <strong>de</strong> Morais Alves 1<br />

1 Departamento <strong>de</strong> <strong>Engenharia</strong> Elétrica, Universida<strong>de</strong> <strong>de</strong> Brasília<br />

Campus Darcy Ribeiro, 70910-900, Brasilia, DF, Brazil<br />

carrijo@cepesc.gov.br,andclay@ene.unb.br<br />

{tonicelli, vmalves}@re<strong>de</strong>s.unb.br<br />

Abstract. This paper presents fault attacks against a cellular automata based<br />

stream cipher. A fault attack assumes that the adversary is able to physically<br />

operate the cryptographic <strong>de</strong>vice and insert some errors into it. As a consequence,<br />

the adversary can induce faulty results into the <strong>de</strong>vice and use them to<br />

recover the stored secret key. By using this approach we provi<strong>de</strong> extremely efficient<br />

and practical cryptanalytic methods: by injecting n/2 + n 2 /32 faults we<br />

recover the n-bit secret key from a stream cipher based on cellular automaton<br />

rule 30. To the best of our knowledge this is the first application of fault attacks<br />

against cellular automata based stream ciphers.<br />

1. Introduction<br />

1.1. Overview<br />

Traditionally, cryptanalytic methods have been concentrated on exploiting vulnerabilities<br />

in the algorithmic structure of the target cryptosystem. The conventional approach often<br />

ignores the inherent physical properties of the implementation. In this context, the<br />

fault analysis mo<strong>de</strong>l emerged as an alternative that allowed the <strong>de</strong>velopment of a variety<br />

of realistic attacks against symmetric and asymmetric cryptographic protocols. The fault<br />

analysis mo<strong>de</strong>l relies on the principle that the adversary can physically control the cryptographic<br />

<strong>de</strong>vice, and induce it to abnormally operate, making it to output faulty results.<br />

These faulty results can later on be used by the adversary to <strong>de</strong>rive secret information,<br />

such as recovering a shared secret key. Depending on the implementation, an attacker can<br />

perform fault injections into the <strong>de</strong>vice by several ways: exposing it to heat or radiation,<br />

changing its power supply voltage, increasing its external clock, provoking temperature<br />

variations, among other possibilities.<br />

Fault analysis was introduced by Boneh, DeMillo, and Lipton [2], who used this<br />

technique to attack public key cryptosystems, such as digital signature and i<strong>de</strong>ntification<br />

schemes. Their results stimulated a progressive research in the area, and since then other<br />

significant results have been obtained. Remarkably, Biham and Shamir [1] used differential<br />

fault analysis to attack block ciphers, such as DES. More recently, Hoch and Shamir<br />

[4] <strong>de</strong>veloped a systematic study about the vulnerabilities of stream ciphers in the fault<br />

analysis setting. Despite all the active research regarding the field, there are no published<br />

results about the use of fault attacks against cellular automata based stream ciphers. One<br />

of the goals of this paper is to fill this gap by presenting some practical fault attacks against<br />

85


the aforementioned cryptosystem. The effectiveness of the proposed attacks <strong>de</strong>monstrates<br />

that fault analysis represents a major threat for cellular automata based ciphers.<br />

1.2. Cellular Automata Based Stream Ciphers<br />

Wolfram [9, 10] was the first to notice the usefulness of cellular automata as stream ciphers<br />

major building blocks. Wolfram pointed out that some rules used to <strong>de</strong>fine the<br />

temporal evolution of one-dimensional cellular automata generated seemingly pseudorandom<br />

behaviors. The proposed family of stream ciphers was very fast yielding efficient<br />

implementations in hardware and software. Later analysis [5] showed that the cipher’s<br />

parameters initially proposed by Wolfram were too optimistic, however for appropriate<br />

key sizes all the known attacks against the cipher proposed in [9, 10] have exponential<br />

complexity.<br />

Later, many other ciphers based on cellular automata were proposed [3, 6, 7, 8]<br />

but the overall goal was the same: to exploit the apparently simple rules and architecture<br />

of cellular automata for obtaining efficient ciphers.<br />

1.3. The Attack Mo<strong>de</strong>l<br />

Roughly speaking, in the fault analysis mo<strong>de</strong>l, the adversary is focused on attacking the<br />

physical implementation rather than the cryptographic algorithm.<br />

We assume that the adversary has physical access to the <strong>de</strong>vice, but no previous<br />

knowledge about the key. The adversary is allowed to run the <strong>de</strong>vice several times while<br />

provoking faults into chosen memory areas of the same <strong>de</strong>vice. Specifically, we consi<strong>de</strong>r<br />

that the adversary is able to apply bit flipping faults to either the RAM or the internal<br />

registers of the <strong>de</strong>vice. Moreover, he/she can arbitrarily reset the cryptographic <strong>de</strong>vice<br />

and later induce other randomly chosen faults into it.<br />

We also assume that the adversary knows small parts of the plaintext (thus obtaining<br />

also parts of the keystream). This is a wi<strong>de</strong>ly used assumption in cryptography<br />

(known as chosen plaintext attacks) and is quite realistic as parts of the message (such as<br />

hea<strong>de</strong>rs) are usually predictable by an attacker.<br />

1.4. Rule 30 Stream Cipher<br />

Cellular automata theory <strong>de</strong>scribes, among other things, how simple and well-<strong>de</strong>fined<br />

rules can lead to complex structures. It is claimed that the random properties of cellular<br />

automata could be used to implement secure, simple, fast, and low cost cryptosystems.<br />

In his seminal paper [9], Wolfram proposed the use of cellular automaton rule 30 as a<br />

keystream generator for a stream cipher. The resultant encryption scheme is the so-called<br />

Rule 30 Stream Cipher.<br />

A cellular automaton consists of a one-dimensional circular register of n cells,<br />

where each cell can present one of two possible states (values), 0 or 1. These cells are<br />

updated in parallel in discrete time steps according to a next state function (or rule). Let<br />

a t i <strong>de</strong>note the value of the i-th cell at time t. The rule 30 is given by:<br />

a t i = a t−1<br />

i−1 XOR ( a t−1<br />

i<br />

)<br />

OR a t−1<br />

i+1<br />

(1)<br />

86


2. Fault Analysis of the Rule 30 Stream Cipher<br />

This section introduces our fault attack on the Rule 30 Stream Cipher, <strong>de</strong>scribed earlier in<br />

section 1.4. For sake of feasibility, the following assumptions are ma<strong>de</strong>:<br />

• The adversary knows a sequence of n/2 + 1 bits extracted from the register of the<br />

cryptographic <strong>de</strong>vice. I.e., he/she knows a t i, for t = 1, . . . , n/2+1. This sequence<br />

is stored in the central column of a matrix A<br />

• The adversary has the capability of changing the content of chosen areas of the<br />

register, i.e., of flipping their stored value. He/she can also reset the <strong>de</strong>vice.<br />

This cryptanalytic technique is divi<strong>de</strong>d into 3 steps (or phases). In the first step,<br />

we <strong>de</strong>termine the bits of the two columns adjacent to the central column. In the second<br />

step, we proceed with the <strong>de</strong>termination of the bits on the right si<strong>de</strong> of the central column.<br />

In step 3, we <strong>de</strong>termine the bits on the left si<strong>de</strong> of the central column.<br />

As will be shown, as the attack goes on, the actions taken by the cryptanalyst will<br />

<strong>de</strong>pend on the observed configuration of the cells. The method is <strong>de</strong>scribed below.<br />

STEP 1: Determination of the bits of the two columns adjacent to the central column.<br />

This step consists of provoking a fault into the register for each known pair of bits. It is<br />

possible to <strong>de</strong>termine the two pairs of bits adjacent to the central column.<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

a t−1<br />

i+1<br />

x a t i x<br />

)<br />

Configuration 1.1<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

a t−1<br />

i+1<br />

x a t i x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−1 0 a t−1<br />

i+1<br />

x 0 x<br />

)<br />

This configuration is only possible if a t−1<br />

i−1 = a t−1<br />

i+1 = 1 or a t−1<br />

i−1 = a t−1<br />

i+1 = 0. If the<br />

attacker flips the bit a t−1<br />

i and then recomputes the bit a t i, there will be two possibilities:<br />

• If a t i = 0, then a t−1<br />

i−1 = a t−1<br />

i+1 = 1<br />

• If a t i = 1, then a t−1<br />

i−1 = a t−1<br />

i+1 = 0<br />

Configuration 1.2<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

a t−1<br />

i+1<br />

x a t i x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−1 0 a t−1<br />

i+1<br />

x 1 x<br />

)<br />

This configuration is only possible if a t−1<br />

i−1 = 0 and a t−1<br />

i+1 = 1 or a t−1<br />

i−1 = 1 and<br />

a t−1<br />

i+1 = 0. If the attacker flips the bit a t−1<br />

i and then recomputes the bit a t i, there will be two<br />

possibilities:<br />

• If a t i = 1, then a t−1<br />

i−1 = 0 and a t−1<br />

i+1 = 1<br />

• If a t i = 0, then a t−1<br />

i−1 = 1 and a t−1<br />

i+1 = 0<br />

87


Configuration 1.3<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

a t−1<br />

i+1<br />

x a t i x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−1 1 a t−1<br />

i+1<br />

x 0 x<br />

)<br />

This configuration allows one to immediately <strong>de</strong>termine a t−1<br />

i−1 = 1. However, a t−1<br />

i+1<br />

remains un<strong>de</strong>fined. If the attacker flips the bit a t−1<br />

i and then recomputes the bit a t i, there<br />

will be two possibilities:<br />

• If a t i = 1, then a t−1<br />

i−1 = 1 and a t−1<br />

i+1 = 0<br />

• If a t i = 0, then a t−1<br />

i−1 = 1 and a t−1<br />

i+1 = 1<br />

Configuration 1.4<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

a t−1<br />

i+1<br />

x a t i x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−1 1 a t−1<br />

i+1<br />

x 1 x<br />

)<br />

This configuration allows one to immediately <strong>de</strong>termine a t−1<br />

i−1 = 0. However, a t−1<br />

i+1<br />

remains un<strong>de</strong>fined. If the attacker flips the bit a t−1<br />

i and then recomputes the bit a t i, there<br />

will be two possibilities:<br />

• If a t i = 1, then a t−1<br />

i−1 = 0 and a t−1<br />

i+1 = 1<br />

• If a t i = 0, then a t−1<br />

i−1 = 0 and a t−1<br />

i+1 = 0<br />

STEP 2: Determination of the bits on the right si<strong>de</strong> of the central column.<br />

Assume the following notation.<br />

(<br />

α β<br />

x δ<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−1<br />

x<br />

a t−1<br />

i<br />

a t i<br />

)<br />

One can easily see that there are 8 different possibilities for the bits {α, β, δ}. Basing on<br />

equation 1, an adversary in possession of the bits {α, β, δ} can <strong>de</strong>termine the bit a t−1<br />

i+1 by<br />

applying one fault into the register.<br />

We shall now analyze these 8 possibilities.<br />

Configuration 2.1<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

a t−1<br />

i+1<br />

x a t i x<br />

)<br />

=<br />

(<br />

0 0 a<br />

t−1<br />

i+1<br />

x 0 x<br />

• This configuration is only possible for a t−1<br />

i+1 = 0.<br />

Configuration 2.2<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

a t−1<br />

i+1<br />

x a t i x<br />

)<br />

=<br />

(<br />

0 0 a<br />

t−1<br />

i+1<br />

x 1 x<br />

)<br />

)<br />

88


• This configuration is only possible for a t−1<br />

i+1 = 1.<br />

Configuration 2.3<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

a t−1<br />

i+1<br />

x a t i x<br />

• This configuration is not possible.<br />

Configuration 2.4<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

a t−1<br />

i+1<br />

x a t i x<br />

If the attacker flips the bit a t−1<br />

i<br />

possibilities:<br />

• If a t i = 1, then a t−1<br />

i+1 = 1.<br />

• If a t i = 0, then a t−1<br />

i+1 = 0.<br />

Configuration 2.5<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

)<br />

)<br />

=<br />

=<br />

(<br />

0 1 a<br />

t−1<br />

i+1<br />

x 0 x<br />

(<br />

0 1 a<br />

t−1<br />

i+1<br />

x 1 x<br />

)<br />

)<br />

and then recomputes the bit a t i, there will be two<br />

a t−1<br />

i+1<br />

x a t i x<br />

)<br />

=<br />

(<br />

1 0 a<br />

t−1<br />

i+1<br />

x 0 x<br />

• This configuration is only possible for a t−1<br />

i+1 = 1.<br />

Configuration 2.6<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

a t−1<br />

i+1<br />

x a t i x<br />

)<br />

=<br />

(<br />

1 0 a<br />

t−1<br />

i+1<br />

x 1 x<br />

• This configuration is only possible for a t−1<br />

i+1 = 0.<br />

Configuration 2.7<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

a t−1<br />

i+1<br />

x a t i x<br />

If the attacker flips the bit a t−1<br />

i<br />

possibilities:<br />

• If a t i = 1, then a t−1<br />

i+1 = 0.<br />

• If a t i = 0, then a t−1<br />

i+1 = 1.<br />

Configuration 2.8<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t−1<br />

i<br />

)<br />

=<br />

(<br />

1 1 a<br />

t−1<br />

i+1<br />

x 0 x<br />

)<br />

)<br />

)<br />

and then recomputes the bit a t i, there will be two<br />

a t−1<br />

i+1<br />

x a t i x<br />

)<br />

=<br />

(<br />

1 1 a<br />

t−1<br />

i+1<br />

x 1 x<br />

)<br />

89


• This configuration is not possible.<br />

STEP 3: Determination of the bits on the left si<strong>de</strong> of the central column.<br />

Assume the following notation.<br />

(<br />

α β<br />

δ x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−1<br />

a t i−1<br />

a t−1<br />

i<br />

x<br />

)<br />

One can easily see that there are 8 different possibilities for the bits {α, β, δ}. Basing<br />

on equation 1, an adversary in possession of the bits {α, β, δ} can <strong>de</strong>termine the bit a t−1<br />

i−2<br />

without applying any fault into the register.<br />

We shall now analyze these 8 possibilities.<br />

Configuration 3.1<br />

(<br />

a<br />

t−1<br />

i−2<br />

a t−1<br />

i−1<br />

a t−1<br />

i<br />

x a t i−1 x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−2 0 0<br />

x 0 x<br />

)<br />

• This configuration is only possible for a t−1<br />

i−2 = 0.<br />

Configuration 3.2<br />

(<br />

a<br />

t−1<br />

i−2<br />

a t−1<br />

i−1<br />

a t−1<br />

i<br />

x a t i−1 x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−2 0 0<br />

x 1 x<br />

)<br />

• This configuration is only possible for a t−1<br />

i−2 = 1.<br />

Configuration 3.3<br />

(<br />

a<br />

t−1<br />

i−2<br />

a t−1<br />

i−1<br />

a t−1<br />

i<br />

x a t i−1 x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−2 1 0<br />

x 0 x<br />

)<br />

• This configuration is only possible for a t−1<br />

i−2 = 1 .<br />

Configuration 3.4<br />

(<br />

a<br />

t−1<br />

i−2<br />

a t−1<br />

i−1<br />

a t−1<br />

i<br />

x a t i−1 x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−2 1 0<br />

x 1 x<br />

)<br />

• This configuration is only possible for a t−1<br />

i−2 = 0.<br />

Configuration 3.5<br />

(<br />

a<br />

t−1<br />

i−2<br />

a t−1<br />

i−1<br />

a t−1<br />

i<br />

x a t i−1 x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−2 0 1<br />

x 0 x<br />

)<br />

90


• This configuration is only possible for a t−1<br />

i−2 = 1.<br />

Configuration 3.6<br />

(<br />

a<br />

t−1<br />

i−2<br />

a t−1<br />

i−1<br />

a t−1<br />

i<br />

x a t i−1 x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−2 0 1<br />

x 1 x<br />

)<br />

• This configuration is only possible for a t−1<br />

i−2 = 0.<br />

Configuration 3.7<br />

(<br />

a<br />

t−1<br />

i−2<br />

a t−1<br />

i−1<br />

a t−1<br />

i<br />

x a t i−1 x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−2 1 1<br />

x 0 x<br />

)<br />

• This configuration is only possible for a t−1<br />

i−2 = 1.<br />

Configuration 3.8<br />

(<br />

a<br />

t−1<br />

i−2<br />

a t−1<br />

i−1<br />

a t−1<br />

i<br />

x a t i−1 x<br />

)<br />

=<br />

(<br />

a<br />

t−1<br />

i−2 1 1<br />

x 1 x<br />

)<br />

• This configuration is only possible for a t−1<br />

i−2 = 0.<br />

3. Further Explanation on the Rule 30 Stream Cipher Fault Analysis<br />

In this part, we explain in-<strong>de</strong>pth why our fault attack on the rule 30 stream cipher works.<br />

The main i<strong>de</strong>a is simple and quite intuitive. We recall that the attacker knows a<br />

sequence of n/2+1 cells, which are located on the central column of a matrix A. We also<br />

recall equation 1.<br />

a t i = a t−1<br />

i−1 XOR ( a t−1<br />

i<br />

)<br />

OR a t−1<br />

i+1<br />

In the first step of our attack, the cryptanalyst intends to discover the values a t−1<br />

i−1<br />

and a t−1<br />

i+1, given the values that he/she knows, i.e., a t i and a t−1<br />

i . However, he/she has two<br />

variables and only a boolean equation (this initial configuration is displayed in figure 1).<br />

Bits to be <strong>de</strong>termined<br />

t 1<br />

a i 1<br />

x<br />

t<br />

<br />

a 1 i<br />

<br />

1<br />

t1<br />

a i<br />

t<br />

a i<br />

t<br />

<br />

1<br />

a i<br />

<br />

1<br />

x<br />

t 1<br />

a i 1<br />

Known cells<br />

Figure 1. Initial configuration.<br />

91


Our fault analysis capabilities allow the cryptanalyst to obtain another boolean<br />

equation by flipping the bit a t−1<br />

i and observing the new value assumed by a t i after the<br />

fault injection. So, at the end of this action, the cryptanalyst will have a simple system of<br />

the form:<br />

⎧⎪ ⎨ [a t i] before<br />

flipping = at−1 i−1 XOR ( )<br />

b OR a t−1<br />

i+1<br />

⎪ ⎩ [a t i] after<br />

flipping = at−1 i−1 XOR ( ) (2)<br />

b OR a t−1<br />

i+1<br />

where [a t i] before<br />

flipping and [at i] after<br />

flipping <strong>de</strong>note the values observed at cell at i before and after the<br />

fault injection, respectively. Before, the fault injection a t−1<br />

i = b and after this, a t−1<br />

i = b,<br />

where b is the complementary value of b. It is easy to find the solution for this system.<br />

The action performed is illustrated in figure 2.<br />

Bit to be flipped<br />

Flipped bit<br />

t 1<br />

a i 1<br />

x<br />

t<br />

<br />

a 1 i<br />

<br />

1<br />

<br />

b<br />

t<br />

a B i F<br />

t<br />

<br />

1<br />

a i<br />

<br />

1<br />

x<br />

t 1<br />

a i 1<br />

Fault Injection<br />

t 1<br />

a i 1<br />

x<br />

t<br />

<br />

a 1 i<br />

<br />

1<br />

<br />

b<br />

t<br />

a A i F<br />

t<br />

<br />

1<br />

a i<br />

<br />

1<br />

x<br />

t 1<br />

a i 1<br />

Observe modified<br />

value<br />

Figure 2. Illustration of the main i<strong>de</strong>a involved in the first step of our attack.<br />

Steps 2 and 3 are trivial, and we hardly have to perform a flip action, because,<br />

usually, we have equation with only one variable to be <strong>de</strong>termined. Figure 3 suggests<br />

that.<br />

Bit to be <strong>de</strong>termined<br />

t1<br />

a i 2<br />

x<br />

t<br />

<br />

a 1 i<br />

<br />

1<br />

t 1<br />

a i 1<br />

t1<br />

a i 2<br />

t<br />

ai<br />

1<br />

tt1<br />

a i i 1<br />

x<br />

t 1<br />

a i 1<br />

Known cells<br />

Figure 3. Illustration of step 3 configuration.<br />

Regarding the complexity of the attack, it is easy to obtain an estimation on the<br />

number of faults required to break the cryptosystem. At step 1, we provoke n/2 fault<br />

injections to <strong>de</strong>termine the two pairs of bits adjacent to the central column. At step 2,<br />

there are (1/2) × [(n/2) × (n/2)] bits, and, on average, we provoke 0.25 fault for each bit<br />

to be <strong>de</strong>termine. So, step 2 requires n 2 /32 faults. At step 3, as explained previously, no<br />

faults need to be realized. Thus,<br />

Number of Faults Rule30 = n2<br />

32 + n 2<br />

92


3.1. Fault Analysis Effect on Rule 30 Stream Cipher<br />

One of the most known cryptanalytic techniques against the rule 30 stream cipher was<br />

proposed by Meier and Staffelbach [5]. Their statistical technique allows one to <strong>de</strong>termine<br />

secret keys with lengths varying between 300 and 500 bits by using personal computers.<br />

However, it is claimed that the recovery of secret keys of 1,000 bits would <strong>de</strong>mand the<br />

use of large scale parallel computers.<br />

On the other hand, the attack based on fault analysis assumptions has proven to be<br />

efficient and feasible for a large set of key lengths. For instance, to obtain a secret key of<br />

256 bits, the cryptanalyst should inject 2 7 +2 11 faults and know (256/2)+1 = 129 bits of the<br />

generated sequence. To obtain a key of 1,024 bits, 2 9 +2 15 fault injections and 512 known<br />

bits are nee<strong>de</strong>d. This amount of operations can be performed by any personal computer<br />

equipped with current technology. Besi<strong>de</strong>s that, the operations required to implement<br />

the attack are simple (comparisons and fault injections) and can be performed by any<br />

unsophisticated computational system.<br />

4. Conclusions<br />

Cellular automata based stream ciphers were <strong>de</strong>signed to respond to the increasing need of<br />

fast and low-cost cryptographic mechanisms. However, we have shown how <strong>de</strong>vastating<br />

fault analysis can be when applied to some of those cryptosystems.<br />

Our fault attack against the rule 30 stream cipher needs, in or<strong>de</strong>r to <strong>de</strong>termine a<br />

secret key of length n, only n/2 + n 2 /32 fault injections and a sequence of n/2 + 1 bits.<br />

It is an interesting future research direction to see how well the results introduced<br />

here apply to other ciphers <strong>de</strong>signed for low-cost, high performance cryptographic <strong>de</strong>vices.<br />

References<br />

[1] Eli Biham, Adi Shamir. A New Cryptanalytic Attack on DES: Differential Fault Analysis.<br />

Preprint, October 1996.<br />

[2] Dan Boneh, Richard A. DeMillo and Richard J. Lipton. On the Importance of Checking<br />

Cryptografic Protocols for Faults. Advances in Cryptology – EUROCRYPT 1997,<br />

Lecture Notes in Computers Science vol.1233, Springer-Verlag, pp. 37–51, May<br />

1997.<br />

[3] A. Fuster-Sabater, P. Caballero-Gil and M.E. Pazo-Robles, Application of Linear Hybrid<br />

Cellular Automata to Stream Ciphers, EUROCAST 2007, Lecture Notes in Computer<br />

Science vol. 4739, pp. 564-571, 2007<br />

[4] Jonathan J. Hock and Adi Shamir. Faut Analysis of Stream Ciphers. CHES 2004, Lecture<br />

Notes in Computer Science vol. 3156, Springer-Verlag, pp. 240–253, 2004.<br />

[5] Willi Meier and Othmar Staffelbach. Analysis of Pseudo Random Sequences Generated<br />

by Cellular Automata. Advances in Cryptology – EUROCRYPT 1991, Lecture<br />

Notes in Computer Science vol. 547, Springer-Verlag, pp. 186–199, 1991.<br />

[6] S. Nandi, B.K. Par, P. Pal Chaudhuri. Theory and Application of Cellular Automata in<br />

Cryptography, IEEE Transactions on Computers, vol 43, Issue 12, pp.1346-1357,<br />

1994<br />

93


[7] F. Seredynsky, P. Bouvry and A. Zomaya. Cellular Automata Computations and Secret<br />

Key Cryptography. Parallel Computing, Vol. 30, Issues 5-6, pp. 753-766, 2004.<br />

[8] M. Tomassini and M Perrenoud. Cryptography with Cellular Automata, Applied Soft<br />

Computing, vol 1, Issue 2, pp. 151-160, 2001.<br />

[9] S. Wolfram. Cryptography with Cellular Automata. Advances in Cryptology - CRYPTO<br />

1985, Proceedings, Springer-Verlag, pp. 429–432, 1986.<br />

[10] S. Wolfram. Random Sequence Generation by Cellular Automata. Advances in Applied<br />

Mathematics 7, pp. 123–169, 1986.<br />

94


Zero-knowledge I<strong>de</strong>ntification based on Lattices with Low<br />

Communication Costs<br />

Rosemberg Silva 1 , Pierre-Louis Cayrel 2 , Richard Lindner 3<br />

1 State University of Campinas (UNICAMP)<br />

Institute of Computing<br />

rasilva@ic.unicamp.br – Brazil<br />

2 Laboratoire Hubert Curien<br />

Université <strong>de</strong> Saint-Etienne<br />

pierre-louis.cayrel@univ-st-etienne.fr – France<br />

3 Technische Universität Darmstadt<br />

Fachbereich Informatik<br />

Kryptographie und Computeralgebra<br />

rlindner@cdc.informatik.tu-darmstadt.<strong>de</strong> – Germany<br />

Abstract. In this paper we propose a new 5-pass zero-knowledge i<strong>de</strong>ntification<br />

scheme with soundness error close to 1/2. We use the hardness of the Inhomogeneous<br />

Small Integer Solution problem as security basis. Our protocol<br />

achieves lower communication costs compared with previous lattice-based zeroknowledge<br />

i<strong>de</strong>ntification schemes. Besi<strong>de</strong>s, our construction allows smaller<br />

public and secret keys by applying the use of i<strong>de</strong>al lattices. We allow the prover<br />

to possess several pairs of secret and public keys, and choose randomly which<br />

pair is to be used in a given round of execution. We also <strong>de</strong>alt with nonces<br />

in zero-knowledge schemes in a new way, lowering the number of values exchanged<br />

between the prover and the verifier. Hence, our scheme has the good<br />

features of having a zero-knowledge security proof based on a well known hard<br />

problem of lattice theory, with worst to average-case reduction, and small size<br />

of secret and public keys.<br />

1. Introduction<br />

I<strong>de</strong>ntification schemes are cryptographic tools applied to provi<strong>de</strong> access control. A common<br />

realization of such schemes comes in the form of protocols between two entities<br />

called Prover and Verifier. The former is expected to establish the validity of its i<strong>de</strong>ntity<br />

to the latter. In or<strong>de</strong>r to accomplish such goal, the Prover makes used of the knowledge<br />

of a secret key, that is connected to its i<strong>de</strong>ntity. The application of zero-knowledge<br />

constructions helps to ensure that no information about such key is leaked as the protocol<br />

is performed. The only knowledge gained by the Verifier is that the claim ma<strong>de</strong><br />

by the Prover about the possession of the secret key is valid with overwhelming probability.<br />

Lattice-based instantiations of this kind of protocol have recently been proposed:<br />

[Lyubashevsky 2008], [Kawachi et al. 2008] and [Cayrel et al. 2010]. An interesting feature<br />

of some lattice-based systems in Cryptography, as seen in the seminal work from<br />

Ajtai [Ajtai 1996], is the possibility of allowing reductions from wost-cases to averagecases<br />

of well known hard problems. In the present work we use some of these results and<br />

propose an i<strong>de</strong>ntification scheme that achieves better communication costs.<br />

95


There is an standard construction of signature schemes from i<strong>de</strong>ntification<br />

schemes through the usage of the Fiat-Shamir heuristic, secure un<strong>de</strong>r the random oracle<br />

mo<strong>de</strong>l [Fiat and Shamir 1986]. It is of pivotal importance, however, that the communication<br />

costs of the i<strong>de</strong>ntification scheme be small in or<strong>de</strong>r to have efficient conversion.<br />

Among the good characteristics that our system possesses we stress the resilience<br />

to existing quantum attacks, like Shor’s [Shor 1994]. In addition to that, the relatively<br />

small soundness error per round and the algorithm that prevents exchange of<br />

large vectors enables to achieve small communication costs in contrast to other latticebased<br />

solutions, such as those seen in [Lyubashevsky 2008], [Kawachi et al. 2008] and<br />

[Cayrel et al. 2010]. This is conveyed by the Table 1, where we consi<strong>de</strong>r a scenario with<br />

an overall soundness error of 2 −16 , and make the assumption that all the random choices<br />

involve the use of seeds that are 128 bits long. For a setting applying k pairs of keys, our<br />

scheme has soundness error 1/2 + 1/k 2 . Then, it suffices to run 17 rounds of the protocol<br />

in or<strong>de</strong>r to reach such goal. The best zero-knowledge i<strong>de</strong>ntification scheme in term of<br />

communication cost, the CLRS scheme has soundness error of (q +1)/q, consi<strong>de</strong>ring that<br />

it is based on q-ary lattices over Z q . Given that we are working with q = 257, it also<br />

requires 17 rounds in or<strong>de</strong>r to satisfy the requirement regarding overall soundness error.<br />

Our proposal reaches a communication cost better than CLRS’.<br />

Scheme<br />

Rounds Total communication<br />

[Kbyte]<br />

Lyubashevsky [Lyubashevsky 2008] 11 110,00<br />

Kawachi et al. [Kawachi et al. 2008] 27 58,67<br />

CLRS [Cayrel et al. 2010] 17 37,50<br />

Ours 17 23,40<br />

Table 1. Comparison with lattice-based ID schemes.<br />

This paper is organized as follows. The concepts necessary to the un<strong>de</strong>rstanding<br />

of our construction are are presented in Section 2. After that, we provi<strong>de</strong> a <strong>de</strong>tailed<br />

<strong>de</strong>scription of the algorithms from which our scheme is composed in Section 3. Then, we<br />

give the proofs for the zero-knowledge properties that our scheme possesses. For last, we<br />

discuss the choice of parameters in Section 4 and future lines of investigation in Section<br />

5.<br />

2. Preliminaries<br />

Notation. Along the text we use bold capital letters to <strong>de</strong>note matrices and bold small<br />

letters to indicate vectors. Scalars, on their turn, are represented with regular characters.<br />

Security Mo<strong>de</strong>l. Our i<strong>de</strong>ntification scheme employs a string commitment scheme that<br />

possesses the properties of computationally binding and statistically hiding. We also assume<br />

that a trusted party honestly sets up the system parameters for both the Prover and<br />

the Verifier.<br />

A commitment scheme is said to be statistically hiding, when no computationally<br />

unboun<strong>de</strong>d adversary can distinguish two commitment strings generated from two distinct<br />

96


strings. It is computationally binding, if no polynomial-time adversary can imperceptibly<br />

change the committed string after sending the corresponding commitment.<br />

We show that our construction is resilient to concurrent attacks. Thus, we allow<br />

the adversaries act as cheating verifiers prior to attempting impersonation attacks, with<br />

polynomially many different instances of the prover. Such instances share the same secret<br />

keys in each round, but use different random coins. Besi<strong>de</strong>s, they have their own<br />

in<strong>de</strong>pen<strong>de</strong>nt state.<br />

Zero-Knowledge. Given a language L and one of its words x, we call zero-knowledge<br />

proof of knowledge that x belongs L a protocol with the following properties:<br />

• Completeness: any true theorem to be proved.<br />

• Soundness: no false theorem can be proved.<br />

• Zero-Knowledge: nothing but the truthfulness of the statement being proved is<br />

revealed. According to [Goldwasser et al. 1985], there exist the following kinds<br />

of zero-knowledge :<br />

– Perfect: if the simulator and the real proof produce communication tapes<br />

with exactly the same distribution.<br />

– Statistical: if the simulator and the real proof produce communication<br />

tapes whose statistical distributions are negligibly close.<br />

– Computational: if no efficient algorithm can distinguish the communication<br />

tape produced by the simulator from that corresponding to the real<br />

protocol.<br />

Lattices. Lattices correspond to discrete additive subgroups of R m . One can represent<br />

them by means of a basis B composed of n ≤ m linear in<strong>de</strong>pen<strong>de</strong>nt vectors in R m . Such<br />

basis is not unique. Given two basis B 1 and B 2 for the same lattice, there is a unimodular<br />

matrix U such that B 1 = B 2 U.<br />

Given a basis B, the corresponding lattice is generated by all combinations of<br />

vectors in B with integer coefficients.<br />

There are hard problems <strong>de</strong>fined over lattices that can be used as security assumptions<br />

in the construction of cryptographic schemes. We list below the problems that are<br />

related to the i<strong>de</strong>ntification scheme proposed in this paper. We assume that the norm used<br />

throughout this document is max-norm.<br />

Definition 2.1 (Search Shortest Vector Problem, SVP). On input a lattice basis B ∈<br />

Z m×n , the computational shortest vector problem (SVP) is <strong>de</strong>fined as the task of obtaining<br />

a non-zero lattice vector Bx satisfying ‖Bx‖ ≤ ‖By‖ for any other y ∈ Z n \ {0}.<br />

As commonly happens in the study of computational complexity, one<br />

can express the problem above as optimization, <strong>de</strong>cision and approximation<br />

[Micciancio and Goldwasser 2002].<br />

Definition 2.2 (Short Integer Solution, SIS). On input a prime q, a positive real number<br />

b, a matrix A ∈ Z n×m<br />

q , associated with a lattice basis, the short integer solution (SIS)<br />

problem is <strong>de</strong>fined as the task of finding a non-zero vector x ∈ Z m such that Ax = 0<br />

(mod q), with ‖x‖ ≤ b.<br />

97


The SIS has served as security assumption in several cryptographic schemes with<br />

worst-case connections. In [Ajtai 1996] and [Ajtai and Dwork 1996], Ajtai first showed<br />

how to use computationally intractable worst-case lattice problems as building blocks for<br />

cryptosystems. The parameter sizes involved, however, are not small enough to enable<br />

practical implementations.<br />

Working towards making lattice-based schemes practical, Micciancio showed that<br />

it is possible to represent a basis, and thus public keys, with space that grows quasilinearly<br />

in the lattice dimension [Micciancio 2007] through cyclic lattices. Further improvement<br />

was obtained in conjunction with Lyubashevsky, achieving compression functions<br />

that are both efficient and provably secure assuming the hardness of worst-case<br />

lattice problems for i<strong>de</strong>al lattices [Lyubashevsky and Micciancio 2006].<br />

A variety of hard problems associated with lattices has been used as security basis<br />

in a number of cryptographic schemes. For example, Lyubashevsky’s i<strong>de</strong>ntification<br />

scheme is secure un<strong>de</strong>r active attacks, assuming the hardness of approximating SVP in all<br />

lattices of dimension n to within a factor of Õ(n2 ). By weakening the security assumption,<br />

on the other hand, one can achieve parameters small enough to make a practical<br />

implementation feasible, as seen in the i<strong>de</strong>ntification scheme proposed by Kawachi et<br />

al. in [Kawachi et al. 2008]. In this later work, the authors suggest to use approximate<br />

Gap-SVP or SVP within factors Õ(n). Cayrel et al. improved the results from Kawachi<br />

in the CLRS scheme [Cayrel et al. 2010].<br />

I<strong>de</strong>al Lattices. There is a particular class of lattices that are closed un<strong>de</strong>r ring multiplications.<br />

They correspond to the i<strong>de</strong>als of some polynomial quotient ring.<br />

Definition 2.3 (I<strong>de</strong>al lattices). Let f be a monic polynomial of <strong>de</strong>gree n. We call L is an<br />

i<strong>de</strong>al lattice if it corresponds to an i<strong>de</strong>al I in the ring Z[x] /〈f〉.<br />

For lattices of rank n and entries from Z q , the storage needs for characterizing a<br />

basis is n 2 log(q) bits. By applying i<strong>de</strong>al lattices, instead, this value can be reduced to<br />

n log(q) bits. Besi<strong>de</strong>s the gain in storage, there is also a gain in performance, given that<br />

matrix/vector multiplications can be performed in time O(n log(n)) using discrete FFTs.<br />

Both SIS and SVP restricted to i<strong>de</strong>al lattices still keep the worst-case to averagecase<br />

connection, provi<strong>de</strong>d that f is irreducible over the integers.<br />

Definition 2.4 (I<strong>de</strong>al-SIS). Given a monic polynomial f of <strong>de</strong>gree n, the ring R f =<br />

Z[x]/〈f〉, and m elements a 1 , . . . , a m ∈ R f /qR f , we <strong>de</strong>fine I<strong>de</strong>al-SIS the problem of<br />

finding x 1 , . . . , x m ∈ R f satisfying ∑ m<br />

i=1 a ix i = 0 (mod q) and 0 < ‖(x 1 , . . . , x m )‖ ≤<br />

b.<br />

Canonical i<strong>de</strong>ntification schemes Let the tuple (KEYGEN, P, V ) be an i<strong>de</strong>ntification<br />

scheme, where KEYGEN is the key-generation algorithm which on input parameters outputs<br />

(sk, pk), P is the prover algorithm taking input sk, V is the verifier algorithm taking<br />

inputs parameters and pk. We say that such scheme is a canonical i<strong>de</strong>ntification scheme<br />

if it is a public-coin 3-move protocol {commitment, challenge, answer} that enables P to<br />

convince V about the knowledge of sk.<br />

98


Stern’s I<strong>de</strong>ntification Scheme. The first co<strong>de</strong>-based i<strong>de</strong>ntification scheme was proposed<br />

by Harari in 1989 [Harari 1988], but it was broken by Véron in 1995 [Véron 1995].<br />

In 1990, Girault <strong>de</strong>vised a three-pass scheme [Girault 1990]. Neither of those schemes<br />

was practical, from performance perspective, though. The first practical co<strong>de</strong>-based i<strong>de</strong>ntification<br />

scheme, from performance standpoint, was proposed by Stern [Stern 1993]. Its<br />

security relies on the collision-resistance property of a hash function h and the hardness<br />

of the syndrome <strong>de</strong>coding problem. The entity to be authenticated possesses a pair of<br />

keys (i, s) related by i = H T s, where H is a public parity check matrix of a given co<strong>de</strong>, s<br />

is a private binary vector of Hamming weight p, and i is its public syndrome. It engages<br />

in a zero-knowledge protocol with a verifier, aiming to prove the knowledge of the secret<br />

key, without revealing its value. In the same paper Stern proposed some variations of the<br />

protocol. The most efficient in terms of communication costs had soundness error of 2/3.<br />

This implies that, in or<strong>de</strong>r to reach a confi<strong>de</strong>nce level L on the authenticity of the prover,<br />

the protocol has to be repeated a number r of rounds, in or<strong>de</strong>r to satisfy 1 − (2/3) r ≥ L.<br />

Gaborit and Girault’s I<strong>de</strong>ntification Scheme Another scheme suggested by Gaborit<br />

and Girault requires smaller storage for public data [Gaborit and Girault 2007]. Given<br />

that the schemes we have seen are <strong>de</strong>aling with co<strong>de</strong>s, this usually implies that a generator<br />

matrix or a parity check matrix is nee<strong>de</strong>d to fully characterize them. The i<strong>de</strong>a applied by<br />

Gaborit and Girault was to use double-circulant matrices for a compact representation.<br />

In our work, we point out that a combination of these two approaches (and the<br />

one from Aguilar et al. [Aguilar et al. 2011]) can be used in the lattice context, namely<br />

i<strong>de</strong>al lattices (which allow a very compact representation, as efficient as double-circulant<br />

matrices) for an i<strong>de</strong>ntification scheme structure with soundness error of 1/2. With this, we<br />

manage to have the lowest communication costs and lowest public data storage needs.<br />

3. I<strong>de</strong>ntification Scheme<br />

Our scheme is comprised of two algorithms: key generation, and i<strong>de</strong>ntification protocol.<br />

The first picks uniformly at random k binary vectors with length m, Hamming weight<br />

p and disjoint supports. The corresponding public keys are obtained by multiplication<br />

of the private key by a uniformly chosen matrix A ∈ Z n×m<br />

q . Given the small norm<br />

of the private keys, it is still computationally intractable to <strong>de</strong>rive them from the public<br />

data for a suitable choice of parameters with algorithms known to this date. Such task<br />

corresponds to the inhomogeneous SIS problem. In addition to that, several valid private<br />

keys correspond to a given public key. This fact will be used later on to establish the<br />

concurrent security of our scheme.<br />

KEYGEN:<br />

A ←− $ Z n×m<br />

q<br />

Compute x = {x 1 , . . . , x k } and y = {y 1 , . . . , y k } where<br />

$<br />

x i ←− {0, 1} m , with Hamming weight p and 1 ≤ i ≤ k<br />

y i ←− Ax i mod q with 1 ≤ i ≤ k<br />

COM ←− $ F, suitable family of commitment functions<br />

Output (sk, pk) = (x, (y, A, COM)), where the private key is sk, and the public key is pk.<br />

Figure 1. Key generation algorithm, parameters n, m, q are public.<br />

The second algorithm corresponds to the i<strong>de</strong>ntification protocol. To a given user<br />

we have associated k distinct pairs of keys. In a given round of execution, the Verifier<br />

99


Prover P(sk, pk)<br />

(sk, pk) = (x, (y, A, COM)) ←− KEYGEN<br />

Verifier V(pk)<br />

u ∗ $<br />

←− Z m q , σ ←− $ S m<br />

u ←− σ −1 (u ∗ )<br />

$<br />

r 3 ←− {0, 1} m<br />

r 1 ←− σ(r 3 )<br />

r 2 ←− u ∗ &r 3<br />

c 1 ←− COM(σ ‖ Au; r 1 )<br />

c 2 ←− COM(u ∗ ; r 2 )<br />

c 3 ←− COM(σ(x s + x t + u) mod q; r 3 )<br />

If b = 0:<br />

c 1 , c 2<br />

−−−−−−−−−−−−→<br />

s, t<br />

$<br />

←−−−−−−−−−−−− s, t ←− {1, . . . , k}<br />

c 3<br />

−−−−−−−−−−−−→<br />

Challenge b<br />

←−−−−−−−−−−−− b ←− $ {0, 1}<br />

σ, u + x s + x t mod q, r 3<br />

−−−−−−−−−−−−→<br />

Check<br />

r 1 ←− σ(r 3 )<br />

c 1<br />

? = COM(σ ‖ A(u + xs + x t ) − y s − y t ; r 1 )<br />

c 3<br />

? = COM(σ(xs + x t + u) mod q; r 3 )<br />

Else:<br />

u ∗ , σ(x s + x t ), r 3<br />

−−−−−−−−−−−−→<br />

Check<br />

r 2 ←− u ∗ &r 3<br />

c 2<br />

? = COM(u<br />

∗ ; r2 )<br />

c 3<br />

? = COM(σ(xs + x t ) + u ∗ mod q); r 3 )<br />

σ(x s + x t ) is binary with Hamming weight 2p<br />

Figure 2. I<strong>de</strong>ntification protocol<br />

picks two pairs of keys that the Prover is supposed to use for the interactive proof. When<br />

performing operations over the private keys, the Prover uses blinding factors in the form<br />

of permutations and vector sums with modular reduction. Both the permutation and the<br />

vector to be ad<strong>de</strong>d to the private keys are uniformly randomly chosen. Hence, observing<br />

the outcome does not reveal any information about the private key value, given that its statistical<br />

distribution is uniform. This is applied in the <strong>de</strong>monstration of the zero-knowledge<br />

property of our scheme.<br />

In or<strong>de</strong>r to help in the reduction of communication costs, the nonces that are used<br />

in conjunction with the COM functions can be generated in such a way that only one of<br />

the three values r i is chosen uniformly at random. We can chose r 3 because c 3 is the<br />

common commitment that is checked for both possible values for the challenge b. The<br />

other two nonces may be obtained by performing operations involving the first one, either<br />

by applying a random permutation (σ) or by performing the bitwise logical AND with the<br />

appropriate number of bits of the permutation of a randomly chosen vector (u). When<br />

replying to the challenges, the Prover would give to the Verifier all the seeds nee<strong>de</strong>d<br />

to reconstruct the nonces r i . The Prover also sends the seeds for computing σ and u ∗ ,<br />

<strong>de</strong>pending on the challenge received from the Verifier, instead of sending matrices and<br />

vectors that <strong>de</strong>fine them. We are making the assumption that the utility function to <strong>de</strong>rive<br />

them from the seeds are publicly known.<br />

Regarding the computation of the blinding vector u, we first randomly choose its<br />

image u ∗ . Then, using the seed of the permutation σ, we obtain u ←− σ −1 (u ∗ ). This<br />

choice enables to, instead of replying the challenge b = 1 with a vector in Z m q , send<br />

only a seed to reconstruct the value of u ∗ by the Verifier. This is the point where the<br />

improvement in terms of communication costs regarding CLRS becomes more evi<strong>de</strong>nt.<br />

For instantiating the commitment scheme COM, we recommend Kawachi’s<br />

[Kawachi et al. 2008], whose security is based on SIS. As seen with CLRS and SWI-<br />

100


FFT, the application of i<strong>de</strong>al lattices can bring improvement in performance and storage<br />

needs, without sacrificing security.<br />

3.1. Security<br />

We provi<strong>de</strong> below proofs for the completeness, soundness and zero-knowledge properties<br />

of the i<strong>de</strong>ntification scheme <strong>de</strong>scribed in Figure 2. We use as assumptions the fact that<br />

the string commitment scheme COM is a statistically hiding and computationally binding<br />

commitment scheme, and also that the inhomogeneous SIS problem is hard.<br />

3.1.1. Completeness<br />

Given that an honest prover has knowledge of the private keys x i , the blending mask u<br />

and the permutation σ, he will always be able to <strong>de</strong>rive the commitments c 1 , c 2 and c 3 ,<br />

and reveal to the verifier the information necessary to check that they are correct. He can<br />

also show that the private keys in his possession has the appropriate Hamming weights.<br />

So, the verifier will always accept the honest prover’s i<strong>de</strong>ntity in any given round. This<br />

implies perfect completeness.<br />

3.1.2. Zero-Knowledge<br />

We give a <strong>de</strong>monstration of the zero-knowledge property for the i<strong>de</strong>ntification protocol<br />

shown in Figure 2. Here, we require the commitment function COM to be statistically<br />

hiding, i.e., COM(x; r) is indistinguishable from uniform for a uniform r ∈ {0, 1} m .<br />

Theorem 3.1. Let q be prime. The protocol <strong>de</strong>scribed in Figure 2 is a statistically zeroknowledge<br />

proof of knowledge that the prover knows a set of k secret binary vectors x i<br />

of Hamming weight p that satisfy Ax i = y i mod q, for i ∈ {1, . . . , k}, if the employed<br />

commitment scheme COM is statistically-hiding.<br />

Proof. To prove the zero-knowledge property of our protocol, we construct a simulator<br />

S that, given oracle access to a verifier V (not necessarily honest), produces a communication<br />

tape that is statistically indistinguishable from a tape generated by the interaction<br />

between an honest prover P and the given verifier V . The construction of such simulated<br />

tape is <strong>de</strong>scribed below. The simulator prepares to answer the second challenge b<br />

by guessing its value ˜b picked uniformly at random from {0, 1}, and produces the corresponding<br />

commitments c 1 and c 2 . It accesses the verifier, as an oracle, passing the<br />

commitments c 1 and c 2 , obtaining as response the first challenge {s, t}. Then, it computes<br />

commitment c 3 and passes it to the verifier, obtaining the final challenge b. If b and<br />

˜b match, the simulator records the interaction in the communication tape. Otherwise, it<br />

repeats the process. The number of rounds recor<strong>de</strong>d r corresponds to what would be expected<br />

from a real pair (P, V ) in or<strong>de</strong>r to reach a specified value for the overall soundness<br />

error L.<br />

The computations of each commitment are executed as follows.<br />

If ˜b = 0, the simulator selects u, σ and the nonces {r 1 , r 2 , r 3 } as per protocol, computes<br />

the commitments {c 1 , c 2 } and passes them to the verifier V , which responds with a<br />

challenge {s, t}. The simulator solves the equations Ax t = y t (mod q) and Ax s = y s<br />

101


(mod q) for x t and x s , without any restriction regarding the norm of the solution. Such<br />

step is not computationally hard, and can be done in polynomial time. With these pseudo<br />

secret keys x t and x s , the simulator computes c 3 according to the protocol and sends it<br />

to the verifier. The <strong>de</strong>viation in c 3 is not recognized because COM is statistically hiding.<br />

Upon receipt of c 3 the verifier responds with the final challenge b. If it matches the<br />

value to which the simulator had prepared to answer, namely ˜b, then it reveals the values<br />

{σ, u + x s + x t mod q, r 1 , r 3 } to the verifier. The whole set of data exchanged between<br />

the simulator and the verifier is recor<strong>de</strong>d. If there is not a match between b and ˜b, however,<br />

the simulator does not record anything and prepares for a new round by picking another ˜b<br />

uniformly at random and restarts the process.<br />

If ˜b = 1, the simulator needs to play against the second verification branch. It<br />

selects u, σ and the nonces {r 1 , r 2 , r 3 } according to the protocol, uniformly at random.<br />

It computes the commitments {c 1 , c 2 }, sends them to the verifier, obtaining the answer t<br />

as result. Then, the simulator picks x t and x t uniformly at random as a binary vectors<br />

of dimension m, Hamming weight p and disjoint supports, without having to satisfy the<br />

restrictions Ax s = y s mod q and Ax t = y t mod q, given that this will not be used<br />

to check the validity of the commitments, in case the guessed challenge is correct. It<br />

suffices that c 2 and c 3 can be reproduced by the verifier, and that the surrogate private<br />

keys x t and x t have Hamming weight p. The simulator computes commitment c 3 , sends<br />

it to the verifier, and gets the final challenge as response. Again, such <strong>de</strong>viation is hid<strong>de</strong>n<br />

by COM. In case the final challenge matches the guessed value, the whole interaction of<br />

this round is recor<strong>de</strong>d. Otherwise, the simulator picks another ˜b and restarts the process.<br />

As a result, after 2r rounds in average, the simulator produces a communication tape<br />

statistically indistinguishable from a real one, provi<strong>de</strong>d that COM is statistically hiding.<br />

3.1.3. Soundness<br />

Theorem 3.2. If after r rounds of protocol execution a cheating prover is accepted with<br />

probability at least (1/2+1/k 2 ) r +ɛ, for any ɛ > 0, either there is a knowledge extractor,<br />

which is a polynomial time probabilistic Turing machine that computes with overwhelming<br />

probability the sum of two private keys x i and x j , with i, j ∈ {1, . . . , k}, which are<br />

solutions to instances of the inhomogeneous SIS, or the binding property of the commitment<br />

scheme COM is broken.<br />

Proof. We follow the same strategy as Véron [Véron 1996] for reasoning about trees<br />

that mo<strong>de</strong>l the probability space corresponding to the execution of the protocol. Let us<br />

suppose that a cheating prover can be accepted with such probability as (1/2+1/k 2 ) r +ɛ,<br />

or higher. Then, by rewinding this prover a number of times given by 1/ɛ, we can find<br />

with overwhelming probability a no<strong>de</strong> with two sons in the execution tree associated with<br />

the protocol between the cheating prover and the verifier, corresponding to the reception<br />

of the two possible values for the challenge b. This means that such cheating prover will<br />

be able to answer all challenges for a fixed set of commitments c 1 , c 2 , c 3 .<br />

There are two possibilities for him to accomplish this. The first one is to have the<br />

arguments from which the commitments assuming different values for the two challenges,<br />

102


ut with similar images through the application of the function COM. This implies a<br />

violation of the binding property of the commitment scheme, given that a collision was<br />

found.<br />

The second possibility is that the arguments to the function COM match. Let us<br />

call σ 0 and u 0 + x s 0 + x t 0 the values revealed by the cheating prover upon receipt of<br />

the challenge b = 0. Let us call σ(u 1 ) and σ 1 (x s 1 + x t 1 ) the answer to the challenge<br />

b = 1. Then, we can obtain the sum of the private key x s + x t as σ0 −1 (σ 1 (x t 1 + x t 1 )).<br />

This also means that we solved an arbitrary inhomogeneous SIS instance in probabilistic<br />

polynomial time, violating our assumption that such problem is hard.<br />

The ability to find the sum of two arbitrary private keys also implies the ability<br />

to obtain each of the individual keys corresponding to such sum. In or<strong>de</strong>r to do that, we<br />

can use the fact that private keys are binary vectors with constant Hamming weight p.<br />

Then, using the pigeon hole principle, after finding k pair sums, we will have necessarily<br />

a non-empty intersection with the support set of the next pair sum. Such intersection<br />

corresponds to the support set of a single key. Given that the key is binary, it can be<br />

uniquely <strong>de</strong>termined from its support set. Then, applying an XOR operation between<br />

each partially colliding sum and the recently computed key, we can retrieve the other two<br />

remaining private keys. This whole process can be executed over polynomially many key<br />

sums, so that all the individual private keys can be recovered.<br />

In the security proofs above, we make the assumption that the distributions of r 1 ,<br />

r 2 and r 3 are uniform, provi<strong>de</strong>d that r 3 is randomly chosen from {0, 1} n , and that the<br />

other two nonces are computed as r 1 ←− σ(r 3 ) and r 2 ←− σ(u) & r 3 . Besi<strong>de</strong>s, given<br />

that COM is statistically-hiding, these choices can not be distinguished from what would<br />

have been obtained, had r 1 and r 2 been directly picked at random from {0, 1} n .<br />

3.2. Security and Performance Consi<strong>de</strong>rations<br />

The application of i<strong>de</strong>al lattices in this i<strong>de</strong>ntification scheme can lead to improved and<br />

reduced memory footprint for public data. The usual restrictions regarding the choice of<br />

irreducible polynomials in the characterization of the i<strong>de</strong>al lattice, as well as its expansion<br />

factor must be observed, as discussed in [Lyubashevsky and Micciancio 2006]. This helps<br />

to ensure that finding short vectors in this kind of lattice remains hard to achieve.<br />

Our scheme is also secure against concurrent attacks. This is a consequence of<br />

the fact that a public key corresponds to multiple secret keys, when the parameters are<br />

chosen in such a way that the pre-image set given by the private keys is much larger than<br />

the image set to which the public keys belong. The keys are related via mapping through<br />

the matrix A.<br />

3.3. Communication Costs<br />

This i<strong>de</strong>ntification scheme can benefit from the use of i<strong>de</strong>al lattices, by performing faster<br />

matrix vector multiplications with FFTs, similarly to what was done with SWIFFT hash<br />

function [Lyubashevsky et al. 2008]. The associated polynomial must be irreducible and<br />

with small expansion factor, as suggested in [Lyubashevsky and Micciancio 2006], in or<strong>de</strong>r<br />

to avoid known attacks.<br />

103


Another efficient i<strong>de</strong>ntification scheme, named CLRS, based on SIS was recently<br />

proposed by Cayrel et al.[Cayrel et al. 2010]. It possesses a soundness error of (q +1)/2q<br />

per round, which is slightly higher than ours, namely 1/2. Such small difference plays<br />

an important role in terms of performance as <strong>de</strong>picted in Table 1. We provi<strong>de</strong> below a<br />

comparison in terms of communication costs per round.<br />

Our i<strong>de</strong>ntification scheme exhibits the following message exchanges between the<br />

prover P and the verifier V . We are assuming that the seeds used to generate random elements<br />

in the protocol are 128 bits wi<strong>de</strong>, and that the commitment function COMprovi<strong>de</strong>s<br />

results that are 256 bits wi<strong>de</strong>.<br />

• Commitments: 768 bits, corresponding to three commitment vectors.<br />

• First challenge: 2 log 2 k bits<br />

• Second challenge: 1 bit<br />

• Answer to the second challenge: (m/2) log 2 q + m/2 + 256, which is an average<br />

between<br />

– case challenge is 0:<br />

∗ one permutation seed: 128 bits<br />

∗ one vector in Z m q : m log 2 q bits<br />

∗ one seed for the nonce r 3 : 128 bits<br />

– case challenge is 1:<br />

∗ one seed for reconstructing the vector u ∗ ∈ Z m q : 128 bits<br />

∗ one vector in {0, 1} m : m bits<br />

∗ one seed for the nonce r 3 : 128 bits<br />

Thus, the total communication costs in bits per round of the protocol can be expressed<br />

as<br />

m<br />

2 log 2 q + 2 log 2 k + m 2 + 1025.<br />

Making the substitution of the parameters used in a concrete implementation, we<br />

have the 11275 bits per round. The overall cost for a scenario <strong>de</strong>manding soundness error<br />

of 2 −16 is listed in Table 1. From there, one can see that our scheme improves the state of<br />

art (CLRS) in approximately 38%.<br />

4. Attacks on the security assumptions<br />

An attacker might try to break our scheme either by finding collisions in the COM function<br />

at will or by computing solutions to the SIS instances corresponding to the scheme. Given<br />

that the COM function adopted is also based on SIS [Kawachi et al. 2008], this implies the<br />

ability of successfully finding solutions for SIS <strong>de</strong>fined over Z q , with vectors of dimension<br />

m and approximation factor √ m. Breaking our instances of inhomogeneous SIS, implies<br />

the capacity to find vectors with max-norm 1 in arbitrarily chosen lattices. Neither of these<br />

attacks can be efficiently implemented with tools and techniques currently available. This<br />

does not change with the application of i<strong>de</strong>al lattices either.<br />

In similarity with CLRS, we choose the parameters such that with overwhelming<br />

probability that there are other solutions to Ax = y mod q besi<strong>de</strong>s the private key<br />

possessed by the Prover. This fact is of great importance for obtaining security against<br />

concurrent attacks. In or<strong>de</strong>r to reach this goal, q and m are chosen in such a way that<br />

the cardinality of set of the private keys is much bigger than the cardinality of set of the<br />

104


public keys. This ensures that the system has the property of witness indistinguishability,<br />

which is kept un<strong>de</strong>r parallel composition.<br />

As an instantiation with 100 bits of security, we suggest the parameters listed in<br />

Table 2, which are comparable to those used by the SWIFFT hash function and the CLRS<br />

i<strong>de</strong>ntification scheme. The best combinatorial attack for finding short lattice vectors to<br />

this date, <strong>de</strong>vised by Wagner [Wagner 2002], has a computational complexity above 2 100<br />

for such set of parameters. In addition to that, our private keys have norm below of what<br />

the best lattice reduction algorithms can obtain.<br />

We chose the parameter k as 24 so that the soundness error per round be approximately<br />

the same as that of CLRS. Naturally, the Verifier has to load the set of public<br />

keys before the execution of the protocol from the trusted party that generates the keys.<br />

This represents an extra cost when compared to CLRS, but such operation can be executed<br />

at setup time. We are primarily concerned with the payload exchanged between the<br />

Prover and the Verifier. This can help in preserving bandwidth and battery time, which is<br />

important for constrained <strong>de</strong>vices.<br />

k n m q COM Length (bits)<br />

24 64 2048 257 256<br />

Table 2. Parameters for Lattice Instantiation<br />

5. Conclusion and Further Work<br />

We have shown in this paper a construction of a lattice-based i<strong>de</strong>ntification scheme with<br />

worst-case connections, taking as starting point a co<strong>de</strong>-based scheme. Its small soundness<br />

error results in lower communication costs than those from other lattice-based constructions<br />

over the I-SIS or SIS problems. Further improvements in computational costs can be<br />

obtained with the application of i<strong>de</strong>al lattices, without weakening the security properties.<br />

As future work, we suggest an extension of this approach of replacing security<br />

assumptions used by cryptographic schemes to other hard problems in lattices, such as<br />

LWE (learning with errors) which has a formulation very close to that of error-correcting<br />

co<strong>de</strong>s.<br />

References<br />

Aguilar, C., Gaborit, P., and Shreck, J. (2011). A new zero-knowledge co<strong>de</strong>-based i<strong>de</strong>ntification<br />

and signature scheme with reduced communications. preprint.<br />

Ajtai, M. (1996). Generating hard instances of lattice problems. Electronic Colloquium<br />

on Computational Complexity (ECCC), 3(7).<br />

Ajtai, M. and Dwork, C. (1996). A public-key cryptosystem with worst-case/average-case<br />

equivalence. Electronic Colloquium on Computational Complexity (ECCC), 3(65).<br />

Cayrel, P.-L., Lindner, R., Rückert, M., and Silva, R. (2010). Improved zero-knowledge<br />

i<strong>de</strong>ntification with lattices. In Provable Security, volume 6402 of Lecture Notes in<br />

Computer Science, pages 1–17. Springer.<br />

105


Fiat, A. and Shamir, A. (1986). How to prove yourself: Practical solutions to i<strong>de</strong>ntification<br />

and signature problems. In Odlyzko, A. M., editor, CRYPTO, volume 263 of Lecture<br />

Notes in Computer Science, pages 186–194. Springer.<br />

Gaborit, P. and Girault, M. (2007). Lightweight co<strong>de</strong>-based i<strong>de</strong>ntification and signature.<br />

IEEE Transactions on Information Theory (ISIT), pages 186–194.<br />

Girault, M. (1990). A (non-practical) three-pass i<strong>de</strong>ntification protocol using coding theory.<br />

In Seberry, J. and Pieprzyk, J., editors, AUSCRYPT, volume 453 of Lecture Notes<br />

in Computer Science, pages 265–272. Springer.<br />

Goldwasser, S., Micali, S., and Rackoff, C. (1985). The knowledge complexity of interactive<br />

proof-systems. In Proceedings of the seventeenth annual ACM symposium on<br />

Theory of computing, page 304. ACM.<br />

Harari, S. (1988). A new authentication algorithm. In Cohen, G. D. and Wolfmann, J.,<br />

editors, Coding Theory and Applications, volume 388 of Lecture Notes in Computer<br />

Science, pages 91–105. Springer.<br />

Kawachi, A., Tanaka, K., and Xagawa, K. (2008). Concurrently secure i<strong>de</strong>ntification<br />

schemes based on the worst-case hardness of lattice problems. In ASIACRYPT ’08:<br />

Proceedings of the 14th International Conference on the Theory and Application of<br />

Cryptology and Information Security, pages 372–389, Berlin, Hei<strong>de</strong>lberg. Springer-<br />

Verlag.<br />

Lyubashevsky, V. (2008). Lattice-based i<strong>de</strong>ntification schemes secure un<strong>de</strong>r active attacks.<br />

In Cramer, R., editor, Public Key Cryptography, volume 4939 of Lecture Notes<br />

in Computer Science, pages 162–179. Springer.<br />

Lyubashevsky, V. and Micciancio, D. (2006). Generalized compact knapsacks are collision<br />

resistant. In Bugliesi, M., Preneel, B., Sassone, V., and Wegener, I., editors, ICALP<br />

(2), volume 4052 of Lecture Notes in Computer Science, pages 144–155. Springer.<br />

Lyubashevsky, V., Micciancio, D., Peikert, C., and Rosen, A. (2008). Swifft: A mo<strong>de</strong>st<br />

proposal for fft hashing. In Nyberg, K., editor, FSE, volume 5086 of Lecture Notes in<br />

Computer Science, pages 54–72. Springer.<br />

Micciancio, D. (2007). Generalized compact knapsacks, cyclic lattices, and efficient oneway<br />

functions. In Computational Complexity. Springer.<br />

Micciancio, D. and Goldwasser, S. (2002). Complexity of Lattice Problems: a cryptographic<br />

perspective, volume 671 of The Kluwer International Series in Engineering<br />

and Computer Science. Kluwer Aca<strong>de</strong>mic Publishers, Boston, Massachusetts.<br />

Shor, P. W. (1994). Polynominal time algorithms for discrete logarithms and factoring on<br />

a quantum computer. In Adleman, L. M. and Huang, M.-D. A., editors, ANTS, volume<br />

877 of Lecture Notes in Computer Science, page 289. Springer.<br />

Stern, J. (1993). A new i<strong>de</strong>ntification scheme based on syndrome <strong>de</strong>coding. In Stinson,<br />

D. R., editor, CRYPTO, volume 773 of Lecture Notes in Computer Science, pages 13–<br />

21. Springer.<br />

Véron, P. (1995). Cryptanalysis of harari’s i<strong>de</strong>ntification scheme. In Boyd, C., editor, IMA<br />

Conf., volume 1025 of Lecture Notes in Computer Science, pages 264–269. Springer.<br />

106


Véron, P. (1996). Improved i<strong>de</strong>ntification schemes based on error-correcting co<strong>de</strong>s. Appl.<br />

Algebra Eng. Commun. Comput., 8(1):57–69.<br />

Wagner, D. (2002). A generalized birthday problem. In Yung, M., editor, CRYPTO,<br />

volume 2442 of Lecture Notes in Computer Science, pages 288–303. Springer.<br />

107


Obtaining Efficient Fully Simulatable Oblivious Transfer from<br />

General Assumptions<br />

Bernardo M. David 1 , An<strong>de</strong>rson C. A. Nascimento 1 , Rafael Tonicelli 1<br />

1 Department of Electrical Engineering, University of Brasilia.<br />

Campus Universitario Darcy Ribeiro,Brasilia, CEP: 70910-900, Brazil<br />

bernardo.david@re<strong>de</strong>s.unb.br, andclay@ene.unb.br, tonicelli@re<strong>de</strong>s.unb.br<br />

Abstract. We introduce a general construction of fully simulatable oblivious<br />

transfer based on lossy encryption. Furthermore, we extend the common <strong>de</strong>finition<br />

of lossy encryption by introducing the notion of computationally lossy<br />

encryption. If the cryptosystem used is computationally lossy, our general construction<br />

yields oblivious transfer protocols with computational security for both<br />

parties. Otherwise, when regular statistically lossy cryptosystems are employed<br />

in this construction, it yields oblivious transfer protocols with statistical security<br />

for the sen<strong>de</strong>r. The construction introduced in this paper is realizable from rerandomizable,<br />

homomorphic and lossy cryptosystems in general. Thus, it yields<br />

specific constructions based on different assumptions, such as DDH, LWE and<br />

McEliece. Moreover, it proves the equivalence of fully simulatable oblivious<br />

transfer and lossy encryption.<br />

1. Introduction<br />

Oblivious transfer (OT), a cryptographic primitive introduced by Rabin [Rabin 1981], is<br />

of great importance in the <strong>de</strong>sign of secure two-party and multiparty computation protocols.There<br />

exist many variants of OT, each one suitable for a given kind of application. In<br />

the present work, we concentrate ourselves on a variant called one-out-of-two oblivious<br />

transfer, <strong>de</strong>noted by ( 2<br />

1)<br />

-OT. In this variant, a sen<strong>de</strong>r (Alice) inputs two bits b0 , b 1 and<br />

a receiver (Bob) inputs a choice bit σ. At the end of the protocol, Alice receives nothing<br />

and Bob receives the bit b σ . Loosely speaking, an OT protocol is said to be private<br />

if the sen<strong>de</strong>r learns no information on the receiver’s choice σ, while the receiver gets<br />

information concerning at most one of the sen<strong>de</strong>r’s inputs.<br />

It has been proven that oblivious transfer enjoys a property called completeness,<br />

meaning that any function can be securely computed if the parties are given black-box<br />

access to OT [Kilian 1988]. Since OT serves as a building block for a wi<strong>de</strong> variety of<br />

secure protocols, it is <strong>de</strong>sirable to have OT protocols that achieve a strong notion of security<br />

against an unrestricted adversarial mo<strong>de</strong>l. Regarding the adopted notion of security,<br />

it is of particular interest to <strong>de</strong>sign OT protocols that are fully-simulatable, that is, secure<br />

in the real/i<strong>de</strong>al mo<strong>de</strong>l simulation paradigm. It is a well-known fact that OT protocols<br />

proven secure in the simulation-based paradigm are secure un<strong>de</strong>r sequential composition<br />

and, consequently, can truly be used as building blocks in more complex protocols. Regarding<br />

the adopted adversarial mo<strong>de</strong>l, it is <strong>de</strong>sirable for an OT protocol to be resistant<br />

against a malicious adversary. In contrast to a semi-honest adversary (who follows the<br />

protocol, but may try to acquire more information than it is allowed to know), a malicious<br />

108


adversary may arbitrarily <strong>de</strong>viate from the protocol specifications and, thus, represents a<br />

more powerful adversarial mo<strong>de</strong>l.<br />

In spite of being a fundamental cornerstone in two- and multi-party computation,<br />

there are only a few results of efficient OT constructions that are secure against malicious<br />

adversaries un<strong>de</strong>r the real/i<strong>de</strong>al mo<strong>de</strong>l simulation paradigm without random oracles<br />

[Lin<strong>de</strong>ll 2008, Green and Hohenberger 2007, Camenisch et al. 2007]. In [Camenisch et al. 2007]<br />

the authors introduce constructions based on q-power DDH and q-strong Diffie-Hellman,<br />

which are strong and relatively non-standard assumptions. In [Green and Hohenberger 2007],<br />

a construction based on the Decisional Bilinear Diffie-Hellman assumption is introduced.<br />

The first construction based on standard assumptions is given in [Lin<strong>de</strong>ll 2008], which<br />

introduces protocols based on the DDH assumptions, smooth projective hashing and general<br />

homomorphic cryptosystems (which is an assumption much stronger than lossy encryption,<br />

being realizable un<strong>de</strong>r much more limited number of un<strong>de</strong>rlying computational<br />

assumptions).<br />

1.1. Contributions<br />

In this paper, we present the following significant contributions:<br />

• An efficient fully-simulatable oblivious transfer protocol based on a general assumption:<br />

Lossy Encryption [Hemenway et al. 2009, Bellare et al. 2009]. In this<br />

construction we utilize techniques from the DDH based efficient fully simulatable<br />

protocol presented in [Lin<strong>de</strong>ll 2008]. It is realizable from a broad number of<br />

general assumptions (such as smooth projective hashing and re-randomization),<br />

computational assumptions (such as DDH, LWE) and also the McEliece assumptions<br />

un<strong>de</strong>r the extra assumption of the existence of perfectly binding and perfectly<br />

hiding commitments.<br />

• Our construction proves the equivalence between fully simulatable oblivious transfer<br />

and several flavors of lossy encryption, since the converse is shown in [Hemenway et al. 2009].<br />

• We introduce computationally lossy encryption, which is realizable un<strong>de</strong>r a broa<strong>de</strong>r<br />

number of assumptions than statistically lossy encryption, and show that the proposed<br />

general construction achieves computational security for both parties in the<br />

case that such a cryptosystem is employed.<br />

• We unify all current constructions of efficient fully simulatable oblivious transfer<br />

in the plain mo<strong>de</strong>l, since lossy encryption (computational or statistical) is realizable<br />

un<strong>de</strong>r all of the assumptions previously used to construct fully simulatable<br />

oblivious transfer in the plain mo<strong>de</strong>l, such as: smooth projective hashing rerandomizable<br />

cryptosystems, homomorphic cryptosystems, DDH, q-power DDH,<br />

q-strong Diffie-Hellman and Bilinear Diffie-Hellman.<br />

In summary, the main contribution of this paper is to provi<strong>de</strong> a general construction<br />

for fully-simulatable oblivious transfer based on the sole assumption of lossy encryption<br />

and a property enjoyed by many constructions of such cryptosystems. This construction<br />

is realizable un<strong>de</strong>r several well known computation assumptions, including factorization,<br />

discrete logarithm, lattice and coding theory problems. Hence, it unifies all current<br />

constructions of efficient fully simulatable oblivious transfer in the plain mo<strong>de</strong>l.<br />

109


2. Preliminaries<br />

Hereupon, we will <strong>de</strong>note by x ∈ R D an uniformly random choice of element x over its<br />

domain D; by ⊕ a bit-wise exclusive OR of strings; and by a | b the concatenation of<br />

string a with string b. All logarithms are to the base 2. For a PPT machine A, we use<br />

a $ ← A to <strong>de</strong>note running the machine A and obtaining an output, where a is distributed<br />

according to the internal randomness of A.<br />

If X and Y are families of distributions in<strong>de</strong>xed by a security parameter λ, we<br />

use X ≈ s Y to mean the distributions X and Y are statistically close, i.e., for all polynomials<br />

p and sufficiently large λ, we have ∑ x<br />

|P r[X = x] − P r[Y = x]| < 1. Two<br />

sequences X n , n ∈ N and Y n , n ∈ N of random variables are said to be computationally<br />

indistinguishable, <strong>de</strong>noted by X = c Y , if for every non-uniform probabilistic polynomialtime<br />

distinguisher D there exists a negligible function ɛ(·) such that for every n ∈ N,<br />

| P r[D(X n ) = 1] − P r[D(Y n ) = 1] |< ɛ(n).<br />

2.1. Real/I<strong>de</strong>al Mo<strong>de</strong>l Simulation Paradigm<br />

The real/i<strong>de</strong>al mo<strong>de</strong>l paradigm has been extensively used to analyse the security of protocols<br />

un<strong>de</strong>r sequential composition. In this mo<strong>de</strong>l, security is analysed by comparing real<br />

protocol execution with an i<strong>de</strong>al execution. In the i<strong>de</strong>al execution, the parties send their<br />

private inputs to a trusted party that computes the <strong>de</strong>sired functionality through confi<strong>de</strong>ntial<br />

and authenticated channels. After receiving the inputs, the trusted party computes the<br />

function and returns the output assigned to each party. In the real execution, the parties<br />

interact directly through the protocol. Intuitively, if all attacks feasible in the real mo<strong>de</strong>l<br />

are also feasible in the i<strong>de</strong>al mo<strong>de</strong>l, the protocol is consi<strong>de</strong>red secure.<br />

I<strong>de</strong>al Mo<strong>de</strong>l Execution. An i<strong>de</strong>al ( 2<br />

1)<br />

-OT functionality is formally <strong>de</strong>fined as function<br />

f with two inputs and one output. The sen<strong>de</strong>r Alice inputs two bits (b 0 , b 1 ), while the<br />

receiver Bob inputs a bit σ. After the protocol is run, Alice receives no output (<strong>de</strong>noted by<br />

the empty string λ), and Bob receives b σ . This is <strong>de</strong>noted as: f : {0, 1} 2 ×{0, 1} → {0, 1},<br />

such that f((b 0 , b 1 ), σ) = (λ, m σ ).<br />

Consi<strong>de</strong>ring two two parties P a (Alice) and P b (Bob) that have access to a trusted<br />

third party T , the i<strong>de</strong>al oblivious transfer functionality is <strong>de</strong>scribed bellow.<br />

I<strong>de</strong>al OT Execution<br />

Input generation. Party P a is activating upon receiving a pair (b 0 , b 1 ) ∈ {0, 1} 2<br />

and party P b is activated upon receiving a bit σ.<br />

Transmission of inputs to T . An honest participant sends its unaltered output to<br />

the trusted party T . A malicious participant may abort (sending ⊥ to T ) or send any other<br />

input to T .<br />

Output computation by T . If the functionality T receives ⊥ from any of the<br />

parties, then it sends ⊥ to both parties and halts. Else, upon receiving (b ′ 0, b ′ 1) from P a<br />

and σ ′ from P b , T sends b ′ σ ′ to party P b and halts.<br />

Outputs. An honest party always outputs the message as received from T (⊥ or<br />

nothing in the case of P a , and ⊥ or b ′ σ ′ in the case of P b. A corrupted party can output an<br />

arbitrary PPT function of its initial input and the message obtained from the trusted party.<br />

110


Let f an i<strong>de</strong>al oblivious transfer functionality and let B = (B 1 , B 2 ) <strong>de</strong>note<br />

an admissible pair (i.e. at least one of the parties is honest) of non-uniform probabilistic<br />

expected polynomial-time machines (representing parties in the i<strong>de</strong>al mo<strong>de</strong>l).<br />

The joint execution of f un<strong>de</strong>r B in the i<strong>de</strong>al mo<strong>de</strong>l on inputs ((b 0 , b 1 ), σ), <strong>de</strong>noted by<br />

IDEAL f,B ((b 0 , b 1 ), σ), is <strong>de</strong>fined as the resulting output pair and protocol transcript obtained<br />

by B 1 and B 2 after the i<strong>de</strong>al execution.<br />

Real Mo<strong>de</strong>l Execution. for this execution, no trusted party is available and the parties<br />

interact directly. A corrupted party may adopt any arbitrary strategy implementable by<br />

non-uniform PPT machines. Let π <strong>de</strong>note a two-party protocol and let A = (A 1 , A 2 )<br />

<strong>de</strong>note a pair of non-uniform PPT machines (representing parties in the real mo<strong>de</strong>l).<br />

The joint execution of π un<strong>de</strong>r A in the real mo<strong>de</strong>l on inputs ((b 0 , b 1 ), σ), <strong>de</strong>noted by<br />

REAL π,A ((b 0 , b 1 ), σ), is <strong>de</strong>fined as the resulting output pair and protocol transcript obtained<br />

by A 1 and A 2 after the protocol execution.<br />

Adversarial Mo<strong>de</strong>l. In this paper, we consi<strong>de</strong>r the malicious adversarial mo<strong>de</strong>l, where<br />

a dishonest party may arbitrarily disrupt the protocol execution (for instance, a malicious<br />

party is allowed to <strong>de</strong>viate from the protocol). Additionally, we assume the static corruption<br />

mo<strong>de</strong>l, where parties have fixed a behavior throughout protocol execution.<br />

Enlightened by the previous <strong>de</strong>finitions, we can now formalize the notion of securely<br />

implementing an OT protocol in the simulation-based paradigm.<br />

Definition 1. Consi<strong>de</strong>r an i<strong>de</strong>al OT functionality f and a two-party protocol π in the real<br />

mo<strong>de</strong>l. The protocol π is said to securely implement an OT protocol if for every pair of<br />

admissible non-uniform PPT machines A = (A 1 , A 2 ) for the real mo<strong>de</strong>l, there exists<br />

a pair of admissible non-uniform probabilistic expected polynomial-time machines B =<br />

(B 1 , B 2 ) for the i<strong>de</strong>al mo<strong>de</strong>l, such that for every b 0 , b 1 ∈ {0, 1} and every σ ∈ {0, 1},<br />

{<br />

}<br />

IDEAL f,B (n, (b 0 , b 1 ), σ) ≡ c REAL π,A (n, (b 0 , b 1 ), σ)<br />

In or<strong>de</strong>r to achieve constant-round protocols it is necessary to allow the i<strong>de</strong>al adversary<br />

and simulators to run in expected polynomial time [Barak and Lin<strong>de</strong>ll 2004].<br />

3. Lossy Encryption<br />

Lossy encryption [Hemenway et al. 2009, Bellare et al. 2009] expands on the <strong>de</strong>finition<br />

of Dual Mo<strong>de</strong> Encryption [Peikert et al. 2008], a type of cryptosystem with two types of<br />

public keys, which specify two mo<strong>de</strong>s of operation: a messy mo<strong>de</strong> and a <strong>de</strong>cryption mo<strong>de</strong>.<br />

In the <strong>de</strong>cryption mo<strong>de</strong>, the cryptosystem behaves normally and it is possible to <strong>de</strong>crypt a<br />

message encrypted with a given public key using the corresponding secret key. However,<br />

in the messy mo<strong>de</strong>, the encrypted information is statistically lost.<br />

A lossy cryptosystem is <strong>de</strong>fined as a type of cryptosystem with two types of public<br />

keys, injective and lossy keys, which specify different results of encryption. If injective<br />

keys are used, the cryptosystem behaves regularly (correctly <strong>de</strong>crypting ciphertexts with<br />

the right secret key) while in the lossy mo<strong>de</strong>, the ciphertexts generated by the encryption<br />

algorithm are in<strong>de</strong>pen<strong>de</strong>nt from the plaintext messages,causing information to be statistically<br />

lost. It is also required that lossy keys are indistinguishable from injective keys by<br />

efficient adversaries.<br />

111


It has been shown that it is possible to obtain lossy cryptosystems from oblivious<br />

transfer, re-randomization and smooth projective hashing [Hemenway et al. 2009]. Thus,<br />

our construction of fully simulatable oblivious transfer based on lossy encryption proves<br />

that oblivious transfer and lossy encryption are equivalent.<br />

We now present a formal <strong>de</strong>finition of Lossy Encryption similar to the <strong>de</strong>finition<br />

given in [Hemenway et al. 2009]:<br />

Definition 2. A lossy public-key encryption scheme is a tuple (G, E, D) of efficient algorithms<br />

such that<br />

• G(1 λ , inj) outputs keys (pk inj , sk inj ), keys generated by G(1 λ , inj) are called injective<br />

keys.<br />

• G(1 λ , lossy) outputs keys (pk lossy , sk lossy ), keys generated by G(1 λ , lossy) are called<br />

lossy keys.<br />

E(pk, m) is an encryption algorithm that takes as input a public key and a plain-text<br />

message, outputting a ciphertext.<br />

D(sk, c) is a <strong>de</strong>cryption algorithm that takes as input a secret key and ciphertext, outputting<br />

a plain-text message.<br />

Additionally, the algorithms must satisfy the following properties:<br />

• Correctness on injective keys. For all plaintexts x ∈ X,<br />

[<br />

]<br />

P r (pk inj , sk inj ) ← $ G(1 λ , inj); r ← $ coins(E) : D(sk inj , E(pk inj , x, r)) = x = 1<br />

• Indistinguishability of keys. In lossy mo<strong>de</strong>, public keys are computationally indistinguishable<br />

from those in the injective mo<strong>de</strong> given no previous information.<br />

Specifically, if proj : (pk, sk) → pk is the projection map, then<br />

{<br />

proj(G(1 λ , inj)) } c<br />

≈<br />

{<br />

proj(G(1 λ , lossy)) }<br />

• Lossiness of lossy keys. If (pk lossy , sk lossy ) ← $ G(1 λ , lossy) , then for all x 0 , x 1 ∈<br />

X, the statistical distance between the distributions E(pk lossy , x 0 , R) and E(pk lossy , x 1 , R)<br />

is negligible in λ.<br />

• Openability. If(pk lossy , sk lossy $<br />

) ← G(1 λ $<br />

, lossy), and r ← coins(E) , then for<br />

all x 0 , x 1 ∈ X with overwhelming probability, there exists r ′ ∈ coins(E) such<br />

that E(pk lossy , x 0 , r) = E(pk lossy , x 1 , r ′ ). In other words, there is an (unboun<strong>de</strong>d)<br />

algorithm opener that can open a lossy ciphertext to any arbitrary plaintext with<br />

all but negligible probability.<br />

Additionally, we require that there exists an efficient algorithm that distinguishes<br />

between lossy and injective public keys given the corresponding secret key. Such algorithm<br />

is formally <strong>de</strong>noted as:<br />

• KD(sk, pk) is a PPT algorithm that receives as input a key pair (sk, pk) and outputs<br />

0 if the public key is lossy. Otherwise, it outputs 1.<br />

This property is valid for many flavors of lossy encryption such as the general constructions<br />

based on re-randomization and smooth projective hashing [Hemenway et al. 2009].<br />

112


However, for the sake of brevity, we will give formal proof only for the re-randomization<br />

based construction, which is realized by many un<strong>de</strong>rlying computational assumptions.<br />

The algorithm for the smooth projective hashing based construction follows trivially from<br />

the fact that the key generation algorithm outputs an empty secret key if a lossy public<br />

key is generated.<br />

3.1. Computationally Lossy Encryption<br />

In the present work, we also consi<strong>de</strong>r a variation of common statistically lossy encryption<br />

which we call computationally lossy encryption. In a computationally lossy cryptosystem,<br />

the distribution of ciphertexts generated un<strong>de</strong>r a lossy key is computationally<br />

indistiguishable from the uniform distribution of ciphertexts (i.e. information is lost only<br />

computationally). Such cryptosystems preserve all properties of statistically lossy cryptosystems<br />

but the lossiness of key, which in this case is computational:<br />

• Lossiness of lossy keys. If (pk lossy , sk lossy ) $ ← G(1 λ , lossy) , then for all x 0 , x 1 ∈<br />

X, the distributions E(pk lossy , x 0 , R) and E(pk lossy , x 1 , R) are computationally indistinguishable<br />

in λ.<br />

Computationally lossy encryption is interesting since it yields an OT protocol with<br />

computational security for both parties, a fact that has been previously observed only in<br />

[Dowsley et al. 2008], which is not secure un<strong>de</strong>r sequential composition. Furthermore,<br />

such a construction may be realized un<strong>de</strong>r a broa<strong>de</strong>r number of assumptions than statistically<br />

lossy encryption allows. For example, it can be trivially obtained un<strong>de</strong>r the McEliece<br />

assumptions using the techniques in [Dowsley et al. 2008] and [Hemenway et al. 2009].<br />

Perhaps the re-randomization techniques in [David et al. 2010] can also be applied to obtain<br />

a similar primitive.<br />

3.2. A construction based on Re-Randomization<br />

We now recall a construction of a IND-CPA secure statistically (resp. computationally)<br />

lossy cryptosystem from a statistically (resp. computationally) re-randomizable cryptosystem<br />

which is given and proven in [Hemenway et al. 2009]. Furthermore, we show<br />

that it is possible to construct a public key distinguishing algorithm for this construction.<br />

A cryptosystem is called statistically (resp. computationally) re-randomizable if,<br />

given a ciphertext c and a public key, it is possible to re-randomize c obtaining a new valid<br />

chipertext c ′ which encrypts the same plain-text message while being statistically (resp.<br />

computationally) indistinguishable from the original c. Although different <strong>de</strong>finitions of<br />

re-randomizable cryptosystems exist, we consi<strong>de</strong>r a <strong>de</strong>finition similar to the one given in<br />

[Hemenway et al. 2009].<br />

Notice that it is possible to obtain re-randomizable cryptosystems from homomorphic<br />

cryptosystems, DDH, q-power DDH, q-strong Diffie-Hellman and Bilinear Diffie-<br />

Hellman. Hence, our construction unifies all previous constructions of fully simulatable<br />

oblivious transfer, which are based on these assumptions and also on smooth projective<br />

hashing (that also yields lossy encryption).<br />

Definition 3. Let (Gen, Enc, Dec, ReRand) be a statistically (resp. computationally) rerandomizable<br />

IND-CPA secure public-key cryptosystem, we create statistically (resp. computational)<br />

(G inj , G lossy , E, D) as follows:<br />

113


• Key Generation: G(1 λ , inj) generates a pair (pk, sk) ← Gen(1 λ ). Then G(1 λ , inj)<br />

generates K 0 = Enc(pk, 0), K 1 = Enc(pk, 1). G(1 λ , inj) returns (pk, sk) =<br />

((pk, K 0 , K 1 ), sk).<br />

G(1 λ , lossy) runs Gen(1 λ ), generating a pair (pk, sk). Then, it generates K 0 =<br />

Enc(pk, 0), K 1 = Enc(pk, 0). G(1 λ , lossy) returns (pk, sk) = ((pk, K 0 , K 1 ), sk).<br />

• Encryption: E(pk, b) = ReRand(pk, K b ) for b ∈ {0, 1}<br />

• Decryption: D(sk, c), simply outputs Dec(sk, c).<br />

An algorithm that distinguishes lossy public keys from injective public keys given<br />

the corresponding secret key can be constructed as follows:<br />

• KD(sk, pk): First computes test ciphertext c = E(pk, 1). Then output whatever<br />

D(sk, c) outputs.<br />

It is clear that, if the public key pk is injective, this algorithm will output 1, which<br />

is the information encrypted into the ciphertext. Otherwise, if the public key is lossy, this<br />

algorithm will output 0, since the ciphertext generated by E is always an encryption of 0<br />

if the public key pk is lossy. Thus, the proposed algorithm KD successfully distinguishes<br />

lossy and injective public keys given the corresponding secret key.<br />

4. The Protocol<br />

The protocol introduced in this section was inspired by the fully simulatable protocol<br />

for Oblivious Transfer un<strong>de</strong>r the DDH assumptions presented in [Lin<strong>de</strong>ll 2008]. In this<br />

protocol, the sen<strong>de</strong>r (Alice) inputs a pair of bits b 0 , b 1 and the receiver (Bob) inputs a<br />

choice bit σ, Bob receives the bit b σ and Alice receives nothing (⊥). In the end of the<br />

protocol Bob must not have learnt anything about the other bit b 1−σ and Alice must not<br />

have learnt anything about Bob’s choice bit σ.<br />

Apart from the IND-CPA secure lossy cryptosystem (Gen, Enc, Dec), we also assume<br />

the existence of a perfectly hiding commitment scheme Com h and a perfectly binding<br />

commitment scheme Com b . Notice that such commitments can be obtained from the<br />

DDH assumptions (and its variations). Moreover, the smooth projective hashing and homomorphic<br />

encryption based constructions also rely on such commitment schemes. Thus,<br />

our construction unifies the previous fully simulatable oblivious transfer protocols based<br />

on such assumptions.<br />

The protocol is secure against static malicious adversaries, in other words, the parties<br />

may <strong>de</strong>viate from the protocol but must have their behavior fixed before the execution<br />

begins, behaving maliciously or honestly during the whole execution.<br />

1. For i = 1, . . . , l, the receiver Bob chooses a random bit σ i ∈ R {0, 1} and runs<br />

G(1 n , inj), obtaining l injective key pairs (pk inj<br />

i , sk inj<br />

i ). It also runs G(1 n , lossy),<br />

obtaining l lossy key pairs (pk lossy<br />

i , sk lossy<br />

i ).For each bit σ i , Bob generates a pair<br />

of public keys (γ σ i<br />

i , γ 1−σ i<br />

i ) such that γ σ i<br />

i = pk inj<br />

i and γ 1−σ i<br />

i = pk lossy<br />

i . Bob sends<br />

all of the pairs 〈(γ1, 0 γ1), 1 . . . , (γl 0, γ1 l )〉 to Alice.<br />

2. Coin tossing:<br />

(a) Alice chooses a random s ∈ R {0, 1} l and sends Com h (s) to Bob.<br />

(b) Bob chooses a random s ′ ∈ R {0, 1} l and sends Com b (s ′ ) to Bob.<br />

(c) Alice and Bob send <strong>de</strong>commitments to Com h (s) and Com b (s ′ ) respectively,<br />

and set r = s ⊕ s ′ . Denote r = r 1 , . . . , r l .<br />

114


3. For every i for which r i = 1, Bob sends (sk inj<br />

i , sk lossy<br />

i ) to Alice. In addition, for<br />

every j for which r j = 0, Bob sends a ”reor<strong>de</strong>ring” of γj 0 and γj 1 such that, in the<br />

resulting tuples (γj 0 , γj 1 ), γj<br />

σ is an injective public key and γ 1−σ<br />

j is a lossy public<br />

key. This reor<strong>de</strong>ring is a bit such that if it equals 0 then the tuples are left as is,<br />

and if it equals 1 then γj 0 and γj 1 are interchanged.<br />

4. Alice checks that, for every i for which r i = 1 it received a valid secret key pair<br />

(sk inj<br />

i , sk lossy<br />

i ), such that exactly one of the corresponding public keys is injective<br />

and exactly one is lossy. Furthermore, it checks that exactly one of the public keys<br />

(γi 0 , γi 1 ) received is injective and exactly one of the public keys is lossy by running<br />

KD(sk inj<br />

i , γi 0 ) and KD(sk inj<br />

i , γi 1 ). If any of the checks fail, Alcie halts and outputs<br />

⊥. Otherwise it proceeds to the next step.<br />

5. For each j for which r j = 0 <strong>de</strong>note each (γ 0 j , γ 1 j ) as (Υ 0 n, Υ 1 n) for n = 1, . . . , l ′ ,<br />

where l ′ is the total number of j for which r j = 0. Employing a reduction given in<br />

[Damgård et al. 1999], Alice chooses n random bits b 0,1 , . . . , b 0,n and n random<br />

bits b 1,1 , . . . , b 1,n such that b 0 = b 0,1 ⊕ . . . ⊕ b 0,n and b 1 = b 1,1 ⊕ . . . ⊕ b 1,n .<br />

For each pair of bits b 0,n , b 1,n and each (Υ 0 n, Υ 1 n) Alice computes a random bit<br />

µ n ∈ R {0, 1} and the encryption of b •,n ⊕ µ n for each bit in the pair, obtaining<br />

ˆb0,n = E(Υ 0 n, b 0,n ⊕ µ n ) and ˆb 1,n = E(Υ 1 n, b 1,n ⊕ µ n ). Alice sends the bits µ n and<br />

the pairs (ˆb 0 n, ˆb 1 n) to Bob.<br />

6. For each pair of bit ˆb σ,n and bit µ n Bob computes b σ,n = D(sk inj<br />

n , ˆb σ,n ) ⊕ µ n .<br />

Finally, bob computes b σ = b σ,1 ⊕ . . . ⊕ b σ,n , obtaining b σ .<br />

Correctness: Before proceeding to the proof of security, we show that the protocol<br />

above is correct, in the sense that, if both Alice and bob are honest, the correct<br />

output is obtained. First, observe that in the reor<strong>de</strong>red pairs obtained after the coin tossing,<br />

Υ σ n is an injective key, enabling an honest Bob to extract a bit encrypted with it<br />

are lossy, which makes it im-<br />

Also, since<br />

ˆbσ,n = E(Υ σ n, b σ,n ⊕ µ n ) for a random value of µ n , Bob is not able to obtain the original<br />

value of b σ,n without first obtaining the corresponding µ n .<br />

(i.e., b = D(skn<br />

inj , E(Υ σ n, b))). However, the keys Υ 1−σ<br />

n<br />

possible for Bob to obtain the value of a bit encrypted with those keys.<br />

Given that Alice and Bob are honest, it is possible for Bob to obtain the bit b σ<br />

since, based on the facts stated above, it is possible to obtain the value of each bit b σ,n<br />

computing b σ,n = D(skn<br />

inj , ˆb σ,n )⊕µ n after receiving the correct values of µ n and ˆb σ,n from<br />

Alice. In or<strong>de</strong>r to obtain the original bit b σ , Bob employs the reduction given and proven<br />

in [Damgård et al. 1999] computing b σ = ⊕ n i=1b σ,i , correctly yielding: b σ = (b σ,1 ⊕ µ 1 ) ⊕<br />

. . . ⊕ (b σ,n ⊕ µ n ).<br />

Notice that, if statistically lossy encryption is employed, the resulting protocol<br />

offers statistical security for the sen<strong>de</strong>r, since the ciphertexts ˆb 1−σ,n statistically loose<br />

information about the bits corresponding to ˆb 1−σ . On the other hand, if computationally<br />

lossy encryption is employed, the resulting protocol offers computational security for<br />

the sen<strong>de</strong>r, since the ciphertexts ˆb 1−σ,n computationally loose information about the bits<br />

corresponding to ˆb 1−σ . The security for the receiver is computational in both cases, since<br />

it relies on the computational indistinguishability of lossy and injective keys.<br />

115


4.1. Simulator for the case Alice (sen<strong>de</strong>r) is corrupted<br />

In or<strong>de</strong>r to prove the security of the proposed protocol we adapt the simulators given in<br />

[Lin<strong>de</strong>ll 2008] for the case where the sen<strong>de</strong>r is corrupted and the case the receiver is corrupted.<br />

Notice that the resulting simulators have the same running time of the simulators<br />

in [Lin<strong>de</strong>ll 2008], since the steps involved are essentially the same. Let A 1 be a nonuniform<br />

probabilistic polynomial-time real adversary that controls Alice. We construct a<br />

non-uniform probabilistic expected polynomial-time i<strong>de</strong>al-mo<strong>de</strong>l adversary/simulator S 1 .<br />

S 1 uses rewinding in or<strong>de</strong>r to ensure that all of the ”checked” public key pairs are valid<br />

(i.e.,exactly one of them is lossy), whereas both keys contained in the ”unchecked” public<br />

key pairs are injective. This enables it to obtain both messages input by A 1 into the<br />

protocol. S 1 then sends these inputs to the trusted party, and the honest party Bob in the<br />

i<strong>de</strong>al mo<strong>de</strong>l will receive the same message that it would have received in a real execution<br />

with A 1 (or more accurately, a message that is computationally indistinguishable from<br />

that message).<br />

We now <strong>de</strong>scribe S 1 formally. Upon input 1 n and (b 0 , b 1 ), the machine S 1 invokes<br />

A 1 upon the same input and works as follows:<br />

1. S 1 chooses a random r ∈ R 0, 1 l and generates public key pairs (γ1, 0 γ1), 1 . . . , (γl 0, γ1 l )<br />

with the following property:<br />

(a) For every i for which r i = 1, S 1 constructs (γi 0 and γi 1 ) like an honest Bob.<br />

It runs G(1 n , inj), obtaining l injective key pairs (pk inj<br />

i , sk inj<br />

i ). It also runs<br />

G(1 n , lossy), obtaining l lossy key pairs (pk lossy<br />

i , sk lossy<br />

i ). S 1 generates a<br />

pair of public key (γ σ i<br />

i , γ 1−σ i<br />

i ) such that γ σ i<br />

i = pk inj<br />

i and γ 1−σ i<br />

i = pk lossy<br />

i ,<br />

for random bits σ i ∈ R {0, 1}.<br />

(b) For every j for which r j = 0, S 1 constructs (γj 0 , γj 1 ) such that both γj 0 and<br />

γj 1 are injective keys.<br />

S 1 hands the public key pairs to A 1 .<br />

2. Simulation of the coin tossing: S 1 simulates the coin tossing so that the result is<br />

r, as follows:<br />

(a) S 1 receives a commitment c h from A 1 .<br />

(b) S 1 chooses a random s ′ ∈ R {0, 1} l and hands c b = Com h (s ′ ) to A 1 .<br />

(c) If A 1 does not send a valid <strong>de</strong>commitment to c h , then S 1 simulates Bob<br />

aborting and sends ⊥ to the trusted party. Then S 1 outputs whatever A 1<br />

outputs and halts. Otherwise, let s be the <strong>de</strong>committed value. S 1 proceeds<br />

as follows:<br />

i. S 1 sets s ′ = r ⊕ s, rewinds A 1 , and hands it Com b (s ′ ).<br />

ii. If A 1 <strong>de</strong>commits to s, then S 1 proceeds to the next step. If A 1<br />

<strong>de</strong>commits to a value ˜s ≠ s, then S 1 outputs fail. Otherwise, if it<br />

does not <strong>de</strong>commit to any value, S 1 returns to the previous step and<br />

tries again until A 1 does <strong>de</strong>commit to s. (We stress that in every<br />

attempt, S 1 hands A 1 a commitment to the same value s ′ . However,<br />

the randomness used to generate the commitment Com b (s ′ ) is<br />

in<strong>de</strong>pen<strong>de</strong>nt each time.) 1<br />

1 Similarly to the DDH based protocol of [Lin<strong>de</strong>ll 2008], this strategy by S 1 does not actually guarantees<br />

that it runs in expected polynomial-time. Fortunately this issue is solved in [Lin<strong>de</strong>ll 2008] and we refer the<br />

rea<strong>de</strong>r to that work for <strong>de</strong>tailed information.<br />

116


3. Upon receiving a valid <strong>de</strong>commitment to s from A 1 , simulator S 1 <strong>de</strong>commits to<br />

A 1 , revealing s ′ . (Note that r = s ⊕ s ′ .)<br />

4. For every i for which r i = 1, simulator S 1 hands A 1 the secret key pairs (sk inj<br />

i<br />

, sk lossy<br />

i )<br />

correspon<strong>de</strong>nt to the public keys (γ 0 i , γ 1 i ). In addition, S 1 hands A 1 a random reor<strong>de</strong>ring<br />

of the pairs (γ 0 j , γ 1 j ) for every j for which r j = 0.<br />

5. If A 1 does not reply with a valid message, then S 1 sends ⊥ to the trusted party,<br />

outputs whatever A 1 outputs and halts. Otherwise, it receives the bits µ n and a<br />

series of pairs (ˆb 0 n, ˆb 1 n). S 1 then follows the instructions of Bob for obtaining both<br />

b 0 and b 1 . Unlike an honest Bob, it <strong>de</strong>crypts both ˆb 0 n and ˆb 1 n with the injective secret<br />

keys corresponding to (Υ 0 n, Υ 1 n), obtaining a series of pairs (b 0,n , b 1,n ). It then<br />

computes b 0 = (b 0,1 ⊕µ 1 )⊕. . .⊕(b 0,n ⊕µ n ) and b 1 = (b 1,1 ⊕µ 1 )⊕. . .⊕(b 1,n ⊕µ n ).<br />

S 1 sends the pair (b 0 , b 1 ) to the trusted party as the first party’s input, outputs<br />

whatever A 1 outputs and halts.<br />

Theorem 4. The joint output distribution of S 1 and an honest Bob in an i<strong>de</strong>al execution is<br />

computationally indistinguishable from the output distribution of A 1 and an honest Bob<br />

in a real execution.<br />

Proof. In or<strong>de</strong>r to prove this theorem we adapt the proof given in [Lin<strong>de</strong>ll 2008]. Notice<br />

that the view of A 1 in the simulation with S 1 is indistinguishable from its view in a real<br />

execution. The sole difference in this view is due to the fact that the public keys γ 0 j and<br />

γ 1 j for which r j = 0 are both injective public keys.<br />

The only other difference would be in the coin tossing phase (and the rewinding).<br />

However, since the commitment sent by A 1 is binding and since Bob generates its commitment<br />

after receiving A 1 ’s commitment, it is clear that the result of the coin tossing in<br />

a real execution and in the simulation with S 1 are statistically close to uniform (where the<br />

only difference is due to the negligible probability that A 1 will break the computational<br />

binding property of the commitment scheme.) In the simulation by S 1 , the outcome is<br />

always uniformly distributed, assuming that S 1 does not output fail. Since S 1 outputs fail<br />

when A 1 breaks the computational binding of the commitment scheme, this occurs with at<br />

most negligible probability (a rigorous analysis is given in [Goldreich and Kahan 1996]).<br />

Thus, the joint distribution of the coin tossing results in a real execution and in the simulation<br />

with S 1 are statistically close.<br />

Therefore, the only remaining difference lies in the generation of public keys γ 0 j<br />

and γ 1 j . Indistinguishability follows intuitively from the <strong>de</strong>finition of lossy encryption<br />

(i.e. lossy public keys are computationally indistinguishable from injective public keys).<br />

This is formally proven by constructing a machine D that distinguishes many injective<br />

keys from many lossy keys, which implies in breaking the lossy key indistinguishability<br />

property of the lossy cryptosystem. D receives a set of public keys and runs in exactly<br />

the same way as S 1 but constructs the γ 0 j and γ 1 j public keys (for which r j = 0) in such a<br />

way that one is injective and the other is from its input, in random or<strong>de</strong>r. Furthermore, it<br />

provi<strong>de</strong>s the reor<strong>de</strong>ring so that all of the injective keys it generates are associated with σ<br />

and all of the ones it receives externally are associated with 1 − σ (we assume that D is<br />

given the input σ of Bob). Note that, if D receives a set of injective keys, then the view<br />

of A 1 is exactly the same as in the simulation with S 1 (because all the keys are injective).<br />

Otherwise, if D receives a set of lossy keys, then the view of A 1 is exactly the same as<br />

in a real execution (because only the keys associated with σ are injective). This shows<br />

117


that the output of A 1 in a real execution and the output of S 1 in an i<strong>de</strong>al execution are<br />

indistinguishable (recall that S 1 outputs whatever A 1 outputs).<br />

However,it is necessary to show this for the joint distribution of the output of A 1<br />

(or S 1 ) and an honest Bob. First, recall that Bob receives m σ as output, where σ is the<br />

honest Bob’s input. Next, assume that there exists a polynomial-time distinguisher D ′<br />

that distinguishes between the real and i<strong>de</strong>al distributions with non-negligible probability.<br />

To complete this proof we construct another distinguisher D that distinguishes injective<br />

keys from lossy keys. D receives Bob’s input σ and a set of keys that are either injective<br />

or lossy. D then works exactly as above (i.e., constructing the public keys γj 0 and γj 1 so<br />

that in the reor<strong>de</strong>ring step, all the γj<br />

σ keys are those it generated itself and all the γ 1−σ<br />

j<br />

tuples are those it received as input). D is able to <strong>de</strong>crypt each ˆb σ,n and obtain m σ , since<br />

it generated all of the γj σ keys. Machine D then does this, and runs D ′ on the output of A 1<br />

and the message m σ (which is the output that an honest Bob would receive). Finally, D<br />

outputs whatever D ′ does. If D receives lossy keys, then the output distribution generated<br />

is exactly the same of a real execution between A 1 and Bob. On the contrary, if it receives<br />

injective keys, the output distribution is exactly the same of an i<strong>de</strong>al execution with S 1 .<br />

(Notice that the distribution over the γ public keys generated by D with knowledge of σ is<br />

i<strong>de</strong>ntical to the distribution generated by S 1 without knowledge of σ. The reason for this<br />

is that when all the keys are injective, their or<strong>de</strong>ring makes no difference.) We conclu<strong>de</strong><br />

that D distinguishes lossy and injective public keys with non-negligible probability, in<br />

contradiction to the <strong>de</strong>finition of lossy encryption. Thus, the REAL and IDEAL output<br />

distributions are computationally indistinguishable.<br />

The last step is to prove that S 1 runs in expected polynomial-time. However, as in<br />

the protocols given in [Lin<strong>de</strong>ll 2008] this is not true. Fortunately, this can be fixed by a direct<br />

application of the techniques proposed in [Lin<strong>de</strong>ll 2008] and [Goldreich and Kahan 1996],<br />

and we refer the rea<strong>de</strong>r to these works for a <strong>de</strong>tailed analysis. It is shown that these<br />

techniques yield a simulator that is guaranteed to run in expected polynomial time. Furthermore,<br />

the output of the simulator is only negligibly far from the original (simplified)<br />

strategy <strong>de</strong>scribed in this work. Thus, after applying these techniques, our simulator runs<br />

in expected polynomial time, with the result being that the output in a simulation is only<br />

negligibly different from the output in a real execution.<br />

4.2. Simulator for the case Bob (receiver) is corrupted<br />

Once again we base our simulator and proof on the techniques proposed in [Lin<strong>de</strong>ll 2008].<br />

Let A 2 be any non-uniform probabilistic polynomial-time adversary controlling Bob, we<br />

construct a non-uniform probabilistic expected polynomial-time simulator S 2 . The simulator<br />

S 2 extracts the bit σ used by A 2 by rewinding it and obtaining the reor<strong>de</strong>ring of<br />

public keys that it had previously opened. Formally, upon input 1 n and σ, the simulator<br />

S 2 invokes A 2 upon the same input and works as follows:<br />

1. S 2 receives a series of public key pairs (γ 0 1, γ 1 1), . . . , (γ 0 l , γ1 l ) from A 2.<br />

2. S 2 hands A 2 a commitment c h = Com h (s) to a random s ∈ R {0, 1} l , receives<br />

back c b , <strong>de</strong>commits to c h and receives A 2 ’s <strong>de</strong>commitment to c b . S 2 then receives<br />

all of the sk i keys from A 2 , for i where r i = 1, and the reor<strong>de</strong>rings for j where<br />

r j = 0. If the pairs (γ 0 i , γ 1 i ) sent by A 2 are not valid (as checked by Alice in the<br />

118


protocol) or A 2 did not send valid <strong>de</strong>commitments, S 2 sends ⊥ to the trusted party,<br />

outputs whatever A 2 outputs, and halts. Otherwise, it continues to the next step.<br />

3. S 2 rewinds A 2 back to the beginning of the coin-tossing, hands A 2 a commitment<br />

˜c h = Com h (˜s) to a fresh random ˜s ∈ R {0, 1} l , receives back some ˜c b , <strong>de</strong>commits<br />

to ˜c h and receives A 2 ’s <strong>de</strong>commitment to ˜c b . In addition, S 2 receives the<br />

(sk inj<br />

i , sk lossy<br />

i ) secret key pairs and reor<strong>de</strong>rings. If any of the pairs (γi 0 , γi 1 ) are<br />

not valid, S 2 repeats this step using fresh randomness each time, until all pairs are<br />

valid.<br />

4. Following this, S 2 rewinds A 2 to the beginning and resends the exact messages of<br />

the first coin tossing (resulting in exactly the same transcript as before).<br />

5. Denote by r the result of the first coin tossing (Step 2 above), and ˜r the result of<br />

the second coin tossing (Step 3 above). If r = ˜r then S 2 outputs fail and halts.<br />

Otherwise, S 2 searches for a value t such that r t = 0 and ˜r t = 1. (Note that by the<br />

<strong>de</strong>finition of the simulation, exactly one of γt 0 and γt 1 is injective. Otherwise, the<br />

values would not be consi<strong>de</strong>red valid.) If no such t exists (i.e., for every t such that<br />

r t ≠ ˜r t it holds that r t = 1 and ˜r t = 0),then S 2 begins the simulation from scratch<br />

with the exception that it must find r and ˜r for which all values are valid (i.e., if<br />

for r the values sent by A 2 are not valid it does not terminate the simulation but<br />

rather rewinds until it finds an r for which the responses of A 2 are all valid).<br />

If S 2 does not start again, we have that it has sk t and can <strong>de</strong>termine which of (γt<br />

0<br />

and γt 1 is injective. Furthermore, since ˜r t = 1, the reor<strong>de</strong>ring that S 2 receives from<br />

A 2 after the coin tossing indicates whether the public key pair is associated with 0<br />

(if γt 0 is injective) or 1 (if γt 1 is injective) . S 2 sets σ = 0 if after the reor<strong>de</strong>ring γt<br />

0<br />

is injective, and sets σ = 1 if after the reor<strong>de</strong>ring γt 1 is injective. (Note that exactly<br />

one of the keys is injective because this is checked in the second coin tossing.)<br />

6. S 2 sends σ to the trusted party and receives back a bit b = b ′ σ. Simulator S 2 then<br />

computes the last message from Alice to Bob honestly, setting b σ = b, b 1−σ ∈ R<br />

{0, 1} and running the instruction used by an honest Alice to compute the last<br />

message. S 2 hands A 2 these messages and outputs whatever A 2 outputs and halts.<br />

Theorem 5. The output distribution of A 2 in a real execution with an honest Alice (with<br />

input (m 0 , m 1 )) is computationally indistinguishable from the output distribution of S 2 in<br />

an i<strong>de</strong>al execution with an honest Alice (with the same input (m 0 , m 1 ))<br />

Proof. First, notice that S 2 outputs fail with probability at most 2 1−l even if r = ˜r in<br />

later rewindings, which may occur if S 2 has to start again from scratch. A <strong>de</strong>tailed analysis<br />

of this probability is given in [Lin<strong>de</strong>ll 2008]. Given this fact, we proceed to show<br />

indistinguishability of the i<strong>de</strong>al and real executions adapting the proof of [Lin<strong>de</strong>ll 2008].<br />

Notice that, if S 2 does not output fail, A 2 views a final transcript consisting of the<br />

first coin tossing (that is distributed exactly as in a real execution) and the last message<br />

from S 2 to A 2 . This message is not honestly generated, since c σ is in<strong>de</strong>ed an encryption<br />

of m σ , but c 1−σ is actually an encryption of an arbitrary value (which is not necessarily of<br />

m 1−σ ). However, it follows from the <strong>de</strong>finition of lossy encryption (specifically from the<br />

lossiness property) that, for any lossy public key γ 1−σ<br />

j , the value encrypted in ˆb 1−σ,n is at<br />

least computationally indistinguishable from a random value in the lossy cryptosystem’s<br />

plaintext space. This implies that the distribution of values ˆb 1−σ,n generated un<strong>de</strong>r a lossy<br />

key from a random plaintext value is computationally indistinguishable from the distribution<br />

of values ˆb 1−σ,n generated from the values m 1−σ . Thus, A 2 ’s view in the execution<br />

119


with S 2 is at least computationally indistinguishable from its view in a real execution with<br />

Alice (the only difference being if S 2 outputs fail).<br />

Note that, if statistically lossy encryption is used, the values ˆb 1−σ,n are uniformly<br />

distributed. Thus, A 2 ’s view in the execution with S 2 is statistically close to its view in a<br />

real execution with Alice (the only difference being if S 2 outputs fail).<br />

It remains to prove that S 2 runs in expected polynomial-time, a fact that follows<br />

directly from the analysis in [Lin<strong>de</strong>ll 2008].<br />

5. Conclusion<br />

In this paper we propose a general construction of efficient fully simulatable oblivious<br />

transfer based on lossy encryption. Our construction can be realized from a multitu<strong>de</strong> of<br />

un<strong>de</strong>rlying primitives and computational assumptions such as smooth projective hashing,<br />

re-randomization, factorization, discrete logarithm and coding theory problems. Additionally,<br />

the proposed protocol essentially unifies known efficient fully simulatable OT<br />

protocols in the plain mo<strong>de</strong>l. Furthermore, this protocol completes the proof that several<br />

flavors of lossy encryption are equivalent to fully simulatable oblivious transfer, since the<br />

converse is proved in [Lin<strong>de</strong>ll 2008] for smooth projective hashing and re-randomization<br />

based constructions.<br />

In or<strong>de</strong>r to obtain our results we introduce the primitive of computationally lossy<br />

encryption, which may be of in<strong>de</strong>pen<strong>de</strong>nt interest to other applications. In this case,<br />

it can be used to obtain a construction of efficient fully simulatable OT based on the<br />

McEliece assumptions, which can be shown to realize computationally lossy encryption<br />

using the techniques of [Dowsley et al. 2008]. However, this construction would still<br />

be based on the assumption that a perfectly hiding commitment scheme and a perfectly<br />

binding commitment scheme exist.<br />

Apart from unveiling new theoretical relations between cryptographic primitives,<br />

our contributions also provi<strong>de</strong> a general framework for constructing efficient fully simulatable<br />

oblivious transfer protocols, which are a central building block in two- and multiparty<br />

computation. However, we have not yet achieved security in the universal composability<br />

framework. As a future work we suggest the creation a of a general unifying<br />

framework for universally composable oblivious transfer realizable un<strong>de</strong>r the same un<strong>de</strong>rlying<br />

computational assumptions as our fully simulatable construction. Moreover, we<br />

point out further investigation of applications for computationally lossy encryption.<br />

References<br />

Barak, B. and Lin<strong>de</strong>ll, Y. (2004). Strict polynomial-time in simulation and extraction.<br />

SIAM J. Comput., 33(4):738–818.<br />

Bellare, M., Hofheinz, D., and Yilek, S. (2009). Possibility and impossibility results for<br />

encryption and commitment secure un<strong>de</strong>r selective opening. In Proceedings of the<br />

28th Annual International Conference on Advances in Cryptology: the Theory and<br />

Applications of Cryptographic Techniques, EUROCRYPT ’09, pages 1–35, Berlin,<br />

Hei<strong>de</strong>lberg. Springer-Verlag.<br />

120


Camenisch, J., Neven, G., and Shelat, A. (2007). Simulatable adaptive oblivious transfer.<br />

In Naor, M., editor, EUROCRYPT, volume 4515 of Lecture Notes in Computer Science,<br />

pages 573–590. Springer.<br />

Damgård, I., Kilian, J., and Salvail, L. (1999). On the (im)possibility of basing oblivious<br />

transfer and bit commitment on weakened security assumptions. In EUROCRYPT’99:<br />

Proceedings of the 17th international conference on Theory and application of cryptographic<br />

techniques, pages 56–73, Berlin, Hei<strong>de</strong>lberg. Springer-Verlag.<br />

David, B. M., Nascimento, A. C. A., and Nogueira, R. B. (2010). Oblivious transfer based<br />

on the mceliece assumptions with unconditional security for the sen<strong>de</strong>r. In X Simposio<br />

Brasileiro <strong>de</strong> Segurança da Informação e <strong>de</strong> Sistemas Computacionais.<br />

Dowsley, R., van <strong>de</strong> Graaf, J., Müller-Qua<strong>de</strong>, J., and Nascimento, A. C. A. (2008). Oblivious<br />

transfer based on the mceliece assumptions. In Safavi-Naini, R., editor, ICITS,<br />

volume 5155 of Lecture Notes in Computer Science, pages 107–117. Springer.<br />

Goldreich, O. and Kahan, A. (1996). How to construct constant-round zero-knowledge<br />

proof systems for np. Journal of Cryptology, 9:167–189. 10.1007/BF00208001.<br />

Green, M. and Hohenberger, S. (2007). Blind i<strong>de</strong>ntity-based encryption and simulatable<br />

oblivious transfer. In Kurosawa, K., editor, ASIACRYPT, volume 4833 of Lecture Notes<br />

in Computer Science, pages 265–282. Springer.<br />

Hemenway, B., Libert, B., Ostrovsky, R., and Vergnaud, D. (2009). Lossy encryption:<br />

Constructions from general assumptions and efficient selective opening chosen ciphertext<br />

security. Cryptology ePrint Archive, Report 2009/088. http://eprint.<br />

iacr.org/.<br />

Kilian, J. (1988). Founding crytpography on oblivious transfer. In STOC ’88: Proceedings<br />

of the twentieth annual ACM symposium on Theory of computing, pages 20–31, New<br />

York, NY, USA. ACM.<br />

Lin<strong>de</strong>ll, A. Y. (2008). Efficient fully-simulatable oblivious transfer. In Proceedings of<br />

the 2008 The Cryptopgraphers’ Track at the RSA conference on Topics in cryptology,<br />

CT-RSA’08, pages 52–70, Berlin, Hei<strong>de</strong>lberg. Springer-Verlag.<br />

Peikert, C., Vaikuntanathan, V., and Waters, B. (2008). A framework for efficient and<br />

composable oblivious transfer. In Wagner, D., editor, Advances in Cryptology –<br />

CRYPTO 2008, volume 5157 of Lecture Notes in Computer Science, pages 554–571.<br />

Springer Berlin / Hei<strong>de</strong>lberg.<br />

Rabin, M. O. (1981). How to exchange secrets by oblivious transfer. Technical Memo<br />

TR-81, Aiken Computation Laboratory, Harvard University.<br />

121


Syndrome-Fortuna: A viable approach for Linux random<br />

number generation<br />

Sérgio Vale Aguiar Campos 1 , Jeroen van <strong>de</strong> Graaf 1 , Daniel Rezen<strong>de</strong> Silveira 1<br />

1 Departamento <strong>de</strong> Ciência da Computação – Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Minas Gerais (UFMG)<br />

Belo Horizonte (MG) – Brazil<br />

Abstract. This work presents a random number generator based on the intractability<br />

of an NP-Complete problem from the area of error-correcting co<strong>de</strong>s.<br />

It uses a non-heuristic approach for entropy collection, taken from the Fortuna<br />

<strong>de</strong>sign philosophy. We implemented the new generator insi<strong>de</strong> the Linux kernel,<br />

providing an alternative system interface for secure random number generation.<br />

1. Introduction<br />

Random number generators are the basis of several cryptographic systems. Its output must<br />

be unpredictable by potential adversaries and should be produced fast and efficiently. The<br />

most common way to achieve this is by using algorithms to mix and expand the outcome<br />

of entropy sources. These algorithms are called pseudo-random number generators<br />

(PRNGs). The quality of these generators and their applicability to protocols and security<br />

applications have been wi<strong>de</strong>ly studied in recent years.<br />

In this work we present a PRNG based on the Fortuna architecture, proposed by<br />

[Ferguson and Schneier, 2003]. Fortuna presents a new scheme for system events collection,<br />

that does not use any heuristics, avoiding entropy estimation problems. Its mixing<br />

function is the AES algorithm, consi<strong>de</strong>red strong and efficient.<br />

The PRNG we propose, called Syndrome-Fortuna, changes the mixing function of<br />

Fortuna, using the syndrome <strong>de</strong>coding algorithm proposed by [Fischer and Stern, 1996].<br />

We consi<strong>de</strong>r this an improvement, since the syndrome problem is known to be NP-<br />

Complete, and has a formal proof of its strength.<br />

We implemented Syndrome-Fortuna insi<strong>de</strong> the Linux kernel version 2.6.30, providing<br />

an user interface for random numbers besi<strong>de</strong>s /<strong>de</strong>v/urandom. As we expected,<br />

our generator is slower than the original Linux random number generator (LRNG). But it<br />

does not use any entropy estimation heuristics and applies a strong and formally proved<br />

algorithm as its core function.<br />

1.1. Randomness concept<br />

Random number generators emerged, initialy, for use in simulations and numerical analysis.<br />

These applications require efficiency and, especially, uniformity. The cryptography<br />

evolution brought a new requirement on PRNGs. Secure applications nee<strong>de</strong>d secret keys,<br />

generated randomly, to allow users to communicate safely. Since then, unpredictability<br />

has become a fundamental requirement for pseudorandom number generators.<br />

The only way to ensure that a generator seed is non-<strong>de</strong>terministic is by using real<br />

sources of randomness. External sources of randomness collect data from presumably<br />

unpredictable events, such as variations in pressure and temperature, ambient noise, or<br />

122


timing of mouse movements and keystrokes. The concept of unpredictability is related<br />

to human inability to predict certain complex phenomena, given its chaotic or quantum<br />

essence.<br />

Before using the collected randomness, however, it is necessary to estimate it. The<br />

goal is to prevent that the internal state of the generator is updated with values potentially<br />

easy to discover. In 1996 a flaw in the random number generator of Netscape browser<br />

allowed that keys used in SSL connections were discovered in about one minute. The<br />

problem, revealed in the work of [Goldberg and Wagner, 1996], was the use of system<br />

time and the process id as sources of randomness. Even when the browser used session<br />

keys of 128 bits, consi<strong>de</strong>red safe, they possessed no more than 47 bits of randomness,<br />

very little to prevent that opponents using brute force could find the key value.<br />

Entropy estimation is one critical point of random number generators <strong>de</strong>sign, because<br />

their security level is directly related to estimates precision. As we shall see, the<br />

approach of entropy collection proposed by [Ferguson and Schneier, 2003] and adapted<br />

in this work minimizes the problem of possible inaccuracy in the estimation of entropy.<br />

2. Construction of a cryptographically secure random number generator<br />

2.1. One-way functions<br />

Intuitively, a function f is one-way if it is easy to compute but difficult to invert. In other<br />

words, given x, the value f(x) can be computed in polynomial time. But any feasible<br />

algorithm that receives f(x) can generate an output y such that f(y) = f(x) with only<br />

negligible probability.<br />

The existence of one-way functions is not proved. It is known that if P = NP<br />

they certainly do not exist. But it is unclear whether they exist if P ≠ NP . However,<br />

there are several functions that are believed to be unidirectional in practice. One of them<br />

is the SHA-1 hash function, used insi<strong>de</strong> the Linux random number generator. There are<br />

also functions that are conjectured to be unidirectional. Some examples are the subsets<br />

sum problem and the discrete logarithm calculation. These functions belong to the class<br />

NP, and supposing P ≠ NP , and are unidirectional un<strong>de</strong>r some intractability assumption.<br />

The main difference between the two types of one-way functions, besi<strong>de</strong>s the theoretical<br />

basis, is the computational cost. Functions based on intractable mathematical<br />

problems require, in general, a larger amount of calculations per bit generated. As shown<br />

in [Impagliazzo et al., 1989], cryptographically secure pseudorandom number generators<br />

exists if, and only if, one-way functions exists.<br />

In the generator presented in this paper we use the algorithm proposed by<br />

[Fischer and Stern, 1996] as our one-way function. It is based on the syndrome <strong>de</strong>coding<br />

problem, a NP-complete problem from the area of error-correcting co<strong>de</strong>s.<br />

2.2. Syndrome <strong>de</strong>coding problem<br />

In coding theory, coding is used to transmit messages through noisy communication channels,<br />

which can produce errors. Decoding is the process of translating (possibly corrupted)<br />

messages into words belonging to a particular co<strong>de</strong>. A binary linear co<strong>de</strong> is an errorcorrecting<br />

co<strong>de</strong> that uses the symbols 0 and 1, in which each word can be represented as a<br />

linear combination of others, and each word has a weight, ie, a number of 1 bits, <strong>de</strong>fined.<br />

123


A binary linear co<strong>de</strong> (n, k, d) is a subspace of {0, 1} n with 2 k elements in which<br />

every word has weight less than or equal to d. The information rate of the co<strong>de</strong> is k/n<br />

and it can correct up to ⌊ d−1 ⌋ errors. Every co<strong>de</strong> can be <strong>de</strong>fined by a parity matrix of<br />

2<br />

size n × (n − k) which multiplied (mod 2) by a vector of the co<strong>de</strong> x = ( )<br />

x 1 , x 2 , . . . , x n<br />

results in an all zero vector s = ( 0, 0, . . . , 0 ) of size (n−k), called syndrome. Conversely,<br />

when the word multiplied by the parity matrix does not belong to the co<strong>de</strong>, the value of<br />

the syndrome is nonzero.<br />

A randomly filled parity matrix <strong>de</strong>fines a random binary linear co<strong>de</strong>. For this co<strong>de</strong>,<br />

there is no efficient algorithm known that can find the closest word to a vector, given a<br />

nonzero syndrome. Another difficult problem, known as syndrome <strong>de</strong>coding, is to find a<br />

word of certain weight from its syndrome.<br />

The latter problem is NP-Hard and can be <strong>de</strong>scribed as follows: let a binary matrix<br />

A = {a ij } of size n × (n − k), a non-zero syndrome vector s and a positive integer w.<br />

Find a binary vector x with weight |x| ≤ w, such that:<br />

⎛<br />

⎞<br />

a 1,1 a 1,2 · · · a 1,n−k<br />

( ) a 2,1 a 2,2 · · · a 2,n−k<br />

x1 , x 2 , . . . , x n · ⎜<br />

⎝<br />

.<br />

. . .<br />

⎟<br />

. . ⎠ = ( )<br />

s 1 , s 2 , . . . , s n−k<br />

a n,1 a n,2 · · · a n,n−k<br />

(mod 2)<br />

The case in which we seek the vector x with weight |x| = w is NP-complete<br />

[Berlekamp et al., 1978].<br />

The fact that a problem is NP-Complete guarantees that there is no polynomial<br />

time algorithm for solving the worst case, un<strong>de</strong>r the assumption that P ≠ NP . Many<br />

problems, however, can be solved efficiently in the average case, requiring a more <strong>de</strong>tailed<br />

study of each instance of the problem.<br />

2.2.1. Gilbert-Warshamov Bound<br />

To evaluate the hardness of a specific instance of the syndrome <strong>de</strong>coding problem we<br />

will use a concept extensively studied and reviewed by [Chabaud, 1994], un<strong>de</strong>r which the<br />

most difficult instances of the problem of syndrome <strong>de</strong>coding for random co<strong>de</strong>s are those<br />

with weights in the vicinity of the Gilbert-Warshamov bound of the co<strong>de</strong>.<br />

The Gilbert-Warshamov bound λ of a co<strong>de</strong> (n, k, d) is <strong>de</strong>fined through the relation<br />

1 − k/n = H 2 (λ) where H 2 (x) = −x log 2 x − (1 − x) log 2 (1 − x) is the binary entropy<br />

function.<br />

According to the analysis of [Fischer and Stern, 1996], there is, on average, a vector<br />

for each syndrome when the weight is around the Gilbert-Warshamov bound of the<br />

co<strong>de</strong>. That is, the difficulty of finding a word is a function of the weight increasing until<br />

the Gilbert-Warshamov bound, and <strong>de</strong>creasing thereafter. Thus, it is possible to <strong>de</strong>fine<br />

a hard instance of the syndrome <strong>de</strong>coding problem when the weight is near the Gilbert-<br />

Warshamov bound.<br />

124


Figure 1. Gilbert-Warshamov bound, <strong>de</strong>fined by the binary entropy function.<br />

2.2.2. Formal <strong>de</strong>finitions<br />

Definition A function f : {0, 1} ∗ → {0, 1} ∗ is consi<strong>de</strong>red strongly unidirectional if the<br />

following conditions apply:<br />

• Easy to compute: there is a <strong>de</strong>terministic polynomial-time algorithm A such that<br />

for every input x, an output A(x) = f(x) is computed.<br />

• Hard to invert: for all probabilistic polynomial-time algorithm A ′ and every positive<br />

polynomial p(n) large enough,<br />

P r(A ′ (f(X n )) ∈ f −1 (f(X n ))) < 1<br />

p(n)<br />

where x n is random and uniformly distributed over {0, 1} n<br />

Let us consi<strong>de</strong>r a collection of functions related to the problem of <strong>de</strong>coding the<br />

syndrome.<br />

Definition Let ρ be in ]0, 1[ and δ be in ]0, 1/2[. A collection SD(ρ, δ) is a set o functions<br />

f n such that:<br />

D n = {(M, x), M ∈ ⌊ρn⌋ × n, x ∈ {0, 1} n /|x| = δn}<br />

f n : D n → {0, 1} ⌊ρn⌋·(n+1)<br />

(M, x) → (M, M · x)<br />

According to [Fischer and Stern, 1996], instances of the problem with weight δn<br />

very small or close to n/2 are not difficult. The instances of the collection SD with the<br />

weight δ near the Gilbert-Warshamov bound are believed to be unidirectional, although<br />

there is no proof in this sense. Thus we have the following assumption of intractability:<br />

Intractability assumption Let ρ be in ]0, 1[. Then, for all δ in ]0, 1/2[, such that H 2 (δ) <<br />

ρ, the collection SD(ρ, δ) is strongly unidirectional.<br />

125


Note that if H 2 (λ) = ρ and δ < λ , the intractability of SD(ρ, δ) is a special case<br />

2<br />

of <strong>de</strong>coding beyond half the minimum distance. Thus, the assumption becomes stronger<br />

than the usual assumptions for the <strong>de</strong>coding problem [Goldreich et al., 1993].<br />

Cryptographic applications based on the complexity of known problems have been<br />

extensively studied and implemented in the last <strong>de</strong>ca<strong>de</strong>s. Intractability assumptions are a<br />

natural step in building such applications. At the current state of knowledge in complexity<br />

theory, one cannot hope to build such algorithms without any intractability assumptions<br />

[Goldreich, 2001, p. 19].<br />

3. Syndrome-Fortuna<br />

The purpose of this work is to <strong>de</strong>velop a random number generator and implement it<br />

insi<strong>de</strong> the Linux kernel. The generator has its own scheme for entropy collection and the<br />

generating function is based on the intractability of the syndrome <strong>de</strong>coding problem. We<br />

will show that the proposed generator applies good grounds of security and is based on<br />

sound mathematical principles.<br />

The generator was <strong>de</strong>signed with in<strong>de</strong>pen<strong>de</strong>nt functions of entropy collection and<br />

random values generation. Each one will be addressed separetely.<br />

3.1. Fortuna: Entropy collection<br />

[Ferguson and Schneier, 2003] proposed a cryptographically secure random number generator<br />

called Fortuna. The main contribution of Fortuna is the events collection system.<br />

It eliminated the need of entropy estimators, used until then in most of the generators we<br />

are aware of. Entropy estimation is commonly used to ensure that the generator state – or<br />

seed – is catastrophically updated, i.e., with sufficient amount of randomness. This should<br />

prevent potential adversaries who, for some reason, already know the seed, to iterate over<br />

all the possible new states and maintain control over the generator. If the possible new<br />

states are too many, it will not be feasible to try all of them.<br />

3.1.1. Entropy accumulator<br />

The Fortuna entropy accumulator captures data from various sources of entropy and uses<br />

them to update the seed of the generator. Its architecture, as we shall see, keeps the system<br />

secure even if an adversary controls some of the sources.<br />

The captured random events must be uniform and cyclically distributed across n<br />

pools of the generator, as shown in figure 2. This distribution will ensure an even spread<br />

of entropy among pools, which will allow seed updates with successively larger amounts<br />

of randomness.<br />

Each pool can receive, in theory, unlimited random data. To implement this the<br />

data is compressed incrementally, using the SHA 256 hash function, thus maintaining<br />

pools with constant size of 256 bits.<br />

The generator state will be updated when the P 0 pool accumulate sufficient random<br />

data. A variable counter keeps track of how often the seed has been updated. This<br />

counter <strong>de</strong>termines which pools will be used in the next update. A pool P i will be used if,<br />

and only if, 2 i divi<strong>de</strong>s counter.<br />

126


Figure 2. Entropy allocation among n pools. Data is compressed using the SHA<br />

256 hash function.<br />

Counter Used pools<br />

1 P0<br />

2 P0, P1<br />

3 P0<br />

4 P0, P1, P2<br />

5 P0<br />

6 P0, P1<br />

7 P0<br />

8 P0, P1, P2, P3<br />

Table 1. Used pools in the 8 first updates of Fortuna generator<br />

Table 1 shows the update strategy of the generator. As we can see, the higher the<br />

number of the pool, less it is used in the update of the generator and, therefore, the greater<br />

the amount of accumulated entropy. This allows the generator to adapt automatically to<br />

attacks. If the opponents have little control over the sources of randomness, they can not<br />

even predict the state of the pool P 0 , and the generator will recover from a compromised<br />

state quickly, at the next reseed.<br />

However, the opponent may control multiple sources of entropy. In this case he<br />

probably knows a lot about the pool P 0 and could reconstruct the state of the generator<br />

using the previous state and the outputs produced. But when P 1 is used in a reseed, it contains<br />

twice the amount of randomness of P 0 . When P 2 is used, it will contain four times<br />

the amount of randomness of P 0 , and so on. While there are some truly unpredictable<br />

sources, eventually one pool will collect enough randomness to <strong>de</strong>feat the opponents, regardless<br />

of how many fake events they can generate or how many events they know the<br />

system would recover. The speed of recovery will be proportional to the level of opponents<br />

control over the sources.<br />

3.1.2. Initial estimate<br />

The proposed scheme avoids the entropy estimate, as used in Linux. However it is still<br />

necessary to make an initial entropy estimate in or<strong>de</strong>r to <strong>de</strong>termine the minimum number<br />

of events necessary to perform a catastrophic reseed. This estimate is calculated for the<br />

127


pool P 0 and <strong>de</strong>termines when the generator state is updated.<br />

To elaborate such, one should observe some aspects of the system as: the <strong>de</strong>sired<br />

security level; the amount of space occupied by the events and the amount of entropy<br />

present in each event.<br />

[Ferguson and Schneier, 2003] suggest a minimum of 512 bits for P 0 , for a level of<br />

128-bit security. The initial entropy estimation plays an important role on system security,<br />

but is mitigated by the fact that if the chosen value is too low, there will always be reseeds<br />

with higher amounts of entropy. If the chosen value is too high, a possible recovery from<br />

a compromise may take longer, but will inevitably occur.<br />

3.2. Syndrome: Generating function<br />

3.2.1. Construction of the generating function<br />

We built a PRNG based on a hard instance of the syndrome <strong>de</strong>coding problem using<br />

the SD collection of functions (ρ, δ) <strong>de</strong>fined in section 2.2. Initially, we show that the<br />

functions fn<br />

ρ,δ from the collection SD(ρ, δ) expand its inputs, ie, they have image sets<br />

greater than the respective domain sets.<br />

The domain Dn<br />

ρ,δ from fn<br />

ρ,δ consists of a matrix M of size ⌊ρn⌋ × n and of vector<br />

x of size n and weight δn. So the size of the domain set is 2 ⌊ρn⌋·n · ( n<br />

δn)<br />

. Yet, the image<br />

set is formed by the same matrix M of size ⌊ρn⌋ × n and a vector y = M · x of size ⌊ρn⌋.<br />

Thus, its size is 2 ⌊ρn⌋·n · 2 ⌊ρn⌋ .<br />

So, for the image set to be larger than the domain set, we need 2 ⌊ρn⌋ > ( n<br />

δn)<br />

. This<br />

condition is satisfied when H 2 (δ) < ρ according to the Gilbert-Warshamov bound <strong>de</strong>fined<br />

in section 2.2.1. That is, for a sufficiently large n and suitable δ and ρ, fn<br />

ρ,δ expands its<br />

entry into a linear amount of bits.<br />

Given an instance with fixed parameters ρ and δ from SD(ρ, δ) collection, we can<br />

construct an iterative generating function G ρ,δ from the one-way function fn<br />

ρ,δ . For this,<br />

we use an algorithm ( A that returns a vector x of size n and weight δn from a random<br />

vector with log n<br />

2 δn)<br />

bits. This algorithm is <strong>de</strong>scribed in section 3.2.2. The generator Gρ,δ<br />

is <strong>de</strong>scribed in pseudoco<strong>de</strong> in algorithm 1. Figure 3 illustrates its operation.<br />

Algorithm 1 syndrome – Iterative generating function based on the syndrome <strong>de</strong>coding<br />

problem.<br />

Input: (M, x) ∈ Dn<br />

ρ,δ<br />

Output: Print bit sequence<br />

1: y ← M · x<br />

(<br />

2: Split y into two vectors y 1 e y 2 . The firs with ⌊log n<br />

2 δn)<br />

⌋ bits and the second with the<br />

remaining bits.<br />

3: print y 2<br />

4: x ← A(y 1 )<br />

5: Go to: 1<br />

128


Figure 3. Syndrome generating function.<br />

3.2.2. Generating words with given weight<br />

As noted, the generator requires ( an algorithm to produce vectors with fixed weight. From<br />

each entry of size ⌊log n<br />

)<br />

2 δn ⌋, this algorithm must output a different vector x ∈ {0, 1}<br />

n<br />

with weight |x| = δn. To build it, we use the lexicographic enumeration function shown<br />

by [Fischer and Stern, 1996].<br />

To explain the working of the lexicographic enumeration, we will use Pascal’s<br />

Triangle. It is formed by the binomial coefficients ( n<br />

k)<br />

where n represents the row and k<br />

the column. The construction follows the Pascal’s rule, which states:<br />

( ) n − 1<br />

+<br />

k − 1<br />

( ) ( n − 1 n<br />

= for 1 ≤ k ≤ n<br />

k k)<br />

Each triangle component t(n, k) = ( n<br />

k)<br />

represents the number of existing words<br />

with size n and weight k. Here t(n, k) equals the sum of two components immediately<br />

above t(n − 1, k) and t(n − 1, k − 1). These components represent, respectively, the<br />

number of words of size n starting with a 0-bit and starting with a 1-bit.<br />

This way, we can generate the output word from an in<strong>de</strong>x i by making an upward<br />

path in Pascal’s Triangle. We start from the component t(n, k) towards the top. When<br />

the in<strong>de</strong>x i is less than or equal to the up-left component t(n − 1, k), we generate a 0-bit<br />

and move to this component. When the in<strong>de</strong>x is higher, we generate a 1-bit and walk to<br />

the up-right component t(n − 1, k − 1), <strong>de</strong>crementing the in<strong>de</strong>x at t(n − 1, k − 1). The<br />

complete algorithm is <strong>de</strong>scribed in pseudoco<strong>de</strong> at the end of this section.<br />

As an example, see Figure 4. We ilustrate a walk to generate a word of size n = 4<br />

and weight k = 2, in<strong>de</strong>x i = 2.<br />

The path begins at the component t(4, 2) = ( 4<br />

2)<br />

= 6. As i = 2 ≤ t(3, 2) = 3, the<br />

algorithm generates a 0-bit and walks to the component t(3, 2). Now, i = 2 > t(2, 2) = 1,<br />

so the algorithm generates a 1 bit, updates the in<strong>de</strong>x i ← i − t(2, 2) and the path goes to<br />

the component t(2, 1). And so it goes until you reach the top of the triangle, forming the<br />

word (0, 1, 0, 1).<br />

129


Figure 4. Walk in Pascal’s Triangle to generate word of in<strong>de</strong>x i = 2 within a set of<br />

words of size 4 and weight 2<br />

3.3. Combining Syndrome and Fortuna<br />

The generating function constructed in 3.2.1 is based on the difficulty of finding a vector<br />

x with weight w from its syndrome, given a random matrix M. Thus, the only part of<br />

the function that actually makes up the internal state E, which must be kept secret, is the<br />

vector x. We will use, then, the entropy collection scheme to update the internal state. It<br />

should occur whenever the minimum amount of entropy is available in the P 0 pool. This<br />

way we ensure that the generating function receives the operating system randomness<br />

over time.<br />

At each request for random numbers, a check is ma<strong>de</strong> whether there is enough<br />

entropy to update the internal state. This check is conditional on the minimum entropy in<br />

the pool P 0 , as stipulated on the initial estimate. A minimum time lapse between reseeds<br />

is also respected. [Ferguson and Schneier, 2003] suggested 100ms to prevent an adversary<br />

to make numerous requests and flush out the entropy of the pools. Figure 5 illustrates the<br />

complete workings of the generator.<br />

The Syndrome-Fortuna update strategy preserves the one-way function direct<br />

cryptanalysis resistance. Only the seed, the vector x, is updated from time to time. Regardless<br />

of this update, any adversary that can reconstruct the internal state through the<br />

output vector y and the matrix M has managed to solve a problem currently consi<strong>de</strong>red<br />

computationally intractable.<br />

Forward security is guaranteed by the feedback operation in which part of the<br />

result vector y is used to choose the new vector x. An adversary can, at time t, know the<br />

state of the generator E t = (x t , M, P t ), where M is the matrix, x t is the vector x at time<br />

t and P t represents all the Fortuna Pools at time t. In this case, the opponent can simply<br />

find the last in<strong>de</strong>x value used in the lexicographic enumeration function A −1 (x t ) = y1 t−1 .<br />

This value is part of the vector y t−1 , as can be seen in figure 5. From there, to find the<br />

value x t−1 , or the last output value y2 t−1 requires inverting the generating function.<br />

The recovery to a safe state after a compromise – backward security – is guaranteed<br />

by the eventual update of vector x by the entropy collection system. An adversary<br />

who controls the state of the generator E t = (x t , M, P t ) could possibly keep it until time<br />

t + k, when the accumulated entropy is sufficient for a catastrophic reseed. At this point<br />

the value of the vector x is changed by the hash function of Fortuna pools, as seen in<br />

figure 5. As long as the opponent has not enough knowledge about the entropy ad<strong>de</strong>d to<br />

130


Figure 5. Syndrome-Fortuna operation. At each request is checked whether the<br />

pool P 0 has the minimum entropy and the time between reseeds is over 100ms.<br />

If so the algorithm performs a reseed, incrementing a counter c and choosing<br />

among the pools p i that satisfies 2 i divi<strong>de</strong>s c. A SHA 256 is performed accross<br />

the chosen pools and the result is used to in<strong>de</strong>x a word of size n and weight w.<br />

Then, the generating function performs the multiplication between the chosen<br />

vector and the matrix M producing the syndrome vector y. Part of this vector is<br />

sent to the output and part is used as feedback, enabling the iterative generation<br />

of random data .<br />

the pools, the new state E t+k+1 should be out of his control.<br />

I<strong>de</strong>ally a system recovery should require 128 entropy bits<br />

[Ferguson and Schneier, 2003]. In the Fortuna entropy collection system this amount is<br />

multiplied by the number of pools, since the entropy is distributed. Thus, this amount<br />

rises to 128 ∗ n, where n is the number of pools. This value can be relatively high<br />

compared to the i<strong>de</strong>al; however, this is a constant factor, and ensures that the system will<br />

recover, at a future time.<br />

In the above compromise case, consi<strong>de</strong>ring the entropy input rate ω, the generator<br />

recovery time would be at most k = (128 ∗ n)/ω. Adversaries could try to <strong>de</strong>plete the<br />

system entropy while it is accumulated. They would need to promote frequent reseeds,<br />

emptying the pools before they contain enough entropy to <strong>de</strong>feat them. This could be<br />

done injecting false events on the pools through malicious drivers to keep the pool P 0<br />

filled, allowing the real entropy flush. This attack is unlikely, given that the opponent<br />

would have to promote 2 n reseeds before the system collects 128 ∗ n real entropy bits.<br />

However, to avoid any attempt a minimum time between state updates is used to prevent<br />

very frequent reseeds and the system entropy exhaustion.<br />

131


3.4. Starting the generator<br />

The initialization is a critical step for any random number generator that manages its<br />

own entropy. The problems related to lack of randomness at initialization time must be<br />

addressed according to each scenario. Therefore, it is beyond the scope of this paper to<br />

<strong>de</strong>fine specific strategies.<br />

However, it should be noted that the implemented entropy accumulator allows the<br />

use of any source of randomness. Even a source of low quality, which can enter foreseeable<br />

data in the pools, has not the capacity to lower the system entropy. Other strategies,<br />

including the one used by the Linux kernel, estimate the collected amount of entropy.<br />

These approaches do not allow questionable sources to be used, since a miscalculation<br />

could lead to a security breach.<br />

One good strategy to mitigate the problem of lack of entropy during boot is to<br />

simulate continuity between reboots. For the Syndrome-Fortuna generator a seed-file was<br />

implemented the same way as in Linux. The system writes a file with random data to disk<br />

during shutdown and startup. At the startup, the seed is read, fed to the generator and the<br />

output is written on disk before any request for random numbers. This prevents repeated<br />

states when sud<strong>de</strong>n hangs occur. At startup, this seed-file is used to refresh the pools.<br />

4. Implementation, analysis and results<br />

4.1. Testing methodology<br />

One way to evaluate a random number generator quality is assessing its output’s statistical<br />

behavior. This analysis does not guarantee, in any way, the security of a cryptographic<br />

generator. However, it can reveal flaws on its <strong>de</strong>sign or implementation.<br />

There are several libraries for statistical tests accepted by the scientific community.<br />

We used the libraries SmallCrush and Crush from TestU01 library, <strong>de</strong>veloped by<br />

[L’Ecuyer and Simard, 2007]. The first one implements a set consisting of 10 tests and<br />

is recommen<strong>de</strong>d for a generator’s initial assessment. The second library applies 32 tests<br />

with several configurations, evaluating a total of 2 35 random bits.<br />

To evaluate the generator performance, we compared it with the Blum-Blum-Shub<br />

generator, which has a simple construction, based on the integer factoring difficulty. We<br />

also compared to the Linux kernel 2.6.30 generator (LRNG). TestU01 library was used to<br />

measure the generators performance.<br />

4.2. Statistical Results<br />

The statistical tests results are presented in the shape of p-values, which indicate the likelihood<br />

of a sample Y present the sampled value y, consi<strong>de</strong>ring true the null hypothesis<br />

H 0 :<br />

p = P (Y ≥ y|H 0 )<br />

To illustrate this statistical approach, we evaluate a sample Y of 100 coin flips in which 80<br />

times was randomly selected “heads” and 20 times “tails”. In this case, the null hypothesis<br />

is the coin fairness and therefore Y is a cumulative binomial distribution. Thus, we have<br />

p = P (Y ≥ 80) = 5.6 ∗ 10 −10 . The observed sample could occur with a fair coin<br />

with only 5.6 ∗ 10 −10 probability. This is not to tacitly reject the null hypothesis, but<br />

132


according to a <strong>de</strong>fined <strong>de</strong>mand level, we can consi<strong>de</strong>r the sample clearly failed the applied<br />

test. [L’Ecuyer and Simard, 2007] arbitrate as clear failures the p-values outsi<strong>de</strong> the range<br />

[10 −10 , 1 − 10 −10 ].<br />

All generators tested: BBS, Syndrome-Fortuna and LRNG passed the statistical<br />

test libraries. All p-values were in the range [10 −3 , 1 − 10 −3 ], forbidding us to reject<br />

the null hypothesis. This means that, statistically, the generated values cannot be distinguished<br />

from truly random values.<br />

4.3. Performance analysis<br />

The Syndrome-Fortuna generator was evaluated through performance tests and compared<br />

to the BBS and LRNG generators. We used a computer with an Intel Pentium Dual Core<br />

T3400 2.16GHz with 2GB of RAM. We used loads of 100 bytes, 1 kB, 10kB, 100kB and<br />

100kB intervals until complete 1MB of random data. Each generator had the generating<br />

time clocked 3 times for each load.<br />

Syndrome-Fortuna and LRNG were assessed while compiled into the kernel. The<br />

BBS algorithm was used only as a benchmark for performance and was not implemented<br />

within the kernel, being assessed with TestU01 library.<br />

To evaluate the performance diferences between generators built insi<strong>de</strong> and outsi<strong>de</strong><br />

the kernel, we did tests with an implementation of Syndrome-Fortuna compiled in<br />

user-space. The results were statistically indistinguishable from the results when the algorithm<br />

was implemented insi<strong>de</strong> the kernel. This does not necessarily imply that the same<br />

would happen to the BBS algorithm, the only algorithm not implemented insi<strong>de</strong> the kernel.<br />

But for the purposes of this paper, we consi<strong>de</strong>r it satisfactory for the comparision<br />

of the BBS, compiled in user space, with Syndrome-Fortuna and LRNG, built insi<strong>de</strong> the<br />

kernel.<br />

The average speed of each generator, with the respective <strong>de</strong>viation, are shown in<br />

table 2. The generators behavior for the different loads are summarized in figure 6.<br />

Generator Speed (em kB/s)<br />

LRNG 2664,0 ± 818,9<br />

Syndrome-Fortuna 197,1 ± 58,2<br />

BBS 31,4 ± 6,4<br />

Table 2. Generators LRNG, Syndrome-Fortuna and BBS performance measurement.<br />

As expected, Syndrome-Fortuna un<strong>de</strong>rperforms the current Linux generator,<br />

which is highly optimized for performance and does not have formal security proof.<br />

When compared with the BBS generator, which has similar formal security features, the<br />

Syndrome-Fortuna performance is 6.3 times higher.<br />

5. Concluding remarks<br />

During this research we studied several types of random number generators, statistical<br />

and cryptographic. We conducted a <strong>de</strong>tailed investigation of the Linux kernel generator,<br />

and proposed and implemented a new generator based on two existing approaches.<br />

133


Figure 6. Performance of random generators: Linux (LRNG) Syndrome-Fortuna<br />

and Blum-Blum-Shub (BBS).<br />

5.1. Conclusions from our research<br />

Random number generators are an important part of the complex set of protocols and applications<br />

responsible for ensuring information security. In a scenario of rapid change,<br />

when the computing reach unexplored places, and new users, the framework for cryptographic<br />

applications must adapt to provi<strong>de</strong> the <strong>de</strong>sired security.<br />

For random number generators, this means adapting to new sources of entropy,<br />

new forms of operation. It is not difficult to imagine scenarios where a keyboard, mouse<br />

and hard drive are less present, imposing restrictions on the randomness of the systems.<br />

The strategy we implemented for entropy collection is in line with this need. It does<br />

not require estimations and can use any entropy sources, even the ones with questionable<br />

randomnness.<br />

Conversely, as noted in its operation, the Linux random number generator faces a<br />

difficulty to adapt to new entropy sources. All of them must pass through a heuristic that,<br />

if inaccurate, can lead to a generator low entropy state. In a running Linux Ubuntu 9.10,<br />

we observed the entropy collection only from the keyboard, mouse and hard drive, while<br />

a series of possibly good entropy sources were available, such as wireless network cards,<br />

software interrupts, etc.<br />

As for the random values generation, per se, the implementation applies solid<br />

mathematical principles <strong>de</strong>rived from the theory of error-correcting co<strong>de</strong>s, and predicting<br />

them can be consi<strong>de</strong>red as difficult as the syndrome <strong>de</strong>coding problem, which is NPcomplete.<br />

134


The proposed algorithm can be consi<strong>de</strong>red for use in various scenarios, especially<br />

on diskless servers, or in cloud-computing scenarios, where the usual randomness sources<br />

are not present. We believe that the generator implements a satisfying tra<strong>de</strong>-off, providing<br />

bits with good statistical properties, solid security and reasonable speeds<br />

5.2. Future work<br />

We believe that the Syndrome-Fortuna time and memory performance can be improved<br />

consi<strong>de</strong>rably by changing the generating function “A”, shown in figure 5. We note that<br />

much of the processing and, clearly, most of the memory costs are related to the problem<br />

of obtaining the vector x of size n and weight w from a random in<strong>de</strong>x i. The approach<br />

used in the work of Augot et al. [Augot et al., 2005] could reduce drastically these costs.<br />

Generator specific parameters should be studied and modified to allow this use.<br />

As shown, the entropy collection strategy allows the use of new randomness<br />

sources, in<strong>de</strong>pen<strong>de</strong>nt of <strong>de</strong>tailed entropy studies. A natural extension of this work is<br />

to i<strong>de</strong>ntify these sources and promote their interconnection with the Linux kernel entropy<br />

collection system.<br />

References<br />

Augot, D., Finiasz, M., and Sendrier, N. (2005). A family of fast syndrome based cryptographic<br />

hash functions. In Dawson, E. and Vau<strong>de</strong>nay, S., editors, Mycrypt 2005, volume 3715, pages<br />

64–83. Springer.<br />

Berlekamp, E., McEliece, R., and Van Tilborg, H. (1978). On the inherent intractability of certain<br />

coding problems (corresp.). IEEE Transactions on Information Theory, 24(3):384–386.<br />

Chabaud, F. (1994). On the security of some cryptosystems based on error-correcting co<strong>de</strong>s. In<br />

EUROCRYPT, pages 131–139.<br />

Ferguson, N. and Schneier, B. (2003). Practical Cryptography. Wiley & Sons.<br />

Fischer, J.-B. and Stern, J. (1996). An efficient pseudo-random generator provably as secure as<br />

syndrome <strong>de</strong>coding. In EUROCRYPT, pages 245–255.<br />

Goldberg, I. and Wagner, D. (1996). Randomness and the Netscape browser. Dr. Dobb’s Journal<br />

of Software Tools, 21(1):66, 68–70.<br />

Goldreich, O. (2001). Foundations of Cryptography. Volume I: Basic Tools. Cambridge University<br />

Press, Cambridge, England.<br />

Goldreich, O., Krawczyk, H., and Michael, L. (1993). On the existence of pseudorandom generators.<br />

SIAM J. Computing, 22(6):1163–1175.<br />

Impagliazzo, R., Levin, L., and Luby, M. (1989). Pseudorandom generation from one-way functions.<br />

In Proc. 21st Ann. ACM Symp. on Theory of Computing, pages 12–24.<br />

L’Ecuyer, P. and Simard, R. (2007). Testu01: A c library for empirical testing of random number<br />

generators. ACM Transactions on Mathematical Software, 33(4).<br />

135


SpSb: um ambiente seguro para o estudo <strong>de</strong> spambots<br />

Gabriel C. Silva 1 , Alison C. Arantes 2 ,<br />

Klaus Steding-Jessen 3 , Cristine Hoepers 3 , Marcelo H.P. Chaves 3 ,<br />

Wagner Meira Jr. 1 , Dorgival Gue<strong>de</strong>s 1<br />

1 Departamento <strong>de</strong> Ciência da Computação – Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Minas Gerais<br />

2 CSIRT/POP-MG – Equipe <strong>de</strong> resposta a inci<strong>de</strong>ntes <strong>de</strong> segurança do POP-MG<br />

3 CERT.br – Centro <strong>de</strong> Estudos, Resposta e Tratamento <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Segurança<br />

NIC.br – Núcleo <strong>de</strong> Informação e Coor<strong>de</strong>nação do Ponto Br<br />

gabrielc@dcc.ufmg.br, alison@csirt.pop-mg.rnp.br<br />

{jessen,cristine,mhp}@cert.br, {meira,dorgival}@dcc.ufmg.br<br />

Resumo. Botnets são consi<strong>de</strong>radas a origem <strong>de</strong> gran<strong>de</strong> parte do spam observado<br />

atualmente. Entretanto, a informação que se tem sobre esses sistemas costuma<br />

ser apócrifa ou <strong>de</strong>riva <strong>de</strong> esforços <strong>de</strong> engenharia reversa pontuais. Para<br />

se enten<strong>de</strong>r melhor o comportamento <strong>de</strong>sses sistemas é necessário um ambiente<br />

<strong>de</strong> monitoração que dê ao bot a impressão <strong>de</strong> estar executando com liberda<strong>de</strong><br />

na Internet, porém sem permitir que suas ativida<strong>de</strong>s causem dano à re<strong>de</strong>. Este<br />

artigo curto <strong>de</strong>screve uma implementação <strong>de</strong> tal sistema atualmente em curso.<br />

1. Introdução<br />

No cenário atual <strong>de</strong> combate ao spam na Internet, botnets ocupam uma posição particularmente<br />

importante, por sua capacida<strong>de</strong> <strong>de</strong> disseminação <strong>de</strong> mensagens a partir <strong>de</strong> um<br />

gran<strong>de</strong> número <strong>de</strong> máquinas comprometidas (bots) [Xie et al. 2008]. Um dos gran<strong>de</strong>s<br />

<strong>de</strong>safios para a comunida<strong>de</strong> <strong>de</strong> segurança que combate spam é enten<strong>de</strong>r como essas re<strong>de</strong>s<br />

operam, a fim <strong>de</strong> criar mecanismos <strong>de</strong> <strong>de</strong>tecção e bloqueio <strong>de</strong>ssas fontes <strong>de</strong> spam<br />

(<strong>de</strong>nominadas spambots, nesse caso).<br />

Na prática, a informação sobre o comportamento <strong>de</strong> botnets ten<strong>de</strong> a ser apócrifa,<br />

sem validação científica, ou <strong>de</strong> valida<strong>de</strong> limitada pela volatilida<strong>de</strong> da área. Dessa forma,<br />

é essencial que se tenha uma forma flexível <strong>de</strong> acompanhar o comportamento <strong>de</strong> novos<br />

bots à medida que eles surgem. Esse acompanhamento envolve tanto a coleta <strong>de</strong> binários<br />

<strong>de</strong> versões ativas <strong>de</strong> malware para análise, quanto o acompanhamento <strong>de</strong> sua execução.<br />

O gran<strong>de</strong> problema <strong>de</strong> se analisar o comportamento <strong>de</strong> um bot é que esse comportamento<br />

só po<strong>de</strong> ser observado em sua totalida<strong>de</strong> se lhe é garantido acesso à Internet.<br />

Como esses programas operam seguindo os comandos <strong>de</strong> um elemento central, <strong>de</strong>nominado<br />

Comando-e-Controle (C&C), um bot só passa a atuar no envio <strong>de</strong> spam, por exemplo,<br />

após se conectar ao seu C&C e obter instruções sobre o conteúdo das mensagens e<br />

os <strong>de</strong>stinatários. Entretanto, se o malware tem acesso à Internet, se torna difícil evitar que<br />

cause dano (por exemplo, enviando spam). Por esse motivo, serviços <strong>de</strong> análise <strong>de</strong> comportamento<br />

<strong>de</strong> binários, como o Anubis 1 , se limitam a executar os binários sob suspeita<br />

sem permitir o seu acesso à re<strong>de</strong>, registrando apenas o seu comportamento na máquina<br />

local. Apesar <strong>de</strong> auxiliar na i<strong>de</strong>ntificação do binário, essas informações não contribuem<br />

para o entendimento <strong>de</strong> seu comportamento na re<strong>de</strong>.<br />

1 http://anubis.iseclab.org/?action=sample_reports<br />

136


O objetivo <strong>de</strong>ste artigo é propor um ambiente seguro para o estudo <strong>de</strong> spambots<br />

que seja ser capaz <strong>de</strong> registrar o comportamento <strong>de</strong> todo o ciclo <strong>de</strong> vida <strong>de</strong> um spambot<br />

analisando seu tráfego <strong>de</strong> re<strong>de</strong>, sem permitir que ataques reais ocorram. Neste ambiente,<br />

qualquer bot sob análise <strong>de</strong>ve ser capaz <strong>de</strong> trocar informações com seu C&C sem efetivamente<br />

conseguir enviar o spam. Pelas suas características, esse ambiente se encaixa na<br />

<strong>de</strong>finição <strong>de</strong> um sandbox, daí o nome escolhido para o sistema, SpSb (Spam Sandbox).<br />

2. Arquitetura proposta<br />

Para garantir um ambiente seguro para análise <strong>de</strong> malware, preten<strong>de</strong>mos utilizar a infraestrutura<br />

<strong>de</strong> re<strong>de</strong> ilustrada na figura 1. A arquitetura inclui um sistema <strong>de</strong> captura <strong>de</strong><br />

amostras <strong>de</strong> binários <strong>de</strong> possíveis spambots e o sandbox propriamente dito. Nesta seção<br />

discutimos os princípios <strong>de</strong> operação previstos para cada elemento do sistema. A seção<br />

seguinte discute <strong>de</strong>talhes <strong>de</strong> implementação relacionados.<br />

Figura 1. Arquitetura proposta<br />

O sistema <strong>de</strong> captura inclui um honeypot especializado na coleta <strong>de</strong> malware e<br />

um serviço <strong>de</strong> avaliação, filtragem e armazenamento <strong>de</strong> amostras. O primeiro <strong>de</strong>safio<br />

do sistema é i<strong>de</strong>ntificar as amostras <strong>de</strong> interesse. Para isso, cada amostra é comparada a<br />

outras já avaliadas e uma consulta é feita a serviços <strong>de</strong> análise externos. Apesar <strong>de</strong>sses<br />

serviços não serem suficientes para <strong>de</strong>terminar todo o comportamento <strong>de</strong> uma amostra,<br />

eles fornecem informações úteis, como a i<strong>de</strong>ntificação <strong>de</strong> amostras claramente sem interesse<br />

nesse caso, como vírus e ou variações <strong>de</strong> outros bots já coletados. A transferência<br />

<strong>de</strong> uma amostra selecionada para o sandbox <strong>de</strong>ve ser feita <strong>de</strong> forma bastante controlada,<br />

para evitar que a amostra contamine algum elemento <strong>de</strong> forma inesperada e para garantir<br />

que o mecanismo <strong>de</strong> transferência não possa vir a ser explorado por um malware durante<br />

sua execução no ambiente.<br />

A máquina alvo que será infectada po<strong>de</strong> ser uma máquina real, ou uma máquina<br />

virtual executando em um dos ambientes <strong>de</strong> virtualização hoje disponíveis. A opção entre<br />

as duas opções representa um compromisso entre a flexibilida<strong>de</strong> <strong>de</strong> operação, a segurança<br />

do sistema e a gama <strong>de</strong> malware que po<strong>de</strong>rão ser avaliados. O uso <strong>de</strong> máquinas virtuais<br />

simplifica a gerência e configuração do sistema, tornando simples recuperar uma<br />

visão <strong>de</strong> uma máquina em um <strong>de</strong>terminado ponto <strong>de</strong> sua configuração, antes ou após a<br />

contaminação pelo bot. Entretanto, o gerente <strong>de</strong> máquinas virtuais está sujeito a ataques a<br />

partir da máquina virtual (ao menos potencialmente) e diversos tipos <strong>de</strong> software malicioso<br />

hoje incluem algum tipo <strong>de</strong> mecanismo para <strong>de</strong>tectar sua instalação em uma máquina<br />

virtual [Miwa et al. 2007].<br />

137


A tarefa <strong>de</strong> controlar a visão do bot para a Internet é dividida entre o controlador<br />

<strong>de</strong> acesso e o emulador <strong>de</strong> serviços. O primeiro é responsável por interceptar cada pacote<br />

gerado pela máquina infectada e <strong>de</strong>cidir sua <strong>de</strong>stinação, que <strong>de</strong>ve se encaixar em uma das<br />

opções a seguir: (i) processar o pacote localmente, (ii) permitir que o pacote siga seu caminho<br />

para a Internet, (iii) redirecionar o pacote para um emulador <strong>de</strong> serviços, ou (iv)<br />

<strong>de</strong>scartar o pacote. Pacotes como consultas DNS <strong>de</strong>vem ser tratadas diretamente pelo<br />

controlador, A interceptação <strong>de</strong>sse protocolo tem dois objetivos: observando o padrão<br />

<strong>de</strong> consultas DNS <strong>de</strong> um bot é possível, em muitos casos, inferir a natureza do seu<br />

C&C [Choi et al. 2009]; além disso, caso algum tráfego seja i<strong>de</strong>ntificado com um ataque<br />

iniciado pelo bot (como o envio <strong>de</strong> spam), o servidor <strong>de</strong> DNS do controlador <strong>de</strong> acesso<br />

tem a informação necessária para redirecionar o tráfego para o emulador <strong>de</strong> serviços. Isso<br />

po<strong>de</strong> ser feito pela re-escrita dos en<strong>de</strong>reços <strong>de</strong> resposta, ou pela observação do en<strong>de</strong>reço<br />

<strong>de</strong> resposta e pela inserção <strong>de</strong> regras <strong>de</strong> roteamento que interceptem o tráfego para aqueles<br />

en<strong>de</strong>reços e os redirecionem para o emulador.<br />

Pacotes i<strong>de</strong>ntificados como associados ao fluxo <strong>de</strong> controle do bot, direcionados<br />

principalmente ao seu Comando-e-Controle, <strong>de</strong>vem ser encaminhados normalmente pela<br />

Internet. Essa i<strong>de</strong>ntificação po<strong>de</strong> ser feita através dos padrões <strong>de</strong> DNS, como mencionado,<br />

pelo tipo <strong>de</strong> protocolo utilizado (p.ex., IRC) e pelo momento da conexão. Para evitar problemas<br />

<strong>de</strong>vido a ataques que porventura possam ser encapsulados em consultas aparentemente<br />

inócuas, um controle rigoroso <strong>de</strong> taxa <strong>de</strong> comunicação <strong>de</strong>ve ser implementado.<br />

Tráfego redirecionado para o emulador <strong>de</strong> serviços inclui todo tipo <strong>de</strong> protocolo que seja<br />

classificado com parte <strong>de</strong> um ataque. Entre esses protocolos <strong>de</strong>stacam-se ataques a outras<br />

máquinas com o objetivo <strong>de</strong> propagar o malware e tentativas <strong>de</strong> distribuição <strong>de</strong> spam.<br />

Como mencionado anteriormente, o emulador <strong>de</strong> serviços <strong>de</strong>ve manter uma comunicação<br />

constante com o controlador <strong>de</strong> acesso, pois ele <strong>de</strong>ve ser informado sobre como respon<strong>de</strong>r<br />

a cada requisição redirecionada (por exemplo, uma conexão SMTP redirecionada <strong>de</strong>ve ser<br />

respondida com o nome do servidor alvo pretendido, bem como seu en<strong>de</strong>reço IP). Essa<br />

informação <strong>de</strong>ve ser repassada pelo controlador <strong>de</strong> acesso. As mensagens <strong>de</strong> spam coletadas<br />

são armazenadas e processadas para extrair informações que permitam classificá-las.<br />

Um objetivo importante do Spam Sandbox é automatizar as <strong>de</strong>cisões sobre que<br />

tráfego do bot po<strong>de</strong> acessar a Internet e que tráfego <strong>de</strong>ve ser direcionado para o emulador.<br />

Por exemplo, uma sequência <strong>de</strong>sse tipo po<strong>de</strong>ria ser vista da seguinte forma a partir do<br />

controlador <strong>de</strong> acesso: uma consulta DNS é seguida por uma conexão ao porto 6667<br />

(IRC) do en<strong>de</strong>reço IP fornecido pela resposta DNS — o controlador permite a conexão e<br />

a troca <strong>de</strong> tráfego com o <strong>de</strong>stino, por se tratar <strong>de</strong> uma conexão ao C&C; uma nova consulta<br />

DNS é seguida por uma conexão ao porto 25 (SMTP) do novo en<strong>de</strong>reço — nesse caso,<br />

o controlador notifica o emulador sobre o nome e o IP que o bot tenta conectar e passa a<br />

redirecionar o tráfego para aquele IP para o emulador, que passa a executar o código do<br />

emulador <strong>de</strong> um servidor <strong>de</strong> correio, armazenando a mensagem <strong>de</strong> spam que o bot acha<br />

que foi entregue.<br />

3. Aspectos <strong>de</strong> implementação<br />

O sistema está sendo implementado utilizando módulos disponíveis na comunida<strong>de</strong> <strong>de</strong><br />

sofwtare livre e aberto, bem com módulos especialmente <strong>de</strong>senvolvidos para esse fim. O<br />

138


sistema <strong>de</strong> coleta <strong>de</strong> amostras <strong>de</strong> malware utiliza o honeypot Dionaea 2 . As amostras coletadas<br />

são enviadas para análise pelo serviços Anubis 3 e Norman Sandbox 4 . No momento,<br />

a análise da informação obtida <strong>de</strong>ssas fontes é manual. No futuro, o processamento será<br />

automatizado com extratores automáticos, para simplificar a coleta <strong>de</strong> amostras.<br />

Nossa primeira opção para a máquina infectada é a utilização <strong>de</strong> uma máquina<br />

virtual executando no ambiente Virtual Box. O ambiente é configurado <strong>de</strong> forma a remover<br />

elementos <strong>de</strong> configuração da máquina virtual que são usualmente utilizados por<br />

bots para <strong>de</strong>terminar se o ambiente é uma máquina virtual. Dessa forma, po<strong>de</strong>mos nos<br />

beneficiar dos recursos <strong>de</strong> manipulação <strong>de</strong> imagens e armazenamento <strong>de</strong> snapshots para<br />

retornar o sistema a uma configuração pré-<strong>de</strong>terminada. A inserção <strong>de</strong> malware é feita<br />

atualmente através <strong>de</strong> um dispositivo USB; estamos estudando o ambiente virtualizado<br />

para po<strong>de</strong>r configurar a amostra diretamente na imagem da máquina virtual.<br />

O controlador <strong>de</strong> acesso é implementado com uma máquina FreeBSD, utilizando<br />

o sistema <strong>de</strong> filtragem <strong>de</strong> pacotes nativo daquele sistema, o PF (BSD Packet Filter). As<br />

interfaces da máquina são conectadas através <strong>de</strong> uma switch virtual transparente configurada<br />

pelo sistema operacional. O processo <strong>de</strong> captura e re-escrita <strong>de</strong> pacotes é feito com<br />

regras PF, com um tratamento especial dos pacotes <strong>de</strong> retorno do emulador <strong>de</strong> serviços<br />

para garantir o roteamento correto <strong>de</strong> pacotes com en<strong>de</strong>reços forjados. O software <strong>de</strong> controle<br />

do PF está sendo <strong>de</strong>senvolvido para interceptar os pacotes recebidos, tomar <strong>de</strong>cisões<br />

sobre os próximos passos, inserir novas regras para <strong>de</strong>terminar como as novas conexões<br />

serão tratadas e notificar o emulador a respeito dos serviços que ele <strong>de</strong>ve emular.<br />

O emulador <strong>de</strong> serviços contém um segundo servidor Dionaeae um honeypot especialmente<br />

<strong>de</strong>senvolvido para a coleta <strong>de</strong> spam [Steding-Jessen et al. 2008]. Ambos os servidores<br />

estão sendo configurados para se a<strong>de</strong>quarem ao ambiente emulado. Em particular,<br />

eles <strong>de</strong>vem receber comandos do controlador <strong>de</strong> acesso para saberem quais en<strong>de</strong>reços IPs<br />

<strong>de</strong>vem ser emulados e qual o nome o servidor <strong>de</strong>ve ser usado em cada caso. O coletor <strong>de</strong><br />

spam é basicamente o mesmo <strong>de</strong>senvolvido originalmente para aquele honeypot. Outros<br />

serviços po<strong>de</strong>m ser incluídos posteriormente.<br />

Técnicas <strong>de</strong> análise do spam coletado estão sendo <strong>de</strong>senvolvidas para i<strong>de</strong>ntificar<br />

os padrões <strong>de</strong> tráfego das botnets e os padrões <strong>de</strong> máquinas alvo que seriam atacadas<br />

pelo bot caso ele operasse na Internet. Essas técnicas são <strong>de</strong>senvolvidas em conjunto com<br />

outros trabalhos <strong>de</strong> análise <strong>de</strong> spam atualmente em ativida<strong>de</strong> no grupo do DCC/UFMG<br />

em conjunto com o CERT.br e o CSIRT/POP-MG [Guerra et al. 2010].<br />

4. Trabalhos relacionados<br />

Muitos trabalhos se orientam por princípios gerais universalmente reconhecidos a respeito<br />

<strong>de</strong> botnets, sem entretanto oferecer uma confirmação científica para esses princípios.<br />

Por exemplo, ao assumir que todas as conexões que chegam a um servidor <strong>de</strong> correio<br />

eletrônico tentando entregar mensagens <strong>de</strong> spam se originam <strong>de</strong> botnets, Xie et al. i<strong>de</strong>ntificam<br />

tais re<strong>de</strong>s com base nos en<strong>de</strong>reços <strong>de</strong> origem das conexões contendo spam, sem uma<br />

confirmação direta <strong>de</strong> sua natureza [Xie et al. 2008]. Outro trabalho que se orienta por<br />

esses princípios gerais é o da ferramenta <strong>de</strong> <strong>de</strong>tecção BotGad [Choi et al. 2009]. Nesse<br />

2 http://dionaea.carnivore.it/<br />

3 http://anubis.iseclab.org/<br />

4 http://www.norman.com/security_center/security_tools/<br />

139


caso, um grupo <strong>de</strong> máquinas com certos comportamentos comuns na re<strong>de</strong> (p.ex., consultas<br />

DNS semelhantes) é i<strong>de</strong>ntificado como uma botnet.<br />

Os trabalhos mais próximos <strong>de</strong>sta proposta são Botlab [John et al. 2009] e Mimetic<br />

Internet [Miwa et al. 2007]. Botlab propõe uma arquitetura <strong>de</strong> análise segura, mas<br />

<strong>de</strong>pen<strong>de</strong> diretamente da intervenção <strong>de</strong> um operador, que <strong>de</strong>ve <strong>de</strong>cidir como reagir a cada<br />

ação do bot sendo observado. Já Mimetic Internet propõe um arcabouço isolado que tenta<br />

reproduzir a Internet, com servidores que simulam sites populares, por exemplo, mas que<br />

não permite nenhum acesso à Internet real. Nesse caso, um spambot não seria capaz <strong>de</strong><br />

contactar o restante da sua re<strong>de</strong>, o que limitaria sua ação.<br />

5. Conclusão e trabalhos futuros<br />

Observar o comportamento <strong>de</strong> uma botnet em uma campanha <strong>de</strong> spam a partir <strong>de</strong> um<br />

<strong>de</strong> seus componentes po<strong>de</strong> gerar um gran<strong>de</strong> volume <strong>de</strong> informações sobre esses sistemas<br />

e formas <strong>de</strong> evitar sua ação. Entretanto, realizar esse estudo exige que se permita que<br />

um spambot acesse a Internet para estabelecer contato com seu comando-e-controle e se<br />

convencer <strong>de</strong> que está executando livremente, ao mesmo tempo que se evite que o mesmo<br />

cause danos reais à re<strong>de</strong> (p.ex., pelo envio <strong>de</strong> spam).<br />

A arquitetura <strong>de</strong>scrita neste artigo visa oferecer condições para que essa análise<br />

seja possível, <strong>de</strong> forma bastante automatizada. A combinação <strong>de</strong> um filtro <strong>de</strong> pacotes<br />

altamente flexível, com capacida<strong>de</strong> <strong>de</strong> redirecionamento e re-escrita <strong>de</strong> pacotes, e um<br />

conjunto <strong>de</strong> emuladores <strong>de</strong> serviços operando <strong>de</strong> forma integrada a esse filtro po<strong>de</strong> permitir<br />

que pacotes/fluxos i<strong>de</strong>ntificados como <strong>de</strong> controle possam ter permissão para acessar a<br />

Internet, enquanto comportamentos daninhos, como o envio <strong>de</strong> spam, po<strong>de</strong>m ser direcionados<br />

para servidores apropriados.<br />

A implementação <strong>de</strong>sse sistema se encontra em curso. Apesar <strong>de</strong> já concebermos<br />

uma solução completa, há ainda muito espaço para pesquisa no <strong>de</strong>senvolvimento <strong>de</strong><br />

métodos para i<strong>de</strong>ntificação <strong>de</strong> padrões <strong>de</strong> controle e <strong>de</strong> ataques e para o aumento do grau<br />

<strong>de</strong> automatização dos mecanismos <strong>de</strong> redirecionamento e emulação <strong>de</strong> serviços.<br />

Referências<br />

Choi, H., Lee, H., and Kim, H. (2009). Botgad: <strong>de</strong>tecting botnets by capturing group activities<br />

in network traffic. In Proceedings of the Fourth International ICST COMSWARE,<br />

pages 1–8, New York, EUA. ACM.<br />

Guerra, P. H. C. et al. (2010). Exploring the spam arms race to characterize spam evolution.<br />

In Proceedings of the 7th CEAS, Redmond, WA.<br />

John, J. P. et al. (2009). Studying spamming botnets using botlab. In Proceedings of the<br />

6th USENIX NSDI, pages 291–306.<br />

Miwa, S. et al. (2007). Design and implementation of an isolated sandbox with mimetic<br />

internet used to analyze malwares. In Proceedings of the USENIX DETER Workshop<br />

on Cyber Security Experimentation and Test, pages 1–9.<br />

Steding-Jessen, K. et al. (2008). Using low-interaction honeypots to study the abuse of<br />

open proxies to send spam. Infocomp (UFLA), 7:44–52.<br />

Xie, Y. et al. (2008). Spamming botnets: signatures and characteristics. SIGCOMM CCR,<br />

38(4):171–182.<br />

140


Fatores que afetam o comportamento <strong>de</strong> spammers na re<strong>de</strong><br />

Gabriel C. Silva 1 , Klaus Steding-Jessen 2 , Cristine Hoepers 2 ,<br />

Marcelo H.P. Chaves 2 , Wagner Meira Jr. 1 , Dorgival Gue<strong>de</strong>s 1<br />

1 Departamento <strong>de</strong> Ciência da Computação – Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Minas Gerais<br />

2 CERT.br – Centro <strong>de</strong> Estudos, Resposta e Tratamento <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Segurança<br />

NIC.br – Núcleo <strong>de</strong> Informação e Coor<strong>de</strong>nação do Ponto Br<br />

{gabrielc,meira,dorgival}@dcc.ufmg.br<br />

{jessen,cristine,mhp}@cert.br<br />

Resumo. O propósito <strong>de</strong>ste trabalho é enten<strong>de</strong>r melhor o comportamento <strong>de</strong><br />

spammers (responsáveis pelo envio <strong>de</strong> mensagens <strong>de</strong> spam) na re<strong>de</strong>, e assim<br />

trazer mais informações para o combate a eles. Para isso utilizamos um sistema<br />

<strong>de</strong> honeypots virtualizados especialmente <strong>de</strong>senvolvidos para a coleta <strong>de</strong><br />

spam que possibilita avaliar a influência <strong>de</strong> diversos fatores no comportamento<br />

dos transmissores. Os resultados mostram que as variações na configuração<br />

dos cenários po<strong>de</strong> afetar drasticamente o volume <strong>de</strong> spam coletado, bem como<br />

suas características internas. Em particular, o trabalho i<strong>de</strong>ntificou dois tipos<br />

bastante diversos <strong>de</strong> transmissores: spammers em larga escala, que usam poucas<br />

máquinas com muitos recursos, e botnets, que enviam cada uma um número<br />

limitado <strong>de</strong> mensagens.<br />

1. Introdução<br />

O correio eletrônico, apesar <strong>de</strong> ser um dos mais antigos serviços da Internet, continua<br />

sendo um dos mais populares. Segundo um estudo do grupo Radicati, em maio <strong>de</strong> 2009,<br />

havia mais <strong>de</strong> 1,9 bilhões <strong>de</strong> usuários <strong>de</strong> e-mail em todo o mundo, trocando 294 bilhões<br />

<strong>de</strong> mensagens por dia (em média, são mais <strong>de</strong> 2.8 milhões <strong>de</strong> novos e-mails que trafegam<br />

na re<strong>de</strong> por segundo) [Radicati 2009]. São dados impressionantes para um serviço tão<br />

antigo para os padrões da Internet.<br />

Muitos consi<strong>de</strong>ram que o sucesso da popularização do e-mail se <strong>de</strong>ve a sua facilida<strong>de</strong><br />

<strong>de</strong> uso e simplicida<strong>de</strong> <strong>de</strong> projeto. Porém, <strong>de</strong>vido às <strong>de</strong>ficiências <strong>de</strong> segurança <strong>de</strong> seu<br />

protocolo e ao seu baixo custo <strong>de</strong> operação, o e-mail é alvo constante <strong>de</strong> abusos como o<br />

spam: mensagens eletrônicas não solicitadas, normalmente enviadas em larga escala com<br />

objetivos que variam <strong>de</strong>s<strong>de</strong> marketing simples até frau<strong>de</strong> i<strong>de</strong>ológica e/ou bancária.<br />

Com objetivo <strong>de</strong> conter esse problema foram <strong>de</strong>senvolvidas tecnologias avançadas<br />

para a criação <strong>de</strong> filtros <strong>de</strong> <strong>de</strong>tecção do spam. Entretanto, dada a constante evolução das<br />

técnicas <strong>de</strong> evasão e ofuscação, muitos <strong>de</strong>sses filtros <strong>de</strong>pen<strong>de</strong>m <strong>de</strong> constantes e custosas<br />

manutenções, atualizações e refinamentos para que se mantenham eficazes. Tentar solucionar<br />

este problema com filtros mais restritivos nem sempre é uma saída, pois há o risco<br />

<strong>de</strong> gerar excesso <strong>de</strong> falsos positivos tornando a ferramenta inútil, ou pior, causando um<br />

problema ainda maior ao criar aversão no usuário, que po<strong>de</strong> preferir até ficar <strong>de</strong>sprotegido.<br />

Uma forma mais recente e diferenciada <strong>de</strong> abordar o problema do spam é estudá-lo<br />

<strong>de</strong> uma nova óptica: enten<strong>de</strong>r o comportamento dos spammers (responsáveis pelo envio<br />

do spam) [Giles 2010] <strong>de</strong>ntro da re<strong>de</strong>. Nessa abordagem procura-se não apenas analisar os<br />

141


padrões encontrados <strong>de</strong>ntro das mensagens enviadas ou os métodos <strong>de</strong> evasão <strong>de</strong> <strong>de</strong>tecção<br />

utilizados pelos autores, mas também caracterizar os fatores ou a forma como o spammer<br />

se comporta em diferentes âmbitos e cenários. Esse enfoque é <strong>de</strong> particular interesse para<br />

a comunida<strong>de</strong> <strong>de</strong> segurança, já que po<strong>de</strong> gerar informações que permitam i<strong>de</strong>ntificar e<br />

bloquear tais abusos antes que consumam recursos <strong>de</strong> re<strong>de</strong> e dos servidores alvo.<br />

É indispensável enten<strong>de</strong>r o que leva o spammer a dar esse tipo <strong>de</strong> preferencia, ao<br />

dar escolher a máquinas na re<strong>de</strong> com <strong>de</strong>terminadas características, e ainda enten<strong>de</strong>r quais<br />

tipos <strong>de</strong> ataques são mais comuns para a disseminação do spam. Esse tipo <strong>de</strong> informação<br />

comportamental po<strong>de</strong> levar a novos tipos <strong>de</strong> <strong>de</strong>fesas precoces contra o spam, ainda antes<br />

do envio na re<strong>de</strong>, e po<strong>de</strong> ainda abrir caminho a novos tipos <strong>de</strong> pesquisas na área. Apenas<br />

a análise do conteúdo <strong>de</strong> spam não gera evidências para obter essas informações; é<br />

necessário analisar o abuso em si e não apenas isso, mas também verificar como o comportamento<br />

do spammer muda se o alvo do abuso tem diferentes características.<br />

Para realizar esse estudo é necessário criar diferentes cenários para o ataque dos<br />

spammers para possibilitar a análise <strong>de</strong> quanto as métricas consi<strong>de</strong>radas são influenciadas<br />

pela mudança dos fatores. A dificulda<strong>de</strong> <strong>de</strong> analisar a origem e o caminho das mensagens<br />

na re<strong>de</strong>, ainda é uma das principais barreiras na caracterização do comportamento<br />

dos spammers. O objetivo <strong>de</strong>ste trabalho é fazer uma caracterização do comportamento<br />

dos spammers ao serem confrontados com diversos cenários <strong>de</strong> ataque. Para isso quantificamos<br />

a influência <strong>de</strong> diversos fatores (como restrições <strong>de</strong> banda, vulnerabilida<strong>de</strong>s<br />

disponíveis para ataque, etc) em métricas (quantida<strong>de</strong> <strong>de</strong> spam enviado, código <strong>de</strong> área<br />

dos en<strong>de</strong>reços utilizados, tipos <strong>de</strong> ataque aplicados) que, em conjunto, são capazes <strong>de</strong><br />

caracterizar o comportamento em estudo.<br />

Para atingir esse objetivo foi projetado e implementado uma coleta <strong>de</strong> dados especial<br />

capaz <strong>de</strong> captar spam em diferentes cenários e assim possibilitar a analise da influência<br />

<strong>de</strong> diferentes combinações <strong>de</strong> fatores nas métricas <strong>de</strong> interesse. Para realizar esse<br />

processo <strong>de</strong> coleta, foram utilizados coletores <strong>de</strong> spam <strong>de</strong>senvolvidos pela equipe <strong>de</strong> do<br />

Cert.br (Centro <strong>de</strong> Estudos, Resposta e Tratamento <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Segurança no Brasil).<br />

O restante <strong>de</strong>ste trabalho está organizado da seguinte forma: a seção 2 <strong>de</strong>senvolve<br />

a metodologia <strong>de</strong> pesquisa adotado na coleta e na análise dos dados; a seção 3 mostra e<br />

discute os resultados obtidos na pesquisa; a seção 4 apresenta os trabalhos relacionados ao<br />

estudo; finalmente, a seção 5 apresenta algumas conclusões e discute os trabalhos futuros.<br />

2. Metodologia<br />

Durante a realização <strong>de</strong> vários dos trabalhos anteriores do nosso grupo <strong>de</strong> pesquisa utilizando<br />

um honeypot coletor <strong>de</strong> spam, observou-se indícios <strong>de</strong> que vários dos fatores<br />

no processo <strong>de</strong> coleta <strong>de</strong> dados influenciavam consi<strong>de</strong>ravelmente na quantida<strong>de</strong> e nas<br />

características do spam coletado. Essa influência, portanto, evi<strong>de</strong>nciava uma aparente<br />

correlação do comportamento dos spammers e as proprieda<strong>de</strong>s do alvo atacado (no caso,<br />

as proprieda<strong>de</strong>s configuradas na interface exposta pelo honeypot). A concepção e consequente<br />

arquitetura metodológica <strong>de</strong>ste estudo nasceu exatamente da i<strong>de</strong>ia <strong>de</strong> verificar e<br />

quantificar essa correlação.<br />

Dentre os indícios <strong>de</strong> correlação mais forte entre o comportamento dos spammers<br />

e as características do alvo, foram selecionados os fatores que seriam avaliados no estudo,<br />

utilizando o princípio do experimento fatorial.<br />

142


2.1. O coletor <strong>de</strong> spam utilizado e as possibilida<strong>de</strong>s <strong>de</strong> configuração disponíveis<br />

O coletor <strong>de</strong> spam utilizado é uma evolução do sistema <strong>de</strong>senvolvido<br />

por [Steding-Jessen et al. 2008], com diversas melhorias em termos <strong>de</strong> <strong>de</strong>sempenho<br />

e organização <strong>de</strong> dados, mas com funcionalida<strong>de</strong>s semelhantes. Consi<strong>de</strong>rando-se seu<br />

modo <strong>de</strong> operação, há pelo menos quatro dimensões <strong>de</strong> configuração que são importantes<br />

para o <strong>de</strong>senvolvimento <strong>de</strong>ste trabalho. Um esquema simplificado do funcionamento<br />

do coletor <strong>de</strong> spam é apresentado na figura 1 e os <strong>de</strong>talhes <strong>de</strong> operação relevantes são<br />

discutidos a seguir.<br />

Figura 1. Esquema simplificado do funcionamento do coletor (honeypot).<br />

Tratamento <strong>de</strong> mensagens <strong>de</strong> teste. Como mencionado anteriormente, um dos<br />

objetivos <strong>de</strong>ste trabalho é coletar spam sem permitir que ele se propague pela re<strong>de</strong>. A<br />

única situação em que uma mensagem po<strong>de</strong> ser enviada pelo coletor é no caso <strong>de</strong> mensagens<br />

que sejam i<strong>de</strong>ntificadas como mensagens <strong>de</strong> teste geradas pelo atacante. Ao longo<br />

do <strong>de</strong>senvolvimento do honeypot <strong>de</strong> coleta <strong>de</strong> spam, os autores i<strong>de</strong>ntificaram padrões<br />

claramente usados pelos spammers para registrar a operação da máquina sendo atacada.<br />

Tais mensagens parecer ter como objetivo testar o funcionamento da máquina atacada. O<br />

spampot po<strong>de</strong> encaminhar essas mensagens ou não, <strong>de</strong>pen<strong>de</strong>ndo da sua configuração.<br />

Protocolos emulados. O coletor aceita conexões na porta 25/tcp, tradicionalmente<br />

associada ao protocolo SMTP, e outras que costumam ser usadas como portas<br />

alternativas, como a porta 587/tcp. Para qualquer conexão observada nessas portas, o<br />

coletor se comporta como um servidor SMTP padrão (mail relay), passando pelas etapas<br />

<strong>de</strong> inicialização da conexão SMTP corretamente. Quando o transmissor que iniciou<br />

a conexão inicial os comandos do protocolo para envio <strong>de</strong> uma mensagem a um <strong>de</strong>stinatário<br />

(ou grupo <strong>de</strong>les), o coletor aceita a mensagem, armazena-a localmente e respon<strong>de</strong><br />

com o código <strong>de</strong> sucesso para a operação, indicando que a mensagem seria corretamente<br />

encaminhada. O spampot também implementa emuladores para os protocolos SOCKS4,<br />

SOCKS4a, SOCK5 e HTTP, associados a todas as portas comumente usadas por esses<br />

protocolos que emulam o comportamento <strong>de</strong> proxy aberto associado a esses protocolos.<br />

Quando uma conexão é estabelecida para uma <strong>de</strong>ssas portas, se o comando seguinte é um<br />

pedido <strong>de</strong> conexão (proxy) para o porto 25 <strong>de</strong> outra máquina, o spampot passa a simular o<br />

servidor <strong>de</strong> correio naquela conexão, como no caso do open relay local, mas respon<strong>de</strong>ndo<br />

como o servidor que seria o alvo.<br />

Utilização (ou não) <strong>de</strong> listas <strong>de</strong> bloqueio. No contexto mundial do combate à<br />

disseminação <strong>de</strong> spam, as listas <strong>de</strong> bloqueio são consi<strong>de</strong>radas um elemento importante,<br />

especialmente do ponto <strong>de</strong> vista dos administradores <strong>de</strong> gran<strong>de</strong>s servidores <strong>de</strong> correio<br />

eletrônico. Há muita controvérsia, entretanto, sobre a efetivida<strong>de</strong> <strong>de</strong>ssas listas ao longo<br />

143


do tempo. Para fornecer mais informações a esse respeito, o spampot mantém um acompanhamento<br />

da efetivida<strong>de</strong> da lista Spamhaus Zen 1 , uma das listas consi<strong>de</strong>radas mais<br />

eficazes na i<strong>de</strong>ntificação <strong>de</strong> máquinas que enviam spam. Para cada conexão recebida, o<br />

coletor verifica o status daquele en<strong>de</strong>reço IP na lista e armazena o resultado.<br />

Conexões concorrentes. Além das opções anteriores, o coletor po<strong>de</strong> ser configurado<br />

para limitar on número <strong>de</strong> conexões concorrentes permitidas, bem como restringir<br />

o número <strong>de</strong> conexões simultâneas <strong>de</strong> uma mesma origem. Esse mecanismo po<strong>de</strong><br />

ser usado para evitar que transmissores <strong>de</strong> maior capacida<strong>de</strong> “monopolizem” o spampot,<br />

abrindo diversas conexões ao mesmo tempo e se valendo do princípio <strong>de</strong> controle <strong>de</strong> congestionamento<br />

do protocolo TCP para garantir uma fração maior da banda <strong>de</strong> acesso ao<br />

computador atacado.<br />

2.2. Opções <strong>de</strong> configuração utilizados no experimento<br />

Para avaliar o comportamento dos spammers, consi<strong>de</strong>ramos então as quatro dimensões<br />

<strong>de</strong> configuração disponíveis: (i) o repasse <strong>de</strong> mensagens <strong>de</strong> teste, (ii) o tipo <strong>de</strong> protocolo<br />

vulnerável, (iii) a <strong>de</strong> rejeição <strong>de</strong> en<strong>de</strong>reços encontrados em listas negras e (iv) restrições<br />

ao número <strong>de</strong> conexões aceitas concorrentemente. Com a combinação <strong>de</strong>sses fatores,<br />

cada um com dois níveis, temos 16 cenários diferentes que <strong>de</strong>vem ser consi<strong>de</strong>rados no<br />

experimento fatorial.<br />

No restante <strong>de</strong>ste trabalho, em diversos momentos é importante nos referirmos<br />

ao cenário <strong>de</strong> coleta consi<strong>de</strong>rado. Cada cenário foi i<strong>de</strong>ntificado como uma sequência <strong>de</strong><br />

quatro bits, um para cada dimensão na or<strong>de</strong>m apresentada, indicando quais variáveis <strong>de</strong><br />

configuração estava ativas em cada caso. Nos resultados a seguir, essa notação é usada<br />

em alguns casos por limitações <strong>de</strong> espaço. Outra forma também adotada, ainda compacta<br />

mas <strong>de</strong> mais fácil interpretação, consiste em utilizar as abreviaturas TMSG, SMTP, DNBL<br />

e CLIM para i<strong>de</strong>ntificar, respectivamente, as opções <strong>de</strong> (i) permitir o encaminhamento <strong>de</strong><br />

mensagens, (ii) limitar o abuso ao protocolo SMTP, (iii) negar conexão a máquinas que<br />

figurem em listas <strong>de</strong> bloqueio da SpamHaus e (iv) limitar o número <strong>de</strong> conexões concorrentes.<br />

Para facilitar a interpretação, essas abreviaturas são concatenadas para gerar<br />

uma sequência posicional. Assim sendo, TMSG.SMTP.DNBL.CLIM representa todas a<br />

configuração em que as mensagens <strong>de</strong> teste são repassadas, apenas o protocolo SMTP<br />

está disponível, a lista <strong>de</strong> bloqueio da Spamhaus é utilizada e há limites para conexões<br />

simulâneas. Os casos em que aquelas configurações particulares não ativadas são representadas<br />

pela sequência “‘----”, que indica, <strong>de</strong>pen<strong>de</strong>ndo da posição, que (i) o repasse<br />

<strong>de</strong> mensagens <strong>de</strong> teste não é permitido, ou (ii) os protocolos <strong>de</strong> proxy (HTTP, SOCKS)<br />

também são emulados, ou (iii) não há rejeição <strong>de</strong> conexões por listas <strong>de</strong> bloqueio, ou (iv)<br />

não á restrições ao número <strong>de</strong> conexões concorrentes. Nas discussões a seguir, além <strong>de</strong>ssas<br />

convenções a seguir, adotamos o uso do asterisco (*) para indicar quando <strong>de</strong>sejamos<br />

agrupar cenários in<strong>de</strong>pen<strong>de</strong>ntemente <strong>de</strong> alguma variável (p.ex.,----.SMTP.*.* representa<br />

todas as configurações que não encaminham mensagens <strong>de</strong> teste e emulam apenas<br />

mail relay).<br />

2.3. Arquitetura <strong>de</strong> coleta<br />

Para cada um dos 16 cenários um coletor <strong>de</strong>ve ser instanciado. Como o coletor não exige<br />

uma máquina com muitos recursos, a solução adotada foi uma solução <strong>de</strong> virtualização<br />

1 http://www.spamhaus.org/zen/<br />

144


<strong>de</strong> máquinas para implementar os 16 cenários como 16 máquinas virtuais executando<br />

em uma mesma máquina física. O uso <strong>de</strong> virtualização garante o isolamento entre os<br />

recursos <strong>de</strong> hardware <strong>de</strong> cada máquina, evitando efeitos inesperados por interferência<br />

entre coletores, e permite um melhor aproveitamento dos recursos computacionais do<br />

laboratório.<br />

Como plataforma <strong>de</strong> virtualização utilizamos o VirtualBox versão 3.2.12, uma<br />

plataforma <strong>de</strong> código aberto, executada em um sistema Linux com kernel 2.6 (Debian<br />

GNULinux 5.0). Cada máquina virtual tem um en<strong>de</strong>reço IP único, mas o acesso <strong>de</strong> re<strong>de</strong><br />

externo é feito compartilhando uma única interface <strong>de</strong> re<strong>de</strong> real através <strong>de</strong> um comutador<br />

virtual (a linux bridge) que conecta as interfaces virtuais <strong>de</strong> cada coletor. O canal<br />

<strong>de</strong> acesso foi fornecido pelo POP-MG (Ponto <strong>de</strong> Presença da RNP em Minas Gerais, na<br />

UFMG) com uma banda <strong>de</strong> 100 Mbps, muito superior à <strong>de</strong>manda agregada dos 16 coletores<br />

(configurados cada um com um limite <strong>de</strong> 1 Mbps). Quando a opção CLIM foi<br />

habilitada, o número <strong>de</strong> conexões simultâneas ao coletor em questão foi limitado a 250 e<br />

as conexões concorrentes <strong>de</strong> um mesmo en<strong>de</strong>reço <strong>de</strong> origem foram limitadas a três.<br />

Ao entrar em operação, cada coletor se torna visível para máquinas que façam varreduras<br />

<strong>de</strong> portas pelo espaço <strong>de</strong> en<strong>de</strong>reços IP. Em geral, cada coletor leva algumas horas<br />

para ser i<strong>de</strong>ntificado pelo primeiro processo <strong>de</strong> varredura e em alguns dias o volume <strong>de</strong><br />

acessos atinge níveis mais altos, apesar do tráfego diário continuar a variar razoavelmente<br />

ao longo dos dias. Toda a análise realizada neste trabalho consi<strong>de</strong>ra dados coletados <strong>de</strong>pois<br />

que todos os coletores já estavam ativos por mais <strong>de</strong> um mês, o que garante que todos<br />

já tinham se tornado bastante visíveis na re<strong>de</strong>, ainda mais consi<strong>de</strong>rando-se que utilizavam<br />

en<strong>de</strong>reços IP adjacentes — se um dos coletores foi acessado por uma varredura, muito<br />

provavelmente todos os <strong>de</strong>mais o seriam no mesmo processo.<br />

3. Resultados<br />

A arquitetura <strong>de</strong> coleta foi colocada em operação em um servidor <strong>de</strong> gran<strong>de</strong> porte do<br />

projeto, instalado nas <strong>de</strong>pendências do POP-MG. Os 16 cenários <strong>de</strong> coleta foram configurados<br />

como máquinas virtuais e colocadas em operação simultaneamente. A coleta foi<br />

iniciada em 22/12/2010 e durou até 22/07/2011. Para evitar efeitos in<strong>de</strong>sejados para a<br />

análise, todos os dias durante o período <strong>de</strong> coleta em que um ou mais coletores não estava<br />

em operação foram retirados do conjunto <strong>de</strong> análise. Nesse processo, 97 dias foram expurgados<br />

da coleta (houve um gran<strong>de</strong> número <strong>de</strong> falhas <strong>de</strong> energia <strong>de</strong>vido ao período <strong>de</strong><br />

chuvas). O conjunto final consi<strong>de</strong>rado seguro para análise é composto por 116 dias naquele<br />

período <strong>de</strong> coleta. A tabela 1 indica alguns dos gran<strong>de</strong>s números relativos à coleta.<br />

Período: 22/12/2010 a 22/07/2011 (213 dias)<br />

Dias consi<strong>de</strong>rados: 116<br />

Tráfego total (GB): 3.495<br />

Mensagens coletadas: 182.564.598<br />

Conexões registradas: 453.033<br />

Tabela 1. Dados gerais sobre a coleta utilizada<br />

O experimento fatorial nos permite i<strong>de</strong>ntificar os gran<strong>de</strong>s fatores <strong>de</strong> impacto na<br />

coleta. Por limitações <strong>de</strong> espaço não apresentamos aqui os resultados da análise segundo<br />

145


o princípio do fatorial 2 k r, mas os resultados <strong>de</strong>ssa análise se refletem nos resultados<br />

da discussão apresentada a seguir. Nesta seção avaliamos os dados agregados por coletor,<br />

rankings associados às diversas métricas e dados <strong>de</strong> distribuição para oferecer uma<br />

discussão mais <strong>de</strong>talhada para os impactos <strong>de</strong> cada fator <strong>de</strong> configuração, que po<strong>de</strong>riam<br />

também ser apresentados (<strong>de</strong> forma mais resumida) através dos resultados do fatorial.<br />

A tabela 2 apresenta os valores agregados das métricas consi<strong>de</strong>radas durante esta<br />

análise. A or<strong>de</strong>m dos cenários na tabela foi escolhida para facilitar a discussão.<br />

Duas primeiras características dos dados são claramente visíveis com relação ao<br />

ao volume <strong>de</strong> tráfego coletado: o impacto da restrição da coleta ao comportamento <strong>de</strong><br />

open mail relay apenas (SMTP) e da restrição ao número <strong>de</strong> conexões concorrentes.<br />

Bits Abreviaturas Volume (GB) Mensagens Conexões IPs<br />

0000 ----.----.----.---- 734,34 19.451.340 13.031 2.498<br />

0001 ----.----.----.CLIM 281,46 10.396.105 10.290 2.051<br />

0010 ----.----.DNBL.---- 562,36 16.087.849 9.513 688<br />

0011 ----.----.DNBL.CLIM 324,25 24.563.202 14.766 828<br />

1010 TMSG.----.DNBL.---- 503,23 17.127.447 10.059 734<br />

1011 TMSG.----.DNBL.CLIM 223,27 13.324.938 6.372 838<br />

1000 TMSG.----.----.---- 450,45 17.981.985 64.582 26.421<br />

1001 TMSG.----.----.CLIM 217,48 17.246.326 71.329 32.710<br />

1100 TMSG.SMTP.----.---- 101,76 28.437.165 125.486 73.332<br />

1101 TMSG.SMTP.----.CLIM 86,36 17.785.180 122.243 64.514<br />

1110 TMSG.SMTP.DNBL.---- 3,36 53.248 1.965 439<br />

1111 TMSG.SMTP.DNBL.CLIM 6,51 108.705 2.850 505<br />

0100 ----.SMTP.----.---- 0 (655 KB) 474 264 199<br />

0101 ----.SMTP.----.CLIM 0 (573 KB) 480 251 198<br />

0110 ----.SMTP.DNBL.---- 0 (82 KB) 76 16 11<br />

0111 ----.SMTP.DNBL.CLIM 0 (82 KB) 78 16 11<br />

Tabela 2. Resultados agregados para métricas cumulativas<br />

Mensagens <strong>de</strong> teste e open mail relays<br />

O impacto da restrição SMTP é extremamente significativo. Po<strong>de</strong>mos ver pela tabela 2<br />

que o volume coletado nos cenários apenas com mail relay é or<strong>de</strong>ns <strong>de</strong> gran<strong>de</strong>za inferior<br />

aos <strong>de</strong>mais, em particular nos casos on<strong>de</strong> o encaminhamento <strong>de</strong> mensagens <strong>de</strong> teste não<br />

é permitido (cenários ----.SMTP.*.*). Por inspeção direta das mensagens coletadas,<br />

verificamos que todas (salvo alguma exceções isoladas) são mensagens <strong>de</strong> teste, o que sugere<br />

fortemente que spammers só abusam open mail relays se conseguem enviar primeiro<br />

uma mensagem <strong>de</strong> teste.<br />

Além disso, verificamos ainda que se habilitamos a rejeição <strong>de</strong> conexões a partir<br />

<strong>de</strong> máquinas cujos en<strong>de</strong>reços aparecem em listas negras, o resultado é ainda pior. Aparentemente,<br />

a gran<strong>de</strong> maioria das máquinas <strong>de</strong> spammers que se valem <strong>de</strong>sse recurso já<br />

foram incluídas em listas negras. Isso faz sentido: se consi<strong>de</strong>rarmos que o coletor <strong>de</strong><br />

146


spam aparece se faz passar por uma máquina <strong>de</strong> usuário infectada, é do interesse do transmissor<br />

que já foi incluído em uma lista negra se escon<strong>de</strong>r atrás <strong>de</strong> outro mail relay para<br />

ocultar sua i<strong>de</strong>ntida<strong>de</strong>, especialmente se aquele relay já <strong>de</strong>monstrou sua capacida<strong>de</strong> <strong>de</strong><br />

enviar uma mensagem (<strong>de</strong> teste) com sucesso.<br />

É interessante observar o número <strong>de</strong> en<strong>de</strong>reços IP distintos observados tentando<br />

enviar mensagens em cada um daquele cenários: apenas 11 máquinas tentaram enviar<br />

mensagens nos cenários ----.STMP.DNBL.*, mas esse número já sobe para pelo menos<br />

439 nos cenários TMSG.STMP.DNBL.*. Como em um primeiro momento basicamente<br />

os mesmos 11 transmissores enviaram mensagens em todos esses casos, o encaminhamento<br />

bem sucedido das mensagens <strong>de</strong> teste daqueles onze foi suficiente para aumentar<br />

em quase 400 vezes o número <strong>de</strong> máquinas que tentaram enviar mensagens usando<br />

aqueles coletores. Nos cenários *.STMP.----.* (sem rejeição baseada em listas negras),<br />

o encaminhamento <strong>de</strong> mensagens <strong>de</strong> teste fez com que o número <strong>de</strong> máquinas diferentes<br />

passasse <strong>de</strong> 198 para 64.514 no pior caso, um aumento <strong>de</strong> mais <strong>de</strong> 325 vezes. Esse<br />

comportamento sugere claramente que mensagens <strong>de</strong> teste estão associadas à atuação <strong>de</strong><br />

botnets: <strong>de</strong>pois que uma mensagem <strong>de</strong> teste é entregue com sucesso, a i<strong>de</strong>ntificação da<br />

máquina supostamente vulnerável é distribuído entre vários computadores da re<strong>de</strong>, que<br />

passaram todos a se aproveitar da máquina disponível.<br />

O impacto da limitação <strong>de</strong> conexões concorrentes<br />

O segundo fator i<strong>de</strong>ntificado pelo experimento fatorial como responsável por variações<br />

no volume <strong>de</strong> mensagens foi a limitação no número <strong>de</strong> conexões simultâneas permitidas.<br />

Esse impacto po<strong>de</strong> ser observado ao compararmos os pares <strong>de</strong> cenários que diferem apenas<br />

pelo fator CLIM: aqueles que têm a limitação recebem um volume menor <strong>de</strong> tráfego<br />

que aqueles que não têm a limitação. Isso é um primeiro indício <strong>de</strong> que há máquinas<br />

<strong>de</strong> spammers que utilizam muitas conexões em paralelo para aumentar sua taxa <strong>de</strong> transmissão<br />

(como TCP tem um sistema <strong>de</strong> controle <strong>de</strong> congestionamento que visa distribuir a<br />

banda entre fluxos, um transmissor com mais conexões teria uma fração maior da banda<br />

disponível). Em situações sem limitadores, esses transmissores po<strong>de</strong>m eclipsar outras<br />

fontes <strong>de</strong> spam e aumentar seu aproveitamento da máquina abusada.<br />

Configurações antagônicas com efeitos semelhantes<br />

Se observarmos os diversos valores exibidos na tabela 2, notaremos que não há um padrão<br />

comum às métricas (exceto entre conexões e número <strong>de</strong> en<strong>de</strong>reços IP <strong>de</strong> origem distintos).<br />

O volume <strong>de</strong> tráfego observado por cada cenário não apresenta grupos notáveis,<br />

apesar <strong>de</strong> alguns pontos merecerem uma discussão posteriormente. Já no número <strong>de</strong> mensagens,<br />

temos dois cenários, TMSG.SMTP.----.---- e ----.----.DNBL.CLIM,<br />

com configurações opostas, que recebem o maior número <strong>de</strong> mensagens; <strong>de</strong>pois, um<br />

grupo com configurações variadas com valores semelhantes e dois cenários com resultados<br />

ligeiramente inferiores. Claramente, há uma gran<strong>de</strong> variação entre os tipos <strong>de</strong> mensagens,<br />

pois o primeiro e o segundo cenários com mais mensagens são apenas o nono e o<br />

quinto, respectivamente, em volume <strong>de</strong> tráfego. Além disso, os três cenários com maior<br />

número <strong>de</strong> conexões são nono, décimo e oitavo, respectivamente, em número <strong>de</strong> mensa-<br />

147


gens. Já os três cenários com o maior volume <strong>de</strong> tráfego observado são apenas o sexto,<br />

nono e oitavo em termos <strong>de</strong> número <strong>de</strong> conexões e en<strong>de</strong>reços IP distintos observados.<br />

Em relação ao cenário ----.----.----.----, certamente as condições <strong>de</strong><br />

emular proxies e mail relay, não rejeitar conexões e não limitar o número <strong>de</strong> conexões<br />

são todas conceitualmente benéficas para um maior volume <strong>de</strong> coleta. Entretanto, em<br />

um primeiro momento, esperava-se que a configuração com ainda mais flexibilida<strong>de</strong><br />

(TMSG.----.----.----, que repassa mensagens <strong>de</strong> teste) recebesse o maior volume<br />

<strong>de</strong> tráfego. Entretanto, como vimos, o repasse das mensagens <strong>de</strong> teste causa o aumento<br />

do abuso da máquina por botnets com mensagens menores. Esse abuso gera mais conexões<br />

<strong>de</strong> curta duração para aquele cenário, que po<strong>de</strong>m limitar a banda disponível para<br />

os gran<strong>de</strong>s transmissores.<br />

Já o cenário ----.----.DNBL.CLIM, por não repassar mensagens <strong>de</strong> teste,<br />

seria a princípio um alvo maior para os mesmos transmissores <strong>de</strong> maior volume e mensagens<br />

maiores, pelo que se esperava um menor número <strong>de</strong> mensagens nesse caso (certamente,<br />

menos que segundo lugar nessa métrica). Nesse caso, uma análise dos en<strong>de</strong>reços<br />

encontrados entre os maiores transmissores naquele caso indica um conjunto gran<strong>de</strong> <strong>de</strong><br />

máquinas <strong>de</strong> uma mesma faixa <strong>de</strong> en<strong>de</strong>reços (184.95.36/23), com um volume <strong>de</strong> tráfego<br />

significativo, mas com mensagens bem menores que as dos transmissores que aparecem<br />

nos primeiros lugares. O en<strong>de</strong>reço que envia o maior volume (terceiro em número <strong>de</strong> mensagens)<br />

tem uma média <strong>de</strong> 55 KB por mensagem e outros três encontrados entre os cinco<br />

primeiros nas duas listas têm médias acima <strong>de</strong> 20 KB por mensagem. Já as máquinas<br />

daquela faixa <strong>de</strong> en<strong>de</strong>reços enviam mensagens <strong>de</strong> 3,5 KB em média (daí, uma contagem<br />

maior <strong>de</strong> mensagens sem um volume tão significativo. Aparentemente, essas máquinas<br />

pertencem a um mesmo spammer e tiveram seu acesso facilitado naquele cenário exatamente<br />

pelas condições mais restritivas para os transmissores mais pesados.<br />

O abuso a proxies está associado a spammers com mais recursos<br />

Nas estatísticas <strong>de</strong> trabalhos anteriores do grupo Spammining, coletores semelhantes aos<br />

utilizados neste trabalho, quando emulando tanto proxies quanto mail relays, observam<br />

que os primeiros são responsáveis por mais <strong>de</strong> 90 % do volume e do número <strong>de</strong> mensagens<br />

[Steding-Jessen et al. 2008]. Estatísticas <strong>de</strong> análise das coletas realizadas pelo<br />

Cert.br indicam que atualmente certa <strong>de</strong> 8 % das mensagens seja enviadas por STMP 2<br />

Entretanto, vemos que quando o coletor oferece apenas a emulação <strong>de</strong> mail relay, o<br />

volume <strong>de</strong> tráfego coletado equivale a 23 % do tráfego coletado por uma configuração<br />

equivalente que também emule proxies abertos (TMSG.SMTP.----.----: 101 GB;<br />

TMSG.----.----.----: 450 GB). Isso, somado aos fatos <strong>de</strong> haver proporcionalmente<br />

muito menos en<strong>de</strong>reços IP nos cenários que emulam proxies, e <strong>de</strong>sses cenários<br />

serem responsáveis pelos maiores volumes <strong>de</strong> tráfego, sugere que os transmissores que<br />

atacam essas máquinas enviam um volume elevado <strong>de</strong> mensagens. Além disso, o fato da<br />

restrição do número <strong>de</strong> conexões concorrentes causar uma redução no volume <strong>de</strong> tráfego<br />

para cenários semelhantes também sugere que os abusos a proxies po<strong>de</strong>m ser levados a<br />

cabo por máquinas que abrem um gran<strong>de</strong> número <strong>de</strong> conexões paralelas, para aumentar<br />

sua taxa para o <strong>de</strong>stino e assim ganhar um vantagem sobre outros spammers.<br />

2 http://kolos.cert.br, acesso restrito.<br />

148


Para melhor enten<strong>de</strong>rmos o comportamento <strong>de</strong>sses transmissores com mais recursos,<br />

observamos os en<strong>de</strong>reços IPs i<strong>de</strong>ntificados com maiores transmissores em cada<br />

cenário, tanto em volume <strong>de</strong> tráfego quanto em número <strong>de</strong> mensagens. Por limitações <strong>de</strong><br />

espaço, apenas reportamos os resultados aqui; uma <strong>de</strong>scrição <strong>de</strong>talhada <strong>de</strong>sses resultados<br />

po<strong>de</strong> ser encontrada em [Silva 2011]. Nossa análise dos dados revela que:<br />

• os oito en<strong>de</strong>reços com mais mensagens também tiveram maior volume <strong>de</strong> tráfego;<br />

• esses oito en<strong>de</strong>reços foram responsáveis por 64 % do tráfego, mas apenas 34 %<br />

das mensagens, o que sugere que enviam mensagens maiores;<br />

• nenhum <strong>de</strong>sses en<strong>de</strong>reços aparecem nos cenários que só emulavam mail relays;<br />

• nos cenários com proxies, dos 15 primeiros en<strong>de</strong>reços do ranking geral, 14 <strong>de</strong>les<br />

aparecem no topo em cada cenário que não usa listas negras;<br />

• nos cenários com proxies que usam listas negras, encontra-se ainda oito dos quinze<br />

en<strong>de</strong>reços i<strong>de</strong>ntificados com maiores transmissores;<br />

• as distribuições <strong>de</strong> volume <strong>de</strong> tráfego parecem ser mais <strong>de</strong>siguais nos casos com<br />

proxies: a razão <strong>de</strong> volume entre o primeiro e o décimo-quinto en<strong>de</strong>reços do ranking<br />

é superior a 24 em todos esses casos, chegando a mais <strong>de</strong> 1000 em um cenário<br />

(nos cenários com mail relay apenas, essa razão não ultrapassa 5,2;<br />

• os cenários que utilizam listas negras e que limitam conexões concorrentes ten<strong>de</strong>m<br />

a ter mais en<strong>de</strong>reços entre os maiores que não aparecem na lista geral.<br />

Todos esses resultados apontam para o fato do abuso a proxies ser coor<strong>de</strong>nado<br />

a partir <strong>de</strong> poucas máquinas, com boa conectivida<strong>de</strong> e que utilizam múltiplas conexões<br />

simultânas para se aproveitar ao máximo das máquinas vulneráveis que atacam. Além<br />

disso, as mensagens enviadas nesse tipo <strong>de</strong> ataque ten<strong>de</strong>m a ser maiores que as enviadas<br />

utilizando-se botnets e open mail relays, em geral.<br />

Tamanhos <strong>de</strong> mensagens<br />

Consi<strong>de</strong>rando a adição da informação <strong>de</strong> tamanho médio <strong>de</strong> mensagens utilizada<br />

na análise anterior, a tabela 3 apresenta um conjunto <strong>de</strong> métricas <strong>de</strong>rivadas das<br />

métricas acumuladas <strong>de</strong>scritas anteriormente. Novamente, po<strong>de</strong>mos ignorar o grupo<br />

----.SMTP.*.*, cujo comportamento restrito já foi discutido anteriormente.<br />

Um comportamento que chama a atenção é aquele relacionado aos tamanhos<br />

das mensagens. Ignorando o grupo ----.SMTP.*.*, temos três categorias: em dois<br />

cenários, o tamanho médio das mensagens fica acima <strong>de</strong> 62 KB; outros cinco recebem<br />

na or<strong>de</strong>m <strong>de</strong> poucas <strong>de</strong>zenas <strong>de</strong> KB por mensagem e dois recebem até 5 KB por mensagem.<br />

Esse último grupo é composto pelos cenários TMSG.SMTP.*.*, o que nos permite<br />

afirmar que botnets observadas enviam mensagens pequenas, com algumas conexões entregando<br />

centenas <strong>de</strong> mensagens <strong>de</strong> cada vez.<br />

Escolhemos um cenário em cada grupo para uma análise por amostragem das<br />

mensagens: ----.----.----.----, que tem o maior volume <strong>de</strong> tráfego total, mas<br />

apenas o terceiro número <strong>de</strong> mensagens, com a média <strong>de</strong> quase 40 KB por mensagem;<br />

TMSG.SMTP.----.----, que tem o maior número <strong>de</strong> mensagens, mas é apenas o<br />

nono em volume <strong>de</strong> tráfego, com média <strong>de</strong> pouco menos <strong>de</strong> 4 KB por mensagem; e<br />

TMSG.SMTP.DNBL.CLIM, que tem volume e número <strong>de</strong> mensagens relativamente baixos,<br />

mas tem média <strong>de</strong> mais <strong>de</strong> 60 KB por mensagem.<br />

149


Bits Abreviaturas msgs/con MB/con KB/msg conex/IP<br />

0010 ----.----.DNBL.---- 1.691,1 60,5 36,7 13,8<br />

0000 ----.----.----.---- 1.492,7 57,7 39,6 5,2<br />

1010 TMSG.----.DNBL.---- 1.702,7 51,2 30,8 13,7<br />

1011 TMSG.----.DNBL.CLIM 2.091,2 35,9 17,6 7,6<br />

0001 ----.----.----.CLIM 1.010,3 28,0 28,4 5,0<br />

0011 ----.----.DNBL.CLIM 1.663,5 22,5 13,8 17,8<br />

1000 TMSG.----.----.---- 278,4 7,1 26,3 2,4<br />

1001 TMSG.----.----.CLIM 241,8 3,1 13,2 2,2<br />

1111 TMSG.SMTP.DNBL.CLIM 38,1 2,3 62,8 5,6<br />

1110 TMSG.SMTP.DNBL.---- 27,1 1,8 66,1 4,5<br />

1100 TMSG.SMTP.----.---- 226,6 0,8 3,8 1,7<br />

1101 TMSG.SMTP.----.CLIM 145,5 0,7 5,1 1,9<br />

Tabela 3. Resultados agregados para métricas relativas<br />

As mensagens observadas no cenário TMSG.SMTP.----.----, associado a<br />

botnets em geral, são mensagens <strong>de</strong> spam curtas, contendo apenas texto em HTML e,<br />

frequentemente, links que parecem apontar para sites <strong>de</strong> propaganda e venda.<br />

As mensagens no cenário ----.----.----.---- se divi<strong>de</strong>m em geral em<br />

dois grupos, um <strong>de</strong> mensagens <strong>de</strong> spam <strong>de</strong> aproximadamente 4 KB, frequentemente com<br />

conteúdo em HTML e alguns links que levam a sites <strong>de</strong> anúncio/venda <strong>de</strong> produtos após<br />

alguns redirecionamentos, e outro <strong>de</strong> mensagens maiores, por volta <strong>de</strong> 65 KB, formadas<br />

por documentos codificados em mime, usualmente PDF. Um teste simples com diversos<br />

cenários nessa categoria sugere que as variações na média <strong>de</strong> volume por mensagem se<br />

<strong>de</strong>ve a uma combinação <strong>de</strong> quantida<strong>de</strong>s diferentes <strong>de</strong> mensagens <strong>de</strong>sses dois tipos.<br />

Já as mensagens encontradas no cenário TMSG.SMTP.DNBL.CLIM compunham<br />

um conjunto menor (provavelmente <strong>de</strong>vido ao comportamento mais restritivo do cenário).<br />

Nesse caso encontramos uma combinação <strong>de</strong> mensagens codificadas em mime, sendo um<br />

conjunto com aproximadamente 10 KB por mensagem e frequentemente contendo mime<br />

mal formado, e outro com documentos PDF <strong>de</strong> por volta <strong>de</strong> 200 KB. Aparentemente, o<br />

material coletado nesse cenário (e no TMSG.SMTP.DNBL.----) representam um outro<br />

comportamento diferente do dominante que havia sido i<strong>de</strong>ntificado antes para botnets.<br />

Devido ao volume relativamente reduzido, uma análise mais longa po<strong>de</strong> ser necessária<br />

para <strong>de</strong>terminar se esse comportamento realmente se <strong>de</strong>staca, ou se ele foi apenas <strong>de</strong>vido<br />

a um conjunto <strong>de</strong> dados reduzido.<br />

Relações entre volume e tamanho <strong>de</strong> mensagens<br />

A discussão anterior sobre volumes <strong>de</strong> tráfego e número <strong>de</strong> mensagens sugere que os<br />

comportamentos das máquinas po<strong>de</strong>m se distribuir por um espaço amplo. Uma análise<br />

das distribuições <strong>de</strong> número <strong>de</strong> mensagens enviadas por cada en<strong>de</strong>reço <strong>de</strong> origem e <strong>de</strong><br />

volume <strong>de</strong> tráfego gerado mostram realmente distribuições bastante <strong>de</strong>sbalanceadas.<br />

A diferença entre as máquinas <strong>de</strong> alta capacida<strong>de</strong> que abusam proxies e enviam<br />

muitas mensagens, e as máquinas <strong>de</strong> botnets, que enviam cada uma poucas mensagens, e<br />

150


normalmente menores, po<strong>de</strong> ser visualizada ao representarmos cada transmissor em um<br />

gráfico <strong>de</strong> número <strong>de</strong> mensagens por volume <strong>de</strong> tráfego transmitido (um scatter plot). A<br />

figura 2 mostra esse resultado para os mesmos cenários consi<strong>de</strong>rados anteriormente.<br />

Figura 2. Relação entre volume <strong>de</strong> tráfego e número <strong>de</strong> mensagens<br />

Na figura, fica claro o comportamento bastante regular das máquinas que abusam<br />

os cenários que só emulam open relay (1100 e 1111), com uma tendência que sugere<br />

que a gran<strong>de</strong> maioria dos transmissores naqueles cenários enviam mensagens <strong>de</strong> mesmo<br />

tamanho. Já nos cenários que emulam proxies, como o 0000, alguns transmissores se<br />

<strong>de</strong>stacam com volumes <strong>de</strong> mensagens e tráfego muito superiores aos <strong>de</strong>mais. Já que esses<br />

transmissores enviam muito mais que os <strong>de</strong>mais e estão presentes em diversos cenários, o<br />

gráfico para o padrão geral é semelhante. Nele po<strong>de</strong>-se inclusive perceber que a inclinação<br />

da reta gerada pelos computadores que transmitem menos mensagens (botnets) é bem<br />

menor, confirmando que os transmissores <strong>de</strong> maior capacida<strong>de</strong> enviam mensagens bem<br />

maiores, em geral.<br />

Se gerarmos os mesmos gráficos retirando os transmissores mais pesados <strong>de</strong> cada<br />

cenário (figura 3), o comportamento regular dos transmissores <strong>de</strong> menor capacida<strong>de</strong> se<br />

torna mais claro, tanto no agregado, quanto no cenário 1111. O cenário 1100 já tinha<br />

um padrão bastante regular, sendo pouco afetado. Já o cenário 0000, por não repassar as<br />

mensagens <strong>de</strong> teste e por isso não ser visível para botnets que abusam mail relays, tem<br />

um padrão mais disperso, mas ainda assim po<strong>de</strong>-se perceber uma regularida<strong>de</strong> maior nos<br />

151


Figura 3. Relação entre volume <strong>de</strong> tráfego e número <strong>de</strong> mensagens<br />

tamanhos das mensagens (relação volume por número <strong>de</strong> mensagens).<br />

4. Trabalhos Relacionados<br />

O uso <strong>de</strong> honeypots se estabeleceu como um método eficaz para estudo e prevenção<br />

em ataques em re<strong>de</strong> [Provos and Holz 2007]. Honeypots po<strong>de</strong>m ter as mais variadas<br />

aplicações, como base <strong>de</strong> estudo para botnets [John et al. 2009], método <strong>de</strong> <strong>de</strong>fesa para<br />

ataques <strong>de</strong> negação <strong>de</strong> serviço [Sardana and Joshi 2009], entre outros.<br />

A base da arquitetura <strong>de</strong> coleta <strong>de</strong>ste estudo é um honeypot virtual. O conceito<br />

<strong>de</strong> um framework para coleta <strong>de</strong> spam como o <strong>de</strong>scrito tem origem no agrupamento <strong>de</strong><br />

diversos conceitos, metodologias que foram sendo aperfeiçoadas na literatura e no <strong>de</strong>senvolvimento<br />

interno ao próprio grupo <strong>de</strong> pesquisa 3 . A <strong>de</strong>cisão <strong>de</strong> analisar os spammers<br />

<strong>de</strong> forma mais direta tem inspiração no trabalho [Pathak et al. 2008], que utiliza o tipo<br />

<strong>de</strong> honeypot <strong>de</strong>scrito em [Provos 2004]. O coletor usado na pesquisa é uma atualização<br />

do projeto apresentado em [Steding-Jessen et al. 2008], mantido pelo Cert.br, com várias<br />

3 O projeto Spammining, parceria entre o CERT.br e o Departamento <strong>de</strong> Ciência da Computação da<br />

UFMG.<br />

152


aperfeiçoamentos na técnica e atualizações da estrutura.<br />

Trabalhos focados em enten<strong>de</strong>r a formação e a origem d spam [Shue et al. 2009]<br />

mostram que apesar <strong>de</strong> novas técnicas como o uso <strong>de</strong> botnets para o envio <strong>de</strong> spam,<br />

o abuso <strong>de</strong> open relays na disseminação do spam é muito expressivo. Nossos resultados<br />

mostram que os dois princípios parecem estar relacionados ao invés <strong>de</strong> serem mutuamente<br />

exclusivos. É interessante verificar se o tráfego diário gerado por cada open<br />

relay na Internet continua significativo mesmo com diversas restrições <strong>de</strong> re<strong>de</strong>. Diversos<br />

estudos foram feitos utilizando diretamente ou indiretamente os conceitos por trás do<br />

abuso <strong>de</strong> open relays [Pathak et al. 2008, Kreibich et al. 2008, Steding-Jessen et al. 2008,<br />

Li and Hsieh 2006].<br />

O experimento fatorial é uma ferramenta metodológica largamente empregada<br />

na literatura em trabalhos <strong>de</strong> caracterização dada sua abordagem e confiabilida<strong>de</strong> estatística,<br />

como po<strong>de</strong> ser observado em diversos trabalhos [Mycroft and Sharp 2001,<br />

Guerrero and Labrador 2010]. A aplicação <strong>de</strong>sse método experimental permite <strong>de</strong>terminar<br />

a influência que fatores pré-<strong>de</strong>terminados têm no objeto em estudo, no caso, o comportamento<br />

dos spammers. Uma boa introdução sobre o tema é o livro <strong>de</strong> Jain [Jain 2008].<br />

5. Conclusão e Trabalhos Futuros<br />

Neste trabalho aplicamos a metodologia do experimento fatorial para analisar e comparar<br />

as influências que diversos fatores ligados à interface exposta por alvos dos spammers têm<br />

em seus comportamentos. Os diversos cenários contemplados por essa análise <strong>de</strong>monstraram,<br />

através das métricas coletadas, que existe não apenas uma correlação forte entre os<br />

fatores e as preferências dos spammers individualmente, mas que ocorre também seleção<br />

<strong>de</strong> todo o espectro <strong>de</strong> abuso que po<strong>de</strong>ria ser coletado. O formato experimental aplicado<br />

neste estudo apesar <strong>de</strong> ser muito utilizado nas mais diversas áreas do conhecimento, observamos<br />

poucos estudos com esse foco no problema <strong>de</strong> caracterização e compreensão<br />

das técnicas do envio <strong>de</strong> spam.<br />

As análises apresentadas nos permitem afirmar que realmente o comportamento<br />

exibido pelo coletor <strong>de</strong> spam afeta significativamente o tipo <strong>de</strong> mensagens e os padrões <strong>de</strong><br />

tráfego que ele recebe. Em particular, a capacida<strong>de</strong> <strong>de</strong> encaminhar mensagens <strong>de</strong> teste só<br />

tem impacto para spammers que abusam open mail relays e o padrão <strong>de</strong> en<strong>de</strong>reços observado,<br />

muito maior que o conjunto que realmente enviou mensagens <strong>de</strong> teste, sugere um<br />

esquema <strong>de</strong> disseminação <strong>de</strong> informação <strong>de</strong> botnets. Em particular, esse esquema é mais<br />

utilizado por máquinas que se encontram em listas negras, o que sugere que é utilizado<br />

exatamente como um subterfúgio para escapar <strong>de</strong>sse tipo <strong>de</strong> mecanismo As mensagens<br />

enviadas por estas ten<strong>de</strong>m a ser menores em geral. Já os proxies abertos ten<strong>de</strong>m a se tornar<br />

alvos <strong>de</strong> máquinas <strong>de</strong> alta capacida<strong>de</strong> que enviam um gran<strong>de</strong> volume <strong>de</strong> mensagens,<br />

frequentemente usando diversas conexões concorrentes, o que ten<strong>de</strong> a excluir tráfego <strong>de</strong><br />

outras fontes. Em dois cenários foram observado tráfego com padrão <strong>de</strong> botnet, mas com<br />

mensagens muito maiores que as observadas nos outros casos. Como o volume nesse<br />

cenário foi reduzido, uma coleta mais longa seria necessária para <strong>de</strong>terminar se isso representa<br />

um outro padrão comum, ou apenas um evento isolado.<br />

Referências<br />

Giles, J. (2010). To beat spam, first get insi<strong>de</strong> its head. New Scientist, 205:20–20.<br />

153


Guerrero, C. D. and Labrador, M. A. (2010). On the applicability of available bandwidth<br />

estimation techniques and tools. Comput. Commun., 33:11–22.<br />

Jain, R. (2008). The Art Of Computer Systems Performance Analysis:Techniques for<br />

Experimental Design, Measurement, Simulation, and Mo<strong>de</strong>ling. Wiley India Pvt. Ltd.<br />

John, J. P., Moshchuk, A., Gribble, S. D., and Krishnamurthy, A. (2009). Studying spamming<br />

botnets using botlab. In NSDI’09: Proceedings of the 6th USENIX symposium on<br />

Networked systems <strong>de</strong>sign and implementation, pages 291–306, Berkeley, CA, USA.<br />

USENIX Association.<br />

Kreibich, C., Kanich, C., Levchenko, K., Enright, B., Voelker, G. M., Paxson, V., and<br />

Savage, S. (2008). On the spam campaign trail. In LEET’08: Proceedings of the 1st<br />

Usenix Workshop on Large-Scale Exploits and Emergent Threats, pages 1–9, Berkeley,<br />

CA, USA. USENIX Association.<br />

Li, F. and Hsieh, M.-H. (2006). An empirical study of clustering behavior of spammers<br />

and group-based anti-spam strategies. Proceedings of the Third Conference on Email<br />

and Anti-Spam (CEAS). Mountain View, CA.<br />

Mycroft, A. and Sharp, R. (2001). Hardware/software co-<strong>de</strong>sign using functional languages.<br />

In Margaria, T. and Yi, W., editors, Tools and Algorithms for the Construction<br />

and Analysis of Systems, volume 2031 of Lecture Notes in Computer Science, pages<br />

236–251. Springer Berlin Hei<strong>de</strong>lberg.<br />

Pathak, A., Hu, Y. C., and Mao, Z. M. (2008). Peeking into spammer behavior from<br />

a unique vantage point. In LEET’08: Proceedings of the 1st Usenix Workshop on<br />

Large-Scale Exploits and Emergent Threats, pages 1–9, Berkeley, CA, USA. USENIX<br />

Association.<br />

Provos, N. (2004). A virtual honeypot framework. In Proceedings of the 13th conference<br />

on USENIX Security Symposium - Volume 13, SSYM’04, pages 1–1, Berkeley, CA,<br />

USA. USENIX Association.<br />

Provos, N. and Holz, T. (2007). Virtual Honeypots: From Botnet Tracking to Intrusion<br />

Detection. Addison-Wesley Professional.<br />

Radicati, S. (2009). Email statistics report, 2009-2013. Relatório anual, The Radicati<br />

Group, Inc. http://www.radicati.com/.<br />

Sardana, A. and Joshi, R. (2009). An auto-responsive honeypot architecture for dynamic<br />

resource allocation and qos adaptation in ddos attacked networks. Comput. Commun.,<br />

32:1384–1399.<br />

Shue, C. A., Gupta, M., Lubia, J. J., Kong, C. H., , and Yuksel, A. (2009). Spamology: A<br />

study of spam origins. In Conference on Email and Anti Spam (CEAS).<br />

Silva, G. C. (2011). Análise <strong>de</strong> fatores que afetam o comportamento <strong>de</strong> spammers na<br />

re<strong>de</strong>. Dissertação <strong>de</strong> mestrado, Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Minas Gerais.<br />

Steding-Jessen, K., Vijaykumar, N. L., and Montes, A. (2008). Using low-interaction<br />

honeypots to study the abuse of open proxies to send spam. INFOCOMP Journal of<br />

Computer Science.<br />

154


Segmentação <strong>de</strong> Overlays P2P como Suporte para<br />

Memórias Tolerantes a Intrusões<br />

Davi da Silva Böger 1 , Joni Fraga 1 , Eduardo Alchieri 1 , Michelle Wangham 2<br />

1 Departamento <strong>de</strong> Automação e Sistemas –UFSC<br />

Florianópolis – SC – Brasil<br />

2 Grupo <strong>de</strong> Sistemas Embarcados e Distribuídos – UNIVALI<br />

São José – SC – Brasil<br />

{dsboger,fraga,alchieri}@das.ufsc.br, wangham@univali.br<br />

Abstract. This paper <strong>de</strong>scribes our experience in <strong>de</strong>veloping an infrastructure<br />

which allows building intrusion-tolerant shared memory for large-scale<br />

systems. The infrastructure makes use of a P2P overlay and of the concept of<br />

State Machine Replication (SMR). Segmentation is introduced on the key<br />

space of the overlay to allow the use of algorithms for supporting SMR. In this<br />

paper we <strong>de</strong>scribe the proposed infrastructure in its stratification and<br />

corresponding algorithms. Also, analyses of the algorithms <strong>de</strong>scribed and<br />

their respective costs are presented.<br />

Resumo. Este artigo <strong>de</strong>screve nossa experiência no <strong>de</strong>senvolvimento <strong>de</strong> uma<br />

infraestrutura que permite a construção <strong>de</strong> memórias compartilhadas<br />

tolerantes a intrusões para sistemas <strong>de</strong> larga escala. A infraestrutura faz uso<br />

<strong>de</strong> um overlay P2P e do conceito <strong>de</strong> Replicação Máquina <strong>de</strong> Estados (RME).<br />

O conceito <strong>de</strong> segmentação é introduzido sobre o espaço <strong>de</strong> chaves do overlay<br />

para permitir o uso <strong>de</strong> algoritmos <strong>de</strong> suporte à RME. No presente artigo<br />

<strong>de</strong>screvemos a infraestrutura proposta em sua estratificação e algoritmos.<br />

Além disso, realizamos uma análise da solução apresentada e dos custos<br />

envolvidos.<br />

1. Introdução<br />

As re<strong>de</strong>s par a par (peer-to-peer, P2P) correspon<strong>de</strong>m a um paradigma <strong>de</strong> comunicação<br />

que tem sido o foco <strong>de</strong> muitos trabalhos nos últimos anos. O uso <strong>de</strong>sse paradigma foi<br />

bastante popularizado na Internet, principalmente por ser a base para as aplicações <strong>de</strong><br />

compartilhamento <strong>de</strong> arquivos mo<strong>de</strong>rnas. Diversas outras aplicações já foram<br />

<strong>de</strong>senvolvidas usando P2P, como multicast e sistemas <strong>de</strong> e-mail [Steinmetz and Wehrle<br />

2005]. Apesar disso, P2P ainda é pouco utilizado em aplicações mais complexas que<br />

po<strong>de</strong>riam se beneficiar <strong>de</strong> aspectos como a escalabilida<strong>de</strong> [Baldoni et al. 2005].<br />

As principais características que tornam as re<strong>de</strong>s P2P uma arquitetura<br />

interessante para sistemas distribuídos são o uso eficiente dos recursos ociosos<br />

disponíveis na Internet e a capacida<strong>de</strong> <strong>de</strong> aumento do número <strong>de</strong> nós sem <strong>de</strong>trimento do<br />

<strong>de</strong>sempenho. Normalmente as re<strong>de</strong>s P2P oferecem primitivas <strong>de</strong> comunicação com<br />

latência e número <strong>de</strong> mensagens <strong>de</strong> or<strong>de</strong>m logarítmica em relação ao número <strong>de</strong> nós<br />

presentes na re<strong>de</strong> [Stoica et al. 2001, Rowstron and Druschel 2001].<br />

155


Apesar das suas vantagens, as re<strong>de</strong>s P2P apresentam <strong>de</strong>safios para o provimento<br />

<strong>de</strong> garantias <strong>de</strong> confiabilida<strong>de</strong>. Essas re<strong>de</strong>s normalmente são formadas dinamicamente<br />

por nós totalmente autônomos que po<strong>de</strong>m entrar e sair do sistema a qualquer momento.<br />

Essas características <strong>de</strong> dinamismo tornam difícil manter a consistência das informações<br />

distribuídas no sistema. A<strong>de</strong>mais, essas re<strong>de</strong>s não possuem uma gerência global, sendo<br />

re<strong>de</strong>s <strong>de</strong> pares normalmente abertas. Devido a essa característica, as re<strong>de</strong>s P2P po<strong>de</strong>m<br />

conter participantes maliciosos que colocam em risco o funcionamento das aplicações.<br />

Neste trabalho, é apresentada uma infraestrutura tolerante a intrusões para<br />

memórias compartilhadas em sistemas <strong>de</strong> larga escala. Esta infraestrutura faz uso das<br />

funcionalida<strong>de</strong>s <strong>de</strong> um overlay P2P estruturado e tolerante a intrusões, sobre o qual é<br />

introduzido o conceito <strong>de</strong> segmentação tomando como base a divisão do espaço <strong>de</strong><br />

chaves da re<strong>de</strong> P2P e a aplicação <strong>de</strong> técnicas <strong>de</strong> Replicação Máquina <strong>de</strong> Estados (RME)<br />

[Schnei<strong>de</strong>r 1990]. A partir <strong>de</strong> segmentos é possível garantir consistência e tolerar uma<br />

quantida<strong>de</strong> <strong>de</strong> participantes maliciosos em um sistema <strong>de</strong> memória compartilhada. A<br />

segmentação do overlay <strong>de</strong>pen<strong>de</strong> do fornecimento <strong>de</strong> uma técnica <strong>de</strong> in<strong>de</strong>xação, isto é,<br />

um mapeamento <strong>de</strong> objetos para chaves, pela aplicação <strong>de</strong> memória compartilhada.<br />

O restante do artigo está organizado da seguinte forma: a seção 2 enumera as<br />

premissas do mo<strong>de</strong>lo <strong>de</strong> sistema adotado, a seção 3 introduz a solução proposta neste<br />

trabalho, a seção 4 contém discussões sobre as propostas <strong>de</strong> nosso trabalho e coloca<br />

problemas em aberto. A seção 5 examina os trabalhos relacionados e conforta os<br />

mesmos diante <strong>de</strong> nossas soluções. A seção 6 traz as conclusões do artigo.<br />

2. Mo<strong>de</strong>lo <strong>de</strong> Sistema<br />

Consi<strong>de</strong>ramos um sistema distribuído formado por um conjunto finito <strong>de</strong> processos<br />

(ou nós) extraídos <strong>de</strong> um universo , interconectados por uma re<strong>de</strong>. Cada nó possui um<br />

en<strong>de</strong>reço único <strong>de</strong> re<strong>de</strong> e po<strong>de</strong> enviar mensagens para qualquer outro nó, <strong>de</strong>s<strong>de</strong> que<br />

conheça seu en<strong>de</strong>reço. Um nó é consi<strong>de</strong>rado correto se age <strong>de</strong> acordo com a<br />

especificação dos protocolos nos quais participa. Um nó malicioso (ou bizantino<br />

[Lamport et al. 1982]) po<strong>de</strong> agir <strong>de</strong> maneira arbitrária ou simplesmente parar em certos<br />

momentos. O sistema proposto tolera certo número <strong>de</strong> nós maliciosos durante sua<br />

execução. Assume-se que em qualquer momento da execução, no máximo nós<br />

faltosos estão presentes no sistema. O parâmetro é global e conhecido por todos os<br />

nós do sistema.<br />

Imediatamente acima da re<strong>de</strong>, encontram-se duas camadas in<strong>de</strong>pen<strong>de</strong>ntes que<br />

serão usadas para construir a camada <strong>de</strong> segmentação proposta neste trabalho. A<br />

camada <strong>de</strong> overlay, <strong>de</strong>scrita na Seção 2.1, implementa uma re<strong>de</strong> P2P sobre o sistema,<br />

com busca eficiente <strong>de</strong> nós distribuídos, e a camada <strong>de</strong> suporte à replicação, <strong>de</strong>scrita na<br />

Seção 2.2, que fornece uma abstração <strong>de</strong> Replicação Máquina <strong>de</strong> Estados (RME)<br />

[Schnei<strong>de</strong>r 1990] usada para garantir a disponibilida<strong>de</strong> e consistência das informações<br />

contidas no sistema. Em geral, os custos da RME não permitem que essa técnica seja<br />

aplicada a uma gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> nós, portanto neste trabalho dividimos o sistema<br />

Tabela 1: Camadas do Sistema<br />

Segmentação<br />

Overlay<br />

Suporte à Replicação<br />

Re<strong>de</strong><br />

156


em diversas máquinas <strong>de</strong> estados in<strong>de</strong>pen<strong>de</strong>ntes. A camada <strong>de</strong> segmentação faz uso<br />

<strong>de</strong>ssas duas e provê meios para invocar eficientemente qualquer RME do sistema. A<br />

Tabela 1 apresenta as camadas do sistema.<br />

A camada <strong>de</strong> re<strong>de</strong> é acessada a partir <strong>de</strong> duas operações: A operação<br />

envia a mensagem para o nó <strong>de</strong> en<strong>de</strong>reço . A operação<br />

aguarda o recebimento <strong>de</strong> uma mensagem qualquer . Os canais <strong>de</strong> comunicação da<br />

re<strong>de</strong> são ponto a ponto e confiáveis, ou seja, não há perda ou alteração <strong>de</strong> mensagens. O<br />

atraso na entrega das mensagens e as diferenças <strong>de</strong> velocida<strong>de</strong>s entre os nós do sistema<br />

respeitam um mo<strong>de</strong>lo <strong>de</strong> sincronia parcial [Dwork et al. 1988], no qual é garantido a<br />

terminação <strong>de</strong> protocolos <strong>de</strong> Replicação Máquina <strong>de</strong> Estados que serão usados nas<br />

camadas superiores. No entanto, não há garantia <strong>de</strong> sincronismo por toda a execução.<br />

2.1.Camada <strong>de</strong> Overlay<br />

Acima da camada <strong>de</strong> re<strong>de</strong>, assume-se a existência <strong>de</strong> um overlay que provê operações<br />

similares às re<strong>de</strong>s P2P estruturadas, como Pastry [Rowstron e Druschel 2001] e Choord<br />

[Stoica et al. 2003]. Essas re<strong>de</strong>s atribuem i<strong>de</strong>ntificadores aos nós e distribuem estes em<br />

torno <strong>de</strong> um anel lógico. Nós conhecem outros nós com i<strong>de</strong>ntificadores numericamente<br />

próximos, <strong>de</strong>nominados <strong>de</strong> vizinhos, <strong>de</strong> forma a manter a estrutura do anel. Além disso,<br />

os nós possuem tabelas <strong>de</strong> roteamento que são usadas para contatar eficientemente nós<br />

distantes no anel. Aplicações se utilizam <strong>de</strong>ssa estrutura <strong>de</strong>finindo esquemas para a<br />

distribuição <strong>de</strong> objetos pelo overlay, normalmente atribuindo chaves aos objetos e<br />

armazenando esses objetos em nós com i<strong>de</strong>ntificadores numericamente próximos a<br />

essas chaves. A busca por um objeto consiste em usar as tabelas <strong>de</strong> roteamento para<br />

encontrar nós com i<strong>de</strong>ntificador próximo à chave associada ao mesmo.<br />

Este trabalho utiliza o overlay tolerante a faltas bizantinas <strong>de</strong>finido por Castro et<br />

al. (2002), o qual apresenta a proprieda<strong>de</strong> <strong>de</strong> garantir alta probabilida<strong>de</strong> na entrega <strong>de</strong><br />

mensagens a todos nós corretos na vizinhança <strong>de</strong> uma chave, mesmo se uma quantida<strong>de</strong><br />

<strong>de</strong> nós do overlay for maliciosa. A confiabilida<strong>de</strong> da entrega é alcançada pelo envio <strong>de</strong><br />

uma mensagem por múltiplas rotas e pelo uso <strong>de</strong> tabelas <strong>de</strong> roteamento especiais que<br />

aumentam a probabilida<strong>de</strong> <strong>de</strong> que essas rotas sejam disjuntas, ou seja, não tenham nós<br />

em comum. O número <strong>de</strong> rotas disjuntas, ao superar o limite estabelecido <strong>de</strong> faltas<br />

garante a entrega das mensagens. Análises e resultados experimentais [Castro et al.<br />

2002] <strong>de</strong>monstram que a probabilida<strong>de</strong> <strong>de</strong> entrega <strong>de</strong> uma mensagem é <strong>de</strong> 99,9% se a<br />

proporção <strong>de</strong> nós maliciosos for <strong>de</strong> até 30%.<br />

O funcionamento do overlay <strong>de</strong>pen<strong>de</strong> da geração e atribuição segura <strong>de</strong><br />

i<strong>de</strong>ntificadores a nós da re<strong>de</strong>, <strong>de</strong> forma que nós maliciosos não possam escolher seu<br />

i<strong>de</strong>ntificador nem participar do overlay com múltiplas i<strong>de</strong>ntida<strong>de</strong>s. Essas proprieda<strong>de</strong>s<br />

são garantidas, por exemplo, pelo uso <strong>de</strong> certificados que associam o i<strong>de</strong>ntificador do nó<br />

a seu en<strong>de</strong>reço <strong>de</strong> re<strong>de</strong> e sua chave pública. Esses certificados são emitidos por uma<br />

autorida<strong>de</strong> certificadora (AC) confiável, que também po<strong>de</strong> ser responsável por gerar<br />

i<strong>de</strong>ntificadores aleatórios para os nós 1 . Na nossa infraestrutura, mantemos o uso <strong>de</strong>sses<br />

certificados na camada <strong>de</strong> segmentação, on<strong>de</strong> é <strong>de</strong>nominado <strong>de</strong> certificados <strong>de</strong> nó.<br />

1 Não é necessário que esta AC seja uma PKI oficial. A mesma po<strong>de</strong> ser uma comissão <strong>de</strong> gestão do sistema, um<br />

administrador, etc. O i<strong>de</strong>ntificador po<strong>de</strong> ser gerado a partir <strong>de</strong> uma função hash aplicada ao en<strong>de</strong>reço <strong>de</strong> re<strong>de</strong> do nó.<br />

157


Nas seções a seguir, é assumido o uso do overlay <strong>de</strong>finido por Castro et al.<br />

(2002), no entanto, outras construções P2P similares po<strong>de</strong>m ser utilizadas sem alteração<br />

das camadas superiores da nossa proposta. O overlay <strong>de</strong>ve suportar, então, para entrada<br />

e saída <strong>de</strong> um nó , operações ( ) e ( ) que são<br />

concretizadas através da apresentação <strong>de</strong> seu certificado ; para<br />

enviar uma mensagem para os nós vizinhos da chave ; e que<br />

entrega a mensagem para a camada superior nos nós <strong>de</strong> <strong>de</strong>stino.<br />

2.2. Camada <strong>de</strong> Suporte à Replicação<br />

A camada <strong>de</strong> replicação, que implementa protocolos para Replicação Máquinas <strong>de</strong><br />

Estados (RME) [Schnei<strong>de</strong>r 1990], é usada pelas camadas superiores para prover<br />

garantias <strong>de</strong> disponibilida<strong>de</strong> e consistência das informações mesmo em presença <strong>de</strong> nós<br />

faltosos e maliciosos. Em ambientes com ativida<strong>de</strong>s intrusivas, MEs são mantidas<br />

através do uso <strong>de</strong> algoritmos <strong>de</strong> consenso tolerantes a faltas bizantinas (p. ex. [Castro e<br />

Liskov 1999]). No presente texto não é <strong>de</strong>finido um algoritmo específico <strong>de</strong> suporte à<br />

RME. Qualquer um po<strong>de</strong> ser escolhido, <strong>de</strong>s<strong>de</strong> que tolere nós faltosos <strong>de</strong> um total <strong>de</strong><br />

no mínimo ( [Lamport et al. 1982]).<br />

A camada <strong>de</strong> replicação oferece às camadas superiores as operações:<br />

. A primeira operação garante o envio <strong>de</strong> uma<br />

mensagem m aos processos do conjunto e a segunda <strong>de</strong>fine a entrega <strong>de</strong> mensagens<br />

segundo or<strong>de</strong>nação total aos processos <strong>de</strong> . As duas operações caracterizam, portanto,<br />

um multicast com or<strong>de</strong>nação total (total or<strong>de</strong>r multicast).<br />

Como as re<strong>de</strong>s P2P são dinâmicas, assume-se o uso <strong>de</strong> algoritmos com<br />

capacida<strong>de</strong> <strong>de</strong> reconfiguração, ou seja, algoritmos que permitam a modificação na<br />

composição <strong>de</strong> processos integrantes da RME. Lamport et al. (2008) <strong>de</strong>finem formas<br />

simples para transformar um mo<strong>de</strong>lo <strong>de</strong> replicação estático em um dinâmico. No<br />

presente trabalho, é assumida a operação<br />

, que altera o parâmetro<br />

local da ME que indica o conjunto <strong>de</strong> processos. A chamada<br />

notifica a camada superior o momento em que a chamada<br />

acaba.<br />

3. Solução Proposta<br />

A Tabela 2 apresenta as camadas e operações especificadas na Seção 2. Sobre o overlay<br />

e a replicação, é <strong>de</strong>finida uma camada <strong>de</strong> segmentação, <strong>de</strong>scrita na Seção 3.1, na qual os<br />

nós do overlay são distribuídos em um conjunto <strong>de</strong> segmentos. Cada segmento executa<br />

uma RME distinta e é responsável por um conjunto <strong>de</strong> chaves do overlay.<br />

Tabela 2: Camadas e Primitivas<br />

Segmentação: ( ), ( ), , , ( ),<br />

, , ,<br />

Overlay: ( ), ( ), Suporte à Replicação: ,<br />

,<br />

, ,<br />

3.1. Camada <strong>de</strong> Segmentação<br />

Re<strong>de</strong>: ,<br />

A camada <strong>de</strong> segmentação divi<strong>de</strong> o anel lógico do overlay em segmentos compostos <strong>de</strong><br />

nós contíguos, no qual cada segmento é responsável por um intervalo <strong>de</strong> chaves do<br />

158


overlay. Para fins <strong>de</strong> disponibilida<strong>de</strong>, todos os nós do mesmo segmento armazenam o<br />

mesmo conjunto <strong>de</strong> dados replicados. A consistência <strong>de</strong>sses dados é mantida usando<br />

replicação ME reconfigurável, provido pela camada <strong>de</strong> suporte à replicação.<br />

Os segmentos são dinâmicos, ou seja, suas composições po<strong>de</strong>m mudar com o<br />

tempo a partir da entrada e saída <strong>de</strong> nós. A cada reconfiguração, um novo conjunto <strong>de</strong><br />

nós (<strong>de</strong>nominado configuração ou visão) passa a compor o segmento e a executar os<br />

algoritmos associados <strong>de</strong> suporte à RME. O número <strong>de</strong> nós <strong>de</strong> um segmento po<strong>de</strong><br />

aumentar ou diminuir, logo para evitar que segmentos fiquem com número <strong>de</strong> nós<br />

abaixo do limite <strong>de</strong> requerido pelos algoritmos <strong>de</strong> RME, po<strong>de</strong> ser necessário unir<br />

dois segmentos contíguos em um segmento maior. Por outro lado, o aumento do número<br />

<strong>de</strong> nós <strong>de</strong> um segmento para um valor muito superior a po<strong>de</strong> comprometer o<br />

<strong>de</strong>sempenho dos algoritmos <strong>de</strong> RME. Para aliviar o problema, segmentos gran<strong>de</strong>s<br />

po<strong>de</strong>m ser divididos em segmentos menores. É importante notar que reconfigurações<br />

ocorrem localmente nos segmentos e não no sistema inteiro. O número máximo <strong>de</strong> nós<br />

em um segmento é um parâmetro global do sistema <strong>de</strong>notado . Quando o<br />

segmento atinge o número <strong>de</strong> nós, é preciso dividir os membros em dois<br />

segmentos vizinhos, logo <strong>de</strong>ve ser maior ou igual a . Além disso, é<br />

necessário adicionar uma tolerância ao valor <strong>de</strong> , caso contrário, uma única saída<br />

(ou entrada) após uma divisão (ou união) <strong>de</strong> segmentos dispararia uma união (ou<br />

divisão). Esse fato po<strong>de</strong> ser explorado por nós maliciosos para provocar sucessivas<br />

uniões e divisões, <strong>de</strong>teriorando o <strong>de</strong>sempenho da RME.<br />

Segmentos são <strong>de</strong>scritos por certificados <strong>de</strong> segmento (S), que contém a lista <strong>de</strong><br />

todos os certificados <strong>de</strong> nó dos membros do segmento e um contador <strong>de</strong><br />

configurações ( incrementado a cada reconfiguração da ME. Quando ocorre<br />

uma reconfiguração, os membros do segmento antigo <strong>de</strong>ci<strong>de</strong>m o novo conjunto <strong>de</strong><br />

membros e assinam um novo certificado <strong>de</strong> segmento (ou dois, em caso <strong>de</strong> divisão do<br />

segmento). Se ocorrer uma união <strong>de</strong> segmentos, membros dos dois segmentos <strong>de</strong>vem<br />

assinar o certificado do novo segmento. Assim, cria-se uma ca<strong>de</strong>ia <strong>de</strong> assinaturas que<br />

po<strong>de</strong> ser usada para verificar a valida<strong>de</strong> <strong>de</strong> um certificado atual a partir <strong>de</strong> um segmento<br />

inicial aceito globalmente (possivelmente assinado por um administrador confiável).<br />

C p = addr pubK id σ CA<br />

privK p<br />

S p = members confId<br />

start end Σ history<br />

S p<br />

+<br />

e S p<br />

−<br />

changes<br />

reconfigCount<br />

Tabela 3: Estruturas <strong>de</strong> Dados da Camada <strong>de</strong> Segmentação<br />

é o certificado do nó p, no qual addr é o en<strong>de</strong>reço <strong>de</strong> re<strong>de</strong> do mesmo, pubK e id<br />

são, respectivamente, a chave pública e o i<strong>de</strong>ntificador no overlay <strong>de</strong> p. Esse<br />

certificado é o mesmo utilizado na camada <strong>de</strong> overlay<br />

é a chave privada do nó p correspon<strong>de</strong>nte à chave pública presente em C p e é usada<br />

em assinaturas digitais pelo nó 1 . Assume-se que mensagens recebidas com<br />

assinaturas inválidas não são processadas por nós corretos<br />

é o certificado do segmento atual <strong>de</strong> um nó p, no qual members é o conjunto dos<br />

certificados <strong>de</strong> nó dos membros atuais do segmento, confId é o contador <strong>de</strong><br />

configurações, start end = K(S p ) é o intervalo <strong>de</strong> chaves do overlay pelas<br />

quais o segmento é responsável, Σ é um conjunto <strong>de</strong> assinaturas e history é a<br />

ca<strong>de</strong>ia <strong>de</strong> certificados representando o caminho <strong>de</strong> evolução do segmento atual<br />

são certificados <strong>de</strong> segmentos vizinhos do segmento <strong>de</strong> S p , representando,<br />

respectivamente, o seu sucessor e seu antecessor no anel <strong>de</strong> segmentos. Ambos<br />

apresentam a mesma estrutura <strong>de</strong> S p<br />

conjunto <strong>de</strong> alterações na lista <strong>de</strong> membros a serem aplicadas na próxima<br />

reconfiguração. A entrada do nó i é <strong>de</strong>notada por i e a saída por − i<br />

contador <strong>de</strong> nós que solicitam reconfiguração na configuração atual<br />

159


1. operation SegFind k k<br />

2. /* Código do cliente p */<br />

3. keys ← ∅ /* conjunto <strong>de</strong> chaves cobertas pelos certificados recebidos */<br />

4. OverlaySend(k FIND C p S p k k σ p ) /* envia mensagem assinada usando o overlay */<br />

5. while k k ∖ keys ≠ ∅ do /* teste <strong>de</strong> cobertura completa */<br />

6. /* aguarda respostas dos servidores */<br />

7. wait for Receive( FIND_OK C q S q σ q ) /* recebe resposta <strong>de</strong> algum servidor q */<br />

8. if K(S q ) ∩ keys ≠ ∅ ∧ ValidHistory(S q ) then /* testa segmento */<br />

9. keys ← keys ∪ K(S q ) /* atualiza cobertura <strong>de</strong> chaves */<br />

10. SegFindOk(S q ) /* notifica que segmento foi encontrado */<br />

11. end if<br />

12. end while<br />

13. /* Código do servidor q */<br />

14. upon OverlayDeliver( FIND C p S p k k σ p ) do<br />

15. if k k ∩ K(S q ) ≠ ∅ then<br />

16. Send(C p . addr FIND_OK C q S q σ q ) /* envia resposta assinada */<br />

17. if k S q . end then /* segmento não cobre espaço <strong>de</strong> chaves; repassar requisição */<br />

18. OverlaySend(S q . end FIND C p S p k k σ p )<br />

19. end if<br />

20. end if<br />

21. end operation<br />

Cada segmento executa uma RME que é responsável por parte do estado da<br />

aplicação. Para invocar uma requisição em uma máquina <strong>de</strong> estados, um cliente <strong>de</strong>ve<br />

primeiro encontrar o segmento responsável pela máquina (usando a camada <strong>de</strong> overlay)<br />

e <strong>de</strong>pois enviar a requisição para a máquina (usando a camada <strong>de</strong> suporte à replicação).<br />

A Tabela 3 apresenta as estruturas <strong>de</strong> dados e as seções a seguir apresentam os<br />

algoritmos da camada <strong>de</strong> segmentação.<br />

3.1.1. Busca e Invocação <strong>de</strong> Segmentos<br />

Algoritmo 1: Busca <strong>de</strong> Segmentos<br />

Para invocar uma RME, um nó precisa primeiro obter o certificado do segmento que<br />

executa essa máquina <strong>de</strong> estados. A busca <strong>de</strong> segmentos é realizada pela operação<br />

(Algoritmo 1), que tem como parâmetro <strong>de</strong> entrada um intervalo <strong>de</strong> chaves e<br />

retorna um conjunto <strong>de</strong> certificados dos segmentos responsáveis pelas chaves nesse<br />

intervalo. A operação encontra certificados fazendo primeiro uma busca no overlay pela<br />

primeira chave do intervalo (linha 4). Os nós que receberem a mensagem <strong>de</strong> busca pelo<br />

overlay respon<strong>de</strong>rão enviando seus certificados <strong>de</strong> segmento (linha 16) e repassando a<br />

mesma para segmentos vizinhos caso o intervalo <strong>de</strong> chaves buscado se estenda além do<br />

seu próprio segmento (linhas 17 a 19). A cada certificado <strong>de</strong> segmento recebido pelo<br />

cliente, a operação chama a função<br />

, que verifica se a ca<strong>de</strong>ia <strong>de</strong><br />

segmentos que acompanha é válida. Se o enca<strong>de</strong>amento e as assinaturas forem<br />

válidos, a operação invoca<br />

para notificar a camada superior (linhas 7 a<br />

11). A operação no cliente termina quando todo o intervalo <strong>de</strong> chaves buscado for<br />

coberto pelos certificados <strong>de</strong> segmento recebidos (teste da linha 5).<br />

De posse <strong>de</strong> um certificado <strong>de</strong> segmento, o nó po<strong>de</strong> executar a operação<br />

(Algoritmo 2) fazendo uso do suporte à RME. Essa operação consiste em<br />

iniciar um temporizador, invocar o segmento usando a (linha 6),<br />

passando o do certificado que o cliente conhece (linha 4), e aguardar<br />

160


espostas idênticas <strong>de</strong> membros distintos (linhas 7 a 13). Se o certificado conhecido pelo<br />

cliente for antigo, os servidores não repassarão a requisição para a aplicação e o cliente<br />

não receberá respostas, o que provocará o estouro do temporizador a operação irá<br />

retornar , indicando uma exceção (linhas 14 e 15). A operação<br />

não trata<br />

das exceções e <strong>de</strong>ixa essa responsabilida<strong>de</strong> para as camadas superiores. Se o certificado<br />

<strong>de</strong> segmento usado na invocação for atual, a requisição é entregue para a camada<br />

superior pela upcall<br />

(linha 19). As respostas a requisições são enviadas<br />

pela operação<br />

por meio <strong>de</strong> mensagens <strong>de</strong> resposta en<strong>de</strong>reçadas ao cliente<br />

(linha 24).<br />

3.1.2. Entrada e Saída <strong>de</strong> Nós<br />

A entrada do nó na camada <strong>de</strong> segmentos se dá pela operação ( )<br />

(Algoritmo 3), na qual é o certificado <strong>de</strong> nó <strong>de</strong> . Antes <strong>de</strong> entrar em algum<br />

segmento, invoca ( ) e entra no overlay (linha 3). Depois, busca o<br />

certificado do segmento responsável por seu i<strong>de</strong>ntificador (linha 6) e invoca o mesmo<br />

passando uma mensagem (linhas 7 e 8). Após obter uma resposta válida,<br />

aguarda o recebimento dos certificados <strong>de</strong> segmento e do estado da aplicação (linhas 11<br />

a 22), enviados pelos membros do segmento. O estado é repassado à camada superior e<br />

a operação<br />

é chamada (linha 23), alterando os nós participantes da<br />

RME para o novo segmento <strong>de</strong> . Quando os membros do segmento recebem a<br />

mensagem do nó (linha 25), simplesmente registram o pedido <strong>de</strong> no conjunto<br />

h (linha 26) e respon<strong>de</strong>m (linha 27). A reconfiguração ocorre posteriormente, na<br />

1. operation SegRequest(S q req)<br />

2. /* Código do cliente p */<br />

3. StartTimer /* inicia temporizador */<br />

4. knownId ← S q . confId /* i<strong>de</strong>ntificador <strong>de</strong> configuração conhecido por p */<br />

5. resps ← ∅ /* conjunto <strong>de</strong> respostas a receber */<br />

6. TOMulticast(S q . members REQ C p knownId req σ p ) /* requisição com or<strong>de</strong>nação total */<br />

7. upon Receive( RESP C q resp q σ q ) do /* recebimento <strong>de</strong> uma resposta */<br />

8. if C q ∈ S q . members then<br />

9. resps ← resps ∪ resp q<br />

10. if # respq resps = f then<br />

11. return resp q /* retorna a resposta */<br />

12. end if<br />

13. end if<br />

14. upon Timeout do<br />

15. return /* ocorreu um estouro <strong>de</strong> temporizador */<br />

16. /* Código do servidor q */<br />

17. upon TODeliver( REQ C p knonwnId req σ p ) do<br />

18. if knownId = S q . confId then<br />

19. SegDeliver C p req /* requisição é entregue para aplicação */<br />

20. end if<br />

21. end operation<br />

22. operation SegResponse(C p resp q )<br />

23. /* Código do servidor q */<br />

24. Send(C q . addr RESP C q resp q σ q )<br />

25. end operation<br />

Algoritmo 2: Invocação <strong>de</strong> Segmentos<br />

161


operação , conforme <strong>de</strong>scrito no Algoritmo 4.<br />

A saída <strong>de</strong> nós é realizada pela operação<br />

( ) (Algoritmo 3). O nó<br />

envia uma mensagem (linha 31) para os membros do seu segmento e continua a<br />

aten<strong>de</strong>r requisições até o término da próxima reconfiguração, notificada pela operação<br />

(linha 32). Depois o nó termina <strong>de</strong> aten<strong>de</strong>r requisições e invoca<br />

( ) (linha 33). Nós corretos são obrigados a aguardar a reconfiguração<br />

para garantir o funcionamento dos algoritmos <strong>de</strong> replicação. De maneira similar à<br />

operação <strong>de</strong> entrada, os nós que recebem a mensagem registram o pedido <strong>de</strong><br />

(linha 36) e a reconfiguração propriamente dita se dá pela operação .<br />

1. operation SegJoin(C p )<br />

2. /* Código do cliente p */<br />

3. OverlayJoin(C p ) /* entrada no overlay */<br />

4. resp ←<br />

5. while resp = do /* tenta até achar um segmento atual que responda diferente <strong>de</strong> */<br />

6. SegFind(C p . id C p . id) /* busca pelo segmento responsável pelo i<strong>de</strong>ntificador <strong>de</strong> p */<br />

7. wait for SegFindOk(S q )<br />

8. resp ← SegRequest(S q JOIN ) /* invocação do segmento em que p entrará /<br />

9. end while<br />

10. /* transferência do estado da aplicação */<br />

11. states ← ∅ /* cópias do estado que serão recebidas */<br />

12. stateReceived ← FALSE<br />

13. while not stateReceived do /* repete até receber f cópias iguais do estado */<br />

14. wait for Receive( STATE C q S i S + i S − i appState i σ i ) /* Enviado pelos membros do<br />

segmento antigo (Algoritmo 4, linhas 36 a 39) */<br />

15. state i ← S i S + i S − i appState i<br />

16. states ← states ∪ state i<br />

17. if # statei states = f then /* recebidas f cópias iguais do estado */<br />

18. S p ← S i ; S + p ← S + i ; S − p ← S − i /* guarda certificados <strong>de</strong> segmento */<br />

19. SegSetAppState S p . start S p . end appState i /* repassa para camada superior */<br />

20. stateReceived ← TRUE<br />

21. end if<br />

22. end while<br />

23. TOReconfigure(S p . members) /* configura replicação da máquina <strong>de</strong> estados */<br />

24. /* Código do servidor q */<br />

25. upon SegDeliver(C p JOIN ) do<br />

26. change ← changes ∪ C p /* registra alteração da lista <strong>de</strong> membros */<br />

27. SegResponse(C p JOIN_OK )<br />

28. end operation<br />

29. operation SegLeave(C p )<br />

30. /* Código do cliente p */<br />

31. SegRequest(S p LEAVE ) /* invoca o próprio segmento */<br />

32. wait for TOReconfigureOk S /* reconfiguração que exclui p terminou */<br />

33. OverlayLeave(C p ) /* sai do overlay */<br />

34. /* Código do servidor q*/<br />

35. upon SegDeliver(C p LEAVE ) do<br />

36. changes ← changes ∪ − C p /* registra alteração da lista <strong>de</strong> membros */<br />

37. SegResponse(C p LEAVE_OK )<br />

38. end operation<br />

Algoritmo 3: Entrada e saída <strong>de</strong> nós em segmentos<br />

162


3.1.3. Reconfiguração <strong>de</strong> Segmentos<br />

A reconfiguração <strong>de</strong> um segmento ocorre quando nós executam a operação<br />

(Algoritmo 4). Essa operação é invocada após certo tempo, indicado<br />

pelo estouro do temporizador<br />

. Nesse momento, o nó assina e<br />

dissemina no segmento uma mensagem <strong>de</strong> tentativa <strong>de</strong> reconfiguração (linhas 3 a 5).<br />

Essas tentativas <strong>de</strong> reconfiguração (recepções <strong>de</strong> mensagens _ ) são<br />

acumuladas pelos nós do segmento (linha 8) e quando algum nó recebe <strong>de</strong>ssas<br />

tentativas, dispara uma requisição or<strong>de</strong>nada para a reconfiguração, enviando juntamente<br />

as tentativas assinadas como prova (linhas 9 a 11). Como as tentativas não são<br />

or<strong>de</strong>nadas, é possível que a requisição <strong>de</strong> reconfiguração seja invocada mais <strong>de</strong> uma<br />

vez, porém o teste da linha 15 garante que a reconfiguração <strong>de</strong> fato somente ocorrerá<br />

uma vez por segmento. Além disso, a reconfiguração é or<strong>de</strong>nada juntamente com os<br />

pedidos <strong>de</strong> entrada e saída, o que garante que todos os nós corretos possuem o mesmo<br />

conjunto h e, portanto, calcularão o mesmo conjunto <strong>de</strong> membros.<br />

O código da reconfiguração consiste inicialmente em calcular o novo conjunto<br />

<strong>de</strong> membros (linha 17) e checar o tamanho do conjunto <strong>de</strong> novos membros a fim <strong>de</strong><br />

<strong>de</strong>tectar se será necessário dividir ou unir segmentos, <strong>de</strong> acordo com o tamanho do<br />

conjunto e com os parâmetros globais e (linhas 18 e 20). Se não for o caso,<br />

ocorrerá uma reconfiguração simples (linhas 23 a 39), que consiste em gerar e assinar<br />

localmente um novo certificado <strong>de</strong> segmento (linhas 23 e 24), disseminar e coletar as<br />

assinaturas <strong>de</strong> membros do segmento antigo (linhas 25 a 32) e montar o novo<br />

certificado com as assinaturas coletadas (linha 34). Depois, o estado da aplicação local é<br />

obtido pela chamada<br />

e disseminado para os novos membros (linhas<br />

35 a 38) e o algoritmo <strong>de</strong> RME é reconfigurado com (linha 39).<br />

3.1.4. Divisão e União <strong>de</strong> Segmentos<br />

A divisão <strong>de</strong> segmentos ocorre quando o número <strong>de</strong> nós em um segmento exce<strong>de</strong> uma<br />

constante . Essa constante é conhecida globalmente e indica um número <strong>de</strong> nós a<br />

partir do qual é aconselhável formar duas MEs. A divisão em si consiste inicialmente<br />

em dividir o conjunto total <strong>de</strong> membros em dois subconjuntos <strong>de</strong> maneira que um<br />

subconjunto conterá meta<strong>de</strong> dos nós com menor i<strong>de</strong>ntificador e o outro subconjunto<br />

a outra meta<strong>de</strong> com i<strong>de</strong>ntificador superior. Cada segmento será responsável por um<br />

intervalo <strong>de</strong> chaves <strong>de</strong>finido da seguinte forma: seja o intervalo <strong>de</strong> chaves do<br />

segmento antigo e o membro que possui o menor i<strong>de</strong>ntificador do subconjunto ,<br />

então = [ . ) e = [ . ). O dos novos certificados<br />

será o sucessor do do segmento atual. A assinatura e transferência do estado são<br />

similares à reconfiguração simples, porém são dois certificados assinados e para os<br />

novos membros são enviados apenas o estado referente ao segmento do qual farão parte.<br />

A reconfiguração da RME ocorre <strong>de</strong> maneira similar à reconfiguração simples.<br />

A união <strong>de</strong> segmentos é um pouco mais complexa que a divisão, pois a<br />

reconfiguração envolve duas máquinas <strong>de</strong> estados em execução. A união é iniciada<br />

quando o número <strong>de</strong> nós do segmento ficará menor que os necessários para<br />

manter as proprieda<strong>de</strong>s da RME. Os nós do segmento que iniciou a união (pelo menos<br />

corretos) enviam mensagens simples para os nós do seu segmento sucessor a fim<br />

<strong>de</strong> notificar a necessida<strong>de</strong> <strong>de</strong> uma união. Essa mensagem <strong>de</strong>ve conter o novo conjunto<br />

<strong>de</strong> membros do segmento, conforme calculado na operação<br />

, para que<br />

163


o segmento sucessor possa calcular os membros do novo segmento resultante da união.<br />

De maneira similar à operação<br />

, quando um nó do segmento vizinho<br />

recebe pedidos <strong>de</strong> união válidos, este invoca uma operação na RME do próprio<br />

segmento para que uma reconfiguração <strong>de</strong> união ocorra. Os nós do segmento vizinho<br />

executam uma operação similar à divisão, no sentido <strong>de</strong> gerar um novo certificado <strong>de</strong><br />

segmento. Este novo segmento conterá todos os membros dos dois segmentos, terá<br />

superior aos valores nos dois segmentos envolvidos na união e terá intervalo <strong>de</strong><br />

1. operation SegReconfigure<br />

2. upon ReconfigTimeout do<br />

3. for all C i ∈ S p . members do<br />

4. Send(C i . addr TRY_RECONF C p S p . confId σ p ) /* tentativa <strong>de</strong> reconfiguração */<br />

5. end for<br />

6. upon Receive TRY_RECONF C i confId i σ i do<br />

7. if confId i = S q . confId then /* testa se tentativa não está atrasada (não or<strong>de</strong>nada) */<br />

8. reconfigCount ← reconfigCount ∪ TRY_RECONF C i confId i σ i<br />

9. if #reconfigCount f then /* número mínimo <strong>de</strong> tentativas alcançado */<br />

10. TOMulticast(S q . members RECONFIG C p reconfigCount σ q ) /* realiza<br />

reconfiguração com chamada or<strong>de</strong>nada */<br />

11. end if<br />

12. end if<br />

13. /* Código do servidor q */<br />

14. upon TODeliver( RECONFIG C p reconfigCount p σ p ) do<br />

15. if #reconfigCount p f ∧ ∀r ∈ reconfigCount p ∶ r. confId = S q . confId ∧<br />

ValidSig r then /* tentativas suficientes, assinaturas válidas, relativas ao seg. atual */<br />

16. /* calcula novo conjunto <strong>de</strong> membros */<br />

17. newMembers ← (S q . members ∪ C i ∶ C i ∈ changes ) ∖ C i ∶ − C i ∈ changes<br />

18. if #newMembers < n MIN then /* necessário unir segmentos */<br />

19. Merge newMembers<br />

20. else if #newMembers > n MAX then /* necessário dividir segmento */<br />

21. Split newMembers<br />

22. else /* reconfiguração simples */<br />

23. newConfId ← S q . confId<br />

24. σ q ← Sign( newMembers newConfId S q . start S q . end )<br />

25. newΣ ← ∅ /* disseminação da assinatura */<br />

26. for all C i ∈ S q . members do Send(C i . addr NEW_SIG C q σ q ) end for<br />

27. while #newΣ < f do<br />

28. wait for Receive NEW_SIG C i σ i<br />

29. if ValidSig(σ i newMembers newConfId S q . start S q . end ) then<br />

30. newΣ ← newΣ ∪ σ i<br />

31. end if<br />

32. end while<br />

33. newHistory ← S q . history ∪ S q /* certificado atual entra no histórico */<br />

34. S q ← newMembers newConfId S q . start S q . end newΣ newHistory<br />

35. appState q ← SegGetAppState /* upcall para obter estado da aplicação */<br />

36. for all C i ∶ C i ∈ changes do<br />

37. Send(C i . addr STATE C q S q appState q σ q )<br />

38. end for<br />

39. TOReconfigure S q . members /* reconfigura máquina <strong>de</strong> estados */<br />

40. end if<br />

41. changes ← ∅ /* limpa registro <strong>de</strong> entradas e saídas */<br />

42. reconfigCount ← ∅ /* reinicia contador <strong>de</strong> pedidos <strong>de</strong> reconfiguração */<br />

43. end if<br />

44. end operation<br />

Algoritmo 4: Reconfiguração <strong>de</strong> Segmento<br />

164


chaves igual à união dos dois intervalos. Os membros dos dois segmentos trocam os<br />

estados da aplicação para formar um estado agregado e <strong>de</strong>pois disso enviam o estado<br />

agregado aos novos membros (que estavam registrados nos conjuntos h dos dois<br />

segmentos). A reconfiguração da RME ocorre como na reconfiguração simples.<br />

4. Consi<strong>de</strong>rações sobre a Infraestrutura Proposta<br />

A camada <strong>de</strong> segmentação tem a função <strong>de</strong> permitir o uso eficiente <strong>de</strong> algoritmos <strong>de</strong><br />

suporte à RME (Replicação Máquina <strong>de</strong> Estado) em ambientes <strong>de</strong> larga escala.<br />

Normalmente esses algoritmos possuem custo quadrático em função do número <strong>de</strong><br />

participantes, o que torna pouco escalável e bastante custosa sua aplicação direta em<br />

re<strong>de</strong>s P2P. Com a solução proposta neste trabalho, é possível prover confiabilida<strong>de</strong> e<br />

tolerância a intrusões para aplicações executando sobre re<strong>de</strong>s P2P <strong>de</strong> gran<strong>de</strong> porte.<br />

A operação consiste <strong>de</strong> uma simples busca no overlay por um<br />

intervalo <strong>de</strong> chaves. O Algoritmo 1 <strong>de</strong>screve uma busca recursiva, na qual segmentos<br />

adicionais são buscados apenas <strong>de</strong>pois que o segmento anterior é encontrado. Para<br />

gran<strong>de</strong>s intervalos <strong>de</strong> chaves, é possível dividir os mesmos e realizar buscas em paralelo<br />

nos correspon<strong>de</strong>ntes subintervalos, porém um número gran<strong>de</strong> <strong>de</strong> buscas paralelas po<strong>de</strong><br />

levar a redundância, isto é, múltiplas buscas po<strong>de</strong>m chegar ao mesmo segmento. A<br />

terminação da operação está ligada à garantia <strong>de</strong> entrega <strong>de</strong> mensagens provida pela<br />

camada <strong>de</strong> overlay. Como o overlay utilizado é probabilístico, existe uma pequena<br />

chance da operação ficar bloqueada aguardando respostas porque o overlay<br />

falhou. Uma solução simples seria usar um temporizador que levaria à repetição da<br />

busca.<br />

Outro aspecto importante da operação é a verificação, por meio do<br />

histórico <strong>de</strong> segmentos, da valida<strong>de</strong> dos certificados <strong>de</strong> segmento recebidos na busca.<br />

Essa verificação po<strong>de</strong> implicar em um alto custo, uma vez que o histórico é um conjunto<br />

<strong>de</strong> segmentos que aumenta à medida que o sistema evolui. Uma otimização que diminui<br />

o custo <strong>de</strong> processamento consiste em manter em cada nó um cache <strong>de</strong> certificados<br />

válidos. Toda vez que um certificado é validado, por meio da verificação das<br />

assinaturas, este é adicionado ao cache. Validações subsequentes do mesmo certificado<br />

não precisariam verificar as assinaturas, uma vez que este estaria presente no cache.<br />

Essa otimização tem um efeito importante, pois quanto mais antigo é um segmento,<br />

maior a probabilida<strong>de</strong> <strong>de</strong> ser compartilhado por vários históricos <strong>de</strong> segmentos mais<br />

atuais. Para reduzir o custo <strong>de</strong> transmissão, ao realizar uma busca, um nó po<strong>de</strong> enviar na<br />

requisição certificados <strong>de</strong> segmento contidos no cache local que interseccionam com o<br />

intervalo <strong>de</strong> chaves procurado. Caso os certificados enviados façam parte do histórico<br />

dos segmentos requisitados, os nós que respon<strong>de</strong>rem a requisição po<strong>de</strong>m podar os<br />

históricos <strong>de</strong> certificados que aten<strong>de</strong>m a <strong>de</strong>manda. Ou seja, os históricos não precisam<br />

ser enviados completos para as validações. São excluídos dos históricos todos os<br />

certificados anteriores aos certificados enviados na requisição <strong>de</strong> busca.<br />

A operação<br />

apresenta apenas o custo <strong>de</strong> uma invocação da RME,<br />

uma vez que o certificado <strong>de</strong> segmento contém os en<strong>de</strong>reços dos nós correspon<strong>de</strong>ntes.<br />

Po<strong>de</strong> ocorrer, no entanto, que o certificado usado no momento da invocação esteja<br />

ultrapassado por conta <strong>de</strong> uma reconfiguração no segmento invocado. Nesse caso, os<br />

nós não respon<strong>de</strong>rão à requisição, e faz-se o uso <strong>de</strong> um temporizador para retirar o<br />

cliente da espera. Po<strong>de</strong> ocorrer <strong>de</strong> o temporizador estourar por causa <strong>de</strong> um atraso na<br />

165


Tabela 4: Custo típico das operações<br />

Operação Mensagens Rodadas<br />

k − k<br />

SegFind O(f N N Seg ) N<br />

K Seg<br />

SegRequest O(N Seg ) 5<br />

k − k<br />

SegJoin O(f N N Seg ) N 8<br />

K Seg<br />

SegLeave O(N Seg ) 5<br />

SegReconfigure O(N Seg ) 8 (reconf. simples e divisão), 13 (união)<br />

re<strong>de</strong> e não por conta da reconfiguração do segmento e a repetição da invocação<br />

provocará uma execução dupla da requisição. Cabe à aplicação buscar novamente o<br />

certificado com e garantir a i<strong>de</strong>mpotência das operações, por exemplo, com<br />

uso <strong>de</strong> nonces. Para garantir que a requisição da aplicação será efetivamente respondida,<br />

é preciso manter a premissa <strong>de</strong> que o número total <strong>de</strong> reconfigurações do sistema é<br />

finito, ou pelo menos que o número <strong>de</strong> reconfigurações concorrentes com uma<br />

requisição é finito. Essa premissa é usada em outros sistemas dinâmicos <strong>de</strong>scritos na<br />

literatura para garantir terminação [Aguilera et al. 2009].<br />

A operação faz uso das operações e em um laço<br />

<strong>de</strong> repetição como seria usado na camada <strong>de</strong> aplicação. Dessa forma, também <strong>de</strong>pen<strong>de</strong><br />

da premissa <strong>de</strong>scrita acima para terminar. A operação<br />

é direcionada<br />

diretamente ao próprio segmento do nó cliente, ou seja, não é possível que o certificado<br />

<strong>de</strong> segmento seja antigo em nós corretos. Uma limitação <strong>de</strong>ssa operação é que nós<br />

corretos precisam aguardar a próxima reconfiguração para saírem do sistema. Isso é<br />

necessário para que as requisições à ME, bem como a assinatura do próximo certificado<br />

e a transferência do estado da aplicação possam sempre ocorrer corretamente.<br />

A operação<br />

é a que apresenta o maior custo <strong>de</strong> toda a camada<br />

<strong>de</strong> segmentação por conta da necessida<strong>de</strong> <strong>de</strong> união e divisão <strong>de</strong> segmentos. No caso <strong>de</strong><br />

uma reconfiguração simples (sem divisão nem união) há uma rodada <strong>de</strong> disseminação<br />

<strong>de</strong> assinaturas e <strong>de</strong>pois a transferência <strong>de</strong> estado para os segmentos novos. No caso <strong>de</strong><br />

divisão <strong>de</strong> segmento são duas assinaturas, porém o custo <strong>de</strong> mensagens é o mesmo e a<br />

transferência <strong>de</strong> estado é igualmente simples. A união é muito mais custosa, uma vez<br />

que envolve a invocação <strong>de</strong> outro segmento e a transferência <strong>de</strong> estado ocorre também<br />

entre os membros dos segmentos antigos antes <strong>de</strong>sse estado ser enviado aos novos<br />

membros. Além disso, se muitos nós entrarem ou saírem dos segmentos próximos ao<br />

mesmo tempo, po<strong>de</strong> ser necessário realizar mais <strong>de</strong> uma divisão ou união em sequência.<br />

A Tabela 4 apresenta aproximações dos custos <strong>de</strong> mensagens (assintóticas) e <strong>de</strong><br />

rodadas relativos às operações da camada <strong>de</strong> segmentação em situações típicas, sem<br />

levar em conta as otimizações <strong>de</strong>scritas nesta seção. Os valores são <strong>de</strong>rivados dos<br />

algoritmos da Seção 3.1 e assumem que = é o número médio <strong>de</strong> nós por<br />

segmento, é o tamanho médio do intervalo <strong>de</strong> chaves dos segmentos, o custo da<br />

invocação na RME é ( ) mensagens e <strong>de</strong>manda 5 rodadas [Castro e Liskov 1999],<br />

o custo esperado <strong>de</strong> um envio usando o overlay é<br />

mensagens e<br />

rodadas, on<strong>de</strong> é o número <strong>de</strong> nós no sistema [Castro et al. 2002].<br />

166


5. Trabalhos Relacionados<br />

Rosebud [Rodrigues e Liskov 2003] é um sistema <strong>de</strong> armazenamento distribuído que<br />

apresenta características similares a um overlay P2P estruturado. Para garantir<br />

disponibilida<strong>de</strong> e consistência diante <strong>de</strong> nós maliciosos, dados são replicados em<br />

nós e quóruns <strong>de</strong> nós são usados para realizar leitura e escrita. O sistema permite<br />

entrada e saída <strong>de</strong> nós por meio <strong>de</strong> um esquema <strong>de</strong> reconfiguração. Diferentemente da<br />

proposta <strong>de</strong>ste trabalho, a reconfiguração é controlada por um subconjunto <strong>de</strong> nós do<br />

sistema, chamado <strong>de</strong> serviço <strong>de</strong> reconfiguração. A visão completa do sistema é mantida<br />

pelo serviço <strong>de</strong> reconfiguração e certificados contendo essa visão são disseminados a<br />

todos os nós a cada reconfiguração. No nosso trabalho, evitamos a necessida<strong>de</strong> <strong>de</strong><br />

conhecimento completo do sistema, com o intuito <strong>de</strong> aliviar problemas <strong>de</strong> escala e<br />

também para mantermos a nossa proposta mais <strong>de</strong> acordo com a filosofia P2P que<br />

enfatiza a inexistência <strong>de</strong> gerenciamentos globais.<br />

Castro et al. (2002) apresentam a proposta <strong>de</strong> um overlay P2P que garante alta<br />

probabilida<strong>de</strong> na entrega <strong>de</strong> mensagens mesmo quando uma parcela dos nós do sistema<br />

é maliciosa. A garantia <strong>de</strong> entrega é uma proprieda<strong>de</strong> importante em re<strong>de</strong>s P2P e<br />

permite a construção <strong>de</strong> soluções mais completas para prover tolerância a falhas e<br />

intrusões em re<strong>de</strong>s P2P, como a que apresentamos neste trabalho. No próprio artigo,<br />

Castro et al. (2002) <strong>de</strong>screvem brevemente uma solução para leitura e escrita<br />

consistente <strong>de</strong> objetos mutáveis em uma re<strong>de</strong> P2P usando o roteamento confiável<br />

juntamente com técnicas <strong>de</strong> RME. Há certa similarida<strong>de</strong> com a solução proposta neste<br />

trabalho, porém aqui esten<strong>de</strong>mos a replicação para suportar quaisquer operações, e<br />

tratamos <strong>de</strong> questões como entrada e saída <strong>de</strong> nós, além <strong>de</strong> união e divisão <strong>de</strong><br />

segmentos.<br />

Bhattacharjee et al. (2007) <strong>de</strong>finem uma solução <strong>de</strong> roteamento P2P tolerante a<br />

intrusões com base na divisão do sistema em segmentos dinâmicos que po<strong>de</strong>m sofrer<br />

divisões ou uniões à medida que o sistema evolui. Porém, estes segmentos são em geral<br />

maiores dos que aqueles adotados neste trabalho e não estão associados a RMEs. Cada<br />

segmento possui um subconjunto <strong>de</strong> nós, o comitê, que participam <strong>de</strong> uma RME e têm a<br />

função <strong>de</strong> <strong>de</strong>cidir sobre as reconfigurações do segmento, disseminando os certificados<br />

<strong>de</strong> novos segmentos. A confiabilida<strong>de</strong> das informações emitidas pelo comitê é garantida<br />

pelo uso <strong>de</strong> criptografia <strong>de</strong> limiar assimétrica que permite a recriação do segredo<br />

compartilhado em caso <strong>de</strong> reconfiguração do comitê. Neste trabalho evitamos a criação<br />

<strong>de</strong> uma hierarquia, pois isso adicionaria complexida<strong>de</strong> e custo no gerenciamento dos<br />

segmentos que seriam formados por dois tipos <strong>de</strong> nós. Além disso, adotamos o<br />

mecanismo <strong>de</strong> enca<strong>de</strong>amento <strong>de</strong> certificados <strong>de</strong> segmento como meio <strong>de</strong> verificação dos<br />

mesmos para evitar os altos custos <strong>de</strong> reconfiguração da criptografia <strong>de</strong> limiar (obtenção<br />

<strong>de</strong> novas chaves parciais em cada atualização dos segmentos).<br />

6. Conclusão<br />

Este trabalho apresentou uma infraestrutura para a construção <strong>de</strong> memórias distribuídas<br />

<strong>de</strong> larga escala com base em um overlay P2P tolerante a intrusões. Esta infraestrutura<br />

utiliza segmentação para permitir o uso eficiente <strong>de</strong> técnicas <strong>de</strong> Replicação Máquina <strong>de</strong><br />

Estados. Aspectos <strong>de</strong> dinamismo do sistema como entradas e saídas <strong>de</strong> nós, além <strong>de</strong><br />

união e divisão <strong>de</strong> segmentos, foram também <strong>de</strong>scritos no texto. Consi<strong>de</strong>rações sobre os<br />

custos e as limitações da infraestrutura foram levantadas e algumas otimizações foram<br />

167


citadas. Para <strong>de</strong>monstrar a utilida<strong>de</strong> da infraestrutura proposta, um espaço <strong>de</strong> tuplas foi<br />

<strong>de</strong>senvolvido sobre a mesma. Os próximos passos <strong>de</strong>ste trabalho compreen<strong>de</strong>m a<br />

formalização das provas <strong>de</strong> funcionamento dos algoritmos propostos e a obtenção <strong>de</strong><br />

resultados experimentais por meio <strong>de</strong> simulações e testes.<br />

8. Referências<br />

Aguilera, M. K., Keidar, I., Malkhi, D. e Shraer, A. (2009) “Dynamic Atomic Storage<br />

Without Consensus”, In: Proceedings of the PODC’09, pp. 17-25, ACM.<br />

Baldoni, R., Jiménez-Peris, R., Patiño-Martinez, M. e Virgillito, A. (2005) “Dynamic<br />

Quorums for DHT-based P2P Networks”, In: Proceedings of the NCA’05, IEEE.<br />

Bhattacharjee, B., Rodrigues, R. e Kouznetsov, P. (2007) “Secure Lookup without<br />

(Constrained) Flooding”, In: Proceedings of the WRAITS’07, pp. 13-17.<br />

Castro, M., Liskov, B. (1999) “Practical Byzantine Fault Tolerance”, In: Proceedings of<br />

the OSDI’99, USENIX.<br />

Castro, M., Druschel, P., Ganesh, A., Rowstron, A. e Wallach, D. S. (2002) “Secure<br />

Routing for Structured Peer-to-Peer Overlay Networks”, In: Proceedings of the<br />

OSDI’02, USENIX.<br />

Dwork, C., Lynch, N. e Stockmeyer, L. (1988) “Consensus in the Presence of Partial<br />

Synchrony”, In: Journal of the ACM, v. 35, n. 2, pp. 288-323, ACM.<br />

Gelernter, D. (1985) “Generative Communication in Linda”, In: ACM Transactions on<br />

Programming Languages and Systems, v.7, n. 1, pp. 80-112, ACM.<br />

Lamport, L., Shostak, R., Pease, M. (1982) “The Byzantine generals problem”. ACM<br />

TOPLAS, v. 4, n. 3, pp. 382-401, ACM.<br />

Rodrigues, R. e Liskov, B. (2003) “Rosebud: A Scalable Byzantine-Fault-Tolerant<br />

Storage Architecture”, Relatório Técnico, MIT.<br />

Rowstron, A. I. T., Druschel, P. (2001) “Pastry: Scalable, Decentralized Object<br />

Location, and Routing for Large-Scale Peer-to-Peer Systems”, In: Proceedings of the<br />

Middleware’01, Springer.<br />

Schnei<strong>de</strong>r, F. B. (1990) “Implementing fault-tolerant service using the state machine<br />

aproach: A tutorial”. ACM Computing Surveys, v. 22, n. 4, ACM.<br />

Steinmetz, R. e Wehrle, K. (Eds.) (2005) Peer-to-Peer Systems and Applications,<br />

LNCS, v. 3485, Springer.<br />

Stoica, I., Morris, R., Liben-Nowell, D., Karger, D. R., Kaashoek, M. F., Dabek, F. e<br />

Blakrishnan, H. (2003) “Chord: Scalable Peer-to-peer Lookup Protocol for Internet<br />

Applications”, In: ACM/IEEE Transactions on Networking (TON), v. 11, n. 1, IEEE<br />

Press.<br />

168


Rumo à Caracterização <strong>de</strong> Disseminação Ilegal <strong>de</strong> Filmes em<br />

Re<strong>de</strong>s BitTorrent<br />

Adler Hoff Schmidt, Marinho Pilla Barcellos, Luciano Paschoal Gaspary<br />

1 Instituto <strong>de</strong> Informática – Universida<strong>de</strong> Fe<strong>de</strong>ral do Rio Gran<strong>de</strong> do Sul (UFRGS)<br />

Caixa Postal 15.064 – 91.501-970 – Porto Alegre – RS – Brazil<br />

{ahschmidt,marinho,paschoal}@inf.ufrgs.br<br />

Abstract. Content sharing through BitTorrent (BT) networks accounts nowadays<br />

for a consi<strong>de</strong>rable fraction of the Internet traffic. Recent monitoring reports<br />

revealed that the contents being shared are mostly illegal and that movie<br />

is the most popular media type. Research efforts carried out to un<strong>de</strong>rstand content<br />

production and sharing dynamics in BT networks do not provi<strong>de</strong> precise<br />

information in respect to the behavior behind illegal film dissemination, being<br />

this the main objective and contribution of this paper. To perform such analysis,<br />

we monitored during 30 days all film torrent files published on the main<br />

BT public community. Furthermore, we joined the respective swarms, without<br />

downloading content, in or<strong>de</strong>r to obtain additional information regarding illegal<br />

sharing. As result, we present, characterize and discuss who produces and<br />

who publishes torrents of copyright-infringing files, what is produced and who<br />

acts as first provi<strong>de</strong>r of the contents.<br />

Resumo. O compartilhamento <strong>de</strong> conteúdo por meio <strong>de</strong> re<strong>de</strong>s BitTorrent (BT)<br />

é atualmente um dos principais responsáveis pelo volume <strong>de</strong> dados na Internet.<br />

Relatórios <strong>de</strong> monitoração recentes constataram que os conteúdos sendo compartilhados<br />

são, em ampla maioria, ilegais e que filme é o tipo <strong>de</strong> mídia mais<br />

comum. Esforços <strong>de</strong> pesquisa realizados para enten<strong>de</strong>r a dinâmica <strong>de</strong> produção<br />

e <strong>de</strong> compartilhamento <strong>de</strong> conteúdo em re<strong>de</strong>s BT não oferecem informações precisas<br />

sobre o comportamento por trás da disseminação ilegal <strong>de</strong> filmes, sendo<br />

esse o principal objetivo e contribuição <strong>de</strong>ste artigo. Para realizar tal análise,<br />

monitorou-se todos os arquivos torrent <strong>de</strong> filmes publicados na principal comunida<strong>de</strong><br />

pública <strong>de</strong> BT durante 30 dias e ingressou-se nos enxames, sem compartilhar<br />

conteúdo, a fim <strong>de</strong> obter informações adicionais acerca <strong>de</strong> compartilhamento.<br />

Como resultado, apresenta-se, caracteriza-se e discute-se quem produz<br />

e quem publica torrents <strong>de</strong> cópias ilícitas, o que é produzido e quem atua como<br />

primeiro provedor dos conteúdos.<br />

1. Introdução<br />

Re<strong>de</strong>s BitTorrent (BT) são atualmente a principal opção para usuários compartilharem<br />

conteúdo através da Internet [Schulze and Mochalski 2009]. Segundo estudo apresentado<br />

pela Envisional [Envisional 2011], aproximadamente dois terços dos 2,72 milhões<br />

<strong>de</strong> torrents administrados pelo principal rastreador BT são <strong>de</strong> conteúdos ilícitos, algo que<br />

reforça a noção intuitiva <strong>de</strong> BT ser largamente utilizado para compartilhar arquivos que<br />

infringem direitos autorais. O mesmo estudo aponta que 35,2% <strong>de</strong>sses conteúdos ilícitos<br />

são cópias ilegais <strong>de</strong> filmes.<br />

169


Apesar <strong>de</strong> existirem algumas publicações caracterizando compartilhamento <strong>de</strong><br />

conteúdo em re<strong>de</strong>s BT [Zhang et al. 2010b, Zhang et al. 2010a, Le Blond et al. 2010,<br />

Cuevas et al. 2010], nenhuma concentrou-se em observar aspectos específicos do processo<br />

<strong>de</strong> disseminação <strong>de</strong> conteúdos ilícitos, e muito menos <strong>de</strong> cópias ilegais <strong>de</strong> filmes<br />

(como, por exemplo, usuários responsáveis pela criação das cópias, tecnologias <strong>de</strong><br />

digitalização utilizadas, etc). Pouco se sabe, por exemplo, sobre quem são os usuários<br />

responsáveis por criar cópias ilegais, quais são os processos <strong>de</strong> digitalização empregados,<br />

quem publica torrents <strong>de</strong>sses conteúdos, e quem fomenta, nos estágios iniciais, os<br />

enxames formados em torno <strong>de</strong> cópias ilegais.<br />

Algumas razões que justificam a importância <strong>de</strong> enten<strong>de</strong>r o compartilhamento ilegal<br />

<strong>de</strong> filmes em re<strong>de</strong>s BT são discutidas a seguir. Primeiro, esse tipo <strong>de</strong> conteúdo é o<br />

principal responsável pelo volume <strong>de</strong> tráfego <strong>de</strong>ssas re<strong>de</strong>s. Segundo, caracterizar fi<strong>de</strong>dignamente<br />

a ativida<strong>de</strong> dos disseminadores <strong>de</strong>sses conteúdos é base para formular mecanismos<br />

<strong>de</strong> combate a esse comportamento in<strong>de</strong>sejado. Terceiro, responsáveis por conteúdos<br />

(no caso <strong>de</strong>ste artigo, filmes) protegidos por direitos autorais po<strong>de</strong>m amparar-se em conhecimento<br />

acerca do comportamento <strong>de</strong> usuários mal intencionados e criar estratégias<br />

para minimizar proliferação in<strong>de</strong>vida <strong>de</strong> cópias ilegais.<br />

Diante do problema e da motivação em abordá-lo, neste artigo apresenta-se resultados<br />

<strong>de</strong> um estudo experimental sistemático realizado para caracterizar disseminação<br />

ilegal <strong>de</strong> filmes em re<strong>de</strong>s BT. Procura-se <strong>de</strong>svendar quem produz e quem publica cópias<br />

ilícitas, o que é produzido e quem atua como primeiro provedor. Além disso, estabelecese<br />

relações entre agentes envolvidos e realiza-se exercício visando observar dinâmicas<br />

existentes (e não facilmente perceptíveis) no processo <strong>de</strong> disseminação ilegal <strong>de</strong> filmes.<br />

Para realizar o estudo, esten<strong>de</strong>u-se e utilizou-se a arquitetura <strong>de</strong> monitoração TorrentU<br />

[Mansilha et al. 2011], <strong>de</strong>senvolvida pelo grupo. Em um mês <strong>de</strong> monitoração,<br />

obteve-se 11.959 torrents, 1.985 nomes <strong>de</strong> usuários da comunida<strong>de</strong>, 94 rastreadores e<br />

76.219 en<strong>de</strong>reços IP únicos. Observou-se, ainda, ativida<strong>de</strong>s realizadas por 342 grupos <strong>de</strong><br />

digitalização.<br />

O restante do artigo está organizado como segue. A seção 2 apresenta conceitos<br />

acerca <strong>de</strong> compartilhamento ilícito <strong>de</strong> filmes e discute trabalhos relacionados. A<br />

seção 3 discorre sobre a arquitetura <strong>de</strong> monitoração e as <strong>de</strong>cisões tomadas quanto à sua<br />

instanciação. A seção 4 relata e discute os resultados obtidos. A seção 5 encerra o artigo<br />

com consi<strong>de</strong>rações finais e perspectivas para trabalhos futuros.<br />

2. Fundamentos e Trabalhos Relacionados<br />

Esta seção está organizada em duas partes. Primeiro, revisita práticas adotadas por grupos<br />

<strong>de</strong> digitalização e características dos processos utilizados para digitalizar conteúdo. Na<br />

sequência, <strong>de</strong>screve e discute os trabalhos relacionados <strong>de</strong> maior relevância.<br />

2.1. Conceitos Associados ao Compartilhamento Ilícito <strong>de</strong> Filmes<br />

Grupos <strong>de</strong> digitalização são os responsáveis pela criação, através <strong>de</strong> meio ilícitos, <strong>de</strong><br />

cópias <strong>de</strong> filmes [Wikipedia 2011a]. Eles po<strong>de</strong>m ser compostos por um ou mais membros<br />

e recebem crédito pela sua ativida<strong>de</strong> agregando a sua i<strong>de</strong>ntificação ao nome dos torrents<br />

por eles criados. Via <strong>de</strong> regra, consumidores experientes não reconhecem um torrent <strong>de</strong><br />

filme como confiável (e evitam usá-lo) caso ele não i<strong>de</strong>ntifique o grupo <strong>de</strong> digitalização<br />

170


esponsável. Logo, essa “etiqueta” é obe<strong>de</strong>cida tanto por produtores quanto por consumidores.<br />

Ela provê uma maneira <strong>de</strong> dar notorieda<strong>de</strong> aqueles que estão realizando essa<br />

ativida<strong>de</strong> ilegal, ao mesmo tempo em que os grupos buscam, para preservar sua reputação,<br />

assegurar o “casamento” correto entre nome dos torrents e conteúdos, bem como a correta<br />

classificação da qualida<strong>de</strong> <strong>de</strong>sses torrents.<br />

A <strong>de</strong>cisão <strong>de</strong> usuários em realizar (ou não) download <strong>de</strong> <strong>de</strong>terminadas cópias é<br />

influenciada, também, pela i<strong>de</strong>ntificação, nos torrents, dos processos <strong>de</strong> digitalização empregados<br />

[Wikipedia 2011b]. A tabela 1 lista oito processos amplamente utilizados. Cada<br />

um <strong>de</strong>les é caracterizado por uma sigla, por uma fonte, i.e., a mídia a partir da qual a<br />

cópia ilícita é gerada, e por uma expectativa <strong>de</strong> tempo, após a primeira estréia oficial do<br />

filme, para se encontrar uma cópia autêntica gerada usando o processo em questão. Os<br />

processos aparecem na tabela em or<strong>de</strong>m crescente <strong>de</strong> qualida<strong>de</strong> resultante esperada para<br />

as cópias digitalizadas.<br />

Tabela 1. Processos <strong>de</strong> digitalização<br />

Sigla Fonte Lançamento<br />

CAM Gravado no cinema 1 Semana (S)<br />

TS Gravado no cinema com fonte exclusiva <strong>de</strong> áudio 1 S<br />

TC Material sendo projetado no cinema 1 S<br />

PPVRip Exibição para clientes <strong>de</strong> hotéis 8 S<br />

SCR Cópia distribuída a críticos e usuários especiais Imprevisível<br />

DVDScr DVD distribuído para usuários especiais 8-10 S<br />

R5 DVD não editado, lançado somente na região 5 4-8 S<br />

DVDRip* DVD acessível ao público 10-14 S<br />

* Digitalizações a partir <strong>de</strong> fontes <strong>de</strong> maior qualida<strong>de</strong>, como Blu-ray, foram consi<strong>de</strong>radas DVDRip.<br />

2.2. Trabalhos Relacionados<br />

Nos últimos anos a comunida<strong>de</strong> <strong>de</strong> pesquisa em re<strong>de</strong>s par-a-par produziu alguns trabalhos<br />

ligados à monitoração <strong>de</strong> re<strong>de</strong>s BT. Nesta seção <strong>de</strong>screve-se e discute-se os mais<br />

relacionados ao presente artigo. Por questão <strong>de</strong> escopo, são organizados em três grupos:<br />

infraestruturas <strong>de</strong> monitoração, caracterizações gerais do “universo” BT e caracterizações<br />

<strong>de</strong>talhadas <strong>de</strong> produção e consumo em re<strong>de</strong>s BT.<br />

Bauer et al. [Bauer et al. 2009] propuseram uma infraestrutura <strong>de</strong> monitoração<br />

que realiza medições ativas. A monitoração consiste em contatar rastreadores, obter<br />

en<strong>de</strong>reços IP e contatar hosts, para confirmá-los como participantes “válidos” <strong>de</strong> enxames<br />

BT. Jünemann et al. [Junemann et al. 2010] <strong>de</strong>senvolveram uma ferramenta para monitorar<br />

Distributed Hash Tables (DHT) associadas a enxames BT. A ferramenta divi<strong>de</strong>-se em<br />

três módulos. O primeiro permite coletar dados da re<strong>de</strong> par-a-par, como a quantida<strong>de</strong> <strong>de</strong><br />

pares, en<strong>de</strong>reços IP, portas utilizadas e países <strong>de</strong> origens, ao percorrer a DHT. O segundo<br />

analisa os dados e gera gráficos <strong>de</strong> acordo com métricas <strong>de</strong>finidas pelos usuários. O terceiro<br />

busca, nos resultados do segundo módulo, valores que excedam limiares estipulados<br />

pelo usuário, gerando avisos. Ainda no campo <strong>de</strong> infraestruturas <strong>de</strong> monitoração, Chow<br />

et al. [Chow et al. 2007] apresentaram BTM: um sistema para auxiliar a <strong>de</strong>tecção <strong>de</strong> pirataria<br />

que lança mão <strong>de</strong> monitoração automática <strong>de</strong> enxames BT. Ele é organizado em<br />

módulos responsáveis, respectivamente, pela procura <strong>de</strong> torrents na re<strong>de</strong> e pela análise<br />

171


dos mesmos. O discernimento entre quais dos materiais monitorados violam direitos autorais,<br />

e quais não, é completamente realizado pelo usuário através das regras que po<strong>de</strong>m<br />

ser <strong>de</strong>finidas para processamento dos dados coletados.<br />

No que se refere a caracterizações gerais do “universo” BitTorrent, Zhang et al.<br />

[Zhang et al. 2010b] analisaram torrents <strong>de</strong> cinco comunida<strong>de</strong>s públicas. A <strong>de</strong>scoberta<br />

<strong>de</strong> pares <strong>de</strong>u-se através <strong>de</strong> comunicação com rastreadores ou consulta a DHTs. Os autores<br />

apresentam, entre outros aspectos, quais são as principais comunida<strong>de</strong>s <strong>de</strong> BT, os<br />

graus <strong>de</strong> participação <strong>de</strong> cada publicador <strong>de</strong> torrents, as cargas e localizações dos principais<br />

rastreadores, a distribuição geográfica dos pares e as implementações <strong>de</strong> clientes<br />

BT mais utilizadas. Seguindo uma metodologia similar à <strong>de</strong>sse trabalho, Zhang et al.<br />

[Zhang et al. 2010a] realizaram uma investigação sobre darknets em BT, i.e., comunida<strong>de</strong>s<br />

privadas. Entre os resultados apresentados, os autores comparam características<br />

<strong>de</strong> enxames impulsionados por darknets com <strong>de</strong> enxames “oriundos” <strong>de</strong> comunida<strong>de</strong>s<br />

públicas. Como observação geral <strong>de</strong>sses dois estudos, ressalta-se o interesse em “fotografar”<br />

momentos do ciclo <strong>de</strong> vida <strong>de</strong> enxames BT na tentativa <strong>de</strong> quantificá-los e <strong>de</strong> abstrair<br />

mo<strong>de</strong>los. Não fez parte <strong>de</strong> seu escopo, contudo, analisar dinâmica e caracterizar padrões<br />

<strong>de</strong> disseminação <strong>de</strong> conteúdo ilícito.<br />

Passando ao último grupo <strong>de</strong> trabalhos analisados, Blond et al.<br />

[Le Blond et al. 2010] monitoraram por 103 dias as três comunida<strong>de</strong>s <strong>de</strong> BT mais<br />

populares, traçando perfis dos provedores <strong>de</strong> conteúdo e dos consumidores mais participativos.<br />

Conseguiram i<strong>de</strong>ntificar 70% dos provedores, listar os principais conteúdos<br />

sendo compartilhados e caracterizar os participantes mais ativos (pares presentes em<br />

vários enxames). Cuevas et al. [Cuevas et al. 2010] investigaram os fatores socioeconômicos<br />

<strong>de</strong> re<strong>de</strong>s BT, ressaltando os incentivos que os provedores <strong>de</strong> conteúdos têm<br />

para realizar essa ativida<strong>de</strong>. Três grupos <strong>de</strong> publicadores foram <strong>de</strong>finidos: os motivados<br />

por incentivos financeiros, os responsáveis por material falso e os altruístas. Com um mês<br />

<strong>de</strong> medições, esses grupos foram caracterizados por Internet Service Provi<strong>de</strong>rs (ISPs)<br />

aos quais estão associados, tipos <strong>de</strong> conteúdos disponibilizados, incentivos para as suas<br />

ativida<strong>de</strong>s e renda monetária especulada. Os trabalhos <strong>de</strong> Blond et al. e Cuevas et al. são<br />

os que mais se assemelham ao apresentado neste artigo, em especial no nível <strong>de</strong>talhado<br />

<strong>de</strong> monitoração e nas técnicas empregadas. Destaca-se, entretanto, que o escopo <strong>de</strong>sses<br />

trabalhos não foi o <strong>de</strong> analisar disseminação ilegal <strong>de</strong> filmes nem tampouco <strong>de</strong> conteúdo<br />

ilícito em geral. Logo, aspectos que <strong>de</strong>sempenham papel importante na compreensão<br />

<strong>de</strong> esquemas ilegais <strong>de</strong> distribuição foram <strong>de</strong>ixados <strong>de</strong> lado. Além disso, os trabalhos<br />

parecem apresentar limitações técnicas importantes. A título <strong>de</strong> exemplo, incluem nas<br />

estatísticas resultados associados a torrents com pouco tempo <strong>de</strong> vida nas comunida<strong>de</strong>s<br />

(forte indicador <strong>de</strong> conteúdo falso), comprometendo análises realizadas e conclusões<br />

obtidas.<br />

Nesta subseção revisou-se alguns dos trabalhos mais relevantes e correlatos a este<br />

artigo. Observa-se um esforço da comunida<strong>de</strong> <strong>de</strong> pesquisa em re<strong>de</strong>s par-a-par em criar<br />

ferramental <strong>de</strong> monitoração e conduzir caracterizações. Nenhum dos trabalhos, porém,<br />

preocupou-se em investigar como re<strong>de</strong>s BT vêm sendo usadas para disseminação ilegal <strong>de</strong><br />

filmes e <strong>de</strong> outros conteúdos ilícitos. Acredita-se ser este um tópico <strong>de</strong> gran<strong>de</strong> relevância,<br />

em especial para que se possa, com conhecimento <strong>de</strong> dinâmicas até agora obscuras, subsidiar<br />

a proposição <strong>de</strong> estratégias e mecanismos eficazes que propiciem a proteção <strong>de</strong><br />

172


conteúdo protegido por direito autoral e, até mesmo, contribuir para ampliação do uso <strong>de</strong><br />

re<strong>de</strong>s BT em cenários mais sensíveis. Até on<strong>de</strong> sabemos, este é o primeiro trabalho que<br />

procura mapear, <strong>de</strong> forma sistemática, processo <strong>de</strong> disseminação <strong>de</strong> conteúdo ilegal em<br />

re<strong>de</strong>s BT. As próximas seções <strong>de</strong>talham a arquitetura <strong>de</strong> monitoração empregada, aspectos<br />

<strong>de</strong> sua instanciação e os principais resultados obtidos.<br />

3. Infraestrutura <strong>de</strong> Monitoração Utilizada<br />

Esta seção apresenta a infraestrutura <strong>de</strong> monitoração utilizada. A subseção 3.1 apresenta<br />

a arquitetura <strong>de</strong> monitoração empregada, <strong>de</strong>nominada TorrentU, e extensões implementadas<br />

para permitir a caracterização almejada. Em seguida, a subseção 3.2 <strong>de</strong>talha como a<br />

arquitetura foi instanciada.<br />

3.1. Arquitetura <strong>de</strong> Monitoração TorrentU e Extensões<br />

TorrentU [Mansilha et al. 2011] é uma arquitetura flexível projetada e <strong>de</strong>senvolvida para<br />

permitir a monitoração <strong>de</strong> re<strong>de</strong>s BitTorrent. Como a figura 1 ilustra, a arquitetura segue<br />

a abordagem clássica gerente/agente e, portanto, possui basicamente dois componentes:<br />

observador e telescópios. Observador é o componente que faz o papel <strong>de</strong> front-end, isto<br />

é, gerente, permitindo que o operador configure o sistema e observe os dados coletados<br />

em tempo real (assim como o histórico dos dados). Telescópios, por sua vez, atuam<br />

como agentes, sendo os componentes responsáveis pela monitoração do universo BitTorrent<br />

e pelo retorno <strong>de</strong> resultados <strong>de</strong> acordo com as requisições enviadas pelo Observador.<br />

Telescópios são subdivididos em três partes, <strong>de</strong>nominadas “lentes”, sendo cada uma<br />

responsável por monitorar um grupo diferente <strong>de</strong> elementos do universo: comunida<strong>de</strong>s,<br />

rastreadores e pares. Essa modularização permite que as lentes existentes possam ser<br />

substituídas, assim como novas possam ser facilmente incorporadas na arquitetura (sem<br />

modificação <strong>de</strong> seus componentes essenciais).<br />

Operador<br />

Observador<br />

1 ... n<br />

Lente<br />

Comunida<strong>de</strong><br />

Telescópio<br />

Lente<br />

Rastreador<br />

Lente<br />

Pares<br />

Comunida<strong>de</strong>s<br />

Rastreadores<br />

Enxame<br />

Par<br />

Par<br />

Troca <strong>de</strong><br />

Arquivos<br />

Busca Lista <strong>de</strong> Pares<br />

Obtém Torrent<br />

Figura 1. Arquitetura TorrentU<br />

Lançando mão da flexibilida<strong>de</strong> oferecida por TorrentU, algumas funcionalida<strong>de</strong>s,<br />

originalmente não contempladas pela arquitetura, foram implementadas e integradas. Entre<br />

as extensões, <strong>de</strong>stacam-se duas. A primeira, criada para permitir a i<strong>de</strong>ntificação dos<br />

173


primeiros pares semeadores <strong>de</strong> enxames, consiste em lente que captura torrents logo que<br />

publicados em comunida<strong>de</strong>s. A segunda extensão, também materializada por meio <strong>de</strong><br />

nova lente, realiza monitoração contínua das páginas <strong>de</strong> torrents, armazenando tempo<br />

<strong>de</strong> vida dos enxames, números <strong>de</strong> semeadores e sugadores, e testemunhos postados. O<br />

objetivo, nesse caso, é a produção <strong>de</strong> “fotografias” <strong>de</strong> enxames ao longo do tempo.<br />

O algoritmo 1 apresenta uma visão geral do procedimento <strong>de</strong> monitoração executado.<br />

Como po<strong>de</strong>-se perceber pela <strong>de</strong>scrição das funções, os torrents recentemente publicados<br />

são capturados. Para cada torrent, o(s) respectivo(s) rastreador(es) é/são caracterizado(s)<br />

e mensagem(ens) para obtenção <strong>de</strong> lista(s) <strong>de</strong> pares participantes, enviada(s).<br />

Caso obtenha-se essa(s) lista(s), um processo <strong>de</strong> caracterização dos primeiros pares participantes<br />

do enxame é realizado e, ao finalizá-lo, a lente responsável pela captura <strong>de</strong><br />

fotografias da comunida<strong>de</strong> é iniciada para o torrent em questão. São cinco parâmetros<br />

que <strong>de</strong>terminam o comportamento <strong>de</strong>sse algoritmo. Tempo <strong>de</strong>termina quanto durará a<br />

campanha <strong>de</strong> monitoração. Rodadas indica o número <strong>de</strong> tentativas a serem realizadas<br />

para contatar rastreadores. Quantida<strong>de</strong> representa o tamanho da lista <strong>de</strong> pares requisitada<br />

aos rastreadores. Limiar <strong>de</strong>termina em quais enxames será feita troca <strong>de</strong> mensagens bitfield.<br />

Periodicida<strong>de</strong> consiste no intervalo <strong>de</strong> tempo a ser respeitado para produzir cada<br />

fotografia <strong>de</strong> um dado enxame. Intervalo representa o tempo <strong>de</strong> espera entre cada rodada<br />

<strong>de</strong> execução do algoritmo.<br />

input: tempo, tentativas, quantida<strong>de</strong>, limiar, periodicida<strong>de</strong> e intervalo<br />

for i ← 0 to tempo do<br />

torrents[] ← CapturarTorrentsRecentes();<br />

for j ← 0 to torrents.size() do<br />

torrent ← torrents[j];<br />

DownloadTorrent(torrent);<br />

LerArquivo(torrent);<br />

CaracterizarRastreadores(torrent);<br />

peerList ← ObterListaPares(torrent, tentativas,<br />

quantida<strong>de</strong>);<br />

CaracterizarPares(peerList);<br />

if peerList.size() < limiar then<br />

TrocarBitfields(torrent);<br />

end<br />

IniciarCapturaFotografias(torrent, periodicida<strong>de</strong>);<br />

end<br />

Esperar (intervalo);<br />

end<br />

Algoritmo 1: Visão geral do procedimento <strong>de</strong> monitoração<br />

Ressalta-se que a ênfase <strong>de</strong>ste artigo resi<strong>de</strong> nos resultados da caracterização <strong>de</strong><br />

disseminação ilegal <strong>de</strong> filmes e não na <strong>de</strong>scrição da arquitetura <strong>de</strong> monitoração. Ao leitor<br />

interessado em <strong>de</strong>talhes acerca do funcionamento da arquitetura sugere-se consulta a<br />

artigo anterior [Mansilha et al. 2011] produzido pelo nosso grupo <strong>de</strong> pesquisa.<br />

174


3.2. Instanciação da Arquitetura<br />

Telescópios foram instanciados em três nodos do PlanetLab [PlanetLab 2011] e em um<br />

servidor privado. O objetivo <strong>de</strong>ssa redundância foi, basicamente, tolerar falhas e evitar<br />

<strong>de</strong>scontinuida<strong>de</strong> do processo <strong>de</strong> monitoração. Já o componente Observador foi instanciado<br />

em uma única estação. Entre as comunida<strong>de</strong>s BitTorrent existentes, optou-se por<br />

monitorar o PirateBay [Piratebay 2011]. Tal <strong>de</strong>ve-se ao fato <strong>de</strong> ser a comunida<strong>de</strong> aberta<br />

mais popular, disponibilizar somente torrents publicados em seus servidores, manter registro<br />

<strong>de</strong> usuários responsáveis pela publicação <strong>de</strong> cada torrent, e prover classificação <strong>de</strong><br />

cada usuário baseada em sua reputação.<br />

O processo <strong>de</strong> monitoração foi instanciado utilizando-se as seguintes<br />

configurações (po<strong>de</strong>m ser entendidas como parâmetros recém <strong>de</strong>talhados do algoritmo 1):<br />

2 tentativas para obtenção <strong>de</strong> lista <strong>de</strong> pares com cada rastreador, 50 pares por lista, limiar<br />

<strong>de</strong>finindo máximo <strong>de</strong> 10 pares com os quais serão trocadas as mensagens bitfield, periodicida<strong>de</strong><br />

<strong>de</strong> 8 horas entre cada fotografia da comunida<strong>de</strong> e intervalos <strong>de</strong> 2 minutos entre<br />

rodadas <strong>de</strong> monitoração. A monitoração foi realizada por período <strong>de</strong> um mês (05/2011<br />

à 06/2011), produzindo dados brutos que somaram 11.959 otorrents, 94 rastreadores e<br />

187.140 en<strong>de</strong>reços IP.<br />

4. Resultados<br />

A base <strong>de</strong> 11.959 torrents precisou ser submetida a um processo <strong>de</strong> filtragem, para que enxames<br />

in<strong>de</strong>sejados fossem retirados e, assim, não influenciassem a análise. Inicialmente<br />

removeu-se todos os torrents cujos rastreadores não pu<strong>de</strong>ram ser contatados <strong>de</strong>vido a inconsistências<br />

nas URLs informadas.. Nesse grupo enquadraram-se 4.181 torrents. Em um<br />

segundo momento, retirou-se aqueles torrents que tiveram menos <strong>de</strong> 8 horas <strong>de</strong> vida na<br />

comunida<strong>de</strong>, levando à glosagem <strong>de</strong> mais 4.791 torrents. Enxames com dados inconsistentes<br />

ou removidos tão precocemente da comunida<strong>de</strong> representam, muito provavelmente,<br />

conteúdos falsos. A não remoção <strong>de</strong>sses enxames po<strong>de</strong> exercer forte influência na análise<br />

dos resultados. Apesar da importância do processo <strong>de</strong> filtragem, até on<strong>de</strong> sabemos em<br />

nenhum dos trabalhos relacionados houve tal preocupação.<br />

Após as duas filtragens, 2.987 torrents remanesceram e foram analisados. Os resultados<br />

são apresentados a seguir. Inicialmente caracteriza-se produtores e publicadores<br />

<strong>de</strong> conteúdos ilícitos, investigando seus graus <strong>de</strong> ativida<strong>de</strong> e possíveis relações entre esses<br />

agentes. Na sequência, relata-se os processos <strong>de</strong> digitalização mais empregados e<br />

<strong>de</strong>talha-se a dinâmica, ao longo do tempo, <strong>de</strong> lançamento <strong>de</strong> torrents (dado um conjunto<br />

conhecido <strong>de</strong> conteúdos) x processos utilizados. Por fim, analisa-se os primeiros semeadores,<br />

procurando relações entre eles, os criadores <strong>de</strong> cópias digitais e os publicadores <strong>de</strong><br />

torrents.<br />

4.1. Produtores e Publicadores <strong>de</strong> Conteúdo Ilícito<br />

Conforme apresentado na subseção 2.1, grupos <strong>de</strong> digitalização são os principais responsáveis<br />

pela criação <strong>de</strong> cópias ilícitas <strong>de</strong> filmes sendo compartilhadas nas re<strong>de</strong>s BT.<br />

Neste artigo eles são referidos como produtores. Dos 2.987 torrents analisados, 2.066<br />

(69,16%) i<strong>de</strong>ntificam o produtor responsável por cada cópia. Esses 2.066 torrents foram<br />

criados por 342 produtores distintos. A tabela 2 enumera, em or<strong>de</strong>m <strong>de</strong>crescente,<br />

os 10 principais produtores. Ao lado, na figura 2, ilustra-se CDF (Cumulative Density<br />

175


Function) representando no eixo horizontal os produtores, or<strong>de</strong>nados por quantida<strong>de</strong> <strong>de</strong><br />

conteúdo criado, e no eixo vertical, a proporção acumulada <strong>de</strong> torrents criados. Como<br />

é possível observar, poucos produtores são responsáveis por gran<strong>de</strong> parcela do conteúdo<br />

criado; praticamente 80% das cópias foram criadas por 100 produtores (29,23% dos 342).<br />

1<br />

Tabela 2. Ranqueamento<br />

Grupo<br />

Torrents<br />

# %<br />

Waf 78 4,02<br />

Mr Keff 69 3,56<br />

Tnt Village 62 3,20<br />

DutchTeamRls 61 3,14<br />

Dmt 61 3,14<br />

Imagine 59 3,04<br />

Lkrg 51 2,63<br />

Miguel 46 2,37<br />

Martin 46 2,37<br />

Nlt 44 2,27<br />

Proporção <strong>de</strong> Torrents<br />

CDF<br />

0.9<br />

0.8<br />

0.7<br />

0.6<br />

0.5<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

50 100 150 200 250 300<br />

Grupos <strong>de</strong> Digitalização<br />

Figura 2. Contribuição cumulativa dos produtores<br />

Com o arquivo digital criado, o próximo passo para disseminá-lo é a publicação<br />

<strong>de</strong> torrent na comunida<strong>de</strong>. Os responsáveis por essa etapa são os publicadores, que, no<br />

escopo <strong>de</strong>ste artigo, correspon<strong>de</strong>m a usuários cadastrados no PirateBay realizando upload<br />

<strong>de</strong> torrents. Os 2.987 torrents foram publicados por um total <strong>de</strong> 517 usuários distintos.<br />

A tabela 3 apresenta os usuários mais ativos junto com a quantida<strong>de</strong> e proporção <strong>de</strong> torrents<br />

publicados. Essa tabela apresenta, além do nome do usuário, a sua categoria, que<br />

representa um “termômetro” da sua reputação na comunida<strong>de</strong>. Existem quatro categorias<br />

<strong>de</strong> usuários: VIP, confiável, ajudante e regular (estado inicial <strong>de</strong> qualquer usuário). A<br />

figura 3 apresenta uma CDF com os usuários em or<strong>de</strong>m <strong>de</strong>crescente <strong>de</strong> torrents publicados<br />

no eixo horizontal e a proporção <strong>de</strong> torrents no vertical. Ao observar esse gráfico,<br />

po<strong>de</strong>-se, novamente, perceber como poucos usuários são responsáveis pela maioria do<br />

conteúdo publicado. Em números, tem-se que 100 usuários (19,34% dos 517) publicaram<br />

quase 75% do conteúdo. Além disso, <strong>de</strong>staca-se que 25,5% dos 517 usuários eram <strong>de</strong><br />

tipos especiais (não regulares) e foram eles os responsáveis pela publicação <strong>de</strong> 59,9% dos<br />

torrents.<br />

Após análise isolada da ativida<strong>de</strong> <strong>de</strong> produtores e consumidores, procurou-se<br />

evidências quanto à existência <strong>de</strong> relação na ação <strong>de</strong> ambos agentes. Dois casos típicos foram<br />

observados: um publicador disponibilizando todos os materiais <strong>de</strong> um produtor e um<br />

grupo <strong>de</strong> publicadores trabalhando para um único produtor. Exemplificando o primeiro<br />

caso tem-se o usuário “sadbawang”, que publicou 77 dos 78 torrents do grupo “Waf”.<br />

Para ilustrar o segundo caso, tem-se que os publicadores “.BONE.” e “froggie100” foram<br />

responsáveis pela maioria dos conteúdos criados pelo grupo “Imagine”.<br />

4.2. Processos <strong>de</strong> Digitalização Empregados<br />

Como já apontado na subseção 2.1, cópias digitais <strong>de</strong> um mesmo filme são diferenciadas<br />

pelas suas qualida<strong>de</strong>s, que, por sua vez, são resultantes do processo <strong>de</strong> digitalização uti-<br />

176


Tabela 3. Ranqueamento<br />

Usuário Tipo<br />

Torrents<br />

# %<br />

.BONE. VIP 211 7,06<br />

HDVi<strong>de</strong>os Regular 91 3,04<br />

sadbawang VIP 77 2,57<br />

Sir TankaLot Confiável 73 2,44<br />

MeMar VIP 67 2,24<br />

l.diliberto VIP 57 1,90<br />

SaM VIP 47 1,57<br />

martin edguy Confiável 46 1,54<br />

miguel1983 VIP 46 1,54<br />

virana Confiável 41 1,37<br />

Proporção <strong>de</strong> Torrents<br />

CDF<br />

0.9<br />

0.8<br />

0.7<br />

0.6<br />

0.5<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

1<br />

0<br />

50 100 150 200 250 300 350 400 450 500<br />

Usuários das Comunida<strong>de</strong>s<br />

Figura 3. Contribuição cumulativa dos<br />

publicadores<br />

lizado. Dos 2.987 torrents analisados, 2.344 (78,47%) i<strong>de</strong>ntificavam o processo utilizado<br />

para criação <strong>de</strong> cada mídia. A tabela 4 apresenta os processos, os seus graus <strong>de</strong> ocorrência<br />

e os três grupos <strong>de</strong> digitalização que mais criaram mídias empregando cada processo.<br />

Tabela 4. Principais processos<br />

Processo<br />

Torrents<br />

# %<br />

Principais Grupos<br />

DVDRip 1825 77,85 Waf, Mr Keff, Tnt Village<br />

TS 144 6,14 Imagine, Dtrg, Cm8<br />

R5 132 5,63 Imagine, Dmt, Vision<br />

DVDScr 109 4,65 Ddr, Mtr, Xtreme<br />

CAM 68 2,90 Lkrg, Imagine, Team Tnt<br />

PPVRip 27 1,15 Iflix, Dmt, Flawl3ss<br />

SCR 22 0,93 Kickass, Scr0n, 7speed<br />

TC 16 0,68 Mtr, Team Tc, Rko<br />

Analisando os resultados, observa-se que “DVDRip” representa o processo <strong>de</strong><br />

digitalização mais comum, sendo o empregado por 77,85% dos torrents analisados que<br />

i<strong>de</strong>ntificaram o processo. Tal predominância <strong>de</strong>ve-se a duas razões principais. Primeiro,<br />

o conjunto <strong>de</strong> filmes que esses torrents po<strong>de</strong>m estar representando é muito maior. Qualquer<br />

filme com 16 semanas transcorridas do seu lançamento oficial po<strong>de</strong> ser encontrado<br />

nesse formato e o resultado <strong>de</strong>sse processo são mídias com a qualida<strong>de</strong> máxima, resultando<br />

no <strong>de</strong>sinteresse pelas criadas por outros processos. Segundo, digitalizar um filme<br />

por meio <strong>de</strong>sse processo é trivial se comparado com os outros; qualquer usuário que<br />

possuir um DVD original po<strong>de</strong> fazê-lo em seu computador pessoal. Outro grupo <strong>de</strong> processos<br />

que se <strong>de</strong>staca é o formado por “CAM”, “TS”, “DVDScr” e “R5”. O alto grau<br />

<strong>de</strong> ocorrência, em comparação aos outros processos que não “DVDRip”, <strong>de</strong>ve-se a uma<br />

questão <strong>de</strong> custo/benefício entre: a dificulda<strong>de</strong> <strong>de</strong> obter-se a fonte para digitalização, o<br />

tempo necessário após o lançamento oficial do filme e a qualida<strong>de</strong> final da mídia. A<br />

título <strong>de</strong> exemplo tem-se que, apesar da qualida<strong>de</strong> resultante do processo “TC” ser a melhor<br />

entre a estréia do filme e 4-8 semanas transcorridas, “CAM” e “TS”, por utilizarem<br />

177


fonte facilmente acessíveis, são processos mais empregados (0,68% x 9,04%). Vale observar,<br />

também, como produtores “menos ativos” <strong>de</strong>stacam-se pelas suas especializações em<br />

processos que necessitam <strong>de</strong> fontes <strong>de</strong> difícil acesso. O grupo “Imagine”, por exemplo,<br />

apesar <strong>de</strong> ser somente o sexto colocado da tabela 2, apresenta-se como o principal produtor<br />

<strong>de</strong> “TS” e “R5”. Logo, as ativida<strong>de</strong>s <strong>de</strong>sse grupo tornam-se tão importantes quanto,<br />

se não mais, as dos primeiros colocados da tabela 2.<br />

Passando-se, agora, a caracterizar a dinâmica <strong>de</strong> processos <strong>de</strong> digitalização e <strong>de</strong><br />

torrents disponibilizados em portais BT em paralelo ao ciclo <strong>de</strong> vida <strong>de</strong> filmes lançados<br />

no cinema, a figura 4 sintetiza resultado <strong>de</strong> observação realizada. Antes <strong>de</strong> apresentar<br />

discussão, contudo, é necessário informar que o período mínimo <strong>de</strong> monitoração para ser<br />

possível capturar todas as digitalizações realizadas sob um mesmo filme é <strong>de</strong> 16 semanas.<br />

Como não dispôs-se <strong>de</strong>sta janela <strong>de</strong> tempo, trabalhou-se com 9 filmes, todos presentes<br />

no dataset coletado ao longo <strong>de</strong> 30 dias, cujo lançamento tivesse ocorrido há 0-4, 5-<br />

8 e há mais <strong>de</strong> 8 semanas (<strong>de</strong> acordo com o informado na IMDb [IMDB 2011]). No<br />

gráfico, o eixo horizontal representa os dias transcorridos e o eixo vertical, os processos<br />

<strong>de</strong> digitalização. Para apresentar uma “fotografia” mais fi<strong>de</strong>digna, todos torrents que não<br />

tiveram um tempo mínimo <strong>de</strong> vida <strong>de</strong> uma semana na comunida<strong>de</strong> e que não haviam sido<br />

publicados por usuários renomados foram <strong>de</strong>sconsi<strong>de</strong>rados.<br />

CAM<br />

TS<br />

R5<br />

DVDRip<br />

1-2<br />

3<br />

4<br />

5<br />

6<br />

9<br />

7<br />

6 6<br />

8<br />

9<br />

10<br />

11-25<br />

26<br />

27<br />

Velozes e Furiosos 5 Piratas do Caribe 4<br />

Thor<br />

12<br />

28-29<br />

30<br />

7<br />

4 6 6<br />

31<br />

32<br />

33-35<br />

36<br />

37<br />

38<br />

39<br />

40<br />

41-60<br />

61<br />

Dias Após Lançamento Oficial<br />

62<br />

63<br />

Rio Sem Limites Água para Elefantes<br />

64-79<br />

80<br />

5 6 4 4<br />

81<br />

82<br />

83<br />

84<br />

85<br />

86-96<br />

97<br />

98<br />

99<br />

Desconhecido Fúria sobre Rodas<br />

Esposa <strong>de</strong> Mentirinha<br />

100<br />

101<br />

102-112<br />

Figura 4. Processos <strong>de</strong> digitalização utilizados após estréia oficial<br />

Quatro aspectos merecem <strong>de</strong>staque a partir da análise do gráfico. Primeiro, mídias<br />

criadas por um processo surgem em rajadas <strong>de</strong> torrents, cada um representando o trabalho<br />

<strong>de</strong> um grupo distinto. Tal po<strong>de</strong> ser observado, por exemplo, nos dias 30 e 31, em<br />

que surge a primeira mídia gerada pelo processo “R5” do filme “Rio”. Segundo, como<br />

esperado, os intervalos apresentados na tabela 1 para surgimento das mídias geradas por<br />

meio <strong>de</strong> cada processo são respeitados. O momento exato <strong>de</strong>ntro <strong>de</strong>sse intervalo é influenciado<br />

por <strong>de</strong>cisões da indústria cinematográfica. Por exemplo, os primeiros arquivos<br />

gerados pelo processo “R5” dos filmes “Rio”, “Água para Elefantes” e “Sem Limites”<br />

aparecem, respectivamente, quatro, cinco e oito semanas após as suas estréias, pois as<br />

suas fontes foram lançadas em momentos distintos. Terceiro, torrents <strong>de</strong> alguns filmes<br />

continuam sendo publicados mesmo após o final da rajada inicial, como ocorre nos dias<br />

82, 83 e 85 do filme “Fúria sobre Rodas”. Tal não <strong>de</strong>ve, contudo, ser encarado como<br />

indício <strong>de</strong> comportamento <strong>de</strong> distribuição diferenciado; trata-se <strong>de</strong> especializações <strong>de</strong><br />

mídias já existentes (codificação <strong>de</strong> ví<strong>de</strong>o alternativa, áudio dublado ou legenda inserida<br />

sobre a imagem do ví<strong>de</strong>o). Quarto, o mesmo filme po<strong>de</strong> ter mais do que uma rajada <strong>de</strong><br />

publicações por processo <strong>de</strong> digitalização. Observa-se essa situação analisando o filme<br />

“Velozes e Furiosos 5”, em que uma rajada inicia-se no dia 3 e outra no dia 26. Esse<br />

178


fenômeno é observado quando uma fonte <strong>de</strong> melhor qualida<strong>de</strong> é encontrada para realizar<br />

o processo, acarretando em melhor qualida<strong>de</strong> final da mídia gerada.<br />

4.3. Provedores <strong>de</strong> Conteúdo Ilícito<br />

Ainda como parte da caracterização <strong>de</strong> disseminação ilegal <strong>de</strong> filmes em re<strong>de</strong>s BT,<br />

interessou-se em <strong>de</strong>terminar os pares (usuários) que fomentam enxames, na condição <strong>de</strong><br />

semeadores, em seus instantes iniciais. Para i<strong>de</strong>ntificá-los, foi necessário que a arquitetura<br />

<strong>de</strong> monitoração estivesse <strong>de</strong>vidamente configurada para, assim que torrents fossem publicados<br />

no portal, pu<strong>de</strong>ssem ter seus respectivos rastreadores contatados e listas <strong>de</strong> pares<br />

participantes do início do enxame, obtidos. Quanto menor o intervalo <strong>de</strong>corrido entre a<br />

publicação <strong>de</strong> um torrent e o início da monitoração do enxame, maior a probabilida<strong>de</strong> <strong>de</strong><br />

encontrar no enxame apenas o(s) primeiro(s) semeador(es). No contexto da investigação<br />

conduzida (lançando mão da arquitetura TorrentU e, em última análise, do procedimento<br />

ilustrado pelo algoritmo 1), esse intervalo girou em torno <strong>de</strong> 4 minutos.<br />

Por meio da metodologia mencionada, i<strong>de</strong>ntificou-se os primeiros semeadores <strong>de</strong><br />

692 (23,16%) dos 2.987 torrents analisados. Todos aqueles em que não foi possível i<strong>de</strong>ntificar<br />

o(s) primeiro(s) semeador(es) eram enxames que: estavam vazios, existiam previamente<br />

à publicação do seu torrent no PirateBay ou cujo(s) rastreador(es) não foi possível<br />

contatar por erro na tentativa <strong>de</strong> comunicação. Passando à análise dos resultados, os 692<br />

torrents foram semeados por um total <strong>de</strong> 775 pares; para alguns enxames observou-se,<br />

já no seu início, mais do que um semeador. Os 775 semeadores i<strong>de</strong>ntificados estão associados<br />

a 318 en<strong>de</strong>reços IP únicos. A figura 5 ilustra o grau <strong>de</strong> participação <strong>de</strong> cada<br />

IP.<br />

1<br />

0.9<br />

0.8<br />

Proporção <strong>de</strong> Enxames Semeados<br />

CDF<br />

0.7<br />

0.6<br />

0.5<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

40 80 120 160 200 240 280<br />

Provedores <strong>de</strong> Conteúdos<br />

Figura 5. Contribuição cumulativa dos provedores<br />

Dois aspectos <strong>de</strong>stacam-se a partir da análise da figura 5. Primeiro, 25 en<strong>de</strong>reços<br />

IP (7,86% dos 318) participaram como semeadores <strong>de</strong> cerca da meta<strong>de</strong> dos enxames.<br />

Tal é um indicador <strong>de</strong> que usuários especializados po<strong>de</strong>m estar utilizando seedboxes<br />

[Wikipedia 2011c] para disseminar seus conteúdos. Segundo, todos os semeadores a<br />

partir do 82 o serviram exclusivamente a um enxame, caracterizando a participação <strong>de</strong><br />

usuários “domésticos” no fomento <strong>de</strong> parcela significativa <strong>de</strong> enxames BT.<br />

179


A tabela 5 apresenta a procedência dos principais semeadores, <strong>de</strong>stacando país <strong>de</strong><br />

origem, Internet Service Provi<strong>de</strong>r (ISP) <strong>de</strong> cada IP e quantida<strong>de</strong> <strong>de</strong> enxames semeados.<br />

Em contraste, apresenta-se na tabela 6 as principais localizações dos semeadores, ignorando<br />

a quantida<strong>de</strong> <strong>de</strong> enxames que cada um serviu. Como po<strong>de</strong>-se observar, a França<br />

<strong>de</strong>staca-se por 9,03% dos semeadores estarem localizados nesse país, curiosamente sendo<br />

todos servidos pelo ISP “Ovh”.<br />

País ISP # Enxames<br />

NZ Obtrix 57<br />

FR Ovh 45<br />

FR Ovh 32<br />

PL Mokadi 32<br />

GB Ovh 31<br />

FR Ovh 24<br />

NZ Obtrix 21<br />

FI Lsinki 15<br />

FR Ovh 14<br />

NL Upc 12<br />

Tabela 5. Principais semeadores<br />

País # IPs<br />

IN 41<br />

US 33<br />

SE 33<br />

FR 28<br />

NL 26<br />

JP 24<br />

GB 14<br />

PK 11<br />

DE 10<br />

AU 7<br />

Tabela 6. Distrubuição semeadores<br />

Os provedores <strong>de</strong> conteúdo são os terceiros e últimos agentes responsáveis pelo<br />

processo <strong>de</strong> disseminação <strong>de</strong> cópias ilícitas <strong>de</strong> filmes através <strong>de</strong> BT. Ao observá-los,<br />

constatou-se que existem relações <strong>de</strong> <strong>de</strong>pendência, ou subordinação, entre provedores<br />

(primeiros semeadores), produtores (grupos <strong>de</strong> digitalização) e publicadores (usuários da<br />

comunida<strong>de</strong>). Três casos típicos foram encontrados e são discutidos a seguir. O primeiro<br />

caso são provedores e publicadores <strong>de</strong>pen<strong>de</strong>ntes dos produtores. Um exemplo são os<br />

grupos “Dmt”, “Mr keff” e “Miguel”, que tiveram cerca <strong>de</strong> 90% dos seus torrents publicados<br />

e semeados pelo mesmo usuário. O segundo caso consiste na observação <strong>de</strong> que<br />

provedores po<strong>de</strong>m estar subordinados a produtores. Exemplos <strong>de</strong>sse caso são os grupos<br />

“Kickass”, “Ddr” e “Extratorrentrg” que, apesar <strong>de</strong> terem seus torrents publicados por um<br />

grupo heterogêneo <strong>de</strong> usuários, sempre são semeados pelo mesmo provedor. O terceiro<br />

e último caso está relacionado com a possibilida<strong>de</strong> <strong>de</strong> provedores serem <strong>de</strong>pen<strong>de</strong>ntes <strong>de</strong><br />

publicadores. Como exemplo, tem-se os publicadores “Theroach”, “Riff” e “Safcuk009”,<br />

que disponibilizaram torrents <strong>de</strong> mídias criadas por grupos variados, porém sempre semeados<br />

pelos mesmos provedores.<br />

5. Conclusões e Trabalhos Futuros<br />

O compartilhamento <strong>de</strong> conteúdo por meio do protocolo BitTorrent é um dos principais<br />

responsáveis pelo atual volume <strong>de</strong> tráfego da Internet. Sabe-se que a maior parte <strong>de</strong>sse<br />

volume é constituída pelo compartilhamento <strong>de</strong> conteúdos ilícitos. Sabe-se, também, que<br />

filme é o principal tipo <strong>de</strong> mídia sendo compartilhado ilegalmente. Apesar da reconhecida<br />

importância do tema, nenhum estudo procurou observar e mapear a dinâmica <strong>de</strong><br />

disseminação <strong>de</strong>ssa natureza <strong>de</strong> conteúdo. Para suprir essa lacuna, realizou-se a extensão<br />

<strong>de</strong> uma arquitetura <strong>de</strong> monitoração, que foi instanciada para observar o “universo” BT<br />

por 30 dias. A gran<strong>de</strong> massa <strong>de</strong> dados obtida foi, então, organizada e cuidadosamente<br />

180


analisada. Até on<strong>de</strong> sabemos, este é o primeiro estudo científico que busca caracterizar<br />

disseminação ilegal <strong>de</strong> filmes em re<strong>de</strong>s BitTorrent.<br />

A partir dos dados obtidos foi possível i<strong>de</strong>ntificar padrões <strong>de</strong> comportamento <strong>de</strong><br />

disseminadores <strong>de</strong> filmes ilegais. No que remete aos produtores, <strong>de</strong>scobriu-se que a maioria<br />

dos torrents possui i<strong>de</strong>ntificação do grupo <strong>de</strong> digitalização responsável e que, na<br />

realida<strong>de</strong>, são poucos produtores criando a maioria dos conteúdos. Quanto aos publicadores,<br />

observou-se um comportamento similar ao dos produtores, no sentido <strong>de</strong> que<br />

poucos são responsáveis pela publicação <strong>de</strong> gran<strong>de</strong> parte dos torrents <strong>de</strong> cópias ilícitas.<br />

Além disso, uma relação <strong>de</strong> subordinação foi observada entre produtores e publicadores.<br />

Ao analisar os processos <strong>de</strong> digitalização empregados, <strong>de</strong>scobriu-se que certos produtores<br />

são especializados em certos processos e confirmou-se a evolução, ao longo do tempo, dos<br />

processos por meio dos quais os filmes ofertados são digitalizados. Por fim, abordou-se<br />

os responsáveis por inicialmente semearem os enxames <strong>de</strong>sses conteúdos, i<strong>de</strong>ntificando<br />

as relações <strong>de</strong> <strong>de</strong>pendência existentes entre produtores, publicadores e semeadores.<br />

Finalizada uma primeira iteração para caracterizar disseminação ilegal <strong>de</strong> filmes<br />

em re<strong>de</strong>s BT, i<strong>de</strong>ntifica-se um conjunto <strong>de</strong> oportunida<strong>de</strong>s <strong>de</strong> investigações futuras. A<br />

primeira consiste em realizar monitoração mais longa, <strong>de</strong>sejavelmente com um mínimo<br />

<strong>de</strong> 16 semanas, que permita acompanhar o “ciclo <strong>de</strong> vida” completo <strong>de</strong> filmes em re<strong>de</strong>s<br />

BT, <strong>de</strong>s<strong>de</strong> seu lançamento no cinema até o momento em que passa a ser distribuído em<br />

DVD. A segunda oportunida<strong>de</strong> <strong>de</strong> trabalho futuro consiste em observar outras comunida<strong>de</strong>s<br />

públicas populares. A terceira, monitorar as darknets, comunida<strong>de</strong>s privadas <strong>de</strong><br />

torrents, que, provavelmente, representam os locais on<strong>de</strong>, em tese, enxames em torno<br />

<strong>de</strong> cópias ilegais <strong>de</strong> filmes aparecem primeiro. Por fim, uma quarta oportunida<strong>de</strong> é a<br />

observação <strong>de</strong> padrões e dinâmicas <strong>de</strong> consumo <strong>de</strong>sses conteúdos. Por exemplo, é interessante<br />

procurar observar se há concentração <strong>de</strong> consumidores <strong>de</strong> filmes ilegais em<br />

<strong>de</strong>terminadas regiões e se há comportamentos claros <strong>de</strong> migração <strong>de</strong> consumidores entre<br />

enxames.<br />

Referências<br />

Bauer, K., McCoy, D., Grunwald, D., and Sicker, D. (2009). Bitstalker: Accurately and<br />

efficiently monitoring bittorrent traffic. In WIFS 2009, IEEE Workshop on Information<br />

Forensics and Security, pages 181–185.<br />

Chow, K., Cheng, K., Man, L., Lai, P., Hui, L., Chong, C., Pun, K., Tsang, W., Chan,<br />

H., and Yiu, S. (2007). Btm - an automated rule-based bt monitoring system for piracy<br />

<strong>de</strong>tection. In ICIMP 2007, International Conference on Internet Monitoring and<br />

Protection, pages 1–6.<br />

Cuevas, R., Kryczka, M., Cuevas, A., Kaune, S., Guerrero, C., and Rejaie, R. (2010). Is<br />

content publishing in bittorrent altruistic or profit-driven? In Co-NEXT 2010, International<br />

Conference on Emerging Networking Experiments and Technologies, pages<br />

1–12.<br />

Envisional (2011). An estimate of infringing use of the internet. http://documents.<br />

envisional.com/docs/Envisional-Internet_Usage-Jan2011.pdf<br />

[Acessado em 07/11].<br />

IMDB (2011). http://www.imdb.com/ [Acessado em 07/11].<br />

181


Junemann, K., An<strong>de</strong>lfinger, P., Dinger, J., and Hartenstein, H. (2010). Bitmon: A tool for<br />

automated monitoring of the bittorrent dht. In P2P 2010, IEEE International Conference<br />

on Peer-to-Peer Computing, pages 1–2.<br />

Le Blond, S., Legout, A., Lefessant, F., Dabbous, W., and Kaafar, M. A. (2010). Spying<br />

the world from your laptop: i<strong>de</strong>ntifying and profiling content provi<strong>de</strong>rs and big downloa<strong>de</strong>rs<br />

in bittorrent. In LEET 2010, USENIX Workshop on Large-Scale Exploits and<br />

Emergent Threats, pages 4–4.<br />

Mansilha, R. B., Bays, L. R., Lehmann, M. B., Mezzomo, A., Gaspary, L. P., and Barcellos,<br />

M. P. (2011). Observing the bittorrent universe through telescopes. In IM 2011,<br />

IFIP/IEEE International Symposium on Integrated Network Management, pages 1–8.<br />

Piratebay (2011). http://thepiratebay.org/ [Acessado em 07/11].<br />

PlanetLab (2011). http://www.planet-lab.org/ [Acessado em 07/11].<br />

Schulze, H. and Mochalski, K. (2009). Internet study 2008-2009. http://<br />

www.ipoque.com/sites/<strong>de</strong>fault/files/mediafiles/documents/<br />

internet-study-2008-2009.pdf [Acessado em 07/11].<br />

Wikipedia (2011a). List of warez groups. http://en.wikipedia.org/wiki/<br />

List_of_warez_groups [Acessado em 07/11].<br />

Wikipedia (2011b). Pirated movie release types. http://en.wikipedia.org/<br />

wiki/Pirated_movie_release_types [Acessado em 07/11].<br />

Wikipedia (2011c). Seedbox. http://en.wikipedia.org/wiki/Seedbox<br />

[Acessado em 07/11].<br />

Zhang, C., Dhungel, P., Wu, D., Liu, Z., and Ross, K. (2010a). Bittorrent darknets.<br />

In INFOCOM 2010, IEEE International Conference on Computer Communications,<br />

pages 1460–1468.<br />

Zhang, C., Dhungel, P., Wu, D., and Ross, K. (2010b). Unraveling the bittorrent ecosystem.<br />

IEEE Transactions on Parallel and Distributed Systems, 22(7):1164–1177.<br />

182


Método Heurístico para Rotular Grupos em Sistema <strong>de</strong><br />

Detecção <strong>de</strong> Intrusão baseado em Anomalia<br />

Hermano Pereira 1 , Edgard Jamhour 2<br />

1 Companhia <strong>de</strong> Informática do Paraná - CELEPAR<br />

80.530-010 - Curitiba - PR, Brasil<br />

2 Pontifícia Universida<strong>de</strong> Católica do Paraná - PUCPR<br />

80.215-901 - Curitiba - PR, Brasil<br />

hermanopereira@celepar.pr.gov.br, jamhour@ppgia.pucpr.br<br />

Abstract. The intrusion <strong>de</strong>tection systems are part of security suite necessary<br />

for environment protection that contains information available on the Internet.<br />

Among these systems it is highlighted the unsupervised learning, as they are<br />

able to extract environment mo<strong>de</strong>ls without prior knowledge concerning the<br />

occurrence of attacks among the collected information. A technique used to<br />

create these mo<strong>de</strong>ls is the data clustering, where the resulting clusters are labeled<br />

either as normal or as attack (in anomalous case). This paper proposes<br />

a heuristic method for labeling clusters, where the false positive rates achieved<br />

during experiments were significantly lower compared to the methods <strong>de</strong>scribed<br />

in related work.<br />

Resumo. Os sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão fazem parte <strong>de</strong> um ferramental <strong>de</strong><br />

segurança necessário na proteção <strong>de</strong> ambientes que disponibilizam informações<br />

via Internet. Dentre esses sistemas vêm se <strong>de</strong>stacando os <strong>de</strong> aprendizagem nãosupervisionada,<br />

pois são capazes <strong>de</strong> extrair mo<strong>de</strong>los <strong>de</strong> comportamento do ambiente<br />

sem o conhecimento prévio <strong>de</strong> ataques <strong>de</strong>ntre as informações coletadas.<br />

Uma técnica utilizada para criar esses mo<strong>de</strong>los é a <strong>de</strong> agrupamento <strong>de</strong> dados,<br />

on<strong>de</strong> os grupos resultantes são rotulados como normais ou, no caso <strong>de</strong> anomalias,<br />

como ataques. Neste trabalho é proposto um método heurístico para rotular<br />

grupos que durante os experimentos resultou em taxas <strong>de</strong> falsos positivos<br />

significativamente menores em relação aos métodos <strong>de</strong> trabalhos relacionados.<br />

1. Introdução<br />

Os Sistemas <strong>de</strong> Detecção <strong>de</strong> Intrusão (Intrusion Detection Systems), sigla IDS, são sistemas<br />

que atuam junto ao sistema operacional ou em uma re<strong>de</strong> <strong>de</strong> computadores buscando<br />

i<strong>de</strong>ntificar ativida<strong>de</strong>s maliciosas. Em geral, a estratégia <strong>de</strong> análise do IDS é baseada em<br />

mau uso (misuse-based) ou baseada em anomalia (anomaly-based). Os IDSs baseados em<br />

mau uso fazem a <strong>de</strong>tecção <strong>de</strong> ataques pela representação <strong>de</strong>stes através <strong>de</strong> padrões, tais<br />

como regras ou assinaturas. Já os IDSs baseados em anomalia precisam conhecer antecipadamente<br />

o comportamento do ambiente a ser monitorado, para então <strong>de</strong>tectar ataques<br />

através do <strong>de</strong>svio do comportamento ou na ocorrência <strong>de</strong> anomalias. A principal vantagem<br />

do IDS baseado em mau uso está na possibilida<strong>de</strong> dos ataques serem especificados<br />

por especialistas, porém, esses IDSs necessitam que suas bases <strong>de</strong> padrões sejam atualizadas<br />

constantemente. Já os IDSs baseados em anomalias são <strong>de</strong>pen<strong>de</strong>ntes do ambiente<br />

183


que monitoram, necessitam <strong>de</strong> mais recursos para efetuar os treinamentos e geram muitos<br />

falsos positivos. Todavia apresentam vantagens, tais como <strong>de</strong>tectar ataques novos e obter<br />

baixos índices <strong>de</strong> falsos negativos.<br />

Na comunida<strong>de</strong> científica é possível encontrar diversos trabalhos <strong>de</strong> IDSs que procuram<br />

reduzir os índices <strong>de</strong> falsos positivos, e uma técnica baseada em anomalia que vêm<br />

obtendo bons resultados é a aprendizagem não-supervisionada (unsupervised learning)<br />

que utiliza agrupamento <strong>de</strong> dados (data clustering). Através <strong>de</strong>ssa técnica os mo<strong>de</strong>los <strong>de</strong><br />

<strong>de</strong>tecção <strong>de</strong> intrusão são criados a partir <strong>de</strong> treinamento utilizando algoritmos <strong>de</strong> agrupamento<br />

sobre uma base <strong>de</strong> dados não rotulada (ou seja, sem supervisão). Assim os grupos<br />

resultantes recebem um rótulo <strong>de</strong> normalida<strong>de</strong> ou, no caso <strong>de</strong> anomalia, um rótulo <strong>de</strong><br />

ataque. Porém, quando os grupos menores em número <strong>de</strong> instâncias ou isolados (outliers)<br />

que são legítimos mas recebem rótulos <strong>de</strong> ataque, acabam resultando em aumento<br />

no número <strong>de</strong> falsos positivos durante a <strong>de</strong>tecção <strong>de</strong> intrusão. Com o intuito <strong>de</strong> fazer<br />

uma melhor avaliação <strong>de</strong>sses grupos e reduzir o índice <strong>de</strong> falsos positivos, este trabalho<br />

apresenta um método heurístico para atribuição <strong>de</strong> rótulos <strong>de</strong> reputação aos grupos <strong>de</strong><br />

acordo com a quantida<strong>de</strong> e a origem das informações. Diferentemente <strong>de</strong> normalida<strong>de</strong> ou<br />

<strong>de</strong> ataque, os rótulos atribuídos po<strong>de</strong>m representar uma reputação que varia <strong>de</strong> péssima<br />

à excelente <strong>de</strong> acordo com uma escala empírica, a qual po<strong>de</strong> <strong>de</strong>terminar o quanto uma<br />

ativida<strong>de</strong> po<strong>de</strong> ser consi<strong>de</strong>rada uma intrusão.<br />

Para testar o método proposto, o IDS foi implementado e testado sobre um conjunto<br />

<strong>de</strong> requisições HTTP (Hypertext Transfer Protocol) que foram coletadas <strong>de</strong> um servidor<br />

web, o qual disponibilizava alguns sítios para a Internet e recebeu diversos ataques.<br />

Para a validação do método proposto, outros dois métodos <strong>de</strong> atribuição <strong>de</strong> rótulos <strong>de</strong><br />

trabalhos relacionados também foram implementados e testados sobre o mesmo conjunto<br />

<strong>de</strong> requisições. Ao final, o método proposto obteve na maioria dos testes os melhores<br />

resultados.<br />

Além <strong>de</strong>sta seção, os trabalhos relacionados são <strong>de</strong>scritos na seção 2; a metodologia<br />

é apresentada na seção 3; o método heurístico proposto é apresentado na seção 4 e os<br />

resultados dos experimentos realizados são apresentados na seção 5. Por fim, na seção 6,<br />

são feitas as conclusões e sugestões para trabalhos futuros.<br />

2. Trabalhos Relacionados<br />

Os principais trabalhos relacionados com esta pesquisa são os <strong>de</strong> [Portnoy et al. 2001] e<br />

<strong>de</strong> [Zhong et al. 2007], os quais utilizaram algoritmos <strong>de</strong> agrupamento para fazer o treinamento<br />

no modo não-supervisionado. Em seus seus experimentos os grupos resultantes<br />

foram avaliados utilizando um método heurístico, e neste trabalho eles foram implementados<br />

e comparados com o método proposto.<br />

Outros trabalhos que também utilizaram agrupamento <strong>de</strong> dados como técnica baseada<br />

em anomalia são: [Eskin et al. 2002], [Guan et al. 2003], [Mahoney et al. 2003] e<br />

[Leung and Leckie 2005]; on<strong>de</strong> os rótulos <strong>de</strong> ataques foram atribuídos <strong>de</strong> acordo com os<br />

outliers encontrados pelos algoritmos <strong>de</strong> agrupamento. No artigo <strong>de</strong> [Zhang et al. 2005],<br />

os outliers foram <strong>de</strong>tectados através <strong>de</strong> agentes distribuídos e analisados por um IDS central.<br />

No trabalho <strong>de</strong> [Singh et al. 2009], os outliers comuns i<strong>de</strong>ntificados em sistemas<br />

diferentes foram consi<strong>de</strong>rados ataques. De maneira diferente dos <strong>de</strong>mais, no trabalho <strong>de</strong><br />

[Petrović 2006] os grupos compactos i<strong>de</strong>ntificados por índices <strong>de</strong> validação <strong>de</strong> agrupa-<br />

184


mento foram consi<strong>de</strong>rados ataques em massa.<br />

Entre os trabalhos que trataram <strong>de</strong> <strong>de</strong>tecção baseada em anomalia em serviços web<br />

e HTTP po<strong>de</strong>m ser encontrados os <strong>de</strong> [Criscione et al. 2009], [Robertson et al. 2010] e<br />

[Corona and Giacinto 2010], on<strong>de</strong> os algoritmos <strong>de</strong> agrupamento foram utilizados apenas<br />

como uma técnica <strong>de</strong> análise complementar <strong>de</strong> suas arquiteturas.<br />

3. Metodologia<br />

Esta seção apresenta a metodologia que foi aplicada para realizar os experimentos. Um<br />

ambiente <strong>de</strong> testes foi preparado com uma base <strong>de</strong> 5 milhões <strong>de</strong> requisições HTTP que<br />

foi subdividida em 20 partições (<strong>de</strong>talhes na Seção 3.1). Para executar os testes, as<br />

requisições <strong>de</strong> uma partição X foram utilizadas durante o treinamento e resultou em mo<strong>de</strong>los<br />

<strong>de</strong> <strong>de</strong>tecção para serem utilizados na inspeção das requisições <strong>de</strong> uma partição Y, assim<br />

ilustra o fluxograma da figura 1. Na fase <strong>de</strong> treinamento, uma a uma as requisições foram<br />

normalizadas para que pu<strong>de</strong>ssem ser comparadas uma com as outras (Seção 3.2). Assim<br />

um algoritmo <strong>de</strong> agrupamento <strong>de</strong> ligação simples (Seção 3.4) foi aplicado e as requisições<br />

similares foram agrupadas. Para calcular a distância entre as requisições foi utilizada a<br />

medida <strong>de</strong> similarida<strong>de</strong> euclidiana que está <strong>de</strong>scrita na Seção 3.3. Após o agrupamento,<br />

os grupos resultantes foram avaliados e rotulados <strong>de</strong> acordo com três métodos heurísticos<br />

(Seção 3.5): o método <strong>de</strong> [Portnoy et al. 2001], o método <strong>de</strong> [Zhong et al. 2007] e o<br />

método proposto neste trabalho. Cada método resultou em mo<strong>de</strong>los que foram utilizados<br />

na fase <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão.<br />

TREINAMENTO<br />

Seção 3.1 Seção 3.2 Seções 3.3 e 3.4 Seções 3.5 e 4<br />

Requisições<br />

da Partição X<br />

Normalização<br />

das<br />

Requisições<br />

Agrupamento<br />

<strong>de</strong><br />

Dados<br />

Avaliação<br />

dos<br />

Grupos<br />

Mo<strong>de</strong>los<br />

<strong>de</strong> Detecção<br />

DETECÇÃO<br />

Requisições<br />

da Partição Y<br />

Normalização<br />

das<br />

Requisições<br />

Seção 3.1 Seção 3.2<br />

Detecção <strong>de</strong><br />

Intrusão<br />

Resultados<br />

Seção 3.6 Seções 3.7 e 5<br />

Observação: as partições X ou Y representam uma das 20 partes da base <strong>de</strong> requisições utilizada neste trabalho.<br />

Figura 1. Fluxograma - sequência aplicada nos testes<br />

Para a <strong>de</strong>tecção <strong>de</strong> intrusão em uma partição Y foi utilizado o mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>tecção<br />

da partição X. Por exemplo, o mo<strong>de</strong>lo extraído do treinamento sobre a partição P01 foi<br />

utilizado para a <strong>de</strong>tecção <strong>de</strong> ataques na partição P02 seguinte; e o mo<strong>de</strong>lo extraído da<br />

partição P02 foi utilizado na partição P03 e assim sucessivamente. Exceto no método <strong>de</strong><br />

<strong>de</strong>tecção <strong>de</strong>scrito por [Zhong et al. 2007], que para a <strong>de</strong>tecção <strong>de</strong> ataques na partição Y foi<br />

utilizado um mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>tecção da própria partição Y. Então foram testados três métodos<br />

<strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão (<strong>de</strong>scritos na Seção 3.6), o método <strong>de</strong> [Portnoy et al. 2001]; o<br />

método <strong>de</strong> [Zhong et al. 2007], e uma variação do método <strong>de</strong> [Portnoy et al. 2001]. Por<br />

fim, cada requisição inspecionada foi <strong>de</strong>tectada como normal ou como ataque e os resultados<br />

foram totalizados e apresentados conforme as medidas <strong>de</strong> comparação (<strong>de</strong>scritas na<br />

Seção 3.7): taxa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques, taxa <strong>de</strong> falsos positivos e índice <strong>de</strong> medida-F.<br />

185


3.1. Base Rotulada<br />

Nos testes realizados no trabalho <strong>de</strong> [Portnoy et al. 2001], a base rotulada [KDD 1999] foi<br />

subdividida em 10 partes e os experimentos foram realizados sobre quatro <strong>de</strong>ssas partes.<br />

No trabalho <strong>de</strong> [Zhong et al. 2007] foi utilizada a base rotulada [DARPA 1998] (a base<br />

[KDD 1999] é uma versão <strong>de</strong>ssa mesma base), on<strong>de</strong> mais <strong>de</strong> 100 mil registros foram<br />

usados nos testes. Nas duas bases existem aproximadamente 5 milhões <strong>de</strong> registros <strong>de</strong><br />

informações coletadas <strong>de</strong> uma re<strong>de</strong> que foi utilizada para avaliação <strong>de</strong> IDSs.<br />

Visto que as bases utilizadas nos trabalhos relacionados datam há mais <strong>de</strong> 10<br />

anos, nesta pesquisa foi criada uma base própria on<strong>de</strong> um servidor web disponível na<br />

Internet foi monitorado e seus acessos foram coletados, analisados e rotulados. No total<br />

foram coletadas aproximadamente 5 milhões <strong>de</strong> requisições HTTP entre as 19:00 do dia<br />

16/12/2010 e as 18:00 do dia 28/12/2010 (GMT). Após a análise foram i<strong>de</strong>ntificados e<br />

rotulados mais <strong>de</strong> mil ataques e aproximadamente 30 mil anomalias. Para aumentar o<br />

número <strong>de</strong> ataques sem gerar um inci<strong>de</strong>nte <strong>de</strong> segurança, foram adicionados a esta base<br />

mais <strong>de</strong> 127 mil ataques gerados por 4 ferramentas <strong>de</strong> ataques web que foram extraídos da<br />

base da competição [iCTF 2008]. A tabela 1 apresenta as 20 partições com a quantida<strong>de</strong><br />

<strong>de</strong> ataques rotulados, ataques adicionados da base [iCTF 2008], anomalias e as <strong>de</strong>mais<br />

requisições rotuladas como normais.<br />

Tabela 1. Particionamento do Conjunto <strong>de</strong> Requisições<br />

Partição Ataques Adicionados Anomalias Normais Total<br />

P00 4 0 318 249678 250000<br />

P01 29 0 410 249561 250000<br />

P02 5 6570 a 1124 242301 250000<br />

P03 51 2690 b 2647 244612 250000<br />

P04 50 0 1685 248265 250000<br />

P05 8 0 868 249124 250000<br />

P06 17 0 1237 248746 250000<br />

P07 95 0 1001 248904 250000<br />

P08 21 0 770 249209 250000<br />

P09 91 85570 c 891 163448 250000<br />

P10 10 27228 c 510 222252 250000<br />

P11 49 0 1365 248586 250000<br />

P12 83 0 1272 248645 250000<br />

P13 111 3888 d 2311 243690 250000<br />

P14 14 0 1301 248685 250000<br />

P15 246 0 2611 247143 250000<br />

P16 39 0 2707 247254 250000<br />

P17 129 0 3669 246202 250000<br />

P18 157 0 2192 247651 250000<br />

P19 39 1398 a 847 247716 250000<br />

Total 1248 127344 29736 4841672 5000000<br />

Os ataques adicionados da base [iCTF 2008] são das ferramentas:<br />

a - [Nessus 2011], b - [Acunetix 2011], c - [DirBuster 2011] e d - [Nikto 2011].<br />

Os ataques [iCTF 2008] que foram adicionados nesta base foram gerados por fer-<br />

186


amentas <strong>de</strong> varredura por vulnerabilida<strong>de</strong>, as quais tentaram encontrar vulnerabilida<strong>de</strong>s<br />

conhecidas em servidores e sítios web. A ferramenta [Nessus 2011] realiza ataques para<br />

diversos protocolos e aplicações, mas nesta base foram adicionados apenas os ataques<br />

que tentaram i<strong>de</strong>ntificar vulnerabilida<strong>de</strong>s <strong>de</strong> servidores HTTP e <strong>de</strong> sítios web. Já os ataques<br />

adicionados da ferramenta [Nikto 2011] procuravam i<strong>de</strong>ntificar vulnerabilida<strong>de</strong>s em<br />

sítios web; e <strong>de</strong> maneira um pouco mais elaborada a ferramenta [Acunetix 2011] tentava<br />

extrair informações <strong>de</strong> sítios web incluindo ataques através do método POST. Apesar dos<br />

ataques adicionados da ferramenta [DirBuster 2011] serem massivos, são apenas ataques<br />

que tentaram buscar por páginas ou arquivos que <strong>de</strong>veriam estar ocultos ou protegidos<br />

mas que po<strong>de</strong>riam revelar informações do servidor/sítio atacado. E <strong>de</strong>ntre os ataques<br />

que realmente ocorreram ao servidor web foram i<strong>de</strong>ntificados diversos tipos: tentativas <strong>de</strong><br />

injeção <strong>de</strong> código SQL, inclusão remota <strong>de</strong> arquivos, travessia <strong>de</strong> caminho, busca forçada,<br />

abuso <strong>de</strong> proxy e até mesmo ataques <strong>de</strong> malwares.<br />

3.2. Normalização dos Dados<br />

As bases utilizadas por [Portnoy et al. 2001] e [Zhong et al. 2007] levaram em conta<br />

41 atributos extraídos <strong>de</strong> sessões TCP. [Portnoy et al. 2001] normalizou os dados <strong>de</strong><br />

cada atributo subtraindo o valor da média e dividindo pelo <strong>de</strong>svio padrão. Já em<br />

[Zhong et al. 2007] foram utilizadas 105 dimensões <strong>de</strong> características das instâncias coletadas<br />

da base e foram normalizadas para valores entre zero e um (0,1).<br />

Diferentemente <strong>de</strong>sses trabalhos, a base utilizada nesta pesquisa contém<br />

requisições HTTP. Sendo assim foram utilizados apenas 7 campos <strong>de</strong> cada requisição:<br />

UPath - caminho do recurso na URL; UQuery - consulta ao recurso na URL; Host -<br />

domínio ou en<strong>de</strong>reço IP do requisitado; User-agent - agente navegador do usuário; Cookie<br />

- dados <strong>de</strong> sessão do usuário; Referer - URL <strong>de</strong> referência, e Content - conteúdo do<br />

corpo HTTP. Esses campos foram escolhidos por terem relação com a maioria dos ataques<br />

realizados via HTTP.<br />

Como se trata <strong>de</strong> informações do tipo texto e que estão ofuscadas, o conteúdo <strong>de</strong><br />

cada campo foi normalizado apenas contabilizando a quantida<strong>de</strong> <strong>de</strong> caracteres alfabéticos<br />

(a-z e A-Z), caracteres numéricos (0-9) e caracteres não-alfanuméricos. Por exemplo, o<br />

texto “Mozilla/5.0” resultaria em 7 para caracteres alfabéticos, 2 para numéricos e 2 para<br />

não-alfanuméricos. Por fim, cada requisição teve seus 7 campos normalizados on<strong>de</strong> cada<br />

campo ficou com 3 dimensões (alfabéticos, numéricos e não-alfanuméricos).<br />

3.3. Medida <strong>de</strong> Similarida<strong>de</strong><br />

No trabalho <strong>de</strong> [Portnoy et al. 2001] a medida <strong>de</strong> similarida<strong>de</strong> utilizada foi a distância<br />

euclidiana, e no trabalho <strong>de</strong> [Zhong et al. 2007] as medidas eram utilizadas <strong>de</strong> acordo<br />

com o algoritmo <strong>de</strong> agrupamento, sendo a distância euclidiana ou <strong>de</strong> Mahalanobis.<br />

Neste trabalho foi utilizada a equação 1 para calcular a distância (d) entre uma<br />

requisição a e uma requisição b. Assim cada campo <strong>de</strong> uma requisição foi comparado<br />

com o campo correspon<strong>de</strong>nte da outra requisição usando a medida <strong>de</strong> distância euclidiana.<br />

Assim as 3 dimensões (m=3) <strong>de</strong> quantida<strong>de</strong> <strong>de</strong> caracteres <strong>de</strong>scritas na seção 3.2<br />

serviram como base na comparação entre esses campos. Ao final, a distância (d) entre<br />

as requisições foi o resultado do somatório da distância euclidiana entre os sete campos<br />

(n=7) <strong>de</strong>ssas requisições.<br />

187


3.4. Agrupamento <strong>de</strong> Dados<br />

d(a,b) =<br />

n∑<br />

m∑<br />

√ (a ij − b ij ) 2 (1)<br />

i=1<br />

No trabalho <strong>de</strong> [Zhong et al. 2007] o objetivo era testar a eficiência <strong>de</strong> diferentes algoritmos<br />

<strong>de</strong> agrupamento na <strong>de</strong>tecção <strong>de</strong> intrusão, e para isso os autores testaram diversos<br />

algoritmos baseados em centrói<strong>de</strong>s. Já neste trabalho o objetivo foi fazer uma comparação<br />

entre os métodos utilizados para atribuição <strong>de</strong> rótulos, por isso foi utilizado apenas um<br />

algoritmo <strong>de</strong> agrupamento <strong>de</strong> ligação simples (single-linkage), similar ao utilizado no<br />

trabalho <strong>de</strong> [Portnoy et al. 2001]. O algoritmo consiste nos seguintes passos:<br />

j=1<br />

• Iniciar um conjunto <strong>de</strong> grupos vazios;<br />

• Associar cada requisição com seu grupo mais próximo <strong>de</strong>s<strong>de</strong> que não ultrapasse<br />

o limite <strong>de</strong> distância W pré-<strong>de</strong>finido. O limite <strong>de</strong> distância W é a distância (d)<br />

máxima que as requisições po<strong>de</strong>m estar <strong>de</strong> seu grupo. Se não houver um grupo<br />

correspon<strong>de</strong>nte, a requisição atual será um novo grupo;<br />

• Repetir o passo anterior para reorganizar as requisições em seus grupos mais<br />

próximos.<br />

3.5. Avaliação dos Grupos<br />

Após realizar os agrupamentos, os grupos resultantes foram avaliados e rotulados para<br />

serem utilizados como mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão. O método heurístico proposto por<br />

[Portnoy et al. 2001], que é apresentado como “labeling clusters”, consiste nos seguintes<br />

passos:<br />

• Or<strong>de</strong>nar os grupos por quantida<strong>de</strong> <strong>de</strong> instâncias;<br />

• Selecionar um percentual N dos grupos maiores em número <strong>de</strong> instâncias e rotular<br />

como normais;<br />

• Rotular os grupos restantes como ataques.<br />

O método heurístico proposto por [Zhong et al. 2007], que é apresentado como<br />

“self-labeling”, é realizado com os seguintes passos:<br />

• Selecionar o grupo com o maior número <strong>de</strong> instâncias, rotular como normal e<br />

<strong>de</strong>finir como o centrói<strong>de</strong> µ 0 ;<br />

• Or<strong>de</strong>nar todos os grupos <strong>de</strong> acordo com sua distância ao centrói<strong>de</strong> µ 0 , e fazer o<br />

mesmo procedimento com todas as instâncias;<br />

• Selecionar um percentual η <strong>de</strong> instâncias e rotular como normal;<br />

• Rotular as <strong>de</strong>mais instâncias como ataques.<br />

[Zhong et al. 2007] <strong>de</strong>fine η como percentual <strong>de</strong> instâncias normais, mas em outra<br />

parte <strong>de</strong> seu trabalho o mesmo parâmetro também é <strong>de</strong>finido como percentual <strong>de</strong><br />

instâncias que são ataques.<br />

O método heurístico proposto neste trabalho realiza uma avaliação mais <strong>de</strong>talhada<br />

visando reduzir o índice <strong>de</strong> falsos positivos, e os passos são os seguintes:<br />

• Calcular um índice <strong>de</strong> popularida<strong>de</strong> para cada grupo;<br />

188


• Encontrar hosts que tornaram grupos populares e atribuir uma confiabilida<strong>de</strong>;<br />

• Calcular um índice <strong>de</strong> confiabilida<strong>de</strong> para cada grupo <strong>de</strong> acordo com os hosts que<br />

o acessaram;<br />

• Calcular um índice <strong>de</strong> reputação dada a soma pon<strong>de</strong>rada do índice <strong>de</strong> popularida<strong>de</strong><br />

com o índice <strong>de</strong> confiabilida<strong>de</strong>;<br />

• Atribuir um rótulo ao grupo, relacionando o índice <strong>de</strong> reputação com uma escala<br />

empírica: excelente, ótima, boa, regular, ruim ou péssima.<br />

Detalhes do método proposto são apresentados na seção 4.<br />

3.6. Detecção <strong>de</strong> Intrusão<br />

Após obter os grupos rotulados, os mesmos foram utilizados na tomada <strong>de</strong> <strong>de</strong>cisão durante<br />

a <strong>de</strong>tecção <strong>de</strong> intrusão. No trabalho <strong>de</strong> [Portnoy et al. 2001] os ataques foram <strong>de</strong>tectados<br />

da seguinte maneira (método referenciado como D1):<br />

• Extrair um mo<strong>de</strong>lo <strong>de</strong> grupos rotulados <strong>de</strong> uma partição X da base;<br />

• Inspecionar cada instância da partição Y comparando com os grupos rotulados da<br />

partição X (sendo a partição Y subsequente à partição X);<br />

• Após comparar com todos os grupos, cada instância da partição Y receberá o<br />

mesmo rótulo do grupo X mais próximo.<br />

No trabalho <strong>de</strong> [Zhong et al. 2007] o método <strong>de</strong> <strong>de</strong>tecção utilizado foi o seguinte<br />

(método referenciado como D2):<br />

• Realizar a atribuição <strong>de</strong> rótulos nas instâncias da partição Y da base somente após<br />

or<strong>de</strong>nar cada instância <strong>de</strong> acordo com sua distância em relação ao centrói<strong>de</strong> µ 0 ;<br />

• Instâncias na partição Y rotuladas como ataques dado um percentual η serão consi<strong>de</strong>radas<br />

como tal.<br />

Neste trabalho também foi testada a <strong>de</strong>tecção <strong>de</strong> intrusão levando em conta o<br />

limite <strong>de</strong> distância W utilizado durante o agrupamento (método referenciado como D3):<br />

• Extrair um mo<strong>de</strong>lo <strong>de</strong> grupos rotulados <strong>de</strong> uma partição X da base;<br />

• Inspecionar cada instância da partição Y comparando com os grupos rotulados da<br />

partição X (sendo a partição Y subsequente à partição X);<br />

• Após comparar com todos os grupos, cada instância da partição Y receberá o<br />

mesmo rótulo do grupo X mais próximo <strong>de</strong>s<strong>de</strong> que o limite <strong>de</strong> distância W não seja<br />

extrapolado. Caso não haja correspondência com grupo algum, a instância será<br />

consi<strong>de</strong>rada um ataque ou, no caso do método proposto, receberá uma reputação<br />

péssima.<br />

3.7. Medidas <strong>de</strong> Comparação<br />

Após realizar todos os testes <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão os resultados foram contabilizados<br />

como verda<strong>de</strong>iros positivos (VP), falsos positivos (FP), falsos negativos (FN) e verda<strong>de</strong>iros<br />

negativos (VN). Para simplificar os cálculos, as anomalias rotuladas que foram<br />

<strong>de</strong>tectadas ou não, tiveram seus resultados ignorados. Os resultados foram calculados<br />

utilizando as seguintes fórmulas: taxa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques (TDA) ou revisão (inglês:<br />

recall), taxa <strong>de</strong> falsos positivos (TFP), precisão (inglês: precision) e a medida-F (inglês:<br />

F-measure). Detalhes sobre essas medidas po<strong>de</strong>m ser encontradas em [Fawcett 2003].<br />

189


4. Método Heurístico Proposto<br />

Este método foi criado a partir <strong>de</strong> observações experimentais durante a verificação <strong>de</strong> ataques<br />

na base <strong>de</strong> requisições, já foi implementado e <strong>de</strong>scrito anteriormente na dissertação<br />

<strong>de</strong> [Pereira 2011]. Durante essa análise foi possível observar que as informações das<br />

requisições que eram mais comuns (ou populares) tinham uma chance menor <strong>de</strong> serem<br />

consi<strong>de</strong>radas ataques, e que aquelas que não eram comuns podiam ser consi<strong>de</strong>radas<br />

confiáveis se o host <strong>de</strong> origem também fosse confiável. Assim as informações po<strong>de</strong>riam<br />

ser agrupadas, e através <strong>de</strong> cálculos empíricos <strong>de</strong>terminar um índice <strong>de</strong> popularida<strong>de</strong> e<br />

um índice <strong>de</strong> confiabilida<strong>de</strong> para cada grupo. Ao final, esses índices foram combinados<br />

para calcular um índice <strong>de</strong> reputação, e o processo todo resultou em um método heurístico<br />

para atribuir rótulos <strong>de</strong> reputação para os grupos. Este método foi subdividido em quatro<br />

etapas que são apresentadas nesta seção.<br />

4.1. Primeira Etapa: Índice <strong>de</strong> Popularida<strong>de</strong> dos Grupos<br />

O objetivo <strong>de</strong> calcular o índice <strong>de</strong> popularida<strong>de</strong> p é <strong>de</strong>terminar o quanto um grupo está<br />

equilibrado em relação a diversida<strong>de</strong> <strong>de</strong> hosts que o acessaram. Isso significa que quanto<br />

melhor for a distribuição dos acessos realizados pelos hosts melhor será o índice <strong>de</strong> popularida<strong>de</strong>.<br />

A linha <strong>de</strong> corte l é um parâmetro <strong>de</strong>finido antes <strong>de</strong> calcular p com o intuito<br />

<strong>de</strong> evitar que hosts que realizaram muitos acessos colaborem com o aumento <strong>de</strong> p <strong>de</strong> um<br />

grupo. O valor <strong>de</strong> p <strong>de</strong>ve ficar entre 0 (zero) e 1 (um). Assim o quanto mais o valor <strong>de</strong> l<br />

for próximo <strong>de</strong> zero, mais hosts serão necessários para tornar um grupo popular.<br />

O algoritmo 1 apresenta uma proposta simples para que a linha <strong>de</strong> corte (l) possa<br />

funcionar conforme o que foi proposto. O valor <strong>de</strong> i i<strong>de</strong>ntifica o host e o valor <strong>de</strong> m i<strong>de</strong>ntifica<br />

a quantida<strong>de</strong> total <strong>de</strong> acessos efetuados ao grupo, portanto, o valor <strong>de</strong> m i representa<br />

o total <strong>de</strong> acessos do host i <strong>de</strong>ntro do grupo. Já a variável q i representa o percentual <strong>de</strong><br />

acessos efetuados pelo host i <strong>de</strong>ntro do grupo. A variável z é booleana e serve para manter<br />

o laço <strong>de</strong> repetição enquanto houver algum valor <strong>de</strong> q i zerado, isso significa que o índice<br />

<strong>de</strong> popularida<strong>de</strong> só po<strong>de</strong> ser calculado se na última iteração nenhum host ultrapassar o<br />

percentual estabelecido na linha <strong>de</strong> corte. Outra estrutura <strong>de</strong> repetição faz com que todos<br />

os acessos realizados pelos hosts <strong>de</strong> 1 até n sejam analisados. Ao final do algoritmo,<br />

o índice <strong>de</strong> popularida<strong>de</strong> (p) é calculado <strong>de</strong> acordo com os valores obtidos <strong>de</strong> q, e está<br />

<strong>de</strong>talhado na equação 2.<br />

p = 1 n<br />

n∑<br />

a on<strong>de</strong><br />

i=1<br />

{<br />

a = 0, se q i = 0<br />

a = 1, se q i > 0<br />

(2)<br />

4.2. Segunda Etapa: Confiabilida<strong>de</strong> dos Hosts<br />

Nesta etapa os hosts que popularizaram os grupos <strong>de</strong>verão receber um grau <strong>de</strong> confiança, o<br />

qual será utilizado como base para calcular a confiabilida<strong>de</strong> dos grupos. Para isso utilizase<br />

a equação 3, on<strong>de</strong> para cada host (i) é feito o somatório (v i ) <strong>de</strong> todos os índices <strong>de</strong><br />

popularida<strong>de</strong> (p j ) dos grupos que esse host acessou. A tupla (i,j) apresentada na equação<br />

3 representa uma instância <strong>de</strong> acesso do host i ao grupo j, e a variável m é a quantida<strong>de</strong><br />

total <strong>de</strong> grupos no agrupamento.<br />

190


Algoritmo 1 Cálculo do índice <strong>de</strong> popularida<strong>de</strong><br />

q i = ∅<br />

z = true<br />

while z do<br />

z = false<br />

for i = 1; i ≤ n; i = i + 1 do<br />

if q i > 0 or q i = ∅ then<br />

q i = m i / m<br />

end if<br />

if q i > l then<br />

q i = 0<br />

m = m - m i<br />

z = true<br />

end if<br />

end for<br />

end while<br />

Calcular p dado q (equação 2)<br />

v i =<br />

m∑<br />

a on<strong>de</strong><br />

j=1<br />

{<br />

a = 0, se ∄ (i,j)<br />

a = p j , se ∃ (i,j) e q ij > 0<br />

(3)<br />

Então a confiabilida<strong>de</strong> dos hosts (w i ) <strong>de</strong>verá ser maximizada calculando as três<br />

equações: 4, 5 e 6. Nestas equações a variável u representa o somatório <strong>de</strong> todos os<br />

índices <strong>de</strong> popularida<strong>de</strong> (p). Na equação 5 a variável g representa o índice do host mais<br />

confiável, e na equação 6 é calculada para todos os hosts a sua confiabilida<strong>de</strong> <strong>de</strong> acordo<br />

com os valores obtidos <strong>de</strong> g e <strong>de</strong> u.<br />

u =<br />

m∑<br />

p j (4)<br />

j=1<br />

g = max<br />

( vi<br />

)<br />

u<br />

(5)<br />

w i =<br />

v i<br />

g · u<br />

(6)<br />

4.3. Terceira Etapa: Índice <strong>de</strong> Confiabilida<strong>de</strong> dos Grupos<br />

Após a i<strong>de</strong>ntificação da confiabilida<strong>de</strong> <strong>de</strong> cada host é possível calcular o índice <strong>de</strong> confiabilida<strong>de</strong><br />

(c) <strong>de</strong> cada grupo. Para calcular este índice, basta somar a confiabilida<strong>de</strong> w i<br />

dos hosts e dividir pela quantida<strong>de</strong> h <strong>de</strong> hosts que participaram <strong>de</strong>sse grupo. Esse cálculo<br />

po<strong>de</strong> ser visualizado na equação 7.<br />

c = 1 h<br />

h∑<br />

w i (7)<br />

i=1<br />

191


4.4. Quarta Etapa: Índice <strong>de</strong> Reputação dos Grupos<br />

Uma vez que se obtém os índices <strong>de</strong> popularida<strong>de</strong> e <strong>de</strong> confiabilida<strong>de</strong> dos grupos, calculase<br />

o índice <strong>de</strong> reputação (r) estipulando os fatores <strong>de</strong> pon<strong>de</strong>ração (equação 8), <strong>de</strong>s<strong>de</strong> que<br />

a soma <strong>de</strong> y p e y c seja igual a 4.<br />

r = y p · p + y c · c (8)<br />

A i<strong>de</strong>ia em aplicar uma escala <strong>de</strong> 0 (zero) a 4 (quatro) para pon<strong>de</strong>ração está em<br />

dar ênfase a um índice mais do que ao outro. Como é possível observar nas etapas anteriores,<br />

é mais custoso ao índice <strong>de</strong> confiabilida<strong>de</strong> atingir valores próximos <strong>de</strong> 1 (um).<br />

Consequentemente o resultado do índice <strong>de</strong> reputação (r) também ficará na escala <strong>de</strong> zero<br />

(0) a quatro (4) e uma sugestão é utilizar esta escala empírica para <strong>de</strong>finir uma reputação:<br />

péssima (0,0 a 0,1), ruim (0,1 a 1,0), regular (1,0 a 1,5), boa (1,5 a 2,0), ótima (2,0 a 3,0)<br />

e excelente (3,0 a 4,0). Ao final, os grupos receberão seus rótulos e po<strong>de</strong>rão ser utilizados<br />

como mo<strong>de</strong>lo na <strong>de</strong>tecção <strong>de</strong> intrusão.<br />

5. Experimentos<br />

Nesta seção são apresentados os resultados dos experimentos on<strong>de</strong> o treinamento foi realizado<br />

com agrupamentos variando o valor <strong>de</strong> W para 80, 100 e 120. O valor <strong>de</strong> W para<br />

120 foi utilizado pois resultou em melhores índices <strong>de</strong> validação <strong>de</strong> agrupamento durante<br />

os testes preliminares. Já os valores <strong>de</strong> W para 80 e 100 foram selecionados pois resultaram<br />

em número <strong>de</strong> grupos aproximados aos utilizados no trabalho <strong>de</strong> [Zhong et al. 2007]:<br />

100 e 200 grupos. Após executar os agrupamentos os valores <strong>de</strong> W para 80, 100 e 120<br />

geraram em média, respectivamente, 222,7, 125,5 e 77,2 grupos.<br />

Para a execução dos métodos heurísticos <strong>de</strong> atribuição <strong>de</strong> rótulos, os valores<br />

utilizados para N foram 0,02, 0,07 e 0,15, que são os mesmos utilizados em<br />

[Portnoy et al. 2001]. No trabalho <strong>de</strong> [Zhong et al. 2007] o valor utilizado para η foi <strong>de</strong><br />

0,115 para representar o percentual <strong>de</strong> ataques na base em que foi testado, mas nestes experimentos<br />

além <strong>de</strong>sse percentual também foram testados os valores <strong>de</strong> 0,0575 e <strong>de</strong> 0,23,<br />

que são respectivamente a meta<strong>de</strong> e o dobro. No método proposto, os valores selecionados<br />

para l foram 0,05, 0,1 e 0,2 que respectivamente representam, por exemplo, o mínimo<br />

<strong>de</strong> 20, 10 e 5 hosts necessários para tornar um grupo popular. Além disso, no método<br />

proposto, foram pon<strong>de</strong>rados os valores <strong>de</strong> y p = 1 e y c = 3, consi<strong>de</strong>rando a confiabilida<strong>de</strong><br />

do grupo mais importante do que a popularida<strong>de</strong>.<br />

Após aplicar o método heurístico proposto, os grupos rotulados com uma<br />

reputação ruim (entre 0,1 e 1,0) ou péssima (menor que 0,1) foram consi<strong>de</strong>rados ataques<br />

durante a <strong>de</strong>tecção <strong>de</strong> intrusão. Também foram realizados testes com cada um<br />

dos métodos <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão: [Portnoy et al. 2001] referenciado como D1;<br />

[Zhong et al. 2007] referenciado como D2, e o método que leva em conta o valor <strong>de</strong> W,<br />

referenciado como D3.<br />

No total foram realizados 1539 testes utilizando 3 agrupamentos (W=80,<br />

W=100 e W=120); com 3 métodos <strong>de</strong> avaliações <strong>de</strong> grupos ([Portnoy et al. 2001],<br />

[Zhong et al. 2007] e o Proposto); com 3 variações <strong>de</strong> parâmetros (N=0,02, N=0,07 e<br />

N=0,15; η=0,0575, η=0,115 e η=0,23; l=0,05, l=0,1 e l=0,2); juntamente com 3 métodos<br />

<strong>de</strong> <strong>de</strong>tecção (D1, D2 e D3) aplicados nas 19 partições da base <strong>de</strong> requisições.<br />

192


Cada linha da tabela 2 apresenta os melhores resultados obtidos durantes os experimentos<br />

<strong>de</strong> um método heurístico específico. As partições nas quais os resultados foram<br />

relevantes para discussão são apresentados nesta tabela, os <strong>de</strong>mais resultados das outras<br />

partições foram suprimidos.<br />

Tabela 2. Melhores resultados obtidos<br />

P Método VP FP FN TDA TFP F<br />

P02 Proposto(W=100;l=0,1;D3) 3579 1212 2996 0,5443 0,0050 0,6297<br />

Portnoy(W=100;N=0,07;D3) 6565 39064 10 0,9985 0,1612 0,2515<br />

Zhong(W=80;η=0,0575;D2) 2226 13709 4349 0,3386 0,0566 0,1978<br />

P03 Proposto(W=100;l=0,2;D1) 2648 129 93 0,9661 0,0005 0,9598<br />

Zhong(W=120;η=0,0575;D1) 2551 7690 190 0,9307 0,0314 0,3930<br />

Portnoy(W=120;N=0,15;D1) 2557 9418 184 0,9329 0,0385 0,3475<br />

P04 Proposto(W=120;l=0,2;D3) 3 27 47 0,0600 0,0001 0,0750<br />

* Proposto(W=100;l=0,1;D2) 28 2699 22 0,5600 0,0109 0,0202<br />

Portnoy(W=80;N=0,15;D3) 41 16650 9 0,8200 0,0671 0,0050<br />

Zhong(W=120;η=0,23;D2) 46 25174 4 0,9200 0,1014 0,0036<br />

P09 Portnoy(W=120;N=0,07;D1) 85067 20083 594 0,9931 0,1229 0,8916<br />

* Proposto(W=40;l=0,05;D3) 43550 27422 42111 0,5083 0,1677 0,3584<br />

Proposto(W=100;l=0,05;D3) 92 1891 85569 0,0011 0,0116 0,0021<br />

Zhong(W=80;η=0,0575;D2) 35 7499 85626 0,0004 0,0459 0,0007<br />

* Proposto(W=40;l=0,2;D3) 26582 11452 656 0,9759 0,0515 0,8144<br />

P10 Portnoy(W=100;N=0,02;D3) 27238 100182 0 1,0000 0,4508 0,3523<br />

Proposto(W=80;l=0,2;D3) 13 1121 27225 0,0005 0,0050 0,0010<br />

Zhong(W=120;η=0,23;D3) 16 57059 27222 0,0006 0,2567 0,0004<br />

P13 Proposto(W=120;l=0,05;D1) 3768 2951 231 0,9422 0,0121 0,7031<br />

Portnoy(W=120;N=0,15;D2) 3775 14729 224 0,9440 0,0604 0,3355<br />

Zhong(W=120;η=0,115;D2) 3770 16219 229 0,9427 0,0666 0,3143<br />

P14 Proposto(W=120;l=0,2;D1) 7 52 7 0,5000 0,0002 0,1917<br />

* Proposto(W=100;l=0,1;D3) 14 1702 0 1,0000 0,0068 0,0163<br />

Zhong(W=100;η=0,0575;D1) 9 4127 5 0,6429 0,0166 0,0044<br />

Portnoy(W=120;N=0,15;D1) 12 11495 2 0,8571 0,0462 0,0020<br />

P19 Zhong(W=120;η=0,0575;D1) 1437 11635 0 1,0000 0,0470 0,1980<br />

* Proposto(W=40;l=0,2;D3) 739 10516 698 0,5142 0,0424 0,1164<br />

Proposto(W=80;l=0,2;D3) 90 910 1347 0,0626 0,0037 0,0738<br />

Portnoy(W=100;N=0,07;D1) 1437 43794 0 1,0000 0,1768 0,0616<br />

P: partição da base que teve as requisições inspecionadas;<br />

Método: método heurístico aplicado, agrupamento, parâmetros e método <strong>de</strong> <strong>de</strong>tecção;<br />

VP: verda<strong>de</strong>iros positivos, a quantida<strong>de</strong> <strong>de</strong> ataques <strong>de</strong>tectados;<br />

FP: falsos positivos, a quantida<strong>de</strong> <strong>de</strong> alertas falsos <strong>de</strong> ataques;<br />

FN: falsos negativos, a quantida<strong>de</strong> <strong>de</strong> ataques que não foram <strong>de</strong>tectados;<br />

TDA: apresenta a taxa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques;<br />

TFP: apresenta a taxa <strong>de</strong> falsos positivos;<br />

F: apresenta o índice <strong>de</strong> medida-F que foi alcançado.<br />

A medida-F foi utilizada para i<strong>de</strong>ntificar o método que obteve melhor resultado<br />

em cada particionamento. Essa medida faz uma média harmônica entre a precisão e a re-<br />

193


visão, consi<strong>de</strong>rando mais importante os testes que obtiveram boas taxas <strong>de</strong> <strong>de</strong>tecção mas<br />

também que geraram poucos falsos positivos. Assim com os experimentos realizados sobre<br />

as 19 partições, o método heurístico proposto obteve melhores resultados <strong>de</strong> medida-F<br />

em 16 partições e na maioria dos testes as taxas <strong>de</strong> falsos positivos não ultrapassaram <strong>de</strong><br />

1% conforme po<strong>de</strong> ser visualizado no gráfico da figura 2.<br />

Partições da base <strong>de</strong> requisições<br />

Figura 2. Gráfico - Taxas <strong>de</strong> Falsos Positivos<br />

Discussão sobre os resultados obtidos com o método <strong>de</strong> [Zhong et al. 2007]:<br />

• Ao investigar o motivo pelo qual [Zhong et al. 2007] não obteve bons resultados,<br />

foi possível observar que <strong>de</strong>ntro da base haviam concentrações <strong>de</strong> grupos<br />

com quantida<strong>de</strong> consi<strong>de</strong>rável <strong>de</strong> requisições normais, mas que estavam distante<br />

do centrói<strong>de</strong> principal e acabaram resultando no aumento <strong>de</strong> alertas <strong>de</strong> falsos positivos.<br />

• Uma exceção foi o treinamento realizado na partição P18, on<strong>de</strong> o mo<strong>de</strong>lo obtido<br />

com esse método resultou em melhor <strong>de</strong>tecção na partição P19, a qual continha<br />

diversos ataques da ferramenta Nessus.<br />

Discussão sobre os resultados obtidos com o método <strong>de</strong> [Portnoy et al. 2001]:<br />

• Na maioria das partições o método heurístico <strong>de</strong> [Portnoy et al. 2001] resultou nas<br />

melhores taxas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques. Porém esse bom resultado foi penalizado<br />

pela gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> falsos positivos.<br />

• O melhor resultado <strong>de</strong> [Portnoy et al. 2001] foi na partição P09 com treinamento<br />

realizado na partição P08, on<strong>de</strong> o número <strong>de</strong> falsos positivos não foi significante<br />

em comparação ao número <strong>de</strong> ataques da ferramenta DirBuster que foram <strong>de</strong>tectados.<br />

Discussão sobre os resultados obtidos com o método proposto:<br />

• Na maioria das partições o método proposto obteve melhores resultados nas taxas<br />

<strong>de</strong> falsos positivos (conforme o gráfico na figura 2), porém suas taxas <strong>de</strong> <strong>de</strong>tecção<br />

<strong>de</strong> ataques não foram tão significativas quanto as <strong>de</strong> [Portnoy et al. 2001]. Isso<br />

ocorre <strong>de</strong>vido ao cálculo <strong>de</strong> medida-F, pois se o número <strong>de</strong> falsos positivos for<br />

tolerado é possível aproximar das melhores taxas <strong>de</strong> <strong>de</strong>tecção. Para comprovar,<br />

nas partições P04 e P14 as linhas cujas as primeiras colunas estão marcadas com<br />

um asterisco (*) estão os testes que obtiveram melhores taxas <strong>de</strong> <strong>de</strong>tecção.<br />

• Nas partições P09 e P10 este método obteve péssimos resultados, isso se dá aos<br />

ataques realizados pela ferramenta DirBuster que durante o agrupamento gerou<br />

194


grupos <strong>de</strong>nsos e próximos aos grupos consi<strong>de</strong>rados como normais (uma situação<br />

parecida ocorreu com a partição P19). Para melhorar a <strong>de</strong>tecção nessa situação<br />

um teste adicional foi realizado, on<strong>de</strong> o limite <strong>de</strong> distância W=40 foi utilizado<br />

com o intuito <strong>de</strong> criar mais grupos. O resultado po<strong>de</strong> ser visualizado nas linhas<br />

<strong>de</strong>stacadas por um asterisco (*) nas partições P09, P10 e P19.<br />

6. Conclusão<br />

Este trabalho apresentou uma proposta <strong>de</strong> método heurístico para atribuição <strong>de</strong> rótulos<br />

em grupos que resultou em mo<strong>de</strong>los <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão para um IDS baseado em<br />

anomalia. Dois trabalhos relacionados foram implementados e seus resultados foram<br />

comparados com os resultados obtidos com o método proposto. Das 19 partes testadas<br />

<strong>de</strong> uma base <strong>de</strong> requisições web, o método proposto obteve melhores resultados em 16<br />

<strong>de</strong>las. Na maioria dos testes as taxas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques não foram superiores aos<br />

dos outros métodos, por outro lado, em diversos testes a taxa <strong>de</strong> falsos positivos não<br />

ultrapassou <strong>de</strong> 1%. Isso <strong>de</strong>monstra que este método é promissor, pois o baixo número <strong>de</strong><br />

alertas falsos permite que um analista <strong>de</strong> segurança inspecione os resultados <strong>de</strong> maneira<br />

eficiente, mesmo sabendo que se trata <strong>de</strong> um IDS que foi treinado sem supervisão.<br />

Para trabalhos futuros, tanto as implementações como a base <strong>de</strong> requisições foram<br />

disponibilizadas para o público em [Celepar-Dataset 2011], e po<strong>de</strong>rão ser utilizadas para<br />

fins <strong>de</strong> pesquisa. Como complemento <strong>de</strong>ste trabalho também po<strong>de</strong>rão ser feitos testes<br />

do IDS no modo <strong>de</strong> aprendizagem contínua (active learning). Além disso, o método<br />

heurístico proposto também precisará <strong>de</strong> mais estudos, pois o índice <strong>de</strong> confiabilida<strong>de</strong> dos<br />

hosts é calculado <strong>de</strong> acordo com o host que é consi<strong>de</strong>rado o mais confiável. Esse cálculo<br />

foi suficiente para obter bons resultados neste trabalho, mas <strong>de</strong>pen<strong>de</strong>ndo do ambiente do<br />

treinamento po<strong>de</strong>rá não ser o i<strong>de</strong>al para se obter os melhores índices.<br />

Referências<br />

Acunetix (2011). Acunetix Web Security Scanner (http://www.acunetix.com/ -<br />

acesso em 10/07/2011).<br />

Celepar-Dataset (2011). Celepar - Dataset with web attacks for intrusion <strong>de</strong>tection research<br />

(http://ids.celepar.pr.gov.br/dataset).<br />

Corona, I. and Giacinto, G. (2010). Detection of Server-si<strong>de</strong> Web Attacks. Journal of<br />

Machine Learning Research - Proceedings Track, 11:160–166.<br />

Criscione, C., Salvaneschi, G., Maggi, F., and Zanero, S. (2009). Integrated Detection<br />

of Attacks Against Browsers, Web Applications and Databases. In Proceedings of the<br />

2009 European Conference on Computer Network Defense, EC2ND ’09, pages 37–45,<br />

Washington, DC, USA. IEEE Computer Society.<br />

DARPA (1998). 1998 DARPA Intrusion Detection Evaluation Data Set (http:<br />

//www.ll.mit.edu/mission/communications/ist/corpora/<br />

i<strong>de</strong>val/data/1998data.html - acesso em 10/07/2011).<br />

DirBuster (2011). OWASP DirBuster Project (https://www.owasp.org/in<strong>de</strong>x.<br />

php/Category:OWASP_DirBuster_Project - acesso em 10/07/2011).<br />

Eskin, E., Arnold, A., Prerau, M., Portnoy, L., and Stolfo, S. (2002). A Geometric<br />

Framework for Unsupervised Anomaly Detection: Detecting Intrusions in Unlabeled<br />

Data. In Applications of Data Mining in Computer Security.<br />

195


Fawcett, T. (2003). ROC Graphs: Notes and Practical Consi<strong>de</strong>rations for Researchers.<br />

Tech Report HPL-2003-4, HP Laboratories. Available: http://www.purl.org/<br />

NET/tfawcett/papers/ROC101.pdf.<br />

Guan, Y., Ghorbani, A. A., and Belacel, N. (2003). Y-means: A Clustering Method<br />

for Intrusion Detection. In Proceedings of Canadian Conference on Electrical and<br />

Computer Engineering, pages 1083–1086.<br />

iCTF (2008). The 2008 iCTF Data (http://ictf.cs.ucsb.edu/data/<br />

ictf2008/ - acesso em 10/07/2011).<br />

KDD (1999). KDD Cup 1999 databases (http://kdd.ics.uci.edu/<br />

databases/kddcup99/kddcup99.html - acesso em 10/07/2011).<br />

Leung, K. and Leckie, C. (2005). Unsupervised Anomaly Detection in Network Intrusion<br />

Detection using Clusters. In Proceedings of the Twenty-eighth Australasian conference<br />

on Computer Science - Volume 38, ACSC ’05, pages 333–342, Darlinghurst, Australia,<br />

Australia. Australian Computer Society, Inc.<br />

Mahoney, M. V., Chan, P. K., and Arshad, M. H. (2003). A Machine Learning Approach<br />

to Anomaly Detection. Technical Report CS-2003-06, Department of Computer<br />

Science, Florida Institute of Technology, Melbourne, FL.<br />

Nessus (2011). Nessus Vulnerability Scanner (http://www.nessus.org/ - acesso<br />

em 10/07/2011).<br />

Nikto (2011). Nikto Open Source web server scanner (http://www.cirt.net/<br />

nikto2 - acesso em 10/07/2011).<br />

Pereira, H. (2011). Sistema <strong>de</strong> Detecção <strong>de</strong> Intrusão para Serviços Web baseado em<br />

Anomalias. Master’s thesis, PUCPR, Curitiba - PR.<br />

Petrović, S. (2006). A Comparison Between the Silhouette In<strong>de</strong>x and the Davies-Bouldin<br />

In<strong>de</strong>x in Labelling IDS Clusters. Proceedings of the 11th Nordic Workshop of Secure<br />

IT, pages 53–64.<br />

Portnoy, L., Eskin, E., and Stolfo, S. (2001). Intrusion Detection with Unlabeled Data<br />

Using clustering. In Proceedings of ACM Workshop on Data Mining Applied to Security.<br />

Robertson, W., Maggi, F., Kruegel, C., and Vigna, G. (2010). Effective Anomaly Detection<br />

with Scarce Training Data. In Proceedings of the Network and Distributed System<br />

Security Symposium (NDSS), San Diego, CA.<br />

Singh, G., Masseglia, F., Fiot, C., Marascu, A., and Poncelet, P. (2009). Mining Common<br />

Outliers for Intrusion Detection. In EGC (best of volume), pages 217–234.<br />

Zhang, Y.-F., Xiong, Z.-Y., and Wang, X.-Q. (2005). Distributed Intrusion Detection<br />

based on Clustering. Machine Learning and Cybernetics, 2005. Proceedings of 2005<br />

International Conference on, 4:2379–2383 Vol. 4.<br />

Zhong, S., Khoshgoftaar, T., and Seliya, N. (2007). Clustering-based Network Intrusion<br />

Detection. International Journal of Reliability, Quality and Safety Engineering,<br />

14(2):169–187.<br />

196


Detecção <strong>de</strong> Intrusos usando Conjunto <strong>de</strong> k-NN gerado<br />

por Subespaços Aleatórios<br />

Márcia Henke, Celso Costa, Eulanda M. dos Santos, Eduardo Souto<br />

Instituto <strong>de</strong> Computação<br />

Universida<strong>de</strong> Fe<strong>de</strong>ral do Amazonas (UFAM) – Amazonas, AM – Brasil<br />

{henke,ccosta,esouto,emsantos}@dcc.ufam.edu.br<br />

Abstract. Several studies have been proposed in the literature to <strong>de</strong>al with<br />

Internet anomaly <strong>de</strong>tection by using machine learning techniques. Most of<br />

these works use individual classifiers such as k-NN (k-Nearest Neighbor), SVM<br />

(Support Vector Machines), Artificial Neural Networks, Decision Tree, Naive<br />

Bayes, k-means, among others. However, the literature has recently focused<br />

on applying classifier combination in or<strong>de</strong>r to increase <strong>de</strong>tection rate. In this<br />

paper, a set of classifiers, more precisely, a set of k-NN generated through<br />

Random Subspaces Method is employed. Such an ensemble of classifiers<br />

method is compared to the hybrid technique TANN (Triangle Area based<br />

Nearest Neighbor), published recently in the literature. Results obtained using<br />

ensemble of k-NNs were superior to those obtained with TANN in terms of<br />

classification accuracy as well as false alarm reduction rate.<br />

Resumo. Diversos estudos apresentam propostas para <strong>de</strong>tecção <strong>de</strong> anomalia<br />

na Internet empregando técnicas <strong>de</strong> aprendizagem <strong>de</strong> máquina. A maioria<br />

<strong>de</strong>sses trabalhos utiliza classificadores individuais como: k-Nearest Neighbor<br />

(k-NN), Support Vector Machines (SVM), re<strong>de</strong>s neurais artificiais, árvores <strong>de</strong><br />

<strong>de</strong>cisão, Naive Bayes, k-means, <strong>de</strong>ntre outros. Recentemente, porém, observase<br />

um interesse na literatura em aumentar a taxa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> anomalia<br />

através do uso <strong>de</strong> combinação <strong>de</strong> classificadores. Este trabalho propõe o uso<br />

<strong>de</strong> conjunto <strong>de</strong> classificadores, mais especificamente conjunto <strong>de</strong> k-NNs<br />

gerados através do método subespaços aleatórios (RSM), para aumentar a<br />

taxa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> anomalias em re<strong>de</strong>s <strong>de</strong> computadores. O método é<br />

comparado à técnica híbrida Triangle Area based Nearest Neighbor (TANN),<br />

publicada recentemente na literatura. Os resultados alcançados pelo conjunto<br />

<strong>de</strong> k-NNs foram superiores aos obtidos com TANN, tanto em termos <strong>de</strong><br />

aumento da precisão <strong>de</strong> classificação, quanto em termos <strong>de</strong> redução <strong>de</strong> falsos<br />

alarmes.<br />

1. Introdução<br />

Atualmente a gran<strong>de</strong> preocupação quando se fala em Internet é a questão segurança.<br />

Segurança na Internet tem sido alvo <strong>de</strong> muitas pesquisas no âmbito mundial, visto que a<br />

re<strong>de</strong> mundial <strong>de</strong> computadores passou, em um curto espaço <strong>de</strong> tempo, <strong>de</strong> apenas um<br />

meio <strong>de</strong> comunicação para uma po<strong>de</strong>rosa ferramenta <strong>de</strong> negócios. Infelizmente, os<br />

sistemas atuais para segurança na Internet não conseguem aten<strong>de</strong>r a total <strong>de</strong>manda <strong>de</strong><br />

197


novos ataques, ativida<strong>de</strong>s maliciosas e intrusas, que se propagam na re<strong>de</strong> mundial <strong>de</strong><br />

computadores <strong>de</strong> maneira agressiva e progressiva.<br />

São inúmeras as vítimas <strong>de</strong> ataques originados através <strong>de</strong> ativida<strong>de</strong>s fraudulentas,<br />

como, vírus, worms, trojan horses, bad applets, botnets, phishing, pharmimg,<br />

mensagens eletrônicas não <strong>de</strong>sejadas (spam), entre outras. Tais ativida<strong>de</strong>s po<strong>de</strong>m ser<br />

consi<strong>de</strong>radas uma pan<strong>de</strong>mia cujas conseqüências são refletidas no crescimento dos<br />

prejuízos financeiros dos usuários da Internet [Feitosa, Souto e Sadok 2008].<br />

Para tentar minimizar tais ameaças, diferentes abordagens <strong>de</strong> <strong>de</strong>tecção <strong>de</strong><br />

intrusão em re<strong>de</strong>s <strong>de</strong> computadores foram propostas, as quais po<strong>de</strong>m ser classificadas em<br />

duas categorias [An<strong>de</strong>rson 1995] [Rho<strong>de</strong>s, Mahaffey e Cannady 2000]: 1) <strong>de</strong>tecção <strong>de</strong><br />

abuso (“misuse <strong>de</strong>tection”); e 2) <strong>de</strong>tecção <strong>de</strong> anomalias (“anomaly <strong>de</strong>tection”).<br />

Um exemplo da primeira classe <strong>de</strong> abordagens <strong>de</strong> <strong>de</strong>tecção são as ferramentas<br />

antivirais baseadas em uma lista contendo “assinaturas” <strong>de</strong> vírus e worms conhecidos.<br />

Desta forma, ataques conhecidos são <strong>de</strong>tectados com bastante rapi<strong>de</strong>z e com baixa taxa<br />

erro. Por outro lado, a principal limitação <strong>de</strong>ssas ferramentas é que elas não po<strong>de</strong>m<br />

<strong>de</strong>tectar novas formas <strong>de</strong> códigos maliciosos que não sejam compatíveis com as<br />

assinaturas existentes.<br />

A segunda classe <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão, <strong>de</strong>tecção <strong>de</strong> anomalias, é baseada na<br />

construção <strong>de</strong> perfis <strong>de</strong> comportamento para padrões consi<strong>de</strong>rados como ativida<strong>de</strong><br />

normal. Desvios da normalida<strong>de</strong> são então tratados como ameaças. Entretanto, é difícil<br />

saber o que procurar quando ativida<strong>de</strong>s não autorizadas sob um sistema assumem<br />

diferentes formas ou mesmo imitam ativida<strong>de</strong>s legítimas. Na tentativa <strong>de</strong> evitar que<br />

ativida<strong>de</strong>s com potencial malicioso sejam autorizadas, muitos sistemas emitem uma taxa<br />

elevada <strong>de</strong> alarmes falsos, reduzindo substancialmente sua efetivida<strong>de</strong>.<br />

A <strong>de</strong>tecção <strong>de</strong> anomalias tem sido tratada na literatura através <strong>de</strong> diversas<br />

propostas <strong>de</strong> sistemas para <strong>de</strong>tecção <strong>de</strong> intrusão que utilizam técnicas <strong>de</strong> aprendizagem<br />

<strong>de</strong> máquina, tais como: re<strong>de</strong>s neurais artificiais [Souza e Monteiro 2009] [Xia, Yang e Li<br />

2010], k-means [Tian e Jianwen 2009], k-NN [Tsai e Lin 2010] e SVM (Support Vector<br />

Machines) [Xiao et al. 2007], entre outras. Essas técnicas têm sido usadas como<br />

classificadores individuais cuja função é <strong>de</strong>tectar eventos inesperados que po<strong>de</strong>m indicar<br />

possíveis ataques em re<strong>de</strong>s <strong>de</strong> computadores.<br />

Além da aplicação <strong>de</strong> classificadores individuais, técnicas híbridas e combinação<br />

<strong>de</strong> classificadores têm recentemente atraído a atenção dos pesquisadores em diversas<br />

áreas <strong>de</strong> aplicação, inclusive em segurança <strong>de</strong> re<strong>de</strong>s para <strong>de</strong>tecção <strong>de</strong> intrusão. Técnicas<br />

híbridas são cooperações <strong>de</strong> dois ou mais classificadores, como por exemplo, a<br />

abordagem TANN (Triangle Area based Nearest Neighbor) [Tsai e Lin 2010]. TANN é<br />

um método para <strong>de</strong>tecção <strong>de</strong> anomalias que utiliza em um primeiro nível a técnica <strong>de</strong><br />

agrupamento k-means para transformar dados primários, ou seja, o espaço <strong>de</strong><br />

características original, em novos dados que servem <strong>de</strong> entrada para outro classificador.<br />

No segundo nível, o classificador k-NN é utilizado para <strong>de</strong>finir a classificação final das<br />

amostras.<br />

A combinação <strong>de</strong> classificadores (classifier ensembles) é baseada na hipótese <strong>de</strong><br />

que combinar a <strong>de</strong>cisão <strong>de</strong> um conjunto <strong>de</strong> classificadores po<strong>de</strong> aumentar a taxa <strong>de</strong><br />

<strong>de</strong>tecção correta, superando o <strong>de</strong>sempenho <strong>de</strong> classificadores individuais. Os métodos<br />

198


mais comuns para a geração <strong>de</strong> conjuntos <strong>de</strong> classificadores são bagging [Breiman 1996]<br />

e subespaços aleatórios [Ho 1998]. Uma vez criados, os membros do conjunto <strong>de</strong>vem ter<br />

suas opiniões combinadas em uma única <strong>de</strong>cisão. A regra do voto majoritário é a função<br />

mais popular <strong>de</strong> combinação <strong>de</strong> conjuntos <strong>de</strong> classificadores.<br />

Em [Xiao et al. 2007] é proposta a utilização <strong>de</strong> um conjunto <strong>de</strong> SVMs para<br />

<strong>de</strong>tecção <strong>de</strong> anomalias. Os membros do conjunto não são gerados nem por bagging e<br />

nem por subespaço aleatórios, e sim, através <strong>de</strong> uma estratégia que envolve uma<br />

adaptação <strong>de</strong> ambos os métodos. Essa estratégia envolve processos <strong>de</strong> seleção <strong>de</strong><br />

características e <strong>de</strong> amostras, aplicados aos dados <strong>de</strong> entrada para proporcionar<br />

diversida<strong>de</strong> aos membros do conjunto.<br />

Este artigo propõe o emprego da combinação <strong>de</strong> classificadores para melhorar o<br />

processo <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> anomalias em re<strong>de</strong>s <strong>de</strong> computadores. Trata-se <strong>de</strong> um conjunto<br />

<strong>de</strong> k-NNs gerados por subespaços aleatórios. Além disso, este trabalho também fornece<br />

um estudo comparativo <strong>de</strong> métodos <strong>de</strong> classificação com o objetivo <strong>de</strong> mostrar a<br />

superiorida<strong>de</strong> do conjunto <strong>de</strong> classificadores sobre outras técnicas mais clássicas <strong>de</strong><br />

classificação. Os métodos comparados são: o conjunto <strong>de</strong> k-NNs gerados com o método<br />

<strong>de</strong> subespaços aleatórios (Random Subspace Method - RSM) e o método híbrido<br />

proposto em [Tsai e Lin 2010].<br />

Fora isso, este trabalho também apresenta uma alteração no método <strong>de</strong><br />

classificação proposto por [Tsai e Lin 2010]. Esses autores propõem o uso <strong>de</strong><br />

classificadores híbridos. Eles utilizam k-means e k-NN, conforme mencionado<br />

anteriormente. Porém, a literatura mostra que SVM apresenta normalmente <strong>de</strong>sempenho<br />

superior ao k-NN. Devido a esse fato, neste trabalho k-NN será substituído pelo<br />

classificador SVM. Os resultados obtidos <strong>de</strong>monstram que a troca <strong>de</strong> classificador<br />

ocasiona um aumento na taxa <strong>de</strong> classificação do método TANN. Porém, não supera a<br />

combinação <strong>de</strong> classificadores proposta neste trabalho. Os experimentos foram<br />

realizados na base <strong>de</strong> dados KDD Cup 99 [KDD Cup 1999], que é uma base <strong>de</strong> dados<br />

muito utilizada para a experimentação <strong>de</strong> soluções <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão <strong>de</strong> re<strong>de</strong>.<br />

O restante <strong>de</strong>ste artigo está organizado como segue. Na Seção 2 é apresentada<br />

uma visão geral dos trabalhos mais recentes na área <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusos em re<strong>de</strong>s <strong>de</strong><br />

computadores que utilizam técnicas <strong>de</strong> aprendizagem <strong>de</strong> máquina. Na Seção 3 são<br />

<strong>de</strong>scritas as técnicas <strong>de</strong> aprendizagem <strong>de</strong> máquina comparadas neste trabalho. Na Seção<br />

4, o protocolo experimental e os resultados obtidos são apresentados. Finalizando na<br />

Seção 5, com conclusões e trabalhos futuros.<br />

2. Trabalhos Relacionados<br />

Diversas abordagens têm sido propostas para sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão. Destacase<br />

na literatura da área, o fato <strong>de</strong> muitos <strong>de</strong>sses sistemas terem sido <strong>de</strong>senvolvidos com<br />

base na utilização <strong>de</strong> diferentes técnicas <strong>de</strong> aprendizagem <strong>de</strong> máquina e mineração <strong>de</strong><br />

dados. [Tsai et al., 2009] apresentam uma revisão <strong>de</strong> literatura que investiga a aplicação<br />

<strong>de</strong> técnicas <strong>de</strong> aprendizagem <strong>de</strong> máquina em problemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão em<br />

trabalhos publicados entre os anos 2000 e 2007. De acordo com os autores, os métodos<br />

mais bem sucedidos são os classificadores híbridos, seguidos <strong>de</strong> métodos do tipo<br />

conjunto <strong>de</strong> classificadores e por último, classificadores individuais.<br />

199


Ainda segundo [Tsai et al. 2009], <strong>de</strong>ntre os classificadores simples, os que têm<br />

sido referenciados e testados <strong>de</strong> forma mais ampla são os métodos SVM e k-NN, ambos<br />

apresentando elevado <strong>de</strong>sempenho <strong>de</strong> classificação com relação à precisão, falso alarme<br />

e taxa <strong>de</strong> <strong>de</strong>tecção. Com relação a bases <strong>de</strong> dados investigadas, os referidos autores<br />

<strong>de</strong>stacam a base KDD Cup 99 [KDD Cup 1999], utilizada nos experimentos <strong>de</strong>ste<br />

artigo, como a base mais usada <strong>de</strong>ntre as três bases mais citadas, incluindo DARPA 1998<br />

e DARPA 1999 [Darpa 1999]. Os trabalhos relacionados nesta seção são organizados a<br />

partir da divisão <strong>de</strong>finida em [Tsai et al. 2009].<br />

2.1. Classificadores Híbridos<br />

[Tsai e Lin, 2010] propõem o método TANN que transforma o espaço <strong>de</strong> características<br />

original em um novo espaço <strong>de</strong> características. Inicialmente, k-means é utilizado para<br />

agrupar as amostras da base <strong>de</strong> dados. O resultado <strong>de</strong>ssa etapa são os centrói<strong>de</strong>s (ponto<br />

central) <strong>de</strong> cada grupo formado pelas amostras. Em seguida, os centrói<strong>de</strong>s, juntamente<br />

com cada amostra da base <strong>de</strong> dados, são projetados no espaço <strong>de</strong> característica. A área<br />

do triângulo formado entre a amostra e os centrói<strong>de</strong>s, combinados em pares, é calculada<br />

e então, é usada como entrada para o classificador k-NN que <strong>de</strong>finirá a classe da<br />

amostra. A base <strong>de</strong> dados investigada foi a KDD Cup 1999.<br />

[Mafra et al. 2008] propõem um sistema multicamadas, chamado POLVO –<br />

IIDS, que utiliza re<strong>de</strong>s neurais <strong>de</strong> Kohonen e SVM. A primeira camada analisa o tráfego<br />

da re<strong>de</strong> e a classifica em quatro categorias: DoS (Denial of Service), Worm, Scan e R2L<br />

(Remote to Local)/Normal. A segunda camada é responsável pela <strong>de</strong>tecção <strong>de</strong> intrusão<br />

propriamente dita.<br />

[Lee et al. 2007] propõem uma abordagem híbrida para sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong><br />

intrusos em re<strong>de</strong>s <strong>de</strong> tempo real. É feita uma seleção <strong>de</strong> características usando o método<br />

Florestas Aleatórias (Random Forest), que elimina as características irrelevantes,<br />

enquanto que Manimax Probability Machine (MPM) é aplicado como classificador. A<br />

base <strong>de</strong> dados usada também foi a KDD Cup 1999.<br />

2.2. Conjunto <strong>de</strong> Classificadores<br />

[Xiao et al., 2007] utilizam um conjunto <strong>de</strong> três SVMs. O primeiro classificador é<br />

treinado com os dados originais, sem alterações, como normalmente é feito com<br />

classificadores individuais. O segundo classificador é treinado com os dados originais<br />

submetidos a um processo <strong>de</strong> seleção <strong>de</strong> características, ou seja, apenas um grupo<br />

escolhido das características originais é utilizado durante o treinamento. Por fim, o<br />

último SVM é treinado com apenas uma parte dos dados <strong>de</strong> entrada, isto é, é feita uma<br />

seleção <strong>de</strong> amostras. A combinação da <strong>de</strong>cisão do conjunto é obtida através <strong>de</strong> uma<br />

função <strong>de</strong> voto pon<strong>de</strong>rado. A base <strong>de</strong> dados utilizada nos experimentos foi a DARPA.<br />

2.3. Classificadores Individuais<br />

[Chimphlee et al. 2006] aplicam a idéia <strong>de</strong> Fuzzy Rough C-means (FRCM), método<br />

individual baseado em agrupamento. FRCM integra a vantagem do conjunto <strong>de</strong> teoria<br />

fuzzy e a técnica k-means para melhorar a tarefa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão. Os resultados<br />

experimentais obtidos na base <strong>de</strong> dados KDD Cup 99, mostraram que o método supera<br />

os resultados obtidos com k-means unicamente.<br />

[Lião e Vemuri, 2002] usaram em sua abordagem k-NN, para classificar<br />

comportamento <strong>de</strong> programas como normal ou intrusivo. Com o classificador k-NN, as<br />

200


freqüências <strong>de</strong> chamadas ao sistema são usadas para <strong>de</strong>screver o comportamento do<br />

programa. Técnicas <strong>de</strong> categorização <strong>de</strong> texto são adotadas para converter cada<br />

execução <strong>de</strong> programa para um vetor e calcular a similarida<strong>de</strong> entre duas ativida<strong>de</strong>s <strong>de</strong><br />

programas. Utilizando base <strong>de</strong> dados DARPA 1998 foi <strong>de</strong>monstrado que o classificador<br />

k-NN po<strong>de</strong> efetivamente <strong>de</strong>tectar ataques intrusivos e atingir as mais baixas taxas <strong>de</strong><br />

falso positivo.<br />

[Chen et al., 2005] realizaram um estudo comparativo entre SVM e re<strong>de</strong>s neurais<br />

artificiais. Os autores concluíram que SVM atinge um melhor <strong>de</strong>sempenho em relação às<br />

re<strong>de</strong>s neurais. O objetivo <strong>de</strong> usar re<strong>de</strong>s neurais e SVM para <strong>de</strong>tecção <strong>de</strong> ataques foi<br />

<strong>de</strong>senvolver uma capacida<strong>de</strong> <strong>de</strong> generalização <strong>de</strong> dados <strong>de</strong> treino limitado. Esses<br />

experimentos foram baseados na base DARPA 1998.<br />

Todos os trabalhos mencionados nesta seção influenciaram <strong>de</strong> alguma forma os<br />

experimentos apresentados neste artigo, pois se configuram como um guia indicando<br />

aspectos promissores e relevantes na área <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusos utilizando<br />

aprendizagem <strong>de</strong> máquina. Porém <strong>de</strong>ntre estes os dois principais artigos são os artigos <strong>de</strong><br />

[Ho 1998] e [Tsai e Lin, 2010], que tratam a dimensionalida<strong>de</strong> <strong>de</strong> espaço <strong>de</strong><br />

características <strong>de</strong> uma forma diferenciada com problemas <strong>de</strong> bases muito gran<strong>de</strong>s. Como<br />

mencionado anteriormente [Ho 1998] reduz essa dimensionalida<strong>de</strong> com um subespaço<br />

aleatório <strong>de</strong> características (<strong>de</strong> 41 características para 20) procurando combinar suas<br />

diversas visões do problema e finalizando com o voto majoritário. Já [Tsai e Lin, 2010]<br />

se utiliza da redução <strong>de</strong>sse espaço <strong>de</strong> características reduzindo as 41 características, com<br />

a proposta <strong>de</strong> uma área triangular, para 10 características. Desta forma o presente artigo<br />

apresenta as seguintes contribuições:<br />

• Substituição do classificador k-NN, no conjunto <strong>de</strong> classificadores híbridos<br />

proposto por [Tsai e Lin, 2010], pelo classificador SVM, conforme indicado na<br />

literatura como um classificador <strong>de</strong> ótimo <strong>de</strong>sempenho para <strong>de</strong>tecção <strong>de</strong><br />

intrusão [Tsai et al., 2009];<br />

• Aplicação <strong>de</strong> um método proposto para redução <strong>de</strong> dimensionalida<strong>de</strong> <strong>de</strong><br />

características para o problema <strong>de</strong> reconhecimento <strong>de</strong> dígitos [Ho 1998], em<br />

um problema <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão.<br />

Na próxima seção, os métodos comparados neste artigo são <strong>de</strong>scritos com mais<br />

<strong>de</strong>talhes.<br />

3. Abordagens Aplicadas<br />

Conforme mencionado na seção anterior, a literatura indica que a combinação <strong>de</strong><br />

classificadores produz resultados superiores aos resultados obtidos por classificadores<br />

individuais. Por essa razão, duas abordagens que usam combinação <strong>de</strong> classificadores são<br />

comparadas neste trabalho. Esta seção apresenta essas abordagens. A primeira propõe a<br />

utilização <strong>de</strong> conjunto <strong>de</strong> classificadores k-NN treinados em diferentes subespaços<br />

aleatórios, enquanto que a segunda propõe uma alteração no classificador híbrido<br />

proposto por [Tsai e Lin, 2010].<br />

201


3.1. Conjunto <strong>de</strong> KNNs gerado por subespaços aleatórios<br />

O método <strong>de</strong> subespaços aleatórios (RSM) para classificação k-NN foi proposto em<br />

[Ho, 1998]. É consi<strong>de</strong>rada uma abordagem baseada em seleção <strong>de</strong> características, pois<br />

trabalha da seguinte forma.<br />

Dada uma base <strong>de</strong> dados D, cada amostra x que compõe a base é representada<br />

por características que são organizadas em um vetor com l dimensões,<br />

l<br />

l<br />

x = [ x1 , x2,...,<br />

x l<br />

] ∈ R , em que R é chamado espaço <strong>de</strong> características e cada eixo<br />

correspon<strong>de</strong> a uma característica original dos dados. RSM escolhe aleatoriamente n<br />

subespaços diferentes, com dimensão j cada, a partir do espaço <strong>de</strong> características<br />

l<br />

original R , em que j < l , e representa toda a base <strong>de</strong> dados D a partir <strong>de</strong> cada<br />

subespaço escolhido. Então, cada nova representação da base D i é utilizada para treinar<br />

um classificador individual c<br />

i<br />

. A Figura 1 apresenta uma visão geral do funcionamento<br />

<strong>de</strong> RSM.<br />

Base <strong>de</strong><br />

dados<br />

D =<br />

x , x ,...,<br />

1<br />

x , x ,...,<br />

1<br />

x , x ,...,<br />

1<br />

2<br />

2<br />

2<br />

x<br />

x<br />

x<br />

l<br />

l<br />

l<br />

RSM<br />

•<br />

C = { c1,<br />

c2,...,<br />

cn}<br />

Figura 1. Visão geral do método RSM. São escolhidos aleatoriamente j características<br />

<strong>de</strong>ntre as l características originais, sendo que j


Diante das razões e <strong>de</strong>finições <strong>de</strong>scritas acima, o método <strong>de</strong> aprendizagem <strong>de</strong><br />

máquina baseado em conjunto <strong>de</strong> classificadores é aplicado neste artigo ao problema <strong>de</strong><br />

<strong>de</strong>tecção <strong>de</strong> intrusão através do RSM. Os classificadores membros foram k-NNs, sendo<br />

utilizado o voto majoritário para combinar as <strong>de</strong>cisões dos k-NNs.<br />

3.2. Classificadores Híbridos<br />

Esta abordagem proposta por [Tsai e Lin 2010] é dividida em três estágios: (1) extração<br />

<strong>de</strong> centrói<strong>de</strong>s das amostras; (2) formação <strong>de</strong> uma nova base <strong>de</strong> dados; e (3) treino e teste<br />

do classificador. No primeiro estágio, todas as amostras da base <strong>de</strong> dados são projetadas<br />

no espaço <strong>de</strong> características original para que o algoritmo não-supervisionado k-means<br />

seja aplicado a fim <strong>de</strong> agrupar as amostras <strong>de</strong> acordo com o número <strong>de</strong> classes do<br />

problema, e calcular os centrói<strong>de</strong>s <strong>de</strong> cada grupo. No segundo estágio, um novo espaço<br />

<strong>de</strong> características é gerado através do cálculo <strong>de</strong> área triangular (<strong>de</strong>scrito com <strong>de</strong>talhes a<br />

seguir). Por fim, k-NN é treinado e usado para classificar as amostras <strong>de</strong>sconhecidas.<br />

Para calcular a área triangular, são consi<strong>de</strong>rados três pontos <strong>de</strong> dados: dois<br />

centrói<strong>de</strong>s obtidos por k-means e uma amostra da base <strong>de</strong> dados. Os autores utilizaram a<br />

mesma base <strong>de</strong> dados investigada neste artigo, isto é KDD Cup 99, que é composta por<br />

amostras <strong>de</strong> cinco classes, das quais uma é do tipo tráfego normal e as quatro restantes<br />

do tipo ataque. Por serem cinco classes, k-means é direcionado a encontrar cinco<br />

centrói<strong>de</strong>s. A Figura 2 mostra um exemplo dos cinco grupos e seus respectivos<br />

centrói<strong>de</strong>s (A, B, C, D, E) e um ponto <strong>de</strong> dado (X i ).<br />

Figura 2. Formação da área triangular. Fonte: [Tsai e Lin 2010].<br />

Portanto, para a base KDD-Cup, <strong>de</strong>z áreas são obtidas para formar um novo<br />

vetor <strong>de</strong> caracteríticas para o ponto <strong>de</strong> dado (X i ):<br />

∆X<br />

iCE<br />

∆X<br />

i<br />

AB<br />

e<br />

∆XiDE<br />

.<br />

,<br />

∆Xi<br />

AC<br />

,<br />

∆X<br />

i<br />

AD ,<br />

∆Xi<br />

AE<br />

,<br />

∆X<br />

iBC<br />

,<br />

∆XiBD<br />

,<br />

∆X<br />

iBE<br />

,<br />

∆X<br />

iCD<br />

,<br />

Em seguida é calculado o perímetro <strong>de</strong> cada triângulo através da distância<br />

Euclidiana, <strong>de</strong>terminando o ponto <strong>de</strong> dado X i (i =1,..., m, on<strong>de</strong> m é o total do número <strong>de</strong><br />

amostras). Sendo a distância Euclidiana entre dois pontos A = ( a1, a2,..., a n<br />

)<br />

e<br />

B = ( b1 , b2<br />

,..., b n<br />

)<br />

no espaço <strong>de</strong> n características, <strong>de</strong>finida pela equação 2.<br />

AB = ( a ) 2 ( ) 2 ( ) 2<br />

( ) 2<br />

1<br />

− b1 + a2 − b2 + ... + an − bn = ∑ ai − bi<br />

(2)<br />

203


O perímetro do triângulo<br />

∆ X<br />

i<br />

AB é <strong>de</strong>finido como G = a + b + c , on<strong>de</strong> a = AB ,<br />

b = BX i<br />

e c = AX<br />

i<br />

, isto é, a distância entre A e B, B e X i, e A e X i , respectivamente.<br />

Depois <strong>de</strong> obter o perímetro dos triângulos para cada amostra, a fórmula <strong>de</strong><br />

Heron é calculada. A equação 3 exibe a fórmula <strong>de</strong> Heron.<br />

T = S( S − a)( S − b)( S − c)<br />

On<strong>de</strong> o<br />

G<br />

S = é o semi perímetro <strong>de</strong> ∆X<br />

i<br />

AB<br />

2<br />

.<br />

Portanto, 10 triângulos, T₁−T₁₀ são i<strong>de</strong>ntificados para cada X i e são usados para<br />

formar os novos dados. Esses novos dados são então usados para treinar e testar o<br />

classificador k-NN.<br />

Porém, a literatura <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão mostra que SVM é um classificador<br />

que alcança taxas <strong>de</strong> <strong>de</strong>tecção melhores quando comparado a k-NN [Tsai et al. 2009].<br />

Devido a esse fato, este artigo propõe uma modificação no método TANN. A<br />

modificação sugerida ocorre no terceiro estágio do método, isto é, na classificação final.<br />

A proposta envolve a troca <strong>de</strong> k-NN por SVM. Portanto, a <strong>de</strong>tecção dos centrói<strong>de</strong>s e o<br />

cálculo da área triangular permanecem inalterados. A nova representação dos dados será<br />

usada para o treinamento <strong>de</strong> um classificador do tipo SVM.<br />

Na próxima seção são apresentados os resultados obtidos com o conjunto <strong>de</strong> k-<br />

NN gerado por RSM, TANN original (com o classificador k-NN) e TANN modificado<br />

(com classificador SVM).<br />

4. Experimentos<br />

Esta seção <strong>de</strong>screve os experimentos realizados para avaliar as abordagens investigadas.<br />

Essa <strong>de</strong>scrição apresenta a composição da base <strong>de</strong> dados, as métricas utilizadas e sua<br />

relevância ao problema <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão.<br />

4.1. Base <strong>de</strong> dados<br />

Os métodos investigados usam “10% do KDD-Cup 99” e “Corrected KDD-Cup (Test)”<br />

[KDD 1999], como bases <strong>de</strong> treino/teste e validação, respectivamente, exatamente como<br />

na proposta <strong>de</strong> [Tsai e Lin, 2010] . Esses dois conjuntos <strong>de</strong> dados <strong>de</strong>screvem a conexão<br />

em uma re<strong>de</strong> <strong>de</strong> trabalho representada por um vetor <strong>de</strong> 41 características, distribuídas da<br />

seguinte forma: 9 características do tipo intrínsecas, 13 do tipo conteúdo e as restantes<br />

do tipo <strong>de</strong> tráfego. Cada padrão do conjunto <strong>de</strong> dados é rotulado como pertencente a<br />

uma <strong>de</strong> cinco classes, das quais uma é do tipo tráfego normal e as quatro restantes do<br />

tipo ataque como segue:<br />

i) Probing – vigilância e sondagem <strong>de</strong> sistema;<br />

ii) DoS (Denial of Service) – ataques <strong>de</strong> negação <strong>de</strong> serviço;<br />

iii) R2L (Remote to Local) – acesso não autorizado <strong>de</strong> uma máquina remota;<br />

iv) U2L (User to Root) – acesso não autorizado a privilégio <strong>de</strong> super usuário;<br />

Em todos os experimentos (classificadores híbridos e conjunto <strong>de</strong> classificadores)<br />

a base <strong>de</strong> dados foi dividida em 40% para treino e 60% para teste. Essa estratégia é<br />

(3)<br />

204


conhecida na literatura <strong>de</strong> aprendizagem <strong>de</strong> máquina como holdout validation [Kohavi<br />

1995]. A base foi dividida em bases <strong>de</strong> treino e <strong>de</strong> teste por ser uma base com muitas<br />

amostras, conforme Tabela1. Segundo a literatura, bases que contêm muitas amostras<br />

são bastante representativas, não havendo necessida<strong>de</strong> <strong>de</strong> serem tratadas através <strong>de</strong><br />

validação cruzada.<br />

A tabela 1 <strong>de</strong>monstra a distribuição das bases usadas nos experimentos em<br />

treino/teste e validação.<br />

Tabela 1. Distribuição do Conjunto <strong>de</strong> Dados para Treino/Teste e Validação<br />

Classes<br />

Qta. Amostras por Classe<br />

Normal 92.277<br />

Probe 4.107<br />

Conjunto <strong>de</strong> Dados Treino/Teste<br />

DoS 391.458<br />

U2R 52<br />

R2L 1.126<br />

Conjunto <strong>de</strong> Dados para Validação<br />

(%) Qta. Amostras por Classe (%)<br />

19,68% 60.593<br />

19,40%<br />

0,83% 4.166<br />

1,33%<br />

79,24% 231.455<br />

74,40%<br />

0,01% 88<br />

0,03%<br />

0,23% 14.727<br />

4,73%<br />

Total 494.020 100% 311.029<br />

100%<br />

4.2. Medidas <strong>de</strong> <strong>de</strong>sempenho<br />

As medidas <strong>de</strong> <strong>de</strong>sempenho adotadas neste artigo seguem o padrão <strong>de</strong> métricas<br />

encontrado na literatura para <strong>de</strong>tecção <strong>de</strong> anomalia. São medidas que po<strong>de</strong>m ser<br />

calculadas pela matriz <strong>de</strong> confusão mostrada na Tabela 2, consi<strong>de</strong>rando as seguintes<br />

legendas: TP (Verda<strong>de</strong>iro Positivo) - número <strong>de</strong> ataques <strong>de</strong>vidamente classificados como<br />

ataque; FP (Falso Positivo) - número <strong>de</strong> tráfego normal classificado como ataque; FN<br />

(Falso Negativo) - número <strong>de</strong> ataques classificados como normal e TN (Verda<strong>de</strong>iro<br />

Negativo) - número <strong>de</strong> tráfego normal <strong>de</strong>vidamente classificado como normal.<br />

Tabela 2. Matriz <strong>de</strong> confusão utilizada como base para o cálculo das medidas <strong>de</strong><br />

<strong>de</strong>sempenho.<br />

Atual<br />

Normal<br />

Previsto<br />

Intrusão<br />

Normal TN FP<br />

Intrusão FN TP<br />

As métricas utilizadas para comparar os métodos <strong>de</strong> classificação investigados<br />

são taxa <strong>de</strong> precisão, <strong>de</strong> <strong>de</strong>tecção e <strong>de</strong> falso alarme. Essas medidas po<strong>de</strong>m ser obtidas<br />

por:<br />

Precisão<br />

TP + TN<br />

=<br />

TP + TN + FP + FN<br />

Taxa <strong>de</strong> <strong>de</strong>tecção<br />

Alarme Falso<br />

TP<br />

=<br />

TP + FN<br />

FP<br />

=<br />

FP + TN<br />

205


4.3. Resultados<br />

Os resultados obtidos por cada técnica são apresentados separadamente, através <strong>de</strong> um<br />

quadro comparativo e <strong>de</strong> gráficos, para que o <strong>de</strong>sempenho geral dos métodos<br />

investigados seja comparado, sobre a base <strong>de</strong> teste.<br />

4.3.1. Classificadores Híbridos<br />

Conforme mencionado na seção 3.2, o método TANN foi replicado neste artigo <strong>de</strong><br />

acordo com a <strong>de</strong>scrição apresentada em [Tsai e Lin 2010]. K-means foi aplicado para<br />

agrupar os dados originais, posteriormente, as áreas triangulares foram calculadas e<br />

utilizadas como entrada para o treinamento do classificador k-NN. O único parâmetro<br />

que <strong>de</strong>ve ser <strong>de</strong>finido para k-NN é o número k <strong>de</strong> vizinhos mais próximos. O valor <strong>de</strong>sse<br />

parâmetro foi o mesmo atribuído pelos autores do método, isto é, k=17. A Tabela 3<br />

exibe a matriz <strong>de</strong> confusão obtida com este método.<br />

Tabela 3. Matriz <strong>de</strong> confusão produzida pelo método TANN original (kNN)<br />

Normal<br />

Ataque<br />

Normal 58.038 328<br />

Ataque 618 237.428<br />

As taxas <strong>de</strong> <strong>de</strong>tecção, falso alarme e precisão obtidos com TANN original foram:<br />

99,74%, 0,56% e 99,66%, respectivamente.<br />

Conforme <strong>de</strong>stacado na seção 3.2, neste artigo ocorre a troca do classificador k-<br />

NN pelo classificador SVM, que é consi<strong>de</strong>rado um método que apresenta <strong>de</strong>sempenho<br />

superior à k-NN. Essa alteração na abordagem TANN é chamada aqui <strong>de</strong> TANN<br />

modificado.<br />

Dois parâmetros iniciais precisam ser <strong>de</strong>finidos pelo usuário para SVM, o tipo <strong>de</strong><br />

função kernel e o parâmetro <strong>de</strong> regularização C. Depen<strong>de</strong>ndo da função kernel<br />

escolhida, outros parâmetros <strong>de</strong>vem ser <strong>de</strong>finidos, como por exemplo, o grau do<br />

polinômio para o kernel polinomial. Neste artigo, a base <strong>de</strong> validação foi utilizada para a<br />

<strong>de</strong>finição <strong>de</strong>sses parâmetros. Os melhores resultados foram obtidos com o kernel RBF<br />

(Radial Basis Function), e fator <strong>de</strong> penalização C=1 e γ=0,5. A tabela 4 exibe a matriz<br />

<strong>de</strong> confusão obtida com aplicação <strong>de</strong> TANN modificado.<br />

Tabela 4. Matriz <strong>de</strong> confusão produzida pelo método TANN modificado (SVM)<br />

Normal<br />

Ataque<br />

Normal 58.078 288<br />

Ataque 321 237.725<br />

Com relação à taxa <strong>de</strong> <strong>de</strong>tecção, falso alarme e precisão para TANN modificado,<br />

os valores obtidos foram: 99,86%, 0,49% e 99,79%, respectivamente.<br />

4.3.2. k-NNs gerados por RSM<br />

Dois parâmetros <strong>de</strong>vem ser <strong>de</strong>finidos para que RSM seja aplicado: dimensão dos<br />

subespaços aleatórios e quantida<strong>de</strong> <strong>de</strong> membros do conjunto <strong>de</strong> classificadores. Segundo<br />

a autora do método RSM [Ho 1998], o tamanho recomendado para os subespaços<br />

aleatórios <strong>de</strong>ve ser aproximadamente igual à meta<strong>de</strong> da quantida<strong>de</strong> <strong>de</strong> características<br />

originais. Portanto, consi<strong>de</strong>rando que a base investigada neste artigo contém<br />

206


originalmente 41 características, 20 características foram escolhidas aleatoriamente para<br />

compor cada subespaço. Em termos <strong>de</strong> quantida<strong>de</strong> <strong>de</strong> classificadores, o conjunto criado<br />

para os experimentos é composto por 15 k-NNs. Essa escolha foi baseada nos resultados<br />

obtidos por [Ho 1998] que mostraram que normalmente não há necessida<strong>de</strong> <strong>de</strong> utilização<br />

<strong>de</strong> muitos classificadores membros do conjunto.<br />

Como os classificadores membros do conjunto são k-NNs, o valor <strong>de</strong> k também<br />

precisou ser <strong>de</strong>finido. O valor utilizado nos experimentos foi k=1, uma vez que a<br />

literatura [Ho 1998] mostra que conjuntos <strong>de</strong> k-NNs gerados por RSM apresentam<br />

normalmente elevada taxa <strong>de</strong> precisão quando k=1, embora a escolha <strong>de</strong>sse parâmetro<br />

<strong>de</strong>penda muito do problema <strong>de</strong> aplicação. A Tabela 5 exibe a matriz <strong>de</strong> confusão obtida<br />

pelo conjunto <strong>de</strong> 15 kNNs gerados por RSM.<br />

Tabela 5. Matriz <strong>de</strong> confusão produzida pelo método RSM/kNN<br />

Normal<br />

Ataque<br />

Normal 58.355 11<br />

Ataque 69 237.977<br />

A taxa <strong>de</strong> precisão, taxa <strong>de</strong> <strong>de</strong>tecção e falso alarme da combinação <strong>de</strong><br />

classificadores são 99,97%, 99,97% e 0,019%, respectivamente.<br />

4.3.3. Resultados comparativos<br />

A Tabela 6 compara os resultados obtidos pelos três métodos investigados neste artigo.<br />

É importante <strong>de</strong>stacar que esses valores foram calculados na base <strong>de</strong> teste. Os resultados<br />

indicam que o método RSM/k-NN apresentou melhor <strong>de</strong>sempenho no problema <strong>de</strong><br />

<strong>de</strong>tecção <strong>de</strong> intrusão na base KDD Cup. O RSM/k-NN produziu maior taxa <strong>de</strong> precisão<br />

e <strong>de</strong> <strong>de</strong>tecção, e ao mesmo tempo menor taxa <strong>de</strong> falso alarme.<br />

A Figura 3 compara os métodos RSM/k-NN, híbrido original e híbrido<br />

modificado em termos <strong>de</strong> taxa <strong>de</strong> falsos alarmes. A Figura 4 mostra a precisão média por<br />

classe, incluindo a classe normal e as quatro diferentes classes <strong>de</strong> ataque, obtida por cada<br />

método. Observando-se que as classes R2L e U2R, não foram generalizadas pelo<br />

classificador, <strong>de</strong>vido a pouca representativida<strong>de</strong> <strong>de</strong>ssas classes no conjunto <strong>de</strong> dados<br />

exibido na tabela 1.<br />

Tabela 6. Comparação dos Resultados Obtidos<br />

TANN modificado<br />

(SVM)<br />

Classificador Híbrido<br />

TANN original<br />

(k-NN)<br />

Conjunto <strong>de</strong> Classificadores<br />

RSM/k-NN<br />

Taxa Detecção 99,865 99,740 99,971<br />

Falso Alarme 0,493 0,561 0,0188<br />

Precisão 99,794 99,68 99,973<br />

Os resultados também mostram que a modificação proposta neste trabalho para a<br />

estratégia TANN produziu melhores resultados quando comparada à TANN original.<br />

Esses resultados confirmam a literatura na área <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão que mostra que<br />

SVM é um classificador que alcança taxas <strong>de</strong> <strong>de</strong>tecção melhores quando comparado a k-<br />

NN [Tsai et al., 2009]. Porém, o método TANN modificado não superou o conjunto <strong>de</strong><br />

k-NNs gerados por RSM.<br />

207


Normal<br />

0,5620<br />

0,49343796<br />

R2L<br />

0,1857<br />

0,1427<br />

U2R<br />

0,0000<br />

0,0189<br />

RSM - kNN<br />

TANN Original (kNN)<br />

DoS<br />

0,3588<br />

0,2576<br />

TANN Modificado (SVM)<br />

Probe<br />

0,0189<br />

0,0757<br />

0,0000 0,2000 0,4000 0,6000<br />

Figura 3. Comparação entre os métodos investigados em relação à taxa <strong>de</strong><br />

falsos alarmes.<br />

RSM - kNN TANN original (kNN) TANN modificado (SVM)<br />

Normal<br />

99,98<br />

99,44<br />

99,51<br />

R2L<br />

97,63<br />

84,17<br />

93,93<br />

U2R<br />

0<br />

22<br />

53,12<br />

DoS<br />

99,98<br />

99,82<br />

99,92<br />

Probe<br />

96,47<br />

94,64<br />

96,83<br />

Figura 4. Comparação entre os métodos investigados em relação à precisão<br />

média por classe.<br />

A principal tarefa <strong>de</strong> um sistema <strong>de</strong> classificação <strong>de</strong> intrusão é filtrar potenciais<br />

ataques e permitir acesso a uma conexão normal. Logo, a taxa <strong>de</strong> <strong>de</strong>tecção correta <strong>de</strong><br />

conexões, tanto como ataques quanto como normais, <strong>de</strong>ve ser elevada. Como<br />

conseqüência, a taxa <strong>de</strong> falsos alarmes <strong>de</strong>ve ser minimizada no intuito <strong>de</strong> aumentar a<br />

efetivida<strong>de</strong> dos sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> anomalias. Portanto, os resultados obtidos neste<br />

artigo mostram a superiorida<strong>de</strong> <strong>de</strong> RSM/k-NN sobre as <strong>de</strong>mais técnicas investigadas.<br />

Entretanto, é importante <strong>de</strong>stacar que os resultados apresentados neste trabalho<br />

não têm o objetivo <strong>de</strong> sanar todas as lacunas existentes em um problema <strong>de</strong> <strong>de</strong>tecção <strong>de</strong><br />

intrusão. O objetivo é contribuir com pesquisas e experimentos que auxiliem a<br />

comunida<strong>de</strong> <strong>de</strong> pesquisadores na formulação <strong>de</strong> melhores soluções.<br />

5. Conclusões e Trabalhos Futuros<br />

Este artigo apresentou os resultados <strong>de</strong> um estudo experimental envolvendo a aplicação<br />

do método <strong>de</strong> subespaço aleatório na geração <strong>de</strong> um conjunto <strong>de</strong> classificadores do tipo<br />

k-NN aplicado ao problema <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> anomalias em re<strong>de</strong>s <strong>de</strong> computadores. O<br />

método foi comparado à estratégia híbrida TANN, e à uma versão modificada <strong>de</strong> TANN,<br />

proposta neste trabalho para melhorar a taxa <strong>de</strong> classificação da estratégia original.<br />

Embora o método híbrido modificado tenha superado o método original em<br />

termos <strong>de</strong> taxa <strong>de</strong> <strong>de</strong>tecção correta e <strong>de</strong> falsos alarmes, a combinação <strong>de</strong> conjuntos <strong>de</strong> k-<br />

NNs (RSM/k-NN) atingiu um <strong>de</strong>sempenho superior a ambos os métodos <strong>de</strong> classificação<br />

208


híbrida. É também importante <strong>de</strong>stacar a redução na taxa <strong>de</strong> falsos alarmes obtida por<br />

RSM/k-NN. Esse fato indica que conjuntos <strong>de</strong> classificadores po<strong>de</strong>m ser ferramentas<br />

fundamentais no <strong>de</strong>senvolvimento <strong>de</strong> soluções efetivas para a <strong>de</strong>tecção <strong>de</strong> anomalias na<br />

Internet.<br />

Para trabalhos futuros algumas questões po<strong>de</strong>m ser consi<strong>de</strong>radas. Primeiro, seria<br />

interessante avaliar a proposta <strong>de</strong>ste artigo em uma base <strong>de</strong> dados <strong>de</strong> ataques recentes<br />

dos tipos phishing, cross-site scripting, spam, entre outros. Segundo, <strong>de</strong>monstrar o<br />

<strong>de</strong>sempenho <strong>de</strong> conjuntos <strong>de</strong> SVMs gerados por subespaços aleatórios. Além disso,<br />

outros métodos <strong>de</strong> geração <strong>de</strong> conjuntos <strong>de</strong> classificadores, como bagging e conjuntos<br />

heterogêneos po<strong>de</strong>riam ser investigados.<br />

Referências<br />

An<strong>de</strong>rson, J. (1995). An introduction to neural networks. Cambridge: MIT Press.<br />

Breiman, L. (1996). Bagging Predictors. Machine Learning, 1996, volume 24 (2), 123-<br />

140.<br />

Chen W., Hsu S., Shen H., (2005). Application of SVM and ANN for intrusion<br />

<strong>de</strong>tection. In: Computer & Operations Research, Volume 32, Issue 10, October 2005,<br />

Pages 2617-2634<br />

Chimphlee W., Abdullah A. H.,Sap M. N., Srinoy S., Chimphlee S., (2006). Anomaly-<br />

Based Intrusion Detection using Fuzzy Rough Clustering. In: ICHIT '06 Proceedings<br />

of the 2006 International Conference on Hybrid Information Technology - Volume 01<br />

DARPA Intrusion Detection Data Sets 1999. Cyber Systems e Technology.<br />

http://www.ll.mit.edu/mission/communications/ist/corpora/i<strong>de</strong>val/data/in<strong>de</strong>x.html<br />

Feitosa, E. L. ; Souto, E. ; Sadok, D. (2008) . Tráfego Internet não Desejado:<br />

Conceitos, Caracterização e Soluções. In: SBC. (Org.). Livro-Texto <strong>de</strong> Minicurso do<br />

VIII Simpósio Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais.<br />

Porto Alegre: UFRGS, 2008, v. 1, p. 17-30.<br />

Ho T. K., (1995). Random Decision Forests. Document Analysis and Recognition,<br />

1995., Proceedings of the Third International Conference on<br />

Ho T. K., (1998). Nearest Neighbors in Random Subspaces. Advances in Pattern<br />

Recognition. Lecture Notes in Computer Science, 1998, volume 1451/1998, 640-648.<br />

Issariyapat C., Fukuda K., (2009). Anomaly <strong>de</strong>tection in IP networks with principal<br />

component analysis. Proceedings of the 9th international conference on<br />

Communications and information technologies 1229-1234.<br />

KDD Cup 1999 Dataset, UCI KDD repository,<br />

http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html<br />

Kleinberg, E.M., (1990). Stochastic discrimination. Annals of Mathematic and Artificial<br />

Intelligence, 1 (1990) 207-239.<br />

Kleinberg, E.M., (1996). An overtraining-resistant stochastic mo<strong>de</strong>ling method for<br />

pattern recognition. Annals of Statistics, 4, 6 (1996) 2319-2349.<br />

209


Kohavi R., (1995). A Study of Cross-Validation and Bootstrap for Accuracy Estimation<br />

and Mo<strong>de</strong>l Selection. Appear in the International Joint Conference on Artificial<br />

Intelligence (IJCAI).<br />

Kuncheva L.I., Combining Pattern Classifiers: Methods and Algorithms. John Wiley &<br />

Sons, LTD, USA, 2004.<br />

Lee M. S., Kim S. D. e Park S. J. (2007), A Hybrid Approach for Real-Time Network<br />

Intrusion Detection Systems. International Conference on Computational Intelligence<br />

and Security.<br />

Liao Y. and Vemuri V. R., (2002). Use of K-Nearest Neighbor classifier for intrusion<br />

<strong>de</strong>tection. In: Computer & Security, Volume 21, Issue 5, 1 October 2002, Pages 439-<br />

448<br />

Mafra M. P., Fraga S. J., Moll V., Santin O. A (2008), POLVO-IIDS: Um Sistema <strong>de</strong><br />

Detecção <strong>de</strong> Intrusão Inteligente Baseado em Anomalias. VIII Simpósio Brasileiro em<br />

Segurança da Informação e <strong>de</strong> Sistemas Computacionais.<br />

Nguyen T.T.T. e Armitage G. (2007), A Survey of Techniques for Internet Traffic<br />

Classification using Machine Learning. Centre for Advanced Internet Architectures.<br />

Swinburne University of Technology, Melbourne, Australia. IEEE Communication<br />

Surveys and Tutorials.<br />

Rho<strong>de</strong>s B., Mahaffey J. e Cannady J. (2000). Multiple self-organizing maps for intrusion<br />

<strong>de</strong>tection. In Paper presented at the proceedings of the 23 rd national information<br />

systems security conference. Baltimore, MD.<br />

Souza E. P. e Monteiro J. A. S (2009), Estudo Sobre Sistema <strong>de</strong> Detecção <strong>de</strong> Intrusão<br />

por Anomalias, uma Abordagem Utilizando Re<strong>de</strong>s Neurais. XIV Workshop <strong>de</strong><br />

Gerência e Operação <strong>de</strong> Re<strong>de</strong>s e Serviços - WGRS. Socieda<strong>de</strong> Brasileira <strong>de</strong> Re<strong>de</strong>s<br />

<strong>de</strong> Computadores – SBRC.<br />

Tian L. e Jianwen W., (2009). Research on Network Intrusion Detection System Based<br />

on Improved K-means Clustering Algorithm. Internacional Forum on Computer<br />

Science – Technology and Applications. IEEE Computer Science.<br />

Tsai C., Hsu Y., Lin C., Lin W. (2009). Intrusion <strong>de</strong>tection by machine learning: A<br />

review. Expert Systems with Applications 36 11004-12000.<br />

Tsai C., Lin C. (2010). A triangle area based nearest neighbors approach to intrusion<br />

<strong>de</strong>tection. Pattern Recognition 43 222-229.<br />

Xia, D. X., Yang, S. H. e Li, C. G., (2010). Intrusion <strong>de</strong>tection system based on<br />

principal component analysis and grey neural networks. The 2nd International<br />

Conference on Networks Security Wireless Communications and Trusted Computing<br />

142-145.<br />

Xiao H., Hong F., Zhang Z. e Liao J., (2007). Intrusion Detection Using Ensemble of<br />

SVM Classifier. Fourth International Conference on Fuzzy Systems and Knowledge<br />

Discovery (FKSD 2007). IEEE Computer Society.<br />

210


Combinando Algoritmos <strong>de</strong> Classificação para Detecção <strong>de</strong><br />

Intrusão em Re<strong>de</strong>s <strong>de</strong> Computadores<br />

Alex L. Ramos 1 , Cícero N. dos Santos 1<br />

1 Mestrado em Informática Aplicada – Universida<strong>de</strong> <strong>de</strong> Fortaleza (Unifor)<br />

Fortaleza – CE – Brasil<br />

alex.lacerda@edu.unifor.br, cnogueira@unifor.br<br />

Abstract. Intrusion Detection is the process of monitoring events occurring in<br />

a network and analyzing them for signs of intrusion. The literature contains<br />

many papers that use ensemble of machine learning algorithms to solve<br />

<strong>de</strong>tection problems. This paper proposes a mo<strong>de</strong>l of <strong>de</strong>tection in three levels.<br />

At each level, classification algorithms are applied and their results are<br />

combined in the later level. The last level consists of an ensemble of<br />

ensembles, which aims to improve the precision of intrusion <strong>de</strong>tection. The<br />

results show that the use of three-level ensemble performs better than other<br />

systems proposed in the literature.<br />

Resumo. Detecção <strong>de</strong> intrusão é o processo <strong>de</strong> monitorar e analisar eventos<br />

que ocorrem em uma re<strong>de</strong> em busca <strong>de</strong> sinais <strong>de</strong> intrusão. A literatura<br />

apresenta inúmeros trabalhos que utilizam técnicas <strong>de</strong> comitês <strong>de</strong><br />

classificadores para resolver problemas <strong>de</strong> <strong>de</strong>tecção. Este trabalho propõe um<br />

mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>tecção em três níveis. Em cada nível são aplicados<br />

classificadores gerados por um mesmo algoritmo base e seus resultados são<br />

combinados nos níveis posteriores. O ultimo nível <strong>de</strong> classificação forma um<br />

comitê <strong>de</strong> comitês, que tenta viabilizar uma maior precisão na <strong>de</strong>tecção. Os<br />

resultados apresentados <strong>de</strong>monstram que o mo<strong>de</strong>lo proposto apresenta melhor<br />

<strong>de</strong>sempenho em relação a outros trabalhos encontrados na literatura.<br />

1. Introdução<br />

Segurança <strong>de</strong> re<strong>de</strong>s é <strong>de</strong>finida como a proteção <strong>de</strong> sistemas <strong>de</strong> computadores contra<br />

ameaças à confi<strong>de</strong>ncialida<strong>de</strong>, integrida<strong>de</strong> e disponibilida<strong>de</strong> das informações. Com o<br />

rápido <strong>de</strong>senvolvimento da tecnologia baseada na Internet e a <strong>de</strong>pendência <strong>de</strong> negócios<br />

críticos aos sistemas <strong>de</strong> informação, novos domínios <strong>de</strong> aplicação em re<strong>de</strong>s <strong>de</strong><br />

computadores vêm surgindo [Stallings 2005]. Na medida em que as re<strong>de</strong>s se<br />

<strong>de</strong>senvolvem, existe também o aumento das vulnerabilida<strong>de</strong>s que po<strong>de</strong>m comprometêlas.<br />

Neste contexto, a segurança da informação torna-se essencial para garantir a<br />

proteção dos dados que trafegam nestas re<strong>de</strong>s.<br />

A cada instante novos tipos <strong>de</strong> ataque surgem, tornado necessária, a criação <strong>de</strong><br />

mecanismos <strong>de</strong> <strong>de</strong>fesa mais sofisticados. Os ataques po<strong>de</strong>m corromper os dados <strong>de</strong> uma<br />

aplicação e, <strong>de</strong>pen<strong>de</strong>ndo <strong>de</strong> seu tipo e intensida<strong>de</strong>, po<strong>de</strong>m até mesmo levar o sistema a<br />

um colapso. Com isso, várias medidas vêm sendo criadas para garantir a segurança<br />

contra ataques. Os mecanismos <strong>de</strong> prevenção, tais como criptografia e autenticação, são<br />

a primeira linha <strong>de</strong> <strong>de</strong>fesa em uma re<strong>de</strong>, garantindo alguns princípios <strong>de</strong> segurança<br />

211


como confi<strong>de</strong>ncialida<strong>de</strong> e integrida<strong>de</strong> [Stallings 2005]. Porém, quando estas medidas<br />

não são suficientes para lidar com todos os tipos <strong>de</strong> ataque, faz-se necessário um<br />

segundo mecanismo <strong>de</strong> segurança, os Sistemas <strong>de</strong> Detecção <strong>de</strong> Intrusos (Intrusion<br />

Detection System - IDS) [Debar et al. 2000]. De modo geral, um IDS analisa o tráfego<br />

<strong>de</strong> re<strong>de</strong> tentando reconhecer um comportamento ou uma ação intrusiva para alertar o<br />

administrador ou automaticamente disparar contramedidas.<br />

As técnicas utilizadas para <strong>de</strong>tectar intrusões normalmente são classificadas em<br />

dois tipos: assinatura e anomalia. A <strong>de</strong>tecção por assinatura compara o tráfego com uma<br />

base <strong>de</strong> dados <strong>de</strong> ataques conhecidos (assinaturas), enquanto a <strong>de</strong>tecção por anomalia<br />

compara os dados coletados com registros <strong>de</strong> ativida<strong>de</strong>s consi<strong>de</strong>radas normais no<br />

sistema. Um <strong>de</strong>svio significativo da normalida<strong>de</strong> é consi<strong>de</strong>rado uma ameaça. Ambas as<br />

abordagens possuem várias <strong>de</strong>svantagens. A <strong>de</strong>tecção por assinatura exige atualização<br />

frequente dos registros para garantir uma boa <strong>de</strong>tecção, enquanto a <strong>de</strong>tecção por<br />

anomalia sofre <strong>de</strong> uma alta taxa <strong>de</strong> falsos positivos. Deste modo, o <strong>de</strong>safio é encontrar<br />

uma solução que resolva estes dois problemas, trazendo tanto uma boa <strong>de</strong>tecção quanto<br />

uma baixa taxa <strong>de</strong> falsos alarmes.<br />

Várias abordagens têm sido propostas neste sentido. Entre elas, estratégias<br />

baseadas em técnicas <strong>de</strong> aprendizado <strong>de</strong> máquina tais como Re<strong>de</strong>s Neurais e Máquinas<br />

<strong>de</strong> Vetor Suporte [Mukkamala et al. 2005]. O <strong>de</strong>senvolvimento <strong>de</strong>ssas técnicas obe<strong>de</strong>ce<br />

a duas fases distintas: treinamento e classificação. Na fase <strong>de</strong> treinamento o IDS apren<strong>de</strong><br />

o funcionamento do sistema formando um mo<strong>de</strong>lo que é utilizado na fase <strong>de</strong><br />

classificação para classificar o tráfego <strong>de</strong> re<strong>de</strong>, distinguindo ativida<strong>de</strong>s normais <strong>de</strong><br />

possíveis ameaças.<br />

Uma técnica conhecida como Comitê <strong>de</strong> Classificadores [Witten e Frank 2005]<br />

vem sendo utilizada nos trabalhos relacionados à <strong>de</strong>tecção <strong>de</strong> intrusão que utilizam<br />

algoritmos <strong>de</strong> aprendizado <strong>de</strong> máquina. Métodos <strong>de</strong> comitê visam melhorar o<br />

<strong>de</strong>sempenho da classificação construindo uma combinação da saída <strong>de</strong> vários<br />

classificadores, ao invés <strong>de</strong> aplicar um único mo<strong>de</strong>lo. O resultado da combinação é<br />

melhor do que o resultado <strong>de</strong> qualquer classificador base individual pertencente à<br />

combinação. Desta forma, técnicas <strong>de</strong> comitê trazem uma diminuição significativa das<br />

taxas <strong>de</strong> falsos positivos na <strong>de</strong>tecção <strong>de</strong> intrusão, além <strong>de</strong> aumentarem a acurácia da<br />

<strong>de</strong>tecção [Witten e Frank 2005].<br />

No entanto, os Sistemas <strong>de</strong> Detecção <strong>de</strong> Intrusão baseados em Comitês <strong>de</strong><br />

classificadores propostos recentemente [Chou et al. 2009] [Zainal et al. 2008] ainda<br />

apresentam consi<strong>de</strong>ráveis taxas <strong>de</strong> falsos positivos. Por esse motivo, com o intuito <strong>de</strong><br />

explorar melhor todo o potencial <strong>de</strong>sta técnica, propomos neste trabalho um mo<strong>de</strong>lo <strong>de</strong><br />

comitê <strong>de</strong> classificadores que segue uma estratégia <strong>de</strong> classificação em três níveis. No<br />

primeiro nível, classificadores são gerados usando algoritmos simples, que não usam<br />

estratégias <strong>de</strong> comitês. No segundo nível, são usadas estratégias <strong>de</strong> comitê tomando<br />

como algoritmos base os que aparecem no primeiro nível. Os mo<strong>de</strong>los <strong>de</strong> classificação<br />

gerados no nível dois são então combinados em um terceiro nível, formando assim um<br />

comitê <strong>de</strong> comitês. O principal propósito do trabalho é abordar a questão da acurácia e<br />

da taxa <strong>de</strong> alarmes falsos em um IDS.<br />

O restante do artigo está organizado como segue. A Seção 2 discute os trabalhos<br />

relacionados à <strong>de</strong>tecção <strong>de</strong> intrusão que utilizam técnicas <strong>de</strong> comitê. A Seção 3<br />

212


apresenta a abordagem proposta. Na Seção 4, os algoritmos utilizados nos experimentos<br />

são <strong>de</strong>scritos. Na Seção 5, a base <strong>de</strong> dados utilizada é apresentada. A Seção 6 discute os<br />

resultados. Por fim, a Seção 7 apresenta as conclusões do trabalho.<br />

2. Trabalhos Relacionados<br />

Várias abordagens baseadas em aprendizado <strong>de</strong> máquina como Re<strong>de</strong>s Neurais<br />

Artificiais (ANNs), Sistemas <strong>de</strong> Inferência Fuzzy e SVM (Support Vector Machine),<br />

foram propostas na literatura para realizar <strong>de</strong>tecção <strong>de</strong> intrusão, como o Polvo-IIDS que<br />

realiza <strong>de</strong>tecções através da utilização <strong>de</strong> um sistema multi-camadas baseado em re<strong>de</strong>s<br />

neurais e SVM [Mafra et al. 2008]. Uma revisão a fundo <strong>de</strong> várias técnicas <strong>de</strong> <strong>de</strong>tecção<br />

baseada em anomalia, para i<strong>de</strong>ntificação <strong>de</strong> diferentes tipos intrusões em re<strong>de</strong>s, é<br />

apresentada em [Lazarevic et al. 2003].<br />

A literatura sugere que a combinação <strong>de</strong> múltiplos classificadores po<strong>de</strong> melhorar<br />

a acurácia da <strong>de</strong>tecção. Porém é importante enten<strong>de</strong>r que os algoritmos combinados<br />

<strong>de</strong>vem ser in<strong>de</strong>pen<strong>de</strong>ntes entre si. Se os classificadores base apresentarem métodos <strong>de</strong><br />

classificação similares, então nenhuma melhoria significativa po<strong>de</strong> ser obtida por meio<br />

da utilização <strong>de</strong> comitês. Portanto, a diversificação dos classificadores base é crítica<br />

para efetivida<strong>de</strong> dos métodos <strong>de</strong> comitê [Chou et al. 2009].<br />

No trabalho <strong>de</strong>scrito por [Mukkamala et al. 2005], foram propostas três variantes<br />

<strong>de</strong> Re<strong>de</strong>s Neurais, SVM e MARS como componentes <strong>de</strong> seu IDS. Esta abordagem <strong>de</strong><br />

comitê <strong>de</strong>monstrou melhor <strong>de</strong>sempenho quando comparado à abordagem <strong>de</strong> um<br />

classificador único. Porém, neste trabalho, apenas a acurácia da classificação foi<br />

apresentada, <strong>de</strong>sconsi<strong>de</strong>rando-se importantes medidas padrão para avaliação, tais como<br />

DR (Detection Rate – Taxa <strong>de</strong> Detecção) e FPR (False Positive Rate – Taxa <strong>de</strong> Falsos<br />

Positivos).<br />

Na proposta <strong>de</strong> [Abraham et al. 2007], os autores também <strong>de</strong>monstraram a<br />

capacida<strong>de</strong> <strong>de</strong> sua estrutura <strong>de</strong> comitê em mo<strong>de</strong>lar um IDS baseado em programação<br />

genética. Entretanto, eles realizaram experimentos em uma base com dados<br />

selecionados aleatoriamente a partir da base <strong>de</strong> dados original e os resultados<br />

apresentados foram coletados <strong>de</strong> apenas um experimento, o que torna a classificação<br />

enviesada, <strong>de</strong>pen<strong>de</strong>ndo somente das conexões que foram selecionadas para compor as<br />

bases <strong>de</strong> treino e teste.<br />

O trabalho <strong>de</strong> [Borji 2007] é outro exemplo do uso <strong>de</strong> técnicas comitê. Ele usou<br />

o KDDCUP’99 [Lee et al.1999] para classificar suas conexões em cinco classes<br />

(Normal, DoS, Probe, U2R e R2L). Primeiramente, ele utilizou quatro classificadores<br />

base (Re<strong>de</strong>s Neurais, SVM, K-NN e Árvores <strong>de</strong> Decisão) para realizar a classificação<br />

individualmente e então combinou suas inferências usando três estratégias <strong>de</strong> comitê:<br />

Belief Function, Average Rule e Majority Voting [Kuncheva 2004]. No entanto, ele não<br />

apresentou DR e FPR em cada uma das cinco classes, além <strong>de</strong> ter realizado somente um<br />

experimento em uma base com registros selecionados aleatoriamente.<br />

Em [Zainal et al. 2008], os autores propuseram um conjunto <strong>de</strong> classificadores<br />

on<strong>de</strong> cada um usa diferentes paradigmas <strong>de</strong> aprendizagem. As técnicas utilizadas no<br />

mo<strong>de</strong>lo <strong>de</strong> comitê são: Linear Genetic Programming (LGP), Adaptative Neural Fuzzy<br />

Inference System (ANFIS) e Random Forest (RF). A partir dos resultados obtidos por<br />

213


estes classificadores, a equação <strong>de</strong> combinação foi formulada. Apesar <strong>de</strong> essa estratégia<br />

ter apresentado uma melhoria na acurácia da <strong>de</strong>tecção, os autores não <strong>de</strong>ixam claro qual<br />

versão da base <strong>de</strong> dados KDDCUP’99 (completa, 10%, treino, teste) foi utilizada.<br />

Também não especificam como realizaram a seleção das conexões que compõem a<br />

amostra utilizada nos experimentos. Além disso, somente um experimento foi realizado<br />

nos dados selecionados aleatoriamente, tornando os resultados enviesados. Outra<br />

questão, é que não apresentaram um mo<strong>de</strong>lo sistemático que possa justificar a escolha<br />

dos pesos utilizados na regra <strong>de</strong> combinação.<br />

Outro exemplo da utilização <strong>de</strong> técnicas <strong>de</strong> comitê na <strong>de</strong>tecção <strong>de</strong> intrusão é o<br />

trabalho <strong>de</strong> [Chou et al. 2009]. Eles apresentam um multi-classificador com hierarquia<br />

<strong>de</strong> três camadas. Em sua proposta, primeiramente são aplicados três classificadores em<br />

cada um dos três grupos diferentes <strong>de</strong> atributos da base <strong>de</strong> dados escolhida. Na segunda<br />

camada, para cada grupo <strong>de</strong> atributos, as inferências obtidas pelos diferentes<br />

classificadores são combinadas. Por fim, os resultados das combinações <strong>de</strong> cada grupo<br />

são reunidos para produzir uma conclusão final na terceira camada. No entanto, a<br />

amostra da base <strong>de</strong> dados KDDCUP’99 que eles utilizaram para realizar os<br />

experimentos não mantém a mesma proporção das classes <strong>de</strong> ataque da base original.<br />

Isto é, a amostra utilizada não possui a mesma distribuição <strong>de</strong> classes da base original.<br />

O presente trabalho difere dos citados anteriormente em dois aspectos principais:<br />

(a) neste trabalho, um mesmo algoritmo base é utilizado para gerar os diferentes<br />

classificadores. (b) este trabalho propõe um mo<strong>de</strong>lo <strong>de</strong> comitê em que as técnicas <strong>de</strong><br />

classificação são aplicadas em três níveis, sendo que o terceiro nível gera um comitê <strong>de</strong><br />

comitês.<br />

3. Abordagem Proposta<br />

Tarefas <strong>de</strong> classificação são realizadas em duas etapas conhecidas como fase <strong>de</strong><br />

treinamento e fase <strong>de</strong> classificação. Primeiramente, um algoritmo <strong>de</strong> aprendizado <strong>de</strong><br />

máquina é aplicado em uma base <strong>de</strong> dados (fase <strong>de</strong> treinamento) para gerar um mo<strong>de</strong>lo<br />

capaz <strong>de</strong> classificar os registros <strong>de</strong> uma segunda base (fase <strong>de</strong> classificação).<br />

Neste trabalho, a <strong>de</strong>tecção <strong>de</strong> ataques é realizada a partir da classificação dos<br />

registros <strong>de</strong> uma base <strong>de</strong> dados <strong>de</strong> conexões TCP/IP, no qual cada conexão é<br />

classificada como sendo normal ou pertencendo a algum tipo <strong>de</strong> ataque.<br />

Este trabalho apresenta uma proposta <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques que usa três níveis<br />

<strong>de</strong> classificação. No nível 1, a classificação é realizada por mo<strong>de</strong>los gerados por um<br />

mesmo algoritmo base. No nível 2, um algoritmo <strong>de</strong> comitê é aplicado a vários mo<strong>de</strong>los<br />

do classificador do nível 1. Finalmente no nível 3, os resultados do nível 2 são<br />

combinados por um segundo algoritmo <strong>de</strong> comitê, gerando um comitê <strong>de</strong> comitês. A<br />

Figura 1 ilustra o mo<strong>de</strong>lo proposto. Observe que, em cada nível, os resultados <strong>de</strong><br />

classificadores do nível anterior são combinados para gerar uma classificação mais<br />

precisa.<br />

A principal proposta do trabalho é verificar se comitês <strong>de</strong> comitês po<strong>de</strong>m<br />

produzir melhores sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão em re<strong>de</strong>s <strong>de</strong> computadores. A<br />

escolha por três níveis <strong>de</strong>u-se por três motivos: (1) para formar um comitê <strong>de</strong> comitês,<br />

precisa-se <strong>de</strong> pelo menos três níveis, (2) <strong>de</strong> acordo com os experimentos realizados, a<br />

214


utilização <strong>de</strong> mais <strong>de</strong> três níveis não apresenta melhorias no <strong>de</strong>sempenho da <strong>de</strong>tecção,<br />

pelo contrário, chega até a reduzi-lo e (3) o custo computacional da adição <strong>de</strong> um quarto<br />

nível seria muito gran<strong>de</strong>. Com isso, apenas o resultado dos três níveis propostos são<br />

apresentados neste artigo.<br />

Figura 1. Abordagem <strong>de</strong> Classificação em três níveis<br />

4. Algoritmos <strong>de</strong> Aprendizado <strong>de</strong> Máquina Aplicados à Detecção <strong>de</strong> Intrusão<br />

Para avaliar a abordagem proposta, foram testadas três configurações <strong>de</strong> comitês <strong>de</strong><br />

classificadores, como apresentado na Tabela 1. Com o objetivo <strong>de</strong> analisar o<br />

<strong>de</strong>sempenho <strong>de</strong> vários algoritmos com paradigmas <strong>de</strong> aprendizado distintos, cada<br />

configuração utiliza três algoritmos diferentes. Os algoritmos selecionados foram os que<br />

apresentaram melhores <strong>de</strong>sempenhos em relação a outros algoritmos do mesmo<br />

paradigma <strong>de</strong> aprendizado. Por exemplo, o algoritmo base Random Tree [Geurts et al.<br />

2006] apresentou o melhor <strong>de</strong>sempenho em relação a outros algoritmos base que<br />

utilizam árvores <strong>de</strong> <strong>de</strong>cisão. Da mesma forma, Naive Bayes apresentou o melhor<br />

<strong>de</strong>sempenho em relação a outros algoritmos que utilizam o Teorema <strong>de</strong> Bayes [John e<br />

Langlay 1995].<br />

Tabela 1. Algoritmos avaliados em cada configuração <strong>de</strong> comitê<br />

Configuração 1 Configuração 2 Configuração 3<br />

Nível 1 Random Tree J48 Naive Bayes<br />

Nível 2 Random Forest Bagging Dagging<br />

Nível 3 Random Committee AdaBoost.M1 MultiBoostAB<br />

215


A ferramenta WEKA (Waikato Environment for Knowledge Analysis) [Hall et<br />

al. 2009], versão 3.6.3, foi utilizada para aplicação dos algoritmos. Escolhemos essa<br />

ferramenta por ser amplamente utilizada em ativida<strong>de</strong>s <strong>de</strong> aprendizado <strong>de</strong> máquina [Zaian<br />

et al. 2010].<br />

A seguir, os algoritmos utilizados em cada configuração são <strong>de</strong>scritos com mais<br />

<strong>de</strong>talhes, <strong>de</strong> forma a <strong>de</strong>stacar suas principais diferenças. Visto que, por restrições <strong>de</strong><br />

espaço, não é possível discuti-los minunciosamente.<br />

4.1. Configuração 1<br />

Essa configuração foi criada utilizando apenas algoritmos randômicos, <strong>de</strong>scritos a<br />

seguir:<br />

1. Algoritmo base: Random Tree – este classificador é uma árvore <strong>de</strong> <strong>de</strong>cisão que<br />

consi<strong>de</strong>ra apenas alguns atributos escolhidos aleatoriamente para cada nó da<br />

árvore.<br />

2. Algoritmo <strong>de</strong> comitê: Random Forest [Breiman 2001] – este algoritmo <strong>de</strong><br />

comitê é um conjunto <strong>de</strong> árvores <strong>de</strong> classificação. Cada árvore dá um voto que<br />

indica sua <strong>de</strong>cisão sobre a classe do objeto. A classe com o maior número <strong>de</strong><br />

votos é escolhida para o objeto.<br />

3. Algoritmo <strong>de</strong> comitê <strong>de</strong> comitês: Random Committee [Lira et al. 2007] – ele<br />

utiliza classificadores que tem funcionamento aleatório como base. Cada mo<strong>de</strong>lo<br />

<strong>de</strong> classificação gerado é construído usando uma semente <strong>de</strong> número aleatório<br />

diferente (mas baseado nos mesmos dados). A previsão final é uma média das<br />

previsões geradas pelos mo<strong>de</strong>los base individuais.<br />

4.2. Configuração 2<br />

Os algoritmos utilizados nesta configuração são os seguintes:<br />

1. Algoritmo base: J48 – este algoritmo é uma implementação em Java, na<br />

ferramenta WEKA, do classificador C4.5 [Quinlan 1993]. Ele gera árvores <strong>de</strong><br />

<strong>de</strong>cisão usando uma metodologia <strong>de</strong> informação teórica. O algoritmo C4.5 usa<br />

estratégia <strong>de</strong> dividir e conquistar.<br />

2. Algoritmo <strong>de</strong> comitê: Bagging – o Bootstrap aggregating [Breiman 1996] po<strong>de</strong><br />

ser <strong>de</strong>scrito da seguinte maneira: dado uma base <strong>de</strong> dados, ele gera várias outras<br />

bases a partir da inicial, duplicando alguns registros e excluindo outros. Então,<br />

os mo<strong>de</strong>los gerados a partir <strong>de</strong> cada nova base são combinados por votação,<br />

<strong>de</strong>ste modo, para cada registro a ser classificado, a classe mais votada é<br />

escolhida.<br />

3. Algoritmo <strong>de</strong> comitê <strong>de</strong> comitês: AdaBoost.M1 – ele é uma das versões do<br />

algoritmo AdaBoost [Freund e Schapire 1996]. Este classificador funciona<br />

executando repetidamente um <strong>de</strong>terminado algoritmo base em várias<br />

distribuições sobre a base <strong>de</strong> treino e, então, combina os classificadores<br />

produzidos pelo algoritmo base em um classificador único composto.<br />

216


4.3. Configuração 3<br />

A última configuração avaliada é formada pelos seguintes algoritmos:<br />

1. Algoritmo base: Naive Bayes – este classificador é baseado na teoria da<br />

probabilida<strong>de</strong> condicional para executar a <strong>de</strong>cisão <strong>de</strong> um problema <strong>de</strong><br />

classificação. Ele usa o Teorema <strong>de</strong> Bayes com suposições <strong>de</strong> in<strong>de</strong>pendência, o<br />

que pressupõe que, dado uma classe, conjuntos <strong>de</strong> características são<br />

condicionalmente in<strong>de</strong>pen<strong>de</strong>ntes uns dos outros.<br />

2. Algoritmo <strong>de</strong> comitê: Dagging [Ting e Witten 1997] – ele cria um número <strong>de</strong><br />

partes estratificadas disjuntas a partir dos dados <strong>de</strong> entrada e alimenta cada bloco<br />

<strong>de</strong> dados com uma cópia do classificador base fornecido. As previsões são feitas<br />

via Majority Voting. Este algoritmo é bastante parecido com o Bagging, porém<br />

ao invés <strong>de</strong> utilizar a técnica <strong>de</strong> bootstrapping, ele utiliza a técnica <strong>de</strong> disjunção.<br />

3. Algoritmo <strong>de</strong> comitê <strong>de</strong> comitês: MultiBoostAB [Webb 2000] – ele é uma<br />

extensão à técnica AdaBoost para a formação <strong>de</strong> comitês <strong>de</strong> <strong>de</strong>cisão. Este<br />

algoritmo po<strong>de</strong> ser visto como a combinação entre AdaBoost e Wagging [Webb<br />

2000]. Ele tem a capacida<strong>de</strong> <strong>de</strong> tirar proveito tanto do forte viés do AdaBoost<br />

quanto da redução <strong>de</strong> variância do Wagging.<br />

5. Base <strong>de</strong> Dados para Detecção <strong>de</strong> Intrusão<br />

A base <strong>de</strong> dados escolhida para aplicação dos algoritmos <strong>de</strong> classificação foi a DARPA<br />

KDDCUP’99. Ela é uma das poucas bases <strong>de</strong> dados <strong>de</strong> tráfego <strong>de</strong> re<strong>de</strong> disponíveis<br />

publicamente, <strong>de</strong>vido a questões <strong>de</strong> legalida<strong>de</strong>, privacida<strong>de</strong> e segurança, como discutido<br />

em [Paxson 2007]. Apesar <strong>de</strong> ter sido criada a mais <strong>de</strong> <strong>de</strong>z anos, ela é a base mais<br />

utilizada para testar Sistemas <strong>de</strong> Detecção <strong>de</strong> Intrusão baseados em anomalia (Anomalybased<br />

Intrusion Detection Systems) [Tavallaee et al. 2009]. Isso permite que nossa<br />

proposta seja comparada a outros trabalhos.<br />

Ela foi concebida através da simulação <strong>de</strong> um ambiente <strong>de</strong> uma re<strong>de</strong> militar da<br />

força aérea dos Estados Unidos (U.S. Air Force). A re<strong>de</strong> foi operada em um ambiente<br />

real, alimentada por conexões TCP dump, mas sendo bombar<strong>de</strong>ada por uma sequência<br />

<strong>de</strong> múltiplos ataques. Para cada conexão (sequência <strong>de</strong> pacotes TCP) foram extraídos 41<br />

atributos adicionados <strong>de</strong> um rótulo que i<strong>de</strong>ntifica se a conexão é do tipo normal ou um<br />

tipo <strong>de</strong> ataque, como mostrado em [Elkan 2000]. Os tipos <strong>de</strong> ataque <strong>de</strong>sta base <strong>de</strong> dados<br />

são agrupados nas seguintes categorias:<br />

• Probe: Nessa classe, os ataques se caracterizam por varrer a re<strong>de</strong><br />

automaticamente a procura informações ou vulnerabilida<strong>de</strong>s a serem exploradas.<br />

Ex.: port scanning e port sweep.<br />

• DoS (Denial of Service): Também chamado <strong>de</strong> ataque <strong>de</strong> negação <strong>de</strong> serviço, se<br />

caracteriza por <strong>de</strong>ixar um serviço ou re<strong>de</strong> parada ou muito lenta, Ex.: ping-of<strong>de</strong>ath<br />

e SYN flood.<br />

• U2R (User to root): Essa classe <strong>de</strong> ataques se caracteriza por iniciar o ataque<br />

como um usuário normal no sistema e explorar vulnerabilida<strong>de</strong>s para ganhar<br />

acesso <strong>de</strong> usuário root. Ex.: ataques buffer overflow.<br />

217


• R2L (Remote to Local): Chamado <strong>de</strong> ataque <strong>de</strong> usuário remoto, essa classe se<br />

caracteriza pelo envio <strong>de</strong> pacotes a uma máquina <strong>de</strong> uma re<strong>de</strong>, a partir daí são<br />

exploradas vulnerabilida<strong>de</strong>s da máquina para ganhar acesso ilegal <strong>de</strong> usuário<br />

local. Ex.: guessing password.<br />

A base <strong>de</strong> dados utilizada correspon<strong>de</strong> a 10% da base KDDCUP’99. Porém,<br />

alguns ajustes foram feitos. As alterações são semelhantes às realizadas por [Borji<br />

2007].<br />

Primeiramente, foram removidos os registros redundantes, que são uma das<br />

maiores <strong>de</strong>ficiências <strong>de</strong>sta base <strong>de</strong> dados por tornarem os algoritmos <strong>de</strong> classificação<br />

enviesados em relação aos registros frequentes [Tavallaee et al. 2009].<br />

Em seguida, 11.982 registros foram selecionados aleatoriamente para compor as<br />

bases <strong>de</strong> treino e teste [Mukkamala et al. 2005]. O número <strong>de</strong> registros selecionados <strong>de</strong><br />

cada classe é proporcional ao seu tamanho na base sem registros redundantes, com<br />

exceção da classe U2L que foi completamente incluída. A Tabela 2 apresenta a<br />

quantida<strong>de</strong> <strong>de</strong> registros por classe após o pré-processamento realizado.<br />

Tabela 2. Quantida<strong>de</strong> <strong>de</strong> registros por classe<br />

Base Normal Probe DoS U2R R2L Total<br />

Original (10%) 97.278 4.107 391.458 52 1.126 494.021<br />

Sem registros<br />

redundantes<br />

Com registros<br />

aleatórios<br />

87.832 2.131 54.572 52 999 145.586<br />

7.200 175 4.473 52 82 11.982<br />

Um número <strong>de</strong> 6.890 registros da base total (11.982) foi selecionado<br />

aleatoriamente para formar a base <strong>de</strong> teste e o resto (5.092) foi utilizado como base <strong>de</strong><br />

treino, como <strong>de</strong>scrito em [Mukkamala et al. 2005].<br />

Por fim, tipos <strong>de</strong> ataque (como buffer overflow, guessing password, etc.) foram<br />

mapeados para uma das cinco classes possíveis (0 para Normal, 1 para DoS, 2 para<br />

Probe, 3 para R2L, 4 para U2R), como <strong>de</strong>scrito em [Elkan 2000], <strong>de</strong> modo que a tarefa<br />

<strong>de</strong> classificação pu<strong>de</strong>sse ser realizada.<br />

6. Resultados e Discussão<br />

Os experimentos consistem em várias sessões <strong>de</strong> treinamento e teste. Na fase <strong>de</strong><br />

treinamento, os classificadores são construídos utilizando a base <strong>de</strong> treino. Em seguida,<br />

os dados <strong>de</strong> teste são introduzidos em cada classificador treinado, gerando uma<br />

classificação para cada fluxo <strong>de</strong> teste.<br />

Os valores <strong>de</strong> parâmetros padrão da ferramenta WEKA são utilizados para<br />

configuração <strong>de</strong> cada algoritmo. A única exceção é o algoritmo Naive Bayes, que foi<br />

configurado para utilizar Kernel Estimator para atributos numéricos, ao invés <strong>de</strong> uma<br />

distribuição normal. Esta alteração foi realizada por trazer diferenças significativas aos<br />

resultados <strong>de</strong>ste classificador.<br />

O <strong>de</strong>sempenho da tarefa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão foi avaliado por meio <strong>de</strong><br />

medidas padrão, tais como a taxa <strong>de</strong> <strong>de</strong>tecção (DR – Detection Rate) e a taxa <strong>de</strong> falsos<br />

218


positivos (FPR – False Positive Rate). Estas medidas são calculadas com as seguintes<br />

equações:<br />

TP<br />

DR = ×100%<br />

TP + FN<br />

(1)<br />

FPR =<br />

FP<br />

×100%<br />

FP + TN<br />

(2)<br />

On<strong>de</strong>, TP (True Positive) é a quantida<strong>de</strong> <strong>de</strong> conexões classificadas como ataques<br />

que realmente são ataques. FN (False Negative) é a quantida<strong>de</strong> <strong>de</strong> conexões<br />

classificadas como normais, quando na verda<strong>de</strong> são ataques. FP (False Positive) é a<br />

quantida<strong>de</strong> <strong>de</strong> conexões normais que são classificadas como ataque. TN (True Negative)<br />

é a quantida<strong>de</strong> <strong>de</strong> conexões classificadas como normais que são realmente normais.<br />

Mais <strong>de</strong>talhes sobre essas medidas po<strong>de</strong>m ser encontradas em [Osareh e Shadgar 2008].<br />

Devido à seleção aleatória dos registros das bases <strong>de</strong> dados testadas, <strong>de</strong>z<br />

iterações <strong>de</strong> treino-teste foram executadas para cada algoritmo. Isso minimiza o fator <strong>de</strong><br />

imprecisão e variação dos resultados obtidos nos experimentos. Para cada algoritmo o<br />

resultado apresentado é a média dos resultados obtidos nas <strong>de</strong>z iterações. É importante<br />

ressaltar que todos os algoritmos apresentaram <strong>de</strong>svios padrão inferiores a 0,5 para DR e<br />

FPR, os quais po<strong>de</strong>m ser consi<strong>de</strong>rados pequenos, visto que os valores <strong>de</strong> DR e FPR<br />

variam entre zero e 100. Isso nos permite concluir que a média é bastante representativa<br />

em relação aos resultados obtidos.<br />

A Tabela 3 apresenta o <strong>de</strong>sempenho dos três algoritmos do nível 1, aplicados<br />

individualmente na base <strong>de</strong> dados. Os resultados mostram que o algoritmo Random Tree<br />

apresenta o melhor <strong>de</strong>sempenho, possuindo a maior taxa <strong>de</strong> <strong>de</strong>tecção (DR) e a menor<br />

taxa <strong>de</strong> falsos positivos (FPR). Isso se <strong>de</strong>ve ao fato <strong>de</strong> que o Random Tree se trata <strong>de</strong><br />

uma árvore com base aleatória, capaz <strong>de</strong> obter bons resultados em uma base com uma<br />

gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> atributos, como é o caso do KDDCUP’99. O classificador Naive<br />

Bayes obteve os piores resultados, estando bastante distante dos outros algoritmos. Isso<br />

provavelmente se <strong>de</strong>ve ao fato <strong>de</strong>ste algoritmo não ser a<strong>de</strong>quado para bases com gran<strong>de</strong><br />

quantida<strong>de</strong> <strong>de</strong> atributos <strong>de</strong>vido à sua suposição <strong>de</strong> in<strong>de</strong>pendência (in<strong>de</strong>pen<strong>de</strong>nce<br />

assumption) [Rish 2001].<br />

Tabela 3. Desempenho dos classificadores do nível 1<br />

Random Tree J48 Naive Bayes<br />

Classes DR FPR DR FPR DR FPR<br />

Normal 99,53 0,87 99,58 1,10 99,20 5,65<br />

Probe 91,70 0,07 89,88 0,10 47,28 0,10<br />

DoS 99,66 0,26 99,63 0,19 97,25 0,44<br />

U2R 70,94 0,07 64,31 0,12 41,69 0,08<br />

R2L 81,36 0,11 76,41 0,09 25,82 0,31<br />

Total 99,25 0,61 99,16 0,73 97,00 3,58<br />

Ainda na Tabela 3, po<strong>de</strong>-se observar que todos os algoritmos obtém melhores<br />

resultados nas classes Normal, Probe e DoS. Isso ocorre porque essas classes possuem<br />

mais registros, portanto fornecem mais informações durante a formação do mo<strong>de</strong>lo <strong>de</strong><br />

219


cada algoritmo. Além disso, é difícil <strong>de</strong>finir características que i<strong>de</strong>ntifiquem bem os<br />

ataques do tipo U2R e R2L, portanto os atributos do KDDCUP’99 não favorecem a<br />

classificação <strong>de</strong>stes dois tipos <strong>de</strong> ataque [Lee et al.1999].<br />

A Tabela 4 apresenta o <strong>de</strong>sempenho dos classificadores no nível 2, cada um<br />

usando um algoritmo base diferente, como mostrado na Tabela 1. Observe que todos os<br />

algoritmos <strong>de</strong> comitê apresentam melhores resultados do que os algoritmos do nível 1.<br />

O algoritmo Random Forest apresenta o melhor <strong>de</strong>sempenho para ambas as DR e FPR.<br />

Já o algoritmo Dagging não foi capaz <strong>de</strong> prover uma melhora significativa na taxa <strong>de</strong><br />

<strong>de</strong>tecção do Naive Bayes, porém foi capaz <strong>de</strong> reduzir a taxa <strong>de</strong> falsos positivos<br />

consi<strong>de</strong>ravelmente. Estes resultados sugerem que algoritmos <strong>de</strong> comitê são a melhor<br />

abordagem para prover alta taxa <strong>de</strong> <strong>de</strong>tecção e baixa taxa <strong>de</strong> falsos positivos. Isto<br />

acontece, <strong>de</strong>vido à função complementar <strong>de</strong> cada mo<strong>de</strong>lo utilizado no comitê, pois a<br />

aleatorieda<strong>de</strong> gerada pelos classificadores <strong>de</strong> comitê para cada mo<strong>de</strong>lo os torna<br />

significantemente diferentes uns dos outros [Witten e Frank 2005].<br />

Tabela 4. Desempenho dos três classificadores do nível 2<br />

Random Forest Bagging Dagging<br />

Classes DR FPR DR FPR DR FPR<br />

Normal 99,88 0,66 99,71 1,04 98,43 4,59<br />

Probe 93,06 0,00 91,68 0,04 60,83 0,09<br />

DoS 99,89 0,13 99,68 0,18 97,66 0,48<br />

U2R 79,39 0,02 63,57 0,07 26,10 0,01<br />

R2L 82,04 0,03 76,16 0,06 53,57 0,75<br />

Total 99,59 0,44 99,30 0,69 97,03 2,95<br />

Na Tabela 5, temos o resultado dos algoritmos do nível 3 (aplicados aos<br />

algoritmos do nível 2). É possível observar que o algoritmo Random Committee obteve<br />

o melhor <strong>de</strong>sempenho. Nota-se ainda que, todos os algoritmos do nível 3, melhoraram<br />

os resultados do nível dois, mostrando que é interessante acrescentar mais um nível <strong>de</strong><br />

comitê à classificação.<br />

Tabela 5. Desempenho dos três classificadores do nível 3<br />

Rand. Committee AdaBoost.M1 MultiBoostAB<br />

Classes DR FPR DR FPR DR FPR<br />

Normal 99,90 0,47 99,82 0,53 98,62 3,81<br />

Probe 95,24 0,00 97,50 0,00 69,72 0,06<br />

DoS 99,95 0,07 99,89 0,07 98,01 0,39<br />

U2R 82,86 0,03 80,81 0,05 46,11 0,08<br />

R2L 87,26 0,02 85,46 0,02 55,96 0,62<br />

Total 99,70 0,31 99,64 0,36 97,47 2,43<br />

220


A Tabela 6 apresenta o percentual <strong>de</strong> melhoria (aumento para DR e queda para<br />

FPR) alcançado após a aplicação dos classificadores <strong>de</strong> comitê. No nível 2, o algoritmo<br />

Random Forest apresentou os melhores índices <strong>de</strong> melhoria (aumento <strong>de</strong> 0,34% para<br />

DR e queda <strong>de</strong> 27,87% para FPR em relação ao nível 1). Já no nível 3, o algoritmo<br />

MultiBoostAB foi o que mais aperfeiçoou a taxa <strong>de</strong> <strong>de</strong>tecção (aumento 0,45% em<br />

relação ao nível 2) e o AdaBoostM.1 foi o que obteve melhor ganho em relação à taxa<br />

<strong>de</strong> falsos positivos (queda <strong>de</strong> 47,83% em relação ao nível 2). Observe ainda que o nível<br />

3 apresentou os melhores índices <strong>de</strong> melhoria, <strong>de</strong>monstrando que utilizar um comitê <strong>de</strong><br />

comitês é bastante vantajoso para a tarefa em questão.<br />

Medida<br />

DR – Taxa <strong>de</strong><br />

aumento<br />

FPR – Taxa <strong>de</strong><br />

queda<br />

Tabela 6. Percentual <strong>de</strong> melhoria no <strong>de</strong>sempenho total em cada nível <strong>de</strong><br />

comitês em relação ao anterior<br />

Random<br />

Forest<br />

Nível 2 Nível 3<br />

Bagging<br />

Dagging<br />

Random<br />

Committee<br />

AdaBoost.<br />

M1<br />

MultiBoost<br />

AB<br />

0,34 % 0,14 % 0,03 % 0,11 % 0,34 % 0,45 %<br />

27,80 % 5,48 % 17,60 % 29,55 % 47,83 % 17,63 %<br />

No entanto, a utilização do terceiro nível traz uma <strong>de</strong>svantagem em relação ao<br />

custo computacional, pois seu tempo <strong>de</strong> treinamento é maior do que nos outros dois<br />

níveis. Entretanto, esse custo adicional po<strong>de</strong> ser compensado para sistemas em que a<br />

segurança é crítica. Além disso, a fase <strong>de</strong> treinamento é realizada apenas na parte inicial<br />

da tarefa <strong>de</strong> <strong>de</strong>tecção. Portanto, após o mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>tecção ter sido criado na fase <strong>de</strong><br />

treinamento, as <strong>de</strong>tecções seguintes são realizadas <strong>de</strong> maneira mais rápida, com tempo<br />

<strong>de</strong> processamento próximo ao dos outros níveis.<br />

Na Tabela 7, é apresentado um comparativo entre os algoritmos <strong>de</strong> comitê<br />

abordados neste trabalho e os métodos <strong>de</strong> combinação apresentados na proposta <strong>de</strong><br />

[Borji 2007]. O <strong>de</strong>sempenho dos métodos abordados por [Borji 2007] são próximos aos<br />

obtidos neste trabalho, com uma diferença elevada apenas no MultiBoostAB que mesmo<br />

melhorando o <strong>de</strong>sempenho do Naive Bayes, não foi capaz <strong>de</strong> mostrar resultados<br />

comparáveis aos <strong>de</strong>mais algoritmos. Entre todos os métodos utilizados, o algoritmo<br />

Random Committee, abordado neste trabalho, apresentou o melhor <strong>de</strong>sempenho,<br />

obtendo resultados melhores que o método Belief Function, principalmente em relação à<br />

taxa <strong>de</strong> falsos positivos.<br />

Medida<br />

Tabela 7. Comparativo com resultados obtidos por [Borji 2007]<br />

Classificação em três níveis<br />

Random<br />

Committee<br />

AdaBoost.<br />

M1<br />

MultiBoost<br />

AB<br />

Majority<br />

Voting<br />

Borji<br />

Bayesian<br />

Average<br />

Belief<br />

Function<br />

DR 99,70 99,64 97,47 99,18 99,33 99,68<br />

FPR 0,31 0,36 2,47 1,20 1,03 0.87<br />

Apesar da taxa <strong>de</strong> <strong>de</strong>tecção do método Belief Function estar bastante próxima do<br />

Random Committee, os resultados obtidos neste trabalho são mais precisos, visto que<br />

221


foram calculados a partir da média <strong>de</strong> <strong>de</strong>z experimentos, <strong>de</strong> modo a diminuir a chance<br />

<strong>de</strong> se utilizar uma base <strong>de</strong> dados enviesada. No trabalho <strong>de</strong> [Borji 2007] não é<br />

especificado se foi realizado mais <strong>de</strong> um experimento com bases aleatórias diferentes ou<br />

se apenas uma foi utilizada. Também não foram apresentadas DR e FPR para cada<br />

classe <strong>de</strong> <strong>de</strong>tecção.<br />

A Tabela 8 mostra o <strong>de</strong>sempenho do melhor resultado obtido pelo mo<strong>de</strong>lo em<br />

três níveis comparado aos melhores resultados dos trabalhos <strong>de</strong> [Abraham et al. 2007] e<br />

[Zainal et al. 2008]. O Random Committee apresenta melhor DR para as classes normal<br />

e DoS. Já a proposta <strong>de</strong> [Zainal et al. 2008] apresenta melhor FPR. Observe que as<br />

propostas dos outros autores não apresentam DR e FPR para a <strong>de</strong>tecção da base <strong>de</strong><br />

dados total, apenas para cada classe. Além disso, as taxas <strong>de</strong> falsos positivos <strong>de</strong><br />

[Abraham et al. 2007] não são mostradas porque ele as calculou utilizando uma outra<br />

fórmula, portanto não po<strong>de</strong>m ser comparadas.<br />

É importante ressaltar que os resultados apresentados por [Abraham et al. 2007]<br />

e [Zainal et al. 2008] se baseiam em apenas um experimento, diferente da nossa<br />

proposta, que foi baseada em <strong>de</strong>z experimentos, sendo, portanto, mais confiável.<br />

Tabela 8. Comparativo <strong>de</strong> <strong>de</strong>tecção com outras propostas<br />

Rand. Committee Abraham et al. Zainal et al.<br />

Classes DR FPR DR FPR DR FPR<br />

Normal 99,90 0,47 99,60 - 99,71 0,29<br />

Probe 95,24 0,00 99,90 - 99,14 0,00<br />

DoS 99,95 0,07 91,80 - 97,43 0,00<br />

U2R 82,86 0,03 43,70 - 88,00 0,00<br />

R2L 87,26 0,02 98,90 - 98,58 0,00<br />

7. Consi<strong>de</strong>rações Finais<br />

A utilização <strong>de</strong> técnicas automáticas <strong>de</strong> <strong>de</strong>tecção por anomalia reduz ou elimina a<br />

necessida<strong>de</strong> <strong>de</strong> intervenção humana, tornado o sistema capaz <strong>de</strong> analisar o tráfego <strong>de</strong><br />

re<strong>de</strong>s em busca <strong>de</strong> ataques, <strong>de</strong> maneira muito mais rápida e precisa. Os trabalhos<br />

recentes <strong>de</strong> <strong>de</strong>tecção apresentam a importância da utilização <strong>de</strong> comitês <strong>de</strong><br />

classificadores para aumentar o <strong>de</strong>sempenho da <strong>de</strong>tecção <strong>de</strong> intrusão.<br />

Este trabalho apresenta um mo<strong>de</strong>lo <strong>de</strong> classificação em três níveis, que realiza<br />

um comitê <strong>de</strong> comitês <strong>de</strong> classificadores. Os experimentos realizados <strong>de</strong>monstram que<br />

esse mo<strong>de</strong>lo em três níveis apresenta melhores resultados do que (1) a aplicação<br />

individual <strong>de</strong> algoritmos e (2) aplicação <strong>de</strong> apenas um nível <strong>de</strong> comitê. Quando<br />

comparado com outras propostas, o mo<strong>de</strong>lo mostrou-se superior em vários aspectos. No<br />

entanto, é importante notar que a aplicação <strong>de</strong> um terceiro nível <strong>de</strong> classificação exige<br />

uma maior quantida<strong>de</strong> <strong>de</strong> processamento, aumentando o tempo para realizar a<br />

classificação. Isso po<strong>de</strong> tornar o mo<strong>de</strong>lo inviável para bases <strong>de</strong> dados muito gran<strong>de</strong>s.<br />

Entretanto, o mo<strong>de</strong>lo é a<strong>de</strong>quado para sistemas que requerem alto nível <strong>de</strong> precisão na<br />

<strong>de</strong>tecção ou que possuem uma quantida<strong>de</strong> média <strong>de</strong> dados a serem analisados.<br />

222


Como trabalhos futuros, é interessante investigar um mo<strong>de</strong>lo capaz <strong>de</strong> melhorar<br />

o <strong>de</strong>sempenho da <strong>de</strong>tecção para as classes <strong>de</strong> ataque R2L e U2L. Também é importante<br />

testar a metodologia proposta em outras bases <strong>de</strong> dados para avaliar a sua robustez ou<br />

até mesmo em uma base <strong>de</strong> dados gerada a partir <strong>de</strong> tráfego real, como sugerido por<br />

[Paxson 2007], visto que os tipos <strong>de</strong> ataque <strong>de</strong> hoje diferem dos existentes na base<br />

KDDKUP’99.<br />

Referências<br />

Abraham, A., Grosan, C. and Vi<strong>de</strong>, C. M. (2007). Evolutionary Design of Intrusion<br />

Detection Programs. In International Journal of Network Security, pages 328-339.<br />

Borji, A. (2007). Combining Heterogeneous Classifiers for Network Intrusion<br />

Detection. In Lecture Notes in Computer Science, Volume 4846, pages 254-260.<br />

Springer.<br />

Breiman, L. (1996). Bagging Predictors. In Machine Learning 24(3), pages 123–140.<br />

Breiman, L. (2001). Random Forests. In Journal of Machine Learning, Vol.45, pages 5-<br />

32. Kluwer Aca<strong>de</strong>mic, Netherland.<br />

Chou, T. , Fan, J., Fan, S. and Makki, K. (2009). Ensemble of machine learning<br />

algorithms for intrusion <strong>de</strong>tection. In Systems, Man and Cybernetic, pages 3976-<br />

3980.<br />

Debar, H., Dacier, M. and Wespi, A. (2000).A Revised Taxonomy for Intrusion<br />

Detection Systems. Annals of Telecommunications, pages 361-378.<br />

Elkan, C. (2000). Results of the KDD’99 Classifier Learning. In SIGKDD Explorations,<br />

ACM SIGKDD.<br />

Freund, Y. and Schapire, R. E. (1996). Experiments with a new boosting algorithm. In<br />

Thirteenth International Conference on Machine Learning, pages 148-156.<br />

Geurts, P., Ernst, D. and Wehenkel, L. (2006). Extremely randomized trees. In Machine<br />

Learning, Vol. 63, pages 3-42.<br />

Hall, M., Frank, E., Holmes, G., Pfahringer, B., Reutemann, P. and Witten, I. H. (2009).<br />

The WEKA Data Mining Software: An Update. In SIGKDD Explorations, Volume<br />

11, Issue 1.<br />

John, G. H. and Langley, P. (1995). Estimating Continuous Distributions in Bayesian<br />

Classifiers. In Eleventh Conference on Uncertainty in Artificial Intelligence, pages<br />

338-345.<br />

Kuncheva, L. I. (2004). Combining Pattern Classifiers: Methods and Algorithms. John<br />

Wiley & Sons, Inc.<br />

Lazarevic, A., Ertoz, L., Kumar, V., Ozgur, A. and Srivastava, J. (2003). A comparative<br />

study of anomaly <strong>de</strong>tection schemes in network intrusion <strong>de</strong>tection. In Proceedings of<br />

the Third SIAM Conference on Data Mining.<br />

Lee, W., Stolfo, S. J. and Mok, K. W. (1999). A Data Mining Framework for Building<br />

Intrusion Detection Mo<strong>de</strong>ls. In IEEE Symposium on Security and Privacy, pages.<br />

120-132.<br />

223


Lira, M. M. S., <strong>de</strong> Aquino, R. R. B., Ferreira, A. A., Carvalho, M. A., Neto, O. N. and<br />

Santos, G. S. M. (2007). Combining Multiple Artificial Neural Networks Using<br />

Random Committee to Deci<strong>de</strong> upon Electrical Disturbance Classification. In<br />

International Joint Conference on Neural Networks, pages 2863 - 2868.<br />

Mafra, P. M., Fraga, J. da S., Moll, V., Santin, A. O. (2008). Polvo-IIDS: Um Sistema<br />

<strong>de</strong> Detecção <strong>de</strong> Intrusão Inteligente Baseado em Anomalias. In VIII Simpósio<br />

Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais (SBSEG'08),<br />

pages 61-72.<br />

Mukkamala, S., Hung, A.H. and Abraham, A. (2005). Intrusion Detection Using an<br />

Ensemble of Intelligent Paradigms. In Journal of Network and Computer<br />

Applications, Vol. 28, pages 167-182."<br />

Osareh, A. and Shadgar, B. (2008).Intrusion Detection in Computer Networks based on<br />

Machine Learning Algorithms. In International Journal of Computer Science and<br />

Network Security, VOL.8 No.11, pages 15-23.<br />

Paxson V. (2007). Consi<strong>de</strong>rations and Pitfalls for Conducting Intrusion Detection<br />

Research. Keynote, Fourth GI International Conference on Detection of Intrusions &<br />

Malware, and Vulnerability Assessment (DIMVA).<br />

Quinlan, R. (1993). C4.5: Programs for Machine Learning. Morgan Kaufmann<br />

Publishers, San Mateo, CA.<br />

Rish, I. (2001). An empirical study of the naive Bayes classifier. In workshop on<br />

Empirical Methods in AI.<br />

Stallings, W. (2005). Cryptography and Network Security Principles and Practices.<br />

Prentice Hall, 4th edition.<br />

Tavallaee, M., Bagheri, E., Lu, W. and Ghorbani, A. A. (2009). A Detailed Analysis of<br />

the KDD CUP 99 Data Set. In Proceedings of the Second IEEE Symposium on<br />

Computational Intelligence in Security and Defense Applications,pages 53-58.<br />

Ting, K. M. and Witten, I. H. (1997). Stacking Bagged and Dagged Mo<strong>de</strong>ls. In<br />

Fourteenth international Conference on Machine Learning, pages 367-375.<br />

Webb, G. I. (2000). MultiBoosting: A Technique for Combining Boosting and<br />

Wagging. Machine Learning. Vol.40(No.2).<br />

Witten, I. H. and Frank, E. (2005). Data Mining: Pratical Machine Learning Tools and<br />

Techniques. Morgan Kaufmann Publishers, 2th Edition.<br />

Zai-an, R., Bin, W., Shi-ming, Z., Zhuang, M. and Rong-ming, S. (2010). A WSRFenabled<br />

Distributed Data Mining Approach to Clustering WEKA4WS-Based. In<br />

Proceedings of IEEE Second Symposium on Web Society (SWS), pages 219-226.<br />

Zainal, A., Maarof, M.A., Shamsuddin, S.M. and Abraham, A. (2008). Ensemble of<br />

One-class Classifiers for Network Intrusion Detection System. In Proceedings of<br />

Fourth International Conference on Information Assurance and Security, pages 180-<br />

185.<br />

224


Static Detection of Address Leaks<br />

Gabriel Quadros Silva and Fernando Magno Quintão Pereira<br />

1<br />

Departamento <strong>de</strong> Ciência da Computação – UFMG<br />

Av. Antônio Carlos, 6627 – 31.270-010 – Belo Horizonte – MG – Brazil<br />

{gabrielquadros,fpereira}@dcc.ufmg.br<br />

Abstract. Taint analysis is a form of program analysis that <strong>de</strong>termines if values<br />

produced by unsafe sources might flow into sensitive functions. In this paper<br />

we use taint analysis to establish if an adversary might discover the address<br />

of any program variable at runtime. The knowledge of an internal program<br />

address seems, in principle, a harmless information; however, it gives a malicious<br />

user the means to circumvent a protection mechanism known as address<br />

space layout randomization, typically used in mo<strong>de</strong>rn operating systems to hin<strong>de</strong>r<br />

buffer overflow attacks, for instance. We <strong>de</strong>part from previous taint analyses<br />

because we also track indirect information leaks, in which confi<strong>de</strong>ntial data is<br />

first stored in memory, from where it flows into some sensitive operation. We<br />

have implemented our analysis into the LLVM compiler and have used it to report<br />

204 warnings in a test suite that contains over 1.3 million lines of C co<strong>de</strong>,<br />

and inclu<strong>de</strong>s traditional benchmarks such as SPEC CPU 2006. Our current implementation<br />

reduces by more than 14 times the number of sensitive operations<br />

that a <strong>de</strong>veloper would have to inspect in or<strong>de</strong>r to find address leaks manually.<br />

Furthermore, our analysis is remarkably efficient: it has been able to process<br />

more than 8.2 million assembly instructions in 19.7 seconds!<br />

1. Introduction<br />

There seems to exist an “arms race” between program <strong>de</strong>velopers and malicious users, or<br />

crackers, as they are popularly called. Every day we hear about new strategies that are<br />

invented to attack sensitive software, and every day we hear about new security mechanisms<br />

that are engineered to protect these systems. Buffer overflows are a very well known<br />

technique that untrusted co<strong>de</strong> uses to compromise other programs. Its basic principle consists<br />

in writing on an array a quantity of data large enough to go past the array’s upper<br />

bound; hence, overwriting other program data. The Internet Worm of 1988, probably the<br />

most famous case of viral spreading of malicious software in the Internet, exploited a<br />

buffer overflow in the fingerd daemon [Rochlis and Eichin 1989]. To prevent buffer<br />

overflows exploits, operating system engineers have invented a technique called address<br />

space layout randomization [Bhatkar et al. 2003, Shacham et al. 2004], that consists in<br />

loading some key areas of a process at random locations in its address space. In this<br />

way, the attacker cannot calculate precisely the target addresses that must be used to take<br />

control of the vulnerable program.<br />

However, crackers are able to circumvent the address randomization mechanism,<br />

as long as they can have access to an internal program address. Armed with this knowledge,<br />

malicious users can estimate the exact base address of the functions available to the<br />

executing program, an information that gives them a vast suite of possibilities to compromise<br />

this program [Levy 1996]. A cracker can discover an internal program address in<br />

225


many different ways. For instance, many applications contain <strong>de</strong>bugging co<strong>de</strong> that dumps<br />

runtime information, including variable addresses. By using the correct flags, the attacker<br />

may easily activate this dumping. Fancier strategies, of course, are possible. In some<br />

object oriented systems the hash co<strong>de</strong> of an object is a function of the object’s address. If<br />

the hash-function admits an inverse function, and this inverse is known, then the attacker<br />

may obtain this address by simply printing the object’s hash co<strong>de</strong>.<br />

The objective of this paper is to <strong>de</strong>scribe a static co<strong>de</strong> analysis that <strong>de</strong>tects the<br />

possibility of an address information leaking from a program. Our technique is a type of<br />

taint analysis [Rimsa et al. 2011], that is, given a set of source operations, and a set of<br />

sink operations, it finds a flow of information from any source to any sink. We differ from<br />

previous works in two ways: first, we are proposing a novel use of taint analysis; second,<br />

we <strong>de</strong>al with indirect leaks. Concerning the first difference, the leaking of address information<br />

is a problem well known among software engineers, as a quick glance at blogs<br />

related to computer security would reveal 1 . Nevertheless, in spite of the importance of<br />

this problem, the research community has not yet pointed its batteries at it, as we can<br />

infer from a lack of publications in the field. In addition to exploring a new use of taint<br />

analysis, we extend the information flow technology with a method to track indirect leaks.<br />

An indirect leak consists in storing sensitive information in memory, and then reading this<br />

information back into local program variables whose contents eventually reach a sink operation.<br />

As recently discussed in the USENET 2 , <strong>de</strong>velopers and theoreticians alike avoid<br />

having to track information through the memory heap because it tends to be very costly<br />

in terms of processing time. However, by relying on a context insensitive interprocedural<br />

analysis we claim to provi<strong>de</strong> an acceptable tra<strong>de</strong>off between efficiency and precision.<br />

We have implemented our analysis on top of the LLVM compiler<br />

[Lattner and Adve 2004], and have used it on a collection of C programs comprising over<br />

1.3 million lines of co<strong>de</strong>. This test suite inclu<strong>de</strong>s well-known benchmarks such as SPEC<br />

CPU 2006, Shootout and MediaBench. Our implementation has reported 204 potential<br />

address leaks. We have manually inspected 16 reports taken from the 16 largest programs<br />

in our benchmark suite, and have been able to recover 2 actual program addresses.<br />

Although this number seems low, we remark that our analysis reduced by 14 times the<br />

number of sensitive statements that a <strong>de</strong>veloper would have to verify in or<strong>de</strong>r to find address<br />

leaks. Our implementation is very efficient: it takes about 19.7 seconds to process<br />

our entire test suite – a collection of programs having over 8.26 million assembly instructions.<br />

As an example, in or<strong>de</strong>r to analyze gcc, a well known member of SPEC CPU<br />

2006, with 1,155,083 assembly instructions, our implementation takes 2.62 seconds.<br />

The rest of this paper is organized in five other sections. In Section 2 we explain<br />

in more <strong>de</strong>tails why address leaks enable malicious users to successfully attack programs.<br />

In Section 3 we introduce our solution and discuss its limitations. We show experimental<br />

results in Section 4. Section 5 discusses several works that are related to ours. Finally,<br />

Section 6 conclu<strong>de</strong>s the paper.<br />

1 http://mariano-graziano.llab.it/docs/stsi2010.pdf<br />

http://www.semantiscope.com/research/BHDC2010/BHDC-2010-Paper.pdf<br />

http://vreug<strong>de</strong>nhilresearch.nl/Pwn2Own-2010-Windows7-InternetExplorer8.pdf<br />

2 http://groups.google.com/group/comp.compilers/browse thread/thread/<br />

1eb71c1177e2c741<br />

226


2. Background<br />

A buffer, also called an array or vector, is a contiguous sequence of elements stored in<br />

memory. Some programming languages, such as Java, Python and JavaScript are strongly<br />

typed, which means that they only allow combinations of operations and operands that<br />

preserve the type <strong>de</strong>claration of these operands. As an example, all these languages provi<strong>de</strong><br />

arrays as built-in data structures, and they verify if in<strong>de</strong>xes are within the <strong>de</strong>clared<br />

bounds of these arrays. There are other languages, such as C or C++, which are weakly<br />

typed. They allow the use of variables in ways not predicted by the original type <strong>de</strong>claration<br />

of these variables. C or C++ do not check array bounds, for instance. Thus, one can<br />

<strong>de</strong>clare an array with n cells in any of these languages, and then read the cell at position<br />

n+1. This <strong>de</strong>cision, motivated by efficiency [Stroustrup 2007], is the reason behind an uncountable<br />

number of worms and viruses that spread on the Internet [Bhatkar et al. 2003].<br />

Programming languages normally use three types of memory allocation regions:<br />

static, heap and stack. Global variables, runtime constants, and any other data known at<br />

compile time usually stays in the static allocation area. Data structures created at runtime,<br />

that outlive the lifespan of the functions where they were created are placed on the<br />

heap. The activation records of functions, which contain, for instance, parameters, local<br />

variables and return address, are allocated on the stack. In particular, once a function is<br />

called, its return address is written in a specific position of its activation record. After the<br />

function returns, the program resumes its execution from this return address.<br />

Program Stack<br />

Co<strong>de</strong> Segment<br />

void function(char* str) {<br />

char buffer[16];<br />

strcpy(buffer,str);<br />

}<br />

void main() {<br />

...<br />

function(evil_str);<br />

...<br />

}<br />

evil_str: Hand crafted malicious input<br />

Local<br />

variables:<br />

Frame<br />

pointer<br />

Return<br />

address<br />

Function<br />

Parameters<br />

str buffer . . .<br />

. . .<br />

Filling garbage<br />

Evil args<br />

. . .<br />

...<br />

...<br />

. . . . . .<br />

<br />

push evil_str<br />

call <br />

<br />

Figure 1. An schematic example of a stack overflow. The return address of<br />

function is diverted by a maliciously crafted input to another procedure.<br />

A buffer overflow consists in writing in a buffer a quantity of data large enough to<br />

go past the buffer’s upper bound; hence, overwriting other program or user data. It can<br />

happen in the stack or in the heap. In the stack overflow scenario, by carefully crafting this<br />

input string, one can overwrite the return address in a function’s activation record; thus,<br />

diverting execution to another co<strong>de</strong> area. The first buffer overflow attacks inclu<strong>de</strong>d the<br />

co<strong>de</strong> that should be executed in the input array [Levy 1996]. However, mo<strong>de</strong>rn operating<br />

systems mark writable memory addresses as non-executable – a protection mechanism<br />

227


known as Read⊕Write [Shacham et al. 2004, p.299]. Therefore, attackers tend to divert<br />

execution to operating system functions such as chmod or sh, if possible. Usually the<br />

malicious string contains also the arguments that the cracker wants to pass to the sensitive<br />

function. Figure 1 illustrates an example of buffer overflow.<br />

A buffer overflow vulnerability gives crackers control over the compromised program<br />

even when the operating system does not allow function calls outsi<strong>de</strong> the memory<br />

segments allocated to that program. Attackers can call functions from libc, for instance.<br />

This library, which is share-loa<strong>de</strong>d in every UNIX system, allows users to fork processes<br />

and to send packets over a network, among other things. This type of attack is called<br />

return to libc [Shacham et al. 2004]. Return to libc attacks have been further generalized<br />

to a type of attack called return-oriented-programming (ROP) [Shacham 2007].<br />

If a binary program is large enough, then it is likely to contain many bit sequences that<br />

enco<strong>de</strong> valid instructions. Hovav Shacham [Shacham 2007] has shown how to <strong>de</strong>rive a<br />

Turing complete language from these sequences in a CISC machine, and Buchanan et<br />

al. [Buchanan et al. 2008] have generalized this method to RISC machines.<br />

There exist ways to prevent these types of “return-to-known-co<strong>de</strong>” attacks. The<br />

best known <strong>de</strong>fense mechanism is address obfuscation [Bhatkar et al. 2003]. A compiler<br />

can randomize the location of functions insi<strong>de</strong> the binary program, or the operating<br />

system can randomize the virtual address of shared libraries. Shacham et<br />

al. [Shacham et al. 2004] have shown that these methods are susceptible to brute force<br />

attacks; nevertheless, address obfuscation slows down the propagation rate of worms that<br />

rely on buffer overflow vulnerabilities substantially. Address obfuscation is not, however,<br />

the ultimate <strong>de</strong>fense mechanism. In the words of the original <strong>de</strong>signers of the technique<br />

[Bhatkar et al. 2003, p.115], if “the program has a bug which allows an attacker to<br />

read the memory contents”, then “the attacker can craft an attack that succeeds <strong>de</strong>terministically”.<br />

It is this very type of bug that we try to <strong>de</strong>tect in this paper.<br />

3. The Proposed Solution<br />

We <strong>de</strong>tect address leaks via a three steps process. Firstly, we convert the program to a<br />

suitable normal form, in which every language construct that is interesting to us is converted<br />

to a few constraints. Secondly, we build a <strong>de</strong>pen<strong>de</strong>nce graph out of the constraints<br />

previously <strong>de</strong>fined. Finally, we perform a <strong>de</strong>pth-first search on this <strong>de</strong>pen<strong>de</strong>nce graph to<br />

report leaks. We explain in more <strong>de</strong>tails each of these steps in this section.<br />

3.1. Converting the Source Program to a Normal Form<br />

We use a constraint system to <strong>de</strong>tect address leaks. In or<strong>de</strong>r to represent the five different<br />

types of constraints that we take into consi<strong>de</strong>ration, we <strong>de</strong>fine a simple constraint language,<br />

whose syntax is given in Figure 2. We produce these constraints out of actual C or<br />

C++ programs, as the table in Figure 3 illustrates. We use getad to mo<strong>de</strong>l language constructs<br />

that read the address of a variable, namely the ampersand (&) operator and memory<br />

allocation functions such as malloc, calloc or realloc. Program expressions that<br />

do not inclu<strong>de</strong> any memory address are mo<strong>de</strong>led via the constraint simop, a short name<br />

for simple operation. Loads to and stores from memory are mo<strong>de</strong>led by ldmem and<br />

stmem. Finally, we use print to <strong>de</strong>note any instruction that gives information away<br />

to an external user. This constraint mo<strong>de</strong>ls not only ordinary printing operations, but<br />

228


(Variables) ::= {v 1 , v 2 , . . .}<br />

(Constraints) ::=<br />

– (Assign variable address) ∣ getad(v 1 , v 2 )<br />

– (Simple variable assignment) ∣ simop(v, {v 1 , . . . , v n })<br />

– (Store into memory) ∣ stmem(v 0 , v 1 )<br />

– (Load from memory) ∣ ldmem(v 1 , v 0 )<br />

– (Print the variable’s value) ∣ print(v)<br />

Figure 2. The syntax of our constraint system.<br />

v1 = &v2 getad(v 1 , v 2 )<br />

v1 = (int*)malloc(sizeof(int)) getad(v 1 , v 2 ) where<br />

v 2 is a fresh memory location<br />

v1 = *v0 ldmem(v 1 , v 0 )<br />

*v0 = v1 stmem(v 0 , v 1 )<br />

*v1 = *v0 ldmem(v 2 , v 0 ), where v 2 is fresh<br />

stmem(v 1 , v 2 )<br />

v = v1 + v2 + v3 simop(v, {v 1 , v 2 , v 3 })<br />

*v = v1 + &v2 getad(v 3 , v 2 ), where v 3 is fresh<br />

simop(v 4 , {v 1 , v 3 }), where v 4 is fresh<br />

stmem(v, v 4 )<br />

f(v1, &v3), where f is <strong>de</strong>clared simop(v 2 , {v 1 })<br />

as f(int v2, int* v4); getad(v 4 , v 3 )<br />

Figure 3. Examples of mappings between actual program syntax and constraints.<br />

also native function interfaces, which would allow a malicious JavaScript file to obtain an<br />

internal address from the interpreter, for instance.<br />

We have <strong>de</strong>signed our analysis to work on programs in Static Single Assignment<br />

form. This is a classic compiler intermediate representation [Cytron et al. 1991] in which<br />

each variable name is <strong>de</strong>fined only once. Virtually every mo<strong>de</strong>rn compiler today uses<br />

the SSA form to represent programs internally, including Java HotSpot [Team 2006],<br />

gcc [Gough 2005] and LLVM [Lattner and Adve 2004], the compiler on top of which<br />

we have implemented our algorithms. The single static assignment property, i.e., the<br />

fact that each variable name is unique across the entire program, is essential to allow us<br />

to bind to each variable the state of being trusted or untrusted. Because we provi<strong>de</strong> an<br />

interprocedural analysis, i.e., we analyze whole programs, we assume global SSA form.<br />

In other words, each variable name is unique in the entire program, not only insi<strong>de</strong> the<br />

scope where that variable exists. In practice we obtain global SSA form by prefixing each<br />

variable name with the name of the function where that variable is <strong>de</strong>fined.<br />

229


[EMPTY]<br />

build edges(∅, P t ) = ∅<br />

[EDGES]<br />

build edges(C, P t ) = E proc con(c, P t ) = E ′<br />

build edges(C ∪ {c}, P t ) = E ∪ E ι<br />

[GETAD] proc con(getad(v 1 , v 2 ), P t ) = {val(v 1 ) → addr(v 2 ))}<br />

[PRINT]<br />

proc con(print(v), P t ) = {sink → val(v)}<br />

[SIMOP] proc con(simop(v, {v 1 , . . . , v n }), P t ) = {val(v) → val(v i ) ∣ 1 ≤ i ≤ n}<br />

[STMEM] proc con(stmem(v 0 , v 1 ), P t ) = {val(v) → val(v 1 ) ∣ v 0 ↦ v ∈ P t }<br />

[LDMEM] proc con(ldmem(v 1 , v 0 ), P t ) = {val(v 1 ) → val(v) ∣ v 0 ↦ v ∈ P t }<br />

Figure 4. Recursive <strong>de</strong>finition of the edges in the memory <strong>de</strong>pen<strong>de</strong>nce graph.<br />

3.2. Building the Memory Depen<strong>de</strong>nce Graph<br />

Once we extract constraints from the target C program, we proceed to build a memory<br />

<strong>de</strong>pen<strong>de</strong>nce graph. This – directed – graph is a data structure that represents the patterns<br />

of <strong>de</strong>pen<strong>de</strong>nces between variables. If P is a target program, and G = (V, E) is P ’s<br />

<strong>de</strong>pen<strong>de</strong>nce graph, then for each variable v ∈ P we <strong>de</strong>fine two vertices: a value vertex,<br />

which we <strong>de</strong>note by val(v) ∈ V and an address vertex, which we represent by addr(v) ∈<br />

V . We say that location v 1 <strong>de</strong>pends on location v 0 if v 0 is necessary to build the value of<br />

v 1 . In actual programs such <strong>de</strong>pen<strong>de</strong>nces happen any time v 0 <strong>de</strong>notes a value used in an<br />

instruction that <strong>de</strong>fines v 1 , or, recursively, v 0 <strong>de</strong>notes a value used in an instruction that<br />

<strong>de</strong>fines a variable v 2 such that v 1 <strong>de</strong>pends upon v 2 .<br />

More formally, given a set C of constraints that follow the syntax in Figure 2,<br />

we <strong>de</strong>fine the memory <strong>de</strong>pen<strong>de</strong>nce graph via the function build edges, shown in Figure<br />

4. The only constraint that produces edges pointing to address no<strong>de</strong>s is getad, as<br />

we show in Rule GETAD in Figure 4. If v 1 is <strong>de</strong>fined by an instruction that reads the<br />

address of variable v 2 , then we insert an edge val(v 1 ) → addr(v 2 ) into E. The memory<br />

<strong>de</strong>pen<strong>de</strong>nce graph has a special no<strong>de</strong>, which we call sink. Edges leaving sink<br />

towards value no<strong>de</strong>s are created by Rule PRINT. From a quick glance at Figure 4 it is<br />

easy to see that sink will have in-<strong>de</strong>gree zero. Rule SIMOP <strong>de</strong>termines that we generate<br />

an edge from the value no<strong>de</strong> that represents the variable <strong>de</strong>fined by a simple operation<br />

towards the value no<strong>de</strong> representing every variable that is used in this operation. In other<br />

words, if v 1 is <strong>de</strong>fined by an instruction that reads the value of v 2 , then we insert an edge<br />

val(v 1 ) → val(v 2 ) into our memory <strong>de</strong>pen<strong>de</strong>nce graph.<br />

230


[LEAK]<br />

build edges(C, P t ) = E<br />

find leak(C, P t ) = B<br />

dfs(sink, E) = B<br />

[SINK]<br />

sink → val(v) ∈ E<br />

dfs(sink, E) = B<br />

dfs(v, E) = B<br />

[VAL]<br />

val(v) → val(v ′ ) ∈ E<br />

dfs(v ′ , E) = B<br />

dfs(v, E) = B ∪ {val(v 1 ) → addr(v 2 )}<br />

[ADDR]<br />

val(v 1 ) → addr(v 2 ) ∈ E<br />

dfs(v, E) = {val(v 1 ) → addr(v 2 )}<br />

Figure 5. Recursive <strong>de</strong>finition of an address leak.<br />

The processing of load and store constraints is more complicated, because it<br />

<strong>de</strong>mands points-to information. We say that a variable v 1 points to a variable v 2<br />

if the value of v 1 holds the address of v 2 . The problem of conservatively estimating<br />

the points-to relations in a C-like program has been exhaustively studied in the<br />

compiler literature [An<strong>de</strong>rsen 1994, Har<strong>de</strong>kopf and Lin 2007, Pereira and Berlin 2009,<br />

Steensgaard 1996]. Therefore, we assume that we start the process of building the memory<br />

<strong>de</strong>pen<strong>de</strong>nce graph with a map P t ∶ V ↦ PowerSet(V ) that tells, for each variable<br />

v ∈ V , what is the subset of variables V ′ ⊆ V such that v points to every element v ′ ∈ V ′ .<br />

According to Rule STMEM, whenever we store a variable v 1 into the address pointed by<br />

variable v 0 , i.e., in the C jargon: *v0 = v1, then, for each variable v pointed by v 0 we<br />

create an edge from the value no<strong>de</strong> of v towards the value no<strong>de</strong> of v 0 . The ldmem constraint<br />

works in the opposite direction. Whenever we load the value stored in the address<br />

pointed by v 0 into a variable v 1 , i.e., v1 = *v0, then, for each variable v that might be<br />

pointed-to by v 0 we add an edge from the value no<strong>de</strong> of v 1 to the value no<strong>de</strong> of v.<br />

3.3. Traversing the Memory Depen<strong>de</strong>nce Graph to Find Address Leaks<br />

Figure 5 <strong>de</strong>fines a system of inference rules to characterize programs with address leaks.<br />

This <strong>de</strong>finition also gives a <strong>de</strong>clarative algorithm to find a path B in the memory <strong>de</strong>pen<strong>de</strong>nce<br />

graph <strong>de</strong>scribing the address leak. Rule LEAK tells us that a constraint system C,<br />

plus a set of points-to facts P t <strong>de</strong>scribes at least one address leak if the memory <strong>de</strong>pen<strong>de</strong>nce<br />

graph built from C and P t has a set of edges E, and E contains a path B, from<br />

sink to an address no<strong>de</strong>. To <strong>de</strong>note this last statement, we use the dfs predicate, which<br />

<strong>de</strong>scribes a <strong>de</strong>pth-first search along E, as one can readily infer from the Rules SINK, VAL<br />

and ADDR. These rules are self explanatory, and we will not <strong>de</strong>scribe them further.<br />

3.4. An Example of our Analysis in Action<br />

We illustrate the concepts introduced in this section via the C program shown in Figure 6.<br />

This program, although very artificial, contains the main elements that will allows us to<br />

231


1 int g(int p) {<br />

2 int** v0 = (int**)malloc(8); // getad(v0, m1)<br />

3 int* t0 = (int*)malloc(4); // getad(t0, m2)<br />

4 *t0 = 1;<br />

5 *v0 = t0; // stmem(v0, t0)<br />

6 while (p > 1) {<br />

7 int* v1 = *v0; // ldmem(v1, v0)<br />

8 int t1 = *v1; // ldmem(t1, v1)<br />

9 printf("%d\n", t1); // print(t1)<br />

10 int* v2 = (int*)malloc(4); // getad(v2, m3)<br />

11 int* t2 = *v0; // ldmem(t2, v0)<br />

12 *t2 = (int)v2; // stmem(t2, v2)<br />

13 p--;<br />

14 }<br />

15 }<br />

Figure 6. A C program that contains an address leak: variable t1 might contain<br />

the address of the memory region allocated at line 10.<br />

illustrate our analysis. The constraints that we <strong>de</strong>rive from the program, as explained in<br />

Section 3.1, are given as comments on the right si<strong>de</strong> of Figure 6. Let’s assume, for the<br />

sake of this example, that variable v0 points to a memory region m1, created in line 2<br />

of Figure 6. We also assume that variables v1 and t2 point to a memory region m2,<br />

created in line 10 of our example. These points-to facts are computed beforehand, by any<br />

standard alias analysis implementation, as we have explained in Section 3.2. Figure 7(a)<br />

shows, again, the constraint set C that we must process for the example in Figure 6, and<br />

Figure 7(b) re-states the points-to facts that are known before we start our analysis.<br />

Once we have converted the target program to a normal form, we must build its<br />

memory <strong>de</strong>pen<strong>de</strong>nce graph, according to the rules in Figure 4 from Section 3.2. Figure<br />

7(c) shows the graph that we build for this example. We chose to use a particular<br />

notation to represent the no<strong>de</strong>s. Each variable v gives origin to two vertices, e.g. val(v)<br />

and addr(v); hence, each vertex in our graph is represented as the juxtaposition of two<br />

boxes. The first, <strong>de</strong>noting the value no<strong>de</strong>, contains the name of the variable it represents,<br />

whereas the second box – containing an @ – represents this variable’s address. Our example<br />

graph contains nine such no<strong>de</strong>s, one for each variable <strong>de</strong>fined in the target program,<br />

plus a special no<strong>de</strong>, <strong>de</strong>picted as a black diamond (◆), which represents the sink.<br />

Once we have built the memory <strong>de</strong>pen<strong>de</strong>nce graph, the next step is to traverse it,<br />

reporting unsafe paths. We perform this last step using the rules in Figure 5, as explained<br />

in Section 3.3. The program in Figure 6 contains an address leak, which is easy to find<br />

in the graph from Figure 7. The problematic path is sink → val(t 1 ) → val(m 2 ) →<br />

val(v 2 ) → addr(m3). Going back to Figure 6, this path corresponds to printing the<br />

value of t1. In or<strong>de</strong>r to see why this output is an address leak, notice that t1, *v1, **v0<br />

and *t2 might represent the same value, which, as we see in line 12 of our example, is<br />

the address of the memory location pointed by v2.<br />

232


(a)<br />

getad(v 0<br />

, m 1<br />

)<br />

(b) v 0<br />

→ {m 1<br />

} (c)<br />

getad(t 0<br />

, m 2<br />

)<br />

stmem(v 0<br />

, t 0<br />

)<br />

v 1<br />

→ {m 2<br />

}<br />

v 1<br />

@<br />

m 1<br />

@<br />

v 0<br />

@<br />

ldmem(v 1<br />

, v 0<br />

)<br />

t 2<br />

→ {m 2<br />

}<br />

ldmem(t 1<br />

, v 1<br />

)<br />

t 2<br />

@<br />

t 0<br />

@<br />

print(t 1<br />

)<br />

getad(v 2<br />

, m 3<br />

)<br />

m 3<br />

@<br />

m 2<br />

@<br />

ldmem(t 2<br />

, v 0<br />

)<br />

stmem(t 2<br />

, v 2<br />

)<br />

v 2<br />

@<br />

t 1<br />

@<br />

Figure 7. (a) The constraint system <strong>de</strong>rived from the Program in Figure 6. (b)<br />

Points-to facts, computed beforehand via An<strong>de</strong>rsen’s analysis [An<strong>de</strong>rsen 1994].<br />

(c) The memory <strong>de</strong>pen<strong>de</strong>nce graph built from the constraints and points-to facts.<br />

3.5. Limitations<br />

The current implementation of our analysis has two main limitations. First it is context<br />

insensitive, which means that we cannot distinguish two different calls from the same<br />

function. Second, it is field and array insensitive; hence, objects, records and arrays are<br />

treated as a single memory unit. These limitations lead us to report warnings that are false<br />

positives, or that, in other words, represent innocuous program patterns.<br />

Our analysis is interprocedural, which means that we can track the flow of information<br />

across function calls. However, our analysis is context insensitive, that is, we<br />

cannot distinguish different invocations of the same procedure. As an example, the program<br />

in Figure 8 does not contain an address leak. Nevertheless, the function calls at lines<br />

9 and 13 leads us to link the contents of v0 to v3, even though these variables are never<br />

related in the actual program semantics. Because v0 contains a program address, and v3<br />

is printed, we issue a warning. As a future work, we plan to improve our framework with<br />

light-weighted context sensitive methods, such as those based on probabilistic calling<br />

contexts [Bond and McKinley 2007] or shallow heap cloning [Lattner et al. 2007].<br />

Our second limitation is a lack of field sensitiveness. We treat programming language<br />

constructs, such as objects, records and arrays as single locations. Figure 9 contains<br />

an example of a bug free program that causes us to issue a warning. The assignment in<br />

line 7 marks the whole variable s1 as tainted. Therefore, even the innocuous printing<br />

statement at line 9 is flagged as a possible leak. As a future work, we intend to extend our<br />

analysis with Pearce et al.’s [Pearce et al. 2004] field sensitive constraint system.<br />

4. Experimental Results<br />

We have implemented our algorithm on top of the LLVM compiler<br />

[Lattner and Adve 2004], and have tested it in an Intel Core 2 Duo Processor with<br />

a 2.20GHz clock, and 2 GB of main memory on a 667 MHz DDR2 bus. The operating<br />

system is Ubuntu 11.04. We have tested our algorithm on a collection of 426 programs<br />

written in C that we got from the LLVM test suite. In total, we have analyzed 8,427,034<br />

233


1 int addSizeInt(int n0) {<br />

2 int n1 = n0 + sizeof(int); // simop(n1, n0)<br />

3 return n1;<br />

4 }<br />

5 int main() {<br />

6 int* v0 = (int*)<br />

malloc(2 * sizeof(int)); // getad(v0, m1)<br />

7 int* v1;<br />

8 int v2 = 0, v3 = 1, v4 = 1;<br />

9 v1 = addSizeInt(v0); // simop(n0, v0), simop(v1, n1)<br />

10 *v1 = v4; // stmem(v1, v4)<br />

11 int v5 = *v1; // ldmem(v5, v1)<br />

12 printf("%d\n", v5); // print(v5)<br />

13 v3 = addSizeInt(v2); // simop(n0, v2), simop(v3, n1)<br />

14 printf("%d\n", v3); // print(v3)<br />

15 }<br />

Figure 8. The lack of context sensitiveness in our analysis will cause us to report<br />

a false positive for this program.<br />

1 struct S {<br />

2 int harmless;<br />

3 int dang;<br />

4 };<br />

5 int main() {<br />

6 struct S s1;<br />

7 s1.harmless = (int)&s1; // getad(s1, s1)<br />

8 s1.dangerous = 0;<br />

9 printf("%d\n", s1.dang); // print(s1)<br />

10 }<br />

Figure 9. The lack of field sensitiveness in our analysis cause us to report a false<br />

positive for this program.<br />

assembly instructions. We will present results for SPEC CPU 2006 only, which is our<br />

largest benchmark suite. Table 1 gives <strong>de</strong>tails about each of the 17 programs in the SPEC<br />

collection. Without loss of generality, for these experiments we qualify as sensitive sinks<br />

the standard printf operation from the stdio.h hea<strong>de</strong>r. In other words, we are<br />

seeking for <strong>de</strong>pen<strong>de</strong>nce chains that cause an internal program address to be printed by<br />

a printf function. There exist other functions that may lead to address leaking. Our<br />

tool can be configured to check these functions by marking (i) return statements and (ii)<br />

assignments to parameters passed as references, as sink operations.<br />

We will compare three different configurations of our address leak <strong>de</strong>tector, which<br />

we call Direct, MDG and Blob. The first approach does not track information through<br />

memory. That is, it only reports the propagation of information through local program<br />

variables. The second approach – MDG – uses the Memory Depen<strong>de</strong>nce Graph that we<br />

have <strong>de</strong>scribed in Section 3.2 to track the flow of information through memory. Finally,<br />

the third method – Blob – assumes that the whole program memory is a single, indivisible<br />

unit. In this case, any operation that stores the value of an address into memory<br />

234


will contaminate the whole heap and stack. If any information from the tainted memory<br />

posteriorly flows into a sink, we will issue a warning.<br />

Precision: Table 1 shows the number of warnings that our tool has reported per program<br />

in SPEC CPU 2006. The table reveals a wi<strong>de</strong> contrast between the Direct and Blob<br />

approaches. In the former case, every warning turns out to be a true positive that allows<br />

us to recover an internal program address. However, the direct method misses many leaks<br />

that the other two approaches are able to point out. The blob technique, on the other hand,<br />

contains too many false positives, that is, a substantial number of warnings that it reports<br />

are actually innocuous. MDG is a compromise: it finds every true positive pointed by<br />

blob, and omits many false positives. A manual inspection of the first warning reported<br />

by MDG for each benchmark gave us a 1/8 false positive rate. The false positives are<br />

caused by the limitations <strong>de</strong>scribed in Section 3.5, which we are working to overcome.<br />

Nevertheless, MDG reduces by 14x, on average, the number of printf statements that<br />

a <strong>de</strong>veloper would have to verify in or<strong>de</strong>r to find potential address leaks. The chart in<br />

Figure 10 puts this number in perspective, showing, for each benchmark and tracking<br />

method, the percentage of printing statements that are flagged as potential address leaks.<br />

Benchmark Number of Number of Warnings Time (msec)<br />

Program Instructions printf’s Blob MDG Direct Blob MDG Direct<br />

mcf 4005 12 8 0 0 36 12 8<br />

lbm 5522 8 2 0 0 16 12 1<br />

libquantum 11422 30 28 5 0 168 56 16<br />

astar 14228 14 8 8 0 64 64 20<br />

bzip2 24881 21 21 5 0 220 88 28<br />

sjeng 34474 88 40 0 0 704 52 44<br />

milc 35357 191 86 16 0 1200 252 48<br />

hmmer 98150 52 17 0 0 508 184 120<br />

soplex 119616 0 0 0 0 172 260 176<br />

namd 121065 18 10 0 0 344 196 128<br />

h264ref 176652 53 19 1 0 932 320 220<br />

omnetpp 199934 20 7 5 1 624 604 308<br />

gobmk 222071 64 19 2 0 2792 696 316<br />

perlbench 388436 0 0 0 0 576 760 500<br />

<strong>de</strong>alII 934844 3 0 0 0 1680 2128 1476<br />

gcc 1155083 16 3 0 0 2628 2252 1632<br />

xalancbm 1428459 8 7 1 1 5516 3568 106<br />

Table 1. Summary of main experimental results for SPEC CPU 2006.<br />

Running time: The three versions of the address leak analysis are very fast. The direct<br />

approach took 5,147 msecs to process SPEC CPU 2006. Blog took 18,180 msecs, and<br />

MDG 11,504 msecs. Furthermore, MDG took 19.7 seconds to analyze the entire LLVM<br />

test suite plus SPEC CPU 2006, a benchmark collection that gives us over 8.26 million<br />

assembly instructions! The three analyses show a linear complexity behavior in practice.<br />

The charts in Figure 11 shows MDG’s processing time for programs in our benchmark<br />

collection having more than 20,000 assembly instructions. These 38 programs, from the<br />

LLVM test suite plus SPEC CPU 2006, contain over 7.64 million assembly instructions.<br />

235


100 ("<br />

!#'" 80<br />

!#&" 60<br />

!#%" 40<br />

!#$" 20<br />

!" 0<br />

)*+"<br />

,-)"<br />

.-/01230)"<br />

14315"<br />

-6.7$"<br />

4892:"<br />

).,*"<br />

;))95"<br />

4


graph is built for each program point, i.e, the region between two consecutive assembly instructions,<br />

we use only one graph for the whole program. Therefore, shape analysis gives<br />

the compiler much more precise knowledge about the memory layout of the program;<br />

however, its high cost, both in time and space, causes it to be prohibitively expensive to<br />

be used in practice. Still concerning the representation of memory locations, Ghiya and<br />

Hendren [Ghiya and Hendren 1998] have proposed an algorithm that relies on points-to<br />

information to infer disjoint data-structures. We could, in principle, use their technique<br />

to track information leaks through memory location, but it would be more conservative<br />

than our current approach, for we can track different memory cells used insi<strong>de</strong> the same<br />

data-structure. Our problem is also related to escape analysis [Blanchet 1998], which<br />

conservatively estimates the set of memory locations that outlive the function in which<br />

these locations have been created. The address leaking problem is more general, because<br />

we track the flow of addresses insi<strong>de</strong> or across functions.<br />

6. Conclusion<br />

This paper has presented a static analysis tool that checks if an adversary can obtain the<br />

knowledge of an internal program address. This is a necessary step in or<strong>de</strong>r to circumvent<br />

a program protection mechanism known as address space layout randomization. We have<br />

implemented our algorithms on top of LLVM, an industrial strength compiler, and have<br />

used it to process a collection of programs with more than 1.3 million lines of C co<strong>de</strong>. We<br />

have been able to discover actual address leaks in some of these programs. Currently we<br />

are working to reduce the number of false positives reported by our implementation. We<br />

plan to do it by adding context and field sensitiveness to our tool as a future work.<br />

References<br />

An<strong>de</strong>rsen, L. O. (1994). Program Analysis and Specialization for the C Programming<br />

Language. PhD thesis, DIKU, University of Copenhagen.<br />

Bhatkar, E., Duvarney, D. C., and Sekar, R. (2003). Address obfuscation: an efficient<br />

approach to combat a broad range of memory error exploits. In USENIX Security,<br />

pages 105–120.<br />

Blanchet, B. (1998). Escape analysis: Correctness proof, implementation and experimental<br />

results. In POPL, pages 25–37. ACM.<br />

Bond, M. D. and McKinley, K. S. (2007). Probabilistic calling context. In OOPSLA,<br />

pages 97–112. ACM.<br />

Buchanan, E., Roemer, R., Shacham, H., and Savage, S. (2008). When good instructions<br />

go bad: generalizing return-oriented programming to RISC. In CCS, pages 27–38.<br />

ACM.<br />

Cytron, R., Ferrante, J., Rosen, B. K., Wegman, M. N., and Za<strong>de</strong>ck, F. K. (1991). Efficiently<br />

computing static single assignment form and the control <strong>de</strong>pen<strong>de</strong>nce graph.<br />

TOPLAS, 13(4):451–490.<br />

Denning, D. E. and Denning, P. J. (1977). Certification of programs for secure information<br />

flow. Commun. ACM, 20:504–513.<br />

Ghiya, R. and Hendren, L. J. (1998). Putting pointer analysis to work. In POPL, pages<br />

121–133. ACM.<br />

237


Gough, B. J. (2005). An Introduction to GCC. Network Theory Ltd, 1st edition.<br />

Har<strong>de</strong>kopf, B. and Lin, C. (2007). The ant and the grasshopper: fast and accurate pointer<br />

analysis for millions of lines of co<strong>de</strong>. In PLDI, pages 290–299. ACM.<br />

Jovanovic, N., Kruegel, C., and Kirda, E. (2006). Pixy: A static analysis tool for <strong>de</strong>tecting<br />

web application vulnerabilities (short paper). In Symposium on Security and Privacy,<br />

pages 258–263. IEEE.<br />

Lattner, C. and Adve, V. S. (2004). LLVM: A compilation framework for lifelong program<br />

analysis & transformation. In CGO, pages 75–88. IEEE.<br />

Lattner, C., Lenharth, A., and Adve, V. S. (2007). Making context-sensitive points-to<br />

analysis with heap cloning practical for the real world. In PLDI, pages 278–289. ACM.<br />

Levy, E. (1996). Smashing the stack for fun and profit. Phrack, 7(49).<br />

Pearce, D. J., Kelly, P. H. J., and Hankin, C. (2004).<br />

analysis for C. In PASTE, pages 37–42.<br />

Efficient field-sensitive pointer<br />

Pereira, F. M. Q. and Berlin, D. (2009). Wave propagation and <strong>de</strong>ep propagation for<br />

pointer analysis. In CGO, pages 126–135. IEEE.<br />

Pistoia, M., Flynn, R. J., Koved, L., and Sreedhar, V. C. (2005). Interprocedural analysis<br />

for privileged co<strong>de</strong> placement and tainted variable <strong>de</strong>tection. In ECOOP, pages 362–<br />

386.<br />

Rimsa, A. A., D’Amorim, M., and Pereira, F. M. Q. (2011). Tainted flow analysis on<br />

e-SSA-form programs. In CC, pages 124–143. Springer.<br />

Rochlis, J. A. and Eichin, M. W. (1989). With microscope and tweezers: the worm from<br />

MIT’s perspective. Commun. ACM, 32:689–698.<br />

Sagiv, M., Reps, T., and Wilhelm, R. (1998). Solving shape-analysis problems in languages<br />

with <strong>de</strong>structive updating. TOPLAS, 20(1):1–50.<br />

Sagiv, M., Reps, T., and Wilhelm, R. (2002). Parametric shape analysis via 3-valued<br />

logic. TOPLAS, 24:217–298.<br />

Shacham, H. (2007). The geometry of innocent flesh on the bone: return-into-libc without<br />

function calls (on the x86). In CCS, pages 552–561. ACM.<br />

Shacham, H., Page, M., Pfaff, B., Goh, E.-J., Modadugu, N., and Boneh, D. (2004). On<br />

the effectiveness of address-space randomization. In CSS, pages 298–307. ACM.<br />

Steensgaard, B. (1996). Points-to analysis in almost linear time. In POPL, pages 32–41.<br />

Stroustrup, B. (2007). Evolving a language in and for the real world: C++ 1991-2006. In<br />

HOPL, pages 1–59. ACM.<br />

Team, J. (2006). The java HotSpot virtual machine. Technical Report Technical White<br />

Paper, Sun Microsystems.<br />

Wassermann, G. and Su, Z. (2007). Sound and precise analysis of web applications for<br />

injection vulnerabilities. In PLDI, pages 32–41. ACM.<br />

Xie, Y. and Aiken, A. (2006). Static <strong>de</strong>tection of security vulnerabilities in scripting<br />

languages. In USENIX-SS. USENIX Association.<br />

238


Um esquema bio-inspirado para a tolerância à má-conduta em<br />

sistemas <strong>de</strong> quórum para MANETs<br />

Elisa Mannes, Michele Nogueira, Aldri Santos<br />

1 Núcleo <strong>de</strong> Re<strong>de</strong>s Sem-Fio e Re<strong>de</strong>s Avançadas (NR2)<br />

Universida<strong>de</strong> Fe<strong>de</strong>ral do Paraná – Curitiba – Brasil<br />

{elisam, michele, aldri}@inf.ufpr.br<br />

Abstract. Network operation services in MANETs, such as resource location,<br />

<strong>de</strong>al with no<strong>de</strong> mobility and lack of resources to support applications. The reliability<br />

and availability of these services can be assured by replication techniques,<br />

such as quorum systems. However, these systems are vulnerable to selfish<br />

and malicious no<strong>de</strong>s, that either intentionally do not collaborate with replication<br />

operations or spread malicious data while participating in data replication.<br />

In or<strong>de</strong>r to handle these issues, this paper proposesQS 2 , a bio-inspired scheme<br />

to tolerate selfish and malicious no<strong>de</strong>s in replication operation of quorum systems.<br />

Differently from existing works on the literature, QS 2 is distributed and<br />

self-organized, and no<strong>de</strong>s are in<strong>de</strong>pen<strong>de</strong>nt to exclu<strong>de</strong> misbehaving no<strong>de</strong>s. It is<br />

inspired in quorum sensing and kin selection, both biological mechanisms resi<strong>de</strong>nt<br />

in bacteria. Simulation results show thatQS 2 increases 87% the reliability<br />

of a quorum system for MANETs, <strong>de</strong>tecting more than 80% of misbehaving no<strong>de</strong>s<br />

participating in replication operations.<br />

Resumo. Os serviços <strong>de</strong> operação das re<strong>de</strong>s em MANETs, como a localização<br />

<strong>de</strong> recursos, precisam lidar com a mobilida<strong>de</strong> e a falta <strong>de</strong> recursos dos dispositivos<br />

a fim <strong>de</strong> suportar as aplicações. Esses serviços necessitam <strong>de</strong> garantias<br />

<strong>de</strong> disponibilida<strong>de</strong> e <strong>de</strong> confiabilida<strong>de</strong>, que po<strong>de</strong>m ser obtidas pela replicação<br />

<strong>de</strong> dados através <strong>de</strong> sistemas <strong>de</strong> quóruns. Contudo, esses sistemas são vulneráveis<br />

a nós egoístas e maliciosos, que não colaboram com suas operações<br />

ou modificam as informações, negando os serviços da re<strong>de</strong>. Para lidar com essas<br />

vulnerabilida<strong>de</strong>s, esse artigo propõe QS 2 , um esquema bio-inspirado para<br />

a tolerˆancia <strong>de</strong> nós <strong>de</strong> má-conduta em sistemas <strong>de</strong> quórum. Diferentemente dos<br />

sistemas existentes na literatura, o QS 2 é auto-organizado e distribuído, permitindo<br />

uma autonomia na exclusão <strong>de</strong> nós <strong>de</strong> má-conduta. Ele é inspirado<br />

nos mecanismos biológicos <strong>de</strong> sensoriamento em quóruns e <strong>de</strong> seleção por parentesco<br />

encontrados em bactérias. Resultados <strong>de</strong> simulações mostram um aumento<br />

<strong>de</strong> até 87% na confiabilida<strong>de</strong> dos sistemas <strong>de</strong> quórum, <strong>de</strong>tectando mais<br />

<strong>de</strong> 80% da participação <strong>de</strong> nós <strong>de</strong> má-conduta nas operações <strong>de</strong> replicação.<br />

1. Introdução<br />

Devido aos recentes avanços das tecnologias <strong>de</strong> comunicação sem fio, a operacionalização<br />

<strong>de</strong> várias aplicações críticas, como as aplicações relacionadas à segurança nas rodovias,<br />

à segurança militar e ao apoio a situações <strong>de</strong> emergência po<strong>de</strong>m ser mediadas pelas re<strong>de</strong>s<br />

ad hoc móvel (MANETs). Porém, a mobilida<strong>de</strong> e a escassez <strong>de</strong> recursos dos dispositivos<br />

(nós), características peculiares das MANETs, po<strong>de</strong>m ocasionar o particionamento da<br />

239


e<strong>de</strong>. Além disso, a <strong>de</strong>pendência na colaboração dos nós po<strong>de</strong> tornar as aplicações indisponíveis<br />

ou resultar em informações <strong>de</strong>satualizadas [Zhang et al. 2008]. Dessa forma, a<br />

confiabilida<strong>de</strong> da re<strong>de</strong> é comprometida, e as consequências da falta <strong>de</strong> informação ou <strong>de</strong><br />

informações <strong>de</strong>satualizadas po<strong>de</strong>m inutilizar a re<strong>de</strong>. Uma das formas <strong>de</strong> tolerar as falhas<br />

causadas pelas características da re<strong>de</strong> é por meio da redundância das informações, obtida<br />

através das técnicas <strong>de</strong> replicação dos dados [Derhab and Badache 2009].<br />

Dentre as técnicas <strong>de</strong> replicação para garantir a disponibilida<strong>de</strong> dos dados e a<br />

tolerância a falhas em MANETs <strong>de</strong>stacam-se os sistemas <strong>de</strong> quórum. Estes sistemas são<br />

uma forma efetiva <strong>de</strong> replicação, garantindo tanto a consistência quanto a disponibilida<strong>de</strong><br />

dos dados. Os sistemas <strong>de</strong> quórum consistem em conjuntos <strong>de</strong> nós que se intersectam,<br />

e cada operação <strong>de</strong> leitura e <strong>de</strong> escrita acontece em apenas um dos conjuntos (quóruns)<br />

[Malkhi and Reiter 1997]. Entre as vantagens <strong>de</strong> seu uso, comparado com outros mo<strong>de</strong>los<br />

<strong>de</strong> replicação, estão a economia <strong>de</strong> recursos computacionais e <strong>de</strong> comunicação, o que<br />

torna esses sistemas atraentes às MANETs. Os sistemas <strong>de</strong> quórum que se baseiam na<br />

construção probabilística da intersecção dos quóruns são os mais a<strong>de</strong>quados às MANETs,<br />

pois diminuem o uso <strong>de</strong> recursos e tornam a replicação mais dinâmica [Luo et al. 2003].<br />

Contudo, os sistemas <strong>de</strong> quórum probabilísticos propostos para MANETs apresentam<br />

vulnerabilida<strong>de</strong>s que resultam em uma perda na confiabilida<strong>de</strong> dos dados diante<br />

<strong>de</strong> nós egoístas e nós maliciosos nas operações <strong>de</strong> replicação [Mannes et al. 2009]. Os nós<br />

egoístas buscam a economia <strong>de</strong> seus recursos e assim não colaboram com as operações,<br />

enquanto que os nós maliciosos têm como objetivo a negação do serviço da re<strong>de</strong>, injetando<br />

dados falsos ou modificando o comportamento da replicação. Para serem empregados<br />

<strong>de</strong> forma confiável no apoio aos serviços <strong>de</strong> operação <strong>de</strong> re<strong>de</strong>, os sistemas <strong>de</strong> quórum<br />

precisam evitar que os nós <strong>de</strong> má-conduta interfiram em seu funcionamento.<br />

Apesar <strong>de</strong> existirem sistemas <strong>de</strong> quórum tolerantes a nós <strong>de</strong> má-conduta<br />

[Malkhi and Reiter 1997], tais sistemas assumem a existência <strong>de</strong> uma infraestrutura fixa<br />

e canais <strong>de</strong> comunicação confiáveis, atributos que não são encontrados em uma MANET<br />

e que tornam inviável o uso <strong>de</strong> tais sistemas nesse tipo <strong>de</strong> re<strong>de</strong>. Uma forma <strong>de</strong> auxiliar<br />

os sistemas <strong>de</strong> quórum a evitar a interação com os nós <strong>de</strong> má-conduta é por meio do<br />

uso <strong>de</strong> sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> nós <strong>de</strong> má-conduta [Yang et al. 2002, Zhu et al. 2007].<br />

Porém, a maioria <strong>de</strong>les divulga a recomendação sobre um nó para todos na re<strong>de</strong>, gerando<br />

uma sobrecarga <strong>de</strong> mensagens, ou utiliza entida<strong>de</strong>s centralizadas, que não são a<strong>de</strong>quadas<br />

para as MANETs. Desta maneira, é necessário proporcionar a tolerância a nós <strong>de</strong><br />

má-conduta nos sistemas <strong>de</strong> quórum, preferencialmente <strong>de</strong> forma <strong>de</strong>scentralizada e com<br />

o uso <strong>de</strong> poucos recursos. Essas características são naturalmente encontradas em diversos<br />

sistemas biológicos, e assim, projetar soluções inspiradas neles facilita a inclusão <strong>de</strong><br />

características como a <strong>de</strong>scentralização e a autonomia necessárias em MANETs.<br />

Este trabalho propõe o QS 2 (quorum systems + quorum sensing), um esquema<br />

inspirado nos mecanismos biológicos encontrados em bactérias, para a tolerância <strong>de</strong> nós<br />

<strong>de</strong> má-conduta nas operações <strong>de</strong> sistemas <strong>de</strong> quórum em MANETs. Diferente <strong>de</strong> outras<br />

propostas encontradas na literatura, oQS 2 <strong>de</strong>tecta nós egoístas e nós maliciosos por meio<br />

da análise autônoma do comportamento <strong>de</strong> cada nó, e <strong>de</strong> forma auto-organizada evita<br />

que eles façam parte da replicação dos dados. Os resultados <strong>de</strong> simulação mostram que<br />

o QS 2 garante pelo menos 80% <strong>de</strong> confiabilida<strong>de</strong> dos dados em um sistema <strong>de</strong> quórum<br />

probabilístico para MANETs diante <strong>de</strong> nós maliciosos em operações <strong>de</strong> escrita, e <strong>de</strong>tecta<br />

240


mais <strong>de</strong> 80% da ação <strong>de</strong>sses nós com uma taxa <strong>de</strong> falsos positivos inferior a 2%. A confiabilida<strong>de</strong><br />

garantida peloQS 2 é aceitável para a replicação <strong>de</strong> dados em aplicações cujo o<br />

requisito por disponibilida<strong>de</strong> sobrepõe o custo <strong>de</strong> lidar com eventuais inconsistências.<br />

O restante do artigo está organizado como <strong>de</strong>scrito a seguir. A Seção 2 apresenta<br />

os trabalhos relacionados. A Seção 3 <strong>de</strong>fine o mo<strong>de</strong>lo do sistema e as asserções consi<strong>de</strong>radas<br />

no esquema proposto. A Seção 4 <strong>de</strong>screve o esquema QS 2 , seus módulos e suas<br />

funções. A Seção 5 apresenta os resultados do <strong>de</strong>sempenho e da eficiência do QS 2 , obtidos<br />

por meio <strong>de</strong> simulação. A Seção 6 conclui o artigo e apresenta os trabalhos futuros.<br />

2. Trabalhos Relacionados<br />

Os sistemas clássicos <strong>de</strong> replicação <strong>de</strong> dados [Saito and Shapiro 2005] têm como característica<br />

comum o uso <strong>de</strong> servidores estáticos, a garantia <strong>de</strong> entrega e a or<strong>de</strong>nação das<br />

mensagens <strong>de</strong> replicação. A tolerância <strong>de</strong> nós <strong>de</strong> má-conduta nesses sistemas é garantida<br />

pela validação das operações por pelo menost+1 nós, em quetéaquantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong><br />

má-conduta presente na re<strong>de</strong> [Malkhi and Reiter 1997]. Esses sistemas requerem que a<br />

quantida<strong>de</strong> <strong>de</strong> nós bons sobreponha a quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má conduta a fim <strong>de</strong> evitar que<br />

eles prejudiquem a replicação. Além disso, esses sistemas trocam várias mensagens entre<br />

os nós para a conclusão <strong>de</strong> uma operação, o que gera uma sobrecarga na re<strong>de</strong>. Por estas<br />

razões, esses sistemas clássicos não são aplicáveis em MANETs, visto que estas re<strong>de</strong>s<br />

não conseguem garantir os requisitos básicos para o funcionamento correto da tolerância<br />

a falhas necessários a esse tipo <strong>de</strong> replicação.<br />

A replicação por sistemas <strong>de</strong> quórum é a mais a<strong>de</strong>quada para ambientes dinâmicos<br />

como as MANETs. Estes sistemas ten<strong>de</strong>m a diminuir a quantida<strong>de</strong> <strong>de</strong> recursos <strong>de</strong> processamento<br />

e <strong>de</strong> comunicação usados na replicação [Malkhi and Reiter 1997]. Os sistemas<br />

<strong>de</strong> quórum específicos para as MANETs diminuem ainda mais o uso <strong>de</strong> recursos através<br />

da escolha probabilística dos quóruns [Luo et al. 2003]. Entretanto, apesar <strong>de</strong> existirem<br />

sistemas <strong>de</strong> quórum probabilístico tolerantes aos nós <strong>de</strong> má-conduta [Malkhi et al. 1998],<br />

esses sistemas possuem os mesmos requisitos que os sistemas clássicos, como a garantia<br />

<strong>de</strong> entrega das mensagens, sendo que as características das MANETs tornam esse modo<br />

<strong>de</strong> tolerância a falhas inviável para o uso na replicação <strong>de</strong> serviços.<br />

Os sistemas <strong>de</strong> replicação para MANETs [Bellavista et al. 2005] geralmente tratam<br />

da segurança com o auxílio <strong>de</strong> mecanismos <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> má-conduta, como os<br />

sistemas <strong>de</strong> reputação [Salmon et al. 2010] Contudo, muitos <strong>de</strong>sses sistemas <strong>de</strong>pen<strong>de</strong>m<br />

da confiança entre os nós para a troca <strong>de</strong> mensagens <strong>de</strong> <strong>de</strong>tecção, o que po<strong>de</strong> ser explorado<br />

por nós <strong>de</strong> má-conduta através do envio <strong>de</strong> informações falsas. Abordagens para a<br />

<strong>de</strong>tecção <strong>de</strong> injeção <strong>de</strong> dados falsos [Zhu et al. 2007] estão consolidadas na replicação <strong>de</strong><br />

dados em re<strong>de</strong>s <strong>de</strong> sensores sem fio, <strong>de</strong>vido ao foco que essas re<strong>de</strong>s mantém na coleta <strong>de</strong><br />

dados. A validação dos dados geralmente ocorre por meio <strong>de</strong> criptografia, da verificação<br />

dos dados por uma <strong>de</strong>terminada quantida<strong>de</strong> <strong>de</strong> nós ou ainda pelo uso <strong>de</strong> firewalls. Porém,<br />

esses sistemas utilizam entida<strong>de</strong>s centrais, o que po<strong>de</strong> ser aceitável para alguns tipos <strong>de</strong><br />

re<strong>de</strong>, mas trazem limitações para re<strong>de</strong>s <strong>de</strong>scentralizadas como as MANETs.<br />

Apesar dos sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> nós <strong>de</strong> má-conduta apresentarem separadamente<br />

características <strong>de</strong> autonomia, <strong>de</strong>scentralização e uso <strong>de</strong> poucos recursos, nenhum<br />

<strong>de</strong>les as compreen<strong>de</strong> na mesma solução. Além disso, nenhuma solução é capaz <strong>de</strong> mitigar<br />

nós egoístas e maliciosos isoladamente. Devido às suas características, as MANETS<br />

241


necessitam que atributos como a auto-organização, a autonomia e o uso <strong>de</strong> poucos recursos<br />

estejam incorporados nessas soluções. Essas características são encontradas em<br />

várias soluções bio-inspiradas, como protocolos <strong>de</strong> roteamento inspirados em colônias <strong>de</strong><br />

formigas, ou sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques inspirados no sistema imunológico humano<br />

[Meisel et al. 2010]. Assim, o esquema proposto é inspirado nos sistemas biológicos, <strong>de</strong><br />

forma a aproveitar as vantagens oferecidas por esses sistemas.<br />

3. Mo<strong>de</strong>lo do sistema<br />

Esta seção <strong>de</strong>screve as suposições e os mo<strong>de</strong>los assumidos para a <strong>de</strong>finição do esquema<br />

proposto. Primeiramente são apresentados os sistemas <strong>de</strong> quórum probabilísticos para<br />

MANETs. Também são <strong>de</strong>finidos o mo<strong>de</strong>lo <strong>de</strong> re<strong>de</strong> empregado e o mo<strong>de</strong>lo <strong>de</strong> má-conduta<br />

que po<strong>de</strong> afetar esses sistemas. Por fim, são <strong>de</strong>scritos os conceitos <strong>de</strong> sensoriamento em<br />

quórum e seleção por parentesco, que são utilizados como inspiração para o esquema.<br />

3.1. Sistema <strong>de</strong> quórum probabilístico para MANETs<br />

O sistema <strong>de</strong> quórum probabilístico é caracterizado pela escolha probabilística dos<br />

quóruns, que são conjuntos <strong>de</strong> nós que realizam a replicação. Nesse caso, o sistema<br />

garante que quóruns <strong>de</strong> leitura e <strong>de</strong> escrita, ambos selecionados aleatoriamente, se intersectem<br />

com uma dada probabilida<strong>de</strong>. Em geral, os sistemas <strong>de</strong> quórum para MA-<br />

NETs [Luo et al. 2003, Tulone 2007, Gramoli and Raynal 2007] têm seu fundamento nos<br />

quóruns probabilísticos, e portanto, compartilham as mesmas características. Apesar <strong>de</strong><br />

existirem vários sistemas <strong>de</strong> quórum para as MANETs, o PAN (probabilistic quorum system<br />

for ad hoc networks) [Luo et al. 2003] foi escolhido neste estudo para representar os<br />

sistemas <strong>de</strong> quórum probabilísticos para MANETs, pois propõe o uso <strong>de</strong> um número reduzido<br />

<strong>de</strong> mensagens para a replicação ao introduzir o conceito <strong>de</strong> quóruns assimétricos,<br />

além <strong>de</strong> acessar os quóruns <strong>de</strong> leitura e <strong>de</strong> escrita <strong>de</strong> forma distinta. No PAN, o acesso ao<br />

quórum <strong>de</strong> leitura é realizado por mensagens unicast, en<strong>de</strong>reçada para cada nó do quórum<br />

<strong>de</strong> leitura, enquanto que os quóruns <strong>de</strong> escrita são acessados por meio do protocolo Gossip,<br />

em que um nó envia as escritas para o quórum <strong>de</strong> escrita com a ajuda dos outros nós.<br />

3.2. Mo<strong>de</strong>lo <strong>de</strong> re<strong>de</strong><br />

Assume-se que a re<strong>de</strong> é formada por um conjuntoP composto pornnós i<strong>de</strong>ntificados por<br />

{s 0 ,s 1 ... s n−1 ,s n }, sendo que cada nós n ∈P tem um en<strong>de</strong>reço físico e um i<strong>de</strong>ntificador<br />

único. Os nós são similares quanto ao po<strong>de</strong>r <strong>de</strong> processamento e a quantida<strong>de</strong> <strong>de</strong> energia<br />

disponível. Eles se comunicam através <strong>de</strong> um canal sem fio, cujo raio <strong>de</strong> transmissão<br />

é igual para todos. Consi<strong>de</strong>ra-se que a comunicação entre os nós é assíncrona, isto é, o<br />

tempo <strong>de</strong> transmissão é variável e <strong>de</strong>sconhecido. O canal <strong>de</strong> comunicação não é confiável,<br />

e está sujeito à perda <strong>de</strong> pacotes <strong>de</strong>vido a colisões ou à entrada e saída <strong>de</strong> nós, que também<br />

po<strong>de</strong> causar a partição da re<strong>de</strong>.<br />

Os nós não possuem conexão com todos os outros, e <strong>de</strong>ste modo, as mensagens<br />

precisam ser roteadas por nós intermediários até o <strong>de</strong>stino. Supõe-se que o roteamento e<br />

as camadas inferiores não sofram interferências <strong>de</strong> nós <strong>de</strong> má-conduta. Da mesma forma,<br />

assume-se que as mensagens contendo os dados replicados são relativamente pequenas e<br />

enviadas em pacotes únicos. Além disso, assume-se que a re<strong>de</strong> fornece um esquema <strong>de</strong><br />

assinatura para a autenticação <strong>de</strong> informações importantes enviadas peloQS 2 .<br />

242


O esquema proposto é aplicado em sistemas <strong>de</strong> quórum do tipo probabilístico<br />

para MANETs, utilizado para a replicação dos dados dos serviços <strong>de</strong> operação <strong>de</strong> re<strong>de</strong>,<br />

tais como informações <strong>de</strong> localização e <strong>de</strong> mobilida<strong>de</strong>.<br />

3.3. Mo<strong>de</strong>lo <strong>de</strong> má-conduta<br />

Consi<strong>de</strong>ra-se que os nós <strong>de</strong> má-conduta têm como objetivo afetar as proprieda<strong>de</strong>s <strong>de</strong> disponibilida<strong>de</strong><br />

e <strong>de</strong> integrida<strong>de</strong> dos dados em um sistema <strong>de</strong> replicação por quóruns. Esses<br />

nós <strong>de</strong> má-conduta são intrusos e conhecem o funcionamento da re<strong>de</strong>, tendo permissão e<br />

acesso à chaves criptográficas para participar das operações. Assume-se dois tipos <strong>de</strong> nós<br />

<strong>de</strong> má-conduta: os nós egoístas e os nós maliciosos. Um nó egoísta não colabora com as<br />

operações <strong>de</strong> replicação. Um nó malicioso modifica ou injeta dados maliciosos no sistema<br />

<strong>de</strong> replicação, ou ainda atrasa a propagação dos dados. Um nó po<strong>de</strong> ser egoísta ou malicioso,<br />

ou apresentar ambos os comportamentos ao mesmo tempo. Assume-se que um nó<br />

<strong>de</strong> má-conduta se comporta <strong>de</strong> modo egoísta ou malicioso durante toda a sua participação<br />

na re<strong>de</strong>, todas as vezes em que for consultado. Além disso, os nós egoístas e maliciosos<br />

agem sempre que forem consultados por algum outro nó do sistema, tanto nas operações<br />

<strong>de</strong> leitura como <strong>de</strong> escrita.<br />

3.4. Sensoriamento em quórum e seleção por parentesco<br />

Na Biologia, o sensoriamento em quórum é um mecanismo biológico <strong>de</strong> comunicação<br />

entre bactérias fundamentado na produção e na <strong>de</strong>tecção <strong>de</strong> produtos químicos extracelulares<br />

chamados <strong>de</strong> autoindutores. Os autoindutores agem como um sinalizador da<br />

quantida<strong>de</strong> <strong>de</strong> bactérias presentes no ambiente, e permite que elas <strong>de</strong>senvolvam um comportamento<br />

vantajoso para o grupo, <strong>de</strong>pen<strong>de</strong>nte da quantida<strong>de</strong> <strong>de</strong> bactérias no ambiente<br />

[Ng and Bassler 2009]. Porém, esse mecanismo é vulnerável a bactérias egoístas e maliciosas,<br />

que não <strong>de</strong>sejam ter o custo metabólico da produção <strong>de</strong> autoindutores, ou prejudicam<br />

o sensoriamento enviando autoindutores modificados. Uma das teorias aceitas para<br />

a sobrevivência do sensoriamento em quórum ao ataque <strong>de</strong> tais bactérias é pela seleção<br />

por parentesco, permitindo que as bactérias <strong>de</strong>em preferência a interagir com aquelas que<br />

compartilham o mesmo material genético, e tem maiores chances <strong>de</strong> se comportar corretamente.<br />

Dessa forma, as bactérias egoístas e maliciosas são excluídas do processo <strong>de</strong><br />

sensoriamento. Em conjunto, o sensoriamento em quórum e a seleção por parentesco<br />

formam uma solução dinâmica e in<strong>de</strong>pen<strong>de</strong>nte, e são a base para o esquema proposto.<br />

4. QS 2 - esquema bio-inspirado para tolerância a nós <strong>de</strong> má-conduta<br />

O esquema QS 2 (quorum system + quorum sensing) tem como objetivo auxiliar os<br />

sistemas <strong>de</strong> quórum para MANETs a excluir os nós <strong>de</strong> má-conduta das operações <strong>de</strong><br />

replicação, construindo quóruns com participantes que não prejudiquem as operações.<br />

Diferente dos sistemas <strong>de</strong> <strong>de</strong>tecção propostos, o QS 2 é autônomo e auto-organizado, e<br />

não troca informações <strong>de</strong> reputação entre os nós. A seleção <strong>de</strong> nós participantes tem<br />

como base a observação individual da quantida<strong>de</strong> <strong>de</strong> operações <strong>de</strong> escritas <strong>de</strong> dados e<br />

<strong>de</strong> encaminhamentos <strong>de</strong> escritas realizadas, e não <strong>de</strong>pen<strong>de</strong> <strong>de</strong> informações adquiridas <strong>de</strong><br />

outros nós. O esquema é composto por dois módulos: o módulo <strong>de</strong> seleção <strong>de</strong> nós e o<br />

módulo <strong>de</strong> <strong>de</strong>cisão, conforme ilustra a Figura 1.<br />

O módulo <strong>de</strong> seleção <strong>de</strong> nós é responsável pela classificação dos nós como bons<br />

ou <strong>de</strong> má-conduta. Esse módulo é subdividido em dois componentes: a contagem <strong>de</strong><br />

243


Figura 1. Arquitetura do esquema QS 2<br />

autoindutores e a <strong>de</strong>terminação dos genes do nó. A contagem <strong>de</strong> autoindutores quantifica<br />

os autoindutores enviados por cada nó da re<strong>de</strong>. Os autoindutores para o QS 2 são as<br />

escritas (AI-W) e os encaminhamentos <strong>de</strong> dados realizados (AI-F) por cada nó na re<strong>de</strong>. A<br />

<strong>de</strong>terminação dos genes classifica os nós em um dos três estados: bons, egoístas (C) ou<br />

maliciosos (M). Isso <strong>de</strong>pen<strong>de</strong> da contagem <strong>de</strong> autoindutores <strong>de</strong> cada nó e dos limites dos<br />

autoindutores que caracterizam um bom comportamento. Depois <strong>de</strong> classificados, os nós<br />

são escolhidos <strong>de</strong> acordo com a semelhança <strong>de</strong> parentesco com o nó seletor.<br />

O módulo <strong>de</strong> <strong>de</strong>cisão <strong>de</strong> cooperação em quóruns <strong>de</strong>termina a relação <strong>de</strong><br />

cooperação entre dois nós. Esse módulo permite uma flexibilização na interação entre<br />

os nós, que po<strong>de</strong>m classificar um nó como <strong>de</strong> má-conduta e mesmo assim <strong>de</strong>cidir interagir<br />

com ele. Em conjunto, os módulos <strong>de</strong> seleção e <strong>de</strong> <strong>de</strong>cisão <strong>de</strong> cooperação <strong>de</strong>terminam<br />

quais nós são bons, isto é, nós cujo comportamento é colaborativo. Tais nós são posteriormente<br />

escolhidos para a participação em quóruns <strong>de</strong> escrita e <strong>de</strong> leitura. As subseções<br />

seguintes <strong>de</strong>talham as etapas <strong>de</strong> contagem <strong>de</strong> autoindutores, da <strong>de</strong>terminação do gene do<br />

nó e da <strong>de</strong>cisão <strong>de</strong> cooperação do esquemaQS 2 .<br />

4.1. Contagem <strong>de</strong> autoindutores<br />

A contagem dos autoindutores AI-W e AI-F é realizada individualmente por cada nó presente<br />

no sistema, que possui um contador <strong>de</strong> autoindutores para cada nó na re<strong>de</strong>. Essa<br />

contabilização acontece no momento em que o nó recebe uma requisição <strong>de</strong> escrita <strong>de</strong> um<br />

dado. Os nós enviam junto com o dado a rota por on<strong>de</strong> o dado trafegou, e <strong>de</strong>ssa forma,<br />

é possível incrementar o contador <strong>de</strong> AI-F para cada nó presente na rota <strong>de</strong> disseminação<br />

e o contador <strong>de</strong> AI-W para o nó <strong>de</strong> origem da escrita. Essa rota é assinada por cada nó<br />

que a compõe, <strong>de</strong> modo que não seja possível forjar a rota ou induzir que nós bons sejam<br />

excluídos por outros ao retirar suas participações na rota. A Figura 2 ilustra a contagem<br />

dos autoindutores no QS 2 . Nela, o nó H inicia a escrita <strong>de</strong> um dado na re<strong>de</strong>, enviando<br />

junto o seu i<strong>de</strong>ntificador para dois nós. Ao encaminhar o dado, os nós incluem o seu<br />

i<strong>de</strong>ntificador na rota, para que essa colaboração seja contabilizada pelos próximos nós. A<br />

tabela exemplifica a contagem <strong>de</strong> autoindutores AI-W e AI-F pelo nó A, que recebe essa<br />

escrita a partir da rota H - E - D - C. O nó A incrementa a quantida<strong>de</strong> <strong>de</strong> AI-W para o nó<br />

H, a origem do dado, e a quantida<strong>de</strong> <strong>de</strong> AI-F para os nós E, D e C, que encaminharam<br />

esse dado até ele.<br />

244


Figura 2. Contagem <strong>de</strong> autoindutores no QS 2<br />

4.2. Determinação dos genes dos nós<br />

Na i<strong>de</strong>ntificação dos genes dos nós, o esquema QS 2 verifica a contagem <strong>de</strong> autoindutores<br />

enviada pelos nós e a compara com uma quantia i<strong>de</strong>ntificada como aceitável para a<br />

re<strong>de</strong>. Para isso, estima-se a taxa esperada <strong>de</strong> escritas enviadas por um nó, <strong>de</strong>nominada<br />

k env , e a taxa <strong>de</strong> encaminhamentos <strong>de</strong> escritas, <strong>de</strong>nominadak enc . Essa taxa po<strong>de</strong> ser estimada<br />

<strong>de</strong> acordo com o comportamento <strong>de</strong> escritas dos dados replicados. Ambas as taxas<br />

são calculadas em função <strong>de</strong> um <strong>de</strong>terminado período <strong>de</strong> tempo. A partir <strong>de</strong>ssas taxas,<br />

<strong>de</strong>termina-se os limites <strong>de</strong> envio para os autoindutores AI-W e AI-F. Qualquer nó que<br />

esteja além <strong>de</strong>sses limites é i<strong>de</strong>ntificado como um nó <strong>de</strong> má-conduta.<br />

Este trabalho foca na distribuição <strong>de</strong> dados <strong>de</strong> serviços <strong>de</strong> operação <strong>de</strong> re<strong>de</strong> e,<br />

portanto, assume-se que a taxa <strong>de</strong> envio <strong>de</strong> escritas é <strong>de</strong>finida por uma distribuição<br />

<strong>de</strong> Poisson, <strong>de</strong>vido à a<strong>de</strong>quação <strong>de</strong>ssa distribuição ao comportamento <strong>de</strong>sses serviços<br />

[Luo et al. 2003]. Contudo, o esquema QS 2 po<strong>de</strong> consi<strong>de</strong>rar outras funções <strong>de</strong><br />

distribuição. Dessa forma, consi<strong>de</strong>rando a média λ <strong>de</strong> escritas enviadas por cada nó,<br />

calcula-se os limites <strong>de</strong> envio <strong>de</strong> escrita,k env max, e <strong>de</strong> encaminhamento,k enc min, consi<strong>de</strong>rados<br />

normais para os nós. Um nó é malicioso se ultrapassar o limite máximo permitido<br />

<strong>de</strong> escritas durante um <strong>de</strong>terminado período <strong>de</strong> tempo, e é egoísta se não atingir e sustentar<br />

um limite mínimo <strong>de</strong> escritas encaminhadas. A taxa máxima <strong>de</strong> envio <strong>de</strong> escritask env max<br />

para um nó bom é calculada pela Equação 1, em queδ representa a probabilida<strong>de</strong> do envio<br />

<strong>de</strong> escritas ser menor do que o k env max estimado. A quantida<strong>de</strong> mínima <strong>de</strong> encaminhamentos<br />

para um nó é calculada pela Equação 2, em que γ representa a probabilida<strong>de</strong> dos<br />

nós encaminharem menos <strong>de</strong> k enc min. Os nós egoístas e maliciosos possuem taxas k env e<br />

k enc arbitrárias, e não respeitam as taxas k env max ek enc min <strong>de</strong>finidas pelo esquema.<br />

k∑ env<br />

λ<br />

k env max<br />

×e −λ<br />

k env max!<br />

δ (1)<br />

k∑ enc<br />

λ<br />

k enc min<br />

×e −λ<br />

k enc min!<br />

γ (2)<br />

A Figura 3 ilustra a <strong>de</strong>terminação dos genes dos nós <strong>de</strong> acordo com a contagem<br />

<strong>de</strong> autoindutores pelo nó A, conforme <strong>de</strong>monstra a tabela do nó. Os nós contabilizam<br />

os autoindutores a medida que ocorrem as operações <strong>de</strong> escrita. Supondo que os limites<br />

k env max = 5 escritas por segundo e k enc min = 2 encaminhamentos por segundo, o nó A<br />

classifica os nós B, G, I, L e M como egoístas (C) por estarem abaixo do esperado. Além<br />

disso, o nó B também é classificado como um nó malicioso (M), conforme mostra a tabela,<br />

pois enviou mais escritas do que o esperado nesse período <strong>de</strong> tempo. Com esse cenário, o<br />

245


nó A seleciona os nós D e C para participar da replicação, pois são consi<strong>de</strong>rados bons.<br />

Figura 3. Determinação dos genes no QS 2<br />

4.3. Decisão <strong>de</strong> cooperação<br />

O módulo <strong>de</strong> <strong>de</strong>cisão <strong>de</strong> cooperação seleciona os nós que po<strong>de</strong>m participar das operações<br />

do sistema <strong>de</strong> quórum. Essa <strong>de</strong>cisão tem como base os genes i<strong>de</strong>ntificados pela etapa<br />

<strong>de</strong> <strong>de</strong>terminação dos genes do nó e pelo tipo <strong>de</strong> operação que o nó <strong>de</strong>seja realizar. A<br />

operação <strong>de</strong> leitura, por exemplo, po<strong>de</strong> admitir a escolha <strong>de</strong> um nó egoísta para compor<br />

o quórum <strong>de</strong> leitura. Isso porque a leitura conta com mais nós em um quórum e a máconduta<br />

egoísta <strong>de</strong> um componente não prejudica <strong>de</strong> forma acentuada o andamento da<br />

operação. Porém, isso não é possível em uma operação <strong>de</strong> escrita, em que um nó egoísta<br />

compromete por completo a propagação <strong>de</strong> um dado.<br />

A Figura 4 ilustra a execução da <strong>de</strong>cisão <strong>de</strong> cooperação em operações <strong>de</strong> escrita e<br />

<strong>de</strong> leitura. O nó D escolhe os nós E, F e G para realizar uma operação <strong>de</strong> leitura, enquanto<br />

que o nó J escolhe os nós H e K para realizar uma operação <strong>de</strong> escrita. Supondo que a<br />

tabela apresentada é a mesma para o nó D e J, o nó D escolhe o nó G, apesar <strong>de</strong> ser i<strong>de</strong>ntificado<br />

como egoísta, porque o nó D po<strong>de</strong> completar a requisição <strong>de</strong> leitura corretamente<br />

mesmo que o nó G omita ou modifique essa requisição, <strong>de</strong>vido às características dos sistemas<br />

<strong>de</strong> quóruns. Já o nó J escolhe somente nós bons para as escritas, pois a escrita não<br />

suporta a interação <strong>de</strong> nenhum tipo <strong>de</strong> nó <strong>de</strong> má-conduta.<br />

Figura 4. Decisão <strong>de</strong> cooperação no QS 2<br />

5. Avaliação do esquema QS 2<br />

O esquemaQS 2 foi implementado no simulador <strong>de</strong> re<strong>de</strong>s NS versão 2.33 e adicionado ao<br />

código <strong>de</strong> um sistema <strong>de</strong> quórum probabilístico para MANETs, o PAN, sendo chamado<br />

246


<strong>de</strong> PAN + QS 2 . O esquema foi avaliado consi<strong>de</strong>rando a interferência <strong>de</strong> nós <strong>de</strong> máconduta<br />

nas operações <strong>de</strong> leitura e <strong>de</strong> escrita, na forma <strong>de</strong> ataques <strong>de</strong> falta <strong>de</strong> cooperação,<br />

temporização e injeção <strong>de</strong> dados. Nos ataques <strong>de</strong> falta <strong>de</strong> cooperação, os nós egoístas não<br />

colaboram com as operações <strong>de</strong> replicação. No ataque <strong>de</strong> temporização, os nós maliciosos<br />

atrasam a propagação da escrita, e nos ataques <strong>de</strong> injeção <strong>de</strong> dados eles injetam dados falsos<br />

no sistema. Os nós egoístas e maliciosos agem sempre que são consultados por outros<br />

nós, e <strong>de</strong>ssa forma sua interação com o sistema e a quantida<strong>de</strong> <strong>de</strong> pacotes <strong>de</strong>scartados ou<br />

injetados é probabilística. Os resultados obtidos pelo PAN +QS 2 são comparados com<br />

os resultados do PAN diante <strong>de</strong>sses mesmos ataques, avaliado em [Mannes et al. 2009].<br />

O ambiente <strong>de</strong> re<strong>de</strong> simulado é composto por 50 nós, sendo que meta<strong>de</strong> <strong>de</strong>les<br />

replica os dados entre si e são escolhidos aleatoriamente no início da simulação. Os nós<br />

se comunicam por um canal sem fio, seguindo o mo<strong>de</strong>lo <strong>de</strong> propagação TwoRayGround e<br />

movimentam-se <strong>de</strong> acordo com o mo<strong>de</strong>lo <strong>de</strong> movimentação Random Waypoint, em uma<br />

área <strong>de</strong> 1000m x 1000m. O protocolo <strong>de</strong> roteamento empregado é o AODV, o raio <strong>de</strong><br />

alcance dos nós é <strong>de</strong> 250m e a velocida<strong>de</strong> máxima dos nós varia <strong>de</strong> 2m/s, 5m/s, 10m/s<br />

e 20m/s, com um tempo <strong>de</strong> pausa <strong>de</strong> 10s, 20s, 40s e 80s. O quórum <strong>de</strong> leitura (Q r ) é<br />

composto por quatro servidores e o quórum <strong>de</strong> escrita (Q w ) é formado por todos os nós<br />

que recebem a escrita <strong>de</strong> um dado. As escrita são disseminadas a cadaT = 200ms, e cada<br />

nó dissemina os dados para dois servidores.<br />

Nas simulações, o intervalo <strong>de</strong> envio <strong>de</strong> escritas e leituras <strong>de</strong> cada nó é mo<strong>de</strong>lado<br />

seguindo a distribuição <strong>de</strong> Poisson, com λ = 100 para as escritas e λ = 36 para<br />

as leituras. Desta forma, a quantida<strong>de</strong> máxima <strong>de</strong> escritas permitidas para cada nó é <strong>de</strong><br />

k env max = 0,018 escritas por segundo. Já a quantida<strong>de</strong> mínima k enc min <strong>de</strong> encaminhamento<br />

esperado para cada nó é k enc min = 0,15 encaminhamentos por segundo. Todos<br />

os nós que eventualmente apresentem taxas que não correspon<strong>de</strong>m ao especificado são<br />

consi<strong>de</strong>rados nós <strong>de</strong> má-conduta. A quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta (f) é igual a 20%,<br />

28% e 36%, que correspon<strong>de</strong> a 5, 7 e 9 nós. Os resultados apresentados são as médias <strong>de</strong><br />

35 simulações <strong>de</strong> 1500s cada uma, com um intervalo <strong>de</strong> confiança <strong>de</strong> 95%.<br />

5.1. Métricas <strong>de</strong> avaliação<br />

Foram empregadas quatro métricas para a avaliação doQS 2 diante <strong>de</strong> nós <strong>de</strong> má-conduta.<br />

A primeira <strong>de</strong>las, o grau <strong>de</strong> confiabilida<strong>de</strong> (G c ), quantifica o <strong>de</strong>sempenho do QS 2 , e<br />

representa a quantida<strong>de</strong> <strong>de</strong> leituras corretas obtidas pelos nós. São consi<strong>de</strong>radas corretas<br />

as leituras que obtém um resultado correspon<strong>de</strong>nte a uma escrita previamente realizada<br />

no sistema ou a uma escrita ainda em progresso no momento da leitura. O G c é <strong>de</strong>finido<br />

conforme a Equação 3 em queC r representa as leituras que obtiveram resultados corretos<br />

eRaquantida<strong>de</strong> total <strong>de</strong> requisições <strong>de</strong> leituras emitidas pelos clientes.<br />

G c =<br />

∑<br />

Cr<br />

|R|<br />

(3)<br />

As próximas métricas buscam aferir a eficiência <strong>de</strong> <strong>de</strong>tecção doQS 2 . Deste modo,<br />

a Taxa <strong>de</strong> <strong>de</strong>tecção (Tx <strong>de</strong>t ) representa a quantida<strong>de</strong> <strong>de</strong> vezes em que os nós <strong>de</strong> má-conduta<br />

foram <strong>de</strong>tectados em razão da quantida<strong>de</strong> <strong>de</strong> consultas a eles. A Tx <strong>de</strong>t é contabilizada<br />

para os ataques <strong>de</strong> falta <strong>de</strong> cooperação e injeção <strong>de</strong> dados nas escritas. Ela é calculada <strong>de</strong><br />

acordo com a Equação 4, em que A representa o conjunto <strong>de</strong> todas as interações <strong>de</strong> nós<br />

247


<strong>de</strong> má-conduta e os respectivos resultados obtidos pelo QS 2 , dado na forma <strong>de</strong> A(d,a),<br />

em quedéoresultado da <strong>de</strong>tecção doQS 2 eaéaverda<strong>de</strong>ira condição do nói.<br />

Tx <strong>de</strong>t =<br />

∑<br />

Di<br />

|A|<br />

∀i ∈ A on<strong>de</strong> D i =<br />

{<br />

1 se di = a i<br />

0 se d i ≠ a i<br />

(4)<br />

A taxa <strong>de</strong> falsos negativos (Tx fn ) apresenta a quantida<strong>de</strong> <strong>de</strong> vezes em que nós<br />

egoístas ou maliciosos foram i<strong>de</strong>ntificados como nós bons em razão da quantida<strong>de</strong> <strong>de</strong><br />

interação dos nós <strong>de</strong> má-conduta. Essa métrica é calculada pela Equação 5, em que A<br />

é o conjunto <strong>de</strong> todas as interações <strong>de</strong> nós <strong>de</strong> má-conduta no sistema e os respectivos<br />

resultados obtidos peloQS 2 , dado na forma <strong>de</strong>A(d,a), em quedéoresultado da <strong>de</strong>tecção<br />

realizada pelo QS 2 eaéaverda<strong>de</strong>ira condição do nói.<br />

Tx fn =<br />

∑<br />

Di<br />

|A|<br />

∀i ∈ A on<strong>de</strong> D i =<br />

{ 1 se di ≠ a i<br />

0 se d i = a i<br />

(5)<br />

A taxa <strong>de</strong> falsos positivos (Tx fp ) representa a quantida<strong>de</strong> <strong>de</strong> vezes que os nós<br />

consi<strong>de</strong>raram um nó como malicioso ou egoísta em razão da quantida<strong>de</strong> <strong>de</strong> interação<br />

dos nós bons no sistema. A Tx fp é calculada <strong>de</strong> acordo com a Equação 6, em que B<br />

representa o conjunto <strong>de</strong> interações <strong>de</strong> nós bons no sistema, na forma <strong>de</strong>B = (d,a), on<strong>de</strong><br />

d representa o valor da <strong>de</strong>tecção realizada pelo QS 2 e a é a condição real do nó, on<strong>de</strong><br />

a = 1 representa um nó <strong>de</strong> má-conduta ea = 0 representa um nó bom.<br />

Tx fp =<br />

∑<br />

Di<br />

|B|<br />

∀i ∈ B on<strong>de</strong> D i =<br />

{ 1 se di ≠ a i<br />

0 se d i = a i<br />

(6)<br />

As subseções seguintes apresentam os resultados da avaliação <strong>de</strong> <strong>de</strong>sempenho e<br />

<strong>de</strong> eficiência do QS 2 obtidas através <strong>de</strong> simulações.<br />

5.2. Desempenho<br />

As Figuras 5 e 6 comparam os resultados para a métrica G c obtidos pelo PAN e pelo<br />

PAN+QS 2 diante dos ataques <strong>de</strong> falta <strong>de</strong> cooperação, temporização e injeção <strong>de</strong> dados.<br />

Nos ataques <strong>de</strong> falta <strong>de</strong> cooperação, o uso do esquemaQS 2 representa um aumento <strong>de</strong> até<br />

14% em relação aoG c obtido pelo PAN sem oQS 2 , sendo que a confiabilida<strong>de</strong> dos dados<br />

em cenários com ataques nas escritas é acima <strong>de</strong> 95% e para ataques nas leituras é acima<br />

<strong>de</strong> 98%, mesmo consi<strong>de</strong>rando a ação egoísta <strong>de</strong> 36% dos nós. É interessante observar que<br />

a velocida<strong>de</strong> e a quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta na re<strong>de</strong> têm uma influência menor no<br />

PAN+QS 2 , mostrada na Figura 6(a), do que sem a solução, apresentada na Figura 5(a).<br />

A variação entre o G c obtido com nós a 2m/s e com 20m/s é menor que 2%. Essa característica<br />

é importante, pois a velocida<strong>de</strong> dos nós não interfere no funcionamento do<br />

QS 2 . De fato, a mobilida<strong>de</strong> garante que os nós recebam dados por rotas diferentes, e<br />

contabilizem as escritas e os encaminhamentos <strong>de</strong> diferentes nós.<br />

Já o ataque <strong>de</strong> temporização não apresenta um gran<strong>de</strong> impacto no PAN, como<br />

ilustra a Figura 5(b), e por isso, oQS 2 não apresenta um aumento significativo nos resultados.<br />

Isso também é influenciado pelo fato <strong>de</strong> que o QS 2 não i<strong>de</strong>ntifica especificamente<br />

os nós que atrasam a propagação, que são consi<strong>de</strong>rados egoístas como consequência do<br />

seu comportamento na re<strong>de</strong>. Porém, a classificação <strong>de</strong>les como nós egoístas é <strong>de</strong>morada,<br />

248


(a) Falta <strong>de</strong> cooperação<br />

(b) Temporização<br />

(c) Injeção <strong>de</strong> dados<br />

100<br />

Leitura<br />

Escrita<br />

100<br />

f=5 f=7 f=9<br />

100<br />

Leitura<br />

Escrita<br />

90<br />

90<br />

90<br />

80<br />

80<br />

80<br />

70<br />

70<br />

70<br />

Gc (%)<br />

60<br />

50<br />

40<br />

60<br />

50<br />

40<br />

60<br />

50<br />

40<br />

30<br />

30<br />

30<br />

20<br />

20<br />

20<br />

10<br />

10<br />

10<br />

0<br />

5 7 9 5 7 9 5 7 9 5 7 9<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

0<br />

4 8 30 4 8 30 4 8 30 4 8 30<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

0<br />

5 7 9 5 7 9 5 7 9 5 7 9<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

Figura 5. G c do PAN diante <strong>de</strong> ataques<br />

(a) Falta <strong>de</strong> cooperação<br />

(b) Temporização<br />

(c) Injeção <strong>de</strong> dados<br />

100<br />

Leitura<br />

Escrita<br />

100<br />

f=5 f=7 f=9<br />

100<br />

Leitura<br />

Escrita<br />

90<br />

90<br />

90<br />

80<br />

80<br />

80<br />

70<br />

70<br />

70<br />

Gc (%)<br />

60<br />

50<br />

40<br />

60<br />

50<br />

40<br />

60<br />

50<br />

40<br />

30<br />

30<br />

30<br />

20<br />

20<br />

20<br />

10<br />

10<br />

10<br />

0<br />

5 7 9 5 7 9 5 7 9 5 7 9<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

0<br />

4 8 30 4 8 30 4 8 30 4 8 30<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

0<br />

5 7 9 5 7 9 5 7 9 5 7 9<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

Figura 6. G c do PAN +QS 2 diante <strong>de</strong> ataques<br />

sendo que em alguns cenários o G c obtido pelo PAN + QS 2 é ligeiramente inferior do<br />

que no PAN, apresentado na Figura 6(b). Porém essa variação é pequena, aproximadamente<br />

0,42%. Conforme os nós <strong>de</strong> má-conduta aumentam o atraso das propagações, o<br />

QS 2 apresenta um ganho mais acentuado do G c , aproximadamente 1,8% em cenários<br />

com atraso <strong>de</strong> 800ms e 2% com T = 3000ms. Mesmo assim, em todos os cenários, o G c<br />

obtido está acima <strong>de</strong> 95%.<br />

Já os ataques <strong>de</strong> injeção <strong>de</strong> dados representam a maior vulnerabilida<strong>de</strong> do PAN,<br />

como mostra a Figura 5(c). Nesses cenários, a confiabilida<strong>de</strong> dos dados é inferior a 30%.<br />

Logo, o uso doQS 2 diante <strong>de</strong>sses ataques resultou em um ganho significativo para o PAN,<br />

que obteve um aumento <strong>de</strong> até 87% na confiabilida<strong>de</strong>, como ilustrado na Figura 6(c). Esse<br />

comportamento ocorre tanto nos ataques nas escritas como nas leituras, sendo que oG c é<br />

maior para as leituras, já que as escritas comprometem <strong>de</strong> forma mais eficaz a replicação.<br />

Mesmo assim, as escritas em todos os cenários mantém o G c acima <strong>de</strong> 80%.<br />

Ainda no ataque <strong>de</strong> injeção <strong>de</strong> dados falsos, o G c possui um comportamento diferente<br />

dos ataques <strong>de</strong> falta <strong>de</strong> cooperação e temporização, ocasionado pelas próprias<br />

características da re<strong>de</strong>. Elas fazem com que o PAN +QS 2 obtenha níveis mais altos <strong>de</strong><br />

G c com velocida<strong>de</strong>s maiores. Esse comportamento também é observado no PAN diante<br />

<strong>de</strong> ataques, e acontece porque nesse tipo <strong>de</strong> ataque os nós maliciosos per<strong>de</strong>m sua eficácia<br />

em velocida<strong>de</strong>s maiores, <strong>de</strong>vido à dificulda<strong>de</strong> na entrega <strong>de</strong> pacotes em geral, inclusive<br />

<strong>de</strong> pacotes falsos injetados pelos nós maliciosos. A perda <strong>de</strong> pacotes também influencia<br />

na <strong>de</strong>tecção <strong>de</strong> nós que estejam com dificulda<strong>de</strong> <strong>de</strong> comunicação, que também po<strong>de</strong>m ser<br />

consi<strong>de</strong>rados egoístas. Neste caso, o QS 2 ajuda o sistema a manter os dados em nós cuja<br />

conectivida<strong>de</strong> é boa, facilitando uma posterior consulta pelos clientes.<br />

249


Para verificar o <strong>de</strong>sempenho do QS 2 diante dos vários tipos <strong>de</strong> ataque em conjunto,<br />

foi simulado um cenário em que os nós iniciam os três tipos <strong>de</strong> ataques consi<strong>de</strong>rados.<br />

Foram simulados cenários com f igual a 5, 10 e 15, sendo que cada ataque é<br />

<strong>de</strong>sempenhado por 20% do total <strong>de</strong> nós maliciosos. Os ataques consi<strong>de</strong>rados são os <strong>de</strong><br />

falta <strong>de</strong> cooperação nas leituras e nas escritas, temporização (T =3000) e injeção <strong>de</strong> dados<br />

na leitura e na escrita. A velocida<strong>de</strong> média dos nós varia <strong>de</strong> 0m/s a 20m/s. Os <strong>de</strong>mais<br />

parâmetros são os mesmos utilizados na avaliação doPAN +QS 2<br />

A Figura 7 apresenta os resultados obtidos com esses cenários. Observa-se que<br />

conforme a quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta aumenta, o G c diminui, porém enquanto<br />

a quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta é a mesma, a variação do G c <strong>de</strong> acordo com a velocida<strong>de</strong><br />

é pequena, o que evi<strong>de</strong>ncia que a solução ten<strong>de</strong> a manter um mesmo nível <strong>de</strong><br />

leituras corretamente concluídas, in<strong>de</strong>pen<strong>de</strong>nte da velocida<strong>de</strong>. Essa variação, em todos<br />

os cenários <strong>de</strong> diferentes quantida<strong>de</strong>s <strong>de</strong> nós <strong>de</strong> má-conduta, é <strong>de</strong> aproximadamente 1%.<br />

Esse comportamento representa uma vantagem ao sistema, já que os nós das MANETs<br />

po<strong>de</strong>m variar a velocida<strong>de</strong> e oPAN +QS 2 mantém a confiabilida<strong>de</strong> acima <strong>de</strong> 92% para<br />

todos os cenários simulados, mesmo diante <strong>de</strong> mais <strong>de</strong> 50% dos nós comprometidos.<br />

100<br />

99<br />

f=20%<br />

f=40%<br />

f=60%<br />

98<br />

97<br />

96<br />

Gc (%)<br />

95<br />

94<br />

93<br />

92<br />

91<br />

90<br />

−1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21<br />

Velocida<strong>de</strong> máxima (m/s)<br />

Figura 7. G c com nós egoístas e maliciosos em conjunto<br />

5.3. Eficiência<br />

As Figuras 8 e 9 apresentam os resultados <strong>de</strong> Tx <strong>de</strong>t , Tx fn e Tx fp para nós egoístas e<br />

maliciosos, referente aos cenários <strong>de</strong> simulação utilizados para a validação do PAN +<br />

QS 2 . Para os nós egoístas, a taxa <strong>de</strong> <strong>de</strong>tecção obtida peloQS 2 é superior a 98,5%, como<br />

ilustra a Figura 8(a). Isso se <strong>de</strong>ve à característica do QS 2 , em que uma vez i<strong>de</strong>ntificado<br />

como egoísta, um nó só é consi<strong>de</strong>rado bom novamente se cooperar com os <strong>de</strong>mais. Essa<br />

taxa <strong>de</strong> <strong>de</strong>tecção se mantém para todas as velocida<strong>de</strong>s e quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta<br />

presentes no ambiente. Para os nós maliciosos, a taxa <strong>de</strong> <strong>de</strong>tecção é em média <strong>de</strong> 80%,<br />

conforme ilustrado na Figura 9(a). Essa diferença <strong>de</strong> <strong>de</strong>tecção entre os nós egoístas e<br />

maliciosos ocorre porque oQS 2 i<strong>de</strong>ntifica os nós maliciosos pelo comportamento em um<br />

<strong>de</strong>terminado intervalo <strong>de</strong> tempo, e com o passar do tempo, os nós maliciosos não são mais<br />

contatados, diminuindo a interação <strong>de</strong>les com o sistema. Isso resulta na normalização do<br />

nível <strong>de</strong> autoindutores relativo ao nó malicioso nos <strong>de</strong>mais nós do sistema, ocasionando<br />

os nós bons a interagir novamente com eles.<br />

Os falsos negativos obtidos pelo QS 2 na <strong>de</strong>tecção <strong>de</strong> nós egoístas, apresentado<br />

na Figura 8(b), é inferior a 2%. Isso mostra que poucos nós egoístas não são <strong>de</strong>tectados<br />

quando selecionados. A falha na <strong>de</strong>tecção <strong>de</strong> um nó egoísta po<strong>de</strong> acontecer <strong>de</strong>vido a autonomia<br />

na <strong>de</strong>tecção, que permite que os nós contem individualmente os autoindutores,<br />

250


(a) Taxa <strong>de</strong> <strong>de</strong>tecção<br />

(b) Falsos negativos<br />

(c) Falsos positivos<br />

100<br />

90<br />

80<br />

100<br />

90<br />

80<br />

100<br />

90<br />

80<br />

f=5<br />

f=7<br />

f=9<br />

70<br />

70<br />

70<br />

Tx <strong>de</strong>t (%)<br />

60<br />

50<br />

40<br />

Tx fn (%)<br />

60<br />

50<br />

40<br />

Tx fp (%)<br />

60<br />

50<br />

40<br />

30<br />

30<br />

30<br />

20<br />

20<br />

20<br />

10<br />

10<br />

10<br />

0<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

0<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

0<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

Figura 8. Eficiência na <strong>de</strong>tecção <strong>de</strong> nós egoístas<br />

(a) Taxa <strong>de</strong> <strong>de</strong>tecção<br />

(b) Falsos negativos<br />

(c) Falsos positivos<br />

100<br />

90<br />

80<br />

100<br />

90<br />

80<br />

100<br />

90<br />

80<br />

f=5<br />

f=7<br />

f=9<br />

70<br />

70<br />

70<br />

Tx <strong>de</strong>t (%)<br />

60<br />

50<br />

40<br />

Tx fn (%)<br />

60<br />

50<br />

40<br />

Tx fp (%)<br />

60<br />

50<br />

40<br />

30<br />

30<br />

30<br />

20<br />

20<br />

20<br />

10<br />

10<br />

10<br />

0<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

0<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

0<br />

2m/s 5m/s 10m/s 20m/s<br />

Velocida<strong>de</strong> máxima<br />

Figura 9. Eficiência na <strong>de</strong>tecção <strong>de</strong> nós maliciosos<br />

e <strong>de</strong>ssa forma, alguns nós po<strong>de</strong>m <strong>de</strong>morar a i<strong>de</strong>ntificar <strong>de</strong>terminados nós como egoístas.<br />

Para os nós maliciosos, os falsos negativos são <strong>de</strong> aproximadamente 20%, conforme apresentado<br />

pela Figura 9(b), sendo menor em cenários com menos nós <strong>de</strong> má-conduta participando<br />

na re<strong>de</strong>. Esse aumento <strong>de</strong> falsos negativos no ataque <strong>de</strong> injeção <strong>de</strong> dados acontece<br />

pela normalização dos autoindutores <strong>de</strong> escrita, já explicada anteriormente.<br />

A taxa <strong>de</strong> falsos positivos obtidos pelo QS 2 , tanto na <strong>de</strong>tecção <strong>de</strong> nós egoístas,<br />

ilustrada na Figura 8(c), quanto <strong>de</strong> nós maliciosos, ilustrada na Figura 9(c), é inferior<br />

a 2%. Algumas <strong>de</strong>tecções equivocadas são esperadas e po<strong>de</strong>m acontecer se um nó está<br />

muito distante na re<strong>de</strong> e apresenta dificulda<strong>de</strong> em interagir com o restante da re<strong>de</strong>, ou<br />

se um nó faz muitas escritas contínuas para o mesmo grupo <strong>de</strong> nós. Deste modo, momentaneamente<br />

eles são consi<strong>de</strong>rados nós <strong>de</strong> má-conduta, porém conforme ocorre a<br />

movimentação e a interação dos nós, eventualmente eles são i<strong>de</strong>ntificados como nós bons.<br />

6. Conclusão<br />

Este artigo propôs QS 2 , um esquema para a exclusão <strong>de</strong> nós egoístas e maliciosos das<br />

operações <strong>de</strong> escrita e <strong>de</strong> leitura em um sistema <strong>de</strong> quórum para MANETs. O QS 2 é inspirado<br />

nos mecanismos <strong>de</strong> sensoriamento em quórum e <strong>de</strong> seleção por parentesco, ambos<br />

encontrados em bactérias. Ele i<strong>de</strong>ntifica os nós <strong>de</strong> má-conduta <strong>de</strong> forma in<strong>de</strong>pen<strong>de</strong>nte<br />

através da quantida<strong>de</strong> <strong>de</strong> escritas e encaminhamentos enviados por outros nós e não requer<br />

a troca <strong>de</strong> informações <strong>de</strong> reputação entre eles. Além disso, esse esquema utiliza a<br />

própria troca <strong>de</strong> mensagens <strong>de</strong> escrita para a <strong>de</strong>tecção dos nós <strong>de</strong> má-conduta, o que não<br />

gera maiores custos <strong>de</strong> comunicação para os nós da re<strong>de</strong>.<br />

Os resultados obtidos mostram que o QS 2 aumentou a confiabilida<strong>de</strong> <strong>de</strong> um sis-<br />

251


tema <strong>de</strong> quórum para MANETs em até 87% diante <strong>de</strong> ataques <strong>de</strong> injeção <strong>de</strong> dados nas<br />

escritas. A <strong>de</strong>tecção <strong>de</strong> nós egoístas apresentou uma eficácia <strong>de</strong> 98,5% com uma taxa<br />

<strong>de</strong> falsos positivos menor que 2%, e a <strong>de</strong>tecção <strong>de</strong> nós maliciosos obteve uma eficácia <strong>de</strong><br />

80%, com uma taxa <strong>de</strong> falsos positivos inferior a 1%. Como trabalhos futuros, preten<strong>de</strong>-se<br />

testar o uso do QS 2 em outros cenários <strong>de</strong> MANETs, variando parâmetros como velocida<strong>de</strong>,<br />

quantida<strong>de</strong> <strong>de</strong> nós e quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta presente na re<strong>de</strong>.<br />

Referências<br />

Bellavista, P., Corradi, A., and Magistretti, E. (2005). Redman: An optimistic replication middleware for<br />

read-only resources in <strong>de</strong>nse manets. Pervasive Mobile Computing, 1:279–310.<br />

Derhab, A. and Badache, N. (2009). Data replication protocols for mobile ad-hoc networks: a survey and<br />

taxonomy. IEEE Communications Surveys and Tutorials, 11:33–51.<br />

Gramoli, V. and Raynal, M. (2007). Timed Quorum Systems for Large-Scale and Dynamic Environments,<br />

pages 429–442.<br />

Luo, J., Hubaux, J.-P., and Eugster, P. T. (2003). PAN: Providing reliable storage in mobile ad hoc networks<br />

with probabilistic quorum systems. In Proceedings of the 4th ACM International Symposium on Mobile<br />

Ad Hoc Networking and Computing (MobiHoc ’03), pages 1–12.<br />

Malkhi, D. and Reiter, M. (1997). Byzantine quorum systems. In Proceedings of the 29th Annual ACM<br />

Symposium on Theory of Computing (STOC ’97), pages 569–578.<br />

Malkhi, D., Reiter, M., Wool, A., and Wright, R. N. (1998). Probabilistic byzantine quorum systems. In<br />

Proceedings of the seventeenth annual ACM symposium on Principles of distributed computing, PODC<br />

’98, pages 321–322.<br />

Mannes, E., da Silva, E., and dos Santos, A. L. (2009). Analisando o <strong>de</strong>sempenho <strong>de</strong> um sistema <strong>de</strong><br />

quóruns probabilístico para manets diante <strong>de</strong> ataques maliciosos. In <strong>Anais</strong> do IX Simpósio Brasileiro em<br />

Segurança da Informação e <strong>de</strong> Sistemas Computacionais (SBSeg ’09), pages 71–84.<br />

Meisel, M., Pappas, V., and Zhang, L. (2010). A taxonomy of biologically inspired research in computer<br />

networking. Computer Networks, 54:901–916.<br />

Ng, W.-L. L. and Bassler, B. L. (2009). Bacterial quorum-sensing network architectures. Annual Review of<br />

Genetics, 43(1):197–222.<br />

Saito, Y. and Shapiro, M. (2005). Optimistic replication. ACM Computer Survey, 37:42–81.<br />

Salmon, H. M., Miceli, C., Pirmez, L., Rossetto, S., Rodrigues, P. H. A., Pirmez, R., Delicato, F. C.,<br />

and Carmo, L. F. (2010). Sistema <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão imuno-inspirado customizado para re<strong>de</strong>s <strong>de</strong><br />

sensores sem fio. In Simpósio Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais<br />

(SBSeg ’10), pages 269–282.<br />

Tulone, D. (2007). Ensuring strong data guarantees in highly mobile ad hoc networks via quorum systems.<br />

Ad Hoc Networks, 5(8):1251–1271.<br />

Yang, H., Meng, X., and Lu, S. (2002). Self-organized network-layer security in mobile ad hoc networks.<br />

In Proceedings of the 1st ACM workshop on Wireless security (WiSE ’02), pages 11–20.<br />

Zhang, C., Song, Y., and Fang, Y. (2008). Mo<strong>de</strong>ling secure connectivity of self-organized wireless ad hoc<br />

networks. In Proceedings of the 27th Annual Joint Conference of the IEEE Computer and Communications<br />

Societies (INFOCOM ’08).<br />

Zhu, Z., Tan, Q., and Zhu, P. (2007). An effective secure routing for false data injection attack in wireless<br />

sensor network. In Managing Next Generation Networks and Services, volume 4773, pages 457–465.<br />

252


Aumentando a segurança do MD6 em relação aos ataques<br />

diferenciais<br />

Valdson S. Cleto 1 , Routo Terada 1<br />

1 Instituto <strong>de</strong> Matemática e Estatística – Universida<strong>de</strong> <strong>de</strong> São Paulo (USP)<br />

São Paulo – SP – Brazil<br />

vcleto@gmail.com, rt@ime.usp.br<br />

Abstract. This paper proposes a modification on the compression function of<br />

the MD6 hash function that increases the security of the function regarding the<br />

differential attacks. Such modification enables a reduction of up to 28% in the<br />

number of rounds nee<strong>de</strong>d to <strong>de</strong>monstrate the strength of the MD6 compression<br />

function against differential attacks.<br />

Resumo. Este artigo propõe uma modificação na função <strong>de</strong> compressão da<br />

função <strong>de</strong> hash MD6 para aumentar a segurança da função em relação aos<br />

ataques diferenciais. Tal modificação possibilita uma redução <strong>de</strong> até 28% no<br />

número <strong>de</strong> rodadas necessárias para a <strong>de</strong>monstração da resistência da função<br />

<strong>de</strong> compressão do MD6 aos ataques diferenciais.<br />

1. Introdução<br />

A função <strong>de</strong> hash MD6 foi apresentada em outubro <strong>de</strong> 2008 por [Rivest et al. 2008] como<br />

uma candidata para a competição organizada pelo instituto norte-americano NIST (National<br />

Institute of Standards and Technology) para a escolha <strong>de</strong> um novo algoritmo <strong>de</strong> hash<br />

padrão, que receberá o título <strong>de</strong> SHA-3 (o algoritmo padrão <strong>de</strong> hash atual é o SHA-2).<br />

Porém, em julho <strong>de</strong> 2009 Ron Rivest emitiu um comunicado (http:<br />

//groups.csail.mit.edu/cis/md6/OFFICIAL_COMMENT_MD6_<br />

2009-07-01.txt) informando que naquele momento o MD6 não aten<strong>de</strong>ria os<br />

requisitos <strong>de</strong> velocida<strong>de</strong> necessários para um candidato a SHA-3 e portanto não recomendava<br />

que o MD6 passasse para a segunda fase da competição. Então o MD6 não<br />

apareceu na lista dos candidatos que passaram à segunda fase.<br />

O NIST estabeleceu que, para ser competitivo, um candidato a SHA-3 precisaria<br />

ser no mínimo tão rápido quanto o SHA-2 em plataformas <strong>de</strong> referência. Embora o MD6<br />

seja muito rápido em sistemas multiprocessados, nas plataformas <strong>de</strong> referência ele é bem<br />

mais lento que o SHA-2.<br />

Ron Rivest alertou os organizadores da competição que o algoritmo <strong>de</strong> SHA-3 que<br />

viesse a ser escolhido <strong>de</strong>veria ser <strong>de</strong>monstravelmente resistente a ataques diferenciais,<br />

visto que foi o po<strong>de</strong>r surpreen<strong>de</strong>nte dos ataques diferenciais que estimulou a competição<br />

para escolha do SHA-3.<br />

O que torna o MD6 significativamente mais lento que os outros competidores nas<br />

plataformas <strong>de</strong> referência é o número <strong>de</strong> rodadas da função <strong>de</strong> compressão que teve que<br />

ser adotado justamente para torná-lo <strong>de</strong>monstravelmente resistente a ataques diferenciais.<br />

253


A <strong>de</strong>monstração da resistência do MD6 a ataques diferenciais é apresentada na<br />

seção 6.9 em [Rivest et al. 2008]. Ao final <strong>de</strong>ssa seção são sugeridas algumas possibilida<strong>de</strong>s<br />

<strong>de</strong> investigação para se tentar <strong>de</strong>monstrar a resistência do MD6 a ataques diferencias<br />

com um número menor <strong>de</strong> rodadas. O resultado da investigação <strong>de</strong> uma <strong>de</strong>ssas<br />

possibilida<strong>de</strong>s foi a <strong>de</strong>scoberta <strong>de</strong> uma modificação na função <strong>de</strong> compressão do MD6<br />

que permite que a <strong>de</strong>monstração da resistência do MD6 a ataques diferencias seja feita<br />

com uma redução <strong>de</strong> até 28% no número <strong>de</strong> rodadas, o que resulta na possibilida<strong>de</strong> <strong>de</strong><br />

aumentar a velocida<strong>de</strong> <strong>de</strong> processamento do MD6 praticamente nesta mesma proporção.<br />

2. Demonstração da resistencia do MD6 a ataques diferenciais<br />

A investigação apresentada nesse artigo foi feita a partir da <strong>de</strong>monstração da resistência<br />

do MD6 a ataques diferenciais apresentada em [Rivest et al. 2008] na seção 6.9. Nesta<br />

seção será apresentada uma visão geral <strong>de</strong>ssa <strong>de</strong>monstração.<br />

Para a <strong>de</strong>monstração é feita uma análise da resistência da função <strong>de</strong> compressão<br />

do MD6 a ataques diferenciais que buscam encontrar uma colisão na função <strong>de</strong> hash. Estes<br />

ataques consistem em se escolher pares <strong>de</strong> mensagens <strong>de</strong> entrada com <strong>de</strong>terminadas<br />

diferenças tentando-se encontrar um par tal que o par <strong>de</strong> resumo da mensagem na saída<br />

da função <strong>de</strong> hash não tenha diferença, o que significa encontrar uma colisão. Se a probabilida<strong>de</strong><br />

<strong>de</strong> se encontrar esse par <strong>de</strong> mensagens não é <strong>de</strong>sprezível, então calculando-se<br />

o resumo das mensagens <strong>de</strong> uma quantida<strong>de</strong> suficiente <strong>de</strong> pares <strong>de</strong> mensagens <strong>de</strong> entrada<br />

po<strong>de</strong>-se encontrar uma colisão.<br />

A função <strong>de</strong> compressão do MD6 po<strong>de</strong> ser representada pelo algoritmo 1.<br />

Algoritmo 1 Função <strong>de</strong> compressão<br />

Entrada: A[0 · · · 88] <strong>de</strong> A[0 · · · 16r + 88]<br />

para i = 89 a 16r + 88 :<br />

x = S i ⊕ A[i − 17] ⊕ A[i − 89] ⊕ (A[i − 18] ∧ A[i − 21]) ⊕ (A[i − 31] ∧ A[i − 67])<br />

x = x ⊕ (x >> r i )<br />

A[i] = x ⊕ (x


Tabela 1. Quantida<strong>de</strong> <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />

r i 10 5 13 10 11 12 2 7 14 15 7 13 11 7 6 12<br />

l i 11 24 9 16 15 9 27 15 6 2 29 8 15 5 31 9<br />

<strong>de</strong> hash. A forma <strong>de</strong> medida mais utilizada é o ou-exclusivo, e é a forma utilizada nessa<br />

<strong>de</strong>monstração.<br />

Um caminho diferencial é um conjunto <strong>de</strong> diferenças entre o par <strong>de</strong> entradas, todos<br />

os estados intermediários e o par <strong>de</strong> saídas. Para o MD6 po<strong>de</strong>mos expressar um caminho<br />

diferencial como: ∆A i para i = 0, . . . , t + n − 1.<br />

É fácil notar que um caminho diferencial <strong>de</strong> colisão é um caminho on<strong>de</strong> ∆A i = 0<br />

para i = t + n − c, . . . , t + n − 1.<br />

A proprieda<strong>de</strong> mais importante <strong>de</strong> um caminho diferencial é a sua probablida<strong>de</strong><br />

associada. A probabilida<strong>de</strong> <strong>de</strong> um <strong>de</strong>terminado passo i <strong>de</strong> um caminho diferencial, p i , é<br />

<strong>de</strong>finida como a probabilida<strong>de</strong> <strong>de</strong> que o par <strong>de</strong> saída do passo siga o caminho diferencial,<br />

dado que o par <strong>de</strong> entrada satisfaz a diferença especificada pelo caminho diferencial.<br />

A probabilida<strong>de</strong> total <strong>de</strong> um caminho diferencial, p, é o produto das probabilida<strong>de</strong><br />

em todos os passos, se for assumido que o cálculo dos passos são in<strong>de</strong>pen<strong>de</strong>ntes entre si.<br />

Definimos D i como o peso <strong>de</strong> Hamming <strong>de</strong> uma <strong>de</strong>terminada diferença ∆A i , ou<br />

seja, o número <strong>de</strong> bits diferentes entre A i e A ′ i, ou D i = |∆A i |. Então, para um caminho<br />

diferencial {∆A i } <strong>de</strong>finimos um caminho diferencial <strong>de</strong> padrão <strong>de</strong> peso como {D i }.<br />

2.1. Análise das proprieda<strong>de</strong>s diferencias das operações da função <strong>de</strong> compressão<br />

Cada rodada da função <strong>de</strong> compressão do MD6 é composta por 16 passos e em cada passo<br />

uma nova palavra <strong>de</strong> 64 bits é calculada Para a análise das proprieda<strong>de</strong>s diferenciais <strong>de</strong><br />

cada uma das 3 diferentes operações contidas em cada passo: XOR, AND e o operador g,<br />

que representa as operações <strong>de</strong> <strong>de</strong>slocamentos <strong>de</strong> bits, será adotada a seguinte notação:<br />

• X, Y, Z para as entradas e saídas <strong>de</strong> w bits<br />

• ∆X, ∆Y, ∆Z para as diferenças<br />

• D X , D Y , D Z para os pesos <strong>de</strong> Hamming<br />

• x, y, z para um bit <strong>de</strong> palavras <strong>de</strong> w bits<br />

A proprieda<strong>de</strong> diferencial da operação XOR é direta, ∆Z = ∆X ⊕ ∆Y . Em<br />

termos do peso <strong>de</strong> Hamming, temos que: max(D X , D Y ) − min(D X , D Y ) ≤ D Z ≤<br />

D X + D Y .<br />

Uma operação AND entre duas paravras <strong>de</strong> w bits po<strong>de</strong> ser vista como um conjunto<br />

<strong>de</strong> w portas AND in<strong>de</strong>pen<strong>de</strong>ntes. Se os bits <strong>de</strong> entrada <strong>de</strong> cada porta AND forem<br />

x e y e a saída for z, o comportamento diferencial da porta AND <strong>de</strong>pen<strong>de</strong> das diferenças<br />

nas entradas, ou seja, ∆x e ∆y. Consi<strong>de</strong>ramos estes dois casos:<br />

• Chamamos <strong>de</strong> porta AND “inativa” quando ∆x = ∆y = 0 e portanto temos que<br />

Pr[∆z = 0] = 1.<br />

• Chamamos <strong>de</strong> porta AND “ativa” quando ∆x = 1 ou ∆y = 1 e portanto temos<br />

que Pr[∆z = 0] = Pr[∆z = 1] = 1/2<br />

255


Em termos do peso <strong>de</strong> Hamming, temos que:<br />

0 ≤ D Z ≤ D X + D Y (1)<br />

As portas AND ativas, ou AAG’s, do inglês, Active AND Gates, serão fundamentais<br />

na <strong>de</strong>monstração da carga <strong>de</strong> trabalho mínima <strong>de</strong> um ataque diferencial, já que<br />

esta é a única operação não trivial em termos <strong>de</strong> probabilida<strong>de</strong>s diferenciais. Uma porta<br />

AND ativa (AAG) sempre contribui com um probabilida<strong>de</strong> igual a 1/2 para a probabilida<strong>de</strong><br />

total do caminho diferencial, não importa qual seja a diferença <strong>de</strong> saída da porta<br />

AND. O número total <strong>de</strong> portas AND ativas em um caminho diferencial está diretamente<br />

relacionado à probabilida<strong>de</strong> total do caminho.<br />

O operador g r,l faz um espalhamento dos bits <strong>de</strong>ntro <strong>de</strong> uma palavra. Sabemos<br />

que se Z = g r,l (X), então ∆Z = g r,l (∆X).<br />

A combinação <strong>de</strong> um <strong>de</strong>slocamento e um XOR po<strong>de</strong> no máximo dobrar o número<br />

<strong>de</strong> diferenças, como são realizadas duas combinações <strong>de</strong> operações (uma com <strong>de</strong>slocamento<br />

pra direita e outra com <strong>de</strong>slocamento pra esquerda) temos que: D Z ≤ 4D X .<br />

Cada par <strong>de</strong> quantida<strong>de</strong> <strong>de</strong> <strong>de</strong>slocamentos (r, l) foi escolhido <strong>de</strong> forma que se<br />

0 < D X ≤ 4 então D Z ≥ 2.<br />

Ou seja, para que a diferença na saída seja <strong>de</strong> apenas um bit é necessário que a<br />

diferença na entrada seja <strong>de</strong> 5 ou mais bits. Isto foi projetado <strong>de</strong>sta forma para impedir<br />

a propagação <strong>de</strong> diferenças <strong>de</strong> apenas um bit, dificultando a obtenção <strong>de</strong> caminhos diferenciais<br />

com pesos <strong>de</strong> Hamming muito baixos, sendo impossivel conseguir um caminho<br />

on<strong>de</strong> todos os pesos são no máximo 1.<br />

Se D X > 4 então D Z > 0, já que se existem diferenças na entrada <strong>de</strong>vem existir<br />

diferenças na saída.<br />

Vamos agora combinar em duas partes as operações executadas em um passo:<br />

X = A i−t0 ⊕ A i−t5 ⊕ (A i−t1 ∧ A i−t2 ) ⊕ (A i−t3 ∧ A i−t4 ), (2)<br />

A i = g(X). (3)<br />

Usando as <strong>de</strong>sigualdadas apresentadas para cada operação po<strong>de</strong>mos <strong>de</strong>rivar limites<br />

superior e inferior para D X :<br />

D X ≤ UB X =<br />

5∑<br />

D i−tk , (4)<br />

k=0<br />

D X ≥ LB X = max(D i−t0 , D i−t5 ) − min(D i−t0 , D i−t5 )<br />

4∑<br />

D i−tk . (5)<br />

Focando no peso <strong>de</strong> Hamming ao invés <strong>de</strong> se focar no real valor das diferenças<br />

per<strong>de</strong>-se certa precisão na análise, mas evita-se a complicação <strong>de</strong> ter que analizar como as<br />

diferenças <strong>de</strong> bit individualmente po<strong>de</strong>m se alinhar <strong>de</strong> um operação para outra, além <strong>de</strong><br />

possibilitar a busca <strong>de</strong> caminhos diferenciais <strong>de</strong> padrões <strong>de</strong> peso válidos através <strong>de</strong> uma<br />

busca auxiliada por um programa computacional.<br />

k=1<br />

256


2.2. Carga mínima <strong>de</strong> trabalho <strong>de</strong> um ataque diferencial padrão<br />

O objetivo agora é provar que ataques diferenciais padrão contra o MD6 são menos eficientes<br />

para encontrar colisões do que o ataque pelo paradoxo <strong>de</strong> aniversário. Ou seja,<br />

precisamos provar que a probabilida<strong>de</strong> <strong>de</strong> se encontrar qualquer caminho diferencial <strong>de</strong><br />

colisão na função <strong>de</strong> compressão do MD6 é no máximo 2 −d/2 , o que significa dizer que a<br />

carga <strong>de</strong> trabalho <strong>de</strong> um ataque diferencial padrão é no mínimo 2 d/2 , que é o limite teórico<br />

do paradoxo do aniversário.<br />

Como vimos, cada porta AND ativa em um caminho diferencial contribui com a<br />

probabilida<strong>de</strong> <strong>de</strong> 1/2, então se o número <strong>de</strong> portas AND ativas em um caminho diferencial<br />

válido do MD6 é no mínimo d/2, a probabilida<strong>de</strong> associada a este caminho será no<br />

máximo 2 −d/2 .<br />

Cada diferença <strong>de</strong> bit em um caminho diferencial <strong>de</strong> padrões <strong>de</strong> peso po<strong>de</strong> ativar<br />

até 4 portas AND em 4 passos distintos, uma para cada posição t 1 , t 2 , t 3 e t 4 . Em alguns<br />

casos uma diferença <strong>de</strong> bit po<strong>de</strong> não ativar as 4 portas AND, e estes casos <strong>de</strong>vem ser<br />

levados em consi<strong>de</strong>ração para não contarmos portas AND ativas a mais:<br />

• Se duas diferenças <strong>de</strong> bit ativam a mesma porta AND.<br />

• Se duas portas AND são ativadas no mesmo passo.<br />

• Se uma porta AND está além do limite <strong>de</strong> rodadas. Só contamos as portas AND<br />

ativas que tem as duas entradas <strong>de</strong>ntro do limite <strong>de</strong> rodadas em que está sendo<br />

feita a busca.<br />

Para fazer a busca <strong>de</strong> caminhos diferenciais <strong>de</strong> padrões <strong>de</strong> peso possíveis <strong>de</strong>sejamos<br />

eliminar o máximo possível <strong>de</strong> padrões inválidos. Utilizando (4) e (5) e as <strong>de</strong>sigualda<strong>de</strong>s<br />

mostradas para a função g, po<strong>de</strong>mos eliminar os seguintes valores <strong>de</strong> D i em um<br />

<strong>de</strong>terminado passo i:<br />

1. D i = 0 e LB X > 0<br />

2. D i > 4UB X<br />

3. D i = 1 e UB X < 5<br />

A tabela 2 mostra o resultado apresentado em [Rivest et al. 2008], obtido através<br />

<strong>de</strong> um programa computacional para buscar a número mínimo <strong>de</strong> portas AND ativas em<br />

qualquer padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial <strong>de</strong> até s rodadas.<br />

Tabela 2. Número mínimo <strong>de</strong> portas AND ativas em qualquer padrão <strong>de</strong> peso <strong>de</strong><br />

caminho diferencial <strong>de</strong> até s rodadas<br />

s ≤ 5 6 7 8 9 10 11 12 13 14 15<br />

Número mínimo <strong>de</strong> portas AND ativas 0 3 4 4 4 4 7 13 19 20 26<br />

Os valores encontrados na tabela 2 (principalmente o valor do número mínimo<br />

<strong>de</strong> portas AND ativas em s = 15 rodadas, 26) po<strong>de</strong>m ser utilizados para expandir o<br />

resultado a um número r qualquer <strong>de</strong> rodadas através da fórmula: AAG r ≥ AAG s ×<br />

⌊r/s⌋, on<strong>de</strong> AAG x é o número mínimo <strong>de</strong> portas AND ativas em x rodadas (AAG =<br />

Active AND Gate).<br />

Antes disso <strong>de</strong>ve-se tomar o cuidado <strong>de</strong> <strong>de</strong>ixar uma margem <strong>de</strong> segurança, porque<br />

alguém que tente atacar a função po<strong>de</strong> conseguir penetrar algumas rodadas no começo do<br />

257


cálculo do hash manipulando as entradas e influenciando o comportamento do caminho<br />

diferencial. Estabeleceu-se uma margem <strong>de</strong> segurança conservadora <strong>de</strong> 15 rodadas, ou<br />

seja, substitui-se na fórmula o número <strong>de</strong> rodadas r por r − 15.<br />

A tabela 3 mostra o resultado apresentado em [Rivest et al. 2008] para a carga <strong>de</strong><br />

trabalho mínima <strong>de</strong> um ataque diferencial padrão ao MD6 comparada com a carga <strong>de</strong><br />

trabalho <strong>de</strong> um ataque pelo paradoxo do aniversário, mostrando que a carga <strong>de</strong> trabalho<br />

<strong>de</strong> um ataque diferencial é maior que a carga <strong>de</strong> trabalho <strong>de</strong> um ataque pelo paradoxo do<br />

aniversário, que é o que se <strong>de</strong>sejava <strong>de</strong>monstrar.<br />

Tabela 3. Resultado apresentado em [Rivest et al. 2008] para a carga <strong>de</strong> trabalho<br />

mínima <strong>de</strong> um ataque diferencial padrão ao MD6 (LB é a carga <strong>de</strong> trabalho<br />

mínima e BB é a carga <strong>de</strong> trabalho <strong>de</strong> um ataque pelo paradoxo do aniversário)<br />

d r r − 15 ⌊ r−15⌋<br />

15 r−15 ≥ LB ≥ BB<br />

40 50 35 2 52 2 52 2 20<br />

80 60 45 3 78 2 78 2 40<br />

128 72 57 3 78 2 78 2 64<br />

160 80 65 4 104 2 104 2 80<br />

224 96 81 5 130 2 130 2 112<br />

256 104 89 5 150 2 150 2 128<br />

384 136 121 8 208 2 208 2 192<br />

512 168 153 10 260 2 260 2 256<br />

3. Redução do número <strong>de</strong> rodadas necessárias para a <strong>de</strong>monstração da<br />

resistência a ataques diferenciais<br />

Até aqui mostramos os resultados apresentados em [Rivest et al. 2008], nesta seção mostraremos<br />

os resultados <strong>de</strong> nossa investigação.<br />

Ao apresentar a <strong>de</strong>monstração da segurança do MD6 contra ataques diferenciais<br />

padrão, mostramos que ela é <strong>de</strong>pen<strong>de</strong>nte do número <strong>de</strong> rodadas utilizado na função <strong>de</strong><br />

compressão. O número <strong>de</strong> rodadas <strong>de</strong>ve garantir uma quantida<strong>de</strong> mínima <strong>de</strong> portas AND<br />

ativas na execução da função <strong>de</strong> compressão pois a resistência a um ataque diferencial<br />

está diretamente relacionada a essa quantida<strong>de</strong>.<br />

Ao final da seção 6.9.3.4 <strong>de</strong> [Rivest et al. 2008] são apresentadas algumas possibilida<strong>de</strong>s<br />

<strong>de</strong> investigação para se tentar <strong>de</strong>monstrar que o número mínimo <strong>de</strong> portas AND<br />

ativas em um número reduzido <strong>de</strong> rodadas s é maior do que o encontrado. Uma <strong>de</strong>ssas<br />

possibilida<strong>de</strong>s diz que po<strong>de</strong>m não existir caminhos diferenciais válidos para alguns dos<br />

padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial encontrados.<br />

Investigamos a existência <strong>de</strong> caminhos diferenciais válidos para cada padrão <strong>de</strong><br />

peso <strong>de</strong> caminho diferencial encontrado. Para isso, implementamos um algoritmo para realizar<br />

a busca por padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial <strong>de</strong> forma a obtermos os mesmos<br />

resultados apresentados na seção anterior. Então, acrescentamos a essa implementação<br />

um código para a busca por caminhos diferenciais válidos para um dado padrão <strong>de</strong> peso<br />

<strong>de</strong> caminho diferencial.<br />

Encontramos caminhos diferenciais válidos e, ao analisarmos como esses cami-<br />

258


nhos se formavam, i<strong>de</strong>ntificamos algumas características da tabela <strong>de</strong> quantida<strong>de</strong> <strong>de</strong> <strong>de</strong>slocamento<br />

<strong>de</strong> bits (tabela 1) que possibilitavam a formação <strong>de</strong>sses caminhos diferenciais.<br />

Então, modificamos o programa <strong>de</strong> busca da tabela <strong>de</strong> quantida<strong>de</strong> <strong>de</strong> <strong>de</strong>slocamento<br />

<strong>de</strong> bits utilizado pelos autores do MD6 para a <strong>de</strong>finição da tabela 1. Esse modificação<br />

foi feita para que a busca procurasse por tabelas sem as características que i<strong>de</strong>ntificamos<br />

como as responsáveis pela formação dos caminhos diferenciais válidos para os padrões <strong>de</strong><br />

peso <strong>de</strong> caminho diferencial com número mínimo <strong>de</strong> portas AND antivas. Encontramos<br />

uma nova tabela <strong>de</strong> acordo com essa restrição.<br />

Os resultados serão apresentados nesta seção.<br />

3.1. Verificando a existência <strong>de</strong> caminhos diferenciais válidos<br />

O padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial encontrado que resulta no número mínimo <strong>de</strong><br />

portas AND ativas em s rodadas po<strong>de</strong> não correspon<strong>de</strong>r a nenhum caminho diferencial<br />

válido. Por isso, adicionamos ao programa <strong>de</strong> busca <strong>de</strong> padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial<br />

a busca por um caminho diferencial válido quando um padrão <strong>de</strong> peso <strong>de</strong> caminho<br />

diferencial é encontrado. Caso nenhum caminho diferencial seja encontrado a busca por<br />

um padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial continua enquanto não for encontrado um<br />

caminho diferencial válido que corresponda a um dado padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial.<br />

Para 15 rodadas, vimos que o número mínimo <strong>de</strong> portas AND ativas é 26. Nosso<br />

programa <strong>de</strong>ve procurar algum caminho diferencial válido correspon<strong>de</strong>nte ao padrão <strong>de</strong><br />

peso <strong>de</strong> caminho diferencial encontrado, ou a qualquer outro padrão <strong>de</strong> peso <strong>de</strong> caminho<br />

diferencial com 26 portas AND ativas.<br />

Para buscar um caminho diferencial válido testamos todas as possibilida<strong>de</strong>s <strong>de</strong><br />

valores diferenciais possíveis para cada valor <strong>de</strong> peso do padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial<br />

e utilizamos as proprieda<strong>de</strong>s <strong>de</strong> cada uma das operações da função <strong>de</strong> compressão<br />

conforme mostrado em 2.1 na página 3.<br />

Com este programa, <strong>de</strong>scobrimos que para o primeiro padrão <strong>de</strong> peso <strong>de</strong> caminho<br />

diferencial encontrado para s = 15 com 26 portas AND ativas (D 54 = 1, D 71 = 2, D 143 =<br />

2, D 232 = 2), não existe caminho diferencial válido. Mas o programa encontrou outros<br />

padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial com 26 portas AND ativas, e encontrou um que<br />

tem um respectivo caminho diferencial válido. Para este padrão <strong>de</strong> peso <strong>de</strong> caminho<br />

diferencial: D 28 = 2, D 83 = 1, D 100 = 2, D 172 = 2 existe um caminho diferencial válido:<br />

A 28 = 0x8001, A 83 = 0x1, A 100 = 0x8001, A 172 = 0x8001 (valores em hexa<strong>de</strong>cimal).<br />

3.2. Análise dos caminhos diferenciais válidos encontrados<br />

Analisando o caminho diferencial com 26 portas AND ativas em 15 rodadas (A 28 =<br />

0x8001, A 83 = 0x1, A 100 = 0x8001, A 172 = 0x8001) vemos que a formação <strong>de</strong>le é<br />

possível porque os valores <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits no passo 4 <strong>de</strong> uma rodada são iguais<br />

aos valores <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits do passo 12, como mostrado na tabela <strong>de</strong> <strong>de</strong>slocamento<br />

<strong>de</strong> bits 1: 11 bits para a direita e 15 bits para a esquerda. A diferença entre as<br />

posições t 0 e t 5 módulo 16 é igual a 8 (89 - 17 = 72; 72 módulo 16 = 8), ou seja, é igual à<br />

diferença entre as posições da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits que contém o mesmo valor<br />

<strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits, as posições 4 e 12. Assim, um valor diferencial que apareça na<br />

259


posição t 0 em um passo 4 ou 12 no módulo 16, necessariamente aparecerá na posição t 5<br />

em um passo 12 ou 4 no módulo 16, respectivamente, e a este valor diferencial será aplicado<br />

o mesmo <strong>de</strong>slocamento <strong>de</strong> bits, resultando no alinhamento e cancelamento <strong>de</strong>stes<br />

valores diferenciais em um passo posterior. No caminho diferencial encontrado, o valor<br />

diferencial do passo 83 aparece na posição t 0 do passo 100, e 100 módulo 16 é igual a<br />

4. É também o valor diferencial na posição t 5 do passo 172, e 172 módulo 16 é igual a<br />

12. Portanto nos passos 100 e 172 obtemos o mesmo valor diferencial por que é aplicado<br />

nesse passos o mesmo <strong>de</strong>locamento <strong>de</strong> bits ao valor diferencial do passo 83. No passo<br />

189, o valor diferencial gerado no passo 100 estará na posição t 5 e o valor diferencial<br />

do passo 172 estará na posição t 0 . Como eles são iguais, ocorre um alinhamento das<br />

diferenças e elas são anuladas.<br />

Concluímos que esta coincidência <strong>de</strong> valores da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />

1 a uma distância que coinci<strong>de</strong> com a diferença entre as posições t 0 e t 5 no módulo 16<br />

é uma falha na escolha dos valores <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits. Seria interessante tentar<br />

escolher uma outra tabela on<strong>de</strong> esta coincidência não ocorra, verificando como a função<br />

se comporta com esta alteração<br />

3.3. Investigando uma nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />

A escolha da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits 1 foi feita através <strong>de</strong> um programa computacional<br />

disponibilizado pelos autores do MD6. Este programa procura uma tabela <strong>de</strong><br />

<strong>de</strong>slocamento tentando maximizar a taxa <strong>de</strong> difusão dos bits <strong>de</strong>ntro das palavras, dadas<br />

as posições t 0 a t 5 e estabelecidas algumas exigências na escolha dos valores <strong>de</strong> <strong>de</strong>slocamento.<br />

Cada valor <strong>de</strong> <strong>de</strong>slocamento não po<strong>de</strong> ser zero, <strong>de</strong>ve ser no máximo w/2 (32) e<br />

r i e l i não <strong>de</strong>vem ser múltiplos um do outro. Cada par <strong>de</strong> valores (r i , l i ) <strong>de</strong>ve ser escolhido<br />

tal que uma saída com peso <strong>de</strong> hamming igual a 1 não possa ser gerado por uma<br />

palavra <strong>de</strong> entrada <strong>de</strong> peso menor que cinco. Além disso, r i e l j não po<strong>de</strong>m ser múltiplos<br />

um do outro para qualquer j tal que (i − j) ∈ t 0 , t 5 , t 5 − t 0 (todos os índices no módulo<br />

c = 16). Estas últimas condições ajudam a garantir que um <strong>de</strong>slocamento à esquerda em<br />

uma rodada não será seguido por um <strong>de</strong>slocamento à direita pela mesma quantida<strong>de</strong> (ou<br />

um múltiplo) em uma rodada posterior. Para cada tabela gerada aleatoriamente <strong>de</strong> acordo<br />

com as restrições <strong>de</strong>scritas é medido um valor para que as tabelas possam ser comparadas<br />

<strong>de</strong> forma que seja escolhida a tabela que garanta o efeito avalanche mais rápido entre as<br />

tabelas testadas. Para a escolha da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6 foram<br />

testadas 1 milhão <strong>de</strong> tabelas.<br />

Como mostramos, notamos que outras condições po<strong>de</strong>riam ser impostas aos valores<br />

da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits para evitar a formação <strong>de</strong> alguns caminhos diferenciais<br />

com baixos valores <strong>de</strong> peso <strong>de</strong> hamming. Fomos então adicionando novas restrições<br />

aos valores da tabela, procurando novas tabelas, testando a nova tabela encontrada e <strong>de</strong>scobrindo<br />

novas restrições que po<strong>de</strong>riam ser impostas. Eliminamos todas as características<br />

da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits que contribuiam para a formação <strong>de</strong> caminhos diferenciais<br />

com 26 portas AND ativas em 15 rodadas. Ainda assim, existe caminho diferencial<br />

com 26 portas AND ativas em 15 rodadas, mas esse caminho não <strong>de</strong>pen<strong>de</strong> <strong>de</strong> nenhuma<br />

característica especial da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits, ou seja, nenhuma tabela <strong>de</strong> <strong>de</strong>slocamento<br />

<strong>de</strong> bits evitaria a formação <strong>de</strong>sse caminho.<br />

As restrições adicionais que <strong>de</strong>scobrimos que <strong>de</strong>vem ser impostas para que a ta-<br />

260


ela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits não possibilite a formação <strong>de</strong> alguns dos caminhos diferenciais<br />

com 26 portas AND ativas em 15 rodadas estão <strong>de</strong>scritas a seguir:<br />

1. Se i − j = t 5 − t 0 módulo c, então:<br />

l i <strong>de</strong>ve ser diferente <strong>de</strong> l j e<br />

r i <strong>de</strong>ve ser diferente <strong>de</strong> r j se l j > r j e l i > r i .<br />

2. Se i − j = t 5 módulo c, então:<br />

l i <strong>de</strong>ve ser diferente <strong>de</strong> l j se r i > l i e<br />

r i <strong>de</strong>ve ser diferente <strong>de</strong> r j se l j > r j e l i > 2r i .<br />

Essas restrições foram implementadas na função que gera tabelas aleatórias <strong>de</strong><br />

<strong>de</strong>slocamento <strong>de</strong> bits. Esta função faz parte do código fornecido pelos autores do MD6<br />

que foi utilizado para a busca da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6.<br />

Executando o programa <strong>de</strong> busca da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits com essas<br />

restrições adicionais e testando a mesma quantida<strong>de</strong> <strong>de</strong> tabelas que foram testadas para<br />

a escolha da tabela original do MD6, 1 milhão <strong>de</strong> tabelas, a melhor tabela encontrada é<br />

um pouco pior do que a tabela original do MD6, <strong>de</strong> acordo com a medida usada para a<br />

comparação das tabelas, que é uma medida da taxa <strong>de</strong> difusão dos bits <strong>de</strong>ntro das palavras<br />

obtida pela tabela. Continuando a busca, foi encontrada uma tabela melhor do que a tabela<br />

original do MD6 <strong>de</strong> acordo com essa medida da taxa <strong>de</strong> difusão <strong>de</strong> bits (e que ainda aten<strong>de</strong><br />

às restrições que adicionamos).<br />

O programa <strong>de</strong> busca utiliza uma semente para a geração <strong>de</strong> uma tabela <strong>de</strong> <strong>de</strong>slocamento<br />

<strong>de</strong> bits aleatória. Ele começa a busca com a semente 0, e vai incrementando<br />

esse valor. Então, para 1 milhão <strong>de</strong> tabelas testadas, a semente utilizada para a geração<br />

da última tabela é igual a 999.999. A tabela original do MD6 foi gerada com a semente<br />

939.663. Com as restrições adicionais, encontramos a melhor tabela ao testar a semente<br />

número 1.421.812. Os resultado obtidos po<strong>de</strong>m ser rapidamente verificados com o programa<br />

fornecido pelos autores do MD6 (shiftopt.c), os valores das sementes que geram<br />

as melhores tabelas e as alterações no código que implementam as restrições adicionais<br />

<strong>de</strong>scritas acima. A tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits que encontramos é a tabela 4.<br />

Tabela 4. Nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits encontrada: melhor taxa <strong>de</strong> difusão<br />

<strong>de</strong> bits em relação à tabela original do MD6 e aten<strong>de</strong> às restrições adicionais<br />

para impedir a formação <strong>de</strong> alguns dos caminhos diferenciais com 26 portas<br />

AND ativas em 15 rodadas.<br />

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />

r i 13 13 7 8 11 9 10 4 11 14 2 12 11 8 6 12<br />

l i 4 9 23 10 5 21 13 18 12 3 27 7 15 17 23 5<br />

3.4. Resultados obtidos com a nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />

Com a tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6, o primeiro padrão <strong>de</strong> peso <strong>de</strong><br />

caminho diferencial com 26 portas AND ativas em 15 rodadas que possui um caminho<br />

diferencial válido correspon<strong>de</strong>nte encontrado pelo programa <strong>de</strong> busca é:<br />

D 28 = 2, D 83 = 1, D 100 = 2, D 172 = 2. (6)<br />

Com a nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits não existe um caminho diferencial válido para<br />

este padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial. Mas, com qualquer tabela <strong>de</strong> <strong>de</strong>slocamento<br />

261


<strong>de</strong> bits, existe um outro padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial com 26 portas AND ativas<br />

em 15 rodadas que possui um correspon<strong>de</strong>nte caminho diferencial válido:<br />

D 16 = 2, D 71 = 1, D 88 = 2, D 160 = 2. (7)<br />

Po<strong>de</strong>mos observar que estes dois padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial são semelhantes,<br />

estando apenas <strong>de</strong>slocados <strong>de</strong> 12 posições. O que possibilita a existência <strong>de</strong> um caminho<br />

diferencial válido correspon<strong>de</strong>nte ao padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial (7), in<strong>de</strong>pen<strong>de</strong>nte<br />

da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits usada, é o fato do índice 88 fazer parte das<br />

primeiras 89 palavras do caminho, e portanto o valor diferencial <strong>de</strong>sta posição <strong>de</strong>pen<strong>de</strong> <strong>de</strong><br />

um valor diferencial que não faz parte do caminho, que é anterior ao valor diferencial da<br />

posição <strong>de</strong> índice 0. Sendo assim, o valor diferencial da posição 88 <strong>de</strong>pen<strong>de</strong> <strong>de</strong> um valor<br />

diferencial <strong>de</strong>sconhecido que consi<strong>de</strong>ramos que possa ser qualquer valor. No padrão <strong>de</strong><br />

peso <strong>de</strong> caminho diferencial (6), para que os valores diferenciais se anulem na posição<br />

189, é necessário que o valor diferencial da posição 83 resulte nos mesmos valores diferenciais<br />

nas posições 100 e 172. Já no padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial (7), como<br />

o valor diferencial da posição 88 não <strong>de</strong>pen<strong>de</strong> apenas do valor diferencial da posição 71,<br />

mas também <strong>de</strong> um valor <strong>de</strong>sconhecido, o valor diferencial da posição 88 po<strong>de</strong> ser igual<br />

ao valor diferencial da posição 160 in<strong>de</strong>pen<strong>de</strong>nte da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits usada.<br />

A vantagem da nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits aparece quando buscamos<br />

caminhos diferenciais válidos em 16 rodadas. Esse <strong>de</strong>slocamento <strong>de</strong> 12 posições entre<br />

(6) e (7) faz muita diferença quando 1 rodada é adicionada ao cálculo. O valor diferencial<br />

da posição 172 em (6) aparecerá no cálculo do valor diferencial da posição 261 (172+89).<br />

Mas, em 16 rodadas temos 256 passos, portanto a posição 261 está além do cálculo <strong>de</strong> 16<br />

rodadas. Desta forma, com a tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6, o mesmo<br />

caminho diferencial com 26 portas AND ativas em 15 rodadas correspon<strong>de</strong>nte ao padrão<br />

<strong>de</strong> peso <strong>de</strong> caminho diferencial (6) é válido para 16 rodadas. Já o valor diferencial da<br />

posição 160 em (7) aparecerá no cálculo do valor diferencial da posição 249 (160 + 89),<br />

que está <strong>de</strong>ntro do cálculo <strong>de</strong> 16 rodadas.<br />

Executando o programa <strong>de</strong> busca para 16 rodadas com a nova tabela <strong>de</strong> <strong>de</strong>slocamento<br />

<strong>de</strong> bits, comprovamos a existência <strong>de</strong> um caminho diferencial válido para o<br />

seguinte padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial:<br />

D 16 = 2, D 71 = 1, D 88 = 2, D 160 = 2, D 249 = 4. (8)<br />

Este padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial é uma extensão a 16 rodadas <strong>de</strong> (7). O número<br />

<strong>de</strong> portas AND ativas neste caminho é 38.<br />

A busca por padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial com 26 portas AND ativas<br />

ou mais é bem <strong>de</strong>morada. Até o momento conseguimos comprovar que com a nova tabela<br />

não existem caminhos diferenciais válidos com até 27 portas AND ativas. Não conseguimos<br />

comprovar a inexistência <strong>de</strong> caminhos diferenciais válidos com mais <strong>de</strong> 27 e menos<br />

do que 38 portas AND ativas. Pelo que temos observado dos resultados da busca computacional<br />

e pelo que conseguimos analisar das possibilida<strong>de</strong>s <strong>de</strong> formação <strong>de</strong> caminhos<br />

diferenciais válidos, parece improvável que exista um caminho diferencial válido com<br />

menos do que 38 portas AND ativas em 16 rodadas quando utilizada a nova tabela <strong>de</strong><br />

<strong>de</strong>slocamento <strong>de</strong> bits.<br />

262


A tabela 5 mostra, para cada valor <strong>de</strong> comprimento do resumo da mensagem d,<br />

quantas rodadas seriam necessárias para garantir a segurança da função <strong>de</strong> compressão do<br />

MD6 contra um ataque diferencial padrão, consi<strong>de</strong>rando a possibilida<strong>de</strong> <strong>de</strong> que o número<br />

mínimo <strong>de</strong> portas AND ativas em 16 rodadas com a nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />

seja 38, e compara essa quantida<strong>de</strong> <strong>de</strong> rodadas com a quantida<strong>de</strong> <strong>de</strong> rodadas necessárias<br />

quando a tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6 é utilizada.<br />

Tabela 5. Número mínimo <strong>de</strong> rodadas r para cada valor <strong>de</strong> d quando a tabela original<br />

do MD6 é utilizada e portanto existe um caminho diferencial com 26 portas<br />

AND ativas em 16 rodadas, comparado ao número mínimo <strong>de</strong> rodadas consi<strong>de</strong>rando<br />

a possibilida<strong>de</strong> <strong>de</strong> que o número mínimo <strong>de</strong> portas AND ativas em 16<br />

rodadas seja 38 quando utilizada a nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits (número<br />

mínimo <strong>de</strong> rodadas já somado à margem <strong>de</strong> segurança <strong>de</strong> 15 rodadas).<br />

d min AAGs r min original r min com nova tabela redução<br />

40 20 29 29 0%<br />

80 40 43 37 14%<br />

128 64 57 46 19%<br />

160 80 66 55 17%<br />

224 112 87 63 28%<br />

256 128 90 76 16%<br />

384 192 132 101 23%<br />

512 256 165 127 23%<br />

Segue um exemplo <strong>de</strong> como foram calculados os números <strong>de</strong> rodadas na tabela 5:<br />

precisamos <strong>de</strong> 5 conjuntos <strong>de</strong> 16 rodadas mais 1 conjunto <strong>de</strong> 6 rodadas para garantir que<br />

haverá no mínimo mínimo 192 portas AND ativas para quando o comprimento do resumo<br />

da mensagem é <strong>de</strong> 384 bits, pois se cada conjunto <strong>de</strong> 16 rodadas tem no mínimo 38 portas<br />

AND ativas e um conjunto <strong>de</strong> 6 rodadas tem no mínomo 3 portas AND ativas (tabela 2),<br />

então em 5 conjuntos <strong>de</strong> 16 rodadas mais 1 conjunto <strong>de</strong> 6 rodadas teremos no mínimo<br />

5 × 38 + 3 = 193 portas AND ativas. Então, o número mínimo <strong>de</strong> rodadas <strong>de</strong>verá ser<br />

5 × 16 + 6 = 86. Somando as 15 rodadas da margem <strong>de</strong> segurança, chegamos em 101<br />

rodadas. As 132 rodadas necessárias quando a tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original<br />

do MD6 é utilizada foi calculada da mesma forma, mas consi<strong>de</strong>rando que nesse caso o<br />

número mínimo <strong>de</strong> portas AND ativas em 16 rodadas é 26, e não 38.<br />

4. Conclusão<br />

A eficiência do MD6 é excelente em sistemas com múltiplas unida<strong>de</strong>s <strong>de</strong> processamento,<br />

mas nas plataformas <strong>de</strong> referência da competição do NIST para escolha do SHA-3 ela não<br />

é suficiente para torná-la competitiva.<br />

Ao anunciar que o MD6 não aten<strong>de</strong>ria aos requisitos estabelecidos pelo NIST<br />

para a competição <strong>de</strong> escolha do SHA-3, Ron Rivest alertou que seria extremamente<br />

importante que o algoritmo <strong>de</strong> SHA-3 que viesse a ser escolhido fosse <strong>de</strong>monstravelmente<br />

resistente a ataques diferenciais.<br />

O número <strong>de</strong> rodadas da função <strong>de</strong> compressão do MD6 tem um impacto direto<br />

na velocida<strong>de</strong> <strong>de</strong> processamento, e precisa ser relativamente alto para a <strong>de</strong>monstração da<br />

263


esistência do MD6 a ataques diferenciais. A <strong>de</strong>monstração da resistência a ataques diferenciais<br />

exige a comprovação <strong>de</strong> que em um <strong>de</strong>terminado número <strong>de</strong> rodadas haverá um<br />

número mínimo <strong>de</strong> portas AND ativas. Seguindo inicialmente as sugestões apresentadas<br />

em [Rivest et al. 2008] na página 111, mostramos nesse trabalho que é possível <strong>de</strong>monstrar<br />

a resistência da função <strong>de</strong> compressão a ataques diferenciais com um número menor<br />

<strong>de</strong> rodadas, mostrando que o número mínimo <strong>de</strong> portas AND ativas em 16 rodadas po<strong>de</strong><br />

ser maior se utilizada na função <strong>de</strong> compressão uma nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />

(4).<br />

Verificamos se existiam caminhos diferenciais válidos correspon<strong>de</strong>ntes aos<br />

padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial encontrados na busca do limite inferior <strong>de</strong> portas<br />

AND ativas em até 15 rodadas. Constatamos que esses caminhos diferenciais válidos<br />

existiam para alguns padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial, mas, analisando esses caminhos<br />

diferenciais <strong>de</strong>scobrimos que alguns <strong>de</strong>les só existiam <strong>de</strong>vido a <strong>de</strong>terminadas características<br />

da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6 (1), o que i<strong>de</strong>ntificamos<br />

ser uma falha na escolha dos valores da tabela original.<br />

Buscamos por uma nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits e encontramos a tabela<br />

(4), que não possui as falhas i<strong>de</strong>ntificadas na tabela original e nem outras possíveis falhas<br />

encontradas em outras tabelas durante o processo <strong>de</strong> busca, e ainda é melhor para a taxa<br />

<strong>de</strong> difusão <strong>de</strong> bits, que foi o critério usado para a escolha da tabela original.<br />

O uso <strong>de</strong>sta nova tabela não aumenta o número mínimo <strong>de</strong> portas AND ativas em<br />

até 15 rodadas, que foi o número <strong>de</strong> rodadas analisado originalmente na <strong>de</strong>monstração<br />

da resistência do MD6 a ataques diferencias, mas a nova tabela faz diferença quando o<br />

cálculo é feito para 16 rodadas. Quando a tabela original do MD6 é usada, existe um<br />

caminho diferencial válido com 26 portas AND ativas em 16 rodadas. Com a nova tabela<br />

só conseguimos encontrar um caminho diferencial válido em 16 rodadas com 38 portas<br />

AND ativas, e já comprovamos que não existem caminhos válidos com até 27 portas AND<br />

ativas. Se confirmado que 38 é o número mínimo <strong>de</strong> portas AND ativas em 16 rodadas, a<br />

nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits torna possível a <strong>de</strong>monstração da resistência do MD6<br />

a ataques diferenciais com um número <strong>de</strong> rodadas reduzido <strong>de</strong> acordo com os resultados<br />

apresentados na tabela 5.<br />

Referências<br />

Rivest, R., Agre, B., Bailey, D., Crutchfield, C., Dodis, Y., Fleming, K., Khan, A., Krishnamurthy,<br />

J., Lin, Y., Reyzin, L., et al. (2008). The MD6 hash function A proposal to<br />

NIST for SHA-3. Submission to NIST.<br />

264


Acordo <strong>de</strong> Chave Seguro contra Autorida<strong>de</strong> Mal Intencionada<br />

Denise Goya ∗ , Dionathan Nakamura † , Routo Terada<br />

1 Departamento <strong>de</strong> Ciência da Computação – Universida<strong>de</strong> <strong>de</strong> São Paulo – Brasil<br />

{dhgoya, nakamura, rt}@ime.usp.br<br />

Abstract. Certificateless key agreement protocols allow authenticated key establishment<br />

without the need of digital certificate distribution and with security<br />

level higher than the one reached by i<strong>de</strong>ntity-based key agreement protocols. In<br />

this work, we introduce an enhanced security mo<strong>de</strong>l that is resistant to malicious<br />

authority attacks, in which an authority is able to generate system parameters<br />

with shortcuts to session key recovery. We present a new protocol that is proved<br />

secure in this exten<strong>de</strong>d security mo<strong>de</strong>l and has equivalent performance to<br />

previous ones.<br />

Resumo. Protocolos <strong>de</strong> acordo <strong>de</strong> chaves no mo<strong>de</strong>lo <strong>de</strong> criptografia <strong>de</strong> chave<br />

pública sem certificado permitem o estabelecimento <strong>de</strong> chaves secretas com<br />

autenticação, sem a necessida<strong>de</strong> <strong>de</strong> distribuição <strong>de</strong> certificados digitais e com<br />

nível <strong>de</strong> segurança maior que o alcançado por protocolos baseados em i<strong>de</strong>ntida<strong>de</strong>.<br />

Neste artigo, propomos a extensão do mo<strong>de</strong>lo <strong>de</strong> segurança, tornando-o<br />

resistente a ataques <strong>de</strong> uma autorida<strong>de</strong> mal intencionada, que gera parâmetros<br />

do sistema <strong>de</strong> forma a criar atalhos para recuperação <strong>de</strong> chaves <strong>de</strong> sessão.<br />

Apresentamos um protocolo que é mostrado seguro nesse mo<strong>de</strong>lo estendido,<br />

com eficiência equivalente a <strong>de</strong> protocolos anteriores.<br />

1. Introdução<br />

Em 2003, Al-Riyami e Paterson propuseram um mo<strong>de</strong>lo alternativo <strong>de</strong> chave pública que<br />

dispensa a necessida<strong>de</strong> <strong>de</strong> certificados digitais e <strong>de</strong> uma infraestrutura <strong>de</strong> chaves públicas<br />

(ICP) [Al-Riyami e Paterson 2003]. Nesse mo<strong>de</strong>lo, conhecido como certificateless, cada<br />

usuário cria um par <strong>de</strong> chaves (pública e privada, tal qual no mo<strong>de</strong>lo convencional), porém<br />

a autorida<strong>de</strong> do sistema, chamada Centro <strong>de</strong> Geração <strong>de</strong> Chaves ou KGC (Key Generation<br />

Center), fornece a cada usuário registrado uma chave secreta parcial, calculada a partir<br />

da i<strong>de</strong>ntida<strong>de</strong> do usuário e da chave secreta mestra do KGC. Essa chave secreta parcial é<br />

um componente da chave secreta e estabelece um vínculo entre o usuário e o sistema. A<br />

certificação da chave pública ocorre implicitamente com a execução dos protocolos. Comparado<br />

ao mo<strong>de</strong>lo convencional em que é requerida uma ICP para geração, distribuição,<br />

validação e revogação <strong>de</strong> certificados, o mo<strong>de</strong>lo <strong>de</strong> Al-Riyami e Paterson simplifica os<br />

processos, requer uma infraestrutura mais simples e potencialmente reduz custos operacionais.<br />

Por outro lado, os algoritmos sob esse mo<strong>de</strong>lo ten<strong>de</strong>m a ser mais complexos,<br />

pois preveem a existência <strong>de</strong> um adversário capaz <strong>de</strong> substituir arbitrariamente as chaves<br />

públicas dos usuários.<br />

∗ O autor recebeu apoio financeiro da Fapesp, 2008/06189-0.<br />

† O autor recebeu apoio financeiro do CNPq.<br />

265


No caso particular dos protocolos <strong>de</strong> acordo <strong>de</strong> chaves com autenticação no mo<strong>de</strong>lo<br />

<strong>de</strong> criptografia <strong>de</strong> chave pública sem certificados (CL-AKA), participantes em uma<br />

comunicação po<strong>de</strong>m se autenticar mutuamente e estabelecer chaves <strong>de</strong> sessão sem verificar<br />

certificados <strong>de</strong> chave pública. Protocolos CL-AKA são mais seguros que os baseados<br />

em i<strong>de</strong>ntida<strong>de</strong> [Chen et al. 2007], pois as consequências do comprometimento da chave<br />

mestra secreta são atenuadas e a segurança é menos <strong>de</strong>pen<strong>de</strong>nte do nível <strong>de</strong> confiança que<br />

os usuários precisam <strong>de</strong>positar na autorida<strong>de</strong> do sistema. Um problema acerca dos protocolos<br />

CL-AKA é a carência <strong>de</strong> opções computacionalmente eficientes que são ao mesmo<br />

tempo seguras sob forte mo<strong>de</strong>lo <strong>de</strong> segurança.<br />

Um gran<strong>de</strong> número <strong>de</strong> protocolos CL-AKA po<strong>de</strong> ser encontrado na literatura. No<br />

entanto, um estudo realizado por Swanson e Jao mostra que todos os protocolos existentes<br />

até então são inseguros sob um mo<strong>de</strong>lo <strong>de</strong> segurança a<strong>de</strong>quado ao caso sem certificados<br />

[Swanson e Jao 2009]. Lippold, Boyd e González Nieto (LBG) aprimoram o mo<strong>de</strong>lo <strong>de</strong><br />

Swanson e Jao e apresentam o primeiro protocolo CL-AKA <strong>de</strong>monstrado seguro sob um<br />

mo<strong>de</strong>lo forte <strong>de</strong> segurança [Lippold et al. 2009]. Um segundo protocolo CL-AKA <strong>de</strong> que<br />

temos conhecimento ter sido <strong>de</strong>monstrado seguro sob o mesmo mo<strong>de</strong>lo é o <strong>de</strong> Goya,<br />

Okida e Terada (GOT), uma versão otimizada do antecessor LBG [Goya et al. 2010].<br />

Ambos protocolos, LBG e GOT, são seguros sob a hipótese <strong>de</strong> dificulda<strong>de</strong> do problema<br />

Diffie-Hellman Bilinear (BDH), porém são lentos e pouco viáveis para uso prático. Nos<br />

dois casos, os autores afirmam que versões simplificadas, cerca <strong>de</strong> 50% mais velozes,<br />

são seguras sob a hipótese <strong>de</strong> dificulda<strong>de</strong> do problema Diffie-Hellman Bilinear Lacunar<br />

(Gap-BDH).<br />

Mais recentemente, Yang e Tan propuseram protocolo CL-AKA que não requer<br />

emparelhamento bilinear [Yang e Tan 2011]. Os autores refinam a <strong>de</strong>scrição do mo<strong>de</strong>lo<br />

<strong>de</strong> segurança dado inicialmente em [Lippold et al. 2009] e apresentam <strong>de</strong>monstração sob<br />

a hipótese <strong>de</strong> dificulda<strong>de</strong> do problema Diffie-Hellman Computacional Lacunar (Gap-DH).<br />

Alguns protocolos <strong>de</strong> assinatura e <strong>de</strong> cifragem no mo<strong>de</strong>lo sem certificado são<br />

vulneráveis ao ataque do KGC mal intencionado, que gera parâmetros do sistema <strong>de</strong><br />

forma a criar atalhos para forjar assinaturas ou <strong>de</strong>cifrar textos <strong>de</strong> usuários pre<strong>de</strong>terminados<br />

[Au et al. 2007]. Não é <strong>de</strong> nosso conhecimento nenhum mo<strong>de</strong>lo ou protocolo para CL-<br />

AKA que tenham sido propostos para segurança contra KGC mal intencionado.<br />

Neste trabalho, apresentamos as seguintes contribuições:<br />

• esten<strong>de</strong>mos o mo<strong>de</strong>lo <strong>de</strong> segurança para CL-AKA, tornando-o mais forte que o <strong>de</strong><br />

[Lippold et al. 2009] para prevenir ataques contra KGC mal intencionado;<br />

• apresentamos um novo protocolo e respectiva <strong>de</strong>monstração <strong>de</strong> segurança sob esse<br />

mo<strong>de</strong>lo estendido;<br />

• apontamos que existem falhas na <strong>de</strong>monstração <strong>de</strong> segurança do protocolo <strong>de</strong><br />

[Yang e Tan 2011], <strong>de</strong> modo que nada se po<strong>de</strong> afirmar sobre sua segurança.<br />

Organização do Trabalho<br />

Na Seção 2, apresentamos conceitos necessários para a compreensão dos protocolos citados.<br />

Na Seção 3, <strong>de</strong>screvemos uma extensão do mo<strong>de</strong>lo <strong>de</strong> segurança para captura <strong>de</strong><br />

ataques <strong>de</strong> um KGC mal intencionado. Na Seção 4, propomos um novo protocolo que é<br />

<strong>de</strong>monstrado seguro no mo<strong>de</strong>lo estendido (no Apêndice A). Na Seção 5, apontamos falha<br />

na <strong>de</strong>monstração <strong>de</strong> segurança do protocolo <strong>de</strong> [Yang e Tan 2011]. Por fim, na Seção<br />

266


6 realizamos comparações com o novo protocolo proposto, seguidas das conclusões na<br />

Seção 7.<br />

2. Conceitos Preliminares<br />

Os protocolos aqui discutidos fazem uso <strong>de</strong> um emparelhamento bilinear admissível e :<br />

G × G → G T , com G e G T grupos <strong>de</strong> or<strong>de</strong>m prima q [Boneh e Franklin 2003]. Seja<br />

P ∈ G um gerador <strong>de</strong> G e valores aleatórios a, b, c ∈ Z q . São supostos difíceis:<br />

BDH. Problema Diffie-Hellman Bilinear: dados 〈P, aP, bP, cP 〉, calcular e(P, P ) abc .<br />

DBDH. Problema <strong>de</strong> Decisão Diffie-Hellman Bilinear: dados 〈aP, bP, cP, T 〉, <strong>de</strong>cidir se<br />

e(P, P ) abc ? = T .<br />

Gap-BDH. Problema Diffie-Hellman Bilinear Lacunar: dados 〈P, aP, bP, cP 〉, calcular<br />

e(P, P ) abc , com a ajuda <strong>de</strong> um oráculo <strong>de</strong> <strong>de</strong>cisão DBDH.<br />

2.1. Proprieda<strong>de</strong>s <strong>de</strong> Segurança para CL-AKA<br />

Dentre as proprieda<strong>de</strong>s <strong>de</strong> segurança mais importantes e requeridas nos protocolos <strong>de</strong><br />

acordo <strong>de</strong> chaves com autenticação estão a resistência a ataques <strong>de</strong> personificação básicos<br />

e a ataques <strong>de</strong> personificação pelo comprometimento <strong>de</strong> chave secreta (KCI, ou Key-<br />

Compromise Impersonation), a segurança <strong>de</strong> chave conhecida, a segurança no futuro<br />

completa-fraca (wPFS, ou Weak Perfect Forward Secrecy), a resistência a ataques <strong>de</strong><br />

compartilhamento <strong>de</strong>sconhecido <strong>de</strong> chave (UKS, ou Unknown Key-Share) e a resistência<br />

ao vazamento <strong>de</strong> segredos temporários ou do estado da sessão [LaMacchia et al. 2007,<br />

Krawczyk 2005]. No caso especial sem certificado, é <strong>de</strong>sejado também segurança no<br />

futuro perante o KGC (KGC Forward Secrecy) e resistência ao vazamento <strong>de</strong> segredos<br />

temporários para o KGC. Essas duas últimas proprieda<strong>de</strong>s são tratadas no mo<strong>de</strong>lo formalmente<br />

<strong>de</strong>scrito em [Lippold et al. 2009], que permite um adversário:<br />

• substituir a chave pública <strong>de</strong> um dado usuário ou revelar o valor secreto correspon<strong>de</strong>nte<br />

à chave pública <strong>de</strong> um usuário;<br />

• revelar a chave secreta parcial <strong>de</strong> <strong>de</strong>terminados usuários ou revelar a chave mestra<br />

secreta do KGC;<br />

• revelar o segredo temporário <strong>de</strong> uma dada sessão ou escolhê-lo ativamente;<br />

• revelar a chave secreta <strong>de</strong> uma dada sessão;<br />

• interagir <strong>de</strong> forma adaptativa com o protocolo, iniciando sessões ou registrando<br />

novos usuários arbitrariamente.<br />

Esse mo<strong>de</strong>lo é uma variante do Canetti-Krawczyk estendido<br />

[LaMacchia et al. 2007]. Um protocolo CL-AKA <strong>de</strong>monstrado seguro no mo<strong>de</strong>lo<br />

<strong>de</strong> [Lippold et al. 2009] se mantém seguro ainda que o adversário corrompa no máximo<br />

dois dos três componentes <strong>de</strong> cada um dos participantes da sessão <strong>de</strong> Teste, que <strong>de</strong>notamos<br />

por A e B. Por exemplo, sobre o participante A, o adversário po<strong>de</strong> efetuar, no<br />

máximo, duas das três linhas abaixo:<br />

• revelar o valor secreto x A ou substituir a chave pública <strong>de</strong> A;<br />

• revelar a chave secreta parcial d A ou revelar a chave mestra secreta;<br />

• revelar o valor temporário <strong>de</strong> sessão r A .<br />

Todos os <strong>de</strong>mais usuários po<strong>de</strong>m ser integralmente corrompidos pelo adversário.<br />

A principal diferença entre os mo<strong>de</strong>los propostos em [Swanson e Jao 2009] e em<br />

267


[Lippold et al. 2009] está no tratamento do oráculo que revela para o adversário a chave<br />

<strong>de</strong> uma dada sessão. No trabalho <strong>de</strong> Swanson e Jao, o usuário continua a usar seu próprio<br />

par original <strong>de</strong> chaves pública e secreta no cálculo da chave <strong>de</strong> sessão, mesmo que o<br />

adversário tenha substituído a chave pública; nesse caso, os <strong>de</strong>mais usuários calculam a<br />

chave <strong>de</strong> sessão usando a chave pública substituída. No trabalho <strong>de</strong> Lippold et al., se o adversário<br />

substituir uma chave pública, até mesmo o usuário dono passa a usar a nova chave<br />

pública escolhida pelo adversário. Esta diferença é equivalente à existente nos mo<strong>de</strong>los<br />

Strong e Weak para cifragem sem certificado [Dent 2008]. O mo<strong>de</strong>lo Strong é estritamente<br />

mais forte que o Weak, isto é, os protocolos que são seguros no primeiro também<br />

o são no segundo. Outra diferença no mo<strong>de</strong>lo <strong>de</strong> Swanson e Jao é que o adversário que<br />

conhece a chave mestra secreta não po<strong>de</strong> substituir chaves públicas.<br />

Outro mo<strong>de</strong>lo <strong>de</strong> segurança que sabemos ter sido <strong>de</strong>senvolvido para protocolos<br />

CL-AKA foi apresentado em [Zhang et al. 2010]. No entanto, trata-se <strong>de</strong> um mo<strong>de</strong>lo<br />

mais fraco que restringe os po<strong>de</strong>res do adversário, como, por exemplo, impedir que um<br />

atacante externo revele a chave parcial <strong>de</strong> um dos participantes da sessão <strong>de</strong> Teste e não<br />

permitir que um adversário interno substitua a chave pública <strong>de</strong> um dos participantes do<br />

Teste. Com essas limitações, protocolos que são <strong>de</strong>monstrados seguros sob o mo<strong>de</strong>lo <strong>de</strong><br />

Zhang et al. são eficientes, porém na prática não são resistentes a ataques do tipo KCI.<br />

Lippold e González Nieto apresentaram uma versão mais fraca <strong>de</strong> mo<strong>de</strong>lo<br />

para mostrar a segurança no mo<strong>de</strong>lo padrão <strong>de</strong> uma construção geral <strong>de</strong> CL-AKA<br />

[Lippold e González Nieto 2010]. Nesse mo<strong>de</strong>lo mais fraco, o adversário tem as mesmas<br />

restrições que as <strong>de</strong> [Zhang et al. 2010], além <strong>de</strong> não po<strong>de</strong>r revelar chaves <strong>de</strong> sessão<br />

para os casos em que um dos participantes tenha a chave pública substituída. Com essas<br />

limitações, o mo<strong>de</strong>lo fica mais fraco que o <strong>de</strong> Swanson e Jao.<br />

3. Extensão do Mo<strong>de</strong>lo <strong>de</strong> Segurança<br />

Nesta seção, <strong>de</strong>screvemos informalmente o mo<strong>de</strong>lo <strong>de</strong> segurança que previne ataques do<br />

KGC mal intencionado. Tomamos como ponto <strong>de</strong> partida o mo<strong>de</strong>lo <strong>de</strong> Lippold et al., mas<br />

alterações similares po<strong>de</strong>m ser feitas sobre o mo<strong>de</strong>lo <strong>de</strong> [Swanson e Jao 2009].<br />

O mo<strong>de</strong>lo <strong>de</strong> Lippold et al. especifica dois tipos <strong>de</strong> adversário, um atacante externo<br />

e outro interno. Nada mudamos nas <strong>de</strong>finições relacionadas ao atacante externo<br />

(Tipo I), que é aquele que <strong>de</strong>sconhece a chave mestra secreta, mas que po<strong>de</strong> revelar chaves<br />

parciais <strong>de</strong> entida<strong>de</strong>s à sua escolha, po<strong>de</strong> substituir chaves públicas ou revelar segredos<br />

temporários <strong>de</strong> sessão. O atacante interno (Tipo II) conhece a chave mestra secreta<br />

e mo<strong>de</strong>la o KGC ou um adversário que corrompeu o principal segredo do sistema. Para<br />

capturar um comportamento in<strong>de</strong>sejável do KGC em gerar parâmetros <strong>de</strong> forma <strong>de</strong>sonesta,<br />

permitimos que o adversário interno escolha arbitrariamente todos os parâmetros<br />

do sistema e os entregue ao simulador do sistema; a chave mestra secreta fica em po<strong>de</strong>r<br />

exclusivo do adversário. Por esse motivo, <strong>de</strong>sabilitamos para o adversário interno a consulta<br />

aos oráculos que revelam a chave mestra ou a chave parcial <strong>de</strong> um dado usuário.<br />

Também é preciso modificar o comportamento do oráculo que cria novos usuários (<strong>de</strong>sonestos,<br />

isto é, sob total controle do adversário); nesse caso, o adversário informa o valor<br />

da chave secreta parcial, além da i<strong>de</strong>ntida<strong>de</strong> e chave pública do usuário. Esse atacante<br />

interno mal intencionado po<strong>de</strong> substituir chaves públicas e revelar segredos temporários<br />

<strong>de</strong> sessão.<br />

268


Duas sessões são consi<strong>de</strong>radas com matching se: (1) envolvem os mesmos participantes,<br />

(2) se na primeira sessão um participante é o emissor e o outro o receptor, então<br />

na segunda sessão os participantes <strong>de</strong>vem inverter os papéis e (3) as mensagens <strong>de</strong> saída<br />

<strong>de</strong> uma sessão são iguais às <strong>de</strong> entrada na outra e vice-versa. Uma sessão é consi<strong>de</strong>rada<br />

fresh se:<br />

• ela se encerrou e o adversário não revelou a chave <strong>de</strong> sessão;<br />

• nenhum <strong>de</strong> seus participantes teve mais que dois segredos corrompidos;<br />

• não existe sessão com matchingque tenha tido sua chave secreta revelada.<br />

O adversário po<strong>de</strong> realizar uma única consulta ao oráculo <strong>de</strong> Teste, sobre uma sessão<br />

necessariamente fresh. Para respon<strong>de</strong>r esse oráculo, o simulador joga uma moeda não<br />

viciada para escolher se entrega a verda<strong>de</strong>ira chave da sessão <strong>de</strong> Teste ou um número<br />

aleatório. O adversário vence o jogo contra o simulador se pu<strong>de</strong>r advinhar qual foi o<br />

resultado da moeda jogada. A vantagem do adversário é <strong>de</strong>finida como a distância entre<br />

0,5 e a probabilida<strong>de</strong> <strong>de</strong>le vencer o jogo.<br />

Um protocolo CL-AKA é dito seguro se qualquer adversário, externo ou interno<br />

mal intencionado, tem vantagem negligenciável sob o parâmetro <strong>de</strong> segurança.<br />

A <strong>de</strong>scrição formal <strong>de</strong>sses conceitos e mo<strong>de</strong>lo segue [Bellare e Rogaway 1993a] e<br />

[LaMacchia et al. 2007].<br />

4. Novo Protocolo CL-AKA Seguro no Mo<strong>de</strong>lo Estendido<br />

Passamos a <strong>de</strong>screver um novo protocolo CL-AKA que po<strong>de</strong> ser <strong>de</strong>monstrado seguro no<br />

mo<strong>de</strong>lo estendido, <strong>de</strong>scrito na Seção 3. Os parâmetros do sistema incluem um emparelhamento<br />

bilinear e : G×G → G T , três funções <strong>de</strong> hash criptográficas H : {0, 1} ∗ → {0, 1} k<br />

H 1 : {0, 1} ∗ → G e H 2 : {0, 1} ∗ → G, além da chave mestra pública sP , calculada a<br />

partir da chave mestra secreta s do KGC. Um usuário i<strong>de</strong>ntificado por sua i<strong>de</strong>ntida<strong>de</strong>,<br />

digamos A, possui um valor público (Q A1 = H 1 (A), Q A2 = H 2 (A)), um par para chave<br />

secreta parcial (d A1 = sQ A1 , d A2 = sQ A2 ), que é calculado e entregue pelo KGC <strong>de</strong><br />

forma segura, um valor secreto x A e a correspon<strong>de</strong>nte chave pública x A P .<br />

Para estabelecerem uma chave secreta em comum, dois usuários A e B escolhem<br />

seus valores secretos temporários, respectivamente r A , r B ∈ Z q , e calculam r A P e r B P .<br />

Então trocam as seguintes mensagens<br />

A → B : E A = (r A P, x A P ) B → A : E B = (r B P, x B P )<br />

Ao receberem a mensagem do parceiro, verificam a pertinência a G 2 e:<br />

A calcula:<br />

B calcula:<br />

K = e(r B P + Q B1 , r A sP + d A1 ) K = e(r A P + Q A1 , r B sP + d B1 )<br />

L = e(r B P + Q B2 , r A sP + d A2 ) L = e(r A P + Q A2 , r B sP + d B2 )<br />

M = e(x B P, d A1 ) · e(Q B1 , x A sP ) M = e(x A P, d B1 ) · e(Q A1 , x B sP )<br />

Z = (x A x B P, x A r B P, r A r B P, r A x B P ) Z = (x B x A P, r B x A P, r B r A P, x B r A P )<br />

SK = H(A, B, E A , E B , K, L, M, Z) SK = H(A, B, E A , E B , K, L, M, Z)<br />

4.1. Segurança do Novo Protocolo<br />

Para a segurança do protocolo proposto, apresentamos uma redução do problema Diffie-<br />

Hellman Bilinear Lacunar (Gap-BDH) para o problema <strong>de</strong> se construir um algoritmo que<br />

diferencie um número aleatório <strong>de</strong> uma chave secreta calculada pelo protocolo proposto.<br />

269


A redução indica que se houver um adversário com vantagem não negligenciável contra<br />

o protocolo, sob o mo<strong>de</strong>lo <strong>de</strong> adversário estendido da Seção 3, então existe algoritmo <strong>de</strong><br />

tempo polinomial que resolve o Gap-BDH. A seguir, enunciamos o teorema que relaciona<br />

a vantagem do adversário com a do solucionador do Gap-BDH; no apêndice A, apresentamos<br />

sua <strong>de</strong>monstração sob o mo<strong>de</strong>lo <strong>de</strong> oráculo aleatório [Bellare e Rogaway 1993b].<br />

Teorema 1 Sob a hipótese <strong>de</strong> dificulda<strong>de</strong> do problema Gap-BDH, se as funções H, H 1 e<br />

H 2 são mo<strong>de</strong>ladas como oráculos aleatórios, então o protocolo CL-AKA Novo é seguro.<br />

5. Revisão do Protocolo <strong>de</strong> Yang e Tan<br />

Yang e Tan propuseram pequenas modificações na especificação formal do mo<strong>de</strong>lo <strong>de</strong><br />

segurança <strong>de</strong> [Lippold et al. 2009], porém sem alterar as proprieda<strong>de</strong>s essenciais, como<br />

permitir adversário ativo, isto é, que po<strong>de</strong> escolher arbitrariamente o valor do temporário<br />

secreto dos envolvidos em uma sessão <strong>de</strong> comunicação [Yang e Tan 2011]. Os autores<br />

propuseram um protocolo CL-AKA sem emparelhamento bilinear e apresentaram<br />

<strong>de</strong>monstração <strong>de</strong> segurança sob a hipótese <strong>de</strong> dificulda<strong>de</strong> do Gap-DH. O protocolo <strong>de</strong><br />

Yang e Tan é menos eficiente no uso do canal <strong>de</strong> comunicação, porém ten<strong>de</strong> a ser mais<br />

eficiente computacionalmente, <strong>de</strong>pen<strong>de</strong>ndo do esquema <strong>de</strong> assinatura escolhido.<br />

No entanto, na prova <strong>de</strong> segurança, os autores não tratam corretamente os casos em<br />

que o adversário revela chaves <strong>de</strong> sessões diferentes da <strong>de</strong> Teste, mas que envolvem seus<br />

participantes e que possuem matching com outra sessão. Nessas situações (por exemplo<br />

no caso (1f) da <strong>de</strong>monstração), a simulação po<strong>de</strong> ser abortada e o simulador não po<strong>de</strong>rá<br />

aproveitar a vantagem do adversário. Por esse motivo, não se po<strong>de</strong> afirmar que o protocolo<br />

é seguro no mo<strong>de</strong>lo prometido.<br />

6. Comparações<br />

O protocolo novo tem <strong>de</strong>sempenho computacional similar aos anteriores, porém apresenta<br />

nível <strong>de</strong> segurança maior com relação a um adversário interno, pois foi mostrado seguro<br />

no mo<strong>de</strong>lo estendido apresentado na Seção 3. A Tabela 1 mostra os protocolos LBG<br />

[Lippold et al. 2009], GOT [Goya et al. 2010] e o novo (<strong>de</strong>scrito na Seção 4), todos no<br />

nível <strong>de</strong> segurança para o problema Gap-BDH, em dois cenários diferentes. O cenário<br />

normal exibe os protocolos da maneira como eles são <strong>de</strong>finidos, contando-se o tempo<br />

<strong>de</strong>s<strong>de</strong> a escolha do valor secreto temporário rP até o cálculo da chave <strong>de</strong> sessão SK.<br />

Tabela 1. Comparação dos protocolos seguros sob o problema Gap-BDH<br />

Normal<br />

Pré-computação<br />

LBG-Gap GOT-Gap Novo LBG-Gap GOT-Gap Novo<br />

Emparelhamentos 4 4 4 1 1 2<br />

Exponenciações em G T 2 0 0 1 0 0<br />

Multiplicações em G T 2 1 1 1 0 0<br />

Multiplicações em G 5 7 6 4 5 5<br />

Adições em G 0 2 4 0 2 4<br />

Mo<strong>de</strong>lo <strong>de</strong> segurança Lippold et al. est. Lippold et al. est.<br />

Tempo (s) B-271 0,062 0,061 0,062 0,019 0,019 0,033<br />

B-1223 3,504 3,432 3,442 0,992 0,955 1,769<br />

270


O cenário com pré-computação é consi<strong>de</strong>rado quando um usuário A se comunica<br />

frequentemente com um usuário B, assim do ponto <strong>de</strong> vista do usuário A, alguns valores<br />

referentes a B não precisam ser computados novamente, bastando apenas serem armazenados.<br />

É importante notar os valores pré-calculados <strong>de</strong>rivados da chave secreta <strong>de</strong>vem ser<br />

armazenados <strong>de</strong> forma segura.<br />

Os protocolos foram codificados com a biblioteca criptográfica Relic (versão<br />

0.2.3) [Aranha e Gouvêa ], que é escrita em linguagem <strong>de</strong> programação C. A Tabela 1<br />

apresenta dois tempos que se referem às execuções empregando as curvas binárias B-271<br />

e B-1223 presentes na biblioteca. Essas curvas apresentam nível <strong>de</strong> segurança mínimo<br />

<strong>de</strong> 70 bits e 128 bits respectivamente. O ambiente <strong>de</strong> testes para simulação dos protocolos<br />

inclui um computador com processador Intel Core 2 Duo T5450 (1.66Ghz e 2MB <strong>de</strong><br />

cache L2) e sistema operacional Ubuntu 11.04. Apesar do processador ter 2 núcleos, os<br />

programas são executados em apenas uma única thread. Os programas são compilados e<br />

executados em 64 bits. Os tempos da Tabela 1 foram obtidos com essa configuração.<br />

Com base nos resultados apresentados na Tabela 1, observa-se que em uso normal<br />

os protocolos possuem aproximadamente os mesmos tempos <strong>de</strong> execução. Já com<br />

pré-computação, o novo protocolo não obtém vantagem <strong>de</strong> tempo. Na tabela não foram<br />

incluídos os protocolos que são seguros sob outros mo<strong>de</strong>los, pois apresentam nível <strong>de</strong><br />

segurança inferior.<br />

7. Conclusões<br />

Esten<strong>de</strong>mos o mo<strong>de</strong>lo <strong>de</strong> segurança mais forte <strong>de</strong>ntre os existentes para protocolos <strong>de</strong><br />

acordo <strong>de</strong> chave no mo<strong>de</strong>lo <strong>de</strong> chave pública sem certificado, tornando-o resistente a<br />

ataques <strong>de</strong> uma autorida<strong>de</strong> mal intencionada. Apresentamos um novo protocolo que é<br />

seguro nesse mo<strong>de</strong>lo estendido, sob a hipótese <strong>de</strong> dificulda<strong>de</strong> do problema Gap-BDH,<br />

no mo<strong>de</strong>lo <strong>de</strong> oráculos aleatórios. O protocolo proposto tem <strong>de</strong>sempenho equivalente a<br />

outros que foram mostrados seguros em condições similares, mas ocupa um patamar <strong>de</strong><br />

segurança mais elevado. Apontamos que o protocolo <strong>de</strong> Yang e Tan, que tem potencial<br />

para implementações eficientes, apresenta falhas na <strong>de</strong>monstração <strong>de</strong> segurança. Estamos<br />

trabalhando em duas variações sobre o protocolo aqui proposto, uma para garantir nível<br />

<strong>de</strong> segurança maior com o problema computacional BDH (melhor que Gap-BDH) e outra<br />

para maior eficiência com mo<strong>de</strong>lo <strong>de</strong> segurança melhorado <strong>de</strong> Swanson e Jao. Como<br />

trabalho futuro, sugerimos a busca por protocolos que sejam mostrados seguros no mo<strong>de</strong>lo<br />

padrão, sem oráculos aleatórios.<br />

Referências<br />

Al-Riyami, S. S. e Paterson, K. G. (2003). Certificateless public key cryptography. In<br />

ASIACRYPT 2003, volume 2894 of LNCS. Springer.<br />

Aranha, D. F. e Gouvêa, C. P. L. RELIC is an Efficient LIbrary for Cryptography. http:<br />

//co<strong>de</strong>.google.com/p/relic-toolkit/.<br />

Au, M. H., Mu, Y., Chen, J., Wong, D. S., Liu, J. K. e Yang, G. (2007). Malicious kgc<br />

attacks in certificateless cryptography. In Proceedings of the 2nd ACM symposium on<br />

Information, computer and communications security, ASIACCS ’07, pages 302–311,<br />

New York, NY, USA. ACM.<br />

271


Bellare, M. e Rogaway, P. (1993a). Entity authentication and key distribution. In LNCS -<br />

CRYPTO’93, pages 232–249. Springer Berlin. v.773.<br />

Bellare, M. e Rogaway, P. (1993b). Random oracles are practical: A paradigm for <strong>de</strong>signing<br />

efficient protocols. In First ACM Conference on Computer and Communications<br />

Security, pages 62–73, Fairfax, Virginia, USA. ACM.<br />

Boneh, D. e Franklin, M. (2003). I<strong>de</strong>ntity-based encryption from the weil pairing. SIAM<br />

J. Comput., 32(3):586–615.<br />

Chen, L., Cheng, Z. e Smart, N. P. (2007). I<strong>de</strong>ntity-based key agreement protocols from<br />

pairings. Int. J. Inf. Secur., 6(4):213–241.<br />

Dent, A. W. (2008). A survey of certificateless encryption schemes and security mo<strong>de</strong>ls.<br />

Int. J. Inf. Secur., 7(5):349–377.<br />

Goya, D., Okida, C. e Terada, R. (2010). A two-party certificateless authenticated key<br />

agreement protocol. In SBSeg 2010 X Simpósio Brasileiro <strong>de</strong> Segurança da Informação<br />

e <strong>de</strong> Sistemas Computacionais. Socieda<strong>de</strong> Brasileira <strong>de</strong> Computação.<br />

Krawczyk, H. (2005). Hmqv: a high-performance secure diffie-hellman protocol. In<br />

Advances in Cryptology, CRYPTO 2005, LNCS 3621, page 546566.<br />

LaMacchia, B., Lauter, K. e Mityagin, A. (2007). Stronger security of authenticated key<br />

exchange. In ProvSec’07: Proceedings of the 1st international conference on Provable<br />

security, volume 4784 of LNCS, pages 1–16, Berlin, Hei<strong>de</strong>lberg. Springer-Verlag.<br />

Lippold, G., Boyd, C. e González Nieto, J. (2009). Strongly secure certificateless key<br />

agreement. In Pairing ’09: Proceedings of the 3rd International Conference Palo<br />

Alto on Pairing-Based Cryptography, volume 5671 of LNCS, pages 206–230, Berlin,<br />

Hei<strong>de</strong>lberg. Springer-Verlag.<br />

Lippold, G. e González Nieto, J. (2010). Certificateless key agreement in the standard<br />

mo<strong>de</strong>l. In Proceedings of the Eighth Australasian Conference on Information Security<br />

– volume 105, AISC ’10, pages 75–85. Australian Computer Society, Inc.<br />

Swanson, C. e Jao, D. (2009). A study of two-party certificateless authenticated keyagreement<br />

protocols. In INDOCRYPT ’09: Proceedings of the 10th International<br />

Conference on Cryptology in India, volume 5922 of LNCS, pages 57–71, Berlin, Hei<strong>de</strong>lberg.<br />

Springer-Verlag.<br />

Yang, G. e Tan, C.-H. (2011). Strongly secure certificateless key exchange without pairing.<br />

In Proceedings of the 6th ACM Symposium on Information, Computer and Communications<br />

Security, ASIACCS ’11, pages 71–79, New York, NY, USA. ACM.<br />

Zhang, L., Zhang, F., Wu, Q. e Domingo-Ferrer, J. (2010). Simulatable certificateless<br />

two-party authenticated key agreement protocol. Inf. Sci., 180:1020–1030.<br />

A. Demonstração do Teorema 1<br />

Suponha, por absurdo, que existe um algoritmo A <strong>de</strong> tempo polinomial probabilístico<br />

com vantagem não negligenciável em quebrar o protocolo. Vamos mostrar como construir<br />

um algoritmo S que recebe como entrada uma quádrupla (P, aP, bP, cP ) referente a um<br />

<strong>de</strong>safio BDH e gera como resposta o valor e(cP, abP ) com a ajuda <strong>de</strong> um oráculo <strong>de</strong><br />

<strong>de</strong>cisão DBDH. S simula uma execução real do protocolo e interage com o adversário<br />

272


Tabela 2. Casos válidos <strong>de</strong> corrompimento dos participantes da sessão <strong>de</strong> Teste<br />

Adversário 1 2 3 4 5 6 7 8 9<br />

consulta A B A B A B A B A B A B A B A B A B<br />

RevealPartial ou r r r r<br />

KGC mal intenc. e e e e e e e e<br />

RevealSV ou r r r r r r r r r r r r<br />

ReplacePK e e e e e e e e e e e e<br />

RevealEph ou r r r r r r r r r r r r<br />

adversário é ativo r e r e r e r e r e r e<br />

Adversário po<strong>de</strong> revelar(r) ou escolher(e)/modificar valor do componente secreto<br />

A, nos mol<strong>de</strong>s do jogo <strong>de</strong>scrito no mo<strong>de</strong>lo <strong>de</strong> segurança <strong>de</strong> [Lippold et al. 2009] com as<br />

ampliações <strong>de</strong>scritas na Seção 3. Se o jogo não for abortado, A prossegue até o final<br />

e obtém vantagem contra o protocolo. O simulador usa os passos do adversário para<br />

calcular, então, a resposta ao <strong>de</strong>safio BDH, que é armazenada na variável answer.<br />

Antes do início do jogo entre o simulador S e o adversário A, S tenta advinhar<br />

qual será a sessão sobre a qual A realizará a consulta <strong>de</strong> Teste e quem serão os participantes<br />

<strong>de</strong>ssa sessão. Consi<strong>de</strong>re um conjunto <strong>de</strong> usuários honestos previamente estabelecidos<br />

U = {U 1 , . . . , U n }, com n ≤ q 1 , e uma lista correspon<strong>de</strong>nte com valores (ID i , x i , x i P ).<br />

O simulador escolhe I, J ∈ {1, . . . , n}, com I ≠ J, e a sessão Π t I,J , on<strong>de</strong> t ∈ {1, . . . , q 0}.<br />

A probabilida<strong>de</strong> <strong>de</strong> S fazer escolhas corretas é maior que 1/(q 0 q 2 1).<br />

Se S fizer escolhas incorretas, será obrigado a abortar o jogo em algum momento.<br />

Por outro lado, se o adversário realizar alguma operação não permitida, o jogo também é<br />

abortado por S. No entanto, se A apresenta vantagem não negligenciável, é porque realiza<br />

a consulta <strong>de</strong> Teste sobre uma sessão fresh, respeitando a <strong>de</strong>finição <strong>de</strong> segurança. Em<br />

outras palavras, o adversário revela (ou modifica) no máximo dois dos três componentes<br />

secretos associados a cada participante da sessão <strong>de</strong> Teste.<br />

Na Tabela 2, são listadas as possibilida<strong>de</strong>s que o adversário possui para revelar ou<br />

modificar valores secretos associados à sessão <strong>de</strong> Teste e seus participantes, sem corromper<br />

integralmente a sessão. Os participantes da sessão <strong>de</strong> Teste são <strong>de</strong>notados por A e B,<br />

que equivalem respectivamente às i<strong>de</strong>ntida<strong>de</strong>s ID I e ID J . Sem perda <strong>de</strong> generalida<strong>de</strong>,<br />

consi<strong>de</strong>re que A é quem inicia a sessão e B é quem respon<strong>de</strong>.<br />

Os casos 1 a 4 representam aqueles em que o adversário po<strong>de</strong> ser a própria autorida<strong>de</strong><br />

<strong>de</strong> geração <strong>de</strong> chaves que, na situação mais crítica, é um KCG que gera os parâmetros<br />

<strong>de</strong> forma <strong>de</strong>sonesta. Para mostrar que o adversário não é capaz <strong>de</strong> tirar vantagem em escolher<br />

parâmetros <strong>de</strong> forma mal intencionada, S permite que A selecione arbitrariamente<br />

os parâmetros do sistema; A entrega para o simulador os parâmetros gerados junto com a<br />

chave mestra pública mpk e não revela a chave mestra secreta msk. Os casos 5 a 9 representam<br />

aqueles em que o adversário é externo. Nesses casos, S seleciona os parâmetros<br />

do sistema e <strong>de</strong>fine mpk = aP .<br />

O simulador tenta advinhar qual <strong>de</strong>sses nove casos o adversário explorará para<br />

quebrar o protocolo. Se S errar na escolha, o jogo será abortado em algum momento. Se<br />

acertar, então a probabilida<strong>de</strong> <strong>de</strong> S completar o jogo será maior que 1/(9q 0 q 2 1). S ainda<br />

estabelece que x A P = aP (casos 1 e 3), x B P = bP (casos 1 e 4), x A P = cP (caso 6)<br />

e x B P = cP (caso 5); quando for o caso, S faz x A =⊥ ou x B =⊥. S inicia, então, a<br />

273


simulação.<br />

Respostas aos Oráculos<br />

Uma vez iniciado o jogo, o simulador <strong>de</strong>ve respon<strong>de</strong>r às consultas realizadas pelo adversário<br />

aos oráculos disponíveis. O comportamento do simulador para tratar essas consultas<br />

varia <strong>de</strong> acordo com cada um dos nove casos. Os oráculos H e RevealSessionKey,<br />

que respectivamente calcula e revela a chave <strong>de</strong> sessão, são os mais críticos a serem<br />

tratados pelo simulador. Por esse motivo, eles serão <strong>de</strong>scritos mais <strong>de</strong>talhadamente no<br />

Apêndice A.1. Os <strong>de</strong>mais oráculos são tratados como segue:<br />

H 1 (ID i ). Se S está simulando os casos 5 a 9, S embute convenientemente as entradas<br />

do <strong>de</strong>safio BDH:<br />

• casos 5, 7 e 9: H 1 (A) = bP , ou seja, Q A1 é <strong>de</strong>finido como bP<br />

• casos 6 e 8: H 1 (B) = bP , ou seja, Q B1 é <strong>de</strong>finido como bP<br />

• caso 9: H 1 (B) = cP , ou seja, Q B1 é <strong>de</strong>finido como cP<br />

Para os <strong>de</strong>mais participantes nos casos 5 a 9 e para os casos 1 a 4, S escolhe l i ∈ Z q<br />

ao acaso e respon<strong>de</strong> l i P . Todas as respostas e os valores l i são armazenados em<br />

uma lista.<br />

H 2 (ID i ). Análogo a H 1 , porém S sorteia z, y ∈ Z q (ou z, y A , y B , para o caso 9) e <strong>de</strong>fine:<br />

• casos 5 e 7: H 2 (A) = yP −zbP , ou seja, Q A2 é <strong>de</strong>finido como yP −zQ A1<br />

• casos 6 e 8: H 2 (B) = yP −zbP , ou seja, Q B2 é <strong>de</strong>finido como yP −zQ B2<br />

• caso 9: H 2 (A) = y A P − zbP , isto é, Q A2 = y A P − zQ A1 e<br />

H 2 (B) = y B P − zcP , ou seja, Q B2 = y B P − zQ B1<br />

Para os <strong>de</strong>mais participantes nos casos 5 a 9 e para os casos 1 a 4, S escolhe p i ∈<br />

Z q ao acaso e respon<strong>de</strong> p i P . Todas as respostas e os valores p i são armazenados<br />

em uma lista.<br />

RequestPublicKey(ID i ). S respon<strong>de</strong> x i P .<br />

EstablishParty(ID i , x i P ). O simulador cria o usuário <strong>de</strong>sonesto com i<strong>de</strong>ntificador<br />

(ID i ), caso ainda não exista, chamando os oráculos H 1 , H 2 . S registra a chave<br />

pública x i P , <strong>de</strong>fine x i =⊥. Nos casos 5 a 9, entrega ao adversário a chave secreta<br />

parcial (d i1 = l i aP, d i2 = p i aP ); nos casos 1 a 4, S recebe a chave secreta parcial<br />

como entrada à consulta ao oráculo e a armazena.<br />

Send(Π s i,j, m). Se a sessão Π s i,j ainda não existe, S cria uma sessão para onwner ID i e<br />

peer ID j , com estado in<strong>de</strong>finido e com o papel <strong>de</strong> emissor (se m = λ) ou receptor<br />

(em caso contrário). Se m = λ e Π s i,j é sessão <strong>de</strong> Teste, então <strong>de</strong>fine r iP = aP<br />

(nos casos 2 e 4) ou r i P = cP (no caso 8). Se m ≠ λ, Π s i,j é sessão <strong>de</strong> Teste<br />

com papel <strong>de</strong> receptor, então <strong>de</strong>fine r i P = bP (nos casos 2 e 3) ou r i P = cP<br />

(no caso 7). Nos <strong>de</strong>mais casos, S escolhe r i ao acaso. S executa o protocolo,<br />

extraindo r B P <strong>de</strong> m quando necessário, atualiza o estado da sessão e entrega r i P<br />

ao adversário.<br />

RevealPartialKey(ID i ). Se S está tratando os casos 1 a 4, aborta. Se ID i = A e S está<br />

tratando os casos 5, 7 ou 9, aborta. Se ID i = B e S está tratando os casos 6, 8<br />

ou 9, aborta. Caso contrário, respon<strong>de</strong> a chave secreta parcial (d i1 = l i aP, d i2 =<br />

p i aP ).<br />

RevealSecretValue(ID i ). Se x i =⊥, aborta. Se ID i = A e S está tratando os casos 1,<br />

3 ou 6, aborta. Se ID i = B e S está tratando os casos 1, 4 ou 5, aborta. Caso<br />

contrário, respon<strong>de</strong> o valor secreto x i .<br />

274


ReplacePublicKey(ID i , x i P ). Se ID i = A e S está tratando os casos 1, 3 ou 6, aborta.<br />

Se ID i = B e S está tratando os casos 1, 4 ou 5, aborta. Caso contrário, substitui<br />

a chave pública por x i P e <strong>de</strong>fine x i =⊥.<br />

RevealEphemeral(Π s i,j). Se ID i = A e S está tratando os casos 2, 4 ou 8, aborta. Se<br />

ID i = B e S está tratando os casos 2, 3 ou 7, aborta. Caso contrário, <strong>de</strong>volve o<br />

valor secreto r i da sessão.<br />

RevealSessionKey(Π s i,j). Se (Π s i,j) for a sessão <strong>de</strong> Teste, aborta. Caso contrário, prossegue<br />

com os passos <strong>de</strong>scritos no Apêndice A.1. Nos casos 1 a 4, S recebe a chave<br />

secreta parcial do participante ID i como entrada para a consulta.<br />

H(ID i , ID j , E i , E j , K, L, M, Z). Prossegue com os passos <strong>de</strong>scritos no Apêndice A.1.<br />

Test(Π s i,j). Se Π s i,j não é a sessão <strong>de</strong> Teste, aborta. Caso contrário, S joga uma moeda<br />

b ∈ {0, 1}. Se b = 0, <strong>de</strong>volve a chave <strong>de</strong> sessão; caso contrário sorteia e <strong>de</strong>volve<br />

um número aleatório r ∈ {0, 1} k para o adversário.<br />

Finalização do Jogo<br />

Assim que A finaliza o jogo, S <strong>de</strong>volve answer. Se a probabilida<strong>de</strong> <strong>de</strong> sucesso <strong>de</strong> A<br />

é P r[A], então a probabilida<strong>de</strong> <strong>de</strong> sucesso <strong>de</strong> S é P r[S] ≥ P r[A]/(9q 0 q1). 2 Se A tem<br />

vantagem não negligenciável em diferenciar um número aleatório da chave <strong>de</strong> sessão é<br />

porque A consultou H com valores corretos <strong>de</strong> K, L, M e Z. Nesse caso, answer contém<br />

o valor e(cP, abP ), conforme cálculos apresentados na seção A.1. Então S resolve o<br />

problema Gap-BDH em tempo polinomial em k, o que contradiz a hipótese <strong>de</strong> dificulda<strong>de</strong><br />

do Gap-BDH.<br />

□<br />

A.1. Oráculos H e RevealSessionKey<br />

Quando o oráculo RevealSessionKey é consultado pelo adversário, S <strong>de</strong>ve informar o<br />

valor da chave <strong>de</strong> uma dada sessão Π s i,j, caso ela não seja a sessão <strong>de</strong> Teste. Entretanto,<br />

nas sessões que não são a <strong>de</strong> Teste e que envolvem os participantes A e/ou B do Teste, o<br />

simulador não é capaz <strong>de</strong> calcular por si só o valor da chave <strong>de</strong> sessão, pois <strong>de</strong>sconhece<br />

alguns valores secretos. Se S informar valores diferentes <strong>de</strong> chave <strong>de</strong> sessão para duas<br />

sessões com matching, o adversário <strong>de</strong>tecta a incoerência e aborta o jogo. Se isso ocorre,<br />

S é incapaz <strong>de</strong> aproveitar a vantagem <strong>de</strong> A para resolver Gap-BDH. Por esse motivo,<br />

passamos a <strong>de</strong>screver como S proce<strong>de</strong> <strong>de</strong> modo a ser sempre consistente.<br />

O simulador mantém uma lista H lst , inicialmente vazia, com entradas na forma<br />

(ID i , ID j , E i , E j , K, L, M, Z, SK). Como H é função, S <strong>de</strong>ve respon<strong>de</strong>r o mesmo valor<br />

SK <strong>de</strong> chave <strong>de</strong> sessão para as mesmas entradas. Se A consultar H antes <strong>de</strong> eventualmente<br />

solicitar RevealSessionKey, basta S calcular o valor da chave <strong>de</strong> sessão SK e<br />

atualizar a lista. Se RevealSessionKey é consultado antes e S não é capaz <strong>de</strong> calcular<br />

todos os valores K, L, M, Z, então S sorteia SK e insere um novo registro na lista H lst<br />

com os valores (ID i , ID j , E i , E j , . . . , SK), preechendo tanto quanto possível os valores<br />

corretos <strong>de</strong> K, L, M, Z. Em uma eventual consulta posterior a H referente a uma sessão<br />

com matching, S atualiza H lst com os dados faltantes e respon<strong>de</strong> o mesmo valor SK. A<br />

seguir, vamos dividir a análise em dois gran<strong>de</strong>s casos, on<strong>de</strong> H e RevealSessionKey são<br />

consultados sobre sessões que:<br />

(a) não envolvem os participantes A e B da sessão <strong>de</strong> Teste e<br />

(b) envolvem o participante A e/ou B da sessão <strong>de</strong> Teste<br />

275


Tabela 3. Casos válidos para o adversário e inserção do <strong>de</strong>safio BDH<br />

1 2 3 4 5 6 7 8 9<br />

Chave A B A B A B A B A B A B A B A B A B<br />

ID: Q 1 x x x x x x x x bP bP bP bP bP cP<br />

PK: xP aP bP x x aP x x bP x cP cP x x x x x x x<br />

Eph: rP x aP bP bP aP x x x cP cP x x<br />

Desafio<br />

mpk = aP<br />

em: Z 1 Z 3 Z 2 Z 4 M 1 M 2 K 1 K 2 K 3<br />

(aP, bP, cP )–<strong>de</strong>safio BDH<br />

(x)–simulador <strong>de</strong>sconhece componente secreto<br />

(a) Sessões que Não Envolvem A e B Alvos do Teste<br />

Consi<strong>de</strong>re que A consulta H ou RevealSessionKey sobre participantes ID i e ID j , ambos<br />

diferentes <strong>de</strong> A, B. Sem perda <strong>de</strong> generalida<strong>de</strong>, suponha que ID i é quem inicia a sessão.<br />

O simulador conhece as chaves secretas <strong>de</strong> ID i e <strong>de</strong> ID j , a não ser nos seguintes casos:<br />

• A substitui a chave pública <strong>de</strong> ID i e, portanto, S não conhece x i<br />

• A substitui a chave pública <strong>de</strong> ID j e, portanto, S não conhece x j<br />

• A escolhe ativamente o valor temporário <strong>de</strong> ID j e, portanto, S não conhece r j<br />

Po<strong>de</strong>mos supor que S conhece r i porque, se A ativamente alterar r i P e entregar outro valor<br />

a ID j , não haverá sessão com matching (a não ser com probabilida<strong>de</strong> negligenciável).<br />

No pior dos casos, A consulta RevealSessionKey antes <strong>de</strong> consultar H e S é incapaz <strong>de</strong><br />

calcular os valores Z 1 , Z 2 . Em uma eventual consulta posterior <strong>de</strong> A a H, S verifica se<br />

e(x i P, x j P ) ? = e(x i x j P, P ) e se e(x i P, r j P ) ? = e(x i r j P, P ), on<strong>de</strong> x i x j P e x i r j P são<br />

informados por A. Se ambas igualda<strong>de</strong>s valem e <strong>de</strong>mais entradas <strong>de</strong> H correspon<strong>de</strong>m<br />

aos valores que S consegue calcular, então S respon<strong>de</strong> a mesma chave SK, pois se trata<br />

<strong>de</strong> sessão com matching, caso contrário, sorteia nova chave. S atualiza H lst conforme<br />

necessário.<br />

(b) Sessões que Envolvem A ou B Alvos do Teste<br />

O simulador embute os valores do <strong>de</strong>safio em pontos estratégicos do protocolo, <strong>de</strong> modo a<br />

induzir o adversário a realizar cálculos com esses valores. Na Tabela 3, são relacionadas<br />

as possíveis estratégias que A po<strong>de</strong> empregar para quebrar a segurança do protocolo e<br />

que chaves são associadas aos valores do <strong>de</strong>safio. A última linha da Tabela 3 indica as<br />

variáveis que ocorrem no protocolo e que capturam o cálculo <strong>de</strong> e(cP, abP ), ou seja, a<br />

resposta do <strong>de</strong>safio. Obviamente S não sabe calcular essa resposta, mas mostraremos que<br />

se A apresenta vantagem não negligenciável, é porque conhece elementos suficientes para<br />

que a solução seja calculada. Tais elementos são entregues ao simulador sempre que A<br />

realiza consultas ao oráculo H.<br />

Observe que as variáveis K e L do protocolo po<strong>de</strong>m ser reescritas como indicado<br />

na Tabela 4. O fatores <strong>de</strong> M e os componentes <strong>de</strong> Z também são nomeados para facilitar a<br />

leitura dos cálculos. Quando S embute uma das entradas do <strong>de</strong>safio BDH em uma chave,<br />

automaticamente torna-se <strong>de</strong>sconhecido o respectivo valor secreto. Por exemplo, quando<br />

aP é atribuído como valor <strong>de</strong> chave pública <strong>de</strong> A, isto é, x A P = aP , S <strong>de</strong>sconhece x A<br />

por <strong>de</strong>sconhecer a. Nos casos 5 a 9, a chave pública mestra recebe o valor aP e, por isso,<br />

S não tem acesso ao valor da chave mestra secreta. Quando Q A1 = bP , nos casos 5, 7 e<br />

276


Tabela 4. Nomenclatura das variáveis<br />

K = e(r B P, d A1 ) · e(Q<br />

} {{ }<br />

B1 , r A sP ) · e(Q<br />

} {{ }<br />

B1 , d A1 ) · e(r<br />

} {{ } B P, r A sP )<br />

} {{ }<br />

K 1 K 2 K 3<br />

L = e(r B P, d A2 ) · e(Q<br />

} {{ }<br />

B2 , r A sP ) · e(Q<br />

} {{ }<br />

B2 , d A2 ) · e(r<br />

} {{ } B P, r A sP )<br />

} {{ }<br />

L 1 L 2 L 3<br />

K 4<br />

L 4 (=K 4 )<br />

M = e(x B P, d A1 ) · e(Q<br />

} {{ }<br />

B1 , x A sP )<br />

} {{ }<br />

M 1<br />

M 2<br />

Z = (x A x B P , x<br />

} {{ } A r B P , r<br />

} {{ } A r B P , r<br />

} {{ } A x B P )<br />

} {{ }<br />

Z 1 Z 2 Z 3 Z 4<br />

9, S <strong>de</strong>sconhece a chave parcial secreta d A1 = abP , pois não sabe calcular ab. Na Tabela<br />

3, são indicados com “x” outros componentes secretos aos quais S não tem acesso. São<br />

os casos em que A é permitido substituir a chave pública ou escolher ativamente o valor<br />

temporário <strong>de</strong> sessão, preservando ainda a característica <strong>de</strong> sessão fresh e com matching.<br />

De acordo com a <strong>de</strong>finição <strong>de</strong> sessão fresh, se não houver sessão com matching, o<br />

receptor não po<strong>de</strong> ser totalmente corrompido. S precisa tratar corretamente as situações<br />

em que B se envolve em sessões integralmente corrompidas, isto é, com um participante<br />

C <strong>de</strong>sonesto. Esse cenário é tratado como subcaso dos casos 1, 4, 5, 6, 8 e 9. Analogamente,<br />

S <strong>de</strong>ve lidar corretamente com as sessões em que A interage com o participante C<br />

<strong>de</strong>sonesto; essa situação é tratada como subcaso <strong>de</strong> todos os nove casos.<br />

Na sequência, vamos analisar os nove casos sobre sessões que envolvem A e/ou<br />

B, participantes do Teste. Nos casos 5 a 9, fazemos uso do oráculo <strong>de</strong> <strong>de</strong>cisão BDH,<br />

suposto existente no problema Gap-BDH. No caso 9, usamos duas variantes do problema<br />

Gap-BDH, que mostramos serem equivalentes ao Gap-BDH, no Apêndice A.2.<br />

Caso 1. O <strong>de</strong>safio é embutido em Z 1 . Se A consulta H(A, B, E A , E B , K, L, M, (Z 1 , Z 2 ,<br />

?<br />

Z 3 , Z 4 )), S verifica se e(aP, bP ) = e(P, Z 1 ), caso sim, answerBDH ←<br />

e(cP, Z 1 ). S proce<strong>de</strong> como no caso (a) para manter H lst atualizada.<br />

Casos 2, 3 e 4. O <strong>de</strong>safio é embutido respectivamente em Z 3 , Z 2 e Z 4 . S proce<strong>de</strong> <strong>de</strong><br />

forma semelhante ao caso 1.<br />

Caso 5. O <strong>de</strong>safio é embutido em M 1 .<br />

Se A consulta H(A, B, E A , E B , K, L, M, Z), S verifica se M 1 contém a resposta ao<br />

<strong>de</strong>safio, calculando M 2 = e(d B1 , x A P ), M 1 = M/M 2 e submetendo 〈aP, bP, cP, M 1 〉<br />

ao oráculo DBDH; se o oráculo respon<strong>de</strong>r positivamente, answerBDH ← M 1 . S verifica<br />

se já foi calculada chave para a sessão em questão ou uma com matching; em caso<br />

positivo, atualiza entradas incompletas no registro <strong>de</strong> H lst se for preciso, caso contrário,<br />

sorteia SK e cria novo registro em H lst . Respon<strong>de</strong> SK.<br />

Se A consulta RevealSessionKey(A, B, s), S calcula as variáveis <strong>de</strong> que é capaz e procura<br />

(A, B, E A , E B , ∗, ∗, ∗, (∗, ∗, Z 3 , Z 4 ), ∗) em H lst ; se encontrar registros na forma<br />

K<br />

(A, B, E A , E B , K, L, M, (Z 1 , Z 2 , Z 3 , Z 4 ), SK), calcula K 1 =<br />

K 2·K 3·K 4<br />

M 1 = M M 2<br />

e fornece<br />

〈aP, bP, r B P, K 1 〉 e 〈aP, bP, cP, M 1 〉 ao oráculo DBDH; se o oráculo respon<strong>de</strong>r<br />

positivamente em ambas consultas, S calcula L 1 =<br />

L<br />

L 2·L 3·L 4<br />

e verifica se valem todas as<br />

?<br />

= e(r B P, yaP ) · K −z<br />

1 , se e(x A P, x B P ) ? = e(Z 1 , P ) e se<br />

seguintes igualda<strong>de</strong>s: se L 1<br />

e(x A P, r B P ) = ? e(Z 2 , P ); em caso positivo, S respon<strong>de</strong> SK, caso contrário, sorteia novo<br />

SK.<br />

277


Se A consulta RevealSessionKey(A, C, s), S proce<strong>de</strong> <strong>de</strong> forma análoga e captura consistência<br />

fornecendo 〈aP, r c P, yP, K 1 〉 e 〈aP, x c P, yP, M 1 〉 ao oráculo DBDH.<br />

Se A consulta RevealSessionKey(C, B, s), S testa a consistência dos componentes <strong>de</strong> Z e<br />

testa se K ? = K 1 ·K 2 ·K 3 ·e(Z 3 , aP ) e se L ? = L 1 ·L 2 ·L 3 ·e(Z 3 , aP ); se todas igualda<strong>de</strong>s<br />

valem, respon<strong>de</strong> SK, caso contrário, sorteia novo SK.<br />

Casos 6, 7 e 8. O <strong>de</strong>safio é embutido respectivamente em M 2 , K 1 e K 2 . S proce<strong>de</strong> <strong>de</strong><br />

forma semelhante ao caso 5.<br />

Caso 9. Similar ao caso 5, mas o <strong>de</strong>safio é embutido em K 3 . Se A consulta H, S fornece<br />

〈aP, bP, cP, r A P, r B P, K〉 ao oráculo <strong>de</strong> <strong>de</strong>cisão-BDH + (ver Apêndice A.2); se o<br />

oráculo respon<strong>de</strong>r positivamente, S calcula K ′ K<br />

=<br />

K 2·K 4<br />

L ′ L<br />

=<br />

L 2·L 4<br />

U 1 =<br />

[<br />

e(<br />

y A (r z BP + y B P ) − y A cP − y B bP, aP ) ] [ ] −1<br />

1+z<br />

U 2 = [L ′ ] −1<br />

1<br />

z K<br />

K 3 = U 1 ·<br />

′ 1+z<br />

U 2<br />

e<br />

answerBDH ← K 3 .<br />

Se A consulta RevealSessionKey(A, B, s), S testa K como acima e fornece<br />

〈aP, bP, cP, x A P, x B P, M〉 ao oráculo <strong>de</strong> <strong>de</strong>cisão-BDH ∗ ; se o oráculo respon<strong>de</strong>r positivamente<br />

e K também passar no teste, S respon<strong>de</strong> SK, caso contrário, sorteia novo SK.<br />

Se A consulta RevealSessionKey para (A, C, s) ou (C, B, s), S proce<strong>de</strong> <strong>de</strong> forma análoga<br />

ao caso 5.<br />

A.2. Variantes do problema Gap-BDH<br />

Seja e : G × G → G T um emparelhamento bilinear admissível, com G e G T grupos <strong>de</strong><br />

or<strong>de</strong>m prima q, P gerador <strong>de</strong> G e valores aleatórios a, b, c ∈ Z q e r, s ∈ Z ∗ q. Defina os<br />

seguintes problemas computacionais:<br />

BDH ∗ : dados 〈aP, bP, cP, rP, sP 〉, calcular e(sP, abP ) · e(rP, acP ).<br />

BDH + : dados 〈aP, bP, cP, rP, sP 〉, calcular e(sP + cP, raP + abP ).<br />

Gap-BDH ∗ : dados 〈aP, bP, cP, rP, sP 〉, calcular e(sP, abP ) · e(rP, acP ), com ajuda <strong>de</strong><br />

um oráculo <strong>de</strong> <strong>de</strong>cisão-BDH ∗ , que <strong>de</strong>ci<strong>de</strong> se e(vP, xyP ) · e(uP, xzP ) ? = T , para<br />

dados (xP, yP, zP, uP, vP, T ) ∈ G 5 × G T .<br />

Gap-BDH + : dados 〈aP, bP, cP, rP, sP 〉, calcular e(sP +cP, raP +abP ), com ajuda <strong>de</strong><br />

um oráculo <strong>de</strong> <strong>de</strong>cisão-BDH + .<br />

Os problemas BDH ∗ e BDH + são equivalentes ao BDH:<br />

BDH = p BDH ∗ . É imediato que BDH ∗ ≤ p BDH. Para ver que BDH ≤ p BDH ∗ , suponha<br />

que existe um algoritmo A que resolve o BDH ∗ ; vamos construir um algoritmo<br />

S que resolve o BDH. S recebe como entrada (xP, yP, zP ), escolhe u, v ∈ Z ∗ q,<br />

submete (xP, yP, uP, vP, zP ) para A e recebe como resposta T = e(zP, xyP ) ·<br />

e(vP, xuP ). S <strong>de</strong>volve T · e(vP, xP ) −u como solução.<br />

BDH = p BDH + . Para ver que BDH ≤ p BDH + , suponha que existe um algoritmo A que<br />

resolve o BDH + ; vamos construir um algoritmo S que resolve o BDH. S recebe<br />

como entrada (xP, yP, zP ), escolhe u, v ∈ Z ∗ q, submete (xP, yP, zP, uP, vP )<br />

para A e recebe como resposta T = e(vP + zP, uxP + xyP ) = e(vP, xyP ) ·<br />

e(zP, uxP ) · e(zP, xyP ) · e(vP, uxP ). S <strong>de</strong>volve T · e(xP, yP ) −v · e(zP, xP ) −u ·<br />

e(vP, xP ) −u como solução. BDH + ≤ p BDH segue <strong>de</strong> forma análoga.<br />

Dessas equivalências, segue que Gap-BDH ∗ e Gap-BDH + são equivalentes a Gap-BDH.<br />

278


WTICG<br />

279


Mobile Steganography Embed<strong>de</strong>r<br />

Thomas F. M. White 1 , Jean E. Martina 1,2∗†<br />

1 Computer Laboratory<br />

University of Cambridge<br />

15 JJ Thomson Avenue<br />

Cambridge - UK - CB3 0FD<br />

2 Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina<br />

Departamento <strong>de</strong> Informática e <strong>de</strong> Estatística<br />

Laboratório <strong>de</strong> Segurança em Computação<br />

Campus Universitário - Florianópolis - SC - Brazil<br />

fredley@gmail.com, Jean.Martina@cl.cam.ac.uk<br />

Abstract. Despite the capabilities of Android mobile phones, compared in<br />

specification to personal computers a few years ago, few programs for applied<br />

steganography has been written for such <strong>de</strong>vices. Our objective is to<br />

produce an application that uses echo steganography to hi<strong>de</strong> a short text message<br />

in an audio message recor<strong>de</strong>d by the user, and then share that message.<br />

Someone with the same application on their <strong>de</strong>vice who receives such a message<br />

will be able to extract the hid<strong>de</strong>n data from the audio message. We show<br />

our <strong>de</strong>velopment strategy as well the evaluation process for our application.<br />

1. Introduction<br />

SMS messages, and MMS messages are easy to screen, especially for simple keywords.<br />

GSM itself has also been compromised [Paget 2011], so sending sensitive messages<br />

could be dangerous. Merely encrypting messages sometimes cannot be enough,<br />

as the vast majority of traffic over such systems is unencrypted (asi<strong>de</strong> from GSM).<br />

Malicious parties could <strong>de</strong>tect high levels of encrypted traffic as a signal of unwanted<br />

activity. By tracking who a person is in communication with, oppressive governments<br />

can i<strong>de</strong>ntify and track social groups using social network analysis [Scott 2000].<br />

Our project will build on the work done by Jenkins’s Steganography in Audio<br />

[Jenkins 2009], and will focus on implementing the steganographic methods used on<br />

the Android platform. We build an application in which a user can perform steganography<br />

without any complex setup or configuration, or specialist knowledge.<br />

A user will be able to use our application to communicate securely and secretly<br />

with others in a way that seems innocuous to an observer with complete access to all<br />

data. Should there be a danger of the <strong>de</strong>vice being inspected, the application can be set<br />

up to erase all traces of usage from the <strong>de</strong>vice. It will also multicast messages, so as to<br />

obscure the target of a particular message.<br />

∗ Project Supervisor<br />

† Supported by CAPES Foundation/Brazil on grant #4226-05-4<br />

280


1.1. Relevant Material<br />

Most existing steganography applications only make use of least-significant-bit encoding,<br />

and there are freely available tools which can be modified relatively simply to<br />

<strong>de</strong>tect hid<strong>de</strong>n messages reliably in this case [Steg Secret 2011]. Apart from MP3Stego<br />

[MP3 Stego 2011]all use uncompressed audio to hold the hid<strong>de</strong>n data, and most have<br />

command-line interfaces.<br />

The steganography techniques explored in Jenkinss [Jenkins 2009] go beyond,<br />

providing methods which resistant to steganalysis, at least going as far as making the<br />

problem computationally infeasible on a large scale [Meghanathan and Nayak 2010].<br />

We will take the implementation of echo steganography to our application.<br />

First proposed in 1996 by Gruhl et al. [Gruhl et al. 1996], the i<strong>de</strong>a behind echo<br />

steganography is to introduce tiny echoes into the audio, similar to the echoes present<br />

in a room. The brain ignores these, making the changes in the audio almost imperceptible.<br />

Since the data is enco<strong>de</strong>d in the actual audio itself rather than the bits of the<br />

file, this method is resistant to format changes. This is i<strong>de</strong>al for a mobile application,<br />

where data connectivity is often slow and/or expensive.<br />

2. Design Decisions<br />

The audio manipulation package javax.sound is not present in the stripped down version<br />

of Java available in Android, and the SDK provi<strong>de</strong>s no alternative. There is also<br />

no provision for recording uncompressed audio or transcoding.<br />

We used several libraries to provi<strong>de</strong> the easiest way of performing each task,<br />

and to improve the readability of the co<strong>de</strong>. There is a small cost in terms of the size<br />

of the application, but this is not too large. To overcome these problems we have used<br />

the following libraries, and 3rd-party co<strong>de</strong>:<br />

• Rehearsal Assistant [Rehearsal Assistant Source 2011] - we used some classes<br />

in or<strong>de</strong>r to record uncompressed audio data and store as a wave file.<br />

• javax.sound.sampled - This package is present in the full JDK, and is used for<br />

exactly the kind of low-level audio manipulation required in this project<br />

• FourierTransform[Fast Fourier Transform at Co<strong>de</strong> Log 2011] - An open-source<br />

Fast Fourier Transform library necessary for extracting data.<br />

• Jcraft Jorbis Library[Jcraft Jorbis Project 2011] - Ease of use for converting<br />

between uncompressed and compressed data.<br />

All other functionality, such as encryption with AES and sharing mechanisms<br />

were available in the Android SDK.<br />

2.1. Methodology and Planning<br />

We chose to use an Evolutionary Development Mo<strong>de</strong>l while <strong>de</strong>veloping the application,<br />

as it allows it to be built up in sections, writing and testing each module as it is<br />

ad<strong>de</strong>d to the project. Formal testing is done after each evolutionary cycle with unit tests<br />

to check each class behaves according to specification. Later on in the <strong>de</strong>velopment<br />

cycle versions of the application were released onto the Android Market.<br />

281


2.1.1. Requirements Analysis<br />

With the goal of the project is to create a usable application, the target audience must<br />

be consi<strong>de</strong>red. Recently there has been a period of unrest in various countries. One<br />

notable method used by governments to control their people in times of unrest has been<br />

to severely clamp down on communication networks. This user would likely have the<br />

following characteristics and requirements:<br />

• Potentially low-powered <strong>de</strong>vice<br />

• Potentially ol<strong>de</strong>r versions of Android installed<br />

• Ability to send via different mediums (e.g. Bluetooth)<br />

• Possible requirement for support of non-English character-sets<br />

• Plausible <strong>de</strong>niability highly <strong>de</strong>sirable<br />

Police agents working un<strong>de</strong>r cover are un<strong>de</strong>r a huge amount of pressure, not<br />

just from the stress of their job, but from lack of communication with the outsi<strong>de</strong><br />

world. This user would likely have the following characteristics and requirements:<br />

• Ability to multicast, preferably publicly (broadcast) is essential<br />

• Plausible <strong>de</strong>niability is essential<br />

• Ability to receive messages from a variety of public sources<br />

It is worth noting at this point that there are a number of potential misuses of<br />

this technology. This is of course true for any security application. Phil Zimmerman,<br />

the creator of PGP points out in an article [Zimmerman 2011] after the 9/11 attacks on<br />

the US that he has ‘No regrets about <strong>de</strong>veloping PGP’, and that ‘...strong cryptography<br />

does more good for a <strong>de</strong>mocratic society than harm...’.<br />

Consi<strong>de</strong>ring the user personas, the application will need to perform:<br />

• Record audio from the microphone, and embed a short text message into it<br />

using echo steganography.<br />

• Compress this audio file into a file which is of an appropriate size for sharing.<br />

• Share, and multicast via all available methods on the <strong>de</strong>vice being used.<br />

• Open audio messages received by any method and extract hid<strong>de</strong>n information.<br />

• Operate the application in a ‘paranoid mo<strong>de</strong>’, in which all usage data is wiped<br />

from the <strong>de</strong>vice, to ensure plausible <strong>de</strong>niability.<br />

2.2. Application Design<br />

Writing applications for Android encourages applications to be <strong>de</strong>signed within certain<br />

constraints, and everything is centred on the Activity class currently in focus<br />

[Android 2011b]. This has the advantage of making it easy to <strong>de</strong>sign applications<br />

in the Mo<strong>de</strong>l-View-Controller (MVC) <strong>de</strong>sign pattern [Reenskaug 2011].<br />

UI layout is <strong>de</strong>clared in xml files, and interaction with the UI is handled in<br />

Activities. The actual work of the application is handled in other classes and calls to<br />

these are ma<strong>de</strong> from the Activity.<br />

282


When <strong>de</strong>signing a security-centric application, attention must be paid to the<br />

lifecycle of the application. On Android, the lifecycle of an application is governed by<br />

the life-cycles of the Activities, and has several idiosyncrasies, most notably there is<br />

no concept of ’quitting’. Activities have four states:<br />

• Running - The application is in the foreground and the user is able to interact.<br />

• Paused - The application is not in the foreground, but is partially obscured.<br />

• Stopped - The application is not visible (’minimised’), but still alive: it is retained<br />

in memory and maintains state.<br />

• Finished - The application is not active.<br />

2.2.1. Mo<strong>de</strong>l - Steganography<br />

Figure 1. Embedding process<br />

There are two classes which handle the bulk of the work, EchoStegFile and<br />

BitStream. The series of operations that need to be performed for embedding and<br />

extracting are shown here on Figures 1 and 2.<br />

The structure of the<br />

application is simple, as<br />

the process of en- coding<br />

and <strong>de</strong>coding is a 2-way<br />

pipeline. All views are<br />

managed by the StegDroid<br />

Figure 2. Extraction process<br />

Activity, except in the case<br />

of Settings and Multicast. All input from the user is managed by the active Activity, in<br />

the cases of Settings and Multicast, this is done automatically.<br />

2.2.2. View - User Interface<br />

The application needs to perform two basic tasks, encoding and <strong>de</strong>coding. Of these the<br />

more challenging from a UI <strong>de</strong>sign perspective is encoding, since it requires stepping<br />

through a sequence of actions. Settings for paranoid mo<strong>de</strong> and cryptographic keys are<br />

accessible via the menu key, and pressing the back key takes the user to the previous<br />

step, or exits the application from the first step.<br />

2.2.3. Controller - Device Interaction<br />

As previously stated, all interaction between the user and the rest of the application<br />

happens via the Activity classes. Functionality can be <strong>de</strong>legated from the Activity, but<br />

283


it must pass the instance of itself to every class it wishes to <strong>de</strong>legate to for use as a<br />

context.<br />

3. Implementation<br />

In this section we will go through each stage of the steganography<br />

process and explain how we implemented it. Screenshots are provi<strong>de</strong>d<br />

in this document are of the finished application. StegDroid<br />

is available on the Android Market, a link 1 and QR co<strong>de</strong> are provi<strong>de</strong>d.<br />

At time of writing, StegDroid has been downloa<strong>de</strong>d almost<br />

2000 times, and has an overall rating of 4.1/5 stars on the Android<br />

Market rating system.<br />

3.1. Class Organisation<br />

BitStream class <strong>de</strong>als with taking a String and returning a stream of bits, or vice-versa.<br />

It has the option of being passed a key-phrase and returning/<strong>de</strong>coding an encrypted<br />

stream of bits. EchoStegFile class <strong>de</strong>als with the steganographic process of inserting<br />

and retrieving bits from an audio file. It <strong>de</strong>als only with audio files in wave format.<br />

3.2. Audio Manipulation<br />

Android built in MediaRecor<strong>de</strong>r class does provi<strong>de</strong> access to the raw PCM data from<br />

the microphone, but provi<strong>de</strong>s no built in mechanism for creating usable Wave files.<br />

Android again provi<strong>de</strong>s no way to manipulate Wave files at a sample level.<br />

Transcoding is handled by Jcraft’s Jorbis library [Jcraft Jorbis Project 2011].<br />

This library provi<strong>de</strong>s methods to transco<strong>de</strong> between Ogg Vorbis audio files and uncompressed<br />

Wave files. Ogg Vorbis files are used by Android as ringtone files, so it is<br />

a relatively innocuous data type to share.<br />

3.3. Steganography<br />

The processes of embedding and extracting data are very different. Embedding requires<br />

adding echoes to the audio, which is relatively straightforward. Extracting the<br />

data again requires performing Fourier Analysis on each sample in or<strong>de</strong>r to work out<br />

which echo was used.<br />

The process of Echo Hiding convolves the raw audio signal with one of two<br />

echo kernels, with different <strong>de</strong>lays. These echo kernels correspond to 1 and 0. A<br />

double back-forwards echo kernel is used, <strong>de</strong>scribed by the equation y[n] = x[n] + α ·<br />

x[n − d] + α · x[n + d] + α · x[n − <strong>de</strong>] + α · x[n + e], where x is the original signal, y<br />

the output signal, α is the amplitu<strong>de</strong> of the echo and d and e are the two <strong>de</strong>lays used.<br />

The audio sample is split up into windows and the appropriate echo kernel is<br />

applied to each window. In or<strong>de</strong>r to prevent audible artefacts when switching between<br />

signals, a smoothing period is applied between each window, when the signal from the<br />

previous bit is fa<strong>de</strong>d out and the signal for the next bit is fa<strong>de</strong>d in. This is shown in<br />

Figure 3.<br />

1 https://market.android.com/<strong>de</strong>tails?id=uk.ac.cam.tfmw2.stegdroid<br />

284


3.3.1. Extraction<br />

Using Fourier transforms,<br />

the cepstrum<br />

is calculated for each<br />

segment and the<br />

cepstrum for the<br />

echoes for 1 is<br />

compared against the<br />

cepstrum for the<br />

echoes for 0. The<br />

larger value <strong>de</strong>termines<br />

the bit sent<br />

to the output bit<br />

stream.<br />

Figure 3. Composition of signal with echo kernels<br />

The cepstrum<br />

of a signal is calculated<br />

by taking the complex logarithm of the Fourier transform of the signal and performing<br />

an inverse Fourier transform. The resulting data will show peaks corresponding<br />

to the echoes in the original signal. As can be seen by examining the convolution<br />

of the equations being employed. First take two input signals, x 1 [n] and x 2 [n]. Their<br />

convolution, y[n] = x 1 [n] ∗ x 2 [n] is transformed into the Fourier domain:<br />

Y (e iω ) = X 1 (e iω )X 2 (e iω )<br />

The complex log of Y (e iω ) is then:<br />

logY (e iω ) = log(X 1 (e iω )X 2 (e iω )) = logX 1 (e iω ) + logX 2 (e iω )<br />

The cepstrum of a signal x[n] is <strong>de</strong>fined to be ˜x[n], and the above equation is<br />

equivalent to:<br />

ỹ[n] = ˜x 1 [n] + ˜x 2 [n]<br />

By comparing the cepstrum signal at the values for each of the 4 echoes, the<br />

echo kernel used on that segment of data should have a higher values its two echoes<br />

than the echo kernel not used. A Hamming window is applied to the signal in the time<br />

domain, before it is transformed. This is done by the function:<br />

timeDomain[i] = 0.53836 − 0.46164cos( 2πi<br />

N−1 )<br />

The Hamming window as transforming to the Fourier domain implies an infinitely<br />

repeating signal. Since the start and end of the signal are very unlikely to be<br />

continuous this will result in a lot of high-frequency noise in the result, which is un<strong>de</strong>sirable.<br />

Windowing makes sure that the ends of the signal are continuous and prevents<br />

this spectral leakage.<br />

Encryption of messages is provi<strong>de</strong>d, using the AES/ECB/PKCS7Padding cipher<br />

suite with a pre-shared key. The user can enter their passphrase in the settings<br />

285


page of the application, and a SHA-256 hash of the<br />

passphrase is used as the key.<br />

3.4. User Interface<br />

Care has been taken to create a user interface that<br />

gui<strong>de</strong>s the user through the process of encoding and<br />

<strong>de</strong>coding messagesAn example screen for the system<br />

is shown on Figure 4.<br />

Across all of the screens there are status indicators<br />

at the top of the screen, displaying whether encryption<br />

or paranoid mo<strong>de</strong> are enabled. Below that<br />

is a progress indicator, displaying the step the user<br />

is currently on. Below that are brief instructions for<br />

the page. The Back and Next buttons are always at<br />

the very bottom. While playing or recording is active,<br />

other buttons are disabled. In the first and final steps,<br />

Back and Next buttons are displayed but are inactive.<br />

Figure 4. Extraction<br />

process<br />

For the application to actually be useful to<br />

users, it must be able to interact with other applications<br />

in or<strong>de</strong>r to send and receive messages. Luckily,<br />

with one notable exception, this is all handled by Android<br />

by means of a mechanism call Intents. Sadly, sharing data via MMS is not<br />

possible because the application does not register to handle audio data. If this is fixed<br />

in the future, the application will then be able to share data in such a way.<br />

3.5. Paranoid Mo<strong>de</strong><br />

This attempts to provi<strong>de</strong> plausible <strong>de</strong>niability by removing all data created by its<br />

use from the <strong>de</strong>vice. When it is turned on, whenever the application is ‘Paused’<br />

[Android 2011a], that is to say minimised or ‘closed’ by the user, if paranoid mo<strong>de</strong><br />

is enabled, all files created by the application are removed from the filesystem.<br />

3.6. Multicast<br />

We investigated a number of different ways of implementing multicast with the application.<br />

We chose to use contact groups built into the Google contact manager as a<br />

convenient way to send a message to a group of recipients at once.<br />

4. Evaluation<br />

Evaluation data has been collected from a variety of sources, including Android Market<br />

feedback.All these sources indicate the application fulfils its stated purpose, and is<br />

reliable and easy to use. During implementation, unit tests were used to confirm that<br />

parts of the application were working correctly. These were written in a separate test<br />

class which performed checks for the functionality it was testing. No unit tests were<br />

written for the steganographic process.<br />

286


4.1. Steganography Testing<br />

A variety of tests were done to optimise the steganography process. There are three<br />

factors to optimise: bit-rate, reliability (bit-error rate) and ease of <strong>de</strong>tection. Bit-rate<br />

can be calculated from the parameters chosen, reliability can be calculated by measuring<br />

the bit-rate with a series of trials, but ease of <strong>de</strong>tection is subjective, so a rough<br />

estimate will have to suffice.<br />

Reliability was measured by creating a BitStream, passing this BitStream through<br />

the steganographic process and measuring the number of bits that were wrong in the<br />

output. A percentage error-rate was then calculated. The parameters that can be<br />

modified to optimise these factors<br />

are Segmentation Length, Windows<br />

Size, Volume Reducer and the four<br />

echo parameters. Each variable was<br />

altered in turn keeping the others<br />

constant. Three trials were done<br />

with three different recordings.<br />

Figure 5. Modification of Segmentation<br />

Lenght<br />

As shown on Figure 5, 1024<br />

as the Segmentation Lenght seems to<br />

be the optimum from this data, performing as well as 2048 and above but with a higher<br />

bit-rate, but during transcoding testing, a Segmentation Lenght of 2048 proved much<br />

more reliable, and the longer file size required at this stage is compensated for to some<br />

extent by the fact that better compression can be used.<br />

4.2. Transcoding Testing<br />

Tests were conducted to find the optimum<br />

quality to enco<strong>de</strong> the Ogg<br />

Vorbis files to get good reliability<br />

and minimise size.Three files were<br />

taken that had scored 100% on the<br />

previous test. These were enco<strong>de</strong>d<br />

and <strong>de</strong>co<strong>de</strong>d through the Vorbis <strong>de</strong>co<strong>de</strong>r<br />

and the bit-error rate was calculated<br />

in the same manner as the<br />

Figure 6. Transcoding Testing<br />

previous test. The error rate is<br />

recor<strong>de</strong>d, as is the compression rate as a percentage of the original size.<br />

From these results, ( Figure 6) it seems that a value of 0.4 is good. At this<br />

level there is still the possibility of the occasional bit error. Given the purpose of the<br />

application, small errors are not a problem, especially as users have the chance to test<br />

extraction of the message before sending it.<br />

The overhead required to add an error-correction layer into BitStream would<br />

be too great, although if the application were adapted to send other kinds of data this<br />

would be necessary.<br />

287


4.3. Threat Mo<strong>de</strong>l Analysis<br />

Given that the application is <strong>de</strong>signed for sharing potentially sensitive information, an<br />

analysis of potential attacks is critical. Detection of the application is the main threat<br />

to be consi<strong>de</strong>red, as the whole point of using steganography on top of encryption is to<br />

prevent an attacker from even <strong>de</strong>tecting potentially secretive communication.<br />

4.4. User Survey<br />

Most of the testing so far has focussed on the functionality of the application. As part<br />

of the specification was to create a usable application, evaluation of the usability was<br />

conducted with a survey of users. The survey was conducted with the participant using<br />

a Google Nexus S. They were given a brief tour of the Android operating system, and<br />

shown how to open and interact with applications. They were given a list of tasks to<br />

complete with the application. Once they had completed the tasks they were given a<br />

questionnaire to complete, in which there were asked to rate their experience of the<br />

application. Twenty participants were surveyed (University of Cambridge un<strong>de</strong>rgraduate<br />

stu<strong>de</strong>nts), with the mean results for the first 7 questions shown on Figure 7. The<br />

scores range from 0-5. The lower the better..<br />

These are positive<br />

results, which<br />

show that the interface<br />

we have created<br />

allows people<br />

with relatively little<br />

knowledge of<br />

Android phones to<br />

be able to use the<br />

Figure 7. User Survey Result<br />

application easily,<br />

putting complex steganography within reach of many more people as a result.<br />

5. Conclusions<br />

The project proposal set out the following success criteria:<br />

• To create an Android application that makes use of audio steganography. This<br />

criterion has been fully realised, with steganography classes that not only perform<br />

the function of the application, but can be exten<strong>de</strong>d to act as a container<br />

for any data.<br />

• To use audio steganography to embed a user’s text message in a voice message<br />

recor<strong>de</strong>d on the <strong>de</strong>vice. This criteria has also been realised, the application<br />

gui<strong>de</strong>s users through the process of recording a voice message, embedding a<br />

text message and sharing that message.<br />

• To make the application leave as little evi<strong>de</strong>nce of its use as possible. This<br />

criterion has been fulfilled, to a reasonable extent. In paranoid mo<strong>de</strong>, the application<br />

removes all data from the disk and memory that could show use of the<br />

application whenever it is closed.<br />

288


Having implemented these steganographic tools on the Android platform, they<br />

could potentially be used in a number of different ways. One interesting use could be<br />

to use steganography on audio during a phone call. This would allow for a data channel<br />

between two people during a phone call. This could be used to exchange covert text<br />

messages as in our application, or with other protocols to exchange any type of data.<br />

References<br />

[Android 2011a] Android (2011a). Activity lifecycle. http://<strong>de</strong>veloper.<br />

android.com/gui<strong>de</strong>/topics/fundamentals/activities.html%<br />

#Lifecycle.<br />

[Android 2011b] Android (2011b). Documentation on activities. http:<br />

//<strong>de</strong>veloper.android.com/gui<strong>de</strong>/topics/fundamentals/<br />

activities.html.<br />

[Fast Fourier Transform at Co<strong>de</strong> Log 2011] Fast Fourier Transform at Co<strong>de</strong> Log (2011).<br />

http://co<strong>de</strong>.compartmental.net/tools/minim/manual-fft.<br />

[Gruhl et al. 1996] Gruhl, D., Lu, A., and Ben<strong>de</strong>r, W. (1996). Echo hiding. In An<strong>de</strong>rson,<br />

R. J., editor, Information Hiding, volume 1174 of Lecture Notes in Computer<br />

Science, pages 293–315. Springer.<br />

[Jcraft Jorbis Project 2011] Jcraft Jorbis Project (2011).<br />

com/jorbis.<br />

http://www.jcraft.<br />

[Jenkins 2009] Jenkins, N. (2009). Steganography in audio. Technical report, University<br />

of Cambridge.<br />

[Meghanathan and Nayak 2010] Meghanathan, N. and Nayak, L. (2010). Steganalysis<br />

algorithms for <strong>de</strong>tecting the hid<strong>de</strong>n information in image, audio and vi<strong>de</strong>o cover<br />

media. International Journal of Network Security & Its Application (IJNSA),<br />

2(1):43–55.<br />

[MP3 Stego 2011] MP3 Stego (2011). http://www.petitcolas.net/fabien/<br />

steganography/mp3stego.<br />

[Paget 2011] Paget, C. (2011). Def con 18 talk. https://www.<strong>de</strong>fcon.org/<br />

html/links/dc-archives/dc-18-archive.html#Paget.<br />

[Reenskaug 2011] Reenskaug, T. (2011). Mo<strong>de</strong>ls - views - controllers. http://heim.<br />

ifi.uio.no/trygver/1979/mvc-2/1979-12-MVC.pdf.<br />

[Rehearsal Assistant Source 2011] Rehearsal Assistant Source (2011).<br />

sourceforge.net/projects/rehearsalassist.<br />

http://<br />

[Scott 2000] Scott, J. (2000). Social network analysis: a handbook. SAGE Publications.<br />

[Steg Secret 2011] Steg Secret (2011).<br />

net.<br />

http://stegsecret.sourceforge.<br />

[Zimmerman 2011] Zimmerman, P. (2011). No regrets about <strong>de</strong>veloping pgp. http:<br />

//www.mit.edu/fiprz/EN/essays/PRZResponseWashPost.html.<br />

289


Uma aplicação <strong>de</strong> privacida<strong>de</strong> no gerenciamento <strong>de</strong><br />

i<strong>de</strong>ntida<strong>de</strong>s em nuvem com uApprove<br />

Daniel Ricardo dos Santos 1∗ , Carla Merkle Westphall 1<br />

1 Laboratório <strong>de</strong> Re<strong>de</strong>s e Gerência - Departamento <strong>de</strong> Informática e Estatística<br />

Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina (UFSC) - Florianópolis – SC – Brasil<br />

{danielrs,carlamw}@inf.ufsc.br<br />

Abstract. Due to the continued growth in the use of cloud computing and the<br />

ten<strong>de</strong>ncy to migrate services to this new paradigm, it becomes necessary to investigate<br />

security issues that might compromise its use. I<strong>de</strong>ntity Managament<br />

is an area in information security that is concerned with the management of<br />

users and their data, involving authentication, authorization and attribute release.<br />

One of the biggest issues when users’ data are involved is privacy in<br />

the collection, manipulation, storage and <strong>de</strong>struction of these data. This paper<br />

presents a proposal for an i<strong>de</strong>ntity management application with users’ privacy<br />

protection implemented in a cloud computing environment.<br />

Resumo. Com o crescimento da computação em nuvem e a tendência <strong>de</strong><br />

migração <strong>de</strong> serviços para esse novo paradigma, torna-se necessário investigar<br />

questões <strong>de</strong> segurança que possam comprometer seu uso. O gerenciamento<br />

<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s é um campo da segurança da informação que se preocupa com o<br />

gerenciamento <strong>de</strong> usuários e seus dados, envolvendo autenticação, autorização<br />

e liberação <strong>de</strong> atributos. Uma das questões mais preocupantes quando se envolvem<br />

dados <strong>de</strong> usuários é a privacida<strong>de</strong> na coleta, manipulação, armazenamento<br />

e <strong>de</strong>struição <strong>de</strong>sses dados. Este trabalho apresenta uma proposta <strong>de</strong> aplicação<br />

<strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s com proteção à privacida<strong>de</strong> dos usuários implementada<br />

em um ambiente <strong>de</strong> computação em nuvem.<br />

1. Introdução<br />

Computação em nuvem é a entrega <strong>de</strong> recursos computacionais compartilhados, sejam <strong>de</strong><br />

armazenamento, processamento ou mesmo <strong>de</strong> software para usuários através da Internet.<br />

A segurança é importante para garantir o sucesso <strong>de</strong> ambientes <strong>de</strong> nuvem<br />

[Takabi et al. 2010] [Grobauer et al. 2011], com <strong>de</strong>staque para a proteção à privacida<strong>de</strong>,<br />

já que dados sensíveis passam a ficar sob a custódia <strong>de</strong> terceiros [Pearson 2009].<br />

O gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s cresce em importância conforme crescem<br />

os serviços que precisam utilizar autenticação e controle <strong>de</strong> acesso <strong>de</strong> usuários<br />

[Angin et al. 2010] [Bertino and Takahashi 2011]. Esse é o caso <strong>de</strong> muitos serviços que<br />

executam em ambientes <strong>de</strong> nuvem e precisam estabelecer a i<strong>de</strong>ntida<strong>de</strong> <strong>de</strong> seus usuários<br />

ao mesmo tempo que <strong>de</strong>vem proteger sua privacida<strong>de</strong>.<br />

Este trabalho tem como objetivo i<strong>de</strong>ntificar problemas <strong>de</strong> privacida<strong>de</strong> no gerenciamento<br />

<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s em ambientes <strong>de</strong> computação em nuvem e mostrar uma solução<br />

∗ Bolsista do CNPq - Brasil<br />

290


para esses problemas através da implantação <strong>de</strong> uma estrutura <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s<br />

que garanta a privacida<strong>de</strong> dos usuários <strong>de</strong>sses ambientes. O gerenciamento <strong>de</strong><br />

i<strong>de</strong>ntida<strong>de</strong> é realizado pelo software Shibboleth [Internet2 2011a] fazendo uso combinado<br />

do plugin <strong>de</strong> privacida<strong>de</strong> uApprove [SWITCH 2011]. Esta estrutura compõe um provedor<br />

<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> executado em uma máquina virtual no ambiente <strong>de</strong> nuvem da Amazon<br />

[Amazon 2011].<br />

O restante do artigo está organizado da seguinte forma: a seção 2 comenta os<br />

trabalhos científicos relacionados; na seção 3 são <strong>de</strong>scritos os conceitos básicos sobre<br />

gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s e computação em nuvem; a seção 4 aborda conceitos <strong>de</strong><br />

privacida<strong>de</strong> e <strong>de</strong>safios que existem no ambiente <strong>de</strong> nuvem; na seção 5 são apresentadas a<br />

proposta e as ferramentas utilizadas; na seção 6 é <strong>de</strong>scrito o <strong>de</strong>senvolvimento do trabalho<br />

e na seção 7 são feitas as consi<strong>de</strong>rações finais.<br />

2. Trabalhos Relacionados<br />

A privacida<strong>de</strong> está sendo pesquisada em diversos trabalhos da literatura<br />

[Orawiwattanakul et al. 2010], [Bertino and Takahashi 2011], [Goth 2011],<br />

[Tancock et al. 2010] e [Angin et al. 2010].<br />

O artigo [Orawiwattanakul et al. 2010] <strong>de</strong>screve uma extensão do uApprove chamado<br />

uApprove.jp, que permite ao usuário individual do ambiente Shibboleth escolher<br />

quais serão os atributos liberados pelo provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> para o provedor <strong>de</strong> serviço.<br />

O livro <strong>de</strong> [Bertino and Takahashi 2011] cita que a implantação <strong>de</strong> políticas <strong>de</strong><br />

privacida<strong>de</strong> em sistemas <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s continua sendo um <strong>de</strong>safio.<br />

Provedores <strong>de</strong> serviço e <strong>de</strong>senvolvedores das interfaces que atuam em favor dos<br />

usuários <strong>de</strong>vem facilitar o entendimento. O formato <strong>de</strong>stes cenários <strong>de</strong>ve ser sucinto,<br />

conciso, breve e simples para que o usuário saiba o que está acontecendo [Goth 2011].<br />

Na computação em nuvem a privacida<strong>de</strong> <strong>de</strong>ve seguir as leis e os contratos feitos<br />

entre as partes [Tancock et al. 2010] e também proteger dados <strong>de</strong> usuários em provedores<br />

<strong>de</strong> serviço [Angin et al. 2010], <strong>de</strong> acordo com as políticas <strong>de</strong> privacida<strong>de</strong> <strong>de</strong>finidas.<br />

3. Conceitos Básicos<br />

3.1. I<strong>de</strong>ntida<strong>de</strong> e Gerenciamento <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s<br />

I<strong>de</strong>ntida<strong>de</strong>s digitais são coleções <strong>de</strong> dados que representam atributos ou características<br />

<strong>de</strong> uma entida<strong>de</strong> [Windley 2005]. Um serviço <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s po<strong>de</strong><br />

ser <strong>de</strong>finido como “o processo <strong>de</strong> criação, gerenciamento e utilização <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong><br />

usuários e a infraestrutura que suporta esse processo”[Lee et al. 2009].<br />

Os seguintes papéis existem num sistema <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s<br />

[Bertino and Takahashi 2011]:<br />

Usuário É a entida<strong>de</strong> que possui uma i<strong>de</strong>ntida<strong>de</strong> e utiliza os serviços tanto do provedor<br />

<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s quanto do provedor <strong>de</strong> serviços.<br />

Provedor <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s (IdP - I<strong>de</strong>ntity Provi<strong>de</strong>r) Fornece os serviços <strong>de</strong> gerenciamento<br />

<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s necessários para que o usuário use o provedor <strong>de</strong> serviços.<br />

Provedor <strong>de</strong> Serviços (SP - Service Provi<strong>de</strong>r) Fornece os serviços que o usuário efetivamente<br />

<strong>de</strong>seja utilizar. O provedor <strong>de</strong> serviços <strong>de</strong>lega a autenticação e<br />

autorização dos usuários que acessam seus serviços a um IdP.<br />

291


3.2. Computação em Nuvem<br />

O trabalho <strong>de</strong> [Marston et al. 2011] <strong>de</strong>fine computação em nuvem da seguinte forma: “É<br />

um mo<strong>de</strong>lo <strong>de</strong> serviço <strong>de</strong> tecnologia da informação on<strong>de</strong> os serviços computacionais (ambos<br />

hardware e software) são entregues sob <strong>de</strong>manda para os usuários através <strong>de</strong> uma re<strong>de</strong><br />

na forma <strong>de</strong> auto-atendimento, in<strong>de</strong>pen<strong>de</strong>nte <strong>de</strong> dispositivo e <strong>de</strong> localização. Os recursos<br />

necessários para fornecer os diferentes níveis <strong>de</strong> qualida<strong>de</strong> <strong>de</strong> serviço são compartilhados,<br />

dinamicamente escaláveis, alocados rapidamente, virtualizados e liberados com interação<br />

mínima com o provedor <strong>de</strong> serviço”.<br />

Três tipos diferentes <strong>de</strong> serviços são mencionados quando se consi<strong>de</strong>ra<br />

computação em nuvem [Cloud Security Alliance 2010]: Software as a Service (SaaS),<br />

Platform as a Service (PaaS) e Infrastructure as a Service (IaaS). No mo<strong>de</strong>lo SaaS a<br />

empresa assina um serviço <strong>de</strong> uso do software que funciona como um aluguel, tanto do<br />

software como <strong>de</strong> toda a estrutura necessária para executá-lo. No mo<strong>de</strong>lo PaaS o ven<strong>de</strong>dor<br />

do serviço oferece aos clientes uma plataforma <strong>de</strong> <strong>de</strong>senvolvimento <strong>de</strong> aplicativos, que o<br />

usuário utiliza tanto no <strong>de</strong>senvolvimento quanto na posterior disponibilização do serviço.<br />

No caso do IaaS o que o cliente procura é a própria infra-estrutra <strong>de</strong> computação: po<strong>de</strong>r<br />

<strong>de</strong> processamento, capacida<strong>de</strong> <strong>de</strong> armazenamento e taxa <strong>de</strong> transmissão. Nesse tipo <strong>de</strong><br />

serviço geralmente o cliente tem controle sobre a máquina através <strong>de</strong> acesso remoto.<br />

4. Privacida<strong>de</strong><br />

A privacida<strong>de</strong> relaciona-se com a capacida<strong>de</strong> <strong>de</strong> um indivíduo proteger informações sobre<br />

si [Mather et al. 2009]. Uma política <strong>de</strong> privacida<strong>de</strong> é um documento que expressa a<br />

forma como uma entida<strong>de</strong> coleta, utiliza, administra e libera informações <strong>de</strong> seus usuários.<br />

O Fair Information Practice Principles (FIPS) é um conjunto <strong>de</strong> regras para<br />

manipulação <strong>de</strong> informações com proteção à privacida<strong>de</strong> criado pela Comissão <strong>de</strong><br />

Comércio Americana que regula o uso <strong>de</strong> informações privadas nos Estados Unidos e<br />

serve <strong>de</strong> base para regras <strong>de</strong> outros países [Fe<strong>de</strong>ral Tra<strong>de</strong> Comission 2011]. Os FIPs <strong>de</strong>finem<br />

cinco princípios básicos: a consciência significa que o usuário <strong>de</strong>ve ser avisado e<br />

enten<strong>de</strong>r como suas informações serão liberadas; a escolha significa que o usuário <strong>de</strong>ve<br />

escolher como suas informações serão usadas; a participação permite ao usuário acessar<br />

e alterar suas informações; a integrida<strong>de</strong> <strong>de</strong>ve garantir que os dados dos usuários estejam<br />

corretos e o cumprimento garante que os princípios são respeitados.<br />

No Brasil, a privacida<strong>de</strong> é uma garantia constitucional, mas não existe uma lei<br />

específica, como ocorre em outros países [CulturaDigital 2011].<br />

A privacida<strong>de</strong> é um aspecto crítico da segurança em ambientes <strong>de</strong> nuvem<br />

[Mather et al. 2009], [Pearson 2009], [Bertino and Takahashi 2011], [Goth 2011],<br />

[Tancock et al. 2010] e [Angin et al. 2010].<br />

De acordo com [Mather et al. 2009], [Takabi et al. 2010], [Angin et al. 2010],<br />

[Marcon Jr. et al. 2010] existem alguns aspectos que po<strong>de</strong>m ser levantados quando se<br />

pesquisa privacida<strong>de</strong> em ambientes <strong>de</strong> nuvem. O usuário <strong>de</strong>ve ter o direito <strong>de</strong> saber<br />

quais informações suas estão mantidas na nuvem e po<strong>de</strong>r solicitar a remoção <strong>de</strong>ssas<br />

informações; <strong>de</strong>ve também ter garantias <strong>de</strong> que seus dados são armazenados e transferidos<br />

<strong>de</strong> forma segura. Já os provedores <strong>de</strong> serviços <strong>de</strong> nuvem: precisam seguir leis,<br />

normas e regulamentos quando lidam com informações privadas; precisam saber on<strong>de</strong> e<br />

292


como os dados privados são armazenados e <strong>de</strong> que forma po<strong>de</strong>m ser transmitidos; <strong>de</strong>vem<br />

manter políticas que tratem da retenção <strong>de</strong> dados na nuvem; <strong>de</strong>vem garantir que não há<br />

cópias dos dados armazenados em outros locais após sua <strong>de</strong>struição; <strong>de</strong>vem garantir que<br />

estão cumprindo os requisitos <strong>de</strong> privacida<strong>de</strong>; <strong>de</strong>vem manter logs <strong>de</strong> acesso a dados; e,<br />

caso haja um caso <strong>de</strong> violação <strong>de</strong> privacida<strong>de</strong> ou vazamento <strong>de</strong> informações <strong>de</strong>ve-se saber<br />

quem é o culpado e como controlar o caso.<br />

5. Proposta e Ferramentas Utilizadas<br />

A aplicação <strong>de</strong>senvolvida neste trabalho tem como objetivo implantar uma estrutura <strong>de</strong><br />

gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> que garanta a privacida<strong>de</strong> dos usuários autenticados em um<br />

ambiente <strong>de</strong> computação em nuvem para acessar provedores <strong>de</strong> serviço (Figura 1).<br />

Figura 1. Diagrama geral da proposta<br />

Neste cenário, iniciamente o usuário acessa o provedor <strong>de</strong> serviços. O provedor<br />

<strong>de</strong> serviços então redireciona o usuário para o seu respectivo provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s,<br />

que é informado pelo usuário e <strong>de</strong>ve ter a confiança do provedor <strong>de</strong> serviços. O provedor<br />

<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s está executando em um ambiente <strong>de</strong> nuvem, o que é transparente para o<br />

usuário. O provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s pe<strong>de</strong> a autenticação do usuário e acessa seus atributos<br />

em sua base <strong>de</strong> dados. Quando o usuário está autenticado e antes <strong>de</strong> ser novamente redirecionado<br />

para o provedor <strong>de</strong> serviços, seus dados passam por um plugin <strong>de</strong> privacida<strong>de</strong>,<br />

momento no qual o usuário fica ciente e <strong>de</strong>ve consentir com a liberação <strong>de</strong> seus atributos.<br />

5.1. Amazon EC2<br />

O EC2 foi o provedor <strong>de</strong> serviços <strong>de</strong> nuvem utilizado no trabalho. O EC2 provê uma<br />

Infraestrutura como um Serviço, em que é possível instanciar máquinas virtuais a partir<br />

<strong>de</strong> imagens <strong>de</strong> sistemas pré-<strong>de</strong>finidas ou próprias. É possível configurar características da<br />

máquina como capacida<strong>de</strong> <strong>de</strong> processamento, memória e armazenamento.<br />

No EC2 o usuário po<strong>de</strong> atribuir en<strong>de</strong>reços IP estáticos às máquinas instanciadas e<br />

configurar a liberação <strong>de</strong> portas <strong>de</strong> acesso. A persistência dos dados é feita utilizando-se<br />

volumes Elastic Block Storage (EBS), que agem como discos rígidos das máquinas.<br />

293


5.2. Shibboleth<br />

Entre os diversos sistemas <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s disponíveis, optou-se pelo<br />

Shibboleth <strong>de</strong>vido à sua popularida<strong>de</strong> em ambientes acadêmicos e boa documentação,<br />

além <strong>de</strong> ser um software <strong>de</strong> código aberto.<br />

O Shibboleth é formado por duas partes principais: o IdP e o SP, que se encontram<br />

separados, mas se comunicam para prover o acesso seguro aos serviços. O fluxo <strong>de</strong><br />

funcionamento do Shibboleth é representado na Figura 2.<br />

Figura 2. Funcionamento do Shibboleth. [<strong>de</strong> Cordova 2006]<br />

No Passo 1 o usuário navega para o provedor <strong>de</strong> serviços para acessar um recurso<br />

protegido. Nos Passos 2 e 3 o Shibboleth redireciona o usuário para a página Where<br />

are you from? (WAYF), on<strong>de</strong> ele <strong>de</strong>ve informar qual o seu provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s. No<br />

Passo 4 o usuário informa seu IdP e no Passo 5 ele é redirecionado para o site, que é o<br />

componente Handle Service (HS) do seu IdP. Nos Passos 6 e 7 o usuário informa seus<br />

dados e no Passo 8 o componente HS verifica a valida<strong>de</strong> dos seus dados. O HS cria um<br />

handle para i<strong>de</strong>ntificar o usuário e registra-o no Attribute Authority (AA). No Passo 9<br />

esse handle confirma a autenticação do usuário. O handle é verificado pelo Assertion<br />

Consumer Service (ACS) e transferido para o Attribute Requester (AR) e no Passo 10 é<br />

criada uma sessão. No Passo 11 o AR utiliza o handle para requisitar os atributos do<br />

usuário ao IdP. No passo 12 o IdP verifica se po<strong>de</strong> liberar os atributos e no Passo 13 o AA<br />

respon<strong>de</strong> com os valores dos atributos. No Passo 14 o SP recebe os atributos e os passa<br />

para o Resource Manager (RM), que no Passo 15 carrega o recurso [<strong>de</strong> Cordova 2006].<br />

5.3. uApprove<br />

Nos FIPS (<strong>de</strong>scritos na seção 4) os princípios mais importantes da privacida<strong>de</strong> são a<br />

consciência dos usuários <strong>de</strong> que seus dados são coletados e armazenados e a possibilida<strong>de</strong><br />

<strong>de</strong> escolha do usuário quanto a liberação <strong>de</strong>sses dados. Uma ferramenta que implementa<br />

esses dois princípios é o uApprove [SWITCH 2011], um plugin <strong>de</strong> privacida<strong>de</strong> para o<br />

Shibboleth que encontra-se na versão 2.2.1.<br />

O uApprove é dividido em três componentes principais: o IdP plugin é um filtro<br />

do Shibboleth, que testa se a ferramenta <strong>de</strong>ve obter o consentimento do usuário para a<br />

294


liberação <strong>de</strong> seus atributos; o Viewer apresenta ao usuário uma página web com os termos<br />

<strong>de</strong> uso que o usuário <strong>de</strong>ve aceitar quando utiliza o provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s; e o Reset<br />

approvals permite que o usuário reinicie as liberações que já foram concedidas.<br />

A Figura 3 mostra o fluxo <strong>de</strong> execução do IdP plugin para <strong>de</strong>cidir se o Viewer <strong>de</strong>ve<br />

ser invocado.<br />

Figura 3. Fluxograma <strong>de</strong> execução do uApprove. Adaptado <strong>de</strong>: [SWITCH 2011]<br />

Primeiramente o plugin verifica se o LoginContext, que é um objeto Java criado<br />

quando uma autenticação é requisitada, está correto. Caso o LoginContext esteja correto é<br />

verificado se o Shibboleth Authentication Request (AuthN), uma mensagem enviada pelo<br />

SP para o IdP para iniciar uma sessão, foi fornecido. Se alguma <strong>de</strong>ssas verificações for<br />

negativa a execução é cancelada e o processo <strong>de</strong> autenticação terminado.<br />

Caso as duas primeiras verificações sejam positivas o plugin verifica se está executando<br />

em modo <strong>de</strong> observação, on<strong>de</strong> só registra os atributos que serão liberados, sem<br />

interagir com o usuário. Caso esteja nesse modo o fluxo segue para o Shibboleth IdP. Em<br />

caso negativo o plugin continua seu fluxo, verificando se o SP se encontra na lista negra,<br />

uma lista <strong>de</strong> SPs nos quais o uApprove <strong>de</strong>ve assumir automaticamente o consentimento<br />

do usuário.<br />

Se o SP se encontrar na lista o fluxo segue para o Shibboleth IdP, senão o plugin<br />

verifica se o Principal, o i<strong>de</strong>ntificador único <strong>de</strong> um usuário, é conhecido (já usou o plugin).<br />

Se o Principal for <strong>de</strong>sconhecido (nunca utilizou o plugin), o Viewer será invocado.<br />

Se o Principal for conhecido e tiver reiniciado seus consentimentos, o Viewer será<br />

invocado, senão o plugin continua seu fluxo. Na sequência, caso os termos <strong>de</strong> uso tenham<br />

sido alterados <strong>de</strong>s<strong>de</strong> o último acesso o fluxo segue para o Viewer, senão o plugin continua.<br />

Depois é verificado se o usuário conce<strong>de</strong>u aprovação global para a liberação <strong>de</strong><br />

seus atributos. Em caso afirmativo o fluxo segue para o Shibboleth IdP, em caso negativo<br />

segue para a próxima verificação. Então verifica-se se o usuário está acessando o SP pela<br />

primeira vez, em caso afirmativo o Viewer é invocado, em caso negativo é feita a última<br />

verificação, que se refere aos atributos sendo requisitados pelo SP. Se eles tiverem sido<br />

alterados o Viewer é invocado, senão o fluxo segue para o IdP.<br />

295


Em todos os casos em que o fluxo for para o Shibboleth IdP a execução do plugin<br />

é ignorada pelo usuário. Em todos os casos em que o Viewer for invocado, o usuário <strong>de</strong>ve<br />

interagir e fornecer seu consentimento.<br />

6. Desenvolvimento Prático<br />

Usando o Amazon EC2 foi instanciada uma máquina virtual executando Windows Server<br />

2008 e atribuído à máquina o IP estático 50.19.108.64, com DNS público ec2-50-19-108-<br />

64.compute-1.amazonaws.com. Para persistência dos dados utilizou-se um volume EBS<br />

<strong>de</strong> 30GB (Figura 4).<br />

Figura 4. Máquinas virtuais instanciadas no EC2<br />

As portas liberadas no firewall foram: 3306 para acesso ao MySQL, 3389 para<br />

acesso remoto, 8009 para uso do Shibboleth e 8080 para uso do Tomcat.<br />

Na máquina instanciada e em execução foi instalado o servidor web Apache 2.2. O<br />

servidor aceita conexões não-SSL (na porta 80) e conexões SSL (nas portas 443 e 8443).<br />

Depois foi instalado o servidor <strong>de</strong> aplicações Apache Tomcat 6.0.22, no qual <strong>de</strong>vem<br />

ser executadas as aplicações <strong>de</strong> autenticação, gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s e o plugin<br />

<strong>de</strong> privacida<strong>de</strong>. Foi então configurado um proxy no Apache para repassar os pedidos<br />

<strong>de</strong>ssas aplicações para o Tomcat.<br />

Foi instalado o mecanismo <strong>de</strong> autenticação JASIG CAS Server [JASIG 2011],<br />

versão 3.3.2, que autentica usuários através <strong>de</strong> login e senha e então repassa os usuários<br />

autenticados para o Shibboleth. O CAS foi configurado para procurar os usuários em um<br />

diretório LDAP, instalado em outra máquina virtual, executando Ubuntu Server 10.10.<br />

Na instalação do provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s Shibboleth, a fe<strong>de</strong>ração escolhida para<br />

ser utilizada foi a TestShib [Internet2 2011b]. Para utilizá-la foi necessário cadastrar o IdP,<br />

informando o en<strong>de</strong>reço DNS e o certificado gerado, configurando também o Shibboleth<br />

para utilizar os metadados da fe<strong>de</strong>ração.<br />

Na configuração da liberação <strong>de</strong> atributos do usuário foi usado o esquema brEdu-<br />

Person, uma extensão do eduPerson para fe<strong>de</strong>rações brasileiras.<br />

Seguiu-se para a instalação do uApprove. O plugin precisa armazenar informações<br />

sobre o consentimento dos usuários e a liberação <strong>de</strong> seus atributos e para isso foi utilizado<br />

o MySQL, versão 5.5, instalado na mesma máquina do Shibboleth.<br />

296


Foi então gerado um arquivo que contém um exemplo <strong>de</strong> Termos <strong>de</strong> Uso e, com as<br />

configurações prontas, criado um filtro para ativar o uso do IdP plugin com o Shibboleth.<br />

Com a instalação concluída, uma visão <strong>de</strong>talhada da aplicação po<strong>de</strong> ser resumida<br />

na Figura 5, que representa a visão <strong>de</strong>talhada da parte do IdP da Figura 1.<br />

Figura 5. Visão <strong>de</strong>talhada da aplicação<br />

Como ponto <strong>de</strong> acesso temos o servidor web Apache, que recebe as requisições<br />

HTTPS e as encaminha para o Tomcat, para que sejam recebidas pela aplicação correta.<br />

Dentro do Tomcat existem três aplicações sendo executadas: Shibboleth IdP, CAS Server<br />

e uApprove. O diretório LDAP se encontra na máquina com o Ubuntu Server 10.10. O<br />

restante dos componentes se encontram na máquina virtual com o Windows Server 2008.<br />

Para realizar seu primeiro acesso ao SP o usuário acessa o provedor <strong>de</strong> serviços<br />

em https://sp.testshib.org/ e informa o provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s https://<br />

ec2-50-19-108-64.compute-1.amazonaws.com/idp/shibboleth para<br />

ser então redirecionado para a página <strong>de</strong> autenticação, fornecida pelo CAS, on<strong>de</strong> faz sua<br />

autenticação por login e senha, que são buscados no LDAP.<br />

Depois da autenticação o Shibboleth busca no diretório os atributos que <strong>de</strong>vem<br />

ser liberados. Nesse momento o filtro do uApprove entra em ação e exibe uma página<br />

contendo os termos <strong>de</strong> uso do IdP. Caso o usuário aceite os termos <strong>de</strong> uso o plugin o<br />

redireciona para uma página que mostra os atributos que serão liberados (Figura 6).<br />

O usuário autenticado é novamente requisitado a aceitar a liberação <strong>de</strong> seus atributos<br />

e, se concordar, é levado à página <strong>de</strong> acesso protegido do provedor <strong>de</strong> serviços.<br />

297


Figura 6. Atributos que serão liberados<br />

7. Conclusões e trabalhos futuros<br />

Nesse trabalho foi possível tratar problemas específicos <strong>de</strong> privacida<strong>de</strong> no gerenciamento<br />

<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s em ambientes <strong>de</strong> nuvem: a falta <strong>de</strong> consciência dos usuários quanto à<br />

liberação <strong>de</strong> seus atributos para provedores <strong>de</strong> serviço e a falta <strong>de</strong> preocupação dos provedores<br />

<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s quanto à apresentação <strong>de</strong> seus termos <strong>de</strong> uso. Isso é importante,<br />

<strong>de</strong> acordo com [Goth 2011] [Bertino and Takahashi 2011] [Angin et al. 2010] e contribui<br />

para tratar os aspectos citados na seção 4.<br />

A proposta <strong>de</strong> solução, com o uso dos softwares Shibboleth e uApprove, mostrou<br />

que é possível resolver os dois problemas <strong>de</strong> maneira eficiente e sem comprometer a<br />

usabilida<strong>de</strong> da aplicação. A proposta se mostrou viável e pô<strong>de</strong> ser implantada em uma nuvem<br />

pública, com a possibilida<strong>de</strong> <strong>de</strong> utilização em fe<strong>de</strong>rações consolidadas. Por fim, este<br />

artigo também contribui para um melhor entendimento do funcionamento do uApprove.<br />

A maior dificulda<strong>de</strong> para a realização do trabalho foi a falta <strong>de</strong> referências <strong>de</strong><br />

implementações em ambientes <strong>de</strong> nuvem. Vários artigos apresentam mo<strong>de</strong>los e propostas,<br />

mas praticamente não há exemplos <strong>de</strong> implementações reais. Automatização da<br />

verificação <strong>de</strong> compatibilida<strong>de</strong> entre políticas <strong>de</strong> privacida<strong>de</strong> <strong>de</strong> provedores e <strong>de</strong> usuários<br />

po<strong>de</strong> ser consi<strong>de</strong>rado um trabalho futuro.<br />

Referências<br />

Amazon (2011). Amazon elastic compute cloud. http://aws.amazon.com/ec2/.<br />

Angin, P., Bhargava, B., Ranchal, R., Singh, N., Lin<strong>de</strong>rman, M., Ben Othmane, L., and<br />

Lilien, L. (2010). An entity-centric approach for privacy and i<strong>de</strong>ntity management in<br />

cloud computing. In IEEE SRDS, 2010, pages 177 –183.<br />

Bertino, E. and Takahashi, K. (2011). I<strong>de</strong>ntity Management: Concepts, Technologies, and<br />

Systems. Artech House.<br />

Cloud Security Alliance (2010). Domain 12: Guidance for i<strong>de</strong>ntity and access management<br />

v2.1.<br />

298


CulturaDigital (2011). Os rumos da lei <strong>de</strong> proteção <strong>de</strong> dados.<br />

http://culturadigital.br/dadospessoais/<br />

os-rumos-da-lei-<strong>de</strong>-protecao-<strong>de</strong>-dados/.<br />

<strong>de</strong> Cordova, A. S. (2006). Aplicação prática <strong>de</strong> um sistema <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s.<br />

TCC, Ciência da Computação, UNIVALI.<br />

Fe<strong>de</strong>ral Tra<strong>de</strong> Comission (2011). Fair information practice principles. http://www.<br />

ftc.gov/reports/privacy3/fairinfo.shtm.<br />

Goth, G. (2011). Privacy gets a new round of prominence. Internet Computing, IEEE,<br />

15(1):13 –15.<br />

Grobauer, B., Walloschek, T., and Stocker, E. (2011). Un<strong>de</strong>rstanding cloud computing<br />

vulnerabilities. IEEE Security and Privacy, 9:50–57.<br />

Internet2 (2011a). About shibboleth. http://shibboleth.internet2.edu/<br />

about.html.<br />

Internet2 (2011b). Testshib two. https://www.testshib.org/<br />

testshib-two/in<strong>de</strong>x.jsp.<br />

JASIG (2011). Jasig cas. http://www.jasig.org/cas.<br />

Lee, H., Jeun, I., and Jung, H. (2009). Criteria for evaluating the privacy protection<br />

level of i<strong>de</strong>ntity management services. Emerging Security Information, Systems, and<br />

Technologies, The International Conference on, 0:155–160.<br />

Marcon Jr., A., Laureano, M., Santin, A., and Maziero, C. (2010). Aspectos <strong>de</strong> segurança<br />

e privacida<strong>de</strong> em ambientes <strong>de</strong> computação em nuvem. In Livro-texto <strong>de</strong> minicursos<br />

do SBSeg 2010, volume 1, pages 53 –102, Porto Alegre, RS. SBC.<br />

Marston, S., Li, Z., Bandyopadhyay, S., Zhang, J., and Ghalsasi, A. (2011). Cloud computing<br />

– the business perspective. Decision Support Systems, 51(1):176 – 189.<br />

Mather, T., Kumaraswamy, S., and Latif, S. (2009). Cloud Security and Privacy: An<br />

Enterprise Perspective on Risks and Compliance. O’Reilly Media, Inc.<br />

Orawiwattanakul, T., Yamaji, K., Nakamura, M., Kataoka, T., and Sonehara, N. (2010).<br />

User-controlled privacy protection with attribute-filter mechanism for a fe<strong>de</strong>rated sso<br />

environment using shibboleth. In 3PGCIC, 2010, pages 243 –249.<br />

Pearson, S. (2009). Taking account of privacy when <strong>de</strong>signing cloud computing services.<br />

In Proc. of the 2009 ICSE Workshop, CLOUD ’09, pages 44–52, Washington, DC,<br />

USA. IEEE Computer Society.<br />

SWITCH (2011). uapprove. http://www.switch.ch/aai/support/tools/<br />

uApprove.html.<br />

Takabi, H., Joshi, J. B., and Ahn, G.-J. (2010). Security and privacy challenges in cloud<br />

computing environments. IEEE Security and Privacy, 8:24–31.<br />

Tancock, D., Pearson, S., and Charlesworth, A. (2010). A privacy impact assessment tool<br />

for cloud computing. In IEEE CloudCom, 2010, pages 667 –676.<br />

Windley, P. (2005). Digital I<strong>de</strong>ntity. O’Reilly Media, Inc.<br />

299


Análise Visual <strong>de</strong> Comportamento <strong>de</strong> Código Malicioso<br />

Alexandre Or Cansian Baruque 1,2,+ , André Ricardo Abed Grégio 1,2 , Paulo Lício <strong>de</strong> Geus 2<br />

1 Centro <strong>de</strong> Tecnologia da Informação Renato Archer (CTI)<br />

2 Universida<strong>de</strong> Estadual <strong>de</strong> Campinas (Unicamp)<br />

+ Bolsista do CNPq — Brasil<br />

orcansian@gmail.com, argregio@cti.gov.br, paulo@las.ic.unicamp.br<br />

Abstract. Malware attacks are a major threat to computer systems. To <strong>de</strong>velop<br />

counter-measures, it is necessary to un<strong>de</strong>rstand the behavior presented by<br />

malware, i.e., the actions performed in the targets. Dynamic analysis systems<br />

are used to trace malware behaviors, but they generate a massive amount of<br />

data that can confuse the analyst. Visualization techniques can be applied to<br />

these data to i<strong>de</strong>ntify useful patterns and help in the analysis process. In this<br />

paper, we propose a visual and interactive tool to analyze malware behavior.<br />

Resumo. Ataques por programas maliciosos constituem uma das principais<br />

ameaças aos sistemas computacionais atuais. Para criar contra-medidas, é<br />

necessário enten<strong>de</strong>r o comportamento <strong>de</strong>stes programas, isto é, as ações realizadas<br />

nos alvos. Sistemas <strong>de</strong> análise dinâmica existem para traçar tais comportamentos,<br />

mas geram muitos dados textuais que po<strong>de</strong>m confundir o analista.<br />

Técnicas <strong>de</strong> visualização po<strong>de</strong>m ser utilizadas na tentativa <strong>de</strong> se i<strong>de</strong>ntificar padrões<br />

que sirvam no auxílio à análise, possibilitando a <strong>de</strong>scoberta <strong>de</strong> informações<br />

úteis. Neste artigo, apresenta-se uma ferramenta interativa e visual para<br />

análise <strong>de</strong> comportamento <strong>de</strong> código malicioso.<br />

1. Introdução<br />

Programas maliciosos constituem uma gran<strong>de</strong> ameaça aos usuários <strong>de</strong> sistemas computacionais.<br />

Também conhecidos como malware, esses programas englobam os vírus, worms,<br />

cavalos-<strong>de</strong>-tróia, e po<strong>de</strong>m infectar uma máquina através <strong>de</strong> arquivos anexos em mensagens<br />

<strong>de</strong> e-mail, do acesso à links <strong>de</strong> páginas Web servindo conteúdo malicioso e do<br />

compartilhamento <strong>de</strong> mídias contaminadas. A monitoração da execução <strong>de</strong>ste tipo <strong>de</strong><br />

programa provê uma gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> informações, que <strong>de</strong>vem ser analisadas <strong>de</strong><br />

forma a produzir resultados úteis que possam auxiliar na tomada <strong>de</strong> contra-medidas. Entretanto,<br />

muitas variantes <strong>de</strong> malware surgem a cada dia, causando uma sobrecarga para<br />

os mecanismos <strong>de</strong> <strong>de</strong>fesa e para os analistas <strong>de</strong> segurança.<br />

As informações obtidas a partir das ativida<strong>de</strong>s efetuadas por um programa malicioso<br />

po<strong>de</strong>m ser confusas para um analista e, <strong>de</strong>vido à quantida<strong>de</strong>, po<strong>de</strong> ser difícil encontrar<br />

rapidamente o que é realmente relevante para o tratamento <strong>de</strong> um inci<strong>de</strong>nte <strong>de</strong>ste<br />

tipo. Com a finalida<strong>de</strong> <strong>de</strong> facilitar a análise das ações nocivas executadas por malware,<br />

é possível se aplicar técnicas <strong>de</strong> visualização, as quais po<strong>de</strong>m permitir a observação <strong>de</strong><br />

padrões e i<strong>de</strong>ntificação <strong>de</strong> comportamentos <strong>de</strong> ataque <strong>de</strong> maneira mais intuitiva. Neste<br />

trabalho, é apresentada uma ferramenta interativa tridimensional para ajudar na análise<br />

300


das ativida<strong>de</strong>s que um malware efetua durante a infecção <strong>de</strong> uma máquina-alvo, a qual foi<br />

<strong>de</strong>senvolvida e testada com exemplares reais coletados.<br />

2. Conceitos e Trabalhos Relacionados<br />

Visualização <strong>de</strong> dados po<strong>de</strong> ser utilizada para vários objetivos visando a análise [6], tais<br />

como:<br />

• Exploração, na qual não há uma hipótese <strong>de</strong>finida sobre os fenômenos que po<strong>de</strong>m<br />

ocorrer nos dados analisados, envolvendo a busca visual por tendências, exceções<br />

ou estruturas visando a <strong>de</strong>finição das hipóteses.<br />

• Confirmação, que usa dados <strong>de</strong> natureza conhecida e hipóteses sobre os fenômenos<br />

relacionados <strong>de</strong> forma a confirmá-las ou rejeitá-las, por meio <strong>de</strong> visualização.<br />

• Apresentação, on<strong>de</strong> é feita a <strong>de</strong>monstração visual dos dados, fenômenos relacionados<br />

a estes ou hipóteses, <strong>de</strong> modo a permitir sua interpretação.<br />

Há muitas técnicas <strong>de</strong> visualização <strong>de</strong> dados, as quais variam a complexida<strong>de</strong> e<br />

generalida<strong>de</strong> <strong>de</strong>s<strong>de</strong> um simples gráfico <strong>de</strong> área até o fatiamento <strong>de</strong> volumes tridimensionais.<br />

Estas técnicas po<strong>de</strong>m ser agrupadas por categorias, como por exemplo, geométricas,<br />

baseadas em ícones, pixels ou grafos, hierárquicas, tridimensionais, ou que se utilizam <strong>de</strong><br />

mapas. Muitas <strong>de</strong>las foram utilizadas em trabalhos voltadas à visualização <strong>de</strong> eventos <strong>de</strong><br />

segurança.<br />

Quist e Liebrock [8] aplicaram técnicas <strong>de</strong> visualização para compreen<strong>de</strong>r o comportamento<br />

<strong>de</strong> executáveis compilados. O framework criado por eles, VERA (Visualization<br />

of Executables for Reversing and Analysis), auxilia os analistas a terem um melhor<br />

entendimento do fluxo <strong>de</strong> execução <strong>de</strong> um executável, tornando o processo <strong>de</strong> engenharia<br />

reversa mais rápido.<br />

Conti et al. [2] <strong>de</strong>selvolveram um sistema que facilita uma análise livre <strong>de</strong> contexto<br />

<strong>de</strong> arquivos <strong>de</strong> tipos diversos, fornecendo um rápido panorama do contexto e das estruturas<br />

internas dos arquivos. Isto é especialmente útil em um ambiente <strong>de</strong> análise forense,<br />

quando se analisa arquivos em formatos não documentados e busca-se por mensagens <strong>de</strong><br />

texto ocultas em arquivos binários.<br />

Trinius et al. [10] apresentam <strong>de</strong> métodos visualização para aprimorar a compreensão<br />

do comportamento <strong>de</strong> malware. Em seu trabalho, é mostrado o uso <strong>de</strong> treemaps e<br />

thread graphs para mostrar as ações <strong>de</strong> um executável e classificar seu comportamento<br />

como malicioso.<br />

O framework DEViSE [9] (Data Exchange for Visualizing Security Events) permite<br />

ao analista um meio <strong>de</strong> passar dados <strong>de</strong> uma ferramenta para outra, obtendo assim<br />

uma compreensão maior dos dados ao agregar mais informações extraídas <strong>de</strong> várias origens.<br />

Existem diversas ferramentas que fazem uso da visualização para fins <strong>de</strong> análise<br />

voltada à segurança, cada uma <strong>de</strong>las utilizando uma abordagem própria das técnicas, com<br />

vantagens e <strong>de</strong>svantagens <strong>de</strong> acordo com a situação em que é utilizada. Como visto,<br />

há também muita pesquisa na tentativa <strong>de</strong> superar as dificulda<strong>de</strong>s causadas pela gran<strong>de</strong><br />

quantida<strong>de</strong> <strong>de</strong> dados presentes em dados <strong>de</strong> eventos <strong>de</strong> segurança.<br />

A principal limitação dos trabalhos nesta área é que parte da pesquisa não é aberta<br />

ao público, as ferramentas muitas vezes não são interativas ou intuitivas o suficiente, e<br />

301


a interpretação po<strong>de</strong> ser muito complexa, tirando a vantagem trazida pela visualização.<br />

Um dos objetivos do trabalho proposto neste artigo é superar algumas <strong>de</strong>stas limitações,<br />

provendo interativida<strong>de</strong> e utilizando técnicas <strong>de</strong> visualização tridimensionais e baseadas<br />

em ícones a fim <strong>de</strong> produzir um resultado mais compreensível.<br />

Por exemplo, em um dos trabalhos já citados [10], é proposta a visualização <strong>de</strong><br />

comportamentos <strong>de</strong> malware através <strong>de</strong> treemaps, mostrando a frequência e distribuição<br />

das ações maliciosas capturadas. Entretanto, ainda existe o excesso <strong>de</strong> dados e a falta <strong>de</strong><br />

interativida<strong>de</strong>. Para resolver o problema do excesso <strong>de</strong> dados, a proposta <strong>de</strong>ste artigo é<br />

visualizar apenas as ações que causam mudanças em um sistema alvo. Quanto a falta <strong>de</strong><br />

interativida<strong>de</strong>, foi proposto um gráfico <strong>de</strong> comportamento em espiral, representando todas<br />

essas ativida<strong>de</strong>s escolhidas <strong>de</strong> forma temporal e que po<strong>de</strong> ser aumentado, rotacionado e<br />

ter ícones específicos selecionados <strong>de</strong> forma a <strong>de</strong>talhar a ação. Estas características serão<br />

explicadas na seção a seguir.<br />

3. Descrição da ferramenta<br />

A ferramenta <strong>de</strong> visualização proposta tem como objetivo principal receber um arquivo <strong>de</strong><br />

comportamento e exibir as informações contidas nele <strong>de</strong> uma forma interativa por meio<br />

<strong>de</strong> um gráfico em três dimensões no formato <strong>de</strong> uma espiral como visto na Figura 1. A<br />

visualização gráfica em espiral permite uma análise interativa e mais compreensível <strong>de</strong><br />

dados complexos.<br />

Figura 1. Visão geral do gráfico em espiral<br />

Nota-se que, <strong>de</strong>vido à forma ser em espiral, esta ferramenta visual permite a interpretação<br />

<strong>de</strong> uma gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> informações, o que seria muito mais difícil através<br />

da análise manual, sem o auxílio <strong>de</strong> software <strong>de</strong> análise específico. Um outro ponto para<br />

a escolha visual é po<strong>de</strong>r comparar rapidamente os padrões presentes em comportamentos<br />

distintos. Caso a apresentação fosse bidimensional, com os ícones dispostos em uma<br />

matriz (como mostrado em [3], pequenas variações nas ações po<strong>de</strong>riam gerar gráficos<br />

bem diferentes para comportamentos muito similares, o que é in<strong>de</strong>sejável na análise <strong>de</strong><br />

malware.<br />

Dentre as principais características da ferramenta, <strong>de</strong>stacam-se:<br />

302


• A capacida<strong>de</strong> <strong>de</strong> manipular livremente o ângulo <strong>de</strong> visão do gráfico para obter<br />

mais <strong>de</strong>talhes <strong>de</strong> uma <strong>de</strong> uma <strong>de</strong>terminada área do gráfico.<br />

• A possibilida<strong>de</strong> <strong>de</strong> <strong>de</strong>stacar pontos relevantes do gráfico.<br />

• A flexibilida<strong>de</strong> em aceitar como entrada diversos tipos arquivos <strong>de</strong> entrada através<br />

da configuração a<strong>de</strong>quada dos parâmetros.<br />

• A facilida<strong>de</strong> em personalizar características do gráfico criado, como por exemplo<br />

o raio da espiral.<br />

3.1. Arquitetura<br />

A arquitetura da ferramenta é dividida em dois módulos: Módulo GUI e o Módulo Visualização.<br />

O usuário interage com o Módulo GUI, e este por sua vez encaminha as<br />

escolhas do usuário para o Módulo Visualização, que é responsável pela apresentação dos<br />

resultados.<br />

3.2. Módulo GUI<br />

O Módulo GUI é uma interface gráfica, conforme po<strong>de</strong> ser visto na Figura 2, que foi<br />

criada através do uso da biblioteca Swing da linguagem Java.<br />

Figura 2. Interface gráfica criada pelo Módulo GUI<br />

Através do uso <strong>de</strong>sta interface, o usuário fornece as informações a respeito da formatação<br />

dos arquivos (logs) a serem analisados, bem como <strong>de</strong>termina qual será a representação<br />

gráfica das palavras-chave presentes nestes logs que serão criadas pelo Módulo<br />

Visualização.<br />

A vantagem do uso <strong>de</strong>ste Módulo está na flexibilida<strong>de</strong> da interpretação dos arquivos<br />

<strong>de</strong> logs genéricos, proporcionando uma melhor filtragem da palavra-chave <strong>de</strong> interesse,<br />

pois somente serão visualizadas na espiral as formas geométricas e cores relacionadas<br />

às palavras-chave indicadas pelos usuário. Tanto o formato esperado <strong>de</strong> um arquivo<br />

<strong>de</strong> comportamento, quanto uma explicação melhor a respeito das palavras-chave estão na<br />

Seção 3.3.1<br />

3.3. Módulo Visualização<br />

O Módulo Visualização utiliza a biblioteca j3d do Java. Esta biblioteca foi escolhida por<br />

permitir um rápido <strong>de</strong>senvolvimento do Módulo, e também por facilitar a implementação<br />

da computação gráfica, que por sua vez gera o ambiente em 3D, exibindo assim o gráfico<br />

para o usuário.<br />

303


Ao ser iniciado, o Módulo Visualização executa as seguintes tarefas: recebe os<br />

parâmetros do Módulo GUI, cria a cena, ren<strong>de</strong>riza a cena e exibe a imagem do gráfico. A<br />

seguir são <strong>de</strong>talhados os mecanismos que permitem a execução <strong>de</strong>stas tarefas.<br />

3.3.1. Estrutura do arquivo <strong>de</strong> entrada<br />

A Figura 3 exemplifica uma linha <strong>de</strong> um arquivo <strong>de</strong> entrada válido, no qual o caracter<br />

separador é o “;”, open é a primeira palavra-chave e process a segunda. Estas palavras<br />

referem-se, respectivamente, à cor e à forma geométrica. Vale lembrar que a posição das<br />

palavras-chave e o caracter separador são escolhidas pelo usuário no Módulo GUI.<br />

%HOMEPATH%\<strong>de</strong>sktop\malware.exe;open;process;proc.exe<br />

Figura 3. Exemplo <strong>de</strong> uma linha <strong>de</strong> um arquivo log válido<br />

Cada ponto no gráfico é composto simultaneamente por uma cor e uma forma<br />

geométrica. A cor correspon<strong>de</strong> a uma palavra-chave e a forma a outra palavra-chave.<br />

Portanto, é necessário que cada linha do arquivo log contenha duas palavras-chave para<br />

que a composição gráfica seja feita corretamente.<br />

As palavras-chave, no caso específico <strong>de</strong>ste trabalho, são as ações (criar, escrever,<br />

remover) e os tipos <strong>de</strong> subsistema influenciados por estas (arquivo, registros, processos)<br />

quando da ativida<strong>de</strong> <strong>de</strong> um programa malicioso. A Tabela 1 mostra as ações, seus tipos e<br />

os respectivos ícones (formas geométricas) e cores que representam tais informações.<br />

3.3.2. Adição <strong>de</strong> um ponto no gráfico da cena<br />

A biblioteca j3d possui algumas poucas fomas geométricas nativas, entre elas o cubo<br />

e a esfera. Portanto, para tornar possível o uso <strong>de</strong> formas não nativas foram criados<br />

vários métodos que encapsulam a criação <strong>de</strong> formas complexas (tais como, a pirâmi<strong>de</strong> e<br />

o asterisco utilizados neste artigo) a partir da composição <strong>de</strong> retas e planos. Além disso,<br />

também foi criado um método que encapsula a criação <strong>de</strong> um objeto “ponto” a partir <strong>de</strong><br />

uma cor e uma forma geométrica <strong>de</strong>finida.<br />

Com o intuito <strong>de</strong> facilitar o gerenciamento das informações pelo Módulo Visualização<br />

foi criado o objeto “ponto” mencionado, o qual contém todas as informações<br />

relevantes a um ponto do gráfico, tais como a cor, a forma geométrica e a linha correspon<strong>de</strong>nte<br />

do arquivo <strong>de</strong> entrada. Para <strong>de</strong>finir em qual posição (x,y,z) um ponto será inserido,<br />

utilizam-se as fórmulas abaixo:<br />

x = cos(αy)<br />

z = sin(αy)<br />

Observa-se que uma vez <strong>de</strong>finida a coor<strong>de</strong>nada “y”, o resto do vetor posição<br />

(x,y,z) também estará <strong>de</strong>finido. A coor<strong>de</strong>nada “y” <strong>de</strong>pen<strong>de</strong> <strong>de</strong> dois fatores: a linha na<br />

qual o ponto correspon<strong>de</strong> e a constante “α”.<br />

304


Tabela 1. Ações, tipos possíveis <strong>de</strong> visualização e ícones que as representam.<br />

Action / Type MUTEX FILE PROC REG NET<br />

READ<br />

QUERY<br />

RECEIVE<br />

WRITE<br />

SEND<br />

CONNECT<br />

CREATE<br />

DISCONNECT<br />

DELETE<br />

TERMINATE<br />

RELEASE<br />

Um ponto referente à enésima linha do arquivo possui a coor<strong>de</strong>nada “y” <strong>de</strong>finida<br />

pela fórmula y = 10n<br />

α<br />

, na qual “α” é uma constante escolhida pelo usuário no Módulo<br />

GUI, e “n” é o número da linha a qual o ponto se refere.<br />

3.3.3. Criação da cena<br />

Durante o método <strong>de</strong> criação da cena, cada linha do arquivo <strong>de</strong> entrada é percorrida. Caso<br />

o método encontre um par <strong>de</strong> palavras-chave, este adiciona um ponto correspon<strong>de</strong>nte no<br />

gráfico da cena, como já <strong>de</strong>scrito na Seção 3.3.2. Em seguida, são adicionados ao gráfico<br />

os <strong>de</strong>talhes, isto é, os eixos e a curva da espiral.<br />

3.3.4. Ren<strong>de</strong>rização da cena<br />

A ren<strong>de</strong>rização é o processamento das informações providas na cena para gerar, <strong>de</strong> fato, a<br />

imagem visível ao usuário. A ren<strong>de</strong>rização é feita quase que integralmente pelos métodos<br />

nativos da biblioteca j3d, com exceção <strong>de</strong> duas classes customizadas: a classe CanvasOverlay<br />

e a classe MouseBehavior.<br />

A classe CanvasOverlay esten<strong>de</strong> a classe nativa Canvas, e tem como objetivo<br />

implementar a capacida<strong>de</strong> <strong>de</strong> se escrever texto sobre a camada do plano principal (canvas).<br />

Isto é feito para mostrar ao usuário informações adicionais sobre um ponto específico no<br />

gráfico, conforme ilustrado na Figura 4.<br />

305


Figura 4. Detalhes das marcações nos pontos (gra<strong>de</strong> ver<strong>de</strong>) e texto inserido<br />

através da classe CanvasOverlay<br />

A classe MouseBehavior esten<strong>de</strong> a classe nativa Behavior e tem como objetivo<br />

adicionar ao Módulo Visualização a capacida<strong>de</strong> <strong>de</strong> reconhecer comandos do mouse diretamente<br />

sobre a tela, como a posição e o clique do mouse sobre o canvas.<br />

Com a classe MouseBehavior é possível controlar a câmera com o mouse e também<br />

criar marcações para <strong>de</strong>stacar pontos do gráfico (Figura 4). As marcações são criadas<br />

por métodos implementados <strong>de</strong>ntro da classe MouseBehavior. Assim, quando for <strong>de</strong>tectado<br />

um clique do mouse sobre algum ponto do gráfico, este método irá adicionar ou<br />

remover, alternadamente, a marcação correspon<strong>de</strong>nte ao ponto.<br />

4. Testes e Resultados<br />

A representação <strong>de</strong> comportamentos maliciosos envolve diversas categorias <strong>de</strong> ações e<br />

tipos, para os quais foram <strong>de</strong>finidos cores e formas geométricas, com a finalida<strong>de</strong> <strong>de</strong><br />

facilitar sua i<strong>de</strong>ntificação e representação (Tabela 1).<br />

Através do módulo GUI, é possível filtrar as facetas do comportamento que se<br />

<strong>de</strong>seja visualizar. Por exemplo, supondo que o usuário <strong>de</strong>seje verificar apenas as ativida<strong>de</strong>s<br />

relacionadas à processos (criação e finalização), este <strong>de</strong>ve escolher somente a caixa<br />

<strong>de</strong> seleção “process”, <strong>de</strong>terminado pela cor ver<strong>de</strong> na Figura 2, <strong>de</strong>smarcando as outras.<br />

Isto faz com que a espiral produzida contenha apenas o tipo <strong>de</strong> informação selecionada,<br />

permitindo uma análise mais <strong>de</strong>talhada, conforme po<strong>de</strong>-se observar na Figura 5.<br />

Para fins <strong>de</strong> teste, foram obtidos os comportamentos <strong>de</strong> mais <strong>de</strong> 400 exemplares <strong>de</strong><br />

malware coletados pela arquitetura apresentada em [4]. Estes exemplares foram submetidos<br />

a um sistema <strong>de</strong> análise dinâmica <strong>de</strong> malware [5], para que fossem extraídos os perfis<br />

comportamentais. Os arquivos com comportamentos foram utilizados na geração das espirais,<br />

através da ferramenta <strong>de</strong>senvolvida apresentada neste artigo. É interessante notar<br />

que exemplares i<strong>de</strong>ntificados pelo antivírus ClamAV [1] como pertencentes à família “Allaple”<br />

apresentam padrões similares, mesmo quando o comportamento é incompleto. Isto<br />

po<strong>de</strong> ser observado na Figura 6.<br />

Dado que mesmo uma família <strong>de</strong>nominada por um mecanismo <strong>de</strong> antivírus po<strong>de</strong><br />

ter variantes diversificadas em diferentes grupos internos, ou sub-famílias, a análise <strong>de</strong>ssas<br />

diferenças é um processo relevante na compreensão das ativida<strong>de</strong>s maliciosas. Por exemplo,<br />

a família <strong>de</strong> worms anteriormente mencionada, conhecida como “Allaple” é bastante<br />

popular, contém <strong>de</strong>zenas <strong>de</strong> variantes e ainda está em ativida<strong>de</strong>. Os exemplares se caracterizam<br />

por realizar ativida<strong>de</strong>s <strong>de</strong> varredura em re<strong>de</strong>s visando atacar outros sistemas e se<br />

disseminar.<br />

306


Figura 5. Espiral gerada através da seleção, no módulo GUI, <strong>de</strong> visualização<br />

filtrada por ativida<strong>de</strong>s relacionadas aos processos presentes no comportamento<br />

Figura 6. Comportamento <strong>de</strong> três exemplares da família “Allaple”. Em (a), o<br />

malware parou sua execução antes <strong>de</strong> gerar tráfego <strong>de</strong> re<strong>de</strong>; em (b), po<strong>de</strong>-se<br />

notar a presença <strong>de</strong> algum tráfego enquanto que em (c), ativida<strong>de</strong>s <strong>de</strong> re<strong>de</strong> ocorreram<br />

em gran<strong>de</strong> quantida<strong>de</strong><br />

Entretanto, po<strong>de</strong>m haver mudanças no comportamento que levem à ativida<strong>de</strong>s<br />

mais sofisticadas, como downloads ou obtenção <strong>de</strong> informações sobre as máquinas sondadas<br />

em uma varredura. Na Figura 7 é mostrada uma variante <strong>de</strong> “Allaple” cujo comportamento<br />

difere visivelmente das variantes da Figura 6, indicando uma possível sub-família.<br />

Além disso, po<strong>de</strong>-se notar uma alternância entre as ativida<strong>de</strong> <strong>de</strong> conexão com a re<strong>de</strong> e<br />

criação <strong>de</strong> arquivos, representadas por esferas vermelhas e rosas, respectivamente.<br />

Em um outro caso, foi possível classificar um exemplar não i<strong>de</strong>ntificado pela<br />

semelhança com a espiral <strong>de</strong> um cavalo-<strong>de</strong>-tróia conhecido (i<strong>de</strong>ntificado pelo ClamAV<br />

como uma variante <strong>de</strong> Trojan.Agent), conforme mostrado na Figura 8. Isto mostra que,<br />

visualmente, foi possível <strong>de</strong>tectar um comportamento <strong>de</strong> um programa até então classificado<br />

como inofensivo por um mecanismo antivírus, como sendo malicioso. É interessante<br />

notar que o comportamento do programa <strong>de</strong>sconhecido contém mais ações do que as do<br />

i<strong>de</strong>ntificado como um trojan, inclusive ativida<strong>de</strong>s <strong>de</strong> re<strong>de</strong> diversas.<br />

5. Conclusão<br />

Devido ao problema causado pelos programas maliciosos em sistemas <strong>de</strong> computadores e<br />

re<strong>de</strong>s, é necessário criar meios que facilitem a compreensão da atuação <strong>de</strong>stes e a tomada<br />

307


Figura 7. Variante <strong>de</strong> exemplar <strong>de</strong> malware da família “Allaple”, cujo comportamento<br />

predominante envolve a alternância entre as ativida<strong>de</strong>s <strong>de</strong> conexões <strong>de</strong><br />

re<strong>de</strong> (esferas vermelhas) e criação <strong>de</strong> arquivos (esferas rosas)<br />

(a) Exemplar não i<strong>de</strong>ntificado.<br />

(b) Trojan.Agent<br />

Figura 8. Exemplar não i<strong>de</strong>ntificado pelo antivírus ClamAV (a), cujo comportamento<br />

inicial é similar ao <strong>de</strong> um cavalo-<strong>de</strong>-tróia da classe “Agent” (b)<br />

<strong>de</strong> medidas <strong>de</strong> proteção. Técnicas <strong>de</strong> visualização po<strong>de</strong>m ser aplicadas com sucesso no<br />

auxilio à análise <strong>de</strong> comportamento malicioso, pois permitem a visualização <strong>de</strong> padrões<br />

que po<strong>de</strong>riam estar ocultos em uma massa muito gran<strong>de</strong> <strong>de</strong> informações textuais.<br />

Com a finalida<strong>de</strong> <strong>de</strong> ajudar na análise <strong>de</strong> malware, foi <strong>de</strong>senvolvida uma ferramenta<br />

para visualização <strong>de</strong> comportamento <strong>de</strong> execução <strong>de</strong> programas a qual é também<br />

interativa, permitindo a um usuário ou analista <strong>de</strong> segurança a verificação das ativida<strong>de</strong>s<br />

<strong>de</strong> forma <strong>de</strong>talhada e informativa. Esta ferramenta utiliza-se <strong>de</strong> tecnologias tridimensionais<br />

providas por pacotes em Java e apresenta os dados dispostos sob a forma <strong>de</strong> uma<br />

espiral.<br />

308


Para validar a ferramenta, foram feitos testes que produziram mais <strong>de</strong> 400 espirais<br />

<strong>de</strong> programas maliciosos e permitiram i<strong>de</strong>ntificar, visualmente, padrões comuns em famílias<br />

(tornando possível seu agrupamento e classificação posterior). Além disso, mostrouse<br />

que é possível associar programas maliciosos não i<strong>de</strong>ntificados à malware que já é<br />

conhecido. Como trabalho futuro, propõe-se uma extensão que permita abrir e manipular<br />

diversos arquivos <strong>de</strong> comportamentos ao mesmo tempo, possibilitando a comparação em<br />

paralelo mais rápida <strong>de</strong> várias instâncias <strong>de</strong> malware.<br />

A fim <strong>de</strong> disseminar o conhecimento científico e prover transparência, uma versão<br />

“beta” da ferramenta está disponível em [7], bem como as figuras <strong>de</strong> todas as espirais<br />

geradas.<br />

Referências<br />

[1] Clam antivirus. http://www.clamav.net.<br />

[2] G. Conti, E. Dean, M. Sinda and B. Sangster. Visual Reverse Engineering of Binary and<br />

Data Files. Proceedings of the 5th international workshop on Visualization for<br />

Computer Security(VizSec), 2008, pp. 1-17.<br />

[3] S. G. Eick, J. L. Steffen and E. E. Sumner, Jr. Seesoft—A Tool for Visualizing Line<br />

Oriented Software Statistics. In IEEE Transactions on Software Engineering, vol.<br />

18, no. 11, pp. 957-968, 1992.<br />

[4] A. R. A. Grégio, I. L. Oliveira, R. D. C. dos Santos, A. M. Cansian and P. L. <strong>de</strong> Geus.<br />

Malware distributed collection and pre-classification system using honeypot technology.<br />

Proceedings of SPIE , vol. 7344, pp. 73440B-73440B-10, 2009.<br />

[5] D. S. Fernan<strong>de</strong>s Filho, V. M. Afonso, A. R. A. Grégio, R. D. C. dos Santos, M. Jino and<br />

P. L. <strong>de</strong> Geus. Análise Comportamental <strong>de</strong> Código Malicioso através da Monitoração<br />

<strong>de</strong> Chamadas <strong>de</strong> Sistema e Tráfego <strong>de</strong> Re<strong>de</strong>. <strong>Anais</strong> do X Simpósio Brasileiro<br />

em Segurança da Informação e <strong>de</strong> Sistemas Computacionais (SBSeg), pp. 311-324,<br />

2010.<br />

[6] D. Keim. Visual Data Mining, Tutorial. In 23rd International Conference on Very Large<br />

Data Bases (VLDB ’97), 1997. Visitado em Agosto <strong>de</strong> 2011.<br />

[7] Malicious Behavior Spiral. http://www.las.ic.unicamp.br/~gregio/mbs<br />

[8] D. Quist and L. Liebrock. Visualizing Compiled Executables for Malware Analysis. Proceedings<br />

of the Workshop on Visualization for Cyber Security, 2009, pp. 27-32.<br />

[9] H. Read, K. Xynos and A. Blyth. Presenting DEViSE: Data Exchange for Visualizing<br />

Security Events. IEEE Computer Graphics and Applications, vol. 29,pp. 6-11,<br />

2009.<br />

[10] P. Trinius, T. Holz, J. Gobel and F. C. Freiling. Visual analysis of malware behavior using<br />

treemaps and thread graphs. International Workshop on Visualization for Cyber<br />

Security(VizSec), 2009, pp. 33-38.<br />

309


Troca <strong>de</strong> Chaves Criptográficas com Re<strong>de</strong>s Neurais<br />

Artificiais<br />

Denis R. M. Piazentin 1 , Maurício Duarte 1<br />

1 Computer and Information Systems Research Lab (COMPSI)<br />

Centro Universitário Eurípe<strong>de</strong>s <strong>de</strong> Marília (UNIVEM) – Marília, SP – Brasil<br />

<strong>de</strong>nis@piazentin.com, maur.duarte@univem.edu.br<br />

Abstract. Encryption algorithms work by scrambling information to protected<br />

then from unauthorized access. These algorithms use cryptographic<br />

keys, a data used by a given algorithm for scrambling the information and<br />

subsequent restoration of these information through <strong>de</strong>cryption. The distribution<br />

of cryptographic keys is a known problem in cryptography. Given<br />

that artificial neural networks can synchronize by mutual learning, adjusting<br />

their weights, it is possible to use this property of synchronization to<br />

solve the problem of exchanging cryptographic keys. This work is the study<br />

of this technique, known as Neural Cryptography.<br />

Resumo. Algoritmos <strong>de</strong> criptografia trabalham embaralhando informações<br />

para as proteger <strong>de</strong> acesso in<strong>de</strong>vido. Esses algoritmos usam chaves criptográficas,<br />

um dado usado pelo algoritmo para o embaralhamento das informações<br />

e posterior restauração dos mesmos através da <strong>de</strong>scriptografia. A<br />

distribuição das chaves criptográficas é um conhecido problema em criptografia.<br />

Tendo em vista que re<strong>de</strong>s neurais artificiais po<strong>de</strong>m se sincronizar por<br />

aprendizado mútuo, ajustando seus pesos, é possível usar essa proprieda<strong>de</strong><br />

<strong>de</strong> sincronização para solucionar o problema <strong>de</strong> troca <strong>de</strong> chaves criptográficas.<br />

Este trabalho é o estudo <strong>de</strong>sta técnica, conhecida como Criptografia<br />

Neural.<br />

1. Introdução<br />

A criptografia usa algoritmos criptográficos para transformar texto plano em texto<br />

cifrado e utiliza um dado chamado chave criptográfica para criptografar e <strong>de</strong>scriptografar<br />

esses textos. Fazer com que ambas as partes da comunicação possuam essa<br />

mesma chave é um problema conhecido em criptografia, que já teve propostas e implementadas<br />

soluções como o uso <strong>de</strong> um terceiro confiável, a troca com antecedência<br />

e uso <strong>de</strong> chaves públicas. A sincronização <strong>de</strong> re<strong>de</strong>s neurais e o uso <strong>de</strong> seus pesos<br />

como chaves criptográficas é uma alternativa ao problema <strong>de</strong> troca <strong>de</strong> chave.<br />

Com a <strong>de</strong>scoberta da sincronização entre re<strong>de</strong>s neurais por um processo conhecido<br />

como aprendizagem mútua, on<strong>de</strong> os pesos são ajustados até que convirjam<br />

e com a criação <strong>de</strong> re<strong>de</strong>s neurais com uma estrutura diferenciada on<strong>de</strong> há uma sincronização<br />

muito mais rápida que o treinamento comum, foi possível propor um<br />

protocolo <strong>de</strong> troca <strong>de</strong> chaves que utiliza os pesos <strong>de</strong>ssas re<strong>de</strong>s sincronizadas como<br />

chaves criptográficas, criando uma alternativa ao problema <strong>de</strong> troca <strong>de</strong> chave.<br />

310


Este trabalho tem como objetivo prover uma revisão bibliográfica e apresentar<br />

o uso da sincronização <strong>de</strong> re<strong>de</strong>s neurais artificiais como protocolo <strong>de</strong> troca <strong>de</strong> chaves.<br />

A criptografia neural é uma alternativa interessante, tendo em vista que problemas<br />

encontrados em outros protocolos não são observáveis aqui.<br />

2. Criptografia e Troca <strong>de</strong> Chaves<br />

Criptografar é o ato <strong>de</strong> converter informações sensíveis em textos ilegíveis, enquanto<br />

que, o processo inverso, converter textos ilegíveis em informação legível, consiste<br />

do ato <strong>de</strong> <strong>de</strong>scriptografar. Para criptografar e <strong>de</strong>scriptografar dados, utilizam-se<br />

algoritmos criptográficos que, por sua vez, utilizam um dado conhecido como chave.<br />

Na criptografia computadorizada, a chave é sempre um número ou um conjunto <strong>de</strong><br />

números [Burnett e Paine 2001].<br />

Alguns algoritmos <strong>de</strong> criptografia mais conhecidos são o Data Encryption<br />

Standart (DES), o Advanced Encryption Standart (AES) e o RSA [Terada 2008].<br />

O DES foi o primeiro algoritmo <strong>de</strong> criptografia <strong>de</strong> conhecimento público e<br />

se tornou o padrão comercial em algoritmos criptográficos, junto com sua variante,<br />

Triple DES. No DES e nos algoritmos públicos que se seguiram, a segurança se baseia<br />

exclusivamente no conhecimento da chave secreta. O DES e todos os algoritmos<br />

conhecidos como <strong>de</strong> criptografia <strong>de</strong> chave simétrica utilizam a mesma chave para<br />

criptografar e <strong>de</strong>scriptografar [Terada 2008].<br />

Sucessor do DES, o AES foi escolhido para ser o novo padrão comercial<br />

através <strong>de</strong> uma competição criada em 1998. Os algoritmos candidatos a AES foram<br />

analisados quanto à sua segurança, performance e tamanho [Burnett e Paine 2001].<br />

A partir <strong>de</strong>ssa análise, foram selecionados uma série <strong>de</strong> algoritmos que foram e-<br />

xaustivamente testados e, em outubro <strong>de</strong> 2000, o algoritmo Rijndael foi escolhido e<br />

adotado como AES [Terada 2008]. O AES é um algoritmo <strong>de</strong> chave simétrica que<br />

utiliza chaves <strong>de</strong> 128, 192 ou 256 bits <strong>de</strong> comprimento [Terada 2008].<br />

O algoritmo RSA, publicado em 1978, utiliza o conceito <strong>de</strong> chaves públicas<br />

e privadas. Nesse esquema, cada usuário possui seu par <strong>de</strong> chaves; a chave pública,<br />

que é usada por terceiros para criptografar o conteúdo e uma chave distinta, privada,<br />

que é usada pelo usuário para <strong>de</strong>scriptografar os dados [Burnett e Paine 2001]. O<br />

algoritmo RSA comumente é utilizado para criptografar uma chave <strong>de</strong> sessão, que é<br />

usada por outro algoritmo, <strong>de</strong> criptografia simétrica, para criptografar e <strong>de</strong>scriptografar<br />

a mensagem em si [Burnett e Paine 2001]. Isso ocorre porque algoritmos <strong>de</strong><br />

chave pública como o RSA são muito mais lentos que os <strong>de</strong> chave simétrica, chegando<br />

a ser 500 vezes mais lento em algumas comparações [Burnett e Paine 2001].<br />

A criptografia <strong>de</strong> chave pública é uma das soluções para o problema <strong>de</strong> troca<br />

<strong>de</strong> chaves. A criptografia é usada para proteger a troca <strong>de</strong> informações secretas,<br />

mas para isso também é necessário proteger as chaves que <strong>de</strong>scriptografam essas<br />

informações e, se um atacante po<strong>de</strong> interceptar a mensagem com o texto cifrado,<br />

também po<strong>de</strong> interceptar a mensagem com a chave que a <strong>de</strong>scriptografa [Burnett<br />

e Paine 2001]. Outras soluções para o problema <strong>de</strong> troca <strong>de</strong> chaves são a troca <strong>de</strong><br />

chaves com antecedência, o uso <strong>de</strong> um terceiro confiável e a criptografia neural.<br />

Na troca <strong>de</strong> chaves com antecedência, as duas partes que <strong>de</strong>sejam se comuni-<br />

311


car <strong>de</strong>vem se encontrar antes e compartilhar a chave que será usada para criptografar<br />

as mensagens através <strong>de</strong> um meio <strong>de</strong> comunicação seguro [Burnett e Paine 2001].<br />

O principal problema com esse protocolo é a dificulda<strong>de</strong> na troca <strong>de</strong> chaves que<br />

surge quando as partes estão em locais geograficamente distantes ou quando muitas<br />

partes <strong>de</strong>sejam se comunicar, situações em que ocorrem problemas <strong>de</strong> logística que<br />

inviabilizam a troca [Burnett e Paine 2001].<br />

No caso <strong>de</strong> terceiro confiável, cada parte possui uma chave diferente compartilhada<br />

com uma terceira parte confiável (trusted third party, TTP), que armazena a<br />

chave <strong>de</strong> todas as outras partes e tem acesso a todas as mensagens [Burnett e Paine<br />

2001]. O principal problema com esse protocolo é que a confiabilida<strong>de</strong> da TTP é extremamente<br />

crítica, e caso a TTP seja perdida ou comprometida <strong>de</strong> qualquer forma,<br />

é necessário obter outra TTP e reiniciar o processo <strong>de</strong> geração <strong>de</strong> chaves para todas<br />

as partes, o que po<strong>de</strong> ser muito custoso [Burnett e Paine 2001].<br />

Criptografia neural utiliza os pesos <strong>de</strong> re<strong>de</strong>s neurais sincronizadas como chaves<br />

criptográficas [Kinzel e Kanter 2002]. O protocolo se baseia na proprieda<strong>de</strong> <strong>de</strong><br />

sincronização <strong>de</strong> certas re<strong>de</strong>s neurais e no fato <strong>de</strong> que a sincronização é muito mais<br />

rápida que o aprendizado <strong>de</strong> uma terceira re<strong>de</strong> neural <strong>de</strong> um atacante que esteja<br />

apenas monitorando a comunicação [Ruttor 2007].<br />

3. Re<strong>de</strong>s Neurais Artificiais<br />

Re<strong>de</strong>s neurais artificiais (RNAs) são sistemas paralelos distribuídos por unida<strong>de</strong>s<br />

<strong>de</strong> processamento simples (neurônios artificiais) que calculam <strong>de</strong>terminadas funções<br />

matemáticas [Braga et al. 2007].<br />

O primeiro neurônio artificial, que foi proposto em 1943 por McCulloch e<br />

Pitts, é um simplificação do neurônio biológico, que é dividido em corpo ou soma,<br />

<strong>de</strong>ndritos e axônio, conforme ilustrado na Figura 1.<br />

Figura 1. Mo<strong>de</strong>lo <strong>de</strong> neurônio biológico com o corpo, os <strong>de</strong>ndritos e o axônio com<br />

seus terminais sinápticos. Fonte: próprio autor<br />

O mo<strong>de</strong>lo <strong>de</strong> neurônio artificial foi composto <strong>de</strong> n terminais <strong>de</strong> entrada, recebendo<br />

os valores x 1 , x 2 , . . . , x n , com pesos acoplados w 1 , w 2 , . . . , w n representando a<br />

força das sinapses do neurônio, com o efeito da sinapse i então sendo dado por x i w i<br />

no momento em que o neurônio atinge seu limiar <strong>de</strong> excitação, dado pela somatória<br />

dos valores x i w i e por uma função <strong>de</strong> ativação f(u), com o disparo sendo dado pela<br />

saída y nos valores 1 ou 0 [Braga et al. 2007] [Russell e Norvig 2010]. O mo<strong>de</strong>lo do<br />

neurônio artificial é representado na Figura 2.<br />

312


Figura 2. Mo<strong>de</strong>lo matemático <strong>de</strong> um neurônio artificial, com as entradas<br />

x 1 , x 2 , . . . , x n , pesos w 1 , w 2 , . . . , w n , saída y e corpo com a somatória <strong>de</strong> x i w i e<br />

função <strong>de</strong> ativação f(u). Fonte: próprio autor<br />

Neurônios individuais são computacionalmente limitados, mas conjuntos <strong>de</strong><br />

neurônios organizados em forma <strong>de</strong> re<strong>de</strong> po<strong>de</strong>m resolver problemas mais complexos<br />

[Braga et al. 2007]. Para isso, se organizam re<strong>de</strong>s <strong>de</strong> neurônios artificiais com<br />

quantia <strong>de</strong> camadas variadas e com conexão entre si unidirecionais (feedforward)<br />

ou recorrentes, com saídas da camada inferior alimentando entradas da camada<br />

superior [Braga et al. 2007].<br />

As RNAs são treinadas para apren<strong>de</strong>r e melhorar sua performance na resolução<br />

<strong>de</strong> um problema [Haykin 1999]. Esse treinamento consiste <strong>de</strong> um processo<br />

iterativo <strong>de</strong> ajuste dos pesos das conexões [Braga et al. 2007] em que as entradas da<br />

re<strong>de</strong> são alimentadas e, <strong>de</strong> acordo com o resultado, os pesos são ajustados. O ajuste<br />

dos pesos é dado por w(t + 1) = w(t) + ∆w(t), com w(t + 1) sendo o valor do peso<br />

no instante t + 1 e ∆w(t) o ajuste aplicado aos pesos.<br />

O treinamento ou aprendizado po<strong>de</strong> ser supervisionado ou não supervisionado.<br />

No treinamento supervisionado, há um supervisor estimulando as entradas e<br />

ajustando os pesos para aproximar sua saída da saída <strong>de</strong>sejada. No treinamento não<br />

supervisionado, padrões são apresentados continuamente à re<strong>de</strong> e as regularida<strong>de</strong>s<br />

nos dados apresentados torna o aprendizado possível [Braga et al. 2007].<br />

A regra <strong>de</strong> aprendizado <strong>de</strong> Hebb, uma das regras <strong>de</strong> aprendizado usadas na<br />

criptografia neural, que propõe que o peso <strong>de</strong>ve ser ajustado caso haja sincronismo<br />

entre ativida<strong>de</strong>s <strong>de</strong> entrada e saída, é classificada como não supervisionada [Braga<br />

et al. 2007].<br />

4. Criptografia Neural<br />

A sincronização <strong>de</strong> re<strong>de</strong>s neurais é um caso especial <strong>de</strong> aprendizado on<strong>de</strong> duas re<strong>de</strong>s<br />

neurais são iniciadas com pesos escolhidos aleatoriamente e, a cada passo do processo<br />

<strong>de</strong> sincronização, recebem um vetor <strong>de</strong> entradas gerado publicamente, calculam suas<br />

saídas e as comunicam uma para a outra. Caso o mapeamento entre a entrada atual<br />

e a saída <strong>de</strong> ambas as re<strong>de</strong>s não seja igual, os pesos da re<strong>de</strong> são atualizados <strong>de</strong> acordo<br />

com uma das regras aplicáveis [Ruttor 2007].<br />

Nas re<strong>de</strong>s neurais mais simples, como os perceptrons, não se observa diferença<br />

significativa entre o tempo para a re<strong>de</strong> ser treinada por exemplos do tempo necessário<br />

para sincronizar, porém re<strong>de</strong>s neurais com uma estrutura específica, as Tree Parity<br />

313


Machines (TPM), sincronizam muito mais rápido do que uma terceira re<strong>de</strong> que esteja<br />

escutando a comunicação precisa para apren<strong>de</strong>r, e essa diferença <strong>de</strong> tempo é usada<br />

pelo protocolo para resolver o problema <strong>de</strong> troca <strong>de</strong> chaves [Ruttor 2007].<br />

A arquitetura da re<strong>de</strong> TPM foi apresentada no artigo Secure exchange of<br />

information by synchronization of neural networks [Kanter et al. 2002] e po<strong>de</strong> ser<br />

vista na Figura 3:<br />

Figura 3. Estrutura <strong>de</strong> uma Tree Parity Machine, com K = 3 e N = 4. Fonte:<br />

próprio autor<br />

A TPM é composta por três camadas, a <strong>de</strong> entrada, a oculta e a <strong>de</strong> saída,<br />

respectivamente. A camada oculta possui K unida<strong>de</strong>s, representados na Figura 3<br />

por o i on<strong>de</strong> i = 1, . . . , K, com cada unida<strong>de</strong> possuindo N unida<strong>de</strong>s da camada <strong>de</strong><br />

entradas x j com peso associado w j , on<strong>de</strong> j = 1, . . . , N. A camada <strong>de</strong> saída possui<br />

apenas uma unida<strong>de</strong> y.<br />

Tem-se que todos os valores <strong>de</strong> entradas são binários, tais que<br />

x i,j ∈ {−1, +1} (1)<br />

e os pesos que <strong>de</strong>finem o mapeamento <strong>de</strong> entradas para saída são números discretos<br />

entre −L e +L,<br />

w i,j ∈ {−L, −L + 1, . . . , +L − 1, L} (2)<br />

como em outras re<strong>de</strong>s neurais, tem-se também que o estado <strong>de</strong> cada neurônio é dado<br />

pelo somatório <strong>de</strong> x j w j ,<br />

h i = 1 √<br />

N<br />

x i w i = 1 √<br />

N<br />

N<br />

∑<br />

j=1<br />

com a saída o i sendo <strong>de</strong>finida pela função sinal <strong>de</strong> h i ,<br />

x i,j w i,j (3)<br />

o i = sgn(h i ) (4)<br />

com o caso especial <strong>de</strong> h i = 0 sendo mapeado para −1 para garantir um valor<br />

<strong>de</strong> saída binário. Tem-se então que a saída total y da TPM é dado pelo produto<br />

(parida<strong>de</strong>) das unida<strong>de</strong>s da camada oculta o i ,<br />

y =<br />

K∏<br />

o i (5)<br />

i=1<br />

De tal forma, a saída y apenas indica se o número <strong>de</strong> unida<strong>de</strong>s inativas da<br />

camada oculta é par (y = +1) ou ímpar(y = −1) e, consequentemente, há 2 K−1<br />

314


diferentes representações internas (o 1 , o 2 , . . . , o k ) que resultam no mesmo valor <strong>de</strong><br />

y [Ruttor 2007].<br />

O processo <strong>de</strong> sincronização tem início com os pesos das TPM A e B sendo<br />

inicializados com valores aleatórios, não relacionados e secretos. Após isso, para<br />

cada passo da sincronização, é gerada publicamente uma lista <strong>de</strong> valores aleatórios<br />

<strong>de</strong> tamanho K × N que alimenta as entradas A e B, em que as saídas y A e y B são<br />

calculadas [Ruttor 2007].<br />

Caso y A ≠ y B nenhuma ação é tomada e caso y A = y B é aplicada uma das<br />

regras <strong>de</strong> aprendizado, que são [Prabakaran e P. 2010]:<br />

• Regra <strong>de</strong> aprendizado <strong>de</strong> Hebb:<br />

w A/B<br />

i<br />

• Regra <strong>de</strong> aprendizado anti-Hebb:<br />

w A/B<br />

i<br />

(t + 1) = w A/B<br />

i (t) + x i y A/B Θ(y A/B o A/B<br />

i )Θ(y A y B ) (6)<br />

(t + 1) = w A/B<br />

i (t) − x i o i Θ(y A/B o A/B<br />

i )Θ(y A y B ) (7)<br />

• Regra <strong>de</strong> aprendizado Passeio Aleatório<br />

w A/B<br />

i<br />

(t + 1) = w A/B<br />

i (t) + x i Θ(y A/B o A/B<br />

i )Θ(y A y B ) (8)<br />

On<strong>de</strong> Θ é a função <strong>de</strong>grau,<br />

Θ(x) = 1 + sgn(x)<br />

2<br />

⎧<br />

⎪⎨ 0, x < 0<br />

1<br />

=<br />

2<br />

⎪⎩<br />

, x = 0<br />

1, x > 0<br />

(9)<br />

<strong>de</strong>ssa forma, apenas são atualizadas as unida<strong>de</strong>s on<strong>de</strong> o i = y A/B quando y A = y B .<br />

Essa restrição na atualização dos pesos é especialmente útil, já que torna impossível<br />

saber quais pesos foram atualizados sem conhecer os seus valores na camada oculta<br />

[Firmino Filho 2009].<br />

Os passos da sincronização <strong>de</strong>vem ser repetidos até que as duas re<strong>de</strong>s estejam<br />

sincronizadas. As re<strong>de</strong>s são consi<strong>de</strong>radas sincronizadas quando para cada peso w A i<br />

das K unida<strong>de</strong>s ocultas <strong>de</strong> A e o peso correspon<strong>de</strong>nte w B i em B tem-se que w A i = w B i .<br />

Porém, como as TPM A e B possuem pesos secretos, essa comunicação não<br />

é possível. Como alternativa para a <strong>de</strong>tecção <strong>de</strong> sincronização entre as re<strong>de</strong>s, é proposto<br />

que seja feito um teste cifrando uma mensagem pré-<strong>de</strong>terminada com um algoritmo<br />

criptográfico usando como chave o estado dos pesos <strong>de</strong> A e B e comparando-os,<br />

<strong>de</strong> forma que se a mensagem cifrada m A seja igual à m B , então A e B estão sincronizados.<br />

Para reduzir os custos <strong>de</strong> processamento <strong>de</strong>sse algoritmo, acrescenta-se<br />

a regra <strong>de</strong> que o teste <strong>de</strong> sincronização <strong>de</strong>ve ser executado apenas caso a condição<br />

y A = y B tenha ocorrido nos últimos M passos.<br />

O processo <strong>de</strong> sincronização é baseado na competição entre forças aleatórias<br />

atrativas e repulsivas. Um passo atrativo ocorre quando y A = o A i = o B i = y B ,<br />

situação on<strong>de</strong> os pesos <strong>de</strong> ambas as re<strong>de</strong>s são atualizados. Com os pesos das re<strong>de</strong>s<br />

315


entre −L e +L, a distância d i = |wi<br />

A − wi B | não será modificada, exceto caso o valor<br />

<strong>de</strong> um dos pesos ultrapasse L, caso em que é atribuido ao mesmo o valor limitante,<br />

o que faz com que a distância d i diminua, até que d i = 0 [Firmino Filho 2009].<br />

Um passo repulsivo ocorre quando y A = y B mas o A i ≠ o B i . Nessa situação<br />

apenas um dos pesos é atualizado, o que aumenta a distância d i = |wi A − wi B |.<br />

Para uma re<strong>de</strong> neural atacante, a probabilida<strong>de</strong> <strong>de</strong> passos repulsivos é sempre<br />

maior do que entre A e B [Ruttor 2007].<br />

O principal problema para um atacante E é que a representação interna<br />

(o 1 , o 2 , . . . , o i ) <strong>de</strong> A e B lhe é <strong>de</strong>sconhecida. Como as alterações nos pesos <strong>de</strong>pen<strong>de</strong><br />

dos valores <strong>de</strong> o i , é importante para um ataque bem sucedido que o estado das<br />

unida<strong>de</strong>s ocultas seja adivinhado corretamente.<br />

Ataques <strong>de</strong> força bruta são computacionalmente inviáveis contra o protocolo,<br />

pois para <strong>de</strong>terminada TPM há (2L + 1) KN diferentes configurações possíveis <strong>de</strong><br />

pesos.<br />

Há quatro principais formas <strong>de</strong> ataque; simples, geométrico, <strong>de</strong> maioria e o<br />

genético. No ataque simples, E treina uma terceira TPM com os vetores públicos x<br />

e com as saídas y A , que são transmitidas publicamente entre A e B.<br />

A TPM <strong>de</strong> E <strong>de</strong>ve ter a mesma estrutura <strong>de</strong> A e B e inicia com pesos<br />

aleatórios [Ruttor 2007]. A re<strong>de</strong> neural <strong>de</strong> E é treinada por uma das seguintes<br />

equações:<br />

• Regra <strong>de</strong> aprendizado <strong>de</strong> Hebb:<br />

• Regra <strong>de</strong> aprendizado anti-Hebb:<br />

w E i (t + 1) = w E i (t) + x i y E Θ(y A o E i )Θ(y A y B ) (10)<br />

w E i (t + 1) = w E i (t) − x i o i Θ(y A o E i )Θ(y A y B ) (11)<br />

• Regra <strong>de</strong> aprendizado Passeio Aleatório<br />

w E i (t + 1) = w E i (t) + x i Θ(y A o E i )Θ(y A y B ) (12)<br />

O ataque geométrico é similar ao ataque simples, porém a regra <strong>de</strong> aprendizado<br />

só é aplicada caso y E = y A = y B . Caso y E ≠ y A = y B , o atacante tentará<br />

corrigir sua representação interna para obter a mesma saída antes <strong>de</strong> atualizar seus<br />

pesos, trocando o valor <strong>de</strong> sua saída y E pelo valor da saída <strong>de</strong> um neurônio da<br />

camada oculta [Firmino Filho 2009].<br />

No ataque <strong>de</strong> maioria, o atacante usa m TPMs para melhorar sua capacida<strong>de</strong><br />

<strong>de</strong> predição. As m re<strong>de</strong>s não inicializadas com pesos aleatórios e quando a saída <strong>de</strong><br />

uma <strong>de</strong>terminada re<strong>de</strong> yi<br />

E for diferente <strong>de</strong> y A/B , E tenta corrigir sua representação<br />

da mesma forma que o ataque geométrico. Após a correção, o atacante E seleciona<br />

a representação interna mais comum e esta será adotada por todas as re<strong>de</strong>s na regra<br />

<strong>de</strong> aprendizagem [Firmino Filho 2009].<br />

Para aumentar a eficiência e reduzir a correlação que surge entre as TPMs<br />

<strong>de</strong> E <strong>de</strong>vido às atualizações idênticas, o atacante po<strong>de</strong> usar o ataque <strong>de</strong> maioria e o<br />

316


ataque geométrico alternadamente [Ruttor 2007]. O ataque <strong>de</strong> maioria é o com maior<br />

taxa <strong>de</strong> sucesso contra a criptografia neural, e para aumentar a segurança contra<br />

esse protocolo foi proposto por [Ruttor 2007] o uso <strong>de</strong> queries, em que um algoritmo<br />

utiliza informações internas <strong>de</strong> uma das TPM para gerar vetores <strong>de</strong> entradas com<br />

maior probabilida<strong>de</strong> <strong>de</strong> ocorrência <strong>de</strong> passos atrativos entre os parceiros.<br />

O ataque genético é baseado em um algoritmo evolucionário. No ataque<br />

genético, E começa com apenas uma TPM, mas po<strong>de</strong> usar até m re<strong>de</strong>s neurais.<br />

Quando y A = y B , o seguinte algoritmo é aplicado:<br />

m<br />

• Caso E tenha até Tree Parity Machines, ele <strong>de</strong>termina todas as 2 K−1<br />

2 K−1<br />

representações internas (o 1 , o 2 , . . . , o i ) que produzem a saída y A e os usa para<br />

atualizar os pesos <strong>de</strong> acordo com a regra <strong>de</strong> aprendizado. Assim E cria 2 K−1<br />

variantes <strong>de</strong> cada TPM nesse passo <strong>de</strong> mutação [Ruttor 2007].<br />

• Caso E já tenha mais que<br />

E isso é obtido <strong>de</strong>scartando todas as re<strong>de</strong>s que predisseram menos que U<br />

saídas y A nos últimos V passos <strong>de</strong> aprendizagem em que y A = y B no passo<br />

<strong>de</strong> seleção. Como regra adicional, E mantém ao menos 20 TPMs.<br />

m<br />

TPMs, só as mais aptas <strong>de</strong>vem ser mantidas.<br />

2 K−1<br />

Foram propostas duas melhorias ao algoritmo, sendo o uso <strong>de</strong> queries, por<br />

[Ruttor 2007], e o uso <strong>de</strong> transmissões errôneas, proposto por [Allam e Abbas 2010],<br />

em que as TPMs parceiras enviam suas saídas erroneamente com probabilida<strong>de</strong><br />

baseada na distância estimada entre os pesos <strong>de</strong> A e B e a re<strong>de</strong> parceira tenta<br />

predizer o envio <strong>de</strong>sta informação usando os mesmos cálculos.<br />

5. Conclusões<br />

O protocolo foi implementado na linguagem Python para comprovar o funcionamento<br />

da técnica <strong>de</strong> criptografia neural. Com a implementação, po<strong>de</strong>-se observar<br />

o fenômeno <strong>de</strong> sincronização <strong>de</strong> re<strong>de</strong>s neurais e validar algumas características do<br />

protocolo. Foi possível confirmar que, conforme verificado por Ruttor 2007 e Firmino<br />

Filho 2009, o tempo <strong>de</strong> sincronização das re<strong>de</strong>s neurais aumenta exponencialmente<br />

com o aumento <strong>de</strong> L.<br />

Foram utilizadas duas re<strong>de</strong>s neurais Tree Parity Machine utilizando a regra<br />

<strong>de</strong> aprendizado <strong>de</strong> Hebb e configuradas com K = 4, N = 4 e L variável para obter<br />

a média do tempo <strong>de</strong> sincronização e sua variação com L. Os resultados obtidos<br />

encontram-se na figura 4, on<strong>de</strong> po<strong>de</strong>-se observar um crescimento polinomial no<br />

número <strong>de</strong> mensagens trocadas para atingir a sincronização com o aumento <strong>de</strong> L.<br />

Mantendo o valor L = 3, N = 4 e variando o parametro K, obtemos os tempos<br />

<strong>de</strong> sincronização exibidos na figura 5, on<strong>de</strong> po<strong>de</strong>mos observar que o aumento<br />

no número <strong>de</strong> mensagens trocadas para a sincronização não aumenta consi<strong>de</strong>ravelmente<br />

com o aumento <strong>de</strong> K, porém, o tempo <strong>de</strong> processamento gasto aumenta<br />

proporcionalmente.<br />

Temos que, após cada sincronização bem sucedida entre TPMs, obtemos uma<br />

matriz <strong>de</strong> pesos <strong>de</strong> tamanho K × N, exemplificada na figura 6. É possível, <strong>de</strong>ntre<br />

outras formas, utilizar a matriz como chave criptográfica concatenando os valores e<br />

aplicando um algoritmo <strong>de</strong> hash, como o SHA-256, para gerar imediatamente uma<br />

chave <strong>de</strong> 256 bits válida para um algoritmo criptográfico simétrico, como o AES.<br />

317


Figura 4. Número <strong>de</strong> mensagens trocadas até a sincronização, com L variável.<br />

Fonte: próprio autor<br />

Figura 5. Número <strong>de</strong> mensagens trocadas e tempo <strong>de</strong> CPU até a sincronização,<br />

com K variável. Fonte: próprio autor<br />

Foram efetuados testes <strong>de</strong> sincronização via re<strong>de</strong> usando TPMs configuradas<br />

com K = 4, N = 4 e L = 3, on<strong>de</strong> foi verificado que as re<strong>de</strong>s neurais sincronizaram<br />

com sucesso, com M = 5, gerando uma matriz <strong>de</strong> pesos similar à da figura 6<br />

idênticas nas TPMs A e B.<br />

A criptografia neural é uma alternativa ao problema <strong>de</strong> troca <strong>de</strong> chaves. Consiste<br />

<strong>de</strong> um algoritmo simples e precisa <strong>de</strong> um número baixo <strong>de</strong> cálculos para gerar<br />

chaves [Kanter et al. 2002], que torna as implementações do protocolo vantajosas em<br />

situações com recursos computacionais limitados. Também não possui algumas das<br />

<strong>de</strong>svantagens encontradas em outras técnicas, como a troca <strong>de</strong> chave com antecedência,<br />

que é logísticamente inviável e não <strong>de</strong>pen<strong>de</strong> exclusivamente <strong>de</strong> uma máquina<br />

mestre com acesso a todas as informações, como na abordagem do uso <strong>de</strong> um terceiro<br />

confiável.<br />

Estudos adicionais serão feitos para comparar a performance do algoritmo <strong>de</strong><br />

criptografia neural com a encontrada no algoritmo <strong>de</strong> criptografia pública RSA para<br />

validar a velocida<strong>de</strong> do protocolo proposto. Também serão feitas análises mais <strong>de</strong>talhadas<br />

da segurança do protocolo implementado, comparando-o com a criptografia<br />

<strong>de</strong> chave pública e o protocolo Diffie-Hellman.<br />

318


Figura 6. Número <strong>de</strong> mensagens trocadas até a sincronização, com K variável.<br />

Fonte: próprio autor<br />

Referências<br />

Allam, A. M. e Abbas, H. M. (2010). On the improvement of neural cryptography<br />

using erroneous transmitted information with error prediction. Trans.<br />

Neur. Netw., 21:1915–1924.<br />

Braga, A., Carvalho, A., e Lu<strong>de</strong>rmir, T. (2007). Re<strong>de</strong>s Neurais Artificiais: Teoria e<br />

Aplicações. LTC, 2nd edition.<br />

Burnett, S. e Paine, S. (2001). The RSA Security’s Official Gui<strong>de</strong> to Cryptography.<br />

Osborne/McGraw-Hill, Berkeley, CA, USA.<br />

Firmino Filho, J. (2009). Implementação e análise <strong>de</strong> <strong>de</strong>sempenho dos protocolos<br />

<strong>de</strong> criptografia neural e diffie-hellman em sistemas rfid utilizando uma plataforma<br />

embarcada. Universida<strong>de</strong> Fe<strong>de</strong>ral do Rio Gran<strong>de</strong> do Norte, page 61.<br />

Haykin, S. (1999). Neural networks: a comprehensive foundation. Prentice Hall.<br />

Kanter, I., Kinzel, W., e Kanter, E. (2002). Secure exchange of information by<br />

synchronization of neural networks. Europhysics Letters, 57(1):11.<br />

Kinzel, W. e Kanter, I. (2002). Neural cryptography. In in Proc. of the 9th International<br />

Conference on Neural Information Processing, pages 18–22.<br />

Prabakaran, N. e P., V. (2010). A new security on neural cryptography with queries.<br />

Int. J. of Advanced Networking and Applications, pages 437–444.<br />

Russell, S. e Norvig, P. (2010). Artificial intelligence: a mo<strong>de</strong>rn approach. Prentice<br />

Hall series in artificial intelligence. Prentice Hall, 3rd edition.<br />

Ruttor, A. (2007). Neural synchronization and cryptography. arXiv, page 120.<br />

Terada, R. (2008). Segurança <strong>de</strong> Dados: Criptografia em Re<strong>de</strong> <strong>de</strong> Computador.<br />

Edgard Blucher, 2nd edition.<br />

319


Comparação entre Linguagens <strong>de</strong> Especificação <strong>de</strong> Protocolos<br />

Thiago C. Vieira 1 , Cláudia Nalon 1<br />

1 Departamento <strong>de</strong> Ciência da Computação<br />

Universida<strong>de</strong> <strong>de</strong> Brasília (<strong>UnB</strong>) – Brasília, DF – Brasil<br />

thiagotcvieira@gmail.com, nalon@unb.br<br />

Abstract. The <strong>de</strong>velopment and verification of security protocols and authentication<br />

algorithms is a challenging problem. There are several tools for specifying<br />

and verifying protocols. We compare two of those specification approaches –<br />

one is based on combinations of logics and the other is based on a specification<br />

language for distributed systems. The analyses is carried out from the specifier<br />

point of view, highlighting the mechanisms that make easier (or difficult) to<br />

accomplish the task of <strong>de</strong>signing and verifying a protocol.<br />

Resumo. O <strong>de</strong>senvolvimento e verificação <strong>de</strong> protocolos é um problema <strong>de</strong>safiador,<br />

existindo várias ferramentas para auxiliar nestas tarefas. Neste trabalho,<br />

comparamos duas <strong>de</strong>stas ferramentas formais para especificação – uma<br />

baseada em combinações <strong>de</strong> lógicas e outra baseada em uma linguagem <strong>de</strong><br />

especificação para sistemas distribuídos. A análise é feita a partir do ponto <strong>de</strong><br />

vista do especificador, procurando enfatizar as dificulda<strong>de</strong>s e facilida<strong>de</strong>s encontradas<br />

pelo projetista na utilização <strong>de</strong> tais ferramentas.<br />

1. Introdução<br />

A criação e verificação <strong>de</strong> protocolos <strong>de</strong> segurança e algoritmos <strong>de</strong> autenticação é<br />

um problema <strong>de</strong>safiador. Com o avanço e socialização da Internet, incluindo a crescente<br />

alocação <strong>de</strong> dados e até <strong>de</strong> sistemas inteiros para o ambiente web, a correção dos mecanismos<br />

<strong>de</strong> segurança é um fator crítico. Em geral, um dos problemas para a verificação<br />

sistemas complexos, como sistemas concorrentes ou protocolos, por exemplo, está na<br />

dificulda<strong>de</strong> em especificá-los <strong>de</strong> maneira suficientemente completa.<br />

Protocolos <strong>de</strong> comunicação estão inseridos em diversas áreas do conhecimento,<br />

<strong>de</strong>s<strong>de</strong> linguística às engenharias. Um protocolo <strong>de</strong> comunicação <strong>de</strong>fine o formato e<br />

a or<strong>de</strong>m que são trocadas mensagens entre dois ou mais agentes, bem como as ações<br />

que são realizadas por quem envia e quem recebe a mensagem [Kurose and Ross 2008],<br />

on<strong>de</strong> os agentes são os participantes ativos <strong>de</strong> um processo. De forma mais geral, protocolos<br />

também po<strong>de</strong>m ser <strong>de</strong>finidos como uma forma <strong>de</strong> processamento distribuído<br />

baseado em troca <strong>de</strong> mensagens. Neste trabalho, consi<strong>de</strong>raremos somente os aspectos<br />

<strong>de</strong> comunicação, conforme [Dolev and Yao 1983], ou seja, aspectos criptográficos não<br />

serão consi<strong>de</strong>rados.<br />

O objetivo <strong>de</strong>ste artigo é mostrar as dificulda<strong>de</strong>s e facilida<strong>de</strong>s para especificar<br />

um protocolo, com o necessário <strong>de</strong>talhamento, em dois enfoques específicos: através <strong>de</strong><br />

combinações <strong>de</strong> lógicas modais e através <strong>de</strong> uma linguagem <strong>de</strong> especificação <strong>de</strong> processos<br />

distribuídos. O <strong>de</strong>talhamento <strong>de</strong> um protocolo exige, por exemplo, que se possa expressar<br />

na linguagem <strong>de</strong> especificação que <strong>de</strong>terminado agente A sabe (ou conhece) a chave<br />

320


pública do agente B. É também importante, como outro exemplo, que a linguagem <strong>de</strong><br />

especificação tenha meios para expressar os procedimentos <strong>de</strong> troca <strong>de</strong> mensagens: que<br />

se A envia uma mensagem cifrada para B, esta mensagem será em algum momento (futuro)<br />

recebida por B. É este nível <strong>de</strong> <strong>de</strong>talhamento, permitido ou não pela linguagem, que<br />

<strong>de</strong>sejamos analisar neste trabalho. Como estudo <strong>de</strong> caso, foi feita a especificação do protocolo<br />

<strong>de</strong> chaves públicas Needham-Schröe<strong>de</strong>r [Needham and Schröe<strong>de</strong>r 1978], <strong>de</strong>scrito<br />

na Seção 2, utilizando duas abordagens distintas.<br />

Na primeira abordagem é utilizada lógica modal, que é uma extensão da lógica<br />

clássica com alguns novos operadores. Nas lógicas aqui utilizadas, operadores temporais<br />

apreen<strong>de</strong>m os aspectos dinâmicos das trocas <strong>de</strong> mensagens; operadores epistêmicos <strong>de</strong>notam<br />

o conhecimento dos agentes envolvidos acerca dos aspectos da comunicação. Esta<br />

primeira formalização é apresentada resumidamente na Seção 3.<br />

A outra abordagem é baseada no uso <strong>de</strong> um verificador <strong>de</strong> mo<strong>de</strong>los. Como<br />

<strong>de</strong>finido em [Merz 2001], o termo verificação <strong>de</strong> mo<strong>de</strong>los correspon<strong>de</strong> a um coleção<br />

<strong>de</strong> técnicas para análise automática <strong>de</strong> sistemas reativos, ou seja, sistemas que recebem<br />

estímulos externos e realizam ações <strong>de</strong> acordo com estes. O SPIN [Ben-Ari 2008,<br />

Holzmann 2003] é um representante <strong>de</strong>ste grupo <strong>de</strong> ferramentas, possuindo uma linguagem<br />

específica para a <strong>de</strong>scrição dos mo<strong>de</strong>los, chamada PROMELA. Apresentamos<br />

a formalização do NSP na Seção 5.<br />

Observamos que este trabalho não visa <strong>de</strong>monstrar a incorreção do NSP, fato<br />

já <strong>de</strong>monstrado anteriormente [Lowe 1996]. Tão pouco visa apresentar mais uma<br />

formalização <strong>de</strong> tal protocolo, já vastamente estudado e <strong>de</strong>scrito em diferentes linguagens<br />

[NuSMV 2011, Burrows et al. 1990, SPIN 2011, Islam et al. 2006, Dixon et al. 2007,<br />

Samia et al. 2009]. Como já mencionado, o trabalho <strong>de</strong> especificação envolve o <strong>de</strong>talhamento<br />

dos aspectos <strong>de</strong> comunicação e nossa intenção é analisar características dos<br />

dois formalismos apontados que facilitem ou dificultem as tarefas <strong>de</strong> especificação e<br />

verificação. Esta análise, baseada no estudo <strong>de</strong> caso, é apresentada na Seção 7. Na Seção 8<br />

apresentamos nossas consi<strong>de</strong>rações finais.<br />

2. Protocolo <strong>de</strong> Chaves Públicas Needham-Schröe<strong>de</strong>r<br />

O protocolo <strong>de</strong> autenticação <strong>de</strong> chave pública <strong>de</strong>scrito em<br />

[Needham and Schröe<strong>de</strong>r 1978], conhecido pela sigla NSP, tem como finalida<strong>de</strong> estabelecer<br />

autenticação entre um agente A, que inicia o protocolo, e outro agente B. O<br />

protocolo completo consiste em sete mensagens: três que correspon<strong>de</strong>m ao estabelecimento<br />

da autenticação propriamente dita e quatro relativas à consulta ao servidor <strong>de</strong><br />

chaves públicas.<br />

A Tabela 1 apresenta esquematicamente as mensagens trocadas para a<br />

autenticação dos agentes envolvidos. A primeira coluna da tabela i<strong>de</strong>ntifica a mensagem;<br />

a segunda coluna apresenta o encaminhamento da mensagem; e a terceira coluna, seu<br />

conteúdo. Por exemplo, a primeira linha diz que a Mensagem 1, cujo conteúdo são as<br />

i<strong>de</strong>ntificações dos agentes A e B, é encaminhada pelo agente A ao servidor, S. Mensagens<br />

com o subscrito chave pub(Z) <strong>de</strong>notam que o conteúdo é cifrado com a chave<br />

pública do agente Z; analogamente, o subscrito chave priv(Z) <strong>de</strong>nota que o conteúdo é<br />

cifrado com a chave privada <strong>de</strong> Z.<br />

Ainda na Tabela 1, os nonces dos agentes são representados por N in<strong>de</strong>xado pelo<br />

321


Mensagem Direção Conteúdo<br />

Mensagem 1 A ⇒ S : {A, B}<br />

Mensagem 2 S ⇒ A : {chave pub B, B} chave priv S<br />

Mensagem 3 A ⇒ B : {N A , A} chave pub B<br />

Mensagem 4 B ⇒ S : {B, A}<br />

Mensagem 5 S ⇒ B : {chave pub A, A} chave priv S<br />

Mensagem 6 B ⇒ A : {N B , N A } chave pub A<br />

Mensagem 7 A ⇒ B : {N B } chave pub B<br />

Tabela 1. Mensagens do NSP<br />

agente a que pertence. Na Mensagem 3, por exemplo, N A representa o nonce do agente<br />

A. Nonce é uma abreviação para número usado somente uma vez, da tradução do inglês.<br />

Em geral, é um número aleatório/pseudoaleatório utilizado no processo <strong>de</strong> autenticação<br />

que visa assegurar que comunicações anteriormente estabelecidas entre dois agentes não<br />

sejam retomadas por um terceiro. Assim, o nonce é mais um elemento para tentar garantir<br />

a autenticida<strong>de</strong> <strong>de</strong>ntro do protocolo, baseando-se no fato <strong>de</strong> que a construção matemática<br />

<strong>de</strong>ste elemento dificulta a ocorrência <strong>de</strong> repetições <strong>de</strong>ntro <strong>de</strong> um pequeno espaço <strong>de</strong><br />

tempo.<br />

Os <strong>de</strong>talhes referentes a cada uma das mensagens trocadas no NSP, apresentadas<br />

na Tabela 1 po<strong>de</strong>m ser vistos em [Needham and Schröe<strong>de</strong>r 1978].<br />

3. Lógica Epistêmico-Temporal<br />

A especificação lógica <strong>de</strong> <strong>de</strong>terminado sistema computacional consiste na<br />

caracterização ou <strong>de</strong>scrição, a partir <strong>de</strong> um conjunto <strong>de</strong> fórmulas, das proprieda<strong>de</strong>s iniciais<br />

e do comportamento <strong>de</strong>ste sistema. Para a especificação do NSP, neste trabalho é<br />

utilizada uma combinação específica <strong>de</strong> duas lógicas modais, chamada lógica epistêmicotemporal,<br />

<strong>de</strong>notada por KL (n) [Fagin et al. 1995].<br />

A primeira componente correspon<strong>de</strong> a S5 (n) [Chellas 1980], que fornece mecanismos<br />

para falar sobre o conhecimento dos n agentes. Além dos operadores clássicos, em<br />

S5 (n) existe um conjunto <strong>de</strong> operadores modais K i , um para cada agente i. A fórmula,<br />

K i p representa o fato <strong>de</strong> que o agente i sabe p.<br />

A segunda componente é a lógica temporal linear, conhecida como PLTL (Propositional<br />

Linear Temporal Logic) [Pnueli 1977, Gabbay et al. 1980], que permite representar<br />

os aspectos dinâmicos <strong>de</strong> um sistema. O conjunto <strong>de</strong> operadores temporais utilizados<br />

nesta lógica são ♦ (alguma vez no futuro), (sempre no futuro), ✐ (no momento<br />

seguinte do futuro), U (até que) e W (a menos que ou até que fraco).<br />

A sintase <strong>de</strong> KL (n) é dada pela seguinte gramática:<br />

ϕ :: true | false | start | p ∈ P | ¬ϕ | ϕ∧ϕ | ϕ∨ϕ | ϕ ⇒ ϕ | K i ϕ | ✐ ϕ | ♦ϕ | ϕ U ϕ | ϕ W ϕ,<br />

on<strong>de</strong> P = {p, q, r, . . . , p 1 , q 1 , l 1 , . . .} é o conjunto enumerável <strong>de</strong> símbolos proposicionais<br />

e i ∈ A = {1, . . . , n}, um conjunto finito <strong>de</strong> agentes. Para caracterizar a semântica,<br />

apresentamos as seguintes <strong>de</strong>finições:<br />

Definição 1 Uma linha do tempo t é uma sequência discreta, infinitamente longa e linear<br />

<strong>de</strong> estado, os quais são in<strong>de</strong>xados por números naturais. Definimos T Linhas como o<br />

conjunto <strong>de</strong> todas as linhas do tempo.<br />

322


Definição 2 Um ponto q é um par q = (t, u), on<strong>de</strong> t ∈ T Linhas é uma linha do tempo<br />

e u ∈ N é um índice temporal para t. Definimos P ontos como o conjunto <strong>de</strong> todos os<br />

pontos.<br />

Definição 3 Uma valoração π é uma função π : P ontos × P −→ {true, false}<br />

Dadas estas <strong>de</strong>finições, po<strong>de</strong>mos agora caracterizar formalmente a noção <strong>de</strong> mo<strong>de</strong>lo<br />

para a lógica KL (n) :<br />

Definição 4 Um mo<strong>de</strong>lo é uma estrutura M = 〈T L, K 1 , . . . , K n , π〉 on<strong>de</strong>:<br />

• T L ⊆ T Linhas é um conjunto <strong>de</strong> linhas do tempo com uma linha distinta, t 0 ;<br />

• K i ⊆ P ontos × P ontos, para todo i ∈ A, é uma relação <strong>de</strong> equivalência sobre<br />

os pontos do mo<strong>de</strong>lo; e<br />

• π é uma valoração.<br />

A satisfação <strong>de</strong> uma fórmula é <strong>de</strong>finida em relação aos pontos <strong>de</strong> um mo<strong>de</strong>lo:<br />

Definição 5 A satisfação <strong>de</strong> uma fórmula em um <strong>de</strong>terminado ponto (t, u) <strong>de</strong> um mo<strong>de</strong>lo<br />

M = 〈T L, K 1 , . . . , K n , π〉 é dada por:<br />

• 〈M, (t, u)〉 |= true;<br />

• 〈M, (t, u)〉 false;<br />

• 〈M, (t, u)〉 |= start, se, e somente se, t = t 0 e u = 0;<br />

• 〈M, (t, u)〉 |= p sse π(t, u)(p) = true, on<strong>de</strong> p ∈ P;<br />

• 〈M, (t, u)〉 |= ¬ϕ sse 〈M, (t, u)〉 ϕ;<br />

• 〈M, (t, u)〉 |= (ϕ ∧ ψ) sse 〈M, (t, u)〉 |= ϕ e 〈M, (t, u)〉 |= ψ;<br />

• 〈M, (t, u)〉 |= (ϕ ∨ ψ) sse 〈M, (t, u)〉 |= ϕ ou 〈M, (t, u)〉 |= ψ;<br />

• 〈M, (t, u)〉 |= (ϕ ⇒ ψ) sse 〈M, (t, u)〉 |= ¬ϕ ou 〈M, (t, u)〉 |= ψ;<br />

• 〈M, (t, u)〉 |= ✐ ϕ sse 〈M, (t, u + 1)〉 |= ϕ;<br />

• 〈M, (t, u)〉 |= ♦ϕ sse ∃k, k ∈ N, k ≥ u, 〈M, (t, k)〉 |= ϕ;<br />

• 〈M, (t, u)〉 |= ϕ sse ∀k, k ∈ N, se k ≥ u, então 〈M, (t, k)〉 |= ϕ;<br />

• 〈M, (t, u)〉 |= ϕ U ψ sse ∃k, k ∈ N, k ≥ u, 〈M, (t, k)〉 |= ψ e ∀j, j ∈ N, se<br />

u ≤ j < k, então 〈M, (t, j)〉 |= ϕ;<br />

• 〈M, (t, u)〉 |= ϕ W ψ sse 〈M, (t, u)〉 |= ϕ U ψ ou 〈M, (t, u)〉 |= ϕ;<br />

• 〈M, (t, u)〉 |= K i ϕ sse ∀t ′ , u ′ , tal que (t, u)K i (t ′ , u ′ ), 〈M, (t ′ , u ′ )〉 |= ϕ.<br />

4. Especificação em Lógica<br />

A especificação do NSP em KL (n) foi baseada em [Dixon et al. 2007] com algumas<br />

modificações para o tratamento da comunicação com o servidor <strong>de</strong> chaves públicas.<br />

A lógica KL (n) é proposicional, mas para simplificar a <strong>de</strong>scrição, utilizamos predicados,<br />

quantificadores e igualda<strong>de</strong>s para caracterizar proprieda<strong>de</strong>s que se refiram aos<br />

conjuntos finitos <strong>de</strong> agentes, mensagens e chaves. Como estes conjuntos são finitos, a<br />

representação na lógica puramente proposicional é garantida: a cada predicado <strong>de</strong>vidamente<br />

instanciado correspon<strong>de</strong> uma única variável proposicional. Os predicados são os<br />

<strong>de</strong>scritos na Tabela 2, on<strong>de</strong> variáveis X e Y <strong>de</strong>notam agentes; N ou M, in<strong>de</strong>xadas ou<br />

não, <strong>de</strong>notam nonces e mensagens, respectivamente; K <strong>de</strong>nota uma chave; e V <strong>de</strong>nota<br />

um valor qualquer.<br />

A especificação consiste em quatro conjuntos <strong>de</strong> axiomas que <strong>de</strong>screvem as<br />

condições gerais acerca dos conteúdos das mensagens e chaves (Axiomas Globais); o<br />

323


1. send(X, M, K): o agente X envia a mensagem M cifrada com a chave K;<br />

2. recv(X, M, K): o agente X recebe a mensagem M cifrada com a chave K;<br />

3. Msg(M): M é uma mensagem;<br />

4. chave priv(X)echave pub(X):<br />

5. val chave pub(X, V ): o valor da chave pública X é V ;<br />

6. val nonce(N X , V ): o valor do nonce N X é V ;<br />

7. contem(M 1 , M 2 ): a mensagem M 2 está contida em M 1 .<br />

Tabela 2. Tabela <strong>de</strong> predicados<br />

conhecimento dos agentes (Axiomas <strong>de</strong> Conhecimento); a comunicação entre os agentes<br />

e a maneira que o conhecimento é modificado com o tempo (Axiomas <strong>de</strong> Comunicação);<br />

e as condições iniciais do conteúdo das mensagens, chaves e nomes para uma situação específica<br />

(Axiomas <strong>de</strong> Caso). Todos os axiomas apresentados estão no escopo do operador<br />

, uma vez que caracterizam condições que <strong>de</strong>vem ser mantidas durante todo o protocolo.<br />

Nos trechos <strong>de</strong> especificação aqui apresentados, omitiremos o operador temporal.<br />

Como o interesse <strong>de</strong>ste trabalho está centrado na comparação entre abordagens,<br />

apresentaremos apenas alguns dos axiomas globais e <strong>de</strong> conhecimento. O conjunto completo<br />

<strong>de</strong> axiomas po<strong>de</strong> ser visto em [Vieira 2011]. Três dos cinco axiomas globais são<br />

apresentados na Tabela 3. Estes axiomas caracterizam as condições do protocolo relativas<br />

aos conteúdos das mensagens e chaves. Na Tabela 4 apresentamos três dos seis axiomas<br />

relacionados ao conhecimento básico dos agentes envolvidos no protocolo. Estes serão<br />

os axiomas que utilizaremos na análise apresentada à Seção 7.<br />

1. ∀X, Chave, M 1<br />

(send(X, M 1 , Chave) ⇒ ¬contem(M 1 , val chave priv(X)))<br />

Nenhum agente irá revelar sua chave privada a outros agentes<br />

2. ∀X, Y, V<br />

((val chave pub(X, V ) ∧ val chave pub(Y, V )) ⇒ X = Y )<br />

Nenhum par <strong>de</strong> agentes possui chaves públicas idênticas<br />

3. ∀X, Chave, M 2<br />

(send(X, M 2 , Chave) ∧ ∃Y (contem(M 2 , N Y ) ⇒ (Chave = chave pub Y )))<br />

Mensagens contendo nonces, estão cifradas pela chave pública do <strong>de</strong>stinatário<br />

Tabela 3. Axiomas globais<br />

1. start ⇒<br />

∀X(¬K X val chave pub(A, a) ∧ ¬K X val chave pub(B, b) ∧ ¬K X val chave pub(C, c))<br />

Nenhum agente sabe as chaves públicas dos outros agentes no início do protocolo<br />

2. ∀X, N, V (K X val nonce(N, V ) ⇒ ❣ K X val nonce(N, V ))<br />

Os agentes não esquecem os nonces que já conhecem<br />

3. ∀XK X val chave priv(S, s)<br />

Todos os agentes sabem as chave privada do servidor S<br />

Tabela 4. Axiomas <strong>de</strong> conhecimento<br />

5. SPIN e PROMELA<br />

O SPIN é um verificador <strong>de</strong> processos assíncronos que explora, usando força<br />

bruta, todos os possíveis estados que <strong>de</strong>screvem um sistema. PROMELA é a linguagem<br />

para especificação <strong>de</strong> sistemas concorrentes utilizada pelo SPIN [Holzmann 2003].<br />

324


Dado um sistema especificado em PROMELA, o SPIN gera o código <strong>de</strong> um verificador.<br />

O verificador consiste basicamente <strong>de</strong> um autômato <strong>de</strong> Büchi, construído a<br />

partir da especificação, e procedimentos para verificação <strong>de</strong> proprieda<strong>de</strong>s fornecidas em<br />

PLTL. Estas proprieda<strong>de</strong>s são também transformadas em autômatos. A intersecção dos<br />

autômatos da especificação e das proprieda<strong>de</strong>s <strong>de</strong>termina a satisfação (ou não) <strong>de</strong>stas proprieda<strong>de</strong>s<br />

pelo sistema <strong>de</strong>scrito.<br />

A partir da verificação po<strong>de</strong>mos obter três tipos <strong>de</strong> resultados: a proprieda<strong>de</strong> po<strong>de</strong><br />

ser satisfeita no mo<strong>de</strong>lo; violada e, sendo assim, o SPIN irá fornecer o contraexemplo<br />

como prova <strong>de</strong>ssa violação; ou po<strong>de</strong> não haver memória suficiente para a verificação<br />

completa do mo<strong>de</strong>lo.<br />

6. Especificação com SPIN<br />

A especificação completa consiste em quatro processos principais: Alice, Bob,<br />

Eve e init [Vieira 2011]. O processo init é responsável pela inicialização dos outros<br />

processos. Aqui iremos <strong>de</strong>screver as estruturas utilizadas e mostrar dois trechos da<br />

especificação: do processo Alice (Figura 1) e do processo Bob (Figura 2).<br />

As variáveis usadas na especificação consistem em um conjunto <strong>de</strong> constantes<br />

simbólicas do tipo mtype que i<strong>de</strong>ntificam as mensagens do protocolo, chaves públicas<br />

dos agentes, i<strong>de</strong>ntificação dos agentes e os nonces. A estrutura Pkt, que correspon<strong>de</strong> ao<br />

conteúdo da mensagem cifrada, é composta por três constantes (key, content1 e content2).<br />

Na Figura 1 apresentamos o início da <strong>de</strong>scrição do processo Alice (no label MEN-<br />

SAGEM1) que escolhe, não-<strong>de</strong>terministicamente com quem irá se autenticar (linhas 3 e<br />

4). Em seguida, o processo envia pelo canal network1, que liga os agentes ao servidor <strong>de</strong><br />

chaves públicas, a sua i<strong>de</strong>ntificação e a <strong>de</strong> quem está solicitando a chave pública. Na linha<br />

7, o processo aguarda a resposta do servidor com o i<strong>de</strong>ntificador msg2, sua i<strong>de</strong>ntificação<br />

e os dados contendo a chave pública requisitada.<br />

A Figura 2 mostra um trecho do processo Bob. Inicialmente, o processo aguarda<br />

o recebimento da mensagem 3 do protocolo (linha 1). Uma vez que as variáveis msg3<br />

e agentB sejam instanciadas, o dados da variável data são extraídos (linhas 2 e 3). O<br />

operador -> é uma guarda, ou seja, os comandos apresentados à direita só serão executados<br />

caso o comando (ou expressão) à esquerda seja executável (satisfeita). Na linha<br />

4, o agente Bob requisita a chave pública <strong>de</strong> quem o enviou a mensagem e aguarda pela<br />

resposta (linha 5). Em seguida, se receber uma resposta do servidor, o protocolo é continuado<br />

passando à execução do código da MENSAGEM6; caso contrário, o processo passa<br />

a um estado inválido.<br />

1 MENSAGEM1:<br />

2 if<br />

3 :: partnerA = agentB; network1 ! agentA,agentB;<br />

4 :: partnerA = agentI; network1 ! agentA,agentI;<br />

5 fi;<br />

6<br />

7 network ? (msg2,agentA,data);<br />

Figura 1. Trecho do Processo Alice<br />

325


1 network ? (msg3, agentB, data) -><br />

2 partnerB = data.content1;<br />

3 pnonce = data.content2;<br />

4 network1 ! agentB,partnerB;<br />

5 network ? (msg5,agentB,data);<br />

6 if<br />

7 :: (data.key == keyS) -> pkey = data.content1;<br />

8 goto MENSAGEM6;<br />

9 :: else -> goto FAIL;<br />

10 fi;<br />

Figura 2. Trecho do Processo Bob<br />

7. Comparação das especificações<br />

Nesta seção será discutida a relação entre alguns trechos das duas especificações.<br />

O Axioma Global 2 da Tabela 3 <strong>de</strong>termina que “nenhum par <strong>de</strong> agentes possui chaves<br />

públicas idênticas”. Seu equivalente na especificação em PROMELA é dado pelas diferente<br />

<strong>de</strong>finições <strong>de</strong> chave no escopo do processo servidor, on<strong>de</strong> cada processo possui uma<br />

variável Keyi, on<strong>de</strong> i i<strong>de</strong>ntifica o processo (S, A, B ou I).<br />

O Axioma <strong>de</strong> Conhecimento 1 da Tabela 4 caracteriza a proprieda<strong>de</strong> <strong>de</strong> que “nenhum<br />

agente sabe as chaves públicas dos outros agentes no início do protocolo”. O código<br />

correspon<strong>de</strong>nte em PROMELA utiliza uma variável local mtype pkey, inicializada com<br />

o valor zero. O mesmo acontece para o Axioma <strong>de</strong> Conhecimento 2: no código em<br />

PROMELA é criada uma variável mtype pnonce para armazenar o valor do nonce durante<br />

toda execução.<br />

Ainda na Tabela 4, o Axioma <strong>de</strong> Conhecimento 3 especifica a proprieda<strong>de</strong> <strong>de</strong> que<br />

“todos os agentes sabem as chave privada do servidor S”. Em PROMELA, esta condição<br />

é assegurada com a utilização <strong>de</strong> uma variável global.<br />

Um dos Axiomas <strong>de</strong> Comunicação, que faz parte da formalização completa do<br />

protocolo, mas que não foi apresentado anteriormente, <strong>de</strong>termina que “se um agente receber<br />

uma mensagem, então existe um agente que em algum momento anterior a enviou”.<br />

A especificação <strong>de</strong>ste axioma é mostrada na Tabela 5, on<strong>de</strong> o operador modal significa<br />

“em algum momento do passado”.<br />

∀X, Chave, M 1 [recv(X, M 1 , Chave) ⇒ ∃Y send(Y, M 1 , Chave)]<br />

Tabela 5. Axioma <strong>de</strong> conhecimento<br />

Os comandos <strong>de</strong> envio e recebimento <strong>de</strong> mensagens via canais em PROMELA<br />

codificam esta proprieda<strong>de</strong>, já que uma mensagem só será recebida caso algum outro<br />

processo a tenha enviado; caso contrário o processo que aguarda o recebimento fica bloqueado<br />

naquele ponto da sua execução.<br />

Proprieda<strong>de</strong>s que especifiquem o conhecimento dos agentes durante cada etapa do<br />

processo po<strong>de</strong>m ser caracterizados somente usando a abordagem lógica. Por exemplo, a<br />

terceira e quarta mensagens do protocolo, dadas na Tabela 1, são:<br />

Mensagem 3: A ⇒ B : {N A , A} chave pub B<br />

Mensagem 4: B ⇒ S : {B, A}<br />

326


A partir <strong>de</strong>stas mensagens é possível inferir que “o agente B sabe que o agente A<br />

sabe sua chave pública”, ou seja, os agentes são capazes <strong>de</strong> raciocionar sobre o conhecimento<br />

dos outros agentes.<br />

8. Consi<strong>de</strong>rações Finais<br />

A principal vantagem existente na especificação do NSP a partir da abordagem<br />

lógica é o fato da linguagem possuir operadores que caracterizam explicitamente a noção<br />

<strong>de</strong> conhecimento e tempo, o que po<strong>de</strong> ser usado para tratar o raciocínio dos agentes.<br />

Dessa forma, fica mais fácil observar como o conhecimento é adquirido com o <strong>de</strong>correr<br />

das trocas <strong>de</strong> mensagens, além <strong>de</strong> permitir seu processo <strong>de</strong> verificação.<br />

A especificação em PROMELA tem como fator favorável a legibilida<strong>de</strong> e um nível<br />

<strong>de</strong> abstração mais alto <strong>de</strong>vido às proprieda<strong>de</strong>s da linguagem, como não-<strong>de</strong>terminismo<br />

e canais síncronos para troca <strong>de</strong> mensagens. Muitas proprieda<strong>de</strong>s, que necessitam ser<br />

especificadas como axiomas na linguagem lógica, são satisfeitas pelo mo<strong>de</strong>lo gerado a<br />

partir da especificação em PROMELA <strong>de</strong>vido à forma em que o algoritmo é implementado<br />

ou pelas características da linguagem. Apesar <strong>de</strong> ser mais natural e legível, esta não<br />

possui mecanismos para <strong>de</strong>screver o conhecimento dos processos e consequentemente a<br />

verificação <strong>de</strong>ste tipo <strong>de</strong> proprieda<strong>de</strong>.<br />

Apesar das duas abordagens serem a<strong>de</strong>quadas, ainda não há uma metodologia<br />

padrão para especificação e verificação <strong>de</strong> protocolos <strong>de</strong> comunicação. Seja qual for a<br />

ferramenta utilizada, a principal dificulda<strong>de</strong> é saber i<strong>de</strong>ntificar as peculiarida<strong>de</strong>s <strong>de</strong> cada<br />

sistema/protocolo para po<strong>de</strong>r escolher a melhor abordagem.<br />

Com os estudos realizados e o conhecimento adquirido com as duas metodologias,<br />

futuros trabalhos incluem a criação <strong>de</strong> um extensão epistêmica para o PROMELA<br />

fundamentada em programas baseados em conhecimento [Fagin et al. 1995] a partir da<br />

automatização da tradução da lógica epistêmica para a temporal ou proposicional, tornando<br />

explícito, na especificação, o conhecimento dos processos.<br />

Referências<br />

Ben-Ari, M. (2008). Principles of the SPIN Mo<strong>de</strong>l Checker. Springer.<br />

Burrows, M., Abadi, M., and Needham, R. (1990). A logic of authentication. ACM<br />

TRANSACTIONS ON COMPUTER SYSTEMS, 8:18–36.<br />

Chellas, B. F. (1980). Modal Logic: an introduction. Cambridge University Press.<br />

Dixon, C., Fernán<strong>de</strong>z-Gago, M.-C., Fisher, M., and van <strong>de</strong>r Hoek, W. (2007). Temporal<br />

logics of knowledge and their applications in security. Eletronic Notes in Theoretical<br />

Computer Science, 182:27–42.<br />

Dolev, D. and Yao, A. C. (1983). On the security of public key protocols. IEEE Transactions<br />

on Information Theory, 29(12):198–208.<br />

Fagin, R., Halpern, J. Y., Moses, Y., and Vardi, M. Y. (1995). Reasoning about Knowledge.<br />

MIT Press.<br />

Gabbay, D., Pnueli, A., Shelah, S., and Stavi, J. (1980). On the temporal analysis of<br />

fairness. In POPL ’80: Proceedings of the 7th ACM SIGPLAN-SIGACT Symposium on<br />

Principles of Programming Languages, pages 163–173, New York, NY, USA. ACM.<br />

327


Holzmann, G. (2003). The Spin mo<strong>de</strong>l checker: primer and reference manual. Addison-<br />

Wesley Professional.<br />

Islam, S. M. S., Sqalli, M. H., and Khan, S. (2006). Mo<strong>de</strong>ling and formal verification of<br />

DHCP using SPIN. IJCSA, 3(2):145–159.<br />

Kurose, J. F. and Ross, K. W. (2008). Computer Networking: A Top-Down Approach,<br />

chapter 1.1.3 What Is a Protocol. Addison-Wesley, fourth edition.<br />

Lowe, G. (1996). Breaking and fixing the Needham-Schröe<strong>de</strong>r public-key protocol using<br />

fdr. In TACAS, pages 147–166.<br />

Merz, S. (2001). Mo<strong>de</strong>l checking: A tutorial overview. In et al., F. C., editor, Mo<strong>de</strong>ling<br />

and Verification of Parallel Processes, volume 2067 of Lecture Notes in Computer<br />

Science, pages 3–38. Springer-Verlag, Berlin.<br />

Needham, R. M. and Schröe<strong>de</strong>r, M. D. (1978). Using encryption for authentication in<br />

large networks of computers. Commun. ACM, 21(12):993–999.<br />

NuSMV (2011). Nusmv: a new symbolic mo<strong>de</strong>l checker. http://nusmv.fbk.eu/.<br />

último acesso em maio <strong>de</strong> 2011.<br />

Pnueli, A. (1977). The temporal logic of programs. In 18th IEEE Symposium Foundations<br />

of Computer Science, pages 46–57, Provi<strong>de</strong>nce.<br />

Samia, M., Wiegard, H., Bendisposto, J., and Leuschel, M. (2009). High-Level versus<br />

Low-Level Specifications: Comparing B with Promela and ProB with Spin. In Attiogbe<br />

and Mery, editors, Proceedings TFM-B 2009. APCB.<br />

SPIN (2011). On-the-fly, ltl mo<strong>de</strong>l checking with spin. http://spinroot.com/<br />

spin/whatispin.html. último acesso em maio <strong>de</strong> 2011.<br />

Vieira, T. C. (2011). Especificação <strong>de</strong> proprieda<strong>de</strong>s temporais do protocolo <strong>de</strong> chavespúblicas<br />

needham-schröe<strong>de</strong>r. Trabalho <strong>de</strong> Conclusão <strong>de</strong> Curso.<br />

328


Uma Avaliação <strong>de</strong> Segurança no Gerenciamento <strong>de</strong><br />

Mobilida<strong>de</strong> nas Re<strong>de</strong>s em Malha sem Fio<br />

Larissa Barabasz, Michele Nogueira<br />

1 Núcleo <strong>de</strong> Re<strong>de</strong>s sem Fio e Re<strong>de</strong>s Avançadas (NR2)<br />

Departamento <strong>de</strong> Informática - Universida<strong>de</strong> Fe<strong>de</strong>ral do Paraná (UFPR)<br />

Caixa Postal 19.081 – 81.531-980 – Curitiba – PR – Brasil<br />

{ltb08,michele}@inf.ufpr.br<br />

Abstract. In wireless mesh networks, the support to mobility is one of their<br />

main advantages. Thus, it is necessary an efficient and secure mobility management.<br />

However, existing mobility management protocols are proposed without<br />

handling security vulnerabilities in mobility.This paper evaluates how security<br />

vulnerabilities can compromise the availability of mobility in wireless mesh<br />

networks. Hence, it presents an evaluation of the PGMID mobility protocol<br />

un<strong>de</strong>r attacks against mesh routers and the ARP protocol. These attacks aim<br />

at affecting the network mobility. Through this study, we aim to show how the<br />

absence of security mechanisms, that ensure availability and network access,<br />

influences negatively on network behavior.<br />

Resumo. Nas re<strong>de</strong>s em malha sem fio, o suporte à mobilida<strong>de</strong> é uma das suas<br />

principais vantagens. Assim, é primordial que o gerenciamento <strong>de</strong> mobilida<strong>de</strong><br />

seja eficiente e seguro. Entretanto, protocolos <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong><br />

existentes <strong>de</strong>sconsi<strong>de</strong>ram as vulnerabilida<strong>de</strong>s <strong>de</strong> segurança na mobilida<strong>de</strong>.Este<br />

artigo avalia como a mobilida<strong>de</strong> <strong>de</strong> uma re<strong>de</strong> em malha po<strong>de</strong> ser comprometida<br />

caso a segurança não seja consi<strong>de</strong>rada. Para isso, é apresentada a avaliação<br />

por meio <strong>de</strong> simulações do protocolo <strong>de</strong> mobilida<strong>de</strong> PGMID frente a ataques<br />

contra roteadores mesh e contra o protocolo ARP, que tenham por objetivo prejudicar<br />

a mobilida<strong>de</strong> na re<strong>de</strong>. Através do estudo, buscamos mostrar o quanto<br />

a ausência <strong>de</strong> mecanismos <strong>de</strong> segurança que garantam a disponibilida<strong>de</strong> e o<br />

acesso à re<strong>de</strong> influem negativamente no seu funcionamento.<br />

1. Introdução<br />

As re<strong>de</strong>s em malha sem fio, também conhecidas como re<strong>de</strong>s mesh (WMN - Wireless<br />

Mesh Networks), são uma das alternativas mais promissoras para a comunicação <strong>de</strong> dados<br />

sem fio. Essas re<strong>de</strong>s são compostas por roteadores e clientes mesh (nós), apoiadas<br />

por uma comunicação multissalto <strong>de</strong> topologias dinâmicas e com suporte à mobilida<strong>de</strong><br />

[Akyildiz et al. 2005]. O backbone <strong>de</strong>ssas re<strong>de</strong>s é formado por roteadores mesh, sendo<br />

a comunicação entre estes nós realizada unicamente via interface sem fio. Estes nós são<br />

constituídos <strong>de</strong> interfaces <strong>de</strong> diferentes tecnologias <strong>de</strong> comunicação e dotados <strong>de</strong> mobilida<strong>de</strong><br />

mínima, aten<strong>de</strong>ndo às requisições dos usuários (os clientes mesh). Alguns <strong>de</strong>stes roteadores<br />

possuem funcionalida<strong>de</strong>s <strong>de</strong> gateways e pontes, permitindo assim a interligação<br />

com outras re<strong>de</strong>s, tais como as re<strong>de</strong>s locais sem fio (WLAN) e a Internet.<br />

Ao contrário das re<strong>de</strong>s locais sem fio, a expansão <strong>de</strong> uma re<strong>de</strong> em malha não é<br />

um problema; a adição <strong>de</strong> nós ao backbone promove o aumento <strong>de</strong> pontos <strong>de</strong> acesso à<br />

329


e<strong>de</strong> e a capacida<strong>de</strong> <strong>de</strong> roteamento da mesma [Akyildiz et al. 2005]. Essa capacida<strong>de</strong> <strong>de</strong><br />

suportar o crescimento da re<strong>de</strong> é <strong>de</strong>nominada escalabida<strong>de</strong>. Além disso, essas re<strong>de</strong>s são<br />

autoconfiguráveis, ou seja, são capazes <strong>de</strong> se adaptar às alterações em sua topologia. A<br />

autoconfiguração faz com que essas re<strong>de</strong>s sejam resilientes e tolerantes a falhas. Essas<br />

vantagens, aliadas às características inerentes das re<strong>de</strong>s em malha, as tornam uma interessante<br />

solução para a comunicação <strong>de</strong> dados sem fio, suportando o uso crescente dos mais<br />

diversos dispositivos móveis, a convergência tecnológica e a mobilida<strong>de</strong>.<br />

Com o avanço das tecnologias sem fio e o fácil acesso a dispositivos portáteis,<br />

os usuários têm se tornado cada vez mais móveis, fazendo com que a mobilida<strong>de</strong> exerça<br />

gran<strong>de</strong> importância no meio sem fio. Para que a mobilida<strong>de</strong> seja possível, são necessários<br />

mecanismos <strong>de</strong> suporte à mobilida<strong>de</strong>, garantindo a disponibilida<strong>de</strong> dos serviços aos<br />

usuários que requerem acesso à Internet a partir <strong>de</strong> seus respectivos dispositivos móveis <strong>de</strong><br />

forma contínua sem restringir sua movimentação. O <strong>de</strong>safio em questão é garantir a transparência,<br />

ou seja, que todo o processo <strong>de</strong> mobilida<strong>de</strong> não seja perceptível às aplicações<br />

e, consequentemente, aos usuários. Para tal, se faz necessária a existência <strong>de</strong> um gerenciamento<br />

<strong>de</strong> mobilida<strong>de</strong> efetivo. Este, por sua vez, é constituído pelo gerenciamento <strong>de</strong><br />

localização e pelo gerenciamento <strong>de</strong> handoffs [Akyildiz et al. 1999].<br />

Nas re<strong>de</strong>s em malha sem fio, a segurança é um campo ainda pouco explorado,<br />

mas não menos importante. De forma geral, a privacida<strong>de</strong>, a disponibilida<strong>de</strong>, a justiça,<br />

o não-repúdio e o controle <strong>de</strong> acesso são requisitos <strong>de</strong> segurança que dizem respeito às<br />

re<strong>de</strong>s em malha [Egners and Meyer 2010]. Estes estão estritamente associados ao cenário<br />

<strong>de</strong> utilização e às características <strong>de</strong>ssas re<strong>de</strong>s, tais como o dinamismo e a heterogeneida<strong>de</strong><br />

<strong>de</strong> seus componentes. O dinamismo, ou seja, a mobilida<strong>de</strong> dos nós na re<strong>de</strong>, é suscetível a<br />

ameaças <strong>de</strong> segurança que visam comprometer a disponibilida<strong>de</strong>, prejudicando o ingresso<br />

e a manutenção <strong>de</strong> clientes mesh na re<strong>de</strong>. A disponibilida<strong>de</strong> po<strong>de</strong> ser afetada por ações<br />

que objetivem sobrecarregar a re<strong>de</strong> ou indisponibilizar as ativida<strong>de</strong>s dos roteadores mesh.<br />

Como as soluções <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong> existentes para as re<strong>de</strong>s locais<br />

sem fio não aten<strong>de</strong>m por completo aos requisitos das re<strong>de</strong>s em malha, se faz necessário o<br />

projeto <strong>de</strong> soluções específicas que consi<strong>de</strong>rem as diferenças entre estas re<strong>de</strong>s. O objetivo<br />

<strong>de</strong>ste artigo, por sua vez, é a avaliação e a análise <strong>de</strong> uma das soluções <strong>de</strong> gerenciamento<br />

<strong>de</strong> mobilida<strong>de</strong> sob a perspectiva <strong>de</strong> segurança, a fim <strong>de</strong> i<strong>de</strong>ntificar os pontos vulneráveis<br />

na mobilida<strong>de</strong>. O objeto <strong>de</strong> estudo foi apresentado em [Boukerche and Zhang 2008] e<br />

consiste <strong>de</strong> um protocolo <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong> intra-domínio baseado em roteamento<br />

híbrido. Uma das vantagens <strong>de</strong>sse protocolo é promover a integração entre as camadas<br />

<strong>de</strong> re<strong>de</strong> e <strong>de</strong> enlace para o encaminhamento <strong>de</strong> pacotes, sendo relevante para nossa<br />

análise por aten<strong>de</strong>r aos requisitos <strong>de</strong> mobilida<strong>de</strong> <strong>de</strong> forma eficiente. O protocolo possui<br />

ainda características importantes para o gerenciamento <strong>de</strong> mobilida<strong>de</strong> como a ausência <strong>de</strong><br />

atualização <strong>de</strong> localização e <strong>de</strong> re-roteamento, garantindo assim handoffs transparentes.<br />

O artigo está organizado da seguinte forma. A Seção 2 apresenta os trabalhos relacionados<br />

ao gerenciamento <strong>de</strong> mobilida<strong>de</strong> e às arquiteturas <strong>de</strong> segurança nas re<strong>de</strong>s em<br />

malha sem fio. A seção 3 <strong>de</strong>talha o funcionamento do protocolo avaliado. A Seção 4<br />

<strong>de</strong>screve as vulnerabilida<strong>de</strong>s <strong>de</strong> segurança em re<strong>de</strong>s em malha. A seção 5 <strong>de</strong>screve o ambiente<br />

<strong>de</strong> avaliação e os resultados da avaliação <strong>de</strong>ste protocolo diante dos ataques sobre<br />

os roteadores mesh e sobre o protocolo ARP (Address Resolution Protocol). Finalmente,<br />

a Seção 6 apresenta as conclusões e as direções para trabalhos futuros.<br />

330


2. Trabalhos Relacionados<br />

O gerenciamento <strong>de</strong> en<strong>de</strong>reços, uma das questões <strong>de</strong> projeto do gerenciamento <strong>de</strong><br />

localização, tem por finalida<strong>de</strong> permitir a i<strong>de</strong>ntificação <strong>de</strong> um nó móvel na re<strong>de</strong> durante<br />

a sua movimentação. Nas re<strong>de</strong>s em malha sem fio, essa i<strong>de</strong>ntificação <strong>de</strong>ve ocorrer tanto<br />

interna quanto externamente, ou seja, no backbone mesh e no domínio da Internet. A<br />

inalteração do en<strong>de</strong>reço IP <strong>de</strong> um cliente mesh, permite que, após a ocorrência <strong>de</strong> handoffs,<br />

as comunicações UDP e TCP <strong>de</strong>ste nó sejam mantidas. Os protocolos como Mobile<br />

IP e iMesh [Xie and Wang 2008], por sua vez, são soluções que permitem ao cliente a<br />

manutenção do seu en<strong>de</strong>reço IP sem restrições <strong>de</strong> mobilida<strong>de</strong>.<br />

A mobilida<strong>de</strong> e o roteamento são tratados in<strong>de</strong>pen<strong>de</strong>ntemente nos mecanismos <strong>de</strong><br />

gerenciamento <strong>de</strong> mobilida<strong>de</strong> [Xie and Wang 2008]. Essa abordagem clássica po<strong>de</strong> levar<br />

a tarefas <strong>de</strong> processamento <strong>de</strong>snecessárias e a redundâncias <strong>de</strong> funções. Essas questões<br />

po<strong>de</strong>riam ser evitadas caso a mobilida<strong>de</strong> e o roteamento se complementassem, ou seja,<br />

caso existisse uma abordagem conjunta entre ambos. Uma abordagem nesta direção foi<br />

<strong>de</strong>senvolvida no protocolo Mobile Party [Mehdi et al. 2007], cuja solução faz uso <strong>de</strong> uma<br />

estrutura <strong>de</strong> árvore <strong>de</strong> en<strong>de</strong>reços para lidar com a mobilida<strong>de</strong> e o roteamento.<br />

Soluções <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong> que tratam <strong>de</strong> questões <strong>de</strong> segurança<br />

não são conhecidas. Em geral, para suprir as necessida<strong>de</strong>s <strong>de</strong> segurança em protocolos<br />

<strong>de</strong> gerência <strong>de</strong> mobilida<strong>de</strong>, uma arquitetura <strong>de</strong> segurança <strong>de</strong>ve ser adotada. Entretanto,<br />

as arquiteturas <strong>de</strong> segurança propostas não são direcionadas particularmente<br />

a protocolos <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong>. Assim sendo, essas soluções <strong>de</strong>sconsi<strong>de</strong>ram<br />

as especificida<strong>de</strong>s dos protocolos com os quais estão trabalhando. MobiSEC<br />

[Martignon et al. 2008] é uma <strong>de</strong>ntre as arquiteturas <strong>de</strong> segurança propostas. Essa arquitetura<br />

provê um arcabouço completo para lidar com as questões <strong>de</strong> segurança relativas ao<br />

backbone e ao acesso à re<strong>de</strong>s em malha. Esta arquitetura, por sua vez, se enquadra como<br />

uma solução <strong>de</strong> segurança genérica.<br />

A questão mobilida<strong>de</strong> versus segurança nos protocolos <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong><br />

ainda tem muito a ser explorada. Neste artigo, a avaliação da segurança em um<br />

protocolo <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong> busca fornecer um panorama geral <strong>de</strong> como a<br />

ausência <strong>de</strong> mecanismos <strong>de</strong> segurança po<strong>de</strong> ainda influenciar na mobilida<strong>de</strong> da re<strong>de</strong>.<br />

3. Protocolo <strong>de</strong> Gerenciamento <strong>de</strong> Mobilida<strong>de</strong><br />

Nesta seção, é <strong>de</strong>scrito o funcionamento do protocolo <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong> em<br />

estudo, o qual será referenciado por PGMID (Protocolo <strong>de</strong> Gerenciamento <strong>de</strong> Mobilida<strong>de</strong><br />

Intra-Domínio) [Boukerche and Zhang 2008]. A solução proposta por este protocolo é<br />

<strong>de</strong>stinada a aten<strong>de</strong>r os requisitos que garantam a intra-mobilida<strong>de</strong> nas re<strong>de</strong>s em malha sem<br />

fio infraestruturadas, provendo handoffs transparentes para aplicações em tempo real, tais<br />

como aplicações <strong>de</strong> voz e ví<strong>de</strong>o. Aos clientes mesh é permitido o acesso à re<strong>de</strong> através da<br />

associação com os roteadores mesh, processo que será <strong>de</strong>scrito mais adiante nesta seção.<br />

3.1. Associação <strong>de</strong> um Cliente à Re<strong>de</strong><br />

A Figura 1 ilustra o processo <strong>de</strong> chegada <strong>de</strong> um cliente à re<strong>de</strong> e o processo envolvido na<br />

comunicação entre clientes mesh no mesmo domínio. Para exemplificação, nosso cenário<br />

é composto por apenas quatro roteadores mesh (nós escuros) e um par <strong>de</strong> clientes mesh<br />

(nós claros). Na chegada <strong>de</strong> um cliente mesh (nó A) à re<strong>de</strong>, ilustrado na Figura 1(a), este<br />

331


<strong>de</strong>ve primeiramente escolher um roteador para associação, o qual irá lhe proporcionar o<br />

acesso <strong>de</strong>sejado à re<strong>de</strong>. Com o intuito <strong>de</strong> auxiliar a escolha <strong>de</strong>ste roteador, mensagens<br />

<strong>de</strong> sondagem são geradas pelo cliente A. Essas mensagens são transmitidas em broadcast<br />

procurando obter respostas por parte dos roteadores para a avaliação <strong>de</strong> seus enlaces. Na<br />

Figura 1(b), respostas (representadas pelas flechas) são geradas pelos dois roteadores cujo<br />

raio <strong>de</strong> alcance cobre o cliente A. Suponha que o roteador A’ é o que apresenta o enlace<br />

<strong>de</strong> melhor qualida<strong>de</strong>, ou seja, o enlace com menor atraso <strong>de</strong> resposta. Assim, o cliente<br />

toma-o como possível roteador para associação.<br />

(a) (b) (c)<br />

Figura 1. Processo <strong>de</strong> associação <strong>de</strong> um cliente mesh à re<strong>de</strong><br />

O processo <strong>de</strong> associação entre um cliente e um roteador é ilustrado na Figura<br />

1(b). Este processo é concretizado através da troca <strong>de</strong> duas mensagens, uma requisição<br />

<strong>de</strong> associação ao roteador mesh escolhido (flecha escura), e sua respectiva resposta (flecha<br />

clara). Ao receber a requisição proveniente do nó A, o roteador A’ armazena duas<br />

informações referentes a este cliente em uma tabela: o en<strong>de</strong>reço IP (obtido através do<br />

servidor DHCP) e o en<strong>de</strong>reço MAC. Enquanto este roteador for o ponto <strong>de</strong> acesso do cliente<br />

à re<strong>de</strong>, esta entrada será mantida na tabela. O en<strong>de</strong>reço IP obtido, juntamente com os<br />

en<strong>de</strong>reços MAC do gateway e do próprio roteador A’, constituem a mensagem <strong>de</strong> resposta<br />

ao cliente, possibilitando, finalmente, seu acesso à re<strong>de</strong>.<br />

3.2. Comunicação Intra-Domínio entre Clientes<br />

Assumindo que o cliente B está <strong>de</strong>vidamente conectado à re<strong>de</strong> através do processo <strong>de</strong><br />

associação <strong>de</strong>scrito na seção 3.1, a Figura 1(c) ilustra o início do processo <strong>de</strong> comunicação<br />

<strong>de</strong> A para B, on<strong>de</strong> A’ e B’ atuam, respectivamente, como pontos <strong>de</strong> acesso <strong>de</strong>sses nós à<br />

re<strong>de</strong>. Em um primeiro momento, o cliente A <strong>de</strong>sconhece o en<strong>de</strong>reço físico do cliente B. A<br />

fim <strong>de</strong> obter este en<strong>de</strong>reço, requisições ARP são enviadas aos roteadores por toda a re<strong>de</strong>,<br />

como mostra a Figura 1(c). O roteador B’, ao receber essa requisição ARP (flecha escura),<br />

irá verificar que o cliente B, nó cujo en<strong>de</strong>reço MAC é procurado, consta em sua tabela<br />

<strong>de</strong> clientes associados. Assim, este roteador é o encarregado <strong>de</strong> respon<strong>de</strong>r a requisição<br />

ARP (flecha clara), na qual informa que o en<strong>de</strong>reço requisitado é o seu próprio en<strong>de</strong>reço<br />

físico. O cliente A, ao receber a resposta, possui todas as informações necessárias para o<br />

preenchimento dos campos <strong>de</strong> en<strong>de</strong>reços do cabeçalho MAC, os en<strong>de</strong>reços 1 (receptor), 2<br />

(transmissor), 3 (<strong>de</strong>stino) e 4 (origem). Para que esses campos sejam interpretados <strong>de</strong> tal<br />

forma, assume-se ToDS = 1 e FromDS = 1 no cabeçalho MAC. O preenchimento <strong>de</strong>sses<br />

campos e o encaminhamento dos pacotes originados por A são ilustrados na Figura 2(a).<br />

Quando os pacotes gerados pelo cliente A são recebidos pelo roteador A’, este se<br />

torna responsável pelo seu encaminhamento. Para isso, toma por base sua tabela <strong>de</strong> roteamento.<br />

No nosso exemplo, o próximo salto <strong>de</strong>finido na tabela <strong>de</strong> roteamento é o roteador<br />

B’. O cabeçalho MAC dos pacotes que serão encaminhados por A’ com <strong>de</strong>stino à B’ são<br />

332


(a) (b) (c)<br />

Figura 2. Comunicação entre clientes mesh no mesmo domínio<br />

<strong>de</strong>finidos na Figura 2(b). Quando o pacote atingir seu <strong>de</strong>stino (roteador B’), este será<br />

responsável por <strong>de</strong>scobrir qual é o en<strong>de</strong>reço IP do cliente mesh a que se <strong>de</strong>stina o pacote.<br />

Conhecendo esse en<strong>de</strong>reço, o roteador B’ <strong>de</strong>termina o en<strong>de</strong>reço MAC correspon<strong>de</strong>nte ao<br />

cliente mesh <strong>de</strong>stino com o auxílio da tabela <strong>de</strong> clientes associados. O roteador B’ dá<br />

início ao roteamento na camada <strong>de</strong> re<strong>de</strong>, e finalmente encaminha os pacotes ao cliente B,<br />

processo o qual é representado na Figura 2(c).<br />

3.3. Processo <strong>de</strong> Ativação <strong>de</strong> Handoffs<br />

Caso um cliente esteja sob movimentação, este po<strong>de</strong> mudar seu ponto <strong>de</strong> acesso à re<strong>de</strong>,<br />

ou seja, se associar a um novo roteador mesh, abandonando assim a conexão antiga. Essa<br />

troca <strong>de</strong> pontos <strong>de</strong> acesso à re<strong>de</strong> por parte dos clientes caracterizam os handoffs, que,<br />

por sua vez, são recorrentes da mobilida<strong>de</strong> na re<strong>de</strong> e do fato dos roteadores mesh serem<br />

limitados ao alcance <strong>de</strong> suas antenas. Para contextualizar a ativação <strong>de</strong> handoffs, usaremos<br />

como base a Figura 3, na qual é <strong>de</strong>scrito todo o processo resultante <strong>de</strong>ssa ativação. O<br />

cenário <strong>de</strong> exemplo é o mesmo especificado para a Figura 1.<br />

(a) (b) (c) (d)<br />

Figura 3. Handoffs durante a comunicação entre nós no mesmo domínio<br />

Inicialmente, o cliente B mantém-se associado ao roteador B’, recebendo os pacotes<br />

gerados pelo cliente A e realizando verificações periódicas da qualida<strong>de</strong> do enlace<br />

com este roteador. Num certo momento, o cliente B começa a se movimentar, como indicado<br />

na Figura 3(a). Conforme B se afasta do seu ponto <strong>de</strong> acesso original, a qualida<strong>de</strong><br />

<strong>de</strong>sse enlace ten<strong>de</strong> a diminuir gradativamente. Quando o atraso <strong>de</strong> resposta ultrapassa o<br />

limite máximo estipulado no protocolo, o processo <strong>de</strong> handoff inicia.<br />

Mensagens <strong>de</strong> sondagem serão transmitidas, em broadcast, com o propósito <strong>de</strong><br />

<strong>de</strong>terminar outro ponto <strong>de</strong> acesso para o cliente B. No exemplo em questão, supõe-se que<br />

o enlace <strong>de</strong> melhor qualida<strong>de</strong> <strong>de</strong>tectado seja o do roteador B”. Para uma nova associação,<br />

duas trocas <strong>de</strong> mensagens são necessárias entre o cliente B e o roteador B”, conforme<br />

indicado na Figura 3(b). A primeira é uma mensagem <strong>de</strong> reassociação (representada pela<br />

flecha escura) e a segunda é a resposta que confirma essa associação (flecha clara).<br />

333


Ao receber a confirmação do roteador B”, o cliente B <strong>de</strong>ve informar aos <strong>de</strong>mais<br />

clientes na re<strong>de</strong> seu novo en<strong>de</strong>reço MAC e enviar uma mensagem <strong>de</strong> <strong>de</strong>sassociação ao<br />

roteador B’, na qual <strong>de</strong>ve informar o en<strong>de</strong>reço MAC do seu novo ponto <strong>de</strong> acesso. Esse<br />

processo é representado na Figura 3(c), on<strong>de</strong> as mensagens <strong>de</strong> anunciação <strong>de</strong> en<strong>de</strong>reço<br />

MAC são representadas pelas flechas claras, e a mensagem <strong>de</strong> <strong>de</strong>sassociação é representada<br />

pela flecha escura. Quando o cliente A tomar conhecimento do novo en<strong>de</strong>reço MAC<br />

<strong>de</strong> B, os pacotes serão <strong>de</strong>stinados a B”. No nosso exemplo, a tabela <strong>de</strong> roteamento <strong>de</strong> A’<br />

indica uma rota alternativa para o roteador B”. O roteador B’, conhecendo o novo ponto<br />

<strong>de</strong> acesso do cliente B à re<strong>de</strong>, é capaz <strong>de</strong> redirecionar os pacotes, que originalmente o<br />

tinham por <strong>de</strong>stino, para esse novo ponto. Esse processo é representado na Figura 3(d),<br />

on<strong>de</strong> os pacotes referentes a esse encaminhamento são representados pela linha tracejada<br />

em cor cinza.<br />

4. Vulnerabilida<strong>de</strong>s <strong>de</strong> Segurança no Gerenciamento <strong>de</strong> Mobilida<strong>de</strong><br />

No processo <strong>de</strong> mobilida<strong>de</strong> do PGMID, duas observações sobre segurança po<strong>de</strong>m ser<br />

feitas. Primeiro, não há controle no acesso à re<strong>de</strong>. Quando um cliente <strong>de</strong>seja se associar<br />

ou trocar seu ponto <strong>de</strong> acesso à re<strong>de</strong>, nenhum processo envolvendo autenticação e<br />

autorização é realizado. A única informação fornecida pelo cliente ao roteador mesh são<br />

seus respectivos en<strong>de</strong>reços MAC e IP. Em segundo, o correto funcionamento <strong>de</strong>sse protocolo<br />

parte do princípio <strong>de</strong> que todos os nós na re<strong>de</strong> são cooperativos. Presume-se que<br />

nenhum nó tenha propósitos maliciosos, seja modificando cabeçalhos com informações<br />

in<strong>de</strong>vidas ou injetando mensagens maliciosas na re<strong>de</strong>. Por não consi<strong>de</strong>rar nenhum requisito<br />

<strong>de</strong> segurança em sua solução, a vulnerabilida<strong>de</strong> da re<strong>de</strong> se torna evi<strong>de</strong>nte, tornando<br />

propícia a ação <strong>de</strong> nós maliciosos.<br />

Os ataques nas re<strong>de</strong>s em malha sem fio po<strong>de</strong>m ser <strong>de</strong> natureza externa ou interna.<br />

Os ataques <strong>de</strong> natureza externa são gerados <strong>de</strong> fora da re<strong>de</strong>, enquanto os ataques<br />

<strong>de</strong> natureza interna partem <strong>de</strong> <strong>de</strong>ntro da re<strong>de</strong> e, por isto, são <strong>de</strong> mais difícil prevenção<br />

[Aguiar et al. 2008]. Nosso interesse está nos ataques internos direcionados ao backbone<br />

da re<strong>de</strong>, os quais possam representar ameaças à mobilida<strong>de</strong> dos clientes mesh. Com este<br />

propósito, dois ataques são investigados neste artigo, os quais chamaremos <strong>de</strong> ataque<br />

contra ARP e <strong>de</strong> ataque contra RM (roteador mesh). Estes são <strong>de</strong>scritos como segue.<br />

4.1. Ataque contra RM<br />

O ataque contra RM tem como objetivo indisponibilizar o acesso a <strong>de</strong>terminadas partes<br />

da re<strong>de</strong>. Isto é possível com ataques direcionados aos roteadores mesh, a fim <strong>de</strong> sobrecarregá-los.<br />

Esse ataque é consi<strong>de</strong>rado um ataque <strong>de</strong> Negação <strong>de</strong> Serviço (DoS - Denial of<br />

Service), pois faz com que os roteadores, em um dado momento, não aceitem requisições<br />

<strong>de</strong> associação dos clientes.<br />

A estratégia do atacante é o envio contínuo <strong>de</strong> mensagens <strong>de</strong> requisições <strong>de</strong><br />

associação utilizando falsos en<strong>de</strong>reços IP <strong>de</strong> origem aos roteadores. Como ao receber<br />

uma requisição o roteador não verifica a legitimida<strong>de</strong> <strong>de</strong> sua origem, todas as requisições<br />

falsas serão aceitas. Pelos recursos dos roteadores serem finitos e estes aten<strong>de</strong>rem a falsos<br />

clientes, requisições válidas serão ignoradas. Mesmo que verificações periódicas nos<br />

roteadores permitam a <strong>de</strong>tecção <strong>de</strong> clientes que não estejam utilizando os recursos a ele<br />

alocados, a velocida<strong>de</strong> com que um atacante gera as mensagens é suficientemente alta<br />

para indisponibilizá-los por certos períodos <strong>de</strong> tempo.<br />

334


4.2. Ataque contra ARP<br />

O objetivo do ataque contra ARP é sobrecarregar o tráfego na re<strong>de</strong>. Para isso, toma-se<br />

como referência o fato <strong>de</strong> que se um cliente acusa não possuir o en<strong>de</strong>reço MAC do cliente<br />

ao qual <strong>de</strong>seja enviar pacotes, a obtenção do mesmo ocorre com o envio <strong>de</strong> requisições<br />

ARP, que, por sua vez, são propagadas por todo o backbone da re<strong>de</strong>. O tráfego ARP é<br />

naturalmente elevado nesse protocolo, e, <strong>de</strong>pen<strong>de</strong>ndo da quantida<strong>de</strong> <strong>de</strong> nós no backbone,<br />

po<strong>de</strong> vir a ser um problema, uma vez que mesmo com apenas um roteador respon<strong>de</strong>ndo à<br />

requisição, todos os roteadores tomam conhecimento da mesma e promovem seu reencaminhamento.<br />

Devido ao fato <strong>de</strong> requisições ARP se propagarem por toda a re<strong>de</strong>, o ataque<br />

contra ARP se aproveita <strong>de</strong>sta característica para elevar o tráfego na re<strong>de</strong>.<br />

Neste tipo <strong>de</strong> ataque, o atacante <strong>de</strong>ve manter uma conexão com um cliente qualquer<br />

na re<strong>de</strong>, sendo este responsável por gerar o tráfego malicioso. A estratégia adotada<br />

pelo atacante para realizar este ataque é restaurar constantemente sua tabela ARP ao estado<br />

inicial, fazendo com que faltas do en<strong>de</strong>reço MAC do <strong>de</strong>stino sejam acusadas. Vale<br />

notar que o sobrecarregamento do tráfego não é causado por pacotes sem fundamento; as<br />

requisições são necessárias, porém, a ação maliciosa está em torná-las frequentes, comprometendo<br />

o tráfego da re<strong>de</strong> em geral.<br />

5. Avaliação<br />

Nesta seção, é apresentada a avaliação do protocolo PGMID sob ataques contra RM e<br />

ARP. O objetivo da análise consiste em medir o impacto <strong>de</strong>stes ataques em uma re<strong>de</strong> em<br />

malha utilizando o protocolo PGMID. A seção 5.1 <strong>de</strong>screve em <strong>de</strong>talhes o ambiente <strong>de</strong><br />

simulação, e a seção 5.2, por sua vez, apresenta os resultados das simulações.<br />

5.1. Ambiente <strong>de</strong> Simulação<br />

Para avaliar o <strong>de</strong>sempenho do protocolo PGMID, foi utilizado o simulador NS-2.34. A<br />

implementação do PGMID consi<strong>de</strong>ra que mensagens <strong>de</strong> sondagem são enviadas a cada<br />

2 s, o atraso máximo <strong>de</strong> resposta é <strong>de</strong> 10 ms e o número máximo <strong>de</strong> saltos das mensagens<br />

ARP é equivalente a 7. Como protocolo <strong>de</strong> roteamento híbrido adotou-se o protocolo<br />

Hybrid Routing Mesh Protocol (HWMP) [Boukerche and Zhang 2008] em modo reativo.<br />

A topologia da re<strong>de</strong> consiste <strong>de</strong> vinte roteadores mesh com raio <strong>de</strong> alcance <strong>de</strong><br />

250m, os quais são distribuídos uniformemente em gra<strong>de</strong> ao longo <strong>de</strong> uma área <strong>de</strong><br />

1300x1100m. O mo<strong>de</strong>lo <strong>de</strong> mobilida<strong>de</strong> Random Waypoint foi o adotado para promover<br />

a movimentação dos clientes mesh, os quais se movimentam com velocida<strong>de</strong> <strong>de</strong> até<br />

5m/s. O tráfego na re<strong>de</strong> é <strong>de</strong>finido com o auxílio do gerador <strong>de</strong> tráfego cbrgen, e consiste<br />

em fluxos <strong>de</strong> pacotes CBR <strong>de</strong> 521 bytes enviados a cada 20ms, sendo o número<br />

máximo <strong>de</strong> conexões correspon<strong>de</strong>nte ao número <strong>de</strong> clientes na simulação. Para todas<br />

as simulações foram garantidas pelo menos uma comunicação entre um cliente atacante<br />

e um não-atacante, e para cada comunicação <strong>de</strong>ssas, uma entre clientes não-atacantes é<br />

estabelecida. Para as simulações com ataque, a quantida<strong>de</strong> <strong>de</strong> atacantes <strong>de</strong>finida correspon<strong>de</strong><br />

a 10% do total <strong>de</strong> clientes da simulação, e suas ações maliciosas são <strong>de</strong>senca<strong>de</strong>adas<br />

a cada 10ms. Grupos <strong>de</strong> 4, 6 e 12 clientes foram consi<strong>de</strong>rados na avaliação.<br />

Três tipos <strong>de</strong> cenários foram analisados para cada grupo <strong>de</strong> 4, 6 e 12 clientes, os<br />

cenários com ataque contra ARP, os com ataque contra RM e os sem ataque. Para<br />

cada tipo <strong>de</strong> cenário foram realizadas 33 simulações, a fim <strong>de</strong> possibilitar o cálculo do<br />

335


intervalo <strong>de</strong> confiança <strong>de</strong> 95%. A taxa <strong>de</strong> entrega, o número <strong>de</strong> handoffs e a latência <strong>de</strong><br />

entrega dos pacotes UDP e dos handoffs são métricas utilizadas para quantificar o impacto<br />

que os ataques causam à re<strong>de</strong>. A latência dos handoffs consiste no tempo <strong>de</strong> reassociação<br />

com um novo roteador na camada <strong>de</strong> enlace.<br />

5.2. Resultados<br />

O gráfico da Figura 4(a) apresenta um comparativo da taxa <strong>de</strong> entrega dos três tipos <strong>de</strong><br />

simulações realizadas. Como po<strong>de</strong> ser observado, in<strong>de</strong>pen<strong>de</strong>nte da quantida<strong>de</strong> <strong>de</strong> clientes<br />

na re<strong>de</strong>, a taxa <strong>de</strong> entrega apresenta quedas consi<strong>de</strong>ráveis quando a re<strong>de</strong> está sob ataque,<br />

sendo essa queda <strong>de</strong> até 35%, nas simulações envolvendo 4 clientes. Já a latência <strong>de</strong><br />

entrega, representada na Figura 4(b), observa-se um aumento nas simulações envolvendo<br />

4 e 6 clientes diante <strong>de</strong> ataques contra RM ou ARP. Entretanto, para 12 clientes, os três<br />

tipos <strong>de</strong> cenários resultam em valores <strong>de</strong> latência muito mais elevados in<strong>de</strong>pen<strong>de</strong>nte da<br />

presença ou não <strong>de</strong> ataques na re<strong>de</strong>.<br />

(a)<br />

(b)<br />

Figura 4. Taxa <strong>de</strong> entrega e latência <strong>de</strong> pacotes UDP<br />

Os handoffs foram avaliados <strong>de</strong> acordo com seu número <strong>de</strong> ocorrências e com<br />

sua latência na camada <strong>de</strong> enlace. De acordo com o gráfico da Figura 5(a), o objetivo<br />

do ataque contra RM é atingido. Como aponta o gráfico, para cenários com 4 clientes,<br />

o número <strong>de</strong> handoffs sofre uma queda <strong>de</strong> aproximadamente 50% quando comparado a<br />

outros cenários. Já quanto à latência dos handoffs, os resultados obtidos são apresentados<br />

no gráfico da Figura 5(b). Com a queda da quantida<strong>de</strong> <strong>de</strong> handoffs, consequentemente há<br />

uma diminuição da quantida<strong>de</strong> <strong>de</strong> mensagens <strong>de</strong>stinadas ao processo <strong>de</strong> handoff. Tal fator<br />

implica na sua menor latência verificada para cenários com 4 e 6 clientes.<br />

(a)<br />

(b)<br />

Figura 5. Quantida<strong>de</strong> e latência <strong>de</strong> handoffs<br />

336


Para quaisquer cenários envolvendo uma quantida<strong>de</strong> <strong>de</strong> clientes superior a 4,<br />

observa-se que a eficiência do protocolo diminui gradativamente conforme esse número<br />

aumenta. O elevado número <strong>de</strong> handoffs, combinado a uma quantida<strong>de</strong> maior <strong>de</strong><br />

requisições ARP trafegando pela re<strong>de</strong>, resultam em um ambiente com um alto overhead<br />

<strong>de</strong> mensagens. Estas mensagens, por sua vez, são resultantes do próprio processo responsável<br />

por garantir a mobilida<strong>de</strong>. Assim, ao consi<strong>de</strong>rar uma situação on<strong>de</strong> um protocolo<br />

<strong>de</strong> mobilida<strong>de</strong> <strong>de</strong>ve lidar com um número <strong>de</strong> clientes muito superior a 4, alterações<br />

no PGMID são necessárias para que a adoção <strong>de</strong>ste protocolo como solução <strong>de</strong> mobilida<strong>de</strong><br />

se torne viável.<br />

5.3. Discussão<br />

Sob ataque contra ARP, o aumento da frequência com que as requisições ARP são geradas<br />

na re<strong>de</strong> implica numa maior carga <strong>de</strong> pacotes a ser processada pelos roteadores.<br />

Os roteadores, ao receberem mais dados do que são capazes <strong>de</strong> processar, enfileiram os<br />

pacotes que chegam a ele <strong>de</strong> acordo com a política <strong>de</strong> enfileiramento do protocolo em<br />

vigor, a fim <strong>de</strong> serem futuramente processados. Na implementação em questão, o tipo <strong>de</strong><br />

fila utilizada implementa a política FIFO (First In First Out). As filas, no entanto, têm<br />

uma capacida<strong>de</strong> finita <strong>de</strong> armazenamento, que, quando atingida, ocasiona o <strong>de</strong>scarte <strong>de</strong><br />

pacotes por parte dos roteadores. Como o protocolo UDP é o protocolo da camada <strong>de</strong><br />

transporte em vigor, esse <strong>de</strong>scarte é <strong>de</strong>finitivo. Por esse motivo, a taxa <strong>de</strong> entrega neste<br />

protocolo ten<strong>de</strong> a diminuir conforme o tráfego se intensifica.<br />

O aumento da latência da entrega <strong>de</strong> pacotes UDP é diretamente influenciada pelo<br />

aumento do tráfego na re<strong>de</strong> sob ataque contra ARP. O processo <strong>de</strong> roteamento na re<strong>de</strong> é<br />

menos eficiente, uma vez que os pacotes referentes ao roteamento po<strong>de</strong>m ser mantidos na<br />

fila por outros roteadores, ou, até mesmo, <strong>de</strong>scartados por estes. Assim, além da tendência<br />

<strong>de</strong> um pacote UDP permanecer aguardando na fila por mais tempo, obter informações para<br />

seu encaminhamento se torna um processo mais lento, ocasionando assim o aumento da<br />

latência <strong>de</strong> entrega <strong>de</strong>sses pacotes.<br />

Quando a re<strong>de</strong> está sob o ataque contra RM, a frequência com que os clientes realizam<br />

handoffs é diretamente afetada por esse ataque. Os clientes, ao acusarem que sua<br />

conexão atual não é mais viável, dão início ao processo <strong>de</strong> handoff. Porém, a troca <strong>de</strong><br />

ponto <strong>de</strong> acesso só é possível se existem roteadores na re<strong>de</strong> aptos a aceitar conexões. Se,<br />

durante as mensagens <strong>de</strong> sondagem, o cliente não receber respostas por parte dos roteadores,<br />

a conexão atual <strong>de</strong>verá ser mantida até que este encontre um roteador disponível.<br />

Assim, caso o cliente se veja obrigado a manter sua conexão atual e se movimentar para<br />

uma área a qual o roteador não oferece cobertura, este per<strong>de</strong>rá totalmente o acesso à re<strong>de</strong>.<br />

Isto po<strong>de</strong> ocorrer pois o cliente não conseguirá outra conexão, uma vez que os roteadores,<br />

os quais po<strong>de</strong>riam lhe oferecer acesso à re<strong>de</strong>, estão <strong>de</strong>stinando seus recursos à clientes<br />

atacantes. Desta forma, o <strong>de</strong>scarte <strong>de</strong> pacotes é inevitável tanto dos que se <strong>de</strong>stinam a<br />

esse cliente, quanto dos pacotes que são gerados por ele. Como consequência, a taxa<br />

<strong>de</strong> entrega ten<strong>de</strong> a cair, e os clientes diminuem suas trocas <strong>de</strong> ponto <strong>de</strong> acesso, por não<br />

disporem <strong>de</strong> opções para handoffs.<br />

O atraso <strong>de</strong> resposta, utilizado para avaliar a qualida<strong>de</strong> <strong>de</strong> um enlace, é a principal<br />

causa do elevado número <strong>de</strong> handoffs. Esse atraso, por sua vez, é sensível a qualquer<br />

alteração na banda do roteador. Se um roteador é sobrecarregado, mesmo que momentaneamente,<br />

po<strong>de</strong> ser o suficiente para iniciar processos <strong>de</strong> handoffs para todos os<br />

337


clientes que o tem como ponto <strong>de</strong> acesso. Assim, handoffs não <strong>de</strong>pen<strong>de</strong>m apenas da<br />

movimentação dos clientes, mas, principalmente, do tráfego do roteador ao qual estão<br />

associados. Dessa forma, handoffs po<strong>de</strong>m ser iniciados com o propósito <strong>de</strong> obter um enlace<br />

<strong>de</strong> menor tráfego, mesmo que o sinal com o roteador seja suficiente ou que o cliente<br />

permaneça estacionado na re<strong>de</strong>.<br />

6. Conclusão<br />

O gerenciamento da mobilida<strong>de</strong> é uma das questões mais relevantes nas re<strong>de</strong>s em malha<br />

sem fio, sendo que um <strong>de</strong> seus maiores atrativos é a livre movimentação com a garantia<br />

<strong>de</strong> acesso à re<strong>de</strong>. Porém, ações maliciosas por parte dos nós po<strong>de</strong>m influenciar negativamente<br />

na mobilida<strong>de</strong> da re<strong>de</strong>. A fim <strong>de</strong> medir o impacto que ações maliciosas po<strong>de</strong>m<br />

causar a uma re<strong>de</strong> em malha, este artigo apresentou a avaliação <strong>de</strong> um protocolo <strong>de</strong> gerenciamento<br />

<strong>de</strong> mobilida<strong>de</strong>. Essa avaliação teve por objetivo <strong>de</strong>terminar o comportamento<br />

da re<strong>de</strong> frente aos ataques contra os roteadores mesh e contra o protocolo ARP que, por<br />

sua vez, tinham por fim comprometer a mobilida<strong>de</strong> na re<strong>de</strong>. Ambos os ataques mostraram<br />

que é possível reduzir significativamente a eficiência do protocolo, sendo que sob ataque<br />

contra ARP houve uma redução <strong>de</strong> cerca <strong>de</strong> 35% da taxa <strong>de</strong> entrega <strong>de</strong> pacotes UDP na<br />

re<strong>de</strong>. Mesmo tendo por objeto <strong>de</strong> estudo um protocolo em particular, as fraquezas apontadas<br />

neste protocolo são válidas e <strong>de</strong>vem ser consi<strong>de</strong>radas no projeto <strong>de</strong> protocolos <strong>de</strong><br />

mobilida<strong>de</strong> para re<strong>de</strong>s em malha. Assim, mecanismos que garantam a disponibilida<strong>de</strong> e o<br />

acesso à re<strong>de</strong> são imprescindíveis para o correto funcionamento <strong>de</strong> quaisquer protocolos<br />

<strong>de</strong> mobilida<strong>de</strong>. Como trabalho futuro, preten<strong>de</strong>mos <strong>de</strong>senvolver um protocolo <strong>de</strong> gerenciamento<br />

<strong>de</strong> mobilida<strong>de</strong> seguro consi<strong>de</strong>rando os resultados apresentados neste trabalho.<br />

Referências<br />

Aguiar, E. S., Jorge, A., Abelém, G., Damalio, D. B., Lopes, R., and Pinheiro, B. A. (2008). Segurança em<br />

re<strong>de</strong>s mesh: Tendências, <strong>de</strong>safios e aplicações. Minicursos do Simpósio Brasileiro <strong>de</strong> Segurança 2008,<br />

1:101–149.<br />

Akyildiz, I., Wang, X., and Wang, W. (2005). Wireless mesh networks: a survey. Computer Networks,<br />

47:445–487.<br />

Akyildiz, I. F., McNair, J., Ho, J. S., Uzunalioglu, H., and Wang, W. (1999). Mobility management in<br />

next-generation wireless systems. Proceedings of the IEEE, 87:1347–1384.<br />

Boukerche, A. and Zhang, Z. (2008). A hybrid-routing based intra-domain mobility management scheme<br />

for wireless mesh networks. In Proceedings of the 11th international symposium on Mo<strong>de</strong>ling analysis<br />

and simulation of wireless and mobile systems, MSWiM ’08, pages 268–275. ACM.<br />

Egners, A. and Meyer, U. (2010). Wireless mesh network security: State of affairs. IEEE 35th Conference<br />

on Local Computer Networks (LCN), pages 997–1004.<br />

Martignon, F., Paris, S., and Capone, A. (2008). Mobisec: a novel security architecture for wireless<br />

mesh networks. Proceedings of the 4th ACM symposium on QoS and security for wireless and mobile<br />

networks.<br />

Mehdi, S., Ghazi, A., Badii, J., Djamal, Z., and Hossam, A. (2007). Mobile party: A mobility management<br />

solution for wireless mesh network. IEEE International Conference on Wireless and Mobile Computing,<br />

Networking and Communication, page 45.<br />

Xie, J. and Wang, X. (2008). A survey of mobility management in hybrid wireless mesh networks. IEEE<br />

Network, 22:34–40.<br />

338


A New Scheme for Anonymous Communication in Wireless<br />

Mesh Networks<br />

Joarley Moraes 1 , Roberto Araújo 2 , Antônio Abelém 2<br />

1 Instituto <strong>de</strong> Tecnologia – Universida<strong>de</strong> Fe<strong>de</strong>ral do Pará (UFPa)<br />

Belém – PA – Brasil<br />

2 Instituto <strong>de</strong> Ciências Exatas e Naturais – Universida<strong>de</strong> Fe<strong>de</strong>ral do Pará (UFPa)<br />

Belém – PA – Brasil<br />

{joarley,rsa,abelem}@ufpa.br<br />

Abstract. Wireless Mesh Networks (WMN) have rapidly evolved as a promising<br />

solution for broadband communication. However, security issues as the user’s<br />

anonymity have been an obstacle for their wi<strong>de</strong> <strong>de</strong>ployment. Wu and Li proposed<br />

a scheme to provi<strong>de</strong> anonymity in WMN, but their scheme has drawbacks. In<br />

this paper we present a new scheme, based on some of WuLi’s principles, to<br />

provi<strong>de</strong> anonymous communication in WMN. The solution overcomes previous<br />

drawbacks and is more effective than the former one.<br />

1. Introduction<br />

Wireless Mesh Networks (WMN) is a self-organized and self-configured network<br />

paradigm where mesh no<strong>de</strong>s operate distributively as host and router. WMNs have became<br />

very popular due to their many inherent advantages such low-cost, easy maintenance,<br />

robustness, and reliable and high-speed network coverage. Such network technology<br />

are un<strong>de</strong>rgoing rapid progress and has been <strong>de</strong>ployed in a variety of application in<br />

personal, campus, and metropolitan areas [Akyildiz et al. 2005]. A WMN can be rapidly<br />

<strong>de</strong>ployed, for example, in a small city, so that the inhabitants can share a satellite connection.<br />

In such a scenario, each household works as a mesh no<strong>de</strong> and thus has to be<br />

equipped with Wireless <strong>de</strong>vices. A gateway router,<br />

a centralized entity, is responsible for granting Internet access to the households. Mesh<br />

no<strong>de</strong>s communicate to each other and to the gateway usually in multi-hop style. When<br />

the communication end is out of range, the data has to transverse a series of other no<strong>de</strong>s<br />

which will act as intermediate forwar<strong>de</strong>rs.<br />

Security and privacy issues, however, are the current main obstacles to the wi<strong>de</strong><br />

<strong>de</strong>ployment of this technology. Privacy is specially important because of the inherent<br />

public and distributed nature of the WMN channel. Source anonymity is one of the most<br />

relevant privacy properties. Users in a mesh network access the Internet in different context<br />

for services like web-surfing, e-mail, Internet banking, e-commerce, and so on. These<br />

communication may contain several sensitive user’s information, such as personal i<strong>de</strong>ntities,<br />

activities, location informations, financial data, etc. If those information are disclosed<br />

by attackers, the user’s privacy is compromised. In addition, when such an information<br />

are further correlated to user’s i<strong>de</strong>ntity, more severe consequences may occur.<br />

In this work, we focus on protecting mesh no<strong>de</strong>s anonymity against traffic analysis<br />

and flow tracing attacks. In particular, we review a protocol proposed by Wu and Li in<br />

339


[Wu and Li 2006] which claims to <strong>de</strong>fend against those attacks, assuming a global and<br />

aggressive adversary. However, their solution is vulnerable to a number of attacks due<br />

to problems in the protocol <strong>de</strong>sign, which were pointed out by the authors. We propose<br />

a new protocol based on some of Wu and Li’s i<strong>de</strong>as. However, our solution does not<br />

suffer from the problems of the former proposal. In addition, it enables multiple no<strong>de</strong>s<br />

to communicate using a single data carrier, which makes our scheme more effective than<br />

Wu and Li’s proposal, namely WuLi.<br />

This paper is organized as follows: the next section presents an outline of WuLi’s<br />

scheme and its drawbacks. After that, in Section 3, we present our new protocol. Next,<br />

we sketch the security analysis of our solution. Section 4 presents the works related to<br />

our solution. Finally, in Section 5, we conclu<strong>de</strong> this work.<br />

2. A Summary of WuLi’s Proposal and Its Drawbacks<br />

In or<strong>de</strong>r to provi<strong>de</strong> anonymous communication in WMN, WuLi proposed the private<br />

onion ring protocol. In that protocol, they applied the concept of onion routing<br />

[Syverson et al. 1997] to obtain data confi<strong>de</strong>ntiality and to achieve source anonymity.<br />

The entire protocol relies on the security of the so-called private onion ring, which is<br />

an anonymously constructed route for no<strong>de</strong>s’ communication. As the name suggests, the<br />

route has a ring topology, where the gateway is both the beginning and the end of it. Before<br />

presenting this topology, they proposed an open route approach. In this approach,<br />

the communication starts at the gateway and could end at any mesh no<strong>de</strong>. However, the<br />

approach had a serious anonymity vulnerability, which were solved by employing the ring<br />

solution.<br />

Their protocol works as follows. First, the gateway sends an request carrier to<br />

the first no<strong>de</strong> of the ring. Each no<strong>de</strong> encrypts the carrier (using a symmetric key shared<br />

between the no<strong>de</strong> and the gateway) and then forwards it to the next hop in the ring. When a<br />

no<strong>de</strong> wants to make an access request, it replaces the carrier with a new one containing its<br />

request. If more than one no<strong>de</strong> tries to request access in the same access session, always<br />

the no<strong>de</strong> closer to the gateways gets granted, since the requester erases the previous ones.<br />

After knowing the requester, the gateway sends a downlink onion through the ring, in<br />

or<strong>de</strong>r to provi<strong>de</strong> the requested data. No<strong>de</strong>s peel off one layer and forward the onion to<br />

another hop. When the onion arrives at the active no<strong>de</strong>, it obtains the plain downlink data,<br />

and then replaces it with uplink data. After that, the active no<strong>de</strong> encrypts the onion and<br />

sends it to the next hop. These procedures continue until the onion returns to the gateway.<br />

WuLi’s private onion ring solution overcomes the drawbacks of the open route<br />

approach. However, the ring topology still have some problems. The rings established by<br />

the gateway make the route fixed and easy for an adversary launching privacy attacks. In<br />

addition, if a no<strong>de</strong> goes down, a new ring must be re-established. This topology dynamics<br />

may make the scheme too inefficient. Malicious no<strong>de</strong>s could also utilize it to launch<br />

powerful DoD attacks against the WMN. Besi<strong>de</strong>s, ring route is vulnerable to the so-called<br />

intersection attacks based on user profile. This vulnerability is pointed out by the authors<br />

as the main problem of the protocol: “Assume that a Mesh no<strong>de</strong> initiates a session to<br />

connect to an Internet address through a ring. Later it is inclu<strong>de</strong>d in new ring, through<br />

which it visits the same address again. Both visits are observed by the adversary that<br />

monitors the Gateway router. If the address only has very special visitors, based on the<br />

340


observations, the adversary may conclu<strong>de</strong> that the session initiator is one of the Mesh<br />

no<strong>de</strong>s that are in both rings.” [Wu and Li 2006]<br />

3. The new Proposal<br />

Our protocol employs a principle similar to that one presented by WuLi in their private<br />

onion ring protocol. That is, it avoids that a no<strong>de</strong> directly sends data (e.g., an access request<br />

or uplink data) to the gateway router. Instead, no<strong>de</strong>s should wait for specific tokens<br />

in or<strong>de</strong>r to anonymously communicate. However, other than using WuLi’s ring routing<br />

approach, we propose a probabilistic routing protocol to make routes more flexible. As<br />

such, our method overcomes the drawbacks of the former proposal of having a fixed ring<br />

route topology.<br />

3.1. Overview<br />

Our proposal consists of three phases: the access phase, the downlink phase, and the uplink<br />

phase. The access phase is inten<strong>de</strong>d to grant to mesh no<strong>de</strong>s anonymous access to<br />

gateway services. The downlink phase follows the access phase and it aims at anonymously<br />

<strong>de</strong>livering data to the requester. And finally, the uplink phase takes place when a<br />

no<strong>de</strong> wants to anonymously send uplink data to the gateway.<br />

In the access phase, the gateway periodically generates access tokens and <strong>de</strong>livers<br />

them to mesh no<strong>de</strong>s. The gateway <strong>de</strong>livers a token to one the no<strong>de</strong>s next to itself. After<br />

receiving it, the no<strong>de</strong> either forwards it to another hop or uses it to make an access request<br />

to the gateway. In the former case, the no<strong>de</strong> performs cryptographic operations on the<br />

token before forwarding it. In the latter case, the mesh no<strong>de</strong> modifies the token to obtain<br />

a new one containing the no<strong>de</strong>’s request. In either case, the no<strong>de</strong>s are free for choosing<br />

the next hop. After the token visits a <strong>de</strong>fined number of hops, the last hop sends it back to<br />

the gateway.<br />

The downlink phase works similar as proposed by WuLi. In this phase, the gateway<br />

provi<strong>de</strong>s data from an Internet address requested by a specific mesh no<strong>de</strong>. These<br />

data are <strong>de</strong>livered as an onion packet through a given route, chosen by the gateway. Each<br />

no<strong>de</strong> in this route <strong>de</strong>crypts one layer of the onion to discover the next hop and then forwards<br />

the packet to it. If the no<strong>de</strong> is the requester, it will obtain the plain downlink data<br />

after <strong>de</strong>crypting the onion’s layer. Finally, the uplink phase occurs when no<strong>de</strong>s want to<br />

asynchronously send uplink data up to the gateway. This phase is based on the same i<strong>de</strong>a<br />

used in the access phase. In or<strong>de</strong>r to send uplink data, active no<strong>de</strong>s should wait until a<br />

so-called uplink carrier arrives. As in the access phase, this carrier, or token, is cast in the<br />

network by the gateway. The next procedures also follow as before, except that the active<br />

no<strong>de</strong> inserts uplink data into the token, instead of an access request.<br />

3.2. Assumptions and Attack Mo<strong>de</strong>l<br />

The assumptions and the attack mo<strong>de</strong>l of our scheme are similar to that ones employed<br />

by Wu and Li in their scheme. An adversary can learn which Internet address is being<br />

accessed, but it cannot confirm which mesh no<strong>de</strong> performed a request to this address. This<br />

means that the no<strong>de</strong> that performed the request (i.e. the active no<strong>de</strong>) is hid<strong>de</strong>n within a<br />

group of mesh no<strong>de</strong>s. In addition, each mesh no<strong>de</strong> and the gateway are assumed to have<br />

enough computer resources to perform the operations required.<br />

341


We consi<strong>de</strong>r two kinds of computer-boun<strong>de</strong>d adversaries: an insi<strong>de</strong>r and an outsi<strong>de</strong>r.<br />

The insi<strong>de</strong>r is a malicious no<strong>de</strong> in the set of no<strong>de</strong>s that compose the mesh network.<br />

It can perform any task that other mesh no<strong>de</strong>s are able to, such as forwarding packets,<br />

checking packets type, and making an access request to the gateway. The outsi<strong>de</strong>r is a<br />

malicious no<strong>de</strong> that is not in the set of no<strong>de</strong>s that compose the mesh network. It can monitor<br />

the mesh no<strong>de</strong>s and the gateway activities. Also, it can <strong>de</strong>termine which web activities<br />

are performed by the gateway on behalf of mesh no<strong>de</strong>s. We assume a small number of<br />

insi<strong>de</strong>rs and one or few outsi<strong>de</strong>rs. Insi<strong>de</strong>rs and outsi<strong>de</strong>rs may cooperate to launch attacks<br />

against mesh no<strong>de</strong>s’ privacy. They may inject or modify traffic, try to replay messages,<br />

jam no<strong>de</strong>s’ communication, etc. Also, we consi<strong>de</strong>r that the no<strong>de</strong>s cannot stop the message<br />

flow.<br />

3.3. The Data Carrier<br />

The data carrier is a specific purpose packet periodically issued by the gateway router.<br />

When a no<strong>de</strong> wants to either make an access request or send uplink data to the gateway,<br />

it has to wait for the appropriate data carrier. If a no<strong>de</strong> wants to make an access request,<br />

then it uses the access carrier; if it wants to send uplink data, it should use the uplink<br />

carrier. Both carriers, however, have the same basic structure and they will be addressed<br />

in this section as data carrier.<br />

The data carrier consists of two well-<strong>de</strong>fined parts. The first part is called<br />

onioned data and the second one is called encrypted route information. The onioned<br />

data part is composed of a multilayer encrypted data, i.e. an onion. It is built by successively<br />

encrypting the received data carrier at each mesh no<strong>de</strong>. As an onion, the<br />

onioned data may be constructed by either employing a symmetric cryptosystem, such<br />

as AES [Daemen and Rijmen 2002], or an asymmetric cryptosystem, such as El Gamal<br />

[Gamal 1985]. Here we employ a symmetric cryptosystem to build the onion. Throughout<br />

this paper we <strong>de</strong>note E X (·) a ciphertext using the symmetric or public key X.<br />

The onioned data has the following general format:<br />

E kr (...E k2 (E k1 (data 1 ), data 2 )..., data r ), where k i is a symmetric key shared between<br />

the gateway and a no<strong>de</strong> i, and data i is the plain data inserted by each mesh no<strong>de</strong><br />

i; data r is the data corresponding to the last no<strong>de</strong> of a route of length r. Note that<br />

this approach enables multiple no<strong>de</strong>s using the same carrier to communicate with the<br />

gateway. Additionally, data i could be just padding bits in case a no<strong>de</strong> has no data to<br />

inclu<strong>de</strong> into the carrier.<br />

As stated before, the data carrier is just a packet abstraction. The actual packets<br />

are the access and the uplink carriers. Hence, data i is actually a request (<strong>de</strong>noted as req)<br />

if the packet is an access carrier, the req is composed of {reqId, url, N i }, where reqId<br />

is the request’s i<strong>de</strong>ntification generated by the requester no<strong>de</strong>, url is the Internet address<br />

that the no<strong>de</strong> wants to access and N i is the no<strong>de</strong>’s i<strong>de</strong>ntification. Differently, if the packet<br />

is an uplink carrier, the data will be uplink = {url, updata, N i }, where url is the web<br />

<strong>de</strong>stination of the uplink data, and updata is the uplink traffic the active no<strong>de</strong> is sending.<br />

The second part of the carrier, the encrypted route information, consists of a set<br />

of no<strong>de</strong>s’ encrypted secret parameters. A no<strong>de</strong>’s secret parameter is a unique information<br />

about the no<strong>de</strong>, which, later on, will work as the no<strong>de</strong>’s i<strong>de</strong>ntification. Precisely, when<br />

the carrier returns to the gateway, it uses these parameters to i<strong>de</strong>ntify which no<strong>de</strong>s the<br />

342


carrier visited in a random route. We implement no<strong>de</strong>s’ encrypted secret parameter by<br />

encrypting the previously mentioned shared symmetric key k i (a unique parameter) with<br />

the public key G of the gateway, to obtain E G (k i ) – though, there are other ways to<br />

implement this. Each ciphertext is inserted into the route part of carrier and concatenated<br />

to the previous ones. At the end of a route of length r, the route information would be as<br />

follows: E G (k 1 )‖E G (k 2 )‖...‖E G (k r−1 )‖E G (k r )<br />

Due to this concatenation structure, any mesh no<strong>de</strong> can count how many secret parameters<br />

have been inclu<strong>de</strong>d in the carrier. However, they cannot <strong>de</strong>termine the originator<br />

no<strong>de</strong>, since these parameters are encrypted. Hence, insi<strong>de</strong>rs and outsi<strong>de</strong>rs are unable to<br />

know the entire route the carrier took. That count is the criterion that no<strong>de</strong>s use to stop<br />

forwarding the carrier. When a carrier reaches the gateway, it <strong>de</strong>crypts each no<strong>de</strong>s’ secret<br />

parameter to discover which hops the carrier has visited. This information is important to<br />

check the correctness of the protocol, as <strong>de</strong>tailed in the next section.<br />

3.4. The Protocol Description<br />

The protocol is composed of three phases: access, downlink and uplink phases. These<br />

phases are prece<strong>de</strong>d by a setup phase.<br />

1. Setup Phase<br />

Before the no<strong>de</strong>s begin sending or receiving data to/from the gateway, they first<br />

need to generate and distribute key material. In particular, the gateway generates a pair<br />

of asymmetric keys and sends its public key to every mesh no<strong>de</strong>. After that, each no<strong>de</strong><br />

generates a symmetric key and shares it with the gateway. To perform this, each no<strong>de</strong><br />

encrypts its key with the gateway’s public key and sends it to the gateway. Additionally,<br />

a key sharing protocol must be performed between each mesh no<strong>de</strong> and their neighbours<br />

(i.e. the no<strong>de</strong>s within the communication range). These keys will be used for the no<strong>de</strong>s<br />

single-hop communication.<br />

In addition, the gateway <strong>de</strong>fines the number of no<strong>de</strong>s r that a carrier should visit<br />

before being forwar<strong>de</strong>d back to the gateway. This value may consi<strong>de</strong>r the number of<br />

mesh no<strong>de</strong>s (and thus estimating network traffic) and the level of anonymity that should<br />

be achieved. The anonymity level is further commented in the Section 3.5.<br />

2. Access Phase<br />

The protocol starts with the access carriers generation by the gateway. Initially,<br />

this carrier contains only an encrypted nonce value, used to protect the network against<br />

replay attacks. The gateway periodically generates access carriers and casts them to the<br />

mesh network. When a no<strong>de</strong> receives a carrier and wants to make a request, it inserts a<br />

valid access request into the onioned data section, encrypts the result with its shared key,<br />

and then forwards the carrier to any hop within its communication range. However, if a<br />

no<strong>de</strong> has no request to make, it proceeds as before, except that it inserts padding bits into<br />

onioned data part, instead of an actual request.<br />

Besi<strong>de</strong>s operating on the first part of the carrier, each no<strong>de</strong> adds its encrypted<br />

secret parameter into the route information part. Later on, the gateway will use this information<br />

to verify which hops the carrier visited. Since the route is randomly taken, having<br />

this knowledge ensures that the carrier visited different and valid no<strong>de</strong>s in the network.<br />

343


The access carriers travels through r random no<strong>de</strong>s before being forwar<strong>de</strong>d back to<br />

the gateway. Each no<strong>de</strong> checks how many times a carrier has been forwar<strong>de</strong>d by counting<br />

the number of encryptions on the route information part. Based on the count, the no<strong>de</strong><br />

<strong>de</strong>termines the packet’s <strong>de</strong>stination. That is, if the count is less then r (r was <strong>de</strong>fined in the<br />

setup phase) the no<strong>de</strong> continues forwarding the packet. Otherwise, if the count is equal<br />

to r, that means the current no<strong>de</strong> is the last one in the random route and should send the<br />

carrier back to the gateway. The gateway receives the carrier sent back from a no<strong>de</strong> and<br />

verifies its correctness. In or<strong>de</strong>r to perform this, the gateway first <strong>de</strong>crypts each encrypted<br />

secret parameter. After that, it obtains the plaintext of each shared symmetric key which<br />

works as no<strong>de</strong>’s i<strong>de</strong>ntification. Based on that, it discovers the carrier’s route by checking<br />

the or<strong>de</strong>r of these keys. From this knowledge, the onioned data can be <strong>de</strong>crypted. At the<br />

end, the gateway may have a set of plain access requests, and thus, will be able to provi<strong>de</strong><br />

access to the requesters. The protocol is verified based on the success of <strong>de</strong>cryption<br />

operation over the onioned data. If it is not successful, the protocol has not been properly<br />

followed and the gateway drops the carrier.<br />

As an example, suppose a gateway G, a parameter r = 6, and a sequence of<br />

no<strong>de</strong>s N 1 , . . . , N 7 , hops of a random route. Suppose N 1 , N 2 , N 4 , N 5 , and N 7 are just<br />

forwar<strong>de</strong>rs, whereas N 3 and N 6 are requesters. At first, G generates an access carrier<br />

E k1 (nonce) containing a nonce value encrypted with the shared symmetric key k 1 . This<br />

encryption is performed as a mean to authenticate the packet to N 1 . After receiving the<br />

carrier, N 1 processes it by padding onioned data with dummy bits and then encrypting<br />

the result using k 1 to obtain E k1 (nonce, pad). Then N 1 generates its encrypted secret<br />

parameter E G (k 1 ) and inserts it into to the route part of the carrier. Finally, N 1 sends the<br />

new carrier, E k1 (nonce, pad), E G (k 1 ), to the no<strong>de</strong> N 2 .<br />

N 2 , N 4 , N 5 operates exactly as N 1 .On the other hand, N 3 and N 6 proceeds slightly<br />

different. As requesters, rather than adding padding bits, they add an actual request into<br />

the onioned data. After finishing, N 6 sends the carrier to N 7 . As any other no<strong>de</strong> in the<br />

route, N 7 verifies if the number of parameters on the route part are equal to r. Up to that<br />

point, as the route part has 6 encryptions and r = 6, N 7 just forwards the carrier back to<br />

G. The following message flow summarizes this example.<br />

G → N 1 : E k1 (nonce)<br />

N 1 → N 2 : E k1 (nonce, pad), E G (k 1 )<br />

N 2 → N 3 : E k2 (E k1 (nonce, pad), pad), E G (k 1 )‖E G (k 2 )<br />

N 3 → N 4 : E k3 (E k2 (E k1 (nonce, pad), pad)req 3 ), E G (k 1 )‖E G (k 2 )‖E G (k 3 )<br />

N 4 → N 5 : E k4 (E k3 (E k2 (E k1 (nonce, pad), pad), req 3 ), pad),<br />

E G (k 1 )‖E G (k 2 )‖E G (k 3 )‖E G (k 4 )<br />

N 5 → N 6 : E k5 (E k4 (E k3 (E k2 (E k1 (nonce, pad), pad), req 3 ), pad), pad),<br />

E G (k 1 )‖E G (k 2 )‖E G (k 3 )‖E G (k 4 )‖E G (k 5 )<br />

N 6 → N 7 : E k6 (E k5 (E k4 (E k3 (E k2 (E k1 (nonce, pad), pad), req 3 ), pad), pad), req 6 ),<br />

E G (k 1 )‖E G (k 2 )‖E G (k 3 )‖E G (k 4 )‖E G (k 5 )‖E G (k 6 )<br />

N 7 → G : E k6 (E k5 (E k4 (E k3 (E k2 (E k1 (nonce, pad), pad), req 3 ), pad), pad), req 6 ),<br />

E G (k 1 )‖E G (k 2 )‖E G (k 3 )‖E G (k 4 )‖E G (k 5 )‖E G (k 6 )<br />

344


When the gateway receives the access carrier from the no<strong>de</strong> N 7 , it begins by <strong>de</strong>crypting<br />

each secret information, from E G (k 1 ) to E G (k 6 ). By doing this, it discovers the<br />

route that the carrier took and it can start <strong>de</strong>crypting each layer of the onioned request.<br />

In the example above, the gateway peels off all onion’s layers using the obtained shared<br />

keys and finds two plain requests: req 3 and req 6 .<br />

3. Downlink Phase<br />

The downlink phase takes place as soon as the gateway receives an access request.<br />

When the gateway discovers a plain request, it obtains the <strong>de</strong>sired Internet data on behalf<br />

of the requester. After receiving the data, the gateway encapsulates it into a downlink<br />

packet. This packet may contain data requested by different no<strong>de</strong>s. In or<strong>de</strong>r to <strong>de</strong>livery<br />

the data requested, the gateway sends the downlink packet through an anonymous route.<br />

This route is carefully chosen by the gateway to inclu<strong>de</strong>, not only the requesters, but some<br />

dummy no<strong>de</strong>s.<br />

The downlink packet’s content is structured as an onion, similar to the<br />

data carrier. Each onion’s layer may contain downlink data and the address<br />

of the next hop in the route. The downlink packet has the following format:<br />

E k1 (E k2 (E k3 (...E kl (G, down l , E G (nonce)), ...N 4 , down 3 ), N 3 , down 2 ), N 2 , down 1 ),<br />

where down i is the downlink data <strong>de</strong>stined to the requester N i and E G (nonce) is an<br />

unique value inclu<strong>de</strong>d by the gateway for <strong>de</strong>livery confirmation purpose. Besi<strong>de</strong>s the<br />

downlink data, down i also contains the reqId. It is inten<strong>de</strong>d to link the downlink traffic<br />

with a given access request. Additionally, similar as in the data carrier, the gateway<br />

pads down i with dummy bits in those layers where no data need to be inclu<strong>de</strong>d. In the<br />

innermost layer of onion, we have the information <strong>de</strong>stined to last no<strong>de</strong> of the route N l ,<br />

which should forward the packet to the gateway’s address (G).<br />

The downlink protocol begins when the gateway sends the onion to the first no<strong>de</strong><br />

in the route. Each mesh no<strong>de</strong> <strong>de</strong>crypts one layer, checks for any downlink data, verifies<br />

the next hop’s address and then forward the packet to it. Note that before forwarding, a<br />

no<strong>de</strong> N i removes both down i and N i+1 from its corresponding layer. Every mesh no<strong>de</strong><br />

performs the same operation along the route, even if the down i is not a real downlink traffic.<br />

This protocol continues until the packet reaches the last no<strong>de</strong> in the route. This no<strong>de</strong><br />

performs the operations <strong>de</strong>scribed before and then forwards the packet to the gateway.<br />

The packet’s content at this point is only E G (nonce). The gateway receives this data and<br />

verifies that the packet visited every no<strong>de</strong> of the route. Hence, this information works as<br />

a <strong>de</strong>livery confirmation mechanism.<br />

From the example presented in the access phase, suppose the gateway constructs<br />

a downlink packet to <strong>de</strong>livery data to the requester no<strong>de</strong>s N 3 and N 6 . The dummy no<strong>de</strong>s<br />

inclu<strong>de</strong>d in downlink route will be N 8 , N 9 , N 10 , and N 11 . The gateway makes an onion<br />

to target the six no<strong>de</strong>s of the route in the following or<strong>de</strong>r: N 8 → N 9 → N 3 → N 10 →<br />

N 6 → N 11 . The message flow, from the gateway until the no<strong>de</strong> last no<strong>de</strong> N 11 , is as<br />

follows:<br />

345


G → N 8 : E k8 (E k9 (E k3 (E k10 (E k6 (E k11 (G, pad, E G (nonce)), N 11 , down 6 ), N 6 , pad),<br />

N 10 , down 3 ), N 3 , pad), N 9 , pad)<br />

N 8 → N 9 : E k9 (E k3 (E k10 (E k6 (E k11 (G, pad, E G (nonce)), N 11 , down 6 ), N 6 , pad),<br />

N 10 , down 3 ), N 3 , pad)<br />

N 9 → N 3 : E k3 (E k10 (E k6 (E k11 (G, pad, E G (nonce)), N 11 , down 6 ), N 6 , pad),<br />

N 10 , down 3 )<br />

N 3 → N 10 : E k10 (E k6 (E k11 (G, pad, E G (nonce)), N 11 , down 6 ), N 6 , pad)<br />

N 10 → N 6 : E k6 (E k11 (G, pad, E G (nonce)), N 11 , down 6 )<br />

N 6 → N 11 : E k11 (G, pad, E G (nonce))<br />

N 11 → G : E G (nonce)<br />

4. Uplink Phase<br />

In the uplink phase, mesh no<strong>de</strong>s send uplink data to gateway anonymously. If a<br />

no<strong>de</strong> has any uplink data to send, it employs the same approach used to make access requests.<br />

They wait for an uplink carrier arrives, insert the <strong>de</strong>sired data, and then chooses a<br />

random no<strong>de</strong> to forward the carrier. After visiting r hops, the carrier is sent back to gateway<br />

which performs the protocol check, in the same way as <strong>de</strong>scribed in the access phase.<br />

After visiting r no<strong>de</strong>s of a random route, N 1 , N 2 , . . . , N r , an uplink carrier has the following<br />

format: E kr (...E k2 (E k1 (uplink 1 ), uplink 2 )..., uplink r ), E G (k 1 )‖E G (k 2 )‖...‖E G (k r ).<br />

Note that in all protocol phases we have inclu<strong>de</strong>d mechanisms to enable various<br />

no<strong>de</strong>s to anonymously communicate using a single packet. This is a feature WuLi’s protocol<br />

fails to provi<strong>de</strong> [Wu and Li 2006]. In their both schemes, when two or more no<strong>de</strong>s<br />

make a request, always the no<strong>de</strong> closer to the gateway gets granted, since it replaces the<br />

onion. In a networks with a large number of no<strong>de</strong>s, such as metropolitan-scale WMNs,<br />

this turns out to be a real concern, because simultaneously communication is very likely<br />

to occur.<br />

3.5. Sketch of Security Analysis<br />

The security of our protocol is based on the uniform behaviour of mesh no<strong>de</strong>s while<br />

following the protocol. That is, the activities for an active no<strong>de</strong> is indistinguishable from<br />

the activities of an inactive one. This is achieved by employing modified onion routing<br />

schemes associated with redundancy and padding techniques. No<strong>de</strong>s may either encrypt<br />

or <strong>de</strong>crypt onions according to the protocol phase. Padding bits are inclu<strong>de</strong>d into the<br />

onion to <strong>de</strong>fend against message’s size attacks. Redundancy, in turn, is the key technique<br />

for achieving anonymity. That is, packets visit several mesh no<strong>de</strong>s, so that an active one<br />

is hid<strong>de</strong>n among them. Hence, the anonymity level achieved can be measured by the<br />

number of redundant no<strong>de</strong>s involved in a given protocol phase. In other words, the more<br />

no<strong>de</strong>s the network has, the better the anonymity level will be. However, a large number<br />

of no<strong>de</strong>s would introduce relevant overhead over the network performance.<br />

In addition, onion routing techniques also provi<strong>de</strong>s privacy to mesh no<strong>de</strong>s’ data,<br />

since each layer is encrypted with a shared symmetric key. The security of the data is<br />

then guaranteed by the un<strong>de</strong>rline symmetric cryptosystem. In setup phase, more sophisticated<br />

key agreement protocol, such as [Wan et al. 2009], may be employed to establish<br />

more secure symmetric keys. Asymmetric cryptography is also employed to secure other<br />

346


data, such as the no<strong>de</strong>s’ secret parameters, which are encrypted with the gateway’s public<br />

key. Finally, since we assume computer-boun<strong>de</strong>d adversaries, and thus cannot break<br />

into symmetric or asymmetric cryptosystems, it can be claimed that data confi<strong>de</strong>ntiality<br />

is secure.<br />

In or<strong>de</strong>r to enhance anonymity, we enforce the use of non-<strong>de</strong>terministic routes<br />

for packet routing. In the access and uplink phases, each mesh no<strong>de</strong> randomly forwards<br />

carriers to one of the hops in its range. After r hops, carriers have travelled through a<br />

random route. Any attempt of manipulating the route part of the carrier is easily verified<br />

by the gateway by checking the no<strong>de</strong>s’ shared key against the onioned data. Having non<strong>de</strong>terministic<br />

route make it difficulty for an adversary, even for a global one, to target<br />

specific no<strong>de</strong>s in privacy attacks In the downlink phase, routes for message <strong>de</strong>livery are<br />

properly selected by the gateway, so that they are different for each downlink session.This<br />

approach makes the downlink route also non-<strong>de</strong>terministic, in the sense that no one, but<br />

the gateway, knows the entire route; no<strong>de</strong>s only know their previous and next hops. Non<strong>de</strong>terministic<br />

routes approach also turns infeasible the so-called intersection attack, the<br />

main problem of WuLi’s protocol. WuLi’s solution reveals the ring’s ID inclu<strong>de</strong>d in<br />

every packets. As their topology is fixed, the intersection attack becomes viable. In our<br />

protocol, is difficulty to correlate the web activities observed at the gateway with specific<br />

mesh no<strong>de</strong>s, since they are not inclu<strong>de</strong> in <strong>de</strong>terministic routing paths.<br />

The protocol is secure against a global outsi<strong>de</strong>r which may cooperate with a small<br />

number of insi<strong>de</strong>rs. In this context, a number of attacks could be launched aiming at<br />

breaching mesh user’s privacy. An attacker could, for example, record the no<strong>de</strong>s’ encrypted<br />

secret parameters from previous access or uplink sessions. Then the attacker may<br />

then try to reuse them in a replay attack. This would allow the adversary to control the<br />

length of the route and thus weakening the anonymous communication protocol. The adversary<br />

could, in<strong>de</strong>ed, perform this. However the attack will not be successful, as the first<br />

part of the data carrier(the onioned data) requires encryption which requires the knowledge<br />

of the no<strong>de</strong>’s shared key. When the carrier returns to the gateway, a broken carrier<br />

can be easily verified, by checking each onion layer. This kind of attack may only be<br />

successful if the attacker controls at least r − 1 no<strong>de</strong>s in the network, where r is the previously<br />

<strong>de</strong>fined length of the route. In this scenario, the attacker could intentionally forward<br />

the carrier to the compromised no<strong>de</strong>s and lastly forward to a target no<strong>de</strong>. Hence r should<br />

be large enough to avoid this kind of attack, but shall not be so large, as the carrier’s size<br />

increases along the route.<br />

4. Related Work<br />

Anonymity in Wireless Mesh Networks has gained attention in the literature. Wu<br />

and Li <strong>de</strong>signed a robust protocol to protect against aggressive global adversaries<br />

[Wu and Li 2006]. They employ both cryptography and redundancy to protect against<br />

traffic analysis and flow tracing attacks. However, their Private Onion Ring protocol<br />

is mainly vulnerable to the so-called intersection attack. To overcome this problem,<br />

[Li et al. 2009] proposed a new protocol based on a multilayer onion ring approach. In<br />

[Wu et al. 2006], the authors propose the use of multi-path communication to achieve privacy.<br />

However, the protocol cannot <strong>de</strong>fend against a powerful global attacker who is able<br />

to observe most traffic in the network.<br />

Another solution related to ours is the one proposed in [Islam et al. 2008], where<br />

347


the authors work on a 3-tier architecture and propose a secure mechanism to anonymously<br />

authenticate mesh clients to mesh routers. To achieve this, they employ Chaum’s blind<br />

signature scheme. However, their solution only works if the communication between<br />

mesh clients and routers are single-hop. Based on this same architecture, a recent work<br />

[Wan et al. 2009] presents two protocols for privacy protection in WMN in a metropolitan<br />

scale. In a basic protocol, group signatures are used to authenticate mesh clients to mesh<br />

routers. This approach achieves privacy against eavesdroppers, but it reveals the client’s<br />

i<strong>de</strong>ntity to mesh routers. To solve this, the authors propose an advanced protocol which<br />

uses pairwise shared secrets along with group signatures to keep mesh clients anonymous<br />

from mesh routers.<br />

5. Conclusion<br />

This work presented a solution based on some of the principles employed by Wu and Li’s<br />

protocol to address the challenge of achieving anonymous communication in WMN. The<br />

solution avoids that a no<strong>de</strong> directly sends data to the gateway router. Instead, it waits for a<br />

token to arrive and, thus, anonymously communicating. Our protocol makes it difficulty<br />

for an adversary launching the so-called intersection attack, due to the non-<strong>de</strong>terministic<br />

feature of the routing protocol. In addition, we have produced a more effective solution,<br />

since mesh no<strong>de</strong>s can simultaneously communicate with the gateway within the same<br />

session.<br />

Acknowledgment - This work was partially supported by SEDEC and FAPESPA.<br />

References<br />

Akyildiz, I. F., Wang, X., and Wang, W. (2005).<br />

Computer Networks, 47(4):445–487.<br />

Wireless mesh networks: a survey.<br />

Daemen, J. and Rijmen, V. (2002). The Design of Rijndael: AES - The Advanced Encryption<br />

Standard. Springer.<br />

Gamal, T. E. (1985). A public key cryptosystem and a signature scheme based on discrete<br />

logarithms. IEEE Transactions on Information Theory, 31(4):469–472.<br />

Islam, S., Hamid, A., Hong, C. S., and Chang, B.-H. (2008). Preserving i<strong>de</strong>ntity privacy in<br />

wireless mesh networks. In Information Networking, 2008. ICOIN 2008. International<br />

Conference on, pages 1 –5.<br />

Li, R., Pang, L., Pei, Q., and Xiao, G. (2009). Anonymous communication in wireless<br />

mesh network. In CIS (2), pages 416–420. IEEE Computer Society.<br />

Syverson, P. F., Goldschlag, D. M., and Reed, M. G. (1997). Anonymous connections<br />

and onion routing. In IEEE Symposium on Security and Privacy, pages 44–54. IEEE<br />

Computer Society.<br />

Wan, Z., Ren, K., Zhu, B., Preneel, B., and Gu, M. (2009). Anonymous user communication<br />

for privacy protection in wireless metropolitan mesh networks. In Proceedings<br />

of the 4th International Symposium on Information, Computer, and Communications<br />

Security, ASIACCS ’09, pages 368–371, New York, NY, USA. ACM.<br />

Wu, T., Xue, Y., and Cui, Y. (2006). Preserving traffic privacy in wireless mesh networks.<br />

In WOWMOM, pages 459–461. IEEE Computer Society.<br />

Wu, X. and Li, N. (2006). Achieving privacy in mesh networks. In SASN, pages 13–22.<br />

348


Avaliação do Impacto do Uso <strong>de</strong> Mecanismos <strong>de</strong> Segurança<br />

em uma Aplicação Distribuída que Utiliza Re<strong>de</strong>s Veiculares<br />

Ramon Rodrigues Rita, Michelle Silva Wangham<br />

Curso <strong>de</strong> <strong>Engenharia</strong> <strong>de</strong> Computação – Universida<strong>de</strong> do Vale do Itajaí (UNIVALI)<br />

ramonrr@br.com.br, wangham@gmail.com<br />

Resumo. As re<strong>de</strong>s veiculares são formadas entre veículos ou entre veículos e a<br />

infraestrutura localizada nas ruas. Há muitos obstáculos para adoção <strong>de</strong>stas<br />

re<strong>de</strong>s, entre estes, <strong>de</strong>staca-se a segurança na comunicação, <strong>de</strong>vido aos<br />

possíveis ataques <strong>de</strong> usuários ou nós maliciosos. Este trabalho objetiva<br />

avaliar o uso <strong>de</strong> mecanismos <strong>de</strong> segurança capazes <strong>de</strong> garantir a<br />

autenticida<strong>de</strong> e a integrida<strong>de</strong> das informações em uma aplicação distribuída<br />

que utiliza re<strong>de</strong>s veiculares.<br />

Abstract. Vehicular networks are formed among vehicles or among vehicles<br />

and infrastructure located on the road. There are many obstacles for their<br />

wi<strong>de</strong>spread adoption. Among these, there is secure communication due to<br />

possible attacks by malicious users or no<strong>de</strong>s. This work aims to evaluate the<br />

use of security mechanisms able to ensure the authenticity and integrity of<br />

information in a distributed application that uses a vehicle network.<br />

1. Introdução<br />

Os nós que compõem as re<strong>de</strong>s veiculares são os próprios veículos, criando assim<br />

características peculiares <strong>de</strong>ste tipo <strong>de</strong> re<strong>de</strong>, como alta mobilida<strong>de</strong> dos nós, enlaces<br />

intermitentes e requisitos estritos <strong>de</strong> latência. A promessa <strong>de</strong> aumento <strong>de</strong> segurança no<br />

trânsito tem sido um dos principais incentivos à expansão <strong>de</strong>stas re<strong>de</strong>s. No entanto, a<br />

transmissão pelo ar como meio <strong>de</strong> comunicação, a ausência <strong>de</strong> infraestrutura e o<br />

encaminhamento colaborativo das mensagens fazem com que as re<strong>de</strong>s veiculares<br />

possuam vulnerabilida<strong>de</strong>s específicas [Alves et al, 2008]. Raya et al. (2005) consi<strong>de</strong>ram<br />

a segurança em re<strong>de</strong>s veiculares um fator que precisa ser observado, pois os possíveis<br />

ataques po<strong>de</strong>m ter graves consequências, como por exemplo, em aplicações <strong>de</strong><br />

sinalização <strong>de</strong> trânsito, em que há vidas humanas envolvidas.<br />

Em geral, as aplicações <strong>de</strong> segurança no trânsito têm por objetivo reduzir o<br />

número e a gravida<strong>de</strong> dos aci<strong>de</strong>ntes. Estas aplicações possuem caráter preventivo e<br />

emergencial, em que o principal <strong>de</strong>safio é divulgar rapidamente as informações para que<br />

o condutor tenha tempo para reagir. Em geral, aplicações <strong>de</strong> segurança restringem a<br />

divulgação das informações apenas aos nós localizados próximos ao local em que foi<br />

i<strong>de</strong>ntificada a situação <strong>de</strong> perigo [ALVES et al, 2006]. O sucesso das aplicações em<br />

VANETs <strong>de</strong>pen<strong>de</strong> principalmente da cooperação <strong>de</strong> todos os membros, em prol do<br />

benefício coletivo. Entretanto, interesses difusos po<strong>de</strong>m levar os membros da re<strong>de</strong> a<br />

tentar manipular o comportamento dos outros veículos, <strong>de</strong> forma que seus objetivos<br />

sejam satisfeitos [PAULA, 2009].<br />

Entre as aplicações que utilizam re<strong>de</strong>s veiculares, cita-se a aplicação RAMS<br />

(Road Alert Message Service), <strong>de</strong>senvolvida por Oliveira (2010), que tem por objetivo<br />

349


enviar, receber e repassar sinalizações <strong>de</strong> alertas em rodovias. As mensagens são<br />

enviadas através da utilização <strong>de</strong> um protocolo <strong>de</strong> disseminação baseado em inundação<br />

e múltiplos saltos. A Figura 1 apresenta a visão geral <strong>de</strong>sta aplicação.<br />

Figura 1: Visão Geral da Aplicação RAMS<br />

Conforme ilustrado na Figura 1, o funcionamento <strong>de</strong>ste sistema consiste nos<br />

seguintes passos:<br />

1 – O operador se autentica na aplicação RAMS Manager e cria o alerta a ser<br />

enviado;<br />

2 – O alerta é enviado por difusão para os nós mais próximos;<br />

3 – O RAMS Mobile recebe o alerta e checa se o mesmo já foi recebido. Caso<br />

seja uma nova mensagem, é repassada aos nós vizinhos. Caso contrário, o alerta é<br />

<strong>de</strong>scartado;<br />

4 – O RAMS Mobile disponibiliza o alerta ao condutor.<br />

Os requisitos <strong>de</strong> segurança mais importantes em re<strong>de</strong>s veiculares são a<br />

autenticida<strong>de</strong> dos nós, a integrida<strong>de</strong>, a disponibilida<strong>de</strong>, a privacida<strong>de</strong> e o controle <strong>de</strong><br />

acesso [Raya et al. 2005]. Além disto, segundo os autores, as aplicações <strong>de</strong> segurança<br />

no trânsito impõem requisitos estritos <strong>de</strong> latência. Questões como estas <strong>de</strong>monstram que<br />

os requisitos <strong>de</strong> segurança computacional <strong>de</strong>vem ser respeitados no <strong>de</strong>senvolvimento<br />

<strong>de</strong>stas aplicações. Este trabalho é caracterizado como uma pesquisa aplicada, cujo<br />

objetivo é avaliar o impacto do uso <strong>de</strong> mecanismos <strong>de</strong> segurança que provêem a<br />

integrida<strong>de</strong> e a autenticida<strong>de</strong> <strong>de</strong> mensagens em uma aplicação voltada à segurança no<br />

trânsito, que utiliza re<strong>de</strong>s veiculares, o sistema RAMS.<br />

2. Segurança em Re<strong>de</strong>s Veiculares<br />

350


A segurança em VANETs é um fator bastante relevante que precisa ser observado, pois<br />

como quaisquer re<strong>de</strong>s <strong>de</strong> computadores estas estão suscetíveis a ataques por nós mal<br />

intencionados [RAYA et al., 2005]. Os requisitos <strong>de</strong> segurança a serem atendidos em<br />

re<strong>de</strong>s veiculares <strong>de</strong>pen<strong>de</strong>m principalmente do tipo <strong>de</strong> aplicação.<br />

Dentre os requisitos <strong>de</strong> segurança, <strong>de</strong>stacam-se: autenticida<strong>de</strong>, integrida<strong>de</strong>,<br />

disponibilida<strong>de</strong>, privacida<strong>de</strong> e controle <strong>de</strong> acesso. A autenticação pelo fato <strong>de</strong> i<strong>de</strong>ntificar<br />

a i<strong>de</strong>ntida<strong>de</strong> do remetente <strong>de</strong> cada mensagem recebida. A integrida<strong>de</strong> para evitar que um<br />

intruso seja capaz <strong>de</strong> alterar mensagens legítimas. O anonimato e privacida<strong>de</strong> são<br />

necessários para evitar que veículos possam ser rastreados bem como também<br />

localizado. E o controle <strong>de</strong> acesso para garantir que os nós realizem somente aquilo que<br />

lhes foi autorizado [Raya et al. 2005] [ALVES et al., 2008].<br />

Atualmente, muitos mecanismos <strong>de</strong> segurança estão sendo <strong>de</strong>senvolvidos e<br />

empregados para evitar ou minimizar os ataques contra aplicações <strong>de</strong> re<strong>de</strong>s veiculares.<br />

No entanto, <strong>de</strong>vido às suas características, tais como alta mobilida<strong>de</strong> dos nós, enlaces<br />

intermitentes e requisitos estritos <strong>de</strong> latência, muitos mecanismos <strong>de</strong> segurança não<br />

apresentam <strong>de</strong>sempenho satisfatório.<br />

3. Avaliação do Impacto do Uso <strong>de</strong> Mecanismos <strong>de</strong> Autenticação<br />

Este trabalho teve como foco avaliar os impactos (latência da re<strong>de</strong>, mobilida<strong>de</strong> e<br />

<strong>de</strong>nsida<strong>de</strong> dos nós) <strong>de</strong>correntes da inserção dos mecanismos <strong>de</strong> segurança em uma<br />

aplicação que utiliza re<strong>de</strong>s veiculares para disseminação <strong>de</strong> alertas em rodovias, a<br />

aplicação RAMS. Visando avaliar esta sobrecarga, foram realizadas simulações, pois<br />

para testes em um ambiente real seria necessário utilizar veículos, condutores e<br />

equipamentos, o que acaba por elevar os custos. Além disto, torna-se difícil por se tratar<br />

<strong>de</strong> um ambiente com diversas variáveis, que em alguns momentos po<strong>de</strong>m não se<br />

mostrar satisfatórias para os testes. Já a utilização <strong>de</strong> simuladores permite o controle<br />

sobre o ambiente e consome menos recursos.<br />

A aplicação RAMS foi escolhida por tratar-se <strong>de</strong> uma aplicação que contribui<br />

com a segurança no trânsito das rodovias, mas que em sua versão original [OLIVEIRA,<br />

2010] não se preocupa com os aspectos <strong>de</strong> segurança da informação.<br />

Visando i<strong>de</strong>ntificar quais mecanismos são a<strong>de</strong>quados para prover a integrida<strong>de</strong> e<br />

autenticida<strong>de</strong> das mensagens trocadas no sistema RAMS, uma análise preliminar dos<br />

mecanismos <strong>de</strong> segurança foi realizada, sendo que alguns se mostraram inviáveis antes<br />

mesmo <strong>de</strong> serem implementados. Entre estes, citam-se o Protocolo TESLA que, apesar<br />

<strong>de</strong> ser indicado para comunicação broadcast, se mostra <strong>de</strong>sfavorável para comunicação<br />

em múltiplos saltos, pois este impe<strong>de</strong> que o criador da mensagem calcule quanto tempo<br />

será necessário para que a mensagem chegue a todos os nós da re<strong>de</strong> e por assumir que<br />

os nós <strong>de</strong>vem se autenticar antes do início <strong>de</strong> cada transmissão. A solução baseada em<br />

Códigos <strong>de</strong> Autenticação <strong>de</strong> Mensagem (MAC) também não é indicada para<br />

comunicação broadcast, por exigir que todos os <strong>de</strong>stinatários conheçam a chave MAC<br />

dos emitentes.<br />

Outro mecanismo <strong>de</strong> segurança utilizado em re<strong>de</strong>s veiculares, proposto por<br />

Zhang et al. (2008), consiste em uma solução híbrida, que utiliza tanto assinaturas<br />

digitais quanto códigos <strong>de</strong> autenticação <strong>de</strong> mensagens, mas que se mostra <strong>de</strong>sfavorável<br />

para a aplicação RAMS por exigir que todas as verificações <strong>de</strong> assinatura sejam<br />

realizadas por uma autorida<strong>de</strong> centralizadora. Isto implica em aumento nos tempos <strong>de</strong><br />

351


transmissão e recepção das mensagens, indo contra o objetivo principal <strong>de</strong>sta aplicação,<br />

que é disseminar as mensagens <strong>de</strong> alerta o mais rápido possível.<br />

A partir <strong>de</strong>sta análise, <strong>de</strong>finiu-se que o recurso mais a<strong>de</strong>quado para garantir as<br />

referidas proprieda<strong>de</strong>s <strong>de</strong> segurança é a implantação <strong>de</strong> uma solução que utiliza<br />

assinaturas digitais. Para avaliar seu custo computacional, esta técnica foi implementada<br />

na aplicação alvo, sendo que dois algoritmos <strong>de</strong> assinaturas foram consi<strong>de</strong>rados nos<br />

experimentos simulados, o algoritmo DSA (Digital Signature Algorithm), por ser<br />

amplamente utilizado e o algoritmo ECDSA (Elliptic Curve Digital Signature<br />

Algorithm), pois requer um menor espaço <strong>de</strong> armazenamento, utiliza chaves menores e<br />

por usar operações <strong>de</strong> soma ao invés <strong>de</strong> multiplicação e somas cumulativas ao invés <strong>de</strong><br />

exponenciação.<br />

Para realização das simulações a fim <strong>de</strong> obter os dados necessários para<br />

avaliação da aplicação, foi escolhido o simulador OMNET++ (Objective Modular<br />

Network Testbed in C++), por apresentar alto nível <strong>de</strong> abstração dos mecanismos <strong>de</strong><br />

simulação <strong>de</strong> eventos discretos e maior flexibilida<strong>de</strong>, que permite uma simulação com<br />

nível <strong>de</strong> <strong>de</strong>talhes satisfatório. A fim <strong>de</strong> tornar as simulações mais realistas, foi utilizada<br />

uma ferramenta geradora <strong>de</strong> cenários <strong>de</strong> mobilida<strong>de</strong>, o SUMO (Simulation of Urban<br />

Mobility), sendo que este po<strong>de</strong> ser facilmente integrado ao simulador OMNET++<br />

(acoplamento bidirecional).<br />

Para implementação <strong>de</strong> assinaturas digitais, foi utilizada a biblioteca Crypto++ ®<br />

Library 5.6.1 1 , uma biblioteca criptográfica escrita em C++, que inclui um gran<strong>de</strong><br />

número <strong>de</strong> algoritmos. Sua infraestrutura é substancialmente baseada em templates e<br />

herança <strong>de</strong> classes. Seus arquivos individuais são <strong>de</strong> domínio público. Neste projeto,<br />

foram utilizados dois algoritmos <strong>de</strong>sta biblioteca, obtendo assim assinaturas através dos<br />

métodos DSA e ECDSA.<br />

Para o algoritmo DSA, foram utilizadas chaves <strong>de</strong> 1024 bits. Com o algoritmo<br />

ECDSA, este tamanho foi reduzido para 160 bits. O algoritmo DSA possui um tamanho<br />

da assinatura igual a 160 bits, já no ECDSA, este tamanho varia <strong>de</strong> acordo com a curva<br />

elíptica utilizada. Neste trabalho, a assinatura foi gerada com a curva “secp160r1”,<br />

apresentando um tamanho <strong>de</strong> assinatura igual a 42 bits. Esta escolha se <strong>de</strong>u após uma<br />

análise das curvas elípticas disponíveis para utilização na biblioteca Crypto++, tendo<br />

esta se mostrado favorável às necessida<strong>de</strong>s <strong>de</strong> segurança exigidas pela aplicação.<br />

As alterações realizadas no projeto inicial da aplicação RAMS não se<br />

restringiram apenas à inclusão dos mecanismos <strong>de</strong> segurança da informação, visto que<br />

foram i<strong>de</strong>ntificados outros aspectos que po<strong>de</strong>riam ser modificados a fim <strong>de</strong> melhorar o<br />

<strong>de</strong>sempenho e a confiabilida<strong>de</strong> <strong>de</strong>ste sistema.<br />

Dentre estes aprimoramentos, cita-se a retirada da camada <strong>de</strong> transporte,<br />

eliminando assim a utilização do protocolo UDP para a transmissão das mensagens.<br />

Este protocolo não oferece garantias <strong>de</strong> que o pacote chegará ao seu <strong>de</strong>stino, não<br />

trazendo nenhum benefício para aplicação. Pelo contrário, sua utilização só aumenta o<br />

tempo <strong>de</strong> transmissão da mensagem.<br />

A camada <strong>de</strong> re<strong>de</strong> também foi eliminada do projeto, sendo <strong>de</strong>scartado o uso do<br />

protocolo IP na transmissão das mensagens. Este protocolo oferece um serviço <strong>de</strong><br />

1 Disponível em http://www.cryptopp.com/<br />

352


datagramas não confiável, não trazendo vantagens à aplicação, pois os pacotes po<strong>de</strong>m<br />

chegar <strong>de</strong>sor<strong>de</strong>nados, duplicados, ou até mesmo serem perdidos. Por se tratar <strong>de</strong> uma<br />

aplicação que objetiva enviar os alertas por meio <strong>de</strong> difusão (broadcast), utilizar<br />

somente as camadas <strong>de</strong> enlace e física do protocolo 802.11g se mostrou satisfatório.<br />

Outra alteração bastante notável foi a mudança na maneira como a mensagem é<br />

criada. No método anterior, a mensagem era constituída por um buffer <strong>de</strong> um formato,<br />

em que os campos estavam separados entre si através <strong>de</strong> <strong>de</strong>limitadores. Para obter<br />

<strong>de</strong>terminado campo, era necessário percorrer todo este buffer (através <strong>de</strong> um parser) até<br />

encontrá-lo. Outra <strong>de</strong>svantagem está na adição ou retirada <strong>de</strong> campos na mensagem.<br />

Caso um <strong>de</strong>stes procedimentos fosse necessário (<strong>de</strong> fato a aplicação RAMS modificada<br />

passou a possuir mais campos), seria necessário alterar este parser em todo o código,<br />

alterando a posição dos campos nesta rotina.<br />

No aprimoramento da aplicação RAMS realizado neste trabalho, foram<br />

aplicados os conceitos <strong>de</strong> orientação a objetos, utilizando-se do encapsulamento <strong>de</strong><br />

dados. Dentre outras vantagens, cita-se o fato <strong>de</strong> que toda parte encapsulada po<strong>de</strong> ser<br />

modificada sem que os usuários da classe em questão sejam afetados. Além disto, o<br />

encapsulamento protege o acesso direto aos atributos <strong>de</strong> uma instância fora da classe no<br />

qual estes foram <strong>de</strong>clarados. Encapsular os atributos também ajuda a garantir que o<br />

estado e o comportamento <strong>de</strong> <strong>de</strong>terminado objeto se mantenham coesos.<br />

Na versão modificada do sistema RAMS, caso seja necessário acrescentar outro<br />

campo à mensagem, basta adicionar um atributo à classe. O acesso a cada atributo da<br />

mensagem passa a ser mais simples, através dos métodos get e set. O parser do buffer é<br />

então feito em um único momento, evitando que se percorra todo o código da aplicação<br />

para alterá-lo quando necessário. Isto facilita a manutenibilida<strong>de</strong> do sistema.<br />

A Figura 2 representa a estrutura <strong>de</strong> uma mensagem <strong>de</strong> alerta do sistema RAMS<br />

com autenticação <strong>de</strong> mensagens. Com o objetivo <strong>de</strong> evitar o reenvio <strong>de</strong> alertas já<br />

emitidos, ao receber a mensagem, a aplicação RAMS Mobile realiza uma comparação<br />

entre o hash gerado a partir dos campos endMAC, Tipo, Descrição, Coor<strong>de</strong>nadas e<br />

Timestamp das mensagens. Isto se faz necessário, pois o campo TTL não é cifrado,<br />

po<strong>de</strong>ndo ser facilmente alterado por nós maliciosos.<br />

Figura 2: Estrutura da Mensagem <strong>de</strong> Alerta<br />

Foram modificados também os critérios <strong>de</strong> comparação para reenvio da<br />

mensagem. Além <strong>de</strong> verificar a autenticida<strong>de</strong> e integrida<strong>de</strong> da mensagem através da<br />

assinatura digital, os campos timestamp, a distância do local do aci<strong>de</strong>nte (por meio das<br />

coor<strong>de</strong>nadas) e o TTL são analisados. Diferente do proposto por Oliveira (2010), o<br />

campo timestamp <strong>de</strong>ve ser verificado no recebimento da mensagem, sendo utilizado<br />

como meio para garantir que a mensagem <strong>de</strong> alerta foi recentemente criada. Para cada<br />

tipo <strong>de</strong> mensagem, é configurado o tempo máximo a ser consi<strong>de</strong>rado para reenvio da<br />

mensagem. Desta forma, é possível evitar que mensagens antigas, que não refletem<br />

mais a situação atual da rodovia sejam retransmitidas.<br />

353


Outro aprimoramento na aplicação consiste na verificação da distância<br />

euclidiana entre o recebimento da mensagem e o local do aci<strong>de</strong>nte, obtida através das<br />

coor<strong>de</strong>nadas X e Y, servindo como um critério <strong>de</strong> parada <strong>de</strong> reenvio das mensagens. A<br />

cada tipo <strong>de</strong> alerta é atribuída uma distância máxima, que comparada ao local <strong>de</strong><br />

recebimento da mensagem, <strong>de</strong>termina se este alerta <strong>de</strong>ve ou não ser retransmitido aos<br />

outros condutores.<br />

Por exemplo, para uma mensagem do tipo “Aci<strong>de</strong>nte com Vítimas”, a distância<br />

máxima <strong>de</strong>finida para envio é <strong>de</strong> 1000 metros. Ao receber um alerta, a aplicação RAMS<br />

Mobile calcula a distância entre o local que foi gerada a mensagem e o local em que este<br />

veículo se encontra. Caso a distância calculada seja maior que a distância máxima<br />

<strong>de</strong>finida, esta mensagem é então <strong>de</strong>scartada.<br />

4. Simulações e Avaliação dos Resultados<br />

Com o objetivo <strong>de</strong> avaliar o impacto ocasionado pela inserção dos mecanismos <strong>de</strong><br />

segurança, foram realizadas simulações. O cenário <strong>de</strong> mobilida<strong>de</strong> utilizado para as<br />

simulações é composto por três elementos e foi <strong>de</strong>senvolvido por Oliveira (2010), com<br />

utilização da ferramenta geradora <strong>de</strong> cenários <strong>de</strong> mobilida<strong>de</strong> SUMO. As etapas para<br />

criação <strong>de</strong>ste cenário consistem na criação da via <strong>de</strong> circulação, na caracterização dos<br />

veículos e na geração dos movimentos <strong>de</strong>stes veículos.<br />

Para criação da via <strong>de</strong> circulação, Oliveira (2010) consi<strong>de</strong>rou um trecho real da<br />

rodovia BR-101 entre os municípios <strong>de</strong> Itapema e Porto Belo, no estado <strong>de</strong> Santa<br />

Catarina (cerca <strong>de</strong> 50 quilômetros da capital, Florianópolis). Este trecho possui cinco<br />

quilômetros <strong>de</strong> extensão e é composto por dois sentidos e duas faixas para cada sentido,<br />

totalizando quatro pistas <strong>de</strong> circulação. A velocida<strong>de</strong> máxima configurada segue a<br />

legislação, 100 Km/h. No cenário <strong>de</strong>senvolvido por Oliveira (2010), o nó fixo (que<br />

possui a aplicação RAMS Manager), responsável por criar e disseminar o alerta, está<br />

posicionado no início do quilometro cinco, mesmo local em que ocorre o aci<strong>de</strong>nte. Este<br />

aci<strong>de</strong>nte obstrui as duas pistas sentido sul.<br />

A fim <strong>de</strong> i<strong>de</strong>ntificar um valor padrão para o TTL (responsável por <strong>de</strong>terminar o<br />

número <strong>de</strong> saltos <strong>de</strong> cada alerta na re<strong>de</strong>), foram realizadas simulações com diferentes<br />

valores, po<strong>de</strong>ndo assim <strong>de</strong>finir qual se torna mais a<strong>de</strong>quado para a aplicação. Para estas<br />

simulações, foi utilizado um cenário com 150 veículos, levando em consi<strong>de</strong>ração o<br />

número <strong>de</strong> pacotes gerados, as colisões ocorridas e a quantida<strong>de</strong> <strong>de</strong> nós atendidos.<br />

Consi<strong>de</strong>rou-se que o valor <strong>de</strong> TTL i<strong>de</strong>al para aplicação é cinco, visto que ao realizar as<br />

simulações com este valor, todos os nós da re<strong>de</strong> são atendidos, e é o valor que apresenta<br />

a menor proporção <strong>de</strong> pacotes gerados e colididos após esta totalida<strong>de</strong> <strong>de</strong> atendimento.<br />

Para cada simulação realizada foi consi<strong>de</strong>rado um tempo igual a cinco minutos,<br />

ao fim do qual os dados foram coletados e analisados. O intervalo entre retransmissões<br />

da aplicação RAMS Manager foi <strong>de</strong> 20 segundos, <strong>de</strong> acordo com os testes realizados<br />

em Oliveira (2010). Estas simulações foram realizadas em um computador com<br />

processador Intel Core i3, com frequência <strong>de</strong> clock <strong>de</strong> 2,27 GHz, 3GB <strong>de</strong> memória<br />

RAM e o sistema operacional Ubuntu versão 11.4, baseado em Linux.<br />

Através <strong>de</strong> uma análise comparativa dos resultados encontrados antes e após a<br />

inclusão dos mecanismos, foi possível realizar uma avaliação quantitativa dos impactos<br />

causados à aplicação, levando em consi<strong>de</strong>ração o tempo <strong>de</strong> atraso no envio e<br />

354


ecebimento das mensagens, o número <strong>de</strong> colisões <strong>de</strong> pacotes e a quantida<strong>de</strong> <strong>de</strong> nós<br />

atendidos.<br />

A fim <strong>de</strong> avaliar o impacto da utilização <strong>de</strong> assinaturas digitais na aplicação<br />

RAMS, foram realizadas simulações em <strong>de</strong>z diferentes cenários. Estes cenários diferem<br />

apenas na quantida<strong>de</strong> <strong>de</strong> veículos que circulam na via. Para cada cenário, foram<br />

realizados três tipos <strong>de</strong> simulação. O primeiro tipo refere-se à aplicação RAMS sem os<br />

mecanismos <strong>de</strong> segurança, servindo como valor base para as comparações. O segundo<br />

tipo consiste na assinatura digital das mensagens através do algoritmo DSA. Por fim,<br />

têm-se as simulações em que as mensagens são assinadas através do algoritmo ECDSA.<br />

Para cada um dos cenários simulados, foi analisada a quantida<strong>de</strong> <strong>de</strong> nós que<br />

receberam o alerta emitido pela aplicação RAMS. Esta contagem inclui tanto o<br />

recebimento dos alertas criados pelo operador através da aplicação RAMS Manager,<br />

quanto os recebidos através da aplicação RAMS Mobile embarcada em outros veículos,<br />

responsável pelo reenvio <strong>de</strong>stas mensagens.<br />

Em oito dos <strong>de</strong>z cenários simulados sem o uso da assinatura digital, todos os<br />

veículos receberam o alerta do aci<strong>de</strong>nte ocorrido. No entanto, nos outros dois cenários,<br />

esta totalida<strong>de</strong> <strong>de</strong> atendimento não foi obtida. O primeiro cenário em que nem todos os<br />

nós receberam mensagens é composto por <strong>de</strong>z veículos. Destes, dois veículos não<br />

receberam nenhuma alerta. A mesma situação ocorre no segundo cenário, composto por<br />

20 veículos, em que dois veículos também não receberam o alerta.<br />

Por <strong>de</strong>pen<strong>de</strong>r do encaminhamento colaborativo das mensagens, cenários com<br />

poucos nós apresentam certa dificulda<strong>de</strong> na distribuição das mensagens, pois estes nós<br />

atuam como roteadores no envio das mensagens. Nestes casos, o envio da mensagem<br />

por difusão ocorreu, mas o fato dos veículos estarem distantes uns dos outros impediu<br />

que todos estes nós recebessem o alerta. Conforme mencionado, a distância máxima<br />

para que haja comunicação entre dois veículos foi limitada em 500 metros.<br />

Para os outros dois tipos <strong>de</strong> simulação, utilizando assinaturas digitais com os<br />

diferentes algoritmos, não houve diferença na quantida<strong>de</strong> <strong>de</strong> nós atendidos,<br />

permanecendo os valores supracitados. Isto <strong>de</strong>monstra que a inclusão dos mecanismos<br />

<strong>de</strong> segurança não impe<strong>de</strong> a aplicação RAMS <strong>de</strong> atingir um dos seus principais<br />

objetivos, que é enviar as mensagens ao maior número <strong>de</strong> veículos possível.<br />

Apesar <strong>de</strong> não aten<strong>de</strong>r a todos os veículos em duas situações, os aprimoramentos<br />

não comprometem ou prejudicam a eficácia da aplicação RAMS, pois a quantida<strong>de</strong> <strong>de</strong><br />

veículos nestes dois cenários foge à realida<strong>de</strong> da rodovia, visto que <strong>de</strong> acordo com<br />

informações da Polícia Rodoviária Fe<strong>de</strong>ral, circulam neste local cerca <strong>de</strong> 1880 veículos<br />

por hora, o que representa uma média <strong>de</strong> 156 veículos a cada cinco minutos.<br />

Para auxiliar na avaliação da eficiência e da eficácia da aplicação RAMS<br />

aprimorada, foi levado em consi<strong>de</strong>ração a quantida<strong>de</strong> <strong>de</strong> colisões <strong>de</strong> pacotes na re<strong>de</strong>.<br />

Uma colisão <strong>de</strong> pacotes acontece sempre que dois ou mais nós tentam transmitir dados<br />

ao mesmo tempo. As colisões diminuem o <strong>de</strong>sempenho da re<strong>de</strong>, que fica parada por<br />

alguns milissegundos quando ocorre este evento. A Figura 3 ilustra, para cada cenário<br />

simulado, uma comparação entre a quantida<strong>de</strong> <strong>de</strong> colisões <strong>de</strong> pacotes ocorridas na<br />

aplicação RAMS, antes e após as modificações realizadas neste trabalho, além <strong>de</strong><br />

<strong>de</strong>monstrar a quantida<strong>de</strong> <strong>de</strong> colisões <strong>de</strong> pacotes com os mecanismos <strong>de</strong> segurança<br />

implementados.<br />

355


960<br />

920<br />

880<br />

840<br />

800<br />

760<br />

720<br />

680<br />

640<br />

600<br />

560<br />

520<br />

480<br />

440<br />

400<br />

360<br />

320<br />

280<br />

240<br />

200<br />

160<br />

120<br />

80<br />

40<br />

0<br />

10 20 30 48 97 146 150 160 170 292<br />

RAMS Original<br />

Sem Mecanismos<br />

DSA<br />

ECDSA<br />

Figura 3: Quantida<strong>de</strong> <strong>de</strong> Colisões <strong>de</strong> Pacotes em cada Cenário<br />

Conforme ilustrado na Figura 3, houve uma redução consi<strong>de</strong>rável na quantida<strong>de</strong><br />

<strong>de</strong> colisões <strong>de</strong> pacotes quando a aplicação RAMS original é comparada com a<br />

aprimorada. Isto ocorreu <strong>de</strong>vido à retirada das camadas UDP e IP da aplicação,<br />

conforme citado na seção referente aos aprimoramentos realizados na aplicação RAMS.<br />

Ainda analisando a Figura 3, percebe-se que houve uma pequena variação na<br />

quantida<strong>de</strong> <strong>de</strong> colisões <strong>de</strong> pacotes, se comparadas às simulações sem mecanismos <strong>de</strong><br />

segurança às com este mecanismo. Isto <strong>de</strong>monstra que as modificações realizadas neste<br />

trabalho melhoraram o <strong>de</strong>sempenho da re<strong>de</strong> veicular simulada, e mesmo com a inclusão<br />

dos mecanismos <strong>de</strong> segurança, este <strong>de</strong>sempenho não foi prejudicado.<br />

Outro critério levado em consi<strong>de</strong>ração para avaliar a eficiência e a eficácia da<br />

aplicação RAMS aprimorada foi o atraso no tempo <strong>de</strong> criação e envio da mensagem<br />

pela aplicação RAMS Manager e seu recebimento pela aplicação RAMS Mobile,<br />

embarcada nos veículos participantes da re<strong>de</strong>. Os resultados das simulações<br />

<strong>de</strong>monstraram que a utilização <strong>de</strong> assinaturas digitais aumenta o tempo necessário para<br />

criação e envio do alerta. Este tempo extra refere-se à soma dos tempos necessários para<br />

a geração da chave privada e para a assinatura do alerta. O algoritmo ECDSA utilizou<br />

uma quantia maior <strong>de</strong> tempo do que o DSA para cumprir estes procedimentos.<br />

Apesar <strong>de</strong> não po<strong>de</strong>r afirmar que estas diferenças são <strong>de</strong>sprezíveis no caso <strong>de</strong><br />

um ambiente real, percebe-se que estes valores são pequenos, não ocasionando impactos<br />

consi<strong>de</strong>ráveis à aplicação RAMS. Além do tempo <strong>de</strong> criação, é necessário analisar o<br />

tempo <strong>de</strong> recebimento dos alertas, para verificar se houve impacto na aplicação <strong>de</strong>vido à<br />

utilização das assinaturas digitais. A Figura 4 a seguir representa um comparativo entre<br />

o tempo <strong>de</strong> recebimento dos alertas para um cenário com 150 veículos, em cada tipo <strong>de</strong><br />

simulação. O eixo “y” representa o tempo <strong>de</strong> recebimento do alerta e cada veículo é<br />

representado por um ponto no eixo “x”.<br />

356


1000<br />

100<br />

10<br />

ECDSA<br />

DSA<br />

1<br />

0,1<br />

Sem<br />

0,01<br />

Mecanismo<br />

0,001<br />

0,0001<br />

Figura 4: Tempo <strong>de</strong> Recebimento das Mensagens – Cenário com 150 veículos<br />

A sobreposição das curvas formadas pelo tempo <strong>de</strong> recebimento das mensagens<br />

<strong>de</strong> alerta, ilustrada na Figura 4 <strong>de</strong>monstra que houve um acréscimo no tempo necessário<br />

para recebimento dos alertas pela aplicação RAMS Mobile com a utilização dos<br />

mecanismos <strong>de</strong> segurança. Este tempo refere-se à verificação da assinatura digital.<br />

Utilizando o algoritmo DSA, o tempo necessário para este procedimento foi menor<br />

comparado ao algoritmo ECDSA.<br />

Neste cenário, a diferença entre o tempo necessário para o primeiro veículo<br />

receber o alerta em uma simulação sem mecanismos <strong>de</strong> segurança e com assinatura<br />

através do método DSA é <strong>de</strong> 0,21 milissegundos. Utilizando o método ECDSA, esta<br />

diferença sobe para 6,9 milissegundos.<br />

Para o centésimo veículo a receber o alerta, a diferença entre o tempo <strong>de</strong><br />

recebimento sem mecanismos <strong>de</strong> segurança e com assinatura através do algoritmo DSA<br />

é <strong>de</strong> 32,1 milissegundos. Com o algoritmo ECDSA, este valor sobe para 0,34 segundos.<br />

Mesmo tendo sido encontradas alterações nos tempos necessários para o envio e o<br />

recebimento das mensagens <strong>de</strong> alerta, para este critério a utilização <strong>de</strong> assinaturas<br />

digitais na aplicação RAMS se mostra favorável, pois os prejuízos que po<strong>de</strong>m vir a ser<br />

causados por nós maliciosos são imensamente maiores do que os mínimos impactos<br />

apresentados nestas simulações.<br />

5. Conclusão<br />

Ao realizar o estudo sobre as ameaças às re<strong>de</strong>s veiculares e seus impactos, foi possível<br />

observar a importância da segurança da comunicação em re<strong>de</strong>s veiculares. Se os<br />

requisitos <strong>de</strong> segurança apresentados não forem respeitados, não somente a aplicação<br />

per<strong>de</strong>rá sua confiabilida<strong>de</strong>, mas também a vida <strong>de</strong> seres humanos po<strong>de</strong> ser colocada em<br />

risco, em função da busca <strong>de</strong> benefícios <strong>de</strong> alguns usuários mal intencionados.<br />

357


Os aprimoramentos realizados na maneira como a mensagem é criada pela<br />

aplicação RAMS Manager melhoraram a manutenção do sistema. Além disto, conforme<br />

os valores encontrados nas simulações, as modificações realizadas também trouxeram<br />

benefícios ao sistema, tais como a diminuição na quantida<strong>de</strong> <strong>de</strong> colisão <strong>de</strong> pacotes e<br />

redução no tempo necessário para envio e recebimento das mensagens <strong>de</strong> alerta.<br />

Em todos os cenários simulados, <strong>de</strong>ntre os três critérios analisados, a utilização<br />

<strong>de</strong> assinaturas digitais apresentou impactos ao sistema em apenas um <strong>de</strong>les, o tempo<br />

necessário para envio e recebimento dos alertas. Nestes testes, o algoritmo DSA se<br />

mostrou mais vantajoso em relação ao algoritmo ECDSA, apresentando tempos<br />

menores tanto para a assinatura da mensagem quanto para sua verificação. Pelo fato dos<br />

dois métodos agregarem o mesmo nível <strong>de</strong> segurança à aplicação, i<strong>de</strong>ntificou-se que<br />

para esta aplicação a melhor forma <strong>de</strong> garantir a autenticida<strong>de</strong> e a integrida<strong>de</strong> dos dados<br />

po<strong>de</strong> ser obtida através da utilização do algoritmo DSA.<br />

Nas simulações realizadas, o impacto ocasionado pela utilização das assinaturas<br />

digitais é não é tão significativo se comparado aos benefícios que a segurança da<br />

informação traz ao sistema, aumentando a sua confiabilida<strong>de</strong>. Além disto, quando a<br />

segurança dos dados não é levada em consi<strong>de</strong>ração, os prejuízos causados pela ação <strong>de</strong><br />

nós maliciosos são difíceis <strong>de</strong> serem mensurados, principalmente em aplicações como<br />

estas, em que há vidas envolvidas.<br />

No entanto, como em qualquer simulação, os resultados encontrados não <strong>de</strong>vem<br />

ser tomados como verda<strong>de</strong> absoluta, mas sim ser interpretados <strong>de</strong> forma cuidadosa,<br />

visto que em um ambiente <strong>de</strong> simulação não são consi<strong>de</strong>rados todos os aspectos da re<strong>de</strong>,<br />

apenas os mais importantes.<br />

Referências<br />

ALVES, R. dos S et al; Uma Análise Experimental da Capacida<strong>de</strong> <strong>de</strong> Re<strong>de</strong>s Ad Hoc Veiculares.<br />

In: SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES E SISTEMAS<br />

DISTRIBUÍDOS, 27., 2008, Recife. SBRC. p.1-6.<br />

ALVES, Rafael dos S.; CAMPBELL, Igor do V.; COUTO, Rodrigo <strong>de</strong> S.; CAMPISTA, Miguel<br />

Elias M.; MORAES, Igor M.; RUBINSTEIN, Marcelo G.; COSTA, Luís Henrique M. K.;<br />

DUARTE, Otto Carlos M. B.; ABDALLA, Michel. Re<strong>de</strong>s Veiculares: Princípios,<br />

Aplicações e Desafios. In: SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES<br />

E SISTEMAS DISTRIBUÍDOS, 2009, Recife. Livro <strong>de</strong> Mini-Cursos... Recife: SBRC,<br />

2006. p.200-246.<br />

OLIVEIRA, R. Desenvolvimento <strong>de</strong> uma aplicação distribuída utilizando re<strong>de</strong>s veiculares para<br />

sinalizar problemas em rodovias. 2010. 107f. Trabalho <strong>de</strong> Conclusão <strong>de</strong> Curso –<br />

Universida<strong>de</strong> do Vale do Itajaí, São José, 2010.<br />

PAULA, WELLINGTON PASSOS DE. Um mecanismo <strong>de</strong> reputação para re<strong>de</strong>s veiculares<br />

tolerantes a atrasos e <strong>de</strong>sconexões. 2009. 94f. Tese. Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Minas Gerais,<br />

Minas Gerais, 2009.<br />

RAYA, M.; HUBAUX, J. P. The security of vehicular ad hoc networks. In: SASN´05:<br />

PROCEEDINGS OF THE 3rd ACM WORKSHOP ON SECURITY OF AD HOC AND<br />

SENSOR NETWORSKS, 2005, New York, 2005, p. 11-21.<br />

ZHANG, C.; LIN, Xiadong; LU, Rongxing; HO, Pin-Pan; SHEN, Xuemin. An efficient<br />

message authentication scheme for vehicular communicatios. In: IEEE TRANSACTIONS<br />

ON VEHICULAR TECHNOLOGY, 57, 2008.<br />

358


Uma Maneira Simples <strong>de</strong> Obter Regiões <strong>de</strong> Interesse em<br />

Imagens <strong>de</strong> Impressões Digitais<br />

Igor L. P. Andrezza 1,2 , Erick V. C. <strong>de</strong> L. Borges 1,2 , Adriano da S. Marinho 1,2 ,<br />

Adriana E. <strong>de</strong> Oliveira 1,2 , José R. T. Marques 2 , Pedro A. Jr. 2 , e Leonardo V.<br />

Batista 1<br />

1 Departamento <strong>de</strong> Informática – Universida<strong>de</strong> Fe<strong>de</strong>ral da Paraíba (UFPB)<br />

58051-900 – João Pessoa – PB – Brasil<br />

2 Departamento <strong>de</strong> Pesquisa e Desenvolvimento, Divisão <strong>de</strong> Segurança<br />

Vsoft Tecnologia, Joao Pessoa, Paraiba<br />

{igor, erick, adrianosmarinho, drill}@di.ufpb.br,<br />

{raphaelmarques, pedro}@vsoft.com.br,<br />

leonardo@di.ufpb.br<br />

Abstract. In or<strong>de</strong>r to use fingerprint images to i<strong>de</strong>ntify people, image<br />

segmentation pre-processing is normally nee<strong>de</strong>d. In this paper, we show a<br />

simple technique to segment fingerprint images in background and<br />

foreground, so as to obtain the Region-Of-Interest (ROI) by using standard<br />

<strong>de</strong>viation, median and binarization filters.<br />

Resumo. Segmentar imagens <strong>de</strong> impressão digital para obter a região <strong>de</strong><br />

interesse (ROI) é uma etapa necessária ao reconhecimento biométrico<br />

automático <strong>de</strong> indivíduos. Neste trabalho, apresentamos um método simples,<br />

que usa os filtros <strong>de</strong> <strong>de</strong>svio-padrão, mediana e binarização, para extração da<br />

região <strong>de</strong> interesse <strong>de</strong> impressões digitais.<br />

1. Introdução<br />

Com a proliferação <strong>de</strong> serviços baseados em Internet, sistemas <strong>de</strong> i<strong>de</strong>ntificação<br />

confiáveis tornaram-se componentes chaves <strong>de</strong> várias aplicações que disponibilizam<br />

serviços para usuários autenticados. Métodos tradicionais para estabelecer a i<strong>de</strong>ntida<strong>de</strong><br />

<strong>de</strong> um usuário incluem mecanismos baseados em conhecimento (e.g., senhas) e<br />

mecanismos baseados em tokens (e.g., cartões <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>). Porém, tais mecanismos<br />

po<strong>de</strong>m ser facilmente perdidos, roubados ou até mesmo manipulados, objetivando um<br />

acesso não autorizado. Neste contexto, entra em cena a autenticação por Biometria<br />

(Ross, Nandakumar, & Jain, 2006).<br />

A Biometria oferece um mecanismo <strong>de</strong> autenticação confiável utilizando traços<br />

(físicos ou comportamentais) que permitam i<strong>de</strong>ntificar usuários baseados em suas<br />

características naturais. Assim, utilizando a Biometria é possível estabelecer a<br />

i<strong>de</strong>ntida<strong>de</strong> <strong>de</strong> um usuário baseado em quem ele é (who you are) ao invés <strong>de</strong> em o que<br />

ele possui (what you possess) ou <strong>de</strong> o que ele lembra (what you remember) (Ross,<br />

Nandakumar, & Jain, 2006).<br />

Atualmente, a impressão digital é o traço biométrico mais utilizado no mundo.<br />

Isto se <strong>de</strong>ve à unicida<strong>de</strong> das mesmas, bem como ao baixo custo associado aos produtos<br />

359


que <strong>de</strong>la se utilizam. I<strong>de</strong>ntificar suspeitos <strong>de</strong> um crime é um exemplo <strong>de</strong> uso prático das<br />

impressões digitais. Sistemas que i<strong>de</strong>ntificam automaticamente indivíduos utilizando<br />

impressões digitais são chamados <strong>de</strong> AFIS (Automatized Fingerprint I<strong>de</strong>ntification<br />

Systems). Neles, normalmente uma etapa <strong>de</strong> segmentação das imagens <strong>de</strong> impressão<br />

digital é necessária, pois separar a região <strong>de</strong> interesse faz com que o tempo <strong>de</strong><br />

processamento diminua e evita erros in<strong>de</strong>sejados (Maltoni, Maio, Jain, & Prabhakar,<br />

2009).<br />

Neste trabalho, apresentamos um método <strong>de</strong> extração da ROI (Region Of<br />

Interest, região <strong>de</strong> interesse) em imagens <strong>de</strong> impressão digital que usa os filtros <strong>de</strong><br />

<strong>de</strong>svio-padrão, mediana e binarização, em <strong>de</strong>trimento <strong>de</strong> métodos complexos que<br />

utilizam classificadores.<br />

2. Fundamentação Teórica<br />

Nesta seção apresentamos os conceitos referentes a biometria, impressões digitais e<br />

segmentação <strong>de</strong> imagens necessários para o entendimento <strong>de</strong>ste trabalho.<br />

2.1 Biometria<br />

O termo Biometria se refere ao uso <strong>de</strong> características físicas ou comportamentais, tais<br />

como face, íris, impressão digital, voz e keystroke (forma <strong>de</strong> digitar), para i<strong>de</strong>ntificar<br />

pessoas automaticamente. Uma vez que os i<strong>de</strong>ntificadores biométricos não po<strong>de</strong>m ser<br />

facilmente extraviados, forjados, ou compartilhados, métodos <strong>de</strong> i<strong>de</strong>ntificação<br />

biométricos são consi<strong>de</strong>rados mais confiáveis do que métodos baseados em tokens<br />

(como smart cards) ou senhas (Maltoni, Maio, Jain, & Prabhakar, 2009). Assim, os<br />

sistemas <strong>de</strong> reconhecimento biométrico estão sendo cada vez mais implantados em um<br />

gran<strong>de</strong> número <strong>de</strong> aplicações governamentais e civis.<br />

Devido ao fato das impressões digitais serem únicas e invariantes em relação à<br />

ida<strong>de</strong> do indivíduo, técnicas <strong>de</strong> reconhecimento utilizando impressões digitais têm sido<br />

amplamente aplicadas em sistemas <strong>de</strong> i<strong>de</strong>ntificação pessoal (Liu, Zhao, Guo, Liang, &<br />

Tian, 2011). Atualmente, o reconhecimento utilizando impressões digitais é o método<br />

mais popular <strong>de</strong> reconhecimento biométrico e é utilizado em todo o mundo pelas<br />

autorida<strong>de</strong>s policiais na procura <strong>de</strong> suspeitos (Zhu, Yin, Hu, & Zhang, 2006).<br />

Apesar <strong>de</strong> ser um método popular, o reconhecimento biométrico utilizando<br />

impressões digitais não é perfeito. Erros que variam <strong>de</strong>s<strong>de</strong> a forma como as impressões<br />

digitais são capturadas pelo sistema até a forma do matching po<strong>de</strong>m ocorrer. Para uma<br />

referência completa dos tipos <strong>de</strong> erros e suas causas, o leitor <strong>de</strong>ve consultar (Maltoni,<br />

Maio, Jain, & Prabhakar, 2009).<br />

2.2 Extração da região <strong>de</strong> interesse em impressões digitais<br />

Uma imagem da impressão digital consiste em cristas (linhas escuras) e vales (linhas em<br />

branco) intercaladas. As terminações e bifurcações das cristas, chamadas minúcias, são<br />

os traços mais característicos da impressão digital (Zhu, Yin, Hu, & Zhang, 2006). A<br />

maioria dos AFIS é baseada em minúcias.<br />

Imagens <strong>de</strong> impressões digitais geralmente precisam ser segmentadas em<br />

segundo plano e primeiro plano (on<strong>de</strong> o primeiro plano é a região <strong>de</strong> interesse) para<br />

360


emover as regiões que não contêm informações úteis antes <strong>de</strong> executar outros passos <strong>de</strong><br />

processamento, tais como o realce e <strong>de</strong>tecção <strong>de</strong> minúcias. Desta forma, o<br />

processamento <strong>de</strong> imagem vai consumir menos tempo <strong>de</strong> CPU e evitar erros<br />

in<strong>de</strong>sejados, como a <strong>de</strong>tecção <strong>de</strong> minúcias espúrias em imagem <strong>de</strong> baixa qualida<strong>de</strong>.<br />

2.3 Trabalhos relacionados<br />

Nos parágrafos seguintes, citamos alguns trabalhos relacionados ao nosso.<br />

Em (Afsar, Arif, & Hussain, 2005), um algoritmo <strong>de</strong> segmentação <strong>de</strong> impressão<br />

digital que utiliza Fisher Discriminant Analysis and Learning Vector Quantization<br />

(LVQ) Neural Networks foi proposto. Os autores alegam uma taxa <strong>de</strong> apenas 1,8% <strong>de</strong><br />

erros na segmentação <strong>de</strong> todas as bases <strong>de</strong> imagens FVC 2000 (Maio, Maltoni, Capelli,<br />

Wayman & Jain, 2000).<br />

(Shi, Wang, Qi, & Xu, 2004) apresenta um algoritmo que introduz novas<br />

características para extrair ROI em imagens <strong>de</strong> impressões digitais. Os autores utilizam<br />

uma etapa <strong>de</strong> pré-processamento para estimar a qualida<strong>de</strong> da impressão digital antes da<br />

segmentação. Depois, propõem e utilizam uma nova característica, <strong>de</strong>nominada<br />

Momento Excêntrico, para localizar a fronteira borrada. Os autores informam que o<br />

algoritmo foi testado na base <strong>de</strong> imagens DB3 do FVC 2002 (Maio, Maltoni, Capelli,<br />

Wayman & Jain, 2002), entretanto não informam um percentual <strong>de</strong> acertos.<br />

Finalmente, (Bazen & Gerez, 2001) apresentou um algoritmo <strong>de</strong> segmentação <strong>de</strong><br />

impressões digitais baseado em três características: a média, a coerência e a variância.<br />

Ele treina um classificador linear ótimo para classificar por pixel.<br />

3. Algoritmo Proposto<br />

A fim <strong>de</strong> i<strong>de</strong>ntificar a região <strong>de</strong> interesse em uma imagem <strong>de</strong> impressão digital,<br />

<strong>de</strong>senvolvemos um algoritmo <strong>de</strong> segmentação simples e eficaz. Seu fluxo <strong>de</strong> dados é<br />

mostrado na Figura 1 e seus passos são <strong>de</strong>scritos a seguir.<br />

Figura 1: Fluxo <strong>de</strong> dados do algoritmo<br />

A Figura 2 mostra a impressão digital usada para ilustrar o nosso algoritmo <strong>de</strong><br />

segmentação.<br />

361


Figura 2: Imagem usada para ilustrar os passos do nosso algoritmo<br />

Em primeiro lugar, um filtro <strong>de</strong> <strong>de</strong>svio padrão (Hengl, 2011) é aplicado à<br />

imagem da impressão digital <strong>de</strong> modo a obter sua variação em escala <strong>de</strong> cinza e dividir a<br />

imagem em blocos. O tamanho dos blocos é um parâmetro <strong>de</strong>finido pelo usuário na<br />

aplicação do filtro <strong>de</strong> <strong>de</strong>svio padrão. A Figura 3 ilustra o resultado <strong>de</strong>sta operação.<br />

O próximo passo é reduzir a imagem a partir <strong>de</strong> blocos <strong>de</strong> pixels. Todos os<br />

pixels em cada bloco resultante do processo <strong>de</strong> <strong>de</strong>svio padrão têm o mesmo valor.<br />

Consequentemente, cada bloco irá produzir um único pixel. Esta etapa é realizada<br />

visando à eliminação <strong>de</strong> informações redundantes, <strong>de</strong> modo que os resultados dos<br />

próximos passos não sejam afetados erroneamente. A Figura 3b mostra o resultado da<br />

segunda etapa.<br />

Por conseguinte, a fim <strong>de</strong> homogeneizar a imagem reduzida, um filtro <strong>de</strong><br />

mediana (Arias-Castro & Donoho, 2009) é aplicado a ela. A mediana é usada em vez da<br />

média <strong>de</strong>vido à sua capacida<strong>de</strong> <strong>de</strong> preservar as bordas da imagem. A Figura 3c ilustra o<br />

resultado.<br />

A imagem é binarizada no próximo passo, como mostrado na Figura 3d, a fim <strong>de</strong><br />

separar o plano <strong>de</strong> fundo e o primeiro plano. A maior região contínua do primeiro plano,<br />

i.e., a maior região branca, é então i<strong>de</strong>ntificada (usando o algoritmo conhecido como<br />

Region Growing) e marcada como ROI (Figura 3e). Por fim, a imagem segmentada é<br />

ampliada <strong>de</strong> volta ao seu tamanho normal. A Figura 4 ilustra o resultado final e a<br />

imagem original cercada pelo contorno da ROI.<br />

362


(a)<br />

(b)<br />

(c)<br />

(d)<br />

Figura 3: Passos do algoritmo proposto. (a) Desvio padrão. (b) Redução por<br />

blocos. (c) Mediana. (d) Binarização. (e) Maior região contínua.<br />

(e)<br />

363


(a)<br />

Figura 4: Último passo. (a) Resultado da extração da maior região contínua. (b)<br />

Desenho do contorno da ROI na imagem original.<br />

4. Resultados<br />

Para avaliar a nossa técnica, efetuamos um teste <strong>de</strong> calibração dos parâmetros dos<br />

filtros, <strong>de</strong>scrito a seguir.<br />

4.1 Calibração dos parâmetros dos filtros<br />

Quatro parâmetros po<strong>de</strong>m ter seus valores alterados no algoritmo para que se obtenha<br />

uma melhor região <strong>de</strong> interesse: tamanho da janela mediana, limiar <strong>de</strong> binarização e os<br />

tamanhos do bloco interno e do bloco externo. O tamanho do bloco interno refere-se ao<br />

tamanho dos blocos produzidos pelo <strong>de</strong>svio-padrão e o tamanho do bloco externo<br />

refere-se ao tamanho da janela usada para calcular o <strong>de</strong>svio-padrão. Para calibrar estes<br />

valores e <strong>de</strong>scobrir quais produzem os melhores resultados, escolhemos aleatoriamente<br />

50 imagens do banco <strong>de</strong> impressões digitais UareU (NEUROtechnology, 2007). Os<br />

valores padrão dos parâmetros que produzem os melhores resultados são, baseados em<br />

testes empíricos, respectivamente: 2, 25, 5, 10. A Figura 5 mostra os resultados do<br />

algoritmo (com variações nos parâmetros) para a mesma imagem <strong>de</strong> entrada, on<strong>de</strong> a<br />

Figura 5a mostra o resultado com os melhores valores. Os resultados são <strong>de</strong>scritos nos<br />

parágrafos seguintes.<br />

Variações no tamanho da janela da mediana (abaixo e acima do melhor valor,<br />

respectivamente) foram testadas nas Figuras 5b e 5c. Durante o teste, observou-se que,<br />

quanto menor o valor, mais sensível é o algoritmo (<strong>de</strong>tectando as mínimas falhas da<br />

imagem). O aumento no valor produz um contorno mais preciso (que <strong>de</strong>sconsi<strong>de</strong>ra<br />

pequenas imperfeições).<br />

O limiar <strong>de</strong> binarização foi testado nas Figuras 5d e 5e. Na Figura 5d, ele foi<br />

testado com um valor abaixo do melhor, enquanto que na Figura 5e, com um valor<br />

acima. Observa-se que a diminuição <strong>de</strong>ste parâmetro faz com que o algoritmo encontre<br />

uma região <strong>de</strong> interesse muito maior (e, portanto, imprecisa). Aumentar o valor torna o<br />

algoritmo mais preciso, causando na região <strong>de</strong> interesse a eliminação <strong>de</strong> partes <strong>de</strong> baixa<br />

qualida<strong>de</strong> da impressão digital.<br />

(b)<br />

364


(a) (b) (c)<br />

(d) (e) (f)<br />

(g) (h) (i)<br />

Figura 5: Resultados com diferentes valores nos parâmetros.<br />

Nas Figuras 5f e 5g, valores diferentes para o tamanho do bloco interno (abaixo<br />

e acima do melhor valor) foram aplicados. O valor mais baixo leva a um maior<br />

<strong>de</strong>talhamento da ROI, enquanto o oposto ocorre com o mais elevado. Nota-se também<br />

que, quanto maior o valor, menor o tempo <strong>de</strong> processamento do algoritmo, conforme<br />

mostra a Figura 6.<br />

365


Figura 6: Gráfico do tempo <strong>de</strong> processamento x tamanho do bloco interno.<br />

Finalmente, as Figuras 5h e 5i ilustram a variação do tamanho do bloco externo,<br />

respectivamente acima e abaixo do melhor valor. O tamanho do bloco externo sempre<br />

tem que ser maior que o tamanho do bloco interno. Os testes indicam que, quanto mais<br />

próximo do melhor valor, mais sensível é o resultado do algoritmo. Além disso, quanto<br />

maior o valor do tamanho do bloco externo, maior o tempo <strong>de</strong> processamento, conforme<br />

mostra a Figura 7.<br />

Figura 7: Gráfico do tempo <strong>de</strong> processamento x tamanho do bloco externo.<br />

5. Discussão e Conclusão<br />

Neste trabalho, uma nova técnica para extrair a região <strong>de</strong> interesse em imagens <strong>de</strong><br />

impressão digital foi apresentada. Em primeiro lugar, o filtro <strong>de</strong> <strong>de</strong>svio padrão é<br />

aplicado à imagem, esta é reduzida em blocos e um filtro <strong>de</strong> mediana é aplicado para<br />

homogeneizá-la. A imagem homogeneizada é binarizada e a região <strong>de</strong> interesse é<br />

extraída a partir da maior região contínua. Por último, a imagem é <strong>de</strong>volvida ao seu<br />

tamanho normal.<br />

366


Quatro parâmetros referentes aos filtros (tamanho da janela mediana, limiar <strong>de</strong><br />

binarização e os tamanhos do bloco interno e do bloco externo) foram testados para<br />

<strong>de</strong>scobrir quais os valores representavam as melhores escolhas (2, 25, 5, 10) para a<br />

aplicação pretendida. Depen<strong>de</strong>ndo da segmentação <strong>de</strong>sejada, não necessariamente<br />

<strong>de</strong>vemos usar esses valores que representam a melhor escolha. Consi<strong>de</strong>ramos a<br />

possibilida<strong>de</strong> <strong>de</strong> troca dos valores como uma vantagem do nosso algoritmo.<br />

Quando comparado com outras técnicas, verificamos que a simplicida<strong>de</strong> <strong>de</strong><br />

implementação <strong>de</strong> nossa técnica é uma vantagem. Por exemplo, ela não usa<br />

classificadores como (Bazen & Gerez, 2001), (Yin, Zhu, Yang, Zhang, & Hu, 2007) e<br />

(Zhu, Yin, Hu, & Zhang, 2006), e não <strong>de</strong>senvolve uma nova medida como (Shi, Wang,<br />

Qi, & Xu, 2004) e (Afsar, Arif, & Hussain, 2005). Além disso, ela permite a<br />

manutenção das regiões <strong>de</strong> baixa qualida<strong>de</strong> na ROI e o ajuste entre a sua velocida<strong>de</strong> ou<br />

precisão, através da variação <strong>de</strong> parâmetros. Porém, a fim <strong>de</strong> comparar a eficácia <strong>de</strong><br />

nosso algoritmo com a eficácia das técnicas citadas (em relação aos acertos na<br />

classificação <strong>de</strong> imagens), apontamos como trabalho futuro a segmentação (manual e<br />

automática) completa das bases <strong>de</strong> impressões digitais FVC 2000 e FVC 2002 DB3.<br />

A extração da ROI em imagens <strong>de</strong> impressões digitais é um passo importante<br />

para o reconhecimento biométrico através <strong>de</strong>ste traço. Uma <strong>de</strong>tecção mais precisa <strong>de</strong>sta<br />

região auxilia na extração <strong>de</strong> informação relevante a ser usada no processo <strong>de</strong><br />

comparação <strong>de</strong> impressões digitais tanto para a verificação (autenticação) quanto para a<br />

i<strong>de</strong>ntificação <strong>de</strong> indivíduos, contribuindo para reduzir as taxas <strong>de</strong> erro do sistema.<br />

Para trabalhos futuros, preten<strong>de</strong>-se também obter resultados quantitativos sobre<br />

como a região <strong>de</strong> interesse extraída afeta o processo <strong>de</strong> i<strong>de</strong>ntificação e autenticação em<br />

sistemas biométricos.<br />

6. Bibliografia<br />

Afsar, F. A., Arif, M., & Hussain, M. (2005). An Effective Approach to Fingerprint<br />

Segmentation using Fisher Basis. 9th International Multitopic Conference, IEEE<br />

INMIC 2005, (pp. 1-6).<br />

Arias-Castro, E., & Donoho, D. L. (2009). Does median filtering truly preserve edges<br />

better than linear filtering? Annals of Statistics, 1172-1206.<br />

Bazen, A. M., & Gerez, S. H. (2001). Segmentation of Fingerprint Images. PRORISC<br />

2001 Workshop on Circuits, Systems and Signal Processing, (pp. 276-280).<br />

Hengl, T. (2011). Standard <strong>de</strong>viation filters. Retrieved Julho 15, 2011, from<br />

"http://spatialanalyst.net/ILWIS/htm/ilwisapp/filter_types_standard_<strong>de</strong>viation_filters.htm"<br />

Liu, E., Zhao, H., Guo, F., Liang, J., & Tian, J. (2011). Fingerprint segmentation based<br />

on an AdaBoost classifier. Frontiers of Computer Science in China, 5(2).<br />

Maio, D., Maltoni, D., Cappelli, R., Wayman, J., & Jain, A. (2000). FVC2000:<br />

Fingerprint Verification Competition. Relatório Técnico. Acesso em Agosto <strong>de</strong><br />

2011, disponível em<br />

http://bias.csr.unibo.it/fvc2000/Downloads/fvc2000_report.pdf.<br />

367


Maio, D., Maltoni, D., Cappelli, R., Wayman, J., & Jain, A. (2002). FVC2002: Second<br />

Fingerprint Verification Competition. Proceedings of 16th International<br />

Conference on Pattern Recognition (ICPR2002) (pp. 811-814). Disponível em<br />

http://bias.csr.unibo.it/fvc2002/Downloads/FVC2002_ICPR.pdf.<br />

Maio, D., Maltoni, D., Cappelli, R., Wayman, J., & Jain, A. (2004). FVC2004: Third<br />

Fingerprint Verification Competition. Springer Berlin / Hei<strong>de</strong>lberg.<br />

Maltoni, D., Maio, D., Jain, A. K., & Prabhakar, S. (2009). Handbook of Fingerprint<br />

Recognition (2ª ed.). 1848822537: Springer Publishing Company, Incorporated.<br />

NEUROtechnology. (2007, Janeiro). U.are.U 4000 sample fingerprint database.<br />

Retrieved Julho 10, 2011<br />

Ross, A. A., Nandakumar, K., & Jain, A. K. (2006). Handbook of Multibiometrics<br />

(International Series on Biometrics). Secaucus, NJ, USA: Springer-Verlag New<br />

York, Inc.<br />

Shi, Z., Wang, Y., Qi, J., & Xu, K. (2004). A New Segmentation Algorithm for Low<br />

Quality Fingerprint Image. Proceedings of the Third International Conference<br />

on Image and Graphics (pp. 314-317). Washington, DC, USA: IEEE Computer<br />

Society.<br />

Yin, J., Zhu, E., Yang, X., Zhang, G., & Hu, C. (2007). Two steps for fingerprint<br />

segmentation. Image Vision Comput., 1391-1403.<br />

Zhu, E., Yin, J., Hu, C., & Zhang, G. (2006, Agosto). A systematic method for<br />

fingerprint ridge orientation estimation and image segmentation. Pattern<br />

Recogn., 39(8), 1452-1472.<br />

368


Análise e implementação <strong>de</strong> um protocolo <strong>de</strong> gerenciamento<br />

<strong>de</strong> certificados<br />

An<strong>de</strong>rson Luiz Silvério 1 , Jonathan Gehard Kohler 1 , Ricardo Felipe Custódio 1<br />

1 Laboratório <strong>de</strong> Segurança em Computação (LabSEC)<br />

Departamento <strong>de</strong> Informática e Estatística (INE)<br />

Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina (UFSC)<br />

Florianópolis – SC – Brasil<br />

{an<strong>de</strong>rson.luiz, jonathan, custodio}@inf.ufsc.br<br />

Abstract. Public Key Infrastructures (PKIs) have constantly been used to solve<br />

problems in several kinds of applications. To enable interoperability between<br />

different components of PKIs, protocols that <strong>de</strong>scribe how the communication<br />

between these components should be ma<strong>de</strong> are used. The main contribution of<br />

this work is to propose improvements to the Certificate Management Protocol<br />

(CMP) and to implement these improvements in the Certificate Management<br />

System of the Educational Public Key Infrastructure (SGCI).<br />

Resumo. Infraestruturas <strong>de</strong> Chaves Públicas (ICPs) têm sido constantemente<br />

utilizadas para solucionar problemas em diversos tipos <strong>de</strong> aplicações. Para<br />

possibilitar a interoperabilida<strong>de</strong> entre os componentes das ICPs existem protocolos<br />

que <strong>de</strong>screvem como <strong>de</strong>ve ser feita a comunicação entre tais componentes.<br />

Este trabalho tem como objetivo estudar e propor melhorias no Certificate<br />

Management Protocol (CMP) e implantar tais melhorias no Sistema <strong>de</strong> Gerenciamento<br />

<strong>de</strong> Certificados Digitais da Infraestrutura <strong>de</strong> Chaves Públicas para<br />

Ensino e Pesquisa (SGCI).<br />

1. Introdução<br />

Certificados digitais, em conjunto com chaves criptográficas assimétricas, têm sido utilizados<br />

para i<strong>de</strong>ntificar pessoas e equipamentos <strong>de</strong>s<strong>de</strong> que foram propostos por Konfel<strong>de</strong>r,<br />

em 1978. O certificado digital associa uma pessoa ou equipamento a um par <strong>de</strong> chaves. A<br />

chave privada é mantida sob controle da entida<strong>de</strong> i<strong>de</strong>ntificada pelo certificado e a chave<br />

pública é distribuída através do próprio certificado.<br />

A gestão do ciclo <strong>de</strong> vida <strong>de</strong> certificados digitais é feita por uma infraestrutura<br />

<strong>de</strong> chaves públicas (ICP). Uma ICP é formada por vários componentes, cada um provendo<br />

algum serviço relacionado ao ciclo <strong>de</strong> vida <strong>de</strong> certificados digitais. Um exemplo<br />

<strong>de</strong> componente <strong>de</strong> uma ICP é a Autorida<strong>de</strong> Certificadora (AC), responsável pela emissão<br />

<strong>de</strong> certificados digitais.<br />

Para gerir os certificados digitais a<strong>de</strong>quadamente os diferentes componentes <strong>de</strong><br />

uma ICP necessitam se comunicar. Existem protocolos que <strong>de</strong>screvem como <strong>de</strong>ve ser feita<br />

esta comunicação, como o CMP [Adams et al. 2005] e o CMC [Schaad and Myers 2008].<br />

Estes protocolos <strong>de</strong>screvem quais as mensagens que <strong>de</strong>vem ser trocadas entre os diferentes<br />

componentes da ICP em diferentes operações como, por exemplo, emissão <strong>de</strong> certificados<br />

digitais.<br />

369


Para garantir a integrida<strong>de</strong> e autenticida<strong>de</strong> <strong>de</strong>stas mensagens, é necessário algum<br />

mecanismo <strong>de</strong> proteção para as mensagens. A assinatura digital é normalmente utilizada<br />

para suprir tais necessida<strong>de</strong>s. Porém, no caso das autorida<strong>de</strong>s certificadoras, o uso da<br />

chave privada é muito restrito e <strong>de</strong>ve-se limitar apenas a assinar certificados digitais e<br />

listas <strong>de</strong> certificados revogados (LCRs). Além disso, o uso da mesma chave para dois<br />

propósitos distintos po<strong>de</strong> enfraquecer a segurança da chave ou dos serviços providos por<br />

ela [Barker et al. 2011].<br />

Neste artigo é proposto a criação <strong>de</strong> um novo par <strong>de</strong> chaves, para ser utilizado<br />

para assinar as mensagens produzidas por ACs, eliminando o uso em <strong>de</strong>masia da chave<br />

privada da AC. Para a distribuição da chave pública <strong>de</strong>ste novo par <strong>de</strong> chaves, são propostas<br />

alterações no protocolo CMP. Esta distribuição é chamada <strong>de</strong> relacionamento <strong>de</strong><br />

confiança, um conceito utilizado pelo Sistema <strong>de</strong> Gerenciamento <strong>de</strong> Certificados Digitais<br />

ICPEDU (SGCI), para uma AC informar em quais Autorida<strong>de</strong>s <strong>de</strong> Registro (ARs) ela<br />

confia e aceita receber requisições. Da mesma forma, uma AR informa para quais ACs<br />

ela po<strong>de</strong> enviar requisições e receber respostas.<br />

Na seção 2 é apresentada uma breve revisão bibliográfica sobre o SGCI e o Certificate<br />

Management Protocol (CMP). A seção 3 apresenta o conceito <strong>de</strong> chave <strong>de</strong> transporte,<br />

proposto por este trabalho para resolver o problema do uso da chave privada <strong>de</strong> Autorida<strong>de</strong>s<br />

Certificadoras. Nas seções 4 e 5 são apresentadas as alterações propostas para o<br />

CMP, para suportar a distribuição da chave <strong>de</strong> transporte, e sua implementação, respectivamente.<br />

Na seção 6 são apresentadas as contribuições <strong>de</strong>ste trabalho ao SGCI e, por fim,<br />

na seção 7 são apresentadas as consi<strong>de</strong>rações finais e propostas <strong>de</strong> trabalhos futuros.<br />

2. Fundamentos Teóricos<br />

2.1. Sistema <strong>de</strong> Gerenciamento <strong>de</strong> Certificados Digitais ICPEDU<br />

O Sistema <strong>de</strong> Gerenciamento <strong>de</strong> Certificados Digitais da Infraestrutura <strong>de</strong> Chaves Públicas<br />

para Ensino e Pesquisa (SGCI) é um software <strong>de</strong>senvolvido para o âmbito acadêmico,<br />

fazendo parte do projeto da Infraestrutura <strong>de</strong> Chaves Públicas para Ensino e Pesquisa (IC-<br />

PEDU), em uso em diversas universida<strong>de</strong>s e centros <strong>de</strong> pesquisa brasileiros, provendo as<br />

funcionalida<strong>de</strong>s necessárias para o gerenciamento <strong>de</strong> ICPs. Atualmente o Laboratório <strong>de</strong><br />

Segurança em Computação (LabSEC) é responsável pelo <strong>de</strong>senvolvimento do SGCI.<br />

A Infraestrutura <strong>de</strong> Chaves Públicas para Ensino e Pesquisa (ICPEDU) consiste<br />

na implantação <strong>de</strong> uma infraestrutura <strong>de</strong> criação <strong>de</strong> certificados digitais e chaves <strong>de</strong> segurança<br />

<strong>de</strong>ntro do ambiente das Instituições Fe<strong>de</strong>rais <strong>de</strong> Ensino Superior (Ifes), Unida<strong>de</strong>s <strong>de</strong><br />

Pesquisa (UPs) e <strong>de</strong>mais instituições <strong>de</strong> ensino. A utilização <strong>de</strong> certificados digitais confere<br />

credibilida<strong>de</strong> aos serviços e processos administrativos das instituições. Além disso,<br />

permite que processos sejam executados com maior eficiência e agilida<strong>de</strong>. [RNP 2011]<br />

2.2. Certificate Management Protocol<br />

O Certificate Management Protocol (CMP) [Adams et al. 2005] é um protocolo utilizado<br />

para criação e gerenciamento <strong>de</strong> certificados digitais X.509v3 [Cooper et al. 2008] e <strong>de</strong>fine<br />

mensagens que permitem a interação <strong>de</strong> diferentes componentes <strong>de</strong> uma ICP.<br />

Toda mensagem <strong>de</strong>finida pelo CMP possui uma estrutura básica, contendo os seguintes<br />

campos:<br />

370


• cabeçalho: Apresenta informações comuns a várias mensagens, utilizadas para<br />

i<strong>de</strong>ntificar o emissor e <strong>de</strong>stinatário, por exemplo;<br />

• corpo: Apresenta informações específicas para cada requisição;<br />

• proteção: Contém bits que protegem a mensagem. Por exemplo, a assinatura dos<br />

campos citados acima. Este campo é opcional;<br />

• certificados extras: Po<strong>de</strong> ser usado para carregar certificados necessários por uma<br />

das partes. Este campo é opcional.<br />

O documento HTTP Transport for CMP [Kause and Peylo 2011] <strong>de</strong>fine como é<br />

feito o transporte das mensagens do CMP sobre o protocolo HTTP.<br />

3. Geração do novo par <strong>de</strong> chaves<br />

Dos softwares pesquisados neste trabalho foi encontrado apenas um que suporta o CMP, o<br />

EJBCA [PrimeKey 2011]. Este utiliza a chave privada da AC para assinar as mensagens.<br />

Porém notou-se que o uso da chave privada da AC é muito restrito, i<strong>de</strong>almente limitandose<br />

apenas a assinar certificados e LCRs [ITI 2011]. Além disso, aumentando o uso da<br />

chave privada, sua segurança é enfraquecida [Barker et al. 2011].<br />

Durante o processo <strong>de</strong> auditoria <strong>de</strong> uma AC, espera-se que a sua chave privada seja<br />

utilizada apenas uma vez durante cada operação. Por exemplo na emissão <strong>de</strong> certificado,<br />

para assinar o certificado emitido. E se a chave da entida<strong>de</strong> estiver sob algum mecanismo<br />

que controle o uso da mesma, como um módulo criptográfico, é provável que a chave<br />

será liberada para apenas um uso, tornando impraticável o uso da chave da entida<strong>de</strong> para<br />

também assinar as mensagens do CMP.<br />

Propõe-se então o uso <strong>de</strong> uma nova chave, chamada neste trabalho <strong>de</strong> chave <strong>de</strong><br />

transporte. Neste trabalho é gerado um novo par <strong>de</strong> chaves para as ACs, cujo uso é exclusivo<br />

para assinar/verificar as mensagens do CMP. Dessa forma elimina-se o problema <strong>de</strong><br />

utilizar a chave privada da AC duas vezes numa mesma operação (por exemplo, um uso<br />

para assinar um certificado digital e outro para assinar a resposta que será enviada à AR<br />

ou ao requerente do certificado).<br />

Como esta chave é utilizada apenas para assinar as mensagens enviadas pela AC,<br />

ela possui requisitos <strong>de</strong> segurança menores que os da chave privada da AC. E o seu comprometimento<br />

não implica no comprometimento da AC, não sendo necessário revogar o<br />

certificado da AC. Um atacante <strong>de</strong> posse da chave <strong>de</strong> transporte da AC não conseguirá<br />

emitir certificados em nome da AC, apenas irá gerar mensagens em nome da AC com<br />

conteúdo inválido que po<strong>de</strong> ser <strong>de</strong>tectado pelo <strong>de</strong>stinatário da mensagem. Por exemplo,<br />

um atacante po<strong>de</strong> gerar uma resposta para uma requisição <strong>de</strong> certificado, com um certificado<br />

inválido, não emitido pela AC ou com um certificado anteriormente emitido pela<br />

AC para outra entida<strong>de</strong>. Em ambos os casos o <strong>de</strong>stinatário da mensagem po<strong>de</strong> verificar<br />

o certificado recebido e informar a AC que o mesmo não correspon<strong>de</strong> à requisição<br />

solicitada.<br />

4. Melhorias no CMP<br />

Com o intuito <strong>de</strong> facilitar a distribuição da chave pública <strong>de</strong> transporte e tornar o CMP<br />

mais flexível, foram propostas algumas alterações no protocolo, <strong>de</strong>scritas nas seções seguintes.<br />

371


4.1. Relacionamento <strong>de</strong> confiança<br />

Com a adição do novo par <strong>de</strong> chaves para assinar as mensagens do CMP, foi também<br />

necessário alterar o CMP para que a chave pública <strong>de</strong>ste novo par <strong>de</strong> chaves possa ser<br />

distribuída <strong>de</strong> forma segura e confiável. Esta alteração consiste em adicionar novas mensagens<br />

ao CMP, adicionando novos valores à estrutura PKIBody, <strong>de</strong>scrita na RFC4210<br />

[Adams et al. 2005, seção 5.1.2, p. 26-27].<br />

Para o estabelecimento <strong>de</strong> relação <strong>de</strong> confiança, são propostos dois mo<strong>de</strong>los: um<br />

assíncrono e outro síncrono. A seguir serão <strong>de</strong>talhados cada um <strong>de</strong>stes mo<strong>de</strong>los.<br />

4.1.1. Mo<strong>de</strong>lo Síncrono<br />

No mo<strong>de</strong>lo síncrono há um par <strong>de</strong> mensagens: uma requisição e uma resposta. Uma entida<strong>de</strong><br />

faz uma requisição <strong>de</strong> estabelecimento <strong>de</strong> relação <strong>de</strong> confiança e recebe a resposta<br />

para esta requisição. A requisição <strong>de</strong> relacionamento <strong>de</strong> confiança contém a estrutura<br />

TrustedRelReq, apresentada na figura 1. Ela contém o certificado da entida<strong>de</strong> requisitante<br />

e a chave <strong>de</strong> transporte.<br />

TrustedRelReq : : = SEQUENCE {<br />

c e r t i f i c a t e C e r t i f i c a t e ,<br />

t r a n s p o r t P u b PublicKey }<br />

Figura 1. Estrutura TrustedRelReq em ASN.1<br />

A resposta para a requisição <strong>de</strong> relacionamento <strong>de</strong> confiança contém a estrutura<br />

TrustedRelRep, apresentada na figura 2. Ela contém o status do pedido, <strong>de</strong>scrito pela<br />

estrutura PKIStatusInfo do CMP [Adams et al. 2005], o certificado da entida<strong>de</strong> e a chave<br />

<strong>de</strong> transporte. Os dois últimos campos são opcionais e só <strong>de</strong>verão estar presentes caso a<br />

relação <strong>de</strong> confiança seja aprovada.<br />

TrustedRelRep : : = SEQUENCE {<br />

s t a t u s<br />

P K I S t a t u s I n f o<br />

c e r t i f i c a t e [ 0 ] C e r t i f i c a t e OPTIONAL ,<br />

t r a n s p o r t P u b [ 1 ] PublicKey OPTIONAL }<br />

Figura 2. Estrutura TrustedRelRep em ASN.1<br />

Com a requisição aprovada e a resposta recebida pela entida<strong>de</strong> requisitante, ambas<br />

as entida<strong>de</strong>s possuirão a chave pública <strong>de</strong> transporte uma da outra e consi<strong>de</strong>ra-se que a<br />

relação <strong>de</strong> confiança entre elas está estabelecida. É importante ressaltar que para garantir<br />

que a chave <strong>de</strong> transporte efetivamente pertence à entida<strong>de</strong>, é necessário que a mensagem<br />

seja assinada com a sua chave privada. Após o estabelecimento da relação <strong>de</strong> confiança,<br />

o restante das mensagens <strong>de</strong>finidas pelo CMP po<strong>de</strong>m ser assinadas com a chave <strong>de</strong> transporte.<br />

4.1.2. Mo<strong>de</strong>lo Assíncrono<br />

Para o mo<strong>de</strong>lo assíncrono, apenas uma nova estrutura foi criada, apresentada na estrutura<br />

ASN.1 da figura 3.<br />

372


TrustedRelAnn : : = SEQUENCE {<br />

c e r t i f i c a t e C e r t i f i c a t e ,<br />

t r a n s p o r t P u b [ 1 ] PublicKey OPTIONAL<br />

pop [ 2 ] P r o o f O f P o s s e s s i o n OPTIONAL }<br />

P r o o f O f P o s s e s s i o n : : = CHOICE { −− only one p o s s i b i l i t y f o r now −−<br />

s i g n a t u r e [ 0 ] POPOSigningKey }<br />

Figura 3. Estrutura TrustedRelAnn em ASN.1<br />

Ela contém o certificado da entida<strong>de</strong>, a chave <strong>de</strong> transporte e um campo para<br />

a assinatura. A assinatura é calculada a partir dos campos certificate e transportPub e<br />

serve para a entida<strong>de</strong> informar, <strong>de</strong> forma segura, a sua chave <strong>de</strong> transporte. A figura<br />

4 apresenta a estrutura que contém a assinatura. Na proposta <strong>de</strong>ste trabalho apenas os<br />

campos algorithmI<strong>de</strong>ntifier e signature são utilizados, contendo o algoritmo usado na<br />

assinatura e os bytes da assinatura, respectivamente.<br />

POPOSigningKey : : = SEQUENCE {<br />

p o p o s k I n p u t [ 0 ] POPOSigningKeyInput OPTIONAL ,<br />

a l g o r i t h m I d e n t i f i e r A l g o r i t h m I d e n t i f i e r ,<br />

s i g n a t u r e BIT STRING }<br />

Figura 4. Estrutura POPOSigningKey em ASN.1[Schaad 2005]<br />

4.1.3. Mo<strong>de</strong>lo Síncrono vs Mo<strong>de</strong>lo Assíncrono<br />

No mo<strong>de</strong>lo síncrono observou-se dois problemas:<br />

• É necessário gerar uma nova mensagem a cada pedido <strong>de</strong> relacionamento <strong>de</strong> confiança<br />

e, consequentemente, utilizar a chave privada da entida<strong>de</strong> para assinar a<br />

mensagem várias vezes;<br />

• Um atacante po<strong>de</strong> realizar pedidos <strong>de</strong> relação <strong>de</strong> confiança, com entida<strong>de</strong>s falsas,<br />

à uma mesma entida<strong>de</strong>. Dessa forma, quando um operador da entida<strong>de</strong> for avaliar<br />

os pedidos <strong>de</strong> relação <strong>de</strong> confiança pen<strong>de</strong>ntes, po<strong>de</strong>rão haver centenas <strong>de</strong> pedidos<br />

falsos e apenas um verda<strong>de</strong>iro.<br />

O mo<strong>de</strong>lo assíncrono resolve estes problemas. O primeiro problema é resolvido<br />

com a assinatura sendo feita somente sobre o certificado e a chave <strong>de</strong> transporte da entida<strong>de</strong>.<br />

Como o certificado e a chave <strong>de</strong> transporte permanecem os mesmos, a estrutura<br />

po<strong>de</strong> ser assinada somente uma vez e anexada nas várias mensagens que a entida<strong>de</strong> possa<br />

gerar para cadastro <strong>de</strong> relação <strong>de</strong> confiança. O segundo problema é resolvido pois, no mo<strong>de</strong>lo<br />

assíncrono, uma entida<strong>de</strong> não faz um pedido <strong>de</strong> relação <strong>de</strong> confiança a outra entida<strong>de</strong>,<br />

ela cria uma espécie <strong>de</strong> lista com as entida<strong>de</strong>s que ela confia e aceita receber mensagens.<br />

O mo<strong>de</strong>lo síncrono po<strong>de</strong> ser melhorado, utilizando-se a i<strong>de</strong>ia <strong>de</strong> assinar com a<br />

chave privada da entida<strong>de</strong> somente o seu certificado e a chave pública <strong>de</strong> transporte e<br />

adicionando algum mecanismo <strong>de</strong> filtro para quais entida<strong>de</strong>s po<strong>de</strong>m realizar pedidos <strong>de</strong><br />

relacionamento <strong>de</strong> confiança à uma <strong>de</strong>terminada entida<strong>de</strong>. Esta última melhoria, no entanto,<br />

não faria parte do protocolo e necessitaria ser feita pelo software <strong>de</strong> gerenciamento<br />

<strong>de</strong> AC/AR. Por exemplo, na configuração da entida<strong>de</strong>, o usuário po<strong>de</strong>ria informar que só<br />

373


aceita receber requisições <strong>de</strong> relacionamento <strong>de</strong> confiança <strong>de</strong> entida<strong>de</strong>s cujo certificado<br />

foi emitido por uma <strong>de</strong>terminada AC.<br />

Por fim, a mensagem do mo<strong>de</strong>lo assíncrono po<strong>de</strong> ser utilizada no mo<strong>de</strong>lo síncrono<br />

para uma entida<strong>de</strong> divulgar uma nova chave pública <strong>de</strong> transporte para as entida<strong>de</strong>s com<br />

as quais ela já estabeleceu relação <strong>de</strong> confiança previamente. Tal operação é importante<br />

caso a chave seja comprometida.<br />

4.2. Codificação em XML<br />

Para tornar o CMP mais flexível, propõe-se o suporte do protocolo a outros tipos <strong>de</strong><br />

codificação para suas mensagens. Neste trabalho optou-se por utilizar o formato XML,<br />

por ser amplamente utilizado atualmente para o compartilhamento <strong>de</strong> informações, além<br />

<strong>de</strong> ser <strong>de</strong> código aberto e in<strong>de</strong>pen<strong>de</strong>nte <strong>de</strong> plataforma. A conversão das estruturas ASN.1<br />

<strong>de</strong>scritas na RFC4210 [Adams et al. 2005] para XML foram feitas utilizando as regras <strong>de</strong><br />

codificação XML Enconding Rules (XER) [ITU-T 2001].<br />

Também foi feita a conversão das estruturas ASN.1 do CMP para a linguagem<br />

XML Schema Definition (XSD) [W3C 2004]. O XSD permite fazer a validação da estrutura<br />

<strong>de</strong> um documento XML com base em <strong>de</strong>terminadas regras. Dessa forma é possível<br />

verificar se dado documento XML representa uma mensagem válida do CMP. Como o<br />

XML e o XSD são linguagens in<strong>de</strong>pen<strong>de</strong>ntes <strong>de</strong> plataforma, é possível utilizar as regras<br />

XSD criadas em qualquer implementação do CMP.<br />

5. Implementação do protocolo<br />

Inicialmente foi feito um levantamento na literatura das bibliotecas já existentes<br />

que suportam o CMP. Foram encontradas duas bibliotecas, a cryptLib<br />

[Digital Data Security Limited 2011] e a cmpForOpenssl [Martin Peylo 2011]. Foi <strong>de</strong>sconsi<strong>de</strong>rado<br />

o uso <strong>de</strong>stas bibliotecas para este trabalho pelos seguintes motivos:<br />

• são escritas na linguagem C. Desta forma seria ainda necessário portar as funcionalida<strong>de</strong>s<br />

para o PHP, <strong>de</strong> modo a utilizar com o SGCI;<br />

• não possuem suporte a XML.<br />

Não existindo nenhuma biblioteca que satisfaça as necessida<strong>de</strong>s <strong>de</strong>ste trabalho, foi<br />

criada uma nova biblioteca, orientada a objetos e em PHP. Um dos objetivos <strong>de</strong>sta biblioteca<br />

é fornecer uma interface simples e in<strong>de</strong>pen<strong>de</strong>nte, po<strong>de</strong>ndo ser utilizada por diferentes<br />

softwares. Além disso, ela foi concebida <strong>de</strong> forma a facilitar a adição <strong>de</strong> mensagens não<br />

tratadas por este trabalho ou fazer implementações customizadas das mensagens.<br />

6. Contribuições ao SGCI<br />

Na atual versão do SGCI, 1.3.7, o protocolo <strong>de</strong> comunicação entre as entida<strong>de</strong>s não é um<br />

protocolo padronizado, implementado apenas para satisfazer as necessida<strong>de</strong>s do software<br />

no momento em que foi <strong>de</strong>senvolvido. Nesta implementação, a troca <strong>de</strong> mensagens entre<br />

as entida<strong>de</strong>s é feita <strong>de</strong> forma offline, e necessita da interação <strong>de</strong> operadores que precisam<br />

primeiramente exportar as mensagens em uma entida<strong>de</strong>, para <strong>de</strong>pois importar na entida<strong>de</strong><br />

<strong>de</strong> <strong>de</strong>stino.<br />

A partir <strong>de</strong>ste trabalho, o SGCI passa a utilizar o CMP como protocolo <strong>de</strong> comunicação<br />

entre AC a AR e são adicionados dois novos mo<strong>de</strong>los <strong>de</strong> comunicação. O<br />

374


primeiro mo<strong>de</strong>lo é conhecido como mo<strong>de</strong>lo online com AC <strong>de</strong> resposta manual, cuja<br />

única diferença do mo<strong>de</strong>lo offline é que o envio das mensagens entre a AR e a AC é feita<br />

<strong>de</strong> forma automática. No segundo mo<strong>de</strong>lo, conhecido como mo<strong>de</strong>lo online com AC <strong>de</strong><br />

resposta automática, além do envio das mensagens ser feito <strong>de</strong> forma automática, o seu<br />

processamento também é feito <strong>de</strong> forma automática.<br />

A vantagem do SGCI suportar diferentes mo<strong>de</strong>los <strong>de</strong> comunicação é a possibilida<strong>de</strong><br />

<strong>de</strong> ele po<strong>de</strong>r ser usado por diferentes entida<strong>de</strong>s com diferentes requisitos <strong>de</strong> segurança.<br />

Por exemplo, ACs Raízes normalmente têm requisitos <strong>de</strong> segurança elevados e<br />

funcionam <strong>de</strong> forma offline. Já ACs intermediárias, que emitem certificados para usuário<br />

final, e as ARs po<strong>de</strong>m funcionar <strong>de</strong> forma online.<br />

A versão do SGCI, integrada ao protocolo CMP po<strong>de</strong> ser encontrada em https:<br />

//projetos.labsec.ufsc.br/sgci.<br />

7. Consi<strong>de</strong>rações Finais<br />

Neste trabalho foi proposto o uso <strong>de</strong> um novo par <strong>de</strong> chaves por Autorida<strong>de</strong>s Certificadoras,<br />

chamada chave <strong>de</strong> transporte, para assinar as mensagens do protocolo CMP. A<br />

existência <strong>de</strong>sta chave <strong>de</strong> transporte elimina alguns problemas relacionados à restrição <strong>de</strong><br />

uso da chave privada das ACs.<br />

A criação <strong>de</strong> um novo par <strong>de</strong> chaves gerou a necessida<strong>de</strong> <strong>de</strong> mecanismos para a<br />

sua distribuição. Foram propostos dois mo<strong>de</strong>los para fazer a distribuição da chave pública<br />

<strong>de</strong> transporte: um síncrono e outro assíncrono. No mo<strong>de</strong>lo síncrono a chave privada da<br />

AC é utilizada sempre que for necessário fazer a distribuição da chave para uma nova<br />

entida<strong>de</strong>. No mo<strong>de</strong>lo assíncrono a assinatura é feita somente sobre a chave <strong>de</strong> transporte<br />

e o certificado da entida<strong>de</strong>, po<strong>de</strong>ndo ser gerada uma única vez e anexada a todas as mensagens.<br />

Também foi proposto o uso <strong>de</strong> XML para codificar as mensagens do CMP, pois o<br />

XML é uma linguagem amplamente utilizada para a troca <strong>de</strong> informações entre diferentes<br />

sistemas, além <strong>de</strong> ser simples <strong>de</strong> implementar e fornecer uma representação textual,<br />

legível para humanos.<br />

Para facilitar a geração e manipulação das mensagens do CMP, foi implementada<br />

uma biblioteca, na linguagem PHP, orientada a objetos, seguindo as práticas <strong>de</strong> programação<br />

<strong>de</strong> Desenvolvimento Orientado a Testes (TDD, do inglês Test Driven Development) e<br />

Clean Co<strong>de</strong>, a fim <strong>de</strong> garantir uma alta qualida<strong>de</strong> no código <strong>de</strong>senvolvido.<br />

Por fim, a biblioteca implementada foi integrada ao SGCI, tornando-o compatível<br />

com o protocolo CMP e adicionando dois novos mo<strong>de</strong>los <strong>de</strong> comunicação ao software.<br />

Como trabalho futuro, propõe-se um estudo <strong>de</strong> como fazer a geração da chave <strong>de</strong><br />

transporte, <strong>de</strong> forma a associa-la com a chave pública da AC. Sendo possível verificar uma<br />

assinatura feita com a chave <strong>de</strong> transporte utilizando-se da chave pública da AC, tornaria<br />

o processo <strong>de</strong> distribuição da chave <strong>de</strong> transporte da AC mais simples. Também eliminaria<br />

a necessida<strong>de</strong> do uso da chave privada da AC para assinar a mensagem <strong>de</strong>stinada à<br />

distribuição da mesma.<br />

375


Referências<br />

Adams, C., Farrell, S., Kause, T., and Mononen, T. (2005). Internet X.509 Public Key Infrastructure<br />

Certificate Management Protocol (CMP). RFC 4210 (Proposed Standard).<br />

Barker, E., Barker, W., Burr, W., Polk, W., and Smid, M. (2011). Recommendation for key<br />

management - pat1: General (revision 3). NIST Special Publication 800-57, National<br />

Institute of Standards and Technology.<br />

Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and Polk, W. (2008).<br />

Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List<br />

(CRL) Profile. RFC 5280 (Proposed Standard).<br />

Digital Data Security Limited (2011). Cryptlib security software.<br />

http://www.cryptlib.com/.<br />

ITI (2011). Declaração <strong>de</strong> práticas <strong>de</strong> certificação da autorida<strong>de</strong> certificadora raiz da<br />

icp-brasil - v.4.1. DOC-ICP 01, Instituto Nacional <strong>de</strong> Tecnologia da Informação.<br />

ITU-T (2001). Information technology – asn.1 encoding rules: Xml encoding rules (xer).<br />

Recommendation X.693, International Telecommunication Union.<br />

Kause, T. and Peylo, M. (2011). Internet X.509 Public Key Infrastructure – HTTP Transport<br />

for CMP.<br />

Martin Peylo (2011). Cmp for openssl. http://sourceforge.net/apps/mediawiki/cmpforopenssl/in<strong>de</strong>x.php.<br />

PrimeKey (2011). Ejbca. http://www.ejbca.org/.<br />

RNP (2011). Infraestrutura <strong>de</strong> chaves públicas para ensino e pesquisa (icpedu).<br />

http://www.rnp.br/servicos/icpedu.html.<br />

Schaad, J. (2005). Internet X.509 Public Key Infrastructure Certificate Request Message<br />

Format (CRMF). RFC 4211 (Proposed Standard).<br />

Schaad, J. and Myers, M. (2008). Certificate Management over CMS (CMC). RFC 5272<br />

(Proposed Standard).<br />

W3C (2004). Xml schema part 1: Structures second edition. Recommendation, World<br />

Wi<strong>de</strong> Web Consortium.<br />

376


WGID<br />

377


Avaliação <strong>de</strong> um Sistema <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e Acesso<br />

em uma Organização Pública Fe<strong>de</strong>ral<br />

Yuri Feitosa Negócio 1 , Felipe P. <strong>de</strong> Assumpção Santiago 1 , Laerte Peotta <strong>de</strong> Melo 2<br />

1<br />

Empresa <strong>de</strong> Tecnologia e Informações da Previdência Social - DATAPREV<br />

2<br />

Universida<strong>de</strong> <strong>de</strong> Brasília - UNB.<br />

{yuri.feitosa, felipe.santiago}@dataprev.gov.br, peotta@unb.br<br />

Abstract. The protection of individual and institution privacy is essential<br />

within Brazilian fe<strong>de</strong>ral public administration due to the critical informations<br />

handled by the governmental systems. It involves the execution of a set of<br />

procedures that ensures information access control properly. Concerning this<br />

scenario, this paper analyzes the enforcement of information and<br />

communication security controls related to i<strong>de</strong>ntity and access management<br />

applied by a fe<strong>de</strong>ral public organization<br />

Resumo. Para a Administração Pública Fe<strong>de</strong>ral se torna imperativo proteger<br />

a privacida<strong>de</strong> individual e das instituições. Devido à criticida<strong>de</strong> das<br />

informações manipuladas por estes sistemas, exige-se que sejam aplicados<br />

uma série <strong>de</strong> processos que assegurem que a informação tenha seu acesso<br />

controlado a<strong>de</strong>quadamente. Neste sentido, este trabalho realiza uma análise<br />

na aplicação atual dos controles <strong>de</strong> segurança da informação e comunicações<br />

relacionadas à gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso fornecida aos clientes <strong>de</strong> uma<br />

Organização Pública Fe<strong>de</strong>ral.<br />

1. Introdução<br />

O avanço constante das tecnologias <strong>de</strong> computação e comunicação possibilita<br />

cada vez mais o acesso da socieda<strong>de</strong> a uma vasta gama <strong>de</strong> informações, sem as<br />

tradicionais restrições físicas e temporais. Esta nova realida<strong>de</strong> que se apresenta,<br />

<strong>de</strong>nominada <strong>de</strong> Socieda<strong>de</strong> da Informação, está alterando bruscamente as relações entre<br />

os indivíduos e setores da socieda<strong>de</strong>. No sentido <strong>de</strong> reduzir a burocracia e melhorar o<br />

atendimento da população, a Administração Pública Fe<strong>de</strong>ral (APF) tem realizado<br />

constantes investimentos no <strong>de</strong>senvolvimento <strong>de</strong> sistemas <strong>de</strong> informação. Segundo<br />

Simião (2009), a APF é composta por organizações complexas <strong>de</strong> amplo alcance que<br />

lidam com informações importantes, tanto para a prestação <strong>de</strong> serviços públicos aos<br />

cidadãos, como também para a tomada <strong>de</strong> <strong>de</strong>cisões estratégicas do Estado. Desta forma,<br />

a medida que estes novos sistemas <strong>de</strong> informação representam os processos <strong>de</strong> negócio<br />

e fornecem insumos para a tomada <strong>de</strong> <strong>de</strong>cisões, eles tem se tornado cada vez maiores e<br />

mais complexos, e, conseqüentemente, disponibilizam um maior volume <strong>de</strong><br />

informações e recursos sensíveis.<br />

Consi<strong>de</strong>rando a sua importância e impacto nos objetivos <strong>de</strong> negócios <strong>de</strong> uma<br />

organização, o controle <strong>de</strong> acesso necessita <strong>de</strong> leis, normas, regulamentos,<br />

procedimentos que governem sua execução. Alguns esforços na APF são observados,<br />

como o Decreto nº 4.553, <strong>de</strong> 27 <strong>de</strong> <strong>de</strong>zembro <strong>de</strong> 2002, a Instrução Normativa GSI nº 1,<br />

<strong>de</strong> 13 <strong>de</strong> junho <strong>de</strong> 2008, e a Norma Complementar 07, <strong>de</strong> 06 <strong>de</strong> maio <strong>de</strong> 2010.<br />

378


Entretanto, inúmeros <strong>de</strong>safios ainda estão presentes. Uma evidência das<br />

dificulda<strong>de</strong>s, mesmo que não diretamente relacionado com a APF, é que <strong>de</strong> acordo com<br />

a pesquisa feita pelo Ponemon Institute (Ponemon, 2010), 87% dos usuários das<br />

organizações possuem acesso a mais informações do que precisariam para execução <strong>de</strong><br />

suas ativida<strong>de</strong>s.<br />

Neste sentido, consi<strong>de</strong>rando os <strong>de</strong>safios envolvidos na ativida<strong>de</strong> <strong>de</strong> gestão da<br />

segurança da informação e comunicações e tendo em vista reduzir as ameaças<br />

envolvidas, este artigo apresenta uma avaliação da gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso<br />

<strong>de</strong>sempenhados por uma organização da APF. Para isso, foram selecionados e avaliados<br />

63 controles <strong>de</strong> segurança nos principais frameworks, normativos e guias como o<br />

COBIT (ITGI, 2007), OISM3 (O-ISM3, 2011), ABNT NBR ISO 27002:2005 (ABNT,<br />

2005), Norma Complementar 07 (DISC/GSIPR, 2010) e o guia <strong>de</strong> Boas Práticas em<br />

Segurança da Informação do Tribunal <strong>de</strong> Contas da União (BRASIL, 2008).<br />

Trabalhos similares foram realizados por (Barbosa, 2009) e (Paranhos, 2010). O<br />

primeiro trabalho avalia <strong>de</strong> forma geral as Organizações Militares do Exército Brasileiro<br />

quanto à maturida<strong>de</strong> e aplicação dos controles ISO/IEC 27002:2005. O segundo<br />

trabalho propõe um framework para avaliação da maturida<strong>de</strong> da segurança da<br />

informação em organizações, através do uso <strong>de</strong> diversas normas. Este artigo difere um<br />

pouco dos <strong>de</strong>mais, pois engloba os normativos e guias adotados pela APF como<br />

referência.<br />

Este artigo está organizado da seguinte forma: a seção 2 apresenta os conceitos e<br />

a classificação adotada para os controles da gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso. A seção 3<br />

apresenta as principais referências selecionadas para a i<strong>de</strong>ntificação dos controles. A<br />

seção 4 apresenta os controles selecionados e o estado atual da aplicação <strong>de</strong>les na<br />

organização avaliada. Por fim, a seção 5 apresenta as conclusões finais e os trabalhos<br />

futuros.<br />

2. Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e Acesso<br />

O conceito <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> está relacionado com a associação entre um indivíduo e<br />

suas características únicas. A gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> é o controle <strong>de</strong> todo o ciclo <strong>de</strong> vida<br />

envolvido na execução <strong>de</strong>ste processo. De acordo com NSTC (2008), a gestão <strong>de</strong><br />

i<strong>de</strong>ntida<strong>de</strong> po<strong>de</strong> ser <strong>de</strong>finida como a combinação <strong>de</strong> sistemas técnicos, regras e<br />

procedimentos que <strong>de</strong>finem a posse, utilização, e segurança <strong>de</strong> uma i<strong>de</strong>ntida<strong>de</strong>. Seu<br />

objetivo primário é estabelecer a confiança na associação <strong>de</strong> atributos a uma i<strong>de</strong>ntida<strong>de</strong><br />

digital e conectar esta i<strong>de</strong>ntida<strong>de</strong> com uma entida<strong>de</strong> individual.<br />

Para complementar a gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>, existe a gestão <strong>de</strong> acesso que, <strong>de</strong><br />

acordo com FICAM (2009), tem como propósito garantir que a verificação da<br />

i<strong>de</strong>ntida<strong>de</strong> seja realizada quando um indivíduo tenta acessar os dados, sistemas <strong>de</strong><br />

informação ou instalações físicas. Para simplificar a compreensão e melhorar a<br />

i<strong>de</strong>ntificação das responsabilida<strong>de</strong>s, o FICAM (2009) dividiu a gestão <strong>de</strong> acesso em três<br />

áreas principais:<br />

Gestão <strong>de</strong> Recursos: Responsável por estabelecer e manter os dados (regras <strong>de</strong><br />

acesso, requisitos <strong>de</strong> cre<strong>de</strong>nciais) para uma <strong>de</strong>terminada informação ou recurso<br />

que possa ser acessado.<br />

Gestão <strong>de</strong> Privilégios: Responsável pela gestão <strong>de</strong> políticas e processos que<br />

<strong>de</strong>finem como são fornecidos os direitos <strong>de</strong> acesso das entida<strong>de</strong>s aos sistemas <strong>de</strong><br />

379


informação. Engloba a gestão <strong>de</strong> todos os dados que constituem os privilégios <strong>de</strong><br />

acesso e atributos, envolvendo o armazenamento, organização e acesso a<br />

informação nos diretórios.<br />

Gestão <strong>de</strong> Políticas: Responsável pelos processos que estabelecem e mantêm as<br />

políticas <strong>de</strong> controle <strong>de</strong> acesso que são incorporadas nas lógicas e regras <strong>de</strong><br />

negócio. Normalmente, é baseada nos atributos e papéis associados a uma<br />

i<strong>de</strong>ntida<strong>de</strong>. Ela gerencia o que é permitido ou não <strong>de</strong> ser acessado em uma<br />

<strong>de</strong>terminada transação.<br />

A gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso é uma ativida<strong>de</strong> complexa que po<strong>de</strong> estar<br />

difusa nos processos <strong>de</strong> uma organização. Diante da inexistência <strong>de</strong> um programa <strong>de</strong><br />

gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso, é importante i<strong>de</strong>ntificar as responsabilida<strong>de</strong>s sobre a<br />

execução <strong>de</strong> controles <strong>de</strong> segurança por áreas. Sendo assim, este artigo adota a<br />

separação em cinco áreas <strong>de</strong> gestão i<strong>de</strong>ntida<strong>de</strong>, gestão <strong>de</strong> acesso (recursos, privilégios, e<br />

políticas) e auditoria.<br />

3. Controles para Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e Acesso<br />

A ativida<strong>de</strong> <strong>de</strong> controle está relacionada com a capacida<strong>de</strong> <strong>de</strong> uma <strong>de</strong>terminada<br />

pessoa ou grupo adquirir domínio sobre uma <strong>de</strong>terminada ativida<strong>de</strong> ou outro grupo.<br />

Para a área <strong>de</strong> tecnologia da informação não existe um consenso formal sobre a<br />

<strong>de</strong>finição <strong>de</strong> controle, entretanto, para esta pesquisa foi utilizada a <strong>de</strong>finição proposta<br />

pelo COBIT (ITGI, 2007) em que c<br />

<strong>de</strong>tectados e corrigidos.<br />

As próximas subseções irão apresentar os principais frameworks e normas<br />

relacionados com a segurança da informação e com a gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso.<br />

Cada subseção irá i<strong>de</strong>ntificar as áreas ou grupo <strong>de</strong> controles diretamente envolvidos na<br />

gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso.<br />

3.1. COBIT<br />

O Control Objectives for Information and related Technology (ITGI, 2007) é<br />

e orientado a processos, baseado em controles e orientado<br />

por medic<br />

mo<strong>de</strong>lo COBIT, em sua versão 4.1, apresenta um conjunto <strong>de</strong> boas práticas<br />

i<strong>de</strong>ntificadas através <strong>de</strong> um consenso entre especialistas internacionais, que são<br />

organizadas através mo<strong>de</strong>lo <strong>de</strong> processo genérico baseado em quatro domínios e trinta e<br />

quatro processos. O COBIT <strong>de</strong>fine suas ativida<strong>de</strong>s em alto nível, orientando a<br />

organização no que precisa ser feito e não em como <strong>de</strong>ve ser feito para se obter<br />

governança, gerenciamento e controle.<br />

Os processos são responsáveis, em conjunto com os recursos <strong>de</strong> TI, por<br />

constituir a arquitetura <strong>de</strong> TI da organização. No COBIT, os processos são mapeados<br />

em domínios que equivalem às tradicionais áreas sob responsabilida<strong>de</strong> <strong>de</strong> TI, como o<br />

planejamento, construção, processamento e monitoramento. Os quatro domínios <strong>de</strong><br />

processos (ITGI, 2007) são: Planejar e Organizar (PO), Adquirir e Implementar (AI),<br />

Entregar e Suportar (DS), Monitorar e Avaliar (ME).<br />

380


Em 2009, criou-se o Programa <strong>de</strong> Auditoria e Garantia <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong><br />

(ISACA, 2009) com o objetivo <strong>de</strong> prover uma avaliação in<strong>de</strong>pen<strong>de</strong>nte relacionada com<br />

a eficácia da gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>, suas políticas, procedimentos e ativida<strong>de</strong>s <strong>de</strong><br />

governança através <strong>de</strong> uma revisão <strong>de</strong> auditoria. O foco <strong>de</strong>sta revisão <strong>de</strong> auditoria está<br />

relacionado nos padrões, guias e procedimentos, bem como na sua implementação e<br />

governança sobre tais ativida<strong>de</strong>s.<br />

De acordo com (ISACA, 2009) os domínios Planejar e Organizar (PO) e Entrega<br />

e Suporte (DS) estão diretamente relacionados com a avaliação da gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>.<br />

Para o primeiro domínio temos os controles Esquema <strong>de</strong> Classificação <strong>de</strong> Dados (PO<br />

2.3) e Responsabilida<strong>de</strong> por Riscos, Segurança e Conformida<strong>de</strong> (PO 4.8). Para o<br />

segundo domínio temos os controles Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> (DS 5.3) e Gestão <strong>de</strong> Contas<br />

<strong>de</strong> Usuário (DS 5.4).<br />

3.2. Open Information Security Management Maturity Mo<strong>de</strong>l (O-ISM3)<br />

O Open Information Security Management Maturity Mo<strong>de</strong>l (O-ISM3, 2011) é<br />

um framework para a criação, adaptação e operação <strong>de</strong> um Sistema <strong>de</strong> Gerenciamento<br />

<strong>de</strong> Segurança da Informação (SGSI) <strong>de</strong>senvolvido pelo The Open Group. Ele <strong>de</strong>fine um<br />

número gerenciável e coeso <strong>de</strong> processos <strong>de</strong> segurança da informação necessários para a<br />

maioria das organizações. Para cada processo relevante, alguns controles <strong>de</strong> segurança<br />

são i<strong>de</strong>ntificados e atuam como partes essenciais do processo. Neste sentido, o ISM3 é<br />

compatível com os padrões ISO/IEC 27000:2009, COBIT e ITIL(OGC, 2007).<br />

De acordo com o O-ISM3, para serem efetivos, os processos <strong>de</strong> segurança da<br />

informação <strong>de</strong> uma organização <strong>de</strong>vem ser documentados, medidos e gerenciados. O<br />

framework O-ISM3 <strong>de</strong>fine a maturida<strong>de</strong> <strong>de</strong> acordo com a execução <strong>de</strong> processos<br />

essenciais para a segurança. A capacida<strong>de</strong> é <strong>de</strong>finida em termos <strong>de</strong> métricas e práticas<br />

gerenciais utilizadas. O framework exige que os objetivos <strong>de</strong> segurança e suas<br />

responsabilida<strong>de</strong>s sejam <strong>de</strong>rivados dos objetivos <strong>de</strong> negócio, além <strong>de</strong> promover uma<br />

medição formal da eficácia <strong>de</strong> cada processo <strong>de</strong> segurança.<br />

A gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e controle <strong>de</strong> acesso é uma das categorias <strong>de</strong> objetivos <strong>de</strong><br />

segurança essenciais para <strong>de</strong>terminar os processos que compõe o sistema <strong>de</strong> gestão <strong>de</strong><br />

segurança da informação (SGSI) baseado no O-ISM3. Nesta pesquisa, foram<br />

i<strong>de</strong>ntificados quatro processos diretamente relacionados, são eles:<br />

1. Definição das regras <strong>de</strong> divisão <strong>de</strong> responsabilida<strong>de</strong>s (SSP-4): Através da<br />

divisão das responsabilida<strong>de</strong>s, é possível melhorar o uso dos recursos e<br />

reduzir os riscos <strong>de</strong> inci<strong>de</strong>ntes por ameaças internas.<br />

2. Inventário <strong>de</strong> Ativos (OSP-3): A operação do SGSI <strong>de</strong>pen<strong>de</strong> da<br />

i<strong>de</strong>ntificação e classificação dos ativos críticos da organização.<br />

3. Controle <strong>de</strong> Acesso (OSP-11): Garante a proteção contra inci<strong>de</strong>ntes como,<br />

por exemplo, espionagem, negação <strong>de</strong> responsabilida<strong>de</strong>, tentativa <strong>de</strong><br />

acesso não autorizado e divulgação da informação.<br />

4. Registro <strong>de</strong> Usuários (OSP-12): Garante a proteção contra inci<strong>de</strong>ntes<br />

relacionados com o cadastro errôneo e concessão ina<strong>de</strong>quada <strong>de</strong> acesso<br />

as informações da organização.<br />

São três processos operacionais e um único estratégico. O SSP-4 é um processo<br />

estratégico que tem a importante missão <strong>de</strong> separar a responsabilida<strong>de</strong> na execução <strong>de</strong><br />

processos <strong>de</strong> negócio críticos. O OSP-3 é responsável por classificar a informação e os<br />

381


ativos da organização, sendo consi<strong>de</strong>rada uma ativida<strong>de</strong> essencial para uma política <strong>de</strong><br />

controle <strong>de</strong> acesso eficaz. O OSP 11 e OSP-12 são os tradicionais processos <strong>de</strong> gestão<br />

<strong>de</strong> acesso e i<strong>de</strong>ntida<strong>de</strong>.<br />

3.3. Guia <strong>de</strong> Boas Práticas em Segurança da Informação do TCU<br />

O Tribunal <strong>de</strong> Contas da União, com<br />

a Administração Pública Fe<strong>de</strong>ral,<br />

em segurança da informação (Brasil, 2008). O guia tem como objetivo apresentar as<br />

boas práticas para qualquer pessoa que se relacione <strong>de</strong> alguma forma com sistemas<br />

informatizados, <strong>de</strong>s<strong>de</strong> simples usuários até profissionais envolvidos diretamente com<br />

segurança da informação.<br />

O documento está dividido em quatro capítulos, que tratam o controle <strong>de</strong> acesso<br />

lógico, a política <strong>de</strong> segurança <strong>de</strong> informações e o plano <strong>de</strong> contingência. Por fim, o<br />

guia apresenta no quarto capítulo os comentários sobre a NBR ISO/IEC 27002:2005 e<br />

Por ter sido escrito <strong>de</strong> forma abrangente, o guia apresenta informalmente<br />

conceitos e controles relacionados com os assuntos pertinentes a cada capítulo.<br />

Consi<strong>de</strong>rando o foco <strong>de</strong>sta pesquisa, observa-se que as práticas envolvidas no controle<br />

<strong>de</strong> acesso lógico <strong>de</strong> sistemas po<strong>de</strong>m ser divididas em sete grupos <strong>de</strong> práticas, são elas:<br />

Cre<strong>de</strong>nciamento, Autenticação, Gerenciamento <strong>de</strong> Sessões, Autorização,<br />

Monitoramento, Administração <strong>de</strong> Usuários e Acesso e Políticas <strong>de</strong> Controle <strong>de</strong> Acesso.<br />

3.4. Norma Complementar 07<br />

O Departamento <strong>de</strong> Seguranc a da Informac<br />

(DSIC) do<br />

Gabinete <strong>de</strong> Segurança Institucional da Presidência da República (GSI-PR) aprovou a<br />

Norma Complementar 07 que estabelece as diretrizes para a implementac<br />

a da Informac<br />

entida<strong>de</strong>s da Administrac<br />

A Norma Complementar 07 baseou-se amplamente nos controles <strong>de</strong>finidos pela<br />

ISO/IEC 27002:2005. Entretanto, ela faz uma clara distinção entre o controle <strong>de</strong> acesso<br />

lógico e o físico. Para o controle <strong>de</strong> acesso lógico foram <strong>de</strong>finidos três grupos <strong>de</strong><br />

diretrizes, são eles: Criação e Administração <strong>de</strong> Contas, Acesso a Re<strong>de</strong> <strong>de</strong><br />

Computadores e Ativos da Informação. Para o controle <strong>de</strong> acesso físico são <strong>de</strong>finidos<br />

quatro grupos <strong>de</strong> diretrizes: Acesso as Áreas e Instalações Físicas, Usuários, Ativos <strong>de</strong><br />

Informação e ao Perímetro <strong>de</strong> Segurança. O foco <strong>de</strong>ste trabalho está orientado na<br />

avaliação da organização quanto ao controle <strong>de</strong> acesso lógico, portanto, apenas as<br />

diretrizes relacionadas controle <strong>de</strong> acesso lógico foram avaliados.<br />

3.5. ISO 27002:2005<br />

A ABNT NBR ISO 27002:2005 é a versão nacional do código <strong>de</strong> práticas para<br />

gestão da segurança da informação. Historicamente, a norma <strong>de</strong>rivou-se da BS7799-<br />

1:1999 <strong>de</strong>finida pelo BSI (British Standards Institution) no Reino Unido. Seu objetivo<br />

é <strong>de</strong>finir, <strong>de</strong> forma abrangente, um conjunto <strong>de</strong> controles que po<strong>de</strong>m ser implementados<br />

por uma organização. Segundo Cal<strong>de</strong>r; Watkins (2008), ela é utilizada como guia <strong>de</strong><br />

382


ações necessárias para a implementação <strong>de</strong> um Sistema <strong>de</strong> Gestão <strong>de</strong> Segurança da<br />

Informação (SGSI) segundo a norma ABNT NBR ISO 27001:2005.<br />

De acordo ABNT NBR ISO 27002:2005(ABNT, 2005), seus controles po<strong>de</strong>m<br />

ser consi<strong>de</strong>rados como o ponto <strong>de</strong> partida para o <strong>de</strong>senvolvimento <strong>de</strong> diretrizes voltadas<br />

para a segurança da informação em uma organização. Entretanto, nem sempre eles<br />

po<strong>de</strong>m ser aplicados ou são suficientes para assegurar a segurança da informação. Um<br />

exemplo <strong>de</strong>sta afirmativa, é o fato <strong>de</strong> que <strong>de</strong>terminados controles po<strong>de</strong>m ser mais<br />

dispendiosos que o valor da informação que eles preten<strong>de</strong>m proteger ou que a constante<br />

evolução das ameaças justifique a adoção <strong>de</strong> controles adicionais. Sendo assim, eles<br />

<strong>de</strong>vem ser selecionados mediante uma análise <strong>de</strong> risco e <strong>de</strong> retorno <strong>de</strong> investimento<br />

periódica.<br />

Os controles relacionados com gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso estão<br />

distribuídos em graus diferentes por todas as áreas <strong>de</strong>finidas. Entretanto, eles estão<br />

concentrados em maior grau nas áreas <strong>de</strong> gestão <strong>de</strong> ativos, segurança em recursos<br />

humanos e controle <strong>de</strong> acesso.<br />

4. Controles Selecionados e Avaliação em uma OPF<br />

Segundo a ABNT NBR ISO 27002:2005 (ABNT, 2005), convém que os<br />

controles sejam selecionados e implementados para assegurar que os riscos sejam<br />

reduzidos a um nível aceitável. Para cada controle i<strong>de</strong>ntificado foi realizada uma análise<br />

do objetivo envolvido. Diante <strong>de</strong>sta análise, os controles similares foram agrupados em<br />

um único controle e classificados quanto ao seu tipo: Administrativo (A), Operacional<br />

(O) e Técnico (T). Para cada item <strong>de</strong> controle i<strong>de</strong>ntificado, sua execução foi classificada<br />

através da escala apresentada na Tabela 1.<br />

Tabela 1 – Escala <strong>de</strong> verificação <strong>de</strong> controles<br />

Nível<br />

Efetivo<br />

Não Efetivo<br />

Insuficiente<br />

Descrição<br />

Quando o controle é aplicado e o seu resultado é consi<strong>de</strong>rado eficiente.<br />

Quando o controle é aplicado mas o seu resultado não é consi<strong>de</strong>rado eficiente.<br />

Quando o controle é aplicado, mas não aten<strong>de</strong> completamente.<br />

Não Aplicado<br />

Quando o controle não é aplicado.<br />

A Tabela 2 apresenta os controles i<strong>de</strong>ntificados já agrupados, a relação <strong>de</strong> cada<br />

controle com o framework ou norma que o <strong>de</strong>finiu e a relação com do controle com a<br />

área <strong>de</strong> gestão i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso (recursos, privilégios e políticas). Ao total foram<br />

63 controles i<strong>de</strong>ntificados, on<strong>de</strong> 22 relativos à gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>, 34 com a gestão <strong>de</strong><br />

acesso e 7 com auditoria.<br />

Para a avaliação dos controles foram utilizadas técnicas como a análise<br />

documental, observação direta e a realização <strong>de</strong> entrevistas semi-estruturadas com os<br />

dois principais responsáveis pela área <strong>de</strong> gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso da<br />

organização.<br />

383


Tabela 2 – Controles Selecionados para a Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> Acesso<br />

Controles C O T N 2<br />

Controles C O T N 2<br />

Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong><br />

Políticas e Procedimentos<br />

(A) Se todos os usuários possuem um único<br />

i<strong>de</strong>ntificador universal e formalmente <strong>de</strong>finido.<br />

(A) Se o custo beneficio para a representação da<br />

i<strong>de</strong>ntida<strong>de</strong> digital foi <strong>de</strong>finido<br />

(A) Se os direitos e obrigações do uso da<br />

i<strong>de</strong>ntida<strong>de</strong> estão <strong>de</strong>finidos no contrato <strong>de</strong><br />

trabalho<br />

(A) Se o processo <strong>de</strong> solicitação, emissão,<br />

revogação, modificação <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> está<br />

<strong>de</strong>finido<br />

(O) Se existe política <strong>de</strong> confi<strong>de</strong>ncialida<strong>de</strong> na<br />

entrega <strong>de</strong> cre<strong>de</strong>nciais<br />

(A) Se existem políticas <strong>de</strong> privacida<strong>de</strong> para o<br />

uso da i<strong>de</strong>ntida<strong>de</strong><br />

(A) Se são <strong>de</strong>finidos políticas e procedimentos<br />

prévios <strong>de</strong> cre<strong>de</strong>nciamento<br />

x x x<br />

x<br />

x x x x<br />

x x x x x<br />

x<br />

x<br />

x<br />

(O) Se os direitos <strong>de</strong> acesso são<br />

concedidos baseados nos princípios<br />

necessida<strong>de</strong> <strong>de</strong> conhecer, mínimo<br />

privilégio e interesse do serviço<br />

(O) Se os direitos <strong>de</strong> acesso são<br />

revisados periodicamente<br />

(O) Se existem relatórios <strong>de</strong> métricas<br />

<strong>de</strong> acesso<br />

Gestão <strong>de</strong> Políticas<br />

Política e Procedimentos<br />

(A) Se os direitos e obrigações do uso<br />

dos direitos <strong>de</strong> acesso estão <strong>de</strong>finidos<br />

no contrato <strong>de</strong> trabalho<br />

(A) Se a política <strong>de</strong> controle <strong>de</strong> acesso<br />

é <strong>de</strong>finida formalmente pela<br />

organização<br />

(A) Se a segregação <strong>de</strong> funções é<br />

<strong>de</strong>finida na política <strong>de</strong> controle <strong>de</strong><br />

acesso<br />

x x x x x<br />

x<br />

x<br />

x<br />

x x<br />

x x x<br />

x<br />

(A) Se o cre<strong>de</strong>nciamento ocorre apenas <strong>de</strong>pois<br />

da contratação<br />

(A) Se existe política para a criação <strong>de</strong><br />

cre<strong>de</strong>nciais seguras<br />

(A) Se o processo <strong>de</strong> solicitação, emissão,<br />

revogação e modificação <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> está<br />

<strong>de</strong>finido para os ambientes <strong>de</strong> <strong>de</strong>senvolvimento<br />

(A) Se o cre<strong>de</strong>nciamento dos usuários está <strong>de</strong><br />

acordo com as normas e legislações vigentes<br />

para o acesso a sistemas críticos<br />

(A) Se são <strong>de</strong>finidas políticas para a concessão<br />

<strong>de</strong> cre<strong>de</strong>nciais <strong>de</strong> administração<br />

Execução e Verificação<br />

(T) Se as i<strong>de</strong>ntida<strong>de</strong>s digitais estão armazenadas<br />

em um repositório central<br />

(O) Se as i<strong>de</strong>ntida<strong>de</strong>s digitais são revisadas<br />

periodicamente<br />

(A) Se existem relatórios <strong>de</strong> métricas das<br />

i<strong>de</strong>ntida<strong>de</strong>s<br />

(T) Se o primeiro acesso com uma cre<strong>de</strong>ncial é<br />

controlado<br />

(O) Se as cre<strong>de</strong>nciais são modificadas<br />

periodicamente<br />

(T) Se os históricos das cre<strong>de</strong>nciais são<br />

armazenados<br />

(T) Se as i<strong>de</strong>ntida<strong>de</strong>s são bloqueadas por<br />

inativida<strong>de</strong><br />

(T) Se o cre<strong>de</strong>nciamento é feito por um<br />

processo automatizado<br />

(O) Se as cre<strong>de</strong>nciais são removidas após o<br />

<strong>de</strong>sligamento do usuário<br />

(T) Se a autenticação utiliza múltiplos fatores<br />

Gestão <strong>de</strong> Acesso<br />

Gestão <strong>de</strong> Recursos<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

(A) Se existe uma política que<br />

<strong>de</strong>screva o procedimento <strong>de</strong><br />

autenticação<br />

(A) Se são <strong>de</strong>finidos nos contratos<br />

políticas que apliquem sanções a<br />

acessos não autorizados por parte das<br />

terceirizadas<br />

(A) Se a implementação do controle <strong>de</strong><br />

acesso é aprovada previamente pela<br />

direção da organização<br />

(A) Se a política <strong>de</strong> controle <strong>de</strong> acesso<br />

está em conformida<strong>de</strong> com a política<br />

<strong>de</strong> segurança da informação e<br />

comunicações<br />

(A) Se existem programas <strong>de</strong><br />

conscientização e sensibilização sobre<br />

controle <strong>de</strong> acesso<br />

Execução e Verificação<br />

(T) Se o registro <strong>de</strong> último acesso é<br />

preservado e mostrado ao usuário<br />

(T) Se a sessão <strong>de</strong> acesso é expirada<br />

após tempo <strong>de</strong> inativida<strong>de</strong><br />

(T) Se a sessão <strong>de</strong> acesso proíbe acesso<br />

concorrente<br />

(T) Se a concessão <strong>de</strong> acesso baseia-se<br />

em horários<br />

(T) Se as conexões são encerradas apos<br />

o fim da sessão <strong>de</strong> acesso<br />

(T) Se informações relevantes não são<br />

informadas no procedimento <strong>de</strong><br />

autenticação<br />

Gestão <strong>de</strong> Privilégios<br />

Política e Procedimentos<br />

(A) Se o processo <strong>de</strong> solicitação,<br />

concessão, modificação e revogação <strong>de</strong><br />

direitos <strong>de</strong> acesso está <strong>de</strong>finido<br />

x x<br />

x<br />

x x<br />

x x<br />

x<br />

x<br />

x x<br />

x<br />

x x<br />

x<br />

x<br />

x x x x<br />

Política e Procedimentos<br />

(A) Se a política <strong>de</strong> classificação da informação<br />

está <strong>de</strong>finida<br />

x<br />

x<br />

(A) Se existe um mo<strong>de</strong>lo para<br />

solicitação <strong>de</strong> acesso<br />

(A) Se a concessão <strong>de</strong> acesso é baseada<br />

na segregação <strong>de</strong> funções<br />

x<br />

x<br />

384


(A) Se os controles <strong>de</strong> acesso são i<strong>de</strong>ntificados<br />

com base na gestão <strong>de</strong> riscos <strong>de</strong> segurança da<br />

informação e comunicações<br />

x<br />

(A) Se os direitos <strong>de</strong> acesso são<br />

aprovados pelos proprietários das<br />

informações<br />

x<br />

x<br />

(A) Se são <strong>de</strong>finidos termos <strong>de</strong><br />

responsabilida<strong>de</strong> para o uso dos recursos<br />

(A) Se os direitos <strong>de</strong> acesso são documentados x x<br />

(A) Se os recursos criptográficos utilizados são<br />

homologados<br />

Execução e Verificação<br />

(O) Se a informação está classificada quanto ao<br />

sigilo<br />

(O) Se os proprietários da informação são<br />

<strong>de</strong>finidos<br />

(O) Se o tempo <strong>de</strong> retenção da informação é<br />

<strong>de</strong>finido<br />

(O) Se a classificação da informação é revisada<br />

periodicamente<br />

(T) Se os direitos <strong>de</strong> acesso são armazenados<br />

em um repositório central<br />

(T) Se o armazenamento das informações é<br />

a<strong>de</strong>quado<br />

(T) Se o recurso oferecido utiliza canal seguro<br />

<strong>de</strong> comunicação<br />

(A) Se o processo <strong>de</strong> solicitação, concessão,<br />

modificação e revogação <strong>de</strong> direitos <strong>de</strong> acesso<br />

está <strong>de</strong>finido<br />

(A) Se existe um mo<strong>de</strong>lo para solicitação <strong>de</strong><br />

acesso<br />

(A) Se a concessão <strong>de</strong> acesso é baseada na<br />

segregação <strong>de</strong> funções<br />

(A) Se os direitos <strong>de</strong> acesso são aprovados<br />

pelos proprietários das informações<br />

(A) Se o processo <strong>de</strong> revisão <strong>de</strong> concessão <strong>de</strong><br />

direitos <strong>de</strong> acesso é <strong>de</strong>finido formalmente<br />

Legenda: C = Cobit, O = OISM2, T = TCU, N = NC 07 e 2 = ISO 27002<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x x x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x x x x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

(A) Se o processo <strong>de</strong> revisão <strong>de</strong><br />

concessão <strong>de</strong> direitos <strong>de</strong> acesso é<br />

<strong>de</strong>finido formalmente<br />

Execução e verificação<br />

(O) Se os direitos <strong>de</strong> acesso são<br />

concedidos baseados nos princípios<br />

necessida<strong>de</strong> <strong>de</strong> conhecer, mínimo<br />

privilégio e interesse do serviço<br />

(O) Se os direitos <strong>de</strong> acesso são<br />

revisados periodicamente<br />

(O) Se existem relatórios <strong>de</strong> métricas<br />

<strong>de</strong> acesso<br />

Auditoria<br />

Políticas e Procedimentos<br />

(A) Se os eventos <strong>de</strong> auditoria são<br />

previamente <strong>de</strong>finidos<br />

(T) Se são <strong>de</strong>finidos mecanismos que<br />

garantam a exatidão dos registros <strong>de</strong><br />

auditoria<br />

Execução e Verificação<br />

(T) Se o uso da i<strong>de</strong>ntida<strong>de</strong> é registrado<br />

(trilha <strong>de</strong> auditoria)<br />

(O) Se as trilhas <strong>de</strong> auditoria do uso da<br />

i<strong>de</strong>ntida<strong>de</strong> são analisadas<br />

(T) Se os usuários são i<strong>de</strong>ntificados no<br />

acesso as informações (trilhas <strong>de</strong><br />

auditoria)<br />

(O) Se as trilhas <strong>de</strong> auditorias do<br />

acesso as informações são analisadas<br />

periodicamente<br />

(T) Se os acessos são registrados para<br />

oferecer rastreabilida<strong>de</strong> das ações<br />

tomadas<br />

x<br />

x<br />

x x x x x<br />

x<br />

x<br />

x<br />

x<br />

x x x<br />

As próximas subseções apresentam os resultados coletados sobre a<br />

conformida<strong>de</strong> <strong>de</strong> uma organização com os controles i<strong>de</strong>ntificados.<br />

4.1. Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong><br />

A Figura 1 apresenta os resultados obtidos dos controles relacionados com a<br />

Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> Política e Procedimentos. Foram i<strong>de</strong>ntificados 59% dos controles<br />

como efetivos, 25% como insuficientes, 8% como não efetivos e 8% como não<br />

aplicados. Quanto a Execução e Verificação foram i<strong>de</strong>ntificados 60% dos controles<br />

como efetivos, 20% como insuficientes, 20% como não aplicados e nenhum controle<br />

como não efetivo.<br />

x<br />

x<br />

x<br />

x<br />

x<br />

x<br />

Figura 1: Avaliação dos Controles da Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong><br />

385


4.2. Gestão <strong>de</strong> Acesso<br />

A Figura 2 apresenta os resultados obtidos dos controles relacionados com a<br />

Gestão <strong>de</strong> Acesso e Política e Procedimentos. Foram i<strong>de</strong>ntificados 50% dos controles<br />

como efetivos, 11% como insuficientes, 39% como não aplicados e nenhum como não<br />

efetivo.<br />

Figura 2: Controles da Gestão <strong>de</strong> Acesso<br />

A Figura 2 também apresenta os resultados obtidos dos controles relacionados<br />

com a Gestão <strong>de</strong> Acesso e Execução e Verificação. Foram i<strong>de</strong>ntificados 56% dos<br />

controles como efetivos, 19% como insuficientes, 19% como não aplicados e 6% como<br />

não efetivos.<br />

4.3. Auditoria<br />

A Figura 3 apresenta os resultados obtidos dos controles relacionados com a<br />

Auditoria Políticas e Procedimentos. Foram i<strong>de</strong>ntificados 50% dos controles como<br />

efetivos, 50% como insuficientes. Não foram i<strong>de</strong>ntificados controles como não<br />

aplicados e não efetivos. Quanto a Execução e Verificação, foram i<strong>de</strong>ntificados 60%<br />

dos controles como efetivos, 20% como insuficientes, 20% como não aplicados e<br />

nenhum como não efetivo.<br />

Figura 3: Controles <strong>de</strong> Auditoria relacionados com Políticas e Procedimentos<br />

5. Conclusão e Trabalhos Futuros<br />

Este trabalho teve como objetivo avaliar um sistema <strong>de</strong> gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong><br />

acesso em uma Organização Pública Fe<strong>de</strong>ral. Para o estabelecimento do critério <strong>de</strong><br />

análise, foram i<strong>de</strong>ntificados os principais controles técnicos, administrativos e<br />

operacionais relacionados com a gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso, com base nos<br />

principais normativos. Os controles relacionados foram i<strong>de</strong>ntificados e agrupados <strong>de</strong><br />

acordo com o seu propósito, levando em consi<strong>de</strong>ração gestão da i<strong>de</strong>ntida<strong>de</strong> e as<br />

subdivisões da gestão <strong>de</strong> acesso, como a gestão <strong>de</strong> recursos, gestão <strong>de</strong> privilégios e<br />

gestão <strong>de</strong> políticas.<br />

Após a i<strong>de</strong>ntificação, os controles <strong>de</strong> segurança foram avaliados em uma<br />

organização específica integrante da APF. Embora os dados coletados sejam suficientes<br />

para compreen<strong>de</strong>r o panorama atual da gestão da i<strong>de</strong>ntida<strong>de</strong> e do acesso da organização<br />

pesquisada, a não adoção <strong>de</strong> um mo<strong>de</strong>lo <strong>de</strong> maturida<strong>de</strong> tornou impossível a<br />

386


classificação do estágio atual em níveis. Este <strong>de</strong>safio será foco <strong>de</strong> futuros trabalhos, com<br />

o objetivo <strong>de</strong> melhorar a avaliação do sistema <strong>de</strong> gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso.<br />

Por fim, a i<strong>de</strong>ntificação dos controles <strong>de</strong> segurança da gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e do<br />

acesso com base nos principais normativos e a verificação da implementação real <strong>de</strong> tais<br />

controles foram as principais contribuições da pesquisa para a organização. Os controles<br />

i<strong>de</strong>ntificados po<strong>de</strong>m ser utilizados por outras organizações para a avaliação <strong>de</strong> seus<br />

sistemas <strong>de</strong> gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso, como também, po<strong>de</strong>m ser verificados<br />

novamente para i<strong>de</strong>ntificar a evolução <strong>de</strong>stes processos. Esta nova verificação permite<br />

observar e direcionar melhorias na segurança da informação e comunicações no<br />

controle <strong>de</strong> acesso às informações.<br />

Referências Bibliográficas<br />

ABNT. Código <strong>de</strong> prática para a gestão da segurança da informação: ABNT NBR<br />

ISO/IEC 27002:2005. 2a. ed. Rio <strong>de</strong> Janeiro, 2005.<br />

BARBOSA, A. <strong>de</strong> S. Avaliação Preliminar dos Níveis <strong>de</strong> Maturida<strong>de</strong> dos Controles <strong>de</strong><br />

Segurança da Informação e Comunicações adotados em Organizações Militares do<br />

Exército Brasileiro, <strong>de</strong> acordo com a Norma ABNT NBR ISO/IEC 27002:2005.<br />

Monografia <strong>de</strong> Conclusão <strong>de</strong> Curso (Especialização). Universida<strong>de</strong> <strong>de</strong> Brasília. 2009.<br />

ALDER A WA K N G : A M ’ G D y<br />

ISO 27001/ISO 27002. 4ª Edição. Reino Unido. Kogan Page Limited. 2008.<br />

BRASIL. Tribunal <strong>de</strong> Contas da União. Boas práticas em segurança da informação /<br />

Tribunal <strong>de</strong> Contas da União. – 3. ed. Brasília. TCU 2008.<br />

DSIC/GSIPR. Norma Complementar 07/IN01/DSIC/GSIPR. 2010.<br />

FICAM. Fe<strong>de</strong>ral I<strong>de</strong>ntity, Cre<strong>de</strong>ntial, and Access Management (FICAM). Roadmap and<br />

Implementation Guidance. Versão 1.0. 2009.<br />

ISACA. Information Systems Audit and Control Foundation. I<strong>de</strong>ntity Management<br />

Audit/Assurance Program. ISACA. 2009.<br />

ITGI - IT GOVERNANCE INSTITUTE. COBIT 4.1. 4.1. ed. USA, 2007.<br />

NTSC. National Science and Technology Council: Subcommittee on Biometrics and<br />

I<strong>de</strong>ntity Management. I<strong>de</strong>ntity Management Task Force Report. USA. 2008.<br />

OGC. Information Technology Infrastructure Library: Service Strategy. Londres. 2007.<br />

O-ISM3. Open Information Security Management Maturity Mo<strong>de</strong>l. Open Group. 2011.<br />

PARANHOS, M. M. Framework <strong>de</strong> segurança da informação para medição do nível <strong>de</strong><br />

maturida<strong>de</strong> das organizações. Dissertação <strong>de</strong> mestrado. UCB. Brasília. 2010.<br />

PONEMON. Access Governance Trends Survey 2010 - Study of IT Practitioners in<br />

Multinational Organizations. Ponemon Institute. 2010.<br />

SILVA, S. R. F. Proposta <strong>de</strong> Mo<strong>de</strong>lo <strong>de</strong> Controle <strong>de</strong> Acesso Lógico por Servidores<br />

Públicos aos Recursos Computacionais da Administração Pública. Monografia <strong>de</strong><br />

Conclusão <strong>de</strong> Curso (Especialização). Universida<strong>de</strong> <strong>de</strong> Brasília. 2008.<br />

SIMIÃO, R. S. Segurança da Informação e Comunicações: conceito aplicável em organizações<br />

governamentais. Monografia <strong>de</strong> Conclusão <strong>de</strong> Curso (Especialização). Universida<strong>de</strong> <strong>de</strong><br />

Brasília. 2009.<br />

387


Uma Plataforma para Gerenciamento <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong><br />

Software como Serviço em uma Infraestrutura como Serviço<br />

Maicon Stihler e Altair Olivo Santin<br />

Programa <strong>de</strong> Pós-Graduação em Informática – Pontifícia Universida<strong>de</strong> Católica do<br />

Paraná (PUCPR)<br />

Rua Imaculada Conceição, 1155 – Prado Velho – CEP 80215-901 – Curitiba – PR<br />

{stihler,santin}@ppgia.pucpr.br<br />

Abstract. Users of software as a service (SaaS) do not exist on the<br />

infrastructure as a service (IaaS) domain; this complicates the accounting and<br />

auditing of resource consumption. Consequently, <strong>de</strong>velopers of SaaS<br />

applications are tasked with managing the mapping of i<strong>de</strong>ntities between SaaS<br />

and IaaS. The traditional approaches to i<strong>de</strong>ntity fe<strong>de</strong>ration look at the<br />

problem at only one level (eg. SaaS), thus we propose a platform to allow the<br />

mapping of i<strong>de</strong>ntities between multiple levels in a transparent fashion. The<br />

result is reduced complexity for <strong>de</strong>velopers, transparency for users, and a<br />

more accurate accounting and auditing of resource usage.<br />

Resumo. Usuários <strong>de</strong> software como serviço (SaaS) não existem no domínio<br />

da infraestrutura como serviço (IaaS), o que complica a contabilida<strong>de</strong> e<br />

auditoria do consumo <strong>de</strong> recursos. Consequentemente, os programadores <strong>de</strong><br />

aplicações SaaS têm a tarefa <strong>de</strong> gerenciar o mapeamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s entre<br />

SaaS e IaaS. As abordagens tradicionais para a fe<strong>de</strong>ração <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s<br />

olham para o problema em apenas um nível (e.g. SaaS), portanto, propomos<br />

uma plataforma para permitir o mapeamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s entre os vários<br />

níveis <strong>de</strong> uma forma transparente. O resultado é a redução <strong>de</strong> complexida<strong>de</strong><br />

para os <strong>de</strong>senvolvedores, a transparência para os usuários, e a contabilida<strong>de</strong><br />

e auditoria mais precisas do uso <strong>de</strong> recursos.<br />

1. Introdução<br />

O amadurecimento da modalida<strong>de</strong> <strong>de</strong> computação em nuvem conhecida como<br />

Infraestrutura como Serviço (Infrastructure as a Service, IaaS), trouxe novas<br />

possibilida<strong>de</strong>s para os <strong>de</strong>senvolvedores <strong>de</strong> Software como Serviço (Software as a<br />

Service, SaaS). A elasticida<strong>de</strong> computacional oferecida por um ambiente <strong>de</strong> IaaS<br />

permite, <strong>de</strong> mesmo modo, que uma aplicação em nível SaaS seja redimensionada<br />

conforme a <strong>de</strong>manda <strong>de</strong> seus usuários aumenta[Badger, Grance, Patt-Corner e Voas<br />

2011] .<br />

Essa flexibilida<strong>de</strong>, no entanto, oferece <strong>de</strong>safios que não são solucionados<br />

facilmente pelas propostas existentes na literatura. A concepção em camadas do mo<strong>de</strong>lo<br />

<strong>de</strong> serviços <strong>de</strong> computação em nuvem <strong>de</strong>svincula a lógica da aplicação da<br />

infraestrutura, mas cria dificulda<strong>de</strong>s <strong>de</strong> mapeamento entre as i<strong>de</strong>ntida<strong>de</strong>s dos usuários<br />

da aplicação SaaS e as i<strong>de</strong>ntida<strong>de</strong>s dos usuários que existem no ambiente IaaS. Isto é,<br />

388


um usuário válido em um ambiente não é reconhecido no outro. Essa <strong>de</strong>sintegração tem<br />

impacto direto, por exemplo, na capacida<strong>de</strong> do <strong>de</strong>senvolvedor SaaS <strong>de</strong> implementar<br />

políticas <strong>de</strong> autorização dinâmicas para seus usuários. Além disto, o <strong>de</strong>senvolvedor da<br />

aplicação tem dificulda<strong>de</strong>s para rastrear i<strong>de</strong>ntida<strong>de</strong>s em nível <strong>de</strong> SaaS e adaptar as<br />

políticas ao consumo <strong>de</strong> infraestrutura que o usuário faz em nível <strong>de</strong> IaaS.<br />

Adicionalmente, o controle <strong>de</strong> acesso em nível <strong>de</strong> IaaS não conhece a associação entre<br />

as políticas <strong>de</strong> acesso e o usuário que são controladas em nível <strong>de</strong> SaaS. Estas<br />

dificulda<strong>de</strong>s para gerenciar i<strong>de</strong>ntida<strong>de</strong>s entre as camadas trazem prejuízos para outros<br />

controles no ambiente <strong>de</strong> computação em nuvem.<br />

Consi<strong>de</strong>rando que a natureza <strong>de</strong> cobrança dos serviços <strong>de</strong> IaaS precisa ser<br />

contabilizada pelo consumo individual <strong>de</strong> recursos, tem-se uma limitação <strong>de</strong><br />

granularida<strong>de</strong> nas abordagens aplicadas atualmente. Em geral a contabilização <strong>de</strong><br />

consumo é feita pelo contratante e não pelo usuário. Essa contabilida<strong>de</strong> fina permitiria a<br />

aplicação <strong>de</strong> políticas <strong>de</strong> autorização específicas para cada usuário, assim como<br />

políticas <strong>de</strong> cobrança a<strong>de</strong>quadas para cada perfil. Por exemplo, um usuário que consuma<br />

mais recursos do que o previsto inicialmente po<strong>de</strong> entrar em um esquema <strong>de</strong> cobrança<br />

diferenciado e ter seu acesso garantido por políticas <strong>de</strong> controle <strong>de</strong> uso dinâmicas.<br />

Ainda que os planos <strong>de</strong> cobrança utilizados em SaaS sejam diferentes dos<br />

utilizados em IaaS, a individualização do consumo <strong>de</strong> recursos da infraestrutura<br />

<strong>de</strong>correntes do uso <strong>de</strong> serviços (SaaS) abre novas possibilida<strong>de</strong>s <strong>de</strong> cobrança e controle.<br />

Em abordagens tradicionais os custos <strong>de</strong> provimento do serviço é rateada entre os<br />

usuários, <strong>de</strong>vido à incapacida<strong>de</strong> <strong>de</strong> i<strong>de</strong>ntificar as parcelas <strong>de</strong> uso <strong>de</strong> maneira<br />

indidualizada.<br />

Para equacionar a dificulda<strong>de</strong> <strong>de</strong> mapeamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s entre domínios<br />

diferentes, vários trabalhos propõem a fe<strong>de</strong>ração <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s ou autenticação<br />

distribuída: Shibboleth[Morgan, Cantor, Carmody, Hoehn e Klingenstein 2004],<br />

OpenSSO [Oracle Corporation 2010], SAML [OASIS 2011] e OpenID [OpenID<br />

Foundation 2007]. No entanto, estas abordagens operam em um único nível <strong>de</strong><br />

abstração, ou seja, as i<strong>de</strong>ntida<strong>de</strong>s são utilizadas em contextos homogêneos (e.g.<br />

aplicações web). Neste contexto, observamos que as aplicações SaaS costumam possuir<br />

mecanismos <strong>de</strong> segurança diferentes dos utilizados em sistemas IaaS (e.g. os sistemas<br />

<strong>de</strong> autenticação utilizados). Assim, as propostas existentes para fe<strong>de</strong>ração <strong>de</strong><br />

i<strong>de</strong>ntida<strong>de</strong>s não po<strong>de</strong>m aten<strong>de</strong>r satisfatoriamente e <strong>de</strong> forma transparente os três níveis<br />

<strong>de</strong> abstração <strong>de</strong> computação em nuvem.<br />

Para contornar as limitações citadas anteriormente é proposto neste trabalho uma<br />

plataforma interposta entre a camada <strong>de</strong> IaaS e a aplicação SaaS, ocultando do<br />

<strong>de</strong>senvolvedor <strong>de</strong> SaaS os <strong>de</strong>talhes <strong>de</strong> autenticação e contabilida<strong>de</strong> em nível <strong>de</strong> IaaS.<br />

Deste modo, uma aplicação SaaS ganha a possibilida<strong>de</strong> <strong>de</strong> rastrear a utilização <strong>de</strong><br />

recursos <strong>de</strong> baixo nível (camada <strong>de</strong> IaaS) individualmente, através do mapeamento das<br />

389


i<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong> seus usuários e dos processos executados em nome <strong>de</strong>stes no ambiente<br />

IaaS.<br />

Este artigo está organizado da seguinte maneira: na Seção 2 é apresentada uma<br />

revisão dos principais trabalhos relacionados; a Seção 3 discute a arquitetura da<br />

plataforma proposta. A Seção 4 apresenta uma discussão sobre a implementação <strong>de</strong> um<br />

protótipo e as consi<strong>de</strong>rações finais são apresentadas na Seção 5.<br />

2. Trabalhos Relacionados<br />

Shibboleth e OpenSSO oferecem compatibilida<strong>de</strong> com o profile web da Security<br />

Assertion Markup Language (SAML). Um dos fundamentos <strong>de</strong> SAML é prover<br />

i<strong>de</strong>ntida<strong>de</strong>s fe<strong>de</strong>radas para permitir que organizações que utilizem diferentes<br />

mecanismos <strong>de</strong> autenticação e autorização possam interoperar.<br />

No OpenSSO/Shibboleth, quando um usuário tenta acessar um recurso web com<br />

seu navegador, o service provi<strong>de</strong>r (SP) exige informações sobre o usuário para <strong>de</strong>cidir<br />

se o acesso será permitido. A requisição é redirecionada para um site executando o<br />

software <strong>de</strong> i<strong>de</strong>ntificação (I<strong>de</strong>ntity Provi<strong>de</strong>r, IdP) da organização responsável, on<strong>de</strong> o<br />

usuário efetua seu login. O IdP redireciona o navegador <strong>de</strong> volta ao recurso protegido,<br />

embutindo algumas informações (i.e. assertivas) que comprovam que o usuário está<br />

autenticado. O SP valida estas assertivas e coleta mais informações sobre o usuário no<br />

IdP. Os atributos são repassados à aplicação Web para que a <strong>de</strong>cisão <strong>de</strong> autorização seja<br />

tomada.<br />

O OpenID possui uma abordagem similar ao Shibboleth. Sua estrutura básica é<br />

composta pelos sites consumidores <strong>de</strong> cre<strong>de</strong>nciais, chamados <strong>de</strong> relying party (RP), e<br />

pelos OpenID provi<strong>de</strong>rs (i.e. provedores <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>). A diferença principal entre a<br />

abordagem das opções anteriores está no fato <strong>de</strong> que o usuário <strong>de</strong>ci<strong>de</strong> quais RPs <strong>de</strong>vem<br />

receber suas informações. Nos casos anteriores, o provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s é quem<br />

<strong>de</strong>ci<strong>de</strong>, através <strong>de</strong> suas políticas <strong>de</strong> segurança, quais são as partes que <strong>de</strong>vem ter acesso<br />

às cre<strong>de</strong>nciais do usuário. OpenID é centrado no usuário e seu foco tem sido a aplicação<br />

para autenticação distribuída em sites web [OpenID Foundation 2007].<br />

Essa abordagem, OpenID, contudo não é a<strong>de</strong>quada para o ambiente discutido na<br />

introdução. Pois, além da proposta ser limitada a recursos web, sua função é garantir o<br />

single sign-on (i.e. autenticação única) entre domínios <strong>de</strong> segurança diferentes. Ainda<br />

que seja possível efetuar a autenticação <strong>de</strong> acesso a aplicações SaaS com o uso <strong>de</strong>stas<br />

soluções, o mapeamento entre as i<strong>de</strong>ntida<strong>de</strong>s SaaS e IaaS ainda é uma questão em<br />

aberto.<br />

Um sistema muito popular para o gerenciamento <strong>de</strong> autenticação em nível <strong>de</strong><br />

sistema operacional é o Kerberos Authentication System [Steiner, Neuman, e Schiller<br />

1988]. Através <strong>de</strong> uma série <strong>de</strong> mensagens cifradas, uma aplicação po<strong>de</strong> verificar que<br />

uma requisição é feita em nome <strong>de</strong> um <strong>de</strong>terminado usuário. O Kerberos altera o<br />

protocolo <strong>de</strong> autenticação <strong>de</strong> Needham e Schroe<strong>de</strong>r [Needham e Schroe<strong>de</strong>r 1978] para<br />

390


eduzir o número <strong>de</strong> mensagens <strong>de</strong> autenticação, através do uso <strong>de</strong> timestamps, um<br />

serviço para eliminar a necessida<strong>de</strong> <strong>de</strong> utilização subsequente <strong>de</strong> senhas – o serviço <strong>de</strong><br />

ticket-granting, e a possibilida<strong>de</strong> <strong>de</strong> utilizar servidores <strong>de</strong> autenticação que existam em<br />

domínios diferentes daquele da aplicação alvo [Neuman e Ts'o 1994].<br />

O Kerberos permite a centralização das informações <strong>de</strong> autenticação e po<strong>de</strong> ser<br />

utilizado em um ambiente <strong>de</strong> IaaS. Contudo ele não está integrado a autenticação da<br />

aplicação SaaS. Em nossa proposta, o mo<strong>de</strong>lo apresentado pelo Kerberos é utilizado<br />

como parte da plataforma <strong>de</strong> autenticação. Utilizamos as cre<strong>de</strong>nciais <strong>de</strong> nível SaaS para<br />

obtermos cre<strong>de</strong>nciais <strong>de</strong> baixo nível (e.g. utilizando Kerberos), através <strong>de</strong> mapeamentos<br />

entre cre<strong>de</strong>nciais <strong>de</strong> níveis distintos.<br />

3. Arquitetura Proposta<br />

Antes <strong>de</strong> apresentar a arquitetura proposta é importante <strong>de</strong>finirmos as entida<strong>de</strong>s da<br />

proposta.<br />

<br />

<br />

<br />

Usuário SaaS: é o consumidor da aplicação <strong>de</strong>senvolvida a partir da<br />

infraestrutura <strong>de</strong> IaaS. Sua i<strong>de</strong>ntida<strong>de</strong> apenas é reconhecida pela aplicação SaaS,<br />

não sendo possível rastrear suas ativida<strong>de</strong>s por meios convencionais no<br />

ambiente <strong>de</strong> IaaS, pois o ambiente <strong>de</strong> SaaS executa virtualizado sobre o IaaS.<br />

Contratante <strong>de</strong> IaaS: é aquele que utiliza os recursos <strong>de</strong> IaaS para oferecer uma<br />

aplicação como serviço.<br />

Usuário <strong>de</strong> IaaS: são as i<strong>de</strong>ntida<strong>de</strong>s reconhecidas em nível <strong>de</strong> IaaS, isto é, os<br />

usuários reconhecidos pelos sistemas operacionais virtualizados.<br />

Além disto, neste texto serão consi<strong>de</strong>rados recursos e serviços como <strong>de</strong>finidos abaixo:<br />

<br />

Recursos: são os meios computacionais disponibilizados como infraestrutura<br />

(e.g. espaço <strong>de</strong> armazenamento, tempo <strong>de</strong> processamento, banda <strong>de</strong> re<strong>de</strong> etc.).<br />

Serviço: é a aplicação SaaS disponibilizada aos usuários SaaS, utilizando os<br />

recursos oferecidos em nível <strong>de</strong> IaaS.<br />

O contratante <strong>de</strong> IaaS utiliza os recursos contratados para oferecer um serviço<br />

aos usuários <strong>de</strong> SaaS. O monitoramento da quantida<strong>de</strong> <strong>de</strong> consumo realizada no<br />

provimento do serviço é essencial, tendo em consi<strong>de</strong>ração que as políticas <strong>de</strong> cobrança<br />

<strong>de</strong> ambientes <strong>de</strong> IaaS costumam ser baseadas no consumo (i.e. pay-as-you-go).<br />

Além disso, os recursos contratados po<strong>de</strong>m estar sujeitos a diferentes tarifas,<br />

<strong>de</strong>pen<strong>de</strong>ndo do perfil do recurso utilizado. Isso ressalta a importância da<br />

individualização do consumo <strong>de</strong> recursos por parte dos usuários SaaS. A abordagem<br />

simplista <strong>de</strong> rateio dos custos com todos os usuários não é satisfatória; a<br />

individualização do consumo em nível <strong>de</strong> Serviço, contudo é uma tarefa bastante<br />

complicada <strong>de</strong>vido à falta <strong>de</strong> integração no esquema <strong>de</strong> gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong><br />

usuários em nível <strong>de</strong> SaaS e IaaS.<br />

391


Baseados nesses pressupostos, propomos uma arquitetura para mapeamento <strong>de</strong><br />

i<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong> usuários SaaS para IaaS. Um objetivo importante é ocultar do<br />

contratante <strong>de</strong> IaaS as especificida<strong>de</strong>s do mapeamento e os mecanismos <strong>de</strong><br />

implementação, permitindo que o mesmo concentre seus esforços no gerenciamento dos<br />

usuários SaaS. Como po<strong>de</strong>mos ver na Figura 1, que apresenta os principais<br />

componentes da arquitetura proposta, existe uma intersecção entre os ambientes SaaS e<br />

PaaS. Isto <strong>de</strong>corre do fato <strong>de</strong> que, apesar <strong>de</strong> ser provido por uma plataforma, o gateway<br />

do serviço e seus interceptadores operam em nível <strong>de</strong> SaaS.<br />

O componente <strong>de</strong>nominado <strong>de</strong> Usuário SaaS conduz a comunicação com o<br />

serviço, usando para isso um protocolo específico (e.g. HTTP, via navegador web). As<br />

requisições são enviadas ao gateway do serviço – interface pública do serviço oferecida<br />

pelo contratante <strong>de</strong> IaaS; O serviço é a aplicação SaaS.<br />

Figura 1: Componentes da Arquitetura<br />

As requisições feitas pelo cliente <strong>de</strong>vem conter as informações <strong>de</strong> autenticação<br />

requeridas pelo serviço (e.g. um par usuário/senha); estas informações são direcionadas<br />

ao gateway do serviço e são processadas por um interceptador. O interceptador extrai<br />

da requisição do cliente as informações <strong>de</strong> autenticação e <strong>de</strong>senca<strong>de</strong>ia um procedimento<br />

<strong>de</strong> autenticação junto à infraestrutura. Isto é feito através do serviço <strong>de</strong> autenticação, no<br />

estilo do protocolo <strong>de</strong> autenticação Needham-Schroe<strong>de</strong>r, usando a API authenticationserver.<br />

Este processo verifica a existência <strong>de</strong> um mapeamento entre a cre<strong>de</strong>ncial SaaS<br />

fornecida e uma cre<strong>de</strong>ncial IaaS.<br />

392


O serviço <strong>de</strong> autenticação utiliza informações <strong>de</strong> autenticação <strong>de</strong> alto-nível (i.e.<br />

usuários SaaS) para autenticar o acesso a recursos <strong>de</strong> IaaS. Uma vez comprovada a<br />

autenticida<strong>de</strong> do usuário SaaS, o interceptador utiliza a API ticket-granting-server para<br />

obter um token <strong>de</strong> i<strong>de</strong>ntificação.<br />

Este token <strong>de</strong> i<strong>de</strong>ntificação é embutido na requisição do serviço; a requisição é<br />

então repassada à API do Serviço para o processamento esperado do serviço. O serviço<br />

<strong>de</strong>ve então utilizar o token para acessar os recursos protegidos, utilizando para isso a<br />

API Protegida pelos mecanismos <strong>de</strong> segurança nativos do sistema operacional (e.g. o<br />

serviço po<strong>de</strong> instanciar novos processos, ou gravar informações em diretórios<br />

específicos). O sistema operacional po<strong>de</strong> então verificar a autenticida<strong>de</strong> da requisição e<br />

avaliar localmente a autorização do acesso.<br />

3.1. Avaliação qualitativa da proposta<br />

Com a utilização do esquema proposto, a primeira vantagem obtida é a<br />

centralização da ativida<strong>de</strong> <strong>de</strong> gerenciamento do mapeamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s no serviço<br />

<strong>de</strong> autenticação. Isto é, ao invés do contratante ser obrigado a administrar contas<br />

específicas para cada usuário SaaS em cada instância <strong>de</strong> sistema operacional criada,<br />

somente será necessário gerenciar uma base <strong>de</strong> autenticação central. Como resultado, o<br />

redimensionamento do serviço não incorre em custos administrativos extras para o<br />

contratante <strong>de</strong> IaaS; uma vez criado o mapeamento no servidor <strong>de</strong> autenticação, todas<br />

as máquinas virtuais instanciadas po<strong>de</strong>rão receber requisições <strong>de</strong> serviço para a<br />

i<strong>de</strong>ntida<strong>de</strong> cadastrada <strong>de</strong> maneira distribuída.<br />

A segunda vantagem da proposta refere-se à possibilida<strong>de</strong> <strong>de</strong> rastrear as<br />

ativida<strong>de</strong>s específicas <strong>de</strong> cada usuário SaaS na infraestrutura. Como o sistema<br />

operacional geralmente oferece mecanismos para monitorar o consumo <strong>de</strong> um usuário<br />

local, o contratante po<strong>de</strong> utilizar tais mecanismos para contabilizar a utilização <strong>de</strong><br />

recursos referentes ao usuário i<strong>de</strong>ntificado pelo token.<br />

Esta segunda possibilida<strong>de</strong> prove a capacida<strong>de</strong> <strong>de</strong> estabelecer políticas <strong>de</strong><br />

autorização dinâmicas para cada usuário. Utilizando os princípios <strong>de</strong>lineados no mo<strong>de</strong>lo<br />

<strong>de</strong> controle <strong>de</strong> uso [Park e Sandhu 2004], por exemplo, é possível disparar funções<br />

administrativas para enten<strong>de</strong>r a quantida<strong>de</strong> <strong>de</strong> recursos disponíveis para um usuário, ou<br />

executar tarefas <strong>de</strong> bilhetagem.<br />

A unificação do sistema <strong>de</strong> i<strong>de</strong>ntificação resulta em um controle fino para o<br />

contratante <strong>de</strong> IaaS que, tal qual os provedores <strong>de</strong> IaaS, po<strong>de</strong> oferecer um serviço<br />

elástico aos seus usuários. Como os usuários <strong>de</strong> SaaS estão isolados <strong>de</strong>ste procedimento<br />

<strong>de</strong> gerenciamento unificado <strong>de</strong> cre<strong>de</strong>nciais, seu uso continua inalterado in<strong>de</strong>pen<strong>de</strong>nte<br />

dos movimentos <strong>de</strong> redimensionamento da infraestrutura utilizada pelo serviço.<br />

4. Implementação<br />

Estudos preliminares foram efetuados para o <strong>de</strong>senvolvimento <strong>de</strong> um protótipo. Como<br />

ambiente <strong>de</strong> IaaS, o middleware adotado foi a versão <strong>de</strong> código aberto do software<br />

Eucalyptus [Eucalyptus Systems, Inc. 2011]. A tecnologia <strong>de</strong> virtualização utilizada é o<br />

393


Xen Hypervisor [Citrix Systems 2011], sendo que as máquinas virtuais executam um<br />

sistema baseado em Linux, como por exemplo, a distribuição Debian [Debian Project<br />

2011].<br />

Como mencionamos anteriormente, o mo<strong>de</strong>lo para autenticação em nível <strong>de</strong><br />

infraestrutura é baseado no protocolo <strong>de</strong> Needham-Schroe<strong>de</strong>r, sendo que uma<br />

implementação do Kerberos é a solução mais apropriada; Para isso, é utilizada a<br />

distribuição <strong>de</strong> código aberto do Massachusetts Institute of Technology [Massachusetts<br />

Institute of Technology 2011].<br />

O serviço, que <strong>de</strong>sempenhará o papel <strong>de</strong> uma aplicação SaaS, será<br />

implementado com base no Apache Axis2 [Apache Foundation 2011], que é uma<br />

implementação da pilha <strong>de</strong> protocolos para serviços web. O Axis2 oferece a opção <strong>de</strong><br />

implementação <strong>de</strong> interceptadores transparentes, <strong>de</strong> modo que po<strong>de</strong>mos inspecionar a<br />

requisição SOAP [W3C 2011] para obtermos as informações <strong>de</strong> autenticação do usuário<br />

SaaS, e embutir cabeçalhos adicionais com o token obtido do serviço <strong>de</strong> autenticação<br />

(Kerberos).<br />

O serviço, instanciado em uma máquina virtual, po<strong>de</strong>rá então receber<br />

requisições dos usuários SaaS. O Interceptador irá efetuar a autenticação do usuário<br />

através das interfaces oferecidas pelo servidor Kerberos, embutindo o token obtido na<br />

mensagem SOAP <strong>de</strong>stinada ao serviço. O serviço, por sua vez, utilizará esse token para<br />

instanciar um processo responsável por aten<strong>de</strong>r a requisição do usuário. Agentes <strong>de</strong><br />

monitoramento instalados no sistema operacional virtualizado po<strong>de</strong>m, então, utilizar o<br />

i<strong>de</strong>ntificador do usuário para coletar os dados <strong>de</strong> consumo do processo criado.<br />

Neste contexto, o serviço funciona como um <strong>de</strong>spachante <strong>de</strong> requisições para<br />

processos criados em nome dos usuários SaaS – a criação <strong>de</strong> processos po<strong>de</strong> ser<br />

executada através do comando ksu(kerberized version of the su), que permite ao serviço<br />

assumir a i<strong>de</strong>ntida<strong>de</strong> do usuário contida no token para fins <strong>de</strong> instanciar o processo.<br />

Através <strong>de</strong> utilitários como o LiSt Open Files (lsof) os agentes po<strong>de</strong>m obter as métricas<br />

referentes a cada usuário (e.g. tempo <strong>de</strong> processamento, espaço utilizado em disco).<br />

A Figura 2 apresenta uma visão geral dos componentes utilizados para<br />

implementar o protótipo da plataforma proposta. Um servidor executando o software<br />

Eucalyptus gerencia as máquinas virtuais em execução na infraestrutura (i.e. são os<br />

recursos IaaS da Figura 1). Cada instância <strong>de</strong>stinada a aten<strong>de</strong>r requisições <strong>de</strong> serviço<br />

possui os componentes da Figura 2 pré-instalados. As cre<strong>de</strong>nciais dos usuários SaaS são<br />

cadastradas em uma base <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s utilizadas pelo servidor Kerberos, que emite<br />

tokens <strong>de</strong> autorização utilizados pelo serviço para criar processos em nome dos usuários<br />

SaaS; O servidor Kerberos realiza o papel do servidor <strong>de</strong> autenticação e <strong>de</strong> tickets da<br />

plataforma <strong>de</strong> segurança da Figura 1.<br />

O Cliente SOAP é a aplicação que realiza as requisições <strong>de</strong>sejadas pelo Usuário<br />

SaaS. As requisições são capturadas por um módulo interceptador implementado no<br />

Apache Axis2, para realizar as validações necessárias (i.e. autenticação do usuário SaaS<br />

394


e obtenção <strong>de</strong> token Kerberos para uso no sistema operacional). O Serviço instancia um<br />

processo para aten<strong>de</strong>r as requisições do usuário, e este processo <strong>de</strong> usuário efetua a<br />

interação com o sistema operacional para usar os recursos necessários. O processo <strong>de</strong><br />

usuário executa sob a i<strong>de</strong>ntida<strong>de</strong> fornecida pelo token Kerberos.<br />

Figura 2: Componentes do Protótipo<br />

5. Consi<strong>de</strong>rações Finais<br />

Neste trabalho foi apresentada uma plataforma que permite o mapeamento entre<br />

i<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong> usuários <strong>de</strong> aplicações SaaS e i<strong>de</strong>ntida<strong>de</strong>s em nível <strong>de</strong> IaaS. A integração<br />

das i<strong>de</strong>ntida<strong>de</strong>s provê ao <strong>de</strong>senvolvedor <strong>de</strong> aplicações SaaS a possibilida<strong>de</strong> <strong>de</strong> rastrear a<br />

utilização <strong>de</strong> recursos <strong>de</strong> seus usuários em baixo nível (nível <strong>de</strong> mecanismo), através da<br />

contabilida<strong>de</strong> individual (<strong>de</strong> granularida<strong>de</strong> fina).<br />

Como resultado da proposta, o <strong>de</strong>senvolvedor obtém outras vantagens como a<br />

capacida<strong>de</strong> <strong>de</strong> aplicação <strong>de</strong> políticas dinâmicas <strong>de</strong> autorização baseadas no consumo <strong>de</strong><br />

cada usuário; a cobrança diferenciada e individualizada para cada usuário SaaS,<br />

evitando o rateamento indiscriminado <strong>de</strong> custos <strong>de</strong> consumo.<br />

A utilização <strong>de</strong> interceptadores entre o nível <strong>de</strong> SaaS e os sistemas em nível <strong>de</strong><br />

IaaS permite a integração, <strong>de</strong> forma transparente ao usuário SaaS, dos sistemas <strong>de</strong><br />

autenticação da aplicação e do sistema operacional virtualizado. Ou seja, o aumento no<br />

controle oferecido não incorre em nenhum inconveniente para o usuário final.<br />

As discussões sobre a implementação <strong>de</strong> um protótipo sugerem que a proposta é<br />

realizável com componentes <strong>de</strong> software amplamente disponíveis. As tecnologias<br />

sugeridas são maduras e testadas em produção, o que sugere uma robustez inerente à<br />

proposta.<br />

395


Referências<br />

Apache Foundation (2011), Apache Axis2, Acessível em:<br />

http://axis.apache.org/axis2/java/core/, referenciado em 22 <strong>de</strong> Setembro <strong>de</strong><br />

2011.<br />

Badger, L., Grance, T., Patt-Corner, R. e Voas, J. (2011), Cloud Computing Synopsis<br />

and Recommendations, disponível em: http://csrc.nist.gov/publications/drafts/800-<br />

146/Draft-NIST-SP800-146.pdf, Referenciado em 22 <strong>de</strong> Setembro <strong>de</strong> 2011.<br />

Citrix Systems (2011), Inc. Xen Hypervisor. Disponível em:<br />

http://xen.org/products/xenhyp.html, referenciado em 22 <strong>de</strong> Setembro <strong>de</strong> 2011.<br />

Debian Project (2011), Debian GNU/Linux. Disponível em: http://www.<strong>de</strong>bian.org,<br />

referenciado em 22 <strong>de</strong> Setembro <strong>de</strong> 2011.<br />

Eucalyptus Systems, Inc. (2011), Eucalyptus Cloud Platform. Disponível em:<br />

http://www.eucalyptus.com/, referenciado em 22 <strong>de</strong> Setembro <strong>de</strong> 2011.<br />

Massachusetts Institute of Technology (2011), Kerberos: The Network Authentication<br />

Protocol, Disponível em: http://web.mit.edu/Kerberos/, referenciado em 22 <strong>de</strong><br />

Setembro <strong>de</strong> 2011.<br />

Morgan, R. L., Cantor, S., Carmody, S., Hoehn, W. e Klingenstein (2004), K. Fe<strong>de</strong>rated<br />

Security: The Shibboleth Approach, EDUCAUSE Quarterly, vol. 27, no. 4 pp 12-17.<br />

Needham, R. M. e Schroe<strong>de</strong>r, M. D. (1978), Using encryption for authentication in<br />

large networks of computers, Commun. of the ACM. vol. 21, no. 12, pp 993-999.<br />

[Needham]<br />

Neuman, B.C. e Ts'o, T. (1994), Kerberos: An Authentication Service for Computer<br />

Networks, IEEE Communications, vol. 32 no. 9, pp 33-38.<br />

OpenID Foundation (2007), OpenID Authentication 2.0 Disponível em:<br />

http://openid.net/specs/openid-authentication-2_0.html, referenciado em 22 <strong>de</strong><br />

Setembro <strong>de</strong> 2011.<br />

Oracle Corporation (2010), OpenSSO Architecture Overview, documentação.<br />

http://wikis.sun.com/display/OpenSSO/OpenSSO+Architecture+Overview.<br />

Referenciado em 22 <strong>de</strong> Setembro 2011.<br />

Organization for the Advancement of Structured Information Standards (OASIS)<br />

(2011), Security Assertion Markup Language, v. 2.0. http://docs.oasisopen.org/security/saml/v2.0/saml-core-2.0-os.pdf,<br />

2005. Referenciado em 22 <strong>de</strong><br />

Setembro <strong>de</strong> 2011.<br />

Park, J. e Sandhu, R. (2004), The UCON ABC Usage Control Mo<strong>de</strong>l. ACM Trans. Inf.<br />

Syst. Secur., vol. 7 no. 1, pp 128-174.<br />

Steiner, J.G., Neuman, B.C., e Schiller, J.I. (1988), Kerberos: An Authentication<br />

Service for Open Network Systems. In Proceedings of the Winter 1988 Usenix<br />

Conference.<br />

The World Wi<strong>de</strong> Web Consortium (W3C) (2011), SOAP Version 1.2 Part 1 Messaging<br />

Framework (Second Edition). Disponível em http://www.w3.org/TR/soap12-part1,<br />

referenciado em 22 <strong>de</strong> Setembro <strong>de</strong> 2011.<br />

396


Electronic Documents with Signature Constraints<br />

Felipe C. Werlang 1 , Ricardo F. Custódio 1 , Roberto Araújo 2<br />

1 Departamento <strong>de</strong> Informática e Estatística – Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina (UFSC)<br />

Caixa Postal 476 – 88.040-900 – Florianópolis – SC – Brazil<br />

2 Faculda<strong>de</strong> <strong>de</strong> Computação – Universida<strong>de</strong> Fe<strong>de</strong>ral do Pará (UFPA)<br />

Rua Augusto Corrêa, 01 - Setor Básico – 66075-110 – Belém – PA – Brazil<br />

felipewer@inf.ufsc.br, custodio@inf.ufsc.br, rsa@ufpa.br<br />

Abstract. X.509 Public Key Certificates and Attribute Certificates are well established<br />

technologies. They are employed in digital signatures to prove a signatory’s<br />

i<strong>de</strong>ntity and authorization. However, there is no standard <strong>de</strong>finition for<br />

the way electronic documents should specify the i<strong>de</strong>ntity and the authorization<br />

of required signatories, nor the number of expected signatures. In this paper we<br />

propose to bind i<strong>de</strong>ntity and authorization requirements to a document through<br />

a creator signature. For this, we introduce a new signed signature attribute.<br />

Keywords: Digital Signature, Authorization, Attribute Certificates, Signature<br />

Constraints, Electronic Documents, Authorization Requirements<br />

1. Introduction<br />

Mo<strong>de</strong>rn digital signature standards employ Public Key Certificates (PKCs) to i<strong>de</strong>ntify the<br />

signatories. They also support the inclusion of Attribute Certificates (ACs) in signatures<br />

to provi<strong>de</strong> authorization cre<strong>de</strong>ntials. However, these certificates only certify who signed<br />

a given document and what his attributes were. This does not mean that the signatory had<br />

the authorization to sign that document. We could take, for example, a court injunction.<br />

Although anyone could sign a document containing a court injunction, it only acquires<br />

legal value if signed by a judge. This means that applications enforcing authorization<br />

constraints in digital signatures have to look for a pre<strong>de</strong>fined set of attributes in the signatory’s<br />

AC. That attribute set, in turn, <strong>de</strong>pends directly on the business process in which<br />

the signature is used. Thus, each application ends up tied to a specific business process.<br />

Applications <strong>de</strong>signed to incorporate digital signatures in specific business processes,<br />

with fixed authorization constraints, are quite common. Examples inclu<strong>de</strong> management<br />

systems and communication protocols. Many kinds of forms also tend to have<br />

fixed authorization constraints. However, there are even more cases of documents with<br />

dynamic content and format. Each of these documents may have different authorization<br />

constraints for its signatures. A good example of this is a business contract.<br />

Furthermore, there may be situations where a document has a mix of authorization<br />

and i<strong>de</strong>ntity constraints. For example, a contract between a company and an individual<br />

may require the signature of the company’s director and the signature of the individual. In<br />

this case the first signature has an authorization constraint <strong>de</strong>fined by a role, i.e. Company<br />

Director, and the second signature has an i<strong>de</strong>ntity constraint <strong>de</strong>fined by the individual’s<br />

i<strong>de</strong>ntity.<br />

397


From all those possibilities, one realizes that it should be possible to let the author<br />

specify which signatures are required for the electronic document he creates. The process<br />

would then become similar to the way it is done with paper documents. This would allow<br />

applications performing digital signature validation to gather i<strong>de</strong>ntity and authorization<br />

requirements directly from the document. Those requirements would then be enforced<br />

against the PKCs and ACs present in the signatures.<br />

In or<strong>de</strong>r to address this necessity, we propose to bind i<strong>de</strong>ntity and authorization<br />

requirements to a document through a creator signature. For this, we introduce a new<br />

signed signature attribute.<br />

The structure of the paper is as follows. In Section 2 we briefly <strong>de</strong>scribe Attribute<br />

Certificates and the support offered by digital signature standards CAdES and XAdES<br />

to the inclusion of these certificates. Section 3 <strong>de</strong>scribes different alternatives for the inclusion<br />

of authorization constraints in a document. Section 4 proposes the concept of<br />

a creator signature and introduces a new signed signature attribute. Section 5 discusses<br />

advantages and limitations of the proposed solution in comparison to the existing alternatives.<br />

Section 6 conclu<strong>de</strong>s the paper and <strong>de</strong>scribes future work.<br />

2. Attribute Certificates and Digital Signature Standards<br />

The digital signature standards CAdES[ETSI 2011] and XAdES[ETSI 2010] currently<br />

support the use of X.509 Attribute Certificates [Farrell et al. 2010] to carry the signatories’<br />

authorization cre<strong>de</strong>ntials within the signature.<br />

X.509 Attribute Certificates(ACs) are certificates that can provi<strong>de</strong> authorization<br />

information about a given entity. They are issued by an Authorization Authority(AA) and<br />

they reference a single Public Key Certificate(PKC) [Cooper et al. 2008]. These certificates<br />

are wi<strong>de</strong>ly used in access control schemes. A well know example is the Permis<br />

Project[Chadwick and Otenko 2002].<br />

The CAdES and XAdES digital signature standards are respectively evolutions<br />

of the Cryptographic Message Syntax(CMS) [Housley 2009] and XML Signature Syntax<br />

and Processing(XMLDSIG)[Eastlake et al. 2002] formats. They <strong>de</strong>fine the attributes that<br />

can be present in a digital signature and how those attributes shall be interpreted. Those<br />

attributes are classified as signed or unsigned attributes. Signed attributes are inclu<strong>de</strong>d in<br />

the signature container before the actual signature value is calculated, therefore becoming<br />

part of the signed content along with the document’s content itself. Thus, these attributes<br />

cannot be altered after the signature is completed. An example of a signed attribute is the<br />

Signing Certificate attribute, which holds a reference of the signatory’s PKC. Unsigned<br />

attributes, in the other hand, are inclu<strong>de</strong>d in the signature container after the signature<br />

value calculation. These attributes can be altered at any time. They are used mainly to<br />

carry validation data, as certificates and certificate revocation data, and artifacts to extend<br />

the lifetime os the signature, such as timestamps.<br />

ACs can be inclu<strong>de</strong>d in a CAdES signature with a signed attribute called signer-<br />

Attributes. The equivalent in XAdES is the signed property signerRoles.<br />

398


3. Authorization Constraints<br />

Paper documents have authorization constraints regarding the signatories specified directly<br />

in the document’s text. This is done by specifying signatories’ names or roles<br />

directly un<strong>de</strong>r the signature field. In a similar way, these constraints can also be inclu<strong>de</strong>d<br />

in the contents of an electronic document. Unfortunately, this poses a big challenge to<br />

automated validation of the authorization constraints. We further discuss this challenge<br />

in Section 5.<br />

Another approach consists of including signature authorization requirements in<br />

the document’s un<strong>de</strong>rlying structure. For this to be possible, the document’s format <strong>de</strong>finition<br />

must contain clear specifications of the fields in which those requirements shall<br />

be inclu<strong>de</strong>d. They must also specify the syntax and interpretation characteristics of the<br />

requirements. However, different organizations may have control over the <strong>de</strong>finition of<br />

different document formats. This implies that the way document formats specify signature<br />

authorization requirements may differ dramatically from one another.<br />

The Portable Document Format (PDF), <strong>de</strong>fined in ISO 32000-1<br />

[Adobe Systems Incorporated 2008], is an example of a document format that already<br />

provi<strong>de</strong>s a specification for signature authorization requirements. This consists of<br />

an internal structure called seed value dictionary. As <strong>de</strong>scribed in clause 12.7.4.5 of ISO<br />

32000-1, the seed value dictionary’s entries “provi<strong>de</strong> constraining information that shall<br />

be used at the time the signature is applied.”<br />

One of the possible entries in a seed value dictionary that is relevant for authorization<br />

purposes is the Cert entry. This entry contains a certificate seed value dictionary,<br />

which, in turn, contains information regarding certificates that shall be used when signing.<br />

Table 235 of ISO 32000-1 lists all possible entries in a certificate seed value dictionary.<br />

These entries provi<strong>de</strong> numerous ways of filtering acceptable signing certificates. Due to<br />

the goals of this paper, we only refer to the <strong>de</strong>scriptions of the Subject and SubjectDN<br />

entries.<br />

Subject: “An array of byte strings containing DER-enco<strong>de</strong>d X.509v3 certificates<br />

that are acceptable for signing.”[Adobe Systems Incorporated 2008]. This entry, then,<br />

enables the document’s author to specify unequivocally the i<strong>de</strong>ntities of the acceptable<br />

signatories based on their PKCs.<br />

SubjectDN: “An array of dictionaries, each specifying a Subject Distinguished<br />

Name (DN) that shall be present within the certificate for it to be acceptable for<br />

signing. The certificate ultimately used for the digital signature shall contain all<br />

the attributes specified in each of the dictionaries in this array. (PDF keys and<br />

values are mapped to certificate attributes and values.) The certificate is not constrained<br />

to use only attribute entries from these dictionaries but may contain additional<br />

attributes”[Adobe Systems Incorporated 2008]. This entry is effectively more flexible<br />

than the Subject entry. It still allows constrains over the signatory’s i<strong>de</strong>ntity, for example<br />

by specifying the expected value of the common name field in the certificate’s Subject DN.<br />

But it also brings the possibility of constraining acceptable signing certificates by other<br />

attributes. These attributes may refer, for example, to authorization cre<strong>de</strong>ntials, such as<br />

roles or group memberships. In other words, it is possible to constrain acceptable signing<br />

certificates just by specifying attributes that shall be present in these PKCs.<br />

399


4. A Digital Signature with Authorization Requirements<br />

In this section we <strong>de</strong>scribe the notion of a creator signature. This is a signature performed<br />

exclusively by the document’s author. We do this by presenting a new signed signature<br />

attribute called Authorization Requirements. This attribute is used to specify i<strong>de</strong>ntity and<br />

authorization requirements in a creator signature.<br />

A creator signature is technically a normal CAdES or XAdES digital signature.<br />

This signature is applied to an electronic document by its author. The author’s goal for<br />

the signature is to seal the document and bind it to a set of requirements regarding future<br />

signatures applied by other parties. Those parties, however, are not going to sign<br />

the actual document. Instead, they will countersign the author’s signature. Those countersignatures<br />

will then be embed<strong>de</strong>d in the author’s signature as unsigned attributes. Each<br />

countersignature must comply with a corresponding entry in the Authorization Requirements<br />

attribute.<br />

The Authorization Requirements attribute is structured as a list of required countersignatures.<br />

Each entry contains a set of required signatory attributes, a signatory<br />

i<strong>de</strong>ntity reference or both. The set of required signatory attributes specifies which attributes<br />

shall be present in the signatory’s AC. In a similar way, the signatory i<strong>de</strong>ntity<br />

reference is a reference to the required signatory’s PKC . Figure 1 presents a possible<br />

ASN.1[ITU-T 2008a] structure for the CAdES version of the proposed attribute.<br />

A u t h o r i z a t i o n R e q u i r e m e n t s : : = SEQUENCE of R e q u i r e d C o u n t e r S i g E n t r y<br />

R e q u i r e d C o u n t e r S i g E n t r y : : = SEQUENCE {<br />

s i g n e r A t t r i b u t e s [ 0 ] SEQUENCE of A t t r i b u t e OPTIONAL ,<br />

s i g n e r I d e n t i t y [ 1 ] S i g n e r I d e n t i t y OPTIONAL<br />

}<br />

S i g n e r I d e n t i t y : : = CHOICE {<br />

s i g n e r I d e n t i t y V 1 [ 0 ] S i g n i n g C e r t i f i c a t e ,<br />

s i g n e r I d e n t i t y V 2 [ 1 ] S i g n i n g C e r t i f i c a t e V 2<br />

}<br />

Figure 1. Authorization Requirements ASN.1 structure<br />

The signerAttributes field in Figure 1 shall be consistent with Section 4.2.7 of RFC<br />

5755 [Farrell et al. 2010]. Attribute types are <strong>de</strong>fined in Section 4.4 of RFC 5755. The<br />

types SigningCertificate and SigningCertificateV2 in figure 1 are <strong>de</strong>fined in RFC 5035<br />

[Schaad 2007]. The signerAttributes and signerI<strong>de</strong>ntity fields are optional, but at least<br />

one of them must be present in a RequiredCounterSigEntry instance.<br />

The validation process of a digital signature that contains an Authorization Requirements<br />

attribute begins precisely with that attribute. First, the presence of all required<br />

countersignatures in the creator’s signature unsigned attributes section is assured. Next,<br />

each countersignature is validated. This inclu<strong>de</strong>s the signature and Certification Path validation<br />

of both the signatory’s PKC and AC. Then, these certificates are evaluated against<br />

the criteria specified in the requirements. If they all meet the requirements, the signatories’<br />

authorization is acknowledged and the rest of the signature validation proceeds as<br />

usual. It should be noted that if one of the countersignatures is invalid or does not meet<br />

400


the requirements, the document cannot be consi<strong>de</strong>red valid.<br />

Figure 2 shows the structure of a signed document for a hypothetic contract between<br />

university “A” and company “B”. In this example, the document must be signed<br />

by two people from the university, a Financial Manager and a Department Supervisor,<br />

and one person from the company, the company Director. These constraints are specified<br />

using the Role attribute type, which is <strong>de</strong>fined in ISO/IEC 9594-8 [ITU-T 2008b]. The<br />

Role shall have the same value in the authorization requirements and the signatory’s AC.<br />

Figure 3 shows the ASN1 representation of the Authorization Requirements attribute for<br />

this specific example. Since, for now, there are no OIDs <strong>de</strong>fined for the types Authorization<br />

Requirements and RequiredCounterSigEntry, these appear only as sequences in the<br />

represented structure.<br />

signs<br />

Authorization Requirements<br />

RequiredCounterSigEntry<br />

Creator Signature<br />

signerAttributes<br />

Signed Attributes<br />

Contract<br />

Role: “Director”<br />

Authorization<br />

Requirements<br />

...<br />

RequiredCounterSigEntry<br />

signerAttributes<br />

Unsigned Attributes<br />

Role: “Financial Manager”<br />

1st Countersignature<br />

2nd Countersignature<br />

RequiredCounterSigEntry<br />

3rd Countersignature<br />

...<br />

contains<br />

matches AC attribute<br />

signerAttributes<br />

Role: “Department Supervisor”<br />

signs<br />

University A<br />

PKC<br />

AC<br />

PKC<br />

AC<br />

PKC<br />

AC<br />

Company B<br />

Department<br />

Supervisor<br />

Finacial<br />

Manager<br />

Director<br />

Figure 2. Contract Signature<br />

5. Discussion<br />

It may seem natural to specify the i<strong>de</strong>ntity and the authorization constraints of required<br />

signatories directly in the document’s text. This may even be appropriate if those constraints<br />

are meant to be checked manually. However, automated validation of the signatories’<br />

i<strong>de</strong>ntity and authorization becomes very tricky when the constraints are specified in<br />

401


0 103: SEQUENCE<br />

{<br />

2 38: SEQUENCE {<br />

4 36: SEQUENCE {<br />

6 34: SEQUENCE {<br />

8 3: OBJECT IDENTIFIER role (2 5 4 72)<br />

13 27: SET {<br />

15 25: SEQUENCE {<br />

17 23: [1] {<br />

19 21: [6] ’Director’<br />

: }<br />

: }<br />

: }<br />

: }<br />

: }<br />

: }<br />

42 34: SEQUENCE {<br />

44 32: SEQUENCE {<br />

46 30: SEQUENCE {<br />

48 3: OBJECT IDENTIFIER role (2 5 4 72)<br />

53 23: SET {<br />

55 21: SEQUENCE {<br />

57 19: [1] {<br />

59 17: [6] ’Financial Manager’<br />

: }<br />

: }<br />

: }<br />

: }<br />

: }<br />

: }<br />

78 25: SEQUENCE {<br />

80 23: SEQUENCE {<br />

82 21: SEQUENCE {<br />

84 3: OBJECT IDENTIFIER role (2 5 4 72)<br />

89 14: SET {<br />

91 12: SEQUENCE {<br />

93 10: [1] {<br />

95 8: [6] ’Department Supervisor’<br />

: }<br />

: }<br />

: }<br />

: }<br />

: }<br />

: }<br />

: }<br />

Figure 3. Contract Authorization Requirements ASN.1<br />

this way. That is because natural languages are inherently ambiguous and this turns the<br />

constraint’s interpretation and localization in the text a lot more difficult and imprecise.<br />

On the other hand, the inclusion of signature authorization requirements in the<br />

documents un<strong>de</strong>rlying structure is more suitable for automated validation. Once there is<br />

a clear specification of where those requirements shall be inclu<strong>de</strong>d and how they shall<br />

be interpreted, the software implementations become easy. Still, in principle, any kind of<br />

electronic file can be signed. While it is possible to promote the structural changes nee<strong>de</strong>d<br />

on some file formats, expanding those changes to all types of files would be impractical.<br />

Obviously, the employment of the signature requirements is more common in electronic<br />

documents and PDF is currently one of the most wi<strong>de</strong>ly used file formats for documents.<br />

As shown in section 3, PDF already offers internal structures for the inclusion<br />

of constraints upon future signatures. What it does not provi<strong>de</strong>, though, is an integrity<br />

guarantee of those constraints. In a sense, the constraints only work as gui<strong>de</strong>lines, since<br />

they are subject to changes until signatures are applied to the document.<br />

402


A creator signature, in comparison, seals the document. Since the Authorization<br />

Requirements attribute is signed, the constraints it <strong>de</strong>fines cannot be changed later. This<br />

signature can also be employed with any kind of file. Thus, a single specification and<br />

implementation is required instead of one for each file format.<br />

Nevertheless, the usage of the creator signature also has its drawbacks. One of<br />

the biggest problems with this approach is the overhead in storage and cryptographic<br />

operations it results in. This may not be significant when we consi<strong>de</strong>r a single document,<br />

where an extra signature represents just some KBytes more in storage. The size <strong>de</strong>pends<br />

on the inclusion or not of certificates and revocation data within the signature. However, as<br />

we scale, the impact of that signature becomes quite evi<strong>de</strong>nt. We could take, for example,<br />

the amount of documents that transit everyday in a Court of Justice, or in a big company.<br />

Every extra signature ad<strong>de</strong>d to the process may represent hundreds of GBytes in storage an<br />

precious processing power. Moreover, an extra signature increases the time spent on the<br />

validation process, thus, bringing inconvenience to its use. A <strong>de</strong>eper analyses of the costs<br />

in storage an the amount of operations related do digital signatures in conventional X.509<br />

PKIs can be found in the work of da Silva [da Silva 2011] and Moecke [Moecke 2011].<br />

In a general sense, the introduction of the creator signature with authorization<br />

requirements does not obsoletes existing solutions. It only presents a generic solution that<br />

is applicable in a wi<strong>de</strong>r range of scenarios.<br />

6. Conclusion<br />

In this paper we <strong>de</strong>scribed the necessity of a way to specify constraints upon required<br />

signatories regarding i<strong>de</strong>ntity and authorization and a way to bind these constraints to an<br />

electronic document. Existing solutions to <strong>de</strong>al with this necessity were evaluated and a<br />

new approach, the creator signature, was proposed.<br />

The creator signature, along with the Authorization Requirements attribute, allows<br />

the author to specify the i<strong>de</strong>ntity and/or the attributes of the signatories that shall sign a<br />

given document. It then enables generic applications to validate the authorization of those<br />

signatories, based on the author’s requirements. This approach is especially useful in<br />

contexts where a document <strong>de</strong>pends on a specific set of signatures to acquire value, while<br />

the content of that document does not follow any pre-<strong>de</strong>fined format. Examples inclu<strong>de</strong><br />

legal proceedings, business contracts and others.<br />

Future work inclu<strong>de</strong>s the <strong>de</strong>finition of the XAdES version of the Authorization<br />

Requirements attribute and the implementation of a prototype application to test the proposal.<br />

Furthermore we plan to make an adaptation of the proposed mo<strong>de</strong>l to work with a<br />

Notary Based Public Key Infrastructure (NBPKI)[Moecke 2011]. Thereby we intend to<br />

<strong>de</strong>crease the overhead of an additional signature discussed in Section 5. Finally, we wold<br />

like to explore the possibility of including authorization <strong>de</strong>legation schemes in our mo<strong>de</strong>l.<br />

This would allow signature authorizations to be <strong>de</strong>legated un<strong>de</strong>r specified conditions.<br />

References<br />

Adobe Systems Incorporated (2008). Document management - Portable document format<br />

403


- Part 1: PDF 1.7. Number ISO 32000-1. 1st edition.<br />

Chadwick, D. W. and Otenko, A. (2002). The permis x.509 role based privilege management<br />

infrastructure. In Proceedings of the seventh ACM symposium on Access control<br />

mo<strong>de</strong>ls and technologies, SACMAT ’02, pages 135–140, New York, NY, USA. ACM.<br />

Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and Polk, W. (2008).<br />

Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List<br />

(CRL) Profile. RFC 5280 (Proposed Standard).<br />

da Silva, N. (2011). Preservação por longo prazo <strong>de</strong> assinaturas digitais. Master’s thesis,<br />

Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina.<br />

Eastlake, D. E., Reagle, J. M., and Solo, D. (2002). XML-signature syntax and processing.<br />

World Wi<strong>de</strong> Web Consortium, Recommendation REC-xmldsig-core-20020212.<br />

ETSI (2010). XML Advanced Electronic Signatures (XAdES). Number TS 101 903. 1.4.2<br />

edition.<br />

ETSI (2011). CMS Advanced Electronic Signatures (CAdES). Number TS 101 733. 1.8.3<br />

edition.<br />

Farrell, S., Housley, R., and Turner, S. (2010). An Internet Attribute Certificate Profile<br />

for Authorization. RFC 5755 (Proposed Standard).<br />

Housley, R. (2009). Cryptographic Message Syntax (CMS). RFC 5652 (Standard).<br />

ITU-T (2008a). Information technology - Abstract Syntax Notation One (ASN.1): Specification<br />

of basic notation. Number ISO/IEC 8824-1. 4th edition.<br />

ITU-T (2008b). Information technology - Open systems interconnection - The Directory:<br />

Public-key and attribute certificate frameworks. Number ISO/IEC 9594-8. 6th edition.<br />

Moecke, C. T. (2011). Nbpki - uma icp baseada em autorida<strong>de</strong>s notariais. Master’s thesis,<br />

Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina.<br />

Schaad, J. (2007). Enhanced Security Services (ESS) Update: Adding CertID Algorithm<br />

Agility. RFC 5035 (Proposed Standard).<br />

404


Using Notary Based Public Key Infrastructure in Shibboleth<br />

Fe<strong>de</strong>ration<br />

Hendri Nogueira 1 , Ricardo Felipe Custódio 1 , Cristian Thiago Moecke 2 , Michelle S. Wangham 3<br />

1 Laboratório <strong>de</strong> Segurança em Computação (LabSEC)<br />

Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina (UFSC)<br />

Caixa Postal 476 – 88040-900 – Florianópolis – SC – Brasil<br />

2 SecUSo - IT Security, Usability and Society<br />

Center for Advanced Security Research Darmstadt<br />

TU Darmstadt<br />

Mornewegstraße 32 – D - 64293 Darmstadt<br />

3 Grupo <strong>de</strong> Sistemas Embarcados e Distribuídos–GSED/CTTMAR<br />

Universida<strong>de</strong> do Vale do Itajaí(UNIVALI)<br />

São José, SC, Brasil<br />

{jimi,custodio}@inf.ufsc.br, cristian.moecke@cased.<strong>de</strong>, wangham@univali.br<br />

Abstract. The X.509 Public Key Infrastructure contains many services such as<br />

Registration Authorities, Time Stamping Authorities and Certification Authorities,<br />

that increases its complexity, redundancy and difficulties of implementation<br />

for a digital certification. Notary Based Public Key Infrastructure (NBPKI) is a<br />

mo<strong>de</strong>l that eliminates the redundant processes, complexity and brings many facilities<br />

for the authentication processes. This work <strong>de</strong>scribes the use of NBPKI<br />

mo<strong>de</strong>l combined with a Cre<strong>de</strong>ntials Translation Service to improve the Shibboleth<br />

Authentication Process.<br />

1. Introduction<br />

Public Key Infrastructures (PKIs) provi<strong>de</strong> the capability of establishing a trusted relationship<br />

between the entities involved in a digital transaction. PKI is used for digital signature,<br />

secure network communication, on-line transactions (E-commerce), authentication,<br />

digital i<strong>de</strong>ntity, to protect data with encryption and others [Lancaster et al. 2003].<br />

PKI is normally formed by entities that <strong>de</strong>tain a pair of asymmetric cryptographic<br />

keys. The private key is securely maintained and controlled exclusively by its owner, and<br />

the public key is shared with the others. Some types of these mo<strong>de</strong>ls are PGP (Pretty<br />

Good Privacy), SPKI (Simple Public Key Infrastructure) and IBC (I<strong>de</strong>ntity Based Criptography).<br />

The most used mo<strong>de</strong>l is X.509 [Cooper et al. 2008].<br />

The increased use of X.509 PKI has led to a series of limitations and difficulties<br />

related to its implementation [Linn 2004]. In a typical X.509 PKI environment, the verifier<br />

of a digital signature needs to check: the time-stamp signature; the validity of the<br />

Time Stamping Authority certificate and its certificate chain, including the revocation information<br />

at that time; the signatory certificate validity and all certificates in its certificate<br />

chain, revocation information based on time-stamp date and the document signature.<br />

These verifications need excessive human and computational resources to maintain<br />

and provi<strong>de</strong> long-term trustworthy services. To <strong>de</strong>al with these and others limitations,<br />

405


Moecke et. all [Moecke 2011] proposed a new PKI mo<strong>de</strong>l (NBPKI - Notary Based Public<br />

Key Infrastructure), that uses self-signed digital certificates and substitutes the Certificate<br />

Authority (CA) with Notarial Authorities (NA).<br />

Differently from Moecke who focused his mo<strong>de</strong>l in digital signature, this work<br />

focuses on another use of Notarial Authorities – Fe<strong>de</strong>rate Authentication. This paper<br />

<strong>de</strong>scribes the use of self-signed certificates to improve the Shibboleth Authentication<br />

Infrastructure. The solution combines NBPKI - a mo<strong>de</strong>l that eliminates the redundant<br />

processes, complexity and brings many facilities for the authentication processes - to an<br />

I<strong>de</strong>ntity Provi<strong>de</strong>r with additional functionalities in or<strong>de</strong>r to make possible to a user of<br />

fe<strong>de</strong>ration, through <strong>de</strong>sktop application or browser, authenticates using a self-signed certificate.<br />

The proposed mo<strong>de</strong>l supports authentication cre<strong>de</strong>ntials translation.<br />

The remain<strong>de</strong>r of this paper is structure as follows: section 2 reviews the typical<br />

authentication cre<strong>de</strong>ntials for aca<strong>de</strong>mic fe<strong>de</strong>rations based on Shibboleth framework; section<br />

3 explains some questions relating to NBPKI; section 4 presents some related works;<br />

section 5 <strong>de</strong>scribes the use of NBPKI in Shibboleth Fe<strong>de</strong>ration; and section 6 conclu<strong>de</strong>s<br />

the paper and <strong>de</strong>scribes the future works.<br />

2. Fe<strong>de</strong>rated Authentication and Authorization Infrastructure<br />

Aca<strong>de</strong>mic Fe<strong>de</strong>rations are collections of educational and research institutions and organizations<br />

that have agreed to inter-operate using a common set of rules, particularly in the<br />

areas of privacy and security. Fe<strong>de</strong>rations make the use of standard methods for authentication<br />

and authorization and single sign-on technology [Internet2 2011b]. They <strong>de</strong>fine<br />

the trust relationship, the policies used for exchanging information, software to enable authentication<br />

and authorization, and distribute the metadata necessary for interoperability.<br />

The fe<strong>de</strong>rated i<strong>de</strong>ntity technology allows organizations and institutions with an<br />

economically efficient and convenient way to manager and <strong>de</strong>liver i<strong>de</strong>ntity services between<br />

different organizations, helping <strong>de</strong>al with user and data security on the same network<br />

[Don and Smith 2008].<br />

A Fe<strong>de</strong>rated Authentication and Authorization Infrastructure (AAI) inclu<strong>de</strong>s Service<br />

Provi<strong>de</strong>rs (SP) and I<strong>de</strong>ntity Provi<strong>de</strong>rs (IdP). IdPs maintain i<strong>de</strong>ntity databases and<br />

authenticate users. The SPs are responsible for authorize the accesses and do not need to<br />

maintain user databases.<br />

There are many aca<strong>de</strong>mic fe<strong>de</strong>rations around the world, like FEIDE, InCommon,<br />

SURFnet, CAFe and many others. CAFe Fe<strong>de</strong>ration is from Brazil and managed by RNP<br />

(Re<strong>de</strong> Nacional <strong>de</strong> Pesquisa) [RNP 2011]. Like others fe<strong>de</strong>rations, CAFe uses the Shibboleth<br />

framework [Internet2 2011d] as authentication and authorization infrastructure.<br />

Shibboleth is a project [Scavo and Cantor 2005] initiated from Internet2<br />

[Internet2 2011c], an advanced networking consortium led by the U.S research<br />

and education community. The Shibboleth architecture <strong>de</strong>fines a set of interactions<br />

between IdPs and SPs to facilitate the browsing of attributes’ exchange and single sign-on<br />

authentication through web browsers [Cantor 2005]. Shibboleth is based on the SAML<br />

(Security Assertion Markup Language) standard [OASIS 2011].<br />

The Shibboleth framework implements both si<strong>de</strong>s of the fe<strong>de</strong>rated communication<br />

(IdP and SP) and a central service responsible for obtaining the information about the IdPs<br />

406


egistered in the fe<strong>de</strong>ration and performing the redirect that is called WAYF (Where Are<br />

You From?) or DS (Discovery Service).<br />

Figure 1 shows the typical communication flows in a Shibboleth Fe<strong>de</strong>ration. The<br />

communication for a user that accesses a service for the first time, occurs with the following<br />

steps:<br />

1. The user attempts to access a Shibboleth-protected resource on the SP site.<br />

2. The service redirects the user’s browser to the WAYF service.<br />

3. The user selects his institution from the list presented by the WAYF. He is redirected<br />

to his IdP.<br />

4. The user authenticates to the home IdP, using his username and password, for<br />

example.<br />

5. The IdP generates a one-time handle (session i<strong>de</strong>ntifier) and sends it to the user’s<br />

browser, then redirects to the SP. Sometimes the SP needs to request others attributes<br />

information from the IdP to authorize his access. The IdP, on the basis<br />

of its Attribute Release Policy, allows or <strong>de</strong>nies attribute information to be ma<strong>de</strong><br />

available to this SP.<br />

6. Based on the attribute information ma<strong>de</strong> available to it, the SP allows or refuses<br />

the user access to the resource.<br />

I<strong>de</strong>ntity Provi<strong>de</strong>r<br />

LDAP<br />

5.1 Requests Attribute<br />

4. Authentication<br />

3. is redirected<br />

5. Issues the<br />

attribute<br />

assertions<br />

2. is redirected<br />

2. Selects your IdP<br />

1. Attempts to access<br />

6. Allows or refuses the<br />

user access to the resources<br />

Service Provi<strong>de</strong>r<br />

Figure 1. Communication flows in a Shibboleth Fe<strong>de</strong>ration<br />

3. NBPKI<br />

NBPKI (Notary Based Public Key Infrastructure) is a new approach of PKI,<br />

which through its simplicity, becomes a<strong>de</strong>quate for signing electronic documents<br />

without losing the generality of a PKI [Moecke 2011]. It does not propose<br />

new cryptographic algorithms as IBC [Shamir 1984], CLC (Certificateless<br />

Cryptography) [Al-Riyami and Paterson 2003], CBC (Certificate Based Cryptography)<br />

[Gentry 2003], and does not propose any change in the X.509 standard. This mo<strong>de</strong>l<br />

407


proposes a new structure and organization in X.509 PKI, based on the same cryptographic<br />

algorithms already wi<strong>de</strong>spread, tested and used in X.509 PKIs.<br />

This mo<strong>de</strong>l uses the approach of self-signed certificates [Moecke et al. 2010] and<br />

consequently does not have any certificate chain. The proof of the certificate’s validity is<br />

only necessary on the date of verification.<br />

This indicates that it is not necessary a Certificate Authority (CA) to issue the<br />

certificate. The proof should provi<strong>de</strong> sufficient evi<strong>de</strong>nce to confirm the information in the<br />

certificate. The certificate format is similar to the X.509 mo<strong>de</strong>l, so the X.509 standard can<br />

be used in this mo<strong>de</strong>l.<br />

In the NBPKI mo<strong>de</strong>l, two authorities are proposed [Moecke 2011]: the Registration<br />

Authority (RA) and the Notarial Authority (NA). This mo<strong>de</strong>l needs the existence of<br />

at least one entity responsible for the issue of the self-signed certificate proof – the NA in<br />

which the role is similar to a CA.<br />

Notarial Authority<br />

User<br />

1. Requests<br />

the proof<br />

NA<br />

1. Certificate<br />

generation<br />

3. Send the user<br />

certificate<br />

2. Authentication<br />

3. Sends the<br />

document,<br />

certificate<br />

and the proof<br />

2. Sends the<br />

proof<br />

4. Verifies the<br />

document<br />

signature<br />

Register Authority<br />

(a) Self-signed certificate creation.<br />

Verifier<br />

(b) Verification of a digital signature with the<br />

certificate proof<br />

Figure 2. Self-signed certificate and the validation proof<br />

The RA has a similar role to the RA in X.509 PKI. In this mo<strong>de</strong>l, the user can<br />

generates his own self-signed certificate and makes the communication to the RA through<br />

a secure authentication to prove his i<strong>de</strong>ntity and the possession of his private key. The RA<br />

verifies the information of the certificate and then sends it to the NA. The NA stores the<br />

certificate in the database and it is ready to issue the user certificate proof.<br />

The Figure 2(a) shows the generation of the self-signed certificate. The user can<br />

also go to a RA entity, prove his information, and get his self-signed certificate and private<br />

key on a secure hardware.<br />

After the NA receives the certificate from the RA, the NA needs only a simple<br />

and automatic process to register the certificate in its database. When requested, the NA<br />

is responsible for issue the proof at an exact instant in time. As there is not a certificate<br />

chain in this mo<strong>de</strong>l, the user/system does not need to build and checks the certificate<br />

chain.<br />

When the user needs to validate the integrity of a certificate, he needs to obtain<br />

one valid proof from the NA. The proof can be obtained by the user and dispatched to<br />

408


the verifier (user or service) or solicited by the system. The Figure 2(b) shows how the<br />

verification of a digital signature is in the NBPKI environment [Moecke 2011].<br />

A NA verifies the certificate’s status in the database and returns the proof, which<br />

is called a token. The token contains the revocation situation of the certificate, that is valid<br />

or invalid at that time. As the token’s validity is short, this mo<strong>de</strong>l can dismiss the use of a<br />

revocation mechanism to validate the token, proposed by Rivest and Elisson [Rivest 1998,<br />

Ellison et al. 1999].<br />

The date is inclu<strong>de</strong>d in the token by the NA by a trusted clock, similar in what<br />

happens in Time Stamping Authorities. This makes the date safe as well as the Notarial<br />

Authority when issuing the proof. The use of self-signed certificates for the authentication<br />

brings less complexity of certificate verification and no necessity of certificate revocation<br />

list.<br />

4. Cre<strong>de</strong>ntial Translation<br />

The Shibboleth framework does not provi<strong>de</strong> the integration of different types of authentication<br />

cre<strong>de</strong>ntials, such as X.509 cre<strong>de</strong>ntials used to grid applications. Besi<strong>de</strong>s that, in a<br />

fe<strong>de</strong>rated environment, the Shibboleth [Cantor 2005] permits only that communications<br />

among the user, the IdP and SP occur only through the web, i.e, using web browsers and<br />

HTTP protocol. As a result, many services provi<strong>de</strong>d by other organizations can not be<br />

integrated in Shibboleth Fe<strong>de</strong>ration.<br />

Some works proposed alternatives to integrate services that supports different authentication<br />

methods, by SAML cre<strong>de</strong>ntials translation into other types of cre<strong>de</strong>ntials, like<br />

X.509 certificates. Mello [<strong>de</strong> Mello et al. 2009] proposed a mo<strong>de</strong>l based on the Cre<strong>de</strong>ntial<br />

Translation Service that allows SSO authentication where even heterogeneous security<br />

technologies are consi<strong>de</strong>red. Mello’s proposed mo<strong>de</strong>l provi<strong>de</strong>s authentication cre<strong>de</strong>ntials<br />

translation and attribute transposition, involving different kinds of cre<strong>de</strong>ntials and permissions<br />

in the fe<strong>de</strong>ration environment.<br />

There are many projects that involve a new infrastructure that enables the integrations<br />

from different AAI technologies and bringing better the interaction and security<br />

for management and exchanges of the information, like Project Moonshot [Howlett 2011]<br />

and CILogon [Directorate 2011].<br />

Wangham [Wangham et al. 2010] proposed an infrastructure that aims to offer<br />

new features to Shibboleth Fe<strong>de</strong>rations. This work is being <strong>de</strong>veloped in the context<br />

of GT-STCFed project [Wangham et al. 2011], fun<strong>de</strong>d by RNP (NREN who manages the<br />

Brazilian fe<strong>de</strong>ration - CAFe). The features provi<strong>de</strong>d by the infrastructure are the translation<br />

of authentication cre<strong>de</strong>ntials and fe<strong>de</strong>rated authentication to non-web applications.<br />

The infrastructure of the GT-STCFed pilot project is composed of two services: the STS<br />

(Security Token Service) and CTS (Cre<strong>de</strong>ntial Translation Service). The STS consists of a<br />

Web Service that has the function of issuing and validating security cre<strong>de</strong>ntials, according<br />

to the WS-Trust, WS-Security and WS-Policy specifications.<br />

The STS acts as a gateway between trusted i<strong>de</strong>ntity provi<strong>de</strong>rs in a Shibboleth Fe<strong>de</strong>ration<br />

and non-Web applications. The CTS <strong>de</strong>als with aspects of translation of cre<strong>de</strong>ntials<br />

between different security technologies and is always invoked by the STS when the<br />

application requires a security cre<strong>de</strong>ntial (eg. X.509 certificates) different from that used<br />

409


y the fe<strong>de</strong>ration. STS and CTS are integrated into the IdP, composing an IdP with additional<br />

features (called IdP+). This IdP+ can be accessed by a web service client (<strong>de</strong>sktop<br />

application), not only via a Web browser.<br />

5. The use of NBPKI in Shibboleth Fe<strong>de</strong>ration<br />

In aca<strong>de</strong>mic fe<strong>de</strong>rations, IdPs acts like RAs, generating key pair and issuing the certificate<br />

for theirs users at the moment of the user’s registration. In this paper, it is proposed a<br />

service (RA) that creates the private key and a self-signed certificate at the user station,<br />

based on the user information at the IdP database.<br />

This mo<strong>de</strong>l by using communication protocols of web browsers needs to communicate<br />

to an IdP that has the support of be linked to the RA service for mapping the certificates<br />

parameters through SAML assertion. This different IdP structure is called IdP+<br />

and the RA is implemented at the same server as IdP+ because the flows are simplest.<br />

2. Authentication<br />

1. Attempts to access<br />

4. Sends the script<br />

5. Sends the certificate<br />

RA<br />

IdP+<br />

NA<br />

6. Sends the certificate<br />

to be stored in the NA´s<br />

database<br />

3. Issues attributes/<br />

Mapping the<br />

certificate’s<br />

attributes<br />

Figure 3. Creation of the user self-signed certificate through Shibboleth Fe<strong>de</strong>ration.<br />

The figure 3 shows the flows for the creation of the user self-signed certificate<br />

through the Shibboleth Fe<strong>de</strong>ration. After a success authentication, RA does the mapping<br />

through SAML assertions issued by IdP+ to compose the certificate’s DN (Distinguished<br />

Name). This mapping gets the user’s SN (surname) plus the EPPN (eduPersonPrincipal-<br />

Name) from the EduPerson [Internet2 2011a] LDAP scheme to set the certificate’s CN<br />

(Common Name). Then the RA sends a script to the user via web browser. The keys and<br />

the certificate are created at the user system. The user returns his certificate to the RA and<br />

it sends to the NA. Now, NA is ready to issues the proof.<br />

One unique proof can be used as many times as nee<strong>de</strong>d, without the necessity<br />

of getting other information. In the Shibboleth Fe<strong>de</strong>ration, the use of the certificate and<br />

its proof through a <strong>de</strong>sktop application authentication realizes with some changes of the<br />

standard IdP structure.<br />

For <strong>de</strong>sktop authenticated application, this new IdP structure (called IdP+) is like<br />

in the infrastructure used by the GT-STCFed project. The STS permits to a <strong>de</strong>sktop application<br />

communicates to the Shibboleth provi<strong>de</strong>rs. The user, through the <strong>de</strong>sktop application,<br />

does the authentication with his self-signed certificate and the application gets the<br />

proof from NA and sends to IdP+.<br />

410


IdP+<br />

5. Requests the<br />

certificate proof<br />

6. Sends the proof<br />

4. Authentication 7. Issues the<br />

attribute<br />

3. is redirected assertions<br />

NA<br />

2. Selects your<br />

IdP<br />

2. is redirected<br />

1. Attempts to access<br />

8. Allows or refuses the<br />

user access to the resourse<br />

SP<br />

Figure 4. User authentication with his self-signed certificate and its proof.<br />

The Figure 4 shows the user accessing a service by doing his authentication<br />

through the Shibboleth Fe<strong>de</strong>ration and with his self-signed certificate. If SP provi<strong>de</strong>s<br />

a web service, then the redirections are nee<strong>de</strong>d as a typical Shibboleth Fe<strong>de</strong>ration, otherwise<br />

they do not exist.<br />

5.1. Grid Scenario<br />

In the Grid Scenario, authentication and authorization is based on the use of X.509 certificates,<br />

signed by a Certificate Authority. Delegation (a service “A” tries to access service<br />

“B” on behalf of the user) is implemented using proxy certificates (short lived, fully functional<br />

certificates, that can be traced back to the original user). This PKI system works<br />

well for many different applications, including web browsers, but is complex and difficult<br />

for many users [Assembla 2011].<br />

The figure 5 shows the flows for a GRID certificate generation that uses self-signed<br />

certificates at a Shibboleth environment. The following steps are:<br />

1. The user attempts to access the service that generates the grid certificates.<br />

2. Then the user will be redirected to the WAYF.<br />

3. The user selects his IdP and he is redirected to his institution’s log-in site.<br />

4. He does the authentication using his self-signed certificate.<br />

5. IdP+ requests the certificate proof to the NA.<br />

6. IdP+ receives the proof from the NA.<br />

7. If the authentication was conclu<strong>de</strong>d, the IdP+ sends the user’s information to the<br />

SP.<br />

8. The service sends a script to the user to build the certificate’s request with his<br />

self-signed certificate information and his private key. This request is ma<strong>de</strong> at the<br />

user’s environment and then is sent to the service.<br />

9. The service receives the request, assigns it and then returns the new X.509 certificate.<br />

10. Now the user can use the grid service.<br />

411


IdP+<br />

5. Requests the<br />

certificate proof<br />

4. Authentication 7. Issues the<br />

attribute<br />

3. is redirected assertions<br />

2. Selects your<br />

IdP<br />

1. Attempts to access<br />

6. Sends the proof<br />

2. is redirected<br />

8. Sends the script to make the certificate<br />

request<br />

9. Creates/Sends the user<br />

certificate<br />

NA<br />

Certificate<br />

Generator<br />

Service<br />

(SP)<br />

Figure 5. Grid certificate generation.<br />

6. Conclusion and Future Works<br />

This new mo<strong>de</strong>l of Public Key Infrastructure, NBPKI, provi<strong>de</strong>s some facilities for digital<br />

signature validation. This mo<strong>de</strong>l uses self-signed certificates for the users, and the<br />

Certificate Authority is replaced by the Notarial Authority. The NA is responsible for the<br />

emission of tokens which are like a validation proof of the user certificate. With these<br />

tokens, it is not necessary to verify and validate the certificate chain of the user certificate,<br />

to check the certificate revocation lists nor the Time Stamping Authority is necessary.<br />

This new mo<strong>de</strong>l is useful for improving authentication process in services which<br />

use X.509 certificates within an aca<strong>de</strong>mic fe<strong>de</strong>rated environment. The Shibboleth Fe<strong>de</strong>rations<br />

can be more usable when have more support to use different authentication cre<strong>de</strong>ntials.<br />

The use of self-signed certificates improves the facilities of the certificates management,<br />

the use of certificates for authentication processes and even the security of the<br />

user authentication. The facilities of the issue of digital certificates without losing the<br />

infrastructure security and integrating with the aca<strong>de</strong>mic institutions through Shibboleth<br />

Fe<strong>de</strong>rations, becomes this mo<strong>de</strong>l one positive different view for the increase of the use of<br />

digital certificates for authentication.<br />

The authentication structure does not need to suffer a lot of alterations in the aca<strong>de</strong>mic<br />

fe<strong>de</strong>rated infrastructure and in the protocols used. The complexity nee<strong>de</strong>d by the<br />

standard certificate verification may be kept asi<strong>de</strong> whether self-signed certificate is used<br />

for the authentication process.<br />

The NBPKI and the IdP+ were implemented in Java language due to be portable<br />

and the facility in web applications <strong>de</strong>velopment. The next stages for the improvement<br />

of this work is to perform tests to verify the impacts due to the use of the authentication<br />

based on self-signed certificates in the Shibboleth Fe<strong>de</strong>rations.<br />

412


References<br />

Al-Riyami, S. and Paterson, K. (2003). Certificateless Public Key Cryptography. Advances<br />

in Cryptology-ASIACRYPT 2003, pages 1–40.<br />

Assembla (2011). Confusa project. http://www.assembla.com/wiki/show/confusa.<br />

Cantor, S. (2005). Shibboleth architecture - protocols and profiles. Technical report, Internet2.<br />

http://shibboleth.internet2.edu/docs/internet2-mace-shibboleth-archprotocols-<br />

200509.pdf.<br />

Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and Polk, W. (2008).<br />

Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List<br />

(CRL) Profile. RFC 5280 (Proposed Standard).<br />

<strong>de</strong> Mello, E., Wangham, M., da Silva Fraga, J., <strong>de</strong> Camargo, E., and da Silva Böger, D.<br />

(2009). A mo<strong>de</strong>l for authentication cre<strong>de</strong>ntials translation in service oriented architecture.<br />

In Gavrilova, M., Tan, C., and Moreno, E., editors, Transactions on Computational<br />

Science IV, volume 5430 of Lecture Notes in Computer Science, pages 68–86.<br />

Springer Berlin / Hei<strong>de</strong>lberg.<br />

Directorate, C. (2011). Cilogon. http://www.cilogon.org/.<br />

Don and Smith (2008). The challenge of fe<strong>de</strong>rated i<strong>de</strong>ntity management. Network Security,<br />

2008(4):7 – 9.<br />

Ellison, C., Frantz, B., Lampson, B., Rivest, R., Thomas, B., and Ylonen, T. (1999). SPKI<br />

Certificate Theory. RFC 2693 (Experimental).<br />

Gentry, C. (2003). Certificate-based encryption and the certificate revocation problem.<br />

In 22nd Annual International Conference on the Theory and Applications of Cryptographic<br />

Techniques.<br />

Howlett, J. (2011). Project moonshot. http://www.project-moonshot.org.<br />

Internet2 (2011a). eduperson & eduorg object classes.<br />

http://middleware.internet2.edu/eduperson/.<br />

Internet2 (2011b). Incommon. http://www.incommonfe<strong>de</strong>ration.org/.<br />

Internet2 (2011c). Internet2. http://www.internet2.edu/.<br />

Internet2 (2011d). Shibboleth. http://shibboleth.internet2.edu/.<br />

Lancaster, S., Yen, D. C., and Huang, S.-M. (2003). Public key infrastructure: a micro<br />

and macro analysis. Computer Standards &amp; Interfaces, 25(5):437 – 446.<br />

Linn, J. (2004). An Examination of Asserted PKI Issues and Proposed Alternatives. Proceedings<br />

of the 3rd Annual PKI R&D Workshop.<br />

Moecke, C. T. (2011). Nbpki - uma icp baseada em autorida<strong>de</strong>s notariais. Master’s thesis,<br />

Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina.<br />

Moecke, C. T., Custódio, R. F., Kohler, J. G., and Carlos, M. C. (2010). Uma ICP<br />

baseada em certificados digitais autoassinados. In Simpósio Brasileiro em Segurança<br />

da Informação e <strong>de</strong> Sistemas Computacionais, pages 91–104, Fortaleza. SBSEG.<br />

OASIS (2011). Oasis - advancing open standards for the information society.<br />

http://www.oasis-open.org/.<br />

413


Rivest, R. L. (1998). Can We Eliminate Certificate Revocations Lists? In FC ’98:<br />

Proceedings of the Second International Conference on Financial Cryptography, pages<br />

178–183, London, UK. Springer-Verlag.<br />

RNP (2011). Cafe. http://www.cafe.rnp.br.<br />

Scavo, T. and Cantor, S. (2005). Shibboleth architecture - technical overview. working<br />

draft, Internet2. http://shibboleth.internet2.edu/docs/draft-mace-shibboleth-techoverview-latest.pdf.<br />

Shamir, A. (1984). I<strong>de</strong>ntity-based Cryptosystems and Signature Schemes. In Advances<br />

in Cryptology-Crypto’84, pages 47–53.<br />

Wangham, M. S., da Silva Fraga, J., and <strong>de</strong> Mello, E. R. (2011). Gt-stcfed – serviços para<br />

transposição <strong>de</strong> cre<strong>de</strong>nciais <strong>de</strong> autenticação fe<strong>de</strong>radas. http://gtstcfed.das.ufsc.br.<br />

Wangham, M. S., <strong>de</strong> Mello, E. R., da Silva Böger, D., Fraga, J., and Guérios, M. C. (2010).<br />

Uma Infraestrutura para Tradução <strong>de</strong> Cre<strong>de</strong>nciais <strong>de</strong> Autenticação para Fe<strong>de</strong>rações<br />

Shibboleth. In X Simpósio Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas<br />

Computacionais, pages 360–447, Fortaleza. SBSEG.<br />

414

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!