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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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!