Anais - Engenharia de Redes de Comunicação - UnB
Anais - Engenharia de Redes de Comunicação - UnB
Anais - Engenharia de Redes de Comunicação - UnB
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ANAIS
Organização do SBSeg 2011<br />
Coor<strong>de</strong>nadores Gerais<br />
An<strong>de</strong>rson Clayton Alves Nascimento, <strong>UnB</strong><br />
Rafael Timóteo <strong>de</strong> Sousa Júnior, <strong>UnB</strong><br />
Comitê <strong>de</strong> Organização Local<br />
An<strong>de</strong>rson Clayton Alves Nascimento, <strong>UnB</strong><br />
Aletéia Patrícia Favacho <strong>de</strong> Araújo, <strong>UnB</strong><br />
Dino Macedo Amaral,<strong>UnB</strong><br />
Edna Dias Canedo, <strong>UnB</strong><br />
Flávio Elias Gomes <strong>de</strong> Deus, <strong>UnB</strong><br />
Maristela Terto <strong>de</strong> Holanda, <strong>UnB</strong><br />
Laerte Peotta <strong>de</strong> Melo, <strong>UnB</strong><br />
Priscila América Solis M. Barreto, <strong>UnB</strong><br />
Rafael Timóteo <strong>de</strong> Sousa Júnior, <strong>UnB</strong><br />
Ricardo Staciarini Puttini, <strong>UnB</strong><br />
Coor<strong>de</strong>nadores do Comitê <strong>de</strong> Programa<br />
Jeroen van <strong>de</strong> Graaf, UFMG<br />
Luiz Fernando Rust da Costa Carmo, UFRJ<br />
Coor<strong>de</strong>nadores <strong>de</strong> Minicursos<br />
Célia Ghedini Ralha, <strong>UnB</strong><br />
Antonio Cândido Faleiros, UFABC<br />
Coor<strong>de</strong>nadora do WTICG<br />
Michelle Nogueira, UFPR<br />
Coor<strong>de</strong>nadores do WGID<br />
Michelle S. Wangham, UNIVALI<br />
Prof. Joni da Silva Fraga, UFSC<br />
Coor<strong>de</strong>nador do Fórum <strong>de</strong> Segurança Corporativa<br />
Rafael Timóteo <strong>de</strong> Sousa Júnior, <strong>UnB</strong><br />
2
Mensagem da Coor<strong>de</strong>nação Geral<br />
O Simpósio Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais (SBSeg)<br />
é um evento científico promovido anualmente pela Socieda<strong>de</strong> Brasileira <strong>de</strong> Computação (SBC). A<br />
partir <strong>de</strong> 2005, concomitantemente à criação da Comissão Especial em Segurança da Informação<br />
e <strong>de</strong> Sistemas Computacionais, o SBSeg <strong>de</strong>ixou <strong>de</strong> ser organizado como um workshop e passou<br />
a ser um simpósio completo. Isso permitiu que, imediatamente, passasse a aten<strong>de</strong>r às <strong>de</strong>mandas<br />
crescentes da comunida<strong>de</strong> brasileira <strong>de</strong> pesquisadores e profissionais atuantes na área e assumisse a<br />
posição <strong>de</strong> principal fórum no País para a apresentação <strong>de</strong> pesquisas e ativida<strong>de</strong>s relevantes ligadas<br />
à segurança da informação e <strong>de</strong> sistemas.<br />
Des<strong>de</strong> que se estabeleceu como simpósio em 2005, o evento foi organizado, com gran<strong>de</strong><br />
sucesso, nas cida<strong>de</strong>s <strong>de</strong> Florianópolis, Santos, Rio <strong>de</strong> Janeiro, Gramado, Campinas e Fortaleza.<br />
A 11ª. edição do simpósio ocorre entre 6 e 11 <strong>de</strong> novembro <strong>de</strong> 2011 em Brasília, DF, organizada<br />
pelo grupo <strong>de</strong> <strong>Engenharia</strong> <strong>de</strong> Re<strong>de</strong>s do Departamento <strong>de</strong> <strong>Engenharia</strong> Elétrica e pelo Departamento<br />
<strong>de</strong> Ciência da Computação, ambos da Universida<strong>de</strong> <strong>de</strong> Brasília. O simpósio conta com uma rica<br />
varieda<strong>de</strong> <strong>de</strong> ativida<strong>de</strong>s, a saber: 7 sessões técnicas <strong>de</strong> artigos completos e resumos estendidos,<br />
6 minicursos, 4 palestras proferidas por especialistas estrangeiros, Painel <strong>de</strong> Segurança e Defesa<br />
Cibernética, Fórum <strong>de</strong> Segurança Corporativa e Workshop <strong>de</strong> Trabalhos <strong>de</strong> Iniciação Científica e <strong>de</strong><br />
Graduação e o 1º. Workshop <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s.<br />
Um aspecto fundamental do SBSeg é o comprometimento com a qualida<strong>de</strong>. Tem operado<br />
seguindo, rigorosamente, indicadores visando ao atendimento do padrão Qualis A, conforme critérios<br />
da CAPES. Entre esses critérios, <strong>de</strong>stacamos a taxa <strong>de</strong> aceitação <strong>de</strong> artigos completos inferior <strong>de</strong><br />
33% e a composição <strong>de</strong> Comitês <strong>de</strong> Programa por pesquisadores brasileiros e estrangeiros com<br />
gran<strong>de</strong> renome e inserção na área.<br />
Para a realização do SBSeg 2011, o envolvimento e a colaboração <strong>de</strong> várias pessoas e<br />
entida<strong>de</strong>s foram imprescindíveis. Em especial, gostaríamos <strong>de</strong> agra<strong>de</strong>cer aos membros do comitê<br />
<strong>de</strong> organização geral e local que, por conta <strong>de</strong> seu trabalho voluntário e incansável, ajudaram a<br />
proporcionar à comunida<strong>de</strong> <strong>de</strong> segurança um evento que julgamos <strong>de</strong> ótimo nível técnico. Gostaríamos<br />
<strong>de</strong> agra<strong>de</strong>cer, também, à SBC, pelo apoio prestado ao longo das muitas etapas da organização, e<br />
aos patrocinadores, pelo incentivo à divulgação <strong>de</strong> ativida<strong>de</strong>s <strong>de</strong> pesquisa conduzidas no País e<br />
pela confiança <strong>de</strong>positada neste Simpósio. Por fim, nossos agra<strong>de</strong>cimentos aos alunos, técnicos e<br />
professores do Laboratório <strong>de</strong> <strong>Engenharia</strong> <strong>de</strong> Re<strong>de</strong>s (LabRe<strong>de</strong>s), Laboratório <strong>de</strong> Tecnologias da<br />
Tomada <strong>de</strong> Decisão (Latitu<strong>de</strong>), Grupo <strong>de</strong> Pesquisa Crypto&InformationTheory e Programa <strong>de</strong> Pós-<br />
Graduação em <strong>Engenharia</strong> Elétrica (PPGEE), da <strong>UnB</strong>, por viabilizarem a realização <strong>de</strong> um evento<br />
do porte do SBSeg.<br />
Nesta semana <strong>de</strong> 6 a 11 <strong>de</strong> novembro estão reunidos em Brasília estudantes, professores,<br />
pesquisadores, governo e profissionais da indústria, todos com o objetivo <strong>de</strong> trocar i<strong>de</strong>ias,<br />
compartilhar experiências e estabelecer laços pessoais. Brasília é, portanto, o centro da discussão<br />
sobre avanços realizados e <strong>de</strong>safios a serem superados na área <strong>de</strong> segurança da informação e <strong>de</strong><br />
sistemas. Sejam bem-vindos ao Planalto Central e <strong>de</strong>sfrutem <strong>de</strong> uma semana agradável e proveitosa!<br />
An<strong>de</strong>rson Clayton Alves Nascimento, <strong>UnB</strong><br />
Rafael Timóteo <strong>de</strong> Sousa Júnior, <strong>UnB</strong><br />
Coor<strong>de</strong>nadores Gerais do SBSeg 2011<br />
3
Mensagem dos Coor<strong>de</strong>nadores do Comitê <strong>de</strong> Programa<br />
O Simpósio Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais<br />
(SBSeg) é um evento já consolidado como um dos importantes eventos científicos no país.<br />
O E, na Simpósio sua décima Brasileiro primeira em edição, Segurança continua da a mostrar Informação a sua e importância. <strong>de</strong> Sistemas Foram Computacionais 81 registros<br />
(SBSeg) para submissão é um evento <strong>de</strong> artigos, já consolidado dos quais como sessenta um dos e um importantes (61) foram eventos integralmente científicos realizados, no país.<br />
E, abrangendo na sua décima os diversos primeira tópicos edição, <strong>de</strong>finidos continua para a mostrar o evento. a sua Desse importância. conjunto foram Foram selecionados 81 registros<br />
para <strong>de</strong>zenove submissão (19) artigos <strong>de</strong> artigos, completos dos quais e um (1) sessenta na forma e um <strong>de</strong> (61) artigo foram curto. integralmente realizados,<br />
abrangendo os diversos tópicos <strong>de</strong>finidos para o evento. Desse conjunto foram selecionados<br />
<strong>de</strong>zenove Com estes (19) números artigos estamos completos compondo e um (1) na um forma programa <strong>de</strong> artigo bastante curto. diversificado, com sete<br />
sessões técnicas, que expressa através dos trabalhos selecionados a qualida<strong>de</strong> da pesquisa<br />
Com realizada estes no números país na área estamos <strong>de</strong> Segurança. compondo um programa bastante diversificado, com sete<br />
sessões técnicas, que expressa através dos trabalhos selecionados a qualida<strong>de</strong> da pesquisa<br />
realizada O Simpósio no país Brasileiro na área em <strong>de</strong> Segurança. da Informação e <strong>de</strong> Sistemas Computacionais vem<br />
nos últimos anos se caracterizando por um processo <strong>de</strong> seleção <strong>de</strong> artigos bastante<br />
O criterioso, Simpósio envolvendo Brasileiro várias em Segurança etapas. Neste da Informação trabalho árduo e <strong>de</strong> participa Sistemas uma Computacionais parte consi<strong>de</strong>rável vem<br />
nos da comunida<strong>de</strong> últimos anos científica se caracterizando brasileira <strong>de</strong> Segurança. por um processo E neste <strong>de</strong> momento seleção é bom <strong>de</strong> artigos que se divida bastante o<br />
criterioso, reconhecimento envolvendo e os elogios várias com etapas. todas Neste estas trabalho pessoas árduo que participaram uma <strong>de</strong>ste parte processo consi<strong>de</strong>rável que<br />
da resultou comunida<strong>de</strong> no programa científica do SBSeg brasileira 2011. <strong>de</strong> Segurança. E neste momento é bom que se divida o<br />
reconhecimento e os elogios com todas estas pessoas que participaram <strong>de</strong>ste processo que<br />
resultou Em primeiro no programa lugar, é importante do SBSeg 2011. o agra<strong>de</strong>cimento aos 239 autores, na sua maioria formada<br />
por brasileiros (236), que reconhecem a importância do SBSeg e que a cada nova edição<br />
Em ajudam primeiro a manter lugar, os é números importante <strong>de</strong> submissões o agra<strong>de</strong>cimento em níveis aos 239 expressivos. autores, na É a sua continuida<strong>de</strong> maioria formada <strong>de</strong>stes<br />
por números brasileiros <strong>de</strong> submissões (236), que e <strong>de</strong> reconhecem autores envolvidos a importância que <strong>de</strong>finitivamente do SBSeg e que consolidou a cada nova o simpósio. edição<br />
ajudam a manter os números <strong>de</strong> submissões em níveis expressivos. É a continuida<strong>de</strong> <strong>de</strong>stes<br />
números É importante <strong>de</strong> submissões também o e agra<strong>de</strong>cimento autores envolvidos e o reconhecimento que <strong>de</strong>finitivamente a todos os consolidou colegas membros o simpósio. do<br />
Comitê <strong>de</strong> Programa que este ano contou com 42 especialistas nos temas do simpósio.<br />
É Destes, importante 3 são também convidados o agra<strong>de</strong>cimento instituições e o reconhecimento estrangeiras, e os a todos <strong>de</strong>mais os colegas atuam no membros Brasil. do O<br />
Comitê trabalho <strong>de</strong>stes Programa colegas, que completamente este ano contou voluntário, com 42 foi especialistas muito importante nos temas nesta do edição. simpósio. Este<br />
Destes, trabalho 3 que são não convidados se encerra <strong>de</strong> com instituições o processo estrangeiras, <strong>de</strong> seleção, continua e os <strong>de</strong>mais ainda atuam com a no coor<strong>de</strong>nação Brasil. O<br />
trabalho das sessões <strong>de</strong>stes técnicas. colegas, completamente voluntário, foi muito importante nesta edição. Este<br />
trabalho que não se encerra com o processo <strong>de</strong> seleção, continua ainda com a coor<strong>de</strong>nação<br />
das No processo sessões técnicas. <strong>de</strong> seleção, tivemos a participação <strong>de</strong> 91 revisores e nisto se inclui também os<br />
membros do comitê <strong>de</strong> programa, gerando um total <strong>de</strong> 201 revisões. Foram pelo menos três<br />
No revisões processo para <strong>de</strong> cada seleção, artigo tivemos submetido. a participação Agra<strong>de</strong>cemos 91 todo revisores o empenho e nisto <strong>de</strong>stes se inclui revisores também para os a<br />
membros confecção do <strong>de</strong> comitê diagnósticos <strong>de</strong> programa, técnicos gerando e precisos, um total e para <strong>de</strong> a 201 imprescindível revisões. Foram contemporização pelo menos três na<br />
revisões hora da solução para cada <strong>de</strong> artigo conflitos. submetido. Agra<strong>de</strong>cemos todo o empenho <strong>de</strong>stes revisores para a<br />
confecção <strong>de</strong> diagnósticos técnicos e precisos, e para a imprescindível contemporização na<br />
hora da solução <strong>de</strong> conflitos.<br />
Gostaríamos também <strong>de</strong> agra<strong>de</strong>cer à Coor<strong>de</strong>nação Geral do SBSeg 2011 pelo convite honroso<br />
e a confiança que nos <strong>de</strong>positou ao nos fazer coor<strong>de</strong>nadores do Comitê <strong>de</strong> Programa<br />
Gostaríamos do SBSeg 2011. também Os <strong>de</strong>mais agra<strong>de</strong>cer participantes à Coor<strong>de</strong>nação da Organização Geral do do SBSeg simpósio 2011 pelo foram convite também honroso<br />
incansáveis e a confiança na tarefa que nos <strong>de</strong> fornecer <strong>de</strong>positou os ao meios nos fazer necessários coor<strong>de</strong>nadores para que do o Comitê <strong>de</strong> <strong>de</strong> Programa<br />
do atingisse SBSeg todos 2011. os Os seus <strong>de</strong>mais objetivos. participantes da Organização do simpósio foram também<br />
incansáveis na tarefa <strong>de</strong> fornecer os meios necessários para que o Comitê <strong>de</strong> Programa<br />
Finalmente, queremos <strong>de</strong>sejar aos participantes que são a razão maior do nosso evento, que<br />
atingisse todos os seus objetivos.<br />
tenham um excelente SBSeg!!<br />
Jeroen van <strong>de</strong> Graaf (DCC/UFMG)<br />
Luiz Fernando Rust da Costa Carmo (INMETRO)<br />
Coor<strong>de</strong>nadores do Comitê <strong>de</strong> Programa do SBSeg 2011<br />
4
Mensagem da Coor<strong>de</strong>nadora do WTICG<br />
Mensagem do Coor<strong>de</strong>nador do WTICG/SBSeg 2011 <br />
O Workshop <strong>de</strong> Trabalhos <strong>de</strong> Iniciação Científica e <strong>de</strong> Graduação (WTICG) do <br />
Simpósio Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais <br />
(SBSeg) visa incentivar a participação <strong>de</strong> recém-‐graduados e <strong>de</strong> alunos <strong>de</strong> graduação <br />
na produção e divulgação <strong>de</strong> trabalhos científicos, fortalecendo a comunicação e a <br />
troca <strong>de</strong> conhecimentos sobre pesquisas já concluídas e em andamento. Nesta <br />
quinta edição, o WTICG contou com 18 artigos submetidos. Dentre estes, há artigos <br />
das mais diversas unida<strong>de</strong>s fe<strong>de</strong>rativas do Brasil, apontando a crescente <br />
atrativida<strong>de</strong> e visibilida<strong>de</strong> do evento. <br />
O Comitê <strong>de</strong> Programa <strong>de</strong>sta edição do WTICG foi constituído por 12 pesquisadores. <br />
Esse comitê contou ainda com o apoio <strong>de</strong> 8 avaliadores externos, sendo 3 <strong>de</strong>stes <br />
avaliadores anônimos, formando uma equipe <strong>de</strong> 20 profissionais para a condução <br />
do processo <strong>de</strong> avaliação dos artigos. Cada artigo recebeu pelo menos 3 avaliações <br />
in<strong>de</strong>pen<strong>de</strong>ntes e, ao final do processo <strong>de</strong> avaliação dos artigos submetidos, tivemos <br />
ao todo 56 revisões. Dentre os 18 artigos submetidos, 10 artigos foram selecionados <br />
para a publicação e apresentação oral no evento. Ressalto que todos os artigos <br />
selecionados aten<strong>de</strong>ram à restrição dos autores serem estudantes <strong>de</strong> graduação <br />
regularmente matriculados, ou ainda, recém-‐graduados que tenham concluído a <br />
graduação após 30 <strong>de</strong> junho <strong>de</strong> 2010. <br />
A programação do WTICG está divida em 3 sessões técnicas que cobrem temas <br />
variados nas áreas <strong>de</strong> segurança da informação e segurança <strong>de</strong> sistemas <br />
computacionais. A primeira sessão trata especificamente <strong>de</strong> problemas relacionados <br />
ao Gerenciamento <strong>de</strong> Chaves e <strong>de</strong> Certificados. A segunda sessão contém artigos que <br />
investigam problemas relacionados à Segurança em Re<strong>de</strong>s e Sistemas. Finalmente, a <br />
terceira sessão é <strong>de</strong>dicada a artigos sobre Gerência <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e Anonimato. <br />
Gostaria <strong>de</strong> agra<strong>de</strong>cer aos membros do comitê <strong>de</strong> programa e aos revisores por <br />
terem aceitado participar voluntariamente dos processos <strong>de</strong> divulgação e avaliação <br />
neste evento. Agra<strong>de</strong>ço-‐os também pela competência e <strong>de</strong>dicação na realização do <br />
processo <strong>de</strong> avaliação dos artigos. Gostaria <strong>de</strong> expressar também os meus <br />
agra<strong>de</strong>cimentos aos coor<strong>de</strong>nadores gerais do SBSeg 2011 pela oportunida<strong>de</strong> e <br />
confiança ao me atribuírem essa função. Finalmente, gostaria <strong>de</strong> agra<strong>de</strong>cer aos <br />
autores que submeteram os seus trabalhos e que anualmente fortalecem o interesse, <br />
visibilida<strong>de</strong> e sucesso crescentes do WTICG. <br />
Saúdo a todos os participantes do V Workshop <strong>de</strong> Trabalhos <strong>de</strong> Iniciação Científica e <br />
<strong>de</strong> Graduação com os votos <strong>de</strong> um excelente workshop e <strong>de</strong> uma excelente estadia <br />
em Brasília! <br />
Michele Nogueira <br />
5
Mensagem dos Coor<strong>de</strong>nadores do WGID<br />
O Workshop <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s (WGID), evento integrante do SBSeg,<br />
visa ser um fórum para discussões e apresentações técnicas <strong>de</strong> trabalhos recentes e/ou em<br />
andamento em torno do estado da arte <strong>de</strong> tecnologias relacionadas com gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s.<br />
Além disso, busca-se também i<strong>de</strong>ntificar os <strong>de</strong>safios <strong>de</strong> pesquisa na área e possibilitar o<br />
mapeamento dos grupos <strong>de</strong> pesquisa.<br />
Pesquisadores foram convidados a submeter trabalhos originais relacionados à Gestão<br />
<strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s, sendo que quatro trabalhos foram selecionados e serão apresentados na sessão<br />
técnica. Gostaríamos <strong>de</strong> agra<strong>de</strong>cer todo o empenho dos membros do comitê <strong>de</strong> programa<br />
pela alta qualida<strong>de</strong> do trabalho realizado nas revisões. Registramos um agra<strong>de</strong>cimento<br />
especial a todos os autores que prestigiaram o I WGID ao submeterem trabalhos relatando<br />
suas pesquisas.<br />
O programa do Workshop contemplará ainda duas palestras do pesquisador David<br />
Chadwick (University of Kent), uma palestra do Sr. Ruy Ramos, representante do ITI<br />
(Instituto Nacional <strong>de</strong> Tecnologia da Informação), uma palestra do Sr. Paulo Ayran, represente<br />
do Comitê Gestor do RIC (Registro <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> Civil), uma palestra da equipe <strong>de</strong> serviços<br />
da RNP (Re<strong>de</strong> Nacional <strong>de</strong> Ensino e Pesquisa), uma palestra sobre o projeto EduRoam.br<br />
e um painel com pesquisadores brasileiros que discutirá os <strong>de</strong>safios <strong>de</strong> segurança na gestão<br />
<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s.<br />
Gostaríamos também <strong>de</strong> agra<strong>de</strong>cer a todos que colaboraram na organização do<br />
WGID, especialmente, ao André Marins (RNP) e aos professores Noemi Rodriguez e<br />
Ricardo Custódio (coor<strong>de</strong>nadores do Comitê Técnico <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s da RNP).<br />
Agra<strong>de</strong>cemos ainda o apoio financeiro da Re<strong>de</strong> Nacional <strong>de</strong> Ensino e Pesquisa (RNP) e o<br />
apoio da Comissão Especial em Segurança da Informação e <strong>de</strong> Sistemas Computacionais da<br />
SBC e da Coor<strong>de</strong>nação Geral do SBSeg 2011 e <strong>de</strong> toda a sua equipe do comitê local.<br />
Em nome do Comitê <strong>de</strong> Programa, saudamos a todos os participantes do WGID 2011,<br />
com votos <strong>de</strong> um evento bastante profícuo.<br />
Prof. Joni da Silva Fraga, UFSC<br />
Profa. Michelle S. Wangham, UNIVALI<br />
Coor<strong>de</strong>nadores do Comitê <strong>de</strong> Programa do WGID 2011<br />
6
Comitê <strong>de</strong> Programa e Revisores do SBSeg<br />
Aldri dos Santos - UFPR<br />
Alexandre Alexandre - FEEC<br />
Altair Santin - PUCPR<br />
An<strong>de</strong>rson Nascimento -UNB<br />
André dos Santos - UECE<br />
André Grégio - CTI<br />
Antonio Maio - Kryptus<br />
Arlindo L. Marcon Jr. - PUCPR<br />
Arun Lakhotia - University of Louisiana USA<br />
Bruno Augusti Mozzaquatro - UFSM<br />
Carla Merkle Westphall - UFSC<br />
Carlos Maziero - UTFPR<br />
Carlos Westphall - UFSC<br />
Célio Vinicius Neves <strong>de</strong> Albuquerque - UFF<br />
Charles Prado - INMETRO<br />
Cinthia Freitas - PUCPR<br />
Claudio Miceli <strong>de</strong> Farias - UFRJ<br />
Cleber Kiel Olivo - PUCPR<br />
Cleber Souza - UNICAMP<br />
Craig Miles - University of Louisiana USA<br />
Daniel Fernan<strong>de</strong>s Macedo - UFMG<br />
Dario Fernan<strong>de</strong>s - UNICAMP<br />
Davi Böger - UFSC<br />
Davidson Boccardo - INMETRO<br />
Dener Didoné - UFPE<br />
Diogo Mattos - UFRJ<br />
Djamel H. Sadok -UFPE<br />
Dorgival Gue<strong>de</strong>s - UFMG<br />
Elisa Mannes - UFPR<br />
Emerson Ribeiro <strong>de</strong> Mello - IF-SC<br />
Fernando Gielow - UFPR<br />
Fernando Teixeira - UFMG<br />
Flavia Delicato - UFRJ<br />
Gabriel Cavalcante - UNICAMP<br />
George Cavalcanti - UFPE<br />
Gliner Alencar - UFPE<br />
Hao Chi Wong - Intel USA<br />
Henrique Arcover<strong>de</strong> - UFPE<br />
Hugo Carvalho - UFRJ<br />
Jacques Facon - PUCPR<br />
Jean Martina - University of Cambridge GB<br />
Jeroen van <strong>de</strong> Graaf - UFMG<br />
Joaquim Celestino Júnior - UECE<br />
José De Souza - UFC<br />
Joni da Silva Fraga - UFSC<br />
Julio Hernan<strong>de</strong>z - UNICAMP<br />
Lau Cheuk Lung - UFSC<br />
Leonardo Fagun<strong>de</strong>s - Unisinos<br />
Leonardo Oliveira - UNICAMP<br />
Leonardo Ribeiro - INMETRO<br />
Lisandro Zambene<strong>de</strong>tti Granville - UFRGS<br />
Luci Pirmez - UFRJ<br />
Luciano Paschoal Gaspary - UFRGS<br />
Luiz Fernando Rust da Costa Carmo - UFRJ<br />
Luiz Carlos Albini - UFPR<br />
Lyno Ferraz - UFRJ<br />
Maicon Stihler - PUCPR<br />
Marinho Barcellos - UFRGS<br />
Mauro Fonseca - PUCPR<br />
Michel Abdalla - École Normale Supérieure FR<br />
Michele Nogueira - UFPR<br />
Michelle Wangham - Univali<br />
Natalia Castro Fernan<strong>de</strong>s - UFRJ<br />
Otto Carlos Muniz Ban<strong>de</strong>ira Duarte UFRJ<br />
Paulo Barreto - USP<br />
Paulo Mafra - UFSC<br />
Paulo Padovan - UFPE<br />
Paulo André da Silva Gonçalves - UFPE<br />
Pedro Pisa - UFRJ<br />
Pedro Velloso - UFF<br />
Rafael Obelheiro - UDESC<br />
Raphael Machado - INMETRO<br />
Raul Ceretta Nunes - UFSM<br />
Raul Weber - UFRGS<br />
Reinaldo Braga - UFC<br />
Ricardo Custódio - UFSC<br />
Ricardo Dahab - UNICAMP<br />
Ricardo Tombesi Macedo - UFSM<br />
Roben Lunardi - UFRGS<br />
Roberto Gallo - Kryptus<br />
Robson Gomes <strong>de</strong> Melo - UFPR<br />
Rossana Andra<strong>de</strong> - UFC<br />
Routo Terada - USP<br />
Silvana Rossetto - UFRJ<br />
Thiago Rosa - PUCPR<br />
Tiago Nascimento - UFRJ<br />
Vinícius Thiago - Exército Brasileiro<br />
Vinicius Moll - UFSC<br />
Vitor Afonso - UNICAMP<br />
Weverton Luis da Costa Cor<strong>de</strong>iro - UFRGS<br />
Wilton Speziali Caldas - Empresa1<br />
7
Comitê <strong>de</strong> Programa e Revisores do WTICG<br />
Coor<strong>de</strong>nação Geral do SBSeg2011<br />
An<strong>de</strong>rson Nascimento, <strong>UnB</strong><br />
Coor<strong>de</strong>nação do Workshop<br />
Michelle S. Wangham, UNIVALI<br />
Ricardo Custódio, UFSC<br />
Noemi Rodriguez, PUC-RIO<br />
André Marins, RNP<br />
Coor<strong>de</strong>nação do Comitê <strong>de</strong> Programa<br />
Joni Fraga, UFSC<br />
Michelle Wangham, UNIVALI<br />
Comitê <strong>de</strong> Programa<br />
Aldri dos Santos, UFPR<br />
Altair Santin, PUC-PR<br />
Débora Muchaluat, UFF<br />
Eleri Cardozo, UNICAMP<br />
Emerson Ribeiro <strong>de</strong> Mello, IFSC<br />
Jeroen van <strong>de</strong>r Graaf, UFMG<br />
Joni Fraga, UFSC<br />
Marinho Barcellos, UFRGS<br />
Michelle Wangham, UNIVALI<br />
Michele Nogueira, UFPR<br />
Noemi Rodriguez, PUC-Rio<br />
Ricardo Custódio, UFSC<br />
Roberto Samarone, UFPA<br />
Vinod Rebello, UFF<br />
8
Comitê <strong>de</strong> Programa e Revisores do WGID<br />
Coor<strong>de</strong>nação Geral do SBSeg2011<br />
An<strong>de</strong>rson Nascimento, <strong>UnB</strong><br />
Coor<strong>de</strong>nação do Workshop<br />
Michelle S. Wangham, UNIVALI<br />
Ricardo Custódio, UFSC<br />
Noemi Rodriguez, PUC-RIO<br />
André Marins, RNP<br />
Coor<strong>de</strong>nação do Comitê <strong>de</strong> Programa<br />
Joni Fraga, UFSC<br />
Michelle Wangham, UNIVALI<br />
Comitê <strong>de</strong> Programa<br />
Aldri dos Santos, UFPR<br />
Altair Santin, PUC-PR<br />
Débora Muchaluat, UFF<br />
Eleri Cardozo, UNICAMP<br />
Emerson Ribeiro <strong>de</strong> Mello, IFSC<br />
Jeroen van <strong>de</strong>r Graaf, UFMG<br />
Joni Fraga, UFSC<br />
Marinho Barcellos, UFRGS<br />
Michelle Wangham, UNIVALI<br />
Michele Nogueira, UFPR<br />
Noemi Rodriguez, PUC-Rio<br />
Ricardo Custódio, UFSC<br />
Roberto Samarone, UFPA<br />
Vinod Rebello, UFF<br />
Revisores<br />
Aldri dos Santos, UFPR<br />
Altair Santin, PUC-PR<br />
Débora Muchaluat, UFF<br />
Eleri Cardozo, UNICAMP<br />
Emerson Ribeiro <strong>de</strong> Mello, IFSC<br />
Jeroen van <strong>de</strong>r Graaf, UFMG<br />
Joni Fraga, UFSC<br />
Maicon Stihler, PUCPR<br />
Marinho Barcellos, UFRGS<br />
Michelle Wangham, UNIVALI<br />
Michele Nogueira, UFPR<br />
9
Sumário dos <strong>Anais</strong> dos Artigos SBSeg 2011<br />
Um Mecanismo <strong>de</strong> Proteção <strong>de</strong> Quadros <strong>de</strong> Controle para Re<strong>de</strong>s IEEE<br />
802.11<br />
Tratamento Automatizado <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Segurança da Informação em<br />
Re<strong>de</strong>s <strong>de</strong> Campus<br />
15<br />
29<br />
Uma Ontologia para Mitigar XML Injection 43<br />
Carimbos do Tempo Autenticados para a Preservação por Longo Prazo <strong>de</strong><br />
Assinaturas Digitais<br />
57<br />
SCuP - Secure Cryptographic Microprocessor 71<br />
Fault Attacks against a Cellular Automata Based Stream Cipher 85<br />
Zero-knowledge I<strong>de</strong>ntification based on Lattices with Low Communication<br />
Costs<br />
95<br />
A Framework for Fully Simulatable Oblivious Transfer 108<br />
Syndrome-Fortuna: A viable approach on Linux random number generation 122<br />
SpSb: um ambiente seguro para o estudo <strong>de</strong> spambots 135<br />
Fatores que afetam o comportamento <strong>de</strong> spammers na re<strong>de</strong> 141<br />
Segmentação <strong>de</strong> Overlays P2P como Suporte para Memórias Tolerantes a<br />
Intrusões<br />
Caracterização e Mo<strong>de</strong>lagem da Disseminação <strong>de</strong> Conteúdo Ilícito em<br />
Sistemas Par-a-Par <strong>de</strong> Compartilhamento <strong>de</strong> Arquivos<br />
155<br />
169<br />
Método Heurístico para Rotular Grupos em Sistema <strong>de</strong> Detecção <strong>de</strong><br />
Intrusão baseado em Anomalia<br />
183<br />
10
Detecção <strong>de</strong> Intrusos usando Conjunto <strong>de</strong> k-NN gerado por Subespaços<br />
Aleatórios<br />
Combinando Algoritmos <strong>de</strong> Classificação para Detecção <strong>de</strong> Intrusão em<br />
Re<strong>de</strong>s <strong>de</strong> Computadores<br />
197<br />
211<br />
Static Detection of Address Leaks 225<br />
Um esquema bio-inspirado para tolerância à má-conduta em sistemas <strong>de</strong><br />
quórum para MANETs<br />
239<br />
Aumentando a segurança do MD6 em relação aos ataques diferenciais 253<br />
Acordo <strong>de</strong> Chave Seguro contra Autorida<strong>de</strong> Mal Intencionada 265<br />
11
Sumário dos <strong>Anais</strong> WTICG<br />
Especificação <strong>de</strong> Proprieda<strong>de</strong>s Temporais do Protocolo <strong>de</strong> Chaves Públicas<br />
Needham Schroe<strong>de</strong>r<br />
280<br />
Troca <strong>de</strong> Chaves Criptográficas com Re<strong>de</strong>s Neurais Artificiais 290<br />
Análise e implementação <strong>de</strong> um protocolo <strong>de</strong> gerenciamento <strong>de</strong> certificados 300<br />
Mobile Steganography Embed<strong>de</strong>r 310<br />
Avaliação do Impacto do Uso <strong>de</strong> Assinaturas Digitais em uma Aplicação<br />
Distribuída que Utiliza Re<strong>de</strong>s Veiculares<br />
Uma Avaliação <strong>de</strong> Segurança no Gerenciamento <strong>de</strong> Mobilida<strong>de</strong> nas Re<strong>de</strong>s<br />
em Malha sem Fio<br />
320<br />
329<br />
Análise Visual <strong>de</strong> Comportamento <strong>de</strong> Código Malicioso 339<br />
Uma Maneira Simples <strong>de</strong> Obter Regiões <strong>de</strong> Interesse em Imagens <strong>de</strong><br />
Impressões Digitais<br />
349<br />
Uma aplicação <strong>de</strong> privacida<strong>de</strong> no gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s em nuvem<br />
com uApprove<br />
A New Scheme for Anonymous Communication in Wireless Mesh<br />
Networks<br />
359<br />
369<br />
12
Sumário dos <strong>Anais</strong> WGID<br />
Avaliação <strong>de</strong> um Sistema <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e Acesso em uma<br />
Organização Pública Fe<strong>de</strong>ral<br />
378<br />
Uma Plataforma para Gerenciamento <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong> Software como<br />
Serviço em uma Infraestrutura como Serviço<br />
388<br />
Electronic Documents with Signature Constraints 397<br />
Using Notary Based Public Key Infrastructure in Shibboleth 405<br />
13
ANAIS<br />
14
Um Mecanismo <strong>de</strong> Proteção <strong>de</strong> Quadros <strong>de</strong> Controle<br />
para Re<strong>de</strong>s IEEE 802.11<br />
Marcos A. C. Corrêa Júnior, Paulo André da S. Gonçalves<br />
Centro <strong>de</strong> Informática (CIn)<br />
Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Pernambuco (UFPE)<br />
50.740-560 – Recife – PE – Brasil<br />
{maccj, pasg}@cin.ufpe.br<br />
Abstract. Only control frames of all the frame types <strong>de</strong>fined by IEEE 802.11<br />
stardard are not yet protected by any kind of security mechanism. This makes it<br />
easier for malicious entities to exploit them in or<strong>de</strong>r to carry out <strong>de</strong>ny-of-service<br />
attacks on the network. Techniques to forge or tamper control frames as well as<br />
techniques to reinject them into the network are typically used un<strong>de</strong>r such attacks.<br />
This paper proposes a mechanism for protecting IEEE 802.11 control<br />
frames against such attacks. The proposed mechanism protects all the control<br />
frames by using sequence numbers and Message Authentication Co<strong>de</strong>s. Compared<br />
to similar studies that aim to protect all the control frames, the proposed<br />
mechanism has reduced overhead and provi<strong>de</strong>s increased security.<br />
Resumo. De todos os quadros <strong>de</strong>finidos pelo padrão IEEE 802.11, apenas<br />
os quadros <strong>de</strong> controle ainda não possuem qualquer tipo <strong>de</strong> mecanismo <strong>de</strong><br />
segurança. Isso permite que entida<strong>de</strong>s maliciosas, mesmo não pertencentes à<br />
re<strong>de</strong>, se utilizem <strong>de</strong> técnicas <strong>de</strong> forjamento, manipulação e reinjeção <strong>de</strong>sses quadros<br />
a fim <strong>de</strong> gerar algum tipo <strong>de</strong> negação <strong>de</strong> serviço na re<strong>de</strong>. Este artigo propõe<br />
um mecanismo <strong>de</strong> segurança para os quadros <strong>de</strong> controle do IEEE 802.11. O<br />
mecanismo proposto se vale do uso <strong>de</strong> números <strong>de</strong> sequência e da geração <strong>de</strong><br />
Códigos <strong>de</strong> Autenticação <strong>de</strong> Mensagem a fim <strong>de</strong> evitar que estações maliciosas,<br />
não pertencentes à re<strong>de</strong>, tenham sucesso ao forjar, manipular ou reinjetar quadros<br />
<strong>de</strong> controle que levariam à negação <strong>de</strong> serviços. Além <strong>de</strong> proteger todos<br />
os quadros <strong>de</strong> controle indistintamente, o mecanismo proposto possui um maior<br />
grau <strong>de</strong> segurança e introduz, nesses quadros, um overhead significativamente<br />
menor em comparação aos trabalhos relacionados que também se propõem a<br />
proteger todos os quadros <strong>de</strong> controle.<br />
1. Introdução<br />
As re<strong>de</strong>s locais sem fio que seguem o padrão IEEE 802.11 [IEEE Standard 802.11 2007]<br />
vêm sendo amplamente adotadas em residências, empresas e locais públicos como shoppings,<br />
aeroportos e restaurantes. Os mecanismos <strong>de</strong> segurança que atuam na camada<br />
enlace <strong>de</strong>ssas re<strong>de</strong>s têm evoluído frequentemente <strong>de</strong>vido à <strong>de</strong>scoberta recorrente <strong>de</strong> vulnerabilida<strong>de</strong>s<br />
[Tews 2007]. Em geral, essas vulnerabilida<strong>de</strong>s são exploradas através do<br />
uso malicioso dos diferentes tipos <strong>de</strong> quadros que trafegam na re<strong>de</strong>. O padrão IEEE<br />
802.11 <strong>de</strong>fine três tipos <strong>de</strong> quadros: quadros <strong>de</strong> dados, quadros <strong>de</strong> gerenciamento e quadros<br />
<strong>de</strong> controle. Os quadros <strong>de</strong> dados são utilizados para transportar dados e algumas<br />
15
informações <strong>de</strong> controle em seu cabeçalho. Os quadros <strong>de</strong> gerenciamento são usados,<br />
entre outras coisas, para sinalizar a presença <strong>de</strong> uma re<strong>de</strong> sem fio, iniciar e encerrar a<br />
associação <strong>de</strong> estações com o Ponto <strong>de</strong> Acesso ou AP (Access Point). Os quadros <strong>de</strong> controle,<br />
por sua vez, são usados principalmente para a reserva do canal <strong>de</strong> comunicação e<br />
para a confirmação do recebimento <strong>de</strong> alguns tipos <strong>de</strong> quadros.<br />
Em relação à proteção dos quadros <strong>de</strong> dados, os seguintes protocolos <strong>de</strong> segurança<br />
foram <strong>de</strong>finidos ao longo dos anos: o WEP (Wired Equivalent Privacy) [IEEE Standard<br />
802.11 1999], o WPA (Wi-Fi Protected Access) [Wi-Fi Alliance 2003] e o WPA2 [IEEE<br />
Standard 802.11i 2004]. Dentre os protocolos citados, o WEP é consi<strong>de</strong>rado ultrapassado<br />
dada a sua longa lista <strong>de</strong> vulnerabilida<strong>de</strong>s [Tews 2007]. Já a proteção aos quadros <strong>de</strong><br />
gerenciamento é especificada na emenda IEEE 802.11w [IEEE Standard 802.11w 2009],<br />
a qual complementa as especificações do WPA e do WPA2. Essa ementa foi ratificada<br />
somente uma década após o surgimento do padrão IEEE 802.11, o que permitiu uma<br />
ampla janela <strong>de</strong> tempo para o <strong>de</strong>senvolvimento <strong>de</strong> vários ataques efetivos aos quadros<br />
<strong>de</strong> gerenciamento. Exemplos incluem o pedido falsificado <strong>de</strong> <strong>de</strong>sassociação <strong>de</strong> clientes<br />
legítimos da re<strong>de</strong> e a captura <strong>de</strong> informações sensíveis sendo transportadas nesses quadros<br />
(e.g. dados sobre recursos <strong>de</strong> rádio, i<strong>de</strong>ntificadores baseados em localização e dados para<br />
execução <strong>de</strong> handoffs rápidos) [IEEE Standard 802.11k 2008] [IEEE Standard 802.11r<br />
2008] [IEEE Standard 802.11v 2011].<br />
A emenda IEEE 802.11w associada ao WPA2 resolve gran<strong>de</strong> parte das vulnerabilida<strong>de</strong>s<br />
conhecidas nas re<strong>de</strong>s IEEE 802.11. Contudo, ainda não existe um padrão<br />
IEEE que se proponha a proteger os quadros <strong>de</strong> controle <strong>de</strong>ssas re<strong>de</strong>s contra qualquer tipo<br />
<strong>de</strong> ataque. Também não há qualquer grupo <strong>de</strong> trabalho IEEE <strong>de</strong>senvolvendo emendas<br />
para a segurança <strong>de</strong>sses quadros. A ausência <strong>de</strong> mecanismos <strong>de</strong> segurança nos quadros<br />
<strong>de</strong> controle permite a qualquer estação maliciosa, pertencente ou não à re<strong>de</strong>, efetuar diversos<br />
ataques <strong>de</strong> negação <strong>de</strong> serviço ou DoS (Denial-of-Service). Exemplos incluem o<br />
bloqueio do uso do canal <strong>de</strong> comunicação por um período <strong>de</strong> tempo pré-<strong>de</strong>terminado, a<br />
confirmação falsa <strong>de</strong> recebimento <strong>de</strong> informações que não foram efetivamente recebidas<br />
e a solicitação falsificada <strong>de</strong> transmissão <strong>de</strong> informações armazenadas no AP que seriam<br />
<strong>de</strong>stinadas a estações que não estariam prontas para recebê-las, causando, na prática, o<br />
<strong>de</strong>scarte <strong>de</strong>ssas informações.<br />
Por causa do impacto dos vários ataques aos quadros <strong>de</strong> controle, diversas pesquisas<br />
vêm sendo realizadas com o intuito <strong>de</strong> prover mecanismos efetivos para a segurança<br />
<strong>de</strong>sses quadros [Myneni and Huang 2010], [Khan and Hasan 2008]. Este artigo propõe um<br />
mecanismo <strong>de</strong> segurança para a proteção dos quadros <strong>de</strong> controle <strong>de</strong> re<strong>de</strong>s IEEE 802.11.<br />
O mecanismo proposto se vale do uso <strong>de</strong> números <strong>de</strong> sequência e da geração <strong>de</strong> Códigos<br />
<strong>de</strong> Autenticação <strong>de</strong> Mensagem ou MACs (Message Authentication Co<strong>de</strong>s) a fim <strong>de</strong> evitar<br />
que estações maliciosas, não pertencentes à re<strong>de</strong>, tenham sucesso ao forjar, manipular<br />
ou reinjetar quadros <strong>de</strong> controle que levariam à negação <strong>de</strong> serviços. Além <strong>de</strong> proteger<br />
todos os quadros <strong>de</strong> controle indistintamente, o mecanismo proposto possui um maior<br />
grau <strong>de</strong> segurança e introduz, nesses quadros, um overhead significativamente menor em<br />
comparação aos trabalhos relacionados que também se propõem a proteger todos os quadros<br />
<strong>de</strong> controle.<br />
O restante <strong>de</strong>ste artigo está organizado da seguinte forma: a Seção 2 apresenta<br />
os quadros <strong>de</strong> controle do IEEE 802.11 e os ataques existentes contra eles. A Seção 3<br />
16
apresenta os trabalhos relacionados e como o trabalho proposto se diferencia <strong>de</strong> cada um<br />
<strong>de</strong>les. A Seção 4 apresenta o mecanismo proposto neste artigo para a proteção dos quadros<br />
<strong>de</strong> controle IEEE 802.11. A Seção 5 apresenta um estudo do overhead introduzido<br />
pelo mecanismo proposto no tráfego total <strong>de</strong> uma re<strong>de</strong> sem fio. Finalmente, a Seção 6<br />
apresenta as conclusões <strong>de</strong>ste trabalho.<br />
2. Quadros <strong>de</strong> Controle do IEEE 802.11<br />
Esta seção apresenta as funcionalida<strong>de</strong>s dos 8 tipos <strong>de</strong> quadros <strong>de</strong> controle <strong>de</strong>finidos pelo<br />
padrão IEEE 802.11 [IEEE Standard 802.11 2007]. Os diversos ataques contra tais quadros<br />
também são apresentados. É importante ressaltar que o foco <strong>de</strong>ste artigo está nos<br />
ataques <strong>de</strong> origem externa, ou seja, naqueles executados por entida<strong>de</strong>s maliciosas não<br />
pertencentes à re<strong>de</strong> sem fio.<br />
2.1. RTS (Request To Send) e CTS (Clear to Send)<br />
O mecanismo RTS/CTS é utilizado em re<strong>de</strong>s IEEE 802.11 para a redução <strong>de</strong> colisões no<br />
meio <strong>de</strong> comunicação. Um nó que <strong>de</strong>seja transmitir dados inicia um handshake com o<br />
<strong>de</strong>stinatário, enviando um quadro RTS. Ao receber o RTS, o <strong>de</strong>stinatário respon<strong>de</strong> com<br />
um quadro CTS. Qualquer outro nó da re<strong>de</strong>, ao escutar o RTS ou o CTS enviados, <strong>de</strong>ve<br />
postergar suas transmissões por um <strong>de</strong>terminado período <strong>de</strong> tempo. Tal período engloba<br />
o tempo necessário para a subsequente transmissão dos dados e recepção da confirmação<br />
<strong>de</strong> seu recebimento. Assim sendo, o mecanismo RTS/CTS permite a reserva do canal<br />
<strong>de</strong> comunicação para a troca <strong>de</strong> dados. Tipicamente, o uso do mecanismo RTS/CTS só<br />
ocorre quando o tamanho do quadro com os dados exce<strong>de</strong> um limiar pré-<strong>de</strong>finido que<br />
po<strong>de</strong> variar <strong>de</strong> 0 a 2347 bytes.<br />
O RTS possui 20 bytes <strong>de</strong> comprimento, sendo dividido em 5 campos: FC (Frame<br />
Control), Duração, En<strong>de</strong>reço 1, En<strong>de</strong>reço 2 e FCS (Frame Check Sequence). O campo<br />
FC possui 2 bytes. Ele permite i<strong>de</strong>ntificar o tipo <strong>de</strong> quadro e provê algumas informações<br />
<strong>de</strong> controle. O campo Duração possui 2 bytes e informa o tempo <strong>de</strong> reserva do canal.<br />
Seu valor máximo é <strong>de</strong> 32.767 µs [IEEE Standard 802.11 2007]. Os campos En<strong>de</strong>reço<br />
1 e 2 possuem 6 bytes cada e representam, respectivamente, o en<strong>de</strong>reço do receptor e do<br />
transmissor. O campo FCS possui 4 bytes e é preenchido com um CRC-32 para a <strong>de</strong>tecção<br />
<strong>de</strong> erros. O quadro CTS possui 4 dos 5 campos do quadro RTS. O campo ausente no CTS<br />
é o campo En<strong>de</strong>reço 2, tornando o comprimento do quadro igual a 14 bytes.<br />
Existem dois ataques conhecidos contra o mecanismo RTS/CTS [Myneni and Huang<br />
2010]: o ataque <strong>de</strong> replay e o ataque <strong>de</strong> injeção <strong>de</strong> RTS e CTS falsificados. No<br />
primeiro ataque, uma estação maliciosa escuta o canal para capturar quadros RTS ou CTS<br />
e reinjetá-los na re<strong>de</strong>. No segundo ataque, uma estação maliciosa cria quadros RTS ou<br />
CTS com um ou mais campos forjados e os envia à re<strong>de</strong>. Este último ataque po<strong>de</strong> ser<br />
potencializado se a estação maliciosa preencher o campo Duração <strong>de</strong>sses quadros com o<br />
valor máximo permitido.<br />
Ambos os ataques são efetivos porque o IEEE 802.11 não provê qualquer mecanismo<br />
<strong>de</strong> autenticação <strong>de</strong> quadros <strong>de</strong> controle, nem <strong>de</strong> i<strong>de</strong>ntificação <strong>de</strong> quadros <strong>de</strong> controle<br />
previamente transmitidos. Assim, as estações que escutam os quadros RTS e CTS usados<br />
nesses ataques executam as ações previstas pelo protocolo, bloqueando temporariamente<br />
suas transmissões e, portanto, sofrendo uma negação <strong>de</strong> serviço.<br />
17
2.2. ACK (Acknowledgement)<br />
Os quadros ACK são usados para confirmar o recebimento <strong>de</strong> alguns tipos <strong>de</strong> quadros.<br />
O ACK possui o mesmo formato e tamanho do CTS. Os ataques conhecidos aos quadros<br />
ACK são os seguintes: injeção <strong>de</strong> ACK falsificado e ataque <strong>de</strong> replay. Em [Chen<br />
and Muthukkumarasamy 2006], é mostrado como forjar ACKs para a manipulação do<br />
tempo <strong>de</strong> reserva do canal <strong>de</strong> comunicação. Os autores <strong>de</strong>mostram que os quadros ACK<br />
po<strong>de</strong>m ser utilizados <strong>de</strong> forma tão efetiva quanto os quadros RTS/CTS para a negação<br />
<strong>de</strong> serviços. Em [Rachedi and Benslimane 2009], é apresentado um ataque <strong>de</strong>nominado<br />
False Packet Validation. Nesse ataque, a entida<strong>de</strong> maliciosa força a ocorrência <strong>de</strong> uma<br />
colisão num receptor-alvo para, em seguida, enviar um ACK falsificado que confirma ao<br />
emissor a correta recepção das informações enviadas. Caso a colisão tenha sido efetuada<br />
com sucesso, o emissor, ao receber o ACK forjado, concluirá erroneamente que as<br />
informações transmitidas foram corretamente recebidas no receptor.<br />
2.3. BAR (Block Ack Request) e BA (Block Ack)<br />
Os quadros BAR e BA foram introduzidos pela emenda IEEE 802.11e [IEEE Standard<br />
802.11e 2005] e tiveram suas funcionalida<strong>de</strong>s estendidas pela especificação IEEE<br />
802.11n. Esses quadros são usados para permitir a confirmação <strong>de</strong> um bloco <strong>de</strong> quadros<br />
usando apenas um quadro <strong>de</strong> confimação. O quadro BAR é usado para se requisitar a<br />
confirmação <strong>de</strong> recepção <strong>de</strong> um bloco <strong>de</strong> quadros enquanto o quadro BA serve como resposta.<br />
O quadro BA po<strong>de</strong> ainda ser utilizado para a confirmação <strong>de</strong> recepção <strong>de</strong> um bloco<br />
<strong>de</strong> quadros sem a necessida<strong>de</strong> <strong>de</strong> uso do quadro BAR.<br />
O quadro BAR possui 24 bytes <strong>de</strong> comprimento e é formado por 7 campos: FC<br />
(Frame Control), Duração, En<strong>de</strong>reço 1, En<strong>de</strong>reço 2, BAR control, Block Ack Starting<br />
Sequence Control e FCS (Frame Check Sequence). O campo BAR control possui 2 bytes<br />
e é usado, entre outras coisas, para informar parâmetros <strong>de</strong> qualida<strong>de</strong> <strong>de</strong> serviço. O campo<br />
Block Ack Starting Sequence Control possui 2 bytes e inclui, entre outras informações, o<br />
número <strong>de</strong> sequência do primeiro quadro em um bloco. O campo Duração possui 2 bytes<br />
e informa um tempo maior ou igual ao necessário para a recepção do quadro BA a ser<br />
enviado como resposta. Os <strong>de</strong>mais campos possuem o mesmo tamanho e <strong>de</strong>scrição já<br />
apresentados para os quadros RTS.<br />
O quadro BA possui 152 bytes <strong>de</strong> comprimento e inclui 8 campos: FC (Frame<br />
Control), Duração, En<strong>de</strong>reço 1, En<strong>de</strong>reço 2, BA control, Block Ack Starting Sequence<br />
Control, Block Ack Bitmap e FCS (Frame Check Sequence). O campo BA control possui<br />
2 bytes e armazena informações <strong>de</strong> controle específicas do quadro. O campo Block Ack<br />
Starting Sequence Control, também <strong>de</strong> 2 bytes, é usado para informar a qual quadro BAR<br />
pertence a resposta. O campo Block Ack Bitmap possui 128 bytes e informa, através <strong>de</strong><br />
um mapa <strong>de</strong> bits, quais quadros <strong>de</strong> um bloco não foram recebidos. O campo Duração<br />
possui 2 bytes e a informação <strong>de</strong> tempo contida nele <strong>de</strong>pen<strong>de</strong> do quadro ser ou não uma<br />
resposta a um quadro BAR. Os <strong>de</strong>mais campos possuem tamanho e <strong>de</strong>scrição similares<br />
aos apresentados para o quadro RTS.<br />
O mecanismo <strong>de</strong> confirmação em bloco <strong>de</strong> quadros também po<strong>de</strong> ser explorado<br />
através da falsificação <strong>de</strong> informações em quadros BAR. Um estudo sobre o uso malicioso<br />
dos quadros BAR é apresentado em [Cam-Winget et al. 2007]. Os autores mostram<br />
que é possível manipular o número <strong>de</strong> sequência informado nos quadros BAR, causando<br />
18
o <strong>de</strong>scarte <strong>de</strong> qualquer quadro com número <strong>de</strong> sequência menor do que o informado.<br />
Um único quadro BAR manipulado po<strong>de</strong> causar uma negação <strong>de</strong> serviço na re<strong>de</strong> por 10<br />
segundos [Koenings et al. 2009].<br />
2.4. PS-Poll (Power Save Poll)<br />
Os APs são projetados para dar suporte a toda estação que esteja utilizando gerenciamento<br />
<strong>de</strong> energia em sua interface <strong>de</strong> comunicação. Nesse caso, a estação <strong>de</strong>sliga e liga sua<br />
interface <strong>de</strong> comunicação periodicamente para economizar energia. O AP <strong>de</strong>ve armazenar<br />
os quadros <strong>de</strong>stinados à estação até que a mesma esteja pronta para a recepção <strong>de</strong> quadros.<br />
Ao religar sua interface, a estação procura por beacons do AP que informam se existem<br />
quadros armazenados para ela. Caso haja, a estação <strong>de</strong>ve enviar um quadro <strong>de</strong> controle<br />
PS-Poll para recuperar os quadros armazenados pelo AP. A estação po<strong>de</strong> voltar a <strong>de</strong>sligar<br />
sua interface após recuperar todos os quadros armazenados ou após ouvir do AP algum<br />
beacon indicando que não há quadros armazenados para aquela estação.<br />
O quadro PS-Poll possui 20 bytes <strong>de</strong> comprimento e é formado por 5 campos: FC<br />
(Frame Control), AID (Association ID), En<strong>de</strong>reço 1, En<strong>de</strong>reço 2 e FCS (Frame Check<br />
Sequence. O campo AID representa um i<strong>de</strong>ntificador <strong>de</strong> associação da estação e possui<br />
2 bytes. Os <strong>de</strong>mais campos possuem tamanho e <strong>de</strong>scrição idênticos aos já apresentados<br />
para o RTS.<br />
Em [Qureshi et al. 2007], é mostrado como o quadro PS-Poll po<strong>de</strong> ser utilizado<br />
para que uma estação maliciosa assuma, perante ao AP, a i<strong>de</strong>ntida<strong>de</strong> <strong>de</strong> uma estação<br />
legítima para a qual o AP possua quadros armazenados. Ao receber o quadro falso, o<br />
AP enviará os quadros armazenados que seriam <strong>de</strong>stinados à estação legítima. Assim<br />
sendo, o ataque causa o “<strong>de</strong>scarte” <strong>de</strong> informações pertencentes a outra estação, efetivando<br />
uma negação <strong>de</strong> serviço. Mais uma vez, o ataque só é possível por causa da falta<br />
<strong>de</strong> autenticação dos quadros PS-Poll.<br />
2.5. CF-End (Contention Free End) e CF-End+CF-Ack (CF-End+Contention Free<br />
Ack)<br />
A PCF (Point Coordination Function) é uma forma opcional <strong>de</strong> acesso ao meio <strong>de</strong>finido<br />
no IEEE 802.11 e utilizada para a oferta, por parte do AP, <strong>de</strong> períodos livres <strong>de</strong> contenção<br />
às estações. Por ser um método opcional, poucos dispositivos o implementam. Quando<br />
um período livre <strong>de</strong> contenção termina, o AP transmite um quadro CF-End para liberar<br />
as estações das regras <strong>de</strong> operação do modo PCF e informá-las do início do serviço baseado<br />
em contenção sob o método DCF (Distributed Coordination Function). O quadro<br />
CF-End+CF-Ack combina duas funções, sendo utilizado pelo AP quando o mesmo precisa<br />
informar o término <strong>de</strong> um período livre <strong>de</strong> contenção e confirmar, ao mesmo tempo,<br />
quadros anteriormente recebidos.<br />
Ambos os quadros possuem 20 bytes <strong>de</strong> comprimento divididos em 5 campos: FC<br />
(Frame Control), Duração, En<strong>de</strong>reço 1, En<strong>de</strong>reço 2 e FCS (Frame Check Sequence). Em<br />
particular a esses quadros, o campo En<strong>de</strong>reço 1 <strong>de</strong>ve conter o en<strong>de</strong>reço <strong>de</strong> broadcast da<br />
re<strong>de</strong> e o campo Duração <strong>de</strong>ve conter o valor zero. O significado dos <strong>de</strong>mais campos e<br />
seus tamanhos são idênticos aos já <strong>de</strong>scritos para o RTS.<br />
Em [Malekza<strong>de</strong>h et al. 2010], é mostrado experimentalmente que a manipulação<br />
do campo Duração dos quadros CF-End e CF-End+CF-Ack permite lançar ataques que<br />
19
tornam a re<strong>de</strong> indisponível, bloqueando a comunicação <strong>de</strong> dispositivos legítimos. Os efeitos<br />
são idênticos aos obtidos com ataques similares a outros tipos <strong>de</strong> quadros <strong>de</strong> controle.<br />
3. Trabalhos Relacionados<br />
Em [Bellardo and Savage 2003], são apresentadas propostas para se minimizar os efeitos<br />
<strong>de</strong> ataques ao mecanismo RTS/CTS. Uma das propostas consiste na limitação do valor<br />
máximo informado no campo Duração dos quadros <strong>de</strong> controle. Outra proposta consiste<br />
na observação da sequência <strong>de</strong> transmissões a partir <strong>de</strong> um RTS. A ausência <strong>de</strong> dados<br />
transmitidos após o RTS é consi<strong>de</strong>rada uma indicação <strong>de</strong> que a re<strong>de</strong> está sendo atacada.<br />
Nesse caso, as estações voltariam imediatamente a concorrer pelo uso do canal. Em [Ray<br />
and Starobinski 2007], a mesma i<strong>de</strong>ia <strong>de</strong> observação da sequência <strong>de</strong> transmissões a partir<br />
<strong>de</strong> um RTS é utilizada para se propor técnicas não-criptográficas <strong>de</strong> mitigação <strong>de</strong> ataques<br />
ao mecanismo RTS/CTS, mas no contexto <strong>de</strong> re<strong>de</strong>s sem fio multihop. Em [Qureshi et al.<br />
2007], é apresentada uma proposta para se proteger apenas os quadros PS-Poll contra<br />
ataques <strong>de</strong> falsificação e replay. A medida proposta se concentra no uso <strong>de</strong> artifícios<br />
criptográficos exclusivamente sobre o campo Association ID.<br />
A primeira proposta <strong>de</strong> proteção criptográfica <strong>de</strong> todos os quadros <strong>de</strong> controle<br />
do IEEE 802.11 é apresentada em [Khan and Hasan 2008]. Nessa proposta, o campo<br />
FCS dos quadros <strong>de</strong> controle <strong>de</strong>ixa <strong>de</strong> ser preenchido com um CRC-32 para conter um<br />
código <strong>de</strong> autenticação <strong>de</strong> 16 bits seguido <strong>de</strong> um CRC-16. Isso objetiva a manutenção do<br />
tamanho original dos quadros <strong>de</strong> controle. O código <strong>de</strong> autenticação é gerado por uma<br />
versão modificada <strong>de</strong> uma PRF (Pseudo Random Function) do WPA2 para produzir uma<br />
saída <strong>de</strong> 16 bits. Contudo, o uso <strong>de</strong> apenas 16 bits para o código <strong>de</strong> autenticação torna<br />
a proteção provida pelo mecanismo fraca [Whiting et al. 2003]. As PRFs usadas em<br />
especificações do IEEE 802.11, por exemplo, têm saída <strong>de</strong> pelo menos 128 bits, po<strong>de</strong>ndo<br />
alcançar 512 bits em caso <strong>de</strong> necessida<strong>de</strong> <strong>de</strong> aumento do nível <strong>de</strong> segurança. A proposta<br />
apresentada por [Khan and Hasan 2008] também não traz mecanismos contra ataques <strong>de</strong><br />
replay.<br />
Outra proposta que visa proteger <strong>de</strong> forma criptográfica todos os quadros <strong>de</strong> controle<br />
é apresentada em [Myneni and Huang 2010]. Para i<strong>de</strong>ntificar ataques <strong>de</strong> replay e<br />
po<strong>de</strong>r torná-los sem efeito, os autores se valem do uso <strong>de</strong> um número <strong>de</strong> sequência <strong>de</strong> 32<br />
bits em todos os quadros <strong>de</strong> controle. O framework IAPP (Inter-Access Point Protocol) ou<br />
IEEE 802.11F é utilizado para a distribuição e gerenciamento da chave criptográfica a ser<br />
utilizada. O IEEE 802.11F era uma extensão opcional do IEEE 802.11 para o provimento<br />
<strong>de</strong> serviços <strong>de</strong> comunicação entre APs compondo um ESS (Exten<strong>de</strong>d Service Set). O protocolo<br />
permite a troca <strong>de</strong> contextos <strong>de</strong> segurança entre APs durante períodos <strong>de</strong> handoff<br />
das estações. Em 2006, o IEEE retirou a extensão 802.11F do padrão 802.11.<br />
Ainda em relação ao trabalho apresentado em [Myneni and Huang 2010], o<br />
mesmo também se propõe a proteger os quadros <strong>de</strong> controle por meio <strong>de</strong> um código <strong>de</strong><br />
autenticação <strong>de</strong> mensagem (MAC). O MAC possui 160 bits e é gerado através do HMAC-<br />
SHA1. Como o MAC po<strong>de</strong> ser usado para verificação <strong>de</strong> integrida<strong>de</strong>, o campo FCS dos<br />
quadros <strong>de</strong> controle é eliminado. O uso do MAC <strong>de</strong> 160 bits dificulta a falsificação dos<br />
quadros <strong>de</strong> controle em relação à proposta em [Khan and Hasan 2008], porém introduz<br />
neles um overhead significativo. Além disso, há estudos que mostram fraquezas do<br />
HMAC-SHA1 [Kim et al. 2006], [Rechberger and Rijmen 2008]. Em particular à SHA-<br />
20
1, a mesma apresenta diversas vulnerabilida<strong>de</strong>s importantes [Cannière and Rechberger<br />
2006], [Manuel 2008]. Um dos ataques mais rápidos contra a versão completa da SHA-<br />
1 possui complexida<strong>de</strong> <strong>de</strong> tempo O(2 63 ) ao passo que a complexida<strong>de</strong> <strong>de</strong> tempo <strong>de</strong> um<br />
ataque <strong>de</strong> força bruta é O(2 80 ) [Bellovin and Rescorla 2005].<br />
Dentre os trabalhos relacionados, apenas [Myneni and Huang 2010] e [Khan and<br />
Hasan 2008] se propõem a proteger todos os quadros <strong>de</strong> controle, sendo que o primeiro<br />
apresenta uma proposta mais segura e completa, embora incorra em um overhead significativo.<br />
Neste artigo, é proposto um mecanismo <strong>de</strong> proteção <strong>de</strong> quadros <strong>de</strong> controle contra<br />
ataques que levariam à negação <strong>de</strong> serviços. O objetivo principal é, em comparação à proposta<br />
em [Myneni and Huang 2010], prover um maior grau <strong>de</strong> segurança com um menor<br />
overhead, fazendo uso dos mecanismos <strong>de</strong> segurança mais recentes presentes no IEEE<br />
802.11. Além disso, a proposta faz uso <strong>de</strong> chave criptográfica já empregada no protocolo<br />
<strong>de</strong> segurança WPA2, evitando a necessida<strong>de</strong> <strong>de</strong> se usar o IEEE 802.11F dado que o<br />
mesmo foi removido do padrão IEEE 802.11.<br />
4. O Mecanismo <strong>de</strong> Proteção Proposto<br />
O mecanismo aqui proposto também se vale do uso <strong>de</strong> números <strong>de</strong> sequência e da geração<br />
<strong>de</strong> códigos <strong>de</strong> autenticação <strong>de</strong> mensagens para proteger os quadros <strong>de</strong> controle. Contudo,<br />
a geração <strong>de</strong>sses códigos emprega partes do protocolo CCMP (Counter Mo<strong>de</strong> with<br />
Cipher Block Chaining Message Authentication Co<strong>de</strong> Protocol) já utilizado pelo WPA2.<br />
O CCMP usa o modo <strong>de</strong> operação do AES (Advanced Encryption Standard) conhecido<br />
por CCM, o qual combina o CTR (Counter Mo<strong>de</strong>) com o CBC-MAC (Cipher Block Chaining<br />
Message Authentication Co<strong>de</strong>). O CTR é utilizado para prover confidência enquanto<br />
o CBC-MAC é utilizado para prover autenticação e integrida<strong>de</strong>. A seguir, a proposta é<br />
<strong>de</strong>talhada.<br />
4.1. Novos Quadros <strong>de</strong> Controle<br />
O mecanismo proposto neste artigo introduz 8 novos tipos <strong>de</strong> quadros <strong>de</strong> controle no<br />
padrão IEEE 802.11. Esses quadros <strong>de</strong> controle são versões seguras dos quadros <strong>de</strong><br />
controle originais. O padrão IEEE 802.11 utiliza 4 bits para a i<strong>de</strong>ntificação <strong>de</strong> tipos<br />
<strong>de</strong> quadros <strong>de</strong> controle. Como já existem 8 tipos <strong>de</strong> quadros <strong>de</strong> controle <strong>de</strong>finidos, a<br />
especificação consegue acomodar os novos quadros <strong>de</strong>finidos pelo mecanismo proposto.<br />
A versão segura dos quadros <strong>de</strong> controle se diferencia dos quadros <strong>de</strong> controle originais<br />
apenas por não possuir o campo FCS e, em seu lugar, haver o campo NS (Número <strong>de</strong><br />
Sequência) <strong>de</strong> 4 bytes seguido do campo MAC (Message Authentication Co<strong>de</strong>) <strong>de</strong> 8 bytes.<br />
A Figura 1 apresenta, como exemplo, o ACK atual do padrão IEEE 802.11 e sua<br />
versão a ser utilizada no mecanismo <strong>de</strong> segurança proposto.<br />
Octetos: 2 2 6 4<br />
Octetos: 2 2 6<br />
4 8<br />
Frame<br />
Control<br />
Duração<br />
RA<br />
FCS<br />
Frame<br />
Control<br />
Duração<br />
RA<br />
NS<br />
MAC<br />
Cabeçalho MAC<br />
(a) ACK no padrão IEEE 802.11.<br />
Cabeçalho MAC<br />
(b) Versão segura do ACK no mecanismo proposto.<br />
Figura 1. Formato dos quadros <strong>de</strong> controle ACK.<br />
21
O campo MAC permitirá, ao nó receptor, verificar a autenticida<strong>de</strong> e a integrida<strong>de</strong><br />
do quadro <strong>de</strong> controle recebido. Como o campo MAC permitirá a <strong>de</strong>tecção <strong>de</strong> mudanças<br />
no quadro <strong>de</strong> controle, não há necessida<strong>de</strong> <strong>de</strong> se manter o campo FCS original para a<br />
<strong>de</strong>tecção <strong>de</strong> erros. O campo NS carregará a informação do número <strong>de</strong> sequência do quadro.<br />
Assim, cada nó da re<strong>de</strong> <strong>de</strong>ve manter um contador <strong>de</strong> 32 bits, o qual <strong>de</strong>verá ser<br />
incrementado <strong>de</strong> 1 unida<strong>de</strong> a cada novo quadro <strong>de</strong> controle. O campo NS <strong>de</strong>verá ser preenchido<br />
com o valor atual <strong>de</strong>sse contador e nunca po<strong>de</strong>rá ser repetido durante a utilização<br />
da mesma chave <strong>de</strong> segurança utilizada no cálculo do MAC.<br />
4.2. Cálculo do Valor do Campo MAC<br />
O CBC-MAC [Whiting et al. 2003] consi<strong>de</strong>ra uma mensagem B, a ser autenticada, dividida<br />
em uma sequência <strong>de</strong> blocos B 0 ,B 1 ,B 2 ...B n , on<strong>de</strong> n+1 é o número total <strong>de</strong> blocos<br />
da mensagem. O CBC-MAC também <strong>de</strong>fine E() como sendo a função <strong>de</strong> criptografia por<br />
blocos a ser utilizada, K como sendo a chave criptográfica e T como sendo o código <strong>de</strong><br />
autenticação. O cálculo <strong>de</strong> T é feito <strong>de</strong> acordo com o Algoritmo 4.1. Inicialmente, B 0 é<br />
criptografado e o resultado é armazenado em X 1 . Em seguida, é realizada um XOR entre<br />
X 1 e o próximo bloco B 1 . O resultado é armazenado em X 2 . O processo se repete para<br />
cada bloco seguinte até a obtenção <strong>de</strong> X (n+1) , sendo este último o código <strong>de</strong> autenticação<br />
e o qual po<strong>de</strong> ser truncado para os M primeiros bytes se necessário.<br />
✓<br />
Algoritmo 4.1: T (K,B,n,M)<br />
X 1 ← E(K,B 0 )<br />
para i = 1 até n faça<br />
X (i+1) ← E(K,X i ⊕ B i )<br />
T ← M primeiros bytes <strong>de</strong> X (n+1)<br />
✏<br />
✒<br />
✑<br />
Em particular, a mensagem a ser autenticada precisa ter o primeiro bloco B 0 formatado<br />
como mostra a Tabela 1. Nessa tabela, l(m) é o número <strong>de</strong> bytes da mensagem<br />
m, on<strong>de</strong> 0 ≤ l(m) ≤ 2 (8L) . O Nonce é um valor único que nunca <strong>de</strong>verá ser repetido com<br />
o uso <strong>de</strong> uma mesma chave criptográfica. As Flags ocupam 1 byte e também possuem<br />
formatação pré-<strong>de</strong>finida conforme <strong>de</strong>scrição a seguir: o primeiro bit <strong>de</strong> or<strong>de</strong>m mais alta<br />
é reservado para uso futuro e <strong>de</strong>ve ser sempre zero. O segundo bit <strong>de</strong> or<strong>de</strong>m mais alta,<br />
Adata, indica a utilização da técnica <strong>de</strong> autenticação <strong>de</strong> dados adicionais ou AAD quando<br />
igual a 1. Caso a técnica não seja utilizada, Adata <strong>de</strong>ve ser zero. Os 3 bits seguintes<br />
codificam M contendo o valor (M − 2)/2. Assim, M só po<strong>de</strong> assumir valores pares <strong>de</strong> 0<br />
a 16. Os 3 bits <strong>de</strong> or<strong>de</strong>m mais baixa codificam L contendo o valor L − 1. Valores válidos<br />
para L estão no intervalo <strong>de</strong> 2 a 8.<br />
Byte Nº 0 1 . . .(15 − L) (16 − L)...15<br />
Conteúdo Flags Nonce l(m)<br />
Tabela 1. Composição do Bloco B 0 .<br />
O CBC-MAC foi projetado para uso com algoritmos <strong>de</strong> cifra por blocos <strong>de</strong> 128<br />
bits, sendo o tamanho da chave <strong>de</strong>pen<strong>de</strong>nte do algoritmo <strong>de</strong> cifra por bloco utilizado. Os<br />
22
locos com menos <strong>de</strong> 128 bits <strong>de</strong>vem ser completados com zeros. No caso do CCMP<br />
<strong>de</strong>finido pelo WPA2, é utilizado o AES com operações com chaves e blocos <strong>de</strong> 128 bits.<br />
Assim sendo, toda a operação para o cálculo do código <strong>de</strong> autenticação com o mecanismo<br />
proposto segue esse mesmo princípio. O cômputo do valor do campo MAC é feito através<br />
do uso da implementação do CBC-MAC no CCMP. A Figura 2 ilustra esse processo. O<br />
bloco inicial a ser criptografado possui 128 bits e é representado pelo IV (Initialization<br />
Vector). Sua formação é explicada como segue:<br />
IV<br />
Nonce<br />
Flag<br />
Priority<br />
Octet<br />
A2(TA)<br />
NS<br />
l(m)<br />
64<br />
bits<br />
64<br />
bits<br />
AES(K)<br />
AES(K)<br />
AES(K)<br />
AES(K)<br />
Cálculo<br />
MAC<br />
...<br />
Quadro<br />
Texto em Claro<br />
Cabeçalho do Quadro<br />
... 128 bits<br />
NS<br />
MAC<br />
Figura 2. Geração do valor do campo MAC.<br />
• Flag - possui 1 byte. Contém as informações previstas para o campo Flags <strong>de</strong>finido<br />
em [Whiting et al. 2003] e possui valor igual a (00011011) b . Ou seja, não é<br />
utilizada a técnica AAD, M = 8 e L = 4;<br />
• Nonce - possui 11 bytes e é formado pela concatenação do Priority Octet (1 byte)<br />
com os 48 bits do en<strong>de</strong>reço do transmissor ou A2(TA) e o número <strong>de</strong> sequência<br />
NS <strong>de</strong> 32 bits do quadro <strong>de</strong> controle. Esse tipo <strong>de</strong> construção respeita a formação<br />
<strong>de</strong> nonces usada pelo CCM no WPA2 e é usada aqui para fins <strong>de</strong> compatibilida<strong>de</strong>.<br />
O CCM no WPA2 especifica que o campo Priority Octet <strong>de</strong>ve ser preenchido<br />
com zeros quando não houver o campo <strong>de</strong> controle <strong>de</strong> QoS (Quality of Service)<br />
no cabeçalho do quadro como é o caso dos quadros <strong>de</strong> controle. A forma <strong>de</strong><br />
construção do nonce permite que os nós da re<strong>de</strong> usem sempre nonces distintos<br />
entre eles.<br />
• l(m) - possui 4 bytes e segue a <strong>de</strong>finição em [Whiting et al. 2003] para informar<br />
o tamanho da mensagem a ser autenticada.<br />
O processo <strong>de</strong> construção do MAC segue o algoritmo 4.1 tendo o IV como bloco<br />
inicial B 0 . Os próximos blocos são obtidos dividindo-se o quadro <strong>de</strong> controle em pedaços<br />
<strong>de</strong> 128 bits mas com a exclusão dos campos NS e MAC. No caso do ACK e do CTS,<br />
haverá apenas 80 bits <strong>de</strong> informação que <strong>de</strong>vem ser concatenados com 48 bits iguais a<br />
zero para compor o próximo e último bloco B 1 . No caso dos quadros RTS, CF-End e<br />
CF-End+Cf-Ack, o próximo e último bloco B 1 já conterá exatos 128 bits. O quadro BAR<br />
gerará mais dois blocos (B 1 e B 2 ), sendo que o último <strong>de</strong>verá ser completado com 96<br />
bits iguais a zero. O quadro BA gerará mais <strong>de</strong>z blocos (B 1 ...B 10 ), sendo que o último<br />
também <strong>de</strong>verá ser completado com 96 bits iguais a zero.<br />
Para que um nó da re<strong>de</strong> possa construir o MAC e permitir a qualquer outro verificar<br />
a autenticida<strong>de</strong> e a integrida<strong>de</strong> do quadro, é necessário que uma chave K em comum<br />
23
seja empregada. A chave criptográfica comum utilizada no WPA2 é a GEK (Group encryption<br />
Key) que faz parte da chave hieráquica GTK (Group Temporal Key). A GEK é<br />
a chave usada para a criptografia <strong>de</strong> tráfego <strong>de</strong>stinado a múltiplos nós da re<strong>de</strong>. A GTK<br />
é distribuída durante o processo <strong>de</strong> 4-Way Handshake e renovada periodicamente usando<br />
o protocolo GKH (Group Key Handshake). Adicionalmente aos critérios <strong>de</strong> renovação<br />
da GTK <strong>de</strong>finidos pelo WPA2, o uso do mecanismo proposto requer a renovação <strong>de</strong>ssa<br />
chave para evitar que um nó utilize um mesmo número <strong>de</strong> sequência com uma mesma<br />
GTK. Assim, o nó que esgotar seus números <strong>de</strong> sequência <strong>de</strong>ve solicitar a renovação da<br />
GTK da re<strong>de</strong> através do uso do protocolo GKH (Group Key Handshake).<br />
Ao receber um quadro <strong>de</strong> controle do mecanismo proposto, o nó da re<strong>de</strong> sem<br />
fio <strong>de</strong>ve recalcular o MAC e comparar o valor obtido com aquele informado no campo<br />
MAC. Para isso, ela precisará da chave K e do IV . A chave K é conhecida por todas<br />
as estações da re<strong>de</strong>. O IV possui duas partes: uma parte com valor fixo e pré-<strong>de</strong>finido<br />
(Flag, Priority Octet e l(m)), o qual é conhecido pelas estações e uma parte com valor<br />
variável composta pelo NS e pelo en<strong>de</strong>reço do transmissor. O NS que é transportado<br />
em claro pelo quadro. O en<strong>de</strong>reço do transmissor está presente em todos os quadros <strong>de</strong><br />
controle, exceto nos quadros CTS e ACK. Para os quadros CTS e ACK, o padrão IEEE<br />
802.11 prevê que o receptor obtenha o en<strong>de</strong>reço do transmissor a partir dos respectivos<br />
RTS ou dos respectivos quadros sendo confirmados <strong>de</strong> acordo com o caso. Ao recalcular o<br />
MAC, caso o valor obtido seja diferente daquele informado no campo MAC, a mensagem<br />
foi alterada e <strong>de</strong>ve ser <strong>de</strong>sconsi<strong>de</strong>rada. Caso o valor do MAC recalculado seja igual ao<br />
informado no campo MAC do quadro recebido, o nó <strong>de</strong>ve verificar se não é um quadro<br />
repetido usando como base o número <strong>de</strong> sequência esperado. Caso o quadro não seja uma<br />
repetição, o nó receptor <strong>de</strong>verá consi<strong>de</strong>rar a mensagem e a origem da mesma autenticadas.<br />
4.3. Segurança<br />
A segurança do mecanismo proposto está intimamente ligada à segurança do WPA2. Em<br />
re<strong>de</strong>s IEEE 802.11 protegidas pelo WPA2, é possível encontrar a chave GTK através<br />
<strong>de</strong> um ataque <strong>de</strong> dicionário quando a re<strong>de</strong> usa o método <strong>de</strong> autenticação pessoal em<br />
conjunto com uma passphrase. Contudo, esse ataque só é praticável se a passphrase<br />
possuir menos <strong>de</strong> 20 caracteres [Fogie 2005]. Essa vulnerabilida<strong>de</strong> é consi<strong>de</strong>rada do<br />
usuário/administrador e não do protocolo <strong>de</strong> segurança. Em [Rogaway 2011], é apresentado<br />
um estudo que mostra que o CCM apresenta proprieda<strong>de</strong>s <strong>de</strong> segurança suficientemente<br />
a<strong>de</strong>quadas. O estudo também mostra que as principais críticas ao CCM estão<br />
ligadas à sua eficiência <strong>de</strong> execução. Em relação à segurança do AES, o ataque mais<br />
rápido <strong>de</strong> recuperação <strong>de</strong> chave contra sua versão completa <strong>de</strong> 128 bits possui complexida<strong>de</strong><br />
<strong>de</strong> tempo O(2 126,1 ) enquanto a complexida<strong>de</strong> <strong>de</strong> tempo <strong>de</strong> um ataque <strong>de</strong> força bruta<br />
é O(2 128 ) [Bogdanov et al. 2011].<br />
4.4. Resumo Comparativo<br />
A Tabela 2 apresenta um resumo da proteção oferecida pelo mecanismo proposto e pelos<br />
trabalhos relacionados para cada tipo <strong>de</strong> quadro <strong>de</strong> controle. A existência <strong>de</strong> proteção<br />
contra forja e manipulação do quadro é indicada por X. A existência <strong>de</strong> proteção contra<br />
ataques <strong>de</strong> replay é indicada por 0.<br />
24
RTS CTS ACK BA BAR PS-<br />
Poll<br />
CF-<br />
End<br />
CF-End +<br />
CF-Ack<br />
[Bellardo and Savage 2003] X X X<br />
[Qureshi et al. 2007]<br />
X<br />
[Ray and Starobinski 2007] X<br />
[Khan and Hasan 2008] X X X X X X X X<br />
[Rachedi and Benslimane 2009] X X X<br />
[Myneni and Huang 2010] X/0 X/0 X/0 X/0 X/0 X/0 X/0 X/0<br />
Proposta neste artigo X/0 X/0 X/0 X/0 X/0 X/0 X/0 X/0<br />
Tabela 2. Comparativo da proteção oferecida pelas diversas propostas.<br />
5. Estudo <strong>de</strong> Caso<br />
Esta seção estuda o impacto do mecanismo proposto neste artigo e em [Myneni and Huang<br />
2010] no tráfego global <strong>de</strong> uma re<strong>de</strong> sem fio. Para esse estudo, foram capturados quadros<br />
ao longo <strong>de</strong> 1 hora na re<strong>de</strong> sem fio do Centro <strong>de</strong> Informática da UFPE, gerando um<br />
arquivo trace com aproximadamente 1.500.000 quadros. Todos os quadros capturados<br />
eram provenientes <strong>de</strong> um único AP escolhido ou direcionados a ele.<br />
A Figura 3(a) apresenta a quantida<strong>de</strong> capturada dos 3 tipos <strong>de</strong> quadros. Note<br />
que há uma predominância dos quadros <strong>de</strong> controle. A Figura 3(b) <strong>de</strong>talha os tipos <strong>de</strong><br />
quadros <strong>de</strong> controle capturados. Em particular, observa-se que foram capturados quadros<br />
<strong>de</strong> controle <strong>de</strong> todos os tipos, exceto o quadro CF-End+CF-Ack.<br />
Quantida<strong>de</strong><br />
1e+07<br />
1e+06<br />
100000<br />
10000<br />
1000<br />
100<br />
Gereciamento<br />
Controle<br />
Dados<br />
Quantida<strong>de</strong><br />
1e+07<br />
1e+06<br />
100000<br />
10000<br />
1000<br />
100<br />
Gereciamento<br />
Dados<br />
Ack<br />
CTS<br />
RTS<br />
PS-Poll<br />
CF-End<br />
BA<br />
BAR<br />
10<br />
10<br />
1<br />
1<br />
0.1<br />
Quadros<br />
0.1<br />
Quadros<br />
(a)<br />
(b)<br />
Figura 3. Distribuição da frequência dos quadros.<br />
A partir do trace obtido, foram acrescentados aos quadros <strong>de</strong> controle o overhead<br />
do mecanismo proposto e da proposta em [Myneni and Huang 2010] para fins <strong>de</strong><br />
comparação. A i<strong>de</strong>ia é simular o mesmo tráfego <strong>de</strong> quadros sob esses dois mecanismos<br />
<strong>de</strong> segurança. A Figura 4(a) apresenta o número cumulativo <strong>de</strong> bytes transferidos<br />
em função da quantida<strong>de</strong> <strong>de</strong> quadros. Note que o mecanismo proposto possui um menor<br />
overhead cumulativo do que a proposta em [Myneni and Huang 2010].<br />
A Figura 4(b) apresenta o overhead normalizado do tráfego consi<strong>de</strong>rando as duas<br />
propostas avaliadas. Note que até aproximadamente os 300.000 primeiros quadros capturados,<br />
o mecanismo proposto têm um impacto <strong>de</strong> próximo <strong>de</strong> 57% enquanto a proposta do<br />
Myneni tem um impacto <strong>de</strong> quase 143%. A medida que o volume <strong>de</strong> quadros aumenta,<br />
25
9e+07<br />
8e+07<br />
7e+07<br />
Padrao<br />
Myneni<br />
Proposta<br />
1.8<br />
1.6<br />
1.4<br />
Proposta<br />
Myneni<br />
6e+07<br />
1.2<br />
Bytes<br />
5e+07<br />
4e+07<br />
3e+07<br />
Overhead<br />
1<br />
0.8<br />
0.6<br />
2e+07<br />
0.4<br />
1e+07<br />
0.2<br />
0<br />
0 350000 700000 1.05e+06 1.4e+06<br />
Quadros Capturados<br />
0<br />
0 350000 700000 1.05e+06 1.4e+06<br />
Quadros Capturados<br />
(a) Bytes usados para transmitir a mesma<br />
informação útil.<br />
(b) Overhead normalizado em relação ao formato<br />
padrão dos quadros.<br />
Figura 4. Comparação entre propostas.<br />
observa-se que o impacto do mecanismo proposto ten<strong>de</strong> à 20% enquanto o impacto do<br />
mecanismo proposto por Myneni ten<strong>de</strong> à 40%.<br />
6. Conclusões<br />
Este artigo apresentou um mecanismo <strong>de</strong> proteção <strong>de</strong> quadros <strong>de</strong> controle contra ataques<br />
<strong>de</strong> negação <strong>de</strong> serviço. O mecanismo foi construído <strong>de</strong> forma a manter a compatibilida<strong>de</strong><br />
com o padrão IEEE 802.11. O objetivo principal da proposta, em comparação à proposta<br />
em [Myneni and Huang 2010], foi o <strong>de</strong> prover um maior grau <strong>de</strong> segurança com um menor<br />
overhead, fazendo uso dos mecanismos <strong>de</strong> segurança mais recentes presentes no IEEE<br />
802.11. Adicionalmente, a proposta fez uso da chave <strong>de</strong> grupo já empregada no protocolo<br />
<strong>de</strong> segurança WPA2, evitando a necessida<strong>de</strong> <strong>de</strong> se utilizar um mecanismo <strong>de</strong> gerenciamento<br />
e distribuição <strong>de</strong> chaves abandonado pelo IEEE. Para dar proteção aos quadros<br />
<strong>de</strong> controle contra os ataques estudados, o mecanismo proposto se utilizou <strong>de</strong> números<br />
<strong>de</strong> sequência e <strong>de</strong> códigos <strong>de</strong> autenticação <strong>de</strong> mensagens obtidos através do emprego do<br />
CBC-MAC do CCMP. O overhead introduzido com o uso do mecanismo proposto é, por<br />
quadro <strong>de</strong> controle, 2,5 vezes menor do que aquele introduzido pela proposta <strong>de</strong> Myneni.<br />
Um estudo <strong>de</strong> caso enfatizou que o mecanismo proposto produziu um impacto significativamente<br />
menor no tráfego global da re<strong>de</strong> do que aquele produzido pela proposta <strong>de</strong><br />
Myneni. Como trabalho futuro, será realizado um estudo da vazão da re<strong>de</strong> ao se utilizar o<br />
mecanismo proposto.<br />
Referências<br />
Bellardo, J. and Savage, S. (2003). 802.11 Denial-of-Service Attacks: Real Vulnerabilities<br />
and Practical Solutions. In Proc. of the 12th USENIX Security Symposium (SSYM),<br />
pages 15–28, Washington, DC, USA.<br />
Bellovin, S. and Rescorla, E. (2005). Deploying a New Hash Algorithm. Technical report.<br />
Bogdanov, A., Khovratovich, D., and Rechberger, C. (2011). Biclique Cryptanalysis of<br />
the Full AES. In Proc. of the 17th Annual International Conference on the Theory and<br />
Application of Cryptology and Information Security (ASIACRYPT), Seoul, Korea, (To<br />
appear).<br />
26
Cam-Winget, N., Smith, D., and Walker, J. (2007). IEEE 802.11-07/2163r0 - A-MPDU<br />
Security Issues. Technical report.<br />
Cannière, C. D. and Rechberger, C. (2006). Finding SHA-1 Characteristics: General<br />
Results and Applications. In Lecture Notes in Computer Science - ADVANCES IN<br />
CRYPTOLOGY (ASIACRYPT), volume 4284, pages 1–20.<br />
Chen, B. and Muthukkumarasamy, V. (2006). Denial of Service Attacks Against 802.11<br />
DCF Abstract.<br />
Fogie, S. (2005). Cracking Wi-Fi Protected Access (WPA), Part 2. http://www.<br />
fermentas.com/techinfo/nucleicacids/maplambda.htm.<br />
IEEE Standard 802.11 (1999). IEEE Standards for Information technology - Telecommunications<br />
and information exchange between systems - Local and metropolitan area<br />
networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />
(MAC) and Physical Layer (PHY) Specifications.<br />
IEEE Standard 802.11 (2007). IEEE Standards for Information technology - Telecommunications<br />
and information exchange between systems - Local and metropolitan area<br />
networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />
(MAC) and Physical Layer (PHY) Specifications.<br />
IEEE Standard 802.11e (2005). IEEE Standards for Information technology - Telecommunications<br />
and information exchange between systems - Local and metropolitan area<br />
networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />
(MAC) and Physical Layer (PHY) Specifications - Amendment 8: Medium Access<br />
Control (MAC) Quality of Service Enhancements.<br />
IEEE Standard 802.11i (2004). IEEE Standards for Information technology - Telecommunications<br />
and information exchange between systems - Local and metropolitan area<br />
networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />
(MAC) and Physical Layer (PHY) Specifications - Amendment 6: Medium Access<br />
Control (MAC) Security Enhancements Interpretation.<br />
IEEE Standard 802.11k (2008). IEEE Standards for Information technology - Telecommunications<br />
and information exchange between systems - Local and metropolitan area<br />
networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />
(MAC) and Physical Layer (PHY) Specifications - Amendment 1: Radio Resource<br />
Measurement of Wireless LANs.<br />
IEEE Standard 802.11r (2008). IEEE Standards for Information technology - Telecommunications<br />
and information exchange between systems - Local and metropolitan area<br />
networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />
(MAC) and Physical Layer (PHY) Specifications - Amendment 2: Fast Basic Service<br />
Set (bss).<br />
IEEE Standard 802.11v (2011). IEEE Standards for Information technology - Telecommunications<br />
and information exchange between systems - Local and metropolitan area<br />
networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />
(MAC) and Physical Layer (PHY) Specifications - Amendment 8: IEEE 802.11 Wireless<br />
Network Management.<br />
27
IEEE Standard 802.11w (2009). IEEE Standards for Information technology - Telecommunications<br />
and information exchange between systems - Local and metropolitan area<br />
networks - Specific requirements - Part 11: Wireless LAN Medium Access Control<br />
(MAC) and Physical Layer (PHY) Specifications - Amendment 4: Protected Management<br />
Frames.<br />
Khan, M. and Hasan, A. (2008). Pseudo random number based authentication to counter<br />
<strong>de</strong>nial of service attacks on 802.11. In Proc. of 5th IFIP International Conference on<br />
Wireless and Optical Communications Networks (WOCN), pages 1–5.<br />
Kim, J., Biryukov, A., Preneel, B., and Hong, S. (2006). On the Security of HMAC<br />
and NMAC Based on HAVAL, MD4, MD5, SHA-0, and SHA-1. Designs, Co<strong>de</strong>s<br />
Cryptography, 4116:242–256.<br />
Koenings, B., Schaub, F., Kargl, F., and Dietzel, S. (2009). Channel Switch and Quiet<br />
attack: New DoS Attacks Exploiting the 802.11 Standard. In Proc. of the 34th IEEE<br />
Conference on Local Computer Networks (LCN), Zurich, Switzerland.<br />
Malekza<strong>de</strong>h, M., Ghani, A. A. A., and Subramaniam, S. (2010). Design of Cyberwar<br />
Laboratory Exercises to Implement Common Security Attacks against IEEE 802.11<br />
Wireless Networks. J. Comp. Sys., Netw., and Comm., pages 5:1–5:15.<br />
Manuel, S. (2008). Classification and Generation of Disturbance Vectors for Collision<br />
Attacks against SHA-1. Cryptology ePrint Archive, Report 2008/469.<br />
Myneni, S. and Huang, D. (2010). IEEE 802.11 Wireless LAN Control Frame Protection.<br />
In Proc. of the 7th IEEE Conference on Consumer communications and Networking<br />
Conference (CCNC), pages 844–848, Piscataway, NJ, USA. IEEE Press.<br />
Qureshi, Z. I., Aslam, B., Mohsin, A., and Javed, Y. (2007). A Solution to Spoofed<br />
PS-Poll Based Denial of Service Attacks in IEEE 802.11 WLANs. In Proc. of the<br />
11th WSEAS International Conference on Communications, pages 7–11, Stevens Point,<br />
Wisconsin, USA. World Scientific and Engineering Aca<strong>de</strong>my and Society (WSEAS).<br />
Rachedi, A. and Benslimane, A. (2009). Impacts and Solutions of Control Packets Vulnerabilities<br />
with IEEE 802.11 MAC. Wireless Communications and Mobile Computing,<br />
9(4):469–488.<br />
Ray, S. and Starobinski, D. (2007). On False Blocking in RTS/CTS-Based Multihop<br />
Wireless Networks. IEEE Transactions on Vehicular Technology, 56(2):849–862.<br />
Rechberger, C. and Rijmen, V. (2008). New Results on NMAC/HMAC when Instantiated<br />
with Popular Hash Functions. Universal Computer Science, 14(3):347–376.<br />
Rogaway, P. (2011). Evaluation of Some Blockcipher Mo<strong>de</strong>s of Operation. Technical<br />
report, Cryptography Research and Evaluation Committees (CRYPTREC).<br />
Tews, E. (2007). Attacks on the WEP Protocol. Cryptology ePrint Archive, Report<br />
2007/471.<br />
Whiting, D., Housley, R., and Ferguson, N. (2003). RFC 3610 - Counter with CBC-MAC<br />
(CCM).<br />
Wi-Fi Alliance (2003). Wi-Fi Protected Access: Strong, Standards-based, Interoperable<br />
Security for Today’s Wi-Fi Networks.<br />
28
Tratamento Automatizado <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Segurança da<br />
Informação em Re<strong>de</strong>s <strong>de</strong> Campus<br />
Italo Valcy 1,2 , Luciano Porto Barreto 1,2 , Jerônimo Bezerra 1,2<br />
1 Universida<strong>de</strong> Fe<strong>de</strong>ral da Bahia (UFBA)<br />
Salvador, BA – Brasil<br />
2 Grupo <strong>de</strong> Resposta a Inci<strong>de</strong>ntes <strong>de</strong> Segurança - Bahia/Brasil (CERT.Bahia)<br />
Salvador, BA – Brasil<br />
{italovalcy, lportoba, jab}@ufba.br<br />
Resumo. O crescimento atual da Internet tem alavancado o número <strong>de</strong><br />
inci<strong>de</strong>ntes <strong>de</strong> segurança da informação em diversas instituições. Os prejuízos<br />
causados por tais inci<strong>de</strong>ntes e sua dificulda<strong>de</strong> <strong>de</strong> prevenção requerem o<br />
estabelecimento <strong>de</strong> políticas e mecanismos eficientes <strong>de</strong> tratamento e resposta<br />
a inci<strong>de</strong>ntes <strong>de</strong> segurança. Entretanto, a correta i<strong>de</strong>ntificação <strong>de</strong> equipamentos<br />
comprometidos ou participantes em um inci<strong>de</strong>nte <strong>de</strong> segurança é severamente<br />
prejudicada pela ampla existência <strong>de</strong> re<strong>de</strong>s que utilizam técnicas <strong>de</strong> tradução<br />
ou atribuição dinâmica <strong>de</strong> en<strong>de</strong>reços IP (como o NAT ou DHCP), as quais<br />
dificultam a i<strong>de</strong>ntificação precisa dos equipamentos internos. Este trabalho<br />
<strong>de</strong>screve o projeto, a implementação e avaliação da ferramenta TRAIRA, a<br />
qual automatiza o procedimento <strong>de</strong> <strong>de</strong>tecção, i<strong>de</strong>ntificação e isolamento dos<br />
equipamentos geradores <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança em re<strong>de</strong>s com estas características.<br />
A ferramenta está atualmente em produção e uso efetivo em uma re<strong>de</strong><br />
<strong>de</strong> campus com cerca <strong>de</strong> 12.000 equipamentos conectados.<br />
1. Introdução<br />
A popularização da Internet tem proporcionado relevante <strong>de</strong>mocratização do acesso às<br />
informações em re<strong>de</strong>, porém, paralelo a esse fenômeno, é notório o aumento substancial<br />
na ocorrência <strong>de</strong> inci<strong>de</strong>ntes relacionados à segurança da informação. Tais inci<strong>de</strong>ntes<br />
são diversos e variam sobremaneira em gravida<strong>de</strong>, impacto e escala. Exemplos abrangem<br />
<strong>de</strong>s<strong>de</strong> a infecção e disseminação <strong>de</strong> software malicioso, apropriação <strong>de</strong> senhas e<br />
informações privadas até frau<strong>de</strong>s bancárias, violação <strong>de</strong> sigilo e proprieda<strong>de</strong> intelectual,<br />
ataque a sites comerciais e ciberterrorismo. No âmbito das empresas e instituições<br />
governamentais, torna-se fundamental atuação efetiva da alta administração visando à<br />
prevenção, <strong>de</strong>tecção e tratamento a<strong>de</strong>quado <strong>de</strong> tais eventos adversos com o intuito <strong>de</strong><br />
proteger os ativos organizacionais (patrimônio, imagem, pessoas).<br />
Instituições lidam com a questão geralmente através da atuação em dois eixos.<br />
O primeiro estabelece uma Política <strong>de</strong> Segurança da Informação (PSI) que normatiza<br />
regras, condutas e planos <strong>de</strong> ação, bem como possíveis sanções aos usuários em caso do<br />
<strong>de</strong>scumprimento das regras estatuídas. O segundo eixo perpassa a constituição <strong>de</strong> um<br />
grupo especializado <strong>de</strong> resposta a inci<strong>de</strong>ntes <strong>de</strong> segurança (CSIRT, do inglês, Computer<br />
Security Information Response Team) responsável pelas questões operacionais <strong>de</strong>s<strong>de</strong> a<br />
fase <strong>de</strong> i<strong>de</strong>ntificação até a resolução dos inci<strong>de</strong>ntes <strong>de</strong> segurança. Seguindo essa linha <strong>de</strong><br />
29
atuação em segurança da informação, nossa instituição contempla a administração <strong>de</strong> uma<br />
re<strong>de</strong> <strong>de</strong> campus que interliga diversas instituições acadêmicas e <strong>de</strong> pesquisa perfazendo<br />
aproximadamente 12.000 equipamentos (<strong>de</strong>sconsi<strong>de</strong>rando equipamentos conectados em<br />
re<strong>de</strong>s sem fio). A<strong>de</strong>mais, no período compreendido entre janeiro e julho <strong>de</strong> 2011, foram<br />
reportados aproximadamente 2.000 inci<strong>de</strong>ntes <strong>de</strong> segurança da informação referentes às<br />
instituições <strong>de</strong> pesquisa e ensino monitoradas pelo nosso CSIRT [CERT.Bahia 2010], o<br />
que atesta a necessida<strong>de</strong> <strong>de</strong> tratamento efetivo e eficaz <strong>de</strong> tais inci<strong>de</strong>ntes.<br />
Os prejuízos causados por tais inci<strong>de</strong>ntes aliados à sua dificulda<strong>de</strong> <strong>de</strong> prevenção<br />
[Scarfone et al. 2008] <strong>de</strong>mandam o estabelecimento <strong>de</strong> políticas e mecanismos eficientes<br />
<strong>de</strong> tratamento e resposta. A gran<strong>de</strong> maioria <strong>de</strong>sses inci<strong>de</strong>ntes são reportados por CSIRTs<br />
externos à instituição, a exemplo do CERT.br e do CAIS/RNP. Lentidão, leniência no<br />
tratamento do inci<strong>de</strong>nte, bem como a reincidência po<strong>de</strong>m ensejar sanções severas e in<strong>de</strong>sejáveis,<br />
tais como o bloqueio <strong>de</strong> acesso e a recusa <strong>de</strong> e-mails originários da instituição<br />
comprometida. A infecção e disseminação <strong>de</strong> malware, a exemplo do vírus Conficker,<br />
ou a participação (ainda que involuntária) <strong>de</strong> máquinas em botnets (re<strong>de</strong>s <strong>de</strong> ataques<br />
em larga escala) são exemplos dos tipos <strong>de</strong> inci<strong>de</strong>ntes mais frequentes na geração <strong>de</strong><br />
notificações externas. Portanto, os prejuízos institucionais <strong>de</strong>correntes <strong>de</strong> tais sanções são<br />
consi<strong>de</strong>ráveis em nosso contexto (instituições acadêmicas e <strong>de</strong> pesquisa), o que requer<br />
atuação rápida e efetiva do time <strong>de</strong> resposta a inci<strong>de</strong>ntes.<br />
Entretanto, um dos principais entraves à correta i<strong>de</strong>ntificação <strong>de</strong> equipamentos<br />
comprometidos ou participantes em um inci<strong>de</strong>nte <strong>de</strong> segurança consiste na ampla<br />
existência <strong>de</strong> re<strong>de</strong>s configuradas com faixas <strong>de</strong> en<strong>de</strong>reços IP “falsos” (i.e., nãoroteáveis<br />
na Internet [Rekhter et al. 1996]) e NAT (do inglês, Network Address Translation)<br />
[Egevang and Francis 1994]. Estas re<strong>de</strong>s geralmente utilizam o serviço <strong>de</strong> DHCP<br />
(do inglês, Dynamic Host Configuration Protocol) [Droms 1997], o qual po<strong>de</strong> atribuir<br />
temporariamente e aleatoriamente en<strong>de</strong>reços às máquinas da re<strong>de</strong>. Essa configuração,<br />
adotada em gran<strong>de</strong> parte das instituições, oculta a i<strong>de</strong>ntida<strong>de</strong> precisa das máquinas internas<br />
comprometidas, o que dificulta sobremaneira o tratamento a<strong>de</strong>quado <strong>de</strong> inci<strong>de</strong>ntes.<br />
Outros fatores complicadores, nesse contexto, incluem o elevado volume <strong>de</strong><br />
notificações recebidas e a heterogeneida<strong>de</strong> dos elementos da re<strong>de</strong>. O uso <strong>de</strong> roteadores<br />
e switches <strong>de</strong> fabricantes diversos (caso geral nas instituições) compromete ou limita<br />
a utilização <strong>de</strong> soluções proprietárias. Ainda que o parque organizacional <strong>de</strong> equipamentos<br />
seja o mais homogêneo possível, as soluções proprietárias existentes são significativamente<br />
onerosas, o que po<strong>de</strong> inviabilizar sua adoção. Por fim, mesmo instituições <strong>de</strong><br />
médio e gran<strong>de</strong> porte carecem <strong>de</strong> equipe e ferramentas <strong>de</strong> segurança especializadas para<br />
tratar os principais tipos <strong>de</strong> inci<strong>de</strong>ntes.<br />
De fato, a automatização a<strong>de</strong>quada do processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes po<strong>de</strong><br />
reduzir substancialmente os custos financeiros do tratamento <strong>de</strong> inci<strong>de</strong>ntes (especialmente<br />
o <strong>de</strong> pessoal alocado para esta tarefa) além <strong>de</strong> resolução mais célere dos problemas. No<br />
cenário i<strong>de</strong>al, concretamente, uma ferramenta po<strong>de</strong> automaticamente <strong>de</strong>tectar e isolar as<br />
máquinas comprometidas para, em seguida, acionar a equipe <strong>de</strong> apoio (help<strong>de</strong>sk) a fim<br />
<strong>de</strong> proce<strong>de</strong>r a <strong>de</strong>sinfecção das máquinas. Assim, os analistas <strong>de</strong> segurança, cujo custo <strong>de</strong><br />
contratação é comumente alto, po<strong>de</strong>m se ater ao tratamento <strong>de</strong> inci<strong>de</strong>ntes mais importantes<br />
ou complexos.<br />
30
Diante <strong>de</strong>ste cenário <strong>de</strong> problemas reais, este trabalho <strong>de</strong>screve o <strong>de</strong>senvolvimento<br />
e avaliação <strong>de</strong> uma ferramenta, chamada TRAIRA (Tratamento <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong><br />
Re<strong>de</strong> Automatizado), que automatiza as principais etapas do processo <strong>de</strong> tratamento <strong>de</strong><br />
inci<strong>de</strong>ntes <strong>de</strong> segurança (<strong>de</strong>tecção e contenção da máquina interna causadora do inci<strong>de</strong>nte).<br />
A ferramenta <strong>de</strong>senvolvida foi avaliada em um ambiente real, na re<strong>de</strong> <strong>de</strong> campus<br />
da Universida<strong>de</strong> Fe<strong>de</strong>ral da Bahia (UFBA), on<strong>de</strong> é utilizada como base do processo <strong>de</strong><br />
tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança gerados pela instituição há aproximadamente um<br />
ano, ajudando a equipe <strong>de</strong> segurança a tratar e respon<strong>de</strong>r uma média <strong>de</strong> 30 notificações<br />
<strong>de</strong> inci<strong>de</strong>ntes por semana. O baixo custo <strong>de</strong> implantação e execução da ferramenta indica<br />
a viabilida<strong>de</strong> <strong>de</strong> sua aplicação prática em outros ambientes corporativos.<br />
O restante <strong>de</strong>ste artigo está estruturado da seguinte maneira. A seção 2 <strong>de</strong>staca os<br />
principais <strong>de</strong>safios acerca do processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança; fatores<br />
motivadores para <strong>de</strong>senvolvimento da ferramenta . Em seguida, <strong>de</strong>screvemos a arquitetura<br />
e funcionamento da ferramenta TRAIRA (seção 3), bem como os resultados obtidos<br />
mediante sua utilização em ambientes reais (seção 4). Por fim, discutimos trabalhos correlatos<br />
quanto à automatização do processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança na<br />
seção 5 e apresentamos as consi<strong>de</strong>rações finais e trabalhos futuros na seção 6.<br />
2. Fases e <strong>de</strong>safios no tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança<br />
O guia para tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança do NIST (do inglês, National Institute<br />
of Standards and Technology) [Scarfone et al. 2008] <strong>de</strong>compõe o processo <strong>de</strong> resposta a<br />
inci<strong>de</strong>ntes em quatro fases: Preparação, Detecção e Análise, Contenção, Mitigação e<br />
Recuperação e Ações Pós-Inci<strong>de</strong>nte. A fase <strong>de</strong> Preparação envolve o estabelecimento e<br />
treinamento <strong>de</strong> um grupo <strong>de</strong> resposta a inci<strong>de</strong>ntes, aquisição <strong>de</strong> ferramentas e recursos necessários,<br />
armazenamento dos registros <strong>de</strong> ativida<strong>de</strong>s dos sistemas para futuras auditorias<br />
etc. A fase <strong>de</strong> Detecção e Análise visa <strong>de</strong>tectar ou i<strong>de</strong>ntificar a existência <strong>de</strong> um inci<strong>de</strong>nte.<br />
A fase Contenção, Mitigação e Recuperação, por sua vez, objetiva evitar que os efeitos<br />
do inci<strong>de</strong>nte se propaguem ou afetem outros recursos da re<strong>de</strong>, e restaurar o funcionamento<br />
normal dos serviços afetados. Por fim, a etapa Ações Pós-Inci<strong>de</strong>nte consiste em avaliar o<br />
processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes e verificar a eficácia das soluções adotadas.<br />
Cada uma <strong>de</strong>stas fases requer ações específicas <strong>de</strong> mitigação ou controle. Por<br />
exemplo, na fase <strong>de</strong> <strong>de</strong>tecção e análise, <strong>de</strong>ve-se registrar os recursos afetados (no caso<br />
<strong>de</strong> inci<strong>de</strong>ntes contra a organização) ou a origem do inci<strong>de</strong>nte (no caso <strong>de</strong> inci<strong>de</strong>ntes<br />
originados na organização). Na fase <strong>de</strong> contenção e mitigação <strong>de</strong>ve-se isolar os sistemas<br />
diretamente relacionados ao inci<strong>de</strong>nte e efetuar o tratamento do recurso em questão<br />
(<strong>de</strong>sinfecção <strong>de</strong> uma máquina contaminada com vírus/worm, remoção <strong>de</strong> um artefato malicioso,<br />
recuperação <strong>de</strong> uma página web modificada, etc). No entanto, alguns serviços<br />
comumente utilizados na configuração <strong>de</strong> re<strong>de</strong>s, a exemplo do NAT e DHCP, po<strong>de</strong>m dificultar<br />
consi<strong>de</strong>ravelmente a consecução <strong>de</strong>ssas ações corretivas.<br />
A técnica <strong>de</strong> NAT visa traduzir os en<strong>de</strong>reços IP utilizados na re<strong>de</strong> interna em um<br />
en<strong>de</strong>reço IP (ou faixa <strong>de</strong> en<strong>de</strong>reços) utilizado na re<strong>de</strong> externa (Internet). Os en<strong>de</strong>reços IP<br />
internos são, portanto, <strong>de</strong>sconhecidos dos equipamentos externos, tal qual o número <strong>de</strong><br />
um ramal <strong>de</strong> um telefone é escondido quando efetuada uma ligação via PABX. Assim, a<br />
re<strong>de</strong> externa <strong>de</strong>sconhece o verda<strong>de</strong>iro emissor do pacote. No que tange ao tratamento <strong>de</strong><br />
inci<strong>de</strong>ntes <strong>de</strong> segurança, a principal dificulda<strong>de</strong> adicionada pelo NAT consiste em <strong>de</strong>ter-<br />
31
minar com precisão o en<strong>de</strong>reço IP interno que foi traduzido no en<strong>de</strong>reço IP externo, uma<br />
vez que as notificações <strong>de</strong> inci<strong>de</strong>ntes recebidas <strong>de</strong> fontes externas (e.g. outros CSIRTs)<br />
contêm apenas o en<strong>de</strong>reço IP externo.<br />
Outro agravante resi<strong>de</strong> no uso disseminado do Protocolo <strong>de</strong> Configuração<br />
Dinâmica <strong>de</strong> Hosts (DHCP) [Droms 1997], que permite a um host obter en<strong>de</strong>reço(s) IP, e<br />
outros parâmetros <strong>de</strong> configuração da re<strong>de</strong>, automaticamente. Em uma re<strong>de</strong> com DHCP, é<br />
possível que um mesmo dispositivo possua diferentes en<strong>de</strong>reços IP ao longo do dia, da semana<br />
ou do mês, a <strong>de</strong>pen<strong>de</strong>r da política <strong>de</strong> tempo <strong>de</strong> concessão (lease time) utilizada. Por<br />
isso, limitar a i<strong>de</strong>ntificação da máquina a um en<strong>de</strong>reço IP po<strong>de</strong> ser ineficaz ou produzir<br />
resultados errôneos (o que seria bastante prejudicial em caso <strong>de</strong> bloqueio automatizado da<br />
máquina comprometida). Portanto, atualmente consi<strong>de</strong>ra-se mais a<strong>de</strong>quada a utilização<br />
do en<strong>de</strong>reço MAC (Media Access Control) como i<strong>de</strong>ntificador único do host.<br />
Um terceiro <strong>de</strong>safio para o tratamento <strong>de</strong> inci<strong>de</strong>ntes é a falta <strong>de</strong> gerenciamento<br />
dos registros <strong>de</strong> ativida<strong>de</strong>s (logs) <strong>de</strong> dispositivos. Esses registros são <strong>de</strong> gran<strong>de</strong> valia<br />
quando da ocorrência <strong>de</strong> um inci<strong>de</strong>nte, pois auxiliam a auditoria dos sistemas afetados.<br />
Não obstante, a quantida<strong>de</strong>, volume e varieda<strong>de</strong> dos logs <strong>de</strong> segurança dos sistemas têm<br />
crescido bastante, comprometendo e, por vezes, até inviabilizando, a investigação <strong>de</strong><br />
inci<strong>de</strong>ntes <strong>de</strong> segurança gerados por uma instituição. Essa investigação consiste geralmente<br />
em efetuar buscas nos logs do dispositivo <strong>de</strong> NAT por uma ocorrência do IP e<br />
porta listados na notificação e cuja data e hora estejam em concordância com os dados.<br />
Vale salientar que, consi<strong>de</strong>rando os entraves supracitados, o processo <strong>de</strong> tratamento <strong>de</strong><br />
inci<strong>de</strong>ntes <strong>de</strong> segurança, em muitos casos, ten<strong>de</strong> a ser interrompido nessa etapa. Portanto,<br />
a automatização a<strong>de</strong>quada <strong>de</strong>ssa etapa é <strong>de</strong> fundamental importância para o tratamento<br />
efetivo <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança em tempo hábil.<br />
3. TRAIRA: uma ferramenta para Tratamento Automatizado <strong>de</strong> Inci<strong>de</strong>ntes<br />
<strong>de</strong> Re<strong>de</strong><br />
O TRAIRA é um programa que atua em todas as fases do tratamento <strong>de</strong> inci<strong>de</strong>ntes (a<br />
saber, preparação, <strong>de</strong>tecção e análise, contenção, mitigação e recuperação e ações pósinci<strong>de</strong>nte<br />
[Scarfone et al. 2008]) <strong>de</strong> forma que a <strong>de</strong>tecção e contenção da máquina interna<br />
causadora do inci<strong>de</strong>nte são totalmente automatizadas. Na fase <strong>de</strong> preparação <strong>de</strong>stacam-se<br />
dois recursos requeridos pelo TRAIRA: i) a configuração do serviço <strong>de</strong> logging remoto<br />
do equipamento <strong>de</strong> NAT e ii) a utilização <strong>de</strong> um sistema <strong>de</strong> registro sobre a atribuição <strong>de</strong><br />
IPs, associando-os aos en<strong>de</strong>reços físicos dos dispositivos <strong>de</strong> re<strong>de</strong>: os en<strong>de</strong>reços MAC.<br />
Já na fase <strong>de</strong> <strong>de</strong>tecção e análise, o TRAIRA utiliza os recursos configurados anteriormente<br />
para automaticamente extrair as informações relevantes <strong>de</strong> uma notificação;<br />
buscar por evidências nos logs do dispositivo <strong>de</strong> NAT que informem o(s) IP(s) interno(s)<br />
responsável(veis) pela notificação recebida; associar o en<strong>de</strong>reço IP interno a um en<strong>de</strong>reço<br />
MAC da máquina, <strong>de</strong> forma que sua i<strong>de</strong>ntificação seja única; gerar relatórios e estatísticas<br />
sobre os inci<strong>de</strong>ntes recebidos; e respon<strong>de</strong>r à organização que reportou o inci<strong>de</strong>nte. A fase<br />
<strong>de</strong> contenção implementa políticas <strong>de</strong> cessação da ativida<strong>de</strong> maliciosa através do isolamento<br />
da máquina comprometida como, por exemplo, bloqueio no switch gerenciável<br />
ou roteador mais próximo. Ao final do tratamento <strong>de</strong> uma notificação, o TRAIRA gera<br />
uma resposta automática à organização que reportou o inci<strong>de</strong>nte e também um relatório<br />
<strong>de</strong>talhado para a equipe <strong>de</strong> apoio a fim <strong>de</strong> que as medidas cabíveis sejam aplicadas. No<br />
32
Figura 1. Visão geral da arquitetura do TRAIRA<br />
âmbito <strong>de</strong>sse artigo, serão enfatizadas as fases <strong>de</strong> preparação e <strong>de</strong>tecção e analise e alguns<br />
aspectos relacionados à contenção.<br />
No nosso contexto e em diversas outras instituições, há utilização disseminada<br />
do Request Tracker (RT) [BestPractical 2011] e como sistema <strong>de</strong> help<strong>de</strong>sk e tratamento<br />
inicial <strong>de</strong> inci<strong>de</strong>ntes. A fim <strong>de</strong> preservar o conhecimento e a utilização <strong>de</strong>ssas ferramentas,<br />
o TRAIRA foi i<strong>de</strong>alizado como um aprimoramento do RT através <strong>de</strong> extensões específicas<br />
para o tratamento automatizado <strong>de</strong> inci<strong>de</strong>ntes em re<strong>de</strong>s. Tal <strong>de</strong>cisão <strong>de</strong> projeto reduziu o<br />
tempo e custo <strong>de</strong> <strong>de</strong>senvolvimento, permitindo a reutilização <strong>de</strong> diversas funcionalida<strong>de</strong>s<br />
existentes nessas ferramentas (autenticação, backup, atualização) e da própria base <strong>de</strong><br />
inci<strong>de</strong>ntes <strong>de</strong> segurança pré-existente. Além disso, isso facilita a adoção do TRAIRA por<br />
outras instituições interessadas em incrementar a automatização dos procedimentos <strong>de</strong><br />
tratamento <strong>de</strong> inci<strong>de</strong>ntes.<br />
Na subseção seguinte, a arquitetura e funcionamento do TRAIRA será apresentada<br />
em maiores <strong>de</strong>talhes.<br />
3.1. Arquitetura do TRAIRA<br />
A concepção do TRAIRA foi estruturada em uma arquitetura modular, apresentada na<br />
Figura 1. Nessa figura, os componentes em formato <strong>de</strong> elipse representam os módulos que<br />
foram <strong>de</strong>senvolvidos como parte do TRAIRA e os componentes em formato <strong>de</strong> retângulo<br />
representam programas ou recursos externos necessários ao funcionamento do TRAIRA.<br />
Os cinco módulos do TRAIRA são: Parser, NAT Mapping, IP2MAC, Post-Detection e<br />
Containment. A seguir, apresentamos uma breve <strong>de</strong>scrição das funcionalida<strong>de</strong>s <strong>de</strong>sses<br />
módulos.<br />
• Parser: Responsável pelo recebimento da notificação e pela extração das<br />
informações essenciais ao tratamento do inci<strong>de</strong>nte: en<strong>de</strong>reço IP e porta <strong>de</strong> origem,<br />
data e horário.<br />
• NAT Mapping: Utiliza as informações extraídas pelo parser e realiza<br />
uma busca nos logs do dispositivo <strong>de</strong> NAT para associar a tupla<br />
a um en<strong>de</strong>reço IP interno, responsável <strong>de</strong><br />
fato pelo inci<strong>de</strong>nte.<br />
33
• IP2MAC: aqui é feita a associação do IP interno ao en<strong>de</strong>reço MAC da máquina.<br />
Esse passo é importante em instituições que utilizam o DHCP, pois um IP po<strong>de</strong><br />
ter sido usado por mais <strong>de</strong> uma máquina ao longo do tempo.<br />
• Post-Detection: Responsável pela extração <strong>de</strong> dados da notificação e do tratamento<br />
realizado a fim <strong>de</strong> gerar estatísticas sobre os inci<strong>de</strong>ntes, gerar relatórios<br />
à equipe <strong>de</strong> help<strong>de</strong>sk (para, por exemplo, efetuar o isolamento e <strong>de</strong>sinfecção da<br />
máquina) e respon<strong>de</strong>r à instituição que reportou o inci<strong>de</strong>nte.<br />
• Containment: Neste módulo é feito o isolamento do host que causou o inci<strong>de</strong>nte<br />
para evitar que ele continue com a ativida<strong>de</strong> maliciosa na re<strong>de</strong> ou afete outros<br />
recursos.<br />
O TRAIRA foi <strong>de</strong>senvolvido como uma extensão do RT, permitindo que o tratamento<br />
dos inci<strong>de</strong>ntes <strong>de</strong> segurança seja feito tanto pela interface web, on<strong>de</strong> o usuário<br />
fornece manualmente a notificação do inci<strong>de</strong>nte, quanto via e-mail quando a organização<br />
que reporta o inci<strong>de</strong>nte envia uma mensagem para um en<strong>de</strong>reço <strong>de</strong> e-mail especialmente<br />
<strong>de</strong>signado para este fim. Foi utilizada a linguagem <strong>de</strong> programação Perl, com a qual o<br />
próprio RT foi implementado. Em sua primeira versão, possui aproximadamente 2.500<br />
linhas <strong>de</strong> código entre interfaces <strong>de</strong> usuário, núcleo da aplicação, módulos <strong>de</strong> interface<br />
com recursos externos (logs, tabela <strong>de</strong> en<strong>de</strong>reços MAC, etc) e <strong>de</strong>mais componentes. O<br />
TRAIRA é distribuído sob a licença GPLv2 ou superior 1 e encontra-se disponível para<br />
download em [TRAIRA 2011].<br />
Tratamento <strong>de</strong> Inci<strong>de</strong>ntes no TRAIRA<br />
O tratamento <strong>de</strong> inci<strong>de</strong>ntes automatizados pelo TRAIRA segue um fluxo <strong>de</strong> trabalho composto<br />
pelas etapas a seguir.<br />
1. Uma entida<strong>de</strong> (interna ou externa) submete uma notificação ao TRAIRA reportando<br />
um inci<strong>de</strong>nte <strong>de</strong> segurança. Essa notificação <strong>de</strong>ve conter evidências suficientes<br />
para comprovar a ativida<strong>de</strong> maliciosa e incluir, no mínimo, o en<strong>de</strong>reço<br />
IP, porta <strong>de</strong> origem, data, hora e timezone da ocorrência. A entida<strong>de</strong> que reporta<br />
inci<strong>de</strong>ntes po<strong>de</strong> ser materializada nos CSIRTs (e.g., CAIS, CERT.br), em sensores<br />
<strong>de</strong> monitoramento <strong>de</strong> ativida<strong>de</strong>s maliciosas (IDSs, honeypots etc) ou até mesmo<br />
em usuários que submetem inci<strong>de</strong>ntes através da interface web;<br />
2. O TRAIRA verifica se existe um parser específico para o tipo <strong>de</strong> notificação recebido.<br />
Em caso afirmativo, o parser extrai os dados importantes da notificação e<br />
o tratamento avança para a <strong>de</strong>tecção da máquina interna. Caso inexista um parser<br />
apropriado, a notificação permanece em aberto no RT aguardando pelo tratamento<br />
manual da equipe <strong>de</strong> segurança;<br />
3. A partir dos dados extraídos da notificação (tupla<br />
) é feita uma busca nos logs do dispositivo<br />
<strong>de</strong> NAT para <strong>de</strong>terminar o respectivo en<strong>de</strong>reço IP da máquina da re<strong>de</strong><br />
interna;<br />
4. De posse do en<strong>de</strong>reço IP da máquina causadora do inci<strong>de</strong>nte, é realizada uma<br />
busca para <strong>de</strong>scobrir o respectivo en<strong>de</strong>reço MAC;<br />
1 GPL é uma sigla usada para GNU Public License, uma licença <strong>de</strong> software livre especificada pela Free<br />
Software Foundation.<br />
34
5. Caso o módulo <strong>de</strong> Contenção esteja habilitado para executar automaticamente, a<br />
máquina em questão (representado pelo MAC obtido na etapa anterior) é bloqueado<br />
ou movido para uma Re<strong>de</strong> Virtual (VLAN) <strong>de</strong> quarentena;<br />
6. De posse do en<strong>de</strong>reço MAC e do resultado do módulo <strong>de</strong> Contenção, o TRAIRA<br />
notifica a equipe <strong>de</strong> help<strong>de</strong>sk para tomada das medidas cabíveis;<br />
7. Uma resposta automática (e-mail) é enviada à instituição produtora da notificação<br />
para informar a i<strong>de</strong>ntificação da máquina causadora do inci<strong>de</strong>nte e o início dos<br />
procedimentos <strong>de</strong> tratamento e recuperação.<br />
Diante do exposto, o TRAIRA automatiza completamente o processo inicial <strong>de</strong><br />
tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança. Cabe ainda ao administrador executar as providências<br />
necessárias para resolução do inci<strong>de</strong>nte, a exemplo da <strong>de</strong>sinfecção <strong>de</strong> máquinas<br />
contaminadas com vírus/worm ou aplicar as medidas administrativas cabíveis à uma<br />
violação <strong>de</strong> copyright. Vale salientar, entretanto, que, em virtu<strong>de</strong> do consi<strong>de</strong>rável volume<br />
<strong>de</strong> notificações recebidos pelas instituições e a carência <strong>de</strong> pessoal especializado<br />
e em número suficiente para respon<strong>de</strong>r às notificações, a etapa <strong>de</strong> <strong>de</strong>tecção ten<strong>de</strong>, muitas<br />
vezes, a nem ser iniciada. As etapas <strong>de</strong>scritas acima são executadas <strong>de</strong> forma on-line.<br />
Portanto, assim que um inci<strong>de</strong>nte é reportado ao TRAIRA, seu tratamento tem início imediato.<br />
Assim, o TRAIRA proporciona uma importante contribuição para o processo <strong>de</strong><br />
tratamento e resposta aos inci<strong>de</strong>ntes <strong>de</strong> segurança <strong>de</strong> uma instituição.<br />
As subseções seguintes visam <strong>de</strong>talhar duas etapas importantes do tratamento do<br />
inci<strong>de</strong>nte pelo TRAIRA: <strong>de</strong>tecção e isolamento do host responsável pelo inci<strong>de</strong>nte.<br />
3.2. Detecção do host responsável pelo inci<strong>de</strong>nte<br />
Apesar <strong>de</strong> suas <strong>de</strong>svantagens [Egevang and Francis 1994, Seção 4], o NAT é uma técnica<br />
bastante utilizada pelas instituições <strong>de</strong> ensino e pesquisa conectadas à Internet, principalmente<br />
pela possibilida<strong>de</strong> <strong>de</strong> economia <strong>de</strong> en<strong>de</strong>reços IPv4 e ocultação da topologia da<br />
re<strong>de</strong> interna. Por outro lado, sua utilização traz implicações no tratamento <strong>de</strong> inci<strong>de</strong>ntes<br />
<strong>de</strong> segurança, uma vez que o en<strong>de</strong>reço listado na notificação não representa diretamente a<br />
máquina da re<strong>de</strong> interna que realmente causou o inci<strong>de</strong>nte. Nesse caso, faz-se necessário<br />
um mapeamento entre o IP e porta listados na notificação e o IP interno que causou o<br />
inci<strong>de</strong>nte. Para realizar esse mapeamento, o módulo NATMapping utiliza as informações<br />
extraídas pelo Parser e as correlaciona aos logs do(s) dispositivo(s) <strong>de</strong> NAT, retornando<br />
o(s) IP(s) internos responsáveis pelo inci<strong>de</strong>nte.<br />
O processo <strong>de</strong> correlacionar essas duas entradas, no entanto, não é uma tarefa trivial.<br />
É necessário consi<strong>de</strong>rar a gran<strong>de</strong> diversida<strong>de</strong> <strong>de</strong> dispositivos <strong>de</strong> NAT disponíveis<br />
(cada um <strong>de</strong>les po<strong>de</strong> produzir logs <strong>de</strong> forma específica), o gran<strong>de</strong> volume <strong>de</strong> dados a serem<br />
processados e, ainda pior, a correspondência entre a data/horário que é listado na<br />
notificação e aqueles listados nos logs. Para lidar com este último problema, a ferramenta<br />
incorpora a <strong>de</strong>finição <strong>de</strong> um valor, configurável, <strong>de</strong> tolerância temporal entre os horários<br />
da notificação e dos logs. O valor mais a<strong>de</strong>quado para uma instituição <strong>de</strong>pen<strong>de</strong> das características<br />
da re<strong>de</strong>. Um fator obrigatório a ser observado nessa <strong>de</strong>finição é a relação<br />
<strong>de</strong> máquinas da re<strong>de</strong> interna por IP <strong>de</strong> NAT: quanto mais máquinas são associadas a um<br />
único NAT, maior será a taxa <strong>de</strong> reaproveitamento <strong>de</strong> portas e, consequentemente, menor<br />
po<strong>de</strong>rá ser a tolerância à diferença nos relógios.<br />
Para tratar da diversida<strong>de</strong> na utilização <strong>de</strong> dispositivos <strong>de</strong> NAT nas instituições,<br />
35
e, até mesmo internamente à uma instituição (com diferentes dispositivos <strong>de</strong> NAT<br />
por segmento <strong>de</strong> re<strong>de</strong>), o módulo NATMapping foi <strong>de</strong>senvolvido <strong>de</strong> forma que seja<br />
possível <strong>de</strong>finir um dispositivo <strong>de</strong> NAT para cada segmento <strong>de</strong> re<strong>de</strong> (levando-se em<br />
consi<strong>de</strong>ração a sobreposição entre segmentos) e um dispositivo padrão a ser usado<br />
caso não haja uma <strong>de</strong>finição específica para <strong>de</strong>terminado segmento <strong>de</strong> re<strong>de</strong>. Por<br />
exemplo, o administrador po<strong>de</strong> <strong>de</strong>finir que a re<strong>de</strong> 200.128.99.0/24 utiliza o<br />
ASA/Cisco, já a re<strong>de</strong> 200.128.196.0/23 utiliza IPTables/Netfilter com exceção<br />
da sub-re<strong>de</strong> 200.128.197.0/28 que também utiliza ASA/Cisco e, finalmente, a<br />
re<strong>de</strong> 200.128.199.0/24 não utiliza NAT. Note que o mapeamento acima é sobre<br />
uma visão externa ou, mais especificamente, consi<strong>de</strong>rando os dados da notificação.<br />
Essa flexibilida<strong>de</strong> <strong>de</strong> configuração permite, por exemplo, <strong>de</strong>finir as re<strong>de</strong>s privadas<br />
[Rekhter et al. 1996] como “sem NAT”, o que viabiliza também o tratamento <strong>de</strong><br />
inci<strong>de</strong>ntes internos (<strong>de</strong>tectados a partir <strong>de</strong> sensores posicionados na re<strong>de</strong> interna).<br />
3.3. Isolamento do host responsável pelo inci<strong>de</strong>nte<br />
A etapa <strong>de</strong> isolamento efetua a contenção do host <strong>de</strong>tectado anteriormente para evitar<br />
que ele continue com a ativida<strong>de</strong> maliciosa na re<strong>de</strong> ou comprometa outros recursos.<br />
Esta contenção po<strong>de</strong> acontecer por diversas vias: <strong>de</strong>sligamento da máquina, remoção<br />
do cabo <strong>de</strong> re<strong>de</strong>, bloqueio no dispositivo <strong>de</strong> re<strong>de</strong> gerenciável mais próximo etc. Essa<br />
última alternativa é mais interessante do ponto <strong>de</strong> vista <strong>de</strong> automatização. Em contrapartida,<br />
o inconveniente é que o usuário <strong>de</strong>sconhece a razão pela qual sua estação está<br />
sem comunicação na re<strong>de</strong>. Nesse sentido, uma técnica mais apropriada, proposta em<br />
[Kaiser et al. 2006], consiste em direcionar o tráfego <strong>de</strong> re<strong>de</strong> do host comprometido para<br />
uma VLAN <strong>de</strong> quarentena. Nesta VLAN, as requisições do usuário seriam encaminhadas<br />
a uma página web da instituição que informa sobre o bloqueio preventivo da máquina e<br />
ações que este <strong>de</strong>ve tomar (e.g., contactar imediatamente o help<strong>de</strong>sk).<br />
Tal abordagem <strong>de</strong> contenção tem sido reiteradamente consi<strong>de</strong>rada na literatura,<br />
principalmente, através do uso <strong>de</strong> ferramentas como firewall e IDS. Não obstante, essa<br />
abordagem mostra-se ineficiente do ponto <strong>de</strong> vista <strong>de</strong> propagação da ativida<strong>de</strong> maliciosa<br />
na re<strong>de</strong> local do host <strong>de</strong>tectado, pois, para os segmentos diretamente conectados, os pacotes<br />
não trafegam pelo firewall ou IDS. De fato, o bloqueio mais eficaz po<strong>de</strong> ser realizado<br />
na camada 2 (Layer 2), por exemplo, nos switches gerenciáveis ao qual o host comprometido<br />
está conectado. Devido à possível variação no ambiente <strong>de</strong> re<strong>de</strong> das instituições,<br />
o TRAIRA consi<strong>de</strong>ra três estratégias possíveis para etapa <strong>de</strong> isolamento do processo <strong>de</strong><br />
tratamento <strong>de</strong> um inci<strong>de</strong>nte: i) bloqueio do host no equipamento <strong>de</strong> firewall, ii) bloqueio<br />
no switch gerenciável mais próximo ao host <strong>de</strong>tectado, iii) direcionamento do host para<br />
uma VLAN <strong>de</strong> quarentena.<br />
Cada uma <strong>de</strong>ssas estratégias possui vantagens, <strong>de</strong>svantagens e requisitos <strong>de</strong><br />
implantação específicos. Portanto, a <strong>de</strong>cisão final acerca da política mais apropriada <strong>de</strong>pen<strong>de</strong><br />
das características <strong>de</strong> cada instituição. A opção mais simples consiste no bloqueio<br />
do host no equipamento <strong>de</strong> firewall. Essa estratégia mostra-se eficaz para contenção <strong>de</strong><br />
ataques cujo <strong>de</strong>stino seja outra instituição ou esteja em outro segmento <strong>de</strong> re<strong>de</strong> ao qual<br />
host <strong>de</strong>tectado pertence. Também possibilita a criação <strong>de</strong> regras para redirecionar <strong>de</strong><br />
forma transparente o tráfego oriundo do host comprometido para uma página web, a qual<br />
informa ao usuário o bloqueio <strong>de</strong> sua máquina e explica a razão para tal ação. Contudo,<br />
não aten<strong>de</strong> ao tratamento da propagação <strong>de</strong> ativida<strong>de</strong> maliciosa na re<strong>de</strong> local. O requisito<br />
36
<strong>de</strong> implantação consiste basicamente no suporte à criação <strong>de</strong> filtros <strong>de</strong> pacotes e regras<br />
<strong>de</strong> redirecionamento baseadas em en<strong>de</strong>reço MAC no firewall da instituição (característica<br />
comumente encontrada nos firewalls mais usados).<br />
Outra variante mais completa consiste em direcionar o tráfego do host comprometido<br />
para uma VLAN <strong>de</strong> quarentena no nível da camada <strong>de</strong> enlace, o que evita o<br />
problema supracitado <strong>de</strong> ativida<strong>de</strong> maliciosa na re<strong>de</strong> local e simplifica sobremaneira o<br />
procedimento <strong>de</strong> contenção. Entretanto, esta opção tem requisitos <strong>de</strong> implantação mais<br />
complexos. É necessário que a máquina esteja conectada em algum switch que possibilite<br />
a criação <strong>de</strong> filtros (ACLs) para modificar a VLAN baseado no en<strong>de</strong>reço MAC <strong>de</strong> origem<br />
dos pacotes. Tal funcionalida<strong>de</strong> é também conhecida como MAC-based VLAN. Todavia,<br />
em pesquisas realizadas, constatamos que apenas um fabricante <strong>de</strong> equipamentos <strong>de</strong> re<strong>de</strong><br />
implementa essa funcionalida<strong>de</strong>. Consi<strong>de</strong>rando a efetivida<strong>de</strong> <strong>de</strong>ssa solução, <strong>de</strong>cidimos<br />
reorientar nossos procedimentos <strong>de</strong> compra para a aquisição <strong>de</strong> novos equipamentos com<br />
esta funcionalida<strong>de</strong>.<br />
4. Avaliação experimental e resultados obtidos<br />
Des<strong>de</strong> a implantação do TRAIRA na re<strong>de</strong> da UFBA em setembro <strong>de</strong> 2010, todas as<br />
notificações <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança recebidas pela equipe (sejam aquelas enviadas<br />
por ferramentas <strong>de</strong> monitoramento interno, tais como honeypots, IDSs, ou as enviadas<br />
pelos grupos <strong>de</strong> segurança, tais como CAIS e CERT.br) tem sido tratados automaticamente.<br />
Por exemplo, as notificações <strong>de</strong> inci<strong>de</strong>nte relacionadas ao projeto Honeypot.BR<br />
do CERT.br [Honeynet.BR 2011], do qual a UFBA participa, correspon<strong>de</strong>m a uma média<br />
diária <strong>de</strong> 5 a 10 notificações, e cada notificação contém cerca <strong>de</strong> 20 inci<strong>de</strong>ntes.<br />
Um recurso fundamental aos grupos <strong>de</strong> resposta a inci<strong>de</strong>ntes <strong>de</strong> segurança<br />
(CSIRTs) consiste na produção <strong>de</strong> estatísticas relevantes ao contexto <strong>de</strong> tratamento<br />
<strong>de</strong> inci<strong>de</strong>ntes e tomada <strong>de</strong> <strong>de</strong>cisão para a alta administração [Arvidsson et al. 2001].<br />
A obtenção <strong>de</strong> tais dados auxiliam os CSIRTs a <strong>de</strong>tectar tendências, prever futuros<br />
ataques em gran<strong>de</strong> escala e direcionar ativida<strong>de</strong>s, <strong>de</strong>ntre outros. A implementação<br />
atual do TRAIRA fornece estatísticas importantes geradas automaticamente a partir <strong>de</strong><br />
informações retiradas da notificação recebida e do tratamento efetuado. A seguir, discutiremos<br />
os resultados obtidos a partir <strong>de</strong>ssas estatísticas.<br />
Situação e taxa <strong>de</strong> tratamento dos inci<strong>de</strong>ntes. O gráfico quantitativo (Figura 2)<br />
po<strong>de</strong> ser utilizado para aferir a efetivida<strong>de</strong> do tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança na<br />
instituição. Neste âmbito, são listados os inci<strong>de</strong>ntes reportados versus os que foram resolvidos.<br />
No caso i<strong>de</strong>al, espera-se que a linha <strong>de</strong> inci<strong>de</strong>ntes resolvidos esteja o mais próximo<br />
possível da linha dos inci<strong>de</strong>ntes reportados.<br />
Tendo em vista que a re<strong>de</strong> da UFBA conta mais <strong>de</strong> 12.000 equipamentos, o tratamento<br />
<strong>de</strong> todas essas notificações era extremamente custoso, do ponto <strong>de</strong> vista <strong>de</strong> alocação<br />
<strong>de</strong> pessoal qualificado. Conforme po<strong>de</strong> ser visto na Figura 2 (extraída do TRAIRA),<br />
<strong>de</strong>s<strong>de</strong> o início <strong>de</strong> 2011, nossa instituição recebeu mais <strong>de</strong> 550 notificações, sendo que a<br />
gran<strong>de</strong> maioria <strong>de</strong>las foi tratada automaticamente pelo TRAIRA. Nesta figura, uma linha<br />
representa os inci<strong>de</strong>ntes reportados, enquanto a outra indica quais <strong>de</strong>stes inci<strong>de</strong>ntes foram<br />
tratados automaticamente pelo TRAIRA. Portanto, a proximida<strong>de</strong> das linhas indica a<br />
eficácia do uso da ferramenta no tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança.<br />
37
Figura 2. Situação do tratamento <strong>de</strong> inci<strong>de</strong>ntes reportados a UFBA entre janeiro<br />
a julho <strong>de</strong> 2011<br />
Segmentação <strong>de</strong> inci<strong>de</strong>ntes por Re<strong>de</strong> Virtual (VLAN). Nossa re<strong>de</strong> institucional é estruturada<br />
em VLANs a fim <strong>de</strong> estabelecer políticas <strong>de</strong> controle <strong>de</strong> acesso e segmentação<br />
<strong>de</strong> tráfego. Atualmente, diversas instituições têm adotado esse mo<strong>de</strong>lo como facilitador<br />
da administração <strong>de</strong> grupos <strong>de</strong> usuários e recursos em re<strong>de</strong>s <strong>de</strong> campus e <strong>de</strong> larga escala.<br />
A Figura 3 apresenta tal gráfico para a UFBA no período <strong>de</strong> janeiro a julho <strong>de</strong><br />
2011. Esse gráfico ressalta as VLANs (cujos nomes reais foram sombreados por questões<br />
<strong>de</strong> segurança e privacida<strong>de</strong>) que mais impactam na geração <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança,<br />
o que permite direcionar medidas <strong>de</strong> prevenção específicas. Tais dados são fundamentais<br />
para re<strong>de</strong>s <strong>de</strong> campus ou extensas, visto que há forte tendência nas instituições em<br />
administrar re<strong>de</strong>s por meio <strong>de</strong> uma estruturada combinada <strong>de</strong> VLANs.<br />
Figura 3. As <strong>de</strong>z principais VLANs geradoras <strong>de</strong> inci<strong>de</strong>ntes na re<strong>de</strong> UFBA (janeiro<br />
a julho <strong>de</strong> 2011)<br />
Em nosso ambiente institucional, a análise das estatísticas produzidas pelo<br />
TRAIRA permitiram a i<strong>de</strong>ntificação precisa das principais sub-re<strong>de</strong>s geradoras <strong>de</strong><br />
inci<strong>de</strong>ntes. Com base nesse resultado, pô<strong>de</strong>-se iniciar um trabalho específico e direcionado<br />
aos usuários, dirigentes e administradores <strong>de</strong>stas sub-re<strong>de</strong>s visando i<strong>de</strong>ntificar o<br />
motivo da ativida<strong>de</strong> maliciosa e implantar estratégias <strong>de</strong> controle e mitigação.<br />
38
I<strong>de</strong>ntificação <strong>de</strong> máquinas reinci<strong>de</strong>ntes. Esta métrica indica a taxa <strong>de</strong> reincidência na<br />
geração <strong>de</strong> inci<strong>de</strong>ntes em <strong>de</strong>terminado host. Po<strong>de</strong> ser usada como indicador qualitativo<br />
do tratamento e pós-tratamento <strong>de</strong> inci<strong>de</strong>ntes. A interpretação <strong>de</strong>sse dado po<strong>de</strong> levantar<br />
diversas hipóteses, tais como: a fase <strong>de</strong> isolamento e <strong>de</strong>sinfecção está sendo ineficaz; no<br />
caso dos inci<strong>de</strong>ntes <strong>de</strong> vírus/worm po<strong>de</strong> indicar inexperiência ou <strong>de</strong>sleixo do usuário no<br />
uso do recurso, propiciando novas infecções com facilida<strong>de</strong>; <strong>de</strong>ntre outros.<br />
A automatização proporcionada pelo TRAIRA simplifica o procedimento <strong>de</strong> tratamento<br />
dos principais inci<strong>de</strong>ntes, pois a equipe <strong>de</strong> help<strong>de</strong>sk apenas recebe o en<strong>de</strong>reço<br />
MAC dos dispositivos suspeitos i<strong>de</strong>ntificados pelo sistema e realiza o tratamento das<br />
máquinas. A resposta às notificações que envolvem contenção automática é praticamente<br />
instantânea, quando comparada à abordagem manual em que cada inci<strong>de</strong>nte era resolvido<br />
em cerca <strong>de</strong> 30 minutos. Tal <strong>de</strong>mora ensejava, por vezes, o não atendimento <strong>de</strong> algumas<br />
notificações por restrições <strong>de</strong> tempo da equipe. A economia <strong>de</strong> tempo na i<strong>de</strong>ntificação e<br />
contenção da máquina comprometida representa um ganho qualitativo fundamental frente<br />
às instituições externas que reportam inci<strong>de</strong>ntes, bem como em celerida<strong>de</strong> e precisão em<br />
relação ao cessamento da propagação <strong>de</strong> ativida<strong>de</strong>s maliciosas na re<strong>de</strong> interna.<br />
5. Trabalhos correlatos<br />
A literatura apresenta uma série <strong>de</strong> trabalhos que versam sobre a <strong>de</strong>finição <strong>de</strong> políticas<br />
<strong>de</strong> segurança e tratamento dos inci<strong>de</strong>ntes [Ceron et al. 2009, Scarfone et al. 2008,<br />
Werlinger et al. 2007, Lun<strong>de</strong>ll 2009], porém, no melhor <strong>de</strong> nosso conhecimento, poucos<br />
<strong>de</strong>les têm se preocupado com a automatização do procedimento a fim <strong>de</strong> minorar custos<br />
e reduzir o tempo <strong>de</strong> tratamento dos inci<strong>de</strong>ntes.<br />
De maneira geral, a maioria dos CSIRTs usa sistemas <strong>de</strong> help<strong>de</strong>sk customizados<br />
(também conhecidos como sistemas <strong>de</strong> chamados) para tratar seus inci<strong>de</strong>ntes, a fim <strong>de</strong><br />
melhor aten<strong>de</strong>r às <strong>de</strong>mandas do processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes [Kaiser et al. 2006].<br />
Dois sistemas bem conhecidos são o Request Tracker (RT) [BestPractical 2011] e o Open<br />
Source Ticket Request System (OTRS) [OTRS 2011]. Existe ainda uma extensão para<br />
o RT chamada Request Tracker for Inci<strong>de</strong>nt Response (RTIR), que se concentra na resposta<br />
aos inci<strong>de</strong>ntes <strong>de</strong> segurança (classificação <strong>de</strong> inci<strong>de</strong>ntes, geração <strong>de</strong> estatísticas,<br />
etc.). Até nosso conhecimento, nenhuma <strong>de</strong>ssas ferramentas, no entanto, atua especificamente<br />
na automatização do processo <strong>de</strong> tratamento e resposta a inci<strong>de</strong>ntes. Outros<br />
frameworks e ferramentas específicos incluem o SIRIOS [KLINGMÜLLER 2005], que<br />
apresenta algumas funcionalida<strong>de</strong>s interessantes, como a <strong>de</strong> gerenciamento <strong>de</strong> contatos <strong>de</strong><br />
segurança <strong>de</strong> uma instituição e a possibilida<strong>de</strong> <strong>de</strong> troca <strong>de</strong> informações <strong>de</strong> segurança com<br />
outros CSIRTs. O SANS Institute <strong>de</strong>senvolveu o Orion [Jarocki 2010], uma distribuição<br />
em Live-CD baseada no BackTrack para o tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança. Apesar<br />
<strong>de</strong> prover boas ferramentas para tratamento, o Orion ainda lida precariamente com a<br />
contenção <strong>de</strong> inci<strong>de</strong>ntes em re<strong>de</strong>s.<br />
Em [Kaiser et al. 2006] os autores propõem um gerenciamento semiautomatizado<br />
dos inci<strong>de</strong>ntes <strong>de</strong> segurança, on<strong>de</strong> os inci<strong>de</strong>ntes menos importantes<br />
são tratados pelo próprio usuário envolvido, ao passo que os inci<strong>de</strong>ntes mais sérios são<br />
encaminhados para uma equipe <strong>de</strong> segurança qualificada. Para possibilitar ao usuário<br />
não-especializado tratar um inci<strong>de</strong>nte, a instituição <strong>de</strong>ve prover documentação suficiente<br />
e compreensível sobre as questões técnicas e organizacionais relacionadas. Os autores<br />
39
propõem um sistema <strong>de</strong> gerenciamento <strong>de</strong> inci<strong>de</strong>ntes, o PRISM (Portal for Reporting<br />
Inci<strong>de</strong>nts and Solution Management), que consiste em três componentes. O primeiro<br />
recebe as notificações no formato IDMEF 2 . O segundo componente contém a lógica<br />
para tratamento <strong>de</strong> inci<strong>de</strong>ntes e medidas corretivas relacionadas. Por fim, o terceiro<br />
componente é responsável pela geração <strong>de</strong> páginas web dinâmicas que informam aos<br />
usuários as soluções indicadas para o inci<strong>de</strong>nte reportado. Entretanto, essa solução não<br />
contempla o tratamento <strong>de</strong> notificações externas, as quais requerem, por exemplo, a<br />
resolução <strong>de</strong> mapeamento entre o NAT efetuado e as máquinas internas.<br />
Farnham [Farnham 2009] apresenta uma solução proprietária da Cisco, chamada<br />
Cisco Security Agent (CSA), e seu impacto nas várias fases do tratamento <strong>de</strong> inci<strong>de</strong>ntes.<br />
O CSA é um sistema <strong>de</strong> prevenção <strong>de</strong> intrusão baseado em hosts (HIPS, do inglês Host<br />
Intrusion Prevention System) que po<strong>de</strong> ser usado tanto em servidores quanto em máquinas<br />
clientes. No CSA, cada host possui um agente e um centro <strong>de</strong> gerenciamento, que <strong>de</strong>fine<br />
as políticas <strong>de</strong> segurança do host e centraliza o registro <strong>de</strong> eventos (logging). O software é<br />
baseado em regras e examina as ativida<strong>de</strong>s do sistema (no agente) e o tráfego <strong>de</strong> re<strong>de</strong> a fim<br />
<strong>de</strong> diferenciar comportamentos normais daqueles indicadores <strong>de</strong> uma anomalia ou ataque.<br />
O autor analisa a a<strong>de</strong>quação do CSA nas etapas <strong>de</strong> tratamento <strong>de</strong> um inci<strong>de</strong>nte, usando<br />
como estudo <strong>de</strong> caso o software malicioso Conficker 3 . As <strong>de</strong>svantagens <strong>de</strong>ssa solução<br />
estão relacionados, principalmente, ao alto custo <strong>de</strong> implantação e <strong>de</strong> sua ina<strong>de</strong>quação a<br />
ambientes heterogêneos <strong>de</strong> re<strong>de</strong>.<br />
Em [Ceron et al. 2010], propõe-se uma arquitetura voltada para <strong>de</strong>tecção e<br />
contenção automatizada <strong>de</strong> máquinas participantes <strong>de</strong> botnets. A arquitetura i) coleta arquivos<br />
binários maliciosos (e.g., através <strong>de</strong> honeypots), ii) extrai informações dos binários<br />
coletados (tais como tentativas <strong>de</strong> acesso a en<strong>de</strong>reços IP suspeitos), iii) utiliza essas<br />
informações na geração <strong>de</strong> assinaturas e monitoramento do tráfego <strong>de</strong> re<strong>de</strong> da instituição,<br />
e iv) prevê a contenção automatizada <strong>de</strong>ssas máquinas por meio, por exemplo, do bloqueio<br />
no firewall daqueles en<strong>de</strong>reços IPs i<strong>de</strong>ntificados. Até nosso conhecimento, o trabalho não<br />
consi<strong>de</strong>ra a tradução automática <strong>de</strong> en<strong>de</strong>reços via NAT e DHCP, enfatizando o tratamento<br />
<strong>de</strong> um tipo específico <strong>de</strong> inci<strong>de</strong>nte: máquinas participantes <strong>de</strong> botnets. Outra limitação<br />
resi<strong>de</strong> no fato da contenção basear-se apenas no en<strong>de</strong>reço IP do host <strong>de</strong>tectado e ser realizada<br />
no firewall da instituição. Tal bloqueio, infelizmente, não previne a propagação <strong>de</strong><br />
ativida<strong>de</strong> maliciosa na re<strong>de</strong> local. Por essas razões, o TRAIRA utiliza o en<strong>de</strong>reço MAC<br />
como i<strong>de</strong>ntificador <strong>de</strong> host (que, apesar da possibilida<strong>de</strong> <strong>de</strong> alteração, requer conhecimentos<br />
avançados para efetuá-la) e permite a escolha da estratégia <strong>de</strong> contenção: bloqueio no<br />
equipamento gerenciável mais próximo ou direcionamento para VLAN <strong>de</strong> quarentena.<br />
2 Motivado pela necessida<strong>de</strong> <strong>de</strong> se <strong>de</strong>finir um padrão <strong>de</strong> arquitetura e comunicação para Sistemas <strong>de</strong><br />
Detecção <strong>de</strong> Intrusão (IDS, do inglês Intrusion Detection System), o IETF, através do grupo <strong>de</strong> trabalho<br />
IDWG (Intrusion Detection Working Group) especificou o protocolo IDXP (Intrusion Detection Exchange<br />
Protocol) [Feinstein and Matthews 2007] e um formato para troca <strong>de</strong> alertas entre IDSs, <strong>de</strong>nominado ID-<br />
MEF (Intrusion Detection Message Exchange Format) [Debar et al. 2007]. Apesar <strong>de</strong> originalmente concebidos<br />
para uso em sistemas IDS, esses padrões também são bastante utilizados para notificações <strong>de</strong><br />
inci<strong>de</strong>ntes <strong>de</strong> segurança.<br />
3 O Conficker, também conhecido como Downadup ou Kido, é um worm que ficou bastante conhecido<br />
pelo número <strong>de</strong> sistemas que conseguiu infectar ao redor do mundo. Ele explora uma vulnerabilida<strong>de</strong><br />
conhecida do MS Windows Server (MS08-067) e po<strong>de</strong> comprometer uma série <strong>de</strong> versões do Windows<br />
[CWG 2011].<br />
40
6. Consi<strong>de</strong>rações finais<br />
Este trabalho apresentou o projeto, implementação e avaliação <strong>de</strong> uma ferramenta para<br />
automatizar o processo <strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança em re<strong>de</strong>s <strong>de</strong> campus<br />
e <strong>de</strong> larga escala. A ferramenta atua em todas etapas do tratamento <strong>de</strong> um inci<strong>de</strong>nte,<br />
o que permite melhor aproveitamento dos recursos humanos <strong>de</strong>stinados à gestão e<br />
operacionalização da segurança da informação.<br />
Os requisitos <strong>de</strong> hardware e software necessários à implantação e execução <strong>de</strong>ssa<br />
solução são triviais e muito pouco onerosos, o que reforça a viabilida<strong>de</strong> <strong>de</strong> sua aplicação<br />
prática em ambientes complexos e heterogêneos, tais como instituições acadêmicas <strong>de</strong><br />
ensino e pesquisa, governamentais ou corporações privadas.<br />
Atualmente, o TRAIRA encontra-se em produção e uso efetivo na re<strong>de</strong> <strong>de</strong> campus<br />
da UFBA <strong>de</strong>s<strong>de</strong> setembro <strong>de</strong> 2010, sendo usado como ferramenta primária no tratamento<br />
do ciclo <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança das notificações recebidas pela instituição e produzidas<br />
internamente. Em verda<strong>de</strong>, baseados em nossas <strong>de</strong>mandas e na situação existentes<br />
em outras instituições parceiras, consi<strong>de</strong>ramos que os problemas solucionados pela<br />
ferramenta são úteis a diversas instituições. Assim, nossa intenção é compartilhar nossa<br />
experiência no <strong>de</strong>senvolvimento e uso <strong>de</strong>ssa ferramenta a fim <strong>de</strong> aprimorar os processos<br />
<strong>de</strong> tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança em outras instituições brasileiras e, como<br />
consequência, estabelecer parcerias <strong>de</strong> pesquisa e inovação com potenciais usuários e <strong>de</strong>senvolvedores<br />
interessados.<br />
Como trabalhos futuros, <strong>de</strong>stacam-se a necessida<strong>de</strong> <strong>de</strong> otimização no armazenamento<br />
e consulta dos logs, principalmente das traduções NAT (e.g. através <strong>de</strong> informações<br />
resumidas em bancos <strong>de</strong> dados); adoção <strong>de</strong> padrões para notificações (e.g. IDMEF)<br />
no parser; extensão para outros mapeamentos <strong>de</strong> en<strong>de</strong>reço <strong>de</strong> re<strong>de</strong>, como no caso do<br />
uso <strong>de</strong> proxy <strong>de</strong> cache http, on<strong>de</strong> uma requisição HTTP é intermediada pelo proxy e<br />
assim o en<strong>de</strong>reço <strong>de</strong> origem visto no servidor remoto é o en<strong>de</strong>reço do proxy e não<br />
do cliente original; adicionar suporte a outros dispositivos <strong>de</strong> NAT, por exemplo o PF-<br />
Sense/FreeBSD.<br />
7. Agra<strong>de</strong>cimentos<br />
Este trabalho foi parcialmente financiando pela FAPESB.<br />
Referências<br />
Arvidsson, J., Cormack, A., Demchenko, Y., and Meijer, J. (2001). TERENA’S Inci<strong>de</strong>nt<br />
Object Description and Exchange Format Requirements. RFC 3067 (Informational).<br />
Disponível em: http://www.ietf.org/rfc/rfc3067.txt. Último acesso em Julho <strong>de</strong> 2011.<br />
BestPractical (2011). RT: Request Tracker. Disponível em:<br />
http://www.bestpractical.com/rt/. Último acesso em Julho <strong>de</strong> 2011.<br />
Ceron, J., Boos Jr, A., Machado, C., Martins, F., and Rey, L. (2009). O processo <strong>de</strong><br />
tratamento <strong>de</strong> inci<strong>de</strong>ntes <strong>de</strong> segurança. IV Workshop <strong>de</strong> TI das IFES.<br />
Ceron, J., Granville, L., and Tarouco, L. (2010). Uma Arquitetura Baseada em Assinaturas<br />
para Mitigação <strong>de</strong> Botnets. In X Simpósio Brasileiro em Segurança da Informação e<br />
<strong>de</strong> Sistemas Computacionais (SBSEG’10), pages 105–118. SBC.<br />
41
CERT.Bahia (2010). Estatísticas do CERT.Bahia. Disponível em:<br />
http://www.certbahia.pop-ba.rnp.br/Estatisticas. Último acesso em Julho <strong>de</strong> 2011.<br />
CWG (2011). Conficker Working Group. Disponível em:<br />
http://www.confickerworkinggroup.org/wiki/. Último acesso em Julho <strong>de</strong> 2011.<br />
Debar, H., Curry, D., and Feinstein, B. (2007). The Intrusion Detection Message<br />
Exchange Format (IDMEF). RFC 4765 (Experimental). Disponível em:<br />
http://www.ietf.org/rfc/rfc4765.txt. Último acesso em Julho <strong>de</strong> 2011.<br />
Droms, R. (1997). Dynamic Host Configuration Protocol. RFC 2131 (Draft Standard).<br />
Updated by RFCs 3396, 4361, 5494.<br />
Egevang, K. and Francis, P. (1994). The IP Network Address Translator (NAT). RFC<br />
1631 (Informational). Obsoleted by RFC 3022.<br />
Farnham, G. (2009). Cisco Security Agent and Inci<strong>de</strong>nt Handling. SANS Institute InfoSec<br />
Reading Room.<br />
Feinstein, B. and Matthews, G. (2007). The Intrusion Detection Exchange<br />
Protocol (IDXP). RFC 4767 (Experimental). Disponível em:<br />
http://www.ietf.org/rfc/rfc4767.txt. Último acesso em Julho <strong>de</strong> 2011.<br />
Honeynet.BR (2011). Brazilian Honeypots Alliance. Disponível em:<br />
http://www.honeypots-alliance.org.br/. Último acesso Julho <strong>de</strong> 2011.<br />
Jarocki, J. (2010). Orion Inci<strong>de</strong>nt Response Live CD.<br />
Kaiser, J., Vitzthum, A., Holleczek, P., and Dressler, F. (2006). Automated resolving of security<br />
inci<strong>de</strong>nts as a key mechanism to fight massive infections of malicious software.<br />
In GI SIDAR International Conference on IT-Inci<strong>de</strong>nt Management and IT-Forensics<br />
(IMF 2006), volume LNI P-97, pages 92–103.<br />
KLINGMÜLLER, T. (2005). SIRIOS: A Framework for CERTs. FIRST Conference on<br />
Computer Security Inci<strong>de</strong>nt Handling.<br />
Lun<strong>de</strong>ll, M. (2009). Inci<strong>de</strong>nt Handling as a Service. SANS Institute InfoSec Reading<br />
Room.<br />
OTRS (2011). Open source trouble ticket system. Disponível em: http://www.otrs.org/.<br />
Último acesso em Julho <strong>de</strong> 2011.<br />
Rekhter, Y., Moskowitz, B., Karrenberg, D., <strong>de</strong> Groot, G. J., and Lear, E. (1996). Address<br />
Allocation for Private Internets. RFC 1918 (Best Current Practice). Disponível em:<br />
http://www.ietf.org/rfc/rfc1918.txt. Último acesso em Julho <strong>de</strong> 2011.<br />
Scarfone, K., Grance, T., and Masone, K. (2008). Computer Security Inci<strong>de</strong>nt Handling<br />
Gui<strong>de</strong>. NIST Special Publication, 800–61.<br />
TRAIRA (2011). TRAIRA – Tratamento <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Re<strong>de</strong> Automatizado. Disponível<br />
em: http://www.pop-ba.rnp.br/files/sw/rt-traira.tgz. Último acesso em Julho<br />
<strong>de</strong> 2011.<br />
Werlinger, R., Botta, D., and Beznosov, K. (2007). Detecting, analyzing and responding<br />
to security inci<strong>de</strong>nts: a qualitative analysis. In Proceedings of the 3rd symposium on<br />
Usable privacy and security, pages 149–150. ACM.<br />
42
Uma Ontologia para Mitigar XML Injection<br />
Thiago M. Rosa, Altair O. Santin, Andreia Malucelli<br />
Programa <strong>de</strong> Pós-Graduação em Informática (PPGIa) – Pontifícia Universida<strong>de</strong> Católica<br />
do Paraná (PUCPR) – Curitiba – PR – Brasil<br />
{tmattosr,santin,malu}@ppgia.puc.br<br />
Abstract. The un<strong>de</strong>rlying technologies used by web services bring well-known<br />
vulnerabilities from other domains to this new environment. Anomaly-based<br />
intrusion <strong>de</strong>tection approaches produce high false positive rates, while<br />
signature-based intrusion <strong>de</strong>tection approaches do not <strong>de</strong>tect attack<br />
variations. This paper presents a novel hybrid attack <strong>de</strong>tection engine that<br />
brings together the main advantages of these classical <strong>de</strong>tection approaches.<br />
An ontology is applied as a strategy-based knowledge-base to assist mitigating<br />
XML injection attacks, while maintaining low false positive <strong>de</strong>tection rates.<br />
Resumo. As tecnologias utilizadas em web services trazem vulnerabilida<strong>de</strong>s<br />
conhecidas em outros domínios para este novo ambiente. As abordagens <strong>de</strong><br />
<strong>de</strong>tecção <strong>de</strong> intrusão baseadas em anomalia geralmente produzem alta taxa<br />
<strong>de</strong> falsos positivos, enquanto que abordagens baseadas em assinatura não<br />
<strong>de</strong>tectam variações <strong>de</strong> ataque. Este artigo apresenta um mecanismo híbrido<br />
<strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques que agrega as principais vantagens <strong>de</strong>stas abordagens<br />
clássicas. Aplica-se uma ontologia como a base <strong>de</strong> conhecimento <strong>de</strong> ataques<br />
baseada em estratégia (sequencia enca<strong>de</strong>ada <strong>de</strong> ações) para mitigar ataques<br />
<strong>de</strong> XML injection, mantendo baixas as taxas <strong>de</strong> falsos positivos.<br />
1. Introdução<br />
Web services vem sendo usados crescentemente em sistemas distribuídos na internet, já<br />
que provêm um meio padrão <strong>de</strong> interoperabilida<strong>de</strong> entre diferentes aplicações, que<br />
po<strong>de</strong>m estar executando em uma varieda<strong>de</strong> <strong>de</strong> plataformas e frameworks [Booth et al.<br />
2004]. Entretanto, as tecnologias utilizadas por web services (e.g. SOAP − Simple<br />
Object Access Protocol, HTTP − Hypertext Transfer Protocol e XML − Extensible<br />
Markup Language) favoreceram a exploração <strong>de</strong> vulnerabilida<strong>de</strong>s conhecidas neste<br />
novo ambiente.<br />
De acordo com o relatório anual <strong>de</strong> segurança do Open Web Application<br />
Security Project [OWASP 2009], ataques <strong>de</strong> injection estariam entre as<br />
vulnerabilida<strong>de</strong>s mais exploradas em 2010. Esta estatística se confirma no ranking das<br />
25 falhas <strong>de</strong> software mais perigosas [CWE e SANS 2010], pois as duas primeiras<br />
posições da lista são relacionadas a injections.<br />
Este artigo aborda especialmente ataques <strong>de</strong> XML injection − XML Cross-Site<br />
Scripting e XPath/XQuery injection. XML injections são ataques que produzem alguma<br />
mudança nos componentes internos <strong>de</strong> um documento XML tentando comprometer<br />
aplicações que executam web services. Isto po<strong>de</strong> ser alcançado inserindo conteúdo<br />
malicioso em uma mensagem XML, por exemplo, através da inserção <strong>de</strong> caracteres<br />
XML inválidos [CWE 2011].<br />
Uma maneira <strong>de</strong> proteger web services <strong>de</strong> ataques <strong>de</strong> injection é através <strong>de</strong><br />
43
sistemas <strong>de</strong> <strong>de</strong>tecção baseados em assinaturas [Siddavatam e Gadge 2008]. Uma<br />
assinatura é um payload que i<strong>de</strong>ntifica um ataque através <strong>de</strong> um conteúdo malicioso.<br />
Sistemas <strong>de</strong> <strong>de</strong>tecção baseados em assinaturas normalmente produzem baixa taxa <strong>de</strong><br />
erros <strong>de</strong> classificação dos ataques – conhecidos como falsos positivos. Entretanto, uma<br />
limitação importante da <strong>de</strong>tecção <strong>de</strong> ataques baseada em assinaturas é que esta<br />
abordagem não <strong>de</strong>tecta ataques <strong>de</strong>sconhecidos (novos), mesmo que estes representem<br />
pequenas variações <strong>de</strong> um payload conhecido.<br />
Outra forma <strong>de</strong> proteger web services contra ataques <strong>de</strong> injection é através <strong>de</strong><br />
sistemas <strong>de</strong> <strong>de</strong>tecção baseados em anomalias [Yee, Shin e Rao 2007], que aplicam uma<br />
técnica normalmente baseada em algum tipo <strong>de</strong> comportamento (implementado como<br />
um perfil). Por exemplo, os ataques po<strong>de</strong>m ser mo<strong>de</strong>lados/classificados em duas classes<br />
distintas, uma para comportamentos normais − contendo todas as ações esperadas para<br />
tal perfil − e outra representando ataques, i.e., envolvendo ações que não são<br />
consi<strong>de</strong>radas normais. Técnicas <strong>de</strong> <strong>de</strong>tecção baseadas em anomalias conseguem <strong>de</strong>tectar<br />
novos ataques, mas na maioria das vezes produzem alta taxa <strong>de</strong> falsos positivos (erros<br />
<strong>de</strong> avaliação) na <strong>de</strong>tecção.<br />
A técnica <strong>de</strong> <strong>de</strong>tecção baseada em assinaturas é a mais utilizada, porém, permite<br />
ataques do tipo zero-day, que ocorrem quando uma vulnerabilida<strong>de</strong> (falha <strong>de</strong> software)<br />
se torna publicamente conhecida antes que sua correção esteja disponível para ser<br />
inserida na base <strong>de</strong> assinaturas do sistema <strong>de</strong> <strong>de</strong>tecção [Zero Day Initiative 2011].<br />
In<strong>de</strong>pen<strong>de</strong>ntemente <strong>de</strong> como uma vulnerabilida<strong>de</strong> se torna publicamente<br />
conhecida, a efetivida<strong>de</strong> <strong>de</strong> um ataque zero-day po<strong>de</strong> variar <strong>de</strong> horas até meses [Zero<br />
Day Initiative 2011].<br />
A abordagem <strong>de</strong> <strong>de</strong>tecção clássica constrói sua base <strong>de</strong> assinaturas catalogando<br />
os ataques in<strong>de</strong>pen<strong>de</strong>ntemente um do outro. Neste caso, não é levado em consi<strong>de</strong>ração<br />
que a estratégia (engine) <strong>de</strong> um ataque é similar para a maioria das categorias e que<br />
geralmente só há variações no payload, gerado em função <strong>de</strong> alterações na estratégia <strong>de</strong><br />
cada ataque. Porém, os resultados <strong>de</strong>sta mudança são suficientes para confundir a<br />
abordagem <strong>de</strong> <strong>de</strong>tecção por anomalias, produzindo alertas falhos (falsos positivos), ou<br />
driblar a engine <strong>de</strong> <strong>de</strong>tecção da abordagem por assinaturas.<br />
O objetivo <strong>de</strong>ste trabalho é mo<strong>de</strong>lar os ataques através <strong>de</strong> uma estratégia<br />
representada por classes e seus relacionamentos em uma ontologia. Acredita-se que<br />
conhecendo a estratégia <strong>de</strong> um ataque, que <strong>de</strong>fine o relacionamento semântico entre<br />
elementos do mesmo, po<strong>de</strong>-se facilmente <strong>de</strong>tectar variações nos payloads e, como<br />
consequência, adicioná-los automaticamente à base <strong>de</strong> conhecimento da ontologia.<br />
A contribuição <strong>de</strong>sta proposta consiste em prover uma abordagem <strong>de</strong> sistema <strong>de</strong><br />
<strong>de</strong>tecção para XML injection baseado em estratégia (XID), para também mitigar<br />
ataques zero-day resultantes <strong>de</strong> variações dos ataques contidos na ontologia. Já que<br />
ataques novos (<strong>de</strong>sconhecidos) são <strong>de</strong>rivados <strong>de</strong> estratégias conhecidas, <strong>de</strong>verá ser<br />
observada uma baixa taxa <strong>de</strong> falsos positivos na <strong>de</strong>tecção. Para este propósito<br />
apresenta-se o sistema <strong>de</strong> <strong>de</strong>tecção baseado em estratégia como uma abordagem híbrida<br />
− suportando <strong>de</strong>tecção baseada em anomalias, <strong>de</strong>rivada da <strong>de</strong>tecção baseada em<br />
assinaturas. Aplica-se uma ontologia para construir a base <strong>de</strong> ataques <strong>de</strong> XML injection<br />
contra web services.<br />
O restante do artigo está organizado da seguinte forma: a seção 2 aborda<br />
brevemente ontologia; a seção 3 explica como foi construída a ontologia baseada em<br />
estratégia; a seção 4 apresenta a proposta (XID) e alguns cenários <strong>de</strong> avaliação; na<br />
seção 5 são <strong>de</strong>scritos alguns trabalhos relacionados e a seção 6 conclui o trabalho.<br />
44
2. Ontologia<br />
Uma ontologia <strong>de</strong>screve um vocabulário comum usando conceitos (objetos) e<br />
proprieda<strong>de</strong>s (relacionamentos) que são importantes para um <strong>de</strong>terminado domínio.<br />
Esta <strong>de</strong>scrição é alcançada através <strong>de</strong> um conjunto <strong>de</strong> <strong>de</strong>finições que associam os<br />
conceitos à linguagem humana, <strong>de</strong>screvendo seus significados e um conjunto <strong>de</strong><br />
axiomas (formais) que restringem a interpretação e o uso <strong>de</strong>stes conceitos<br />
[Konstantinou, Spanos e Mitrou 2008]. Por exemplo, no domínio “alunos <strong>de</strong> uma<br />
universida<strong>de</strong>”, conceitos po<strong>de</strong>riam ser aluno, professor, curso, disciplina, etc. Os<br />
relacionamentos po<strong>de</strong>riam ser “é aluno <strong>de</strong>”, “é professor <strong>de</strong>”, “é disciplina <strong>de</strong>”, etc.<br />
Outro recurso <strong>de</strong> uma ontologia é permitir interoperabilida<strong>de</strong> entre sistemas<br />
através <strong>de</strong> seu vocabulário comum, permitindo que inferências sejam feitas <strong>de</strong> acordo<br />
com os axiomas pré-<strong>de</strong>finidos [Dou, McDermott e Qi 2004]. Axiomas são <strong>de</strong>finições,<br />
expressas através <strong>de</strong> lógica <strong>de</strong> primeira or<strong>de</strong>m, que envolvem classes, instâncias,<br />
relacionamentos e operadores lógicos. Axiomas são utilizados para representar uma<br />
verda<strong>de</strong> reconhecida para um <strong>de</strong>terminado domínio <strong>de</strong> conhecimento. Os mesmos são<br />
avaliados por máquinas <strong>de</strong> inferência – software que faz <strong>de</strong>duções a partir do<br />
conhecimento expresso em uma ontologia, com o intuito <strong>de</strong> <strong>de</strong>rivar <strong>de</strong>sta ontologia um<br />
novo conhecimento. Tomando como exemplo o domínio <strong>de</strong> conhecimento “alunos <strong>de</strong><br />
uma universida<strong>de</strong>” citado acima, um axioma para tal domínio po<strong>de</strong>ria ser “todo aluno<br />
do curso <strong>de</strong> matemática é aluno da disciplina álgebra”, apresentado aqui em lógica <strong>de</strong><br />
primeira or<strong>de</strong>m:<br />
“AlunoDisciplinaAlgebra ≡ ∃éAlunoDe.CursoMatematica”<br />
De acordo com Gruber [1993], os critérios preliminares que <strong>de</strong>vem ser levados<br />
em consi<strong>de</strong>ração antes <strong>de</strong> se construir uma ontologia são clareza, coerência,<br />
extensibilida<strong>de</strong> e um mínimo compromisso ontológico.<br />
Observando esses critérios, algumas escolhas <strong>de</strong>vem ser feitas quando se vai<br />
construir uma ontologia. Por exemplo, <strong>de</strong>finições <strong>de</strong> classes e axiomas <strong>de</strong>vem restringir<br />
o número <strong>de</strong> interpretações possíveis para satisfazer o critério da clareza. Porém,<br />
minimizar o compromisso ontológico significa admitir vários possíveis mo<strong>de</strong>los para<br />
um domínio <strong>de</strong> conhecimento. Portanto, <strong>de</strong>cisões <strong>de</strong> mo<strong>de</strong>lagem <strong>de</strong>vem ser tomadas <strong>de</strong><br />
acordo com o objetivo da ontologia.<br />
A principal vantagem <strong>de</strong> se utilizar ontologia para mo<strong>de</strong>lar dados é o fato <strong>de</strong>sta<br />
prover uma semântica explícita e formal. Além disto, a ontologia po<strong>de</strong> ser<br />
compartilhada (utilizada em vários sistemas escritos em linguagens diferentes) e<br />
reutilizada − adaptada para contemplar outros objetivos. Através do uso <strong>de</strong> inferências,<br />
ontologias também po<strong>de</strong>m prover informações sobre um <strong>de</strong>terminado domínio que não<br />
estejam explicitamente <strong>de</strong>finidas na base <strong>de</strong> conhecimento [Konstantinou, Spanos e<br />
Mitrou 2008]. Usando o exemplo do domínio <strong>de</strong> conhecimento “alunos <strong>de</strong> uma<br />
universida<strong>de</strong>”, se existe um aluno do curso <strong>de</strong> matemática na base <strong>de</strong> conhecimento da<br />
ontologia, a informação <strong>de</strong> que esse aluno está inscrito na disciplina álgebra não<br />
precisaria ser manualmente adicionada na ontologia, pois esta informação seria<br />
automaticamente inferida a partir <strong>de</strong> um axioma.<br />
3. Ontologia Baseada em Estratégia<br />
Para satisfazer os critérios propostos por Gruber [Gruber 1993] na construção da<br />
ontologia, utilizou-se inicialmente a taxonomia <strong>de</strong> ataques apresentada pelo website da<br />
CAPEC [CAPEC 2011]. A CAPEC <strong>de</strong>screve mecanismos utilizados para explorar<br />
falhas <strong>de</strong> software <strong>de</strong> acordo com a perspectiva do atacante. Esta <strong>de</strong>scrição é feita em<br />
45
alto nível, por isto a ontologia foi refinada baseando-se também em algumas<br />
ferramentas <strong>de</strong> teste <strong>de</strong> segurança (seção 4.1).<br />
A ontologia proposta é composta <strong>de</strong> classes e proprieda<strong>de</strong>s (Fig. 1), instâncias<br />
(Fig. 2) e axiomas. Para facilitar o entendimento, neste artigo utiliza-se somente uma<br />
classe <strong>de</strong> ataques a web services (XMLInjection) e três subclasses (XPathInjection,<br />
XQueryInjection e XSSInjection) para exemplificar a estratégia dos ataques. As duas<br />
superclasses da ontologia são AttackAction e WebServicesAttack. AttackAction possui<br />
subclasses contendo instâncias <strong>de</strong> ações suspeitas (payloads) capturadas na re<strong>de</strong>.<br />
Figura 1. Diagrama <strong>de</strong> classes da ontologia<br />
A classe WebServicesAttack possui subclasses representando categorias <strong>de</strong><br />
ataques a web services. Cada uma <strong>de</strong>stas subclasses possui instâncias representando<br />
assinaturas <strong>de</strong> ataques conhecidos. A assinatura <strong>de</strong> uma instância <strong>de</strong> ataque é<br />
representada na ontologia por relacionamentos que a mesma tem com ações –<br />
implementados através da proprieda<strong>de</strong> hasAttackAction. Uma instância <strong>de</strong> ataque po<strong>de</strong><br />
ter uma ou mais ações e uma ação po<strong>de</strong> ser parte <strong>de</strong> várias instâncias <strong>de</strong> ataque.<br />
Figura 2. Exemplos <strong>de</strong> instâncias da ontologia<br />
Na ontologia, os axiomas <strong>de</strong>finidos para uma classe (categoria <strong>de</strong> ataque)<br />
restringem o número e o tipo <strong>de</strong> ações que as instâncias daquela classe terão. Além<br />
disso, neste caso os axiomas também po<strong>de</strong>m ajudar a máquina <strong>de</strong> inferência a <strong>de</strong>duzir se<br />
um tipo <strong>de</strong> ataque ocorreu quando o padrão i<strong>de</strong>ntificado (instância) ainda não está na<br />
base <strong>de</strong> conhecimento da ontologia, permitindo que este novo conhecimento seja<br />
adicionado à ontologia a partir <strong>de</strong>sta <strong>de</strong>dução. Os axiomas foram mo<strong>de</strong>lados para cada<br />
“XQueryInjection ≡ ∃hasAttackAction.Discovery ⨅ ∃hasAttackAction.ProbeXPath ⨅<br />
∃hasAttackAction.InjectXQuery” (1)<br />
46
classe <strong>de</strong> ataque baseando-se nas estratégias <strong>de</strong> ataque propostas pela CAPEC, e foram<br />
validados/ajustados baseando-se em ferramentas <strong>de</strong> teste <strong>de</strong> segurança para web<br />
services (seção 4.1). Por exemplo, na ontologia criou-se o axioma (1) para a classe<br />
XQueryInjection, representado aqui através <strong>de</strong> lógica <strong>de</strong> primeira or<strong>de</strong>m.<br />
Este axioma instrui a máquina <strong>de</strong> inferência a <strong>de</strong>duzir que qualquer ataque<br />
possuidor <strong>de</strong> uma ação do tipo Discovery, uma ação do tipo ProbeXPath, e uma ação do<br />
tipo InjectXQuery terá que obrigatoriamente ser uma instância da classe<br />
XQueryInjection. Na lógica <strong>de</strong> <strong>de</strong>tecção do XID isto significa que um ataque do tipo<br />
XQueryInjection ocorreu.<br />
Um exemplo prático do uso <strong>de</strong>ste axioma específico é representado pelos<br />
pacotes (2), (3) e (4), <strong>de</strong>tectados pelo XID antes da instância <strong>de</strong> ataque xqueryInjection1<br />
ser adicionada na ontologia.<br />
“GET /WSDigger_WS/WSDigger_WS.asmx?wsdl HTTP/1.0\r\n” (2)<br />
O pacote (2) representa um usuário acessando o documento WSDL <strong>de</strong> um web<br />
service, fazendo com que o XID crie um relacionamento (através da proprieda<strong>de</strong><br />
hasAttackAction) com a ação específica getWSDL (Fig. 2) − uma das instâncias da<br />
classe Discovery na ontologia.<br />
“//*” (3)<br />
O pacote (3) contém caracteres (‘//*’) que não <strong>de</strong>veriam estar presentes em<br />
nenhum campo <strong>de</strong> um pacote enviado por um usuário em uma operação XPath. Com<br />
isto, o XID cria outro relacionamento, <strong>de</strong>sta vez com a ação probeXPath1 (Fig. 2) −<br />
instância da classe ProbeXPath que representa o payload ‘//*’.<br />
“count(/child::no<strong>de</strong>())” (4)<br />
Finalmente, o pacote (4) contém o payload ‘count(’, que representa uma ação<br />
ilegal <strong>de</strong> um usuário, neste caso tentando obter o número <strong>de</strong> ocorrências <strong>de</strong> algum<br />
elemento da estrutura da base <strong>de</strong> dados XML. Isto fez o XID criar um relacionamento<br />
com a ação injectXQuery1 (Fig. 2), instância da classe InjectXQuery na ontologia.<br />
O XID então inferiu na ontologia para verificar se essas ações po<strong>de</strong>riam<br />
representar um ataque. Observe que mesmo a base <strong>de</strong> conhecimento da ontologia não<br />
contendo esta instância <strong>de</strong> ataque específico, a máquina <strong>de</strong> inferência consi<strong>de</strong>rou o<br />
conjunto <strong>de</strong> eventos capturados como uma instância da classe XQueryInjection – <strong>de</strong><br />
acordo com o axioma <strong>de</strong>finido. Isto permitiu à ontologia apren<strong>de</strong>r um novo ataque, pois<br />
em seguida o mesmo foi automaticamente adicionado pelo XID à base <strong>de</strong> conhecimento<br />
na forma <strong>de</strong> uma instância da classe XQueryInjection. Ou seja, na próxima vez que este<br />
ataque ocorrer será <strong>de</strong>tectado sem que a máquina <strong>de</strong> inferência precise ser acionada.<br />
As instâncias e relacionamentos na ontologia po<strong>de</strong>m ser comparados com os<br />
padrões <strong>de</strong> ataques conhecidos em uma abordagem <strong>de</strong> <strong>de</strong>tecção baseada em assinaturas.<br />
Porém, o padrão <strong>de</strong> ataque na ontologia representa a estratégia do ataque (sequência<br />
bem <strong>de</strong>finida <strong>de</strong> ações), enquanto que na abordagem <strong>de</strong> <strong>de</strong>tecção baseada em<br />
assinaturas o padrão é apenas um payload. Adicionalmente, as classes e axiomas da<br />
ontologia permitem que a máquina <strong>de</strong> inferência <strong>de</strong>duza que um ataque ocorreu mesmo<br />
que esse ainda não esteja na base <strong>de</strong> conhecimento, dando à abordagem proposta<br />
similarida<strong>de</strong> com a abordagem <strong>de</strong> <strong>de</strong>tecção baseada em anomalias. Esta similarida<strong>de</strong> do<br />
XID com as outras duas abordagens <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques o torna uma abordagem<br />
híbrida que explora as melhores características das outras duas.<br />
4. Detecção <strong>de</strong> XML Injection Baseada em Ontologia<br />
A ontologia proposta foi mo<strong>de</strong>lada utilizando a ferramenta Protégé [Stanford 2011] e a<br />
47
linguagem Web Ontology Language [McGuinness e Harmelen 2009].<br />
Utilizando o diagrama <strong>de</strong> classes da Fig. 1 mo<strong>de</strong>lou-se a estrutura das classes na<br />
ontologia (lado esquerdo da Fig. 3), criou-se instâncias <strong>de</strong> ataques (e.g.<br />
xqueryInjection1) e suas proprieda<strong>de</strong>s e relacionamentos (lado direito da Fig. 3).<br />
Figura 3. Visão parcial da ontologia proposta catalogada no Protégé<br />
A máquina <strong>de</strong> inferência Pellet [Clarck&Parsia 2011] foi invocada através da<br />
interface DIG [Bechhofer 2006] no Protégé para inferir na ontologia. Na fase <strong>de</strong><br />
mo<strong>de</strong>lagem da ontologia a máquina <strong>de</strong> inferência po<strong>de</strong> sugerir mudanças estruturais e<br />
i<strong>de</strong>ntificar inconsistências, baseando-se nos axiomas criados para as classes.<br />
Primeiramente, as classes XQueryInjection e XPathInjection estavam no mesmo<br />
nível (classes irmãs) abaixo da classe XMLInjection, como sugerido pela taxonomia da<br />
CAPEC. Entretanto após a execução do Pellet, esse sugeriu que XQueryInjection<br />
<strong>de</strong>veria ser uma subclasse <strong>de</strong> XPathInjection. Depois <strong>de</strong> analisar tal inferência,<br />
concluiu-se que esta sugestão fazia sentido, já que a XQueryInjection possui todas as<br />
restrições da XPathInjection. Também é possível encontrar fundamentação para isto no<br />
site da W3C [Boag et al. 2011], que sugere que a linguagem XQuery seja uma extensão<br />
da XPath. A inferência, neste caso, ajudou a aperfeiçoar a organização das classes <strong>de</strong><br />
ataque na ontologia e, por conseguinte, a tornar os resultados da <strong>de</strong>tecção mais efetivos.<br />
4.1. Protótipo<br />
Para avaliar a ontologia proposta foi <strong>de</strong>senvolvido um protótipo <strong>de</strong> sistema <strong>de</strong> <strong>de</strong>tecção<br />
<strong>de</strong> intrusão (Fig. 4), utilizando a tecnologia Java [Oracle 2011].<br />
Para capturar pacotes na re<strong>de</strong> foi utilizada a Jpcap [SourceForge 2011], uma<br />
biblioteca <strong>de</strong> captura <strong>de</strong> pacotes <strong>de</strong> re<strong>de</strong> para aplicações Java. A Jpcap po<strong>de</strong> filtrar<br />
pacotes IP e TCP, que são então transferidos para o módulo <strong>de</strong> <strong>de</strong>tecção, cuja função é<br />
analisar conteúdos relativos a web services – conteúdo codificado em XML que serve<br />
para <strong>de</strong>tecção no XID.<br />
A base <strong>de</strong> conhecimento da ontologia foi manipulada pelo protótipo em tempo<br />
<strong>de</strong> execução utilizando o framework Jena [SourceForge 2011], que já possui uma<br />
interface nativa do Pellet. As instâncias <strong>de</strong> ataque foram consultadas utilizando<br />
SPARQL [Prud'hommeaux e Seaborne 2008], uma linguagem para consulta em<br />
arquivos RDF e OWL (arquivo da ontologia).<br />
As estratégias dos ataques (extraídas inicialmente da CAPEC) foram refinadas e<br />
validadas utilizando o framework Metasploit [Metasploit 2011] e algumas das<br />
ferramentas <strong>de</strong> teste <strong>de</strong> segurança sugeridas pelo Open Web Application Security<br />
Project [OWASP 2011] para gerar ataques <strong>de</strong> XPath/XQuery injection. Também foram<br />
utilizados scripts contidos no site ha.ckers [Hansen 2008] para gerar ataques <strong>de</strong> XML<br />
48
Cross-Site Scripting. O sniffer Wireshark [Combs 2011] foi utilizado para capturar<br />
pacotes na re<strong>de</strong> para análise funcional dos módulos do protótipo.<br />
Figura 4. Visão geral da arquitetura do XID<br />
Uma visão geral do funcionamento do módulo <strong>de</strong> <strong>de</strong>tecção e inferência do XID<br />
é apresentada na Fig. 5. É possível observar que quando uma ação é <strong>de</strong>tectada (evento i)<br />
em um pacote da re<strong>de</strong> pela primeira vez o protótipo cria uma instância (evento ii) <strong>de</strong><br />
ataque (por enquanto sem persisti-la na ontologia), criando também um relacionamento<br />
da instância com esta ação (evento iii). Ou seja, a estratégia <strong>de</strong> um possível ataque<br />
começa a ser perseguida.<br />
A seguir o protótipo verifica se existe alguma instância na base <strong>de</strong> conhecimento<br />
da ontologia que seja idêntica à criada anteriormente (evento iv) – o que indicaria que o<br />
ataque é conhecido (evento v). Isto é feito através <strong>de</strong> uma busca na ontologia por uma<br />
instância <strong>de</strong> ataque que esteja relacionada exatamente com as mesmas ações<br />
encontradas na <strong>de</strong>tecção até este evento.<br />
Figura 5. Fluxograma <strong>de</strong> <strong>de</strong>tecção do XID<br />
Quando não é encontrada uma instância idêntica a criada no evento ii, o<br />
protótipo tenta inferir um novo ataque a partir das informações contidas na base <strong>de</strong><br />
49
conhecimento da ontologia (evento vi), verificando se a instância po<strong>de</strong> ser consi<strong>de</strong>rada<br />
uma variação <strong>de</strong> ataque.<br />
É através <strong>de</strong>sta inferência, levando em conta classes e axiomas na ontologia, que<br />
a abordagem tenta apren<strong>de</strong>r novos ataques e adicioná-los à base <strong>de</strong> conhecimento. Não<br />
chegando a uma inferência conclusiva, o protótipo continua analisando os próximos<br />
pacotes até encontrar uma nova ação. Esta nova ação é adicionada à instância (contendo<br />
agora duas ações) e novamente é verificado se um ataque ocorreu.<br />
Este ciclo <strong>de</strong> eventos ocorre até que uma instância seja apontada como um<br />
ataque <strong>de</strong> acordo com o conjunto <strong>de</strong> ações <strong>de</strong>tectadas, quando então a sequência do<br />
algoritmo <strong>de</strong> <strong>de</strong>tecção é reiniciada.<br />
Um ataque po<strong>de</strong> ser alertado pelo protótipo (evento v) se for encontrada uma<br />
instância idêntica na ontologia (através do SPARQL) ou se for inferida uma instância<br />
como um novo ataque (através do Pellet).<br />
Quando um ataque é inferido, antes <strong>de</strong> alertar o ataque o protótipo verifica se a<br />
classe da instância inferida contém subclasses, o que significa que há possibilida<strong>de</strong> do<br />
ataque ser mais específico. Caso encontre subclasses na ontologia, o protótipo aguarda a<br />
próxima ação a ser <strong>de</strong>tectada e faz uma nova inferência. Se esta nova inferência não<br />
alertar nenhuma subclasse mais específica, o protótipo alerta o ataque inferido<br />
inicialmente como uma mensagem informativa (evento viii), o que significa que o<br />
ataque po<strong>de</strong> não estar completo ou que se trata <strong>de</strong> uma nova categoria (subclasse) <strong>de</strong><br />
ataques. Em caso contrário alerta o ataque – porque a subclasse mais específica foi<br />
alcançada.<br />
Além <strong>de</strong> emitir o alerta o protótipo adiciona a nova instância à base <strong>de</strong><br />
conhecimento da ontologia (evento vii), abaixo da classe correspon<strong>de</strong>nte. Assim, o<br />
protótipo e a ontologia (XID) po<strong>de</strong>m ser consi<strong>de</strong>rados um sistema <strong>de</strong> <strong>de</strong>tecção com uma<br />
abordagem híbrida. O XID permite <strong>de</strong>tecção baseada em assinaturas através das<br />
instâncias, mas também permite a <strong>de</strong>tecção <strong>de</strong> variações <strong>de</strong> ataques através <strong>de</strong><br />
inferência nas classes e axiomas.<br />
4.2. Avaliação quantitativa<br />
Para avaliar a eficiência do XID foram <strong>de</strong>senvolvidos três cenários. No primeiro foi<br />
aplicado SPARQL, no segundo Pellet e no terceiro um arquivo texto – base <strong>de</strong><br />
assinaturas Snort [Sourcefire 2011].<br />
O objetivo dos experimentos foi comparar a escalabilida<strong>de</strong> e o <strong>de</strong>sempenho da<br />
base <strong>de</strong> conhecimento da ontologia com os da base <strong>de</strong> dados baseada em assinaturas,<br />
pois havia a dúvida se <strong>de</strong>vido à necessida<strong>de</strong> <strong>de</strong> inferências em alguns casos da <strong>de</strong>tecção<br />
<strong>de</strong> ataques tal abordagem seria viável.<br />
Para avaliação foi utilizada uma base composta <strong>de</strong> até 128 ataques catalogados<br />
no Protégé. Esta base iniciou com quatro classes <strong>de</strong> ataques pré-cadastradas<br />
(XMLInjection, XPathInjection, XQueryInjection e XSSInjection) e quatro instâncias <strong>de</strong><br />
ataques (xpathInjection1, xpathInjection2, xqueryInjection1 e xssInjection1).<br />
Adicionando incrementos <strong>de</strong> 2 x (x = 2, 3, 4, ...) instâncias <strong>de</strong> ataques por vez a base foi<br />
sendo aumentada até totalizar os 128 ataques. Para compor a base, diversas instâncias<br />
<strong>de</strong> ataques e ações foram simuladas com o intuito <strong>de</strong> imitar as variações <strong>de</strong> ataques que<br />
vão sendo incorporadas à ontologia em uma aplicação real da proposta.<br />
O primeiro experimento testou a ontologia consultando-a com apoio do<br />
SPARQL. Esta abordagem analisou os pacotes da re<strong>de</strong> procurando por ações<br />
maliciosas, que já estavam pré-cadastradas na base <strong>de</strong> conhecimento da ontologia,<br />
50
elacionando as mesmas com instâncias <strong>de</strong> ataques que foram previamente introduzidas<br />
utilizando o Protégé.<br />
O segundo experimento utilizou o Pellet para avaliar a ontologia em tempo <strong>de</strong><br />
execução. Neste experimento não havia instâncias <strong>de</strong> ataques na ontologia quando a<br />
mesma foi consultada pelo SPARQL, portanto a máquina <strong>de</strong> inferência tentou <strong>de</strong>rivar<br />
novos ataques baseando-se em axiomas pré-<strong>de</strong>finidos para cada classe <strong>de</strong> ataques. Em<br />
outras palavras, já que o módulo SPARQL falhou, o módulo <strong>de</strong> inferência foi invocado<br />
para <strong>de</strong>terminar se os conjuntos <strong>de</strong> ações sendo capturadas po<strong>de</strong>riam ser consi<strong>de</strong>rados<br />
novos ataques.<br />
Figura 6. Tempo <strong>de</strong> <strong>de</strong>tecção relativo (Assinaturas x SPARQL)<br />
Sempre que uma nova sequência <strong>de</strong> ações é inferida como sendo um ataque<br />
(nova assinatura), uma nova instância para este ataque é automaticamente adicionada à<br />
base <strong>de</strong> conhecimento da ontologia. Assim, não se <strong>de</strong>sperdiça tempo invocando o<br />
módulo <strong>de</strong> inferência caso este ataque específico seja capturado no futuro, pois o<br />
SPARQL irá <strong>de</strong>tectá-lo primeiro, eliminando a possibilida<strong>de</strong> <strong>de</strong> ataques zero-day.<br />
O terceiro experimento não utilizou a ontologia como base <strong>de</strong> conhecimento; foi<br />
utilizado o arquivo <strong>de</strong> texto contendo regras do Snort como base <strong>de</strong> dados <strong>de</strong> assinaturas<br />
– sem nenhuma técnica <strong>de</strong> otimização <strong>de</strong> consultas.<br />
Figura 7. Tempo <strong>de</strong> <strong>de</strong>tecção relativo (Assinaturas x Pellet)<br />
O terceiro experimento foi executado duas vezes. Na primeira vez o arquivo <strong>de</strong><br />
assinaturas foi consultado para procurar payloads (aleatoriamente inseridos do início ao<br />
final do arquivo), com o objetivo <strong>de</strong> comparação com o <strong>de</strong>sempenho do SPARQL (Fig.<br />
6). Na segunda vez, o arquivo <strong>de</strong> assinaturas foi consultado buscando-se por payloads<br />
(em número, variando entre 4 e128) que não se encontravam no mesmo – o objetivo foi<br />
comparar seu <strong>de</strong>sempenho com o Pellet (Fig. 7).<br />
51
O gráfico da Fig. 6 compara o experimento <strong>de</strong> <strong>de</strong>tecção baseada em assinaturas<br />
com o experimento utilizando o SPARQL em um cenário on<strong>de</strong> os ataques estão précadastrados<br />
no arquivo <strong>de</strong> texto e na base <strong>de</strong> conhecimento da ontologia.<br />
O gráfico da Fig. 7 compara o experimento <strong>de</strong> <strong>de</strong>tecção baseada em assinaturas<br />
com o experimento do Pellet, em um cenário on<strong>de</strong> as assinaturas sendo procuradas não<br />
estão presentes no arquivo texto e os conjuntos <strong>de</strong> ações sendo capturadas não<br />
correspon<strong>de</strong>m a nenhuma instância <strong>de</strong> ataque na base <strong>de</strong> conhecimento da ontologia.<br />
As Fig. 6 e Fig. 7 mostram gráficos comparando o tempo <strong>de</strong> <strong>de</strong>tecção relativo,<br />
tomando como referência o tempo <strong>de</strong> busca por quatro ataques através <strong>de</strong> <strong>de</strong>tecção<br />
baseada em assinaturas. A motivação para tal escolha é que, observando-se o ponto <strong>de</strong><br />
partida da curva do Pellet na Fig. 7, nota-se que o mesmo gastou um tempo extra (se<br />
comparado a abordagem baseada em assinaturas), necessário para <strong>de</strong>rivar novas<br />
instâncias através dos axiomas das classes <strong>de</strong> ataques da ontologia. Foi observado que o<br />
tempo gasto para avaliar as classes <strong>de</strong> ataques sem sucesso utilizando Pellet e o tempo<br />
gasto para inferência e adição <strong>de</strong> uma nova instância abaixo <strong>de</strong> uma das classes é<br />
similar.<br />
O gráfico da Fig. 7 mostrou o pior caso para <strong>de</strong>tecções do XID, pois as consultas<br />
resultam em perda <strong>de</strong> tempo <strong>de</strong> processamento pelo fato dos ataques não estarem na<br />
base, logo toda a base é consultada sem sucesso. Entretanto, mesmo o Pellet<br />
consumindo três vezes mais tempo do que a <strong>de</strong>tecção baseada em assinaturas, sua<br />
abordagem ainda é vantajosa (em relação à <strong>de</strong>tecção baseada em assinaturas) pelo fato<br />
<strong>de</strong> que esse módulo é executado uma única vez para cada nova variação <strong>de</strong> ataque. Uma<br />
vez que o Pellet infere uma nova instância <strong>de</strong> ataque, este módulo não será mais<br />
executado no futuro se o mesmo ataque for capturado novamente, pois o SPARQL irá<br />
<strong>de</strong>tectar o ataque primeiro na sua próxima ocorrência. Já na <strong>de</strong>tecção baseada em<br />
assinaturas este processamento sempre significará perda <strong>de</strong> tempo.<br />
Observando a Fig. 6 constata-se uma tendência do <strong>de</strong>sempenho do SPARQL<br />
ultrapassar a <strong>de</strong>tecção baseada em assinaturas quando a base chegar a 512 ataques. Em<br />
aplicações reais as bases <strong>de</strong> ataques são muito amplas, logo a abordagem proposta teria<br />
a vantagem quantitativa <strong>de</strong> maior escalabilida<strong>de</strong> no tempo <strong>de</strong> <strong>de</strong>tecção.<br />
Baseando-se nos resultados relatados acima é possível concluir que a proposta<br />
<strong>de</strong>ste trabalho, que mistura o primeiro e o segundo cenário, é vantajosa em relação ao<br />
terceiro cenário (abordagem clássica), obtendo a melhor relação custo benefício <strong>de</strong><br />
<strong>de</strong>tecção – baseada em assinaturas (SPARQL) vs baseada em conhecimento (Pellet).<br />
4.3. Avaliação qualitativa<br />
Em ontologias as <strong>de</strong>finições <strong>de</strong> conceitos <strong>de</strong>vem ser feitas através <strong>de</strong> axiomas lógicos<br />
[Gruber 1993]. Além disso, Gruber menciona que estas <strong>de</strong>finições <strong>de</strong>vem ser completas,<br />
ou seja, especificadas explicitando-se as condições necessárias e suficientes que as<br />
instâncias <strong>de</strong>vem aten<strong>de</strong>r para serem classificadas por tais conceitos. Isto porque se uma<br />
instância aten<strong>de</strong> às condições necessárias e suficientes (<strong>de</strong>finidas através <strong>de</strong> axiomas) <strong>de</strong><br />
uma classe, obrigatoriamente será inferida como instância daquela classe.<br />
Consi<strong>de</strong>rando as afirmações <strong>de</strong> Gruber, em um mundo perfeito não haveria a<br />
possibilida<strong>de</strong> <strong>de</strong> alertas falsos serem gerados pelo XID, já que instâncias <strong>de</strong>tectadas ou<br />
inferidas necessariamente aten<strong>de</strong>m aos axiomas <strong>de</strong>finidos para suas classes <strong>de</strong> ataques.<br />
Porém, Gruber também ressalta que se o resultado <strong>de</strong> uma inferência gerar um<br />
conhecimento que não correspon<strong>de</strong> à <strong>de</strong>finição formal do domínio sendo representado,<br />
a ontologia po<strong>de</strong> estar incoerente. Ou seja, mesmo que os axiomas garantam que nada<br />
52
diferente do que foi <strong>de</strong>finido será <strong>de</strong>tectado ou inferido pela proposta, sempre há a<br />
possibilida<strong>de</strong> <strong>de</strong> uma entrada incorreta na <strong>de</strong>finição da ontologia por erro humano –<br />
assim como em qualquer outro sistema automatizado, se a entrada está incorreta, o<br />
resultado será impreciso. No caso da proposta a possibilida<strong>de</strong> <strong>de</strong> erro <strong>de</strong> especificação<br />
do ataque na ontologia é minimizada <strong>de</strong>vido ao uso da taxonomia da CAPEC.<br />
Se o ataque está completamente <strong>de</strong>scrito (contendo as condições necessárias e<br />
suficientes que refletem a estratégia do ataque no mundo real) a probabilida<strong>de</strong> <strong>de</strong> falso<br />
positivo é nula. Porém, se o conjunto <strong>de</strong> atributos (relacionamentos) e restrições não<br />
estiver precisamente <strong>de</strong>scrito há possibilida<strong>de</strong> <strong>de</strong> ocorrência <strong>de</strong> falsos positivos.<br />
A partir <strong>de</strong>stas consi<strong>de</strong>rações, dois cenários foram criados para testar a taxa <strong>de</strong><br />
falsos positivos da abordagem proposta na <strong>de</strong>tecção através do Pellet (módulo <strong>de</strong><br />
inferência do XID que se utiliza dos axiomas para <strong>de</strong>duzir ataques), visando garantir<br />
que a ontologia tenha sido projetada <strong>de</strong> forma coerente.<br />
Para o teste dos cenários foram criadas 128 instâncias (reais e simuladas) para<br />
avaliar os axiomas das quatro classes <strong>de</strong> ataques da proposta (XMLInjection,<br />
XPathInjection, XQueryInjection e XSSInjection). No primeiro cenário a lógica <strong>de</strong><br />
<strong>de</strong>tecção alertou ataques a cada inferência conclusiva, ou seja, assim que as restrições<br />
(axiomas) <strong>de</strong> qualquer classe eram atendidas o ataque era alertado. Já no segundo<br />
cenário (abordagem do XID), o protótipo verificou se os ataques continham subclasses<br />
(indícios <strong>de</strong> que um ataque mais específico estaria ocorrendo) antes <strong>de</strong> alertá-los.<br />
A avaliação dos cenários foi dividida em duas fases. Na primeira fase, 64 dos<br />
128 ataques criados foram utilizados, com o intuito <strong>de</strong> se fazer uma avaliação<br />
(treinamento) inicial da ontologia e ajustar as classes e axiomas caso fosse necessário.<br />
Portanto, 50% da amostragem <strong>de</strong> instâncias já estavam na ontologia ao término da<br />
primeira fase. Pequenos ajustes foram feitos na lógica <strong>de</strong> <strong>de</strong>tecção do protótipo após os<br />
resultados <strong>de</strong>ste treinamento, nenhuma alteração foi feita na ontologia. Na segunda fase,<br />
as 64 instâncias <strong>de</strong> ataque restantes foram simuladas para testar a porcentagem <strong>de</strong> acerto<br />
da proposta nas inferências feitas em tempo <strong>de</strong> execução, para ambos os cenários.<br />
O resultado da avaliação para o primeiro cenário foi que 7/64 instâncias <strong>de</strong><br />
ataque não foram <strong>de</strong>tectadas corretamente. Estas sete instâncias continham três ações<br />
cada uma, uma ação da classe Discovery, uma da classe ProbeXPath e uma da classe<br />
ProbeXQuery. Estas sequências <strong>de</strong> três ações <strong>de</strong>veriam alertar um ataque do tipo<br />
XQueryInjection <strong>de</strong> acordo com o axioma <strong>de</strong>finido para esta classe. Porém, o protótipo<br />
alertou para cada uma das sete instâncias como ataques <strong>de</strong> XPathInjection e <strong>de</strong><br />
XMLInjection, respectivamente (totalizando 14 ataques alertados). Isto ocorreu porque a<br />
primeira parte dos ataques gerados (ação <strong>de</strong> Discovery e ação <strong>de</strong> ProbeXPath) satisfaz o<br />
axioma da classe <strong>de</strong> ataque XPathInjection, e a parte restante (ação <strong>de</strong> ProbeXQuery)<br />
satisfaz sozinha o axioma da classe genérica XMLInjection.<br />
Assim, no primeiro cenário o resultado da <strong>de</strong>dução foi impreciso em alguns<br />
casos porque não foi consi<strong>de</strong>rado integramente o conjunto <strong>de</strong> ações que aten<strong>de</strong>m as<br />
restrições da classe mais específica. Isto é, a <strong>de</strong>dução consi<strong>de</strong>rou apenas um<br />
subconjunto <strong>de</strong> ações que satisfaziam as restrições dos axiomas <strong>de</strong> classes mais<br />
genéricas – primeiras a serem testadas na lógica <strong>de</strong> <strong>de</strong>tecção.<br />
No segundo cenário, o protótipo foi programado para apenas alertar um ataque<br />
mais genérico após verificar as classes mais específicas do ataque sendo inferido. Desta<br />
forma, todas as 64 instâncias <strong>de</strong> ataque foram inferidas com sucesso e adicionadas às<br />
classes corretas na ontologia. Como neste cenário o protótipo aguardou a <strong>de</strong>tecção da<br />
próxima ação antes <strong>de</strong> alertar um ataque – quando havia a possibilida<strong>de</strong> <strong>de</strong> um ataque<br />
53
mais específico estar ocorrendo – não houve imprecisões na <strong>de</strong>tecção.<br />
Imprecisões <strong>de</strong> inferência não são consi<strong>de</strong>radas como falsos positivos para o<br />
XID na abordagem do segundo cenário (ataque genérico alertado mesmo <strong>de</strong>pois <strong>de</strong><br />
verificadas as subclasses), porque falsos positivos são resultantes <strong>de</strong> classificação<br />
errônea <strong>de</strong> ações normais consi<strong>de</strong>radas como ataques. Na abordagem proposta estas<br />
imprecisões são <strong>de</strong>duzidas em classes mais genéricas e, portanto, são alertadas como<br />
mensagens informativas e não como ataques. Isto é, quando o nível <strong>de</strong> especificida<strong>de</strong> do<br />
ataque sendo <strong>de</strong>duzido não é suficiente para atingir um grau <strong>de</strong> precisão confiável<br />
(<strong>de</strong>pois <strong>de</strong> verificadas suas subclasses na ontologia), o mesmo é alertado como<br />
informativo ao invés <strong>de</strong> ataque.<br />
Neste caso, quando a <strong>de</strong>dução não é conclusiva po<strong>de</strong> haver indícios <strong>de</strong> que o<br />
ataque <strong>de</strong>tectado po<strong>de</strong> não estar completo (alguma ação das estratégias das subclasses<br />
foi perdida na <strong>de</strong>tecção, por exemplo), ou uma nova categoria <strong>de</strong> ataque po<strong>de</strong> ter sido<br />
<strong>de</strong>tectada. Este tipo <strong>de</strong> informação po<strong>de</strong> então ser investigado por um<br />
administrador/especialista para verificar se uma nova subclasse teria que ser criada ou<br />
se a instância se encaixa em alguma subclasse existente.<br />
4.4. Consi<strong>de</strong>rações<br />
Apesar <strong>de</strong> aplicar ontologia, a performance da <strong>de</strong>tecção utilizando SPARQL é similar à<br />
abordagem baseada em assinaturas, levando em conta que instâncias <strong>de</strong> ataques estão<br />
pré-cadastradas na base <strong>de</strong> conhecimento. Além disso, o Pellet trabalha inferindo na<br />
ontologia para <strong>de</strong>rivar novos ataques quando o SPARQL não encontra combinações<br />
exatas dos ataques. A inferência neste caso mantém a taxa <strong>de</strong> falsos positivos na<br />
<strong>de</strong>tecção similar à <strong>de</strong> abordagens baseadas em assinaturas, pois novos ataques só po<strong>de</strong>m<br />
ser <strong>de</strong>rivados <strong>de</strong> classes e axiomas pré-cadastrados na ontologia.<br />
A falha encontrada no primeiro cenário da avaliação qualitativa, que gerou<br />
imprecisão na <strong>de</strong>tecção, foi <strong>de</strong>vida a adoção <strong>de</strong> uma estratégia <strong>de</strong> <strong>de</strong>tecção que buscava<br />
apenas i<strong>de</strong>ntificar condições necessárias e suficientes, nem sempre levando em conta os<br />
axiomas das subclasses mais específicas. No segundo cenário esta falha não ocorreu, já<br />
que os axiomas das subclasses eram sempre verificados. Porém, quando classes <strong>de</strong><br />
ataque mais específicas não eram encontradas, as instâncias <strong>de</strong>duzidas eram alertadas<br />
como mensagens informativas ao invés <strong>de</strong> ataques.<br />
A inferência na ontologia po<strong>de</strong> ser utilizada tanto em tempo <strong>de</strong> execução<br />
(quando necessário) para apren<strong>de</strong>r novos ataques, quanto na fase <strong>de</strong> mo<strong>de</strong>lagem para<br />
sugerir mudanças estruturais e encontrar inconsistências, otimizando a hierarquia <strong>de</strong><br />
classes. Além disso, <strong>de</strong>pen<strong>de</strong>ndo do tamanho da ontologia, redundâncias na <strong>de</strong>finição<br />
da mesma que levariam horas para serem encontradas por um humano po<strong>de</strong>m ser<br />
encontradas por uma máquina <strong>de</strong> inferência em alguns segundos.<br />
5. Trabalhos Relacionados<br />
A gran<strong>de</strong> maioria das propostas encontradas na literatura técnica utiliza abordagens <strong>de</strong><br />
<strong>de</strong>tecção clássicas [Siddavatam e Gadge 2008][Yee, Shin e Rao 2007][Bravenboer,<br />
Dolstra e Visser 2010] e as que utilizam outras abordagens não trabalham com ataques a<br />
web services [Un<strong>de</strong>rcoffer et al. 2004].<br />
Siddavatam e Gadge [Siddavatam e Gadge 2008] propuseram submeter<br />
requisições SOAP a uma série <strong>de</strong> algoritmos <strong>de</strong> teste para <strong>de</strong>terminar se as mesmas<br />
po<strong>de</strong>riam representar algum tipo <strong>de</strong> ataque. Todas as requisições que não passam no<br />
teste são separadas para que ações posteriores possam ser tomadas. Os autores<br />
apresentam testes e resultados para sua proposta, porém não <strong>de</strong>talham suficientemente<br />
54
os algoritmos e os mecanismos <strong>de</strong> <strong>de</strong>tecção dos ataques.<br />
Yee e seus colegas [Yee, Shin e Rao 2007] aplicaram um framework adaptável<br />
para tentar compensar as diferenças entre a <strong>de</strong>tecção baseada em anomalias e<br />
assinaturas, através da integração <strong>de</strong> agentes, técnicas <strong>de</strong> mineração <strong>de</strong> dados e técnicas<br />
<strong>de</strong> lógica difusa. Para os autores, o uso <strong>de</strong>stas técnicas permite tomar <strong>de</strong>cisões em<br />
ambientes incertos e imprecisos. Porém, nenhum resultado concreto foi apresentado.<br />
A abordagem <strong>de</strong> Bravenboer e seus colegas [Bravenboer, Dolstra e Visser 2010]<br />
sugere a incorporação <strong>de</strong> sintaxe, <strong>de</strong> acordo com as linguagens utilizadas no guest e<br />
host (e.g. XPath com Java), para gerar automaticamente o código que irá prevenir<br />
vulnerabilida<strong>de</strong>s para ataques <strong>de</strong> injection (e.g. adicionando funções para filtrar<br />
caracteres inválidos). Os autores argumentam que a proposta é genérica, po<strong>de</strong>ndo ser<br />
aplicada com facilida<strong>de</strong> a qualquer combinação <strong>de</strong> linguagens. Porém, uma limitação<br />
apontada é o fato <strong>de</strong> nem todas as linguagens possuírem uma sintaxe livre <strong>de</strong> contexto.<br />
A proposta <strong>de</strong> Un<strong>de</strong>rcoffer e seus colegas [Un<strong>de</strong>rcoffer et al. 2004] aplica<br />
ontologia para categorizar classes <strong>de</strong> ataques baseando-se principalmente no<br />
componente alvo dos mesmos, também consi<strong>de</strong>ra os meios e as conseqüências do<br />
ataque e a localização do atacante. Esta ontologia é compartilhada por diversos sistemas<br />
<strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão – o intuito é disseminar a todos um ataque <strong>de</strong>scoberto por um<br />
<strong>de</strong>les. Porém, não é mencionado o uso <strong>de</strong> axiomas ou inferência, além disto, os autores<br />
não avaliam a proposta com testes.<br />
Vorobiev e Han [Vorobiev e Han 2006] propuseram a abordagem que está mais<br />
próxima <strong>de</strong>ste trabalho, os autores aplicaram uma ontologia especificamente para<br />
abordar o domínio <strong>de</strong> ataques a web services. Entretanto, a implementação da ontologia<br />
não foi encontrada e a proposta não utiliza inferência para <strong>de</strong>tectar novos ataques. A<br />
ontologia é principalmente um ‘dicionário’ comum para diferentes ambientes.<br />
6. Conclusão<br />
Este artigo apresentou uma abordagem baseada em ontologia (XID) para proteger web<br />
services <strong>de</strong> ataques <strong>de</strong> XML injection e para mitigar o problema dos ataques que são<br />
variações <strong>de</strong> ataque conhecidos. Os ataques <strong>de</strong> XML injection que já estavam na base<br />
<strong>de</strong> conhecimento foram <strong>de</strong>tectados com sucesso utilizando SPARQL para consultar a<br />
ontologia. Adicionalmente, as variações <strong>de</strong> payload foram <strong>de</strong>tectadas utilizando<br />
inferência com nenhuma ocorrência <strong>de</strong> falsos positivos, já que novos payloads<br />
(instâncias) foram <strong>de</strong>tectados baseando-se somente em classes e axiomas <strong>de</strong> ataques<br />
pré-existentes. Os novos payloads foram automaticamente adicionados à base <strong>de</strong><br />
conhecimento da ontologia como instâncias – abaixo das classes relacionadas,<br />
eliminando os ataques que são variantes <strong>de</strong> ataques conhecidos.<br />
O XID agrega as principais vantagens das abordagens clássicas <strong>de</strong> <strong>de</strong>tecção.<br />
Permite a <strong>de</strong>tecção <strong>de</strong> ataques conhecidos, como na abordagem baseada em assinaturas,<br />
e permite a <strong>de</strong>tecção <strong>de</strong> novos ataques, como na abordagem baseada em anomalias. Esta<br />
segunda abordagem <strong>de</strong> <strong>de</strong>tecção é feita pelo XID através <strong>de</strong> inferência na ontologia.<br />
Como relação ao <strong>de</strong>sempenho a proposta é comparável à <strong>de</strong>tecção baseada em<br />
assinaturas quando os ataques são conhecidos. Quando os ataques não são conhecidos a<br />
proposta per<strong>de</strong> em <strong>de</strong>sempenho quando comparada à abordagem por assinaturas, porém,<br />
neste caso po<strong>de</strong>m ser <strong>de</strong>tectadas variações <strong>de</strong> payloads com taxa nula <strong>de</strong> falsos<br />
positivos, mitigando ataques zero-day, por exemplo. Esta inferência <strong>de</strong> ataques que não<br />
estão pré-cadastrados na base não é possível na abordagem clássica <strong>de</strong> <strong>de</strong>tecção baseada<br />
em assinaturas e imprecisa na baseada em anomalias.<br />
55
Referências<br />
Bechhofer, S. (2006) “DIG 2.0: The DIG Description Logic Interface”,<br />
http://dig.cs.manchester.ac.uk.<br />
Boag, S., Chamberlin, D., Fernán<strong>de</strong>z, M. F., Florescu, D., Robie, J. e Siméon, J. (2011)<br />
“XQuery 1.0: An XML Query Language (Second Edition)”, http://www.w3.org/TR/xquery.<br />
Booth, D., Haas, H., Mccabe, F., Newcomer, E., Champion, M., Ferris, C. e Orchard, D. (2004)<br />
“Web Services Architecture”, http://www.w3.org/TR/ws-arch.<br />
Bravenboer, M., Dolstra, E. e Visser, E. (2010). Preventing injection attacks with syntax<br />
embeddings. In Science of Computer Programming archive, pages 473-495.<br />
CAPEC (2011) “Common Attack Pattern Enumeration and Classification”,<br />
http://capec.mitre.org/data/graphs/1000.html.<br />
Clarck&Parsia (2011) “Pellet: OWL 2 Reasoner for Java”, http://clarkparsia.com/pellet.<br />
Combs, G. (2011) “Wireshark – Go Deep”, http://www.wireshark.org.<br />
CWE e SANS (2010) “2010 CWE/SANS Top 25 Most Dangerous Software Errors”,<br />
http://cwe.mitre.org/top25/in<strong>de</strong>x.html.<br />
CWE (2011) “Common Weakness Enumeration”, http://cwe.mitre.org/data/<strong>de</strong>finitions/91.html.<br />
Siddavatam, I. e Gadge, J. (2008). Comprehensive Test Mechanism to Detect Attack on Web<br />
Services. In 16th IEEE International Conference on Networks, pages 1-6.<br />
Dou, D., McDermott, D. e Qi, P. (2004). Ontology Translation on the Semantic Web. In Journal<br />
on Data Semantics (JoDS) II, pages 35-57.<br />
Gruber, T. R. (1993). Toward Principles for the Design of Ontologies Used for Knowledge<br />
Sharing. In International Journal Human-Computer Studies 43, pages 907-928.<br />
Hansen, R. (2008) “XSS (Cross Site Scripting) Cheat Sheet”, http://ha.ckers.org/xss.html.<br />
Konstantinou, N., Spanos, D. e Mitrou, N. (2008). Ontology and Database Mapping: A Survey<br />
of Current Implementations and Future Directions. In Journal of Web Engineering, pg. 1-24.<br />
McGuinness, D., e Harmelen, F. (2009) “OWL 2 Web Ontology Language”,<br />
http://www.w3.org/TR/owl-features.<br />
Metasploit (2011) “Metasploit - Penetration Testing Resources”, http://www.metasploit.com.<br />
Oracle (2011) “For Java Developers”, http://www.oracle.com/technetwork/java/in<strong>de</strong>x.html.<br />
OWASP (2009) “The Open Web Application Security Project”,<br />
http://www.owasp.org/images/3/3f/2009AnnualReport.pdf.<br />
OWASP (2011) “The Open Web Application Security Project”, http://www.owasp.org.<br />
Prud'hommeaux, E., e Seaborne, A. (2008) “SPARQL Query Language for RDF”,<br />
http://www.w3.org/TR/rdf-sparql-query.<br />
Sourcefire (2011) “Sourcefire VRT Certified Rules - The Official Snort Ruleset”,<br />
http://www.snort.org/snort-rules.<br />
SourceForge (2011) “Jena – A Semantic Web Framework for Java”, http://jena.sourceforge.net.<br />
SourceForge (2011) “Network Packet Capture Facility for Java”,<br />
http://sourceforge.net/projects/jpcap.<br />
Stanford (2011) “The Protégé Ontology Editor and Knowledge Acquisition System”,<br />
http://protege.stanford.edu.<br />
Un<strong>de</strong>rcoffer, J., Pinkston, J., Joshi, A. e Finin, T. (2004). A Target-Centric ontology for<br />
intrusion <strong>de</strong>tection. In Proceedings of the IJCAI W. on Ontologies and Dist. Sys., pg. 47-58.<br />
Vorobiev, A. e Han, J. (2006). Security Attack Ontology for Web Services. In Proceedings of<br />
the Second International Conference on Semantics, Knowledge, and Grid, paper 42 (6pp).<br />
Yee, C. G., Shin, W. H. e Rao, G. S. V. R. K. (2007). An Adaptive Intrusion Detection and<br />
Prevention (ID/IP) Framework for Web Services. In Proceedings of IEEE International<br />
Conference on Convergence Information Technology, pages 528-534.<br />
Zero Day Initiative (2011) “Zero Day Initiative”, http://www.zerodayinitiative.com/<br />
advisories/upcoming/.<br />
56
Carimbos do Tempo Autenticados para a Preservação por<br />
Longo Prazo <strong>de</strong> Assinaturas Digitais<br />
Nelson da Silva 1 , Thiago Acórdi Ramos 1 , Ricardo Felipe Custódio 1<br />
1 Laboratório <strong>de</strong> Segurança em Computação (LabSEC)<br />
Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina (UFSC)<br />
Caixa Postal 476 – 88040-900 – Florianópolis – SC – Brasil<br />
{nelson, thg, custodio}@inf.ufsc.br<br />
Abstract. Digital signatures are usually employed as the digital counterpart of<br />
handwritten signatures, allowing the authentication of electronic documents.<br />
These signatures, however, may quickly lose its validity, creating a preservation<br />
challenge for those documents that must be kept for a longer period of time. In<br />
this paper, we improve the efficiency and reliability of the usual approach for<br />
this problem, through a new time-stamp scheme. Such time-stamps carries a<br />
Certificate of Authenticity, with reduces its storage and validation costs, while<br />
protecting the signature even in the presence of an adversary able to compromise<br />
the Time Stamping Authority’s private key or its signature scheme.<br />
Resumo. Assinaturas digitais são comumente usadas como a contraparte digital<br />
das assinaturas manuscritas, possibilitando a autenticação <strong>de</strong> documentos<br />
eletrônicos. Tais assinaturas, contudo, po<strong>de</strong>m rapidamente per<strong>de</strong>r sua valida<strong>de</strong>,<br />
criando um <strong>de</strong>safio para a preservação daqueles documentos que precisam ser<br />
guardados por um tempo maior. Neste trabalho, aumentamos a eficiência e confiabilida<strong>de</strong><br />
da abordagem usual para o problema, através <strong>de</strong> um novo esquema<br />
<strong>de</strong> datação. Esses carimbos carregam um Certificado <strong>de</strong> Autenticida<strong>de</strong>, que reduz<br />
seus custos <strong>de</strong> armazenamento e validação, enquanto protege a assinatura<br />
mesmo na presença <strong>de</strong> um adversário capaz <strong>de</strong> comprometer a chave privada<br />
da Autorida<strong>de</strong> <strong>de</strong> Carimbo do Tempo ou seu esquema <strong>de</strong> assinatura.<br />
1. Introdução<br />
Assinaturas digitais são comumente usadas como a contraparte digital das assinaturas<br />
manuscritas, possibilitando a autenticação <strong>de</strong> documentos eletrônicos. Diversos<br />
países vêm, inclusive, atribuindo a elas o mesmo valor legal das assinaturas manuscritas,<br />
como forma <strong>de</strong> facilitar o uso <strong>de</strong> documentos eletrônicos como meio <strong>de</strong> prova. Na União<br />
Européia, por exemplo, essa questão é abordada na Diretiva Européia 1999/93/EC. No<br />
Brasil, isso é assunto da Medida Provisória 2.200-2.<br />
Apesar <strong>de</strong> amplamente usadas, as assinaturas digitais po<strong>de</strong>m rapidamente per<strong>de</strong>r<br />
sua valida<strong>de</strong>, o que constitui um <strong>de</strong>safio para a preservação daqueles documentos<br />
eletrônicos que precisam ser guardados por um longo período <strong>de</strong> tempo. Na<br />
implementação usual <strong>de</strong>ssas assinaturas, por exemplo, tal problema ocorre por diversos<br />
fatores, tais como o enfraquecimento do esquema <strong>de</strong> assinatura usado pelo signatário e<br />
a perda <strong>de</strong> valida<strong>de</strong> <strong>de</strong> seu caminho <strong>de</strong> certificação X.509. Nesses casos, a segurança<br />
oferecida pela assinatura acaba sendo comprometida.<br />
57
Tal problema torna necessária alguma forma <strong>de</strong> preservação que permita manter<br />
a valida<strong>de</strong> <strong>de</strong>ssas assinaturas pelo tempo que for necessário. Assim várias estratégias já<br />
foram propostas, sendo a sobreposição <strong>de</strong> carimbos do tempo, criada por Bayer, Haber e<br />
Stornetta [6], a principal <strong>de</strong>las. É essa a estratégia usada nas principais recomendações<br />
técnicas que atualmente abordam o problema [12, 13, 14], sendo igualmente uma das mais<br />
estudadas na literatura. Do mesmo modo, é essa a estratégia usada no Padrão Brasileiro <strong>de</strong><br />
Assinatura Digital, publicado pelo Instituto Nacional <strong>de</strong> Tecnologia da Informação (ITI).<br />
A preservação por carimbos do tempo, contudo, implica em custos cumulativos<br />
para o usuário, além <strong>de</strong> não garantir que a assinatura realmente mantenha sua valida<strong>de</strong><br />
pelo tempo necessário. Tais custos dificultam a preservação e validação <strong>de</strong>ssas assinaturas<br />
em dispositivos com poucos recursos computacionais, bem como a preservação <strong>de</strong><br />
gran<strong>de</strong>s volumes <strong>de</strong> documentos [24]. A baixa confiabilida<strong>de</strong> <strong>de</strong>ssa estratégia, por sua<br />
vez, acaba tornando necessárias medidas preventivas, como o uso <strong>de</strong> carimbos do tempo<br />
redundantes [14], que terminam por aumentar ainda mais os custos <strong>de</strong> preservação.<br />
Neste trabalho aumentamos a eficiência e confiabilida<strong>de</strong> da preservação por carimbos<br />
do tempo através <strong>de</strong> um novo esquema <strong>de</strong> datação, os Carimbos do Tempo Autenticados.<br />
O uso <strong>de</strong>sse esquema permite reduzir drasticamente os custos <strong>de</strong> armazenamento<br />
e validação das assinaturas preservadas, assim como ter maiores garantias quanto<br />
a preservação da assinatura pelo tempo que for necessário. Além disso, seu uso torna<br />
possível a validação off-line <strong>de</strong> assinaturas, uma vez que essas se tornam auto-contidas.<br />
O restante <strong>de</strong>ste trabalho é organizado da seguinte forma. A Seção 2 apresenta o<br />
estado da arte sobre a preservação <strong>de</strong> assinaturas digitais. A Seção 3 <strong>de</strong>screve o esquema<br />
<strong>de</strong> datação tradicional e revisa a preservação por carimbos do tempo. A Seção 4 apresenta<br />
o esquema <strong>de</strong> datação proposto, assim como as suas implicações sobre os procedimentos<br />
<strong>de</strong> preservação e validação <strong>de</strong> assinaturas. A Seção 5 avalia os benefícios e limitações da<br />
proposta. Finalmente, a Seção 6 apresenta as consi<strong>de</strong>rações finais.<br />
2. Trabalhos Relacionados<br />
A preservação <strong>de</strong> assinaturas digitais é um tema quase tão antigo quanto a própria<br />
criptografia assimétrica. Já no final da década <strong>de</strong> 70, Popek e Kline [21] sugeriam que<br />
a valida<strong>de</strong> <strong>de</strong> uma assinatura fosse preservada por meio <strong>de</strong> “carimbos do tempo”, emitidos<br />
por terceiras partes confiáveis, on<strong>de</strong> constaria o momento em que a assinatura fora<br />
produzida. A i<strong>de</strong>ia era que assinaturas autênticas seriam aquelas realizadas antes <strong>de</strong> sua<br />
falsificação se tornar viável.<br />
Massias e Quisquater [18], por outro lado, propuseram a preservação <strong>de</strong> assinaturas<br />
digitais através da autenticação <strong>de</strong> outro fato, a sua própria valida<strong>de</strong>. Esse ateste<br />
seria uma alternativa para a comprovação da valida<strong>de</strong> da assinatura quando, através das<br />
verificações tradicionais, essa já fosse inválida.<br />
Ambas as estratégias <strong>de</strong> notarização, como ficaram conhecidas por remeter aos<br />
atos praticados pelos notários no mundo real [16], foram tema <strong>de</strong> diversos trabalhos.<br />
Carimbos do tempo, por exemplo, foram aprimorados por Haber e Stornetta [15], que<br />
sugeriram seu enca<strong>de</strong>amento como forma <strong>de</strong> reduzir a confiança necessária nas entida<strong>de</strong>s<br />
responsáveis por sua produção. Blibech e Gabillon [7], por sua vez, reduziram os custos<br />
<strong>de</strong>correntes da validação <strong>de</strong>sses carimbos, re<strong>de</strong>finindo a forma como são enca<strong>de</strong>ados.<br />
58
Atestes da valida<strong>de</strong> <strong>de</strong> assinaturas, por outro lado, foram aprimoradas por Ansper<br />
et al. [3], que sugeriram a agregação das assinaturas em Árvores <strong>de</strong> Merkle [19], <strong>de</strong> modo<br />
a reduzir o esforço computacional necessário para a sua produção. Por outro lado, Custodio<br />
et al. [10], propuseram a associação do método <strong>de</strong> NOVOMODO a esses atestes,<br />
como forma <strong>de</strong> minimizar os recursos computacionais necessários à sua validação.<br />
Além das estratégias <strong>de</strong> notarização, uma outra abordagem vem sendo usada na<br />
literatura para a preservação <strong>de</strong> assinaturas digitais, focada nas primitivas criptográficas<br />
envolvidas em sua geração e validação. São os esquemas especiais <strong>de</strong> assinatura, com<br />
proprieda<strong>de</strong>s que as tornam menos vulneráveis ao efeito do tempo. São exemplos <strong>de</strong>sses<br />
esquemas o <strong>de</strong> chave evolutiva e as assinaturas incondicionalmente seguras.<br />
Esquemas <strong>de</strong> chave evolutiva [2] são voltados à proteção das assinaturas produzidas<br />
contra o comprometimento da chave privada do signatário. Nesses esquemas a chave<br />
privada evolui <strong>de</strong> modo que o comprometimento da chave privada atual, não invalidaria<br />
assinaturas realizadas com as chaves anteriores.<br />
Esquemas <strong>de</strong> assinaturas incondicionalmente seguras, por sua vez, tratam do problema<br />
relacionado ao enfraquecimento dos algoritmos criptográficos [8]. Diferentemente<br />
dos esquemas convencionais, tais esquemas não baseiam sua segurança em suposições<br />
quanto ao po<strong>de</strong>r computacional do adversário. Po<strong>de</strong>r esse que ten<strong>de</strong> a aumentar com o<br />
tempo.<br />
Nenhuma das estratégias citadas, contudo, é capaz <strong>de</strong> preservar assinaturas digitais<br />
por um prazo arbitrariamente gran<strong>de</strong>. Carimbos do tempo e atestes, por exemplo,<br />
per<strong>de</strong>m com o tempo sua valida<strong>de</strong> assim como as próprias assinaturas. Esquemas especiais<br />
<strong>de</strong> assinatura, por sua vez, ten<strong>de</strong>m a tratar apenas uma parte dos problemas, sempre<br />
<strong>de</strong>ixando as assinaturas vulneráveis a problemas remanescentes.<br />
Um dos primeiros trabalhos a tratar da preservação por longo prazo <strong>de</strong> assinaturas<br />
digitais foi o trabalho <strong>de</strong> Bayer, Haber e Stornetta [6]. Na proposta, parcialmente apresentada<br />
num trabalho anterior [15], uma assinatura digital seria preservada pela sobreposição<br />
<strong>de</strong> carimbos do tempo. A i<strong>de</strong>a era que novos carimbos seriam adicionados na medida<br />
que os anteriores estivessem por per<strong>de</strong>r sua valida<strong>de</strong>. Cada um dos carimbos <strong>de</strong>monstraria<br />
que o anterior fora produzido antes <strong>de</strong> se tornar falsificável. I<strong>de</strong>ia semelhante à<br />
sobreposição <strong>de</strong> carimbos do tempo foi posteriormente proposta para atestes da valida<strong>de</strong><br />
<strong>de</strong> assinaturas [17, 24].<br />
3. Preservação por Carimbos do Tempo<br />
Dentre as estratégias até então propostas para a preservação por longo prazo <strong>de</strong><br />
assinaturas digitais, a preservação por carimbos do tempo é aquela adotada pelas principais<br />
recomendações técnicas sobre o tema [12, 13, 14], sendo, igualmente, uma das mais<br />
estudadas na literatura. Nessa estratégia, carimbos do tempo são usados para <strong>de</strong>monstrar<br />
a valida<strong>de</strong> da assinatura e dos próprios carimbos usados no processo.<br />
3.1. Carimbos do Tempo<br />
Em sua forma mais comum, usada em recomendações técnicas como a<br />
RFC 3161 [1], carimbos do tempo são documentos eletrônicos assinados por uma terceira<br />
parte confiável, <strong>de</strong>nonimada Autorida<strong>de</strong> <strong>de</strong> Carimbo do Tempo (ACT), on<strong>de</strong> constam<br />
tanto o resumo criptográfico da informação datada, quanto a data em que o carimbo<br />
59
foi emitido. São duas as operações relacionadas a esses carimbos, a sua solicitação e<br />
validação. A primeira segue o protocolo representado a seguir:<br />
U −→ ACT : H(x)<br />
ACT −→ U : {H(x), t}, Sign ACT ({H(x), t})<br />
} {{ }<br />
ts<br />
Nele, um usuário solicita um carimbo do tempo para uma informação qualquer<br />
x ∈ {0, 1} + , enviando seu resumo criptográfico H(x). Ao receber o resumo, a ACT<br />
então anexa a data atual t, assina o conjunto e retorna o carimbo formado. A partir <strong>de</strong><br />
então é possível comprovar que x existia em t. Para tanto, é necessário validar o carimbo.<br />
Um carimbo do tempo é válido se:<br />
• a assinatura da ACT for válida;<br />
• o resumo criptográfico presente no carimbo for igual a H(x) e H for uma função<br />
<strong>de</strong> resumo criptográfico segura.<br />
Tais condições visam comprovar, respectivamente, a autenticida<strong>de</strong> do carimbo e<br />
a integrida<strong>de</strong> da informação datada. A função H <strong>de</strong>ve ser segura pois, do contrário,<br />
essa integrida<strong>de</strong> acaba se tornando duvidosa. Em maiores <strong>de</strong>talhes, H po<strong>de</strong>rá ser apenas<br />
resistente à segunda inversão, <strong>de</strong>s<strong>de</strong> que em t tenha sido resistente, igualmente, à colisão.<br />
Dessas condições é possível concluir o prazo <strong>de</strong> valida<strong>de</strong> <strong>de</strong> um carimbo. Esse termina<br />
com a perda <strong>de</strong> valida<strong>de</strong> da assinatura da ACT ou com o enfraquecimento <strong>de</strong> H, o que<br />
ocorrer primeiro.<br />
3.2. Preservação <strong>de</strong> Assinaturas<br />
A preservação <strong>de</strong> uma assinatura digital por meio <strong>de</strong> carimbos do tempo segue<br />
os seguintes passos, on<strong>de</strong> s, d, C s e R s , são, respectivamente, a assinatura, o documento<br />
assinado, os certificados do caminho <strong>de</strong> certificação do signatário e os dados <strong>de</strong> revogação<br />
atuais:<br />
1. inicialização: adicionar um carimbo do tempo ts 1 sobre {s, d, C s , R s }, obtendo<br />
{{s, d, C s , R s }, ts 1 , C 1 ts};<br />
2. agendamento: agendar a sobreposição do carimbo. Essa sobreposição <strong>de</strong>ve ocorrer<br />
antes <strong>de</strong> o carimbo per<strong>de</strong>r sua valida<strong>de</strong>, sendo, em geral, agendada para um<br />
momento próximo da expiração do certificado da ACT;<br />
3. sobreposição: no momento agendado, validar ts 1 . Sendo válido, adicionar ts 2<br />
sobre {{s, d, C s , R s }, ts 1 , C 1 ts, R 1 ts}, obtendo {{{s, d, C s , R s }, ts 1 , C 1 ts, R 1 ts}, ts 2 ,<br />
C 2 ts}. Caso ts 1 já tenha perdido sua valida<strong>de</strong>, a preservação falha;<br />
4. repetição: para os próximos carimbos, repetir os passos 2 e 3 enquanto for necessário<br />
preservar a valida<strong>de</strong> da assinatura. Dessa forma, na adição do n-ésimo<br />
carimbo, obtêm-se {{...{{{s, d, C s , R s }, ts 1 , C 1 ts, R 1 ts}, ts 2 , C 2 ts, R 2 ts}, ...}, ts n ,<br />
C n ts}.<br />
3.3. Validação <strong>de</strong> Assinaturas<br />
Uma assinatura preservada {{...{{{s, d, C s , R s }, ts 1 , C 1 ts, R 1 ts}, ts 2 , C 2 ts, R 2 ts},<br />
...}, ts n , C n ts} é válida se:<br />
• o carimbo do tempo ts n for atualmente válido;<br />
• para todo ts i , com 1 ≤ i ≤ n − 1, ts i era válido na data indicada por ts i+1 ;<br />
• a assinatura s era válida na data indicada por ts 1 .<br />
60
4. Carimbos do Tempo Autenticados<br />
Neste trabalho aumentamos a eficiência e confiabilida<strong>de</strong> da preservação baseada<br />
em carimbos do tempo por meio <strong>de</strong> um novo esquema <strong>de</strong> datação, chamado Carimbos<br />
do Tempo Autenticados. Esse esquema esten<strong>de</strong> o convencional adicionando duas novas<br />
operações, as operações <strong>de</strong> autenticação e renovação <strong>de</strong> carimbos, viabilizadas pela<br />
cooperação entre a Autorida<strong>de</strong> <strong>de</strong> Carimbo do Tempo (ACT) e a Âncora <strong>de</strong> Confiança do<br />
usuário, comumente, a Autorida<strong>de</strong> Certificadora Raiz (AC-Raiz). Tal esquema tem como<br />
objetivo reduzir a velocida<strong>de</strong> com que crescem os custos relacionados às assinaturas preservadas<br />
assim como aumentar as chances <strong>de</strong> a assinatura permanecer válida pelo tempo<br />
necessário.<br />
A operação <strong>de</strong> autenticação busca reduzir os custos por carimbo adicionado.<br />
Através <strong>de</strong>la é possível substituir as informações necessárias à verificação da autenticida<strong>de</strong><br />
do carimbo, tais como seu caminho <strong>de</strong> certificação, por um Certificado <strong>de</strong> Autenticida<strong>de</strong>,<br />
on<strong>de</strong> a própria Âncora <strong>de</strong> Confiança confirma essa proprieda<strong>de</strong>. A operação <strong>de</strong><br />
renovação, por sua vez, busca reduzir o número <strong>de</strong> carimbos do tempo adicionados durante<br />
a preservação. Por meio <strong>de</strong>la é possível renovar o Certificado <strong>de</strong> Autenticida<strong>de</strong> do<br />
carimbo, prolongando sua valida<strong>de</strong>, e assim postergando a adição <strong>de</strong> novos carimbos.<br />
4.1. Certificados <strong>de</strong> Autenticida<strong>de</strong><br />
Certificados <strong>de</strong> Autenticida<strong>de</strong> são documentos eletrônicos, assinados pela Âncora<br />
<strong>de</strong> Confiança, on<strong>de</strong> ela reconhece a autenticida<strong>de</strong> dos carimbos do tempo emitidos pela<br />
ACT. Por meio <strong>de</strong>sse certificado a Âncora <strong>de</strong> Confiança persiste a autenticida<strong>de</strong> do carimbo,<br />
tornando <strong>de</strong>snecessária a validação <strong>de</strong> sua assinatura bem como do caminho <strong>de</strong><br />
certificação relacionado. Como resultado, é possível minimizar os custos <strong>de</strong> armazenamento<br />
e validação do carimbo, bem como tolerar a maioria dos fatores que tradicionalmente<br />
levariam a perda <strong>de</strong> sua valida<strong>de</strong>.<br />
De maneira simplificada, tal conceito po<strong>de</strong>ria ser implementado através <strong>de</strong> um<br />
serviço online, oferecido pela Âncora <strong>de</strong> Confiança, on<strong>de</strong> ela publicaria um Certificado<br />
<strong>de</strong> Autenticida<strong>de</strong> para cada carimbo do tempo a ela apresentado. Nesse caso, cada carimbo<br />
emitido pela ACT, seria encaminhado a Âncora <strong>de</strong> Confiança, que então validaria<br />
sua assinatura e, sendo válida, publicaria um documento eletrônico assinado, on<strong>de</strong> reconheceria<br />
a autenticida<strong>de</strong> do carimbo.<br />
Apesar <strong>de</strong> funcional, uma implementação como essa possui problemas <strong>de</strong> or<strong>de</strong>m<br />
prática que a tornam inviável. Um dos principais problemas está na necessida<strong>de</strong> <strong>de</strong> manter<br />
a Âncora <strong>de</strong> Confiança online <strong>de</strong> modo a aten<strong>de</strong>r às solicitações recebidas. Algo que<br />
contraria boas práticas <strong>de</strong> segurança caso, por exemplo, essa âncora seja uma AC-Raiz.<br />
Outro problema resi<strong>de</strong> no volume <strong>de</strong> informações necessárias para a produção dos Certificados<br />
<strong>de</strong> Autenticida<strong>de</strong>. Ela requer o envio <strong>de</strong> cada um dos carimbos do tempo para a<br />
Âncora <strong>de</strong> Confiança.<br />
Dessa forma, na abordagem adotada, a Âncora <strong>de</strong> Confiança publica um Certificado<br />
<strong>de</strong> Autenticida<strong>de</strong> para cada conjunto <strong>de</strong> carimbos emitido. Nesse caso, ao invés <strong>de</strong><br />
receber cada um dos carimbos, ela recebe pequenas representações <strong>de</strong>sses conjuntos, calculadas<br />
por meio <strong>de</strong> construções criptográficas como as Árvores <strong>de</strong> Merkle. O Certificado<br />
<strong>de</strong> Autenticida<strong>de</strong> <strong>de</strong> cada carimbo é então formado pelo certificado do conjunto ao qual<br />
61
ele pertence, e por sua Prova <strong>de</strong> Associação, capaz <strong>de</strong> comprovar que o carimbo é um dos<br />
elementos <strong>de</strong>sse conjunto.<br />
Tal abordagem permite à Âncora <strong>de</strong> Confiança operar <strong>de</strong> maneira periódica, publicando<br />
Certificados <strong>de</strong> Autenticida<strong>de</strong> apenas ao fim <strong>de</strong>sses períodos, <strong>de</strong> modo semelhante<br />
ao que já ocorre na publicação <strong>de</strong> Listas <strong>de</strong> Certificados Revogados (LCRs) [9]. Algo<br />
particularmente interessante caso, por exemplo, a Âncora <strong>de</strong> Confiança seja mantida offline<br />
em uma Sala Cofre. Essa abordagem igualmente reduz o volume <strong>de</strong> informações<br />
necessárias para a produção <strong>de</strong>sses certificados.<br />
4.2. Serviços <strong>de</strong> Suporte<br />
Nesse sentido, a produção <strong>de</strong> Carimbos do Tempo Autenticados <strong>de</strong>pen<strong>de</strong> <strong>de</strong> três<br />
serviços, o <strong>de</strong> emissão <strong>de</strong> carimbos do tempo e os <strong>de</strong> publicação e renovação <strong>de</strong> Certificados<br />
<strong>de</strong> Autenticida<strong>de</strong>. O fornecimento <strong>de</strong>sses serviços ainda requer a manutenção <strong>de</strong><br />
estruturas <strong>de</strong> dados pela ACT e pela Âncora <strong>de</strong> Confiança, respectivamente, o Repositório<br />
<strong>de</strong> Provas <strong>de</strong> Associação (RPA) e o Repositório <strong>de</strong> Certificados para Conjuntos (RCC).<br />
A emissão <strong>de</strong>sses carimbos ocorre mediante a solicitação do usuário, seguindo<br />
uma versão estendida do protocolo tradicional representada a seguir:<br />
U −→ ACT : H(x)<br />
ACT −→ U : {H(x), t}, Sign ACT ({H(x), t}) , p a<br />
} {{ }<br />
ts<br />
Nessa versão estendida, a ACT registra o resumo criptográfico H(ts) <strong>de</strong> cada<br />
carimbo do tempo emitido no RPA, e informa, por meio <strong>de</strong> uma extensão não assinada<br />
do carimbo, o período pelo qual o seu Certificado <strong>de</strong> Autenticida<strong>de</strong> ficará disponível,<br />
chamado <strong>de</strong> Período <strong>de</strong> Autenticação. Nesse registro, a função <strong>de</strong> resumo criptográfico<br />
usada <strong>de</strong>ve ser segura e igual aquela usada no carimbo.<br />
A publicação do Certificado <strong>de</strong> Autenticida<strong>de</strong> <strong>de</strong> cada carimbo emitido ocorre no<br />
início <strong>de</strong> seu Período <strong>de</strong> Autenticação e é precedida por uma fase <strong>de</strong> preparação, on<strong>de</strong> se<br />
dá a solicitação e posterior produção do certificado para o conjunto ao qual ele pertence.<br />
Tais Certificados para Conjuntos são solicitados periodicamente pela ACT.<br />
Em cada solicitação a ACT calcula uma representação do conjunto <strong>de</strong> carimbos do<br />
tempo registrados durante o período no RPA, enviando para a Âncora <strong>de</strong> Confiança um documento<br />
eletrônico assinado contendo essa representação, e seus dados <strong>de</strong> i<strong>de</strong>ntificação.<br />
Por meio <strong>de</strong> tal solicitação a ACT <strong>de</strong>clara ter emitido os carimbos do tempo ali representados.<br />
A representação <strong>de</strong>sses carimbos, por sua vez, é o nó raiz da Árvore <strong>de</strong> Merkle<br />
formada a partir <strong>de</strong>les e calculada por meio <strong>de</strong> algoritmos como o TREEHASH [23].<br />
Por igualmente operar <strong>de</strong> maneira periódica, a Âncora <strong>de</strong> Confiança apenas valida<br />
e registra a solicitação no RCC, aguardando o fim do período para assinar o Certificado<br />
<strong>de</strong> Autenticida<strong>de</strong> do conjunto ali representado. É com a publicação <strong>de</strong>sse certificado e<br />
da Prova <strong>de</strong> Associação correspon<strong>de</strong>nte, que termina a fase <strong>de</strong> preparação. Tais provas,<br />
por sua vez, são os caminhos <strong>de</strong> autenticação <strong>de</strong> cada carimbo na Árvore <strong>de</strong> Merkle,<br />
calculados pela ACT por meio <strong>de</strong> algoritmos <strong>de</strong> travessia como o <strong>de</strong> Szydlo [23].<br />
Iniciado o Período <strong>de</strong> Autenticação, é possível obter o Certificado <strong>de</strong> Autenticida<strong>de</strong><br />
do carimbo por meio dos protocolos <strong>de</strong> solicitação <strong>de</strong> Provas <strong>de</strong> Associação e <strong>de</strong><br />
Certificados para Conjuntos. O primeiro é apresentado a seguir:<br />
62
U −→ ACT : H(ts)<br />
ACT −→ U : Auth ts<br />
Nele, o usuário solicita a Prova <strong>de</strong> Associação <strong>de</strong> um carimbo, enviando o seu resumo<br />
criptográfico H(ts). Ao receber o resumo, a ACT obtêm a Prova <strong>de</strong> Associação correspon<strong>de</strong>nte<br />
no RPA e a retorna para o usuário. Certificados <strong>de</strong> Conjunto, por sua vez, são<br />
obtidos através do seguinte protocolo:<br />
U −→ Âncora : φ<br />
Âncora −→ U : {id ACT , φ}, SignÂncora ({id ACT , φ})<br />
} {{ }<br />
sl φ<br />
Nesse protocolo, o usuário solicita o Certificado para Conjuntos <strong>de</strong> um carimbo, enviando<br />
a representação <strong>de</strong> seu conjunto. Ao receber a representação, a Âncora <strong>de</strong> Confiança<br />
obtêm o Certificado para Conjuntos correspon<strong>de</strong>nte no RCC e o retorna para o usuário.<br />
Tal representação po<strong>de</strong> ser calculada a partir da Prova <strong>de</strong> Associação do carimbo, empregando<br />
o algoritmo para validação <strong>de</strong> caminhos <strong>de</strong> autenticação em Árvores <strong>de</strong> Merkle<br />
[19].<br />
Terminado o Período <strong>de</strong> Autenticação do carimbo, ocorre a <strong>de</strong>struição <strong>de</strong> sua<br />
Prova <strong>de</strong> Associação pela ACT. Tal <strong>de</strong>struição tem por objetivo limitar os custos <strong>de</strong> armazenamento<br />
relacionados a essas provas. Certificados para Conjuntos, por outro lado,<br />
permanecem no RCC <strong>de</strong> modo a suportar futuras renovações do Certificado <strong>de</strong> Autenticida<strong>de</strong><br />
do carimbo.<br />
A renovação <strong>de</strong> Certificados <strong>de</strong> Autenticida<strong>de</strong> ocorre mediante a solicitação do<br />
usuário, e segue o protocolo a seguir:<br />
U −→ Âncora : φ<br />
Âncora −→ U : {id ACT , φ}, Sign ′ Âncora ({id ACT , φ})<br />
} {{ }<br />
sl ′ φ<br />
Nele, o usuário solicita a renovação <strong>de</strong> seu Certificado <strong>de</strong> Autenticida<strong>de</strong>, enviando a<br />
representação presente no Certificado para Conjuntos. Ao receber tal representação, a<br />
Âncora <strong>de</strong> Confiança obtêm a nova versão do Certificado para Conjuntos no RCC e a<br />
retorna para o usuário. O Certificado <strong>de</strong> Autenticida<strong>de</strong> é renovado pela substituição do<br />
antigo Certificado para Conjuntos pelo novo.<br />
Novas versões do Certificado para Conjuntos ficam disponíveis a medida que as<br />
anteriores per<strong>de</strong>m sua valida<strong>de</strong>. Tal problema ocorre com a revogação ou expiração do<br />
certificado <strong>de</strong> chaves públicas da Âncora <strong>de</strong> Confiança, ou com o enfraquecimento do<br />
esquema <strong>de</strong> assinatura usado no Certificado para Conjuntos. Nesses casos, cabe a Âncora<br />
<strong>de</strong> Confiança contornar tais problemas e se preciso reassinar o certificado no RCC. Para<br />
tanto, po<strong>de</strong> ser necessário que ela primeiramente renove seu certificado <strong>de</strong> chaves públicas<br />
ou atualize seu esquema <strong>de</strong> assinatura.<br />
Por fim, <strong>de</strong> modo a limitar os custos relacionados à renovação dos Certificados <strong>de</strong><br />
Autenticida<strong>de</strong>, ocorre periodicamente a otimização do Repositório <strong>de</strong> Certificados para<br />
Conjuntos. Nessas otimizações são removidos do RCC todos os registros cuja função<br />
<strong>de</strong> resumo criptográfico usada não seja mais resistente à segunda inversão. Quando essa<br />
resistência é perdida, tanto o registro per<strong>de</strong> sua serventia, quanto o carimbo do tempo<br />
per<strong>de</strong> sua capacida<strong>de</strong> <strong>de</strong> comprovar a integrida<strong>de</strong> da informação datada.<br />
63
4.3. Preservação <strong>de</strong> Assinaturas<br />
A preservação <strong>de</strong> uma assinatura digital por meio <strong>de</strong> Carimbos do Tempo Autenticados<br />
segue os seguintes passos, on<strong>de</strong> s, d, C s e R s , são, respectivamente, a assinatura, o<br />
documento assinado, os certificados do caminho <strong>de</strong> certificação do signatário e os dados<br />
<strong>de</strong> revogação atuais:<br />
1. inicialização: adicionar um carimbo do tempo ts 1 sobre {s, d, C s , R s }, obtendo<br />
{{s, d, C s , R s }, ts 1 , C 1 ts};<br />
2. agendamento: agendar a sobreposição do carimbo. Essa sobreposição <strong>de</strong>ve ocorrer<br />
antes <strong>de</strong> o carimbo não po<strong>de</strong>r mais ser renovado, sendo, em geral, agendada<br />
para um momento próximo ao enfraquecimento da função <strong>de</strong> resumo criptográfico<br />
usada;<br />
3. autenticação: autenticar o carimbo durante o seu Período <strong>de</strong> Autenticação, obtendo<br />
{{s, d, C s , R s }, ts 1 , sl 1 ts};<br />
4. sobreposição: no momento agendado, validar ts 1 . Se inválido, renovar o carimbo.<br />
Sendo ts 1 o carimbo possivelmente renovado, adicionar ts 2 sobre {{s, d, C s , R s },<br />
ts 1 , sl 1 ts} obtendo {{{s, d, C s , R s }, ts 1 , sl 1 ts}, ts 2 , C 2 ts}. Caso ts 1 já tenha perdido<br />
sua valida<strong>de</strong>, e sua renovação não seja possível, a preservação falha;<br />
5. repetição: para os próximos carimbos, repetir os passos 2 e 3 enquanto for necessário<br />
preservar a valida<strong>de</strong> da assinatura. Dessa forma, na adição do n-ésimo<br />
carimbo, obtêm-se {{...{{{s, d, C s , R s }, ts 1 , sl 1 ts}, ts 2 , sl 2 ts}, ...}, ts n , C n ts}.<br />
4.4. Validação <strong>de</strong> Assinaturas<br />
Uma assinatura preservada {{...{{{s, d, C s , R s }, ts 1 , sl 1 ts}, ts 2 , sl 2 ts}, ...}, ts n ,<br />
C n ts} ou {{...{{{s, d, C s , R s }, ts 1 , sl 1 ts}, ts 2 , sl 2 ts}, ...}, ts n , sl n ts} é válida se:<br />
• o carimbo do tempo ts n for atualmente válido. Caso já esteja inválido, po<strong>de</strong> ser<br />
preciso autenticar e/ou renovar o carimbo;<br />
• para todo ts i , com 1 ≤ i ≤ n − 1, ts i era válido na data indicada por ts i+1 , sendo<br />
que a autenticida<strong>de</strong> <strong>de</strong> cada carimbo <strong>de</strong>ve ser verificada através <strong>de</strong> seu Certificado<br />
<strong>de</strong> Autenticida<strong>de</strong>.<br />
• a assinatura s era válida na data indicada por ts 1 .<br />
Um Certificado <strong>de</strong> Autenticida<strong>de</strong> {Auth ts , sl φ }, por sua vez, é válido se:<br />
• seu caminho <strong>de</strong> autenticação, presente na Prova <strong>de</strong> Associação, for válido;<br />
• a assinatura da Âncora <strong>de</strong> Confiança, presente no Certificado para Conjuntos, for<br />
válida.<br />
5. Análise<br />
Os principais benefícios trazidos pelo uso <strong>de</strong> Carimbos do Tempo Autenticados<br />
são o aumento na eficiência e confiabilida<strong>de</strong> na preservação das assinaturas digitais. Um<br />
outro benefício está na possibilida<strong>de</strong> <strong>de</strong> validação off-line <strong>de</strong>ssas assinaturas, permitindo<br />
que essa ocorra em dispositivos sem conexão <strong>de</strong> re<strong>de</strong>. O suporte à emissão, autenticação<br />
e renovação <strong>de</strong>sses carimbos, todavia, implica em custos adicionais para a Autorida<strong>de</strong> <strong>de</strong><br />
Carimbo do Tempo (ACT) e Âncora <strong>de</strong> Confiança.<br />
64
5.1. Custos na Preservação e Validação <strong>de</strong> Assinaturas<br />
O esquema <strong>de</strong> datação proposto é capaz <strong>de</strong> reduzir os custos na preservação e<br />
validação <strong>de</strong> assinaturas digitais por diminuir tanto a quantida<strong>de</strong> <strong>de</strong> carimbos adicionados<br />
durante a preservação, quanto os custos por carimbo adicionado. Tais melhorais po<strong>de</strong>m<br />
ser observadas consi<strong>de</strong>rando o mo<strong>de</strong>lo matemático apresentado abaixo.<br />
θ U (p p ) =<br />
n ∑ pp<br />
(α(ts i ) + α(V i )) (1)<br />
i=1<br />
n pp =<br />
⌈<br />
pp<br />
p ts<br />
⌉<br />
(2)<br />
A função 1 reflete as informações armazenadas durante a preservação por carimbos<br />
do tempo, on<strong>de</strong> o custo <strong>de</strong> armazenamento após um certo período <strong>de</strong> preservação p p<br />
é dado pelo espaço necessário para cada carimbo adicionado α(ts i ), bem como para as<br />
informações necessárias a sua validação, representado por α(V i ). O número <strong>de</strong> carimbos<br />
adicionados n pp , por sua vez, é dado pelo período <strong>de</strong> preservação divido pelo tempo médio<br />
pelos quais os carimbos permanecem válidos, até que a sua sobreposição seja necessária.<br />
A quantida<strong>de</strong> <strong>de</strong> carimbos do tempo adicionados é reduzida graças as operações<br />
<strong>de</strong> autenticação e renovação que permitem postergar a sobreposição dos carimbos. Graças<br />
a elas, <strong>de</strong>ntre todos os problemas que tradicionalmente <strong>de</strong>mandariam essa sobreposição,<br />
fica restando apenas um, o enfraquecimento da função <strong>de</strong> resumo criptográfico usada,<br />
geralmente um dos últimos a ocorrer. Essa redução po<strong>de</strong> ser observada consi<strong>de</strong>rando a<br />
forma como o período entre as sobreposições passa a ser calculado.<br />
Tradicionalmente, esse período po<strong>de</strong> ser aproximado pelo prazo <strong>de</strong> valida<strong>de</strong> médio<br />
dos certificados da ACT, pois a sua expiração ten<strong>de</strong> a ser o primeiro problema a <strong>de</strong>mandar<br />
a sobreposição do carimbo. De maneira mais realista, é usual consi<strong>de</strong>rar a meta<strong>de</strong> <strong>de</strong>sse<br />
prazo, pois os carimbos ten<strong>de</strong>m a ser obtidos tanto em seu início quanto no fim. Nos Carimbos<br />
do Tempo Autenticados, por outro lado, esse período é dado pela meta<strong>de</strong> daquele<br />
pelo qual as funções <strong>de</strong> resumo criptográfico usadas geralmente permanecem seguras.<br />
Assim, o número <strong>de</strong> carimbos adicionados diminui pois o período entre as<br />
sobreposições aumenta, uma vez que a segurança <strong>de</strong> funções <strong>de</strong> resumo criptográfico<br />
ten<strong>de</strong> a durar mais que certificados. Algo que po<strong>de</strong> ser observado ao se consi<strong>de</strong>rar<br />
recomendações técnicas sobre o período <strong>de</strong> valida<strong>de</strong> <strong>de</strong>sses certificados [4, 20], bem<br />
como o histórico das principais funções <strong>de</strong> resumo criptográficas até então publicadas.<br />
Enquanto o NIST, por exemplo, recomenda prazos <strong>de</strong> até 3 anos, funções <strong>de</strong> resumo ten<strong>de</strong>m<br />
a permanecer seguras por mais <strong>de</strong> 10 anos [11, 22].<br />
Os custos por carimbo adicionado, por sua vez, são reduzidos graças a operação <strong>de</strong><br />
autenticação que modifica a forma como a autenticida<strong>de</strong> <strong>de</strong>sses carimbos <strong>de</strong>ve ser verificada<br />
bem como as informações necessárias para essa verificação. O que tradicionalmente<br />
ocorreria pela validação da assinatura do carimbo e <strong>de</strong> seu caminho <strong>de</strong> certificação X.509,<br />
passa a ocorrer pela validação <strong>de</strong> seu Certificado <strong>de</strong> Autenticida<strong>de</strong>, que ten<strong>de</strong> a requerer<br />
tanto um espaço <strong>de</strong> armazenamento, quanto um tempo para validação, menores.<br />
Os custos <strong>de</strong> armazenamento por carimbo são reduzidos pois, enquanto os tradicionais<br />
requerem a guarda <strong>de</strong> cada certificado do caminho <strong>de</strong> certificação, bem como dos<br />
65
Variável Valor Variável Valor Variável Valor<br />
α(ts) 700 bytes p H 10 anos n i ts, n tr<br />
ts 604.800 carimbos<br />
α(C ts ) 3700 bytes α(Auth ts ) 380 bytes p tr 7 dias<br />
α(R ts ) 111600 bytes α(sl φ ) 500 bytes n pa<br />
tr 4 períodos<br />
p ACT 3 anos α(h ts ) 20 bytes n i ACT 100 ACTs<br />
Tabela 1. Valores usados nas simulações.<br />
dados <strong>de</strong> revogação relacionados, tais como Listas <strong>de</strong> Certificados Revogados (LCR) ou<br />
respostas OCSP, nos Carimbos do Tempo Autenticados é necessário apenas o armazenamento<br />
do Certificado <strong>de</strong> Autenticida<strong>de</strong>. Esse último formado por um Certificado para<br />
Conjuntos, e por uma ca<strong>de</strong>ia <strong>de</strong> resumos criptográficos que cresce logaritmicamente em<br />
função do número <strong>de</strong> carimbos que o certificado autentica.<br />
O tempo para validar o carimbo, por sua vez, é menor principalmente por tornar<br />
<strong>de</strong>snecessária a obtenção <strong>de</strong> informações complementares pela re<strong>de</strong>. Nos carimbos tradicionais<br />
isso é requerido para permitir a validação do caminho <strong>de</strong> certificação com dados<br />
<strong>de</strong> revogações atuais. Nos Carimbos do Tempo Autenticados isso não ocorre porque o<br />
Certificado <strong>de</strong> Autenticida<strong>de</strong> é auto-contido. Nesse caso, consi<strong>de</strong>rando a implementação<br />
tradicional, on<strong>de</strong> uma Âncora <strong>de</strong> Confiança é válida se estiver cadastrada no repositório<br />
<strong>de</strong> âncoras do usuário.<br />
De modo a estimar os ganhos trazidos na prática por essa proposta, foram realizadas<br />
simulações da preservação <strong>de</strong> uma assinatura por 50 anos, empregando valores<br />
tipicamente encontrados em infraestruturas <strong>de</strong> chaves públicas (ICP) <strong>de</strong> gran<strong>de</strong> porte.<br />
Dois <strong>de</strong>sses valores requerem maiores consi<strong>de</strong>rações, sendo eles o prazo <strong>de</strong> valida<strong>de</strong> dos<br />
certificados da ACT e o período <strong>de</strong> uso das funções <strong>de</strong> resumo criptográfico.<br />
O prazo <strong>de</strong> valida<strong>de</strong> <strong>de</strong>sses certificados é o prazo máximo citado em<br />
recomendações técnicas como a do NIST [4], sendo, igualmente, aquele usado na Infraestrutura<br />
<strong>de</strong> Chaves Públicas Brasileira (ICP-Brasil). O período <strong>de</strong> uso das funções <strong>de</strong><br />
resumo criptográfico, por sua vez, consi<strong>de</strong>ra o histórico das principais funções já publicadas,<br />
assim como previsões quanto a segurança das funções atualmente em uso [11, 5, 22].<br />
Tal período po<strong>de</strong> ser consi<strong>de</strong>rado conservador, uma vez que no esquema proposto<br />
a resistência à segunda inversão é suficiente para a renovação dos carimbos, e essa ten<strong>de</strong><br />
a se per<strong>de</strong>r certo tempo após tais funções serem consi<strong>de</strong>radas inseguras. Consi<strong>de</strong>rando<br />
ataques <strong>de</strong> força bruta, por exemplo, a quebra da resistência à colisão, que já tornaria a<br />
função insegura, requer o cálculo <strong>de</strong> 2 n/2 resumos criptográficos, sendo n o número <strong>de</strong><br />
bits do resumo. A quebra da resistência à segunda inversão, por outro lado, requer 2 n<br />
operações.<br />
Os valores relacionados ao esquema proposto, usados na simulação, por sua vez,<br />
foram obtidos a partir <strong>de</strong> uma implementação dos Carimbos do Tempo Autenticados, realizada<br />
sobre uma especificação ASN.1 dos protocolos. Esses valores, assim como aqueles<br />
usados na configuração <strong>de</strong>sse esquema <strong>de</strong> datação, são apresentados na tabela 1. Como<br />
alguns <strong>de</strong>les crescem com o tempo, assume-se que sejam os valores médios encontrados<br />
durante o período <strong>de</strong> preservação, consi<strong>de</strong>rando que tenha começado no passado e que<br />
continue no futuro.<br />
66
Nas simulações, os custos <strong>de</strong> armazenamento com carimbos tradicionais chegaram<br />
a 3,65 MB. Na preservação com Carimbos do Tempo Autenticados, por outro lado,<br />
esse custo foi <strong>de</strong> apenas 15,42 KB, uma redução <strong>de</strong> 99,59%. Essa redução foi particularmente<br />
influenciada pelo espaço necessário para o armazenamento das informações <strong>de</strong><br />
validação <strong>de</strong>sses carimbos, esse foi 99,23% menor que o requerido pelos carimbos tradicionais.<br />
5.2. Confiabilida<strong>de</strong> na Preservação <strong>de</strong> Assinaturas<br />
O esquema <strong>de</strong> datação proposto é capaz <strong>de</strong> aumentar a confiabilida<strong>de</strong> do processo<br />
<strong>de</strong> preservação por carimbos do tempo por tornar toleráveis a maioria dos problemas que<br />
tradicionalmente levariam a preservação a falhar. Particularmente, aqueles problemas que<br />
impediriam futuras sobreposições do último carimbo até então adicionado, por torná-lo<br />
inválido antes do previsto no agendamento. Tradicionalmente tais problemas compreen<strong>de</strong>m:<br />
1. revogação do certificado da Âncora <strong>de</strong> Confiança;<br />
2. quebra do esquema <strong>de</strong> assinatura usado pela Âncora;<br />
3. revogação do certificado <strong>de</strong> alguma das ACs do caminho <strong>de</strong> certificação;<br />
4. quebra <strong>de</strong> algum esquema <strong>de</strong> assinatura usado por essas ACs;<br />
5. revogação do certificado da ACT;<br />
6. quebra do esquema <strong>de</strong> assinatura usado pela ACT;<br />
7. quebra da função <strong>de</strong> resumo criptográfico usada pela ACT.<br />
No caso dos Carimbos do Tempo Autenticados, a maioria <strong>de</strong>sses problemas (3,<br />
4, 5 e 6) já é anulada na autenticação do carimbo. Os restantes são tolerados por meio<br />
da operação <strong>de</strong> renovação do carimbo que permite restabelecer a sua valida<strong>de</strong> quando<br />
perdida. As únicas exceções são a revogação da Âncora <strong>de</strong> Confiança, <strong>de</strong>vido a perda <strong>de</strong><br />
integrida<strong>de</strong> do Repositório <strong>de</strong> Certificados para Conjuntos (RCC), e a quebra da função<br />
<strong>de</strong> resumo criptográfico usada no carimbo pela ACT. Particularmente, a perda <strong>de</strong> sua<br />
resistência à segunda inversão. Nesses casos, mesmo a renovação do carimbo não é mais<br />
possível.<br />
5.3. Serviços <strong>de</strong> Suporte<br />
Apesar dos benefícios oferecidos por esse novo esquema <strong>de</strong> datação, seu suporte<br />
implica em custos adicionais para a ACT e Âncora <strong>de</strong> Confiança. No caso da ACT, tais<br />
custos estão particularmente relacionados à produção e armazenamento das Provas <strong>de</strong><br />
Associação, no Repositório <strong>de</strong> Provas <strong>de</strong> Associação (RPA).<br />
A produção <strong>de</strong>ssas provas possui custos <strong>de</strong> memória e processamento que <strong>de</strong>pen<strong>de</strong>m<br />
principalmente do algoritmo adotado para a travessia da Árvore <strong>de</strong> Merkle. No <strong>de</strong><br />
Szydlo [23], por exemplo, a geração <strong>de</strong> cada caminho <strong>de</strong> autenticação requer o cálculo <strong>de</strong><br />
no máximo 2log 2 (n) resumos criptográficos, e o armazenamento <strong>de</strong> menos <strong>de</strong> 3log 2 (n)<br />
resumos em memória, on<strong>de</strong> n é o número <strong>de</strong> carimbos do tempo emitidos no período. Os<br />
custos <strong>de</strong> armazenamento <strong>de</strong>ssas provas, por sua vez, po<strong>de</strong>m ser representados por meio<br />
do seguinte mo<strong>de</strong>lo:<br />
θ ACT (p o ) =<br />
tr−1 n<br />
∑ ∑<br />
i ts<br />
(<br />
i=tr−n otr j=1<br />
α(Auth i,j<br />
ts )) +<br />
n tr<br />
ts<br />
∑<br />
α(h i ts) (3)<br />
i=1<br />
67
tr − npa tr + |tr − n pa<br />
tr |<br />
n otr = tr −<br />
2<br />
⌈ ⌉<br />
po<br />
tr =<br />
p tr<br />
(4)<br />
(5)<br />
A função 3 reflete as informações armazenadas no RPA durante as operações da ACT.<br />
Nessa função, o custo <strong>de</strong> armazenamento após um período <strong>de</strong> operação p o , é dado pelo<br />
caminho <strong>de</strong> autenticação <strong>de</strong> cada um dos n i ts carimbos emitidos, nos n otr períodos anteriores<br />
que ainda estão em Período <strong>de</strong> Autenticação, somado ao espaço necessário para o<br />
resumo criptográfico h i ts <strong>de</strong> cada um dos n tr<br />
ts carimbos emitidos no período atual tr. On<strong>de</strong><br />
p tr é a duração <strong>de</strong> um período e n pa<br />
tr é a duração do Período <strong>de</strong> Autenticação em número<br />
<strong>de</strong> períodos.<br />
No caso da Âncora <strong>de</strong> Confiança, o suporte a esse esquema <strong>de</strong> datação traz custos<br />
relacionados, principalmente, à reassinatura dos Certificados para Conjuntos e armazenamento<br />
<strong>de</strong>sses certificados no RCC. A reassinatura dos certificados possui custos relacionados<br />
principalmente ao esquema <strong>de</strong> assinatura usado e ao número <strong>de</strong> certificados emitidos<br />
e ainda suportados. Número esse que <strong>de</strong>pen<strong>de</strong> da quantida<strong>de</strong> <strong>de</strong> ACTs em operação, bem<br />
como da duração dos períodos da Âncora <strong>de</strong> Confiança. Os custos <strong>de</strong> armazenamento<br />
<strong>de</strong>sses certificados, por sua vez, po<strong>de</strong>m ser representados por meio do seguinte mo<strong>de</strong>lo:<br />
θÂncora (p o ) =<br />
ar−1 n<br />
∑<br />
i ACT<br />
∑<br />
(<br />
i=0 j=1<br />
n ar<br />
r∑<br />
α(sl i,j<br />
φ )) +<br />
i=1<br />
α(r i ) (6)<br />
ar =<br />
⌈<br />
po<br />
p ar<br />
⌉<br />
(7)<br />
A função 6 reflete as informações armazenadas no RCC durante as operações da Âncora<br />
<strong>de</strong> Confiança, <strong>de</strong>sconsi<strong>de</strong>rando as otimizações periódicas do RCC. Nessa função, o custo<br />
<strong>de</strong> armazenamento após um período <strong>de</strong> operação p o é dado pelos Certificados para Conjuntos<br />
até então publicados para as n i ACT ACTs em operação, somado ao espaço necessário<br />
para cada uma das n ar<br />
r solicitações recebidas no período atual ar. On<strong>de</strong> p ar é<br />
a duração <strong>de</strong> um período <strong>de</strong> Âncora <strong>de</strong> Confiança.<br />
De modo a estimar os custos trazidos na prática para a ACT e Âncora <strong>de</strong><br />
Confiança, foram realizadas simulações das operações <strong>de</strong>ssas entida<strong>de</strong>s por 10 anos. Nessas<br />
simulações foram igualmente consi<strong>de</strong>rados os valores da tabela 1, sendo que o número<br />
<strong>de</strong> carimbos emitidos em cada período da ACT assume a taxa <strong>de</strong> um carimbo por segundo<br />
durante todo o período.<br />
Nas simulações os custos <strong>de</strong> armazenamento para a ACT chegaram a 888 MB, se<br />
mantendo praticamente constantes <strong>de</strong>vido a remoção das Provas <strong>de</strong> Associação ao fim do<br />
Período <strong>de</strong> Autenticação dos carimbos emitidos. No caso da Âncora <strong>de</strong> Confiança, foram<br />
necessários 24 MB para o armazenamento dos Certificados para Conjuntos emitidos ao<br />
longo <strong>de</strong>sses 10 anos. Nesse caso, não foi consi<strong>de</strong>rada a operação <strong>de</strong> otimização do RCC,<br />
que removeria registros conforme a função <strong>de</strong> resumo criptográfico usada se tornasse<br />
insegura.<br />
68
6. Conclusões<br />
O uso <strong>de</strong> documentos eletrônicos vem crescendo em importância nas relações<br />
entre os cidadãos, empresas e governos, tornando a preservação <strong>de</strong> assinaturas digitais<br />
uma questão fundamental no caso daqueles documentos que precisam ser preservados<br />
por um longo período <strong>de</strong> tempo. Assim, várias estratégias já foram propostas, sendo a<br />
sobreposição <strong>de</strong> carimbos do tempo a principal <strong>de</strong>las.<br />
Neste trabalho aumentamos a eficiência e confiabilida<strong>de</strong> <strong>de</strong>ssa estratégia <strong>de</strong><br />
preservação por meio <strong>de</strong> um novo esquema <strong>de</strong> datação, os Carimbos do Tempo Autenticados.<br />
Tal esquema reduz drasticamente os custos na preservação e validação <strong>de</strong> assinaturas<br />
digitais, além <strong>de</strong> oferecer maiores garantias quanto a preservação <strong>de</strong>ssas assinaturas pelo<br />
tempo necessário.<br />
Esses benefícios, além da possibilida<strong>de</strong> <strong>de</strong> validação off-line das assinaturas, tornam<br />
esse esquema <strong>de</strong> datação particularmente interessante para dispositivos com poucos<br />
recursos computacionais, ou na preservação <strong>de</strong> gran<strong>de</strong>s volumes <strong>de</strong> documentos. Tal esquema<br />
po<strong>de</strong> ser usado não só na preservação <strong>de</strong> assinaturas digitais, mas igualmente em<br />
outras áreas on<strong>de</strong> carimbos do tempo são empregados. Exemplos <strong>de</strong>ssas áreas incluem a<br />
proteção da proprieda<strong>de</strong> intelectual, o comércio e votação eletrônicos.<br />
Trabalhos futuros po<strong>de</strong>m focar na análise formal dos protocolos criptográficos<br />
envolvidos nesse esquema <strong>de</strong> datação, bem como na implementação <strong>de</strong> mecanismos <strong>de</strong><br />
herança que permitam migrar o conteúdo dos Repositórios <strong>de</strong> Certificados para Conjuntos<br />
para novas Âncoras <strong>de</strong> Confiança. Outros tópicos incluem o uso dos Certificados <strong>de</strong><br />
Autenticida<strong>de</strong> para a otimização <strong>de</strong> assinaturas <strong>de</strong> curto prazo, bem como a integração das<br />
operações <strong>de</strong> autenticação e renovação em outras estratégias <strong>de</strong> notarização, aumentando<br />
sua eficiência e confiabilida<strong>de</strong>.<br />
Referências<br />
[1] C. Adams, P. Cain, D. Pinkas, and R. Zuccherato. Internet X.509 Public Key Infrastructure Time-Stamp<br />
Protocol (TSP). RFC 3161 (Proposed Standard), August 2001. Updated by RFC 5816.<br />
[2] R. An<strong>de</strong>rson. Invited lecture. In Fourth Annual Conference on Computer and Communications Security,<br />
ACM, 1997.<br />
[3] A. Ansper, A. Buldas, M. Roos, and J. Willemson. Efficient long-term validation of digital signatures. In<br />
Public Key Cryptography, pages 402–415. Springer, 2001.<br />
[4] E. Barker, W. Barker, W. Burr, W. Polk, and M. Smid. Nist sp800-57: Recommendation for key<br />
management–part 1: General (revised). Technical report, NIST, 2007.<br />
[5] E. Barker and A. Roginsky. Draft nist sp800-131: Recommendation for the transitioning of cryptographic<br />
algorithms and key sizes. Technical report, NIST, jan 2010.<br />
[6] D. Bayer, S. Haber, and W.S. Stornetta. Improving the efficiency and reliability of digital time-stamping.<br />
Sequences II: Methods in Communication, Security, and Computer Science, pages 329–334, 1993.<br />
[7] K. Blibech and A. Gabillon. A new timestamping scheme based on skip lists. Computational Science and<br />
Its Applications-ICCSA 2006, pages 395–405, 2006.<br />
[8] D. Chaum and S. Roijakkers. Unconditionally-secure digital signatures. Advances in Cryptology-<br />
CRYPT0’90, pages 206–214, 1991.<br />
69
[9] D. Cooper, S. Santesson, S. Farrell, S. Boeyen, R. Housley, and W. Polk. Internet X.509 Public Key Infrastructure<br />
Certificate and Certificate Revocation List (CRL) Profile. RFC 5280 (Proposed Standard),<br />
May 2008.<br />
[10] R.F. Custodio, M.A.G. Vigil, J. Romani, F.C. Pereira, and J. da Silva Fraga. Optimized Certificates–A<br />
New Proposal for Efficient Electronic Document Signature Validation. In Public Key Infrastructure:<br />
5th European PKI Workshop: Theory and Practice, EuroPKI 2008 Trondheim, Norway, June 16-17,<br />
2008, Proceedings, page 49. Springer-Verlag New York Inc, 2008.<br />
[11] European Telecommunications Standards Institute. Electronic Signatures and Infrastructures (ESI); Algorithms<br />
and Parameters for Secure Electronic Signatures; Part 1: Hash functions and asymmetric<br />
algorithms, Nov 2007.<br />
[12] European Telecommunications Standards Institute. Electronic Signatures and Infrastructures (ESI); CMS<br />
Advanced electronic Signatures (CAdES), Nov 2009.<br />
[13] European Telecommunications Standards Institute. Electronic Signatures and Infrastructures (ESI); XML<br />
Advanced electronic Signatures (XAdES), Jun 2009.<br />
[14] T. Gondrom, R. Brandner, and U. Por<strong>de</strong>sch. Evi<strong>de</strong>nce Record Syntax (ERS). RFC 4998 (Proposed Standard),<br />
August 2007.<br />
[15] S. Haber and W. Stornetta. How to time-stamp a digital document. Advances in Cryptology-CRYPT0’90,<br />
pages 437–455, 1991.<br />
[16] M.K. Just. On the temporal authentication of digital data. PhD thesis, Carleton University, 1998.<br />
[17] D. Lekkas and D. Gritzalis. Cumulative notarization for long-term preservation of digital signatures. Computers<br />
& Security, 23(5):413–424, 2004.<br />
[18] H. Massias and J.J. Quisquater. Time and cryptography. US-patent n, 5:12, 1997.<br />
[19] R.C. Merkle. Protocols for public key cryptosystems. 1980.<br />
[20] D. Pinkas, N. Pope, and J. Ross. Policy Requirements for Time-Stamping Authorities (TSAs). RFC 3628<br />
(Informational), November 2003.<br />
[21] G.J. Popek and C.S. Kline. Encryption and secure computer networks. ACM Computing Surveys (CSUR),<br />
11(4):331–356, 1979.<br />
[22] B. Preneel. The First 30 Years of Cryptographic Hash Functions and the NIST SHA-3 Competition. Topics<br />
in Cryptology-CT-RSA 2010, pages 1–14, 2010.<br />
[23] Michael Szydlo. Merkle tree traversal in log space and time. In In Eurocrypt 2004, LNCS, pages 541–554.<br />
Springer-Verlag, 2004.<br />
[24] M. A. G. VIGIL, N. SILVA, R. MORAES, and R. F. CUSTODIO. Infra-estrutura <strong>de</strong> chaves públicas<br />
otimizada: Uma icp <strong>de</strong> suporte a assinaturas eficientes para documentos eletrônicos. In Simpósio<br />
Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais, pages 129–142, 2009.<br />
70
SCuP - Secure Cryptographic Microprocessor<br />
Roberto Gallo 12 , Henrique Kawakami 1 ,<br />
Ricardo Dahab 2∗<br />
1 KRYPTUS Security Solutions Ltd., Campinas, SP, Brazil<br />
2 Campinas State University, Campinas, SP, Brazil<br />
{gallo,rdahab}@ic.unicamp.br, {gallo,kawakami}@kryptus.com<br />
Abstract. In this paper we present SCuP - the Secure Cryptographic Micro-<br />
Processor with secure co<strong>de</strong> execution (encrypted, signed). SCuP is an asymmetric<br />
multicore processor for general applications with several innovative protection<br />
mechanisms against logical and physical attacks. Among the main processor<br />
features are the hardware firewall (HWF) and the <strong>de</strong>ep inspection/introspection<br />
mechanism (MIP) along with the secure execution packages (PES). SCuP has<br />
been validated in simulations and in FPGAs and its semiconductor diffusion will<br />
be done in the next few months.<br />
Resumo. Neste artigo apresentamos o SCuP - Processador Criptográfico com<br />
Execução Segura <strong>de</strong> Código (cifrada, assinada). O SCuP é um processador <strong>de</strong><br />
múltiplos núcleos assimétrico para aplicações gerais, que apresenta diversos<br />
mecanismos inovadores <strong>de</strong> proteção contra ataques lógicos e físicos ao processador.<br />
Dentre as principais características do processador estão o firewall<br />
<strong>de</strong> hardware (HWF) e o mecanismo <strong>de</strong> inspeção/introspecção profunda (MIP)<br />
combinados com os pacotes <strong>de</strong> execução seguros (PES). O SCuP foi validado<br />
em simulações e em FPGAs e <strong>de</strong>verá seguir para difusão semicondutora nos<br />
próximos meses.<br />
1. Introdução<br />
A importância da segurança nos sistemas baseados em hardware e software é bem estabelecida<br />
e dispensa justificativas. Entretanto, apesar <strong>de</strong> sua relevância, sistemas computacionais<br />
seguros têm se mostrado supreen<strong>de</strong>ntemente difíceis <strong>de</strong> serem obtidos. Parte<br />
<strong>de</strong>sta dificulda<strong>de</strong> po<strong>de</strong> ser atribuída ao fato <strong>de</strong> que segurança mais do que uma área do<br />
conhecimento, é uma transversal que perpassa diversas áreas, como Teoria do Números,<br />
Codificação Segura, Criptografia, Estatística e Física <strong>de</strong>ntre outras. Desta forma, até o<br />
momento não existe uma teoria unificada para Segurança, o que explica as recorrentes<br />
falhas reportadas em toda sorte <strong>de</strong> sistemas.<br />
O SCuP foi <strong>de</strong>senvolvido <strong>de</strong>ntro da visão mais ampla <strong>de</strong> segurança e que consi<strong>de</strong>ra<br />
que quaisquer componentes dos sistemas po<strong>de</strong>m conter <strong>de</strong>feitos <strong>de</strong> segurança.<br />
Nossa Contribuição Neste artigo apresentamos o SCuP - o Secure Cryptographic<br />
Microprocessor, um processador <strong>de</strong> uso geral cuja arquitetura foi projetada para garantir<br />
altos níveis <strong>de</strong> proteção e resiliência mesmo contra os adversários mais motivados com<br />
um cenário <strong>de</strong> ataques ampliado. Entre as características que tornam o SCuP único estão:<br />
i) o emprego <strong>de</strong> múltiplos núcleos com processamento assimétrico; ii) mecanismos <strong>de</strong><br />
71
inspeção e introspeção <strong>de</strong> software; iii) suporte a mecanismos <strong>de</strong> reparação dinâmica <strong>de</strong><br />
software; e iv) mecanismos <strong>de</strong> execução segura <strong>de</strong> pacotes.<br />
Organização do Artigo Na Seção 2 fazemos uma ampla revisão <strong>de</strong> problemas e<br />
soluções <strong>de</strong> sistemas seguros; na Seção 3 apresentamos a arquitetura do SCuP e os seus<br />
componentes; na Seção 4 apresentamos alguns resultados <strong>de</strong> implementação; a Seção 5<br />
conclui e apresenta algumas possibilida<strong>de</strong>s <strong>de</strong> trabalhos futuros.<br />
2. O Problema e Trabalhos Relacionados<br />
Processadores e sistemas seguros estão relacionado com, entre outras, as áreas <strong>de</strong>: i)<br />
arquiteturas seguras <strong>de</strong> hardware; ii) co-processadores seguros; iii) prevenção, <strong>de</strong>tecção e<br />
recuperação <strong>de</strong> violação <strong>de</strong> segurança; iv) métricas <strong>de</strong> segurança; e v) interfaces seguras.<br />
Co-Processadores Criptográficos<br />
Os trabalhos relacionados mais relevantes, que abrangem mais <strong>de</strong> uma área mencionada,<br />
incluem o trabalho pioneiro do <strong>de</strong>senvolvimento do módulo criptográfico IBM4758 [4],<br />
precursor <strong>de</strong> diversos dos mecanismos <strong>de</strong> segurança atualmente empregados em hardware<br />
seguro, principalmente do ponto <strong>de</strong> vista <strong>de</strong> segurança física. O IBM4758 é um dispositivo<br />
(placa) PCI, multi-chip, com funções <strong>de</strong> Hardware Security Module (HSM) e também<br />
capaz <strong>de</strong> executar programas <strong>de</strong> usuários, previamente assinados, em seu processador com<br />
arquitetura 80486.<br />
Apesar <strong>de</strong> seu elevado nível <strong>de</strong> segurança física, o IBM4758 é inapropriado para<br />
diversos cenários <strong>de</strong> uso. Neste sentido, a arquitetura AEGIS [20] representa uma evolução<br />
importante ao propor um processador (em um único componente) capaz <strong>de</strong> realizar a<br />
execução segura <strong>de</strong> código utilizando os conceitos <strong>de</strong> ca<strong>de</strong>ia <strong>de</strong> confiança (que parte <strong>de</strong><br />
um processo <strong>de</strong> boot seguro) e o isolamento <strong>de</strong> processos seguros daqueles não seguros<br />
por meio <strong>de</strong> modificações <strong>de</strong> arquitetura em um núcleo <strong>de</strong> processador MIPS . O AE-<br />
GIS também emprega <strong>de</strong> maneira inovadora a proteção da memória RAM (off-chip) do<br />
processador por meio da cifração e autenticação do conteúdo <strong>de</strong> memória.<br />
O processador Cerium [2] é uma outra proposta também relevante, menos completa<br />
do ponto <strong>de</strong> vista <strong>de</strong> arquitetura, mas que traz um benefício importante: saídas certificadas<br />
(assinadas) da execução <strong>de</strong> aplicações. Com isso, entida<strong>de</strong>s externas (clientes ou<br />
atestadores) po<strong>de</strong>m confiar nos resultados da computação através da verificação das assinaturas<br />
produzidas. Há uma clara diferença <strong>de</strong> visão em relação aos trabalhos anteriores:<br />
o interessado na integrida<strong>de</strong> <strong>de</strong> um sistema não necessariamente é o seu proprietário, a<br />
exemplo <strong>de</strong> aplicações <strong>de</strong> DRM (Digital Rights Management).<br />
Execução Segura <strong>de</strong> Código<br />
As aplicações <strong>de</strong> DRM estão sujeitas a um mo<strong>de</strong>lo <strong>de</strong> ameaças (threat mo<strong>de</strong>l) particularmente<br />
interessante: se por um lado conteúdo (aplicações, músicas, filmes) po<strong>de</strong> custar<br />
milhões <strong>de</strong> dólares para ser produzido, o ganho do adversário individual com a pirataria<br />
do mesmo conteúdo é or<strong>de</strong>ns <strong>de</strong> gran<strong>de</strong>za menor; ou, <strong>de</strong> outra forma, a motivação <strong>de</strong> um<br />
72
adversário para copiar alguns arquivos <strong>de</strong> música é muito limitada, em especial se o custo<br />
do “ataque” for proporcional ao número <strong>de</strong> arquivos copiados.<br />
Esse mo<strong>de</strong>lo <strong>de</strong> ameaças foi aquele utilizado na concepção da geração atual do<br />
padrão do Trusted Platform Module (TPM) do Trusted Computing Group (TCG) [22],<br />
a plataforma (hardware + software) padrão <strong>de</strong> mercado para computação confiável em<br />
dispositivos como computadores pessoais e aparelhos celulares. O TPM-TCG é um periférico<br />
soldado à placa mãe do sistema e que possui capacida<strong>de</strong>s <strong>de</strong> assinatura digital,<br />
verificação <strong>de</strong> assinatura e software measurement. Em um sistema habilitado, o TPM<br />
po<strong>de</strong> ser utilizado para a verificação da ca<strong>de</strong>ia <strong>de</strong> boot do sistema e, após inicializado, na<br />
verificação (measurement) da integrida<strong>de</strong> das aplicações em execução.<br />
A proposta do TPM tem alguns méritos: i) tem baixo custo; ii) não requer refatoração<br />
<strong>de</strong> código legado; e iii) vai no caminho certo ao consi<strong>de</strong>rar tanto integrida<strong>de</strong> <strong>de</strong> binários<br />
como <strong>de</strong> imagens em execução. Por outro lado, possui sérias limitações: i) é um dispositivo<br />
escravo <strong>de</strong> barramento, po<strong>de</strong>ndo ser completamente ignorado pelo sistema, e também<br />
não possui po<strong>de</strong>r <strong>de</strong> inspeção; ii) possui arquitetura similar a <strong>de</strong> um smartcard, com barramento<br />
LPC, resultando em baixa banda <strong>de</strong> comunicação com sistema e baixo po<strong>de</strong>r<br />
computacional; iii) po<strong>de</strong> ser subvertido por meio <strong>de</strong> modificações na BIOS do sistema (na<br />
sessão CRTM); e iv) não consi<strong>de</strong>ra sigilo, relegando às aplicações essa tarefa.<br />
De forma a melhorar o perfil <strong>de</strong> segurança sem aumento consi<strong>de</strong>rável <strong>de</strong> custos,<br />
Costan et al [3] propuseram e implementaram (utilizando um processador Javacard) o<br />
Trusted Execution Module (TEM), capaz <strong>de</strong> executar código seguro no próprio módulo,<br />
através <strong>de</strong> Secure Execution Closure Packs (SECpacks). Os SECpacks permitem que<br />
aplicações <strong>de</strong> tamanho arbitrário, especialmente escritas, sejam fatoradas em pequenos<br />
módulos e executadas no ambiente embarcado seguro (smartcards, processadores seguros)<br />
ao custo <strong>de</strong> operações <strong>de</strong> E/S adicionais e da <strong>de</strong>gradação <strong>de</strong> performance que acompanha<br />
a fatoração.<br />
O emprego <strong>de</strong> pacotes <strong>de</strong> execução segura no TEM remonta, possivelmente, ao<br />
IBM4758, mas foi no IBM Cell [19], utilizado no Sony Playstation 3, que ela foi utilizada<br />
<strong>de</strong> uma forma mais consistente. O Cell é um processador multi-núcleo assimétrico<br />
especialmente voltado para o mercado <strong>de</strong> entretenimento, on<strong>de</strong> po<strong>de</strong>r <strong>de</strong> processamento<br />
e proteção <strong>de</strong> conteúdo têm priorida<strong>de</strong>s altas. De especial interesse no Cell são os Synergistic<br />
Processing Elements (SPE), responsáveis pelo processamento <strong>de</strong> alto <strong>de</strong>sempenho<br />
do processador. Cada SPE po<strong>de</strong> ser colocado em modo <strong>de</strong> execução seguro (com código e<br />
dados assinados e cifrados), isolado dos <strong>de</strong>mais núcleos, no modo secure processing vault<br />
- com memória interna própria. Neste modo nenhum outro núcleo é capaz <strong>de</strong> inspecionar<br />
ou alterar código ou dados em execução. Os ganhos são claros: aumento do nível <strong>de</strong><br />
proteção contra pirataria ao diminuir o risco <strong>de</strong> que fragilida<strong>de</strong>s nos softwares executando<br />
nos <strong>de</strong>mais núcleos sejam utilizadas para atacar o SPE no modo vault.<br />
A execução segura <strong>de</strong> pacotes po<strong>de</strong> ser vista como um tipo especial <strong>de</strong> isolamento<br />
<strong>de</strong> threads, ou execução segura <strong>de</strong> threads, on<strong>de</strong> o número <strong>de</strong> processos executando simultaneamente<br />
no processador é limitado ao número <strong>de</strong> núcleos; ou, <strong>de</strong> outra forma, threads<br />
seguras não coexistem com threads normais em um mesmo núcleo.<br />
A execução <strong>de</strong> threads seguras (ou isoladas) simultaneamente em um mesmo<br />
núcleo foi implementada tanto na proposta do AEGIS por meio <strong>de</strong> instruções e modos<br />
73
<strong>de</strong> execução privilegiados, como mais recentemente na arquitetura SP [9, 13]. A arquitetura<br />
SP, no entanto é <strong>de</strong> uso mais geral e minimalista e po<strong>de</strong> ser aplicada com menor<br />
número <strong>de</strong> intervenções em arquiteturas <strong>de</strong> processadores já existentes, como as famílias<br />
x86 e SPARC. A Arquitetura SP utiliza alterações <strong>de</strong> instruction sets e a adição <strong>de</strong> componentes<br />
<strong>de</strong> cifração <strong>de</strong> memória; e, utilizando o proposto Trusted Software Module, um<br />
sistema operacional seguro minimalista, provê serviços <strong>de</strong> confi<strong>de</strong>ncialida<strong>de</strong> e atestação<br />
remotos.<br />
Arquiteturas para Execução Monitorada<br />
Apesar <strong>de</strong> não apontado pelo trabalho <strong>de</strong> Lee [9], po<strong>de</strong>mos conjecturar que, com modificações<br />
no TSM, a arquitetura SP (e também na pilha <strong>de</strong> software do AEGIS) po<strong>de</strong>ria ser utilizada<br />
para introspecção <strong>de</strong> software entre processos. Esse uso, no entanto, parte do princípio<br />
<strong>de</strong> que o sistema verificador (SV) não sofre das mesmas fragilida<strong>de</strong>s que o sistema em<br />
verificação (SEV), e que também não é influenciado por alguma execução faltosa. Para<br />
diminuir riscos implícitos <strong>de</strong> segurança provenientes <strong>de</strong> problemas <strong>de</strong> implementação e<br />
arquiteturas <strong>de</strong> solução complexas, muito se fala [18, 9] da utilização <strong>de</strong> bases minimalistas<br />
<strong>de</strong> computação confiada on<strong>de</strong> a pilha <strong>de</strong> software (BIOS segura, S.O. seguro,<br />
aplicações seguras...) é reduzida a alguns poucos milhares <strong>de</strong> linhas <strong>de</strong> código.<br />
Entretanto, tanto quanto saibamos, nenhum trabalho tem se atentando ao fato <strong>de</strong><br />
que as arquiteturas <strong>de</strong> hardware <strong>de</strong> processadores (e sistemas) são <strong>de</strong>scritas em centenas<br />
<strong>de</strong> milhares ou mesmo milhões <strong>de</strong> linhas <strong>de</strong> código <strong>de</strong> linguagens <strong>de</strong> <strong>de</strong>scrição <strong>de</strong> hardware<br />
e, portanto, estão sujeitas a problemas <strong>de</strong> implementação tanto quanto os softwares,<br />
na medida em que segurança não é uma consi<strong>de</strong>ração comum no mundo dos sintetizadores<br />
<strong>de</strong> hardware. Desta forma, é temerário esperar que um sistema típico não possua<br />
problemas ocultos <strong>de</strong> segurança em termos <strong>de</strong> implementação.<br />
Trabalhos como CuPIDS [23] e CoPilot [15], por sua vez, caminham por uma linha<br />
<strong>de</strong> pesquisa distinta: utilizam pares <strong>de</strong> sistemas, um monitor <strong>de</strong> (políticas) <strong>de</strong> segurança<br />
e outro monitorado. O CoPilot é voltado para o monitoramento e recuperação <strong>de</strong> ataques<br />
<strong>de</strong> rootkits. Ele é implementado por meio <strong>de</strong> uma placa PCI-mestre <strong>de</strong> barramento (sistema<br />
monitor), conectada a um hospe<strong>de</strong>iro (sistema monitorado) e é capaz <strong>de</strong> inspecionar<br />
todo o seu espaço <strong>de</strong> en<strong>de</strong>reçamento.<br />
O monitor não compartilha recursos com o sistema monitorado; assim, em caso <strong>de</strong><br />
instalação <strong>de</strong> um rootkit no sistema principal, a placa PCI é capaz <strong>de</strong> verificar que houve<br />
modificações no espaço <strong>de</strong> en<strong>de</strong>reçamento do kernel do sistema e assim corrigir o sistema<br />
e avisar uma estação <strong>de</strong> monitoramento externa. Por possuírem arquiteturas completamente<br />
diferentes, monitor e monitorado também minimizam a possibilida<strong>de</strong> <strong>de</strong><br />
compartilharem <strong>de</strong>feitos.<br />
Já as limitações do CoPilot estão principalmente ligadas à <strong>de</strong>gradação <strong>de</strong> <strong>de</strong>sempenho<br />
causada pelo processamento, pelo monitor, do espaço <strong>de</strong> en<strong>de</strong>reçamento do sistema<br />
monitorado, o que restringe a usabilida<strong>de</strong> da proposta à verificação do kernel do sistema<br />
em RAM. O custo do hardware também é um problema.<br />
No CuPIDS, por sua vez, a i<strong>de</strong>ia <strong>de</strong> sistema in<strong>de</strong>pen<strong>de</strong>nte <strong>de</strong> monitoramento é<br />
revisitada com uma nova arquitetura <strong>de</strong> hardware e novos objetivos <strong>de</strong> monitoramento.<br />
74
Com o uso <strong>de</strong> uma motherboard com dois processadores, seus autores divi<strong>de</strong>m o sistema<br />
em porção monitora e porção monitorada. Ao contrário do CoPilot, que tem como alvo<br />
o próprio sistema operacional, no CuPIDS existe, para cada serviço implementado na<br />
porção monitorada, um co-serviço <strong>de</strong> monitoramento na porção monitora (possivelmente<br />
por meio <strong>de</strong> uma política EM-enforceable [18]). Os potenciais problemas com o CuPIDS<br />
estão ligados à garantia da própria integrida<strong>de</strong> da porção monitora. Sendo implementados<br />
em processadores <strong>de</strong> uso geral, estão sujeitos a diversos tipos <strong>de</strong> ataque, como substituição<br />
<strong>de</strong> binários, por exemplo.<br />
Integrida<strong>de</strong> dos Sistemas<br />
Em aplicações on<strong>de</strong> a integrida<strong>de</strong> dos serviços prestados pelo sistema (mais do que a<br />
integrida<strong>de</strong> do próprio sistema) é preocupação primordial, diferentes técnicas têm sido<br />
utilizadas, em especial na área <strong>de</strong> sistemas <strong>de</strong> votação. Sistemas <strong>de</strong> votação eletrônica<br />
<strong>de</strong>vem atingir simultaneamente objetivos aparentemente inconciliáveis: i) um voto por<br />
eleitor; ii) voto registrado conforme a intenção (do eleitor); iii) voto contado conforme o<br />
registro; iv) sigilo do voto; v) verificabilida<strong>de</strong> do voto; e vi) resistência à coerção [17].<br />
Quaisquer tentativas <strong>de</strong> se atingir estes objetivos têm implicações diretas na concepção<br />
das máquinas <strong>de</strong> votação (digital recording electronic voting machine - DRE).<br />
Admite-se, como regra, que os sistemas não são confiáveis e que po<strong>de</strong>m ser adulterados.<br />
Desta forma, mecanismos eficientes <strong>de</strong> verificação da integrida<strong>de</strong> do sistema e<br />
dos próprios serviços <strong>de</strong>vem ser implementados e imediatamente acessíveis aos interessados.<br />
A integração entre integrida<strong>de</strong> dos sistemas e os usuários foi explorada em trabalhos<br />
como VoteBox Nano [12], assim como em [5, 6], utilizando a noção <strong>de</strong> caminhos confiados<br />
e classe <strong>de</strong> nível <strong>de</strong> confiança.<br />
A confiança obtida pela verificação do sistema em produção, no entanto, sempre<br />
está ligada (e limitada) pela confiança nas fases <strong>de</strong> <strong>de</strong>senvolvimento, ou no ciclo <strong>de</strong> vida,<br />
do dispositivo, como apontam Mirjalili e Lenstra [10]. Neste sentido, padrões como o<br />
FIPS 140-2 [11] e o Common Criteria [21] têm papeis relevantes. O padrão FIPS 140-2<br />
apresenta um conjunto <strong>de</strong> requisitos e recomendações que um módulo criptográfico <strong>de</strong> uso<br />
específico (geração, guarda e uso <strong>de</strong> chaves criptográficas) <strong>de</strong>ve obe<strong>de</strong>cer. Apesar <strong>de</strong> não<br />
fixar diretamente nenhum item <strong>de</strong> arquitetura <strong>de</strong> tais módulos, o padrão é relevante por ser<br />
completo nos diversos aspectos <strong>de</strong> segurança que um módulo <strong>de</strong>ve satisfazer (proteções<br />
lógicas, físicas, controle <strong>de</strong> acesso, sensoriamento, auto-testes, etc).<br />
Verificação dos Sistemas e Padrões<br />
O Common Criteria, por sua vez, é um meta-padrão, que <strong>de</strong>fine templates sobre os quais<br />
perfis <strong>de</strong> segurança os (security profiles) <strong>de</strong>vem ser elaborados, e que <strong>de</strong>screve as características<br />
esperadas <strong>de</strong> um dado sistema (seguro), o qual é mais tar<strong>de</strong> certificado com base<br />
no próprio perfil. A principal contribuição do CC é a listagem ampla <strong>de</strong> itens que <strong>de</strong>vem<br />
ser cobertos por um perfil <strong>de</strong> segurança.<br />
No quesito verificação, <strong>de</strong> uma forma mais ampla, a nossa proposta está marginalmente<br />
relacionada aos trabalhos <strong>de</strong> verificação formal <strong>de</strong> sistemas, on<strong>de</strong> componentes<br />
75
(lógicos) <strong>de</strong> software e hardware são <strong>de</strong>scritos formalmente e técnicas <strong>de</strong> obtenção <strong>de</strong><br />
provas são utilizadas para se <strong>de</strong>terminar a valida<strong>de</strong> das especificações. Apesar <strong>de</strong> po<strong>de</strong>rosas,<br />
no entanto, tais técnicas têm complexida<strong>de</strong> NP-difícil ou in<strong>de</strong>cidível [7, 8, 16],<br />
dificultando o seu uso na prática. Desta forma, técnicas totalmente informais ou mistas<br />
são utilizadas na verificação das proprieda<strong>de</strong>s dos sistemas [1]. Neste sentido, técnicas<br />
<strong>de</strong> verificação lógica <strong>de</strong> segurança baseadas em simulação, em especial via introspecção<br />
<strong>de</strong> máquinas virtuais, têm se mostrado úteis, como mostram os trabalhos <strong>de</strong> Payne [14] e<br />
Dwoskin [13].<br />
3. Arquitetura do SCuP<br />
A Figura 1 mostra a arquitetura do SCuP. Nela é possível i<strong>de</strong>ntificar dois núcleos SPARC<br />
<strong>de</strong> 32 bits, baseados no Leon 3, instanciados <strong>de</strong> maneira assimétrica, o Application Core<br />
- AC, e o Secure Core - SC. Estes dois núcleos estão ligados aos barramentos internos<br />
AHB (e APB) modificados. Estes barramentos implementam um firewall <strong>de</strong> hardware,<br />
programado por SC e que limita o acesso dos mestres <strong>de</strong> barramento aos periféricos.<br />
Os componentes periféricos encontrados no processador são divididos em dois<br />
principais grupos: componentes sem função <strong>de</strong> segurança (caixas mais claras e que incluem,<br />
<strong>de</strong>ntre outros, USB, PCI, Controle <strong>de</strong> DDR2) e componentes com funcionalida<strong>de</strong>s<br />
seguras (como cifradores <strong>de</strong> memória externa e o TRNG (true random number generator)).<br />
No que se segue apresentamos uma breve <strong>de</strong>scrição dos componentes do SCuP e<br />
em seguida algumas das funcionalida<strong>de</strong>s <strong>de</strong> segurança permitidas pela nossa plataforma.<br />
3.1. Componentes do Sistema<br />
3.1.1. Os Núcleos AC e SC<br />
A arquitetura do SCuP permite que coexistam diversos (n) Núcleos <strong>de</strong> Aplicação (AC)<br />
com diversos (m) Núcleos <strong>de</strong> Segurança (SC). Na Figura 1, n = m = 1. O AC é<br />
um núcleo completo para uma CPU, com unida<strong>de</strong> <strong>de</strong> ponto flutuante, cache <strong>de</strong> dados e<br />
programa e MMU, e que serve para a execução <strong>de</strong> aplicações <strong>de</strong> usuários convencionais<br />
como, por exemplo, executar um S.O. Linux com uma aplicação <strong>de</strong> votação. O AC é<br />
controlado e monitorado pelo SC, com mecanismos que serão <strong>de</strong>scritos mais a adiante.<br />
O SC, por sua vez, é um núcleo minimalista e que foi modificado para ser uma das<br />
raízes <strong>de</strong> confiança do sistema. Para minimizar possibilida<strong>de</strong>s <strong>de</strong> <strong>de</strong>feitos <strong>de</strong> segurança no<br />
próprio VHDL do processador, FPU e MMU foram eliminados, ao mesmo tempo em que<br />
uma memória interna, <strong>de</strong> acesso exclusivo ao núcleo foi adicionada. Esta memória, chamada<br />
<strong>de</strong> scratchpad, é essencial na segurança do sistema e foi projetada para permitir que<br />
operações que <strong>de</strong>mandam sigilo (manipulação <strong>de</strong> chaves e outros parâmetros críticos <strong>de</strong><br />
sistema) pu<strong>de</strong>ssem ser realizados com a menor possibilida<strong>de</strong> <strong>de</strong> vazamento e sem a necessida<strong>de</strong><br />
<strong>de</strong> memória externa. O SC tem capacida<strong>de</strong> para executar um sistema operacional<br />
mínimo, seguindo o princípio da minimização da Trusted Computing Base (TCB).<br />
O SC tem controle sobre todos os outros componentes do SCuP, permitindo, <strong>de</strong>ntre<br />
outros, o Mecanismo <strong>de</strong> Inspeção/Introspecção Profunda (MIP) e a Sequência <strong>de</strong> Boot<br />
Seguro.<br />
76
A arquitetura do SCuP mostrando os seus diversos módulos e pe-<br />
Figura 1.<br />
riféricos.<br />
77
3.1.2. O Firewall <strong>de</strong> Hardware<br />
O Firewall <strong>de</strong> Hardware (HWF) permite que o SC controle o acesso dos mestres <strong>de</strong> barramentos<br />
internos do SCuP aos periféricos. Esta funcionalida<strong>de</strong> tem como principal objetivo<br />
impedir que componentes (<strong>de</strong> software, <strong>de</strong> hardware) comprometidos tenham acesso<br />
a canais <strong>de</strong> comunicação com dados em claro.<br />
O HWF funciona por meio da programação <strong>de</strong> múltiplas regras <strong>de</strong> firewall que<br />
contém as seguintes informações: [mestre, faixa-<strong>de</strong>-en<strong>de</strong>reços, permissões]. Nesta regra,<br />
o acesso do “mestre” à “faixa-<strong>de</strong>-en<strong>de</strong>reços” está sujeita às respectivas “permissões”.<br />
Um exemplo <strong>de</strong> uso é nos casos <strong>de</strong> protocolos <strong>de</strong> votação. Se por um lado toda<br />
a parte gráfica e <strong>de</strong> controle <strong>de</strong> periféricos do software <strong>de</strong> votação po<strong>de</strong> ser executado no<br />
AC, esta mesma pilha <strong>de</strong> software po<strong>de</strong>rá conter <strong>de</strong>feitos que permitam que a entrada do<br />
usuário (o voto digitado) vaze ou seja capturado por uma aplicação mal-intencionada. Em<br />
nossa arquitetura, a captura do voto e a sua cifração po<strong>de</strong>m ficar por conta do SC, que,<br />
programando o HWF, impe<strong>de</strong> o acesso pelo AC ao periférico PS/2 ao mesmo tempo que<br />
permite o uso para si. Obviamente a aplicação precisa ser adaptada para este tipo <strong>de</strong> uso.<br />
O HWF ainda impe<strong>de</strong> que transações malignas, advindas dos periféricos-mestre<br />
<strong>de</strong> barramento externos ao SCuP tenham a possibilida<strong>de</strong> <strong>de</strong> acessar regiões <strong>de</strong> en<strong>de</strong>reçamento<br />
não ativamente permitidas, aumentando o nível <strong>de</strong> segurança também contra ataques externos.<br />
3.1.3. Cifrador <strong>de</strong> Memória Externa<br />
O cifrador <strong>de</strong> memória externa (CryptoMem) permite que regiões da memória RAM externa<br />
sejam cifrados <strong>de</strong> maneira automática com gran<strong>de</strong> aceleração por hardware. Isto<br />
permite que o processador AC/SC execute código cifrado da memória externa <strong>de</strong> maneira<br />
transparente. As chaves do CryptoMem são diretamente controladas pelo SC, assim<br />
como as faixas <strong>de</strong> en<strong>de</strong>reçamento que <strong>de</strong>vem ser protegidas. O CryptoMem emprega o<br />
algoritmo NIST-FIPS PUB 197 - AES - com chaves <strong>de</strong> 256 bits em modo <strong>de</strong> operação<br />
não-padrão. O CryptoMem tem performance <strong>de</strong> processamento <strong>de</strong> 128 bits/ciclo.<br />
3.1.4. Módulo AES-256 e Módulo SHA-512 <strong>de</strong> Alto Desempenho<br />
O módulo AES implementa o NIST FIPS PUB 197 com chaves <strong>de</strong> 256 bits nos modos<br />
<strong>de</strong> operação ECB, CTR, CBC e GCM e <strong>de</strong>sempenho <strong>de</strong> pico <strong>de</strong> processamento <strong>de</strong> 8<br />
bits/ciclo. O módulo SHA implementa o NIST FIPS PUB 180-3, com hashes <strong>de</strong> 512 bits<br />
e <strong>de</strong>sempenho <strong>de</strong> pico ≥ 12 bits/ciclo.<br />
Estes blocos operam como aceleradores <strong>de</strong> hardware internos ao processador e<br />
servem aplicações executando tanto no SC como no AC <strong>de</strong> forma direta ou através da<br />
biblioteca criptográfica da plataforma SCuP. Esta biblioteca também faz uso do acelerador<br />
<strong>de</strong> curvas elípticas presente no processador.<br />
78
3.1.5. Outros Componentes<br />
O SCuP possui diversos outros componentes com funções <strong>de</strong> segurança, mas que por<br />
questões <strong>de</strong> espaço somente mencionaremos. Um <strong>de</strong>stes componentes é o TRNG do processador,<br />
item essencial na operação da maioria dos esquemas criptográficos. O TRNG<br />
do SCuP é não <strong>de</strong>terminístico e explora características físicas das portas lógicas convencionais<br />
do semicondutor para a geração e com alta entropia. O TRNG será tema <strong>de</strong> artigo<br />
futuro e por enquanto representa segredo industrial.<br />
Outro componente que merece menção é o Mailbox, utilizado para a comunicação<br />
entre núcleos. Este componente foi especificamente projetado para permitir que informações<br />
entre AC e SC possam ser trocadas <strong>de</strong> maneira rápida e protegida do acesso externo.<br />
O último componente que mencionamos é o IRQMP-CPS, componente central<br />
no MIP. O IRQMP-CPS possui modificações em relação a um gerenciador convencional<br />
<strong>de</strong> requisições (IRQs) <strong>de</strong> forma que, quando o AC é provocado pelo SC, o primeiro<br />
obrigatoriamente executa um trecho <strong>de</strong> código confiado <strong>de</strong>terminado por SC.<br />
3.2. Funcionalida<strong>de</strong>s do SCuP<br />
3.2.1. SBS - Sequência <strong>de</strong> Boot Seguro<br />
A sequência <strong>de</strong> boot seguro (SBS) é fundamental para garantir que o estado da plataforma<br />
seja conhecido (íntegro) em ambos os núcleos quando o sistema termina a inicialização.<br />
Para tanto, utilizamos uma sequência <strong>de</strong> boot com verificação <strong>de</strong> assinaturas digitais que<br />
vai da BIOS às aplicações <strong>de</strong> usuário. A sequência é a seguinte:<br />
Etapa/Fase Nome Descrição<br />
1 Load/Deco<strong>de</strong> O software que carrega e <strong>de</strong>cifra o software da ROM<br />
externa, estará gravado na ROM interna, e ele utilizará<br />
o scratchpad do SC como sua memória RAM<br />
1.1 Auto-testes SC Realiza auto-testes <strong>de</strong> funções criptográficas e <strong>de</strong> integrida<strong>de</strong><br />
interna<br />
1.2 Zeração Zera todos os buffers e caches internos e a RAM<br />
1.3 Cópia da ROM Copia o conteúdo da ROM externa para o scratchpad<br />
1.4 Decifra Decifra o conteúdo carregado no scratchpad<br />
1.5 Verifica Verificar a assinatura digital do conteúdo do scratchpad<br />
1.6 Carga Limpa registradores e ajusta o PC para o início do<br />
scratchpad<br />
2 Execute O software da ROM externa (BIOS) está carregado no<br />
scratchpad, e utiliza essa memória como RAM<br />
2.1 HFW Configura o HWF (libera acessos a <strong>de</strong>terminados recursos<br />
do sistema)<br />
2.2 SC Configura o SC<br />
2.3 Imagem AC Obtém a imagem <strong>de</strong> boot do Linux (o qual executará<br />
no AC). Opcionalmente (a) Verifica hardware, (b)<br />
Continua boot pela re<strong>de</strong>, (c) Acessa a memória externa,<br />
(d) Atualiza a ROM externa<br />
79
2.4 Decifra Decifra a imagem <strong>de</strong> boot do Linux<br />
2.5 Verificar Verifica a imagem <strong>de</strong> boot do Linux<br />
2.6 Carrega Carrega a imagem <strong>de</strong> boot do Linux no en<strong>de</strong>reço inicial<br />
do AC<br />
2.7 Libera Libera o AC (“acorda” o processador AC)<br />
3 Boot Linux Imagem <strong>de</strong> boot do Linux carregada, recursos liberados<br />
e AC “ acordado”<br />
O mecanismo <strong>de</strong> boot seguro impe<strong>de</strong> que ataques <strong>de</strong> substituição/alteração <strong>de</strong><br />
binários sejam possíveis no SCuP. Tanto quanto pu<strong>de</strong>mos averiguar, o SCuP é o primeiro<br />
processador a implementar uma sequência <strong>de</strong> boot seguro multi-core e também o<br />
primeiro a fazer isso com serviços <strong>de</strong> assinatura digital e sigilo simultaneamente. Entretanto,<br />
este mecanismo não é suficiente para proteger contra ataques online, on<strong>de</strong> <strong>de</strong>feitos<br />
das aplicações são exploradas pelos adversários, como em ataques <strong>de</strong> estouro <strong>de</strong> pilha<br />
(execução <strong>de</strong> dados).<br />
Por este motivo, mecanismos <strong>de</strong> proteção contra ataques em tempo <strong>de</strong> execução<br />
foram incluídos no SCuP, como o MIP.<br />
3.2.2. MIP - Mecanismo <strong>de</strong> Introspecção/Inspeção Profunda<br />
O objetivo do MIP é permitir que o estado do núcleo AC seja totalmente conhecido e<br />
acessível para inspeção completa impedindo que código malicioso se aloje em qualquer<br />
parte dos elementos <strong>de</strong> memória do núcleo. Isto é necessário pois o núcleo AC executa<br />
uma pilha extensa <strong>de</strong> software, com elementos possivelmente não assinados digitalmente<br />
(e não verificados pela SBS).<br />
MIP foi inspirado no CoPilot, mas apresenta diversas modificações e vantagens.<br />
Em primeiro lugar, o CoPilot não é capaz <strong>de</strong> ter acesso total ao estado da CPU principal do<br />
sistema dado que seu acesso era externo, via PCI, o que também limita o seu <strong>de</strong>sempenho.<br />
O funcionamento do MIP po<strong>de</strong> ser assim sumarizado:<br />
• Sob requisição do usuário ou <strong>de</strong> tempos em tempos, o SC inicia o ciclo <strong>de</strong> verificação;<br />
• para tanto, o SC gera uma interrupção não mascarável <strong>de</strong> máxima priorida<strong>de</strong> no<br />
AC (via componente IRQMP-CPS);<br />
• o AC imediatamente começa a servir a requisição em um trecho <strong>de</strong> código fixo<br />
em ROM que realiza verificações (V-COM). Por estar em ROM, não po<strong>de</strong> ser<br />
modificado por adversários;<br />
• V-ROM é utilizado então para verificar a assinatura <strong>de</strong> código adicional escrito<br />
por SC (V-RAM) em posição pré-<strong>de</strong>terminada <strong>de</strong> memória. Se a assinatura for<br />
correta, inicia a execução <strong>de</strong>ste novo trecho <strong>de</strong> código;<br />
• V-RAM é o código que comanda a verificação do sistema seja por inspeção ou por<br />
introspecção. No caso da introspecção, no primeiro passo, o AC empilha todos os<br />
seus registradores e <strong>de</strong>scarrega a cache (instrução “flush”) e continua executando<br />
o “anti-malware”. No caso da inspeção, AC permanece em “stall” e SC realiza<br />
toda as verificação;<br />
• finalizado o trecho V-RAM, o AC retorna à execução normal.<br />
80
Com a arquitetura do SCuP, a verificação realizada no ciclo do MIP é altamente<br />
eficiente, uma vez que a comunicação entre o SC e o AC é realizada por meio do barramento<br />
interno ao processador. Além disso, a nossa arquitetura também permite que o SC<br />
mantenha serviços essenciais ao sistema enquanto o AC passa pelo MIP tarefas como, por<br />
exemplo, manutenção <strong>de</strong> “watchdogs” ou mesmo controles <strong>de</strong>mandados por periféricos<br />
<strong>de</strong> tempo real.<br />
Por meio do uso do HFW e do MIP simultaneamente, nossa arquitetura permite<br />
a construção <strong>de</strong> mecanismos <strong>de</strong> recuperação dinâmica <strong>de</strong> kernel e <strong>de</strong>tecção <strong>de</strong> rootkits<br />
<strong>de</strong> alta eficiência. Para tanto, o SC protege uma região <strong>de</strong> memória on<strong>de</strong> mantém uma<br />
cópia do kernel saudável <strong>de</strong> AC. Assim, ao executar o MIP em modo <strong>de</strong> inspeção, o SC<br />
po<strong>de</strong> facilmente comparar cópias do kernel e restaurar imagens anteriores, uma vez que<br />
um adversário em AC é incapaz <strong>de</strong> corromper tanto o mecanismo <strong>de</strong> verificação, como<br />
as próprias imagens protegidas por SC. Tanto quanto saibamos, o SCuP é o primeiro<br />
processador a dar suporte a este tipo <strong>de</strong> operação integrada.<br />
3.2.3. Outras Funcionalida<strong>de</strong>s<br />
Além dos mecanismos SBS e MIP, o SCuP ainda incorpora o conceito <strong>de</strong> pacote <strong>de</strong><br />
execução segura, introduzido pelo IBM Cell e mais tar<strong>de</strong> formalizado pela proposta do<br />
TEM. Um pacote <strong>de</strong> execução segura é um blob que contém dados e binários assinados<br />
e possivelmente cifrados e que são entregues para um núcleo para processamento. Antes<br />
<strong>de</strong> iniciar a execução, este núcleo verifica a assinatura sobre o pacote (e possivelmente o<br />
<strong>de</strong>cifra) antes <strong>de</strong> iniciar a sua execução, em modo exclusivo.<br />
Apesar <strong>de</strong> baseado nestas arquiteturas, nossa proposta difere <strong>de</strong> ambas soluções:<br />
tanto no Cell como no TEM, as unida<strong>de</strong>s processantes (núcleos) funcionam como escravos<br />
<strong>de</strong> barramento. Isto significa que pacotes <strong>de</strong> execução segura vindas do ambiente<br />
externo não po<strong>de</strong>m ser utilizadas para verificar o estado do sistema como um todo, ou<br />
mesmo levá-lo a um estado conhecido.<br />
No SCuP, entretanto, o SC (responsável pela execução dos pacotes seguros) é o<br />
mestre do sistema, o que permite que tais pacotes sejam executados em um ambiente<br />
controlado (via MIP e HMW), <strong>de</strong> fato adicionando uma camada <strong>de</strong> segurança, em vez <strong>de</strong><br />
ser um mecanismo acessório. O SCuP é o primeiro processador a realizar esta abordagem.<br />
4. Implementação e Resultados<br />
O SCuP foi implementado em VHDL utilizando a licença comercial do Gaisler Leon 3 e<br />
simulado e sintetizado com o Quartus II Full para a plataforma alvo <strong>de</strong> <strong>de</strong>senvolvimento<br />
Altera Stratix III EP3SL200C2 em um kit <strong>de</strong> <strong>de</strong>senvolvimento projetado por nós. O<br />
sistema completo consumiu 69.438 ALUTs da FPGA e operou a uma frequência máxima<br />
<strong>de</strong> 140MHz.<br />
A Tabela 2 mostra o consumo <strong>de</strong> elementos dos principais componentes do sistema.<br />
Nota-se que os principais consumos são dos componentes criptográficos <strong>de</strong> alto<br />
<strong>de</strong>sempenho, correspon<strong>de</strong>ndo por cerca <strong>de</strong> 52% da área (ALUT) do processador.<br />
Se por um lado o impacto em elementos consumidos é alto, por outro a plataforma<br />
se adapta bem quando mais instâncias <strong>de</strong> AC e SC são inclusas, pois os componentes<br />
81
Componente ALUT %<br />
AC 10,5K 15<br />
SC 6,5K 10<br />
AES 256 7,5K 11<br />
SHA 512 3,5K 5<br />
HWF 2,0K 2<br />
MemCrypt 25,0K 36<br />
TRNG 1K 1<br />
Outros 13,5K 20<br />
Total 69,5K 100<br />
Tabela 2. Consumo <strong>de</strong> elementos<br />
criptográficos po<strong>de</strong>m ser compartilhados por todos os núcleos.<br />
No quesito <strong>de</strong>sempenho, a implementação das funcionalida<strong>de</strong>s <strong>de</strong> segurança do<br />
SCuP teve pequeno impacto na frequência máxima <strong>de</strong> operação. Sintetizando um processador<br />
sem os componentes <strong>de</strong> segurança, obtivemos fmax <strong>de</strong> 150MHz, contra 140MHz<br />
<strong>de</strong> nosso <strong>de</strong>sign, uma penalida<strong>de</strong> <strong>de</strong> apenas 6,7%.<br />
Os testes <strong>de</strong> <strong>de</strong>sempenho dos módulos AES-256 e SHA-512 a partir da biblioteca<br />
criptográfica da plataforma foram <strong>de</strong> 380Mbps e 500Mbps, respectivamente, valores bastante<br />
altos para a frequência <strong>de</strong> operação <strong>de</strong> 140MHz, mostrando pequeno “overhead” <strong>de</strong><br />
software.<br />
5. Conclusão e Trabalhos Futuros<br />
O SCuP traz uma arquitetura inovadora, <strong>de</strong>senvolvida levando-se em conta ataques físicos,<br />
ataques lógicos (online e off-line) e os inexoráveis <strong>de</strong>feitos <strong>de</strong> software (e hardware). Para<br />
tanto, além possuir tal arquitetura, no SCuP introduzimos os mecanismos <strong>de</strong> introspecção/inspeção<br />
profunda e firewall <strong>de</strong> hardware que, em conjunto com os pacotes <strong>de</strong> execução segura, garantem<br />
múltiplas camadas <strong>de</strong> segurança in<strong>de</strong>pen<strong>de</strong>ntes no processador. O SCuP, portanto,<br />
representa uma nova filosofia no projeto <strong>de</strong> processadores, on<strong>de</strong> um cenário <strong>de</strong> ataques<br />
ampliado é consi<strong>de</strong>rado, resultando em um sistema mais robusto e mais resistente a quebras<br />
<strong>de</strong> segurança <strong>de</strong> sub-componentes. Os resultados <strong>de</strong> implementação até o momento<br />
apontam para a total viabilida<strong>de</strong> do processador, com <strong>de</strong>gradação mínima <strong>de</strong> <strong>de</strong>sempenho<br />
(<strong>de</strong> 150 para 140MHz, -6,7%) e custos mo<strong>de</strong>rados em termos <strong>de</strong> área (53%). A difusão<br />
em silício, esperada para os próximos meses, permitirá que números ajustados <strong>de</strong> <strong>de</strong>sempenho<br />
sejam obtidos e que figuras <strong>de</strong> <strong>de</strong>sempenho globais sejam estabelecidas, inclusive<br />
com o SBS, o MIP e o PES.<br />
Os trabalhos futuros estarão centrados no <strong>de</strong>senvolvimento das bibliotecas <strong>de</strong> software<br />
e aplicações para uso do SCuP em diversos cenários, <strong>de</strong>s<strong>de</strong> votação eletrônica, até<br />
aviônica.<br />
Referências<br />
[1] Gianpiero Cabodi, Sergio Nocco, and Stefano Quer. Improving SAT-based Boun<strong>de</strong>d Mo<strong>de</strong>l<br />
Checking by Means of BDD-based Approximate Traversals. In in Design, Automation<br />
and Test in Europe, 2003, pages 898–903, 2003.<br />
82
[2] Benjie Chen and Robert Morris. Certifying program execution with secure processors. In<br />
HOTOS’03: Proceedings of the 9th conference on Hot Topics in Operating Systems,<br />
pages 23–23, Berkeley, CA, USA, 2003. USENIX Association.<br />
[3] Victor Costan, Luis F. Sarmenta, Marten van Dijk, and Srinivas Devadas. The Trusted<br />
Execution Module: Commodity General-Purpose Trusted Computing. In CAR-<br />
DIS ’08: Proceedings of the 8th IFIP WG 8.8/11.2 International Conference on<br />
Smart Card Research and Advanced Applications, pages 133–148, Berlin, Hei<strong>de</strong>lberg,<br />
2008. Springer-Verlag.<br />
[4] Joan G. Dyer, Mark Lin<strong>de</strong>mann, Ronald Perez, Reiner Sailer, Leen<strong>de</strong>rt van Doorn,<br />
Sean W. Smith, and Steve Weingart. Building the IBM 4758 secure coprocessor.<br />
Computer, 34(10):57–66, 2001.<br />
[5] Roberto Gallo, Henrique Kawakami, and Ricardo Dahab. On <strong>de</strong>vice i<strong>de</strong>ntity establishment<br />
and verification. In Proc of EuroPKI’09 Sixth European Workshop on Public<br />
Key Services, Applications and Infrastructures, September 2009.<br />
[6] Roberto Gallo, Henrique Kawakami, Ricardo Dahab, Rafael Azevedo, Saulo Lima, and<br />
Guido Araujo. A hardware trusted computing base for direct recording electronic<br />
vote machines. Austin, Texas, USA, 2010. ACM.<br />
[7] Warren A. Hunt. Mechanical mathematical methods for microprocessor verification. In<br />
Rajeev Alur and Doron A. Peled, editors, Computer Ai<strong>de</strong>d Verification, volume 3114<br />
of Lecture Notes in Computer Science, pages 274–276. Springer Berlin - Hei<strong>de</strong>lberg,<br />
2004.<br />
[8] Hiroaki Iwashita, Satoshi Kowatari, Tsuneo Nakata, and Fumiyasu Hirose. Automatic<br />
test program generation for pipelined processors. In Proceedings of the 1994 IEEE-<br />
ACM international conference on Computer-ai<strong>de</strong>d <strong>de</strong>sign, ICCAD 94, pages 580–<br />
583, Los Alamitos, CA, USA, 1994. IEEE Computer Society Press.<br />
[9] Ruby B. Lee, Peter C. S. Kwan, John P. McGregor, Jeffrey Dwoskin, and Zhenghong<br />
Wang. Architecture for protecting critical secrets in microprocessors. SIGARCH<br />
Comput. Archit. News, 33:2–13, May 2005.<br />
[10] A Mirjalili, S, and Lenstra. Security Observance throughout the Life-Cycle of Embed<strong>de</strong>d<br />
Systems. In International Conference on Embed<strong>de</strong>d Systems, 2008.<br />
[11] NIST. Security requirements for cryptographic modules, Fe<strong>de</strong>ral Information Processing<br />
Standards Publication (FIPS PUB) 140-2, 2002.<br />
[12] E. Oksuzoglu and D.S. Wallach. VoteBox Nano: A Smaller, Stronger FPGA-based Voting<br />
Machine (Short Paper). usenix.org, 2009.<br />
[13] John P., Dwoskin, and Ruby B. Lee. A framework for testing hardware-software security<br />
architectures. Austin, Texas, USA, 2010. ACM.<br />
[14] Bryan D. Payne, Martim Carbone, Monirul Sharif, and Wenke Lee. Lares: An architecture<br />
for secure active monitoring using virtualization. In Proceedings of the 2008 IEEE<br />
Symposium on Security and Privacy, pages 233–247, Washington, DC, USA, 2008.<br />
IEEE Computer Society.<br />
[15] Nick L. Petroni, Jr., Timothy Fraser, Jesus Molina, and William A. Arbaugh. Copilot -<br />
a coprocessor-based kernel runtime integrity monitor. In Proceedings of the 13th<br />
83
conference on USENIX Security Symposium - Volume 13, SSYM’04, pages 13–13,<br />
Berkeley, CA, USA, 2004. USENIX Association.<br />
[16] Sandip Ray and Warren A. Hunt. Deductive verification of pipelined machines using firstor<strong>de</strong>r<br />
quantification. In Rajeev Alur and Doron A. Peled, editors, Computer Ai<strong>de</strong>d<br />
Verification, volume 3114 of Lecture Notes in Computer Science, pages 254–256.<br />
Springer Berlin - Hei<strong>de</strong>lberg, 2004.<br />
[17] Naveen K Sastry. Verifying security properties in electronic voting machines. PhD thesis,<br />
University Of California, Berkeley, 2007.<br />
[18] F. Schnei<strong>de</strong>r, Greg Morrisett, and Robert Harper. A language-based approach to security.<br />
In Informatics, pages 86–101. Springer, 2001.<br />
[19] K. Shimizu, H. P. Hofstee, and J. S. Liberty. Cell broadband engine processor vault<br />
security architecture. IBM J. Res. Dev., 51(5):521–528, 2007.<br />
[20] G. Edward Suh, Charles W. O’Donnell, and Srinivas Devadas. Aegis: A single-chip<br />
secure processor. IEEE Design and Test of Computers, 24(6):570–580, 2007.<br />
[21] The Common Criteria Recognition Agreement. Common criteria for information technology<br />
security evaluation v3.1 revision 3, July 2009.<br />
[22] Trusted Computing Group. Trusted Platform Module Main Description Level 2 version<br />
1.2 revision 116, March 2011.<br />
[23] Paul D. Williams. CuPIDS: increasing information system security through the use of<br />
<strong>de</strong>dicated co-processing. PhD thesis, West Lafayette, IN, USA, 2005. AAI3191586.<br />
84
Fault Attacks against a<br />
Cellular Automata Based Stream Cipher<br />
José Carrijo 1 , An<strong>de</strong>rson C. A. Nascimento 1 ,<br />
Rafael Tonicelli 1 , Vinícius <strong>de</strong> Morais Alves 1<br />
1 Departamento <strong>de</strong> <strong>Engenharia</strong> Elétrica, Universida<strong>de</strong> <strong>de</strong> Brasília<br />
Campus Darcy Ribeiro, 70910-900, Brasilia, DF, Brazil<br />
carrijo@cepesc.gov.br,andclay@ene.unb.br<br />
{tonicelli, vmalves}@re<strong>de</strong>s.unb.br<br />
Abstract. This paper presents fault attacks against a cellular automata based<br />
stream cipher. A fault attack assumes that the adversary is able to physically<br />
operate the cryptographic <strong>de</strong>vice and insert some errors into it. As a consequence,<br />
the adversary can induce faulty results into the <strong>de</strong>vice and use them to<br />
recover the stored secret key. By using this approach we provi<strong>de</strong> extremely efficient<br />
and practical cryptanalytic methods: by injecting n/2 + n 2 /32 faults we<br />
recover the n-bit secret key from a stream cipher based on cellular automaton<br />
rule 30. To the best of our knowledge this is the first application of fault attacks<br />
against cellular automata based stream ciphers.<br />
1. Introduction<br />
1.1. Overview<br />
Traditionally, cryptanalytic methods have been concentrated on exploiting vulnerabilities<br />
in the algorithmic structure of the target cryptosystem. The conventional approach often<br />
ignores the inherent physical properties of the implementation. In this context, the<br />
fault analysis mo<strong>de</strong>l emerged as an alternative that allowed the <strong>de</strong>velopment of a variety<br />
of realistic attacks against symmetric and asymmetric cryptographic protocols. The fault<br />
analysis mo<strong>de</strong>l relies on the principle that the adversary can physically control the cryptographic<br />
<strong>de</strong>vice, and induce it to abnormally operate, making it to output faulty results.<br />
These faulty results can later on be used by the adversary to <strong>de</strong>rive secret information,<br />
such as recovering a shared secret key. Depending on the implementation, an attacker can<br />
perform fault injections into the <strong>de</strong>vice by several ways: exposing it to heat or radiation,<br />
changing its power supply voltage, increasing its external clock, provoking temperature<br />
variations, among other possibilities.<br />
Fault analysis was introduced by Boneh, DeMillo, and Lipton [2], who used this<br />
technique to attack public key cryptosystems, such as digital signature and i<strong>de</strong>ntification<br />
schemes. Their results stimulated a progressive research in the area, and since then other<br />
significant results have been obtained. Remarkably, Biham and Shamir [1] used differential<br />
fault analysis to attack block ciphers, such as DES. More recently, Hoch and Shamir<br />
[4] <strong>de</strong>veloped a systematic study about the vulnerabilities of stream ciphers in the fault<br />
analysis setting. Despite all the active research regarding the field, there are no published<br />
results about the use of fault attacks against cellular automata based stream ciphers. One<br />
of the goals of this paper is to fill this gap by presenting some practical fault attacks against<br />
85
the aforementioned cryptosystem. The effectiveness of the proposed attacks <strong>de</strong>monstrates<br />
that fault analysis represents a major threat for cellular automata based ciphers.<br />
1.2. Cellular Automata Based Stream Ciphers<br />
Wolfram [9, 10] was the first to notice the usefulness of cellular automata as stream ciphers<br />
major building blocks. Wolfram pointed out that some rules used to <strong>de</strong>fine the<br />
temporal evolution of one-dimensional cellular automata generated seemingly pseudorandom<br />
behaviors. The proposed family of stream ciphers was very fast yielding efficient<br />
implementations in hardware and software. Later analysis [5] showed that the cipher’s<br />
parameters initially proposed by Wolfram were too optimistic, however for appropriate<br />
key sizes all the known attacks against the cipher proposed in [9, 10] have exponential<br />
complexity.<br />
Later, many other ciphers based on cellular automata were proposed [3, 6, 7, 8]<br />
but the overall goal was the same: to exploit the apparently simple rules and architecture<br />
of cellular automata for obtaining efficient ciphers.<br />
1.3. The Attack Mo<strong>de</strong>l<br />
Roughly speaking, in the fault analysis mo<strong>de</strong>l, the adversary is focused on attacking the<br />
physical implementation rather than the cryptographic algorithm.<br />
We assume that the adversary has physical access to the <strong>de</strong>vice, but no previous<br />
knowledge about the key. The adversary is allowed to run the <strong>de</strong>vice several times while<br />
provoking faults into chosen memory areas of the same <strong>de</strong>vice. Specifically, we consi<strong>de</strong>r<br />
that the adversary is able to apply bit flipping faults to either the RAM or the internal<br />
registers of the <strong>de</strong>vice. Moreover, he/she can arbitrarily reset the cryptographic <strong>de</strong>vice<br />
and later induce other randomly chosen faults into it.<br />
We also assume that the adversary knows small parts of the plaintext (thus obtaining<br />
also parts of the keystream). This is a wi<strong>de</strong>ly used assumption in cryptography<br />
(known as chosen plaintext attacks) and is quite realistic as parts of the message (such as<br />
hea<strong>de</strong>rs) are usually predictable by an attacker.<br />
1.4. Rule 30 Stream Cipher<br />
Cellular automata theory <strong>de</strong>scribes, among other things, how simple and well-<strong>de</strong>fined<br />
rules can lead to complex structures. It is claimed that the random properties of cellular<br />
automata could be used to implement secure, simple, fast, and low cost cryptosystems.<br />
In his seminal paper [9], Wolfram proposed the use of cellular automaton rule 30 as a<br />
keystream generator for a stream cipher. The resultant encryption scheme is the so-called<br />
Rule 30 Stream Cipher.<br />
A cellular automaton consists of a one-dimensional circular register of n cells,<br />
where each cell can present one of two possible states (values), 0 or 1. These cells are<br />
updated in parallel in discrete time steps according to a next state function (or rule). Let<br />
a t i <strong>de</strong>note the value of the i-th cell at time t. The rule 30 is given by:<br />
a t i = a t−1<br />
i−1 XOR ( a t−1<br />
i<br />
)<br />
OR a t−1<br />
i+1<br />
(1)<br />
86
2. Fault Analysis of the Rule 30 Stream Cipher<br />
This section introduces our fault attack on the Rule 30 Stream Cipher, <strong>de</strong>scribed earlier in<br />
section 1.4. For sake of feasibility, the following assumptions are ma<strong>de</strong>:<br />
• The adversary knows a sequence of n/2 + 1 bits extracted from the register of the<br />
cryptographic <strong>de</strong>vice. I.e., he/she knows a t i, for t = 1, . . . , n/2+1. This sequence<br />
is stored in the central column of a matrix A<br />
• The adversary has the capability of changing the content of chosen areas of the<br />
register, i.e., of flipping their stored value. He/she can also reset the <strong>de</strong>vice.<br />
This cryptanalytic technique is divi<strong>de</strong>d into 3 steps (or phases). In the first step,<br />
we <strong>de</strong>termine the bits of the two columns adjacent to the central column. In the second<br />
step, we proceed with the <strong>de</strong>termination of the bits on the right si<strong>de</strong> of the central column.<br />
In step 3, we <strong>de</strong>termine the bits on the left si<strong>de</strong> of the central column.<br />
As will be shown, as the attack goes on, the actions taken by the cryptanalyst will<br />
<strong>de</strong>pend on the observed configuration of the cells. The method is <strong>de</strong>scribed below.<br />
STEP 1: Determination of the bits of the two columns adjacent to the central column.<br />
This step consists of provoking a fault into the register for each known pair of bits. It is<br />
possible to <strong>de</strong>termine the two pairs of bits adjacent to the central column.<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
a t−1<br />
i+1<br />
x a t i x<br />
)<br />
Configuration 1.1<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
a t−1<br />
i+1<br />
x a t i x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−1 0 a t−1<br />
i+1<br />
x 0 x<br />
)<br />
This configuration is only possible if a t−1<br />
i−1 = a t−1<br />
i+1 = 1 or a t−1<br />
i−1 = a t−1<br />
i+1 = 0. If the<br />
attacker flips the bit a t−1<br />
i and then recomputes the bit a t i, there will be two possibilities:<br />
• If a t i = 0, then a t−1<br />
i−1 = a t−1<br />
i+1 = 1<br />
• If a t i = 1, then a t−1<br />
i−1 = a t−1<br />
i+1 = 0<br />
Configuration 1.2<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
a t−1<br />
i+1<br />
x a t i x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−1 0 a t−1<br />
i+1<br />
x 1 x<br />
)<br />
This configuration is only possible if a t−1<br />
i−1 = 0 and a t−1<br />
i+1 = 1 or a t−1<br />
i−1 = 1 and<br />
a t−1<br />
i+1 = 0. If the attacker flips the bit a t−1<br />
i and then recomputes the bit a t i, there will be two<br />
possibilities:<br />
• If a t i = 1, then a t−1<br />
i−1 = 0 and a t−1<br />
i+1 = 1<br />
• If a t i = 0, then a t−1<br />
i−1 = 1 and a t−1<br />
i+1 = 0<br />
87
Configuration 1.3<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
a t−1<br />
i+1<br />
x a t i x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−1 1 a t−1<br />
i+1<br />
x 0 x<br />
)<br />
This configuration allows one to immediately <strong>de</strong>termine a t−1<br />
i−1 = 1. However, a t−1<br />
i+1<br />
remains un<strong>de</strong>fined. If the attacker flips the bit a t−1<br />
i and then recomputes the bit a t i, there<br />
will be two possibilities:<br />
• If a t i = 1, then a t−1<br />
i−1 = 1 and a t−1<br />
i+1 = 0<br />
• If a t i = 0, then a t−1<br />
i−1 = 1 and a t−1<br />
i+1 = 1<br />
Configuration 1.4<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
a t−1<br />
i+1<br />
x a t i x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−1 1 a t−1<br />
i+1<br />
x 1 x<br />
)<br />
This configuration allows one to immediately <strong>de</strong>termine a t−1<br />
i−1 = 0. However, a t−1<br />
i+1<br />
remains un<strong>de</strong>fined. If the attacker flips the bit a t−1<br />
i and then recomputes the bit a t i, there<br />
will be two possibilities:<br />
• If a t i = 1, then a t−1<br />
i−1 = 0 and a t−1<br />
i+1 = 1<br />
• If a t i = 0, then a t−1<br />
i−1 = 0 and a t−1<br />
i+1 = 0<br />
STEP 2: Determination of the bits on the right si<strong>de</strong> of the central column.<br />
Assume the following notation.<br />
(<br />
α β<br />
x δ<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−1<br />
x<br />
a t−1<br />
i<br />
a t i<br />
)<br />
One can easily see that there are 8 different possibilities for the bits {α, β, δ}. Basing on<br />
equation 1, an adversary in possession of the bits {α, β, δ} can <strong>de</strong>termine the bit a t−1<br />
i+1 by<br />
applying one fault into the register.<br />
We shall now analyze these 8 possibilities.<br />
Configuration 2.1<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
a t−1<br />
i+1<br />
x a t i x<br />
)<br />
=<br />
(<br />
0 0 a<br />
t−1<br />
i+1<br />
x 0 x<br />
• This configuration is only possible for a t−1<br />
i+1 = 0.<br />
Configuration 2.2<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
a t−1<br />
i+1<br />
x a t i x<br />
)<br />
=<br />
(<br />
0 0 a<br />
t−1<br />
i+1<br />
x 1 x<br />
)<br />
)<br />
88
• This configuration is only possible for a t−1<br />
i+1 = 1.<br />
Configuration 2.3<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
a t−1<br />
i+1<br />
x a t i x<br />
• This configuration is not possible.<br />
Configuration 2.4<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
a t−1<br />
i+1<br />
x a t i x<br />
If the attacker flips the bit a t−1<br />
i<br />
possibilities:<br />
• If a t i = 1, then a t−1<br />
i+1 = 1.<br />
• If a t i = 0, then a t−1<br />
i+1 = 0.<br />
Configuration 2.5<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
)<br />
)<br />
=<br />
=<br />
(<br />
0 1 a<br />
t−1<br />
i+1<br />
x 0 x<br />
(<br />
0 1 a<br />
t−1<br />
i+1<br />
x 1 x<br />
)<br />
)<br />
and then recomputes the bit a t i, there will be two<br />
a t−1<br />
i+1<br />
x a t i x<br />
)<br />
=<br />
(<br />
1 0 a<br />
t−1<br />
i+1<br />
x 0 x<br />
• This configuration is only possible for a t−1<br />
i+1 = 1.<br />
Configuration 2.6<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
a t−1<br />
i+1<br />
x a t i x<br />
)<br />
=<br />
(<br />
1 0 a<br />
t−1<br />
i+1<br />
x 1 x<br />
• This configuration is only possible for a t−1<br />
i+1 = 0.<br />
Configuration 2.7<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
a t−1<br />
i+1<br />
x a t i x<br />
If the attacker flips the bit a t−1<br />
i<br />
possibilities:<br />
• If a t i = 1, then a t−1<br />
i+1 = 0.<br />
• If a t i = 0, then a t−1<br />
i+1 = 1.<br />
Configuration 2.8<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t−1<br />
i<br />
)<br />
=<br />
(<br />
1 1 a<br />
t−1<br />
i+1<br />
x 0 x<br />
)<br />
)<br />
)<br />
and then recomputes the bit a t i, there will be two<br />
a t−1<br />
i+1<br />
x a t i x<br />
)<br />
=<br />
(<br />
1 1 a<br />
t−1<br />
i+1<br />
x 1 x<br />
)<br />
89
• This configuration is not possible.<br />
STEP 3: Determination of the bits on the left si<strong>de</strong> of the central column.<br />
Assume the following notation.<br />
(<br />
α β<br />
δ x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−1<br />
a t i−1<br />
a t−1<br />
i<br />
x<br />
)<br />
One can easily see that there are 8 different possibilities for the bits {α, β, δ}. Basing<br />
on equation 1, an adversary in possession of the bits {α, β, δ} can <strong>de</strong>termine the bit a t−1<br />
i−2<br />
without applying any fault into the register.<br />
We shall now analyze these 8 possibilities.<br />
Configuration 3.1<br />
(<br />
a<br />
t−1<br />
i−2<br />
a t−1<br />
i−1<br />
a t−1<br />
i<br />
x a t i−1 x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−2 0 0<br />
x 0 x<br />
)<br />
• This configuration is only possible for a t−1<br />
i−2 = 0.<br />
Configuration 3.2<br />
(<br />
a<br />
t−1<br />
i−2<br />
a t−1<br />
i−1<br />
a t−1<br />
i<br />
x a t i−1 x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−2 0 0<br />
x 1 x<br />
)<br />
• This configuration is only possible for a t−1<br />
i−2 = 1.<br />
Configuration 3.3<br />
(<br />
a<br />
t−1<br />
i−2<br />
a t−1<br />
i−1<br />
a t−1<br />
i<br />
x a t i−1 x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−2 1 0<br />
x 0 x<br />
)<br />
• This configuration is only possible for a t−1<br />
i−2 = 1 .<br />
Configuration 3.4<br />
(<br />
a<br />
t−1<br />
i−2<br />
a t−1<br />
i−1<br />
a t−1<br />
i<br />
x a t i−1 x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−2 1 0<br />
x 1 x<br />
)<br />
• This configuration is only possible for a t−1<br />
i−2 = 0.<br />
Configuration 3.5<br />
(<br />
a<br />
t−1<br />
i−2<br />
a t−1<br />
i−1<br />
a t−1<br />
i<br />
x a t i−1 x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−2 0 1<br />
x 0 x<br />
)<br />
90
• This configuration is only possible for a t−1<br />
i−2 = 1.<br />
Configuration 3.6<br />
(<br />
a<br />
t−1<br />
i−2<br />
a t−1<br />
i−1<br />
a t−1<br />
i<br />
x a t i−1 x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−2 0 1<br />
x 1 x<br />
)<br />
• This configuration is only possible for a t−1<br />
i−2 = 0.<br />
Configuration 3.7<br />
(<br />
a<br />
t−1<br />
i−2<br />
a t−1<br />
i−1<br />
a t−1<br />
i<br />
x a t i−1 x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−2 1 1<br />
x 0 x<br />
)<br />
• This configuration is only possible for a t−1<br />
i−2 = 1.<br />
Configuration 3.8<br />
(<br />
a<br />
t−1<br />
i−2<br />
a t−1<br />
i−1<br />
a t−1<br />
i<br />
x a t i−1 x<br />
)<br />
=<br />
(<br />
a<br />
t−1<br />
i−2 1 1<br />
x 1 x<br />
)<br />
• This configuration is only possible for a t−1<br />
i−2 = 0.<br />
3. Further Explanation on the Rule 30 Stream Cipher Fault Analysis<br />
In this part, we explain in-<strong>de</strong>pth why our fault attack on the rule 30 stream cipher works.<br />
The main i<strong>de</strong>a is simple and quite intuitive. We recall that the attacker knows a<br />
sequence of n/2+1 cells, which are located on the central column of a matrix A. We also<br />
recall equation 1.<br />
a t i = a t−1<br />
i−1 XOR ( a t−1<br />
i<br />
)<br />
OR a t−1<br />
i+1<br />
In the first step of our attack, the cryptanalyst intends to discover the values a t−1<br />
i−1<br />
and a t−1<br />
i+1, given the values that he/she knows, i.e., a t i and a t−1<br />
i . However, he/she has two<br />
variables and only a boolean equation (this initial configuration is displayed in figure 1).<br />
Bits to be <strong>de</strong>termined<br />
t 1<br />
a i 1<br />
x<br />
t<br />
<br />
a 1 i<br />
<br />
1<br />
t1<br />
a i<br />
t<br />
a i<br />
t<br />
<br />
1<br />
a i<br />
<br />
1<br />
x<br />
t 1<br />
a i 1<br />
Known cells<br />
Figure 1. Initial configuration.<br />
91
Our fault analysis capabilities allow the cryptanalyst to obtain another boolean<br />
equation by flipping the bit a t−1<br />
i and observing the new value assumed by a t i after the<br />
fault injection. So, at the end of this action, the cryptanalyst will have a simple system of<br />
the form:<br />
⎧⎪ ⎨ [a t i] before<br />
flipping = at−1 i−1 XOR ( )<br />
b OR a t−1<br />
i+1<br />
⎪ ⎩ [a t i] after<br />
flipping = at−1 i−1 XOR ( ) (2)<br />
b OR a t−1<br />
i+1<br />
where [a t i] before<br />
flipping and [at i] after<br />
flipping <strong>de</strong>note the values observed at cell at i before and after the<br />
fault injection, respectively. Before, the fault injection a t−1<br />
i = b and after this, a t−1<br />
i = b,<br />
where b is the complementary value of b. It is easy to find the solution for this system.<br />
The action performed is illustrated in figure 2.<br />
Bit to be flipped<br />
Flipped bit<br />
t 1<br />
a i 1<br />
x<br />
t<br />
<br />
a 1 i<br />
<br />
1<br />
<br />
b<br />
t<br />
a B i F<br />
t<br />
<br />
1<br />
a i<br />
<br />
1<br />
x<br />
t 1<br />
a i 1<br />
Fault Injection<br />
t 1<br />
a i 1<br />
x<br />
t<br />
<br />
a 1 i<br />
<br />
1<br />
<br />
b<br />
t<br />
a A i F<br />
t<br />
<br />
1<br />
a i<br />
<br />
1<br />
x<br />
t 1<br />
a i 1<br />
Observe modified<br />
value<br />
Figure 2. Illustration of the main i<strong>de</strong>a involved in the first step of our attack.<br />
Steps 2 and 3 are trivial, and we hardly have to perform a flip action, because,<br />
usually, we have equation with only one variable to be <strong>de</strong>termined. Figure 3 suggests<br />
that.<br />
Bit to be <strong>de</strong>termined<br />
t1<br />
a i 2<br />
x<br />
t<br />
<br />
a 1 i<br />
<br />
1<br />
t 1<br />
a i 1<br />
t1<br />
a i 2<br />
t<br />
ai<br />
1<br />
tt1<br />
a i i 1<br />
x<br />
t 1<br />
a i 1<br />
Known cells<br />
Figure 3. Illustration of step 3 configuration.<br />
Regarding the complexity of the attack, it is easy to obtain an estimation on the<br />
number of faults required to break the cryptosystem. At step 1, we provoke n/2 fault<br />
injections to <strong>de</strong>termine the two pairs of bits adjacent to the central column. At step 2,<br />
there are (1/2) × [(n/2) × (n/2)] bits, and, on average, we provoke 0.25 fault for each bit<br />
to be <strong>de</strong>termine. So, step 2 requires n 2 /32 faults. At step 3, as explained previously, no<br />
faults need to be realized. Thus,<br />
Number of Faults Rule30 = n2<br />
32 + n 2<br />
92
3.1. Fault Analysis Effect on Rule 30 Stream Cipher<br />
One of the most known cryptanalytic techniques against the rule 30 stream cipher was<br />
proposed by Meier and Staffelbach [5]. Their statistical technique allows one to <strong>de</strong>termine<br />
secret keys with lengths varying between 300 and 500 bits by using personal computers.<br />
However, it is claimed that the recovery of secret keys of 1,000 bits would <strong>de</strong>mand the<br />
use of large scale parallel computers.<br />
On the other hand, the attack based on fault analysis assumptions has proven to be<br />
efficient and feasible for a large set of key lengths. For instance, to obtain a secret key of<br />
256 bits, the cryptanalyst should inject 2 7 +2 11 faults and know (256/2)+1 = 129 bits of the<br />
generated sequence. To obtain a key of 1,024 bits, 2 9 +2 15 fault injections and 512 known<br />
bits are nee<strong>de</strong>d. This amount of operations can be performed by any personal computer<br />
equipped with current technology. Besi<strong>de</strong>s that, the operations required to implement<br />
the attack are simple (comparisons and fault injections) and can be performed by any<br />
unsophisticated computational system.<br />
4. Conclusions<br />
Cellular automata based stream ciphers were <strong>de</strong>signed to respond to the increasing need of<br />
fast and low-cost cryptographic mechanisms. However, we have shown how <strong>de</strong>vastating<br />
fault analysis can be when applied to some of those cryptosystems.<br />
Our fault attack against the rule 30 stream cipher needs, in or<strong>de</strong>r to <strong>de</strong>termine a<br />
secret key of length n, only n/2 + n 2 /32 fault injections and a sequence of n/2 + 1 bits.<br />
It is an interesting future research direction to see how well the results introduced<br />
here apply to other ciphers <strong>de</strong>signed for low-cost, high performance cryptographic <strong>de</strong>vices.<br />
References<br />
[1] Eli Biham, Adi Shamir. A New Cryptanalytic Attack on DES: Differential Fault Analysis.<br />
Preprint, October 1996.<br />
[2] Dan Boneh, Richard A. DeMillo and Richard J. Lipton. On the Importance of Checking<br />
Cryptografic Protocols for Faults. Advances in Cryptology – EUROCRYPT 1997,<br />
Lecture Notes in Computers Science vol.1233, Springer-Verlag, pp. 37–51, May<br />
1997.<br />
[3] A. Fuster-Sabater, P. Caballero-Gil and M.E. Pazo-Robles, Application of Linear Hybrid<br />
Cellular Automata to Stream Ciphers, EUROCAST 2007, Lecture Notes in Computer<br />
Science vol. 4739, pp. 564-571, 2007<br />
[4] Jonathan J. Hock and Adi Shamir. Faut Analysis of Stream Ciphers. CHES 2004, Lecture<br />
Notes in Computer Science vol. 3156, Springer-Verlag, pp. 240–253, 2004.<br />
[5] Willi Meier and Othmar Staffelbach. Analysis of Pseudo Random Sequences Generated<br />
by Cellular Automata. Advances in Cryptology – EUROCRYPT 1991, Lecture<br />
Notes in Computer Science vol. 547, Springer-Verlag, pp. 186–199, 1991.<br />
[6] S. Nandi, B.K. Par, P. Pal Chaudhuri. Theory and Application of Cellular Automata in<br />
Cryptography, IEEE Transactions on Computers, vol 43, Issue 12, pp.1346-1357,<br />
1994<br />
93
[7] F. Seredynsky, P. Bouvry and A. Zomaya. Cellular Automata Computations and Secret<br />
Key Cryptography. Parallel Computing, Vol. 30, Issues 5-6, pp. 753-766, 2004.<br />
[8] M. Tomassini and M Perrenoud. Cryptography with Cellular Automata, Applied Soft<br />
Computing, vol 1, Issue 2, pp. 151-160, 2001.<br />
[9] S. Wolfram. Cryptography with Cellular Automata. Advances in Cryptology - CRYPTO<br />
1985, Proceedings, Springer-Verlag, pp. 429–432, 1986.<br />
[10] S. Wolfram. Random Sequence Generation by Cellular Automata. Advances in Applied<br />
Mathematics 7, pp. 123–169, 1986.<br />
94
Zero-knowledge I<strong>de</strong>ntification based on Lattices with Low<br />
Communication Costs<br />
Rosemberg Silva 1 , Pierre-Louis Cayrel 2 , Richard Lindner 3<br />
1 State University of Campinas (UNICAMP)<br />
Institute of Computing<br />
rasilva@ic.unicamp.br – Brazil<br />
2 Laboratoire Hubert Curien<br />
Université <strong>de</strong> Saint-Etienne<br />
pierre-louis.cayrel@univ-st-etienne.fr – France<br />
3 Technische Universität Darmstadt<br />
Fachbereich Informatik<br />
Kryptographie und Computeralgebra<br />
rlindner@cdc.informatik.tu-darmstadt.<strong>de</strong> – Germany<br />
Abstract. In this paper we propose a new 5-pass zero-knowledge i<strong>de</strong>ntification<br />
scheme with soundness error close to 1/2. We use the hardness of the Inhomogeneous<br />
Small Integer Solution problem as security basis. Our protocol<br />
achieves lower communication costs compared with previous lattice-based zeroknowledge<br />
i<strong>de</strong>ntification schemes. Besi<strong>de</strong>s, our construction allows smaller<br />
public and secret keys by applying the use of i<strong>de</strong>al lattices. We allow the prover<br />
to possess several pairs of secret and public keys, and choose randomly which<br />
pair is to be used in a given round of execution. We also <strong>de</strong>alt with nonces<br />
in zero-knowledge schemes in a new way, lowering the number of values exchanged<br />
between the prover and the verifier. Hence, our scheme has the good<br />
features of having a zero-knowledge security proof based on a well known hard<br />
problem of lattice theory, with worst to average-case reduction, and small size<br />
of secret and public keys.<br />
1. Introduction<br />
I<strong>de</strong>ntification schemes are cryptographic tools applied to provi<strong>de</strong> access control. A common<br />
realization of such schemes comes in the form of protocols between two entities<br />
called Prover and Verifier. The former is expected to establish the validity of its i<strong>de</strong>ntity<br />
to the latter. In or<strong>de</strong>r to accomplish such goal, the Prover makes used of the knowledge<br />
of a secret key, that is connected to its i<strong>de</strong>ntity. The application of zero-knowledge<br />
constructions helps to ensure that no information about such key is leaked as the protocol<br />
is performed. The only knowledge gained by the Verifier is that the claim ma<strong>de</strong><br />
by the Prover about the possession of the secret key is valid with overwhelming probability.<br />
Lattice-based instantiations of this kind of protocol have recently been proposed:<br />
[Lyubashevsky 2008], [Kawachi et al. 2008] and [Cayrel et al. 2010]. An interesting feature<br />
of some lattice-based systems in Cryptography, as seen in the seminal work from<br />
Ajtai [Ajtai 1996], is the possibility of allowing reductions from wost-cases to averagecases<br />
of well known hard problems. In the present work we use some of these results and<br />
propose an i<strong>de</strong>ntification scheme that achieves better communication costs.<br />
95
There is an standard construction of signature schemes from i<strong>de</strong>ntification<br />
schemes through the usage of the Fiat-Shamir heuristic, secure un<strong>de</strong>r the random oracle<br />
mo<strong>de</strong>l [Fiat and Shamir 1986]. It is of pivotal importance, however, that the communication<br />
costs of the i<strong>de</strong>ntification scheme be small in or<strong>de</strong>r to have efficient conversion.<br />
Among the good characteristics that our system possesses we stress the resilience<br />
to existing quantum attacks, like Shor’s [Shor 1994]. In addition to that, the relatively<br />
small soundness error per round and the algorithm that prevents exchange of<br />
large vectors enables to achieve small communication costs in contrast to other latticebased<br />
solutions, such as those seen in [Lyubashevsky 2008], [Kawachi et al. 2008] and<br />
[Cayrel et al. 2010]. This is conveyed by the Table 1, where we consi<strong>de</strong>r a scenario with<br />
an overall soundness error of 2 −16 , and make the assumption that all the random choices<br />
involve the use of seeds that are 128 bits long. For a setting applying k pairs of keys, our<br />
scheme has soundness error 1/2 + 1/k 2 . Then, it suffices to run 17 rounds of the protocol<br />
in or<strong>de</strong>r to reach such goal. The best zero-knowledge i<strong>de</strong>ntification scheme in term of<br />
communication cost, the CLRS scheme has soundness error of (q +1)/q, consi<strong>de</strong>ring that<br />
it is based on q-ary lattices over Z q . Given that we are working with q = 257, it also<br />
requires 17 rounds in or<strong>de</strong>r to satisfy the requirement regarding overall soundness error.<br />
Our proposal reaches a communication cost better than CLRS’.<br />
Scheme<br />
Rounds Total communication<br />
[Kbyte]<br />
Lyubashevsky [Lyubashevsky 2008] 11 110,00<br />
Kawachi et al. [Kawachi et al. 2008] 27 58,67<br />
CLRS [Cayrel et al. 2010] 17 37,50<br />
Ours 17 23,40<br />
Table 1. Comparison with lattice-based ID schemes.<br />
This paper is organized as follows. The concepts necessary to the un<strong>de</strong>rstanding<br />
of our construction are are presented in Section 2. After that, we provi<strong>de</strong> a <strong>de</strong>tailed<br />
<strong>de</strong>scription of the algorithms from which our scheme is composed in Section 3. Then, we<br />
give the proofs for the zero-knowledge properties that our scheme possesses. For last, we<br />
discuss the choice of parameters in Section 4 and future lines of investigation in Section<br />
5.<br />
2. Preliminaries<br />
Notation. Along the text we use bold capital letters to <strong>de</strong>note matrices and bold small<br />
letters to indicate vectors. Scalars, on their turn, are represented with regular characters.<br />
Security Mo<strong>de</strong>l. Our i<strong>de</strong>ntification scheme employs a string commitment scheme that<br />
possesses the properties of computationally binding and statistically hiding. We also assume<br />
that a trusted party honestly sets up the system parameters for both the Prover and<br />
the Verifier.<br />
A commitment scheme is said to be statistically hiding, when no computationally<br />
unboun<strong>de</strong>d adversary can distinguish two commitment strings generated from two distinct<br />
96
strings. It is computationally binding, if no polynomial-time adversary can imperceptibly<br />
change the committed string after sending the corresponding commitment.<br />
We show that our construction is resilient to concurrent attacks. Thus, we allow<br />
the adversaries act as cheating verifiers prior to attempting impersonation attacks, with<br />
polynomially many different instances of the prover. Such instances share the same secret<br />
keys in each round, but use different random coins. Besi<strong>de</strong>s, they have their own<br />
in<strong>de</strong>pen<strong>de</strong>nt state.<br />
Zero-Knowledge. Given a language L and one of its words x, we call zero-knowledge<br />
proof of knowledge that x belongs L a protocol with the following properties:<br />
• Completeness: any true theorem to be proved.<br />
• Soundness: no false theorem can be proved.<br />
• Zero-Knowledge: nothing but the truthfulness of the statement being proved is<br />
revealed. According to [Goldwasser et al. 1985], there exist the following kinds<br />
of zero-knowledge :<br />
– Perfect: if the simulator and the real proof produce communication tapes<br />
with exactly the same distribution.<br />
– Statistical: if the simulator and the real proof produce communication<br />
tapes whose statistical distributions are negligibly close.<br />
– Computational: if no efficient algorithm can distinguish the communication<br />
tape produced by the simulator from that corresponding to the real<br />
protocol.<br />
Lattices. Lattices correspond to discrete additive subgroups of R m . One can represent<br />
them by means of a basis B composed of n ≤ m linear in<strong>de</strong>pen<strong>de</strong>nt vectors in R m . Such<br />
basis is not unique. Given two basis B 1 and B 2 for the same lattice, there is a unimodular<br />
matrix U such that B 1 = B 2 U.<br />
Given a basis B, the corresponding lattice is generated by all combinations of<br />
vectors in B with integer coefficients.<br />
There are hard problems <strong>de</strong>fined over lattices that can be used as security assumptions<br />
in the construction of cryptographic schemes. We list below the problems that are<br />
related to the i<strong>de</strong>ntification scheme proposed in this paper. We assume that the norm used<br />
throughout this document is max-norm.<br />
Definition 2.1 (Search Shortest Vector Problem, SVP). On input a lattice basis B ∈<br />
Z m×n , the computational shortest vector problem (SVP) is <strong>de</strong>fined as the task of obtaining<br />
a non-zero lattice vector Bx satisfying ‖Bx‖ ≤ ‖By‖ for any other y ∈ Z n \ {0}.<br />
As commonly happens in the study of computational complexity, one<br />
can express the problem above as optimization, <strong>de</strong>cision and approximation<br />
[Micciancio and Goldwasser 2002].<br />
Definition 2.2 (Short Integer Solution, SIS). On input a prime q, a positive real number<br />
b, a matrix A ∈ Z n×m<br />
q , associated with a lattice basis, the short integer solution (SIS)<br />
problem is <strong>de</strong>fined as the task of finding a non-zero vector x ∈ Z m such that Ax = 0<br />
(mod q), with ‖x‖ ≤ b.<br />
97
The SIS has served as security assumption in several cryptographic schemes with<br />
worst-case connections. In [Ajtai 1996] and [Ajtai and Dwork 1996], Ajtai first showed<br />
how to use computationally intractable worst-case lattice problems as building blocks for<br />
cryptosystems. The parameter sizes involved, however, are not small enough to enable<br />
practical implementations.<br />
Working towards making lattice-based schemes practical, Micciancio showed that<br />
it is possible to represent a basis, and thus public keys, with space that grows quasilinearly<br />
in the lattice dimension [Micciancio 2007] through cyclic lattices. Further improvement<br />
was obtained in conjunction with Lyubashevsky, achieving compression functions<br />
that are both efficient and provably secure assuming the hardness of worst-case<br />
lattice problems for i<strong>de</strong>al lattices [Lyubashevsky and Micciancio 2006].<br />
A variety of hard problems associated with lattices has been used as security basis<br />
in a number of cryptographic schemes. For example, Lyubashevsky’s i<strong>de</strong>ntification<br />
scheme is secure un<strong>de</strong>r active attacks, assuming the hardness of approximating SVP in all<br />
lattices of dimension n to within a factor of Õ(n2 ). By weakening the security assumption,<br />
on the other hand, one can achieve parameters small enough to make a practical<br />
implementation feasible, as seen in the i<strong>de</strong>ntification scheme proposed by Kawachi et<br />
al. in [Kawachi et al. 2008]. In this later work, the authors suggest to use approximate<br />
Gap-SVP or SVP within factors Õ(n). Cayrel et al. improved the results from Kawachi<br />
in the CLRS scheme [Cayrel et al. 2010].<br />
I<strong>de</strong>al Lattices. There is a particular class of lattices that are closed un<strong>de</strong>r ring multiplications.<br />
They correspond to the i<strong>de</strong>als of some polynomial quotient ring.<br />
Definition 2.3 (I<strong>de</strong>al lattices). Let f be a monic polynomial of <strong>de</strong>gree n. We call L is an<br />
i<strong>de</strong>al lattice if it corresponds to an i<strong>de</strong>al I in the ring Z[x] /〈f〉.<br />
For lattices of rank n and entries from Z q , the storage needs for characterizing a<br />
basis is n 2 log(q) bits. By applying i<strong>de</strong>al lattices, instead, this value can be reduced to<br />
n log(q) bits. Besi<strong>de</strong>s the gain in storage, there is also a gain in performance, given that<br />
matrix/vector multiplications can be performed in time O(n log(n)) using discrete FFTs.<br />
Both SIS and SVP restricted to i<strong>de</strong>al lattices still keep the worst-case to averagecase<br />
connection, provi<strong>de</strong>d that f is irreducible over the integers.<br />
Definition 2.4 (I<strong>de</strong>al-SIS). Given a monic polynomial f of <strong>de</strong>gree n, the ring R f =<br />
Z[x]/〈f〉, and m elements a 1 , . . . , a m ∈ R f /qR f , we <strong>de</strong>fine I<strong>de</strong>al-SIS the problem of<br />
finding x 1 , . . . , x m ∈ R f satisfying ∑ m<br />
i=1 a ix i = 0 (mod q) and 0 < ‖(x 1 , . . . , x m )‖ ≤<br />
b.<br />
Canonical i<strong>de</strong>ntification schemes Let the tuple (KEYGEN, P, V ) be an i<strong>de</strong>ntification<br />
scheme, where KEYGEN is the key-generation algorithm which on input parameters outputs<br />
(sk, pk), P is the prover algorithm taking input sk, V is the verifier algorithm taking<br />
inputs parameters and pk. We say that such scheme is a canonical i<strong>de</strong>ntification scheme<br />
if it is a public-coin 3-move protocol {commitment, challenge, answer} that enables P to<br />
convince V about the knowledge of sk.<br />
98
Stern’s I<strong>de</strong>ntification Scheme. The first co<strong>de</strong>-based i<strong>de</strong>ntification scheme was proposed<br />
by Harari in 1989 [Harari 1988], but it was broken by Véron in 1995 [Véron 1995].<br />
In 1990, Girault <strong>de</strong>vised a three-pass scheme [Girault 1990]. Neither of those schemes<br />
was practical, from performance perspective, though. The first practical co<strong>de</strong>-based i<strong>de</strong>ntification<br />
scheme, from performance standpoint, was proposed by Stern [Stern 1993]. Its<br />
security relies on the collision-resistance property of a hash function h and the hardness<br />
of the syndrome <strong>de</strong>coding problem. The entity to be authenticated possesses a pair of<br />
keys (i, s) related by i = H T s, where H is a public parity check matrix of a given co<strong>de</strong>, s<br />
is a private binary vector of Hamming weight p, and i is its public syndrome. It engages<br />
in a zero-knowledge protocol with a verifier, aiming to prove the knowledge of the secret<br />
key, without revealing its value. In the same paper Stern proposed some variations of the<br />
protocol. The most efficient in terms of communication costs had soundness error of 2/3.<br />
This implies that, in or<strong>de</strong>r to reach a confi<strong>de</strong>nce level L on the authenticity of the prover,<br />
the protocol has to be repeated a number r of rounds, in or<strong>de</strong>r to satisfy 1 − (2/3) r ≥ L.<br />
Gaborit and Girault’s I<strong>de</strong>ntification Scheme Another scheme suggested by Gaborit<br />
and Girault requires smaller storage for public data [Gaborit and Girault 2007]. Given<br />
that the schemes we have seen are <strong>de</strong>aling with co<strong>de</strong>s, this usually implies that a generator<br />
matrix or a parity check matrix is nee<strong>de</strong>d to fully characterize them. The i<strong>de</strong>a applied by<br />
Gaborit and Girault was to use double-circulant matrices for a compact representation.<br />
In our work, we point out that a combination of these two approaches (and the<br />
one from Aguilar et al. [Aguilar et al. 2011]) can be used in the lattice context, namely<br />
i<strong>de</strong>al lattices (which allow a very compact representation, as efficient as double-circulant<br />
matrices) for an i<strong>de</strong>ntification scheme structure with soundness error of 1/2. With this, we<br />
manage to have the lowest communication costs and lowest public data storage needs.<br />
3. I<strong>de</strong>ntification Scheme<br />
Our scheme is comprised of two algorithms: key generation, and i<strong>de</strong>ntification protocol.<br />
The first picks uniformly at random k binary vectors with length m, Hamming weight<br />
p and disjoint supports. The corresponding public keys are obtained by multiplication<br />
of the private key by a uniformly chosen matrix A ∈ Z n×m<br />
q . Given the small norm<br />
of the private keys, it is still computationally intractable to <strong>de</strong>rive them from the public<br />
data for a suitable choice of parameters with algorithms known to this date. Such task<br />
corresponds to the inhomogeneous SIS problem. In addition to that, several valid private<br />
keys correspond to a given public key. This fact will be used later on to establish the<br />
concurrent security of our scheme.<br />
KEYGEN:<br />
A ←− $ Z n×m<br />
q<br />
Compute x = {x 1 , . . . , x k } and y = {y 1 , . . . , y k } where<br />
$<br />
x i ←− {0, 1} m , with Hamming weight p and 1 ≤ i ≤ k<br />
y i ←− Ax i mod q with 1 ≤ i ≤ k<br />
COM ←− $ F, suitable family of commitment functions<br />
Output (sk, pk) = (x, (y, A, COM)), where the private key is sk, and the public key is pk.<br />
Figure 1. Key generation algorithm, parameters n, m, q are public.<br />
The second algorithm corresponds to the i<strong>de</strong>ntification protocol. To a given user<br />
we have associated k distinct pairs of keys. In a given round of execution, the Verifier<br />
99
Prover P(sk, pk)<br />
(sk, pk) = (x, (y, A, COM)) ←− KEYGEN<br />
Verifier V(pk)<br />
u ∗ $<br />
←− Z m q , σ ←− $ S m<br />
u ←− σ −1 (u ∗ )<br />
$<br />
r 3 ←− {0, 1} m<br />
r 1 ←− σ(r 3 )<br />
r 2 ←− u ∗ &r 3<br />
c 1 ←− COM(σ ‖ Au; r 1 )<br />
c 2 ←− COM(u ∗ ; r 2 )<br />
c 3 ←− COM(σ(x s + x t + u) mod q; r 3 )<br />
If b = 0:<br />
c 1 , c 2<br />
−−−−−−−−−−−−→<br />
s, t<br />
$<br />
←−−−−−−−−−−−− s, t ←− {1, . . . , k}<br />
c 3<br />
−−−−−−−−−−−−→<br />
Challenge b<br />
←−−−−−−−−−−−− b ←− $ {0, 1}<br />
σ, u + x s + x t mod q, r 3<br />
−−−−−−−−−−−−→<br />
Check<br />
r 1 ←− σ(r 3 )<br />
c 1<br />
? = COM(σ ‖ A(u + xs + x t ) − y s − y t ; r 1 )<br />
c 3<br />
? = COM(σ(xs + x t + u) mod q; r 3 )<br />
Else:<br />
u ∗ , σ(x s + x t ), r 3<br />
−−−−−−−−−−−−→<br />
Check<br />
r 2 ←− u ∗ &r 3<br />
c 2<br />
? = COM(u<br />
∗ ; r2 )<br />
c 3<br />
? = COM(σ(xs + x t ) + u ∗ mod q); r 3 )<br />
σ(x s + x t ) is binary with Hamming weight 2p<br />
Figure 2. I<strong>de</strong>ntification protocol<br />
picks two pairs of keys that the Prover is supposed to use for the interactive proof. When<br />
performing operations over the private keys, the Prover uses blinding factors in the form<br />
of permutations and vector sums with modular reduction. Both the permutation and the<br />
vector to be ad<strong>de</strong>d to the private keys are uniformly randomly chosen. Hence, observing<br />
the outcome does not reveal any information about the private key value, given that its statistical<br />
distribution is uniform. This is applied in the <strong>de</strong>monstration of the zero-knowledge<br />
property of our scheme.<br />
In or<strong>de</strong>r to help in the reduction of communication costs, the nonces that are used<br />
in conjunction with the COM functions can be generated in such a way that only one of<br />
the three values r i is chosen uniformly at random. We can chose r 3 because c 3 is the<br />
common commitment that is checked for both possible values for the challenge b. The<br />
other two nonces may be obtained by performing operations involving the first one, either<br />
by applying a random permutation (σ) or by performing the bitwise logical AND with the<br />
appropriate number of bits of the permutation of a randomly chosen vector (u). When<br />
replying to the challenges, the Prover would give to the Verifier all the seeds nee<strong>de</strong>d<br />
to reconstruct the nonces r i . The Prover also sends the seeds for computing σ and u ∗ ,<br />
<strong>de</strong>pending on the challenge received from the Verifier, instead of sending matrices and<br />
vectors that <strong>de</strong>fine them. We are making the assumption that the utility function to <strong>de</strong>rive<br />
them from the seeds are publicly known.<br />
Regarding the computation of the blinding vector u, we first randomly choose its<br />
image u ∗ . Then, using the seed of the permutation σ, we obtain u ←− σ −1 (u ∗ ). This<br />
choice enables to, instead of replying the challenge b = 1 with a vector in Z m q , send<br />
only a seed to reconstruct the value of u ∗ by the Verifier. This is the point where the<br />
improvement in terms of communication costs regarding CLRS becomes more evi<strong>de</strong>nt.<br />
For instantiating the commitment scheme COM, we recommend Kawachi’s<br />
[Kawachi et al. 2008], whose security is based on SIS. As seen with CLRS and SWI-<br />
100
FFT, the application of i<strong>de</strong>al lattices can bring improvement in performance and storage<br />
needs, without sacrificing security.<br />
3.1. Security<br />
We provi<strong>de</strong> below proofs for the completeness, soundness and zero-knowledge properties<br />
of the i<strong>de</strong>ntification scheme <strong>de</strong>scribed in Figure 2. We use as assumptions the fact that<br />
the string commitment scheme COM is a statistically hiding and computationally binding<br />
commitment scheme, and also that the inhomogeneous SIS problem is hard.<br />
3.1.1. Completeness<br />
Given that an honest prover has knowledge of the private keys x i , the blending mask u<br />
and the permutation σ, he will always be able to <strong>de</strong>rive the commitments c 1 , c 2 and c 3 ,<br />
and reveal to the verifier the information necessary to check that they are correct. He can<br />
also show that the private keys in his possession has the appropriate Hamming weights.<br />
So, the verifier will always accept the honest prover’s i<strong>de</strong>ntity in any given round. This<br />
implies perfect completeness.<br />
3.1.2. Zero-Knowledge<br />
We give a <strong>de</strong>monstration of the zero-knowledge property for the i<strong>de</strong>ntification protocol<br />
shown in Figure 2. Here, we require the commitment function COM to be statistically<br />
hiding, i.e., COM(x; r) is indistinguishable from uniform for a uniform r ∈ {0, 1} m .<br />
Theorem 3.1. Let q be prime. The protocol <strong>de</strong>scribed in Figure 2 is a statistically zeroknowledge<br />
proof of knowledge that the prover knows a set of k secret binary vectors x i<br />
of Hamming weight p that satisfy Ax i = y i mod q, for i ∈ {1, . . . , k}, if the employed<br />
commitment scheme COM is statistically-hiding.<br />
Proof. To prove the zero-knowledge property of our protocol, we construct a simulator<br />
S that, given oracle access to a verifier V (not necessarily honest), produces a communication<br />
tape that is statistically indistinguishable from a tape generated by the interaction<br />
between an honest prover P and the given verifier V . The construction of such simulated<br />
tape is <strong>de</strong>scribed below. The simulator prepares to answer the second challenge b<br />
by guessing its value ˜b picked uniformly at random from {0, 1}, and produces the corresponding<br />
commitments c 1 and c 2 . It accesses the verifier, as an oracle, passing the<br />
commitments c 1 and c 2 , obtaining as response the first challenge {s, t}. Then, it computes<br />
commitment c 3 and passes it to the verifier, obtaining the final challenge b. If b and<br />
˜b match, the simulator records the interaction in the communication tape. Otherwise, it<br />
repeats the process. The number of rounds recor<strong>de</strong>d r corresponds to what would be expected<br />
from a real pair (P, V ) in or<strong>de</strong>r to reach a specified value for the overall soundness<br />
error L.<br />
The computations of each commitment are executed as follows.<br />
If ˜b = 0, the simulator selects u, σ and the nonces {r 1 , r 2 , r 3 } as per protocol, computes<br />
the commitments {c 1 , c 2 } and passes them to the verifier V , which responds with a<br />
challenge {s, t}. The simulator solves the equations Ax t = y t (mod q) and Ax s = y s<br />
101
(mod q) for x t and x s , without any restriction regarding the norm of the solution. Such<br />
step is not computationally hard, and can be done in polynomial time. With these pseudo<br />
secret keys x t and x s , the simulator computes c 3 according to the protocol and sends it<br />
to the verifier. The <strong>de</strong>viation in c 3 is not recognized because COM is statistically hiding.<br />
Upon receipt of c 3 the verifier responds with the final challenge b. If it matches the<br />
value to which the simulator had prepared to answer, namely ˜b, then it reveals the values<br />
{σ, u + x s + x t mod q, r 1 , r 3 } to the verifier. The whole set of data exchanged between<br />
the simulator and the verifier is recor<strong>de</strong>d. If there is not a match between b and ˜b, however,<br />
the simulator does not record anything and prepares for a new round by picking another ˜b<br />
uniformly at random and restarts the process.<br />
If ˜b = 1, the simulator needs to play against the second verification branch. It<br />
selects u, σ and the nonces {r 1 , r 2 , r 3 } according to the protocol, uniformly at random.<br />
It computes the commitments {c 1 , c 2 }, sends them to the verifier, obtaining the answer t<br />
as result. Then, the simulator picks x t and x t uniformly at random as a binary vectors<br />
of dimension m, Hamming weight p and disjoint supports, without having to satisfy the<br />
restrictions Ax s = y s mod q and Ax t = y t mod q, given that this will not be used<br />
to check the validity of the commitments, in case the guessed challenge is correct. It<br />
suffices that c 2 and c 3 can be reproduced by the verifier, and that the surrogate private<br />
keys x t and x t have Hamming weight p. The simulator computes commitment c 3 , sends<br />
it to the verifier, and gets the final challenge as response. Again, such <strong>de</strong>viation is hid<strong>de</strong>n<br />
by COM. In case the final challenge matches the guessed value, the whole interaction of<br />
this round is recor<strong>de</strong>d. Otherwise, the simulator picks another ˜b and restarts the process.<br />
As a result, after 2r rounds in average, the simulator produces a communication tape<br />
statistically indistinguishable from a real one, provi<strong>de</strong>d that COM is statistically hiding.<br />
3.1.3. Soundness<br />
Theorem 3.2. If after r rounds of protocol execution a cheating prover is accepted with<br />
probability at least (1/2+1/k 2 ) r +ɛ, for any ɛ > 0, either there is a knowledge extractor,<br />
which is a polynomial time probabilistic Turing machine that computes with overwhelming<br />
probability the sum of two private keys x i and x j , with i, j ∈ {1, . . . , k}, which are<br />
solutions to instances of the inhomogeneous SIS, or the binding property of the commitment<br />
scheme COM is broken.<br />
Proof. We follow the same strategy as Véron [Véron 1996] for reasoning about trees<br />
that mo<strong>de</strong>l the probability space corresponding to the execution of the protocol. Let us<br />
suppose that a cheating prover can be accepted with such probability as (1/2+1/k 2 ) r +ɛ,<br />
or higher. Then, by rewinding this prover a number of times given by 1/ɛ, we can find<br />
with overwhelming probability a no<strong>de</strong> with two sons in the execution tree associated with<br />
the protocol between the cheating prover and the verifier, corresponding to the reception<br />
of the two possible values for the challenge b. This means that such cheating prover will<br />
be able to answer all challenges for a fixed set of commitments c 1 , c 2 , c 3 .<br />
There are two possibilities for him to accomplish this. The first one is to have the<br />
arguments from which the commitments assuming different values for the two challenges,<br />
102
ut with similar images through the application of the function COM. This implies a<br />
violation of the binding property of the commitment scheme, given that a collision was<br />
found.<br />
The second possibility is that the arguments to the function COM match. Let us<br />
call σ 0 and u 0 + x s 0 + x t 0 the values revealed by the cheating prover upon receipt of<br />
the challenge b = 0. Let us call σ(u 1 ) and σ 1 (x s 1 + x t 1 ) the answer to the challenge<br />
b = 1. Then, we can obtain the sum of the private key x s + x t as σ0 −1 (σ 1 (x t 1 + x t 1 )).<br />
This also means that we solved an arbitrary inhomogeneous SIS instance in probabilistic<br />
polynomial time, violating our assumption that such problem is hard.<br />
The ability to find the sum of two arbitrary private keys also implies the ability<br />
to obtain each of the individual keys corresponding to such sum. In or<strong>de</strong>r to do that, we<br />
can use the fact that private keys are binary vectors with constant Hamming weight p.<br />
Then, using the pigeon hole principle, after finding k pair sums, we will have necessarily<br />
a non-empty intersection with the support set of the next pair sum. Such intersection<br />
corresponds to the support set of a single key. Given that the key is binary, it can be<br />
uniquely <strong>de</strong>termined from its support set. Then, applying an XOR operation between<br />
each partially colliding sum and the recently computed key, we can retrieve the other two<br />
remaining private keys. This whole process can be executed over polynomially many key<br />
sums, so that all the individual private keys can be recovered.<br />
In the security proofs above, we make the assumption that the distributions of r 1 ,<br />
r 2 and r 3 are uniform, provi<strong>de</strong>d that r 3 is randomly chosen from {0, 1} n , and that the<br />
other two nonces are computed as r 1 ←− σ(r 3 ) and r 2 ←− σ(u) & r 3 . Besi<strong>de</strong>s, given<br />
that COM is statistically-hiding, these choices can not be distinguished from what would<br />
have been obtained, had r 1 and r 2 been directly picked at random from {0, 1} n .<br />
3.2. Security and Performance Consi<strong>de</strong>rations<br />
The application of i<strong>de</strong>al lattices in this i<strong>de</strong>ntification scheme can lead to improved and<br />
reduced memory footprint for public data. The usual restrictions regarding the choice of<br />
irreducible polynomials in the characterization of the i<strong>de</strong>al lattice, as well as its expansion<br />
factor must be observed, as discussed in [Lyubashevsky and Micciancio 2006]. This helps<br />
to ensure that finding short vectors in this kind of lattice remains hard to achieve.<br />
Our scheme is also secure against concurrent attacks. This is a consequence of<br />
the fact that a public key corresponds to multiple secret keys, when the parameters are<br />
chosen in such a way that the pre-image set given by the private keys is much larger than<br />
the image set to which the public keys belong. The keys are related via mapping through<br />
the matrix A.<br />
3.3. Communication Costs<br />
This i<strong>de</strong>ntification scheme can benefit from the use of i<strong>de</strong>al lattices, by performing faster<br />
matrix vector multiplications with FFTs, similarly to what was done with SWIFFT hash<br />
function [Lyubashevsky et al. 2008]. The associated polynomial must be irreducible and<br />
with small expansion factor, as suggested in [Lyubashevsky and Micciancio 2006], in or<strong>de</strong>r<br />
to avoid known attacks.<br />
103
Another efficient i<strong>de</strong>ntification scheme, named CLRS, based on SIS was recently<br />
proposed by Cayrel et al.[Cayrel et al. 2010]. It possesses a soundness error of (q +1)/2q<br />
per round, which is slightly higher than ours, namely 1/2. Such small difference plays<br />
an important role in terms of performance as <strong>de</strong>picted in Table 1. We provi<strong>de</strong> below a<br />
comparison in terms of communication costs per round.<br />
Our i<strong>de</strong>ntification scheme exhibits the following message exchanges between the<br />
prover P and the verifier V . We are assuming that the seeds used to generate random elements<br />
in the protocol are 128 bits wi<strong>de</strong>, and that the commitment function COMprovi<strong>de</strong>s<br />
results that are 256 bits wi<strong>de</strong>.<br />
• Commitments: 768 bits, corresponding to three commitment vectors.<br />
• First challenge: 2 log 2 k bits<br />
• Second challenge: 1 bit<br />
• Answer to the second challenge: (m/2) log 2 q + m/2 + 256, which is an average<br />
between<br />
– case challenge is 0:<br />
∗ one permutation seed: 128 bits<br />
∗ one vector in Z m q : m log 2 q bits<br />
∗ one seed for the nonce r 3 : 128 bits<br />
– case challenge is 1:<br />
∗ one seed for reconstructing the vector u ∗ ∈ Z m q : 128 bits<br />
∗ one vector in {0, 1} m : m bits<br />
∗ one seed for the nonce r 3 : 128 bits<br />
Thus, the total communication costs in bits per round of the protocol can be expressed<br />
as<br />
m<br />
2 log 2 q + 2 log 2 k + m 2 + 1025.<br />
Making the substitution of the parameters used in a concrete implementation, we<br />
have the 11275 bits per round. The overall cost for a scenario <strong>de</strong>manding soundness error<br />
of 2 −16 is listed in Table 1. From there, one can see that our scheme improves the state of<br />
art (CLRS) in approximately 38%.<br />
4. Attacks on the security assumptions<br />
An attacker might try to break our scheme either by finding collisions in the COM function<br />
at will or by computing solutions to the SIS instances corresponding to the scheme. Given<br />
that the COM function adopted is also based on SIS [Kawachi et al. 2008], this implies the<br />
ability of successfully finding solutions for SIS <strong>de</strong>fined over Z q , with vectors of dimension<br />
m and approximation factor √ m. Breaking our instances of inhomogeneous SIS, implies<br />
the capacity to find vectors with max-norm 1 in arbitrarily chosen lattices. Neither of these<br />
attacks can be efficiently implemented with tools and techniques currently available. This<br />
does not change with the application of i<strong>de</strong>al lattices either.<br />
In similarity with CLRS, we choose the parameters such that with overwhelming<br />
probability that there are other solutions to Ax = y mod q besi<strong>de</strong>s the private key<br />
possessed by the Prover. This fact is of great importance for obtaining security against<br />
concurrent attacks. In or<strong>de</strong>r to reach this goal, q and m are chosen in such a way that<br />
the cardinality of set of the private keys is much bigger than the cardinality of set of the<br />
104
public keys. This ensures that the system has the property of witness indistinguishability,<br />
which is kept un<strong>de</strong>r parallel composition.<br />
As an instantiation with 100 bits of security, we suggest the parameters listed in<br />
Table 2, which are comparable to those used by the SWIFFT hash function and the CLRS<br />
i<strong>de</strong>ntification scheme. The best combinatorial attack for finding short lattice vectors to<br />
this date, <strong>de</strong>vised by Wagner [Wagner 2002], has a computational complexity above 2 100<br />
for such set of parameters. In addition to that, our private keys have norm below of what<br />
the best lattice reduction algorithms can obtain.<br />
We chose the parameter k as 24 so that the soundness error per round be approximately<br />
the same as that of CLRS. Naturally, the Verifier has to load the set of public<br />
keys before the execution of the protocol from the trusted party that generates the keys.<br />
This represents an extra cost when compared to CLRS, but such operation can be executed<br />
at setup time. We are primarily concerned with the payload exchanged between the<br />
Prover and the Verifier. This can help in preserving bandwidth and battery time, which is<br />
important for constrained <strong>de</strong>vices.<br />
k n m q COM Length (bits)<br />
24 64 2048 257 256<br />
Table 2. Parameters for Lattice Instantiation<br />
5. Conclusion and Further Work<br />
We have shown in this paper a construction of a lattice-based i<strong>de</strong>ntification scheme with<br />
worst-case connections, taking as starting point a co<strong>de</strong>-based scheme. Its small soundness<br />
error results in lower communication costs than those from other lattice-based constructions<br />
over the I-SIS or SIS problems. Further improvements in computational costs can be<br />
obtained with the application of i<strong>de</strong>al lattices, without weakening the security properties.<br />
As future work, we suggest an extension of this approach of replacing security<br />
assumptions used by cryptographic schemes to other hard problems in lattices, such as<br />
LWE (learning with errors) which has a formulation very close to that of error-correcting<br />
co<strong>de</strong>s.<br />
References<br />
Aguilar, C., Gaborit, P., and Shreck, J. (2011). A new zero-knowledge co<strong>de</strong>-based i<strong>de</strong>ntification<br />
and signature scheme with reduced communications. preprint.<br />
Ajtai, M. (1996). Generating hard instances of lattice problems. Electronic Colloquium<br />
on Computational Complexity (ECCC), 3(7).<br />
Ajtai, M. and Dwork, C. (1996). A public-key cryptosystem with worst-case/average-case<br />
equivalence. Electronic Colloquium on Computational Complexity (ECCC), 3(65).<br />
Cayrel, P.-L., Lindner, R., Rückert, M., and Silva, R. (2010). Improved zero-knowledge<br />
i<strong>de</strong>ntification with lattices. In Provable Security, volume 6402 of Lecture Notes in<br />
Computer Science, pages 1–17. Springer.<br />
105
Fiat, A. and Shamir, A. (1986). How to prove yourself: Practical solutions to i<strong>de</strong>ntification<br />
and signature problems. In Odlyzko, A. M., editor, CRYPTO, volume 263 of Lecture<br />
Notes in Computer Science, pages 186–194. Springer.<br />
Gaborit, P. and Girault, M. (2007). Lightweight co<strong>de</strong>-based i<strong>de</strong>ntification and signature.<br />
IEEE Transactions on Information Theory (ISIT), pages 186–194.<br />
Girault, M. (1990). A (non-practical) three-pass i<strong>de</strong>ntification protocol using coding theory.<br />
In Seberry, J. and Pieprzyk, J., editors, AUSCRYPT, volume 453 of Lecture Notes<br />
in Computer Science, pages 265–272. Springer.<br />
Goldwasser, S., Micali, S., and Rackoff, C. (1985). The knowledge complexity of interactive<br />
proof-systems. In Proceedings of the seventeenth annual ACM symposium on<br />
Theory of computing, page 304. ACM.<br />
Harari, S. (1988). A new authentication algorithm. In Cohen, G. D. and Wolfmann, J.,<br />
editors, Coding Theory and Applications, volume 388 of Lecture Notes in Computer<br />
Science, pages 91–105. Springer.<br />
Kawachi, A., Tanaka, K., and Xagawa, K. (2008). Concurrently secure i<strong>de</strong>ntification<br />
schemes based on the worst-case hardness of lattice problems. In ASIACRYPT ’08:<br />
Proceedings of the 14th International Conference on the Theory and Application of<br />
Cryptology and Information Security, pages 372–389, Berlin, Hei<strong>de</strong>lberg. Springer-<br />
Verlag.<br />
Lyubashevsky, V. (2008). Lattice-based i<strong>de</strong>ntification schemes secure un<strong>de</strong>r active attacks.<br />
In Cramer, R., editor, Public Key Cryptography, volume 4939 of Lecture Notes<br />
in Computer Science, pages 162–179. Springer.<br />
Lyubashevsky, V. and Micciancio, D. (2006). Generalized compact knapsacks are collision<br />
resistant. In Bugliesi, M., Preneel, B., Sassone, V., and Wegener, I., editors, ICALP<br />
(2), volume 4052 of Lecture Notes in Computer Science, pages 144–155. Springer.<br />
Lyubashevsky, V., Micciancio, D., Peikert, C., and Rosen, A. (2008). Swifft: A mo<strong>de</strong>st<br />
proposal for fft hashing. In Nyberg, K., editor, FSE, volume 5086 of Lecture Notes in<br />
Computer Science, pages 54–72. Springer.<br />
Micciancio, D. (2007). Generalized compact knapsacks, cyclic lattices, and efficient oneway<br />
functions. In Computational Complexity. Springer.<br />
Micciancio, D. and Goldwasser, S. (2002). Complexity of Lattice Problems: a cryptographic<br />
perspective, volume 671 of The Kluwer International Series in Engineering<br />
and Computer Science. Kluwer Aca<strong>de</strong>mic Publishers, Boston, Massachusetts.<br />
Shor, P. W. (1994). Polynominal time algorithms for discrete logarithms and factoring on<br />
a quantum computer. In Adleman, L. M. and Huang, M.-D. A., editors, ANTS, volume<br />
877 of Lecture Notes in Computer Science, page 289. Springer.<br />
Stern, J. (1993). A new i<strong>de</strong>ntification scheme based on syndrome <strong>de</strong>coding. In Stinson,<br />
D. R., editor, CRYPTO, volume 773 of Lecture Notes in Computer Science, pages 13–<br />
21. Springer.<br />
Véron, P. (1995). Cryptanalysis of harari’s i<strong>de</strong>ntification scheme. In Boyd, C., editor, IMA<br />
Conf., volume 1025 of Lecture Notes in Computer Science, pages 264–269. Springer.<br />
106
Véron, P. (1996). Improved i<strong>de</strong>ntification schemes based on error-correcting co<strong>de</strong>s. Appl.<br />
Algebra Eng. Commun. Comput., 8(1):57–69.<br />
Wagner, D. (2002). A generalized birthday problem. In Yung, M., editor, CRYPTO,<br />
volume 2442 of Lecture Notes in Computer Science, pages 288–303. Springer.<br />
107
Obtaining Efficient Fully Simulatable Oblivious Transfer from<br />
General Assumptions<br />
Bernardo M. David 1 , An<strong>de</strong>rson C. A. Nascimento 1 , Rafael Tonicelli 1<br />
1 Department of Electrical Engineering, University of Brasilia.<br />
Campus Universitario Darcy Ribeiro,Brasilia, CEP: 70910-900, Brazil<br />
bernardo.david@re<strong>de</strong>s.unb.br, andclay@ene.unb.br, tonicelli@re<strong>de</strong>s.unb.br<br />
Abstract. We introduce a general construction of fully simulatable oblivious<br />
transfer based on lossy encryption. Furthermore, we extend the common <strong>de</strong>finition<br />
of lossy encryption by introducing the notion of computationally lossy<br />
encryption. If the cryptosystem used is computationally lossy, our general construction<br />
yields oblivious transfer protocols with computational security for both<br />
parties. Otherwise, when regular statistically lossy cryptosystems are employed<br />
in this construction, it yields oblivious transfer protocols with statistical security<br />
for the sen<strong>de</strong>r. The construction introduced in this paper is realizable from rerandomizable,<br />
homomorphic and lossy cryptosystems in general. Thus, it yields<br />
specific constructions based on different assumptions, such as DDH, LWE and<br />
McEliece. Moreover, it proves the equivalence of fully simulatable oblivious<br />
transfer and lossy encryption.<br />
1. Introduction<br />
Oblivious transfer (OT), a cryptographic primitive introduced by Rabin [Rabin 1981], is<br />
of great importance in the <strong>de</strong>sign of secure two-party and multiparty computation protocols.There<br />
exist many variants of OT, each one suitable for a given kind of application. In<br />
the present work, we concentrate ourselves on a variant called one-out-of-two oblivious<br />
transfer, <strong>de</strong>noted by ( 2<br />
1)<br />
-OT. In this variant, a sen<strong>de</strong>r (Alice) inputs two bits b0 , b 1 and<br />
a receiver (Bob) inputs a choice bit σ. At the end of the protocol, Alice receives nothing<br />
and Bob receives the bit b σ . Loosely speaking, an OT protocol is said to be private<br />
if the sen<strong>de</strong>r learns no information on the receiver’s choice σ, while the receiver gets<br />
information concerning at most one of the sen<strong>de</strong>r’s inputs.<br />
It has been proven that oblivious transfer enjoys a property called completeness,<br />
meaning that any function can be securely computed if the parties are given black-box<br />
access to OT [Kilian 1988]. Since OT serves as a building block for a wi<strong>de</strong> variety of<br />
secure protocols, it is <strong>de</strong>sirable to have OT protocols that achieve a strong notion of security<br />
against an unrestricted adversarial mo<strong>de</strong>l. Regarding the adopted notion of security,<br />
it is of particular interest to <strong>de</strong>sign OT protocols that are fully-simulatable, that is, secure<br />
in the real/i<strong>de</strong>al mo<strong>de</strong>l simulation paradigm. It is a well-known fact that OT protocols<br />
proven secure in the simulation-based paradigm are secure un<strong>de</strong>r sequential composition<br />
and, consequently, can truly be used as building blocks in more complex protocols. Regarding<br />
the adopted adversarial mo<strong>de</strong>l, it is <strong>de</strong>sirable for an OT protocol to be resistant<br />
against a malicious adversary. In contrast to a semi-honest adversary (who follows the<br />
protocol, but may try to acquire more information than it is allowed to know), a malicious<br />
108
adversary may arbitrarily <strong>de</strong>viate from the protocol specifications and, thus, represents a<br />
more powerful adversarial mo<strong>de</strong>l.<br />
In spite of being a fundamental cornerstone in two- and multi-party computation,<br />
there are only a few results of efficient OT constructions that are secure against malicious<br />
adversaries un<strong>de</strong>r the real/i<strong>de</strong>al mo<strong>de</strong>l simulation paradigm without random oracles<br />
[Lin<strong>de</strong>ll 2008, Green and Hohenberger 2007, Camenisch et al. 2007]. In [Camenisch et al. 2007]<br />
the authors introduce constructions based on q-power DDH and q-strong Diffie-Hellman,<br />
which are strong and relatively non-standard assumptions. In [Green and Hohenberger 2007],<br />
a construction based on the Decisional Bilinear Diffie-Hellman assumption is introduced.<br />
The first construction based on standard assumptions is given in [Lin<strong>de</strong>ll 2008], which<br />
introduces protocols based on the DDH assumptions, smooth projective hashing and general<br />
homomorphic cryptosystems (which is an assumption much stronger than lossy encryption,<br />
being realizable un<strong>de</strong>r much more limited number of un<strong>de</strong>rlying computational<br />
assumptions).<br />
1.1. Contributions<br />
In this paper, we present the following significant contributions:<br />
• An efficient fully-simulatable oblivious transfer protocol based on a general assumption:<br />
Lossy Encryption [Hemenway et al. 2009, Bellare et al. 2009]. In this<br />
construction we utilize techniques from the DDH based efficient fully simulatable<br />
protocol presented in [Lin<strong>de</strong>ll 2008]. It is realizable from a broad number of<br />
general assumptions (such as smooth projective hashing and re-randomization),<br />
computational assumptions (such as DDH, LWE) and also the McEliece assumptions<br />
un<strong>de</strong>r the extra assumption of the existence of perfectly binding and perfectly<br />
hiding commitments.<br />
• Our construction proves the equivalence between fully simulatable oblivious transfer<br />
and several flavors of lossy encryption, since the converse is shown in [Hemenway et al. 2009].<br />
• We introduce computationally lossy encryption, which is realizable un<strong>de</strong>r a broa<strong>de</strong>r<br />
number of assumptions than statistically lossy encryption, and show that the proposed<br />
general construction achieves computational security for both parties in the<br />
case that such a cryptosystem is employed.<br />
• We unify all current constructions of efficient fully simulatable oblivious transfer<br />
in the plain mo<strong>de</strong>l, since lossy encryption (computational or statistical) is realizable<br />
un<strong>de</strong>r all of the assumptions previously used to construct fully simulatable<br />
oblivious transfer in the plain mo<strong>de</strong>l, such as: smooth projective hashing rerandomizable<br />
cryptosystems, homomorphic cryptosystems, DDH, q-power DDH,<br />
q-strong Diffie-Hellman and Bilinear Diffie-Hellman.<br />
In summary, the main contribution of this paper is to provi<strong>de</strong> a general construction<br />
for fully-simulatable oblivious transfer based on the sole assumption of lossy encryption<br />
and a property enjoyed by many constructions of such cryptosystems. This construction<br />
is realizable un<strong>de</strong>r several well known computation assumptions, including factorization,<br />
discrete logarithm, lattice and coding theory problems. Hence, it unifies all current<br />
constructions of efficient fully simulatable oblivious transfer in the plain mo<strong>de</strong>l.<br />
109
2. Preliminaries<br />
Hereupon, we will <strong>de</strong>note by x ∈ R D an uniformly random choice of element x over its<br />
domain D; by ⊕ a bit-wise exclusive OR of strings; and by a | b the concatenation of<br />
string a with string b. All logarithms are to the base 2. For a PPT machine A, we use<br />
a $ ← A to <strong>de</strong>note running the machine A and obtaining an output, where a is distributed<br />
according to the internal randomness of A.<br />
If X and Y are families of distributions in<strong>de</strong>xed by a security parameter λ, we<br />
use X ≈ s Y to mean the distributions X and Y are statistically close, i.e., for all polynomials<br />
p and sufficiently large λ, we have ∑ x<br />
|P r[X = x] − P r[Y = x]| < 1. Two<br />
sequences X n , n ∈ N and Y n , n ∈ N of random variables are said to be computationally<br />
indistinguishable, <strong>de</strong>noted by X = c Y , if for every non-uniform probabilistic polynomialtime<br />
distinguisher D there exists a negligible function ɛ(·) such that for every n ∈ N,<br />
| P r[D(X n ) = 1] − P r[D(Y n ) = 1] |< ɛ(n).<br />
2.1. Real/I<strong>de</strong>al Mo<strong>de</strong>l Simulation Paradigm<br />
The real/i<strong>de</strong>al mo<strong>de</strong>l paradigm has been extensively used to analyse the security of protocols<br />
un<strong>de</strong>r sequential composition. In this mo<strong>de</strong>l, security is analysed by comparing real<br />
protocol execution with an i<strong>de</strong>al execution. In the i<strong>de</strong>al execution, the parties send their<br />
private inputs to a trusted party that computes the <strong>de</strong>sired functionality through confi<strong>de</strong>ntial<br />
and authenticated channels. After receiving the inputs, the trusted party computes the<br />
function and returns the output assigned to each party. In the real execution, the parties<br />
interact directly through the protocol. Intuitively, if all attacks feasible in the real mo<strong>de</strong>l<br />
are also feasible in the i<strong>de</strong>al mo<strong>de</strong>l, the protocol is consi<strong>de</strong>red secure.<br />
I<strong>de</strong>al Mo<strong>de</strong>l Execution. An i<strong>de</strong>al ( 2<br />
1)<br />
-OT functionality is formally <strong>de</strong>fined as function<br />
f with two inputs and one output. The sen<strong>de</strong>r Alice inputs two bits (b 0 , b 1 ), while the<br />
receiver Bob inputs a bit σ. After the protocol is run, Alice receives no output (<strong>de</strong>noted by<br />
the empty string λ), and Bob receives b σ . This is <strong>de</strong>noted as: f : {0, 1} 2 ×{0, 1} → {0, 1},<br />
such that f((b 0 , b 1 ), σ) = (λ, m σ ).<br />
Consi<strong>de</strong>ring two two parties P a (Alice) and P b (Bob) that have access to a trusted<br />
third party T , the i<strong>de</strong>al oblivious transfer functionality is <strong>de</strong>scribed bellow.<br />
I<strong>de</strong>al OT Execution<br />
Input generation. Party P a is activating upon receiving a pair (b 0 , b 1 ) ∈ {0, 1} 2<br />
and party P b is activated upon receiving a bit σ.<br />
Transmission of inputs to T . An honest participant sends its unaltered output to<br />
the trusted party T . A malicious participant may abort (sending ⊥ to T ) or send any other<br />
input to T .<br />
Output computation by T . If the functionality T receives ⊥ from any of the<br />
parties, then it sends ⊥ to both parties and halts. Else, upon receiving (b ′ 0, b ′ 1) from P a<br />
and σ ′ from P b , T sends b ′ σ ′ to party P b and halts.<br />
Outputs. An honest party always outputs the message as received from T (⊥ or<br />
nothing in the case of P a , and ⊥ or b ′ σ ′ in the case of P b. A corrupted party can output an<br />
arbitrary PPT function of its initial input and the message obtained from the trusted party.<br />
110
Let f an i<strong>de</strong>al oblivious transfer functionality and let B = (B 1 , B 2 ) <strong>de</strong>note<br />
an admissible pair (i.e. at least one of the parties is honest) of non-uniform probabilistic<br />
expected polynomial-time machines (representing parties in the i<strong>de</strong>al mo<strong>de</strong>l).<br />
The joint execution of f un<strong>de</strong>r B in the i<strong>de</strong>al mo<strong>de</strong>l on inputs ((b 0 , b 1 ), σ), <strong>de</strong>noted by<br />
IDEAL f,B ((b 0 , b 1 ), σ), is <strong>de</strong>fined as the resulting output pair and protocol transcript obtained<br />
by B 1 and B 2 after the i<strong>de</strong>al execution.<br />
Real Mo<strong>de</strong>l Execution. for this execution, no trusted party is available and the parties<br />
interact directly. A corrupted party may adopt any arbitrary strategy implementable by<br />
non-uniform PPT machines. Let π <strong>de</strong>note a two-party protocol and let A = (A 1 , A 2 )<br />
<strong>de</strong>note a pair of non-uniform PPT machines (representing parties in the real mo<strong>de</strong>l).<br />
The joint execution of π un<strong>de</strong>r A in the real mo<strong>de</strong>l on inputs ((b 0 , b 1 ), σ), <strong>de</strong>noted by<br />
REAL π,A ((b 0 , b 1 ), σ), is <strong>de</strong>fined as the resulting output pair and protocol transcript obtained<br />
by A 1 and A 2 after the protocol execution.<br />
Adversarial Mo<strong>de</strong>l. In this paper, we consi<strong>de</strong>r the malicious adversarial mo<strong>de</strong>l, where<br />
a dishonest party may arbitrarily disrupt the protocol execution (for instance, a malicious<br />
party is allowed to <strong>de</strong>viate from the protocol). Additionally, we assume the static corruption<br />
mo<strong>de</strong>l, where parties have fixed a behavior throughout protocol execution.<br />
Enlightened by the previous <strong>de</strong>finitions, we can now formalize the notion of securely<br />
implementing an OT protocol in the simulation-based paradigm.<br />
Definition 1. Consi<strong>de</strong>r an i<strong>de</strong>al OT functionality f and a two-party protocol π in the real<br />
mo<strong>de</strong>l. The protocol π is said to securely implement an OT protocol if for every pair of<br />
admissible non-uniform PPT machines A = (A 1 , A 2 ) for the real mo<strong>de</strong>l, there exists<br />
a pair of admissible non-uniform probabilistic expected polynomial-time machines B =<br />
(B 1 , B 2 ) for the i<strong>de</strong>al mo<strong>de</strong>l, such that for every b 0 , b 1 ∈ {0, 1} and every σ ∈ {0, 1},<br />
{<br />
}<br />
IDEAL f,B (n, (b 0 , b 1 ), σ) ≡ c REAL π,A (n, (b 0 , b 1 ), σ)<br />
In or<strong>de</strong>r to achieve constant-round protocols it is necessary to allow the i<strong>de</strong>al adversary<br />
and simulators to run in expected polynomial time [Barak and Lin<strong>de</strong>ll 2004].<br />
3. Lossy Encryption<br />
Lossy encryption [Hemenway et al. 2009, Bellare et al. 2009] expands on the <strong>de</strong>finition<br />
of Dual Mo<strong>de</strong> Encryption [Peikert et al. 2008], a type of cryptosystem with two types of<br />
public keys, which specify two mo<strong>de</strong>s of operation: a messy mo<strong>de</strong> and a <strong>de</strong>cryption mo<strong>de</strong>.<br />
In the <strong>de</strong>cryption mo<strong>de</strong>, the cryptosystem behaves normally and it is possible to <strong>de</strong>crypt a<br />
message encrypted with a given public key using the corresponding secret key. However,<br />
in the messy mo<strong>de</strong>, the encrypted information is statistically lost.<br />
A lossy cryptosystem is <strong>de</strong>fined as a type of cryptosystem with two types of public<br />
keys, injective and lossy keys, which specify different results of encryption. If injective<br />
keys are used, the cryptosystem behaves regularly (correctly <strong>de</strong>crypting ciphertexts with<br />
the right secret key) while in the lossy mo<strong>de</strong>, the ciphertexts generated by the encryption<br />
algorithm are in<strong>de</strong>pen<strong>de</strong>nt from the plaintext messages,causing information to be statistically<br />
lost. It is also required that lossy keys are indistinguishable from injective keys by<br />
efficient adversaries.<br />
111
It has been shown that it is possible to obtain lossy cryptosystems from oblivious<br />
transfer, re-randomization and smooth projective hashing [Hemenway et al. 2009]. Thus,<br />
our construction of fully simulatable oblivious transfer based on lossy encryption proves<br />
that oblivious transfer and lossy encryption are equivalent.<br />
We now present a formal <strong>de</strong>finition of Lossy Encryption similar to the <strong>de</strong>finition<br />
given in [Hemenway et al. 2009]:<br />
Definition 2. A lossy public-key encryption scheme is a tuple (G, E, D) of efficient algorithms<br />
such that<br />
• G(1 λ , inj) outputs keys (pk inj , sk inj ), keys generated by G(1 λ , inj) are called injective<br />
keys.<br />
• G(1 λ , lossy) outputs keys (pk lossy , sk lossy ), keys generated by G(1 λ , lossy) are called<br />
lossy keys.<br />
E(pk, m) is an encryption algorithm that takes as input a public key and a plain-text<br />
message, outputting a ciphertext.<br />
D(sk, c) is a <strong>de</strong>cryption algorithm that takes as input a secret key and ciphertext, outputting<br />
a plain-text message.<br />
Additionally, the algorithms must satisfy the following properties:<br />
• Correctness on injective keys. For all plaintexts x ∈ X,<br />
[<br />
]<br />
P r (pk inj , sk inj ) ← $ G(1 λ , inj); r ← $ coins(E) : D(sk inj , E(pk inj , x, r)) = x = 1<br />
• Indistinguishability of keys. In lossy mo<strong>de</strong>, public keys are computationally indistinguishable<br />
from those in the injective mo<strong>de</strong> given no previous information.<br />
Specifically, if proj : (pk, sk) → pk is the projection map, then<br />
{<br />
proj(G(1 λ , inj)) } c<br />
≈<br />
{<br />
proj(G(1 λ , lossy)) }<br />
• Lossiness of lossy keys. If (pk lossy , sk lossy ) ← $ G(1 λ , lossy) , then for all x 0 , x 1 ∈<br />
X, the statistical distance between the distributions E(pk lossy , x 0 , R) and E(pk lossy , x 1 , R)<br />
is negligible in λ.<br />
• Openability. If(pk lossy , sk lossy $<br />
) ← G(1 λ $<br />
, lossy), and r ← coins(E) , then for<br />
all x 0 , x 1 ∈ X with overwhelming probability, there exists r ′ ∈ coins(E) such<br />
that E(pk lossy , x 0 , r) = E(pk lossy , x 1 , r ′ ). In other words, there is an (unboun<strong>de</strong>d)<br />
algorithm opener that can open a lossy ciphertext to any arbitrary plaintext with<br />
all but negligible probability.<br />
Additionally, we require that there exists an efficient algorithm that distinguishes<br />
between lossy and injective public keys given the corresponding secret key. Such algorithm<br />
is formally <strong>de</strong>noted as:<br />
• KD(sk, pk) is a PPT algorithm that receives as input a key pair (sk, pk) and outputs<br />
0 if the public key is lossy. Otherwise, it outputs 1.<br />
This property is valid for many flavors of lossy encryption such as the general constructions<br />
based on re-randomization and smooth projective hashing [Hemenway et al. 2009].<br />
112
However, for the sake of brevity, we will give formal proof only for the re-randomization<br />
based construction, which is realized by many un<strong>de</strong>rlying computational assumptions.<br />
The algorithm for the smooth projective hashing based construction follows trivially from<br />
the fact that the key generation algorithm outputs an empty secret key if a lossy public<br />
key is generated.<br />
3.1. Computationally Lossy Encryption<br />
In the present work, we also consi<strong>de</strong>r a variation of common statistically lossy encryption<br />
which we call computationally lossy encryption. In a computationally lossy cryptosystem,<br />
the distribution of ciphertexts generated un<strong>de</strong>r a lossy key is computationally<br />
indistiguishable from the uniform distribution of ciphertexts (i.e. information is lost only<br />
computationally). Such cryptosystems preserve all properties of statistically lossy cryptosystems<br />
but the lossiness of key, which in this case is computational:<br />
• Lossiness of lossy keys. If (pk lossy , sk lossy ) $ ← G(1 λ , lossy) , then for all x 0 , x 1 ∈<br />
X, the distributions E(pk lossy , x 0 , R) and E(pk lossy , x 1 , R) are computationally indistinguishable<br />
in λ.<br />
Computationally lossy encryption is interesting since it yields an OT protocol with<br />
computational security for both parties, a fact that has been previously observed only in<br />
[Dowsley et al. 2008], which is not secure un<strong>de</strong>r sequential composition. Furthermore,<br />
such a construction may be realized un<strong>de</strong>r a broa<strong>de</strong>r number of assumptions than statistically<br />
lossy encryption allows. For example, it can be trivially obtained un<strong>de</strong>r the McEliece<br />
assumptions using the techniques in [Dowsley et al. 2008] and [Hemenway et al. 2009].<br />
Perhaps the re-randomization techniques in [David et al. 2010] can also be applied to obtain<br />
a similar primitive.<br />
3.2. A construction based on Re-Randomization<br />
We now recall a construction of a IND-CPA secure statistically (resp. computationally)<br />
lossy cryptosystem from a statistically (resp. computationally) re-randomizable cryptosystem<br />
which is given and proven in [Hemenway et al. 2009]. Furthermore, we show<br />
that it is possible to construct a public key distinguishing algorithm for this construction.<br />
A cryptosystem is called statistically (resp. computationally) re-randomizable if,<br />
given a ciphertext c and a public key, it is possible to re-randomize c obtaining a new valid<br />
chipertext c ′ which encrypts the same plain-text message while being statistically (resp.<br />
computationally) indistinguishable from the original c. Although different <strong>de</strong>finitions of<br />
re-randomizable cryptosystems exist, we consi<strong>de</strong>r a <strong>de</strong>finition similar to the one given in<br />
[Hemenway et al. 2009].<br />
Notice that it is possible to obtain re-randomizable cryptosystems from homomorphic<br />
cryptosystems, DDH, q-power DDH, q-strong Diffie-Hellman and Bilinear Diffie-<br />
Hellman. Hence, our construction unifies all previous constructions of fully simulatable<br />
oblivious transfer, which are based on these assumptions and also on smooth projective<br />
hashing (that also yields lossy encryption).<br />
Definition 3. Let (Gen, Enc, Dec, ReRand) be a statistically (resp. computationally) rerandomizable<br />
IND-CPA secure public-key cryptosystem, we create statistically (resp. computational)<br />
(G inj , G lossy , E, D) as follows:<br />
113
• Key Generation: G(1 λ , inj) generates a pair (pk, sk) ← Gen(1 λ ). Then G(1 λ , inj)<br />
generates K 0 = Enc(pk, 0), K 1 = Enc(pk, 1). G(1 λ , inj) returns (pk, sk) =<br />
((pk, K 0 , K 1 ), sk).<br />
G(1 λ , lossy) runs Gen(1 λ ), generating a pair (pk, sk). Then, it generates K 0 =<br />
Enc(pk, 0), K 1 = Enc(pk, 0). G(1 λ , lossy) returns (pk, sk) = ((pk, K 0 , K 1 ), sk).<br />
• Encryption: E(pk, b) = ReRand(pk, K b ) for b ∈ {0, 1}<br />
• Decryption: D(sk, c), simply outputs Dec(sk, c).<br />
An algorithm that distinguishes lossy public keys from injective public keys given<br />
the corresponding secret key can be constructed as follows:<br />
• KD(sk, pk): First computes test ciphertext c = E(pk, 1). Then output whatever<br />
D(sk, c) outputs.<br />
It is clear that, if the public key pk is injective, this algorithm will output 1, which<br />
is the information encrypted into the ciphertext. Otherwise, if the public key is lossy, this<br />
algorithm will output 0, since the ciphertext generated by E is always an encryption of 0<br />
if the public key pk is lossy. Thus, the proposed algorithm KD successfully distinguishes<br />
lossy and injective public keys given the corresponding secret key.<br />
4. The Protocol<br />
The protocol introduced in this section was inspired by the fully simulatable protocol<br />
for Oblivious Transfer un<strong>de</strong>r the DDH assumptions presented in [Lin<strong>de</strong>ll 2008]. In this<br />
protocol, the sen<strong>de</strong>r (Alice) inputs a pair of bits b 0 , b 1 and the receiver (Bob) inputs a<br />
choice bit σ, Bob receives the bit b σ and Alice receives nothing (⊥). In the end of the<br />
protocol Bob must not have learnt anything about the other bit b 1−σ and Alice must not<br />
have learnt anything about Bob’s choice bit σ.<br />
Apart from the IND-CPA secure lossy cryptosystem (Gen, Enc, Dec), we also assume<br />
the existence of a perfectly hiding commitment scheme Com h and a perfectly binding<br />
commitment scheme Com b . Notice that such commitments can be obtained from the<br />
DDH assumptions (and its variations). Moreover, the smooth projective hashing and homomorphic<br />
encryption based constructions also rely on such commitment schemes. Thus,<br />
our construction unifies the previous fully simulatable oblivious transfer protocols based<br />
on such assumptions.<br />
The protocol is secure against static malicious adversaries, in other words, the parties<br />
may <strong>de</strong>viate from the protocol but must have their behavior fixed before the execution<br />
begins, behaving maliciously or honestly during the whole execution.<br />
1. For i = 1, . . . , l, the receiver Bob chooses a random bit σ i ∈ R {0, 1} and runs<br />
G(1 n , inj), obtaining l injective key pairs (pk inj<br />
i , sk inj<br />
i ). It also runs G(1 n , lossy),<br />
obtaining l lossy key pairs (pk lossy<br />
i , sk lossy<br />
i ).For each bit σ i , Bob generates a pair<br />
of public keys (γ σ i<br />
i , γ 1−σ i<br />
i ) such that γ σ i<br />
i = pk inj<br />
i and γ 1−σ i<br />
i = pk lossy<br />
i . Bob sends<br />
all of the pairs 〈(γ1, 0 γ1), 1 . . . , (γl 0, γ1 l )〉 to Alice.<br />
2. Coin tossing:<br />
(a) Alice chooses a random s ∈ R {0, 1} l and sends Com h (s) to Bob.<br />
(b) Bob chooses a random s ′ ∈ R {0, 1} l and sends Com b (s ′ ) to Bob.<br />
(c) Alice and Bob send <strong>de</strong>commitments to Com h (s) and Com b (s ′ ) respectively,<br />
and set r = s ⊕ s ′ . Denote r = r 1 , . . . , r l .<br />
114
3. For every i for which r i = 1, Bob sends (sk inj<br />
i , sk lossy<br />
i ) to Alice. In addition, for<br />
every j for which r j = 0, Bob sends a ”reor<strong>de</strong>ring” of γj 0 and γj 1 such that, in the<br />
resulting tuples (γj 0 , γj 1 ), γj<br />
σ is an injective public key and γ 1−σ<br />
j is a lossy public<br />
key. This reor<strong>de</strong>ring is a bit such that if it equals 0 then the tuples are left as is,<br />
and if it equals 1 then γj 0 and γj 1 are interchanged.<br />
4. Alice checks that, for every i for which r i = 1 it received a valid secret key pair<br />
(sk inj<br />
i , sk lossy<br />
i ), such that exactly one of the corresponding public keys is injective<br />
and exactly one is lossy. Furthermore, it checks that exactly one of the public keys<br />
(γi 0 , γi 1 ) received is injective and exactly one of the public keys is lossy by running<br />
KD(sk inj<br />
i , γi 0 ) and KD(sk inj<br />
i , γi 1 ). If any of the checks fail, Alcie halts and outputs<br />
⊥. Otherwise it proceeds to the next step.<br />
5. For each j for which r j = 0 <strong>de</strong>note each (γ 0 j , γ 1 j ) as (Υ 0 n, Υ 1 n) for n = 1, . . . , l ′ ,<br />
where l ′ is the total number of j for which r j = 0. Employing a reduction given in<br />
[Damgård et al. 1999], Alice chooses n random bits b 0,1 , . . . , b 0,n and n random<br />
bits b 1,1 , . . . , b 1,n such that b 0 = b 0,1 ⊕ . . . ⊕ b 0,n and b 1 = b 1,1 ⊕ . . . ⊕ b 1,n .<br />
For each pair of bits b 0,n , b 1,n and each (Υ 0 n, Υ 1 n) Alice computes a random bit<br />
µ n ∈ R {0, 1} and the encryption of b •,n ⊕ µ n for each bit in the pair, obtaining<br />
ˆb0,n = E(Υ 0 n, b 0,n ⊕ µ n ) and ˆb 1,n = E(Υ 1 n, b 1,n ⊕ µ n ). Alice sends the bits µ n and<br />
the pairs (ˆb 0 n, ˆb 1 n) to Bob.<br />
6. For each pair of bit ˆb σ,n and bit µ n Bob computes b σ,n = D(sk inj<br />
n , ˆb σ,n ) ⊕ µ n .<br />
Finally, bob computes b σ = b σ,1 ⊕ . . . ⊕ b σ,n , obtaining b σ .<br />
Correctness: Before proceeding to the proof of security, we show that the protocol<br />
above is correct, in the sense that, if both Alice and bob are honest, the correct<br />
output is obtained. First, observe that in the reor<strong>de</strong>red pairs obtained after the coin tossing,<br />
Υ σ n is an injective key, enabling an honest Bob to extract a bit encrypted with it<br />
are lossy, which makes it im-<br />
Also, since<br />
ˆbσ,n = E(Υ σ n, b σ,n ⊕ µ n ) for a random value of µ n , Bob is not able to obtain the original<br />
value of b σ,n without first obtaining the corresponding µ n .<br />
(i.e., b = D(skn<br />
inj , E(Υ σ n, b))). However, the keys Υ 1−σ<br />
n<br />
possible for Bob to obtain the value of a bit encrypted with those keys.<br />
Given that Alice and Bob are honest, it is possible for Bob to obtain the bit b σ<br />
since, based on the facts stated above, it is possible to obtain the value of each bit b σ,n<br />
computing b σ,n = D(skn<br />
inj , ˆb σ,n )⊕µ n after receiving the correct values of µ n and ˆb σ,n from<br />
Alice. In or<strong>de</strong>r to obtain the original bit b σ , Bob employs the reduction given and proven<br />
in [Damgård et al. 1999] computing b σ = ⊕ n i=1b σ,i , correctly yielding: b σ = (b σ,1 ⊕ µ 1 ) ⊕<br />
. . . ⊕ (b σ,n ⊕ µ n ).<br />
Notice that, if statistically lossy encryption is employed, the resulting protocol<br />
offers statistical security for the sen<strong>de</strong>r, since the ciphertexts ˆb 1−σ,n statistically loose<br />
information about the bits corresponding to ˆb 1−σ . On the other hand, if computationally<br />
lossy encryption is employed, the resulting protocol offers computational security for<br />
the sen<strong>de</strong>r, since the ciphertexts ˆb 1−σ,n computationally loose information about the bits<br />
corresponding to ˆb 1−σ . The security for the receiver is computational in both cases, since<br />
it relies on the computational indistinguishability of lossy and injective keys.<br />
115
4.1. Simulator for the case Alice (sen<strong>de</strong>r) is corrupted<br />
In or<strong>de</strong>r to prove the security of the proposed protocol we adapt the simulators given in<br />
[Lin<strong>de</strong>ll 2008] for the case where the sen<strong>de</strong>r is corrupted and the case the receiver is corrupted.<br />
Notice that the resulting simulators have the same running time of the simulators<br />
in [Lin<strong>de</strong>ll 2008], since the steps involved are essentially the same. Let A 1 be a nonuniform<br />
probabilistic polynomial-time real adversary that controls Alice. We construct a<br />
non-uniform probabilistic expected polynomial-time i<strong>de</strong>al-mo<strong>de</strong>l adversary/simulator S 1 .<br />
S 1 uses rewinding in or<strong>de</strong>r to ensure that all of the ”checked” public key pairs are valid<br />
(i.e.,exactly one of them is lossy), whereas both keys contained in the ”unchecked” public<br />
key pairs are injective. This enables it to obtain both messages input by A 1 into the<br />
protocol. S 1 then sends these inputs to the trusted party, and the honest party Bob in the<br />
i<strong>de</strong>al mo<strong>de</strong>l will receive the same message that it would have received in a real execution<br />
with A 1 (or more accurately, a message that is computationally indistinguishable from<br />
that message).<br />
We now <strong>de</strong>scribe S 1 formally. Upon input 1 n and (b 0 , b 1 ), the machine S 1 invokes<br />
A 1 upon the same input and works as follows:<br />
1. S 1 chooses a random r ∈ R 0, 1 l and generates public key pairs (γ1, 0 γ1), 1 . . . , (γl 0, γ1 l )<br />
with the following property:<br />
(a) For every i for which r i = 1, S 1 constructs (γi 0 and γi 1 ) like an honest Bob.<br />
It runs G(1 n , inj), obtaining l injective key pairs (pk inj<br />
i , sk inj<br />
i ). It also runs<br />
G(1 n , lossy), obtaining l lossy key pairs (pk lossy<br />
i , sk lossy<br />
i ). S 1 generates a<br />
pair of public key (γ σ i<br />
i , γ 1−σ i<br />
i ) such that γ σ i<br />
i = pk inj<br />
i and γ 1−σ i<br />
i = pk lossy<br />
i ,<br />
for random bits σ i ∈ R {0, 1}.<br />
(b) For every j for which r j = 0, S 1 constructs (γj 0 , γj 1 ) such that both γj 0 and<br />
γj 1 are injective keys.<br />
S 1 hands the public key pairs to A 1 .<br />
2. Simulation of the coin tossing: S 1 simulates the coin tossing so that the result is<br />
r, as follows:<br />
(a) S 1 receives a commitment c h from A 1 .<br />
(b) S 1 chooses a random s ′ ∈ R {0, 1} l and hands c b = Com h (s ′ ) to A 1 .<br />
(c) If A 1 does not send a valid <strong>de</strong>commitment to c h , then S 1 simulates Bob<br />
aborting and sends ⊥ to the trusted party. Then S 1 outputs whatever A 1<br />
outputs and halts. Otherwise, let s be the <strong>de</strong>committed value. S 1 proceeds<br />
as follows:<br />
i. S 1 sets s ′ = r ⊕ s, rewinds A 1 , and hands it Com b (s ′ ).<br />
ii. If A 1 <strong>de</strong>commits to s, then S 1 proceeds to the next step. If A 1<br />
<strong>de</strong>commits to a value ˜s ≠ s, then S 1 outputs fail. Otherwise, if it<br />
does not <strong>de</strong>commit to any value, S 1 returns to the previous step and<br />
tries again until A 1 does <strong>de</strong>commit to s. (We stress that in every<br />
attempt, S 1 hands A 1 a commitment to the same value s ′ . However,<br />
the randomness used to generate the commitment Com b (s ′ ) is<br />
in<strong>de</strong>pen<strong>de</strong>nt each time.) 1<br />
1 Similarly to the DDH based protocol of [Lin<strong>de</strong>ll 2008], this strategy by S 1 does not actually guarantees<br />
that it runs in expected polynomial-time. Fortunately this issue is solved in [Lin<strong>de</strong>ll 2008] and we refer the<br />
rea<strong>de</strong>r to that work for <strong>de</strong>tailed information.<br />
116
3. Upon receiving a valid <strong>de</strong>commitment to s from A 1 , simulator S 1 <strong>de</strong>commits to<br />
A 1 , revealing s ′ . (Note that r = s ⊕ s ′ .)<br />
4. For every i for which r i = 1, simulator S 1 hands A 1 the secret key pairs (sk inj<br />
i<br />
, sk lossy<br />
i )<br />
correspon<strong>de</strong>nt to the public keys (γ 0 i , γ 1 i ). In addition, S 1 hands A 1 a random reor<strong>de</strong>ring<br />
of the pairs (γ 0 j , γ 1 j ) for every j for which r j = 0.<br />
5. If A 1 does not reply with a valid message, then S 1 sends ⊥ to the trusted party,<br />
outputs whatever A 1 outputs and halts. Otherwise, it receives the bits µ n and a<br />
series of pairs (ˆb 0 n, ˆb 1 n). S 1 then follows the instructions of Bob for obtaining both<br />
b 0 and b 1 . Unlike an honest Bob, it <strong>de</strong>crypts both ˆb 0 n and ˆb 1 n with the injective secret<br />
keys corresponding to (Υ 0 n, Υ 1 n), obtaining a series of pairs (b 0,n , b 1,n ). It then<br />
computes b 0 = (b 0,1 ⊕µ 1 )⊕. . .⊕(b 0,n ⊕µ n ) and b 1 = (b 1,1 ⊕µ 1 )⊕. . .⊕(b 1,n ⊕µ n ).<br />
S 1 sends the pair (b 0 , b 1 ) to the trusted party as the first party’s input, outputs<br />
whatever A 1 outputs and halts.<br />
Theorem 4. The joint output distribution of S 1 and an honest Bob in an i<strong>de</strong>al execution is<br />
computationally indistinguishable from the output distribution of A 1 and an honest Bob<br />
in a real execution.<br />
Proof. In or<strong>de</strong>r to prove this theorem we adapt the proof given in [Lin<strong>de</strong>ll 2008]. Notice<br />
that the view of A 1 in the simulation with S 1 is indistinguishable from its view in a real<br />
execution. The sole difference in this view is due to the fact that the public keys γ 0 j and<br />
γ 1 j for which r j = 0 are both injective public keys.<br />
The only other difference would be in the coin tossing phase (and the rewinding).<br />
However, since the commitment sent by A 1 is binding and since Bob generates its commitment<br />
after receiving A 1 ’s commitment, it is clear that the result of the coin tossing in<br />
a real execution and in the simulation with S 1 are statistically close to uniform (where the<br />
only difference is due to the negligible probability that A 1 will break the computational<br />
binding property of the commitment scheme.) In the simulation by S 1 , the outcome is<br />
always uniformly distributed, assuming that S 1 does not output fail. Since S 1 outputs fail<br />
when A 1 breaks the computational binding of the commitment scheme, this occurs with at<br />
most negligible probability (a rigorous analysis is given in [Goldreich and Kahan 1996]).<br />
Thus, the joint distribution of the coin tossing results in a real execution and in the simulation<br />
with S 1 are statistically close.<br />
Therefore, the only remaining difference lies in the generation of public keys γ 0 j<br />
and γ 1 j . Indistinguishability follows intuitively from the <strong>de</strong>finition of lossy encryption<br />
(i.e. lossy public keys are computationally indistinguishable from injective public keys).<br />
This is formally proven by constructing a machine D that distinguishes many injective<br />
keys from many lossy keys, which implies in breaking the lossy key indistinguishability<br />
property of the lossy cryptosystem. D receives a set of public keys and runs in exactly<br />
the same way as S 1 but constructs the γ 0 j and γ 1 j public keys (for which r j = 0) in such a<br />
way that one is injective and the other is from its input, in random or<strong>de</strong>r. Furthermore, it<br />
provi<strong>de</strong>s the reor<strong>de</strong>ring so that all of the injective keys it generates are associated with σ<br />
and all of the ones it receives externally are associated with 1 − σ (we assume that D is<br />
given the input σ of Bob). Note that, if D receives a set of injective keys, then the view<br />
of A 1 is exactly the same as in the simulation with S 1 (because all the keys are injective).<br />
Otherwise, if D receives a set of lossy keys, then the view of A 1 is exactly the same as<br />
in a real execution (because only the keys associated with σ are injective). This shows<br />
117
that the output of A 1 in a real execution and the output of S 1 in an i<strong>de</strong>al execution are<br />
indistinguishable (recall that S 1 outputs whatever A 1 outputs).<br />
However,it is necessary to show this for the joint distribution of the output of A 1<br />
(or S 1 ) and an honest Bob. First, recall that Bob receives m σ as output, where σ is the<br />
honest Bob’s input. Next, assume that there exists a polynomial-time distinguisher D ′<br />
that distinguishes between the real and i<strong>de</strong>al distributions with non-negligible probability.<br />
To complete this proof we construct another distinguisher D that distinguishes injective<br />
keys from lossy keys. D receives Bob’s input σ and a set of keys that are either injective<br />
or lossy. D then works exactly as above (i.e., constructing the public keys γj 0 and γj 1 so<br />
that in the reor<strong>de</strong>ring step, all the γj<br />
σ keys are those it generated itself and all the γ 1−σ<br />
j<br />
tuples are those it received as input). D is able to <strong>de</strong>crypt each ˆb σ,n and obtain m σ , since<br />
it generated all of the γj σ keys. Machine D then does this, and runs D ′ on the output of A 1<br />
and the message m σ (which is the output that an honest Bob would receive). Finally, D<br />
outputs whatever D ′ does. If D receives lossy keys, then the output distribution generated<br />
is exactly the same of a real execution between A 1 and Bob. On the contrary, if it receives<br />
injective keys, the output distribution is exactly the same of an i<strong>de</strong>al execution with S 1 .<br />
(Notice that the distribution over the γ public keys generated by D with knowledge of σ is<br />
i<strong>de</strong>ntical to the distribution generated by S 1 without knowledge of σ. The reason for this<br />
is that when all the keys are injective, their or<strong>de</strong>ring makes no difference.) We conclu<strong>de</strong><br />
that D distinguishes lossy and injective public keys with non-negligible probability, in<br />
contradiction to the <strong>de</strong>finition of lossy encryption. Thus, the REAL and IDEAL output<br />
distributions are computationally indistinguishable.<br />
The last step is to prove that S 1 runs in expected polynomial-time. However, as in<br />
the protocols given in [Lin<strong>de</strong>ll 2008] this is not true. Fortunately, this can be fixed by a direct<br />
application of the techniques proposed in [Lin<strong>de</strong>ll 2008] and [Goldreich and Kahan 1996],<br />
and we refer the rea<strong>de</strong>r to these works for a <strong>de</strong>tailed analysis. It is shown that these<br />
techniques yield a simulator that is guaranteed to run in expected polynomial time. Furthermore,<br />
the output of the simulator is only negligibly far from the original (simplified)<br />
strategy <strong>de</strong>scribed in this work. Thus, after applying these techniques, our simulator runs<br />
in expected polynomial time, with the result being that the output in a simulation is only<br />
negligibly different from the output in a real execution.<br />
4.2. Simulator for the case Bob (receiver) is corrupted<br />
Once again we base our simulator and proof on the techniques proposed in [Lin<strong>de</strong>ll 2008].<br />
Let A 2 be any non-uniform probabilistic polynomial-time adversary controlling Bob, we<br />
construct a non-uniform probabilistic expected polynomial-time simulator S 2 . The simulator<br />
S 2 extracts the bit σ used by A 2 by rewinding it and obtaining the reor<strong>de</strong>ring of<br />
public keys that it had previously opened. Formally, upon input 1 n and σ, the simulator<br />
S 2 invokes A 2 upon the same input and works as follows:<br />
1. S 2 receives a series of public key pairs (γ 0 1, γ 1 1), . . . , (γ 0 l , γ1 l ) from A 2.<br />
2. S 2 hands A 2 a commitment c h = Com h (s) to a random s ∈ R {0, 1} l , receives<br />
back c b , <strong>de</strong>commits to c h and receives A 2 ’s <strong>de</strong>commitment to c b . S 2 then receives<br />
all of the sk i keys from A 2 , for i where r i = 1, and the reor<strong>de</strong>rings for j where<br />
r j = 0. If the pairs (γ 0 i , γ 1 i ) sent by A 2 are not valid (as checked by Alice in the<br />
118
protocol) or A 2 did not send valid <strong>de</strong>commitments, S 2 sends ⊥ to the trusted party,<br />
outputs whatever A 2 outputs, and halts. Otherwise, it continues to the next step.<br />
3. S 2 rewinds A 2 back to the beginning of the coin-tossing, hands A 2 a commitment<br />
˜c h = Com h (˜s) to a fresh random ˜s ∈ R {0, 1} l , receives back some ˜c b , <strong>de</strong>commits<br />
to ˜c h and receives A 2 ’s <strong>de</strong>commitment to ˜c b . In addition, S 2 receives the<br />
(sk inj<br />
i , sk lossy<br />
i ) secret key pairs and reor<strong>de</strong>rings. If any of the pairs (γi 0 , γi 1 ) are<br />
not valid, S 2 repeats this step using fresh randomness each time, until all pairs are<br />
valid.<br />
4. Following this, S 2 rewinds A 2 to the beginning and resends the exact messages of<br />
the first coin tossing (resulting in exactly the same transcript as before).<br />
5. Denote by r the result of the first coin tossing (Step 2 above), and ˜r the result of<br />
the second coin tossing (Step 3 above). If r = ˜r then S 2 outputs fail and halts.<br />
Otherwise, S 2 searches for a value t such that r t = 0 and ˜r t = 1. (Note that by the<br />
<strong>de</strong>finition of the simulation, exactly one of γt 0 and γt 1 is injective. Otherwise, the<br />
values would not be consi<strong>de</strong>red valid.) If no such t exists (i.e., for every t such that<br />
r t ≠ ˜r t it holds that r t = 1 and ˜r t = 0),then S 2 begins the simulation from scratch<br />
with the exception that it must find r and ˜r for which all values are valid (i.e., if<br />
for r the values sent by A 2 are not valid it does not terminate the simulation but<br />
rather rewinds until it finds an r for which the responses of A 2 are all valid).<br />
If S 2 does not start again, we have that it has sk t and can <strong>de</strong>termine which of (γt<br />
0<br />
and γt 1 is injective. Furthermore, since ˜r t = 1, the reor<strong>de</strong>ring that S 2 receives from<br />
A 2 after the coin tossing indicates whether the public key pair is associated with 0<br />
(if γt 0 is injective) or 1 (if γt 1 is injective) . S 2 sets σ = 0 if after the reor<strong>de</strong>ring γt<br />
0<br />
is injective, and sets σ = 1 if after the reor<strong>de</strong>ring γt 1 is injective. (Note that exactly<br />
one of the keys is injective because this is checked in the second coin tossing.)<br />
6. S 2 sends σ to the trusted party and receives back a bit b = b ′ σ. Simulator S 2 then<br />
computes the last message from Alice to Bob honestly, setting b σ = b, b 1−σ ∈ R<br />
{0, 1} and running the instruction used by an honest Alice to compute the last<br />
message. S 2 hands A 2 these messages and outputs whatever A 2 outputs and halts.<br />
Theorem 5. The output distribution of A 2 in a real execution with an honest Alice (with<br />
input (m 0 , m 1 )) is computationally indistinguishable from the output distribution of S 2 in<br />
an i<strong>de</strong>al execution with an honest Alice (with the same input (m 0 , m 1 ))<br />
Proof. First, notice that S 2 outputs fail with probability at most 2 1−l even if r = ˜r in<br />
later rewindings, which may occur if S 2 has to start again from scratch. A <strong>de</strong>tailed analysis<br />
of this probability is given in [Lin<strong>de</strong>ll 2008]. Given this fact, we proceed to show<br />
indistinguishability of the i<strong>de</strong>al and real executions adapting the proof of [Lin<strong>de</strong>ll 2008].<br />
Notice that, if S 2 does not output fail, A 2 views a final transcript consisting of the<br />
first coin tossing (that is distributed exactly as in a real execution) and the last message<br />
from S 2 to A 2 . This message is not honestly generated, since c σ is in<strong>de</strong>ed an encryption<br />
of m σ , but c 1−σ is actually an encryption of an arbitrary value (which is not necessarily of<br />
m 1−σ ). However, it follows from the <strong>de</strong>finition of lossy encryption (specifically from the<br />
lossiness property) that, for any lossy public key γ 1−σ<br />
j , the value encrypted in ˆb 1−σ,n is at<br />
least computationally indistinguishable from a random value in the lossy cryptosystem’s<br />
plaintext space. This implies that the distribution of values ˆb 1−σ,n generated un<strong>de</strong>r a lossy<br />
key from a random plaintext value is computationally indistinguishable from the distribution<br />
of values ˆb 1−σ,n generated from the values m 1−σ . Thus, A 2 ’s view in the execution<br />
119
with S 2 is at least computationally indistinguishable from its view in a real execution with<br />
Alice (the only difference being if S 2 outputs fail).<br />
Note that, if statistically lossy encryption is used, the values ˆb 1−σ,n are uniformly<br />
distributed. Thus, A 2 ’s view in the execution with S 2 is statistically close to its view in a<br />
real execution with Alice (the only difference being if S 2 outputs fail).<br />
It remains to prove that S 2 runs in expected polynomial-time, a fact that follows<br />
directly from the analysis in [Lin<strong>de</strong>ll 2008].<br />
5. Conclusion<br />
In this paper we propose a general construction of efficient fully simulatable oblivious<br />
transfer based on lossy encryption. Our construction can be realized from a multitu<strong>de</strong> of<br />
un<strong>de</strong>rlying primitives and computational assumptions such as smooth projective hashing,<br />
re-randomization, factorization, discrete logarithm and coding theory problems. Additionally,<br />
the proposed protocol essentially unifies known efficient fully simulatable OT<br />
protocols in the plain mo<strong>de</strong>l. Furthermore, this protocol completes the proof that several<br />
flavors of lossy encryption are equivalent to fully simulatable oblivious transfer, since the<br />
converse is proved in [Lin<strong>de</strong>ll 2008] for smooth projective hashing and re-randomization<br />
based constructions.<br />
In or<strong>de</strong>r to obtain our results we introduce the primitive of computationally lossy<br />
encryption, which may be of in<strong>de</strong>pen<strong>de</strong>nt interest to other applications. In this case,<br />
it can be used to obtain a construction of efficient fully simulatable OT based on the<br />
McEliece assumptions, which can be shown to realize computationally lossy encryption<br />
using the techniques of [Dowsley et al. 2008]. However, this construction would still<br />
be based on the assumption that a perfectly hiding commitment scheme and a perfectly<br />
binding commitment scheme exist.<br />
Apart from unveiling new theoretical relations between cryptographic primitives,<br />
our contributions also provi<strong>de</strong> a general framework for constructing efficient fully simulatable<br />
oblivious transfer protocols, which are a central building block in two- and multiparty<br />
computation. However, we have not yet achieved security in the universal composability<br />
framework. As a future work we suggest the creation a of a general unifying<br />
framework for universally composable oblivious transfer realizable un<strong>de</strong>r the same un<strong>de</strong>rlying<br />
computational assumptions as our fully simulatable construction. Moreover, we<br />
point out further investigation of applications for computationally lossy encryption.<br />
References<br />
Barak, B. and Lin<strong>de</strong>ll, Y. (2004). Strict polynomial-time in simulation and extraction.<br />
SIAM J. Comput., 33(4):738–818.<br />
Bellare, M., Hofheinz, D., and Yilek, S. (2009). Possibility and impossibility results for<br />
encryption and commitment secure un<strong>de</strong>r selective opening. In Proceedings of the<br />
28th Annual International Conference on Advances in Cryptology: the Theory and<br />
Applications of Cryptographic Techniques, EUROCRYPT ’09, pages 1–35, Berlin,<br />
Hei<strong>de</strong>lberg. Springer-Verlag.<br />
120
Camenisch, J., Neven, G., and Shelat, A. (2007). Simulatable adaptive oblivious transfer.<br />
In Naor, M., editor, EUROCRYPT, volume 4515 of Lecture Notes in Computer Science,<br />
pages 573–590. Springer.<br />
Damgård, I., Kilian, J., and Salvail, L. (1999). On the (im)possibility of basing oblivious<br />
transfer and bit commitment on weakened security assumptions. In EUROCRYPT’99:<br />
Proceedings of the 17th international conference on Theory and application of cryptographic<br />
techniques, pages 56–73, Berlin, Hei<strong>de</strong>lberg. Springer-Verlag.<br />
David, B. M., Nascimento, A. C. A., and Nogueira, R. B. (2010). Oblivious transfer based<br />
on the mceliece assumptions with unconditional security for the sen<strong>de</strong>r. In X Simposio<br />
Brasileiro <strong>de</strong> Segurança da Informação e <strong>de</strong> Sistemas Computacionais.<br />
Dowsley, R., van <strong>de</strong> Graaf, J., Müller-Qua<strong>de</strong>, J., and Nascimento, A. C. A. (2008). Oblivious<br />
transfer based on the mceliece assumptions. In Safavi-Naini, R., editor, ICITS,<br />
volume 5155 of Lecture Notes in Computer Science, pages 107–117. Springer.<br />
Goldreich, O. and Kahan, A. (1996). How to construct constant-round zero-knowledge<br />
proof systems for np. Journal of Cryptology, 9:167–189. 10.1007/BF00208001.<br />
Green, M. and Hohenberger, S. (2007). Blind i<strong>de</strong>ntity-based encryption and simulatable<br />
oblivious transfer. In Kurosawa, K., editor, ASIACRYPT, volume 4833 of Lecture Notes<br />
in Computer Science, pages 265–282. Springer.<br />
Hemenway, B., Libert, B., Ostrovsky, R., and Vergnaud, D. (2009). Lossy encryption:<br />
Constructions from general assumptions and efficient selective opening chosen ciphertext<br />
security. Cryptology ePrint Archive, Report 2009/088. http://eprint.<br />
iacr.org/.<br />
Kilian, J. (1988). Founding crytpography on oblivious transfer. In STOC ’88: Proceedings<br />
of the twentieth annual ACM symposium on Theory of computing, pages 20–31, New<br />
York, NY, USA. ACM.<br />
Lin<strong>de</strong>ll, A. Y. (2008). Efficient fully-simulatable oblivious transfer. In Proceedings of<br />
the 2008 The Cryptopgraphers’ Track at the RSA conference on Topics in cryptology,<br />
CT-RSA’08, pages 52–70, Berlin, Hei<strong>de</strong>lberg. Springer-Verlag.<br />
Peikert, C., Vaikuntanathan, V., and Waters, B. (2008). A framework for efficient and<br />
composable oblivious transfer. In Wagner, D., editor, Advances in Cryptology –<br />
CRYPTO 2008, volume 5157 of Lecture Notes in Computer Science, pages 554–571.<br />
Springer Berlin / Hei<strong>de</strong>lberg.<br />
Rabin, M. O. (1981). How to exchange secrets by oblivious transfer. Technical Memo<br />
TR-81, Aiken Computation Laboratory, Harvard University.<br />
121
Syndrome-Fortuna: A viable approach for Linux random<br />
number generation<br />
Sérgio Vale Aguiar Campos 1 , Jeroen van <strong>de</strong> Graaf 1 , Daniel Rezen<strong>de</strong> Silveira 1<br />
1 Departamento <strong>de</strong> Ciência da Computação – Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Minas Gerais (UFMG)<br />
Belo Horizonte (MG) – Brazil<br />
Abstract. This work presents a random number generator based on the intractability<br />
of an NP-Complete problem from the area of error-correcting co<strong>de</strong>s.<br />
It uses a non-heuristic approach for entropy collection, taken from the Fortuna<br />
<strong>de</strong>sign philosophy. We implemented the new generator insi<strong>de</strong> the Linux kernel,<br />
providing an alternative system interface for secure random number generation.<br />
1. Introduction<br />
Random number generators are the basis of several cryptographic systems. Its output must<br />
be unpredictable by potential adversaries and should be produced fast and efficiently. The<br />
most common way to achieve this is by using algorithms to mix and expand the outcome<br />
of entropy sources. These algorithms are called pseudo-random number generators<br />
(PRNGs). The quality of these generators and their applicability to protocols and security<br />
applications have been wi<strong>de</strong>ly studied in recent years.<br />
In this work we present a PRNG based on the Fortuna architecture, proposed by<br />
[Ferguson and Schneier, 2003]. Fortuna presents a new scheme for system events collection,<br />
that does not use any heuristics, avoiding entropy estimation problems. Its mixing<br />
function is the AES algorithm, consi<strong>de</strong>red strong and efficient.<br />
The PRNG we propose, called Syndrome-Fortuna, changes the mixing function of<br />
Fortuna, using the syndrome <strong>de</strong>coding algorithm proposed by [Fischer and Stern, 1996].<br />
We consi<strong>de</strong>r this an improvement, since the syndrome problem is known to be NP-<br />
Complete, and has a formal proof of its strength.<br />
We implemented Syndrome-Fortuna insi<strong>de</strong> the Linux kernel version 2.6.30, providing<br />
an user interface for random numbers besi<strong>de</strong>s /<strong>de</strong>v/urandom. As we expected,<br />
our generator is slower than the original Linux random number generator (LRNG). But it<br />
does not use any entropy estimation heuristics and applies a strong and formally proved<br />
algorithm as its core function.<br />
1.1. Randomness concept<br />
Random number generators emerged, initialy, for use in simulations and numerical analysis.<br />
These applications require efficiency and, especially, uniformity. The cryptography<br />
evolution brought a new requirement on PRNGs. Secure applications nee<strong>de</strong>d secret keys,<br />
generated randomly, to allow users to communicate safely. Since then, unpredictability<br />
has become a fundamental requirement for pseudorandom number generators.<br />
The only way to ensure that a generator seed is non-<strong>de</strong>terministic is by using real<br />
sources of randomness. External sources of randomness collect data from presumably<br />
unpredictable events, such as variations in pressure and temperature, ambient noise, or<br />
122
timing of mouse movements and keystrokes. The concept of unpredictability is related<br />
to human inability to predict certain complex phenomena, given its chaotic or quantum<br />
essence.<br />
Before using the collected randomness, however, it is necessary to estimate it. The<br />
goal is to prevent that the internal state of the generator is updated with values potentially<br />
easy to discover. In 1996 a flaw in the random number generator of Netscape browser<br />
allowed that keys used in SSL connections were discovered in about one minute. The<br />
problem, revealed in the work of [Goldberg and Wagner, 1996], was the use of system<br />
time and the process id as sources of randomness. Even when the browser used session<br />
keys of 128 bits, consi<strong>de</strong>red safe, they possessed no more than 47 bits of randomness,<br />
very little to prevent that opponents using brute force could find the key value.<br />
Entropy estimation is one critical point of random number generators <strong>de</strong>sign, because<br />
their security level is directly related to estimates precision. As we shall see, the<br />
approach of entropy collection proposed by [Ferguson and Schneier, 2003] and adapted<br />
in this work minimizes the problem of possible inaccuracy in the estimation of entropy.<br />
2. Construction of a cryptographically secure random number generator<br />
2.1. One-way functions<br />
Intuitively, a function f is one-way if it is easy to compute but difficult to invert. In other<br />
words, given x, the value f(x) can be computed in polynomial time. But any feasible<br />
algorithm that receives f(x) can generate an output y such that f(y) = f(x) with only<br />
negligible probability.<br />
The existence of one-way functions is not proved. It is known that if P = NP<br />
they certainly do not exist. But it is unclear whether they exist if P ≠ NP . However,<br />
there are several functions that are believed to be unidirectional in practice. One of them<br />
is the SHA-1 hash function, used insi<strong>de</strong> the Linux random number generator. There are<br />
also functions that are conjectured to be unidirectional. Some examples are the subsets<br />
sum problem and the discrete logarithm calculation. These functions belong to the class<br />
NP, and supposing P ≠ NP , and are unidirectional un<strong>de</strong>r some intractability assumption.<br />
The main difference between the two types of one-way functions, besi<strong>de</strong>s the theoretical<br />
basis, is the computational cost. Functions based on intractable mathematical<br />
problems require, in general, a larger amount of calculations per bit generated. As shown<br />
in [Impagliazzo et al., 1989], cryptographically secure pseudorandom number generators<br />
exists if, and only if, one-way functions exists.<br />
In the generator presented in this paper we use the algorithm proposed by<br />
[Fischer and Stern, 1996] as our one-way function. It is based on the syndrome <strong>de</strong>coding<br />
problem, a NP-complete problem from the area of error-correcting co<strong>de</strong>s.<br />
2.2. Syndrome <strong>de</strong>coding problem<br />
In coding theory, coding is used to transmit messages through noisy communication channels,<br />
which can produce errors. Decoding is the process of translating (possibly corrupted)<br />
messages into words belonging to a particular co<strong>de</strong>. A binary linear co<strong>de</strong> is an errorcorrecting<br />
co<strong>de</strong> that uses the symbols 0 and 1, in which each word can be represented as a<br />
linear combination of others, and each word has a weight, ie, a number of 1 bits, <strong>de</strong>fined.<br />
123
A binary linear co<strong>de</strong> (n, k, d) is a subspace of {0, 1} n with 2 k elements in which<br />
every word has weight less than or equal to d. The information rate of the co<strong>de</strong> is k/n<br />
and it can correct up to ⌊ d−1 ⌋ errors. Every co<strong>de</strong> can be <strong>de</strong>fined by a parity matrix of<br />
2<br />
size n × (n − k) which multiplied (mod 2) by a vector of the co<strong>de</strong> x = ( )<br />
x 1 , x 2 , . . . , x n<br />
results in an all zero vector s = ( 0, 0, . . . , 0 ) of size (n−k), called syndrome. Conversely,<br />
when the word multiplied by the parity matrix does not belong to the co<strong>de</strong>, the value of<br />
the syndrome is nonzero.<br />
A randomly filled parity matrix <strong>de</strong>fines a random binary linear co<strong>de</strong>. For this co<strong>de</strong>,<br />
there is no efficient algorithm known that can find the closest word to a vector, given a<br />
nonzero syndrome. Another difficult problem, known as syndrome <strong>de</strong>coding, is to find a<br />
word of certain weight from its syndrome.<br />
The latter problem is NP-Hard and can be <strong>de</strong>scribed as follows: let a binary matrix<br />
A = {a ij } of size n × (n − k), a non-zero syndrome vector s and a positive integer w.<br />
Find a binary vector x with weight |x| ≤ w, such that:<br />
⎛<br />
⎞<br />
a 1,1 a 1,2 · · · a 1,n−k<br />
( ) a 2,1 a 2,2 · · · a 2,n−k<br />
x1 , x 2 , . . . , x n · ⎜<br />
⎝<br />
.<br />
. . .<br />
⎟<br />
. . ⎠ = ( )<br />
s 1 , s 2 , . . . , s n−k<br />
a n,1 a n,2 · · · a n,n−k<br />
(mod 2)<br />
The case in which we seek the vector x with weight |x| = w is NP-complete<br />
[Berlekamp et al., 1978].<br />
The fact that a problem is NP-Complete guarantees that there is no polynomial<br />
time algorithm for solving the worst case, un<strong>de</strong>r the assumption that P ≠ NP . Many<br />
problems, however, can be solved efficiently in the average case, requiring a more <strong>de</strong>tailed<br />
study of each instance of the problem.<br />
2.2.1. Gilbert-Warshamov Bound<br />
To evaluate the hardness of a specific instance of the syndrome <strong>de</strong>coding problem we<br />
will use a concept extensively studied and reviewed by [Chabaud, 1994], un<strong>de</strong>r which the<br />
most difficult instances of the problem of syndrome <strong>de</strong>coding for random co<strong>de</strong>s are those<br />
with weights in the vicinity of the Gilbert-Warshamov bound of the co<strong>de</strong>.<br />
The Gilbert-Warshamov bound λ of a co<strong>de</strong> (n, k, d) is <strong>de</strong>fined through the relation<br />
1 − k/n = H 2 (λ) where H 2 (x) = −x log 2 x − (1 − x) log 2 (1 − x) is the binary entropy<br />
function.<br />
According to the analysis of [Fischer and Stern, 1996], there is, on average, a vector<br />
for each syndrome when the weight is around the Gilbert-Warshamov bound of the<br />
co<strong>de</strong>. That is, the difficulty of finding a word is a function of the weight increasing until<br />
the Gilbert-Warshamov bound, and <strong>de</strong>creasing thereafter. Thus, it is possible to <strong>de</strong>fine<br />
a hard instance of the syndrome <strong>de</strong>coding problem when the weight is near the Gilbert-<br />
Warshamov bound.<br />
124
Figure 1. Gilbert-Warshamov bound, <strong>de</strong>fined by the binary entropy function.<br />
2.2.2. Formal <strong>de</strong>finitions<br />
Definition A function f : {0, 1} ∗ → {0, 1} ∗ is consi<strong>de</strong>red strongly unidirectional if the<br />
following conditions apply:<br />
• Easy to compute: there is a <strong>de</strong>terministic polynomial-time algorithm A such that<br />
for every input x, an output A(x) = f(x) is computed.<br />
• Hard to invert: for all probabilistic polynomial-time algorithm A ′ and every positive<br />
polynomial p(n) large enough,<br />
P r(A ′ (f(X n )) ∈ f −1 (f(X n ))) < 1<br />
p(n)<br />
where x n is random and uniformly distributed over {0, 1} n<br />
Let us consi<strong>de</strong>r a collection of functions related to the problem of <strong>de</strong>coding the<br />
syndrome.<br />
Definition Let ρ be in ]0, 1[ and δ be in ]0, 1/2[. A collection SD(ρ, δ) is a set o functions<br />
f n such that:<br />
D n = {(M, x), M ∈ ⌊ρn⌋ × n, x ∈ {0, 1} n /|x| = δn}<br />
f n : D n → {0, 1} ⌊ρn⌋·(n+1)<br />
(M, x) → (M, M · x)<br />
According to [Fischer and Stern, 1996], instances of the problem with weight δn<br />
very small or close to n/2 are not difficult. The instances of the collection SD with the<br />
weight δ near the Gilbert-Warshamov bound are believed to be unidirectional, although<br />
there is no proof in this sense. Thus we have the following assumption of intractability:<br />
Intractability assumption Let ρ be in ]0, 1[. Then, for all δ in ]0, 1/2[, such that H 2 (δ) <<br />
ρ, the collection SD(ρ, δ) is strongly unidirectional.<br />
125
Note that if H 2 (λ) = ρ and δ < λ , the intractability of SD(ρ, δ) is a special case<br />
2<br />
of <strong>de</strong>coding beyond half the minimum distance. Thus, the assumption becomes stronger<br />
than the usual assumptions for the <strong>de</strong>coding problem [Goldreich et al., 1993].<br />
Cryptographic applications based on the complexity of known problems have been<br />
extensively studied and implemented in the last <strong>de</strong>ca<strong>de</strong>s. Intractability assumptions are a<br />
natural step in building such applications. At the current state of knowledge in complexity<br />
theory, one cannot hope to build such algorithms without any intractability assumptions<br />
[Goldreich, 2001, p. 19].<br />
3. Syndrome-Fortuna<br />
The purpose of this work is to <strong>de</strong>velop a random number generator and implement it<br />
insi<strong>de</strong> the Linux kernel. The generator has its own scheme for entropy collection and the<br />
generating function is based on the intractability of the syndrome <strong>de</strong>coding problem. We<br />
will show that the proposed generator applies good grounds of security and is based on<br />
sound mathematical principles.<br />
The generator was <strong>de</strong>signed with in<strong>de</strong>pen<strong>de</strong>nt functions of entropy collection and<br />
random values generation. Each one will be addressed separetely.<br />
3.1. Fortuna: Entropy collection<br />
[Ferguson and Schneier, 2003] proposed a cryptographically secure random number generator<br />
called Fortuna. The main contribution of Fortuna is the events collection system.<br />
It eliminated the need of entropy estimators, used until then in most of the generators we<br />
are aware of. Entropy estimation is commonly used to ensure that the generator state – or<br />
seed – is catastrophically updated, i.e., with sufficient amount of randomness. This should<br />
prevent potential adversaries who, for some reason, already know the seed, to iterate over<br />
all the possible new states and maintain control over the generator. If the possible new<br />
states are too many, it will not be feasible to try all of them.<br />
3.1.1. Entropy accumulator<br />
The Fortuna entropy accumulator captures data from various sources of entropy and uses<br />
them to update the seed of the generator. Its architecture, as we shall see, keeps the system<br />
secure even if an adversary controls some of the sources.<br />
The captured random events must be uniform and cyclically distributed across n<br />
pools of the generator, as shown in figure 2. This distribution will ensure an even spread<br />
of entropy among pools, which will allow seed updates with successively larger amounts<br />
of randomness.<br />
Each pool can receive, in theory, unlimited random data. To implement this the<br />
data is compressed incrementally, using the SHA 256 hash function, thus maintaining<br />
pools with constant size of 256 bits.<br />
The generator state will be updated when the P 0 pool accumulate sufficient random<br />
data. A variable counter keeps track of how often the seed has been updated. This<br />
counter <strong>de</strong>termines which pools will be used in the next update. A pool P i will be used if,<br />
and only if, 2 i divi<strong>de</strong>s counter.<br />
126
Figure 2. Entropy allocation among n pools. Data is compressed using the SHA<br />
256 hash function.<br />
Counter Used pools<br />
1 P0<br />
2 P0, P1<br />
3 P0<br />
4 P0, P1, P2<br />
5 P0<br />
6 P0, P1<br />
7 P0<br />
8 P0, P1, P2, P3<br />
Table 1. Used pools in the 8 first updates of Fortuna generator<br />
Table 1 shows the update strategy of the generator. As we can see, the higher the<br />
number of the pool, less it is used in the update of the generator and, therefore, the greater<br />
the amount of accumulated entropy. This allows the generator to adapt automatically to<br />
attacks. If the opponents have little control over the sources of randomness, they can not<br />
even predict the state of the pool P 0 , and the generator will recover from a compromised<br />
state quickly, at the next reseed.<br />
However, the opponent may control multiple sources of entropy. In this case he<br />
probably knows a lot about the pool P 0 and could reconstruct the state of the generator<br />
using the previous state and the outputs produced. But when P 1 is used in a reseed, it contains<br />
twice the amount of randomness of P 0 . When P 2 is used, it will contain four times<br />
the amount of randomness of P 0 , and so on. While there are some truly unpredictable<br />
sources, eventually one pool will collect enough randomness to <strong>de</strong>feat the opponents, regardless<br />
of how many fake events they can generate or how many events they know the<br />
system would recover. The speed of recovery will be proportional to the level of opponents<br />
control over the sources.<br />
3.1.2. Initial estimate<br />
The proposed scheme avoids the entropy estimate, as used in Linux. However it is still<br />
necessary to make an initial entropy estimate in or<strong>de</strong>r to <strong>de</strong>termine the minimum number<br />
of events necessary to perform a catastrophic reseed. This estimate is calculated for the<br />
127
pool P 0 and <strong>de</strong>termines when the generator state is updated.<br />
To elaborate such, one should observe some aspects of the system as: the <strong>de</strong>sired<br />
security level; the amount of space occupied by the events and the amount of entropy<br />
present in each event.<br />
[Ferguson and Schneier, 2003] suggest a minimum of 512 bits for P 0 , for a level of<br />
128-bit security. The initial entropy estimation plays an important role on system security,<br />
but is mitigated by the fact that if the chosen value is too low, there will always be reseeds<br />
with higher amounts of entropy. If the chosen value is too high, a possible recovery from<br />
a compromise may take longer, but will inevitably occur.<br />
3.2. Syndrome: Generating function<br />
3.2.1. Construction of the generating function<br />
We built a PRNG based on a hard instance of the syndrome <strong>de</strong>coding problem using<br />
the SD collection of functions (ρ, δ) <strong>de</strong>fined in section 2.2. Initially, we show that the<br />
functions fn<br />
ρ,δ from the collection SD(ρ, δ) expand its inputs, ie, they have image sets<br />
greater than the respective domain sets.<br />
The domain Dn<br />
ρ,δ from fn<br />
ρ,δ consists of a matrix M of size ⌊ρn⌋ × n and of vector<br />
x of size n and weight δn. So the size of the domain set is 2 ⌊ρn⌋·n · ( n<br />
δn)<br />
. Yet, the image<br />
set is formed by the same matrix M of size ⌊ρn⌋ × n and a vector y = M · x of size ⌊ρn⌋.<br />
Thus, its size is 2 ⌊ρn⌋·n · 2 ⌊ρn⌋ .<br />
So, for the image set to be larger than the domain set, we need 2 ⌊ρn⌋ > ( n<br />
δn)<br />
. This<br />
condition is satisfied when H 2 (δ) < ρ according to the Gilbert-Warshamov bound <strong>de</strong>fined<br />
in section 2.2.1. That is, for a sufficiently large n and suitable δ and ρ, fn<br />
ρ,δ expands its<br />
entry into a linear amount of bits.<br />
Given an instance with fixed parameters ρ and δ from SD(ρ, δ) collection, we can<br />
construct an iterative generating function G ρ,δ from the one-way function fn<br />
ρ,δ . For this,<br />
we use an algorithm ( A that returns a vector x of size n and weight δn from a random<br />
vector with log n<br />
2 δn)<br />
bits. This algorithm is <strong>de</strong>scribed in section 3.2.2. The generator Gρ,δ<br />
is <strong>de</strong>scribed in pseudoco<strong>de</strong> in algorithm 1. Figure 3 illustrates its operation.<br />
Algorithm 1 syndrome – Iterative generating function based on the syndrome <strong>de</strong>coding<br />
problem.<br />
Input: (M, x) ∈ Dn<br />
ρ,δ<br />
Output: Print bit sequence<br />
1: y ← M · x<br />
(<br />
2: Split y into two vectors y 1 e y 2 . The firs with ⌊log n<br />
2 δn)<br />
⌋ bits and the second with the<br />
remaining bits.<br />
3: print y 2<br />
4: x ← A(y 1 )<br />
5: Go to: 1<br />
128
Figure 3. Syndrome generating function.<br />
3.2.2. Generating words with given weight<br />
As noted, the generator requires ( an algorithm to produce vectors with fixed weight. From<br />
each entry of size ⌊log n<br />
)<br />
2 δn ⌋, this algorithm must output a different vector x ∈ {0, 1}<br />
n<br />
with weight |x| = δn. To build it, we use the lexicographic enumeration function shown<br />
by [Fischer and Stern, 1996].<br />
To explain the working of the lexicographic enumeration, we will use Pascal’s<br />
Triangle. It is formed by the binomial coefficients ( n<br />
k)<br />
where n represents the row and k<br />
the column. The construction follows the Pascal’s rule, which states:<br />
( ) n − 1<br />
+<br />
k − 1<br />
( ) ( n − 1 n<br />
= for 1 ≤ k ≤ n<br />
k k)<br />
Each triangle component t(n, k) = ( n<br />
k)<br />
represents the number of existing words<br />
with size n and weight k. Here t(n, k) equals the sum of two components immediately<br />
above t(n − 1, k) and t(n − 1, k − 1). These components represent, respectively, the<br />
number of words of size n starting with a 0-bit and starting with a 1-bit.<br />
This way, we can generate the output word from an in<strong>de</strong>x i by making an upward<br />
path in Pascal’s Triangle. We start from the component t(n, k) towards the top. When<br />
the in<strong>de</strong>x i is less than or equal to the up-left component t(n − 1, k), we generate a 0-bit<br />
and move to this component. When the in<strong>de</strong>x is higher, we generate a 1-bit and walk to<br />
the up-right component t(n − 1, k − 1), <strong>de</strong>crementing the in<strong>de</strong>x at t(n − 1, k − 1). The<br />
complete algorithm is <strong>de</strong>scribed in pseudoco<strong>de</strong> at the end of this section.<br />
As an example, see Figure 4. We ilustrate a walk to generate a word of size n = 4<br />
and weight k = 2, in<strong>de</strong>x i = 2.<br />
The path begins at the component t(4, 2) = ( 4<br />
2)<br />
= 6. As i = 2 ≤ t(3, 2) = 3, the<br />
algorithm generates a 0-bit and walks to the component t(3, 2). Now, i = 2 > t(2, 2) = 1,<br />
so the algorithm generates a 1 bit, updates the in<strong>de</strong>x i ← i − t(2, 2) and the path goes to<br />
the component t(2, 1). And so it goes until you reach the top of the triangle, forming the<br />
word (0, 1, 0, 1).<br />
129
Figure 4. Walk in Pascal’s Triangle to generate word of in<strong>de</strong>x i = 2 within a set of<br />
words of size 4 and weight 2<br />
3.3. Combining Syndrome and Fortuna<br />
The generating function constructed in 3.2.1 is based on the difficulty of finding a vector<br />
x with weight w from its syndrome, given a random matrix M. Thus, the only part of<br />
the function that actually makes up the internal state E, which must be kept secret, is the<br />
vector x. We will use, then, the entropy collection scheme to update the internal state. It<br />
should occur whenever the minimum amount of entropy is available in the P 0 pool. This<br />
way we ensure that the generating function receives the operating system randomness<br />
over time.<br />
At each request for random numbers, a check is ma<strong>de</strong> whether there is enough<br />
entropy to update the internal state. This check is conditional on the minimum entropy in<br />
the pool P 0 , as stipulated on the initial estimate. A minimum time lapse between reseeds<br />
is also respected. [Ferguson and Schneier, 2003] suggested 100ms to prevent an adversary<br />
to make numerous requests and flush out the entropy of the pools. Figure 5 illustrates the<br />
complete workings of the generator.<br />
The Syndrome-Fortuna update strategy preserves the one-way function direct<br />
cryptanalysis resistance. Only the seed, the vector x, is updated from time to time. Regardless<br />
of this update, any adversary that can reconstruct the internal state through the<br />
output vector y and the matrix M has managed to solve a problem currently consi<strong>de</strong>red<br />
computationally intractable.<br />
Forward security is guaranteed by the feedback operation in which part of the<br />
result vector y is used to choose the new vector x. An adversary can, at time t, know the<br />
state of the generator E t = (x t , M, P t ), where M is the matrix, x t is the vector x at time<br />
t and P t represents all the Fortuna Pools at time t. In this case, the opponent can simply<br />
find the last in<strong>de</strong>x value used in the lexicographic enumeration function A −1 (x t ) = y1 t−1 .<br />
This value is part of the vector y t−1 , as can be seen in figure 5. From there, to find the<br />
value x t−1 , or the last output value y2 t−1 requires inverting the generating function.<br />
The recovery to a safe state after a compromise – backward security – is guaranteed<br />
by the eventual update of vector x by the entropy collection system. An adversary<br />
who controls the state of the generator E t = (x t , M, P t ) could possibly keep it until time<br />
t + k, when the accumulated entropy is sufficient for a catastrophic reseed. At this point<br />
the value of the vector x is changed by the hash function of Fortuna pools, as seen in<br />
figure 5. As long as the opponent has not enough knowledge about the entropy ad<strong>de</strong>d to<br />
130
Figure 5. Syndrome-Fortuna operation. At each request is checked whether the<br />
pool P 0 has the minimum entropy and the time between reseeds is over 100ms.<br />
If so the algorithm performs a reseed, incrementing a counter c and choosing<br />
among the pools p i that satisfies 2 i divi<strong>de</strong>s c. A SHA 256 is performed accross<br />
the chosen pools and the result is used to in<strong>de</strong>x a word of size n and weight w.<br />
Then, the generating function performs the multiplication between the chosen<br />
vector and the matrix M producing the syndrome vector y. Part of this vector is<br />
sent to the output and part is used as feedback, enabling the iterative generation<br />
of random data .<br />
the pools, the new state E t+k+1 should be out of his control.<br />
I<strong>de</strong>ally a system recovery should require 128 entropy bits<br />
[Ferguson and Schneier, 2003]. In the Fortuna entropy collection system this amount is<br />
multiplied by the number of pools, since the entropy is distributed. Thus, this amount<br />
rises to 128 ∗ n, where n is the number of pools. This value can be relatively high<br />
compared to the i<strong>de</strong>al; however, this is a constant factor, and ensures that the system will<br />
recover, at a future time.<br />
In the above compromise case, consi<strong>de</strong>ring the entropy input rate ω, the generator<br />
recovery time would be at most k = (128 ∗ n)/ω. Adversaries could try to <strong>de</strong>plete the<br />
system entropy while it is accumulated. They would need to promote frequent reseeds,<br />
emptying the pools before they contain enough entropy to <strong>de</strong>feat them. This could be<br />
done injecting false events on the pools through malicious drivers to keep the pool P 0<br />
filled, allowing the real entropy flush. This attack is unlikely, given that the opponent<br />
would have to promote 2 n reseeds before the system collects 128 ∗ n real entropy bits.<br />
However, to avoid any attempt a minimum time between state updates is used to prevent<br />
very frequent reseeds and the system entropy exhaustion.<br />
131
3.4. Starting the generator<br />
The initialization is a critical step for any random number generator that manages its<br />
own entropy. The problems related to lack of randomness at initialization time must be<br />
addressed according to each scenario. Therefore, it is beyond the scope of this paper to<br />
<strong>de</strong>fine specific strategies.<br />
However, it should be noted that the implemented entropy accumulator allows the<br />
use of any source of randomness. Even a source of low quality, which can enter foreseeable<br />
data in the pools, has not the capacity to lower the system entropy. Other strategies,<br />
including the one used by the Linux kernel, estimate the collected amount of entropy.<br />
These approaches do not allow questionable sources to be used, since a miscalculation<br />
could lead to a security breach.<br />
One good strategy to mitigate the problem of lack of entropy during boot is to<br />
simulate continuity between reboots. For the Syndrome-Fortuna generator a seed-file was<br />
implemented the same way as in Linux. The system writes a file with random data to disk<br />
during shutdown and startup. At the startup, the seed is read, fed to the generator and the<br />
output is written on disk before any request for random numbers. This prevents repeated<br />
states when sud<strong>de</strong>n hangs occur. At startup, this seed-file is used to refresh the pools.<br />
4. Implementation, analysis and results<br />
4.1. Testing methodology<br />
One way to evaluate a random number generator quality is assessing its output’s statistical<br />
behavior. This analysis does not guarantee, in any way, the security of a cryptographic<br />
generator. However, it can reveal flaws on its <strong>de</strong>sign or implementation.<br />
There are several libraries for statistical tests accepted by the scientific community.<br />
We used the libraries SmallCrush and Crush from TestU01 library, <strong>de</strong>veloped by<br />
[L’Ecuyer and Simard, 2007]. The first one implements a set consisting of 10 tests and<br />
is recommen<strong>de</strong>d for a generator’s initial assessment. The second library applies 32 tests<br />
with several configurations, evaluating a total of 2 35 random bits.<br />
To evaluate the generator performance, we compared it with the Blum-Blum-Shub<br />
generator, which has a simple construction, based on the integer factoring difficulty. We<br />
also compared to the Linux kernel 2.6.30 generator (LRNG). TestU01 library was used to<br />
measure the generators performance.<br />
4.2. Statistical Results<br />
The statistical tests results are presented in the shape of p-values, which indicate the likelihood<br />
of a sample Y present the sampled value y, consi<strong>de</strong>ring true the null hypothesis<br />
H 0 :<br />
p = P (Y ≥ y|H 0 )<br />
To illustrate this statistical approach, we evaluate a sample Y of 100 coin flips in which 80<br />
times was randomly selected “heads” and 20 times “tails”. In this case, the null hypothesis<br />
is the coin fairness and therefore Y is a cumulative binomial distribution. Thus, we have<br />
p = P (Y ≥ 80) = 5.6 ∗ 10 −10 . The observed sample could occur with a fair coin<br />
with only 5.6 ∗ 10 −10 probability. This is not to tacitly reject the null hypothesis, but<br />
132
according to a <strong>de</strong>fined <strong>de</strong>mand level, we can consi<strong>de</strong>r the sample clearly failed the applied<br />
test. [L’Ecuyer and Simard, 2007] arbitrate as clear failures the p-values outsi<strong>de</strong> the range<br />
[10 −10 , 1 − 10 −10 ].<br />
All generators tested: BBS, Syndrome-Fortuna and LRNG passed the statistical<br />
test libraries. All p-values were in the range [10 −3 , 1 − 10 −3 ], forbidding us to reject<br />
the null hypothesis. This means that, statistically, the generated values cannot be distinguished<br />
from truly random values.<br />
4.3. Performance analysis<br />
The Syndrome-Fortuna generator was evaluated through performance tests and compared<br />
to the BBS and LRNG generators. We used a computer with an Intel Pentium Dual Core<br />
T3400 2.16GHz with 2GB of RAM. We used loads of 100 bytes, 1 kB, 10kB, 100kB and<br />
100kB intervals until complete 1MB of random data. Each generator had the generating<br />
time clocked 3 times for each load.<br />
Syndrome-Fortuna and LRNG were assessed while compiled into the kernel. The<br />
BBS algorithm was used only as a benchmark for performance and was not implemented<br />
within the kernel, being assessed with TestU01 library.<br />
To evaluate the performance diferences between generators built insi<strong>de</strong> and outsi<strong>de</strong><br />
the kernel, we did tests with an implementation of Syndrome-Fortuna compiled in<br />
user-space. The results were statistically indistinguishable from the results when the algorithm<br />
was implemented insi<strong>de</strong> the kernel. This does not necessarily imply that the same<br />
would happen to the BBS algorithm, the only algorithm not implemented insi<strong>de</strong> the kernel.<br />
But for the purposes of this paper, we consi<strong>de</strong>r it satisfactory for the comparision<br />
of the BBS, compiled in user space, with Syndrome-Fortuna and LRNG, built insi<strong>de</strong> the<br />
kernel.<br />
The average speed of each generator, with the respective <strong>de</strong>viation, are shown in<br />
table 2. The generators behavior for the different loads are summarized in figure 6.<br />
Generator Speed (em kB/s)<br />
LRNG 2664,0 ± 818,9<br />
Syndrome-Fortuna 197,1 ± 58,2<br />
BBS 31,4 ± 6,4<br />
Table 2. Generators LRNG, Syndrome-Fortuna and BBS performance measurement.<br />
As expected, Syndrome-Fortuna un<strong>de</strong>rperforms the current Linux generator,<br />
which is highly optimized for performance and does not have formal security proof.<br />
When compared with the BBS generator, which has similar formal security features, the<br />
Syndrome-Fortuna performance is 6.3 times higher.<br />
5. Concluding remarks<br />
During this research we studied several types of random number generators, statistical<br />
and cryptographic. We conducted a <strong>de</strong>tailed investigation of the Linux kernel generator,<br />
and proposed and implemented a new generator based on two existing approaches.<br />
133
Figure 6. Performance of random generators: Linux (LRNG) Syndrome-Fortuna<br />
and Blum-Blum-Shub (BBS).<br />
5.1. Conclusions from our research<br />
Random number generators are an important part of the complex set of protocols and applications<br />
responsible for ensuring information security. In a scenario of rapid change,<br />
when the computing reach unexplored places, and new users, the framework for cryptographic<br />
applications must adapt to provi<strong>de</strong> the <strong>de</strong>sired security.<br />
For random number generators, this means adapting to new sources of entropy,<br />
new forms of operation. It is not difficult to imagine scenarios where a keyboard, mouse<br />
and hard drive are less present, imposing restrictions on the randomness of the systems.<br />
The strategy we implemented for entropy collection is in line with this need. It does<br />
not require estimations and can use any entropy sources, even the ones with questionable<br />
randomnness.<br />
Conversely, as noted in its operation, the Linux random number generator faces a<br />
difficulty to adapt to new entropy sources. All of them must pass through a heuristic that,<br />
if inaccurate, can lead to a generator low entropy state. In a running Linux Ubuntu 9.10,<br />
we observed the entropy collection only from the keyboard, mouse and hard drive, while<br />
a series of possibly good entropy sources were available, such as wireless network cards,<br />
software interrupts, etc.<br />
As for the random values generation, per se, the implementation applies solid<br />
mathematical principles <strong>de</strong>rived from the theory of error-correcting co<strong>de</strong>s, and predicting<br />
them can be consi<strong>de</strong>red as difficult as the syndrome <strong>de</strong>coding problem, which is NPcomplete.<br />
134
The proposed algorithm can be consi<strong>de</strong>red for use in various scenarios, especially<br />
on diskless servers, or in cloud-computing scenarios, where the usual randomness sources<br />
are not present. We believe that the generator implements a satisfying tra<strong>de</strong>-off, providing<br />
bits with good statistical properties, solid security and reasonable speeds<br />
5.2. Future work<br />
We believe that the Syndrome-Fortuna time and memory performance can be improved<br />
consi<strong>de</strong>rably by changing the generating function “A”, shown in figure 5. We note that<br />
much of the processing and, clearly, most of the memory costs are related to the problem<br />
of obtaining the vector x of size n and weight w from a random in<strong>de</strong>x i. The approach<br />
used in the work of Augot et al. [Augot et al., 2005] could reduce drastically these costs.<br />
Generator specific parameters should be studied and modified to allow this use.<br />
As shown, the entropy collection strategy allows the use of new randomness<br />
sources, in<strong>de</strong>pen<strong>de</strong>nt of <strong>de</strong>tailed entropy studies. A natural extension of this work is<br />
to i<strong>de</strong>ntify these sources and promote their interconnection with the Linux kernel entropy<br />
collection system.<br />
References<br />
Augot, D., Finiasz, M., and Sendrier, N. (2005). A family of fast syndrome based cryptographic<br />
hash functions. In Dawson, E. and Vau<strong>de</strong>nay, S., editors, Mycrypt 2005, volume 3715, pages<br />
64–83. Springer.<br />
Berlekamp, E., McEliece, R., and Van Tilborg, H. (1978). On the inherent intractability of certain<br />
coding problems (corresp.). IEEE Transactions on Information Theory, 24(3):384–386.<br />
Chabaud, F. (1994). On the security of some cryptosystems based on error-correcting co<strong>de</strong>s. In<br />
EUROCRYPT, pages 131–139.<br />
Ferguson, N. and Schneier, B. (2003). Practical Cryptography. Wiley & Sons.<br />
Fischer, J.-B. and Stern, J. (1996). An efficient pseudo-random generator provably as secure as<br />
syndrome <strong>de</strong>coding. In EUROCRYPT, pages 245–255.<br />
Goldberg, I. and Wagner, D. (1996). Randomness and the Netscape browser. Dr. Dobb’s Journal<br />
of Software Tools, 21(1):66, 68–70.<br />
Goldreich, O. (2001). Foundations of Cryptography. Volume I: Basic Tools. Cambridge University<br />
Press, Cambridge, England.<br />
Goldreich, O., Krawczyk, H., and Michael, L. (1993). On the existence of pseudorandom generators.<br />
SIAM J. Computing, 22(6):1163–1175.<br />
Impagliazzo, R., Levin, L., and Luby, M. (1989). Pseudorandom generation from one-way functions.<br />
In Proc. 21st Ann. ACM Symp. on Theory of Computing, pages 12–24.<br />
L’Ecuyer, P. and Simard, R. (2007). Testu01: A c library for empirical testing of random number<br />
generators. ACM Transactions on Mathematical Software, 33(4).<br />
135
SpSb: um ambiente seguro para o estudo <strong>de</strong> spambots<br />
Gabriel C. Silva 1 , Alison C. Arantes 2 ,<br />
Klaus Steding-Jessen 3 , Cristine Hoepers 3 , Marcelo H.P. Chaves 3 ,<br />
Wagner Meira Jr. 1 , Dorgival Gue<strong>de</strong>s 1<br />
1 Departamento <strong>de</strong> Ciência da Computação – Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Minas Gerais<br />
2 CSIRT/POP-MG – Equipe <strong>de</strong> resposta a inci<strong>de</strong>ntes <strong>de</strong> segurança do POP-MG<br />
3 CERT.br – Centro <strong>de</strong> Estudos, Resposta e Tratamento <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Segurança<br />
NIC.br – Núcleo <strong>de</strong> Informação e Coor<strong>de</strong>nação do Ponto Br<br />
gabrielc@dcc.ufmg.br, alison@csirt.pop-mg.rnp.br<br />
{jessen,cristine,mhp}@cert.br, {meira,dorgival}@dcc.ufmg.br<br />
Resumo. Botnets são consi<strong>de</strong>radas a origem <strong>de</strong> gran<strong>de</strong> parte do spam observado<br />
atualmente. Entretanto, a informação que se tem sobre esses sistemas costuma<br />
ser apócrifa ou <strong>de</strong>riva <strong>de</strong> esforços <strong>de</strong> engenharia reversa pontuais. Para<br />
se enten<strong>de</strong>r melhor o comportamento <strong>de</strong>sses sistemas é necessário um ambiente<br />
<strong>de</strong> monitoração que dê ao bot a impressão <strong>de</strong> estar executando com liberda<strong>de</strong><br />
na Internet, porém sem permitir que suas ativida<strong>de</strong>s causem dano à re<strong>de</strong>. Este<br />
artigo curto <strong>de</strong>screve uma implementação <strong>de</strong> tal sistema atualmente em curso.<br />
1. Introdução<br />
No cenário atual <strong>de</strong> combate ao spam na Internet, botnets ocupam uma posição particularmente<br />
importante, por sua capacida<strong>de</strong> <strong>de</strong> disseminação <strong>de</strong> mensagens a partir <strong>de</strong> um<br />
gran<strong>de</strong> número <strong>de</strong> máquinas comprometidas (bots) [Xie et al. 2008]. Um dos gran<strong>de</strong>s<br />
<strong>de</strong>safios para a comunida<strong>de</strong> <strong>de</strong> segurança que combate spam é enten<strong>de</strong>r como essas re<strong>de</strong>s<br />
operam, a fim <strong>de</strong> criar mecanismos <strong>de</strong> <strong>de</strong>tecção e bloqueio <strong>de</strong>ssas fontes <strong>de</strong> spam<br />
(<strong>de</strong>nominadas spambots, nesse caso).<br />
Na prática, a informação sobre o comportamento <strong>de</strong> botnets ten<strong>de</strong> a ser apócrifa,<br />
sem validação científica, ou <strong>de</strong> valida<strong>de</strong> limitada pela volatilida<strong>de</strong> da área. Dessa forma,<br />
é essencial que se tenha uma forma flexível <strong>de</strong> acompanhar o comportamento <strong>de</strong> novos<br />
bots à medida que eles surgem. Esse acompanhamento envolve tanto a coleta <strong>de</strong> binários<br />
<strong>de</strong> versões ativas <strong>de</strong> malware para análise, quanto o acompanhamento <strong>de</strong> sua execução.<br />
O gran<strong>de</strong> problema <strong>de</strong> se analisar o comportamento <strong>de</strong> um bot é que esse comportamento<br />
só po<strong>de</strong> ser observado em sua totalida<strong>de</strong> se lhe é garantido acesso à Internet.<br />
Como esses programas operam seguindo os comandos <strong>de</strong> um elemento central, <strong>de</strong>nominado<br />
Comando-e-Controle (C&C), um bot só passa a atuar no envio <strong>de</strong> spam, por exemplo,<br />
após se conectar ao seu C&C e obter instruções sobre o conteúdo das mensagens e<br />
os <strong>de</strong>stinatários. Entretanto, se o malware tem acesso à Internet, se torna difícil evitar que<br />
cause dano (por exemplo, enviando spam). Por esse motivo, serviços <strong>de</strong> análise <strong>de</strong> comportamento<br />
<strong>de</strong> binários, como o Anubis 1 , se limitam a executar os binários sob suspeita<br />
sem permitir o seu acesso à re<strong>de</strong>, registrando apenas o seu comportamento na máquina<br />
local. Apesar <strong>de</strong> auxiliar na i<strong>de</strong>ntificação do binário, essas informações não contribuem<br />
para o entendimento <strong>de</strong> seu comportamento na re<strong>de</strong>.<br />
1 http://anubis.iseclab.org/?action=sample_reports<br />
136
O objetivo <strong>de</strong>ste artigo é propor um ambiente seguro para o estudo <strong>de</strong> spambots<br />
que seja ser capaz <strong>de</strong> registrar o comportamento <strong>de</strong> todo o ciclo <strong>de</strong> vida <strong>de</strong> um spambot<br />
analisando seu tráfego <strong>de</strong> re<strong>de</strong>, sem permitir que ataques reais ocorram. Neste ambiente,<br />
qualquer bot sob análise <strong>de</strong>ve ser capaz <strong>de</strong> trocar informações com seu C&C sem efetivamente<br />
conseguir enviar o spam. Pelas suas características, esse ambiente se encaixa na<br />
<strong>de</strong>finição <strong>de</strong> um sandbox, daí o nome escolhido para o sistema, SpSb (Spam Sandbox).<br />
2. Arquitetura proposta<br />
Para garantir um ambiente seguro para análise <strong>de</strong> malware, preten<strong>de</strong>mos utilizar a infraestrutura<br />
<strong>de</strong> re<strong>de</strong> ilustrada na figura 1. A arquitetura inclui um sistema <strong>de</strong> captura <strong>de</strong><br />
amostras <strong>de</strong> binários <strong>de</strong> possíveis spambots e o sandbox propriamente dito. Nesta seção<br />
discutimos os princípios <strong>de</strong> operação previstos para cada elemento do sistema. A seção<br />
seguinte discute <strong>de</strong>talhes <strong>de</strong> implementação relacionados.<br />
Figura 1. Arquitetura proposta<br />
O sistema <strong>de</strong> captura inclui um honeypot especializado na coleta <strong>de</strong> malware e<br />
um serviço <strong>de</strong> avaliação, filtragem e armazenamento <strong>de</strong> amostras. O primeiro <strong>de</strong>safio<br />
do sistema é i<strong>de</strong>ntificar as amostras <strong>de</strong> interesse. Para isso, cada amostra é comparada a<br />
outras já avaliadas e uma consulta é feita a serviços <strong>de</strong> análise externos. Apesar <strong>de</strong>sses<br />
serviços não serem suficientes para <strong>de</strong>terminar todo o comportamento <strong>de</strong> uma amostra,<br />
eles fornecem informações úteis, como a i<strong>de</strong>ntificação <strong>de</strong> amostras claramente sem interesse<br />
nesse caso, como vírus e ou variações <strong>de</strong> outros bots já coletados. A transferência<br />
<strong>de</strong> uma amostra selecionada para o sandbox <strong>de</strong>ve ser feita <strong>de</strong> forma bastante controlada,<br />
para evitar que a amostra contamine algum elemento <strong>de</strong> forma inesperada e para garantir<br />
que o mecanismo <strong>de</strong> transferência não possa vir a ser explorado por um malware durante<br />
sua execução no ambiente.<br />
A máquina alvo que será infectada po<strong>de</strong> ser uma máquina real, ou uma máquina<br />
virtual executando em um dos ambientes <strong>de</strong> virtualização hoje disponíveis. A opção entre<br />
as duas opções representa um compromisso entre a flexibilida<strong>de</strong> <strong>de</strong> operação, a segurança<br />
do sistema e a gama <strong>de</strong> malware que po<strong>de</strong>rão ser avaliados. O uso <strong>de</strong> máquinas virtuais<br />
simplifica a gerência e configuração do sistema, tornando simples recuperar uma<br />
visão <strong>de</strong> uma máquina em um <strong>de</strong>terminado ponto <strong>de</strong> sua configuração, antes ou após a<br />
contaminação pelo bot. Entretanto, o gerente <strong>de</strong> máquinas virtuais está sujeito a ataques a<br />
partir da máquina virtual (ao menos potencialmente) e diversos tipos <strong>de</strong> software malicioso<br />
hoje incluem algum tipo <strong>de</strong> mecanismo para <strong>de</strong>tectar sua instalação em uma máquina<br />
virtual [Miwa et al. 2007].<br />
137
A tarefa <strong>de</strong> controlar a visão do bot para a Internet é dividida entre o controlador<br />
<strong>de</strong> acesso e o emulador <strong>de</strong> serviços. O primeiro é responsável por interceptar cada pacote<br />
gerado pela máquina infectada e <strong>de</strong>cidir sua <strong>de</strong>stinação, que <strong>de</strong>ve se encaixar em uma das<br />
opções a seguir: (i) processar o pacote localmente, (ii) permitir que o pacote siga seu caminho<br />
para a Internet, (iii) redirecionar o pacote para um emulador <strong>de</strong> serviços, ou (iv)<br />
<strong>de</strong>scartar o pacote. Pacotes como consultas DNS <strong>de</strong>vem ser tratadas diretamente pelo<br />
controlador, A interceptação <strong>de</strong>sse protocolo tem dois objetivos: observando o padrão<br />
<strong>de</strong> consultas DNS <strong>de</strong> um bot é possível, em muitos casos, inferir a natureza do seu<br />
C&C [Choi et al. 2009]; além disso, caso algum tráfego seja i<strong>de</strong>ntificado com um ataque<br />
iniciado pelo bot (como o envio <strong>de</strong> spam), o servidor <strong>de</strong> DNS do controlador <strong>de</strong> acesso<br />
tem a informação necessária para redirecionar o tráfego para o emulador <strong>de</strong> serviços. Isso<br />
po<strong>de</strong> ser feito pela re-escrita dos en<strong>de</strong>reços <strong>de</strong> resposta, ou pela observação do en<strong>de</strong>reço<br />
<strong>de</strong> resposta e pela inserção <strong>de</strong> regras <strong>de</strong> roteamento que interceptem o tráfego para aqueles<br />
en<strong>de</strong>reços e os redirecionem para o emulador.<br />
Pacotes i<strong>de</strong>ntificados como associados ao fluxo <strong>de</strong> controle do bot, direcionados<br />
principalmente ao seu Comando-e-Controle, <strong>de</strong>vem ser encaminhados normalmente pela<br />
Internet. Essa i<strong>de</strong>ntificação po<strong>de</strong> ser feita através dos padrões <strong>de</strong> DNS, como mencionado,<br />
pelo tipo <strong>de</strong> protocolo utilizado (p.ex., IRC) e pelo momento da conexão. Para evitar problemas<br />
<strong>de</strong>vido a ataques que porventura possam ser encapsulados em consultas aparentemente<br />
inócuas, um controle rigoroso <strong>de</strong> taxa <strong>de</strong> comunicação <strong>de</strong>ve ser implementado.<br />
Tráfego redirecionado para o emulador <strong>de</strong> serviços inclui todo tipo <strong>de</strong> protocolo que seja<br />
classificado com parte <strong>de</strong> um ataque. Entre esses protocolos <strong>de</strong>stacam-se ataques a outras<br />
máquinas com o objetivo <strong>de</strong> propagar o malware e tentativas <strong>de</strong> distribuição <strong>de</strong> spam.<br />
Como mencionado anteriormente, o emulador <strong>de</strong> serviços <strong>de</strong>ve manter uma comunicação<br />
constante com o controlador <strong>de</strong> acesso, pois ele <strong>de</strong>ve ser informado sobre como respon<strong>de</strong>r<br />
a cada requisição redirecionada (por exemplo, uma conexão SMTP redirecionada <strong>de</strong>ve ser<br />
respondida com o nome do servidor alvo pretendido, bem como seu en<strong>de</strong>reço IP). Essa<br />
informação <strong>de</strong>ve ser repassada pelo controlador <strong>de</strong> acesso. As mensagens <strong>de</strong> spam coletadas<br />
são armazenadas e processadas para extrair informações que permitam classificá-las.<br />
Um objetivo importante do Spam Sandbox é automatizar as <strong>de</strong>cisões sobre que<br />
tráfego do bot po<strong>de</strong> acessar a Internet e que tráfego <strong>de</strong>ve ser direcionado para o emulador.<br />
Por exemplo, uma sequência <strong>de</strong>sse tipo po<strong>de</strong>ria ser vista da seguinte forma a partir do<br />
controlador <strong>de</strong> acesso: uma consulta DNS é seguida por uma conexão ao porto 6667<br />
(IRC) do en<strong>de</strong>reço IP fornecido pela resposta DNS — o controlador permite a conexão e<br />
a troca <strong>de</strong> tráfego com o <strong>de</strong>stino, por se tratar <strong>de</strong> uma conexão ao C&C; uma nova consulta<br />
DNS é seguida por uma conexão ao porto 25 (SMTP) do novo en<strong>de</strong>reço — nesse caso,<br />
o controlador notifica o emulador sobre o nome e o IP que o bot tenta conectar e passa a<br />
redirecionar o tráfego para aquele IP para o emulador, que passa a executar o código do<br />
emulador <strong>de</strong> um servidor <strong>de</strong> correio, armazenando a mensagem <strong>de</strong> spam que o bot acha<br />
que foi entregue.<br />
3. Aspectos <strong>de</strong> implementação<br />
O sistema está sendo implementado utilizando módulos disponíveis na comunida<strong>de</strong> <strong>de</strong><br />
sofwtare livre e aberto, bem com módulos especialmente <strong>de</strong>senvolvidos para esse fim. O<br />
138
sistema <strong>de</strong> coleta <strong>de</strong> amostras <strong>de</strong> malware utiliza o honeypot Dionaea 2 . As amostras coletadas<br />
são enviadas para análise pelo serviços Anubis 3 e Norman Sandbox 4 . No momento,<br />
a análise da informação obtida <strong>de</strong>ssas fontes é manual. No futuro, o processamento será<br />
automatizado com extratores automáticos, para simplificar a coleta <strong>de</strong> amostras.<br />
Nossa primeira opção para a máquina infectada é a utilização <strong>de</strong> uma máquina<br />
virtual executando no ambiente Virtual Box. O ambiente é configurado <strong>de</strong> forma a remover<br />
elementos <strong>de</strong> configuração da máquina virtual que são usualmente utilizados por<br />
bots para <strong>de</strong>terminar se o ambiente é uma máquina virtual. Dessa forma, po<strong>de</strong>mos nos<br />
beneficiar dos recursos <strong>de</strong> manipulação <strong>de</strong> imagens e armazenamento <strong>de</strong> snapshots para<br />
retornar o sistema a uma configuração pré-<strong>de</strong>terminada. A inserção <strong>de</strong> malware é feita<br />
atualmente através <strong>de</strong> um dispositivo USB; estamos estudando o ambiente virtualizado<br />
para po<strong>de</strong>r configurar a amostra diretamente na imagem da máquina virtual.<br />
O controlador <strong>de</strong> acesso é implementado com uma máquina FreeBSD, utilizando<br />
o sistema <strong>de</strong> filtragem <strong>de</strong> pacotes nativo daquele sistema, o PF (BSD Packet Filter). As<br />
interfaces da máquina são conectadas através <strong>de</strong> uma switch virtual transparente configurada<br />
pelo sistema operacional. O processo <strong>de</strong> captura e re-escrita <strong>de</strong> pacotes é feito com<br />
regras PF, com um tratamento especial dos pacotes <strong>de</strong> retorno do emulador <strong>de</strong> serviços<br />
para garantir o roteamento correto <strong>de</strong> pacotes com en<strong>de</strong>reços forjados. O software <strong>de</strong> controle<br />
do PF está sendo <strong>de</strong>senvolvido para interceptar os pacotes recebidos, tomar <strong>de</strong>cisões<br />
sobre os próximos passos, inserir novas regras para <strong>de</strong>terminar como as novas conexões<br />
serão tratadas e notificar o emulador a respeito dos serviços que ele <strong>de</strong>ve emular.<br />
O emulador <strong>de</strong> serviços contém um segundo servidor Dionaeae um honeypot especialmente<br />
<strong>de</strong>senvolvido para a coleta <strong>de</strong> spam [Steding-Jessen et al. 2008]. Ambos os servidores<br />
estão sendo configurados para se a<strong>de</strong>quarem ao ambiente emulado. Em particular,<br />
eles <strong>de</strong>vem receber comandos do controlador <strong>de</strong> acesso para saberem quais en<strong>de</strong>reços IPs<br />
<strong>de</strong>vem ser emulados e qual o nome o servidor <strong>de</strong>ve ser usado em cada caso. O coletor <strong>de</strong><br />
spam é basicamente o mesmo <strong>de</strong>senvolvido originalmente para aquele honeypot. Outros<br />
serviços po<strong>de</strong>m ser incluídos posteriormente.<br />
Técnicas <strong>de</strong> análise do spam coletado estão sendo <strong>de</strong>senvolvidas para i<strong>de</strong>ntificar<br />
os padrões <strong>de</strong> tráfego das botnets e os padrões <strong>de</strong> máquinas alvo que seriam atacadas<br />
pelo bot caso ele operasse na Internet. Essas técnicas são <strong>de</strong>senvolvidas em conjunto com<br />
outros trabalhos <strong>de</strong> análise <strong>de</strong> spam atualmente em ativida<strong>de</strong> no grupo do DCC/UFMG<br />
em conjunto com o CERT.br e o CSIRT/POP-MG [Guerra et al. 2010].<br />
4. Trabalhos relacionados<br />
Muitos trabalhos se orientam por princípios gerais universalmente reconhecidos a respeito<br />
<strong>de</strong> botnets, sem entretanto oferecer uma confirmação científica para esses princípios.<br />
Por exemplo, ao assumir que todas as conexões que chegam a um servidor <strong>de</strong> correio<br />
eletrônico tentando entregar mensagens <strong>de</strong> spam se originam <strong>de</strong> botnets, Xie et al. i<strong>de</strong>ntificam<br />
tais re<strong>de</strong>s com base nos en<strong>de</strong>reços <strong>de</strong> origem das conexões contendo spam, sem uma<br />
confirmação direta <strong>de</strong> sua natureza [Xie et al. 2008]. Outro trabalho que se orienta por<br />
esses princípios gerais é o da ferramenta <strong>de</strong> <strong>de</strong>tecção BotGad [Choi et al. 2009]. Nesse<br />
2 http://dionaea.carnivore.it/<br />
3 http://anubis.iseclab.org/<br />
4 http://www.norman.com/security_center/security_tools/<br />
139
caso, um grupo <strong>de</strong> máquinas com certos comportamentos comuns na re<strong>de</strong> (p.ex., consultas<br />
DNS semelhantes) é i<strong>de</strong>ntificado como uma botnet.<br />
Os trabalhos mais próximos <strong>de</strong>sta proposta são Botlab [John et al. 2009] e Mimetic<br />
Internet [Miwa et al. 2007]. Botlab propõe uma arquitetura <strong>de</strong> análise segura, mas<br />
<strong>de</strong>pen<strong>de</strong> diretamente da intervenção <strong>de</strong> um operador, que <strong>de</strong>ve <strong>de</strong>cidir como reagir a cada<br />
ação do bot sendo observado. Já Mimetic Internet propõe um arcabouço isolado que tenta<br />
reproduzir a Internet, com servidores que simulam sites populares, por exemplo, mas que<br />
não permite nenhum acesso à Internet real. Nesse caso, um spambot não seria capaz <strong>de</strong><br />
contactar o restante da sua re<strong>de</strong>, o que limitaria sua ação.<br />
5. Conclusão e trabalhos futuros<br />
Observar o comportamento <strong>de</strong> uma botnet em uma campanha <strong>de</strong> spam a partir <strong>de</strong> um<br />
<strong>de</strong> seus componentes po<strong>de</strong> gerar um gran<strong>de</strong> volume <strong>de</strong> informações sobre esses sistemas<br />
e formas <strong>de</strong> evitar sua ação. Entretanto, realizar esse estudo exige que se permita que<br />
um spambot acesse a Internet para estabelecer contato com seu comando-e-controle e se<br />
convencer <strong>de</strong> que está executando livremente, ao mesmo tempo que se evite que o mesmo<br />
cause danos reais à re<strong>de</strong> (p.ex., pelo envio <strong>de</strong> spam).<br />
A arquitetura <strong>de</strong>scrita neste artigo visa oferecer condições para que essa análise<br />
seja possível, <strong>de</strong> forma bastante automatizada. A combinação <strong>de</strong> um filtro <strong>de</strong> pacotes<br />
altamente flexível, com capacida<strong>de</strong> <strong>de</strong> redirecionamento e re-escrita <strong>de</strong> pacotes, e um<br />
conjunto <strong>de</strong> emuladores <strong>de</strong> serviços operando <strong>de</strong> forma integrada a esse filtro po<strong>de</strong> permitir<br />
que pacotes/fluxos i<strong>de</strong>ntificados como <strong>de</strong> controle possam ter permissão para acessar a<br />
Internet, enquanto comportamentos daninhos, como o envio <strong>de</strong> spam, po<strong>de</strong>m ser direcionados<br />
para servidores apropriados.<br />
A implementação <strong>de</strong>sse sistema se encontra em curso. Apesar <strong>de</strong> já concebermos<br />
uma solução completa, há ainda muito espaço para pesquisa no <strong>de</strong>senvolvimento <strong>de</strong><br />
métodos para i<strong>de</strong>ntificação <strong>de</strong> padrões <strong>de</strong> controle e <strong>de</strong> ataques e para o aumento do grau<br />
<strong>de</strong> automatização dos mecanismos <strong>de</strong> redirecionamento e emulação <strong>de</strong> serviços.<br />
Referências<br />
Choi, H., Lee, H., and Kim, H. (2009). Botgad: <strong>de</strong>tecting botnets by capturing group activities<br />
in network traffic. In Proceedings of the Fourth International ICST COMSWARE,<br />
pages 1–8, New York, EUA. ACM.<br />
Guerra, P. H. C. et al. (2010). Exploring the spam arms race to characterize spam evolution.<br />
In Proceedings of the 7th CEAS, Redmond, WA.<br />
John, J. P. et al. (2009). Studying spamming botnets using botlab. In Proceedings of the<br />
6th USENIX NSDI, pages 291–306.<br />
Miwa, S. et al. (2007). Design and implementation of an isolated sandbox with mimetic<br />
internet used to analyze malwares. In Proceedings of the USENIX DETER Workshop<br />
on Cyber Security Experimentation and Test, pages 1–9.<br />
Steding-Jessen, K. et al. (2008). Using low-interaction honeypots to study the abuse of<br />
open proxies to send spam. Infocomp (UFLA), 7:44–52.<br />
Xie, Y. et al. (2008). Spamming botnets: signatures and characteristics. SIGCOMM CCR,<br />
38(4):171–182.<br />
140
Fatores que afetam o comportamento <strong>de</strong> spammers na re<strong>de</strong><br />
Gabriel C. Silva 1 , Klaus Steding-Jessen 2 , Cristine Hoepers 2 ,<br />
Marcelo H.P. Chaves 2 , Wagner Meira Jr. 1 , Dorgival Gue<strong>de</strong>s 1<br />
1 Departamento <strong>de</strong> Ciência da Computação – Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Minas Gerais<br />
2 CERT.br – Centro <strong>de</strong> Estudos, Resposta e Tratamento <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Segurança<br />
NIC.br – Núcleo <strong>de</strong> Informação e Coor<strong>de</strong>nação do Ponto Br<br />
{gabrielc,meira,dorgival}@dcc.ufmg.br<br />
{jessen,cristine,mhp}@cert.br<br />
Resumo. O propósito <strong>de</strong>ste trabalho é enten<strong>de</strong>r melhor o comportamento <strong>de</strong><br />
spammers (responsáveis pelo envio <strong>de</strong> mensagens <strong>de</strong> spam) na re<strong>de</strong>, e assim<br />
trazer mais informações para o combate a eles. Para isso utilizamos um sistema<br />
<strong>de</strong> honeypots virtualizados especialmente <strong>de</strong>senvolvidos para a coleta <strong>de</strong><br />
spam que possibilita avaliar a influência <strong>de</strong> diversos fatores no comportamento<br />
dos transmissores. Os resultados mostram que as variações na configuração<br />
dos cenários po<strong>de</strong> afetar drasticamente o volume <strong>de</strong> spam coletado, bem como<br />
suas características internas. Em particular, o trabalho i<strong>de</strong>ntificou dois tipos<br />
bastante diversos <strong>de</strong> transmissores: spammers em larga escala, que usam poucas<br />
máquinas com muitos recursos, e botnets, que enviam cada uma um número<br />
limitado <strong>de</strong> mensagens.<br />
1. Introdução<br />
O correio eletrônico, apesar <strong>de</strong> ser um dos mais antigos serviços da Internet, continua<br />
sendo um dos mais populares. Segundo um estudo do grupo Radicati, em maio <strong>de</strong> 2009,<br />
havia mais <strong>de</strong> 1,9 bilhões <strong>de</strong> usuários <strong>de</strong> e-mail em todo o mundo, trocando 294 bilhões<br />
<strong>de</strong> mensagens por dia (em média, são mais <strong>de</strong> 2.8 milhões <strong>de</strong> novos e-mails que trafegam<br />
na re<strong>de</strong> por segundo) [Radicati 2009]. São dados impressionantes para um serviço tão<br />
antigo para os padrões da Internet.<br />
Muitos consi<strong>de</strong>ram que o sucesso da popularização do e-mail se <strong>de</strong>ve a sua facilida<strong>de</strong><br />
<strong>de</strong> uso e simplicida<strong>de</strong> <strong>de</strong> projeto. Porém, <strong>de</strong>vido às <strong>de</strong>ficiências <strong>de</strong> segurança <strong>de</strong> seu<br />
protocolo e ao seu baixo custo <strong>de</strong> operação, o e-mail é alvo constante <strong>de</strong> abusos como o<br />
spam: mensagens eletrônicas não solicitadas, normalmente enviadas em larga escala com<br />
objetivos que variam <strong>de</strong>s<strong>de</strong> marketing simples até frau<strong>de</strong> i<strong>de</strong>ológica e/ou bancária.<br />
Com objetivo <strong>de</strong> conter esse problema foram <strong>de</strong>senvolvidas tecnologias avançadas<br />
para a criação <strong>de</strong> filtros <strong>de</strong> <strong>de</strong>tecção do spam. Entretanto, dada a constante evolução das<br />
técnicas <strong>de</strong> evasão e ofuscação, muitos <strong>de</strong>sses filtros <strong>de</strong>pen<strong>de</strong>m <strong>de</strong> constantes e custosas<br />
manutenções, atualizações e refinamentos para que se mantenham eficazes. Tentar solucionar<br />
este problema com filtros mais restritivos nem sempre é uma saída, pois há o risco<br />
<strong>de</strong> gerar excesso <strong>de</strong> falsos positivos tornando a ferramenta inútil, ou pior, causando um<br />
problema ainda maior ao criar aversão no usuário, que po<strong>de</strong> preferir até ficar <strong>de</strong>sprotegido.<br />
Uma forma mais recente e diferenciada <strong>de</strong> abordar o problema do spam é estudá-lo<br />
<strong>de</strong> uma nova óptica: enten<strong>de</strong>r o comportamento dos spammers (responsáveis pelo envio<br />
do spam) [Giles 2010] <strong>de</strong>ntro da re<strong>de</strong>. Nessa abordagem procura-se não apenas analisar os<br />
141
padrões encontrados <strong>de</strong>ntro das mensagens enviadas ou os métodos <strong>de</strong> evasão <strong>de</strong> <strong>de</strong>tecção<br />
utilizados pelos autores, mas também caracterizar os fatores ou a forma como o spammer<br />
se comporta em diferentes âmbitos e cenários. Esse enfoque é <strong>de</strong> particular interesse para<br />
a comunida<strong>de</strong> <strong>de</strong> segurança, já que po<strong>de</strong> gerar informações que permitam i<strong>de</strong>ntificar e<br />
bloquear tais abusos antes que consumam recursos <strong>de</strong> re<strong>de</strong> e dos servidores alvo.<br />
É indispensável enten<strong>de</strong>r o que leva o spammer a dar esse tipo <strong>de</strong> preferencia, ao<br />
dar escolher a máquinas na re<strong>de</strong> com <strong>de</strong>terminadas características, e ainda enten<strong>de</strong>r quais<br />
tipos <strong>de</strong> ataques são mais comuns para a disseminação do spam. Esse tipo <strong>de</strong> informação<br />
comportamental po<strong>de</strong> levar a novos tipos <strong>de</strong> <strong>de</strong>fesas precoces contra o spam, ainda antes<br />
do envio na re<strong>de</strong>, e po<strong>de</strong> ainda abrir caminho a novos tipos <strong>de</strong> pesquisas na área. Apenas<br />
a análise do conteúdo <strong>de</strong> spam não gera evidências para obter essas informações; é<br />
necessário analisar o abuso em si e não apenas isso, mas também verificar como o comportamento<br />
do spammer muda se o alvo do abuso tem diferentes características.<br />
Para realizar esse estudo é necessário criar diferentes cenários para o ataque dos<br />
spammers para possibilitar a análise <strong>de</strong> quanto as métricas consi<strong>de</strong>radas são influenciadas<br />
pela mudança dos fatores. A dificulda<strong>de</strong> <strong>de</strong> analisar a origem e o caminho das mensagens<br />
na re<strong>de</strong>, ainda é uma das principais barreiras na caracterização do comportamento<br />
dos spammers. O objetivo <strong>de</strong>ste trabalho é fazer uma caracterização do comportamento<br />
dos spammers ao serem confrontados com diversos cenários <strong>de</strong> ataque. Para isso quantificamos<br />
a influência <strong>de</strong> diversos fatores (como restrições <strong>de</strong> banda, vulnerabilida<strong>de</strong>s<br />
disponíveis para ataque, etc) em métricas (quantida<strong>de</strong> <strong>de</strong> spam enviado, código <strong>de</strong> área<br />
dos en<strong>de</strong>reços utilizados, tipos <strong>de</strong> ataque aplicados) que, em conjunto, são capazes <strong>de</strong><br />
caracterizar o comportamento em estudo.<br />
Para atingir esse objetivo foi projetado e implementado uma coleta <strong>de</strong> dados especial<br />
capaz <strong>de</strong> captar spam em diferentes cenários e assim possibilitar a analise da influência<br />
<strong>de</strong> diferentes combinações <strong>de</strong> fatores nas métricas <strong>de</strong> interesse. Para realizar esse<br />
processo <strong>de</strong> coleta, foram utilizados coletores <strong>de</strong> spam <strong>de</strong>senvolvidos pela equipe <strong>de</strong> do<br />
Cert.br (Centro <strong>de</strong> Estudos, Resposta e Tratamento <strong>de</strong> Inci<strong>de</strong>ntes <strong>de</strong> Segurança no Brasil).<br />
O restante <strong>de</strong>ste trabalho está organizado da seguinte forma: a seção 2 <strong>de</strong>senvolve<br />
a metodologia <strong>de</strong> pesquisa adotado na coleta e na análise dos dados; a seção 3 mostra e<br />
discute os resultados obtidos na pesquisa; a seção 4 apresenta os trabalhos relacionados ao<br />
estudo; finalmente, a seção 5 apresenta algumas conclusões e discute os trabalhos futuros.<br />
2. Metodologia<br />
Durante a realização <strong>de</strong> vários dos trabalhos anteriores do nosso grupo <strong>de</strong> pesquisa utilizando<br />
um honeypot coletor <strong>de</strong> spam, observou-se indícios <strong>de</strong> que vários dos fatores<br />
no processo <strong>de</strong> coleta <strong>de</strong> dados influenciavam consi<strong>de</strong>ravelmente na quantida<strong>de</strong> e nas<br />
características do spam coletado. Essa influência, portanto, evi<strong>de</strong>nciava uma aparente<br />
correlação do comportamento dos spammers e as proprieda<strong>de</strong>s do alvo atacado (no caso,<br />
as proprieda<strong>de</strong>s configuradas na interface exposta pelo honeypot). A concepção e consequente<br />
arquitetura metodológica <strong>de</strong>ste estudo nasceu exatamente da i<strong>de</strong>ia <strong>de</strong> verificar e<br />
quantificar essa correlação.<br />
Dentre os indícios <strong>de</strong> correlação mais forte entre o comportamento dos spammers<br />
e as características do alvo, foram selecionados os fatores que seriam avaliados no estudo,<br />
utilizando o princípio do experimento fatorial.<br />
142
2.1. O coletor <strong>de</strong> spam utilizado e as possibilida<strong>de</strong>s <strong>de</strong> configuração disponíveis<br />
O coletor <strong>de</strong> spam utilizado é uma evolução do sistema <strong>de</strong>senvolvido<br />
por [Steding-Jessen et al. 2008], com diversas melhorias em termos <strong>de</strong> <strong>de</strong>sempenho<br />
e organização <strong>de</strong> dados, mas com funcionalida<strong>de</strong>s semelhantes. Consi<strong>de</strong>rando-se seu<br />
modo <strong>de</strong> operação, há pelo menos quatro dimensões <strong>de</strong> configuração que são importantes<br />
para o <strong>de</strong>senvolvimento <strong>de</strong>ste trabalho. Um esquema simplificado do funcionamento<br />
do coletor <strong>de</strong> spam é apresentado na figura 1 e os <strong>de</strong>talhes <strong>de</strong> operação relevantes são<br />
discutidos a seguir.<br />
Figura 1. Esquema simplificado do funcionamento do coletor (honeypot).<br />
Tratamento <strong>de</strong> mensagens <strong>de</strong> teste. Como mencionado anteriormente, um dos<br />
objetivos <strong>de</strong>ste trabalho é coletar spam sem permitir que ele se propague pela re<strong>de</strong>. A<br />
única situação em que uma mensagem po<strong>de</strong> ser enviada pelo coletor é no caso <strong>de</strong> mensagens<br />
que sejam i<strong>de</strong>ntificadas como mensagens <strong>de</strong> teste geradas pelo atacante. Ao longo<br />
do <strong>de</strong>senvolvimento do honeypot <strong>de</strong> coleta <strong>de</strong> spam, os autores i<strong>de</strong>ntificaram padrões<br />
claramente usados pelos spammers para registrar a operação da máquina sendo atacada.<br />
Tais mensagens parecer ter como objetivo testar o funcionamento da máquina atacada. O<br />
spampot po<strong>de</strong> encaminhar essas mensagens ou não, <strong>de</strong>pen<strong>de</strong>ndo da sua configuração.<br />
Protocolos emulados. O coletor aceita conexões na porta 25/tcp, tradicionalmente<br />
associada ao protocolo SMTP, e outras que costumam ser usadas como portas<br />
alternativas, como a porta 587/tcp. Para qualquer conexão observada nessas portas, o<br />
coletor se comporta como um servidor SMTP padrão (mail relay), passando pelas etapas<br />
<strong>de</strong> inicialização da conexão SMTP corretamente. Quando o transmissor que iniciou<br />
a conexão inicial os comandos do protocolo para envio <strong>de</strong> uma mensagem a um <strong>de</strong>stinatário<br />
(ou grupo <strong>de</strong>les), o coletor aceita a mensagem, armazena-a localmente e respon<strong>de</strong><br />
com o código <strong>de</strong> sucesso para a operação, indicando que a mensagem seria corretamente<br />
encaminhada. O spampot também implementa emuladores para os protocolos SOCKS4,<br />
SOCKS4a, SOCK5 e HTTP, associados a todas as portas comumente usadas por esses<br />
protocolos que emulam o comportamento <strong>de</strong> proxy aberto associado a esses protocolos.<br />
Quando uma conexão é estabelecida para uma <strong>de</strong>ssas portas, se o comando seguinte é um<br />
pedido <strong>de</strong> conexão (proxy) para o porto 25 <strong>de</strong> outra máquina, o spampot passa a simular o<br />
servidor <strong>de</strong> correio naquela conexão, como no caso do open relay local, mas respon<strong>de</strong>ndo<br />
como o servidor que seria o alvo.<br />
Utilização (ou não) <strong>de</strong> listas <strong>de</strong> bloqueio. No contexto mundial do combate à<br />
disseminação <strong>de</strong> spam, as listas <strong>de</strong> bloqueio são consi<strong>de</strong>radas um elemento importante,<br />
especialmente do ponto <strong>de</strong> vista dos administradores <strong>de</strong> gran<strong>de</strong>s servidores <strong>de</strong> correio<br />
eletrônico. Há muita controvérsia, entretanto, sobre a efetivida<strong>de</strong> <strong>de</strong>ssas listas ao longo<br />
143
do tempo. Para fornecer mais informações a esse respeito, o spampot mantém um acompanhamento<br />
da efetivida<strong>de</strong> da lista Spamhaus Zen 1 , uma das listas consi<strong>de</strong>radas mais<br />
eficazes na i<strong>de</strong>ntificação <strong>de</strong> máquinas que enviam spam. Para cada conexão recebida, o<br />
coletor verifica o status daquele en<strong>de</strong>reço IP na lista e armazena o resultado.<br />
Conexões concorrentes. Além das opções anteriores, o coletor po<strong>de</strong> ser configurado<br />
para limitar on número <strong>de</strong> conexões concorrentes permitidas, bem como restringir<br />
o número <strong>de</strong> conexões simultâneas <strong>de</strong> uma mesma origem. Esse mecanismo po<strong>de</strong><br />
ser usado para evitar que transmissores <strong>de</strong> maior capacida<strong>de</strong> “monopolizem” o spampot,<br />
abrindo diversas conexões ao mesmo tempo e se valendo do princípio <strong>de</strong> controle <strong>de</strong> congestionamento<br />
do protocolo TCP para garantir uma fração maior da banda <strong>de</strong> acesso ao<br />
computador atacado.<br />
2.2. Opções <strong>de</strong> configuração utilizados no experimento<br />
Para avaliar o comportamento dos spammers, consi<strong>de</strong>ramos então as quatro dimensões<br />
<strong>de</strong> configuração disponíveis: (i) o repasse <strong>de</strong> mensagens <strong>de</strong> teste, (ii) o tipo <strong>de</strong> protocolo<br />
vulnerável, (iii) a <strong>de</strong> rejeição <strong>de</strong> en<strong>de</strong>reços encontrados em listas negras e (iv) restrições<br />
ao número <strong>de</strong> conexões aceitas concorrentemente. Com a combinação <strong>de</strong>sses fatores,<br />
cada um com dois níveis, temos 16 cenários diferentes que <strong>de</strong>vem ser consi<strong>de</strong>rados no<br />
experimento fatorial.<br />
No restante <strong>de</strong>ste trabalho, em diversos momentos é importante nos referirmos<br />
ao cenário <strong>de</strong> coleta consi<strong>de</strong>rado. Cada cenário foi i<strong>de</strong>ntificado como uma sequência <strong>de</strong><br />
quatro bits, um para cada dimensão na or<strong>de</strong>m apresentada, indicando quais variáveis <strong>de</strong><br />
configuração estava ativas em cada caso. Nos resultados a seguir, essa notação é usada<br />
em alguns casos por limitações <strong>de</strong> espaço. Outra forma também adotada, ainda compacta<br />
mas <strong>de</strong> mais fácil interpretação, consiste em utilizar as abreviaturas TMSG, SMTP, DNBL<br />
e CLIM para i<strong>de</strong>ntificar, respectivamente, as opções <strong>de</strong> (i) permitir o encaminhamento <strong>de</strong><br />
mensagens, (ii) limitar o abuso ao protocolo SMTP, (iii) negar conexão a máquinas que<br />
figurem em listas <strong>de</strong> bloqueio da SpamHaus e (iv) limitar o número <strong>de</strong> conexões concorrentes.<br />
Para facilitar a interpretação, essas abreviaturas são concatenadas para gerar<br />
uma sequência posicional. Assim sendo, TMSG.SMTP.DNBL.CLIM representa todas a<br />
configuração em que as mensagens <strong>de</strong> teste são repassadas, apenas o protocolo SMTP<br />
está disponível, a lista <strong>de</strong> bloqueio da Spamhaus é utilizada e há limites para conexões<br />
simulâneas. Os casos em que aquelas configurações particulares não ativadas são representadas<br />
pela sequência “‘----”, que indica, <strong>de</strong>pen<strong>de</strong>ndo da posição, que (i) o repasse<br />
<strong>de</strong> mensagens <strong>de</strong> teste não é permitido, ou (ii) os protocolos <strong>de</strong> proxy (HTTP, SOCKS)<br />
também são emulados, ou (iii) não há rejeição <strong>de</strong> conexões por listas <strong>de</strong> bloqueio, ou (iv)<br />
não á restrições ao número <strong>de</strong> conexões concorrentes. Nas discussões a seguir, além <strong>de</strong>ssas<br />
convenções a seguir, adotamos o uso do asterisco (*) para indicar quando <strong>de</strong>sejamos<br />
agrupar cenários in<strong>de</strong>pen<strong>de</strong>ntemente <strong>de</strong> alguma variável (p.ex.,----.SMTP.*.* representa<br />
todas as configurações que não encaminham mensagens <strong>de</strong> teste e emulam apenas<br />
mail relay).<br />
2.3. Arquitetura <strong>de</strong> coleta<br />
Para cada um dos 16 cenários um coletor <strong>de</strong>ve ser instanciado. Como o coletor não exige<br />
uma máquina com muitos recursos, a solução adotada foi uma solução <strong>de</strong> virtualização<br />
1 http://www.spamhaus.org/zen/<br />
144
<strong>de</strong> máquinas para implementar os 16 cenários como 16 máquinas virtuais executando<br />
em uma mesma máquina física. O uso <strong>de</strong> virtualização garante o isolamento entre os<br />
recursos <strong>de</strong> hardware <strong>de</strong> cada máquina, evitando efeitos inesperados por interferência<br />
entre coletores, e permite um melhor aproveitamento dos recursos computacionais do<br />
laboratório.<br />
Como plataforma <strong>de</strong> virtualização utilizamos o VirtualBox versão 3.2.12, uma<br />
plataforma <strong>de</strong> código aberto, executada em um sistema Linux com kernel 2.6 (Debian<br />
GNULinux 5.0). Cada máquina virtual tem um en<strong>de</strong>reço IP único, mas o acesso <strong>de</strong> re<strong>de</strong><br />
externo é feito compartilhando uma única interface <strong>de</strong> re<strong>de</strong> real através <strong>de</strong> um comutador<br />
virtual (a linux bridge) que conecta as interfaces virtuais <strong>de</strong> cada coletor. O canal<br />
<strong>de</strong> acesso foi fornecido pelo POP-MG (Ponto <strong>de</strong> Presença da RNP em Minas Gerais, na<br />
UFMG) com uma banda <strong>de</strong> 100 Mbps, muito superior à <strong>de</strong>manda agregada dos 16 coletores<br />
(configurados cada um com um limite <strong>de</strong> 1 Mbps). Quando a opção CLIM foi<br />
habilitada, o número <strong>de</strong> conexões simultâneas ao coletor em questão foi limitado a 250 e<br />
as conexões concorrentes <strong>de</strong> um mesmo en<strong>de</strong>reço <strong>de</strong> origem foram limitadas a três.<br />
Ao entrar em operação, cada coletor se torna visível para máquinas que façam varreduras<br />
<strong>de</strong> portas pelo espaço <strong>de</strong> en<strong>de</strong>reços IP. Em geral, cada coletor leva algumas horas<br />
para ser i<strong>de</strong>ntificado pelo primeiro processo <strong>de</strong> varredura e em alguns dias o volume <strong>de</strong><br />
acessos atinge níveis mais altos, apesar do tráfego diário continuar a variar razoavelmente<br />
ao longo dos dias. Toda a análise realizada neste trabalho consi<strong>de</strong>ra dados coletados <strong>de</strong>pois<br />
que todos os coletores já estavam ativos por mais <strong>de</strong> um mês, o que garante que todos<br />
já tinham se tornado bastante visíveis na re<strong>de</strong>, ainda mais consi<strong>de</strong>rando-se que utilizavam<br />
en<strong>de</strong>reços IP adjacentes — se um dos coletores foi acessado por uma varredura, muito<br />
provavelmente todos os <strong>de</strong>mais o seriam no mesmo processo.<br />
3. Resultados<br />
A arquitetura <strong>de</strong> coleta foi colocada em operação em um servidor <strong>de</strong> gran<strong>de</strong> porte do<br />
projeto, instalado nas <strong>de</strong>pendências do POP-MG. Os 16 cenários <strong>de</strong> coleta foram configurados<br />
como máquinas virtuais e colocadas em operação simultaneamente. A coleta foi<br />
iniciada em 22/12/2010 e durou até 22/07/2011. Para evitar efeitos in<strong>de</strong>sejados para a<br />
análise, todos os dias durante o período <strong>de</strong> coleta em que um ou mais coletores não estava<br />
em operação foram retirados do conjunto <strong>de</strong> análise. Nesse processo, 97 dias foram expurgados<br />
da coleta (houve um gran<strong>de</strong> número <strong>de</strong> falhas <strong>de</strong> energia <strong>de</strong>vido ao período <strong>de</strong><br />
chuvas). O conjunto final consi<strong>de</strong>rado seguro para análise é composto por 116 dias naquele<br />
período <strong>de</strong> coleta. A tabela 1 indica alguns dos gran<strong>de</strong>s números relativos à coleta.<br />
Período: 22/12/2010 a 22/07/2011 (213 dias)<br />
Dias consi<strong>de</strong>rados: 116<br />
Tráfego total (GB): 3.495<br />
Mensagens coletadas: 182.564.598<br />
Conexões registradas: 453.033<br />
Tabela 1. Dados gerais sobre a coleta utilizada<br />
O experimento fatorial nos permite i<strong>de</strong>ntificar os gran<strong>de</strong>s fatores <strong>de</strong> impacto na<br />
coleta. Por limitações <strong>de</strong> espaço não apresentamos aqui os resultados da análise segundo<br />
145
o princípio do fatorial 2 k r, mas os resultados <strong>de</strong>ssa análise se refletem nos resultados<br />
da discussão apresentada a seguir. Nesta seção avaliamos os dados agregados por coletor,<br />
rankings associados às diversas métricas e dados <strong>de</strong> distribuição para oferecer uma<br />
discussão mais <strong>de</strong>talhada para os impactos <strong>de</strong> cada fator <strong>de</strong> configuração, que po<strong>de</strong>riam<br />
também ser apresentados (<strong>de</strong> forma mais resumida) através dos resultados do fatorial.<br />
A tabela 2 apresenta os valores agregados das métricas consi<strong>de</strong>radas durante esta<br />
análise. A or<strong>de</strong>m dos cenários na tabela foi escolhida para facilitar a discussão.<br />
Duas primeiras características dos dados são claramente visíveis com relação ao<br />
ao volume <strong>de</strong> tráfego coletado: o impacto da restrição da coleta ao comportamento <strong>de</strong><br />
open mail relay apenas (SMTP) e da restrição ao número <strong>de</strong> conexões concorrentes.<br />
Bits Abreviaturas Volume (GB) Mensagens Conexões IPs<br />
0000 ----.----.----.---- 734,34 19.451.340 13.031 2.498<br />
0001 ----.----.----.CLIM 281,46 10.396.105 10.290 2.051<br />
0010 ----.----.DNBL.---- 562,36 16.087.849 9.513 688<br />
0011 ----.----.DNBL.CLIM 324,25 24.563.202 14.766 828<br />
1010 TMSG.----.DNBL.---- 503,23 17.127.447 10.059 734<br />
1011 TMSG.----.DNBL.CLIM 223,27 13.324.938 6.372 838<br />
1000 TMSG.----.----.---- 450,45 17.981.985 64.582 26.421<br />
1001 TMSG.----.----.CLIM 217,48 17.246.326 71.329 32.710<br />
1100 TMSG.SMTP.----.---- 101,76 28.437.165 125.486 73.332<br />
1101 TMSG.SMTP.----.CLIM 86,36 17.785.180 122.243 64.514<br />
1110 TMSG.SMTP.DNBL.---- 3,36 53.248 1.965 439<br />
1111 TMSG.SMTP.DNBL.CLIM 6,51 108.705 2.850 505<br />
0100 ----.SMTP.----.---- 0 (655 KB) 474 264 199<br />
0101 ----.SMTP.----.CLIM 0 (573 KB) 480 251 198<br />
0110 ----.SMTP.DNBL.---- 0 (82 KB) 76 16 11<br />
0111 ----.SMTP.DNBL.CLIM 0 (82 KB) 78 16 11<br />
Tabela 2. Resultados agregados para métricas cumulativas<br />
Mensagens <strong>de</strong> teste e open mail relays<br />
O impacto da restrição SMTP é extremamente significativo. Po<strong>de</strong>mos ver pela tabela 2<br />
que o volume coletado nos cenários apenas com mail relay é or<strong>de</strong>ns <strong>de</strong> gran<strong>de</strong>za inferior<br />
aos <strong>de</strong>mais, em particular nos casos on<strong>de</strong> o encaminhamento <strong>de</strong> mensagens <strong>de</strong> teste não<br />
é permitido (cenários ----.SMTP.*.*). Por inspeção direta das mensagens coletadas,<br />
verificamos que todas (salvo alguma exceções isoladas) são mensagens <strong>de</strong> teste, o que sugere<br />
fortemente que spammers só abusam open mail relays se conseguem enviar primeiro<br />
uma mensagem <strong>de</strong> teste.<br />
Além disso, verificamos ainda que se habilitamos a rejeição <strong>de</strong> conexões a partir<br />
<strong>de</strong> máquinas cujos en<strong>de</strong>reços aparecem em listas negras, o resultado é ainda pior. Aparentemente,<br />
a gran<strong>de</strong> maioria das máquinas <strong>de</strong> spammers que se valem <strong>de</strong>sse recurso já<br />
foram incluídas em listas negras. Isso faz sentido: se consi<strong>de</strong>rarmos que o coletor <strong>de</strong><br />
146
spam aparece se faz passar por uma máquina <strong>de</strong> usuário infectada, é do interesse do transmissor<br />
que já foi incluído em uma lista negra se escon<strong>de</strong>r atrás <strong>de</strong> outro mail relay para<br />
ocultar sua i<strong>de</strong>ntida<strong>de</strong>, especialmente se aquele relay já <strong>de</strong>monstrou sua capacida<strong>de</strong> <strong>de</strong><br />
enviar uma mensagem (<strong>de</strong> teste) com sucesso.<br />
É interessante observar o número <strong>de</strong> en<strong>de</strong>reços IP distintos observados tentando<br />
enviar mensagens em cada um daquele cenários: apenas 11 máquinas tentaram enviar<br />
mensagens nos cenários ----.STMP.DNBL.*, mas esse número já sobe para pelo menos<br />
439 nos cenários TMSG.STMP.DNBL.*. Como em um primeiro momento basicamente<br />
os mesmos 11 transmissores enviaram mensagens em todos esses casos, o encaminhamento<br />
bem sucedido das mensagens <strong>de</strong> teste daqueles onze foi suficiente para aumentar<br />
em quase 400 vezes o número <strong>de</strong> máquinas que tentaram enviar mensagens usando<br />
aqueles coletores. Nos cenários *.STMP.----.* (sem rejeição baseada em listas negras),<br />
o encaminhamento <strong>de</strong> mensagens <strong>de</strong> teste fez com que o número <strong>de</strong> máquinas diferentes<br />
passasse <strong>de</strong> 198 para 64.514 no pior caso, um aumento <strong>de</strong> mais <strong>de</strong> 325 vezes. Esse<br />
comportamento sugere claramente que mensagens <strong>de</strong> teste estão associadas à atuação <strong>de</strong><br />
botnets: <strong>de</strong>pois que uma mensagem <strong>de</strong> teste é entregue com sucesso, a i<strong>de</strong>ntificação da<br />
máquina supostamente vulnerável é distribuído entre vários computadores da re<strong>de</strong>, que<br />
passaram todos a se aproveitar da máquina disponível.<br />
O impacto da limitação <strong>de</strong> conexões concorrentes<br />
O segundo fator i<strong>de</strong>ntificado pelo experimento fatorial como responsável por variações<br />
no volume <strong>de</strong> mensagens foi a limitação no número <strong>de</strong> conexões simultâneas permitidas.<br />
Esse impacto po<strong>de</strong> ser observado ao compararmos os pares <strong>de</strong> cenários que diferem apenas<br />
pelo fator CLIM: aqueles que têm a limitação recebem um volume menor <strong>de</strong> tráfego<br />
que aqueles que não têm a limitação. Isso é um primeiro indício <strong>de</strong> que há máquinas<br />
<strong>de</strong> spammers que utilizam muitas conexões em paralelo para aumentar sua taxa <strong>de</strong> transmissão<br />
(como TCP tem um sistema <strong>de</strong> controle <strong>de</strong> congestionamento que visa distribuir a<br />
banda entre fluxos, um transmissor com mais conexões teria uma fração maior da banda<br />
disponível). Em situações sem limitadores, esses transmissores po<strong>de</strong>m eclipsar outras<br />
fontes <strong>de</strong> spam e aumentar seu aproveitamento da máquina abusada.<br />
Configurações antagônicas com efeitos semelhantes<br />
Se observarmos os diversos valores exibidos na tabela 2, notaremos que não há um padrão<br />
comum às métricas (exceto entre conexões e número <strong>de</strong> en<strong>de</strong>reços IP <strong>de</strong> origem distintos).<br />
O volume <strong>de</strong> tráfego observado por cada cenário não apresenta grupos notáveis,<br />
apesar <strong>de</strong> alguns pontos merecerem uma discussão posteriormente. Já no número <strong>de</strong> mensagens,<br />
temos dois cenários, TMSG.SMTP.----.---- e ----.----.DNBL.CLIM,<br />
com configurações opostas, que recebem o maior número <strong>de</strong> mensagens; <strong>de</strong>pois, um<br />
grupo com configurações variadas com valores semelhantes e dois cenários com resultados<br />
ligeiramente inferiores. Claramente, há uma gran<strong>de</strong> variação entre os tipos <strong>de</strong> mensagens,<br />
pois o primeiro e o segundo cenários com mais mensagens são apenas o nono e o<br />
quinto, respectivamente, em volume <strong>de</strong> tráfego. Além disso, os três cenários com maior<br />
número <strong>de</strong> conexões são nono, décimo e oitavo, respectivamente, em número <strong>de</strong> mensa-<br />
147
gens. Já os três cenários com o maior volume <strong>de</strong> tráfego observado são apenas o sexto,<br />
nono e oitavo em termos <strong>de</strong> número <strong>de</strong> conexões e en<strong>de</strong>reços IP distintos observados.<br />
Em relação ao cenário ----.----.----.----, certamente as condições <strong>de</strong><br />
emular proxies e mail relay, não rejeitar conexões e não limitar o número <strong>de</strong> conexões<br />
são todas conceitualmente benéficas para um maior volume <strong>de</strong> coleta. Entretanto, em<br />
um primeiro momento, esperava-se que a configuração com ainda mais flexibilida<strong>de</strong><br />
(TMSG.----.----.----, que repassa mensagens <strong>de</strong> teste) recebesse o maior volume<br />
<strong>de</strong> tráfego. Entretanto, como vimos, o repasse das mensagens <strong>de</strong> teste causa o aumento<br />
do abuso da máquina por botnets com mensagens menores. Esse abuso gera mais conexões<br />
<strong>de</strong> curta duração para aquele cenário, que po<strong>de</strong>m limitar a banda disponível para<br />
os gran<strong>de</strong>s transmissores.<br />
Já o cenário ----.----.DNBL.CLIM, por não repassar mensagens <strong>de</strong> teste,<br />
seria a princípio um alvo maior para os mesmos transmissores <strong>de</strong> maior volume e mensagens<br />
maiores, pelo que se esperava um menor número <strong>de</strong> mensagens nesse caso (certamente,<br />
menos que segundo lugar nessa métrica). Nesse caso, uma análise dos en<strong>de</strong>reços<br />
encontrados entre os maiores transmissores naquele caso indica um conjunto gran<strong>de</strong> <strong>de</strong><br />
máquinas <strong>de</strong> uma mesma faixa <strong>de</strong> en<strong>de</strong>reços (184.95.36/23), com um volume <strong>de</strong> tráfego<br />
significativo, mas com mensagens bem menores que as dos transmissores que aparecem<br />
nos primeiros lugares. O en<strong>de</strong>reço que envia o maior volume (terceiro em número <strong>de</strong> mensagens)<br />
tem uma média <strong>de</strong> 55 KB por mensagem e outros três encontrados entre os cinco<br />
primeiros nas duas listas têm médias acima <strong>de</strong> 20 KB por mensagem. Já as máquinas<br />
daquela faixa <strong>de</strong> en<strong>de</strong>reços enviam mensagens <strong>de</strong> 3,5 KB em média (daí, uma contagem<br />
maior <strong>de</strong> mensagens sem um volume tão significativo. Aparentemente, essas máquinas<br />
pertencem a um mesmo spammer e tiveram seu acesso facilitado naquele cenário exatamente<br />
pelas condições mais restritivas para os transmissores mais pesados.<br />
O abuso a proxies está associado a spammers com mais recursos<br />
Nas estatísticas <strong>de</strong> trabalhos anteriores do grupo Spammining, coletores semelhantes aos<br />
utilizados neste trabalho, quando emulando tanto proxies quanto mail relays, observam<br />
que os primeiros são responsáveis por mais <strong>de</strong> 90 % do volume e do número <strong>de</strong> mensagens<br />
[Steding-Jessen et al. 2008]. Estatísticas <strong>de</strong> análise das coletas realizadas pelo<br />
Cert.br indicam que atualmente certa <strong>de</strong> 8 % das mensagens seja enviadas por STMP 2<br />
Entretanto, vemos que quando o coletor oferece apenas a emulação <strong>de</strong> mail relay, o<br />
volume <strong>de</strong> tráfego coletado equivale a 23 % do tráfego coletado por uma configuração<br />
equivalente que também emule proxies abertos (TMSG.SMTP.----.----: 101 GB;<br />
TMSG.----.----.----: 450 GB). Isso, somado aos fatos <strong>de</strong> haver proporcionalmente<br />
muito menos en<strong>de</strong>reços IP nos cenários que emulam proxies, e <strong>de</strong>sses cenários<br />
serem responsáveis pelos maiores volumes <strong>de</strong> tráfego, sugere que os transmissores que<br />
atacam essas máquinas enviam um volume elevado <strong>de</strong> mensagens. Além disso, o fato da<br />
restrição do número <strong>de</strong> conexões concorrentes causar uma redução no volume <strong>de</strong> tráfego<br />
para cenários semelhantes também sugere que os abusos a proxies po<strong>de</strong>m ser levados a<br />
cabo por máquinas que abrem um gran<strong>de</strong> número <strong>de</strong> conexões paralelas, para aumentar<br />
sua taxa para o <strong>de</strong>stino e assim ganhar um vantagem sobre outros spammers.<br />
2 http://kolos.cert.br, acesso restrito.<br />
148
Para melhor enten<strong>de</strong>rmos o comportamento <strong>de</strong>sses transmissores com mais recursos,<br />
observamos os en<strong>de</strong>reços IPs i<strong>de</strong>ntificados com maiores transmissores em cada<br />
cenário, tanto em volume <strong>de</strong> tráfego quanto em número <strong>de</strong> mensagens. Por limitações <strong>de</strong><br />
espaço, apenas reportamos os resultados aqui; uma <strong>de</strong>scrição <strong>de</strong>talhada <strong>de</strong>sses resultados<br />
po<strong>de</strong> ser encontrada em [Silva 2011]. Nossa análise dos dados revela que:<br />
• os oito en<strong>de</strong>reços com mais mensagens também tiveram maior volume <strong>de</strong> tráfego;<br />
• esses oito en<strong>de</strong>reços foram responsáveis por 64 % do tráfego, mas apenas 34 %<br />
das mensagens, o que sugere que enviam mensagens maiores;<br />
• nenhum <strong>de</strong>sses en<strong>de</strong>reços aparecem nos cenários que só emulavam mail relays;<br />
• nos cenários com proxies, dos 15 primeiros en<strong>de</strong>reços do ranking geral, 14 <strong>de</strong>les<br />
aparecem no topo em cada cenário que não usa listas negras;<br />
• nos cenários com proxies que usam listas negras, encontra-se ainda oito dos quinze<br />
en<strong>de</strong>reços i<strong>de</strong>ntificados com maiores transmissores;<br />
• as distribuições <strong>de</strong> volume <strong>de</strong> tráfego parecem ser mais <strong>de</strong>siguais nos casos com<br />
proxies: a razão <strong>de</strong> volume entre o primeiro e o décimo-quinto en<strong>de</strong>reços do ranking<br />
é superior a 24 em todos esses casos, chegando a mais <strong>de</strong> 1000 em um cenário<br />
(nos cenários com mail relay apenas, essa razão não ultrapassa 5,2;<br />
• os cenários que utilizam listas negras e que limitam conexões concorrentes ten<strong>de</strong>m<br />
a ter mais en<strong>de</strong>reços entre os maiores que não aparecem na lista geral.<br />
Todos esses resultados apontam para o fato do abuso a proxies ser coor<strong>de</strong>nado<br />
a partir <strong>de</strong> poucas máquinas, com boa conectivida<strong>de</strong> e que utilizam múltiplas conexões<br />
simultânas para se aproveitar ao máximo das máquinas vulneráveis que atacam. Além<br />
disso, as mensagens enviadas nesse tipo <strong>de</strong> ataque ten<strong>de</strong>m a ser maiores que as enviadas<br />
utilizando-se botnets e open mail relays, em geral.<br />
Tamanhos <strong>de</strong> mensagens<br />
Consi<strong>de</strong>rando a adição da informação <strong>de</strong> tamanho médio <strong>de</strong> mensagens utilizada<br />
na análise anterior, a tabela 3 apresenta um conjunto <strong>de</strong> métricas <strong>de</strong>rivadas das<br />
métricas acumuladas <strong>de</strong>scritas anteriormente. Novamente, po<strong>de</strong>mos ignorar o grupo<br />
----.SMTP.*.*, cujo comportamento restrito já foi discutido anteriormente.<br />
Um comportamento que chama a atenção é aquele relacionado aos tamanhos<br />
das mensagens. Ignorando o grupo ----.SMTP.*.*, temos três categorias: em dois<br />
cenários, o tamanho médio das mensagens fica acima <strong>de</strong> 62 KB; outros cinco recebem<br />
na or<strong>de</strong>m <strong>de</strong> poucas <strong>de</strong>zenas <strong>de</strong> KB por mensagem e dois recebem até 5 KB por mensagem.<br />
Esse último grupo é composto pelos cenários TMSG.SMTP.*.*, o que nos permite<br />
afirmar que botnets observadas enviam mensagens pequenas, com algumas conexões entregando<br />
centenas <strong>de</strong> mensagens <strong>de</strong> cada vez.<br />
Escolhemos um cenário em cada grupo para uma análise por amostragem das<br />
mensagens: ----.----.----.----, que tem o maior volume <strong>de</strong> tráfego total, mas<br />
apenas o terceiro número <strong>de</strong> mensagens, com a média <strong>de</strong> quase 40 KB por mensagem;<br />
TMSG.SMTP.----.----, que tem o maior número <strong>de</strong> mensagens, mas é apenas o<br />
nono em volume <strong>de</strong> tráfego, com média <strong>de</strong> pouco menos <strong>de</strong> 4 KB por mensagem; e<br />
TMSG.SMTP.DNBL.CLIM, que tem volume e número <strong>de</strong> mensagens relativamente baixos,<br />
mas tem média <strong>de</strong> mais <strong>de</strong> 60 KB por mensagem.<br />
149
Bits Abreviaturas msgs/con MB/con KB/msg conex/IP<br />
0010 ----.----.DNBL.---- 1.691,1 60,5 36,7 13,8<br />
0000 ----.----.----.---- 1.492,7 57,7 39,6 5,2<br />
1010 TMSG.----.DNBL.---- 1.702,7 51,2 30,8 13,7<br />
1011 TMSG.----.DNBL.CLIM 2.091,2 35,9 17,6 7,6<br />
0001 ----.----.----.CLIM 1.010,3 28,0 28,4 5,0<br />
0011 ----.----.DNBL.CLIM 1.663,5 22,5 13,8 17,8<br />
1000 TMSG.----.----.---- 278,4 7,1 26,3 2,4<br />
1001 TMSG.----.----.CLIM 241,8 3,1 13,2 2,2<br />
1111 TMSG.SMTP.DNBL.CLIM 38,1 2,3 62,8 5,6<br />
1110 TMSG.SMTP.DNBL.---- 27,1 1,8 66,1 4,5<br />
1100 TMSG.SMTP.----.---- 226,6 0,8 3,8 1,7<br />
1101 TMSG.SMTP.----.CLIM 145,5 0,7 5,1 1,9<br />
Tabela 3. Resultados agregados para métricas relativas<br />
As mensagens observadas no cenário TMSG.SMTP.----.----, associado a<br />
botnets em geral, são mensagens <strong>de</strong> spam curtas, contendo apenas texto em HTML e,<br />
frequentemente, links que parecem apontar para sites <strong>de</strong> propaganda e venda.<br />
As mensagens no cenário ----.----.----.---- se divi<strong>de</strong>m em geral em<br />
dois grupos, um <strong>de</strong> mensagens <strong>de</strong> spam <strong>de</strong> aproximadamente 4 KB, frequentemente com<br />
conteúdo em HTML e alguns links que levam a sites <strong>de</strong> anúncio/venda <strong>de</strong> produtos após<br />
alguns redirecionamentos, e outro <strong>de</strong> mensagens maiores, por volta <strong>de</strong> 65 KB, formadas<br />
por documentos codificados em mime, usualmente PDF. Um teste simples com diversos<br />
cenários nessa categoria sugere que as variações na média <strong>de</strong> volume por mensagem se<br />
<strong>de</strong>ve a uma combinação <strong>de</strong> quantida<strong>de</strong>s diferentes <strong>de</strong> mensagens <strong>de</strong>sses dois tipos.<br />
Já as mensagens encontradas no cenário TMSG.SMTP.DNBL.CLIM compunham<br />
um conjunto menor (provavelmente <strong>de</strong>vido ao comportamento mais restritivo do cenário).<br />
Nesse caso encontramos uma combinação <strong>de</strong> mensagens codificadas em mime, sendo um<br />
conjunto com aproximadamente 10 KB por mensagem e frequentemente contendo mime<br />
mal formado, e outro com documentos PDF <strong>de</strong> por volta <strong>de</strong> 200 KB. Aparentemente, o<br />
material coletado nesse cenário (e no TMSG.SMTP.DNBL.----) representam um outro<br />
comportamento diferente do dominante que havia sido i<strong>de</strong>ntificado antes para botnets.<br />
Devido ao volume relativamente reduzido, uma análise mais longa po<strong>de</strong> ser necessária<br />
para <strong>de</strong>terminar se esse comportamento realmente se <strong>de</strong>staca, ou se ele foi apenas <strong>de</strong>vido<br />
a um conjunto <strong>de</strong> dados reduzido.<br />
Relações entre volume e tamanho <strong>de</strong> mensagens<br />
A discussão anterior sobre volumes <strong>de</strong> tráfego e número <strong>de</strong> mensagens sugere que os<br />
comportamentos das máquinas po<strong>de</strong>m se distribuir por um espaço amplo. Uma análise<br />
das distribuições <strong>de</strong> número <strong>de</strong> mensagens enviadas por cada en<strong>de</strong>reço <strong>de</strong> origem e <strong>de</strong><br />
volume <strong>de</strong> tráfego gerado mostram realmente distribuições bastante <strong>de</strong>sbalanceadas.<br />
A diferença entre as máquinas <strong>de</strong> alta capacida<strong>de</strong> que abusam proxies e enviam<br />
muitas mensagens, e as máquinas <strong>de</strong> botnets, que enviam cada uma poucas mensagens, e<br />
150
normalmente menores, po<strong>de</strong> ser visualizada ao representarmos cada transmissor em um<br />
gráfico <strong>de</strong> número <strong>de</strong> mensagens por volume <strong>de</strong> tráfego transmitido (um scatter plot). A<br />
figura 2 mostra esse resultado para os mesmos cenários consi<strong>de</strong>rados anteriormente.<br />
Figura 2. Relação entre volume <strong>de</strong> tráfego e número <strong>de</strong> mensagens<br />
Na figura, fica claro o comportamento bastante regular das máquinas que abusam<br />
os cenários que só emulam open relay (1100 e 1111), com uma tendência que sugere<br />
que a gran<strong>de</strong> maioria dos transmissores naqueles cenários enviam mensagens <strong>de</strong> mesmo<br />
tamanho. Já nos cenários que emulam proxies, como o 0000, alguns transmissores se<br />
<strong>de</strong>stacam com volumes <strong>de</strong> mensagens e tráfego muito superiores aos <strong>de</strong>mais. Já que esses<br />
transmissores enviam muito mais que os <strong>de</strong>mais e estão presentes em diversos cenários, o<br />
gráfico para o padrão geral é semelhante. Nele po<strong>de</strong>-se inclusive perceber que a inclinação<br />
da reta gerada pelos computadores que transmitem menos mensagens (botnets) é bem<br />
menor, confirmando que os transmissores <strong>de</strong> maior capacida<strong>de</strong> enviam mensagens bem<br />
maiores, em geral.<br />
Se gerarmos os mesmos gráficos retirando os transmissores mais pesados <strong>de</strong> cada<br />
cenário (figura 3), o comportamento regular dos transmissores <strong>de</strong> menor capacida<strong>de</strong> se<br />
torna mais claro, tanto no agregado, quanto no cenário 1111. O cenário 1100 já tinha<br />
um padrão bastante regular, sendo pouco afetado. Já o cenário 0000, por não repassar as<br />
mensagens <strong>de</strong> teste e por isso não ser visível para botnets que abusam mail relays, tem<br />
um padrão mais disperso, mas ainda assim po<strong>de</strong>-se perceber uma regularida<strong>de</strong> maior nos<br />
151
Figura 3. Relação entre volume <strong>de</strong> tráfego e número <strong>de</strong> mensagens<br />
tamanhos das mensagens (relação volume por número <strong>de</strong> mensagens).<br />
4. Trabalhos Relacionados<br />
O uso <strong>de</strong> honeypots se estabeleceu como um método eficaz para estudo e prevenção<br />
em ataques em re<strong>de</strong> [Provos and Holz 2007]. Honeypots po<strong>de</strong>m ter as mais variadas<br />
aplicações, como base <strong>de</strong> estudo para botnets [John et al. 2009], método <strong>de</strong> <strong>de</strong>fesa para<br />
ataques <strong>de</strong> negação <strong>de</strong> serviço [Sardana and Joshi 2009], entre outros.<br />
A base da arquitetura <strong>de</strong> coleta <strong>de</strong>ste estudo é um honeypot virtual. O conceito<br />
<strong>de</strong> um framework para coleta <strong>de</strong> spam como o <strong>de</strong>scrito tem origem no agrupamento <strong>de</strong><br />
diversos conceitos, metodologias que foram sendo aperfeiçoadas na literatura e no <strong>de</strong>senvolvimento<br />
interno ao próprio grupo <strong>de</strong> pesquisa 3 . A <strong>de</strong>cisão <strong>de</strong> analisar os spammers<br />
<strong>de</strong> forma mais direta tem inspiração no trabalho [Pathak et al. 2008], que utiliza o tipo<br />
<strong>de</strong> honeypot <strong>de</strong>scrito em [Provos 2004]. O coletor usado na pesquisa é uma atualização<br />
do projeto apresentado em [Steding-Jessen et al. 2008], mantido pelo Cert.br, com várias<br />
3 O projeto Spammining, parceria entre o CERT.br e o Departamento <strong>de</strong> Ciência da Computação da<br />
UFMG.<br />
152
aperfeiçoamentos na técnica e atualizações da estrutura.<br />
Trabalhos focados em enten<strong>de</strong>r a formação e a origem d spam [Shue et al. 2009]<br />
mostram que apesar <strong>de</strong> novas técnicas como o uso <strong>de</strong> botnets para o envio <strong>de</strong> spam,<br />
o abuso <strong>de</strong> open relays na disseminação do spam é muito expressivo. Nossos resultados<br />
mostram que os dois princípios parecem estar relacionados ao invés <strong>de</strong> serem mutuamente<br />
exclusivos. É interessante verificar se o tráfego diário gerado por cada open<br />
relay na Internet continua significativo mesmo com diversas restrições <strong>de</strong> re<strong>de</strong>. Diversos<br />
estudos foram feitos utilizando diretamente ou indiretamente os conceitos por trás do<br />
abuso <strong>de</strong> open relays [Pathak et al. 2008, Kreibich et al. 2008, Steding-Jessen et al. 2008,<br />
Li and Hsieh 2006].<br />
O experimento fatorial é uma ferramenta metodológica largamente empregada<br />
na literatura em trabalhos <strong>de</strong> caracterização dada sua abordagem e confiabilida<strong>de</strong> estatística,<br />
como po<strong>de</strong> ser observado em diversos trabalhos [Mycroft and Sharp 2001,<br />
Guerrero and Labrador 2010]. A aplicação <strong>de</strong>sse método experimental permite <strong>de</strong>terminar<br />
a influência que fatores pré-<strong>de</strong>terminados têm no objeto em estudo, no caso, o comportamento<br />
dos spammers. Uma boa introdução sobre o tema é o livro <strong>de</strong> Jain [Jain 2008].<br />
5. Conclusão e Trabalhos Futuros<br />
Neste trabalho aplicamos a metodologia do experimento fatorial para analisar e comparar<br />
as influências que diversos fatores ligados à interface exposta por alvos dos spammers têm<br />
em seus comportamentos. Os diversos cenários contemplados por essa análise <strong>de</strong>monstraram,<br />
através das métricas coletadas, que existe não apenas uma correlação forte entre os<br />
fatores e as preferências dos spammers individualmente, mas que ocorre também seleção<br />
<strong>de</strong> todo o espectro <strong>de</strong> abuso que po<strong>de</strong>ria ser coletado. O formato experimental aplicado<br />
neste estudo apesar <strong>de</strong> ser muito utilizado nas mais diversas áreas do conhecimento, observamos<br />
poucos estudos com esse foco no problema <strong>de</strong> caracterização e compreensão<br />
das técnicas do envio <strong>de</strong> spam.<br />
As análises apresentadas nos permitem afirmar que realmente o comportamento<br />
exibido pelo coletor <strong>de</strong> spam afeta significativamente o tipo <strong>de</strong> mensagens e os padrões <strong>de</strong><br />
tráfego que ele recebe. Em particular, a capacida<strong>de</strong> <strong>de</strong> encaminhar mensagens <strong>de</strong> teste só<br />
tem impacto para spammers que abusam open mail relays e o padrão <strong>de</strong> en<strong>de</strong>reços observado,<br />
muito maior que o conjunto que realmente enviou mensagens <strong>de</strong> teste, sugere um<br />
esquema <strong>de</strong> disseminação <strong>de</strong> informação <strong>de</strong> botnets. Em particular, esse esquema é mais<br />
utilizado por máquinas que se encontram em listas negras, o que sugere que é utilizado<br />
exatamente como um subterfúgio para escapar <strong>de</strong>sse tipo <strong>de</strong> mecanismo As mensagens<br />
enviadas por estas ten<strong>de</strong>m a ser menores em geral. Já os proxies abertos ten<strong>de</strong>m a se tornar<br />
alvos <strong>de</strong> máquinas <strong>de</strong> alta capacida<strong>de</strong> que enviam um gran<strong>de</strong> volume <strong>de</strong> mensagens,<br />
frequentemente usando diversas conexões concorrentes, o que ten<strong>de</strong> a excluir tráfego <strong>de</strong><br />
outras fontes. Em dois cenários foram observado tráfego com padrão <strong>de</strong> botnet, mas com<br />
mensagens muito maiores que as observadas nos outros casos. Como o volume nesse<br />
cenário foi reduzido, uma coleta mais longa seria necessária para <strong>de</strong>terminar se isso representa<br />
um outro padrão comum, ou apenas um evento isolado.<br />
Referências<br />
Giles, J. (2010). To beat spam, first get insi<strong>de</strong> its head. New Scientist, 205:20–20.<br />
153
Guerrero, C. D. and Labrador, M. A. (2010). On the applicability of available bandwidth<br />
estimation techniques and tools. Comput. Commun., 33:11–22.<br />
Jain, R. (2008). The Art Of Computer Systems Performance Analysis:Techniques for<br />
Experimental Design, Measurement, Simulation, and Mo<strong>de</strong>ling. Wiley India Pvt. Ltd.<br />
John, J. P., Moshchuk, A., Gribble, S. D., and Krishnamurthy, A. (2009). Studying spamming<br />
botnets using botlab. In NSDI’09: Proceedings of the 6th USENIX symposium on<br />
Networked systems <strong>de</strong>sign and implementation, pages 291–306, Berkeley, CA, USA.<br />
USENIX Association.<br />
Kreibich, C., Kanich, C., Levchenko, K., Enright, B., Voelker, G. M., Paxson, V., and<br />
Savage, S. (2008). On the spam campaign trail. In LEET’08: Proceedings of the 1st<br />
Usenix Workshop on Large-Scale Exploits and Emergent Threats, pages 1–9, Berkeley,<br />
CA, USA. USENIX Association.<br />
Li, F. and Hsieh, M.-H. (2006). An empirical study of clustering behavior of spammers<br />
and group-based anti-spam strategies. Proceedings of the Third Conference on Email<br />
and Anti-Spam (CEAS). Mountain View, CA.<br />
Mycroft, A. and Sharp, R. (2001). Hardware/software co-<strong>de</strong>sign using functional languages.<br />
In Margaria, T. and Yi, W., editors, Tools and Algorithms for the Construction<br />
and Analysis of Systems, volume 2031 of Lecture Notes in Computer Science, pages<br />
236–251. Springer Berlin Hei<strong>de</strong>lberg.<br />
Pathak, A., Hu, Y. C., and Mao, Z. M. (2008). Peeking into spammer behavior from<br />
a unique vantage point. In LEET’08: Proceedings of the 1st Usenix Workshop on<br />
Large-Scale Exploits and Emergent Threats, pages 1–9, Berkeley, CA, USA. USENIX<br />
Association.<br />
Provos, N. (2004). A virtual honeypot framework. In Proceedings of the 13th conference<br />
on USENIX Security Symposium - Volume 13, SSYM’04, pages 1–1, Berkeley, CA,<br />
USA. USENIX Association.<br />
Provos, N. and Holz, T. (2007). Virtual Honeypots: From Botnet Tracking to Intrusion<br />
Detection. Addison-Wesley Professional.<br />
Radicati, S. (2009). Email statistics report, 2009-2013. Relatório anual, The Radicati<br />
Group, Inc. http://www.radicati.com/.<br />
Sardana, A. and Joshi, R. (2009). An auto-responsive honeypot architecture for dynamic<br />
resource allocation and qos adaptation in ddos attacked networks. Comput. Commun.,<br />
32:1384–1399.<br />
Shue, C. A., Gupta, M., Lubia, J. J., Kong, C. H., , and Yuksel, A. (2009). Spamology: A<br />
study of spam origins. In Conference on Email and Anti Spam (CEAS).<br />
Silva, G. C. (2011). Análise <strong>de</strong> fatores que afetam o comportamento <strong>de</strong> spammers na<br />
re<strong>de</strong>. Dissertação <strong>de</strong> mestrado, Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Minas Gerais.<br />
Steding-Jessen, K., Vijaykumar, N. L., and Montes, A. (2008). Using low-interaction<br />
honeypots to study the abuse of open proxies to send spam. INFOCOMP Journal of<br />
Computer Science.<br />
154
Segmentação <strong>de</strong> Overlays P2P como Suporte para<br />
Memórias Tolerantes a Intrusões<br />
Davi da Silva Böger 1 , Joni Fraga 1 , Eduardo Alchieri 1 , Michelle Wangham 2<br />
1 Departamento <strong>de</strong> Automação e Sistemas –UFSC<br />
Florianópolis – SC – Brasil<br />
2 Grupo <strong>de</strong> Sistemas Embarcados e Distribuídos – UNIVALI<br />
São José – SC – Brasil<br />
{dsboger,fraga,alchieri}@das.ufsc.br, wangham@univali.br<br />
Abstract. This paper <strong>de</strong>scribes our experience in <strong>de</strong>veloping an infrastructure<br />
which allows building intrusion-tolerant shared memory for large-scale<br />
systems. The infrastructure makes use of a P2P overlay and of the concept of<br />
State Machine Replication (SMR). Segmentation is introduced on the key<br />
space of the overlay to allow the use of algorithms for supporting SMR. In this<br />
paper we <strong>de</strong>scribe the proposed infrastructure in its stratification and<br />
corresponding algorithms. Also, analyses of the algorithms <strong>de</strong>scribed and<br />
their respective costs are presented.<br />
Resumo. Este artigo <strong>de</strong>screve nossa experiência no <strong>de</strong>senvolvimento <strong>de</strong> uma<br />
infraestrutura que permite a construção <strong>de</strong> memórias compartilhadas<br />
tolerantes a intrusões para sistemas <strong>de</strong> larga escala. A infraestrutura faz uso<br />
<strong>de</strong> um overlay P2P e do conceito <strong>de</strong> Replicação Máquina <strong>de</strong> Estados (RME).<br />
O conceito <strong>de</strong> segmentação é introduzido sobre o espaço <strong>de</strong> chaves do overlay<br />
para permitir o uso <strong>de</strong> algoritmos <strong>de</strong> suporte à RME. No presente artigo<br />
<strong>de</strong>screvemos a infraestrutura proposta em sua estratificação e algoritmos.<br />
Além disso, realizamos uma análise da solução apresentada e dos custos<br />
envolvidos.<br />
1. Introdução<br />
As re<strong>de</strong>s par a par (peer-to-peer, P2P) correspon<strong>de</strong>m a um paradigma <strong>de</strong> comunicação<br />
que tem sido o foco <strong>de</strong> muitos trabalhos nos últimos anos. O uso <strong>de</strong>sse paradigma foi<br />
bastante popularizado na Internet, principalmente por ser a base para as aplicações <strong>de</strong><br />
compartilhamento <strong>de</strong> arquivos mo<strong>de</strong>rnas. Diversas outras aplicações já foram<br />
<strong>de</strong>senvolvidas usando P2P, como multicast e sistemas <strong>de</strong> e-mail [Steinmetz and Wehrle<br />
2005]. Apesar disso, P2P ainda é pouco utilizado em aplicações mais complexas que<br />
po<strong>de</strong>riam se beneficiar <strong>de</strong> aspectos como a escalabilida<strong>de</strong> [Baldoni et al. 2005].<br />
As principais características que tornam as re<strong>de</strong>s P2P uma arquitetura<br />
interessante para sistemas distribuídos são o uso eficiente dos recursos ociosos<br />
disponíveis na Internet e a capacida<strong>de</strong> <strong>de</strong> aumento do número <strong>de</strong> nós sem <strong>de</strong>trimento do<br />
<strong>de</strong>sempenho. Normalmente as re<strong>de</strong>s P2P oferecem primitivas <strong>de</strong> comunicação com<br />
latência e número <strong>de</strong> mensagens <strong>de</strong> or<strong>de</strong>m logarítmica em relação ao número <strong>de</strong> nós<br />
presentes na re<strong>de</strong> [Stoica et al. 2001, Rowstron and Druschel 2001].<br />
155
Apesar das suas vantagens, as re<strong>de</strong>s P2P apresentam <strong>de</strong>safios para o provimento<br />
<strong>de</strong> garantias <strong>de</strong> confiabilida<strong>de</strong>. Essas re<strong>de</strong>s normalmente são formadas dinamicamente<br />
por nós totalmente autônomos que po<strong>de</strong>m entrar e sair do sistema a qualquer momento.<br />
Essas características <strong>de</strong> dinamismo tornam difícil manter a consistência das informações<br />
distribuídas no sistema. A<strong>de</strong>mais, essas re<strong>de</strong>s não possuem uma gerência global, sendo<br />
re<strong>de</strong>s <strong>de</strong> pares normalmente abertas. Devido a essa característica, as re<strong>de</strong>s P2P po<strong>de</strong>m<br />
conter participantes maliciosos que colocam em risco o funcionamento das aplicações.<br />
Neste trabalho, é apresentada uma infraestrutura tolerante a intrusões para<br />
memórias compartilhadas em sistemas <strong>de</strong> larga escala. Esta infraestrutura faz uso das<br />
funcionalida<strong>de</strong>s <strong>de</strong> um overlay P2P estruturado e tolerante a intrusões, sobre o qual é<br />
introduzido o conceito <strong>de</strong> segmentação tomando como base a divisão do espaço <strong>de</strong><br />
chaves da re<strong>de</strong> P2P e a aplicação <strong>de</strong> técnicas <strong>de</strong> Replicação Máquina <strong>de</strong> Estados (RME)<br />
[Schnei<strong>de</strong>r 1990]. A partir <strong>de</strong> segmentos é possível garantir consistência e tolerar uma<br />
quantida<strong>de</strong> <strong>de</strong> participantes maliciosos em um sistema <strong>de</strong> memória compartilhada. A<br />
segmentação do overlay <strong>de</strong>pen<strong>de</strong> do fornecimento <strong>de</strong> uma técnica <strong>de</strong> in<strong>de</strong>xação, isto é,<br />
um mapeamento <strong>de</strong> objetos para chaves, pela aplicação <strong>de</strong> memória compartilhada.<br />
O restante do artigo está organizado da seguinte forma: a seção 2 enumera as<br />
premissas do mo<strong>de</strong>lo <strong>de</strong> sistema adotado, a seção 3 introduz a solução proposta neste<br />
trabalho, a seção 4 contém discussões sobre as propostas <strong>de</strong> nosso trabalho e coloca<br />
problemas em aberto. A seção 5 examina os trabalhos relacionados e conforta os<br />
mesmos diante <strong>de</strong> nossas soluções. A seção 6 traz as conclusões do artigo.<br />
2. Mo<strong>de</strong>lo <strong>de</strong> Sistema<br />
Consi<strong>de</strong>ramos um sistema distribuído formado por um conjunto finito <strong>de</strong> processos<br />
(ou nós) extraídos <strong>de</strong> um universo , interconectados por uma re<strong>de</strong>. Cada nó possui um<br />
en<strong>de</strong>reço único <strong>de</strong> re<strong>de</strong> e po<strong>de</strong> enviar mensagens para qualquer outro nó, <strong>de</strong>s<strong>de</strong> que<br />
conheça seu en<strong>de</strong>reço. Um nó é consi<strong>de</strong>rado correto se age <strong>de</strong> acordo com a<br />
especificação dos protocolos nos quais participa. Um nó malicioso (ou bizantino<br />
[Lamport et al. 1982]) po<strong>de</strong> agir <strong>de</strong> maneira arbitrária ou simplesmente parar em certos<br />
momentos. O sistema proposto tolera certo número <strong>de</strong> nós maliciosos durante sua<br />
execução. Assume-se que em qualquer momento da execução, no máximo nós<br />
faltosos estão presentes no sistema. O parâmetro é global e conhecido por todos os<br />
nós do sistema.<br />
Imediatamente acima da re<strong>de</strong>, encontram-se duas camadas in<strong>de</strong>pen<strong>de</strong>ntes que<br />
serão usadas para construir a camada <strong>de</strong> segmentação proposta neste trabalho. A<br />
camada <strong>de</strong> overlay, <strong>de</strong>scrita na Seção 2.1, implementa uma re<strong>de</strong> P2P sobre o sistema,<br />
com busca eficiente <strong>de</strong> nós distribuídos, e a camada <strong>de</strong> suporte à replicação, <strong>de</strong>scrita na<br />
Seção 2.2, que fornece uma abstração <strong>de</strong> Replicação Máquina <strong>de</strong> Estados (RME)<br />
[Schnei<strong>de</strong>r 1990] usada para garantir a disponibilida<strong>de</strong> e consistência das informações<br />
contidas no sistema. Em geral, os custos da RME não permitem que essa técnica seja<br />
aplicada a uma gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> nós, portanto neste trabalho dividimos o sistema<br />
Tabela 1: Camadas do Sistema<br />
Segmentação<br />
Overlay<br />
Suporte à Replicação<br />
Re<strong>de</strong><br />
156
em diversas máquinas <strong>de</strong> estados in<strong>de</strong>pen<strong>de</strong>ntes. A camada <strong>de</strong> segmentação faz uso<br />
<strong>de</strong>ssas duas e provê meios para invocar eficientemente qualquer RME do sistema. A<br />
Tabela 1 apresenta as camadas do sistema.<br />
A camada <strong>de</strong> re<strong>de</strong> é acessada a partir <strong>de</strong> duas operações: A operação<br />
envia a mensagem para o nó <strong>de</strong> en<strong>de</strong>reço . A operação<br />
aguarda o recebimento <strong>de</strong> uma mensagem qualquer . Os canais <strong>de</strong> comunicação da<br />
re<strong>de</strong> são ponto a ponto e confiáveis, ou seja, não há perda ou alteração <strong>de</strong> mensagens. O<br />
atraso na entrega das mensagens e as diferenças <strong>de</strong> velocida<strong>de</strong>s entre os nós do sistema<br />
respeitam um mo<strong>de</strong>lo <strong>de</strong> sincronia parcial [Dwork et al. 1988], no qual é garantido a<br />
terminação <strong>de</strong> protocolos <strong>de</strong> Replicação Máquina <strong>de</strong> Estados que serão usados nas<br />
camadas superiores. No entanto, não há garantia <strong>de</strong> sincronismo por toda a execução.<br />
2.1.Camada <strong>de</strong> Overlay<br />
Acima da camada <strong>de</strong> re<strong>de</strong>, assume-se a existência <strong>de</strong> um overlay que provê operações<br />
similares às re<strong>de</strong>s P2P estruturadas, como Pastry [Rowstron e Druschel 2001] e Choord<br />
[Stoica et al. 2003]. Essas re<strong>de</strong>s atribuem i<strong>de</strong>ntificadores aos nós e distribuem estes em<br />
torno <strong>de</strong> um anel lógico. Nós conhecem outros nós com i<strong>de</strong>ntificadores numericamente<br />
próximos, <strong>de</strong>nominados <strong>de</strong> vizinhos, <strong>de</strong> forma a manter a estrutura do anel. Além disso,<br />
os nós possuem tabelas <strong>de</strong> roteamento que são usadas para contatar eficientemente nós<br />
distantes no anel. Aplicações se utilizam <strong>de</strong>ssa estrutura <strong>de</strong>finindo esquemas para a<br />
distribuição <strong>de</strong> objetos pelo overlay, normalmente atribuindo chaves aos objetos e<br />
armazenando esses objetos em nós com i<strong>de</strong>ntificadores numericamente próximos a<br />
essas chaves. A busca por um objeto consiste em usar as tabelas <strong>de</strong> roteamento para<br />
encontrar nós com i<strong>de</strong>ntificador próximo à chave associada ao mesmo.<br />
Este trabalho utiliza o overlay tolerante a faltas bizantinas <strong>de</strong>finido por Castro et<br />
al. (2002), o qual apresenta a proprieda<strong>de</strong> <strong>de</strong> garantir alta probabilida<strong>de</strong> na entrega <strong>de</strong><br />
mensagens a todos nós corretos na vizinhança <strong>de</strong> uma chave, mesmo se uma quantida<strong>de</strong><br />
<strong>de</strong> nós do overlay for maliciosa. A confiabilida<strong>de</strong> da entrega é alcançada pelo envio <strong>de</strong><br />
uma mensagem por múltiplas rotas e pelo uso <strong>de</strong> tabelas <strong>de</strong> roteamento especiais que<br />
aumentam a probabilida<strong>de</strong> <strong>de</strong> que essas rotas sejam disjuntas, ou seja, não tenham nós<br />
em comum. O número <strong>de</strong> rotas disjuntas, ao superar o limite estabelecido <strong>de</strong> faltas<br />
garante a entrega das mensagens. Análises e resultados experimentais [Castro et al.<br />
2002] <strong>de</strong>monstram que a probabilida<strong>de</strong> <strong>de</strong> entrega <strong>de</strong> uma mensagem é <strong>de</strong> 99,9% se a<br />
proporção <strong>de</strong> nós maliciosos for <strong>de</strong> até 30%.<br />
O funcionamento do overlay <strong>de</strong>pen<strong>de</strong> da geração e atribuição segura <strong>de</strong><br />
i<strong>de</strong>ntificadores a nós da re<strong>de</strong>, <strong>de</strong> forma que nós maliciosos não possam escolher seu<br />
i<strong>de</strong>ntificador nem participar do overlay com múltiplas i<strong>de</strong>ntida<strong>de</strong>s. Essas proprieda<strong>de</strong>s<br />
são garantidas, por exemplo, pelo uso <strong>de</strong> certificados que associam o i<strong>de</strong>ntificador do nó<br />
a seu en<strong>de</strong>reço <strong>de</strong> re<strong>de</strong> e sua chave pública. Esses certificados são emitidos por uma<br />
autorida<strong>de</strong> certificadora (AC) confiável, que também po<strong>de</strong> ser responsável por gerar<br />
i<strong>de</strong>ntificadores aleatórios para os nós 1 . Na nossa infraestrutura, mantemos o uso <strong>de</strong>sses<br />
certificados na camada <strong>de</strong> segmentação, on<strong>de</strong> é <strong>de</strong>nominado <strong>de</strong> certificados <strong>de</strong> nó.<br />
1 Não é necessário que esta AC seja uma PKI oficial. A mesma po<strong>de</strong> ser uma comissão <strong>de</strong> gestão do sistema, um<br />
administrador, etc. O i<strong>de</strong>ntificador po<strong>de</strong> ser gerado a partir <strong>de</strong> uma função hash aplicada ao en<strong>de</strong>reço <strong>de</strong> re<strong>de</strong> do nó.<br />
157
Nas seções a seguir, é assumido o uso do overlay <strong>de</strong>finido por Castro et al.<br />
(2002), no entanto, outras construções P2P similares po<strong>de</strong>m ser utilizadas sem alteração<br />
das camadas superiores da nossa proposta. O overlay <strong>de</strong>ve suportar, então, para entrada<br />
e saída <strong>de</strong> um nó , operações ( ) e ( ) que são<br />
concretizadas através da apresentação <strong>de</strong> seu certificado ; para<br />
enviar uma mensagem para os nós vizinhos da chave ; e que<br />
entrega a mensagem para a camada superior nos nós <strong>de</strong> <strong>de</strong>stino.<br />
2.2. Camada <strong>de</strong> Suporte à Replicação<br />
A camada <strong>de</strong> replicação, que implementa protocolos para Replicação Máquinas <strong>de</strong><br />
Estados (RME) [Schnei<strong>de</strong>r 1990], é usada pelas camadas superiores para prover<br />
garantias <strong>de</strong> disponibilida<strong>de</strong> e consistência das informações mesmo em presença <strong>de</strong> nós<br />
faltosos e maliciosos. Em ambientes com ativida<strong>de</strong>s intrusivas, MEs são mantidas<br />
através do uso <strong>de</strong> algoritmos <strong>de</strong> consenso tolerantes a faltas bizantinas (p. ex. [Castro e<br />
Liskov 1999]). No presente texto não é <strong>de</strong>finido um algoritmo específico <strong>de</strong> suporte à<br />
RME. Qualquer um po<strong>de</strong> ser escolhido, <strong>de</strong>s<strong>de</strong> que tolere nós faltosos <strong>de</strong> um total <strong>de</strong><br />
no mínimo ( [Lamport et al. 1982]).<br />
A camada <strong>de</strong> replicação oferece às camadas superiores as operações:<br />
. A primeira operação garante o envio <strong>de</strong> uma<br />
mensagem m aos processos do conjunto e a segunda <strong>de</strong>fine a entrega <strong>de</strong> mensagens<br />
segundo or<strong>de</strong>nação total aos processos <strong>de</strong> . As duas operações caracterizam, portanto,<br />
um multicast com or<strong>de</strong>nação total (total or<strong>de</strong>r multicast).<br />
Como as re<strong>de</strong>s P2P são dinâmicas, assume-se o uso <strong>de</strong> algoritmos com<br />
capacida<strong>de</strong> <strong>de</strong> reconfiguração, ou seja, algoritmos que permitam a modificação na<br />
composição <strong>de</strong> processos integrantes da RME. Lamport et al. (2008) <strong>de</strong>finem formas<br />
simples para transformar um mo<strong>de</strong>lo <strong>de</strong> replicação estático em um dinâmico. No<br />
presente trabalho, é assumida a operação<br />
, que altera o parâmetro<br />
local da ME que indica o conjunto <strong>de</strong> processos. A chamada<br />
notifica a camada superior o momento em que a chamada<br />
acaba.<br />
3. Solução Proposta<br />
A Tabela 2 apresenta as camadas e operações especificadas na Seção 2. Sobre o overlay<br />
e a replicação, é <strong>de</strong>finida uma camada <strong>de</strong> segmentação, <strong>de</strong>scrita na Seção 3.1, na qual os<br />
nós do overlay são distribuídos em um conjunto <strong>de</strong> segmentos. Cada segmento executa<br />
uma RME distinta e é responsável por um conjunto <strong>de</strong> chaves do overlay.<br />
Tabela 2: Camadas e Primitivas<br />
Segmentação: ( ), ( ), , , ( ),<br />
, , ,<br />
Overlay: ( ), ( ), Suporte à Replicação: ,<br />
,<br />
, ,<br />
3.1. Camada <strong>de</strong> Segmentação<br />
Re<strong>de</strong>: ,<br />
A camada <strong>de</strong> segmentação divi<strong>de</strong> o anel lógico do overlay em segmentos compostos <strong>de</strong><br />
nós contíguos, no qual cada segmento é responsável por um intervalo <strong>de</strong> chaves do<br />
158
overlay. Para fins <strong>de</strong> disponibilida<strong>de</strong>, todos os nós do mesmo segmento armazenam o<br />
mesmo conjunto <strong>de</strong> dados replicados. A consistência <strong>de</strong>sses dados é mantida usando<br />
replicação ME reconfigurável, provido pela camada <strong>de</strong> suporte à replicação.<br />
Os segmentos são dinâmicos, ou seja, suas composições po<strong>de</strong>m mudar com o<br />
tempo a partir da entrada e saída <strong>de</strong> nós. A cada reconfiguração, um novo conjunto <strong>de</strong><br />
nós (<strong>de</strong>nominado configuração ou visão) passa a compor o segmento e a executar os<br />
algoritmos associados <strong>de</strong> suporte à RME. O número <strong>de</strong> nós <strong>de</strong> um segmento po<strong>de</strong><br />
aumentar ou diminuir, logo para evitar que segmentos fiquem com número <strong>de</strong> nós<br />
abaixo do limite <strong>de</strong> requerido pelos algoritmos <strong>de</strong> RME, po<strong>de</strong> ser necessário unir<br />
dois segmentos contíguos em um segmento maior. Por outro lado, o aumento do número<br />
<strong>de</strong> nós <strong>de</strong> um segmento para um valor muito superior a po<strong>de</strong> comprometer o<br />
<strong>de</strong>sempenho dos algoritmos <strong>de</strong> RME. Para aliviar o problema, segmentos gran<strong>de</strong>s<br />
po<strong>de</strong>m ser divididos em segmentos menores. É importante notar que reconfigurações<br />
ocorrem localmente nos segmentos e não no sistema inteiro. O número máximo <strong>de</strong> nós<br />
em um segmento é um parâmetro global do sistema <strong>de</strong>notado . Quando o<br />
segmento atinge o número <strong>de</strong> nós, é preciso dividir os membros em dois<br />
segmentos vizinhos, logo <strong>de</strong>ve ser maior ou igual a . Além disso, é<br />
necessário adicionar uma tolerância ao valor <strong>de</strong> , caso contrário, uma única saída<br />
(ou entrada) após uma divisão (ou união) <strong>de</strong> segmentos dispararia uma união (ou<br />
divisão). Esse fato po<strong>de</strong> ser explorado por nós maliciosos para provocar sucessivas<br />
uniões e divisões, <strong>de</strong>teriorando o <strong>de</strong>sempenho da RME.<br />
Segmentos são <strong>de</strong>scritos por certificados <strong>de</strong> segmento (S), que contém a lista <strong>de</strong><br />
todos os certificados <strong>de</strong> nó dos membros do segmento e um contador <strong>de</strong><br />
configurações ( incrementado a cada reconfiguração da ME. Quando ocorre<br />
uma reconfiguração, os membros do segmento antigo <strong>de</strong>ci<strong>de</strong>m o novo conjunto <strong>de</strong><br />
membros e assinam um novo certificado <strong>de</strong> segmento (ou dois, em caso <strong>de</strong> divisão do<br />
segmento). Se ocorrer uma união <strong>de</strong> segmentos, membros dos dois segmentos <strong>de</strong>vem<br />
assinar o certificado do novo segmento. Assim, cria-se uma ca<strong>de</strong>ia <strong>de</strong> assinaturas que<br />
po<strong>de</strong> ser usada para verificar a valida<strong>de</strong> <strong>de</strong> um certificado atual a partir <strong>de</strong> um segmento<br />
inicial aceito globalmente (possivelmente assinado por um administrador confiável).<br />
C p = addr pubK id σ CA<br />
privK p<br />
S p = members confId<br />
start end Σ history<br />
S p<br />
+<br />
e S p<br />
−<br />
changes<br />
reconfigCount<br />
Tabela 3: Estruturas <strong>de</strong> Dados da Camada <strong>de</strong> Segmentação<br />
é o certificado do nó p, no qual addr é o en<strong>de</strong>reço <strong>de</strong> re<strong>de</strong> do mesmo, pubK e id<br />
são, respectivamente, a chave pública e o i<strong>de</strong>ntificador no overlay <strong>de</strong> p. Esse<br />
certificado é o mesmo utilizado na camada <strong>de</strong> overlay<br />
é a chave privada do nó p correspon<strong>de</strong>nte à chave pública presente em C p e é usada<br />
em assinaturas digitais pelo nó 1 . Assume-se que mensagens recebidas com<br />
assinaturas inválidas não são processadas por nós corretos<br />
é o certificado do segmento atual <strong>de</strong> um nó p, no qual members é o conjunto dos<br />
certificados <strong>de</strong> nó dos membros atuais do segmento, confId é o contador <strong>de</strong><br />
configurações, start end = K(S p ) é o intervalo <strong>de</strong> chaves do overlay pelas<br />
quais o segmento é responsável, Σ é um conjunto <strong>de</strong> assinaturas e history é a<br />
ca<strong>de</strong>ia <strong>de</strong> certificados representando o caminho <strong>de</strong> evolução do segmento atual<br />
são certificados <strong>de</strong> segmentos vizinhos do segmento <strong>de</strong> S p , representando,<br />
respectivamente, o seu sucessor e seu antecessor no anel <strong>de</strong> segmentos. Ambos<br />
apresentam a mesma estrutura <strong>de</strong> S p<br />
conjunto <strong>de</strong> alterações na lista <strong>de</strong> membros a serem aplicadas na próxima<br />
reconfiguração. A entrada do nó i é <strong>de</strong>notada por i e a saída por − i<br />
contador <strong>de</strong> nós que solicitam reconfiguração na configuração atual<br />
159
1. operation SegFind k k<br />
2. /* Código do cliente p */<br />
3. keys ← ∅ /* conjunto <strong>de</strong> chaves cobertas pelos certificados recebidos */<br />
4. OverlaySend(k FIND C p S p k k σ p ) /* envia mensagem assinada usando o overlay */<br />
5. while k k ∖ keys ≠ ∅ do /* teste <strong>de</strong> cobertura completa */<br />
6. /* aguarda respostas dos servidores */<br />
7. wait for Receive( FIND_OK C q S q σ q ) /* recebe resposta <strong>de</strong> algum servidor q */<br />
8. if K(S q ) ∩ keys ≠ ∅ ∧ ValidHistory(S q ) then /* testa segmento */<br />
9. keys ← keys ∪ K(S q ) /* atualiza cobertura <strong>de</strong> chaves */<br />
10. SegFindOk(S q ) /* notifica que segmento foi encontrado */<br />
11. end if<br />
12. end while<br />
13. /* Código do servidor q */<br />
14. upon OverlayDeliver( FIND C p S p k k σ p ) do<br />
15. if k k ∩ K(S q ) ≠ ∅ then<br />
16. Send(C p . addr FIND_OK C q S q σ q ) /* envia resposta assinada */<br />
17. if k S q . end then /* segmento não cobre espaço <strong>de</strong> chaves; repassar requisição */<br />
18. OverlaySend(S q . end FIND C p S p k k σ p )<br />
19. end if<br />
20. end if<br />
21. end operation<br />
Cada segmento executa uma RME que é responsável por parte do estado da<br />
aplicação. Para invocar uma requisição em uma máquina <strong>de</strong> estados, um cliente <strong>de</strong>ve<br />
primeiro encontrar o segmento responsável pela máquina (usando a camada <strong>de</strong> overlay)<br />
e <strong>de</strong>pois enviar a requisição para a máquina (usando a camada <strong>de</strong> suporte à replicação).<br />
A Tabela 3 apresenta as estruturas <strong>de</strong> dados e as seções a seguir apresentam os<br />
algoritmos da camada <strong>de</strong> segmentação.<br />
3.1.1. Busca e Invocação <strong>de</strong> Segmentos<br />
Algoritmo 1: Busca <strong>de</strong> Segmentos<br />
Para invocar uma RME, um nó precisa primeiro obter o certificado do segmento que<br />
executa essa máquina <strong>de</strong> estados. A busca <strong>de</strong> segmentos é realizada pela operação<br />
(Algoritmo 1), que tem como parâmetro <strong>de</strong> entrada um intervalo <strong>de</strong> chaves e<br />
retorna um conjunto <strong>de</strong> certificados dos segmentos responsáveis pelas chaves nesse<br />
intervalo. A operação encontra certificados fazendo primeiro uma busca no overlay pela<br />
primeira chave do intervalo (linha 4). Os nós que receberem a mensagem <strong>de</strong> busca pelo<br />
overlay respon<strong>de</strong>rão enviando seus certificados <strong>de</strong> segmento (linha 16) e repassando a<br />
mesma para segmentos vizinhos caso o intervalo <strong>de</strong> chaves buscado se estenda além do<br />
seu próprio segmento (linhas 17 a 19). A cada certificado <strong>de</strong> segmento recebido pelo<br />
cliente, a operação chama a função<br />
, que verifica se a ca<strong>de</strong>ia <strong>de</strong><br />
segmentos que acompanha é válida. Se o enca<strong>de</strong>amento e as assinaturas forem<br />
válidos, a operação invoca<br />
para notificar a camada superior (linhas 7 a<br />
11). A operação no cliente termina quando todo o intervalo <strong>de</strong> chaves buscado for<br />
coberto pelos certificados <strong>de</strong> segmento recebidos (teste da linha 5).<br />
De posse <strong>de</strong> um certificado <strong>de</strong> segmento, o nó po<strong>de</strong> executar a operação<br />
(Algoritmo 2) fazendo uso do suporte à RME. Essa operação consiste em<br />
iniciar um temporizador, invocar o segmento usando a (linha 6),<br />
passando o do certificado que o cliente conhece (linha 4), e aguardar<br />
160
espostas idênticas <strong>de</strong> membros distintos (linhas 7 a 13). Se o certificado conhecido pelo<br />
cliente for antigo, os servidores não repassarão a requisição para a aplicação e o cliente<br />
não receberá respostas, o que provocará o estouro do temporizador a operação irá<br />
retornar , indicando uma exceção (linhas 14 e 15). A operação<br />
não trata<br />
das exceções e <strong>de</strong>ixa essa responsabilida<strong>de</strong> para as camadas superiores. Se o certificado<br />
<strong>de</strong> segmento usado na invocação for atual, a requisição é entregue para a camada<br />
superior pela upcall<br />
(linha 19). As respostas a requisições são enviadas<br />
pela operação<br />
por meio <strong>de</strong> mensagens <strong>de</strong> resposta en<strong>de</strong>reçadas ao cliente<br />
(linha 24).<br />
3.1.2. Entrada e Saída <strong>de</strong> Nós<br />
A entrada do nó na camada <strong>de</strong> segmentos se dá pela operação ( )<br />
(Algoritmo 3), na qual é o certificado <strong>de</strong> nó <strong>de</strong> . Antes <strong>de</strong> entrar em algum<br />
segmento, invoca ( ) e entra no overlay (linha 3). Depois, busca o<br />
certificado do segmento responsável por seu i<strong>de</strong>ntificador (linha 6) e invoca o mesmo<br />
passando uma mensagem (linhas 7 e 8). Após obter uma resposta válida,<br />
aguarda o recebimento dos certificados <strong>de</strong> segmento e do estado da aplicação (linhas 11<br />
a 22), enviados pelos membros do segmento. O estado é repassado à camada superior e<br />
a operação<br />
é chamada (linha 23), alterando os nós participantes da<br />
RME para o novo segmento <strong>de</strong> . Quando os membros do segmento recebem a<br />
mensagem do nó (linha 25), simplesmente registram o pedido <strong>de</strong> no conjunto<br />
h (linha 26) e respon<strong>de</strong>m (linha 27). A reconfiguração ocorre posteriormente, na<br />
1. operation SegRequest(S q req)<br />
2. /* Código do cliente p */<br />
3. StartTimer /* inicia temporizador */<br />
4. knownId ← S q . confId /* i<strong>de</strong>ntificador <strong>de</strong> configuração conhecido por p */<br />
5. resps ← ∅ /* conjunto <strong>de</strong> respostas a receber */<br />
6. TOMulticast(S q . members REQ C p knownId req σ p ) /* requisição com or<strong>de</strong>nação total */<br />
7. upon Receive( RESP C q resp q σ q ) do /* recebimento <strong>de</strong> uma resposta */<br />
8. if C q ∈ S q . members then<br />
9. resps ← resps ∪ resp q<br />
10. if # respq resps = f then<br />
11. return resp q /* retorna a resposta */<br />
12. end if<br />
13. end if<br />
14. upon Timeout do<br />
15. return /* ocorreu um estouro <strong>de</strong> temporizador */<br />
16. /* Código do servidor q */<br />
17. upon TODeliver( REQ C p knonwnId req σ p ) do<br />
18. if knownId = S q . confId then<br />
19. SegDeliver C p req /* requisição é entregue para aplicação */<br />
20. end if<br />
21. end operation<br />
22. operation SegResponse(C p resp q )<br />
23. /* Código do servidor q */<br />
24. Send(C q . addr RESP C q resp q σ q )<br />
25. end operation<br />
Algoritmo 2: Invocação <strong>de</strong> Segmentos<br />
161
operação , conforme <strong>de</strong>scrito no Algoritmo 4.<br />
A saída <strong>de</strong> nós é realizada pela operação<br />
( ) (Algoritmo 3). O nó<br />
envia uma mensagem (linha 31) para os membros do seu segmento e continua a<br />
aten<strong>de</strong>r requisições até o término da próxima reconfiguração, notificada pela operação<br />
(linha 32). Depois o nó termina <strong>de</strong> aten<strong>de</strong>r requisições e invoca<br />
( ) (linha 33). Nós corretos são obrigados a aguardar a reconfiguração<br />
para garantir o funcionamento dos algoritmos <strong>de</strong> replicação. De maneira similar à<br />
operação <strong>de</strong> entrada, os nós que recebem a mensagem registram o pedido <strong>de</strong><br />
(linha 36) e a reconfiguração propriamente dita se dá pela operação .<br />
1. operation SegJoin(C p )<br />
2. /* Código do cliente p */<br />
3. OverlayJoin(C p ) /* entrada no overlay */<br />
4. resp ←<br />
5. while resp = do /* tenta até achar um segmento atual que responda diferente <strong>de</strong> */<br />
6. SegFind(C p . id C p . id) /* busca pelo segmento responsável pelo i<strong>de</strong>ntificador <strong>de</strong> p */<br />
7. wait for SegFindOk(S q )<br />
8. resp ← SegRequest(S q JOIN ) /* invocação do segmento em que p entrará /<br />
9. end while<br />
10. /* transferência do estado da aplicação */<br />
11. states ← ∅ /* cópias do estado que serão recebidas */<br />
12. stateReceived ← FALSE<br />
13. while not stateReceived do /* repete até receber f cópias iguais do estado */<br />
14. wait for Receive( STATE C q S i S + i S − i appState i σ i ) /* Enviado pelos membros do<br />
segmento antigo (Algoritmo 4, linhas 36 a 39) */<br />
15. state i ← S i S + i S − i appState i<br />
16. states ← states ∪ state i<br />
17. if # statei states = f then /* recebidas f cópias iguais do estado */<br />
18. S p ← S i ; S + p ← S + i ; S − p ← S − i /* guarda certificados <strong>de</strong> segmento */<br />
19. SegSetAppState S p . start S p . end appState i /* repassa para camada superior */<br />
20. stateReceived ← TRUE<br />
21. end if<br />
22. end while<br />
23. TOReconfigure(S p . members) /* configura replicação da máquina <strong>de</strong> estados */<br />
24. /* Código do servidor q */<br />
25. upon SegDeliver(C p JOIN ) do<br />
26. change ← changes ∪ C p /* registra alteração da lista <strong>de</strong> membros */<br />
27. SegResponse(C p JOIN_OK )<br />
28. end operation<br />
29. operation SegLeave(C p )<br />
30. /* Código do cliente p */<br />
31. SegRequest(S p LEAVE ) /* invoca o próprio segmento */<br />
32. wait for TOReconfigureOk S /* reconfiguração que exclui p terminou */<br />
33. OverlayLeave(C p ) /* sai do overlay */<br />
34. /* Código do servidor q*/<br />
35. upon SegDeliver(C p LEAVE ) do<br />
36. changes ← changes ∪ − C p /* registra alteração da lista <strong>de</strong> membros */<br />
37. SegResponse(C p LEAVE_OK )<br />
38. end operation<br />
Algoritmo 3: Entrada e saída <strong>de</strong> nós em segmentos<br />
162
3.1.3. Reconfiguração <strong>de</strong> Segmentos<br />
A reconfiguração <strong>de</strong> um segmento ocorre quando nós executam a operação<br />
(Algoritmo 4). Essa operação é invocada após certo tempo, indicado<br />
pelo estouro do temporizador<br />
. Nesse momento, o nó assina e<br />
dissemina no segmento uma mensagem <strong>de</strong> tentativa <strong>de</strong> reconfiguração (linhas 3 a 5).<br />
Essas tentativas <strong>de</strong> reconfiguração (recepções <strong>de</strong> mensagens _ ) são<br />
acumuladas pelos nós do segmento (linha 8) e quando algum nó recebe <strong>de</strong>ssas<br />
tentativas, dispara uma requisição or<strong>de</strong>nada para a reconfiguração, enviando juntamente<br />
as tentativas assinadas como prova (linhas 9 a 11). Como as tentativas não são<br />
or<strong>de</strong>nadas, é possível que a requisição <strong>de</strong> reconfiguração seja invocada mais <strong>de</strong> uma<br />
vez, porém o teste da linha 15 garante que a reconfiguração <strong>de</strong> fato somente ocorrerá<br />
uma vez por segmento. Além disso, a reconfiguração é or<strong>de</strong>nada juntamente com os<br />
pedidos <strong>de</strong> entrada e saída, o que garante que todos os nós corretos possuem o mesmo<br />
conjunto h e, portanto, calcularão o mesmo conjunto <strong>de</strong> membros.<br />
O código da reconfiguração consiste inicialmente em calcular o novo conjunto<br />
<strong>de</strong> membros (linha 17) e checar o tamanho do conjunto <strong>de</strong> novos membros a fim <strong>de</strong><br />
<strong>de</strong>tectar se será necessário dividir ou unir segmentos, <strong>de</strong> acordo com o tamanho do<br />
conjunto e com os parâmetros globais e (linhas 18 e 20). Se não for o caso,<br />
ocorrerá uma reconfiguração simples (linhas 23 a 39), que consiste em gerar e assinar<br />
localmente um novo certificado <strong>de</strong> segmento (linhas 23 e 24), disseminar e coletar as<br />
assinaturas <strong>de</strong> membros do segmento antigo (linhas 25 a 32) e montar o novo<br />
certificado com as assinaturas coletadas (linha 34). Depois, o estado da aplicação local é<br />
obtido pela chamada<br />
e disseminado para os novos membros (linhas<br />
35 a 38) e o algoritmo <strong>de</strong> RME é reconfigurado com (linha 39).<br />
3.1.4. Divisão e União <strong>de</strong> Segmentos<br />
A divisão <strong>de</strong> segmentos ocorre quando o número <strong>de</strong> nós em um segmento exce<strong>de</strong> uma<br />
constante . Essa constante é conhecida globalmente e indica um número <strong>de</strong> nós a<br />
partir do qual é aconselhável formar duas MEs. A divisão em si consiste inicialmente<br />
em dividir o conjunto total <strong>de</strong> membros em dois subconjuntos <strong>de</strong> maneira que um<br />
subconjunto conterá meta<strong>de</strong> dos nós com menor i<strong>de</strong>ntificador e o outro subconjunto<br />
a outra meta<strong>de</strong> com i<strong>de</strong>ntificador superior. Cada segmento será responsável por um<br />
intervalo <strong>de</strong> chaves <strong>de</strong>finido da seguinte forma: seja o intervalo <strong>de</strong> chaves do<br />
segmento antigo e o membro que possui o menor i<strong>de</strong>ntificador do subconjunto ,<br />
então = [ . ) e = [ . ). O dos novos certificados<br />
será o sucessor do do segmento atual. A assinatura e transferência do estado são<br />
similares à reconfiguração simples, porém são dois certificados assinados e para os<br />
novos membros são enviados apenas o estado referente ao segmento do qual farão parte.<br />
A reconfiguração da RME ocorre <strong>de</strong> maneira similar à reconfiguração simples.<br />
A união <strong>de</strong> segmentos é um pouco mais complexa que a divisão, pois a<br />
reconfiguração envolve duas máquinas <strong>de</strong> estados em execução. A união é iniciada<br />
quando o número <strong>de</strong> nós do segmento ficará menor que os necessários para<br />
manter as proprieda<strong>de</strong>s da RME. Os nós do segmento que iniciou a união (pelo menos<br />
corretos) enviam mensagens simples para os nós do seu segmento sucessor a fim<br />
<strong>de</strong> notificar a necessida<strong>de</strong> <strong>de</strong> uma união. Essa mensagem <strong>de</strong>ve conter o novo conjunto<br />
<strong>de</strong> membros do segmento, conforme calculado na operação<br />
, para que<br />
163
o segmento sucessor possa calcular os membros do novo segmento resultante da união.<br />
De maneira similar à operação<br />
, quando um nó do segmento vizinho<br />
recebe pedidos <strong>de</strong> união válidos, este invoca uma operação na RME do próprio<br />
segmento para que uma reconfiguração <strong>de</strong> união ocorra. Os nós do segmento vizinho<br />
executam uma operação similar à divisão, no sentido <strong>de</strong> gerar um novo certificado <strong>de</strong><br />
segmento. Este novo segmento conterá todos os membros dos dois segmentos, terá<br />
superior aos valores nos dois segmentos envolvidos na união e terá intervalo <strong>de</strong><br />
1. operation SegReconfigure<br />
2. upon ReconfigTimeout do<br />
3. for all C i ∈ S p . members do<br />
4. Send(C i . addr TRY_RECONF C p S p . confId σ p ) /* tentativa <strong>de</strong> reconfiguração */<br />
5. end for<br />
6. upon Receive TRY_RECONF C i confId i σ i do<br />
7. if confId i = S q . confId then /* testa se tentativa não está atrasada (não or<strong>de</strong>nada) */<br />
8. reconfigCount ← reconfigCount ∪ TRY_RECONF C i confId i σ i<br />
9. if #reconfigCount f then /* número mínimo <strong>de</strong> tentativas alcançado */<br />
10. TOMulticast(S q . members RECONFIG C p reconfigCount σ q ) /* realiza<br />
reconfiguração com chamada or<strong>de</strong>nada */<br />
11. end if<br />
12. end if<br />
13. /* Código do servidor q */<br />
14. upon TODeliver( RECONFIG C p reconfigCount p σ p ) do<br />
15. if #reconfigCount p f ∧ ∀r ∈ reconfigCount p ∶ r. confId = S q . confId ∧<br />
ValidSig r then /* tentativas suficientes, assinaturas válidas, relativas ao seg. atual */<br />
16. /* calcula novo conjunto <strong>de</strong> membros */<br />
17. newMembers ← (S q . members ∪ C i ∶ C i ∈ changes ) ∖ C i ∶ − C i ∈ changes<br />
18. if #newMembers < n MIN then /* necessário unir segmentos */<br />
19. Merge newMembers<br />
20. else if #newMembers > n MAX then /* necessário dividir segmento */<br />
21. Split newMembers<br />
22. else /* reconfiguração simples */<br />
23. newConfId ← S q . confId<br />
24. σ q ← Sign( newMembers newConfId S q . start S q . end )<br />
25. newΣ ← ∅ /* disseminação da assinatura */<br />
26. for all C i ∈ S q . members do Send(C i . addr NEW_SIG C q σ q ) end for<br />
27. while #newΣ < f do<br />
28. wait for Receive NEW_SIG C i σ i<br />
29. if ValidSig(σ i newMembers newConfId S q . start S q . end ) then<br />
30. newΣ ← newΣ ∪ σ i<br />
31. end if<br />
32. end while<br />
33. newHistory ← S q . history ∪ S q /* certificado atual entra no histórico */<br />
34. S q ← newMembers newConfId S q . start S q . end newΣ newHistory<br />
35. appState q ← SegGetAppState /* upcall para obter estado da aplicação */<br />
36. for all C i ∶ C i ∈ changes do<br />
37. Send(C i . addr STATE C q S q appState q σ q )<br />
38. end for<br />
39. TOReconfigure S q . members /* reconfigura máquina <strong>de</strong> estados */<br />
40. end if<br />
41. changes ← ∅ /* limpa registro <strong>de</strong> entradas e saídas */<br />
42. reconfigCount ← ∅ /* reinicia contador <strong>de</strong> pedidos <strong>de</strong> reconfiguração */<br />
43. end if<br />
44. end operation<br />
Algoritmo 4: Reconfiguração <strong>de</strong> Segmento<br />
164
chaves igual à união dos dois intervalos. Os membros dos dois segmentos trocam os<br />
estados da aplicação para formar um estado agregado e <strong>de</strong>pois disso enviam o estado<br />
agregado aos novos membros (que estavam registrados nos conjuntos h dos dois<br />
segmentos). A reconfiguração da RME ocorre como na reconfiguração simples.<br />
4. Consi<strong>de</strong>rações sobre a Infraestrutura Proposta<br />
A camada <strong>de</strong> segmentação tem a função <strong>de</strong> permitir o uso eficiente <strong>de</strong> algoritmos <strong>de</strong><br />
suporte à RME (Replicação Máquina <strong>de</strong> Estado) em ambientes <strong>de</strong> larga escala.<br />
Normalmente esses algoritmos possuem custo quadrático em função do número <strong>de</strong><br />
participantes, o que torna pouco escalável e bastante custosa sua aplicação direta em<br />
re<strong>de</strong>s P2P. Com a solução proposta neste trabalho, é possível prover confiabilida<strong>de</strong> e<br />
tolerância a intrusões para aplicações executando sobre re<strong>de</strong>s P2P <strong>de</strong> gran<strong>de</strong> porte.<br />
A operação consiste <strong>de</strong> uma simples busca no overlay por um<br />
intervalo <strong>de</strong> chaves. O Algoritmo 1 <strong>de</strong>screve uma busca recursiva, na qual segmentos<br />
adicionais são buscados apenas <strong>de</strong>pois que o segmento anterior é encontrado. Para<br />
gran<strong>de</strong>s intervalos <strong>de</strong> chaves, é possível dividir os mesmos e realizar buscas em paralelo<br />
nos correspon<strong>de</strong>ntes subintervalos, porém um número gran<strong>de</strong> <strong>de</strong> buscas paralelas po<strong>de</strong><br />
levar a redundância, isto é, múltiplas buscas po<strong>de</strong>m chegar ao mesmo segmento. A<br />
terminação da operação está ligada à garantia <strong>de</strong> entrega <strong>de</strong> mensagens provida pela<br />
camada <strong>de</strong> overlay. Como o overlay utilizado é probabilístico, existe uma pequena<br />
chance da operação ficar bloqueada aguardando respostas porque o overlay<br />
falhou. Uma solução simples seria usar um temporizador que levaria à repetição da<br />
busca.<br />
Outro aspecto importante da operação é a verificação, por meio do<br />
histórico <strong>de</strong> segmentos, da valida<strong>de</strong> dos certificados <strong>de</strong> segmento recebidos na busca.<br />
Essa verificação po<strong>de</strong> implicar em um alto custo, uma vez que o histórico é um conjunto<br />
<strong>de</strong> segmentos que aumenta à medida que o sistema evolui. Uma otimização que diminui<br />
o custo <strong>de</strong> processamento consiste em manter em cada nó um cache <strong>de</strong> certificados<br />
válidos. Toda vez que um certificado é validado, por meio da verificação das<br />
assinaturas, este é adicionado ao cache. Validações subsequentes do mesmo certificado<br />
não precisariam verificar as assinaturas, uma vez que este estaria presente no cache.<br />
Essa otimização tem um efeito importante, pois quanto mais antigo é um segmento,<br />
maior a probabilida<strong>de</strong> <strong>de</strong> ser compartilhado por vários históricos <strong>de</strong> segmentos mais<br />
atuais. Para reduzir o custo <strong>de</strong> transmissão, ao realizar uma busca, um nó po<strong>de</strong> enviar na<br />
requisição certificados <strong>de</strong> segmento contidos no cache local que interseccionam com o<br />
intervalo <strong>de</strong> chaves procurado. Caso os certificados enviados façam parte do histórico<br />
dos segmentos requisitados, os nós que respon<strong>de</strong>rem a requisição po<strong>de</strong>m podar os<br />
históricos <strong>de</strong> certificados que aten<strong>de</strong>m a <strong>de</strong>manda. Ou seja, os históricos não precisam<br />
ser enviados completos para as validações. São excluídos dos históricos todos os<br />
certificados anteriores aos certificados enviados na requisição <strong>de</strong> busca.<br />
A operação<br />
apresenta apenas o custo <strong>de</strong> uma invocação da RME,<br />
uma vez que o certificado <strong>de</strong> segmento contém os en<strong>de</strong>reços dos nós correspon<strong>de</strong>ntes.<br />
Po<strong>de</strong> ocorrer, no entanto, que o certificado usado no momento da invocação esteja<br />
ultrapassado por conta <strong>de</strong> uma reconfiguração no segmento invocado. Nesse caso, os<br />
nós não respon<strong>de</strong>rão à requisição, e faz-se o uso <strong>de</strong> um temporizador para retirar o<br />
cliente da espera. Po<strong>de</strong> ocorrer <strong>de</strong> o temporizador estourar por causa <strong>de</strong> um atraso na<br />
165
Tabela 4: Custo típico das operações<br />
Operação Mensagens Rodadas<br />
k − k<br />
SegFind O(f N N Seg ) N<br />
K Seg<br />
SegRequest O(N Seg ) 5<br />
k − k<br />
SegJoin O(f N N Seg ) N 8<br />
K Seg<br />
SegLeave O(N Seg ) 5<br />
SegReconfigure O(N Seg ) 8 (reconf. simples e divisão), 13 (união)<br />
re<strong>de</strong> e não por conta da reconfiguração do segmento e a repetição da invocação<br />
provocará uma execução dupla da requisição. Cabe à aplicação buscar novamente o<br />
certificado com e garantir a i<strong>de</strong>mpotência das operações, por exemplo, com<br />
uso <strong>de</strong> nonces. Para garantir que a requisição da aplicação será efetivamente respondida,<br />
é preciso manter a premissa <strong>de</strong> que o número total <strong>de</strong> reconfigurações do sistema é<br />
finito, ou pelo menos que o número <strong>de</strong> reconfigurações concorrentes com uma<br />
requisição é finito. Essa premissa é usada em outros sistemas dinâmicos <strong>de</strong>scritos na<br />
literatura para garantir terminação [Aguilera et al. 2009].<br />
A operação faz uso das operações e em um laço<br />
<strong>de</strong> repetição como seria usado na camada <strong>de</strong> aplicação. Dessa forma, também <strong>de</strong>pen<strong>de</strong><br />
da premissa <strong>de</strong>scrita acima para terminar. A operação<br />
é direcionada<br />
diretamente ao próprio segmento do nó cliente, ou seja, não é possível que o certificado<br />
<strong>de</strong> segmento seja antigo em nós corretos. Uma limitação <strong>de</strong>ssa operação é que nós<br />
corretos precisam aguardar a próxima reconfiguração para saírem do sistema. Isso é<br />
necessário para que as requisições à ME, bem como a assinatura do próximo certificado<br />
e a transferência do estado da aplicação possam sempre ocorrer corretamente.<br />
A operação<br />
é a que apresenta o maior custo <strong>de</strong> toda a camada<br />
<strong>de</strong> segmentação por conta da necessida<strong>de</strong> <strong>de</strong> união e divisão <strong>de</strong> segmentos. No caso <strong>de</strong><br />
uma reconfiguração simples (sem divisão nem união) há uma rodada <strong>de</strong> disseminação<br />
<strong>de</strong> assinaturas e <strong>de</strong>pois a transferência <strong>de</strong> estado para os segmentos novos. No caso <strong>de</strong><br />
divisão <strong>de</strong> segmento são duas assinaturas, porém o custo <strong>de</strong> mensagens é o mesmo e a<br />
transferência <strong>de</strong> estado é igualmente simples. A união é muito mais custosa, uma vez<br />
que envolve a invocação <strong>de</strong> outro segmento e a transferência <strong>de</strong> estado ocorre também<br />
entre os membros dos segmentos antigos antes <strong>de</strong>sse estado ser enviado aos novos<br />
membros. Além disso, se muitos nós entrarem ou saírem dos segmentos próximos ao<br />
mesmo tempo, po<strong>de</strong> ser necessário realizar mais <strong>de</strong> uma divisão ou união em sequência.<br />
A Tabela 4 apresenta aproximações dos custos <strong>de</strong> mensagens (assintóticas) e <strong>de</strong><br />
rodadas relativos às operações da camada <strong>de</strong> segmentação em situações típicas, sem<br />
levar em conta as otimizações <strong>de</strong>scritas nesta seção. Os valores são <strong>de</strong>rivados dos<br />
algoritmos da Seção 3.1 e assumem que = é o número médio <strong>de</strong> nós por<br />
segmento, é o tamanho médio do intervalo <strong>de</strong> chaves dos segmentos, o custo da<br />
invocação na RME é ( ) mensagens e <strong>de</strong>manda 5 rodadas [Castro e Liskov 1999],<br />
o custo esperado <strong>de</strong> um envio usando o overlay é<br />
mensagens e<br />
rodadas, on<strong>de</strong> é o número <strong>de</strong> nós no sistema [Castro et al. 2002].<br />
166
5. Trabalhos Relacionados<br />
Rosebud [Rodrigues e Liskov 2003] é um sistema <strong>de</strong> armazenamento distribuído que<br />
apresenta características similares a um overlay P2P estruturado. Para garantir<br />
disponibilida<strong>de</strong> e consistência diante <strong>de</strong> nós maliciosos, dados são replicados em<br />
nós e quóruns <strong>de</strong> nós são usados para realizar leitura e escrita. O sistema permite<br />
entrada e saída <strong>de</strong> nós por meio <strong>de</strong> um esquema <strong>de</strong> reconfiguração. Diferentemente da<br />
proposta <strong>de</strong>ste trabalho, a reconfiguração é controlada por um subconjunto <strong>de</strong> nós do<br />
sistema, chamado <strong>de</strong> serviço <strong>de</strong> reconfiguração. A visão completa do sistema é mantida<br />
pelo serviço <strong>de</strong> reconfiguração e certificados contendo essa visão são disseminados a<br />
todos os nós a cada reconfiguração. No nosso trabalho, evitamos a necessida<strong>de</strong> <strong>de</strong><br />
conhecimento completo do sistema, com o intuito <strong>de</strong> aliviar problemas <strong>de</strong> escala e<br />
também para mantermos a nossa proposta mais <strong>de</strong> acordo com a filosofia P2P que<br />
enfatiza a inexistência <strong>de</strong> gerenciamentos globais.<br />
Castro et al. (2002) apresentam a proposta <strong>de</strong> um overlay P2P que garante alta<br />
probabilida<strong>de</strong> na entrega <strong>de</strong> mensagens mesmo quando uma parcela dos nós do sistema<br />
é maliciosa. A garantia <strong>de</strong> entrega é uma proprieda<strong>de</strong> importante em re<strong>de</strong>s P2P e<br />
permite a construção <strong>de</strong> soluções mais completas para prover tolerância a falhas e<br />
intrusões em re<strong>de</strong>s P2P, como a que apresentamos neste trabalho. No próprio artigo,<br />
Castro et al. (2002) <strong>de</strong>screvem brevemente uma solução para leitura e escrita<br />
consistente <strong>de</strong> objetos mutáveis em uma re<strong>de</strong> P2P usando o roteamento confiável<br />
juntamente com técnicas <strong>de</strong> RME. Há certa similarida<strong>de</strong> com a solução proposta neste<br />
trabalho, porém aqui esten<strong>de</strong>mos a replicação para suportar quaisquer operações, e<br />
tratamos <strong>de</strong> questões como entrada e saída <strong>de</strong> nós, além <strong>de</strong> união e divisão <strong>de</strong><br />
segmentos.<br />
Bhattacharjee et al. (2007) <strong>de</strong>finem uma solução <strong>de</strong> roteamento P2P tolerante a<br />
intrusões com base na divisão do sistema em segmentos dinâmicos que po<strong>de</strong>m sofrer<br />
divisões ou uniões à medida que o sistema evolui. Porém, estes segmentos são em geral<br />
maiores dos que aqueles adotados neste trabalho e não estão associados a RMEs. Cada<br />
segmento possui um subconjunto <strong>de</strong> nós, o comitê, que participam <strong>de</strong> uma RME e têm a<br />
função <strong>de</strong> <strong>de</strong>cidir sobre as reconfigurações do segmento, disseminando os certificados<br />
<strong>de</strong> novos segmentos. A confiabilida<strong>de</strong> das informações emitidas pelo comitê é garantida<br />
pelo uso <strong>de</strong> criptografia <strong>de</strong> limiar assimétrica que permite a recriação do segredo<br />
compartilhado em caso <strong>de</strong> reconfiguração do comitê. Neste trabalho evitamos a criação<br />
<strong>de</strong> uma hierarquia, pois isso adicionaria complexida<strong>de</strong> e custo no gerenciamento dos<br />
segmentos que seriam formados por dois tipos <strong>de</strong> nós. Além disso, adotamos o<br />
mecanismo <strong>de</strong> enca<strong>de</strong>amento <strong>de</strong> certificados <strong>de</strong> segmento como meio <strong>de</strong> verificação dos<br />
mesmos para evitar os altos custos <strong>de</strong> reconfiguração da criptografia <strong>de</strong> limiar (obtenção<br />
<strong>de</strong> novas chaves parciais em cada atualização dos segmentos).<br />
6. Conclusão<br />
Este trabalho apresentou uma infraestrutura para a construção <strong>de</strong> memórias distribuídas<br />
<strong>de</strong> larga escala com base em um overlay P2P tolerante a intrusões. Esta infraestrutura<br />
utiliza segmentação para permitir o uso eficiente <strong>de</strong> técnicas <strong>de</strong> Replicação Máquina <strong>de</strong><br />
Estados. Aspectos <strong>de</strong> dinamismo do sistema como entradas e saídas <strong>de</strong> nós, além <strong>de</strong><br />
união e divisão <strong>de</strong> segmentos, foram também <strong>de</strong>scritos no texto. Consi<strong>de</strong>rações sobre os<br />
custos e as limitações da infraestrutura foram levantadas e algumas otimizações foram<br />
167
citadas. Para <strong>de</strong>monstrar a utilida<strong>de</strong> da infraestrutura proposta, um espaço <strong>de</strong> tuplas foi<br />
<strong>de</strong>senvolvido sobre a mesma. Os próximos passos <strong>de</strong>ste trabalho compreen<strong>de</strong>m a<br />
formalização das provas <strong>de</strong> funcionamento dos algoritmos propostos e a obtenção <strong>de</strong><br />
resultados experimentais por meio <strong>de</strong> simulações e testes.<br />
8. Referências<br />
Aguilera, M. K., Keidar, I., Malkhi, D. e Shraer, A. (2009) “Dynamic Atomic Storage<br />
Without Consensus”, In: Proceedings of the PODC’09, pp. 17-25, ACM.<br />
Baldoni, R., Jiménez-Peris, R., Patiño-Martinez, M. e Virgillito, A. (2005) “Dynamic<br />
Quorums for DHT-based P2P Networks”, In: Proceedings of the NCA’05, IEEE.<br />
Bhattacharjee, B., Rodrigues, R. e Kouznetsov, P. (2007) “Secure Lookup without<br />
(Constrained) Flooding”, In: Proceedings of the WRAITS’07, pp. 13-17.<br />
Castro, M., Liskov, B. (1999) “Practical Byzantine Fault Tolerance”, In: Proceedings of<br />
the OSDI’99, USENIX.<br />
Castro, M., Druschel, P., Ganesh, A., Rowstron, A. e Wallach, D. S. (2002) “Secure<br />
Routing for Structured Peer-to-Peer Overlay Networks”, In: Proceedings of the<br />
OSDI’02, USENIX.<br />
Dwork, C., Lynch, N. e Stockmeyer, L. (1988) “Consensus in the Presence of Partial<br />
Synchrony”, In: Journal of the ACM, v. 35, n. 2, pp. 288-323, ACM.<br />
Gelernter, D. (1985) “Generative Communication in Linda”, In: ACM Transactions on<br />
Programming Languages and Systems, v.7, n. 1, pp. 80-112, ACM.<br />
Lamport, L., Shostak, R., Pease, M. (1982) “The Byzantine generals problem”. ACM<br />
TOPLAS, v. 4, n. 3, pp. 382-401, ACM.<br />
Rodrigues, R. e Liskov, B. (2003) “Rosebud: A Scalable Byzantine-Fault-Tolerant<br />
Storage Architecture”, Relatório Técnico, MIT.<br />
Rowstron, A. I. T., Druschel, P. (2001) “Pastry: Scalable, Decentralized Object<br />
Location, and Routing for Large-Scale Peer-to-Peer Systems”, In: Proceedings of the<br />
Middleware’01, Springer.<br />
Schnei<strong>de</strong>r, F. B. (1990) “Implementing fault-tolerant service using the state machine<br />
aproach: A tutorial”. ACM Computing Surveys, v. 22, n. 4, ACM.<br />
Steinmetz, R. e Wehrle, K. (Eds.) (2005) Peer-to-Peer Systems and Applications,<br />
LNCS, v. 3485, Springer.<br />
Stoica, I., Morris, R., Liben-Nowell, D., Karger, D. R., Kaashoek, M. F., Dabek, F. e<br />
Blakrishnan, H. (2003) “Chord: Scalable Peer-to-peer Lookup Protocol for Internet<br />
Applications”, In: ACM/IEEE Transactions on Networking (TON), v. 11, n. 1, IEEE<br />
Press.<br />
168
Rumo à Caracterização <strong>de</strong> Disseminação Ilegal <strong>de</strong> Filmes em<br />
Re<strong>de</strong>s BitTorrent<br />
Adler Hoff Schmidt, Marinho Pilla Barcellos, Luciano Paschoal Gaspary<br />
1 Instituto <strong>de</strong> Informática – Universida<strong>de</strong> Fe<strong>de</strong>ral do Rio Gran<strong>de</strong> do Sul (UFRGS)<br />
Caixa Postal 15.064 – 91.501-970 – Porto Alegre – RS – Brazil<br />
{ahschmidt,marinho,paschoal}@inf.ufrgs.br<br />
Abstract. Content sharing through BitTorrent (BT) networks accounts nowadays<br />
for a consi<strong>de</strong>rable fraction of the Internet traffic. Recent monitoring reports<br />
revealed that the contents being shared are mostly illegal and that movie<br />
is the most popular media type. Research efforts carried out to un<strong>de</strong>rstand content<br />
production and sharing dynamics in BT networks do not provi<strong>de</strong> precise<br />
information in respect to the behavior behind illegal film dissemination, being<br />
this the main objective and contribution of this paper. To perform such analysis,<br />
we monitored during 30 days all film torrent files published on the main<br />
BT public community. Furthermore, we joined the respective swarms, without<br />
downloading content, in or<strong>de</strong>r to obtain additional information regarding illegal<br />
sharing. As result, we present, characterize and discuss who produces and<br />
who publishes torrents of copyright-infringing files, what is produced and who<br />
acts as first provi<strong>de</strong>r of the contents.<br />
Resumo. O compartilhamento <strong>de</strong> conteúdo por meio <strong>de</strong> re<strong>de</strong>s BitTorrent (BT)<br />
é atualmente um dos principais responsáveis pelo volume <strong>de</strong> dados na Internet.<br />
Relatórios <strong>de</strong> monitoração recentes constataram que os conteúdos sendo compartilhados<br />
são, em ampla maioria, ilegais e que filme é o tipo <strong>de</strong> mídia mais<br />
comum. Esforços <strong>de</strong> pesquisa realizados para enten<strong>de</strong>r a dinâmica <strong>de</strong> produção<br />
e <strong>de</strong> compartilhamento <strong>de</strong> conteúdo em re<strong>de</strong>s BT não oferecem informações precisas<br />
sobre o comportamento por trás da disseminação ilegal <strong>de</strong> filmes, sendo<br />
esse o principal objetivo e contribuição <strong>de</strong>ste artigo. Para realizar tal análise,<br />
monitorou-se todos os arquivos torrent <strong>de</strong> filmes publicados na principal comunida<strong>de</strong><br />
pública <strong>de</strong> BT durante 30 dias e ingressou-se nos enxames, sem compartilhar<br />
conteúdo, a fim <strong>de</strong> obter informações adicionais acerca <strong>de</strong> compartilhamento.<br />
Como resultado, apresenta-se, caracteriza-se e discute-se quem produz<br />
e quem publica torrents <strong>de</strong> cópias ilícitas, o que é produzido e quem atua como<br />
primeiro provedor dos conteúdos.<br />
1. Introdução<br />
Re<strong>de</strong>s BitTorrent (BT) são atualmente a principal opção para usuários compartilharem<br />
conteúdo através da Internet [Schulze and Mochalski 2009]. Segundo estudo apresentado<br />
pela Envisional [Envisional 2011], aproximadamente dois terços dos 2,72 milhões<br />
<strong>de</strong> torrents administrados pelo principal rastreador BT são <strong>de</strong> conteúdos ilícitos, algo que<br />
reforça a noção intuitiva <strong>de</strong> BT ser largamente utilizado para compartilhar arquivos que<br />
infringem direitos autorais. O mesmo estudo aponta que 35,2% <strong>de</strong>sses conteúdos ilícitos<br />
são cópias ilegais <strong>de</strong> filmes.<br />
169
Apesar <strong>de</strong> existirem algumas publicações caracterizando compartilhamento <strong>de</strong><br />
conteúdo em re<strong>de</strong>s BT [Zhang et al. 2010b, Zhang et al. 2010a, Le Blond et al. 2010,<br />
Cuevas et al. 2010], nenhuma concentrou-se em observar aspectos específicos do processo<br />
<strong>de</strong> disseminação <strong>de</strong> conteúdos ilícitos, e muito menos <strong>de</strong> cópias ilegais <strong>de</strong> filmes<br />
(como, por exemplo, usuários responsáveis pela criação das cópias, tecnologias <strong>de</strong><br />
digitalização utilizadas, etc). Pouco se sabe, por exemplo, sobre quem são os usuários<br />
responsáveis por criar cópias ilegais, quais são os processos <strong>de</strong> digitalização empregados,<br />
quem publica torrents <strong>de</strong>sses conteúdos, e quem fomenta, nos estágios iniciais, os<br />
enxames formados em torno <strong>de</strong> cópias ilegais.<br />
Algumas razões que justificam a importância <strong>de</strong> enten<strong>de</strong>r o compartilhamento ilegal<br />
<strong>de</strong> filmes em re<strong>de</strong>s BT são discutidas a seguir. Primeiro, esse tipo <strong>de</strong> conteúdo é o<br />
principal responsável pelo volume <strong>de</strong> tráfego <strong>de</strong>ssas re<strong>de</strong>s. Segundo, caracterizar fi<strong>de</strong>dignamente<br />
a ativida<strong>de</strong> dos disseminadores <strong>de</strong>sses conteúdos é base para formular mecanismos<br />
<strong>de</strong> combate a esse comportamento in<strong>de</strong>sejado. Terceiro, responsáveis por conteúdos<br />
(no caso <strong>de</strong>ste artigo, filmes) protegidos por direitos autorais po<strong>de</strong>m amparar-se em conhecimento<br />
acerca do comportamento <strong>de</strong> usuários mal intencionados e criar estratégias<br />
para minimizar proliferação in<strong>de</strong>vida <strong>de</strong> cópias ilegais.<br />
Diante do problema e da motivação em abordá-lo, neste artigo apresenta-se resultados<br />
<strong>de</strong> um estudo experimental sistemático realizado para caracterizar disseminação<br />
ilegal <strong>de</strong> filmes em re<strong>de</strong>s BT. Procura-se <strong>de</strong>svendar quem produz e quem publica cópias<br />
ilícitas, o que é produzido e quem atua como primeiro provedor. Além disso, estabelecese<br />
relações entre agentes envolvidos e realiza-se exercício visando observar dinâmicas<br />
existentes (e não facilmente perceptíveis) no processo <strong>de</strong> disseminação ilegal <strong>de</strong> filmes.<br />
Para realizar o estudo, esten<strong>de</strong>u-se e utilizou-se a arquitetura <strong>de</strong> monitoração TorrentU<br />
[Mansilha et al. 2011], <strong>de</strong>senvolvida pelo grupo. Em um mês <strong>de</strong> monitoração,<br />
obteve-se 11.959 torrents, 1.985 nomes <strong>de</strong> usuários da comunida<strong>de</strong>, 94 rastreadores e<br />
76.219 en<strong>de</strong>reços IP únicos. Observou-se, ainda, ativida<strong>de</strong>s realizadas por 342 grupos <strong>de</strong><br />
digitalização.<br />
O restante do artigo está organizado como segue. A seção 2 apresenta conceitos<br />
acerca <strong>de</strong> compartilhamento ilícito <strong>de</strong> filmes e discute trabalhos relacionados. A<br />
seção 3 discorre sobre a arquitetura <strong>de</strong> monitoração e as <strong>de</strong>cisões tomadas quanto à sua<br />
instanciação. A seção 4 relata e discute os resultados obtidos. A seção 5 encerra o artigo<br />
com consi<strong>de</strong>rações finais e perspectivas para trabalhos futuros.<br />
2. Fundamentos e Trabalhos Relacionados<br />
Esta seção está organizada em duas partes. Primeiro, revisita práticas adotadas por grupos<br />
<strong>de</strong> digitalização e características dos processos utilizados para digitalizar conteúdo. Na<br />
sequência, <strong>de</strong>screve e discute os trabalhos relacionados <strong>de</strong> maior relevância.<br />
2.1. Conceitos Associados ao Compartilhamento Ilícito <strong>de</strong> Filmes<br />
Grupos <strong>de</strong> digitalização são os responsáveis pela criação, através <strong>de</strong> meio ilícitos, <strong>de</strong><br />
cópias <strong>de</strong> filmes [Wikipedia 2011a]. Eles po<strong>de</strong>m ser compostos por um ou mais membros<br />
e recebem crédito pela sua ativida<strong>de</strong> agregando a sua i<strong>de</strong>ntificação ao nome dos torrents<br />
por eles criados. Via <strong>de</strong> regra, consumidores experientes não reconhecem um torrent <strong>de</strong><br />
filme como confiável (e evitam usá-lo) caso ele não i<strong>de</strong>ntifique o grupo <strong>de</strong> digitalização<br />
170
esponsável. Logo, essa “etiqueta” é obe<strong>de</strong>cida tanto por produtores quanto por consumidores.<br />
Ela provê uma maneira <strong>de</strong> dar notorieda<strong>de</strong> aqueles que estão realizando essa<br />
ativida<strong>de</strong> ilegal, ao mesmo tempo em que os grupos buscam, para preservar sua reputação,<br />
assegurar o “casamento” correto entre nome dos torrents e conteúdos, bem como a correta<br />
classificação da qualida<strong>de</strong> <strong>de</strong>sses torrents.<br />
A <strong>de</strong>cisão <strong>de</strong> usuários em realizar (ou não) download <strong>de</strong> <strong>de</strong>terminadas cópias é<br />
influenciada, também, pela i<strong>de</strong>ntificação, nos torrents, dos processos <strong>de</strong> digitalização empregados<br />
[Wikipedia 2011b]. A tabela 1 lista oito processos amplamente utilizados. Cada<br />
um <strong>de</strong>les é caracterizado por uma sigla, por uma fonte, i.e., a mídia a partir da qual a<br />
cópia ilícita é gerada, e por uma expectativa <strong>de</strong> tempo, após a primeira estréia oficial do<br />
filme, para se encontrar uma cópia autêntica gerada usando o processo em questão. Os<br />
processos aparecem na tabela em or<strong>de</strong>m crescente <strong>de</strong> qualida<strong>de</strong> resultante esperada para<br />
as cópias digitalizadas.<br />
Tabela 1. Processos <strong>de</strong> digitalização<br />
Sigla Fonte Lançamento<br />
CAM Gravado no cinema 1 Semana (S)<br />
TS Gravado no cinema com fonte exclusiva <strong>de</strong> áudio 1 S<br />
TC Material sendo projetado no cinema 1 S<br />
PPVRip Exibição para clientes <strong>de</strong> hotéis 8 S<br />
SCR Cópia distribuída a críticos e usuários especiais Imprevisível<br />
DVDScr DVD distribuído para usuários especiais 8-10 S<br />
R5 DVD não editado, lançado somente na região 5 4-8 S<br />
DVDRip* DVD acessível ao público 10-14 S<br />
* Digitalizações a partir <strong>de</strong> fontes <strong>de</strong> maior qualida<strong>de</strong>, como Blu-ray, foram consi<strong>de</strong>radas DVDRip.<br />
2.2. Trabalhos Relacionados<br />
Nos últimos anos a comunida<strong>de</strong> <strong>de</strong> pesquisa em re<strong>de</strong>s par-a-par produziu alguns trabalhos<br />
ligados à monitoração <strong>de</strong> re<strong>de</strong>s BT. Nesta seção <strong>de</strong>screve-se e discute-se os mais<br />
relacionados ao presente artigo. Por questão <strong>de</strong> escopo, são organizados em três grupos:<br />
infraestruturas <strong>de</strong> monitoração, caracterizações gerais do “universo” BT e caracterizações<br />
<strong>de</strong>talhadas <strong>de</strong> produção e consumo em re<strong>de</strong>s BT.<br />
Bauer et al. [Bauer et al. 2009] propuseram uma infraestrutura <strong>de</strong> monitoração<br />
que realiza medições ativas. A monitoração consiste em contatar rastreadores, obter<br />
en<strong>de</strong>reços IP e contatar hosts, para confirmá-los como participantes “válidos” <strong>de</strong> enxames<br />
BT. Jünemann et al. [Junemann et al. 2010] <strong>de</strong>senvolveram uma ferramenta para monitorar<br />
Distributed Hash Tables (DHT) associadas a enxames BT. A ferramenta divi<strong>de</strong>-se em<br />
três módulos. O primeiro permite coletar dados da re<strong>de</strong> par-a-par, como a quantida<strong>de</strong> <strong>de</strong><br />
pares, en<strong>de</strong>reços IP, portas utilizadas e países <strong>de</strong> origens, ao percorrer a DHT. O segundo<br />
analisa os dados e gera gráficos <strong>de</strong> acordo com métricas <strong>de</strong>finidas pelos usuários. O terceiro<br />
busca, nos resultados do segundo módulo, valores que excedam limiares estipulados<br />
pelo usuário, gerando avisos. Ainda no campo <strong>de</strong> infraestruturas <strong>de</strong> monitoração, Chow<br />
et al. [Chow et al. 2007] apresentaram BTM: um sistema para auxiliar a <strong>de</strong>tecção <strong>de</strong> pirataria<br />
que lança mão <strong>de</strong> monitoração automática <strong>de</strong> enxames BT. Ele é organizado em<br />
módulos responsáveis, respectivamente, pela procura <strong>de</strong> torrents na re<strong>de</strong> e pela análise<br />
171
dos mesmos. O discernimento entre quais dos materiais monitorados violam direitos autorais,<br />
e quais não, é completamente realizado pelo usuário através das regras que po<strong>de</strong>m<br />
ser <strong>de</strong>finidas para processamento dos dados coletados.<br />
No que se refere a caracterizações gerais do “universo” BitTorrent, Zhang et al.<br />
[Zhang et al. 2010b] analisaram torrents <strong>de</strong> cinco comunida<strong>de</strong>s públicas. A <strong>de</strong>scoberta<br />
<strong>de</strong> pares <strong>de</strong>u-se através <strong>de</strong> comunicação com rastreadores ou consulta a DHTs. Os autores<br />
apresentam, entre outros aspectos, quais são as principais comunida<strong>de</strong>s <strong>de</strong> BT, os<br />
graus <strong>de</strong> participação <strong>de</strong> cada publicador <strong>de</strong> torrents, as cargas e localizações dos principais<br />
rastreadores, a distribuição geográfica dos pares e as implementações <strong>de</strong> clientes<br />
BT mais utilizadas. Seguindo uma metodologia similar à <strong>de</strong>sse trabalho, Zhang et al.<br />
[Zhang et al. 2010a] realizaram uma investigação sobre darknets em BT, i.e., comunida<strong>de</strong>s<br />
privadas. Entre os resultados apresentados, os autores comparam características<br />
<strong>de</strong> enxames impulsionados por darknets com <strong>de</strong> enxames “oriundos” <strong>de</strong> comunida<strong>de</strong>s<br />
públicas. Como observação geral <strong>de</strong>sses dois estudos, ressalta-se o interesse em “fotografar”<br />
momentos do ciclo <strong>de</strong> vida <strong>de</strong> enxames BT na tentativa <strong>de</strong> quantificá-los e <strong>de</strong> abstrair<br />
mo<strong>de</strong>los. Não fez parte <strong>de</strong> seu escopo, contudo, analisar dinâmica e caracterizar padrões<br />
<strong>de</strong> disseminação <strong>de</strong> conteúdo ilícito.<br />
Passando ao último grupo <strong>de</strong> trabalhos analisados, Blond et al.<br />
[Le Blond et al. 2010] monitoraram por 103 dias as três comunida<strong>de</strong>s <strong>de</strong> BT mais<br />
populares, traçando perfis dos provedores <strong>de</strong> conteúdo e dos consumidores mais participativos.<br />
Conseguiram i<strong>de</strong>ntificar 70% dos provedores, listar os principais conteúdos<br />
sendo compartilhados e caracterizar os participantes mais ativos (pares presentes em<br />
vários enxames). Cuevas et al. [Cuevas et al. 2010] investigaram os fatores socioeconômicos<br />
<strong>de</strong> re<strong>de</strong>s BT, ressaltando os incentivos que os provedores <strong>de</strong> conteúdos têm<br />
para realizar essa ativida<strong>de</strong>. Três grupos <strong>de</strong> publicadores foram <strong>de</strong>finidos: os motivados<br />
por incentivos financeiros, os responsáveis por material falso e os altruístas. Com um mês<br />
<strong>de</strong> medições, esses grupos foram caracterizados por Internet Service Provi<strong>de</strong>rs (ISPs)<br />
aos quais estão associados, tipos <strong>de</strong> conteúdos disponibilizados, incentivos para as suas<br />
ativida<strong>de</strong>s e renda monetária especulada. Os trabalhos <strong>de</strong> Blond et al. e Cuevas et al. são<br />
os que mais se assemelham ao apresentado neste artigo, em especial no nível <strong>de</strong>talhado<br />
<strong>de</strong> monitoração e nas técnicas empregadas. Destaca-se, entretanto, que o escopo <strong>de</strong>sses<br />
trabalhos não foi o <strong>de</strong> analisar disseminação ilegal <strong>de</strong> filmes nem tampouco <strong>de</strong> conteúdo<br />
ilícito em geral. Logo, aspectos que <strong>de</strong>sempenham papel importante na compreensão<br />
<strong>de</strong> esquemas ilegais <strong>de</strong> distribuição foram <strong>de</strong>ixados <strong>de</strong> lado. Além disso, os trabalhos<br />
parecem apresentar limitações técnicas importantes. A título <strong>de</strong> exemplo, incluem nas<br />
estatísticas resultados associados a torrents com pouco tempo <strong>de</strong> vida nas comunida<strong>de</strong>s<br />
(forte indicador <strong>de</strong> conteúdo falso), comprometendo análises realizadas e conclusões<br />
obtidas.<br />
Nesta subseção revisou-se alguns dos trabalhos mais relevantes e correlatos a este<br />
artigo. Observa-se um esforço da comunida<strong>de</strong> <strong>de</strong> pesquisa em re<strong>de</strong>s par-a-par em criar<br />
ferramental <strong>de</strong> monitoração e conduzir caracterizações. Nenhum dos trabalhos, porém,<br />
preocupou-se em investigar como re<strong>de</strong>s BT vêm sendo usadas para disseminação ilegal <strong>de</strong><br />
filmes e <strong>de</strong> outros conteúdos ilícitos. Acredita-se ser este um tópico <strong>de</strong> gran<strong>de</strong> relevância,<br />
em especial para que se possa, com conhecimento <strong>de</strong> dinâmicas até agora obscuras, subsidiar<br />
a proposição <strong>de</strong> estratégias e mecanismos eficazes que propiciem a proteção <strong>de</strong><br />
172
conteúdo protegido por direito autoral e, até mesmo, contribuir para ampliação do uso <strong>de</strong><br />
re<strong>de</strong>s BT em cenários mais sensíveis. Até on<strong>de</strong> sabemos, este é o primeiro trabalho que<br />
procura mapear, <strong>de</strong> forma sistemática, processo <strong>de</strong> disseminação <strong>de</strong> conteúdo ilegal em<br />
re<strong>de</strong>s BT. As próximas seções <strong>de</strong>talham a arquitetura <strong>de</strong> monitoração empregada, aspectos<br />
<strong>de</strong> sua instanciação e os principais resultados obtidos.<br />
3. Infraestrutura <strong>de</strong> Monitoração Utilizada<br />
Esta seção apresenta a infraestrutura <strong>de</strong> monitoração utilizada. A subseção 3.1 apresenta<br />
a arquitetura <strong>de</strong> monitoração empregada, <strong>de</strong>nominada TorrentU, e extensões implementadas<br />
para permitir a caracterização almejada. Em seguida, a subseção 3.2 <strong>de</strong>talha como a<br />
arquitetura foi instanciada.<br />
3.1. Arquitetura <strong>de</strong> Monitoração TorrentU e Extensões<br />
TorrentU [Mansilha et al. 2011] é uma arquitetura flexível projetada e <strong>de</strong>senvolvida para<br />
permitir a monitoração <strong>de</strong> re<strong>de</strong>s BitTorrent. Como a figura 1 ilustra, a arquitetura segue<br />
a abordagem clássica gerente/agente e, portanto, possui basicamente dois componentes:<br />
observador e telescópios. Observador é o componente que faz o papel <strong>de</strong> front-end, isto<br />
é, gerente, permitindo que o operador configure o sistema e observe os dados coletados<br />
em tempo real (assim como o histórico dos dados). Telescópios, por sua vez, atuam<br />
como agentes, sendo os componentes responsáveis pela monitoração do universo BitTorrent<br />
e pelo retorno <strong>de</strong> resultados <strong>de</strong> acordo com as requisições enviadas pelo Observador.<br />
Telescópios são subdivididos em três partes, <strong>de</strong>nominadas “lentes”, sendo cada uma<br />
responsável por monitorar um grupo diferente <strong>de</strong> elementos do universo: comunida<strong>de</strong>s,<br />
rastreadores e pares. Essa modularização permite que as lentes existentes possam ser<br />
substituídas, assim como novas possam ser facilmente incorporadas na arquitetura (sem<br />
modificação <strong>de</strong> seus componentes essenciais).<br />
Operador<br />
Observador<br />
1 ... n<br />
Lente<br />
Comunida<strong>de</strong><br />
Telescópio<br />
Lente<br />
Rastreador<br />
Lente<br />
Pares<br />
Comunida<strong>de</strong>s<br />
Rastreadores<br />
Enxame<br />
Par<br />
Par<br />
Troca <strong>de</strong><br />
Arquivos<br />
Busca Lista <strong>de</strong> Pares<br />
Obtém Torrent<br />
Figura 1. Arquitetura TorrentU<br />
Lançando mão da flexibilida<strong>de</strong> oferecida por TorrentU, algumas funcionalida<strong>de</strong>s,<br />
originalmente não contempladas pela arquitetura, foram implementadas e integradas. Entre<br />
as extensões, <strong>de</strong>stacam-se duas. A primeira, criada para permitir a i<strong>de</strong>ntificação dos<br />
173
primeiros pares semeadores <strong>de</strong> enxames, consiste em lente que captura torrents logo que<br />
publicados em comunida<strong>de</strong>s. A segunda extensão, também materializada por meio <strong>de</strong><br />
nova lente, realiza monitoração contínua das páginas <strong>de</strong> torrents, armazenando tempo<br />
<strong>de</strong> vida dos enxames, números <strong>de</strong> semeadores e sugadores, e testemunhos postados. O<br />
objetivo, nesse caso, é a produção <strong>de</strong> “fotografias” <strong>de</strong> enxames ao longo do tempo.<br />
O algoritmo 1 apresenta uma visão geral do procedimento <strong>de</strong> monitoração executado.<br />
Como po<strong>de</strong>-se perceber pela <strong>de</strong>scrição das funções, os torrents recentemente publicados<br />
são capturados. Para cada torrent, o(s) respectivo(s) rastreador(es) é/são caracterizado(s)<br />
e mensagem(ens) para obtenção <strong>de</strong> lista(s) <strong>de</strong> pares participantes, enviada(s).<br />
Caso obtenha-se essa(s) lista(s), um processo <strong>de</strong> caracterização dos primeiros pares participantes<br />
do enxame é realizado e, ao finalizá-lo, a lente responsável pela captura <strong>de</strong><br />
fotografias da comunida<strong>de</strong> é iniciada para o torrent em questão. São cinco parâmetros<br />
que <strong>de</strong>terminam o comportamento <strong>de</strong>sse algoritmo. Tempo <strong>de</strong>termina quanto durará a<br />
campanha <strong>de</strong> monitoração. Rodadas indica o número <strong>de</strong> tentativas a serem realizadas<br />
para contatar rastreadores. Quantida<strong>de</strong> representa o tamanho da lista <strong>de</strong> pares requisitada<br />
aos rastreadores. Limiar <strong>de</strong>termina em quais enxames será feita troca <strong>de</strong> mensagens bitfield.<br />
Periodicida<strong>de</strong> consiste no intervalo <strong>de</strong> tempo a ser respeitado para produzir cada<br />
fotografia <strong>de</strong> um dado enxame. Intervalo representa o tempo <strong>de</strong> espera entre cada rodada<br />
<strong>de</strong> execução do algoritmo.<br />
input: tempo, tentativas, quantida<strong>de</strong>, limiar, periodicida<strong>de</strong> e intervalo<br />
for i ← 0 to tempo do<br />
torrents[] ← CapturarTorrentsRecentes();<br />
for j ← 0 to torrents.size() do<br />
torrent ← torrents[j];<br />
DownloadTorrent(torrent);<br />
LerArquivo(torrent);<br />
CaracterizarRastreadores(torrent);<br />
peerList ← ObterListaPares(torrent, tentativas,<br />
quantida<strong>de</strong>);<br />
CaracterizarPares(peerList);<br />
if peerList.size() < limiar then<br />
TrocarBitfields(torrent);<br />
end<br />
IniciarCapturaFotografias(torrent, periodicida<strong>de</strong>);<br />
end<br />
Esperar (intervalo);<br />
end<br />
Algoritmo 1: Visão geral do procedimento <strong>de</strong> monitoração<br />
Ressalta-se que a ênfase <strong>de</strong>ste artigo resi<strong>de</strong> nos resultados da caracterização <strong>de</strong><br />
disseminação ilegal <strong>de</strong> filmes e não na <strong>de</strong>scrição da arquitetura <strong>de</strong> monitoração. Ao leitor<br />
interessado em <strong>de</strong>talhes acerca do funcionamento da arquitetura sugere-se consulta a<br />
artigo anterior [Mansilha et al. 2011] produzido pelo nosso grupo <strong>de</strong> pesquisa.<br />
174
3.2. Instanciação da Arquitetura<br />
Telescópios foram instanciados em três nodos do PlanetLab [PlanetLab 2011] e em um<br />
servidor privado. O objetivo <strong>de</strong>ssa redundância foi, basicamente, tolerar falhas e evitar<br />
<strong>de</strong>scontinuida<strong>de</strong> do processo <strong>de</strong> monitoração. Já o componente Observador foi instanciado<br />
em uma única estação. Entre as comunida<strong>de</strong>s BitTorrent existentes, optou-se por<br />
monitorar o PirateBay [Piratebay 2011]. Tal <strong>de</strong>ve-se ao fato <strong>de</strong> ser a comunida<strong>de</strong> aberta<br />
mais popular, disponibilizar somente torrents publicados em seus servidores, manter registro<br />
<strong>de</strong> usuários responsáveis pela publicação <strong>de</strong> cada torrent, e prover classificação <strong>de</strong><br />
cada usuário baseada em sua reputação.<br />
O processo <strong>de</strong> monitoração foi instanciado utilizando-se as seguintes<br />
configurações (po<strong>de</strong>m ser entendidas como parâmetros recém <strong>de</strong>talhados do algoritmo 1):<br />
2 tentativas para obtenção <strong>de</strong> lista <strong>de</strong> pares com cada rastreador, 50 pares por lista, limiar<br />
<strong>de</strong>finindo máximo <strong>de</strong> 10 pares com os quais serão trocadas as mensagens bitfield, periodicida<strong>de</strong><br />
<strong>de</strong> 8 horas entre cada fotografia da comunida<strong>de</strong> e intervalos <strong>de</strong> 2 minutos entre<br />
rodadas <strong>de</strong> monitoração. A monitoração foi realizada por período <strong>de</strong> um mês (05/2011<br />
à 06/2011), produzindo dados brutos que somaram 11.959 otorrents, 94 rastreadores e<br />
187.140 en<strong>de</strong>reços IP.<br />
4. Resultados<br />
A base <strong>de</strong> 11.959 torrents precisou ser submetida a um processo <strong>de</strong> filtragem, para que enxames<br />
in<strong>de</strong>sejados fossem retirados e, assim, não influenciassem a análise. Inicialmente<br />
removeu-se todos os torrents cujos rastreadores não pu<strong>de</strong>ram ser contatados <strong>de</strong>vido a inconsistências<br />
nas URLs informadas.. Nesse grupo enquadraram-se 4.181 torrents. Em um<br />
segundo momento, retirou-se aqueles torrents que tiveram menos <strong>de</strong> 8 horas <strong>de</strong> vida na<br />
comunida<strong>de</strong>, levando à glosagem <strong>de</strong> mais 4.791 torrents. Enxames com dados inconsistentes<br />
ou removidos tão precocemente da comunida<strong>de</strong> representam, muito provavelmente,<br />
conteúdos falsos. A não remoção <strong>de</strong>sses enxames po<strong>de</strong> exercer forte influência na análise<br />
dos resultados. Apesar da importância do processo <strong>de</strong> filtragem, até on<strong>de</strong> sabemos em<br />
nenhum dos trabalhos relacionados houve tal preocupação.<br />
Após as duas filtragens, 2.987 torrents remanesceram e foram analisados. Os resultados<br />
são apresentados a seguir. Inicialmente caracteriza-se produtores e publicadores<br />
<strong>de</strong> conteúdos ilícitos, investigando seus graus <strong>de</strong> ativida<strong>de</strong> e possíveis relações entre esses<br />
agentes. Na sequência, relata-se os processos <strong>de</strong> digitalização mais empregados e<br />
<strong>de</strong>talha-se a dinâmica, ao longo do tempo, <strong>de</strong> lançamento <strong>de</strong> torrents (dado um conjunto<br />
conhecido <strong>de</strong> conteúdos) x processos utilizados. Por fim, analisa-se os primeiros semeadores,<br />
procurando relações entre eles, os criadores <strong>de</strong> cópias digitais e os publicadores <strong>de</strong><br />
torrents.<br />
4.1. Produtores e Publicadores <strong>de</strong> Conteúdo Ilícito<br />
Conforme apresentado na subseção 2.1, grupos <strong>de</strong> digitalização são os principais responsáveis<br />
pela criação <strong>de</strong> cópias ilícitas <strong>de</strong> filmes sendo compartilhadas nas re<strong>de</strong>s BT.<br />
Neste artigo eles são referidos como produtores. Dos 2.987 torrents analisados, 2.066<br />
(69,16%) i<strong>de</strong>ntificam o produtor responsável por cada cópia. Esses 2.066 torrents foram<br />
criados por 342 produtores distintos. A tabela 2 enumera, em or<strong>de</strong>m <strong>de</strong>crescente,<br />
os 10 principais produtores. Ao lado, na figura 2, ilustra-se CDF (Cumulative Density<br />
175
Function) representando no eixo horizontal os produtores, or<strong>de</strong>nados por quantida<strong>de</strong> <strong>de</strong><br />
conteúdo criado, e no eixo vertical, a proporção acumulada <strong>de</strong> torrents criados. Como<br />
é possível observar, poucos produtores são responsáveis por gran<strong>de</strong> parcela do conteúdo<br />
criado; praticamente 80% das cópias foram criadas por 100 produtores (29,23% dos 342).<br />
1<br />
Tabela 2. Ranqueamento<br />
Grupo<br />
Torrents<br />
# %<br />
Waf 78 4,02<br />
Mr Keff 69 3,56<br />
Tnt Village 62 3,20<br />
DutchTeamRls 61 3,14<br />
Dmt 61 3,14<br />
Imagine 59 3,04<br />
Lkrg 51 2,63<br />
Miguel 46 2,37<br />
Martin 46 2,37<br />
Nlt 44 2,27<br />
Proporção <strong>de</strong> Torrents<br />
CDF<br />
0.9<br />
0.8<br />
0.7<br />
0.6<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
0<br />
50 100 150 200 250 300<br />
Grupos <strong>de</strong> Digitalização<br />
Figura 2. Contribuição cumulativa dos produtores<br />
Com o arquivo digital criado, o próximo passo para disseminá-lo é a publicação<br />
<strong>de</strong> torrent na comunida<strong>de</strong>. Os responsáveis por essa etapa são os publicadores, que, no<br />
escopo <strong>de</strong>ste artigo, correspon<strong>de</strong>m a usuários cadastrados no PirateBay realizando upload<br />
<strong>de</strong> torrents. Os 2.987 torrents foram publicados por um total <strong>de</strong> 517 usuários distintos.<br />
A tabela 3 apresenta os usuários mais ativos junto com a quantida<strong>de</strong> e proporção <strong>de</strong> torrents<br />
publicados. Essa tabela apresenta, além do nome do usuário, a sua categoria, que<br />
representa um “termômetro” da sua reputação na comunida<strong>de</strong>. Existem quatro categorias<br />
<strong>de</strong> usuários: VIP, confiável, ajudante e regular (estado inicial <strong>de</strong> qualquer usuário). A<br />
figura 3 apresenta uma CDF com os usuários em or<strong>de</strong>m <strong>de</strong>crescente <strong>de</strong> torrents publicados<br />
no eixo horizontal e a proporção <strong>de</strong> torrents no vertical. Ao observar esse gráfico,<br />
po<strong>de</strong>-se, novamente, perceber como poucos usuários são responsáveis pela maioria do<br />
conteúdo publicado. Em números, tem-se que 100 usuários (19,34% dos 517) publicaram<br />
quase 75% do conteúdo. Além disso, <strong>de</strong>staca-se que 25,5% dos 517 usuários eram <strong>de</strong><br />
tipos especiais (não regulares) e foram eles os responsáveis pela publicação <strong>de</strong> 59,9% dos<br />
torrents.<br />
Após análise isolada da ativida<strong>de</strong> <strong>de</strong> produtores e consumidores, procurou-se<br />
evidências quanto à existência <strong>de</strong> relação na ação <strong>de</strong> ambos agentes. Dois casos típicos foram<br />
observados: um publicador disponibilizando todos os materiais <strong>de</strong> um produtor e um<br />
grupo <strong>de</strong> publicadores trabalhando para um único produtor. Exemplificando o primeiro<br />
caso tem-se o usuário “sadbawang”, que publicou 77 dos 78 torrents do grupo “Waf”.<br />
Para ilustrar o segundo caso, tem-se que os publicadores “.BONE.” e “froggie100” foram<br />
responsáveis pela maioria dos conteúdos criados pelo grupo “Imagine”.<br />
4.2. Processos <strong>de</strong> Digitalização Empregados<br />
Como já apontado na subseção 2.1, cópias digitais <strong>de</strong> um mesmo filme são diferenciadas<br />
pelas suas qualida<strong>de</strong>s, que, por sua vez, são resultantes do processo <strong>de</strong> digitalização uti-<br />
176
Tabela 3. Ranqueamento<br />
Usuário Tipo<br />
Torrents<br />
# %<br />
.BONE. VIP 211 7,06<br />
HDVi<strong>de</strong>os Regular 91 3,04<br />
sadbawang VIP 77 2,57<br />
Sir TankaLot Confiável 73 2,44<br />
MeMar VIP 67 2,24<br />
l.diliberto VIP 57 1,90<br />
SaM VIP 47 1,57<br />
martin edguy Confiável 46 1,54<br />
miguel1983 VIP 46 1,54<br />
virana Confiável 41 1,37<br />
Proporção <strong>de</strong> Torrents<br />
CDF<br />
0.9<br />
0.8<br />
0.7<br />
0.6<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
1<br />
0<br />
50 100 150 200 250 300 350 400 450 500<br />
Usuários das Comunida<strong>de</strong>s<br />
Figura 3. Contribuição cumulativa dos<br />
publicadores<br />
lizado. Dos 2.987 torrents analisados, 2.344 (78,47%) i<strong>de</strong>ntificavam o processo utilizado<br />
para criação <strong>de</strong> cada mídia. A tabela 4 apresenta os processos, os seus graus <strong>de</strong> ocorrência<br />
e os três grupos <strong>de</strong> digitalização que mais criaram mídias empregando cada processo.<br />
Tabela 4. Principais processos<br />
Processo<br />
Torrents<br />
# %<br />
Principais Grupos<br />
DVDRip 1825 77,85 Waf, Mr Keff, Tnt Village<br />
TS 144 6,14 Imagine, Dtrg, Cm8<br />
R5 132 5,63 Imagine, Dmt, Vision<br />
DVDScr 109 4,65 Ddr, Mtr, Xtreme<br />
CAM 68 2,90 Lkrg, Imagine, Team Tnt<br />
PPVRip 27 1,15 Iflix, Dmt, Flawl3ss<br />
SCR 22 0,93 Kickass, Scr0n, 7speed<br />
TC 16 0,68 Mtr, Team Tc, Rko<br />
Analisando os resultados, observa-se que “DVDRip” representa o processo <strong>de</strong><br />
digitalização mais comum, sendo o empregado por 77,85% dos torrents analisados que<br />
i<strong>de</strong>ntificaram o processo. Tal predominância <strong>de</strong>ve-se a duas razões principais. Primeiro,<br />
o conjunto <strong>de</strong> filmes que esses torrents po<strong>de</strong>m estar representando é muito maior. Qualquer<br />
filme com 16 semanas transcorridas do seu lançamento oficial po<strong>de</strong> ser encontrado<br />
nesse formato e o resultado <strong>de</strong>sse processo são mídias com a qualida<strong>de</strong> máxima, resultando<br />
no <strong>de</strong>sinteresse pelas criadas por outros processos. Segundo, digitalizar um filme<br />
por meio <strong>de</strong>sse processo é trivial se comparado com os outros; qualquer usuário que<br />
possuir um DVD original po<strong>de</strong> fazê-lo em seu computador pessoal. Outro grupo <strong>de</strong> processos<br />
que se <strong>de</strong>staca é o formado por “CAM”, “TS”, “DVDScr” e “R5”. O alto grau<br />
<strong>de</strong> ocorrência, em comparação aos outros processos que não “DVDRip”, <strong>de</strong>ve-se a uma<br />
questão <strong>de</strong> custo/benefício entre: a dificulda<strong>de</strong> <strong>de</strong> obter-se a fonte para digitalização, o<br />
tempo necessário após o lançamento oficial do filme e a qualida<strong>de</strong> final da mídia. A<br />
título <strong>de</strong> exemplo tem-se que, apesar da qualida<strong>de</strong> resultante do processo “TC” ser a melhor<br />
entre a estréia do filme e 4-8 semanas transcorridas, “CAM” e “TS”, por utilizarem<br />
177
fonte facilmente acessíveis, são processos mais empregados (0,68% x 9,04%). Vale observar,<br />
também, como produtores “menos ativos” <strong>de</strong>stacam-se pelas suas especializações em<br />
processos que necessitam <strong>de</strong> fontes <strong>de</strong> difícil acesso. O grupo “Imagine”, por exemplo,<br />
apesar <strong>de</strong> ser somente o sexto colocado da tabela 2, apresenta-se como o principal produtor<br />
<strong>de</strong> “TS” e “R5”. Logo, as ativida<strong>de</strong>s <strong>de</strong>sse grupo tornam-se tão importantes quanto,<br />
se não mais, as dos primeiros colocados da tabela 2.<br />
Passando-se, agora, a caracterizar a dinâmica <strong>de</strong> processos <strong>de</strong> digitalização e <strong>de</strong><br />
torrents disponibilizados em portais BT em paralelo ao ciclo <strong>de</strong> vida <strong>de</strong> filmes lançados<br />
no cinema, a figura 4 sintetiza resultado <strong>de</strong> observação realizada. Antes <strong>de</strong> apresentar<br />
discussão, contudo, é necessário informar que o período mínimo <strong>de</strong> monitoração para ser<br />
possível capturar todas as digitalizações realizadas sob um mesmo filme é <strong>de</strong> 16 semanas.<br />
Como não dispôs-se <strong>de</strong>sta janela <strong>de</strong> tempo, trabalhou-se com 9 filmes, todos presentes<br />
no dataset coletado ao longo <strong>de</strong> 30 dias, cujo lançamento tivesse ocorrido há 0-4, 5-<br />
8 e há mais <strong>de</strong> 8 semanas (<strong>de</strong> acordo com o informado na IMDb [IMDB 2011]). No<br />
gráfico, o eixo horizontal representa os dias transcorridos e o eixo vertical, os processos<br />
<strong>de</strong> digitalização. Para apresentar uma “fotografia” mais fi<strong>de</strong>digna, todos torrents que não<br />
tiveram um tempo mínimo <strong>de</strong> vida <strong>de</strong> uma semana na comunida<strong>de</strong> e que não haviam sido<br />
publicados por usuários renomados foram <strong>de</strong>sconsi<strong>de</strong>rados.<br />
CAM<br />
TS<br />
R5<br />
DVDRip<br />
1-2<br />
3<br />
4<br />
5<br />
6<br />
9<br />
7<br />
6 6<br />
8<br />
9<br />
10<br />
11-25<br />
26<br />
27<br />
Velozes e Furiosos 5 Piratas do Caribe 4<br />
Thor<br />
12<br />
28-29<br />
30<br />
7<br />
4 6 6<br />
31<br />
32<br />
33-35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41-60<br />
61<br />
Dias Após Lançamento Oficial<br />
62<br />
63<br />
Rio Sem Limites Água para Elefantes<br />
64-79<br />
80<br />
5 6 4 4<br />
81<br />
82<br />
83<br />
84<br />
85<br />
86-96<br />
97<br />
98<br />
99<br />
Desconhecido Fúria sobre Rodas<br />
Esposa <strong>de</strong> Mentirinha<br />
100<br />
101<br />
102-112<br />
Figura 4. Processos <strong>de</strong> digitalização utilizados após estréia oficial<br />
Quatro aspectos merecem <strong>de</strong>staque a partir da análise do gráfico. Primeiro, mídias<br />
criadas por um processo surgem em rajadas <strong>de</strong> torrents, cada um representando o trabalho<br />
<strong>de</strong> um grupo distinto. Tal po<strong>de</strong> ser observado, por exemplo, nos dias 30 e 31, em<br />
que surge a primeira mídia gerada pelo processo “R5” do filme “Rio”. Segundo, como<br />
esperado, os intervalos apresentados na tabela 1 para surgimento das mídias geradas por<br />
meio <strong>de</strong> cada processo são respeitados. O momento exato <strong>de</strong>ntro <strong>de</strong>sse intervalo é influenciado<br />
por <strong>de</strong>cisões da indústria cinematográfica. Por exemplo, os primeiros arquivos<br />
gerados pelo processo “R5” dos filmes “Rio”, “Água para Elefantes” e “Sem Limites”<br />
aparecem, respectivamente, quatro, cinco e oito semanas após as suas estréias, pois as<br />
suas fontes foram lançadas em momentos distintos. Terceiro, torrents <strong>de</strong> alguns filmes<br />
continuam sendo publicados mesmo após o final da rajada inicial, como ocorre nos dias<br />
82, 83 e 85 do filme “Fúria sobre Rodas”. Tal não <strong>de</strong>ve, contudo, ser encarado como<br />
indício <strong>de</strong> comportamento <strong>de</strong> distribuição diferenciado; trata-se <strong>de</strong> especializações <strong>de</strong><br />
mídias já existentes (codificação <strong>de</strong> ví<strong>de</strong>o alternativa, áudio dublado ou legenda inserida<br />
sobre a imagem do ví<strong>de</strong>o). Quarto, o mesmo filme po<strong>de</strong> ter mais do que uma rajada <strong>de</strong><br />
publicações por processo <strong>de</strong> digitalização. Observa-se essa situação analisando o filme<br />
“Velozes e Furiosos 5”, em que uma rajada inicia-se no dia 3 e outra no dia 26. Esse<br />
178
fenômeno é observado quando uma fonte <strong>de</strong> melhor qualida<strong>de</strong> é encontrada para realizar<br />
o processo, acarretando em melhor qualida<strong>de</strong> final da mídia gerada.<br />
4.3. Provedores <strong>de</strong> Conteúdo Ilícito<br />
Ainda como parte da caracterização <strong>de</strong> disseminação ilegal <strong>de</strong> filmes em re<strong>de</strong>s BT,<br />
interessou-se em <strong>de</strong>terminar os pares (usuários) que fomentam enxames, na condição <strong>de</strong><br />
semeadores, em seus instantes iniciais. Para i<strong>de</strong>ntificá-los, foi necessário que a arquitetura<br />
<strong>de</strong> monitoração estivesse <strong>de</strong>vidamente configurada para, assim que torrents fossem publicados<br />
no portal, pu<strong>de</strong>ssem ter seus respectivos rastreadores contatados e listas <strong>de</strong> pares<br />
participantes do início do enxame, obtidos. Quanto menor o intervalo <strong>de</strong>corrido entre a<br />
publicação <strong>de</strong> um torrent e o início da monitoração do enxame, maior a probabilida<strong>de</strong> <strong>de</strong><br />
encontrar no enxame apenas o(s) primeiro(s) semeador(es). No contexto da investigação<br />
conduzida (lançando mão da arquitetura TorrentU e, em última análise, do procedimento<br />
ilustrado pelo algoritmo 1), esse intervalo girou em torno <strong>de</strong> 4 minutos.<br />
Por meio da metodologia mencionada, i<strong>de</strong>ntificou-se os primeiros semeadores <strong>de</strong><br />
692 (23,16%) dos 2.987 torrents analisados. Todos aqueles em que não foi possível i<strong>de</strong>ntificar<br />
o(s) primeiro(s) semeador(es) eram enxames que: estavam vazios, existiam previamente<br />
à publicação do seu torrent no PirateBay ou cujo(s) rastreador(es) não foi possível<br />
contatar por erro na tentativa <strong>de</strong> comunicação. Passando à análise dos resultados, os 692<br />
torrents foram semeados por um total <strong>de</strong> 775 pares; para alguns enxames observou-se,<br />
já no seu início, mais do que um semeador. Os 775 semeadores i<strong>de</strong>ntificados estão associados<br />
a 318 en<strong>de</strong>reços IP únicos. A figura 5 ilustra o grau <strong>de</strong> participação <strong>de</strong> cada<br />
IP.<br />
1<br />
0.9<br />
0.8<br />
Proporção <strong>de</strong> Enxames Semeados<br />
CDF<br />
0.7<br />
0.6<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
0<br />
40 80 120 160 200 240 280<br />
Provedores <strong>de</strong> Conteúdos<br />
Figura 5. Contribuição cumulativa dos provedores<br />
Dois aspectos <strong>de</strong>stacam-se a partir da análise da figura 5. Primeiro, 25 en<strong>de</strong>reços<br />
IP (7,86% dos 318) participaram como semeadores <strong>de</strong> cerca da meta<strong>de</strong> dos enxames.<br />
Tal é um indicador <strong>de</strong> que usuários especializados po<strong>de</strong>m estar utilizando seedboxes<br />
[Wikipedia 2011c] para disseminar seus conteúdos. Segundo, todos os semeadores a<br />
partir do 82 o serviram exclusivamente a um enxame, caracterizando a participação <strong>de</strong><br />
usuários “domésticos” no fomento <strong>de</strong> parcela significativa <strong>de</strong> enxames BT.<br />
179
A tabela 5 apresenta a procedência dos principais semeadores, <strong>de</strong>stacando país <strong>de</strong><br />
origem, Internet Service Provi<strong>de</strong>r (ISP) <strong>de</strong> cada IP e quantida<strong>de</strong> <strong>de</strong> enxames semeados.<br />
Em contraste, apresenta-se na tabela 6 as principais localizações dos semeadores, ignorando<br />
a quantida<strong>de</strong> <strong>de</strong> enxames que cada um serviu. Como po<strong>de</strong>-se observar, a França<br />
<strong>de</strong>staca-se por 9,03% dos semeadores estarem localizados nesse país, curiosamente sendo<br />
todos servidos pelo ISP “Ovh”.<br />
País ISP # Enxames<br />
NZ Obtrix 57<br />
FR Ovh 45<br />
FR Ovh 32<br />
PL Mokadi 32<br />
GB Ovh 31<br />
FR Ovh 24<br />
NZ Obtrix 21<br />
FI Lsinki 15<br />
FR Ovh 14<br />
NL Upc 12<br />
Tabela 5. Principais semeadores<br />
País # IPs<br />
IN 41<br />
US 33<br />
SE 33<br />
FR 28<br />
NL 26<br />
JP 24<br />
GB 14<br />
PK 11<br />
DE 10<br />
AU 7<br />
Tabela 6. Distrubuição semeadores<br />
Os provedores <strong>de</strong> conteúdo são os terceiros e últimos agentes responsáveis pelo<br />
processo <strong>de</strong> disseminação <strong>de</strong> cópias ilícitas <strong>de</strong> filmes através <strong>de</strong> BT. Ao observá-los,<br />
constatou-se que existem relações <strong>de</strong> <strong>de</strong>pendência, ou subordinação, entre provedores<br />
(primeiros semeadores), produtores (grupos <strong>de</strong> digitalização) e publicadores (usuários da<br />
comunida<strong>de</strong>). Três casos típicos foram encontrados e são discutidos a seguir. O primeiro<br />
caso são provedores e publicadores <strong>de</strong>pen<strong>de</strong>ntes dos produtores. Um exemplo são os<br />
grupos “Dmt”, “Mr keff” e “Miguel”, que tiveram cerca <strong>de</strong> 90% dos seus torrents publicados<br />
e semeados pelo mesmo usuário. O segundo caso consiste na observação <strong>de</strong> que<br />
provedores po<strong>de</strong>m estar subordinados a produtores. Exemplos <strong>de</strong>sse caso são os grupos<br />
“Kickass”, “Ddr” e “Extratorrentrg” que, apesar <strong>de</strong> terem seus torrents publicados por um<br />
grupo heterogêneo <strong>de</strong> usuários, sempre são semeados pelo mesmo provedor. O terceiro<br />
e último caso está relacionado com a possibilida<strong>de</strong> <strong>de</strong> provedores serem <strong>de</strong>pen<strong>de</strong>ntes <strong>de</strong><br />
publicadores. Como exemplo, tem-se os publicadores “Theroach”, “Riff” e “Safcuk009”,<br />
que disponibilizaram torrents <strong>de</strong> mídias criadas por grupos variados, porém sempre semeados<br />
pelos mesmos provedores.<br />
5. Conclusões e Trabalhos Futuros<br />
O compartilhamento <strong>de</strong> conteúdo por meio do protocolo BitTorrent é um dos principais<br />
responsáveis pelo atual volume <strong>de</strong> tráfego da Internet. Sabe-se que a maior parte <strong>de</strong>sse<br />
volume é constituída pelo compartilhamento <strong>de</strong> conteúdos ilícitos. Sabe-se, também, que<br />
filme é o principal tipo <strong>de</strong> mídia sendo compartilhado ilegalmente. Apesar da reconhecida<br />
importância do tema, nenhum estudo procurou observar e mapear a dinâmica <strong>de</strong><br />
disseminação <strong>de</strong>ssa natureza <strong>de</strong> conteúdo. Para suprir essa lacuna, realizou-se a extensão<br />
<strong>de</strong> uma arquitetura <strong>de</strong> monitoração, que foi instanciada para observar o “universo” BT<br />
por 30 dias. A gran<strong>de</strong> massa <strong>de</strong> dados obtida foi, então, organizada e cuidadosamente<br />
180
analisada. Até on<strong>de</strong> sabemos, este é o primeiro estudo científico que busca caracterizar<br />
disseminação ilegal <strong>de</strong> filmes em re<strong>de</strong>s BitTorrent.<br />
A partir dos dados obtidos foi possível i<strong>de</strong>ntificar padrões <strong>de</strong> comportamento <strong>de</strong><br />
disseminadores <strong>de</strong> filmes ilegais. No que remete aos produtores, <strong>de</strong>scobriu-se que a maioria<br />
dos torrents possui i<strong>de</strong>ntificação do grupo <strong>de</strong> digitalização responsável e que, na<br />
realida<strong>de</strong>, são poucos produtores criando a maioria dos conteúdos. Quanto aos publicadores,<br />
observou-se um comportamento similar ao dos produtores, no sentido <strong>de</strong> que<br />
poucos são responsáveis pela publicação <strong>de</strong> gran<strong>de</strong> parte dos torrents <strong>de</strong> cópias ilícitas.<br />
Além disso, uma relação <strong>de</strong> subordinação foi observada entre produtores e publicadores.<br />
Ao analisar os processos <strong>de</strong> digitalização empregados, <strong>de</strong>scobriu-se que certos produtores<br />
são especializados em certos processos e confirmou-se a evolução, ao longo do tempo, dos<br />
processos por meio dos quais os filmes ofertados são digitalizados. Por fim, abordou-se<br />
os responsáveis por inicialmente semearem os enxames <strong>de</strong>sses conteúdos, i<strong>de</strong>ntificando<br />
as relações <strong>de</strong> <strong>de</strong>pendência existentes entre produtores, publicadores e semeadores.<br />
Finalizada uma primeira iteração para caracterizar disseminação ilegal <strong>de</strong> filmes<br />
em re<strong>de</strong>s BT, i<strong>de</strong>ntifica-se um conjunto <strong>de</strong> oportunida<strong>de</strong>s <strong>de</strong> investigações futuras. A<br />
primeira consiste em realizar monitoração mais longa, <strong>de</strong>sejavelmente com um mínimo<br />
<strong>de</strong> 16 semanas, que permita acompanhar o “ciclo <strong>de</strong> vida” completo <strong>de</strong> filmes em re<strong>de</strong>s<br />
BT, <strong>de</strong>s<strong>de</strong> seu lançamento no cinema até o momento em que passa a ser distribuído em<br />
DVD. A segunda oportunida<strong>de</strong> <strong>de</strong> trabalho futuro consiste em observar outras comunida<strong>de</strong>s<br />
públicas populares. A terceira, monitorar as darknets, comunida<strong>de</strong>s privadas <strong>de</strong><br />
torrents, que, provavelmente, representam os locais on<strong>de</strong>, em tese, enxames em torno<br />
<strong>de</strong> cópias ilegais <strong>de</strong> filmes aparecem primeiro. Por fim, uma quarta oportunida<strong>de</strong> é a<br />
observação <strong>de</strong> padrões e dinâmicas <strong>de</strong> consumo <strong>de</strong>sses conteúdos. Por exemplo, é interessante<br />
procurar observar se há concentração <strong>de</strong> consumidores <strong>de</strong> filmes ilegais em<br />
<strong>de</strong>terminadas regiões e se há comportamentos claros <strong>de</strong> migração <strong>de</strong> consumidores entre<br />
enxames.<br />
Referências<br />
Bauer, K., McCoy, D., Grunwald, D., and Sicker, D. (2009). Bitstalker: Accurately and<br />
efficiently monitoring bittorrent traffic. In WIFS 2009, IEEE Workshop on Information<br />
Forensics and Security, pages 181–185.<br />
Chow, K., Cheng, K., Man, L., Lai, P., Hui, L., Chong, C., Pun, K., Tsang, W., Chan,<br />
H., and Yiu, S. (2007). Btm - an automated rule-based bt monitoring system for piracy<br />
<strong>de</strong>tection. In ICIMP 2007, International Conference on Internet Monitoring and<br />
Protection, pages 1–6.<br />
Cuevas, R., Kryczka, M., Cuevas, A., Kaune, S., Guerrero, C., and Rejaie, R. (2010). Is<br />
content publishing in bittorrent altruistic or profit-driven? In Co-NEXT 2010, International<br />
Conference on Emerging Networking Experiments and Technologies, pages<br />
1–12.<br />
Envisional (2011). An estimate of infringing use of the internet. http://documents.<br />
envisional.com/docs/Envisional-Internet_Usage-Jan2011.pdf<br />
[Acessado em 07/11].<br />
IMDB (2011). http://www.imdb.com/ [Acessado em 07/11].<br />
181
Junemann, K., An<strong>de</strong>lfinger, P., Dinger, J., and Hartenstein, H. (2010). Bitmon: A tool for<br />
automated monitoring of the bittorrent dht. In P2P 2010, IEEE International Conference<br />
on Peer-to-Peer Computing, pages 1–2.<br />
Le Blond, S., Legout, A., Lefessant, F., Dabbous, W., and Kaafar, M. A. (2010). Spying<br />
the world from your laptop: i<strong>de</strong>ntifying and profiling content provi<strong>de</strong>rs and big downloa<strong>de</strong>rs<br />
in bittorrent. In LEET 2010, USENIX Workshop on Large-Scale Exploits and<br />
Emergent Threats, pages 4–4.<br />
Mansilha, R. B., Bays, L. R., Lehmann, M. B., Mezzomo, A., Gaspary, L. P., and Barcellos,<br />
M. P. (2011). Observing the bittorrent universe through telescopes. In IM 2011,<br />
IFIP/IEEE International Symposium on Integrated Network Management, pages 1–8.<br />
Piratebay (2011). http://thepiratebay.org/ [Acessado em 07/11].<br />
PlanetLab (2011). http://www.planet-lab.org/ [Acessado em 07/11].<br />
Schulze, H. and Mochalski, K. (2009). Internet study 2008-2009. http://<br />
www.ipoque.com/sites/<strong>de</strong>fault/files/mediafiles/documents/<br />
internet-study-2008-2009.pdf [Acessado em 07/11].<br />
Wikipedia (2011a). List of warez groups. http://en.wikipedia.org/wiki/<br />
List_of_warez_groups [Acessado em 07/11].<br />
Wikipedia (2011b). Pirated movie release types. http://en.wikipedia.org/<br />
wiki/Pirated_movie_release_types [Acessado em 07/11].<br />
Wikipedia (2011c). Seedbox. http://en.wikipedia.org/wiki/Seedbox<br />
[Acessado em 07/11].<br />
Zhang, C., Dhungel, P., Wu, D., Liu, Z., and Ross, K. (2010a). Bittorrent darknets.<br />
In INFOCOM 2010, IEEE International Conference on Computer Communications,<br />
pages 1460–1468.<br />
Zhang, C., Dhungel, P., Wu, D., and Ross, K. (2010b). Unraveling the bittorrent ecosystem.<br />
IEEE Transactions on Parallel and Distributed Systems, 22(7):1164–1177.<br />
182
Método Heurístico para Rotular Grupos em Sistema <strong>de</strong><br />
Detecção <strong>de</strong> Intrusão baseado em Anomalia<br />
Hermano Pereira 1 , Edgard Jamhour 2<br />
1 Companhia <strong>de</strong> Informática do Paraná - CELEPAR<br />
80.530-010 - Curitiba - PR, Brasil<br />
2 Pontifícia Universida<strong>de</strong> Católica do Paraná - PUCPR<br />
80.215-901 - Curitiba - PR, Brasil<br />
hermanopereira@celepar.pr.gov.br, jamhour@ppgia.pucpr.br<br />
Abstract. The intrusion <strong>de</strong>tection systems are part of security suite necessary<br />
for environment protection that contains information available on the Internet.<br />
Among these systems it is highlighted the unsupervised learning, as they are<br />
able to extract environment mo<strong>de</strong>ls without prior knowledge concerning the<br />
occurrence of attacks among the collected information. A technique used to<br />
create these mo<strong>de</strong>ls is the data clustering, where the resulting clusters are labeled<br />
either as normal or as attack (in anomalous case). This paper proposes<br />
a heuristic method for labeling clusters, where the false positive rates achieved<br />
during experiments were significantly lower compared to the methods <strong>de</strong>scribed<br />
in related work.<br />
Resumo. Os sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão fazem parte <strong>de</strong> um ferramental <strong>de</strong><br />
segurança necessário na proteção <strong>de</strong> ambientes que disponibilizam informações<br />
via Internet. Dentre esses sistemas vêm se <strong>de</strong>stacando os <strong>de</strong> aprendizagem nãosupervisionada,<br />
pois são capazes <strong>de</strong> extrair mo<strong>de</strong>los <strong>de</strong> comportamento do ambiente<br />
sem o conhecimento prévio <strong>de</strong> ataques <strong>de</strong>ntre as informações coletadas.<br />
Uma técnica utilizada para criar esses mo<strong>de</strong>los é a <strong>de</strong> agrupamento <strong>de</strong> dados,<br />
on<strong>de</strong> os grupos resultantes são rotulados como normais ou, no caso <strong>de</strong> anomalias,<br />
como ataques. Neste trabalho é proposto um método heurístico para rotular<br />
grupos que durante os experimentos resultou em taxas <strong>de</strong> falsos positivos<br />
significativamente menores em relação aos métodos <strong>de</strong> trabalhos relacionados.<br />
1. Introdução<br />
Os Sistemas <strong>de</strong> Detecção <strong>de</strong> Intrusão (Intrusion Detection Systems), sigla IDS, são sistemas<br />
que atuam junto ao sistema operacional ou em uma re<strong>de</strong> <strong>de</strong> computadores buscando<br />
i<strong>de</strong>ntificar ativida<strong>de</strong>s maliciosas. Em geral, a estratégia <strong>de</strong> análise do IDS é baseada em<br />
mau uso (misuse-based) ou baseada em anomalia (anomaly-based). Os IDSs baseados em<br />
mau uso fazem a <strong>de</strong>tecção <strong>de</strong> ataques pela representação <strong>de</strong>stes através <strong>de</strong> padrões, tais<br />
como regras ou assinaturas. Já os IDSs baseados em anomalia precisam conhecer antecipadamente<br />
o comportamento do ambiente a ser monitorado, para então <strong>de</strong>tectar ataques<br />
através do <strong>de</strong>svio do comportamento ou na ocorrência <strong>de</strong> anomalias. A principal vantagem<br />
do IDS baseado em mau uso está na possibilida<strong>de</strong> dos ataques serem especificados<br />
por especialistas, porém, esses IDSs necessitam que suas bases <strong>de</strong> padrões sejam atualizadas<br />
constantemente. Já os IDSs baseados em anomalias são <strong>de</strong>pen<strong>de</strong>ntes do ambiente<br />
183
que monitoram, necessitam <strong>de</strong> mais recursos para efetuar os treinamentos e geram muitos<br />
falsos positivos. Todavia apresentam vantagens, tais como <strong>de</strong>tectar ataques novos e obter<br />
baixos índices <strong>de</strong> falsos negativos.<br />
Na comunida<strong>de</strong> científica é possível encontrar diversos trabalhos <strong>de</strong> IDSs que procuram<br />
reduzir os índices <strong>de</strong> falsos positivos, e uma técnica baseada em anomalia que vêm<br />
obtendo bons resultados é a aprendizagem não-supervisionada (unsupervised learning)<br />
que utiliza agrupamento <strong>de</strong> dados (data clustering). Através <strong>de</strong>ssa técnica os mo<strong>de</strong>los <strong>de</strong><br />
<strong>de</strong>tecção <strong>de</strong> intrusão são criados a partir <strong>de</strong> treinamento utilizando algoritmos <strong>de</strong> agrupamento<br />
sobre uma base <strong>de</strong> dados não rotulada (ou seja, sem supervisão). Assim os grupos<br />
resultantes recebem um rótulo <strong>de</strong> normalida<strong>de</strong> ou, no caso <strong>de</strong> anomalia, um rótulo <strong>de</strong><br />
ataque. Porém, quando os grupos menores em número <strong>de</strong> instâncias ou isolados (outliers)<br />
que são legítimos mas recebem rótulos <strong>de</strong> ataque, acabam resultando em aumento<br />
no número <strong>de</strong> falsos positivos durante a <strong>de</strong>tecção <strong>de</strong> intrusão. Com o intuito <strong>de</strong> fazer<br />
uma melhor avaliação <strong>de</strong>sses grupos e reduzir o índice <strong>de</strong> falsos positivos, este trabalho<br />
apresenta um método heurístico para atribuição <strong>de</strong> rótulos <strong>de</strong> reputação aos grupos <strong>de</strong><br />
acordo com a quantida<strong>de</strong> e a origem das informações. Diferentemente <strong>de</strong> normalida<strong>de</strong> ou<br />
<strong>de</strong> ataque, os rótulos atribuídos po<strong>de</strong>m representar uma reputação que varia <strong>de</strong> péssima<br />
à excelente <strong>de</strong> acordo com uma escala empírica, a qual po<strong>de</strong> <strong>de</strong>terminar o quanto uma<br />
ativida<strong>de</strong> po<strong>de</strong> ser consi<strong>de</strong>rada uma intrusão.<br />
Para testar o método proposto, o IDS foi implementado e testado sobre um conjunto<br />
<strong>de</strong> requisições HTTP (Hypertext Transfer Protocol) que foram coletadas <strong>de</strong> um servidor<br />
web, o qual disponibilizava alguns sítios para a Internet e recebeu diversos ataques.<br />
Para a validação do método proposto, outros dois métodos <strong>de</strong> atribuição <strong>de</strong> rótulos <strong>de</strong><br />
trabalhos relacionados também foram implementados e testados sobre o mesmo conjunto<br />
<strong>de</strong> requisições. Ao final, o método proposto obteve na maioria dos testes os melhores<br />
resultados.<br />
Além <strong>de</strong>sta seção, os trabalhos relacionados são <strong>de</strong>scritos na seção 2; a metodologia<br />
é apresentada na seção 3; o método heurístico proposto é apresentado na seção 4 e os<br />
resultados dos experimentos realizados são apresentados na seção 5. Por fim, na seção 6,<br />
são feitas as conclusões e sugestões para trabalhos futuros.<br />
2. Trabalhos Relacionados<br />
Os principais trabalhos relacionados com esta pesquisa são os <strong>de</strong> [Portnoy et al. 2001] e<br />
<strong>de</strong> [Zhong et al. 2007], os quais utilizaram algoritmos <strong>de</strong> agrupamento para fazer o treinamento<br />
no modo não-supervisionado. Em seus seus experimentos os grupos resultantes<br />
foram avaliados utilizando um método heurístico, e neste trabalho eles foram implementados<br />
e comparados com o método proposto.<br />
Outros trabalhos que também utilizaram agrupamento <strong>de</strong> dados como técnica baseada<br />
em anomalia são: [Eskin et al. 2002], [Guan et al. 2003], [Mahoney et al. 2003] e<br />
[Leung and Leckie 2005]; on<strong>de</strong> os rótulos <strong>de</strong> ataques foram atribuídos <strong>de</strong> acordo com os<br />
outliers encontrados pelos algoritmos <strong>de</strong> agrupamento. No artigo <strong>de</strong> [Zhang et al. 2005],<br />
os outliers foram <strong>de</strong>tectados através <strong>de</strong> agentes distribuídos e analisados por um IDS central.<br />
No trabalho <strong>de</strong> [Singh et al. 2009], os outliers comuns i<strong>de</strong>ntificados em sistemas<br />
diferentes foram consi<strong>de</strong>rados ataques. De maneira diferente dos <strong>de</strong>mais, no trabalho <strong>de</strong><br />
[Petrović 2006] os grupos compactos i<strong>de</strong>ntificados por índices <strong>de</strong> validação <strong>de</strong> agrupa-<br />
184
mento foram consi<strong>de</strong>rados ataques em massa.<br />
Entre os trabalhos que trataram <strong>de</strong> <strong>de</strong>tecção baseada em anomalia em serviços web<br />
e HTTP po<strong>de</strong>m ser encontrados os <strong>de</strong> [Criscione et al. 2009], [Robertson et al. 2010] e<br />
[Corona and Giacinto 2010], on<strong>de</strong> os algoritmos <strong>de</strong> agrupamento foram utilizados apenas<br />
como uma técnica <strong>de</strong> análise complementar <strong>de</strong> suas arquiteturas.<br />
3. Metodologia<br />
Esta seção apresenta a metodologia que foi aplicada para realizar os experimentos. Um<br />
ambiente <strong>de</strong> testes foi preparado com uma base <strong>de</strong> 5 milhões <strong>de</strong> requisições HTTP que<br />
foi subdividida em 20 partições (<strong>de</strong>talhes na Seção 3.1). Para executar os testes, as<br />
requisições <strong>de</strong> uma partição X foram utilizadas durante o treinamento e resultou em mo<strong>de</strong>los<br />
<strong>de</strong> <strong>de</strong>tecção para serem utilizados na inspeção das requisições <strong>de</strong> uma partição Y, assim<br />
ilustra o fluxograma da figura 1. Na fase <strong>de</strong> treinamento, uma a uma as requisições foram<br />
normalizadas para que pu<strong>de</strong>ssem ser comparadas uma com as outras (Seção 3.2). Assim<br />
um algoritmo <strong>de</strong> agrupamento <strong>de</strong> ligação simples (Seção 3.4) foi aplicado e as requisições<br />
similares foram agrupadas. Para calcular a distância entre as requisições foi utilizada a<br />
medida <strong>de</strong> similarida<strong>de</strong> euclidiana que está <strong>de</strong>scrita na Seção 3.3. Após o agrupamento,<br />
os grupos resultantes foram avaliados e rotulados <strong>de</strong> acordo com três métodos heurísticos<br />
(Seção 3.5): o método <strong>de</strong> [Portnoy et al. 2001], o método <strong>de</strong> [Zhong et al. 2007] e o<br />
método proposto neste trabalho. Cada método resultou em mo<strong>de</strong>los que foram utilizados<br />
na fase <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão.<br />
TREINAMENTO<br />
Seção 3.1 Seção 3.2 Seções 3.3 e 3.4 Seções 3.5 e 4<br />
Requisições<br />
da Partição X<br />
Normalização<br />
das<br />
Requisições<br />
Agrupamento<br />
<strong>de</strong><br />
Dados<br />
Avaliação<br />
dos<br />
Grupos<br />
Mo<strong>de</strong>los<br />
<strong>de</strong> Detecção<br />
DETECÇÃO<br />
Requisições<br />
da Partição Y<br />
Normalização<br />
das<br />
Requisições<br />
Seção 3.1 Seção 3.2<br />
Detecção <strong>de</strong><br />
Intrusão<br />
Resultados<br />
Seção 3.6 Seções 3.7 e 5<br />
Observação: as partições X ou Y representam uma das 20 partes da base <strong>de</strong> requisições utilizada neste trabalho.<br />
Figura 1. Fluxograma - sequência aplicada nos testes<br />
Para a <strong>de</strong>tecção <strong>de</strong> intrusão em uma partição Y foi utilizado o mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>tecção<br />
da partição X. Por exemplo, o mo<strong>de</strong>lo extraído do treinamento sobre a partição P01 foi<br />
utilizado para a <strong>de</strong>tecção <strong>de</strong> ataques na partição P02 seguinte; e o mo<strong>de</strong>lo extraído da<br />
partição P02 foi utilizado na partição P03 e assim sucessivamente. Exceto no método <strong>de</strong><br />
<strong>de</strong>tecção <strong>de</strong>scrito por [Zhong et al. 2007], que para a <strong>de</strong>tecção <strong>de</strong> ataques na partição Y foi<br />
utilizado um mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>tecção da própria partição Y. Então foram testados três métodos<br />
<strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão (<strong>de</strong>scritos na Seção 3.6), o método <strong>de</strong> [Portnoy et al. 2001]; o<br />
método <strong>de</strong> [Zhong et al. 2007], e uma variação do método <strong>de</strong> [Portnoy et al. 2001]. Por<br />
fim, cada requisição inspecionada foi <strong>de</strong>tectada como normal ou como ataque e os resultados<br />
foram totalizados e apresentados conforme as medidas <strong>de</strong> comparação (<strong>de</strong>scritas na<br />
Seção 3.7): taxa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques, taxa <strong>de</strong> falsos positivos e índice <strong>de</strong> medida-F.<br />
185
3.1. Base Rotulada<br />
Nos testes realizados no trabalho <strong>de</strong> [Portnoy et al. 2001], a base rotulada [KDD 1999] foi<br />
subdividida em 10 partes e os experimentos foram realizados sobre quatro <strong>de</strong>ssas partes.<br />
No trabalho <strong>de</strong> [Zhong et al. 2007] foi utilizada a base rotulada [DARPA 1998] (a base<br />
[KDD 1999] é uma versão <strong>de</strong>ssa mesma base), on<strong>de</strong> mais <strong>de</strong> 100 mil registros foram<br />
usados nos testes. Nas duas bases existem aproximadamente 5 milhões <strong>de</strong> registros <strong>de</strong><br />
informações coletadas <strong>de</strong> uma re<strong>de</strong> que foi utilizada para avaliação <strong>de</strong> IDSs.<br />
Visto que as bases utilizadas nos trabalhos relacionados datam há mais <strong>de</strong> 10<br />
anos, nesta pesquisa foi criada uma base própria on<strong>de</strong> um servidor web disponível na<br />
Internet foi monitorado e seus acessos foram coletados, analisados e rotulados. No total<br />
foram coletadas aproximadamente 5 milhões <strong>de</strong> requisições HTTP entre as 19:00 do dia<br />
16/12/2010 e as 18:00 do dia 28/12/2010 (GMT). Após a análise foram i<strong>de</strong>ntificados e<br />
rotulados mais <strong>de</strong> mil ataques e aproximadamente 30 mil anomalias. Para aumentar o<br />
número <strong>de</strong> ataques sem gerar um inci<strong>de</strong>nte <strong>de</strong> segurança, foram adicionados a esta base<br />
mais <strong>de</strong> 127 mil ataques gerados por 4 ferramentas <strong>de</strong> ataques web que foram extraídos da<br />
base da competição [iCTF 2008]. A tabela 1 apresenta as 20 partições com a quantida<strong>de</strong><br />
<strong>de</strong> ataques rotulados, ataques adicionados da base [iCTF 2008], anomalias e as <strong>de</strong>mais<br />
requisições rotuladas como normais.<br />
Tabela 1. Particionamento do Conjunto <strong>de</strong> Requisições<br />
Partição Ataques Adicionados Anomalias Normais Total<br />
P00 4 0 318 249678 250000<br />
P01 29 0 410 249561 250000<br />
P02 5 6570 a 1124 242301 250000<br />
P03 51 2690 b 2647 244612 250000<br />
P04 50 0 1685 248265 250000<br />
P05 8 0 868 249124 250000<br />
P06 17 0 1237 248746 250000<br />
P07 95 0 1001 248904 250000<br />
P08 21 0 770 249209 250000<br />
P09 91 85570 c 891 163448 250000<br />
P10 10 27228 c 510 222252 250000<br />
P11 49 0 1365 248586 250000<br />
P12 83 0 1272 248645 250000<br />
P13 111 3888 d 2311 243690 250000<br />
P14 14 0 1301 248685 250000<br />
P15 246 0 2611 247143 250000<br />
P16 39 0 2707 247254 250000<br />
P17 129 0 3669 246202 250000<br />
P18 157 0 2192 247651 250000<br />
P19 39 1398 a 847 247716 250000<br />
Total 1248 127344 29736 4841672 5000000<br />
Os ataques adicionados da base [iCTF 2008] são das ferramentas:<br />
a - [Nessus 2011], b - [Acunetix 2011], c - [DirBuster 2011] e d - [Nikto 2011].<br />
Os ataques [iCTF 2008] que foram adicionados nesta base foram gerados por fer-<br />
186
amentas <strong>de</strong> varredura por vulnerabilida<strong>de</strong>, as quais tentaram encontrar vulnerabilida<strong>de</strong>s<br />
conhecidas em servidores e sítios web. A ferramenta [Nessus 2011] realiza ataques para<br />
diversos protocolos e aplicações, mas nesta base foram adicionados apenas os ataques<br />
que tentaram i<strong>de</strong>ntificar vulnerabilida<strong>de</strong>s <strong>de</strong> servidores HTTP e <strong>de</strong> sítios web. Já os ataques<br />
adicionados da ferramenta [Nikto 2011] procuravam i<strong>de</strong>ntificar vulnerabilida<strong>de</strong>s em<br />
sítios web; e <strong>de</strong> maneira um pouco mais elaborada a ferramenta [Acunetix 2011] tentava<br />
extrair informações <strong>de</strong> sítios web incluindo ataques através do método POST. Apesar dos<br />
ataques adicionados da ferramenta [DirBuster 2011] serem massivos, são apenas ataques<br />
que tentaram buscar por páginas ou arquivos que <strong>de</strong>veriam estar ocultos ou protegidos<br />
mas que po<strong>de</strong>riam revelar informações do servidor/sítio atacado. E <strong>de</strong>ntre os ataques<br />
que realmente ocorreram ao servidor web foram i<strong>de</strong>ntificados diversos tipos: tentativas <strong>de</strong><br />
injeção <strong>de</strong> código SQL, inclusão remota <strong>de</strong> arquivos, travessia <strong>de</strong> caminho, busca forçada,<br />
abuso <strong>de</strong> proxy e até mesmo ataques <strong>de</strong> malwares.<br />
3.2. Normalização dos Dados<br />
As bases utilizadas por [Portnoy et al. 2001] e [Zhong et al. 2007] levaram em conta<br />
41 atributos extraídos <strong>de</strong> sessões TCP. [Portnoy et al. 2001] normalizou os dados <strong>de</strong><br />
cada atributo subtraindo o valor da média e dividindo pelo <strong>de</strong>svio padrão. Já em<br />
[Zhong et al. 2007] foram utilizadas 105 dimensões <strong>de</strong> características das instâncias coletadas<br />
da base e foram normalizadas para valores entre zero e um (0,1).<br />
Diferentemente <strong>de</strong>sses trabalhos, a base utilizada nesta pesquisa contém<br />
requisições HTTP. Sendo assim foram utilizados apenas 7 campos <strong>de</strong> cada requisição:<br />
UPath - caminho do recurso na URL; UQuery - consulta ao recurso na URL; Host -<br />
domínio ou en<strong>de</strong>reço IP do requisitado; User-agent - agente navegador do usuário; Cookie<br />
- dados <strong>de</strong> sessão do usuário; Referer - URL <strong>de</strong> referência, e Content - conteúdo do<br />
corpo HTTP. Esses campos foram escolhidos por terem relação com a maioria dos ataques<br />
realizados via HTTP.<br />
Como se trata <strong>de</strong> informações do tipo texto e que estão ofuscadas, o conteúdo <strong>de</strong><br />
cada campo foi normalizado apenas contabilizando a quantida<strong>de</strong> <strong>de</strong> caracteres alfabéticos<br />
(a-z e A-Z), caracteres numéricos (0-9) e caracteres não-alfanuméricos. Por exemplo, o<br />
texto “Mozilla/5.0” resultaria em 7 para caracteres alfabéticos, 2 para numéricos e 2 para<br />
não-alfanuméricos. Por fim, cada requisição teve seus 7 campos normalizados on<strong>de</strong> cada<br />
campo ficou com 3 dimensões (alfabéticos, numéricos e não-alfanuméricos).<br />
3.3. Medida <strong>de</strong> Similarida<strong>de</strong><br />
No trabalho <strong>de</strong> [Portnoy et al. 2001] a medida <strong>de</strong> similarida<strong>de</strong> utilizada foi a distância<br />
euclidiana, e no trabalho <strong>de</strong> [Zhong et al. 2007] as medidas eram utilizadas <strong>de</strong> acordo<br />
com o algoritmo <strong>de</strong> agrupamento, sendo a distância euclidiana ou <strong>de</strong> Mahalanobis.<br />
Neste trabalho foi utilizada a equação 1 para calcular a distância (d) entre uma<br />
requisição a e uma requisição b. Assim cada campo <strong>de</strong> uma requisição foi comparado<br />
com o campo correspon<strong>de</strong>nte da outra requisição usando a medida <strong>de</strong> distância euclidiana.<br />
Assim as 3 dimensões (m=3) <strong>de</strong> quantida<strong>de</strong> <strong>de</strong> caracteres <strong>de</strong>scritas na seção 3.2<br />
serviram como base na comparação entre esses campos. Ao final, a distância (d) entre<br />
as requisições foi o resultado do somatório da distância euclidiana entre os sete campos<br />
(n=7) <strong>de</strong>ssas requisições.<br />
187
3.4. Agrupamento <strong>de</strong> Dados<br />
d(a,b) =<br />
n∑<br />
m∑<br />
√ (a ij − b ij ) 2 (1)<br />
i=1<br />
No trabalho <strong>de</strong> [Zhong et al. 2007] o objetivo era testar a eficiência <strong>de</strong> diferentes algoritmos<br />
<strong>de</strong> agrupamento na <strong>de</strong>tecção <strong>de</strong> intrusão, e para isso os autores testaram diversos<br />
algoritmos baseados em centrói<strong>de</strong>s. Já neste trabalho o objetivo foi fazer uma comparação<br />
entre os métodos utilizados para atribuição <strong>de</strong> rótulos, por isso foi utilizado apenas um<br />
algoritmo <strong>de</strong> agrupamento <strong>de</strong> ligação simples (single-linkage), similar ao utilizado no<br />
trabalho <strong>de</strong> [Portnoy et al. 2001]. O algoritmo consiste nos seguintes passos:<br />
j=1<br />
• Iniciar um conjunto <strong>de</strong> grupos vazios;<br />
• Associar cada requisição com seu grupo mais próximo <strong>de</strong>s<strong>de</strong> que não ultrapasse<br />
o limite <strong>de</strong> distância W pré-<strong>de</strong>finido. O limite <strong>de</strong> distância W é a distância (d)<br />
máxima que as requisições po<strong>de</strong>m estar <strong>de</strong> seu grupo. Se não houver um grupo<br />
correspon<strong>de</strong>nte, a requisição atual será um novo grupo;<br />
• Repetir o passo anterior para reorganizar as requisições em seus grupos mais<br />
próximos.<br />
3.5. Avaliação dos Grupos<br />
Após realizar os agrupamentos, os grupos resultantes foram avaliados e rotulados para<br />
serem utilizados como mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão. O método heurístico proposto por<br />
[Portnoy et al. 2001], que é apresentado como “labeling clusters”, consiste nos seguintes<br />
passos:<br />
• Or<strong>de</strong>nar os grupos por quantida<strong>de</strong> <strong>de</strong> instâncias;<br />
• Selecionar um percentual N dos grupos maiores em número <strong>de</strong> instâncias e rotular<br />
como normais;<br />
• Rotular os grupos restantes como ataques.<br />
O método heurístico proposto por [Zhong et al. 2007], que é apresentado como<br />
“self-labeling”, é realizado com os seguintes passos:<br />
• Selecionar o grupo com o maior número <strong>de</strong> instâncias, rotular como normal e<br />
<strong>de</strong>finir como o centrói<strong>de</strong> µ 0 ;<br />
• Or<strong>de</strong>nar todos os grupos <strong>de</strong> acordo com sua distância ao centrói<strong>de</strong> µ 0 , e fazer o<br />
mesmo procedimento com todas as instâncias;<br />
• Selecionar um percentual η <strong>de</strong> instâncias e rotular como normal;<br />
• Rotular as <strong>de</strong>mais instâncias como ataques.<br />
[Zhong et al. 2007] <strong>de</strong>fine η como percentual <strong>de</strong> instâncias normais, mas em outra<br />
parte <strong>de</strong> seu trabalho o mesmo parâmetro também é <strong>de</strong>finido como percentual <strong>de</strong><br />
instâncias que são ataques.<br />
O método heurístico proposto neste trabalho realiza uma avaliação mais <strong>de</strong>talhada<br />
visando reduzir o índice <strong>de</strong> falsos positivos, e os passos são os seguintes:<br />
• Calcular um índice <strong>de</strong> popularida<strong>de</strong> para cada grupo;<br />
188
• Encontrar hosts que tornaram grupos populares e atribuir uma confiabilida<strong>de</strong>;<br />
• Calcular um índice <strong>de</strong> confiabilida<strong>de</strong> para cada grupo <strong>de</strong> acordo com os hosts que<br />
o acessaram;<br />
• Calcular um índice <strong>de</strong> reputação dada a soma pon<strong>de</strong>rada do índice <strong>de</strong> popularida<strong>de</strong><br />
com o índice <strong>de</strong> confiabilida<strong>de</strong>;<br />
• Atribuir um rótulo ao grupo, relacionando o índice <strong>de</strong> reputação com uma escala<br />
empírica: excelente, ótima, boa, regular, ruim ou péssima.<br />
Detalhes do método proposto são apresentados na seção 4.<br />
3.6. Detecção <strong>de</strong> Intrusão<br />
Após obter os grupos rotulados, os mesmos foram utilizados na tomada <strong>de</strong> <strong>de</strong>cisão durante<br />
a <strong>de</strong>tecção <strong>de</strong> intrusão. No trabalho <strong>de</strong> [Portnoy et al. 2001] os ataques foram <strong>de</strong>tectados<br />
da seguinte maneira (método referenciado como D1):<br />
• Extrair um mo<strong>de</strong>lo <strong>de</strong> grupos rotulados <strong>de</strong> uma partição X da base;<br />
• Inspecionar cada instância da partição Y comparando com os grupos rotulados da<br />
partição X (sendo a partição Y subsequente à partição X);<br />
• Após comparar com todos os grupos, cada instância da partição Y receberá o<br />
mesmo rótulo do grupo X mais próximo.<br />
No trabalho <strong>de</strong> [Zhong et al. 2007] o método <strong>de</strong> <strong>de</strong>tecção utilizado foi o seguinte<br />
(método referenciado como D2):<br />
• Realizar a atribuição <strong>de</strong> rótulos nas instâncias da partição Y da base somente após<br />
or<strong>de</strong>nar cada instância <strong>de</strong> acordo com sua distância em relação ao centrói<strong>de</strong> µ 0 ;<br />
• Instâncias na partição Y rotuladas como ataques dado um percentual η serão consi<strong>de</strong>radas<br />
como tal.<br />
Neste trabalho também foi testada a <strong>de</strong>tecção <strong>de</strong> intrusão levando em conta o<br />
limite <strong>de</strong> distância W utilizado durante o agrupamento (método referenciado como D3):<br />
• Extrair um mo<strong>de</strong>lo <strong>de</strong> grupos rotulados <strong>de</strong> uma partição X da base;<br />
• Inspecionar cada instância da partição Y comparando com os grupos rotulados da<br />
partição X (sendo a partição Y subsequente à partição X);<br />
• Após comparar com todos os grupos, cada instância da partição Y receberá o<br />
mesmo rótulo do grupo X mais próximo <strong>de</strong>s<strong>de</strong> que o limite <strong>de</strong> distância W não seja<br />
extrapolado. Caso não haja correspondência com grupo algum, a instância será<br />
consi<strong>de</strong>rada um ataque ou, no caso do método proposto, receberá uma reputação<br />
péssima.<br />
3.7. Medidas <strong>de</strong> Comparação<br />
Após realizar todos os testes <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão os resultados foram contabilizados<br />
como verda<strong>de</strong>iros positivos (VP), falsos positivos (FP), falsos negativos (FN) e verda<strong>de</strong>iros<br />
negativos (VN). Para simplificar os cálculos, as anomalias rotuladas que foram<br />
<strong>de</strong>tectadas ou não, tiveram seus resultados ignorados. Os resultados foram calculados<br />
utilizando as seguintes fórmulas: taxa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques (TDA) ou revisão (inglês:<br />
recall), taxa <strong>de</strong> falsos positivos (TFP), precisão (inglês: precision) e a medida-F (inglês:<br />
F-measure). Detalhes sobre essas medidas po<strong>de</strong>m ser encontradas em [Fawcett 2003].<br />
189
4. Método Heurístico Proposto<br />
Este método foi criado a partir <strong>de</strong> observações experimentais durante a verificação <strong>de</strong> ataques<br />
na base <strong>de</strong> requisições, já foi implementado e <strong>de</strong>scrito anteriormente na dissertação<br />
<strong>de</strong> [Pereira 2011]. Durante essa análise foi possível observar que as informações das<br />
requisições que eram mais comuns (ou populares) tinham uma chance menor <strong>de</strong> serem<br />
consi<strong>de</strong>radas ataques, e que aquelas que não eram comuns podiam ser consi<strong>de</strong>radas<br />
confiáveis se o host <strong>de</strong> origem também fosse confiável. Assim as informações po<strong>de</strong>riam<br />
ser agrupadas, e através <strong>de</strong> cálculos empíricos <strong>de</strong>terminar um índice <strong>de</strong> popularida<strong>de</strong> e<br />
um índice <strong>de</strong> confiabilida<strong>de</strong> para cada grupo. Ao final, esses índices foram combinados<br />
para calcular um índice <strong>de</strong> reputação, e o processo todo resultou em um método heurístico<br />
para atribuir rótulos <strong>de</strong> reputação para os grupos. Este método foi subdividido em quatro<br />
etapas que são apresentadas nesta seção.<br />
4.1. Primeira Etapa: Índice <strong>de</strong> Popularida<strong>de</strong> dos Grupos<br />
O objetivo <strong>de</strong> calcular o índice <strong>de</strong> popularida<strong>de</strong> p é <strong>de</strong>terminar o quanto um grupo está<br />
equilibrado em relação a diversida<strong>de</strong> <strong>de</strong> hosts que o acessaram. Isso significa que quanto<br />
melhor for a distribuição dos acessos realizados pelos hosts melhor será o índice <strong>de</strong> popularida<strong>de</strong>.<br />
A linha <strong>de</strong> corte l é um parâmetro <strong>de</strong>finido antes <strong>de</strong> calcular p com o intuito<br />
<strong>de</strong> evitar que hosts que realizaram muitos acessos colaborem com o aumento <strong>de</strong> p <strong>de</strong> um<br />
grupo. O valor <strong>de</strong> p <strong>de</strong>ve ficar entre 0 (zero) e 1 (um). Assim o quanto mais o valor <strong>de</strong> l<br />
for próximo <strong>de</strong> zero, mais hosts serão necessários para tornar um grupo popular.<br />
O algoritmo 1 apresenta uma proposta simples para que a linha <strong>de</strong> corte (l) possa<br />
funcionar conforme o que foi proposto. O valor <strong>de</strong> i i<strong>de</strong>ntifica o host e o valor <strong>de</strong> m i<strong>de</strong>ntifica<br />
a quantida<strong>de</strong> total <strong>de</strong> acessos efetuados ao grupo, portanto, o valor <strong>de</strong> m i representa<br />
o total <strong>de</strong> acessos do host i <strong>de</strong>ntro do grupo. Já a variável q i representa o percentual <strong>de</strong><br />
acessos efetuados pelo host i <strong>de</strong>ntro do grupo. A variável z é booleana e serve para manter<br />
o laço <strong>de</strong> repetição enquanto houver algum valor <strong>de</strong> q i zerado, isso significa que o índice<br />
<strong>de</strong> popularida<strong>de</strong> só po<strong>de</strong> ser calculado se na última iteração nenhum host ultrapassar o<br />
percentual estabelecido na linha <strong>de</strong> corte. Outra estrutura <strong>de</strong> repetição faz com que todos<br />
os acessos realizados pelos hosts <strong>de</strong> 1 até n sejam analisados. Ao final do algoritmo,<br />
o índice <strong>de</strong> popularida<strong>de</strong> (p) é calculado <strong>de</strong> acordo com os valores obtidos <strong>de</strong> q, e está<br />
<strong>de</strong>talhado na equação 2.<br />
p = 1 n<br />
n∑<br />
a on<strong>de</strong><br />
i=1<br />
{<br />
a = 0, se q i = 0<br />
a = 1, se q i > 0<br />
(2)<br />
4.2. Segunda Etapa: Confiabilida<strong>de</strong> dos Hosts<br />
Nesta etapa os hosts que popularizaram os grupos <strong>de</strong>verão receber um grau <strong>de</strong> confiança, o<br />
qual será utilizado como base para calcular a confiabilida<strong>de</strong> dos grupos. Para isso utilizase<br />
a equação 3, on<strong>de</strong> para cada host (i) é feito o somatório (v i ) <strong>de</strong> todos os índices <strong>de</strong><br />
popularida<strong>de</strong> (p j ) dos grupos que esse host acessou. A tupla (i,j) apresentada na equação<br />
3 representa uma instância <strong>de</strong> acesso do host i ao grupo j, e a variável m é a quantida<strong>de</strong><br />
total <strong>de</strong> grupos no agrupamento.<br />
190
Algoritmo 1 Cálculo do índice <strong>de</strong> popularida<strong>de</strong><br />
q i = ∅<br />
z = true<br />
while z do<br />
z = false<br />
for i = 1; i ≤ n; i = i + 1 do<br />
if q i > 0 or q i = ∅ then<br />
q i = m i / m<br />
end if<br />
if q i > l then<br />
q i = 0<br />
m = m - m i<br />
z = true<br />
end if<br />
end for<br />
end while<br />
Calcular p dado q (equação 2)<br />
v i =<br />
m∑<br />
a on<strong>de</strong><br />
j=1<br />
{<br />
a = 0, se ∄ (i,j)<br />
a = p j , se ∃ (i,j) e q ij > 0<br />
(3)<br />
Então a confiabilida<strong>de</strong> dos hosts (w i ) <strong>de</strong>verá ser maximizada calculando as três<br />
equações: 4, 5 e 6. Nestas equações a variável u representa o somatório <strong>de</strong> todos os<br />
índices <strong>de</strong> popularida<strong>de</strong> (p). Na equação 5 a variável g representa o índice do host mais<br />
confiável, e na equação 6 é calculada para todos os hosts a sua confiabilida<strong>de</strong> <strong>de</strong> acordo<br />
com os valores obtidos <strong>de</strong> g e <strong>de</strong> u.<br />
u =<br />
m∑<br />
p j (4)<br />
j=1<br />
g = max<br />
( vi<br />
)<br />
u<br />
(5)<br />
w i =<br />
v i<br />
g · u<br />
(6)<br />
4.3. Terceira Etapa: Índice <strong>de</strong> Confiabilida<strong>de</strong> dos Grupos<br />
Após a i<strong>de</strong>ntificação da confiabilida<strong>de</strong> <strong>de</strong> cada host é possível calcular o índice <strong>de</strong> confiabilida<strong>de</strong><br />
(c) <strong>de</strong> cada grupo. Para calcular este índice, basta somar a confiabilida<strong>de</strong> w i<br />
dos hosts e dividir pela quantida<strong>de</strong> h <strong>de</strong> hosts que participaram <strong>de</strong>sse grupo. Esse cálculo<br />
po<strong>de</strong> ser visualizado na equação 7.<br />
c = 1 h<br />
h∑<br />
w i (7)<br />
i=1<br />
191
4.4. Quarta Etapa: Índice <strong>de</strong> Reputação dos Grupos<br />
Uma vez que se obtém os índices <strong>de</strong> popularida<strong>de</strong> e <strong>de</strong> confiabilida<strong>de</strong> dos grupos, calculase<br />
o índice <strong>de</strong> reputação (r) estipulando os fatores <strong>de</strong> pon<strong>de</strong>ração (equação 8), <strong>de</strong>s<strong>de</strong> que<br />
a soma <strong>de</strong> y p e y c seja igual a 4.<br />
r = y p · p + y c · c (8)<br />
A i<strong>de</strong>ia em aplicar uma escala <strong>de</strong> 0 (zero) a 4 (quatro) para pon<strong>de</strong>ração está em<br />
dar ênfase a um índice mais do que ao outro. Como é possível observar nas etapas anteriores,<br />
é mais custoso ao índice <strong>de</strong> confiabilida<strong>de</strong> atingir valores próximos <strong>de</strong> 1 (um).<br />
Consequentemente o resultado do índice <strong>de</strong> reputação (r) também ficará na escala <strong>de</strong> zero<br />
(0) a quatro (4) e uma sugestão é utilizar esta escala empírica para <strong>de</strong>finir uma reputação:<br />
péssima (0,0 a 0,1), ruim (0,1 a 1,0), regular (1,0 a 1,5), boa (1,5 a 2,0), ótima (2,0 a 3,0)<br />
e excelente (3,0 a 4,0). Ao final, os grupos receberão seus rótulos e po<strong>de</strong>rão ser utilizados<br />
como mo<strong>de</strong>lo na <strong>de</strong>tecção <strong>de</strong> intrusão.<br />
5. Experimentos<br />
Nesta seção são apresentados os resultados dos experimentos on<strong>de</strong> o treinamento foi realizado<br />
com agrupamentos variando o valor <strong>de</strong> W para 80, 100 e 120. O valor <strong>de</strong> W para<br />
120 foi utilizado pois resultou em melhores índices <strong>de</strong> validação <strong>de</strong> agrupamento durante<br />
os testes preliminares. Já os valores <strong>de</strong> W para 80 e 100 foram selecionados pois resultaram<br />
em número <strong>de</strong> grupos aproximados aos utilizados no trabalho <strong>de</strong> [Zhong et al. 2007]:<br />
100 e 200 grupos. Após executar os agrupamentos os valores <strong>de</strong> W para 80, 100 e 120<br />
geraram em média, respectivamente, 222,7, 125,5 e 77,2 grupos.<br />
Para a execução dos métodos heurísticos <strong>de</strong> atribuição <strong>de</strong> rótulos, os valores<br />
utilizados para N foram 0,02, 0,07 e 0,15, que são os mesmos utilizados em<br />
[Portnoy et al. 2001]. No trabalho <strong>de</strong> [Zhong et al. 2007] o valor utilizado para η foi <strong>de</strong><br />
0,115 para representar o percentual <strong>de</strong> ataques na base em que foi testado, mas nestes experimentos<br />
além <strong>de</strong>sse percentual também foram testados os valores <strong>de</strong> 0,0575 e <strong>de</strong> 0,23,<br />
que são respectivamente a meta<strong>de</strong> e o dobro. No método proposto, os valores selecionados<br />
para l foram 0,05, 0,1 e 0,2 que respectivamente representam, por exemplo, o mínimo<br />
<strong>de</strong> 20, 10 e 5 hosts necessários para tornar um grupo popular. Além disso, no método<br />
proposto, foram pon<strong>de</strong>rados os valores <strong>de</strong> y p = 1 e y c = 3, consi<strong>de</strong>rando a confiabilida<strong>de</strong><br />
do grupo mais importante do que a popularida<strong>de</strong>.<br />
Após aplicar o método heurístico proposto, os grupos rotulados com uma<br />
reputação ruim (entre 0,1 e 1,0) ou péssima (menor que 0,1) foram consi<strong>de</strong>rados ataques<br />
durante a <strong>de</strong>tecção <strong>de</strong> intrusão. Também foram realizados testes com cada um<br />
dos métodos <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão: [Portnoy et al. 2001] referenciado como D1;<br />
[Zhong et al. 2007] referenciado como D2, e o método que leva em conta o valor <strong>de</strong> W,<br />
referenciado como D3.<br />
No total foram realizados 1539 testes utilizando 3 agrupamentos (W=80,<br />
W=100 e W=120); com 3 métodos <strong>de</strong> avaliações <strong>de</strong> grupos ([Portnoy et al. 2001],<br />
[Zhong et al. 2007] e o Proposto); com 3 variações <strong>de</strong> parâmetros (N=0,02, N=0,07 e<br />
N=0,15; η=0,0575, η=0,115 e η=0,23; l=0,05, l=0,1 e l=0,2); juntamente com 3 métodos<br />
<strong>de</strong> <strong>de</strong>tecção (D1, D2 e D3) aplicados nas 19 partições da base <strong>de</strong> requisições.<br />
192
Cada linha da tabela 2 apresenta os melhores resultados obtidos durantes os experimentos<br />
<strong>de</strong> um método heurístico específico. As partições nas quais os resultados foram<br />
relevantes para discussão são apresentados nesta tabela, os <strong>de</strong>mais resultados das outras<br />
partições foram suprimidos.<br />
Tabela 2. Melhores resultados obtidos<br />
P Método VP FP FN TDA TFP F<br />
P02 Proposto(W=100;l=0,1;D3) 3579 1212 2996 0,5443 0,0050 0,6297<br />
Portnoy(W=100;N=0,07;D3) 6565 39064 10 0,9985 0,1612 0,2515<br />
Zhong(W=80;η=0,0575;D2) 2226 13709 4349 0,3386 0,0566 0,1978<br />
P03 Proposto(W=100;l=0,2;D1) 2648 129 93 0,9661 0,0005 0,9598<br />
Zhong(W=120;η=0,0575;D1) 2551 7690 190 0,9307 0,0314 0,3930<br />
Portnoy(W=120;N=0,15;D1) 2557 9418 184 0,9329 0,0385 0,3475<br />
P04 Proposto(W=120;l=0,2;D3) 3 27 47 0,0600 0,0001 0,0750<br />
* Proposto(W=100;l=0,1;D2) 28 2699 22 0,5600 0,0109 0,0202<br />
Portnoy(W=80;N=0,15;D3) 41 16650 9 0,8200 0,0671 0,0050<br />
Zhong(W=120;η=0,23;D2) 46 25174 4 0,9200 0,1014 0,0036<br />
P09 Portnoy(W=120;N=0,07;D1) 85067 20083 594 0,9931 0,1229 0,8916<br />
* Proposto(W=40;l=0,05;D3) 43550 27422 42111 0,5083 0,1677 0,3584<br />
Proposto(W=100;l=0,05;D3) 92 1891 85569 0,0011 0,0116 0,0021<br />
Zhong(W=80;η=0,0575;D2) 35 7499 85626 0,0004 0,0459 0,0007<br />
* Proposto(W=40;l=0,2;D3) 26582 11452 656 0,9759 0,0515 0,8144<br />
P10 Portnoy(W=100;N=0,02;D3) 27238 100182 0 1,0000 0,4508 0,3523<br />
Proposto(W=80;l=0,2;D3) 13 1121 27225 0,0005 0,0050 0,0010<br />
Zhong(W=120;η=0,23;D3) 16 57059 27222 0,0006 0,2567 0,0004<br />
P13 Proposto(W=120;l=0,05;D1) 3768 2951 231 0,9422 0,0121 0,7031<br />
Portnoy(W=120;N=0,15;D2) 3775 14729 224 0,9440 0,0604 0,3355<br />
Zhong(W=120;η=0,115;D2) 3770 16219 229 0,9427 0,0666 0,3143<br />
P14 Proposto(W=120;l=0,2;D1) 7 52 7 0,5000 0,0002 0,1917<br />
* Proposto(W=100;l=0,1;D3) 14 1702 0 1,0000 0,0068 0,0163<br />
Zhong(W=100;η=0,0575;D1) 9 4127 5 0,6429 0,0166 0,0044<br />
Portnoy(W=120;N=0,15;D1) 12 11495 2 0,8571 0,0462 0,0020<br />
P19 Zhong(W=120;η=0,0575;D1) 1437 11635 0 1,0000 0,0470 0,1980<br />
* Proposto(W=40;l=0,2;D3) 739 10516 698 0,5142 0,0424 0,1164<br />
Proposto(W=80;l=0,2;D3) 90 910 1347 0,0626 0,0037 0,0738<br />
Portnoy(W=100;N=0,07;D1) 1437 43794 0 1,0000 0,1768 0,0616<br />
P: partição da base que teve as requisições inspecionadas;<br />
Método: método heurístico aplicado, agrupamento, parâmetros e método <strong>de</strong> <strong>de</strong>tecção;<br />
VP: verda<strong>de</strong>iros positivos, a quantida<strong>de</strong> <strong>de</strong> ataques <strong>de</strong>tectados;<br />
FP: falsos positivos, a quantida<strong>de</strong> <strong>de</strong> alertas falsos <strong>de</strong> ataques;<br />
FN: falsos negativos, a quantida<strong>de</strong> <strong>de</strong> ataques que não foram <strong>de</strong>tectados;<br />
TDA: apresenta a taxa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques;<br />
TFP: apresenta a taxa <strong>de</strong> falsos positivos;<br />
F: apresenta o índice <strong>de</strong> medida-F que foi alcançado.<br />
A medida-F foi utilizada para i<strong>de</strong>ntificar o método que obteve melhor resultado<br />
em cada particionamento. Essa medida faz uma média harmônica entre a precisão e a re-<br />
193
visão, consi<strong>de</strong>rando mais importante os testes que obtiveram boas taxas <strong>de</strong> <strong>de</strong>tecção mas<br />
também que geraram poucos falsos positivos. Assim com os experimentos realizados sobre<br />
as 19 partições, o método heurístico proposto obteve melhores resultados <strong>de</strong> medida-F<br />
em 16 partições e na maioria dos testes as taxas <strong>de</strong> falsos positivos não ultrapassaram <strong>de</strong><br />
1% conforme po<strong>de</strong> ser visualizado no gráfico da figura 2.<br />
Partições da base <strong>de</strong> requisições<br />
Figura 2. Gráfico - Taxas <strong>de</strong> Falsos Positivos<br />
Discussão sobre os resultados obtidos com o método <strong>de</strong> [Zhong et al. 2007]:<br />
• Ao investigar o motivo pelo qual [Zhong et al. 2007] não obteve bons resultados,<br />
foi possível observar que <strong>de</strong>ntro da base haviam concentrações <strong>de</strong> grupos<br />
com quantida<strong>de</strong> consi<strong>de</strong>rável <strong>de</strong> requisições normais, mas que estavam distante<br />
do centrói<strong>de</strong> principal e acabaram resultando no aumento <strong>de</strong> alertas <strong>de</strong> falsos positivos.<br />
• Uma exceção foi o treinamento realizado na partição P18, on<strong>de</strong> o mo<strong>de</strong>lo obtido<br />
com esse método resultou em melhor <strong>de</strong>tecção na partição P19, a qual continha<br />
diversos ataques da ferramenta Nessus.<br />
Discussão sobre os resultados obtidos com o método <strong>de</strong> [Portnoy et al. 2001]:<br />
• Na maioria das partições o método heurístico <strong>de</strong> [Portnoy et al. 2001] resultou nas<br />
melhores taxas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques. Porém esse bom resultado foi penalizado<br />
pela gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> falsos positivos.<br />
• O melhor resultado <strong>de</strong> [Portnoy et al. 2001] foi na partição P09 com treinamento<br />
realizado na partição P08, on<strong>de</strong> o número <strong>de</strong> falsos positivos não foi significante<br />
em comparação ao número <strong>de</strong> ataques da ferramenta DirBuster que foram <strong>de</strong>tectados.<br />
Discussão sobre os resultados obtidos com o método proposto:<br />
• Na maioria das partições o método proposto obteve melhores resultados nas taxas<br />
<strong>de</strong> falsos positivos (conforme o gráfico na figura 2), porém suas taxas <strong>de</strong> <strong>de</strong>tecção<br />
<strong>de</strong> ataques não foram tão significativas quanto as <strong>de</strong> [Portnoy et al. 2001]. Isso<br />
ocorre <strong>de</strong>vido ao cálculo <strong>de</strong> medida-F, pois se o número <strong>de</strong> falsos positivos for<br />
tolerado é possível aproximar das melhores taxas <strong>de</strong> <strong>de</strong>tecção. Para comprovar,<br />
nas partições P04 e P14 as linhas cujas as primeiras colunas estão marcadas com<br />
um asterisco (*) estão os testes que obtiveram melhores taxas <strong>de</strong> <strong>de</strong>tecção.<br />
• Nas partições P09 e P10 este método obteve péssimos resultados, isso se dá aos<br />
ataques realizados pela ferramenta DirBuster que durante o agrupamento gerou<br />
194
grupos <strong>de</strong>nsos e próximos aos grupos consi<strong>de</strong>rados como normais (uma situação<br />
parecida ocorreu com a partição P19). Para melhorar a <strong>de</strong>tecção nessa situação<br />
um teste adicional foi realizado, on<strong>de</strong> o limite <strong>de</strong> distância W=40 foi utilizado<br />
com o intuito <strong>de</strong> criar mais grupos. O resultado po<strong>de</strong> ser visualizado nas linhas<br />
<strong>de</strong>stacadas por um asterisco (*) nas partições P09, P10 e P19.<br />
6. Conclusão<br />
Este trabalho apresentou uma proposta <strong>de</strong> método heurístico para atribuição <strong>de</strong> rótulos<br />
em grupos que resultou em mo<strong>de</strong>los <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão para um IDS baseado em<br />
anomalia. Dois trabalhos relacionados foram implementados e seus resultados foram<br />
comparados com os resultados obtidos com o método proposto. Das 19 partes testadas<br />
<strong>de</strong> uma base <strong>de</strong> requisições web, o método proposto obteve melhores resultados em 16<br />
<strong>de</strong>las. Na maioria dos testes as taxas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques não foram superiores aos<br />
dos outros métodos, por outro lado, em diversos testes a taxa <strong>de</strong> falsos positivos não<br />
ultrapassou <strong>de</strong> 1%. Isso <strong>de</strong>monstra que este método é promissor, pois o baixo número <strong>de</strong><br />
alertas falsos permite que um analista <strong>de</strong> segurança inspecione os resultados <strong>de</strong> maneira<br />
eficiente, mesmo sabendo que se trata <strong>de</strong> um IDS que foi treinado sem supervisão.<br />
Para trabalhos futuros, tanto as implementações como a base <strong>de</strong> requisições foram<br />
disponibilizadas para o público em [Celepar-Dataset 2011], e po<strong>de</strong>rão ser utilizadas para<br />
fins <strong>de</strong> pesquisa. Como complemento <strong>de</strong>ste trabalho também po<strong>de</strong>rão ser feitos testes<br />
do IDS no modo <strong>de</strong> aprendizagem contínua (active learning). Além disso, o método<br />
heurístico proposto também precisará <strong>de</strong> mais estudos, pois o índice <strong>de</strong> confiabilida<strong>de</strong> dos<br />
hosts é calculado <strong>de</strong> acordo com o host que é consi<strong>de</strong>rado o mais confiável. Esse cálculo<br />
foi suficiente para obter bons resultados neste trabalho, mas <strong>de</strong>pen<strong>de</strong>ndo do ambiente do<br />
treinamento po<strong>de</strong>rá não ser o i<strong>de</strong>al para se obter os melhores índices.<br />
Referências<br />
Acunetix (2011). Acunetix Web Security Scanner (http://www.acunetix.com/ -<br />
acesso em 10/07/2011).<br />
Celepar-Dataset (2011). Celepar - Dataset with web attacks for intrusion <strong>de</strong>tection research<br />
(http://ids.celepar.pr.gov.br/dataset).<br />
Corona, I. and Giacinto, G. (2010). Detection of Server-si<strong>de</strong> Web Attacks. Journal of<br />
Machine Learning Research - Proceedings Track, 11:160–166.<br />
Criscione, C., Salvaneschi, G., Maggi, F., and Zanero, S. (2009). Integrated Detection<br />
of Attacks Against Browsers, Web Applications and Databases. In Proceedings of the<br />
2009 European Conference on Computer Network Defense, EC2ND ’09, pages 37–45,<br />
Washington, DC, USA. IEEE Computer Society.<br />
DARPA (1998). 1998 DARPA Intrusion Detection Evaluation Data Set (http:<br />
//www.ll.mit.edu/mission/communications/ist/corpora/<br />
i<strong>de</strong>val/data/1998data.html - acesso em 10/07/2011).<br />
DirBuster (2011). OWASP DirBuster Project (https://www.owasp.org/in<strong>de</strong>x.<br />
php/Category:OWASP_DirBuster_Project - acesso em 10/07/2011).<br />
Eskin, E., Arnold, A., Prerau, M., Portnoy, L., and Stolfo, S. (2002). A Geometric<br />
Framework for Unsupervised Anomaly Detection: Detecting Intrusions in Unlabeled<br />
Data. In Applications of Data Mining in Computer Security.<br />
195
Fawcett, T. (2003). ROC Graphs: Notes and Practical Consi<strong>de</strong>rations for Researchers.<br />
Tech Report HPL-2003-4, HP Laboratories. Available: http://www.purl.org/<br />
NET/tfawcett/papers/ROC101.pdf.<br />
Guan, Y., Ghorbani, A. A., and Belacel, N. (2003). Y-means: A Clustering Method<br />
for Intrusion Detection. In Proceedings of Canadian Conference on Electrical and<br />
Computer Engineering, pages 1083–1086.<br />
iCTF (2008). The 2008 iCTF Data (http://ictf.cs.ucsb.edu/data/<br />
ictf2008/ - acesso em 10/07/2011).<br />
KDD (1999). KDD Cup 1999 databases (http://kdd.ics.uci.edu/<br />
databases/kddcup99/kddcup99.html - acesso em 10/07/2011).<br />
Leung, K. and Leckie, C. (2005). Unsupervised Anomaly Detection in Network Intrusion<br />
Detection using Clusters. In Proceedings of the Twenty-eighth Australasian conference<br />
on Computer Science - Volume 38, ACSC ’05, pages 333–342, Darlinghurst, Australia,<br />
Australia. Australian Computer Society, Inc.<br />
Mahoney, M. V., Chan, P. K., and Arshad, M. H. (2003). A Machine Learning Approach<br />
to Anomaly Detection. Technical Report CS-2003-06, Department of Computer<br />
Science, Florida Institute of Technology, Melbourne, FL.<br />
Nessus (2011). Nessus Vulnerability Scanner (http://www.nessus.org/ - acesso<br />
em 10/07/2011).<br />
Nikto (2011). Nikto Open Source web server scanner (http://www.cirt.net/<br />
nikto2 - acesso em 10/07/2011).<br />
Pereira, H. (2011). Sistema <strong>de</strong> Detecção <strong>de</strong> Intrusão para Serviços Web baseado em<br />
Anomalias. Master’s thesis, PUCPR, Curitiba - PR.<br />
Petrović, S. (2006). A Comparison Between the Silhouette In<strong>de</strong>x and the Davies-Bouldin<br />
In<strong>de</strong>x in Labelling IDS Clusters. Proceedings of the 11th Nordic Workshop of Secure<br />
IT, pages 53–64.<br />
Portnoy, L., Eskin, E., and Stolfo, S. (2001). Intrusion Detection with Unlabeled Data<br />
Using clustering. In Proceedings of ACM Workshop on Data Mining Applied to Security.<br />
Robertson, W., Maggi, F., Kruegel, C., and Vigna, G. (2010). Effective Anomaly Detection<br />
with Scarce Training Data. In Proceedings of the Network and Distributed System<br />
Security Symposium (NDSS), San Diego, CA.<br />
Singh, G., Masseglia, F., Fiot, C., Marascu, A., and Poncelet, P. (2009). Mining Common<br />
Outliers for Intrusion Detection. In EGC (best of volume), pages 217–234.<br />
Zhang, Y.-F., Xiong, Z.-Y., and Wang, X.-Q. (2005). Distributed Intrusion Detection<br />
based on Clustering. Machine Learning and Cybernetics, 2005. Proceedings of 2005<br />
International Conference on, 4:2379–2383 Vol. 4.<br />
Zhong, S., Khoshgoftaar, T., and Seliya, N. (2007). Clustering-based Network Intrusion<br />
Detection. International Journal of Reliability, Quality and Safety Engineering,<br />
14(2):169–187.<br />
196
Detecção <strong>de</strong> Intrusos usando Conjunto <strong>de</strong> k-NN gerado<br />
por Subespaços Aleatórios<br />
Márcia Henke, Celso Costa, Eulanda M. dos Santos, Eduardo Souto<br />
Instituto <strong>de</strong> Computação<br />
Universida<strong>de</strong> Fe<strong>de</strong>ral do Amazonas (UFAM) – Amazonas, AM – Brasil<br />
{henke,ccosta,esouto,emsantos}@dcc.ufam.edu.br<br />
Abstract. Several studies have been proposed in the literature to <strong>de</strong>al with<br />
Internet anomaly <strong>de</strong>tection by using machine learning techniques. Most of<br />
these works use individual classifiers such as k-NN (k-Nearest Neighbor), SVM<br />
(Support Vector Machines), Artificial Neural Networks, Decision Tree, Naive<br />
Bayes, k-means, among others. However, the literature has recently focused<br />
on applying classifier combination in or<strong>de</strong>r to increase <strong>de</strong>tection rate. In this<br />
paper, a set of classifiers, more precisely, a set of k-NN generated through<br />
Random Subspaces Method is employed. Such an ensemble of classifiers<br />
method is compared to the hybrid technique TANN (Triangle Area based<br />
Nearest Neighbor), published recently in the literature. Results obtained using<br />
ensemble of k-NNs were superior to those obtained with TANN in terms of<br />
classification accuracy as well as false alarm reduction rate.<br />
Resumo. Diversos estudos apresentam propostas para <strong>de</strong>tecção <strong>de</strong> anomalia<br />
na Internet empregando técnicas <strong>de</strong> aprendizagem <strong>de</strong> máquina. A maioria<br />
<strong>de</strong>sses trabalhos utiliza classificadores individuais como: k-Nearest Neighbor<br />
(k-NN), Support Vector Machines (SVM), re<strong>de</strong>s neurais artificiais, árvores <strong>de</strong><br />
<strong>de</strong>cisão, Naive Bayes, k-means, <strong>de</strong>ntre outros. Recentemente, porém, observase<br />
um interesse na literatura em aumentar a taxa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> anomalia<br />
através do uso <strong>de</strong> combinação <strong>de</strong> classificadores. Este trabalho propõe o uso<br />
<strong>de</strong> conjunto <strong>de</strong> classificadores, mais especificamente conjunto <strong>de</strong> k-NNs<br />
gerados através do método subespaços aleatórios (RSM), para aumentar a<br />
taxa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> anomalias em re<strong>de</strong>s <strong>de</strong> computadores. O método é<br />
comparado à técnica híbrida Triangle Area based Nearest Neighbor (TANN),<br />
publicada recentemente na literatura. Os resultados alcançados pelo conjunto<br />
<strong>de</strong> k-NNs foram superiores aos obtidos com TANN, tanto em termos <strong>de</strong><br />
aumento da precisão <strong>de</strong> classificação, quanto em termos <strong>de</strong> redução <strong>de</strong> falsos<br />
alarmes.<br />
1. Introdução<br />
Atualmente a gran<strong>de</strong> preocupação quando se fala em Internet é a questão segurança.<br />
Segurança na Internet tem sido alvo <strong>de</strong> muitas pesquisas no âmbito mundial, visto que a<br />
re<strong>de</strong> mundial <strong>de</strong> computadores passou, em um curto espaço <strong>de</strong> tempo, <strong>de</strong> apenas um<br />
meio <strong>de</strong> comunicação para uma po<strong>de</strong>rosa ferramenta <strong>de</strong> negócios. Infelizmente, os<br />
sistemas atuais para segurança na Internet não conseguem aten<strong>de</strong>r a total <strong>de</strong>manda <strong>de</strong><br />
197
novos ataques, ativida<strong>de</strong>s maliciosas e intrusas, que se propagam na re<strong>de</strong> mundial <strong>de</strong><br />
computadores <strong>de</strong> maneira agressiva e progressiva.<br />
São inúmeras as vítimas <strong>de</strong> ataques originados através <strong>de</strong> ativida<strong>de</strong>s fraudulentas,<br />
como, vírus, worms, trojan horses, bad applets, botnets, phishing, pharmimg,<br />
mensagens eletrônicas não <strong>de</strong>sejadas (spam), entre outras. Tais ativida<strong>de</strong>s po<strong>de</strong>m ser<br />
consi<strong>de</strong>radas uma pan<strong>de</strong>mia cujas conseqüências são refletidas no crescimento dos<br />
prejuízos financeiros dos usuários da Internet [Feitosa, Souto e Sadok 2008].<br />
Para tentar minimizar tais ameaças, diferentes abordagens <strong>de</strong> <strong>de</strong>tecção <strong>de</strong><br />
intrusão em re<strong>de</strong>s <strong>de</strong> computadores foram propostas, as quais po<strong>de</strong>m ser classificadas em<br />
duas categorias [An<strong>de</strong>rson 1995] [Rho<strong>de</strong>s, Mahaffey e Cannady 2000]: 1) <strong>de</strong>tecção <strong>de</strong><br />
abuso (“misuse <strong>de</strong>tection”); e 2) <strong>de</strong>tecção <strong>de</strong> anomalias (“anomaly <strong>de</strong>tection”).<br />
Um exemplo da primeira classe <strong>de</strong> abordagens <strong>de</strong> <strong>de</strong>tecção são as ferramentas<br />
antivirais baseadas em uma lista contendo “assinaturas” <strong>de</strong> vírus e worms conhecidos.<br />
Desta forma, ataques conhecidos são <strong>de</strong>tectados com bastante rapi<strong>de</strong>z e com baixa taxa<br />
erro. Por outro lado, a principal limitação <strong>de</strong>ssas ferramentas é que elas não po<strong>de</strong>m<br />
<strong>de</strong>tectar novas formas <strong>de</strong> códigos maliciosos que não sejam compatíveis com as<br />
assinaturas existentes.<br />
A segunda classe <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão, <strong>de</strong>tecção <strong>de</strong> anomalias, é baseada na<br />
construção <strong>de</strong> perfis <strong>de</strong> comportamento para padrões consi<strong>de</strong>rados como ativida<strong>de</strong><br />
normal. Desvios da normalida<strong>de</strong> são então tratados como ameaças. Entretanto, é difícil<br />
saber o que procurar quando ativida<strong>de</strong>s não autorizadas sob um sistema assumem<br />
diferentes formas ou mesmo imitam ativida<strong>de</strong>s legítimas. Na tentativa <strong>de</strong> evitar que<br />
ativida<strong>de</strong>s com potencial malicioso sejam autorizadas, muitos sistemas emitem uma taxa<br />
elevada <strong>de</strong> alarmes falsos, reduzindo substancialmente sua efetivida<strong>de</strong>.<br />
A <strong>de</strong>tecção <strong>de</strong> anomalias tem sido tratada na literatura através <strong>de</strong> diversas<br />
propostas <strong>de</strong> sistemas para <strong>de</strong>tecção <strong>de</strong> intrusão que utilizam técnicas <strong>de</strong> aprendizagem<br />
<strong>de</strong> máquina, tais como: re<strong>de</strong>s neurais artificiais [Souza e Monteiro 2009] [Xia, Yang e Li<br />
2010], k-means [Tian e Jianwen 2009], k-NN [Tsai e Lin 2010] e SVM (Support Vector<br />
Machines) [Xiao et al. 2007], entre outras. Essas técnicas têm sido usadas como<br />
classificadores individuais cuja função é <strong>de</strong>tectar eventos inesperados que po<strong>de</strong>m indicar<br />
possíveis ataques em re<strong>de</strong>s <strong>de</strong> computadores.<br />
Além da aplicação <strong>de</strong> classificadores individuais, técnicas híbridas e combinação<br />
<strong>de</strong> classificadores têm recentemente atraído a atenção dos pesquisadores em diversas<br />
áreas <strong>de</strong> aplicação, inclusive em segurança <strong>de</strong> re<strong>de</strong>s para <strong>de</strong>tecção <strong>de</strong> intrusão. Técnicas<br />
híbridas são cooperações <strong>de</strong> dois ou mais classificadores, como por exemplo, a<br />
abordagem TANN (Triangle Area based Nearest Neighbor) [Tsai e Lin 2010]. TANN é<br />
um método para <strong>de</strong>tecção <strong>de</strong> anomalias que utiliza em um primeiro nível a técnica <strong>de</strong><br />
agrupamento k-means para transformar dados primários, ou seja, o espaço <strong>de</strong><br />
características original, em novos dados que servem <strong>de</strong> entrada para outro classificador.<br />
No segundo nível, o classificador k-NN é utilizado para <strong>de</strong>finir a classificação final das<br />
amostras.<br />
A combinação <strong>de</strong> classificadores (classifier ensembles) é baseada na hipótese <strong>de</strong><br />
que combinar a <strong>de</strong>cisão <strong>de</strong> um conjunto <strong>de</strong> classificadores po<strong>de</strong> aumentar a taxa <strong>de</strong><br />
<strong>de</strong>tecção correta, superando o <strong>de</strong>sempenho <strong>de</strong> classificadores individuais. Os métodos<br />
198
mais comuns para a geração <strong>de</strong> conjuntos <strong>de</strong> classificadores são bagging [Breiman 1996]<br />
e subespaços aleatórios [Ho 1998]. Uma vez criados, os membros do conjunto <strong>de</strong>vem ter<br />
suas opiniões combinadas em uma única <strong>de</strong>cisão. A regra do voto majoritário é a função<br />
mais popular <strong>de</strong> combinação <strong>de</strong> conjuntos <strong>de</strong> classificadores.<br />
Em [Xiao et al. 2007] é proposta a utilização <strong>de</strong> um conjunto <strong>de</strong> SVMs para<br />
<strong>de</strong>tecção <strong>de</strong> anomalias. Os membros do conjunto não são gerados nem por bagging e<br />
nem por subespaço aleatórios, e sim, através <strong>de</strong> uma estratégia que envolve uma<br />
adaptação <strong>de</strong> ambos os métodos. Essa estratégia envolve processos <strong>de</strong> seleção <strong>de</strong><br />
características e <strong>de</strong> amostras, aplicados aos dados <strong>de</strong> entrada para proporcionar<br />
diversida<strong>de</strong> aos membros do conjunto.<br />
Este artigo propõe o emprego da combinação <strong>de</strong> classificadores para melhorar o<br />
processo <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> anomalias em re<strong>de</strong>s <strong>de</strong> computadores. Trata-se <strong>de</strong> um conjunto<br />
<strong>de</strong> k-NNs gerados por subespaços aleatórios. Além disso, este trabalho também fornece<br />
um estudo comparativo <strong>de</strong> métodos <strong>de</strong> classificação com o objetivo <strong>de</strong> mostrar a<br />
superiorida<strong>de</strong> do conjunto <strong>de</strong> classificadores sobre outras técnicas mais clássicas <strong>de</strong><br />
classificação. Os métodos comparados são: o conjunto <strong>de</strong> k-NNs gerados com o método<br />
<strong>de</strong> subespaços aleatórios (Random Subspace Method - RSM) e o método híbrido<br />
proposto em [Tsai e Lin 2010].<br />
Fora isso, este trabalho também apresenta uma alteração no método <strong>de</strong><br />
classificação proposto por [Tsai e Lin 2010]. Esses autores propõem o uso <strong>de</strong><br />
classificadores híbridos. Eles utilizam k-means e k-NN, conforme mencionado<br />
anteriormente. Porém, a literatura mostra que SVM apresenta normalmente <strong>de</strong>sempenho<br />
superior ao k-NN. Devido a esse fato, neste trabalho k-NN será substituído pelo<br />
classificador SVM. Os resultados obtidos <strong>de</strong>monstram que a troca <strong>de</strong> classificador<br />
ocasiona um aumento na taxa <strong>de</strong> classificação do método TANN. Porém, não supera a<br />
combinação <strong>de</strong> classificadores proposta neste trabalho. Os experimentos foram<br />
realizados na base <strong>de</strong> dados KDD Cup 99 [KDD Cup 1999], que é uma base <strong>de</strong> dados<br />
muito utilizada para a experimentação <strong>de</strong> soluções <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão <strong>de</strong> re<strong>de</strong>.<br />
O restante <strong>de</strong>ste artigo está organizado como segue. Na Seção 2 é apresentada<br />
uma visão geral dos trabalhos mais recentes na área <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusos em re<strong>de</strong>s <strong>de</strong><br />
computadores que utilizam técnicas <strong>de</strong> aprendizagem <strong>de</strong> máquina. Na Seção 3 são<br />
<strong>de</strong>scritas as técnicas <strong>de</strong> aprendizagem <strong>de</strong> máquina comparadas neste trabalho. Na Seção<br />
4, o protocolo experimental e os resultados obtidos são apresentados. Finalizando na<br />
Seção 5, com conclusões e trabalhos futuros.<br />
2. Trabalhos Relacionados<br />
Diversas abordagens têm sido propostas para sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão. Destacase<br />
na literatura da área, o fato <strong>de</strong> muitos <strong>de</strong>sses sistemas terem sido <strong>de</strong>senvolvidos com<br />
base na utilização <strong>de</strong> diferentes técnicas <strong>de</strong> aprendizagem <strong>de</strong> máquina e mineração <strong>de</strong><br />
dados. [Tsai et al., 2009] apresentam uma revisão <strong>de</strong> literatura que investiga a aplicação<br />
<strong>de</strong> técnicas <strong>de</strong> aprendizagem <strong>de</strong> máquina em problemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão em<br />
trabalhos publicados entre os anos 2000 e 2007. De acordo com os autores, os métodos<br />
mais bem sucedidos são os classificadores híbridos, seguidos <strong>de</strong> métodos do tipo<br />
conjunto <strong>de</strong> classificadores e por último, classificadores individuais.<br />
199
Ainda segundo [Tsai et al. 2009], <strong>de</strong>ntre os classificadores simples, os que têm<br />
sido referenciados e testados <strong>de</strong> forma mais ampla são os métodos SVM e k-NN, ambos<br />
apresentando elevado <strong>de</strong>sempenho <strong>de</strong> classificação com relação à precisão, falso alarme<br />
e taxa <strong>de</strong> <strong>de</strong>tecção. Com relação a bases <strong>de</strong> dados investigadas, os referidos autores<br />
<strong>de</strong>stacam a base KDD Cup 99 [KDD Cup 1999], utilizada nos experimentos <strong>de</strong>ste<br />
artigo, como a base mais usada <strong>de</strong>ntre as três bases mais citadas, incluindo DARPA 1998<br />
e DARPA 1999 [Darpa 1999]. Os trabalhos relacionados nesta seção são organizados a<br />
partir da divisão <strong>de</strong>finida em [Tsai et al. 2009].<br />
2.1. Classificadores Híbridos<br />
[Tsai e Lin, 2010] propõem o método TANN que transforma o espaço <strong>de</strong> características<br />
original em um novo espaço <strong>de</strong> características. Inicialmente, k-means é utilizado para<br />
agrupar as amostras da base <strong>de</strong> dados. O resultado <strong>de</strong>ssa etapa são os centrói<strong>de</strong>s (ponto<br />
central) <strong>de</strong> cada grupo formado pelas amostras. Em seguida, os centrói<strong>de</strong>s, juntamente<br />
com cada amostra da base <strong>de</strong> dados, são projetados no espaço <strong>de</strong> característica. A área<br />
do triângulo formado entre a amostra e os centrói<strong>de</strong>s, combinados em pares, é calculada<br />
e então, é usada como entrada para o classificador k-NN que <strong>de</strong>finirá a classe da<br />
amostra. A base <strong>de</strong> dados investigada foi a KDD Cup 1999.<br />
[Mafra et al. 2008] propõem um sistema multicamadas, chamado POLVO –<br />
IIDS, que utiliza re<strong>de</strong>s neurais <strong>de</strong> Kohonen e SVM. A primeira camada analisa o tráfego<br />
da re<strong>de</strong> e a classifica em quatro categorias: DoS (Denial of Service), Worm, Scan e R2L<br />
(Remote to Local)/Normal. A segunda camada é responsável pela <strong>de</strong>tecção <strong>de</strong> intrusão<br />
propriamente dita.<br />
[Lee et al. 2007] propõem uma abordagem híbrida para sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong><br />
intrusos em re<strong>de</strong>s <strong>de</strong> tempo real. É feita uma seleção <strong>de</strong> características usando o método<br />
Florestas Aleatórias (Random Forest), que elimina as características irrelevantes,<br />
enquanto que Manimax Probability Machine (MPM) é aplicado como classificador. A<br />
base <strong>de</strong> dados usada também foi a KDD Cup 1999.<br />
2.2. Conjunto <strong>de</strong> Classificadores<br />
[Xiao et al., 2007] utilizam um conjunto <strong>de</strong> três SVMs. O primeiro classificador é<br />
treinado com os dados originais, sem alterações, como normalmente é feito com<br />
classificadores individuais. O segundo classificador é treinado com os dados originais<br />
submetidos a um processo <strong>de</strong> seleção <strong>de</strong> características, ou seja, apenas um grupo<br />
escolhido das características originais é utilizado durante o treinamento. Por fim, o<br />
último SVM é treinado com apenas uma parte dos dados <strong>de</strong> entrada, isto é, é feita uma<br />
seleção <strong>de</strong> amostras. A combinação da <strong>de</strong>cisão do conjunto é obtida através <strong>de</strong> uma<br />
função <strong>de</strong> voto pon<strong>de</strong>rado. A base <strong>de</strong> dados utilizada nos experimentos foi a DARPA.<br />
2.3. Classificadores Individuais<br />
[Chimphlee et al. 2006] aplicam a idéia <strong>de</strong> Fuzzy Rough C-means (FRCM), método<br />
individual baseado em agrupamento. FRCM integra a vantagem do conjunto <strong>de</strong> teoria<br />
fuzzy e a técnica k-means para melhorar a tarefa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão. Os resultados<br />
experimentais obtidos na base <strong>de</strong> dados KDD Cup 99, mostraram que o método supera<br />
os resultados obtidos com k-means unicamente.<br />
[Lião e Vemuri, 2002] usaram em sua abordagem k-NN, para classificar<br />
comportamento <strong>de</strong> programas como normal ou intrusivo. Com o classificador k-NN, as<br />
200
freqüências <strong>de</strong> chamadas ao sistema são usadas para <strong>de</strong>screver o comportamento do<br />
programa. Técnicas <strong>de</strong> categorização <strong>de</strong> texto são adotadas para converter cada<br />
execução <strong>de</strong> programa para um vetor e calcular a similarida<strong>de</strong> entre duas ativida<strong>de</strong>s <strong>de</strong><br />
programas. Utilizando base <strong>de</strong> dados DARPA 1998 foi <strong>de</strong>monstrado que o classificador<br />
k-NN po<strong>de</strong> efetivamente <strong>de</strong>tectar ataques intrusivos e atingir as mais baixas taxas <strong>de</strong><br />
falso positivo.<br />
[Chen et al., 2005] realizaram um estudo comparativo entre SVM e re<strong>de</strong>s neurais<br />
artificiais. Os autores concluíram que SVM atinge um melhor <strong>de</strong>sempenho em relação às<br />
re<strong>de</strong>s neurais. O objetivo <strong>de</strong> usar re<strong>de</strong>s neurais e SVM para <strong>de</strong>tecção <strong>de</strong> ataques foi<br />
<strong>de</strong>senvolver uma capacida<strong>de</strong> <strong>de</strong> generalização <strong>de</strong> dados <strong>de</strong> treino limitado. Esses<br />
experimentos foram baseados na base DARPA 1998.<br />
Todos os trabalhos mencionados nesta seção influenciaram <strong>de</strong> alguma forma os<br />
experimentos apresentados neste artigo, pois se configuram como um guia indicando<br />
aspectos promissores e relevantes na área <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusos utilizando<br />
aprendizagem <strong>de</strong> máquina. Porém <strong>de</strong>ntre estes os dois principais artigos são os artigos <strong>de</strong><br />
[Ho 1998] e [Tsai e Lin, 2010], que tratam a dimensionalida<strong>de</strong> <strong>de</strong> espaço <strong>de</strong><br />
características <strong>de</strong> uma forma diferenciada com problemas <strong>de</strong> bases muito gran<strong>de</strong>s. Como<br />
mencionado anteriormente [Ho 1998] reduz essa dimensionalida<strong>de</strong> com um subespaço<br />
aleatório <strong>de</strong> características (<strong>de</strong> 41 características para 20) procurando combinar suas<br />
diversas visões do problema e finalizando com o voto majoritário. Já [Tsai e Lin, 2010]<br />
se utiliza da redução <strong>de</strong>sse espaço <strong>de</strong> características reduzindo as 41 características, com<br />
a proposta <strong>de</strong> uma área triangular, para 10 características. Desta forma o presente artigo<br />
apresenta as seguintes contribuições:<br />
• Substituição do classificador k-NN, no conjunto <strong>de</strong> classificadores híbridos<br />
proposto por [Tsai e Lin, 2010], pelo classificador SVM, conforme indicado na<br />
literatura como um classificador <strong>de</strong> ótimo <strong>de</strong>sempenho para <strong>de</strong>tecção <strong>de</strong><br />
intrusão [Tsai et al., 2009];<br />
• Aplicação <strong>de</strong> um método proposto para redução <strong>de</strong> dimensionalida<strong>de</strong> <strong>de</strong><br />
características para o problema <strong>de</strong> reconhecimento <strong>de</strong> dígitos [Ho 1998], em<br />
um problema <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão.<br />
Na próxima seção, os métodos comparados neste artigo são <strong>de</strong>scritos com mais<br />
<strong>de</strong>talhes.<br />
3. Abordagens Aplicadas<br />
Conforme mencionado na seção anterior, a literatura indica que a combinação <strong>de</strong><br />
classificadores produz resultados superiores aos resultados obtidos por classificadores<br />
individuais. Por essa razão, duas abordagens que usam combinação <strong>de</strong> classificadores são<br />
comparadas neste trabalho. Esta seção apresenta essas abordagens. A primeira propõe a<br />
utilização <strong>de</strong> conjunto <strong>de</strong> classificadores k-NN treinados em diferentes subespaços<br />
aleatórios, enquanto que a segunda propõe uma alteração no classificador híbrido<br />
proposto por [Tsai e Lin, 2010].<br />
201
3.1. Conjunto <strong>de</strong> KNNs gerado por subespaços aleatórios<br />
O método <strong>de</strong> subespaços aleatórios (RSM) para classificação k-NN foi proposto em<br />
[Ho, 1998]. É consi<strong>de</strong>rada uma abordagem baseada em seleção <strong>de</strong> características, pois<br />
trabalha da seguinte forma.<br />
Dada uma base <strong>de</strong> dados D, cada amostra x que compõe a base é representada<br />
por características que são organizadas em um vetor com l dimensões,<br />
l<br />
l<br />
x = [ x1 , x2,...,<br />
x l<br />
] ∈ R , em que R é chamado espaço <strong>de</strong> características e cada eixo<br />
correspon<strong>de</strong> a uma característica original dos dados. RSM escolhe aleatoriamente n<br />
subespaços diferentes, com dimensão j cada, a partir do espaço <strong>de</strong> características<br />
l<br />
original R , em que j < l , e representa toda a base <strong>de</strong> dados D a partir <strong>de</strong> cada<br />
subespaço escolhido. Então, cada nova representação da base D i é utilizada para treinar<br />
um classificador individual c<br />
i<br />
. A Figura 1 apresenta uma visão geral do funcionamento<br />
<strong>de</strong> RSM.<br />
Base <strong>de</strong><br />
dados<br />
D =<br />
x , x ,...,<br />
1<br />
x , x ,...,<br />
1<br />
x , x ,...,<br />
1<br />
2<br />
2<br />
2<br />
x<br />
x<br />
x<br />
l<br />
l<br />
l<br />
RSM<br />
•<br />
C = { c1,<br />
c2,...,<br />
cn}<br />
Figura 1. Visão geral do método RSM. São escolhidos aleatoriamente j características<br />
<strong>de</strong>ntre as l características originais, sendo que j
Diante das razões e <strong>de</strong>finições <strong>de</strong>scritas acima, o método <strong>de</strong> aprendizagem <strong>de</strong><br />
máquina baseado em conjunto <strong>de</strong> classificadores é aplicado neste artigo ao problema <strong>de</strong><br />
<strong>de</strong>tecção <strong>de</strong> intrusão através do RSM. Os classificadores membros foram k-NNs, sendo<br />
utilizado o voto majoritário para combinar as <strong>de</strong>cisões dos k-NNs.<br />
3.2. Classificadores Híbridos<br />
Esta abordagem proposta por [Tsai e Lin 2010] é dividida em três estágios: (1) extração<br />
<strong>de</strong> centrói<strong>de</strong>s das amostras; (2) formação <strong>de</strong> uma nova base <strong>de</strong> dados; e (3) treino e teste<br />
do classificador. No primeiro estágio, todas as amostras da base <strong>de</strong> dados são projetadas<br />
no espaço <strong>de</strong> características original para que o algoritmo não-supervisionado k-means<br />
seja aplicado a fim <strong>de</strong> agrupar as amostras <strong>de</strong> acordo com o número <strong>de</strong> classes do<br />
problema, e calcular os centrói<strong>de</strong>s <strong>de</strong> cada grupo. No segundo estágio, um novo espaço<br />
<strong>de</strong> características é gerado através do cálculo <strong>de</strong> área triangular (<strong>de</strong>scrito com <strong>de</strong>talhes a<br />
seguir). Por fim, k-NN é treinado e usado para classificar as amostras <strong>de</strong>sconhecidas.<br />
Para calcular a área triangular, são consi<strong>de</strong>rados três pontos <strong>de</strong> dados: dois<br />
centrói<strong>de</strong>s obtidos por k-means e uma amostra da base <strong>de</strong> dados. Os autores utilizaram a<br />
mesma base <strong>de</strong> dados investigada neste artigo, isto é KDD Cup 99, que é composta por<br />
amostras <strong>de</strong> cinco classes, das quais uma é do tipo tráfego normal e as quatro restantes<br />
do tipo ataque. Por serem cinco classes, k-means é direcionado a encontrar cinco<br />
centrói<strong>de</strong>s. A Figura 2 mostra um exemplo dos cinco grupos e seus respectivos<br />
centrói<strong>de</strong>s (A, B, C, D, E) e um ponto <strong>de</strong> dado (X i ).<br />
Figura 2. Formação da área triangular. Fonte: [Tsai e Lin 2010].<br />
Portanto, para a base KDD-Cup, <strong>de</strong>z áreas são obtidas para formar um novo<br />
vetor <strong>de</strong> caracteríticas para o ponto <strong>de</strong> dado (X i ):<br />
∆X<br />
iCE<br />
∆X<br />
i<br />
AB<br />
e<br />
∆XiDE<br />
.<br />
,<br />
∆Xi<br />
AC<br />
,<br />
∆X<br />
i<br />
AD ,<br />
∆Xi<br />
AE<br />
,<br />
∆X<br />
iBC<br />
,<br />
∆XiBD<br />
,<br />
∆X<br />
iBE<br />
,<br />
∆X<br />
iCD<br />
,<br />
Em seguida é calculado o perímetro <strong>de</strong> cada triângulo através da distância<br />
Euclidiana, <strong>de</strong>terminando o ponto <strong>de</strong> dado X i (i =1,..., m, on<strong>de</strong> m é o total do número <strong>de</strong><br />
amostras). Sendo a distância Euclidiana entre dois pontos A = ( a1, a2,..., a n<br />
)<br />
e<br />
B = ( b1 , b2<br />
,..., b n<br />
)<br />
no espaço <strong>de</strong> n características, <strong>de</strong>finida pela equação 2.<br />
AB = ( a ) 2 ( ) 2 ( ) 2<br />
( ) 2<br />
1<br />
− b1 + a2 − b2 + ... + an − bn = ∑ ai − bi<br />
(2)<br />
203
O perímetro do triângulo<br />
∆ X<br />
i<br />
AB é <strong>de</strong>finido como G = a + b + c , on<strong>de</strong> a = AB ,<br />
b = BX i<br />
e c = AX<br />
i<br />
, isto é, a distância entre A e B, B e X i, e A e X i , respectivamente.<br />
Depois <strong>de</strong> obter o perímetro dos triângulos para cada amostra, a fórmula <strong>de</strong><br />
Heron é calculada. A equação 3 exibe a fórmula <strong>de</strong> Heron.<br />
T = S( S − a)( S − b)( S − c)<br />
On<strong>de</strong> o<br />
G<br />
S = é o semi perímetro <strong>de</strong> ∆X<br />
i<br />
AB<br />
2<br />
.<br />
Portanto, 10 triângulos, T₁−T₁₀ são i<strong>de</strong>ntificados para cada X i e são usados para<br />
formar os novos dados. Esses novos dados são então usados para treinar e testar o<br />
classificador k-NN.<br />
Porém, a literatura <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão mostra que SVM é um classificador<br />
que alcança taxas <strong>de</strong> <strong>de</strong>tecção melhores quando comparado a k-NN [Tsai et al. 2009].<br />
Devido a esse fato, este artigo propõe uma modificação no método TANN. A<br />
modificação sugerida ocorre no terceiro estágio do método, isto é, na classificação final.<br />
A proposta envolve a troca <strong>de</strong> k-NN por SVM. Portanto, a <strong>de</strong>tecção dos centrói<strong>de</strong>s e o<br />
cálculo da área triangular permanecem inalterados. A nova representação dos dados será<br />
usada para o treinamento <strong>de</strong> um classificador do tipo SVM.<br />
Na próxima seção são apresentados os resultados obtidos com o conjunto <strong>de</strong> k-<br />
NN gerado por RSM, TANN original (com o classificador k-NN) e TANN modificado<br />
(com classificador SVM).<br />
4. Experimentos<br />
Esta seção <strong>de</strong>screve os experimentos realizados para avaliar as abordagens investigadas.<br />
Essa <strong>de</strong>scrição apresenta a composição da base <strong>de</strong> dados, as métricas utilizadas e sua<br />
relevância ao problema <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão.<br />
4.1. Base <strong>de</strong> dados<br />
Os métodos investigados usam “10% do KDD-Cup 99” e “Corrected KDD-Cup (Test)”<br />
[KDD 1999], como bases <strong>de</strong> treino/teste e validação, respectivamente, exatamente como<br />
na proposta <strong>de</strong> [Tsai e Lin, 2010] . Esses dois conjuntos <strong>de</strong> dados <strong>de</strong>screvem a conexão<br />
em uma re<strong>de</strong> <strong>de</strong> trabalho representada por um vetor <strong>de</strong> 41 características, distribuídas da<br />
seguinte forma: 9 características do tipo intrínsecas, 13 do tipo conteúdo e as restantes<br />
do tipo <strong>de</strong> tráfego. Cada padrão do conjunto <strong>de</strong> dados é rotulado como pertencente a<br />
uma <strong>de</strong> cinco classes, das quais uma é do tipo tráfego normal e as quatro restantes do<br />
tipo ataque como segue:<br />
i) Probing – vigilância e sondagem <strong>de</strong> sistema;<br />
ii) DoS (Denial of Service) – ataques <strong>de</strong> negação <strong>de</strong> serviço;<br />
iii) R2L (Remote to Local) – acesso não autorizado <strong>de</strong> uma máquina remota;<br />
iv) U2L (User to Root) – acesso não autorizado a privilégio <strong>de</strong> super usuário;<br />
Em todos os experimentos (classificadores híbridos e conjunto <strong>de</strong> classificadores)<br />
a base <strong>de</strong> dados foi dividida em 40% para treino e 60% para teste. Essa estratégia é<br />
(3)<br />
204
conhecida na literatura <strong>de</strong> aprendizagem <strong>de</strong> máquina como holdout validation [Kohavi<br />
1995]. A base foi dividida em bases <strong>de</strong> treino e <strong>de</strong> teste por ser uma base com muitas<br />
amostras, conforme Tabela1. Segundo a literatura, bases que contêm muitas amostras<br />
são bastante representativas, não havendo necessida<strong>de</strong> <strong>de</strong> serem tratadas através <strong>de</strong><br />
validação cruzada.<br />
A tabela 1 <strong>de</strong>monstra a distribuição das bases usadas nos experimentos em<br />
treino/teste e validação.<br />
Tabela 1. Distribuição do Conjunto <strong>de</strong> Dados para Treino/Teste e Validação<br />
Classes<br />
Qta. Amostras por Classe<br />
Normal 92.277<br />
Probe 4.107<br />
Conjunto <strong>de</strong> Dados Treino/Teste<br />
DoS 391.458<br />
U2R 52<br />
R2L 1.126<br />
Conjunto <strong>de</strong> Dados para Validação<br />
(%) Qta. Amostras por Classe (%)<br />
19,68% 60.593<br />
19,40%<br />
0,83% 4.166<br />
1,33%<br />
79,24% 231.455<br />
74,40%<br />
0,01% 88<br />
0,03%<br />
0,23% 14.727<br />
4,73%<br />
Total 494.020 100% 311.029<br />
100%<br />
4.2. Medidas <strong>de</strong> <strong>de</strong>sempenho<br />
As medidas <strong>de</strong> <strong>de</strong>sempenho adotadas neste artigo seguem o padrão <strong>de</strong> métricas<br />
encontrado na literatura para <strong>de</strong>tecção <strong>de</strong> anomalia. São medidas que po<strong>de</strong>m ser<br />
calculadas pela matriz <strong>de</strong> confusão mostrada na Tabela 2, consi<strong>de</strong>rando as seguintes<br />
legendas: TP (Verda<strong>de</strong>iro Positivo) - número <strong>de</strong> ataques <strong>de</strong>vidamente classificados como<br />
ataque; FP (Falso Positivo) - número <strong>de</strong> tráfego normal classificado como ataque; FN<br />
(Falso Negativo) - número <strong>de</strong> ataques classificados como normal e TN (Verda<strong>de</strong>iro<br />
Negativo) - número <strong>de</strong> tráfego normal <strong>de</strong>vidamente classificado como normal.<br />
Tabela 2. Matriz <strong>de</strong> confusão utilizada como base para o cálculo das medidas <strong>de</strong><br />
<strong>de</strong>sempenho.<br />
Atual<br />
Normal<br />
Previsto<br />
Intrusão<br />
Normal TN FP<br />
Intrusão FN TP<br />
As métricas utilizadas para comparar os métodos <strong>de</strong> classificação investigados<br />
são taxa <strong>de</strong> precisão, <strong>de</strong> <strong>de</strong>tecção e <strong>de</strong> falso alarme. Essas medidas po<strong>de</strong>m ser obtidas<br />
por:<br />
Precisão<br />
TP + TN<br />
=<br />
TP + TN + FP + FN<br />
Taxa <strong>de</strong> <strong>de</strong>tecção<br />
Alarme Falso<br />
TP<br />
=<br />
TP + FN<br />
FP<br />
=<br />
FP + TN<br />
205
4.3. Resultados<br />
Os resultados obtidos por cada técnica são apresentados separadamente, através <strong>de</strong> um<br />
quadro comparativo e <strong>de</strong> gráficos, para que o <strong>de</strong>sempenho geral dos métodos<br />
investigados seja comparado, sobre a base <strong>de</strong> teste.<br />
4.3.1. Classificadores Híbridos<br />
Conforme mencionado na seção 3.2, o método TANN foi replicado neste artigo <strong>de</strong><br />
acordo com a <strong>de</strong>scrição apresentada em [Tsai e Lin 2010]. K-means foi aplicado para<br />
agrupar os dados originais, posteriormente, as áreas triangulares foram calculadas e<br />
utilizadas como entrada para o treinamento do classificador k-NN. O único parâmetro<br />
que <strong>de</strong>ve ser <strong>de</strong>finido para k-NN é o número k <strong>de</strong> vizinhos mais próximos. O valor <strong>de</strong>sse<br />
parâmetro foi o mesmo atribuído pelos autores do método, isto é, k=17. A Tabela 3<br />
exibe a matriz <strong>de</strong> confusão obtida com este método.<br />
Tabela 3. Matriz <strong>de</strong> confusão produzida pelo método TANN original (kNN)<br />
Normal<br />
Ataque<br />
Normal 58.038 328<br />
Ataque 618 237.428<br />
As taxas <strong>de</strong> <strong>de</strong>tecção, falso alarme e precisão obtidos com TANN original foram:<br />
99,74%, 0,56% e 99,66%, respectivamente.<br />
Conforme <strong>de</strong>stacado na seção 3.2, neste artigo ocorre a troca do classificador k-<br />
NN pelo classificador SVM, que é consi<strong>de</strong>rado um método que apresenta <strong>de</strong>sempenho<br />
superior à k-NN. Essa alteração na abordagem TANN é chamada aqui <strong>de</strong> TANN<br />
modificado.<br />
Dois parâmetros iniciais precisam ser <strong>de</strong>finidos pelo usuário para SVM, o tipo <strong>de</strong><br />
função kernel e o parâmetro <strong>de</strong> regularização C. Depen<strong>de</strong>ndo da função kernel<br />
escolhida, outros parâmetros <strong>de</strong>vem ser <strong>de</strong>finidos, como por exemplo, o grau do<br />
polinômio para o kernel polinomial. Neste artigo, a base <strong>de</strong> validação foi utilizada para a<br />
<strong>de</strong>finição <strong>de</strong>sses parâmetros. Os melhores resultados foram obtidos com o kernel RBF<br />
(Radial Basis Function), e fator <strong>de</strong> penalização C=1 e γ=0,5. A tabela 4 exibe a matriz<br />
<strong>de</strong> confusão obtida com aplicação <strong>de</strong> TANN modificado.<br />
Tabela 4. Matriz <strong>de</strong> confusão produzida pelo método TANN modificado (SVM)<br />
Normal<br />
Ataque<br />
Normal 58.078 288<br />
Ataque 321 237.725<br />
Com relação à taxa <strong>de</strong> <strong>de</strong>tecção, falso alarme e precisão para TANN modificado,<br />
os valores obtidos foram: 99,86%, 0,49% e 99,79%, respectivamente.<br />
4.3.2. k-NNs gerados por RSM<br />
Dois parâmetros <strong>de</strong>vem ser <strong>de</strong>finidos para que RSM seja aplicado: dimensão dos<br />
subespaços aleatórios e quantida<strong>de</strong> <strong>de</strong> membros do conjunto <strong>de</strong> classificadores. Segundo<br />
a autora do método RSM [Ho 1998], o tamanho recomendado para os subespaços<br />
aleatórios <strong>de</strong>ve ser aproximadamente igual à meta<strong>de</strong> da quantida<strong>de</strong> <strong>de</strong> características<br />
originais. Portanto, consi<strong>de</strong>rando que a base investigada neste artigo contém<br />
206
originalmente 41 características, 20 características foram escolhidas aleatoriamente para<br />
compor cada subespaço. Em termos <strong>de</strong> quantida<strong>de</strong> <strong>de</strong> classificadores, o conjunto criado<br />
para os experimentos é composto por 15 k-NNs. Essa escolha foi baseada nos resultados<br />
obtidos por [Ho 1998] que mostraram que normalmente não há necessida<strong>de</strong> <strong>de</strong> utilização<br />
<strong>de</strong> muitos classificadores membros do conjunto.<br />
Como os classificadores membros do conjunto são k-NNs, o valor <strong>de</strong> k também<br />
precisou ser <strong>de</strong>finido. O valor utilizado nos experimentos foi k=1, uma vez que a<br />
literatura [Ho 1998] mostra que conjuntos <strong>de</strong> k-NNs gerados por RSM apresentam<br />
normalmente elevada taxa <strong>de</strong> precisão quando k=1, embora a escolha <strong>de</strong>sse parâmetro<br />
<strong>de</strong>penda muito do problema <strong>de</strong> aplicação. A Tabela 5 exibe a matriz <strong>de</strong> confusão obtida<br />
pelo conjunto <strong>de</strong> 15 kNNs gerados por RSM.<br />
Tabela 5. Matriz <strong>de</strong> confusão produzida pelo método RSM/kNN<br />
Normal<br />
Ataque<br />
Normal 58.355 11<br />
Ataque 69 237.977<br />
A taxa <strong>de</strong> precisão, taxa <strong>de</strong> <strong>de</strong>tecção e falso alarme da combinação <strong>de</strong><br />
classificadores são 99,97%, 99,97% e 0,019%, respectivamente.<br />
4.3.3. Resultados comparativos<br />
A Tabela 6 compara os resultados obtidos pelos três métodos investigados neste artigo.<br />
É importante <strong>de</strong>stacar que esses valores foram calculados na base <strong>de</strong> teste. Os resultados<br />
indicam que o método RSM/k-NN apresentou melhor <strong>de</strong>sempenho no problema <strong>de</strong><br />
<strong>de</strong>tecção <strong>de</strong> intrusão na base KDD Cup. O RSM/k-NN produziu maior taxa <strong>de</strong> precisão<br />
e <strong>de</strong> <strong>de</strong>tecção, e ao mesmo tempo menor taxa <strong>de</strong> falso alarme.<br />
A Figura 3 compara os métodos RSM/k-NN, híbrido original e híbrido<br />
modificado em termos <strong>de</strong> taxa <strong>de</strong> falsos alarmes. A Figura 4 mostra a precisão média por<br />
classe, incluindo a classe normal e as quatro diferentes classes <strong>de</strong> ataque, obtida por cada<br />
método. Observando-se que as classes R2L e U2R, não foram generalizadas pelo<br />
classificador, <strong>de</strong>vido a pouca representativida<strong>de</strong> <strong>de</strong>ssas classes no conjunto <strong>de</strong> dados<br />
exibido na tabela 1.<br />
Tabela 6. Comparação dos Resultados Obtidos<br />
TANN modificado<br />
(SVM)<br />
Classificador Híbrido<br />
TANN original<br />
(k-NN)<br />
Conjunto <strong>de</strong> Classificadores<br />
RSM/k-NN<br />
Taxa Detecção 99,865 99,740 99,971<br />
Falso Alarme 0,493 0,561 0,0188<br />
Precisão 99,794 99,68 99,973<br />
Os resultados também mostram que a modificação proposta neste trabalho para a<br />
estratégia TANN produziu melhores resultados quando comparada à TANN original.<br />
Esses resultados confirmam a literatura na área <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão que mostra que<br />
SVM é um classificador que alcança taxas <strong>de</strong> <strong>de</strong>tecção melhores quando comparado a k-<br />
NN [Tsai et al., 2009]. Porém, o método TANN modificado não superou o conjunto <strong>de</strong><br />
k-NNs gerados por RSM.<br />
207
Normal<br />
0,5620<br />
0,49343796<br />
R2L<br />
0,1857<br />
0,1427<br />
U2R<br />
0,0000<br />
0,0189<br />
RSM - kNN<br />
TANN Original (kNN)<br />
DoS<br />
0,3588<br />
0,2576<br />
TANN Modificado (SVM)<br />
Probe<br />
0,0189<br />
0,0757<br />
0,0000 0,2000 0,4000 0,6000<br />
Figura 3. Comparação entre os métodos investigados em relação à taxa <strong>de</strong><br />
falsos alarmes.<br />
RSM - kNN TANN original (kNN) TANN modificado (SVM)<br />
Normal<br />
99,98<br />
99,44<br />
99,51<br />
R2L<br />
97,63<br />
84,17<br />
93,93<br />
U2R<br />
0<br />
22<br />
53,12<br />
DoS<br />
99,98<br />
99,82<br />
99,92<br />
Probe<br />
96,47<br />
94,64<br />
96,83<br />
Figura 4. Comparação entre os métodos investigados em relação à precisão<br />
média por classe.<br />
A principal tarefa <strong>de</strong> um sistema <strong>de</strong> classificação <strong>de</strong> intrusão é filtrar potenciais<br />
ataques e permitir acesso a uma conexão normal. Logo, a taxa <strong>de</strong> <strong>de</strong>tecção correta <strong>de</strong><br />
conexões, tanto como ataques quanto como normais, <strong>de</strong>ve ser elevada. Como<br />
conseqüência, a taxa <strong>de</strong> falsos alarmes <strong>de</strong>ve ser minimizada no intuito <strong>de</strong> aumentar a<br />
efetivida<strong>de</strong> dos sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> anomalias. Portanto, os resultados obtidos neste<br />
artigo mostram a superiorida<strong>de</strong> <strong>de</strong> RSM/k-NN sobre as <strong>de</strong>mais técnicas investigadas.<br />
Entretanto, é importante <strong>de</strong>stacar que os resultados apresentados neste trabalho<br />
não têm o objetivo <strong>de</strong> sanar todas as lacunas existentes em um problema <strong>de</strong> <strong>de</strong>tecção <strong>de</strong><br />
intrusão. O objetivo é contribuir com pesquisas e experimentos que auxiliem a<br />
comunida<strong>de</strong> <strong>de</strong> pesquisadores na formulação <strong>de</strong> melhores soluções.<br />
5. Conclusões e Trabalhos Futuros<br />
Este artigo apresentou os resultados <strong>de</strong> um estudo experimental envolvendo a aplicação<br />
do método <strong>de</strong> subespaço aleatório na geração <strong>de</strong> um conjunto <strong>de</strong> classificadores do tipo<br />
k-NN aplicado ao problema <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> anomalias em re<strong>de</strong>s <strong>de</strong> computadores. O<br />
método foi comparado à estratégia híbrida TANN, e à uma versão modificada <strong>de</strong> TANN,<br />
proposta neste trabalho para melhorar a taxa <strong>de</strong> classificação da estratégia original.<br />
Embora o método híbrido modificado tenha superado o método original em<br />
termos <strong>de</strong> taxa <strong>de</strong> <strong>de</strong>tecção correta e <strong>de</strong> falsos alarmes, a combinação <strong>de</strong> conjuntos <strong>de</strong> k-<br />
NNs (RSM/k-NN) atingiu um <strong>de</strong>sempenho superior a ambos os métodos <strong>de</strong> classificação<br />
208
híbrida. É também importante <strong>de</strong>stacar a redução na taxa <strong>de</strong> falsos alarmes obtida por<br />
RSM/k-NN. Esse fato indica que conjuntos <strong>de</strong> classificadores po<strong>de</strong>m ser ferramentas<br />
fundamentais no <strong>de</strong>senvolvimento <strong>de</strong> soluções efetivas para a <strong>de</strong>tecção <strong>de</strong> anomalias na<br />
Internet.<br />
Para trabalhos futuros algumas questões po<strong>de</strong>m ser consi<strong>de</strong>radas. Primeiro, seria<br />
interessante avaliar a proposta <strong>de</strong>ste artigo em uma base <strong>de</strong> dados <strong>de</strong> ataques recentes<br />
dos tipos phishing, cross-site scripting, spam, entre outros. Segundo, <strong>de</strong>monstrar o<br />
<strong>de</strong>sempenho <strong>de</strong> conjuntos <strong>de</strong> SVMs gerados por subespaços aleatórios. Além disso,<br />
outros métodos <strong>de</strong> geração <strong>de</strong> conjuntos <strong>de</strong> classificadores, como bagging e conjuntos<br />
heterogêneos po<strong>de</strong>riam ser investigados.<br />
Referências<br />
An<strong>de</strong>rson, J. (1995). An introduction to neural networks. Cambridge: MIT Press.<br />
Breiman, L. (1996). Bagging Predictors. Machine Learning, 1996, volume 24 (2), 123-<br />
140.<br />
Chen W., Hsu S., Shen H., (2005). Application of SVM and ANN for intrusion<br />
<strong>de</strong>tection. In: Computer & Operations Research, Volume 32, Issue 10, October 2005,<br />
Pages 2617-2634<br />
Chimphlee W., Abdullah A. H.,Sap M. N., Srinoy S., Chimphlee S., (2006). Anomaly-<br />
Based Intrusion Detection using Fuzzy Rough Clustering. In: ICHIT '06 Proceedings<br />
of the 2006 International Conference on Hybrid Information Technology - Volume 01<br />
DARPA Intrusion Detection Data Sets 1999. Cyber Systems e Technology.<br />
http://www.ll.mit.edu/mission/communications/ist/corpora/i<strong>de</strong>val/data/in<strong>de</strong>x.html<br />
Feitosa, E. L. ; Souto, E. ; Sadok, D. (2008) . Tráfego Internet não Desejado:<br />
Conceitos, Caracterização e Soluções. In: SBC. (Org.). Livro-Texto <strong>de</strong> Minicurso do<br />
VIII Simpósio Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais.<br />
Porto Alegre: UFRGS, 2008, v. 1, p. 17-30.<br />
Ho T. K., (1995). Random Decision Forests. Document Analysis and Recognition,<br />
1995., Proceedings of the Third International Conference on<br />
Ho T. K., (1998). Nearest Neighbors in Random Subspaces. Advances in Pattern<br />
Recognition. Lecture Notes in Computer Science, 1998, volume 1451/1998, 640-648.<br />
Issariyapat C., Fukuda K., (2009). Anomaly <strong>de</strong>tection in IP networks with principal<br />
component analysis. Proceedings of the 9th international conference on<br />
Communications and information technologies 1229-1234.<br />
KDD Cup 1999 Dataset, UCI KDD repository,<br />
http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html<br />
Kleinberg, E.M., (1990). Stochastic discrimination. Annals of Mathematic and Artificial<br />
Intelligence, 1 (1990) 207-239.<br />
Kleinberg, E.M., (1996). An overtraining-resistant stochastic mo<strong>de</strong>ling method for<br />
pattern recognition. Annals of Statistics, 4, 6 (1996) 2319-2349.<br />
209
Kohavi R., (1995). A Study of Cross-Validation and Bootstrap for Accuracy Estimation<br />
and Mo<strong>de</strong>l Selection. Appear in the International Joint Conference on Artificial<br />
Intelligence (IJCAI).<br />
Kuncheva L.I., Combining Pattern Classifiers: Methods and Algorithms. John Wiley &<br />
Sons, LTD, USA, 2004.<br />
Lee M. S., Kim S. D. e Park S. J. (2007), A Hybrid Approach for Real-Time Network<br />
Intrusion Detection Systems. International Conference on Computational Intelligence<br />
and Security.<br />
Liao Y. and Vemuri V. R., (2002). Use of K-Nearest Neighbor classifier for intrusion<br />
<strong>de</strong>tection. In: Computer & Security, Volume 21, Issue 5, 1 October 2002, Pages 439-<br />
448<br />
Mafra M. P., Fraga S. J., Moll V., Santin O. A (2008), POLVO-IIDS: Um Sistema <strong>de</strong><br />
Detecção <strong>de</strong> Intrusão Inteligente Baseado em Anomalias. VIII Simpósio Brasileiro em<br />
Segurança da Informação e <strong>de</strong> Sistemas Computacionais.<br />
Nguyen T.T.T. e Armitage G. (2007), A Survey of Techniques for Internet Traffic<br />
Classification using Machine Learning. Centre for Advanced Internet Architectures.<br />
Swinburne University of Technology, Melbourne, Australia. IEEE Communication<br />
Surveys and Tutorials.<br />
Rho<strong>de</strong>s B., Mahaffey J. e Cannady J. (2000). Multiple self-organizing maps for intrusion<br />
<strong>de</strong>tection. In Paper presented at the proceedings of the 23 rd national information<br />
systems security conference. Baltimore, MD.<br />
Souza E. P. e Monteiro J. A. S (2009), Estudo Sobre Sistema <strong>de</strong> Detecção <strong>de</strong> Intrusão<br />
por Anomalias, uma Abordagem Utilizando Re<strong>de</strong>s Neurais. XIV Workshop <strong>de</strong><br />
Gerência e Operação <strong>de</strong> Re<strong>de</strong>s e Serviços - WGRS. Socieda<strong>de</strong> Brasileira <strong>de</strong> Re<strong>de</strong>s<br />
<strong>de</strong> Computadores – SBRC.<br />
Tian L. e Jianwen W., (2009). Research on Network Intrusion Detection System Based<br />
on Improved K-means Clustering Algorithm. Internacional Forum on Computer<br />
Science – Technology and Applications. IEEE Computer Science.<br />
Tsai C., Hsu Y., Lin C., Lin W. (2009). Intrusion <strong>de</strong>tection by machine learning: A<br />
review. Expert Systems with Applications 36 11004-12000.<br />
Tsai C., Lin C. (2010). A triangle area based nearest neighbors approach to intrusion<br />
<strong>de</strong>tection. Pattern Recognition 43 222-229.<br />
Xia, D. X., Yang, S. H. e Li, C. G., (2010). Intrusion <strong>de</strong>tection system based on<br />
principal component analysis and grey neural networks. The 2nd International<br />
Conference on Networks Security Wireless Communications and Trusted Computing<br />
142-145.<br />
Xiao H., Hong F., Zhang Z. e Liao J., (2007). Intrusion Detection Using Ensemble of<br />
SVM Classifier. Fourth International Conference on Fuzzy Systems and Knowledge<br />
Discovery (FKSD 2007). IEEE Computer Society.<br />
210
Combinando Algoritmos <strong>de</strong> Classificação para Detecção <strong>de</strong><br />
Intrusão em Re<strong>de</strong>s <strong>de</strong> Computadores<br />
Alex L. Ramos 1 , Cícero N. dos Santos 1<br />
1 Mestrado em Informática Aplicada – Universida<strong>de</strong> <strong>de</strong> Fortaleza (Unifor)<br />
Fortaleza – CE – Brasil<br />
alex.lacerda@edu.unifor.br, cnogueira@unifor.br<br />
Abstract. Intrusion Detection is the process of monitoring events occurring in<br />
a network and analyzing them for signs of intrusion. The literature contains<br />
many papers that use ensemble of machine learning algorithms to solve<br />
<strong>de</strong>tection problems. This paper proposes a mo<strong>de</strong>l of <strong>de</strong>tection in three levels.<br />
At each level, classification algorithms are applied and their results are<br />
combined in the later level. The last level consists of an ensemble of<br />
ensembles, which aims to improve the precision of intrusion <strong>de</strong>tection. The<br />
results show that the use of three-level ensemble performs better than other<br />
systems proposed in the literature.<br />
Resumo. Detecção <strong>de</strong> intrusão é o processo <strong>de</strong> monitorar e analisar eventos<br />
que ocorrem em uma re<strong>de</strong> em busca <strong>de</strong> sinais <strong>de</strong> intrusão. A literatura<br />
apresenta inúmeros trabalhos que utilizam técnicas <strong>de</strong> comitês <strong>de</strong><br />
classificadores para resolver problemas <strong>de</strong> <strong>de</strong>tecção. Este trabalho propõe um<br />
mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>tecção em três níveis. Em cada nível são aplicados<br />
classificadores gerados por um mesmo algoritmo base e seus resultados são<br />
combinados nos níveis posteriores. O ultimo nível <strong>de</strong> classificação forma um<br />
comitê <strong>de</strong> comitês, que tenta viabilizar uma maior precisão na <strong>de</strong>tecção. Os<br />
resultados apresentados <strong>de</strong>monstram que o mo<strong>de</strong>lo proposto apresenta melhor<br />
<strong>de</strong>sempenho em relação a outros trabalhos encontrados na literatura.<br />
1. Introdução<br />
Segurança <strong>de</strong> re<strong>de</strong>s é <strong>de</strong>finida como a proteção <strong>de</strong> sistemas <strong>de</strong> computadores contra<br />
ameaças à confi<strong>de</strong>ncialida<strong>de</strong>, integrida<strong>de</strong> e disponibilida<strong>de</strong> das informações. Com o<br />
rápido <strong>de</strong>senvolvimento da tecnologia baseada na Internet e a <strong>de</strong>pendência <strong>de</strong> negócios<br />
críticos aos sistemas <strong>de</strong> informação, novos domínios <strong>de</strong> aplicação em re<strong>de</strong>s <strong>de</strong><br />
computadores vêm surgindo [Stallings 2005]. Na medida em que as re<strong>de</strong>s se<br />
<strong>de</strong>senvolvem, existe também o aumento das vulnerabilida<strong>de</strong>s que po<strong>de</strong>m comprometêlas.<br />
Neste contexto, a segurança da informação torna-se essencial para garantir a<br />
proteção dos dados que trafegam nestas re<strong>de</strong>s.<br />
A cada instante novos tipos <strong>de</strong> ataque surgem, tornado necessária, a criação <strong>de</strong><br />
mecanismos <strong>de</strong> <strong>de</strong>fesa mais sofisticados. Os ataques po<strong>de</strong>m corromper os dados <strong>de</strong> uma<br />
aplicação e, <strong>de</strong>pen<strong>de</strong>ndo <strong>de</strong> seu tipo e intensida<strong>de</strong>, po<strong>de</strong>m até mesmo levar o sistema a<br />
um colapso. Com isso, várias medidas vêm sendo criadas para garantir a segurança<br />
contra ataques. Os mecanismos <strong>de</strong> prevenção, tais como criptografia e autenticação, são<br />
a primeira linha <strong>de</strong> <strong>de</strong>fesa em uma re<strong>de</strong>, garantindo alguns princípios <strong>de</strong> segurança<br />
211
como confi<strong>de</strong>ncialida<strong>de</strong> e integrida<strong>de</strong> [Stallings 2005]. Porém, quando estas medidas<br />
não são suficientes para lidar com todos os tipos <strong>de</strong> ataque, faz-se necessário um<br />
segundo mecanismo <strong>de</strong> segurança, os Sistemas <strong>de</strong> Detecção <strong>de</strong> Intrusos (Intrusion<br />
Detection System - IDS) [Debar et al. 2000]. De modo geral, um IDS analisa o tráfego<br />
<strong>de</strong> re<strong>de</strong> tentando reconhecer um comportamento ou uma ação intrusiva para alertar o<br />
administrador ou automaticamente disparar contramedidas.<br />
As técnicas utilizadas para <strong>de</strong>tectar intrusões normalmente são classificadas em<br />
dois tipos: assinatura e anomalia. A <strong>de</strong>tecção por assinatura compara o tráfego com uma<br />
base <strong>de</strong> dados <strong>de</strong> ataques conhecidos (assinaturas), enquanto a <strong>de</strong>tecção por anomalia<br />
compara os dados coletados com registros <strong>de</strong> ativida<strong>de</strong>s consi<strong>de</strong>radas normais no<br />
sistema. Um <strong>de</strong>svio significativo da normalida<strong>de</strong> é consi<strong>de</strong>rado uma ameaça. Ambas as<br />
abordagens possuem várias <strong>de</strong>svantagens. A <strong>de</strong>tecção por assinatura exige atualização<br />
frequente dos registros para garantir uma boa <strong>de</strong>tecção, enquanto a <strong>de</strong>tecção por<br />
anomalia sofre <strong>de</strong> uma alta taxa <strong>de</strong> falsos positivos. Deste modo, o <strong>de</strong>safio é encontrar<br />
uma solução que resolva estes dois problemas, trazendo tanto uma boa <strong>de</strong>tecção quanto<br />
uma baixa taxa <strong>de</strong> falsos alarmes.<br />
Várias abordagens têm sido propostas neste sentido. Entre elas, estratégias<br />
baseadas em técnicas <strong>de</strong> aprendizado <strong>de</strong> máquina tais como Re<strong>de</strong>s Neurais e Máquinas<br />
<strong>de</strong> Vetor Suporte [Mukkamala et al. 2005]. O <strong>de</strong>senvolvimento <strong>de</strong>ssas técnicas obe<strong>de</strong>ce<br />
a duas fases distintas: treinamento e classificação. Na fase <strong>de</strong> treinamento o IDS apren<strong>de</strong><br />
o funcionamento do sistema formando um mo<strong>de</strong>lo que é utilizado na fase <strong>de</strong><br />
classificação para classificar o tráfego <strong>de</strong> re<strong>de</strong>, distinguindo ativida<strong>de</strong>s normais <strong>de</strong><br />
possíveis ameaças.<br />
Uma técnica conhecida como Comitê <strong>de</strong> Classificadores [Witten e Frank 2005]<br />
vem sendo utilizada nos trabalhos relacionados à <strong>de</strong>tecção <strong>de</strong> intrusão que utilizam<br />
algoritmos <strong>de</strong> aprendizado <strong>de</strong> máquina. Métodos <strong>de</strong> comitê visam melhorar o<br />
<strong>de</strong>sempenho da classificação construindo uma combinação da saída <strong>de</strong> vários<br />
classificadores, ao invés <strong>de</strong> aplicar um único mo<strong>de</strong>lo. O resultado da combinação é<br />
melhor do que o resultado <strong>de</strong> qualquer classificador base individual pertencente à<br />
combinação. Desta forma, técnicas <strong>de</strong> comitê trazem uma diminuição significativa das<br />
taxas <strong>de</strong> falsos positivos na <strong>de</strong>tecção <strong>de</strong> intrusão, além <strong>de</strong> aumentarem a acurácia da<br />
<strong>de</strong>tecção [Witten e Frank 2005].<br />
No entanto, os Sistemas <strong>de</strong> Detecção <strong>de</strong> Intrusão baseados em Comitês <strong>de</strong><br />
classificadores propostos recentemente [Chou et al. 2009] [Zainal et al. 2008] ainda<br />
apresentam consi<strong>de</strong>ráveis taxas <strong>de</strong> falsos positivos. Por esse motivo, com o intuito <strong>de</strong><br />
explorar melhor todo o potencial <strong>de</strong>sta técnica, propomos neste trabalho um mo<strong>de</strong>lo <strong>de</strong><br />
comitê <strong>de</strong> classificadores que segue uma estratégia <strong>de</strong> classificação em três níveis. No<br />
primeiro nível, classificadores são gerados usando algoritmos simples, que não usam<br />
estratégias <strong>de</strong> comitês. No segundo nível, são usadas estratégias <strong>de</strong> comitê tomando<br />
como algoritmos base os que aparecem no primeiro nível. Os mo<strong>de</strong>los <strong>de</strong> classificação<br />
gerados no nível dois são então combinados em um terceiro nível, formando assim um<br />
comitê <strong>de</strong> comitês. O principal propósito do trabalho é abordar a questão da acurácia e<br />
da taxa <strong>de</strong> alarmes falsos em um IDS.<br />
O restante do artigo está organizado como segue. A Seção 2 discute os trabalhos<br />
relacionados à <strong>de</strong>tecção <strong>de</strong> intrusão que utilizam técnicas <strong>de</strong> comitê. A Seção 3<br />
212
apresenta a abordagem proposta. Na Seção 4, os algoritmos utilizados nos experimentos<br />
são <strong>de</strong>scritos. Na Seção 5, a base <strong>de</strong> dados utilizada é apresentada. A Seção 6 discute os<br />
resultados. Por fim, a Seção 7 apresenta as conclusões do trabalho.<br />
2. Trabalhos Relacionados<br />
Várias abordagens baseadas em aprendizado <strong>de</strong> máquina como Re<strong>de</strong>s Neurais<br />
Artificiais (ANNs), Sistemas <strong>de</strong> Inferência Fuzzy e SVM (Support Vector Machine),<br />
foram propostas na literatura para realizar <strong>de</strong>tecção <strong>de</strong> intrusão, como o Polvo-IIDS que<br />
realiza <strong>de</strong>tecções através da utilização <strong>de</strong> um sistema multi-camadas baseado em re<strong>de</strong>s<br />
neurais e SVM [Mafra et al. 2008]. Uma revisão a fundo <strong>de</strong> várias técnicas <strong>de</strong> <strong>de</strong>tecção<br />
baseada em anomalia, para i<strong>de</strong>ntificação <strong>de</strong> diferentes tipos intrusões em re<strong>de</strong>s, é<br />
apresentada em [Lazarevic et al. 2003].<br />
A literatura sugere que a combinação <strong>de</strong> múltiplos classificadores po<strong>de</strong> melhorar<br />
a acurácia da <strong>de</strong>tecção. Porém é importante enten<strong>de</strong>r que os algoritmos combinados<br />
<strong>de</strong>vem ser in<strong>de</strong>pen<strong>de</strong>ntes entre si. Se os classificadores base apresentarem métodos <strong>de</strong><br />
classificação similares, então nenhuma melhoria significativa po<strong>de</strong> ser obtida por meio<br />
da utilização <strong>de</strong> comitês. Portanto, a diversificação dos classificadores base é crítica<br />
para efetivida<strong>de</strong> dos métodos <strong>de</strong> comitê [Chou et al. 2009].<br />
No trabalho <strong>de</strong>scrito por [Mukkamala et al. 2005], foram propostas três variantes<br />
<strong>de</strong> Re<strong>de</strong>s Neurais, SVM e MARS como componentes <strong>de</strong> seu IDS. Esta abordagem <strong>de</strong><br />
comitê <strong>de</strong>monstrou melhor <strong>de</strong>sempenho quando comparado à abordagem <strong>de</strong> um<br />
classificador único. Porém, neste trabalho, apenas a acurácia da classificação foi<br />
apresentada, <strong>de</strong>sconsi<strong>de</strong>rando-se importantes medidas padrão para avaliação, tais como<br />
DR (Detection Rate – Taxa <strong>de</strong> Detecção) e FPR (False Positive Rate – Taxa <strong>de</strong> Falsos<br />
Positivos).<br />
Na proposta <strong>de</strong> [Abraham et al. 2007], os autores também <strong>de</strong>monstraram a<br />
capacida<strong>de</strong> <strong>de</strong> sua estrutura <strong>de</strong> comitê em mo<strong>de</strong>lar um IDS baseado em programação<br />
genética. Entretanto, eles realizaram experimentos em uma base com dados<br />
selecionados aleatoriamente a partir da base <strong>de</strong> dados original e os resultados<br />
apresentados foram coletados <strong>de</strong> apenas um experimento, o que torna a classificação<br />
enviesada, <strong>de</strong>pen<strong>de</strong>ndo somente das conexões que foram selecionadas para compor as<br />
bases <strong>de</strong> treino e teste.<br />
O trabalho <strong>de</strong> [Borji 2007] é outro exemplo do uso <strong>de</strong> técnicas comitê. Ele usou<br />
o KDDCUP’99 [Lee et al.1999] para classificar suas conexões em cinco classes<br />
(Normal, DoS, Probe, U2R e R2L). Primeiramente, ele utilizou quatro classificadores<br />
base (Re<strong>de</strong>s Neurais, SVM, K-NN e Árvores <strong>de</strong> Decisão) para realizar a classificação<br />
individualmente e então combinou suas inferências usando três estratégias <strong>de</strong> comitê:<br />
Belief Function, Average Rule e Majority Voting [Kuncheva 2004]. No entanto, ele não<br />
apresentou DR e FPR em cada uma das cinco classes, além <strong>de</strong> ter realizado somente um<br />
experimento em uma base com registros selecionados aleatoriamente.<br />
Em [Zainal et al. 2008], os autores propuseram um conjunto <strong>de</strong> classificadores<br />
on<strong>de</strong> cada um usa diferentes paradigmas <strong>de</strong> aprendizagem. As técnicas utilizadas no<br />
mo<strong>de</strong>lo <strong>de</strong> comitê são: Linear Genetic Programming (LGP), Adaptative Neural Fuzzy<br />
Inference System (ANFIS) e Random Forest (RF). A partir dos resultados obtidos por<br />
213
estes classificadores, a equação <strong>de</strong> combinação foi formulada. Apesar <strong>de</strong> essa estratégia<br />
ter apresentado uma melhoria na acurácia da <strong>de</strong>tecção, os autores não <strong>de</strong>ixam claro qual<br />
versão da base <strong>de</strong> dados KDDCUP’99 (completa, 10%, treino, teste) foi utilizada.<br />
Também não especificam como realizaram a seleção das conexões que compõem a<br />
amostra utilizada nos experimentos. Além disso, somente um experimento foi realizado<br />
nos dados selecionados aleatoriamente, tornando os resultados enviesados. Outra<br />
questão, é que não apresentaram um mo<strong>de</strong>lo sistemático que possa justificar a escolha<br />
dos pesos utilizados na regra <strong>de</strong> combinação.<br />
Outro exemplo da utilização <strong>de</strong> técnicas <strong>de</strong> comitê na <strong>de</strong>tecção <strong>de</strong> intrusão é o<br />
trabalho <strong>de</strong> [Chou et al. 2009]. Eles apresentam um multi-classificador com hierarquia<br />
<strong>de</strong> três camadas. Em sua proposta, primeiramente são aplicados três classificadores em<br />
cada um dos três grupos diferentes <strong>de</strong> atributos da base <strong>de</strong> dados escolhida. Na segunda<br />
camada, para cada grupo <strong>de</strong> atributos, as inferências obtidas pelos diferentes<br />
classificadores são combinadas. Por fim, os resultados das combinações <strong>de</strong> cada grupo<br />
são reunidos para produzir uma conclusão final na terceira camada. No entanto, a<br />
amostra da base <strong>de</strong> dados KDDCUP’99 que eles utilizaram para realizar os<br />
experimentos não mantém a mesma proporção das classes <strong>de</strong> ataque da base original.<br />
Isto é, a amostra utilizada não possui a mesma distribuição <strong>de</strong> classes da base original.<br />
O presente trabalho difere dos citados anteriormente em dois aspectos principais:<br />
(a) neste trabalho, um mesmo algoritmo base é utilizado para gerar os diferentes<br />
classificadores. (b) este trabalho propõe um mo<strong>de</strong>lo <strong>de</strong> comitê em que as técnicas <strong>de</strong><br />
classificação são aplicadas em três níveis, sendo que o terceiro nível gera um comitê <strong>de</strong><br />
comitês.<br />
3. Abordagem Proposta<br />
Tarefas <strong>de</strong> classificação são realizadas em duas etapas conhecidas como fase <strong>de</strong><br />
treinamento e fase <strong>de</strong> classificação. Primeiramente, um algoritmo <strong>de</strong> aprendizado <strong>de</strong><br />
máquina é aplicado em uma base <strong>de</strong> dados (fase <strong>de</strong> treinamento) para gerar um mo<strong>de</strong>lo<br />
capaz <strong>de</strong> classificar os registros <strong>de</strong> uma segunda base (fase <strong>de</strong> classificação).<br />
Neste trabalho, a <strong>de</strong>tecção <strong>de</strong> ataques é realizada a partir da classificação dos<br />
registros <strong>de</strong> uma base <strong>de</strong> dados <strong>de</strong> conexões TCP/IP, no qual cada conexão é<br />
classificada como sendo normal ou pertencendo a algum tipo <strong>de</strong> ataque.<br />
Este trabalho apresenta uma proposta <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques que usa três níveis<br />
<strong>de</strong> classificação. No nível 1, a classificação é realizada por mo<strong>de</strong>los gerados por um<br />
mesmo algoritmo base. No nível 2, um algoritmo <strong>de</strong> comitê é aplicado a vários mo<strong>de</strong>los<br />
do classificador do nível 1. Finalmente no nível 3, os resultados do nível 2 são<br />
combinados por um segundo algoritmo <strong>de</strong> comitê, gerando um comitê <strong>de</strong> comitês. A<br />
Figura 1 ilustra o mo<strong>de</strong>lo proposto. Observe que, em cada nível, os resultados <strong>de</strong><br />
classificadores do nível anterior são combinados para gerar uma classificação mais<br />
precisa.<br />
A principal proposta do trabalho é verificar se comitês <strong>de</strong> comitês po<strong>de</strong>m<br />
produzir melhores sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão em re<strong>de</strong>s <strong>de</strong> computadores. A<br />
escolha por três níveis <strong>de</strong>u-se por três motivos: (1) para formar um comitê <strong>de</strong> comitês,<br />
precisa-se <strong>de</strong> pelo menos três níveis, (2) <strong>de</strong> acordo com os experimentos realizados, a<br />
214
utilização <strong>de</strong> mais <strong>de</strong> três níveis não apresenta melhorias no <strong>de</strong>sempenho da <strong>de</strong>tecção,<br />
pelo contrário, chega até a reduzi-lo e (3) o custo computacional da adição <strong>de</strong> um quarto<br />
nível seria muito gran<strong>de</strong>. Com isso, apenas o resultado dos três níveis propostos são<br />
apresentados neste artigo.<br />
Figura 1. Abordagem <strong>de</strong> Classificação em três níveis<br />
4. Algoritmos <strong>de</strong> Aprendizado <strong>de</strong> Máquina Aplicados à Detecção <strong>de</strong> Intrusão<br />
Para avaliar a abordagem proposta, foram testadas três configurações <strong>de</strong> comitês <strong>de</strong><br />
classificadores, como apresentado na Tabela 1. Com o objetivo <strong>de</strong> analisar o<br />
<strong>de</strong>sempenho <strong>de</strong> vários algoritmos com paradigmas <strong>de</strong> aprendizado distintos, cada<br />
configuração utiliza três algoritmos diferentes. Os algoritmos selecionados foram os que<br />
apresentaram melhores <strong>de</strong>sempenhos em relação a outros algoritmos do mesmo<br />
paradigma <strong>de</strong> aprendizado. Por exemplo, o algoritmo base Random Tree [Geurts et al.<br />
2006] apresentou o melhor <strong>de</strong>sempenho em relação a outros algoritmos base que<br />
utilizam árvores <strong>de</strong> <strong>de</strong>cisão. Da mesma forma, Naive Bayes apresentou o melhor<br />
<strong>de</strong>sempenho em relação a outros algoritmos que utilizam o Teorema <strong>de</strong> Bayes [John e<br />
Langlay 1995].<br />
Tabela 1. Algoritmos avaliados em cada configuração <strong>de</strong> comitê<br />
Configuração 1 Configuração 2 Configuração 3<br />
Nível 1 Random Tree J48 Naive Bayes<br />
Nível 2 Random Forest Bagging Dagging<br />
Nível 3 Random Committee AdaBoost.M1 MultiBoostAB<br />
215
A ferramenta WEKA (Waikato Environment for Knowledge Analysis) [Hall et<br />
al. 2009], versão 3.6.3, foi utilizada para aplicação dos algoritmos. Escolhemos essa<br />
ferramenta por ser amplamente utilizada em ativida<strong>de</strong>s <strong>de</strong> aprendizado <strong>de</strong> máquina [Zaian<br />
et al. 2010].<br />
A seguir, os algoritmos utilizados em cada configuração são <strong>de</strong>scritos com mais<br />
<strong>de</strong>talhes, <strong>de</strong> forma a <strong>de</strong>stacar suas principais diferenças. Visto que, por restrições <strong>de</strong><br />
espaço, não é possível discuti-los minunciosamente.<br />
4.1. Configuração 1<br />
Essa configuração foi criada utilizando apenas algoritmos randômicos, <strong>de</strong>scritos a<br />
seguir:<br />
1. Algoritmo base: Random Tree – este classificador é uma árvore <strong>de</strong> <strong>de</strong>cisão que<br />
consi<strong>de</strong>ra apenas alguns atributos escolhidos aleatoriamente para cada nó da<br />
árvore.<br />
2. Algoritmo <strong>de</strong> comitê: Random Forest [Breiman 2001] – este algoritmo <strong>de</strong><br />
comitê é um conjunto <strong>de</strong> árvores <strong>de</strong> classificação. Cada árvore dá um voto que<br />
indica sua <strong>de</strong>cisão sobre a classe do objeto. A classe com o maior número <strong>de</strong><br />
votos é escolhida para o objeto.<br />
3. Algoritmo <strong>de</strong> comitê <strong>de</strong> comitês: Random Committee [Lira et al. 2007] – ele<br />
utiliza classificadores que tem funcionamento aleatório como base. Cada mo<strong>de</strong>lo<br />
<strong>de</strong> classificação gerado é construído usando uma semente <strong>de</strong> número aleatório<br />
diferente (mas baseado nos mesmos dados). A previsão final é uma média das<br />
previsões geradas pelos mo<strong>de</strong>los base individuais.<br />
4.2. Configuração 2<br />
Os algoritmos utilizados nesta configuração são os seguintes:<br />
1. Algoritmo base: J48 – este algoritmo é uma implementação em Java, na<br />
ferramenta WEKA, do classificador C4.5 [Quinlan 1993]. Ele gera árvores <strong>de</strong><br />
<strong>de</strong>cisão usando uma metodologia <strong>de</strong> informação teórica. O algoritmo C4.5 usa<br />
estratégia <strong>de</strong> dividir e conquistar.<br />
2. Algoritmo <strong>de</strong> comitê: Bagging – o Bootstrap aggregating [Breiman 1996] po<strong>de</strong><br />
ser <strong>de</strong>scrito da seguinte maneira: dado uma base <strong>de</strong> dados, ele gera várias outras<br />
bases a partir da inicial, duplicando alguns registros e excluindo outros. Então,<br />
os mo<strong>de</strong>los gerados a partir <strong>de</strong> cada nova base são combinados por votação,<br />
<strong>de</strong>ste modo, para cada registro a ser classificado, a classe mais votada é<br />
escolhida.<br />
3. Algoritmo <strong>de</strong> comitê <strong>de</strong> comitês: AdaBoost.M1 – ele é uma das versões do<br />
algoritmo AdaBoost [Freund e Schapire 1996]. Este classificador funciona<br />
executando repetidamente um <strong>de</strong>terminado algoritmo base em várias<br />
distribuições sobre a base <strong>de</strong> treino e, então, combina os classificadores<br />
produzidos pelo algoritmo base em um classificador único composto.<br />
216
4.3. Configuração 3<br />
A última configuração avaliada é formada pelos seguintes algoritmos:<br />
1. Algoritmo base: Naive Bayes – este classificador é baseado na teoria da<br />
probabilida<strong>de</strong> condicional para executar a <strong>de</strong>cisão <strong>de</strong> um problema <strong>de</strong><br />
classificação. Ele usa o Teorema <strong>de</strong> Bayes com suposições <strong>de</strong> in<strong>de</strong>pendência, o<br />
que pressupõe que, dado uma classe, conjuntos <strong>de</strong> características são<br />
condicionalmente in<strong>de</strong>pen<strong>de</strong>ntes uns dos outros.<br />
2. Algoritmo <strong>de</strong> comitê: Dagging [Ting e Witten 1997] – ele cria um número <strong>de</strong><br />
partes estratificadas disjuntas a partir dos dados <strong>de</strong> entrada e alimenta cada bloco<br />
<strong>de</strong> dados com uma cópia do classificador base fornecido. As previsões são feitas<br />
via Majority Voting. Este algoritmo é bastante parecido com o Bagging, porém<br />
ao invés <strong>de</strong> utilizar a técnica <strong>de</strong> bootstrapping, ele utiliza a técnica <strong>de</strong> disjunção.<br />
3. Algoritmo <strong>de</strong> comitê <strong>de</strong> comitês: MultiBoostAB [Webb 2000] – ele é uma<br />
extensão à técnica AdaBoost para a formação <strong>de</strong> comitês <strong>de</strong> <strong>de</strong>cisão. Este<br />
algoritmo po<strong>de</strong> ser visto como a combinação entre AdaBoost e Wagging [Webb<br />
2000]. Ele tem a capacida<strong>de</strong> <strong>de</strong> tirar proveito tanto do forte viés do AdaBoost<br />
quanto da redução <strong>de</strong> variância do Wagging.<br />
5. Base <strong>de</strong> Dados para Detecção <strong>de</strong> Intrusão<br />
A base <strong>de</strong> dados escolhida para aplicação dos algoritmos <strong>de</strong> classificação foi a DARPA<br />
KDDCUP’99. Ela é uma das poucas bases <strong>de</strong> dados <strong>de</strong> tráfego <strong>de</strong> re<strong>de</strong> disponíveis<br />
publicamente, <strong>de</strong>vido a questões <strong>de</strong> legalida<strong>de</strong>, privacida<strong>de</strong> e segurança, como discutido<br />
em [Paxson 2007]. Apesar <strong>de</strong> ter sido criada a mais <strong>de</strong> <strong>de</strong>z anos, ela é a base mais<br />
utilizada para testar Sistemas <strong>de</strong> Detecção <strong>de</strong> Intrusão baseados em anomalia (Anomalybased<br />
Intrusion Detection Systems) [Tavallaee et al. 2009]. Isso permite que nossa<br />
proposta seja comparada a outros trabalhos.<br />
Ela foi concebida através da simulação <strong>de</strong> um ambiente <strong>de</strong> uma re<strong>de</strong> militar da<br />
força aérea dos Estados Unidos (U.S. Air Force). A re<strong>de</strong> foi operada em um ambiente<br />
real, alimentada por conexões TCP dump, mas sendo bombar<strong>de</strong>ada por uma sequência<br />
<strong>de</strong> múltiplos ataques. Para cada conexão (sequência <strong>de</strong> pacotes TCP) foram extraídos 41<br />
atributos adicionados <strong>de</strong> um rótulo que i<strong>de</strong>ntifica se a conexão é do tipo normal ou um<br />
tipo <strong>de</strong> ataque, como mostrado em [Elkan 2000]. Os tipos <strong>de</strong> ataque <strong>de</strong>sta base <strong>de</strong> dados<br />
são agrupados nas seguintes categorias:<br />
• Probe: Nessa classe, os ataques se caracterizam por varrer a re<strong>de</strong><br />
automaticamente a procura informações ou vulnerabilida<strong>de</strong>s a serem exploradas.<br />
Ex.: port scanning e port sweep.<br />
• DoS (Denial of Service): Também chamado <strong>de</strong> ataque <strong>de</strong> negação <strong>de</strong> serviço, se<br />
caracteriza por <strong>de</strong>ixar um serviço ou re<strong>de</strong> parada ou muito lenta, Ex.: ping-of<strong>de</strong>ath<br />
e SYN flood.<br />
• U2R (User to root): Essa classe <strong>de</strong> ataques se caracteriza por iniciar o ataque<br />
como um usuário normal no sistema e explorar vulnerabilida<strong>de</strong>s para ganhar<br />
acesso <strong>de</strong> usuário root. Ex.: ataques buffer overflow.<br />
217
• R2L (Remote to Local): Chamado <strong>de</strong> ataque <strong>de</strong> usuário remoto, essa classe se<br />
caracteriza pelo envio <strong>de</strong> pacotes a uma máquina <strong>de</strong> uma re<strong>de</strong>, a partir daí são<br />
exploradas vulnerabilida<strong>de</strong>s da máquina para ganhar acesso ilegal <strong>de</strong> usuário<br />
local. Ex.: guessing password.<br />
A base <strong>de</strong> dados utilizada correspon<strong>de</strong> a 10% da base KDDCUP’99. Porém,<br />
alguns ajustes foram feitos. As alterações são semelhantes às realizadas por [Borji<br />
2007].<br />
Primeiramente, foram removidos os registros redundantes, que são uma das<br />
maiores <strong>de</strong>ficiências <strong>de</strong>sta base <strong>de</strong> dados por tornarem os algoritmos <strong>de</strong> classificação<br />
enviesados em relação aos registros frequentes [Tavallaee et al. 2009].<br />
Em seguida, 11.982 registros foram selecionados aleatoriamente para compor as<br />
bases <strong>de</strong> treino e teste [Mukkamala et al. 2005]. O número <strong>de</strong> registros selecionados <strong>de</strong><br />
cada classe é proporcional ao seu tamanho na base sem registros redundantes, com<br />
exceção da classe U2L que foi completamente incluída. A Tabela 2 apresenta a<br />
quantida<strong>de</strong> <strong>de</strong> registros por classe após o pré-processamento realizado.<br />
Tabela 2. Quantida<strong>de</strong> <strong>de</strong> registros por classe<br />
Base Normal Probe DoS U2R R2L Total<br />
Original (10%) 97.278 4.107 391.458 52 1.126 494.021<br />
Sem registros<br />
redundantes<br />
Com registros<br />
aleatórios<br />
87.832 2.131 54.572 52 999 145.586<br />
7.200 175 4.473 52 82 11.982<br />
Um número <strong>de</strong> 6.890 registros da base total (11.982) foi selecionado<br />
aleatoriamente para formar a base <strong>de</strong> teste e o resto (5.092) foi utilizado como base <strong>de</strong><br />
treino, como <strong>de</strong>scrito em [Mukkamala et al. 2005].<br />
Por fim, tipos <strong>de</strong> ataque (como buffer overflow, guessing password, etc.) foram<br />
mapeados para uma das cinco classes possíveis (0 para Normal, 1 para DoS, 2 para<br />
Probe, 3 para R2L, 4 para U2R), como <strong>de</strong>scrito em [Elkan 2000], <strong>de</strong> modo que a tarefa<br />
<strong>de</strong> classificação pu<strong>de</strong>sse ser realizada.<br />
6. Resultados e Discussão<br />
Os experimentos consistem em várias sessões <strong>de</strong> treinamento e teste. Na fase <strong>de</strong><br />
treinamento, os classificadores são construídos utilizando a base <strong>de</strong> treino. Em seguida,<br />
os dados <strong>de</strong> teste são introduzidos em cada classificador treinado, gerando uma<br />
classificação para cada fluxo <strong>de</strong> teste.<br />
Os valores <strong>de</strong> parâmetros padrão da ferramenta WEKA são utilizados para<br />
configuração <strong>de</strong> cada algoritmo. A única exceção é o algoritmo Naive Bayes, que foi<br />
configurado para utilizar Kernel Estimator para atributos numéricos, ao invés <strong>de</strong> uma<br />
distribuição normal. Esta alteração foi realizada por trazer diferenças significativas aos<br />
resultados <strong>de</strong>ste classificador.<br />
O <strong>de</strong>sempenho da tarefa <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão foi avaliado por meio <strong>de</strong><br />
medidas padrão, tais como a taxa <strong>de</strong> <strong>de</strong>tecção (DR – Detection Rate) e a taxa <strong>de</strong> falsos<br />
218
positivos (FPR – False Positive Rate). Estas medidas são calculadas com as seguintes<br />
equações:<br />
TP<br />
DR = ×100%<br />
TP + FN<br />
(1)<br />
FPR =<br />
FP<br />
×100%<br />
FP + TN<br />
(2)<br />
On<strong>de</strong>, TP (True Positive) é a quantida<strong>de</strong> <strong>de</strong> conexões classificadas como ataques<br />
que realmente são ataques. FN (False Negative) é a quantida<strong>de</strong> <strong>de</strong> conexões<br />
classificadas como normais, quando na verda<strong>de</strong> são ataques. FP (False Positive) é a<br />
quantida<strong>de</strong> <strong>de</strong> conexões normais que são classificadas como ataque. TN (True Negative)<br />
é a quantida<strong>de</strong> <strong>de</strong> conexões classificadas como normais que são realmente normais.<br />
Mais <strong>de</strong>talhes sobre essas medidas po<strong>de</strong>m ser encontradas em [Osareh e Shadgar 2008].<br />
Devido à seleção aleatória dos registros das bases <strong>de</strong> dados testadas, <strong>de</strong>z<br />
iterações <strong>de</strong> treino-teste foram executadas para cada algoritmo. Isso minimiza o fator <strong>de</strong><br />
imprecisão e variação dos resultados obtidos nos experimentos. Para cada algoritmo o<br />
resultado apresentado é a média dos resultados obtidos nas <strong>de</strong>z iterações. É importante<br />
ressaltar que todos os algoritmos apresentaram <strong>de</strong>svios padrão inferiores a 0,5 para DR e<br />
FPR, os quais po<strong>de</strong>m ser consi<strong>de</strong>rados pequenos, visto que os valores <strong>de</strong> DR e FPR<br />
variam entre zero e 100. Isso nos permite concluir que a média é bastante representativa<br />
em relação aos resultados obtidos.<br />
A Tabela 3 apresenta o <strong>de</strong>sempenho dos três algoritmos do nível 1, aplicados<br />
individualmente na base <strong>de</strong> dados. Os resultados mostram que o algoritmo Random Tree<br />
apresenta o melhor <strong>de</strong>sempenho, possuindo a maior taxa <strong>de</strong> <strong>de</strong>tecção (DR) e a menor<br />
taxa <strong>de</strong> falsos positivos (FPR). Isso se <strong>de</strong>ve ao fato <strong>de</strong> que o Random Tree se trata <strong>de</strong><br />
uma árvore com base aleatória, capaz <strong>de</strong> obter bons resultados em uma base com uma<br />
gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> atributos, como é o caso do KDDCUP’99. O classificador Naive<br />
Bayes obteve os piores resultados, estando bastante distante dos outros algoritmos. Isso<br />
provavelmente se <strong>de</strong>ve ao fato <strong>de</strong>ste algoritmo não ser a<strong>de</strong>quado para bases com gran<strong>de</strong><br />
quantida<strong>de</strong> <strong>de</strong> atributos <strong>de</strong>vido à sua suposição <strong>de</strong> in<strong>de</strong>pendência (in<strong>de</strong>pen<strong>de</strong>nce<br />
assumption) [Rish 2001].<br />
Tabela 3. Desempenho dos classificadores do nível 1<br />
Random Tree J48 Naive Bayes<br />
Classes DR FPR DR FPR DR FPR<br />
Normal 99,53 0,87 99,58 1,10 99,20 5,65<br />
Probe 91,70 0,07 89,88 0,10 47,28 0,10<br />
DoS 99,66 0,26 99,63 0,19 97,25 0,44<br />
U2R 70,94 0,07 64,31 0,12 41,69 0,08<br />
R2L 81,36 0,11 76,41 0,09 25,82 0,31<br />
Total 99,25 0,61 99,16 0,73 97,00 3,58<br />
Ainda na Tabela 3, po<strong>de</strong>-se observar que todos os algoritmos obtém melhores<br />
resultados nas classes Normal, Probe e DoS. Isso ocorre porque essas classes possuem<br />
mais registros, portanto fornecem mais informações durante a formação do mo<strong>de</strong>lo <strong>de</strong><br />
219
cada algoritmo. Além disso, é difícil <strong>de</strong>finir características que i<strong>de</strong>ntifiquem bem os<br />
ataques do tipo U2R e R2L, portanto os atributos do KDDCUP’99 não favorecem a<br />
classificação <strong>de</strong>stes dois tipos <strong>de</strong> ataque [Lee et al.1999].<br />
A Tabela 4 apresenta o <strong>de</strong>sempenho dos classificadores no nível 2, cada um<br />
usando um algoritmo base diferente, como mostrado na Tabela 1. Observe que todos os<br />
algoritmos <strong>de</strong> comitê apresentam melhores resultados do que os algoritmos do nível 1.<br />
O algoritmo Random Forest apresenta o melhor <strong>de</strong>sempenho para ambas as DR e FPR.<br />
Já o algoritmo Dagging não foi capaz <strong>de</strong> prover uma melhora significativa na taxa <strong>de</strong><br />
<strong>de</strong>tecção do Naive Bayes, porém foi capaz <strong>de</strong> reduzir a taxa <strong>de</strong> falsos positivos<br />
consi<strong>de</strong>ravelmente. Estes resultados sugerem que algoritmos <strong>de</strong> comitê são a melhor<br />
abordagem para prover alta taxa <strong>de</strong> <strong>de</strong>tecção e baixa taxa <strong>de</strong> falsos positivos. Isto<br />
acontece, <strong>de</strong>vido à função complementar <strong>de</strong> cada mo<strong>de</strong>lo utilizado no comitê, pois a<br />
aleatorieda<strong>de</strong> gerada pelos classificadores <strong>de</strong> comitê para cada mo<strong>de</strong>lo os torna<br />
significantemente diferentes uns dos outros [Witten e Frank 2005].<br />
Tabela 4. Desempenho dos três classificadores do nível 2<br />
Random Forest Bagging Dagging<br />
Classes DR FPR DR FPR DR FPR<br />
Normal 99,88 0,66 99,71 1,04 98,43 4,59<br />
Probe 93,06 0,00 91,68 0,04 60,83 0,09<br />
DoS 99,89 0,13 99,68 0,18 97,66 0,48<br />
U2R 79,39 0,02 63,57 0,07 26,10 0,01<br />
R2L 82,04 0,03 76,16 0,06 53,57 0,75<br />
Total 99,59 0,44 99,30 0,69 97,03 2,95<br />
Na Tabela 5, temos o resultado dos algoritmos do nível 3 (aplicados aos<br />
algoritmos do nível 2). É possível observar que o algoritmo Random Committee obteve<br />
o melhor <strong>de</strong>sempenho. Nota-se ainda que, todos os algoritmos do nível 3, melhoraram<br />
os resultados do nível dois, mostrando que é interessante acrescentar mais um nível <strong>de</strong><br />
comitê à classificação.<br />
Tabela 5. Desempenho dos três classificadores do nível 3<br />
Rand. Committee AdaBoost.M1 MultiBoostAB<br />
Classes DR FPR DR FPR DR FPR<br />
Normal 99,90 0,47 99,82 0,53 98,62 3,81<br />
Probe 95,24 0,00 97,50 0,00 69,72 0,06<br />
DoS 99,95 0,07 99,89 0,07 98,01 0,39<br />
U2R 82,86 0,03 80,81 0,05 46,11 0,08<br />
R2L 87,26 0,02 85,46 0,02 55,96 0,62<br />
Total 99,70 0,31 99,64 0,36 97,47 2,43<br />
220
A Tabela 6 apresenta o percentual <strong>de</strong> melhoria (aumento para DR e queda para<br />
FPR) alcançado após a aplicação dos classificadores <strong>de</strong> comitê. No nível 2, o algoritmo<br />
Random Forest apresentou os melhores índices <strong>de</strong> melhoria (aumento <strong>de</strong> 0,34% para<br />
DR e queda <strong>de</strong> 27,87% para FPR em relação ao nível 1). Já no nível 3, o algoritmo<br />
MultiBoostAB foi o que mais aperfeiçoou a taxa <strong>de</strong> <strong>de</strong>tecção (aumento 0,45% em<br />
relação ao nível 2) e o AdaBoostM.1 foi o que obteve melhor ganho em relação à taxa<br />
<strong>de</strong> falsos positivos (queda <strong>de</strong> 47,83% em relação ao nível 2). Observe ainda que o nível<br />
3 apresentou os melhores índices <strong>de</strong> melhoria, <strong>de</strong>monstrando que utilizar um comitê <strong>de</strong><br />
comitês é bastante vantajoso para a tarefa em questão.<br />
Medida<br />
DR – Taxa <strong>de</strong><br />
aumento<br />
FPR – Taxa <strong>de</strong><br />
queda<br />
Tabela 6. Percentual <strong>de</strong> melhoria no <strong>de</strong>sempenho total em cada nível <strong>de</strong><br />
comitês em relação ao anterior<br />
Random<br />
Forest<br />
Nível 2 Nível 3<br />
Bagging<br />
Dagging<br />
Random<br />
Committee<br />
AdaBoost.<br />
M1<br />
MultiBoost<br />
AB<br />
0,34 % 0,14 % 0,03 % 0,11 % 0,34 % 0,45 %<br />
27,80 % 5,48 % 17,60 % 29,55 % 47,83 % 17,63 %<br />
No entanto, a utilização do terceiro nível traz uma <strong>de</strong>svantagem em relação ao<br />
custo computacional, pois seu tempo <strong>de</strong> treinamento é maior do que nos outros dois<br />
níveis. Entretanto, esse custo adicional po<strong>de</strong> ser compensado para sistemas em que a<br />
segurança é crítica. Além disso, a fase <strong>de</strong> treinamento é realizada apenas na parte inicial<br />
da tarefa <strong>de</strong> <strong>de</strong>tecção. Portanto, após o mo<strong>de</strong>lo <strong>de</strong> <strong>de</strong>tecção ter sido criado na fase <strong>de</strong><br />
treinamento, as <strong>de</strong>tecções seguintes são realizadas <strong>de</strong> maneira mais rápida, com tempo<br />
<strong>de</strong> processamento próximo ao dos outros níveis.<br />
Na Tabela 7, é apresentado um comparativo entre os algoritmos <strong>de</strong> comitê<br />
abordados neste trabalho e os métodos <strong>de</strong> combinação apresentados na proposta <strong>de</strong><br />
[Borji 2007]. O <strong>de</strong>sempenho dos métodos abordados por [Borji 2007] são próximos aos<br />
obtidos neste trabalho, com uma diferença elevada apenas no MultiBoostAB que mesmo<br />
melhorando o <strong>de</strong>sempenho do Naive Bayes, não foi capaz <strong>de</strong> mostrar resultados<br />
comparáveis aos <strong>de</strong>mais algoritmos. Entre todos os métodos utilizados, o algoritmo<br />
Random Committee, abordado neste trabalho, apresentou o melhor <strong>de</strong>sempenho,<br />
obtendo resultados melhores que o método Belief Function, principalmente em relação à<br />
taxa <strong>de</strong> falsos positivos.<br />
Medida<br />
Tabela 7. Comparativo com resultados obtidos por [Borji 2007]<br />
Classificação em três níveis<br />
Random<br />
Committee<br />
AdaBoost.<br />
M1<br />
MultiBoost<br />
AB<br />
Majority<br />
Voting<br />
Borji<br />
Bayesian<br />
Average<br />
Belief<br />
Function<br />
DR 99,70 99,64 97,47 99,18 99,33 99,68<br />
FPR 0,31 0,36 2,47 1,20 1,03 0.87<br />
Apesar da taxa <strong>de</strong> <strong>de</strong>tecção do método Belief Function estar bastante próxima do<br />
Random Committee, os resultados obtidos neste trabalho são mais precisos, visto que<br />
221
foram calculados a partir da média <strong>de</strong> <strong>de</strong>z experimentos, <strong>de</strong> modo a diminuir a chance<br />
<strong>de</strong> se utilizar uma base <strong>de</strong> dados enviesada. No trabalho <strong>de</strong> [Borji 2007] não é<br />
especificado se foi realizado mais <strong>de</strong> um experimento com bases aleatórias diferentes ou<br />
se apenas uma foi utilizada. Também não foram apresentadas DR e FPR para cada<br />
classe <strong>de</strong> <strong>de</strong>tecção.<br />
A Tabela 8 mostra o <strong>de</strong>sempenho do melhor resultado obtido pelo mo<strong>de</strong>lo em<br />
três níveis comparado aos melhores resultados dos trabalhos <strong>de</strong> [Abraham et al. 2007] e<br />
[Zainal et al. 2008]. O Random Committee apresenta melhor DR para as classes normal<br />
e DoS. Já a proposta <strong>de</strong> [Zainal et al. 2008] apresenta melhor FPR. Observe que as<br />
propostas dos outros autores não apresentam DR e FPR para a <strong>de</strong>tecção da base <strong>de</strong><br />
dados total, apenas para cada classe. Além disso, as taxas <strong>de</strong> falsos positivos <strong>de</strong><br />
[Abraham et al. 2007] não são mostradas porque ele as calculou utilizando uma outra<br />
fórmula, portanto não po<strong>de</strong>m ser comparadas.<br />
É importante ressaltar que os resultados apresentados por [Abraham et al. 2007]<br />
e [Zainal et al. 2008] se baseiam em apenas um experimento, diferente da nossa<br />
proposta, que foi baseada em <strong>de</strong>z experimentos, sendo, portanto, mais confiável.<br />
Tabela 8. Comparativo <strong>de</strong> <strong>de</strong>tecção com outras propostas<br />
Rand. Committee Abraham et al. Zainal et al.<br />
Classes DR FPR DR FPR DR FPR<br />
Normal 99,90 0,47 99,60 - 99,71 0,29<br />
Probe 95,24 0,00 99,90 - 99,14 0,00<br />
DoS 99,95 0,07 91,80 - 97,43 0,00<br />
U2R 82,86 0,03 43,70 - 88,00 0,00<br />
R2L 87,26 0,02 98,90 - 98,58 0,00<br />
7. Consi<strong>de</strong>rações Finais<br />
A utilização <strong>de</strong> técnicas automáticas <strong>de</strong> <strong>de</strong>tecção por anomalia reduz ou elimina a<br />
necessida<strong>de</strong> <strong>de</strong> intervenção humana, tornado o sistema capaz <strong>de</strong> analisar o tráfego <strong>de</strong><br />
re<strong>de</strong>s em busca <strong>de</strong> ataques, <strong>de</strong> maneira muito mais rápida e precisa. Os trabalhos<br />
recentes <strong>de</strong> <strong>de</strong>tecção apresentam a importância da utilização <strong>de</strong> comitês <strong>de</strong><br />
classificadores para aumentar o <strong>de</strong>sempenho da <strong>de</strong>tecção <strong>de</strong> intrusão.<br />
Este trabalho apresenta um mo<strong>de</strong>lo <strong>de</strong> classificação em três níveis, que realiza<br />
um comitê <strong>de</strong> comitês <strong>de</strong> classificadores. Os experimentos realizados <strong>de</strong>monstram que<br />
esse mo<strong>de</strong>lo em três níveis apresenta melhores resultados do que (1) a aplicação<br />
individual <strong>de</strong> algoritmos e (2) aplicação <strong>de</strong> apenas um nível <strong>de</strong> comitê. Quando<br />
comparado com outras propostas, o mo<strong>de</strong>lo mostrou-se superior em vários aspectos. No<br />
entanto, é importante notar que a aplicação <strong>de</strong> um terceiro nível <strong>de</strong> classificação exige<br />
uma maior quantida<strong>de</strong> <strong>de</strong> processamento, aumentando o tempo para realizar a<br />
classificação. Isso po<strong>de</strong> tornar o mo<strong>de</strong>lo inviável para bases <strong>de</strong> dados muito gran<strong>de</strong>s.<br />
Entretanto, o mo<strong>de</strong>lo é a<strong>de</strong>quado para sistemas que requerem alto nível <strong>de</strong> precisão na<br />
<strong>de</strong>tecção ou que possuem uma quantida<strong>de</strong> média <strong>de</strong> dados a serem analisados.<br />
222
Como trabalhos futuros, é interessante investigar um mo<strong>de</strong>lo capaz <strong>de</strong> melhorar<br />
o <strong>de</strong>sempenho da <strong>de</strong>tecção para as classes <strong>de</strong> ataque R2L e U2L. Também é importante<br />
testar a metodologia proposta em outras bases <strong>de</strong> dados para avaliar a sua robustez ou<br />
até mesmo em uma base <strong>de</strong> dados gerada a partir <strong>de</strong> tráfego real, como sugerido por<br />
[Paxson 2007], visto que os tipos <strong>de</strong> ataque <strong>de</strong> hoje diferem dos existentes na base<br />
KDDKUP’99.<br />
Referências<br />
Abraham, A., Grosan, C. and Vi<strong>de</strong>, C. M. (2007). Evolutionary Design of Intrusion<br />
Detection Programs. In International Journal of Network Security, pages 328-339.<br />
Borji, A. (2007). Combining Heterogeneous Classifiers for Network Intrusion<br />
Detection. In Lecture Notes in Computer Science, Volume 4846, pages 254-260.<br />
Springer.<br />
Breiman, L. (1996). Bagging Predictors. In Machine Learning 24(3), pages 123–140.<br />
Breiman, L. (2001). Random Forests. In Journal of Machine Learning, Vol.45, pages 5-<br />
32. Kluwer Aca<strong>de</strong>mic, Netherland.<br />
Chou, T. , Fan, J., Fan, S. and Makki, K. (2009). Ensemble of machine learning<br />
algorithms for intrusion <strong>de</strong>tection. In Systems, Man and Cybernetic, pages 3976-<br />
3980.<br />
Debar, H., Dacier, M. and Wespi, A. (2000).A Revised Taxonomy for Intrusion<br />
Detection Systems. Annals of Telecommunications, pages 361-378.<br />
Elkan, C. (2000). Results of the KDD’99 Classifier Learning. In SIGKDD Explorations,<br />
ACM SIGKDD.<br />
Freund, Y. and Schapire, R. E. (1996). Experiments with a new boosting algorithm. In<br />
Thirteenth International Conference on Machine Learning, pages 148-156.<br />
Geurts, P., Ernst, D. and Wehenkel, L. (2006). Extremely randomized trees. In Machine<br />
Learning, Vol. 63, pages 3-42.<br />
Hall, M., Frank, E., Holmes, G., Pfahringer, B., Reutemann, P. and Witten, I. H. (2009).<br />
The WEKA Data Mining Software: An Update. In SIGKDD Explorations, Volume<br />
11, Issue 1.<br />
John, G. H. and Langley, P. (1995). Estimating Continuous Distributions in Bayesian<br />
Classifiers. In Eleventh Conference on Uncertainty in Artificial Intelligence, pages<br />
338-345.<br />
Kuncheva, L. I. (2004). Combining Pattern Classifiers: Methods and Algorithms. John<br />
Wiley & Sons, Inc.<br />
Lazarevic, A., Ertoz, L., Kumar, V., Ozgur, A. and Srivastava, J. (2003). A comparative<br />
study of anomaly <strong>de</strong>tection schemes in network intrusion <strong>de</strong>tection. In Proceedings of<br />
the Third SIAM Conference on Data Mining.<br />
Lee, W., Stolfo, S. J. and Mok, K. W. (1999). A Data Mining Framework for Building<br />
Intrusion Detection Mo<strong>de</strong>ls. In IEEE Symposium on Security and Privacy, pages.<br />
120-132.<br />
223
Lira, M. M. S., <strong>de</strong> Aquino, R. R. B., Ferreira, A. A., Carvalho, M. A., Neto, O. N. and<br />
Santos, G. S. M. (2007). Combining Multiple Artificial Neural Networks Using<br />
Random Committee to Deci<strong>de</strong> upon Electrical Disturbance Classification. In<br />
International Joint Conference on Neural Networks, pages 2863 - 2868.<br />
Mafra, P. M., Fraga, J. da S., Moll, V., Santin, A. O. (2008). Polvo-IIDS: Um Sistema<br />
<strong>de</strong> Detecção <strong>de</strong> Intrusão Inteligente Baseado em Anomalias. In VIII Simpósio<br />
Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais (SBSEG'08),<br />
pages 61-72.<br />
Mukkamala, S., Hung, A.H. and Abraham, A. (2005). Intrusion Detection Using an<br />
Ensemble of Intelligent Paradigms. In Journal of Network and Computer<br />
Applications, Vol. 28, pages 167-182."<br />
Osareh, A. and Shadgar, B. (2008).Intrusion Detection in Computer Networks based on<br />
Machine Learning Algorithms. In International Journal of Computer Science and<br />
Network Security, VOL.8 No.11, pages 15-23.<br />
Paxson V. (2007). Consi<strong>de</strong>rations and Pitfalls for Conducting Intrusion Detection<br />
Research. Keynote, Fourth GI International Conference on Detection of Intrusions &<br />
Malware, and Vulnerability Assessment (DIMVA).<br />
Quinlan, R. (1993). C4.5: Programs for Machine Learning. Morgan Kaufmann<br />
Publishers, San Mateo, CA.<br />
Rish, I. (2001). An empirical study of the naive Bayes classifier. In workshop on<br />
Empirical Methods in AI.<br />
Stallings, W. (2005). Cryptography and Network Security Principles and Practices.<br />
Prentice Hall, 4th edition.<br />
Tavallaee, M., Bagheri, E., Lu, W. and Ghorbani, A. A. (2009). A Detailed Analysis of<br />
the KDD CUP 99 Data Set. In Proceedings of the Second IEEE Symposium on<br />
Computational Intelligence in Security and Defense Applications,pages 53-58.<br />
Ting, K. M. and Witten, I. H. (1997). Stacking Bagged and Dagged Mo<strong>de</strong>ls. In<br />
Fourteenth international Conference on Machine Learning, pages 367-375.<br />
Webb, G. I. (2000). MultiBoosting: A Technique for Combining Boosting and<br />
Wagging. Machine Learning. Vol.40(No.2).<br />
Witten, I. H. and Frank, E. (2005). Data Mining: Pratical Machine Learning Tools and<br />
Techniques. Morgan Kaufmann Publishers, 2th Edition.<br />
Zai-an, R., Bin, W., Shi-ming, Z., Zhuang, M. and Rong-ming, S. (2010). A WSRFenabled<br />
Distributed Data Mining Approach to Clustering WEKA4WS-Based. In<br />
Proceedings of IEEE Second Symposium on Web Society (SWS), pages 219-226.<br />
Zainal, A., Maarof, M.A., Shamsuddin, S.M. and Abraham, A. (2008). Ensemble of<br />
One-class Classifiers for Network Intrusion Detection System. In Proceedings of<br />
Fourth International Conference on Information Assurance and Security, pages 180-<br />
185.<br />
224
Static Detection of Address Leaks<br />
Gabriel Quadros Silva and Fernando Magno Quintão Pereira<br />
1<br />
Departamento <strong>de</strong> Ciência da Computação – UFMG<br />
Av. Antônio Carlos, 6627 – 31.270-010 – Belo Horizonte – MG – Brazil<br />
{gabrielquadros,fpereira}@dcc.ufmg.br<br />
Abstract. Taint analysis is a form of program analysis that <strong>de</strong>termines if values<br />
produced by unsafe sources might flow into sensitive functions. In this paper<br />
we use taint analysis to establish if an adversary might discover the address<br />
of any program variable at runtime. The knowledge of an internal program<br />
address seems, in principle, a harmless information; however, it gives a malicious<br />
user the means to circumvent a protection mechanism known as address<br />
space layout randomization, typically used in mo<strong>de</strong>rn operating systems to hin<strong>de</strong>r<br />
buffer overflow attacks, for instance. We <strong>de</strong>part from previous taint analyses<br />
because we also track indirect information leaks, in which confi<strong>de</strong>ntial data is<br />
first stored in memory, from where it flows into some sensitive operation. We<br />
have implemented our analysis into the LLVM compiler and have used it to report<br />
204 warnings in a test suite that contains over 1.3 million lines of C co<strong>de</strong>,<br />
and inclu<strong>de</strong>s traditional benchmarks such as SPEC CPU 2006. Our current implementation<br />
reduces by more than 14 times the number of sensitive operations<br />
that a <strong>de</strong>veloper would have to inspect in or<strong>de</strong>r to find address leaks manually.<br />
Furthermore, our analysis is remarkably efficient: it has been able to process<br />
more than 8.2 million assembly instructions in 19.7 seconds!<br />
1. Introduction<br />
There seems to exist an “arms race” between program <strong>de</strong>velopers and malicious users, or<br />
crackers, as they are popularly called. Every day we hear about new strategies that are<br />
invented to attack sensitive software, and every day we hear about new security mechanisms<br />
that are engineered to protect these systems. Buffer overflows are a very well known<br />
technique that untrusted co<strong>de</strong> uses to compromise other programs. Its basic principle consists<br />
in writing on an array a quantity of data large enough to go past the array’s upper<br />
bound; hence, overwriting other program data. The Internet Worm of 1988, probably the<br />
most famous case of viral spreading of malicious software in the Internet, exploited a<br />
buffer overflow in the fingerd daemon [Rochlis and Eichin 1989]. To prevent buffer<br />
overflows exploits, operating system engineers have invented a technique called address<br />
space layout randomization [Bhatkar et al. 2003, Shacham et al. 2004], that consists in<br />
loading some key areas of a process at random locations in its address space. In this<br />
way, the attacker cannot calculate precisely the target addresses that must be used to take<br />
control of the vulnerable program.<br />
However, crackers are able to circumvent the address randomization mechanism,<br />
as long as they can have access to an internal program address. Armed with this knowledge,<br />
malicious users can estimate the exact base address of the functions available to the<br />
executing program, an information that gives them a vast suite of possibilities to compromise<br />
this program [Levy 1996]. A cracker can discover an internal program address in<br />
225
many different ways. For instance, many applications contain <strong>de</strong>bugging co<strong>de</strong> that dumps<br />
runtime information, including variable addresses. By using the correct flags, the attacker<br />
may easily activate this dumping. Fancier strategies, of course, are possible. In some<br />
object oriented systems the hash co<strong>de</strong> of an object is a function of the object’s address. If<br />
the hash-function admits an inverse function, and this inverse is known, then the attacker<br />
may obtain this address by simply printing the object’s hash co<strong>de</strong>.<br />
The objective of this paper is to <strong>de</strong>scribe a static co<strong>de</strong> analysis that <strong>de</strong>tects the<br />
possibility of an address information leaking from a program. Our technique is a type of<br />
taint analysis [Rimsa et al. 2011], that is, given a set of source operations, and a set of<br />
sink operations, it finds a flow of information from any source to any sink. We differ from<br />
previous works in two ways: first, we are proposing a novel use of taint analysis; second,<br />
we <strong>de</strong>al with indirect leaks. Concerning the first difference, the leaking of address information<br />
is a problem well known among software engineers, as a quick glance at blogs<br />
related to computer security would reveal 1 . Nevertheless, in spite of the importance of<br />
this problem, the research community has not yet pointed its batteries at it, as we can<br />
infer from a lack of publications in the field. In addition to exploring a new use of taint<br />
analysis, we extend the information flow technology with a method to track indirect leaks.<br />
An indirect leak consists in storing sensitive information in memory, and then reading this<br />
information back into local program variables whose contents eventually reach a sink operation.<br />
As recently discussed in the USENET 2 , <strong>de</strong>velopers and theoreticians alike avoid<br />
having to track information through the memory heap because it tends to be very costly<br />
in terms of processing time. However, by relying on a context insensitive interprocedural<br />
analysis we claim to provi<strong>de</strong> an acceptable tra<strong>de</strong>off between efficiency and precision.<br />
We have implemented our analysis on top of the LLVM compiler<br />
[Lattner and Adve 2004], and have used it on a collection of C programs comprising over<br />
1.3 million lines of co<strong>de</strong>. This test suite inclu<strong>de</strong>s well-known benchmarks such as SPEC<br />
CPU 2006, Shootout and MediaBench. Our implementation has reported 204 potential<br />
address leaks. We have manually inspected 16 reports taken from the 16 largest programs<br />
in our benchmark suite, and have been able to recover 2 actual program addresses.<br />
Although this number seems low, we remark that our analysis reduced by 14 times the<br />
number of sensitive statements that a <strong>de</strong>veloper would have to verify in or<strong>de</strong>r to find address<br />
leaks. Our implementation is very efficient: it takes about 19.7 seconds to process<br />
our entire test suite – a collection of programs having over 8.26 million assembly instructions.<br />
As an example, in or<strong>de</strong>r to analyze gcc, a well known member of SPEC CPU<br />
2006, with 1,155,083 assembly instructions, our implementation takes 2.62 seconds.<br />
The rest of this paper is organized in five other sections. In Section 2 we explain<br />
in more <strong>de</strong>tails why address leaks enable malicious users to successfully attack programs.<br />
In Section 3 we introduce our solution and discuss its limitations. We show experimental<br />
results in Section 4. Section 5 discusses several works that are related to ours. Finally,<br />
Section 6 conclu<strong>de</strong>s the paper.<br />
1 http://mariano-graziano.llab.it/docs/stsi2010.pdf<br />
http://www.semantiscope.com/research/BHDC2010/BHDC-2010-Paper.pdf<br />
http://vreug<strong>de</strong>nhilresearch.nl/Pwn2Own-2010-Windows7-InternetExplorer8.pdf<br />
2 http://groups.google.com/group/comp.compilers/browse thread/thread/<br />
1eb71c1177e2c741<br />
226
2. Background<br />
A buffer, also called an array or vector, is a contiguous sequence of elements stored in<br />
memory. Some programming languages, such as Java, Python and JavaScript are strongly<br />
typed, which means that they only allow combinations of operations and operands that<br />
preserve the type <strong>de</strong>claration of these operands. As an example, all these languages provi<strong>de</strong><br />
arrays as built-in data structures, and they verify if in<strong>de</strong>xes are within the <strong>de</strong>clared<br />
bounds of these arrays. There are other languages, such as C or C++, which are weakly<br />
typed. They allow the use of variables in ways not predicted by the original type <strong>de</strong>claration<br />
of these variables. C or C++ do not check array bounds, for instance. Thus, one can<br />
<strong>de</strong>clare an array with n cells in any of these languages, and then read the cell at position<br />
n+1. This <strong>de</strong>cision, motivated by efficiency [Stroustrup 2007], is the reason behind an uncountable<br />
number of worms and viruses that spread on the Internet [Bhatkar et al. 2003].<br />
Programming languages normally use three types of memory allocation regions:<br />
static, heap and stack. Global variables, runtime constants, and any other data known at<br />
compile time usually stays in the static allocation area. Data structures created at runtime,<br />
that outlive the lifespan of the functions where they were created are placed on the<br />
heap. The activation records of functions, which contain, for instance, parameters, local<br />
variables and return address, are allocated on the stack. In particular, once a function is<br />
called, its return address is written in a specific position of its activation record. After the<br />
function returns, the program resumes its execution from this return address.<br />
Program Stack<br />
Co<strong>de</strong> Segment<br />
void function(char* str) {<br />
char buffer[16];<br />
strcpy(buffer,str);<br />
}<br />
void main() {<br />
...<br />
function(evil_str);<br />
...<br />
}<br />
evil_str: Hand crafted malicious input<br />
Local<br />
variables:<br />
Frame<br />
pointer<br />
Return<br />
address<br />
Function<br />
Parameters<br />
str buffer . . .<br />
. . .<br />
Filling garbage<br />
Evil args<br />
. . .<br />
...<br />
...<br />
. . . . . .<br />
<br />
push evil_str<br />
call <br />
<br />
Figure 1. An schematic example of a stack overflow. The return address of<br />
function is diverted by a maliciously crafted input to another procedure.<br />
A buffer overflow consists in writing in a buffer a quantity of data large enough to<br />
go past the buffer’s upper bound; hence, overwriting other program or user data. It can<br />
happen in the stack or in the heap. In the stack overflow scenario, by carefully crafting this<br />
input string, one can overwrite the return address in a function’s activation record; thus,<br />
diverting execution to another co<strong>de</strong> area. The first buffer overflow attacks inclu<strong>de</strong>d the<br />
co<strong>de</strong> that should be executed in the input array [Levy 1996]. However, mo<strong>de</strong>rn operating<br />
systems mark writable memory addresses as non-executable – a protection mechanism<br />
227
known as Read⊕Write [Shacham et al. 2004, p.299]. Therefore, attackers tend to divert<br />
execution to operating system functions such as chmod or sh, if possible. Usually the<br />
malicious string contains also the arguments that the cracker wants to pass to the sensitive<br />
function. Figure 1 illustrates an example of buffer overflow.<br />
A buffer overflow vulnerability gives crackers control over the compromised program<br />
even when the operating system does not allow function calls outsi<strong>de</strong> the memory<br />
segments allocated to that program. Attackers can call functions from libc, for instance.<br />
This library, which is share-loa<strong>de</strong>d in every UNIX system, allows users to fork processes<br />
and to send packets over a network, among other things. This type of attack is called<br />
return to libc [Shacham et al. 2004]. Return to libc attacks have been further generalized<br />
to a type of attack called return-oriented-programming (ROP) [Shacham 2007].<br />
If a binary program is large enough, then it is likely to contain many bit sequences that<br />
enco<strong>de</strong> valid instructions. Hovav Shacham [Shacham 2007] has shown how to <strong>de</strong>rive a<br />
Turing complete language from these sequences in a CISC machine, and Buchanan et<br />
al. [Buchanan et al. 2008] have generalized this method to RISC machines.<br />
There exist ways to prevent these types of “return-to-known-co<strong>de</strong>” attacks. The<br />
best known <strong>de</strong>fense mechanism is address obfuscation [Bhatkar et al. 2003]. A compiler<br />
can randomize the location of functions insi<strong>de</strong> the binary program, or the operating<br />
system can randomize the virtual address of shared libraries. Shacham et<br />
al. [Shacham et al. 2004] have shown that these methods are susceptible to brute force<br />
attacks; nevertheless, address obfuscation slows down the propagation rate of worms that<br />
rely on buffer overflow vulnerabilities substantially. Address obfuscation is not, however,<br />
the ultimate <strong>de</strong>fense mechanism. In the words of the original <strong>de</strong>signers of the technique<br />
[Bhatkar et al. 2003, p.115], if “the program has a bug which allows an attacker to<br />
read the memory contents”, then “the attacker can craft an attack that succeeds <strong>de</strong>terministically”.<br />
It is this very type of bug that we try to <strong>de</strong>tect in this paper.<br />
3. The Proposed Solution<br />
We <strong>de</strong>tect address leaks via a three steps process. Firstly, we convert the program to a<br />
suitable normal form, in which every language construct that is interesting to us is converted<br />
to a few constraints. Secondly, we build a <strong>de</strong>pen<strong>de</strong>nce graph out of the constraints<br />
previously <strong>de</strong>fined. Finally, we perform a <strong>de</strong>pth-first search on this <strong>de</strong>pen<strong>de</strong>nce graph to<br />
report leaks. We explain in more <strong>de</strong>tails each of these steps in this section.<br />
3.1. Converting the Source Program to a Normal Form<br />
We use a constraint system to <strong>de</strong>tect address leaks. In or<strong>de</strong>r to represent the five different<br />
types of constraints that we take into consi<strong>de</strong>ration, we <strong>de</strong>fine a simple constraint language,<br />
whose syntax is given in Figure 2. We produce these constraints out of actual C or<br />
C++ programs, as the table in Figure 3 illustrates. We use getad to mo<strong>de</strong>l language constructs<br />
that read the address of a variable, namely the ampersand (&) operator and memory<br />
allocation functions such as malloc, calloc or realloc. Program expressions that<br />
do not inclu<strong>de</strong> any memory address are mo<strong>de</strong>led via the constraint simop, a short name<br />
for simple operation. Loads to and stores from memory are mo<strong>de</strong>led by ldmem and<br />
stmem. Finally, we use print to <strong>de</strong>note any instruction that gives information away<br />
to an external user. This constraint mo<strong>de</strong>ls not only ordinary printing operations, but<br />
228
(Variables) ::= {v 1 , v 2 , . . .}<br />
(Constraints) ::=<br />
– (Assign variable address) ∣ getad(v 1 , v 2 )<br />
– (Simple variable assignment) ∣ simop(v, {v 1 , . . . , v n })<br />
– (Store into memory) ∣ stmem(v 0 , v 1 )<br />
– (Load from memory) ∣ ldmem(v 1 , v 0 )<br />
– (Print the variable’s value) ∣ print(v)<br />
Figure 2. The syntax of our constraint system.<br />
v1 = &v2 getad(v 1 , v 2 )<br />
v1 = (int*)malloc(sizeof(int)) getad(v 1 , v 2 ) where<br />
v 2 is a fresh memory location<br />
v1 = *v0 ldmem(v 1 , v 0 )<br />
*v0 = v1 stmem(v 0 , v 1 )<br />
*v1 = *v0 ldmem(v 2 , v 0 ), where v 2 is fresh<br />
stmem(v 1 , v 2 )<br />
v = v1 + v2 + v3 simop(v, {v 1 , v 2 , v 3 })<br />
*v = v1 + &v2 getad(v 3 , v 2 ), where v 3 is fresh<br />
simop(v 4 , {v 1 , v 3 }), where v 4 is fresh<br />
stmem(v, v 4 )<br />
f(v1, &v3), where f is <strong>de</strong>clared simop(v 2 , {v 1 })<br />
as f(int v2, int* v4); getad(v 4 , v 3 )<br />
Figure 3. Examples of mappings between actual program syntax and constraints.<br />
also native function interfaces, which would allow a malicious JavaScript file to obtain an<br />
internal address from the interpreter, for instance.<br />
We have <strong>de</strong>signed our analysis to work on programs in Static Single Assignment<br />
form. This is a classic compiler intermediate representation [Cytron et al. 1991] in which<br />
each variable name is <strong>de</strong>fined only once. Virtually every mo<strong>de</strong>rn compiler today uses<br />
the SSA form to represent programs internally, including Java HotSpot [Team 2006],<br />
gcc [Gough 2005] and LLVM [Lattner and Adve 2004], the compiler on top of which<br />
we have implemented our algorithms. The single static assignment property, i.e., the<br />
fact that each variable name is unique across the entire program, is essential to allow us<br />
to bind to each variable the state of being trusted or untrusted. Because we provi<strong>de</strong> an<br />
interprocedural analysis, i.e., we analyze whole programs, we assume global SSA form.<br />
In other words, each variable name is unique in the entire program, not only insi<strong>de</strong> the<br />
scope where that variable exists. In practice we obtain global SSA form by prefixing each<br />
variable name with the name of the function where that variable is <strong>de</strong>fined.<br />
229
[EMPTY]<br />
build edges(∅, P t ) = ∅<br />
[EDGES]<br />
build edges(C, P t ) = E proc con(c, P t ) = E ′<br />
build edges(C ∪ {c}, P t ) = E ∪ E ι<br />
[GETAD] proc con(getad(v 1 , v 2 ), P t ) = {val(v 1 ) → addr(v 2 ))}<br />
[PRINT]<br />
proc con(print(v), P t ) = {sink → val(v)}<br />
[SIMOP] proc con(simop(v, {v 1 , . . . , v n }), P t ) = {val(v) → val(v i ) ∣ 1 ≤ i ≤ n}<br />
[STMEM] proc con(stmem(v 0 , v 1 ), P t ) = {val(v) → val(v 1 ) ∣ v 0 ↦ v ∈ P t }<br />
[LDMEM] proc con(ldmem(v 1 , v 0 ), P t ) = {val(v 1 ) → val(v) ∣ v 0 ↦ v ∈ P t }<br />
Figure 4. Recursive <strong>de</strong>finition of the edges in the memory <strong>de</strong>pen<strong>de</strong>nce graph.<br />
3.2. Building the Memory Depen<strong>de</strong>nce Graph<br />
Once we extract constraints from the target C program, we proceed to build a memory<br />
<strong>de</strong>pen<strong>de</strong>nce graph. This – directed – graph is a data structure that represents the patterns<br />
of <strong>de</strong>pen<strong>de</strong>nces between variables. If P is a target program, and G = (V, E) is P ’s<br />
<strong>de</strong>pen<strong>de</strong>nce graph, then for each variable v ∈ P we <strong>de</strong>fine two vertices: a value vertex,<br />
which we <strong>de</strong>note by val(v) ∈ V and an address vertex, which we represent by addr(v) ∈<br />
V . We say that location v 1 <strong>de</strong>pends on location v 0 if v 0 is necessary to build the value of<br />
v 1 . In actual programs such <strong>de</strong>pen<strong>de</strong>nces happen any time v 0 <strong>de</strong>notes a value used in an<br />
instruction that <strong>de</strong>fines v 1 , or, recursively, v 0 <strong>de</strong>notes a value used in an instruction that<br />
<strong>de</strong>fines a variable v 2 such that v 1 <strong>de</strong>pends upon v 2 .<br />
More formally, given a set C of constraints that follow the syntax in Figure 2,<br />
we <strong>de</strong>fine the memory <strong>de</strong>pen<strong>de</strong>nce graph via the function build edges, shown in Figure<br />
4. The only constraint that produces edges pointing to address no<strong>de</strong>s is getad, as<br />
we show in Rule GETAD in Figure 4. If v 1 is <strong>de</strong>fined by an instruction that reads the<br />
address of variable v 2 , then we insert an edge val(v 1 ) → addr(v 2 ) into E. The memory<br />
<strong>de</strong>pen<strong>de</strong>nce graph has a special no<strong>de</strong>, which we call sink. Edges leaving sink<br />
towards value no<strong>de</strong>s are created by Rule PRINT. From a quick glance at Figure 4 it is<br />
easy to see that sink will have in-<strong>de</strong>gree zero. Rule SIMOP <strong>de</strong>termines that we generate<br />
an edge from the value no<strong>de</strong> that represents the variable <strong>de</strong>fined by a simple operation<br />
towards the value no<strong>de</strong> representing every variable that is used in this operation. In other<br />
words, if v 1 is <strong>de</strong>fined by an instruction that reads the value of v 2 , then we insert an edge<br />
val(v 1 ) → val(v 2 ) into our memory <strong>de</strong>pen<strong>de</strong>nce graph.<br />
230
[LEAK]<br />
build edges(C, P t ) = E<br />
find leak(C, P t ) = B<br />
dfs(sink, E) = B<br />
[SINK]<br />
sink → val(v) ∈ E<br />
dfs(sink, E) = B<br />
dfs(v, E) = B<br />
[VAL]<br />
val(v) → val(v ′ ) ∈ E<br />
dfs(v ′ , E) = B<br />
dfs(v, E) = B ∪ {val(v 1 ) → addr(v 2 )}<br />
[ADDR]<br />
val(v 1 ) → addr(v 2 ) ∈ E<br />
dfs(v, E) = {val(v 1 ) → addr(v 2 )}<br />
Figure 5. Recursive <strong>de</strong>finition of an address leak.<br />
The processing of load and store constraints is more complicated, because it<br />
<strong>de</strong>mands points-to information. We say that a variable v 1 points to a variable v 2<br />
if the value of v 1 holds the address of v 2 . The problem of conservatively estimating<br />
the points-to relations in a C-like program has been exhaustively studied in the<br />
compiler literature [An<strong>de</strong>rsen 1994, Har<strong>de</strong>kopf and Lin 2007, Pereira and Berlin 2009,<br />
Steensgaard 1996]. Therefore, we assume that we start the process of building the memory<br />
<strong>de</strong>pen<strong>de</strong>nce graph with a map P t ∶ V ↦ PowerSet(V ) that tells, for each variable<br />
v ∈ V , what is the subset of variables V ′ ⊆ V such that v points to every element v ′ ∈ V ′ .<br />
According to Rule STMEM, whenever we store a variable v 1 into the address pointed by<br />
variable v 0 , i.e., in the C jargon: *v0 = v1, then, for each variable v pointed by v 0 we<br />
create an edge from the value no<strong>de</strong> of v towards the value no<strong>de</strong> of v 0 . The ldmem constraint<br />
works in the opposite direction. Whenever we load the value stored in the address<br />
pointed by v 0 into a variable v 1 , i.e., v1 = *v0, then, for each variable v that might be<br />
pointed-to by v 0 we add an edge from the value no<strong>de</strong> of v 1 to the value no<strong>de</strong> of v.<br />
3.3. Traversing the Memory Depen<strong>de</strong>nce Graph to Find Address Leaks<br />
Figure 5 <strong>de</strong>fines a system of inference rules to characterize programs with address leaks.<br />
This <strong>de</strong>finition also gives a <strong>de</strong>clarative algorithm to find a path B in the memory <strong>de</strong>pen<strong>de</strong>nce<br />
graph <strong>de</strong>scribing the address leak. Rule LEAK tells us that a constraint system C,<br />
plus a set of points-to facts P t <strong>de</strong>scribes at least one address leak if the memory <strong>de</strong>pen<strong>de</strong>nce<br />
graph built from C and P t has a set of edges E, and E contains a path B, from<br />
sink to an address no<strong>de</strong>. To <strong>de</strong>note this last statement, we use the dfs predicate, which<br />
<strong>de</strong>scribes a <strong>de</strong>pth-first search along E, as one can readily infer from the Rules SINK, VAL<br />
and ADDR. These rules are self explanatory, and we will not <strong>de</strong>scribe them further.<br />
3.4. An Example of our Analysis in Action<br />
We illustrate the concepts introduced in this section via the C program shown in Figure 6.<br />
This program, although very artificial, contains the main elements that will allows us to<br />
231
1 int g(int p) {<br />
2 int** v0 = (int**)malloc(8); // getad(v0, m1)<br />
3 int* t0 = (int*)malloc(4); // getad(t0, m2)<br />
4 *t0 = 1;<br />
5 *v0 = t0; // stmem(v0, t0)<br />
6 while (p > 1) {<br />
7 int* v1 = *v0; // ldmem(v1, v0)<br />
8 int t1 = *v1; // ldmem(t1, v1)<br />
9 printf("%d\n", t1); // print(t1)<br />
10 int* v2 = (int*)malloc(4); // getad(v2, m3)<br />
11 int* t2 = *v0; // ldmem(t2, v0)<br />
12 *t2 = (int)v2; // stmem(t2, v2)<br />
13 p--;<br />
14 }<br />
15 }<br />
Figure 6. A C program that contains an address leak: variable t1 might contain<br />
the address of the memory region allocated at line 10.<br />
illustrate our analysis. The constraints that we <strong>de</strong>rive from the program, as explained in<br />
Section 3.1, are given as comments on the right si<strong>de</strong> of Figure 6. Let’s assume, for the<br />
sake of this example, that variable v0 points to a memory region m1, created in line 2<br />
of Figure 6. We also assume that variables v1 and t2 point to a memory region m2,<br />
created in line 10 of our example. These points-to facts are computed beforehand, by any<br />
standard alias analysis implementation, as we have explained in Section 3.2. Figure 7(a)<br />
shows, again, the constraint set C that we must process for the example in Figure 6, and<br />
Figure 7(b) re-states the points-to facts that are known before we start our analysis.<br />
Once we have converted the target program to a normal form, we must build its<br />
memory <strong>de</strong>pen<strong>de</strong>nce graph, according to the rules in Figure 4 from Section 3.2. Figure<br />
7(c) shows the graph that we build for this example. We chose to use a particular<br />
notation to represent the no<strong>de</strong>s. Each variable v gives origin to two vertices, e.g. val(v)<br />
and addr(v); hence, each vertex in our graph is represented as the juxtaposition of two<br />
boxes. The first, <strong>de</strong>noting the value no<strong>de</strong>, contains the name of the variable it represents,<br />
whereas the second box – containing an @ – represents this variable’s address. Our example<br />
graph contains nine such no<strong>de</strong>s, one for each variable <strong>de</strong>fined in the target program,<br />
plus a special no<strong>de</strong>, <strong>de</strong>picted as a black diamond (◆), which represents the sink.<br />
Once we have built the memory <strong>de</strong>pen<strong>de</strong>nce graph, the next step is to traverse it,<br />
reporting unsafe paths. We perform this last step using the rules in Figure 5, as explained<br />
in Section 3.3. The program in Figure 6 contains an address leak, which is easy to find<br />
in the graph from Figure 7. The problematic path is sink → val(t 1 ) → val(m 2 ) →<br />
val(v 2 ) → addr(m3). Going back to Figure 6, this path corresponds to printing the<br />
value of t1. In or<strong>de</strong>r to see why this output is an address leak, notice that t1, *v1, **v0<br />
and *t2 might represent the same value, which, as we see in line 12 of our example, is<br />
the address of the memory location pointed by v2.<br />
232
(a)<br />
getad(v 0<br />
, m 1<br />
)<br />
(b) v 0<br />
→ {m 1<br />
} (c)<br />
getad(t 0<br />
, m 2<br />
)<br />
stmem(v 0<br />
, t 0<br />
)<br />
v 1<br />
→ {m 2<br />
}<br />
v 1<br />
@<br />
m 1<br />
@<br />
v 0<br />
@<br />
ldmem(v 1<br />
, v 0<br />
)<br />
t 2<br />
→ {m 2<br />
}<br />
ldmem(t 1<br />
, v 1<br />
)<br />
t 2<br />
@<br />
t 0<br />
@<br />
print(t 1<br />
)<br />
getad(v 2<br />
, m 3<br />
)<br />
m 3<br />
@<br />
m 2<br />
@<br />
ldmem(t 2<br />
, v 0<br />
)<br />
stmem(t 2<br />
, v 2<br />
)<br />
v 2<br />
@<br />
t 1<br />
@<br />
Figure 7. (a) The constraint system <strong>de</strong>rived from the Program in Figure 6. (b)<br />
Points-to facts, computed beforehand via An<strong>de</strong>rsen’s analysis [An<strong>de</strong>rsen 1994].<br />
(c) The memory <strong>de</strong>pen<strong>de</strong>nce graph built from the constraints and points-to facts.<br />
3.5. Limitations<br />
The current implementation of our analysis has two main limitations. First it is context<br />
insensitive, which means that we cannot distinguish two different calls from the same<br />
function. Second, it is field and array insensitive; hence, objects, records and arrays are<br />
treated as a single memory unit. These limitations lead us to report warnings that are false<br />
positives, or that, in other words, represent innocuous program patterns.<br />
Our analysis is interprocedural, which means that we can track the flow of information<br />
across function calls. However, our analysis is context insensitive, that is, we<br />
cannot distinguish different invocations of the same procedure. As an example, the program<br />
in Figure 8 does not contain an address leak. Nevertheless, the function calls at lines<br />
9 and 13 leads us to link the contents of v0 to v3, even though these variables are never<br />
related in the actual program semantics. Because v0 contains a program address, and v3<br />
is printed, we issue a warning. As a future work, we plan to improve our framework with<br />
light-weighted context sensitive methods, such as those based on probabilistic calling<br />
contexts [Bond and McKinley 2007] or shallow heap cloning [Lattner et al. 2007].<br />
Our second limitation is a lack of field sensitiveness. We treat programming language<br />
constructs, such as objects, records and arrays as single locations. Figure 9 contains<br />
an example of a bug free program that causes us to issue a warning. The assignment in<br />
line 7 marks the whole variable s1 as tainted. Therefore, even the innocuous printing<br />
statement at line 9 is flagged as a possible leak. As a future work, we intend to extend our<br />
analysis with Pearce et al.’s [Pearce et al. 2004] field sensitive constraint system.<br />
4. Experimental Results<br />
We have implemented our algorithm on top of the LLVM compiler<br />
[Lattner and Adve 2004], and have tested it in an Intel Core 2 Duo Processor with<br />
a 2.20GHz clock, and 2 GB of main memory on a 667 MHz DDR2 bus. The operating<br />
system is Ubuntu 11.04. We have tested our algorithm on a collection of 426 programs<br />
written in C that we got from the LLVM test suite. In total, we have analyzed 8,427,034<br />
233
1 int addSizeInt(int n0) {<br />
2 int n1 = n0 + sizeof(int); // simop(n1, n0)<br />
3 return n1;<br />
4 }<br />
5 int main() {<br />
6 int* v0 = (int*)<br />
malloc(2 * sizeof(int)); // getad(v0, m1)<br />
7 int* v1;<br />
8 int v2 = 0, v3 = 1, v4 = 1;<br />
9 v1 = addSizeInt(v0); // simop(n0, v0), simop(v1, n1)<br />
10 *v1 = v4; // stmem(v1, v4)<br />
11 int v5 = *v1; // ldmem(v5, v1)<br />
12 printf("%d\n", v5); // print(v5)<br />
13 v3 = addSizeInt(v2); // simop(n0, v2), simop(v3, n1)<br />
14 printf("%d\n", v3); // print(v3)<br />
15 }<br />
Figure 8. The lack of context sensitiveness in our analysis will cause us to report<br />
a false positive for this program.<br />
1 struct S {<br />
2 int harmless;<br />
3 int dang;<br />
4 };<br />
5 int main() {<br />
6 struct S s1;<br />
7 s1.harmless = (int)&s1; // getad(s1, s1)<br />
8 s1.dangerous = 0;<br />
9 printf("%d\n", s1.dang); // print(s1)<br />
10 }<br />
Figure 9. The lack of field sensitiveness in our analysis cause us to report a false<br />
positive for this program.<br />
assembly instructions. We will present results for SPEC CPU 2006 only, which is our<br />
largest benchmark suite. Table 1 gives <strong>de</strong>tails about each of the 17 programs in the SPEC<br />
collection. Without loss of generality, for these experiments we qualify as sensitive sinks<br />
the standard printf operation from the stdio.h hea<strong>de</strong>r. In other words, we are<br />
seeking for <strong>de</strong>pen<strong>de</strong>nce chains that cause an internal program address to be printed by<br />
a printf function. There exist other functions that may lead to address leaking. Our<br />
tool can be configured to check these functions by marking (i) return statements and (ii)<br />
assignments to parameters passed as references, as sink operations.<br />
We will compare three different configurations of our address leak <strong>de</strong>tector, which<br />
we call Direct, MDG and Blob. The first approach does not track information through<br />
memory. That is, it only reports the propagation of information through local program<br />
variables. The second approach – MDG – uses the Memory Depen<strong>de</strong>nce Graph that we<br />
have <strong>de</strong>scribed in Section 3.2 to track the flow of information through memory. Finally,<br />
the third method – Blob – assumes that the whole program memory is a single, indivisible<br />
unit. In this case, any operation that stores the value of an address into memory<br />
234
will contaminate the whole heap and stack. If any information from the tainted memory<br />
posteriorly flows into a sink, we will issue a warning.<br />
Precision: Table 1 shows the number of warnings that our tool has reported per program<br />
in SPEC CPU 2006. The table reveals a wi<strong>de</strong> contrast between the Direct and Blob<br />
approaches. In the former case, every warning turns out to be a true positive that allows<br />
us to recover an internal program address. However, the direct method misses many leaks<br />
that the other two approaches are able to point out. The blob technique, on the other hand,<br />
contains too many false positives, that is, a substantial number of warnings that it reports<br />
are actually innocuous. MDG is a compromise: it finds every true positive pointed by<br />
blob, and omits many false positives. A manual inspection of the first warning reported<br />
by MDG for each benchmark gave us a 1/8 false positive rate. The false positives are<br />
caused by the limitations <strong>de</strong>scribed in Section 3.5, which we are working to overcome.<br />
Nevertheless, MDG reduces by 14x, on average, the number of printf statements that<br />
a <strong>de</strong>veloper would have to verify in or<strong>de</strong>r to find potential address leaks. The chart in<br />
Figure 10 puts this number in perspective, showing, for each benchmark and tracking<br />
method, the percentage of printing statements that are flagged as potential address leaks.<br />
Benchmark Number of Number of Warnings Time (msec)<br />
Program Instructions printf’s Blob MDG Direct Blob MDG Direct<br />
mcf 4005 12 8 0 0 36 12 8<br />
lbm 5522 8 2 0 0 16 12 1<br />
libquantum 11422 30 28 5 0 168 56 16<br />
astar 14228 14 8 8 0 64 64 20<br />
bzip2 24881 21 21 5 0 220 88 28<br />
sjeng 34474 88 40 0 0 704 52 44<br />
milc 35357 191 86 16 0 1200 252 48<br />
hmmer 98150 52 17 0 0 508 184 120<br />
soplex 119616 0 0 0 0 172 260 176<br />
namd 121065 18 10 0 0 344 196 128<br />
h264ref 176652 53 19 1 0 932 320 220<br />
omnetpp 199934 20 7 5 1 624 604 308<br />
gobmk 222071 64 19 2 0 2792 696 316<br />
perlbench 388436 0 0 0 0 576 760 500<br />
<strong>de</strong>alII 934844 3 0 0 0 1680 2128 1476<br />
gcc 1155083 16 3 0 0 2628 2252 1632<br />
xalancbm 1428459 8 7 1 1 5516 3568 106<br />
Table 1. Summary of main experimental results for SPEC CPU 2006.<br />
Running time: The three versions of the address leak analysis are very fast. The direct<br />
approach took 5,147 msecs to process SPEC CPU 2006. Blog took 18,180 msecs, and<br />
MDG 11,504 msecs. Furthermore, MDG took 19.7 seconds to analyze the entire LLVM<br />
test suite plus SPEC CPU 2006, a benchmark collection that gives us over 8.26 million<br />
assembly instructions! The three analyses show a linear complexity behavior in practice.<br />
The charts in Figure 11 shows MDG’s processing time for programs in our benchmark<br />
collection having more than 20,000 assembly instructions. These 38 programs, from the<br />
LLVM test suite plus SPEC CPU 2006, contain over 7.64 million assembly instructions.<br />
235
100 ("<br />
!#'" 80<br />
!#&" 60<br />
!#%" 40<br />
!#$" 20<br />
!" 0<br />
)*+"<br />
,-)"<br />
.-/01230)"<br />
14315"<br />
-6.7$"<br />
4892:"<br />
).,*"<br />
;))95"<br />
4
graph is built for each program point, i.e, the region between two consecutive assembly instructions,<br />
we use only one graph for the whole program. Therefore, shape analysis gives<br />
the compiler much more precise knowledge about the memory layout of the program;<br />
however, its high cost, both in time and space, causes it to be prohibitively expensive to<br />
be used in practice. Still concerning the representation of memory locations, Ghiya and<br />
Hendren [Ghiya and Hendren 1998] have proposed an algorithm that relies on points-to<br />
information to infer disjoint data-structures. We could, in principle, use their technique<br />
to track information leaks through memory location, but it would be more conservative<br />
than our current approach, for we can track different memory cells used insi<strong>de</strong> the same<br />
data-structure. Our problem is also related to escape analysis [Blanchet 1998], which<br />
conservatively estimates the set of memory locations that outlive the function in which<br />
these locations have been created. The address leaking problem is more general, because<br />
we track the flow of addresses insi<strong>de</strong> or across functions.<br />
6. Conclusion<br />
This paper has presented a static analysis tool that checks if an adversary can obtain the<br />
knowledge of an internal program address. This is a necessary step in or<strong>de</strong>r to circumvent<br />
a program protection mechanism known as address space layout randomization. We have<br />
implemented our algorithms on top of LLVM, an industrial strength compiler, and have<br />
used it to process a collection of programs with more than 1.3 million lines of C co<strong>de</strong>. We<br />
have been able to discover actual address leaks in some of these programs. Currently we<br />
are working to reduce the number of false positives reported by our implementation. We<br />
plan to do it by adding context and field sensitiveness to our tool as a future work.<br />
References<br />
An<strong>de</strong>rsen, L. O. (1994). Program Analysis and Specialization for the C Programming<br />
Language. PhD thesis, DIKU, University of Copenhagen.<br />
Bhatkar, E., Duvarney, D. C., and Sekar, R. (2003). Address obfuscation: an efficient<br />
approach to combat a broad range of memory error exploits. In USENIX Security,<br />
pages 105–120.<br />
Blanchet, B. (1998). Escape analysis: Correctness proof, implementation and experimental<br />
results. In POPL, pages 25–37. ACM.<br />
Bond, M. D. and McKinley, K. S. (2007). Probabilistic calling context. In OOPSLA,<br />
pages 97–112. ACM.<br />
Buchanan, E., Roemer, R., Shacham, H., and Savage, S. (2008). When good instructions<br />
go bad: generalizing return-oriented programming to RISC. In CCS, pages 27–38.<br />
ACM.<br />
Cytron, R., Ferrante, J., Rosen, B. K., Wegman, M. N., and Za<strong>de</strong>ck, F. K. (1991). Efficiently<br />
computing static single assignment form and the control <strong>de</strong>pen<strong>de</strong>nce graph.<br />
TOPLAS, 13(4):451–490.<br />
Denning, D. E. and Denning, P. J. (1977). Certification of programs for secure information<br />
flow. Commun. ACM, 20:504–513.<br />
Ghiya, R. and Hendren, L. J. (1998). Putting pointer analysis to work. In POPL, pages<br />
121–133. ACM.<br />
237
Gough, B. J. (2005). An Introduction to GCC. Network Theory Ltd, 1st edition.<br />
Har<strong>de</strong>kopf, B. and Lin, C. (2007). The ant and the grasshopper: fast and accurate pointer<br />
analysis for millions of lines of co<strong>de</strong>. In PLDI, pages 290–299. ACM.<br />
Jovanovic, N., Kruegel, C., and Kirda, E. (2006). Pixy: A static analysis tool for <strong>de</strong>tecting<br />
web application vulnerabilities (short paper). In Symposium on Security and Privacy,<br />
pages 258–263. IEEE.<br />
Lattner, C. and Adve, V. S. (2004). LLVM: A compilation framework for lifelong program<br />
analysis & transformation. In CGO, pages 75–88. IEEE.<br />
Lattner, C., Lenharth, A., and Adve, V. S. (2007). Making context-sensitive points-to<br />
analysis with heap cloning practical for the real world. In PLDI, pages 278–289. ACM.<br />
Levy, E. (1996). Smashing the stack for fun and profit. Phrack, 7(49).<br />
Pearce, D. J., Kelly, P. H. J., and Hankin, C. (2004).<br />
analysis for C. In PASTE, pages 37–42.<br />
Efficient field-sensitive pointer<br />
Pereira, F. M. Q. and Berlin, D. (2009). Wave propagation and <strong>de</strong>ep propagation for<br />
pointer analysis. In CGO, pages 126–135. IEEE.<br />
Pistoia, M., Flynn, R. J., Koved, L., and Sreedhar, V. C. (2005). Interprocedural analysis<br />
for privileged co<strong>de</strong> placement and tainted variable <strong>de</strong>tection. In ECOOP, pages 362–<br />
386.<br />
Rimsa, A. A., D’Amorim, M., and Pereira, F. M. Q. (2011). Tainted flow analysis on<br />
e-SSA-form programs. In CC, pages 124–143. Springer.<br />
Rochlis, J. A. and Eichin, M. W. (1989). With microscope and tweezers: the worm from<br />
MIT’s perspective. Commun. ACM, 32:689–698.<br />
Sagiv, M., Reps, T., and Wilhelm, R. (1998). Solving shape-analysis problems in languages<br />
with <strong>de</strong>structive updating. TOPLAS, 20(1):1–50.<br />
Sagiv, M., Reps, T., and Wilhelm, R. (2002). Parametric shape analysis via 3-valued<br />
logic. TOPLAS, 24:217–298.<br />
Shacham, H. (2007). The geometry of innocent flesh on the bone: return-into-libc without<br />
function calls (on the x86). In CCS, pages 552–561. ACM.<br />
Shacham, H., Page, M., Pfaff, B., Goh, E.-J., Modadugu, N., and Boneh, D. (2004). On<br />
the effectiveness of address-space randomization. In CSS, pages 298–307. ACM.<br />
Steensgaard, B. (1996). Points-to analysis in almost linear time. In POPL, pages 32–41.<br />
Stroustrup, B. (2007). Evolving a language in and for the real world: C++ 1991-2006. In<br />
HOPL, pages 1–59. ACM.<br />
Team, J. (2006). The java HotSpot virtual machine. Technical Report Technical White<br />
Paper, Sun Microsystems.<br />
Wassermann, G. and Su, Z. (2007). Sound and precise analysis of web applications for<br />
injection vulnerabilities. In PLDI, pages 32–41. ACM.<br />
Xie, Y. and Aiken, A. (2006). Static <strong>de</strong>tection of security vulnerabilities in scripting<br />
languages. In USENIX-SS. USENIX Association.<br />
238
Um esquema bio-inspirado para a tolerância à má-conduta em<br />
sistemas <strong>de</strong> quórum para MANETs<br />
Elisa Mannes, Michele Nogueira, Aldri Santos<br />
1 Núcleo <strong>de</strong> Re<strong>de</strong>s Sem-Fio e Re<strong>de</strong>s Avançadas (NR2)<br />
Universida<strong>de</strong> Fe<strong>de</strong>ral do Paraná – Curitiba – Brasil<br />
{elisam, michele, aldri}@inf.ufpr.br<br />
Abstract. Network operation services in MANETs, such as resource location,<br />
<strong>de</strong>al with no<strong>de</strong> mobility and lack of resources to support applications. The reliability<br />
and availability of these services can be assured by replication techniques,<br />
such as quorum systems. However, these systems are vulnerable to selfish<br />
and malicious no<strong>de</strong>s, that either intentionally do not collaborate with replication<br />
operations or spread malicious data while participating in data replication.<br />
In or<strong>de</strong>r to handle these issues, this paper proposesQS 2 , a bio-inspired scheme<br />
to tolerate selfish and malicious no<strong>de</strong>s in replication operation of quorum systems.<br />
Differently from existing works on the literature, QS 2 is distributed and<br />
self-organized, and no<strong>de</strong>s are in<strong>de</strong>pen<strong>de</strong>nt to exclu<strong>de</strong> misbehaving no<strong>de</strong>s. It is<br />
inspired in quorum sensing and kin selection, both biological mechanisms resi<strong>de</strong>nt<br />
in bacteria. Simulation results show thatQS 2 increases 87% the reliability<br />
of a quorum system for MANETs, <strong>de</strong>tecting more than 80% of misbehaving no<strong>de</strong>s<br />
participating in replication operations.<br />
Resumo. Os serviços <strong>de</strong> operação das re<strong>de</strong>s em MANETs, como a localização<br />
<strong>de</strong> recursos, precisam lidar com a mobilida<strong>de</strong> e a falta <strong>de</strong> recursos dos dispositivos<br />
a fim <strong>de</strong> suportar as aplicações. Esses serviços necessitam <strong>de</strong> garantias<br />
<strong>de</strong> disponibilida<strong>de</strong> e <strong>de</strong> confiabilida<strong>de</strong>, que po<strong>de</strong>m ser obtidas pela replicação<br />
<strong>de</strong> dados através <strong>de</strong> sistemas <strong>de</strong> quóruns. Contudo, esses sistemas são vulneráveis<br />
a nós egoístas e maliciosos, que não colaboram com suas operações<br />
ou modificam as informações, negando os serviços da re<strong>de</strong>. Para lidar com essas<br />
vulnerabilida<strong>de</strong>s, esse artigo propõe QS 2 , um esquema bio-inspirado para<br />
a tolerˆancia <strong>de</strong> nós <strong>de</strong> má-conduta em sistemas <strong>de</strong> quórum. Diferentemente dos<br />
sistemas existentes na literatura, o QS 2 é auto-organizado e distribuído, permitindo<br />
uma autonomia na exclusão <strong>de</strong> nós <strong>de</strong> má-conduta. Ele é inspirado<br />
nos mecanismos biológicos <strong>de</strong> sensoriamento em quóruns e <strong>de</strong> seleção por parentesco<br />
encontrados em bactérias. Resultados <strong>de</strong> simulações mostram um aumento<br />
<strong>de</strong> até 87% na confiabilida<strong>de</strong> dos sistemas <strong>de</strong> quórum, <strong>de</strong>tectando mais<br />
<strong>de</strong> 80% da participação <strong>de</strong> nós <strong>de</strong> má-conduta nas operações <strong>de</strong> replicação.<br />
1. Introdução<br />
Devido aos recentes avanços das tecnologias <strong>de</strong> comunicação sem fio, a operacionalização<br />
<strong>de</strong> várias aplicações críticas, como as aplicações relacionadas à segurança nas rodovias,<br />
à segurança militar e ao apoio a situações <strong>de</strong> emergência po<strong>de</strong>m ser mediadas pelas re<strong>de</strong>s<br />
ad hoc móvel (MANETs). Porém, a mobilida<strong>de</strong> e a escassez <strong>de</strong> recursos dos dispositivos<br />
(nós), características peculiares das MANETs, po<strong>de</strong>m ocasionar o particionamento da<br />
239
e<strong>de</strong>. Além disso, a <strong>de</strong>pendência na colaboração dos nós po<strong>de</strong> tornar as aplicações indisponíveis<br />
ou resultar em informações <strong>de</strong>satualizadas [Zhang et al. 2008]. Dessa forma, a<br />
confiabilida<strong>de</strong> da re<strong>de</strong> é comprometida, e as consequências da falta <strong>de</strong> informação ou <strong>de</strong><br />
informações <strong>de</strong>satualizadas po<strong>de</strong>m inutilizar a re<strong>de</strong>. Uma das formas <strong>de</strong> tolerar as falhas<br />
causadas pelas características da re<strong>de</strong> é por meio da redundância das informações, obtida<br />
através das técnicas <strong>de</strong> replicação dos dados [Derhab and Badache 2009].<br />
Dentre as técnicas <strong>de</strong> replicação para garantir a disponibilida<strong>de</strong> dos dados e a<br />
tolerância a falhas em MANETs <strong>de</strong>stacam-se os sistemas <strong>de</strong> quórum. Estes sistemas são<br />
uma forma efetiva <strong>de</strong> replicação, garantindo tanto a consistência quanto a disponibilida<strong>de</strong><br />
dos dados. Os sistemas <strong>de</strong> quórum consistem em conjuntos <strong>de</strong> nós que se intersectam,<br />
e cada operação <strong>de</strong> leitura e <strong>de</strong> escrita acontece em apenas um dos conjuntos (quóruns)<br />
[Malkhi and Reiter 1997]. Entre as vantagens <strong>de</strong> seu uso, comparado com outros mo<strong>de</strong>los<br />
<strong>de</strong> replicação, estão a economia <strong>de</strong> recursos computacionais e <strong>de</strong> comunicação, o que<br />
torna esses sistemas atraentes às MANETs. Os sistemas <strong>de</strong> quórum que se baseiam na<br />
construção probabilística da intersecção dos quóruns são os mais a<strong>de</strong>quados às MANETs,<br />
pois diminuem o uso <strong>de</strong> recursos e tornam a replicação mais dinâmica [Luo et al. 2003].<br />
Contudo, os sistemas <strong>de</strong> quórum probabilísticos propostos para MANETs apresentam<br />
vulnerabilida<strong>de</strong>s que resultam em uma perda na confiabilida<strong>de</strong> dos dados diante<br />
<strong>de</strong> nós egoístas e nós maliciosos nas operações <strong>de</strong> replicação [Mannes et al. 2009]. Os nós<br />
egoístas buscam a economia <strong>de</strong> seus recursos e assim não colaboram com as operações,<br />
enquanto que os nós maliciosos têm como objetivo a negação do serviço da re<strong>de</strong>, injetando<br />
dados falsos ou modificando o comportamento da replicação. Para serem empregados<br />
<strong>de</strong> forma confiável no apoio aos serviços <strong>de</strong> operação <strong>de</strong> re<strong>de</strong>, os sistemas <strong>de</strong> quórum<br />
precisam evitar que os nós <strong>de</strong> má-conduta interfiram em seu funcionamento.<br />
Apesar <strong>de</strong> existirem sistemas <strong>de</strong> quórum tolerantes a nós <strong>de</strong> má-conduta<br />
[Malkhi and Reiter 1997], tais sistemas assumem a existência <strong>de</strong> uma infraestrutura fixa<br />
e canais <strong>de</strong> comunicação confiáveis, atributos que não são encontrados em uma MANET<br />
e que tornam inviável o uso <strong>de</strong> tais sistemas nesse tipo <strong>de</strong> re<strong>de</strong>. Uma forma <strong>de</strong> auxiliar<br />
os sistemas <strong>de</strong> quórum a evitar a interação com os nós <strong>de</strong> má-conduta é por meio do<br />
uso <strong>de</strong> sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> nós <strong>de</strong> má-conduta [Yang et al. 2002, Zhu et al. 2007].<br />
Porém, a maioria <strong>de</strong>les divulga a recomendação sobre um nó para todos na re<strong>de</strong>, gerando<br />
uma sobrecarga <strong>de</strong> mensagens, ou utiliza entida<strong>de</strong>s centralizadas, que não são a<strong>de</strong>quadas<br />
para as MANETs. Desta maneira, é necessário proporcionar a tolerância a nós <strong>de</strong><br />
má-conduta nos sistemas <strong>de</strong> quórum, preferencialmente <strong>de</strong> forma <strong>de</strong>scentralizada e com<br />
o uso <strong>de</strong> poucos recursos. Essas características são naturalmente encontradas em diversos<br />
sistemas biológicos, e assim, projetar soluções inspiradas neles facilita a inclusão <strong>de</strong><br />
características como a <strong>de</strong>scentralização e a autonomia necessárias em MANETs.<br />
Este trabalho propõe o QS 2 (quorum systems + quorum sensing), um esquema<br />
inspirado nos mecanismos biológicos encontrados em bactérias, para a tolerância <strong>de</strong> nós<br />
<strong>de</strong> má-conduta nas operações <strong>de</strong> sistemas <strong>de</strong> quórum em MANETs. Diferente <strong>de</strong> outras<br />
propostas encontradas na literatura, oQS 2 <strong>de</strong>tecta nós egoístas e nós maliciosos por meio<br />
da análise autônoma do comportamento <strong>de</strong> cada nó, e <strong>de</strong> forma auto-organizada evita<br />
que eles façam parte da replicação dos dados. Os resultados <strong>de</strong> simulação mostram que<br />
o QS 2 garante pelo menos 80% <strong>de</strong> confiabilida<strong>de</strong> dos dados em um sistema <strong>de</strong> quórum<br />
probabilístico para MANETs diante <strong>de</strong> nós maliciosos em operações <strong>de</strong> escrita, e <strong>de</strong>tecta<br />
240
mais <strong>de</strong> 80% da ação <strong>de</strong>sses nós com uma taxa <strong>de</strong> falsos positivos inferior a 2%. A confiabilida<strong>de</strong><br />
garantida peloQS 2 é aceitável para a replicação <strong>de</strong> dados em aplicações cujo o<br />
requisito por disponibilida<strong>de</strong> sobrepõe o custo <strong>de</strong> lidar com eventuais inconsistências.<br />
O restante do artigo está organizado como <strong>de</strong>scrito a seguir. A Seção 2 apresenta<br />
os trabalhos relacionados. A Seção 3 <strong>de</strong>fine o mo<strong>de</strong>lo do sistema e as asserções consi<strong>de</strong>radas<br />
no esquema proposto. A Seção 4 <strong>de</strong>screve o esquema QS 2 , seus módulos e suas<br />
funções. A Seção 5 apresenta os resultados do <strong>de</strong>sempenho e da eficiência do QS 2 , obtidos<br />
por meio <strong>de</strong> simulação. A Seção 6 conclui o artigo e apresenta os trabalhos futuros.<br />
2. Trabalhos Relacionados<br />
Os sistemas clássicos <strong>de</strong> replicação <strong>de</strong> dados [Saito and Shapiro 2005] têm como característica<br />
comum o uso <strong>de</strong> servidores estáticos, a garantia <strong>de</strong> entrega e a or<strong>de</strong>nação das<br />
mensagens <strong>de</strong> replicação. A tolerância <strong>de</strong> nós <strong>de</strong> má-conduta nesses sistemas é garantida<br />
pela validação das operações por pelo menost+1 nós, em quetéaquantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong><br />
má-conduta presente na re<strong>de</strong> [Malkhi and Reiter 1997]. Esses sistemas requerem que a<br />
quantida<strong>de</strong> <strong>de</strong> nós bons sobreponha a quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má conduta a fim <strong>de</strong> evitar que<br />
eles prejudiquem a replicação. Além disso, esses sistemas trocam várias mensagens entre<br />
os nós para a conclusão <strong>de</strong> uma operação, o que gera uma sobrecarga na re<strong>de</strong>. Por estas<br />
razões, esses sistemas clássicos não são aplicáveis em MANETs, visto que estas re<strong>de</strong>s<br />
não conseguem garantir os requisitos básicos para o funcionamento correto da tolerância<br />
a falhas necessários a esse tipo <strong>de</strong> replicação.<br />
A replicação por sistemas <strong>de</strong> quórum é a mais a<strong>de</strong>quada para ambientes dinâmicos<br />
como as MANETs. Estes sistemas ten<strong>de</strong>m a diminuir a quantida<strong>de</strong> <strong>de</strong> recursos <strong>de</strong> processamento<br />
e <strong>de</strong> comunicação usados na replicação [Malkhi and Reiter 1997]. Os sistemas<br />
<strong>de</strong> quórum específicos para as MANETs diminuem ainda mais o uso <strong>de</strong> recursos através<br />
da escolha probabilística dos quóruns [Luo et al. 2003]. Entretanto, apesar <strong>de</strong> existirem<br />
sistemas <strong>de</strong> quórum probabilístico tolerantes aos nós <strong>de</strong> má-conduta [Malkhi et al. 1998],<br />
esses sistemas possuem os mesmos requisitos que os sistemas clássicos, como a garantia<br />
<strong>de</strong> entrega das mensagens, sendo que as características das MANETs tornam esse modo<br />
<strong>de</strong> tolerância a falhas inviável para o uso na replicação <strong>de</strong> serviços.<br />
Os sistemas <strong>de</strong> replicação para MANETs [Bellavista et al. 2005] geralmente tratam<br />
da segurança com o auxílio <strong>de</strong> mecanismos <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> má-conduta, como os<br />
sistemas <strong>de</strong> reputação [Salmon et al. 2010] Contudo, muitos <strong>de</strong>sses sistemas <strong>de</strong>pen<strong>de</strong>m<br />
da confiança entre os nós para a troca <strong>de</strong> mensagens <strong>de</strong> <strong>de</strong>tecção, o que po<strong>de</strong> ser explorado<br />
por nós <strong>de</strong> má-conduta através do envio <strong>de</strong> informações falsas. Abordagens para a<br />
<strong>de</strong>tecção <strong>de</strong> injeção <strong>de</strong> dados falsos [Zhu et al. 2007] estão consolidadas na replicação <strong>de</strong><br />
dados em re<strong>de</strong>s <strong>de</strong> sensores sem fio, <strong>de</strong>vido ao foco que essas re<strong>de</strong>s mantém na coleta <strong>de</strong><br />
dados. A validação dos dados geralmente ocorre por meio <strong>de</strong> criptografia, da verificação<br />
dos dados por uma <strong>de</strong>terminada quantida<strong>de</strong> <strong>de</strong> nós ou ainda pelo uso <strong>de</strong> firewalls. Porém,<br />
esses sistemas utilizam entida<strong>de</strong>s centrais, o que po<strong>de</strong> ser aceitável para alguns tipos <strong>de</strong><br />
re<strong>de</strong>, mas trazem limitações para re<strong>de</strong>s <strong>de</strong>scentralizadas como as MANETs.<br />
Apesar dos sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> nós <strong>de</strong> má-conduta apresentarem separadamente<br />
características <strong>de</strong> autonomia, <strong>de</strong>scentralização e uso <strong>de</strong> poucos recursos, nenhum<br />
<strong>de</strong>les as compreen<strong>de</strong> na mesma solução. Além disso, nenhuma solução é capaz <strong>de</strong> mitigar<br />
nós egoístas e maliciosos isoladamente. Devido às suas características, as MANETS<br />
241
necessitam que atributos como a auto-organização, a autonomia e o uso <strong>de</strong> poucos recursos<br />
estejam incorporados nessas soluções. Essas características são encontradas em<br />
várias soluções bio-inspiradas, como protocolos <strong>de</strong> roteamento inspirados em colônias <strong>de</strong><br />
formigas, ou sistemas <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> ataques inspirados no sistema imunológico humano<br />
[Meisel et al. 2010]. Assim, o esquema proposto é inspirado nos sistemas biológicos, <strong>de</strong><br />
forma a aproveitar as vantagens oferecidas por esses sistemas.<br />
3. Mo<strong>de</strong>lo do sistema<br />
Esta seção <strong>de</strong>screve as suposições e os mo<strong>de</strong>los assumidos para a <strong>de</strong>finição do esquema<br />
proposto. Primeiramente são apresentados os sistemas <strong>de</strong> quórum probabilísticos para<br />
MANETs. Também são <strong>de</strong>finidos o mo<strong>de</strong>lo <strong>de</strong> re<strong>de</strong> empregado e o mo<strong>de</strong>lo <strong>de</strong> má-conduta<br />
que po<strong>de</strong> afetar esses sistemas. Por fim, são <strong>de</strong>scritos os conceitos <strong>de</strong> sensoriamento em<br />
quórum e seleção por parentesco, que são utilizados como inspiração para o esquema.<br />
3.1. Sistema <strong>de</strong> quórum probabilístico para MANETs<br />
O sistema <strong>de</strong> quórum probabilístico é caracterizado pela escolha probabilística dos<br />
quóruns, que são conjuntos <strong>de</strong> nós que realizam a replicação. Nesse caso, o sistema<br />
garante que quóruns <strong>de</strong> leitura e <strong>de</strong> escrita, ambos selecionados aleatoriamente, se intersectem<br />
com uma dada probabilida<strong>de</strong>. Em geral, os sistemas <strong>de</strong> quórum para MA-<br />
NETs [Luo et al. 2003, Tulone 2007, Gramoli and Raynal 2007] têm seu fundamento nos<br />
quóruns probabilísticos, e portanto, compartilham as mesmas características. Apesar <strong>de</strong><br />
existirem vários sistemas <strong>de</strong> quórum para as MANETs, o PAN (probabilistic quorum system<br />
for ad hoc networks) [Luo et al. 2003] foi escolhido neste estudo para representar os<br />
sistemas <strong>de</strong> quórum probabilísticos para MANETs, pois propõe o uso <strong>de</strong> um número reduzido<br />
<strong>de</strong> mensagens para a replicação ao introduzir o conceito <strong>de</strong> quóruns assimétricos,<br />
além <strong>de</strong> acessar os quóruns <strong>de</strong> leitura e <strong>de</strong> escrita <strong>de</strong> forma distinta. No PAN, o acesso ao<br />
quórum <strong>de</strong> leitura é realizado por mensagens unicast, en<strong>de</strong>reçada para cada nó do quórum<br />
<strong>de</strong> leitura, enquanto que os quóruns <strong>de</strong> escrita são acessados por meio do protocolo Gossip,<br />
em que um nó envia as escritas para o quórum <strong>de</strong> escrita com a ajuda dos outros nós.<br />
3.2. Mo<strong>de</strong>lo <strong>de</strong> re<strong>de</strong><br />
Assume-se que a re<strong>de</strong> é formada por um conjuntoP composto pornnós i<strong>de</strong>ntificados por<br />
{s 0 ,s 1 ... s n−1 ,s n }, sendo que cada nós n ∈P tem um en<strong>de</strong>reço físico e um i<strong>de</strong>ntificador<br />
único. Os nós são similares quanto ao po<strong>de</strong>r <strong>de</strong> processamento e a quantida<strong>de</strong> <strong>de</strong> energia<br />
disponível. Eles se comunicam através <strong>de</strong> um canal sem fio, cujo raio <strong>de</strong> transmissão<br />
é igual para todos. Consi<strong>de</strong>ra-se que a comunicação entre os nós é assíncrona, isto é, o<br />
tempo <strong>de</strong> transmissão é variável e <strong>de</strong>sconhecido. O canal <strong>de</strong> comunicação não é confiável,<br />
e está sujeito à perda <strong>de</strong> pacotes <strong>de</strong>vido a colisões ou à entrada e saída <strong>de</strong> nós, que também<br />
po<strong>de</strong> causar a partição da re<strong>de</strong>.<br />
Os nós não possuem conexão com todos os outros, e <strong>de</strong>ste modo, as mensagens<br />
precisam ser roteadas por nós intermediários até o <strong>de</strong>stino. Supõe-se que o roteamento e<br />
as camadas inferiores não sofram interferências <strong>de</strong> nós <strong>de</strong> má-conduta. Da mesma forma,<br />
assume-se que as mensagens contendo os dados replicados são relativamente pequenas e<br />
enviadas em pacotes únicos. Além disso, assume-se que a re<strong>de</strong> fornece um esquema <strong>de</strong><br />
assinatura para a autenticação <strong>de</strong> informações importantes enviadas peloQS 2 .<br />
242
O esquema proposto é aplicado em sistemas <strong>de</strong> quórum do tipo probabilístico<br />
para MANETs, utilizado para a replicação dos dados dos serviços <strong>de</strong> operação <strong>de</strong> re<strong>de</strong>,<br />
tais como informações <strong>de</strong> localização e <strong>de</strong> mobilida<strong>de</strong>.<br />
3.3. Mo<strong>de</strong>lo <strong>de</strong> má-conduta<br />
Consi<strong>de</strong>ra-se que os nós <strong>de</strong> má-conduta têm como objetivo afetar as proprieda<strong>de</strong>s <strong>de</strong> disponibilida<strong>de</strong><br />
e <strong>de</strong> integrida<strong>de</strong> dos dados em um sistema <strong>de</strong> replicação por quóruns. Esses<br />
nós <strong>de</strong> má-conduta são intrusos e conhecem o funcionamento da re<strong>de</strong>, tendo permissão e<br />
acesso à chaves criptográficas para participar das operações. Assume-se dois tipos <strong>de</strong> nós<br />
<strong>de</strong> má-conduta: os nós egoístas e os nós maliciosos. Um nó egoísta não colabora com as<br />
operações <strong>de</strong> replicação. Um nó malicioso modifica ou injeta dados maliciosos no sistema<br />
<strong>de</strong> replicação, ou ainda atrasa a propagação dos dados. Um nó po<strong>de</strong> ser egoísta ou malicioso,<br />
ou apresentar ambos os comportamentos ao mesmo tempo. Assume-se que um nó<br />
<strong>de</strong> má-conduta se comporta <strong>de</strong> modo egoísta ou malicioso durante toda a sua participação<br />
na re<strong>de</strong>, todas as vezes em que for consultado. Além disso, os nós egoístas e maliciosos<br />
agem sempre que forem consultados por algum outro nó do sistema, tanto nas operações<br />
<strong>de</strong> leitura como <strong>de</strong> escrita.<br />
3.4. Sensoriamento em quórum e seleção por parentesco<br />
Na Biologia, o sensoriamento em quórum é um mecanismo biológico <strong>de</strong> comunicação<br />
entre bactérias fundamentado na produção e na <strong>de</strong>tecção <strong>de</strong> produtos químicos extracelulares<br />
chamados <strong>de</strong> autoindutores. Os autoindutores agem como um sinalizador da<br />
quantida<strong>de</strong> <strong>de</strong> bactérias presentes no ambiente, e permite que elas <strong>de</strong>senvolvam um comportamento<br />
vantajoso para o grupo, <strong>de</strong>pen<strong>de</strong>nte da quantida<strong>de</strong> <strong>de</strong> bactérias no ambiente<br />
[Ng and Bassler 2009]. Porém, esse mecanismo é vulnerável a bactérias egoístas e maliciosas,<br />
que não <strong>de</strong>sejam ter o custo metabólico da produção <strong>de</strong> autoindutores, ou prejudicam<br />
o sensoriamento enviando autoindutores modificados. Uma das teorias aceitas para<br />
a sobrevivência do sensoriamento em quórum ao ataque <strong>de</strong> tais bactérias é pela seleção<br />
por parentesco, permitindo que as bactérias <strong>de</strong>em preferência a interagir com aquelas que<br />
compartilham o mesmo material genético, e tem maiores chances <strong>de</strong> se comportar corretamente.<br />
Dessa forma, as bactérias egoístas e maliciosas são excluídas do processo <strong>de</strong><br />
sensoriamento. Em conjunto, o sensoriamento em quórum e a seleção por parentesco<br />
formam uma solução dinâmica e in<strong>de</strong>pen<strong>de</strong>nte, e são a base para o esquema proposto.<br />
4. QS 2 - esquema bio-inspirado para tolerância a nós <strong>de</strong> má-conduta<br />
O esquema QS 2 (quorum system + quorum sensing) tem como objetivo auxiliar os<br />
sistemas <strong>de</strong> quórum para MANETs a excluir os nós <strong>de</strong> má-conduta das operações <strong>de</strong><br />
replicação, construindo quóruns com participantes que não prejudiquem as operações.<br />
Diferente dos sistemas <strong>de</strong> <strong>de</strong>tecção propostos, o QS 2 é autônomo e auto-organizado, e<br />
não troca informações <strong>de</strong> reputação entre os nós. A seleção <strong>de</strong> nós participantes tem<br />
como base a observação individual da quantida<strong>de</strong> <strong>de</strong> operações <strong>de</strong> escritas <strong>de</strong> dados e<br />
<strong>de</strong> encaminhamentos <strong>de</strong> escritas realizadas, e não <strong>de</strong>pen<strong>de</strong> <strong>de</strong> informações adquiridas <strong>de</strong><br />
outros nós. O esquema é composto por dois módulos: o módulo <strong>de</strong> seleção <strong>de</strong> nós e o<br />
módulo <strong>de</strong> <strong>de</strong>cisão, conforme ilustra a Figura 1.<br />
O módulo <strong>de</strong> seleção <strong>de</strong> nós é responsável pela classificação dos nós como bons<br />
ou <strong>de</strong> má-conduta. Esse módulo é subdividido em dois componentes: a contagem <strong>de</strong><br />
243
Figura 1. Arquitetura do esquema QS 2<br />
autoindutores e a <strong>de</strong>terminação dos genes do nó. A contagem <strong>de</strong> autoindutores quantifica<br />
os autoindutores enviados por cada nó da re<strong>de</strong>. Os autoindutores para o QS 2 são as<br />
escritas (AI-W) e os encaminhamentos <strong>de</strong> dados realizados (AI-F) por cada nó na re<strong>de</strong>. A<br />
<strong>de</strong>terminação dos genes classifica os nós em um dos três estados: bons, egoístas (C) ou<br />
maliciosos (M). Isso <strong>de</strong>pen<strong>de</strong> da contagem <strong>de</strong> autoindutores <strong>de</strong> cada nó e dos limites dos<br />
autoindutores que caracterizam um bom comportamento. Depois <strong>de</strong> classificados, os nós<br />
são escolhidos <strong>de</strong> acordo com a semelhança <strong>de</strong> parentesco com o nó seletor.<br />
O módulo <strong>de</strong> <strong>de</strong>cisão <strong>de</strong> cooperação em quóruns <strong>de</strong>termina a relação <strong>de</strong><br />
cooperação entre dois nós. Esse módulo permite uma flexibilização na interação entre<br />
os nós, que po<strong>de</strong>m classificar um nó como <strong>de</strong> má-conduta e mesmo assim <strong>de</strong>cidir interagir<br />
com ele. Em conjunto, os módulos <strong>de</strong> seleção e <strong>de</strong> <strong>de</strong>cisão <strong>de</strong> cooperação <strong>de</strong>terminam<br />
quais nós são bons, isto é, nós cujo comportamento é colaborativo. Tais nós são posteriormente<br />
escolhidos para a participação em quóruns <strong>de</strong> escrita e <strong>de</strong> leitura. As subseções<br />
seguintes <strong>de</strong>talham as etapas <strong>de</strong> contagem <strong>de</strong> autoindutores, da <strong>de</strong>terminação do gene do<br />
nó e da <strong>de</strong>cisão <strong>de</strong> cooperação do esquemaQS 2 .<br />
4.1. Contagem <strong>de</strong> autoindutores<br />
A contagem dos autoindutores AI-W e AI-F é realizada individualmente por cada nó presente<br />
no sistema, que possui um contador <strong>de</strong> autoindutores para cada nó na re<strong>de</strong>. Essa<br />
contabilização acontece no momento em que o nó recebe uma requisição <strong>de</strong> escrita <strong>de</strong> um<br />
dado. Os nós enviam junto com o dado a rota por on<strong>de</strong> o dado trafegou, e <strong>de</strong>ssa forma,<br />
é possível incrementar o contador <strong>de</strong> AI-F para cada nó presente na rota <strong>de</strong> disseminação<br />
e o contador <strong>de</strong> AI-W para o nó <strong>de</strong> origem da escrita. Essa rota é assinada por cada nó<br />
que a compõe, <strong>de</strong> modo que não seja possível forjar a rota ou induzir que nós bons sejam<br />
excluídos por outros ao retirar suas participações na rota. A Figura 2 ilustra a contagem<br />
dos autoindutores no QS 2 . Nela, o nó H inicia a escrita <strong>de</strong> um dado na re<strong>de</strong>, enviando<br />
junto o seu i<strong>de</strong>ntificador para dois nós. Ao encaminhar o dado, os nós incluem o seu<br />
i<strong>de</strong>ntificador na rota, para que essa colaboração seja contabilizada pelos próximos nós. A<br />
tabela exemplifica a contagem <strong>de</strong> autoindutores AI-W e AI-F pelo nó A, que recebe essa<br />
escrita a partir da rota H - E - D - C. O nó A incrementa a quantida<strong>de</strong> <strong>de</strong> AI-W para o nó<br />
H, a origem do dado, e a quantida<strong>de</strong> <strong>de</strong> AI-F para os nós E, D e C, que encaminharam<br />
esse dado até ele.<br />
244
Figura 2. Contagem <strong>de</strong> autoindutores no QS 2<br />
4.2. Determinação dos genes dos nós<br />
Na i<strong>de</strong>ntificação dos genes dos nós, o esquema QS 2 verifica a contagem <strong>de</strong> autoindutores<br />
enviada pelos nós e a compara com uma quantia i<strong>de</strong>ntificada como aceitável para a<br />
re<strong>de</strong>. Para isso, estima-se a taxa esperada <strong>de</strong> escritas enviadas por um nó, <strong>de</strong>nominada<br />
k env , e a taxa <strong>de</strong> encaminhamentos <strong>de</strong> escritas, <strong>de</strong>nominadak enc . Essa taxa po<strong>de</strong> ser estimada<br />
<strong>de</strong> acordo com o comportamento <strong>de</strong> escritas dos dados replicados. Ambas as taxas<br />
são calculadas em função <strong>de</strong> um <strong>de</strong>terminado período <strong>de</strong> tempo. A partir <strong>de</strong>ssas taxas,<br />
<strong>de</strong>termina-se os limites <strong>de</strong> envio para os autoindutores AI-W e AI-F. Qualquer nó que<br />
esteja além <strong>de</strong>sses limites é i<strong>de</strong>ntificado como um nó <strong>de</strong> má-conduta.<br />
Este trabalho foca na distribuição <strong>de</strong> dados <strong>de</strong> serviços <strong>de</strong> operação <strong>de</strong> re<strong>de</strong> e,<br />
portanto, assume-se que a taxa <strong>de</strong> envio <strong>de</strong> escritas é <strong>de</strong>finida por uma distribuição<br />
<strong>de</strong> Poisson, <strong>de</strong>vido à a<strong>de</strong>quação <strong>de</strong>ssa distribuição ao comportamento <strong>de</strong>sses serviços<br />
[Luo et al. 2003]. Contudo, o esquema QS 2 po<strong>de</strong> consi<strong>de</strong>rar outras funções <strong>de</strong><br />
distribuição. Dessa forma, consi<strong>de</strong>rando a média λ <strong>de</strong> escritas enviadas por cada nó,<br />
calcula-se os limites <strong>de</strong> envio <strong>de</strong> escrita,k env max, e <strong>de</strong> encaminhamento,k enc min, consi<strong>de</strong>rados<br />
normais para os nós. Um nó é malicioso se ultrapassar o limite máximo permitido<br />
<strong>de</strong> escritas durante um <strong>de</strong>terminado período <strong>de</strong> tempo, e é egoísta se não atingir e sustentar<br />
um limite mínimo <strong>de</strong> escritas encaminhadas. A taxa máxima <strong>de</strong> envio <strong>de</strong> escritask env max<br />
para um nó bom é calculada pela Equação 1, em queδ representa a probabilida<strong>de</strong> do envio<br />
<strong>de</strong> escritas ser menor do que o k env max estimado. A quantida<strong>de</strong> mínima <strong>de</strong> encaminhamentos<br />
para um nó é calculada pela Equação 2, em que γ representa a probabilida<strong>de</strong> dos<br />
nós encaminharem menos <strong>de</strong> k enc min. Os nós egoístas e maliciosos possuem taxas k env e<br />
k enc arbitrárias, e não respeitam as taxas k env max ek enc min <strong>de</strong>finidas pelo esquema.<br />
k∑ env<br />
λ<br />
k env max<br />
×e −λ<br />
k env max!<br />
δ (1)<br />
k∑ enc<br />
λ<br />
k enc min<br />
×e −λ<br />
k enc min!<br />
γ (2)<br />
A Figura 3 ilustra a <strong>de</strong>terminação dos genes dos nós <strong>de</strong> acordo com a contagem<br />
<strong>de</strong> autoindutores pelo nó A, conforme <strong>de</strong>monstra a tabela do nó. Os nós contabilizam<br />
os autoindutores a medida que ocorrem as operações <strong>de</strong> escrita. Supondo que os limites<br />
k env max = 5 escritas por segundo e k enc min = 2 encaminhamentos por segundo, o nó A<br />
classifica os nós B, G, I, L e M como egoístas (C) por estarem abaixo do esperado. Além<br />
disso, o nó B também é classificado como um nó malicioso (M), conforme mostra a tabela,<br />
pois enviou mais escritas do que o esperado nesse período <strong>de</strong> tempo. Com esse cenário, o<br />
245
nó A seleciona os nós D e C para participar da replicação, pois são consi<strong>de</strong>rados bons.<br />
Figura 3. Determinação dos genes no QS 2<br />
4.3. Decisão <strong>de</strong> cooperação<br />
O módulo <strong>de</strong> <strong>de</strong>cisão <strong>de</strong> cooperação seleciona os nós que po<strong>de</strong>m participar das operações<br />
do sistema <strong>de</strong> quórum. Essa <strong>de</strong>cisão tem como base os genes i<strong>de</strong>ntificados pela etapa<br />
<strong>de</strong> <strong>de</strong>terminação dos genes do nó e pelo tipo <strong>de</strong> operação que o nó <strong>de</strong>seja realizar. A<br />
operação <strong>de</strong> leitura, por exemplo, po<strong>de</strong> admitir a escolha <strong>de</strong> um nó egoísta para compor<br />
o quórum <strong>de</strong> leitura. Isso porque a leitura conta com mais nós em um quórum e a máconduta<br />
egoísta <strong>de</strong> um componente não prejudica <strong>de</strong> forma acentuada o andamento da<br />
operação. Porém, isso não é possível em uma operação <strong>de</strong> escrita, em que um nó egoísta<br />
compromete por completo a propagação <strong>de</strong> um dado.<br />
A Figura 4 ilustra a execução da <strong>de</strong>cisão <strong>de</strong> cooperação em operações <strong>de</strong> escrita e<br />
<strong>de</strong> leitura. O nó D escolhe os nós E, F e G para realizar uma operação <strong>de</strong> leitura, enquanto<br />
que o nó J escolhe os nós H e K para realizar uma operação <strong>de</strong> escrita. Supondo que a<br />
tabela apresentada é a mesma para o nó D e J, o nó D escolhe o nó G, apesar <strong>de</strong> ser i<strong>de</strong>ntificado<br />
como egoísta, porque o nó D po<strong>de</strong> completar a requisição <strong>de</strong> leitura corretamente<br />
mesmo que o nó G omita ou modifique essa requisição, <strong>de</strong>vido às características dos sistemas<br />
<strong>de</strong> quóruns. Já o nó J escolhe somente nós bons para as escritas, pois a escrita não<br />
suporta a interação <strong>de</strong> nenhum tipo <strong>de</strong> nó <strong>de</strong> má-conduta.<br />
Figura 4. Decisão <strong>de</strong> cooperação no QS 2<br />
5. Avaliação do esquema QS 2<br />
O esquemaQS 2 foi implementado no simulador <strong>de</strong> re<strong>de</strong>s NS versão 2.33 e adicionado ao<br />
código <strong>de</strong> um sistema <strong>de</strong> quórum probabilístico para MANETs, o PAN, sendo chamado<br />
246
<strong>de</strong> PAN + QS 2 . O esquema foi avaliado consi<strong>de</strong>rando a interferência <strong>de</strong> nós <strong>de</strong> máconduta<br />
nas operações <strong>de</strong> leitura e <strong>de</strong> escrita, na forma <strong>de</strong> ataques <strong>de</strong> falta <strong>de</strong> cooperação,<br />
temporização e injeção <strong>de</strong> dados. Nos ataques <strong>de</strong> falta <strong>de</strong> cooperação, os nós egoístas não<br />
colaboram com as operações <strong>de</strong> replicação. No ataque <strong>de</strong> temporização, os nós maliciosos<br />
atrasam a propagação da escrita, e nos ataques <strong>de</strong> injeção <strong>de</strong> dados eles injetam dados falsos<br />
no sistema. Os nós egoístas e maliciosos agem sempre que são consultados por outros<br />
nós, e <strong>de</strong>ssa forma sua interação com o sistema e a quantida<strong>de</strong> <strong>de</strong> pacotes <strong>de</strong>scartados ou<br />
injetados é probabilística. Os resultados obtidos pelo PAN +QS 2 são comparados com<br />
os resultados do PAN diante <strong>de</strong>sses mesmos ataques, avaliado em [Mannes et al. 2009].<br />
O ambiente <strong>de</strong> re<strong>de</strong> simulado é composto por 50 nós, sendo que meta<strong>de</strong> <strong>de</strong>les<br />
replica os dados entre si e são escolhidos aleatoriamente no início da simulação. Os nós<br />
se comunicam por um canal sem fio, seguindo o mo<strong>de</strong>lo <strong>de</strong> propagação TwoRayGround e<br />
movimentam-se <strong>de</strong> acordo com o mo<strong>de</strong>lo <strong>de</strong> movimentação Random Waypoint, em uma<br />
área <strong>de</strong> 1000m x 1000m. O protocolo <strong>de</strong> roteamento empregado é o AODV, o raio <strong>de</strong><br />
alcance dos nós é <strong>de</strong> 250m e a velocida<strong>de</strong> máxima dos nós varia <strong>de</strong> 2m/s, 5m/s, 10m/s<br />
e 20m/s, com um tempo <strong>de</strong> pausa <strong>de</strong> 10s, 20s, 40s e 80s. O quórum <strong>de</strong> leitura (Q r ) é<br />
composto por quatro servidores e o quórum <strong>de</strong> escrita (Q w ) é formado por todos os nós<br />
que recebem a escrita <strong>de</strong> um dado. As escrita são disseminadas a cadaT = 200ms, e cada<br />
nó dissemina os dados para dois servidores.<br />
Nas simulações, o intervalo <strong>de</strong> envio <strong>de</strong> escritas e leituras <strong>de</strong> cada nó é mo<strong>de</strong>lado<br />
seguindo a distribuição <strong>de</strong> Poisson, com λ = 100 para as escritas e λ = 36 para<br />
as leituras. Desta forma, a quantida<strong>de</strong> máxima <strong>de</strong> escritas permitidas para cada nó é <strong>de</strong><br />
k env max = 0,018 escritas por segundo. Já a quantida<strong>de</strong> mínima k enc min <strong>de</strong> encaminhamento<br />
esperado para cada nó é k enc min = 0,15 encaminhamentos por segundo. Todos<br />
os nós que eventualmente apresentem taxas que não correspon<strong>de</strong>m ao especificado são<br />
consi<strong>de</strong>rados nós <strong>de</strong> má-conduta. A quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta (f) é igual a 20%,<br />
28% e 36%, que correspon<strong>de</strong> a 5, 7 e 9 nós. Os resultados apresentados são as médias <strong>de</strong><br />
35 simulações <strong>de</strong> 1500s cada uma, com um intervalo <strong>de</strong> confiança <strong>de</strong> 95%.<br />
5.1. Métricas <strong>de</strong> avaliação<br />
Foram empregadas quatro métricas para a avaliação doQS 2 diante <strong>de</strong> nós <strong>de</strong> má-conduta.<br />
A primeira <strong>de</strong>las, o grau <strong>de</strong> confiabilida<strong>de</strong> (G c ), quantifica o <strong>de</strong>sempenho do QS 2 , e<br />
representa a quantida<strong>de</strong> <strong>de</strong> leituras corretas obtidas pelos nós. São consi<strong>de</strong>radas corretas<br />
as leituras que obtém um resultado correspon<strong>de</strong>nte a uma escrita previamente realizada<br />
no sistema ou a uma escrita ainda em progresso no momento da leitura. O G c é <strong>de</strong>finido<br />
conforme a Equação 3 em queC r representa as leituras que obtiveram resultados corretos<br />
eRaquantida<strong>de</strong> total <strong>de</strong> requisições <strong>de</strong> leituras emitidas pelos clientes.<br />
G c =<br />
∑<br />
Cr<br />
|R|<br />
(3)<br />
As próximas métricas buscam aferir a eficiência <strong>de</strong> <strong>de</strong>tecção doQS 2 . Deste modo,<br />
a Taxa <strong>de</strong> <strong>de</strong>tecção (Tx <strong>de</strong>t ) representa a quantida<strong>de</strong> <strong>de</strong> vezes em que os nós <strong>de</strong> má-conduta<br />
foram <strong>de</strong>tectados em razão da quantida<strong>de</strong> <strong>de</strong> consultas a eles. A Tx <strong>de</strong>t é contabilizada<br />
para os ataques <strong>de</strong> falta <strong>de</strong> cooperação e injeção <strong>de</strong> dados nas escritas. Ela é calculada <strong>de</strong><br />
acordo com a Equação 4, em que A representa o conjunto <strong>de</strong> todas as interações <strong>de</strong> nós<br />
247
<strong>de</strong> má-conduta e os respectivos resultados obtidos pelo QS 2 , dado na forma <strong>de</strong> A(d,a),<br />
em quedéoresultado da <strong>de</strong>tecção doQS 2 eaéaverda<strong>de</strong>ira condição do nói.<br />
Tx <strong>de</strong>t =<br />
∑<br />
Di<br />
|A|<br />
∀i ∈ A on<strong>de</strong> D i =<br />
{<br />
1 se di = a i<br />
0 se d i ≠ a i<br />
(4)<br />
A taxa <strong>de</strong> falsos negativos (Tx fn ) apresenta a quantida<strong>de</strong> <strong>de</strong> vezes em que nós<br />
egoístas ou maliciosos foram i<strong>de</strong>ntificados como nós bons em razão da quantida<strong>de</strong> <strong>de</strong><br />
interação dos nós <strong>de</strong> má-conduta. Essa métrica é calculada pela Equação 5, em que A<br />
é o conjunto <strong>de</strong> todas as interações <strong>de</strong> nós <strong>de</strong> má-conduta no sistema e os respectivos<br />
resultados obtidos peloQS 2 , dado na forma <strong>de</strong>A(d,a), em quedéoresultado da <strong>de</strong>tecção<br />
realizada pelo QS 2 eaéaverda<strong>de</strong>ira condição do nói.<br />
Tx fn =<br />
∑<br />
Di<br />
|A|<br />
∀i ∈ A on<strong>de</strong> D i =<br />
{ 1 se di ≠ a i<br />
0 se d i = a i<br />
(5)<br />
A taxa <strong>de</strong> falsos positivos (Tx fp ) representa a quantida<strong>de</strong> <strong>de</strong> vezes que os nós<br />
consi<strong>de</strong>raram um nó como malicioso ou egoísta em razão da quantida<strong>de</strong> <strong>de</strong> interação<br />
dos nós bons no sistema. A Tx fp é calculada <strong>de</strong> acordo com a Equação 6, em que B<br />
representa o conjunto <strong>de</strong> interações <strong>de</strong> nós bons no sistema, na forma <strong>de</strong>B = (d,a), on<strong>de</strong><br />
d representa o valor da <strong>de</strong>tecção realizada pelo QS 2 e a é a condição real do nó, on<strong>de</strong><br />
a = 1 representa um nó <strong>de</strong> má-conduta ea = 0 representa um nó bom.<br />
Tx fp =<br />
∑<br />
Di<br />
|B|<br />
∀i ∈ B on<strong>de</strong> D i =<br />
{ 1 se di ≠ a i<br />
0 se d i = a i<br />
(6)<br />
As subseções seguintes apresentam os resultados da avaliação <strong>de</strong> <strong>de</strong>sempenho e<br />
<strong>de</strong> eficiência do QS 2 obtidas através <strong>de</strong> simulações.<br />
5.2. Desempenho<br />
As Figuras 5 e 6 comparam os resultados para a métrica G c obtidos pelo PAN e pelo<br />
PAN+QS 2 diante dos ataques <strong>de</strong> falta <strong>de</strong> cooperação, temporização e injeção <strong>de</strong> dados.<br />
Nos ataques <strong>de</strong> falta <strong>de</strong> cooperação, o uso do esquemaQS 2 representa um aumento <strong>de</strong> até<br />
14% em relação aoG c obtido pelo PAN sem oQS 2 , sendo que a confiabilida<strong>de</strong> dos dados<br />
em cenários com ataques nas escritas é acima <strong>de</strong> 95% e para ataques nas leituras é acima<br />
<strong>de</strong> 98%, mesmo consi<strong>de</strong>rando a ação egoísta <strong>de</strong> 36% dos nós. É interessante observar que<br />
a velocida<strong>de</strong> e a quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta na re<strong>de</strong> têm uma influência menor no<br />
PAN+QS 2 , mostrada na Figura 6(a), do que sem a solução, apresentada na Figura 5(a).<br />
A variação entre o G c obtido com nós a 2m/s e com 20m/s é menor que 2%. Essa característica<br />
é importante, pois a velocida<strong>de</strong> dos nós não interfere no funcionamento do<br />
QS 2 . De fato, a mobilida<strong>de</strong> garante que os nós recebam dados por rotas diferentes, e<br />
contabilizem as escritas e os encaminhamentos <strong>de</strong> diferentes nós.<br />
Já o ataque <strong>de</strong> temporização não apresenta um gran<strong>de</strong> impacto no PAN, como<br />
ilustra a Figura 5(b), e por isso, oQS 2 não apresenta um aumento significativo nos resultados.<br />
Isso também é influenciado pelo fato <strong>de</strong> que o QS 2 não i<strong>de</strong>ntifica especificamente<br />
os nós que atrasam a propagação, que são consi<strong>de</strong>rados egoístas como consequência do<br />
seu comportamento na re<strong>de</strong>. Porém, a classificação <strong>de</strong>les como nós egoístas é <strong>de</strong>morada,<br />
248
(a) Falta <strong>de</strong> cooperação<br />
(b) Temporização<br />
(c) Injeção <strong>de</strong> dados<br />
100<br />
Leitura<br />
Escrita<br />
100<br />
f=5 f=7 f=9<br />
100<br />
Leitura<br />
Escrita<br />
90<br />
90<br />
90<br />
80<br />
80<br />
80<br />
70<br />
70<br />
70<br />
Gc (%)<br />
60<br />
50<br />
40<br />
60<br />
50<br />
40<br />
60<br />
50<br />
40<br />
30<br />
30<br />
30<br />
20<br />
20<br />
20<br />
10<br />
10<br />
10<br />
0<br />
5 7 9 5 7 9 5 7 9 5 7 9<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
0<br />
4 8 30 4 8 30 4 8 30 4 8 30<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
0<br />
5 7 9 5 7 9 5 7 9 5 7 9<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
Figura 5. G c do PAN diante <strong>de</strong> ataques<br />
(a) Falta <strong>de</strong> cooperação<br />
(b) Temporização<br />
(c) Injeção <strong>de</strong> dados<br />
100<br />
Leitura<br />
Escrita<br />
100<br />
f=5 f=7 f=9<br />
100<br />
Leitura<br />
Escrita<br />
90<br />
90<br />
90<br />
80<br />
80<br />
80<br />
70<br />
70<br />
70<br />
Gc (%)<br />
60<br />
50<br />
40<br />
60<br />
50<br />
40<br />
60<br />
50<br />
40<br />
30<br />
30<br />
30<br />
20<br />
20<br />
20<br />
10<br />
10<br />
10<br />
0<br />
5 7 9 5 7 9 5 7 9 5 7 9<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
0<br />
4 8 30 4 8 30 4 8 30 4 8 30<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
0<br />
5 7 9 5 7 9 5 7 9 5 7 9<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
Figura 6. G c do PAN +QS 2 diante <strong>de</strong> ataques<br />
sendo que em alguns cenários o G c obtido pelo PAN + QS 2 é ligeiramente inferior do<br />
que no PAN, apresentado na Figura 6(b). Porém essa variação é pequena, aproximadamente<br />
0,42%. Conforme os nós <strong>de</strong> má-conduta aumentam o atraso das propagações, o<br />
QS 2 apresenta um ganho mais acentuado do G c , aproximadamente 1,8% em cenários<br />
com atraso <strong>de</strong> 800ms e 2% com T = 3000ms. Mesmo assim, em todos os cenários, o G c<br />
obtido está acima <strong>de</strong> 95%.<br />
Já os ataques <strong>de</strong> injeção <strong>de</strong> dados representam a maior vulnerabilida<strong>de</strong> do PAN,<br />
como mostra a Figura 5(c). Nesses cenários, a confiabilida<strong>de</strong> dos dados é inferior a 30%.<br />
Logo, o uso doQS 2 diante <strong>de</strong>sses ataques resultou em um ganho significativo para o PAN,<br />
que obteve um aumento <strong>de</strong> até 87% na confiabilida<strong>de</strong>, como ilustrado na Figura 6(c). Esse<br />
comportamento ocorre tanto nos ataques nas escritas como nas leituras, sendo que oG c é<br />
maior para as leituras, já que as escritas comprometem <strong>de</strong> forma mais eficaz a replicação.<br />
Mesmo assim, as escritas em todos os cenários mantém o G c acima <strong>de</strong> 80%.<br />
Ainda no ataque <strong>de</strong> injeção <strong>de</strong> dados falsos, o G c possui um comportamento diferente<br />
dos ataques <strong>de</strong> falta <strong>de</strong> cooperação e temporização, ocasionado pelas próprias<br />
características da re<strong>de</strong>. Elas fazem com que o PAN +QS 2 obtenha níveis mais altos <strong>de</strong><br />
G c com velocida<strong>de</strong>s maiores. Esse comportamento também é observado no PAN diante<br />
<strong>de</strong> ataques, e acontece porque nesse tipo <strong>de</strong> ataque os nós maliciosos per<strong>de</strong>m sua eficácia<br />
em velocida<strong>de</strong>s maiores, <strong>de</strong>vido à dificulda<strong>de</strong> na entrega <strong>de</strong> pacotes em geral, inclusive<br />
<strong>de</strong> pacotes falsos injetados pelos nós maliciosos. A perda <strong>de</strong> pacotes também influencia<br />
na <strong>de</strong>tecção <strong>de</strong> nós que estejam com dificulda<strong>de</strong> <strong>de</strong> comunicação, que também po<strong>de</strong>m ser<br />
consi<strong>de</strong>rados egoístas. Neste caso, o QS 2 ajuda o sistema a manter os dados em nós cuja<br />
conectivida<strong>de</strong> é boa, facilitando uma posterior consulta pelos clientes.<br />
249
Para verificar o <strong>de</strong>sempenho do QS 2 diante dos vários tipos <strong>de</strong> ataque em conjunto,<br />
foi simulado um cenário em que os nós iniciam os três tipos <strong>de</strong> ataques consi<strong>de</strong>rados.<br />
Foram simulados cenários com f igual a 5, 10 e 15, sendo que cada ataque é<br />
<strong>de</strong>sempenhado por 20% do total <strong>de</strong> nós maliciosos. Os ataques consi<strong>de</strong>rados são os <strong>de</strong><br />
falta <strong>de</strong> cooperação nas leituras e nas escritas, temporização (T =3000) e injeção <strong>de</strong> dados<br />
na leitura e na escrita. A velocida<strong>de</strong> média dos nós varia <strong>de</strong> 0m/s a 20m/s. Os <strong>de</strong>mais<br />
parâmetros são os mesmos utilizados na avaliação doPAN +QS 2<br />
A Figura 7 apresenta os resultados obtidos com esses cenários. Observa-se que<br />
conforme a quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta aumenta, o G c diminui, porém enquanto<br />
a quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta é a mesma, a variação do G c <strong>de</strong> acordo com a velocida<strong>de</strong><br />
é pequena, o que evi<strong>de</strong>ncia que a solução ten<strong>de</strong> a manter um mesmo nível <strong>de</strong><br />
leituras corretamente concluídas, in<strong>de</strong>pen<strong>de</strong>nte da velocida<strong>de</strong>. Essa variação, em todos<br />
os cenários <strong>de</strong> diferentes quantida<strong>de</strong>s <strong>de</strong> nós <strong>de</strong> má-conduta, é <strong>de</strong> aproximadamente 1%.<br />
Esse comportamento representa uma vantagem ao sistema, já que os nós das MANETs<br />
po<strong>de</strong>m variar a velocida<strong>de</strong> e oPAN +QS 2 mantém a confiabilida<strong>de</strong> acima <strong>de</strong> 92% para<br />
todos os cenários simulados, mesmo diante <strong>de</strong> mais <strong>de</strong> 50% dos nós comprometidos.<br />
100<br />
99<br />
f=20%<br />
f=40%<br />
f=60%<br />
98<br />
97<br />
96<br />
Gc (%)<br />
95<br />
94<br />
93<br />
92<br />
91<br />
90<br />
−1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21<br />
Velocida<strong>de</strong> máxima (m/s)<br />
Figura 7. G c com nós egoístas e maliciosos em conjunto<br />
5.3. Eficiência<br />
As Figuras 8 e 9 apresentam os resultados <strong>de</strong> Tx <strong>de</strong>t , Tx fn e Tx fp para nós egoístas e<br />
maliciosos, referente aos cenários <strong>de</strong> simulação utilizados para a validação do PAN +<br />
QS 2 . Para os nós egoístas, a taxa <strong>de</strong> <strong>de</strong>tecção obtida peloQS 2 é superior a 98,5%, como<br />
ilustra a Figura 8(a). Isso se <strong>de</strong>ve à característica do QS 2 , em que uma vez i<strong>de</strong>ntificado<br />
como egoísta, um nó só é consi<strong>de</strong>rado bom novamente se cooperar com os <strong>de</strong>mais. Essa<br />
taxa <strong>de</strong> <strong>de</strong>tecção se mantém para todas as velocida<strong>de</strong>s e quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta<br />
presentes no ambiente. Para os nós maliciosos, a taxa <strong>de</strong> <strong>de</strong>tecção é em média <strong>de</strong> 80%,<br />
conforme ilustrado na Figura 9(a). Essa diferença <strong>de</strong> <strong>de</strong>tecção entre os nós egoístas e<br />
maliciosos ocorre porque oQS 2 i<strong>de</strong>ntifica os nós maliciosos pelo comportamento em um<br />
<strong>de</strong>terminado intervalo <strong>de</strong> tempo, e com o passar do tempo, os nós maliciosos não são mais<br />
contatados, diminuindo a interação <strong>de</strong>les com o sistema. Isso resulta na normalização do<br />
nível <strong>de</strong> autoindutores relativo ao nó malicioso nos <strong>de</strong>mais nós do sistema, ocasionando<br />
os nós bons a interagir novamente com eles.<br />
Os falsos negativos obtidos pelo QS 2 na <strong>de</strong>tecção <strong>de</strong> nós egoístas, apresentado<br />
na Figura 8(b), é inferior a 2%. Isso mostra que poucos nós egoístas não são <strong>de</strong>tectados<br />
quando selecionados. A falha na <strong>de</strong>tecção <strong>de</strong> um nó egoísta po<strong>de</strong> acontecer <strong>de</strong>vido a autonomia<br />
na <strong>de</strong>tecção, que permite que os nós contem individualmente os autoindutores,<br />
250
(a) Taxa <strong>de</strong> <strong>de</strong>tecção<br />
(b) Falsos negativos<br />
(c) Falsos positivos<br />
100<br />
90<br />
80<br />
100<br />
90<br />
80<br />
100<br />
90<br />
80<br />
f=5<br />
f=7<br />
f=9<br />
70<br />
70<br />
70<br />
Tx <strong>de</strong>t (%)<br />
60<br />
50<br />
40<br />
Tx fn (%)<br />
60<br />
50<br />
40<br />
Tx fp (%)<br />
60<br />
50<br />
40<br />
30<br />
30<br />
30<br />
20<br />
20<br />
20<br />
10<br />
10<br />
10<br />
0<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
0<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
0<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
Figura 8. Eficiência na <strong>de</strong>tecção <strong>de</strong> nós egoístas<br />
(a) Taxa <strong>de</strong> <strong>de</strong>tecção<br />
(b) Falsos negativos<br />
(c) Falsos positivos<br />
100<br />
90<br />
80<br />
100<br />
90<br />
80<br />
100<br />
90<br />
80<br />
f=5<br />
f=7<br />
f=9<br />
70<br />
70<br />
70<br />
Tx <strong>de</strong>t (%)<br />
60<br />
50<br />
40<br />
Tx fn (%)<br />
60<br />
50<br />
40<br />
Tx fp (%)<br />
60<br />
50<br />
40<br />
30<br />
30<br />
30<br />
20<br />
20<br />
20<br />
10<br />
10<br />
10<br />
0<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
0<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
0<br />
2m/s 5m/s 10m/s 20m/s<br />
Velocida<strong>de</strong> máxima<br />
Figura 9. Eficiência na <strong>de</strong>tecção <strong>de</strong> nós maliciosos<br />
e <strong>de</strong>ssa forma, alguns nós po<strong>de</strong>m <strong>de</strong>morar a i<strong>de</strong>ntificar <strong>de</strong>terminados nós como egoístas.<br />
Para os nós maliciosos, os falsos negativos são <strong>de</strong> aproximadamente 20%, conforme apresentado<br />
pela Figura 9(b), sendo menor em cenários com menos nós <strong>de</strong> má-conduta participando<br />
na re<strong>de</strong>. Esse aumento <strong>de</strong> falsos negativos no ataque <strong>de</strong> injeção <strong>de</strong> dados acontece<br />
pela normalização dos autoindutores <strong>de</strong> escrita, já explicada anteriormente.<br />
A taxa <strong>de</strong> falsos positivos obtidos pelo QS 2 , tanto na <strong>de</strong>tecção <strong>de</strong> nós egoístas,<br />
ilustrada na Figura 8(c), quanto <strong>de</strong> nós maliciosos, ilustrada na Figura 9(c), é inferior<br />
a 2%. Algumas <strong>de</strong>tecções equivocadas são esperadas e po<strong>de</strong>m acontecer se um nó está<br />
muito distante na re<strong>de</strong> e apresenta dificulda<strong>de</strong> em interagir com o restante da re<strong>de</strong>, ou<br />
se um nó faz muitas escritas contínuas para o mesmo grupo <strong>de</strong> nós. Deste modo, momentaneamente<br />
eles são consi<strong>de</strong>rados nós <strong>de</strong> má-conduta, porém conforme ocorre a<br />
movimentação e a interação dos nós, eventualmente eles são i<strong>de</strong>ntificados como nós bons.<br />
6. Conclusão<br />
Este artigo propôs QS 2 , um esquema para a exclusão <strong>de</strong> nós egoístas e maliciosos das<br />
operações <strong>de</strong> escrita e <strong>de</strong> leitura em um sistema <strong>de</strong> quórum para MANETs. O QS 2 é inspirado<br />
nos mecanismos <strong>de</strong> sensoriamento em quórum e <strong>de</strong> seleção por parentesco, ambos<br />
encontrados em bactérias. Ele i<strong>de</strong>ntifica os nós <strong>de</strong> má-conduta <strong>de</strong> forma in<strong>de</strong>pen<strong>de</strong>nte<br />
através da quantida<strong>de</strong> <strong>de</strong> escritas e encaminhamentos enviados por outros nós e não requer<br />
a troca <strong>de</strong> informações <strong>de</strong> reputação entre eles. Além disso, esse esquema utiliza a<br />
própria troca <strong>de</strong> mensagens <strong>de</strong> escrita para a <strong>de</strong>tecção dos nós <strong>de</strong> má-conduta, o que não<br />
gera maiores custos <strong>de</strong> comunicação para os nós da re<strong>de</strong>.<br />
Os resultados obtidos mostram que o QS 2 aumentou a confiabilida<strong>de</strong> <strong>de</strong> um sis-<br />
251
tema <strong>de</strong> quórum para MANETs em até 87% diante <strong>de</strong> ataques <strong>de</strong> injeção <strong>de</strong> dados nas<br />
escritas. A <strong>de</strong>tecção <strong>de</strong> nós egoístas apresentou uma eficácia <strong>de</strong> 98,5% com uma taxa<br />
<strong>de</strong> falsos positivos menor que 2%, e a <strong>de</strong>tecção <strong>de</strong> nós maliciosos obteve uma eficácia <strong>de</strong><br />
80%, com uma taxa <strong>de</strong> falsos positivos inferior a 1%. Como trabalhos futuros, preten<strong>de</strong>-se<br />
testar o uso do QS 2 em outros cenários <strong>de</strong> MANETs, variando parâmetros como velocida<strong>de</strong>,<br />
quantida<strong>de</strong> <strong>de</strong> nós e quantida<strong>de</strong> <strong>de</strong> nós <strong>de</strong> má-conduta presente na re<strong>de</strong>.<br />
Referências<br />
Bellavista, P., Corradi, A., and Magistretti, E. (2005). Redman: An optimistic replication middleware for<br />
read-only resources in <strong>de</strong>nse manets. Pervasive Mobile Computing, 1:279–310.<br />
Derhab, A. and Badache, N. (2009). Data replication protocols for mobile ad-hoc networks: a survey and<br />
taxonomy. IEEE Communications Surveys and Tutorials, 11:33–51.<br />
Gramoli, V. and Raynal, M. (2007). Timed Quorum Systems for Large-Scale and Dynamic Environments,<br />
pages 429–442.<br />
Luo, J., Hubaux, J.-P., and Eugster, P. T. (2003). PAN: Providing reliable storage in mobile ad hoc networks<br />
with probabilistic quorum systems. In Proceedings of the 4th ACM International Symposium on Mobile<br />
Ad Hoc Networking and Computing (MobiHoc ’03), pages 1–12.<br />
Malkhi, D. and Reiter, M. (1997). Byzantine quorum systems. In Proceedings of the 29th Annual ACM<br />
Symposium on Theory of Computing (STOC ’97), pages 569–578.<br />
Malkhi, D., Reiter, M., Wool, A., and Wright, R. N. (1998). Probabilistic byzantine quorum systems. In<br />
Proceedings of the seventeenth annual ACM symposium on Principles of distributed computing, PODC<br />
’98, pages 321–322.<br />
Mannes, E., da Silva, E., and dos Santos, A. L. (2009). Analisando o <strong>de</strong>sempenho <strong>de</strong> um sistema <strong>de</strong><br />
quóruns probabilístico para manets diante <strong>de</strong> ataques maliciosos. In <strong>Anais</strong> do IX Simpósio Brasileiro em<br />
Segurança da Informação e <strong>de</strong> Sistemas Computacionais (SBSeg ’09), pages 71–84.<br />
Meisel, M., Pappas, V., and Zhang, L. (2010). A taxonomy of biologically inspired research in computer<br />
networking. Computer Networks, 54:901–916.<br />
Ng, W.-L. L. and Bassler, B. L. (2009). Bacterial quorum-sensing network architectures. Annual Review of<br />
Genetics, 43(1):197–222.<br />
Saito, Y. and Shapiro, M. (2005). Optimistic replication. ACM Computer Survey, 37:42–81.<br />
Salmon, H. M., Miceli, C., Pirmez, L., Rossetto, S., Rodrigues, P. H. A., Pirmez, R., Delicato, F. C.,<br />
and Carmo, L. F. (2010). Sistema <strong>de</strong> <strong>de</strong>tecção <strong>de</strong> intrusão imuno-inspirado customizado para re<strong>de</strong>s <strong>de</strong><br />
sensores sem fio. In Simpósio Brasileiro em Segurança da Informação e <strong>de</strong> Sistemas Computacionais<br />
(SBSeg ’10), pages 269–282.<br />
Tulone, D. (2007). Ensuring strong data guarantees in highly mobile ad hoc networks via quorum systems.<br />
Ad Hoc Networks, 5(8):1251–1271.<br />
Yang, H., Meng, X., and Lu, S. (2002). Self-organized network-layer security in mobile ad hoc networks.<br />
In Proceedings of the 1st ACM workshop on Wireless security (WiSE ’02), pages 11–20.<br />
Zhang, C., Song, Y., and Fang, Y. (2008). Mo<strong>de</strong>ling secure connectivity of self-organized wireless ad hoc<br />
networks. In Proceedings of the 27th Annual Joint Conference of the IEEE Computer and Communications<br />
Societies (INFOCOM ’08).<br />
Zhu, Z., Tan, Q., and Zhu, P. (2007). An effective secure routing for false data injection attack in wireless<br />
sensor network. In Managing Next Generation Networks and Services, volume 4773, pages 457–465.<br />
252
Aumentando a segurança do MD6 em relação aos ataques<br />
diferenciais<br />
Valdson S. Cleto 1 , Routo Terada 1<br />
1 Instituto <strong>de</strong> Matemática e Estatística – Universida<strong>de</strong> <strong>de</strong> São Paulo (USP)<br />
São Paulo – SP – Brazil<br />
vcleto@gmail.com, rt@ime.usp.br<br />
Abstract. This paper proposes a modification on the compression function of<br />
the MD6 hash function that increases the security of the function regarding the<br />
differential attacks. Such modification enables a reduction of up to 28% in the<br />
number of rounds nee<strong>de</strong>d to <strong>de</strong>monstrate the strength of the MD6 compression<br />
function against differential attacks.<br />
Resumo. Este artigo propõe uma modificação na função <strong>de</strong> compressão da<br />
função <strong>de</strong> hash MD6 para aumentar a segurança da função em relação aos<br />
ataques diferenciais. Tal modificação possibilita uma redução <strong>de</strong> até 28% no<br />
número <strong>de</strong> rodadas necessárias para a <strong>de</strong>monstração da resistência da função<br />
<strong>de</strong> compressão do MD6 aos ataques diferenciais.<br />
1. Introdução<br />
A função <strong>de</strong> hash MD6 foi apresentada em outubro <strong>de</strong> 2008 por [Rivest et al. 2008] como<br />
uma candidata para a competição organizada pelo instituto norte-americano NIST (National<br />
Institute of Standards and Technology) para a escolha <strong>de</strong> um novo algoritmo <strong>de</strong> hash<br />
padrão, que receberá o título <strong>de</strong> SHA-3 (o algoritmo padrão <strong>de</strong> hash atual é o SHA-2).<br />
Porém, em julho <strong>de</strong> 2009 Ron Rivest emitiu um comunicado (http:<br />
//groups.csail.mit.edu/cis/md6/OFFICIAL_COMMENT_MD6_<br />
2009-07-01.txt) informando que naquele momento o MD6 não aten<strong>de</strong>ria os<br />
requisitos <strong>de</strong> velocida<strong>de</strong> necessários para um candidato a SHA-3 e portanto não recomendava<br />
que o MD6 passasse para a segunda fase da competição. Então o MD6 não<br />
apareceu na lista dos candidatos que passaram à segunda fase.<br />
O NIST estabeleceu que, para ser competitivo, um candidato a SHA-3 precisaria<br />
ser no mínimo tão rápido quanto o SHA-2 em plataformas <strong>de</strong> referência. Embora o MD6<br />
seja muito rápido em sistemas multiprocessados, nas plataformas <strong>de</strong> referência ele é bem<br />
mais lento que o SHA-2.<br />
Ron Rivest alertou os organizadores da competição que o algoritmo <strong>de</strong> SHA-3 que<br />
viesse a ser escolhido <strong>de</strong>veria ser <strong>de</strong>monstravelmente resistente a ataques diferenciais,<br />
visto que foi o po<strong>de</strong>r surpreen<strong>de</strong>nte dos ataques diferenciais que estimulou a competição<br />
para escolha do SHA-3.<br />
O que torna o MD6 significativamente mais lento que os outros competidores nas<br />
plataformas <strong>de</strong> referência é o número <strong>de</strong> rodadas da função <strong>de</strong> compressão que teve que<br />
ser adotado justamente para torná-lo <strong>de</strong>monstravelmente resistente a ataques diferenciais.<br />
253
A <strong>de</strong>monstração da resistência do MD6 a ataques diferenciais é apresentada na<br />
seção 6.9 em [Rivest et al. 2008]. Ao final <strong>de</strong>ssa seção são sugeridas algumas possibilida<strong>de</strong>s<br />
<strong>de</strong> investigação para se tentar <strong>de</strong>monstrar a resistência do MD6 a ataques diferencias<br />
com um número menor <strong>de</strong> rodadas. O resultado da investigação <strong>de</strong> uma <strong>de</strong>ssas<br />
possibilida<strong>de</strong>s foi a <strong>de</strong>scoberta <strong>de</strong> uma modificação na função <strong>de</strong> compressão do MD6<br />
que permite que a <strong>de</strong>monstração da resistência do MD6 a ataques diferencias seja feita<br />
com uma redução <strong>de</strong> até 28% no número <strong>de</strong> rodadas, o que resulta na possibilida<strong>de</strong> <strong>de</strong><br />
aumentar a velocida<strong>de</strong> <strong>de</strong> processamento do MD6 praticamente nesta mesma proporção.<br />
2. Demonstração da resistencia do MD6 a ataques diferenciais<br />
A investigação apresentada nesse artigo foi feita a partir da <strong>de</strong>monstração da resistência<br />
do MD6 a ataques diferenciais apresentada em [Rivest et al. 2008] na seção 6.9. Nesta<br />
seção será apresentada uma visão geral <strong>de</strong>ssa <strong>de</strong>monstração.<br />
Para a <strong>de</strong>monstração é feita uma análise da resistência da função <strong>de</strong> compressão<br />
do MD6 a ataques diferenciais que buscam encontrar uma colisão na função <strong>de</strong> hash. Estes<br />
ataques consistem em se escolher pares <strong>de</strong> mensagens <strong>de</strong> entrada com <strong>de</strong>terminadas<br />
diferenças tentando-se encontrar um par tal que o par <strong>de</strong> resumo da mensagem na saída<br />
da função <strong>de</strong> hash não tenha diferença, o que significa encontrar uma colisão. Se a probabilida<strong>de</strong><br />
<strong>de</strong> se encontrar esse par <strong>de</strong> mensagens não é <strong>de</strong>sprezível, então calculando-se<br />
o resumo das mensagens <strong>de</strong> uma quantida<strong>de</strong> suficiente <strong>de</strong> pares <strong>de</strong> mensagens <strong>de</strong> entrada<br />
po<strong>de</strong>-se encontrar uma colisão.<br />
A função <strong>de</strong> compressão do MD6 po<strong>de</strong> ser representada pelo algoritmo 1.<br />
Algoritmo 1 Função <strong>de</strong> compressão<br />
Entrada: A[0 · · · 88] <strong>de</strong> A[0 · · · 16r + 88]<br />
para i = 89 a 16r + 88 :<br />
x = S i ⊕ A[i − 17] ⊕ A[i − 89] ⊕ (A[i − 18] ∧ A[i − 21]) ⊕ (A[i − 31] ∧ A[i − 67])<br />
x = x ⊕ (x >> r i )<br />
A[i] = x ⊕ (x
Tabela 1. Quantida<strong>de</strong> <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />
r i 10 5 13 10 11 12 2 7 14 15 7 13 11 7 6 12<br />
l i 11 24 9 16 15 9 27 15 6 2 29 8 15 5 31 9<br />
<strong>de</strong> hash. A forma <strong>de</strong> medida mais utilizada é o ou-exclusivo, e é a forma utilizada nessa<br />
<strong>de</strong>monstração.<br />
Um caminho diferencial é um conjunto <strong>de</strong> diferenças entre o par <strong>de</strong> entradas, todos<br />
os estados intermediários e o par <strong>de</strong> saídas. Para o MD6 po<strong>de</strong>mos expressar um caminho<br />
diferencial como: ∆A i para i = 0, . . . , t + n − 1.<br />
É fácil notar que um caminho diferencial <strong>de</strong> colisão é um caminho on<strong>de</strong> ∆A i = 0<br />
para i = t + n − c, . . . , t + n − 1.<br />
A proprieda<strong>de</strong> mais importante <strong>de</strong> um caminho diferencial é a sua probablida<strong>de</strong><br />
associada. A probabilida<strong>de</strong> <strong>de</strong> um <strong>de</strong>terminado passo i <strong>de</strong> um caminho diferencial, p i , é<br />
<strong>de</strong>finida como a probabilida<strong>de</strong> <strong>de</strong> que o par <strong>de</strong> saída do passo siga o caminho diferencial,<br />
dado que o par <strong>de</strong> entrada satisfaz a diferença especificada pelo caminho diferencial.<br />
A probabilida<strong>de</strong> total <strong>de</strong> um caminho diferencial, p, é o produto das probabilida<strong>de</strong><br />
em todos os passos, se for assumido que o cálculo dos passos são in<strong>de</strong>pen<strong>de</strong>ntes entre si.<br />
Definimos D i como o peso <strong>de</strong> Hamming <strong>de</strong> uma <strong>de</strong>terminada diferença ∆A i , ou<br />
seja, o número <strong>de</strong> bits diferentes entre A i e A ′ i, ou D i = |∆A i |. Então, para um caminho<br />
diferencial {∆A i } <strong>de</strong>finimos um caminho diferencial <strong>de</strong> padrão <strong>de</strong> peso como {D i }.<br />
2.1. Análise das proprieda<strong>de</strong>s diferencias das operações da função <strong>de</strong> compressão<br />
Cada rodada da função <strong>de</strong> compressão do MD6 é composta por 16 passos e em cada passo<br />
uma nova palavra <strong>de</strong> 64 bits é calculada Para a análise das proprieda<strong>de</strong>s diferenciais <strong>de</strong><br />
cada uma das 3 diferentes operações contidas em cada passo: XOR, AND e o operador g,<br />
que representa as operações <strong>de</strong> <strong>de</strong>slocamentos <strong>de</strong> bits, será adotada a seguinte notação:<br />
• X, Y, Z para as entradas e saídas <strong>de</strong> w bits<br />
• ∆X, ∆Y, ∆Z para as diferenças<br />
• D X , D Y , D Z para os pesos <strong>de</strong> Hamming<br />
• x, y, z para um bit <strong>de</strong> palavras <strong>de</strong> w bits<br />
A proprieda<strong>de</strong> diferencial da operação XOR é direta, ∆Z = ∆X ⊕ ∆Y . Em<br />
termos do peso <strong>de</strong> Hamming, temos que: max(D X , D Y ) − min(D X , D Y ) ≤ D Z ≤<br />
D X + D Y .<br />
Uma operação AND entre duas paravras <strong>de</strong> w bits po<strong>de</strong> ser vista como um conjunto<br />
<strong>de</strong> w portas AND in<strong>de</strong>pen<strong>de</strong>ntes. Se os bits <strong>de</strong> entrada <strong>de</strong> cada porta AND forem<br />
x e y e a saída for z, o comportamento diferencial da porta AND <strong>de</strong>pen<strong>de</strong> das diferenças<br />
nas entradas, ou seja, ∆x e ∆y. Consi<strong>de</strong>ramos estes dois casos:<br />
• Chamamos <strong>de</strong> porta AND “inativa” quando ∆x = ∆y = 0 e portanto temos que<br />
Pr[∆z = 0] = 1.<br />
• Chamamos <strong>de</strong> porta AND “ativa” quando ∆x = 1 ou ∆y = 1 e portanto temos<br />
que Pr[∆z = 0] = Pr[∆z = 1] = 1/2<br />
255
Em termos do peso <strong>de</strong> Hamming, temos que:<br />
0 ≤ D Z ≤ D X + D Y (1)<br />
As portas AND ativas, ou AAG’s, do inglês, Active AND Gates, serão fundamentais<br />
na <strong>de</strong>monstração da carga <strong>de</strong> trabalho mínima <strong>de</strong> um ataque diferencial, já que<br />
esta é a única operação não trivial em termos <strong>de</strong> probabilida<strong>de</strong>s diferenciais. Uma porta<br />
AND ativa (AAG) sempre contribui com um probabilida<strong>de</strong> igual a 1/2 para a probabilida<strong>de</strong><br />
total do caminho diferencial, não importa qual seja a diferença <strong>de</strong> saída da porta<br />
AND. O número total <strong>de</strong> portas AND ativas em um caminho diferencial está diretamente<br />
relacionado à probabilida<strong>de</strong> total do caminho.<br />
O operador g r,l faz um espalhamento dos bits <strong>de</strong>ntro <strong>de</strong> uma palavra. Sabemos<br />
que se Z = g r,l (X), então ∆Z = g r,l (∆X).<br />
A combinação <strong>de</strong> um <strong>de</strong>slocamento e um XOR po<strong>de</strong> no máximo dobrar o número<br />
<strong>de</strong> diferenças, como são realizadas duas combinações <strong>de</strong> operações (uma com <strong>de</strong>slocamento<br />
pra direita e outra com <strong>de</strong>slocamento pra esquerda) temos que: D Z ≤ 4D X .<br />
Cada par <strong>de</strong> quantida<strong>de</strong> <strong>de</strong> <strong>de</strong>slocamentos (r, l) foi escolhido <strong>de</strong> forma que se<br />
0 < D X ≤ 4 então D Z ≥ 2.<br />
Ou seja, para que a diferença na saída seja <strong>de</strong> apenas um bit é necessário que a<br />
diferença na entrada seja <strong>de</strong> 5 ou mais bits. Isto foi projetado <strong>de</strong>sta forma para impedir<br />
a propagação <strong>de</strong> diferenças <strong>de</strong> apenas um bit, dificultando a obtenção <strong>de</strong> caminhos diferenciais<br />
com pesos <strong>de</strong> Hamming muito baixos, sendo impossivel conseguir um caminho<br />
on<strong>de</strong> todos os pesos são no máximo 1.<br />
Se D X > 4 então D Z > 0, já que se existem diferenças na entrada <strong>de</strong>vem existir<br />
diferenças na saída.<br />
Vamos agora combinar em duas partes as operações executadas em um passo:<br />
X = A i−t0 ⊕ A i−t5 ⊕ (A i−t1 ∧ A i−t2 ) ⊕ (A i−t3 ∧ A i−t4 ), (2)<br />
A i = g(X). (3)<br />
Usando as <strong>de</strong>sigualdadas apresentadas para cada operação po<strong>de</strong>mos <strong>de</strong>rivar limites<br />
superior e inferior para D X :<br />
D X ≤ UB X =<br />
5∑<br />
D i−tk , (4)<br />
k=0<br />
D X ≥ LB X = max(D i−t0 , D i−t5 ) − min(D i−t0 , D i−t5 )<br />
4∑<br />
D i−tk . (5)<br />
Focando no peso <strong>de</strong> Hamming ao invés <strong>de</strong> se focar no real valor das diferenças<br />
per<strong>de</strong>-se certa precisão na análise, mas evita-se a complicação <strong>de</strong> ter que analizar como as<br />
diferenças <strong>de</strong> bit individualmente po<strong>de</strong>m se alinhar <strong>de</strong> um operação para outra, além <strong>de</strong><br />
possibilitar a busca <strong>de</strong> caminhos diferenciais <strong>de</strong> padrões <strong>de</strong> peso válidos através <strong>de</strong> uma<br />
busca auxiliada por um programa computacional.<br />
k=1<br />
256
2.2. Carga mínima <strong>de</strong> trabalho <strong>de</strong> um ataque diferencial padrão<br />
O objetivo agora é provar que ataques diferenciais padrão contra o MD6 são menos eficientes<br />
para encontrar colisões do que o ataque pelo paradoxo <strong>de</strong> aniversário. Ou seja,<br />
precisamos provar que a probabilida<strong>de</strong> <strong>de</strong> se encontrar qualquer caminho diferencial <strong>de</strong><br />
colisão na função <strong>de</strong> compressão do MD6 é no máximo 2 −d/2 , o que significa dizer que a<br />
carga <strong>de</strong> trabalho <strong>de</strong> um ataque diferencial padrão é no mínimo 2 d/2 , que é o limite teórico<br />
do paradoxo do aniversário.<br />
Como vimos, cada porta AND ativa em um caminho diferencial contribui com a<br />
probabilida<strong>de</strong> <strong>de</strong> 1/2, então se o número <strong>de</strong> portas AND ativas em um caminho diferencial<br />
válido do MD6 é no mínimo d/2, a probabilida<strong>de</strong> associada a este caminho será no<br />
máximo 2 −d/2 .<br />
Cada diferença <strong>de</strong> bit em um caminho diferencial <strong>de</strong> padrões <strong>de</strong> peso po<strong>de</strong> ativar<br />
até 4 portas AND em 4 passos distintos, uma para cada posição t 1 , t 2 , t 3 e t 4 . Em alguns<br />
casos uma diferença <strong>de</strong> bit po<strong>de</strong> não ativar as 4 portas AND, e estes casos <strong>de</strong>vem ser<br />
levados em consi<strong>de</strong>ração para não contarmos portas AND ativas a mais:<br />
• Se duas diferenças <strong>de</strong> bit ativam a mesma porta AND.<br />
• Se duas portas AND são ativadas no mesmo passo.<br />
• Se uma porta AND está além do limite <strong>de</strong> rodadas. Só contamos as portas AND<br />
ativas que tem as duas entradas <strong>de</strong>ntro do limite <strong>de</strong> rodadas em que está sendo<br />
feita a busca.<br />
Para fazer a busca <strong>de</strong> caminhos diferenciais <strong>de</strong> padrões <strong>de</strong> peso possíveis <strong>de</strong>sejamos<br />
eliminar o máximo possível <strong>de</strong> padrões inválidos. Utilizando (4) e (5) e as <strong>de</strong>sigualda<strong>de</strong>s<br />
mostradas para a função g, po<strong>de</strong>mos eliminar os seguintes valores <strong>de</strong> D i em um<br />
<strong>de</strong>terminado passo i:<br />
1. D i = 0 e LB X > 0<br />
2. D i > 4UB X<br />
3. D i = 1 e UB X < 5<br />
A tabela 2 mostra o resultado apresentado em [Rivest et al. 2008], obtido através<br />
<strong>de</strong> um programa computacional para buscar a número mínimo <strong>de</strong> portas AND ativas em<br />
qualquer padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial <strong>de</strong> até s rodadas.<br />
Tabela 2. Número mínimo <strong>de</strong> portas AND ativas em qualquer padrão <strong>de</strong> peso <strong>de</strong><br />
caminho diferencial <strong>de</strong> até s rodadas<br />
s ≤ 5 6 7 8 9 10 11 12 13 14 15<br />
Número mínimo <strong>de</strong> portas AND ativas 0 3 4 4 4 4 7 13 19 20 26<br />
Os valores encontrados na tabela 2 (principalmente o valor do número mínimo<br />
<strong>de</strong> portas AND ativas em s = 15 rodadas, 26) po<strong>de</strong>m ser utilizados para expandir o<br />
resultado a um número r qualquer <strong>de</strong> rodadas através da fórmula: AAG r ≥ AAG s ×<br />
⌊r/s⌋, on<strong>de</strong> AAG x é o número mínimo <strong>de</strong> portas AND ativas em x rodadas (AAG =<br />
Active AND Gate).<br />
Antes disso <strong>de</strong>ve-se tomar o cuidado <strong>de</strong> <strong>de</strong>ixar uma margem <strong>de</strong> segurança, porque<br />
alguém que tente atacar a função po<strong>de</strong> conseguir penetrar algumas rodadas no começo do<br />
257
cálculo do hash manipulando as entradas e influenciando o comportamento do caminho<br />
diferencial. Estabeleceu-se uma margem <strong>de</strong> segurança conservadora <strong>de</strong> 15 rodadas, ou<br />
seja, substitui-se na fórmula o número <strong>de</strong> rodadas r por r − 15.<br />
A tabela 3 mostra o resultado apresentado em [Rivest et al. 2008] para a carga <strong>de</strong><br />
trabalho mínima <strong>de</strong> um ataque diferencial padrão ao MD6 comparada com a carga <strong>de</strong><br />
trabalho <strong>de</strong> um ataque pelo paradoxo do aniversário, mostrando que a carga <strong>de</strong> trabalho<br />
<strong>de</strong> um ataque diferencial é maior que a carga <strong>de</strong> trabalho <strong>de</strong> um ataque pelo paradoxo do<br />
aniversário, que é o que se <strong>de</strong>sejava <strong>de</strong>monstrar.<br />
Tabela 3. Resultado apresentado em [Rivest et al. 2008] para a carga <strong>de</strong> trabalho<br />
mínima <strong>de</strong> um ataque diferencial padrão ao MD6 (LB é a carga <strong>de</strong> trabalho<br />
mínima e BB é a carga <strong>de</strong> trabalho <strong>de</strong> um ataque pelo paradoxo do aniversário)<br />
d r r − 15 ⌊ r−15⌋<br />
15 r−15 ≥ LB ≥ BB<br />
40 50 35 2 52 2 52 2 20<br />
80 60 45 3 78 2 78 2 40<br />
128 72 57 3 78 2 78 2 64<br />
160 80 65 4 104 2 104 2 80<br />
224 96 81 5 130 2 130 2 112<br />
256 104 89 5 150 2 150 2 128<br />
384 136 121 8 208 2 208 2 192<br />
512 168 153 10 260 2 260 2 256<br />
3. Redução do número <strong>de</strong> rodadas necessárias para a <strong>de</strong>monstração da<br />
resistência a ataques diferenciais<br />
Até aqui mostramos os resultados apresentados em [Rivest et al. 2008], nesta seção mostraremos<br />
os resultados <strong>de</strong> nossa investigação.<br />
Ao apresentar a <strong>de</strong>monstração da segurança do MD6 contra ataques diferenciais<br />
padrão, mostramos que ela é <strong>de</strong>pen<strong>de</strong>nte do número <strong>de</strong> rodadas utilizado na função <strong>de</strong><br />
compressão. O número <strong>de</strong> rodadas <strong>de</strong>ve garantir uma quantida<strong>de</strong> mínima <strong>de</strong> portas AND<br />
ativas na execução da função <strong>de</strong> compressão pois a resistência a um ataque diferencial<br />
está diretamente relacionada a essa quantida<strong>de</strong>.<br />
Ao final da seção 6.9.3.4 <strong>de</strong> [Rivest et al. 2008] são apresentadas algumas possibilida<strong>de</strong>s<br />
<strong>de</strong> investigação para se tentar <strong>de</strong>monstrar que o número mínimo <strong>de</strong> portas AND<br />
ativas em um número reduzido <strong>de</strong> rodadas s é maior do que o encontrado. Uma <strong>de</strong>ssas<br />
possibilida<strong>de</strong>s diz que po<strong>de</strong>m não existir caminhos diferenciais válidos para alguns dos<br />
padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial encontrados.<br />
Investigamos a existência <strong>de</strong> caminhos diferenciais válidos para cada padrão <strong>de</strong><br />
peso <strong>de</strong> caminho diferencial encontrado. Para isso, implementamos um algoritmo para realizar<br />
a busca por padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial <strong>de</strong> forma a obtermos os mesmos<br />
resultados apresentados na seção anterior. Então, acrescentamos a essa implementação<br />
um código para a busca por caminhos diferenciais válidos para um dado padrão <strong>de</strong> peso<br />
<strong>de</strong> caminho diferencial.<br />
Encontramos caminhos diferenciais válidos e, ao analisarmos como esses cami-<br />
258
nhos se formavam, i<strong>de</strong>ntificamos algumas características da tabela <strong>de</strong> quantida<strong>de</strong> <strong>de</strong> <strong>de</strong>slocamento<br />
<strong>de</strong> bits (tabela 1) que possibilitavam a formação <strong>de</strong>sses caminhos diferenciais.<br />
Então, modificamos o programa <strong>de</strong> busca da tabela <strong>de</strong> quantida<strong>de</strong> <strong>de</strong> <strong>de</strong>slocamento<br />
<strong>de</strong> bits utilizado pelos autores do MD6 para a <strong>de</strong>finição da tabela 1. Esse modificação<br />
foi feita para que a busca procurasse por tabelas sem as características que i<strong>de</strong>ntificamos<br />
como as responsáveis pela formação dos caminhos diferenciais válidos para os padrões <strong>de</strong><br />
peso <strong>de</strong> caminho diferencial com número mínimo <strong>de</strong> portas AND antivas. Encontramos<br />
uma nova tabela <strong>de</strong> acordo com essa restrição.<br />
Os resultados serão apresentados nesta seção.<br />
3.1. Verificando a existência <strong>de</strong> caminhos diferenciais válidos<br />
O padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial encontrado que resulta no número mínimo <strong>de</strong><br />
portas AND ativas em s rodadas po<strong>de</strong> não correspon<strong>de</strong>r a nenhum caminho diferencial<br />
válido. Por isso, adicionamos ao programa <strong>de</strong> busca <strong>de</strong> padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial<br />
a busca por um caminho diferencial válido quando um padrão <strong>de</strong> peso <strong>de</strong> caminho<br />
diferencial é encontrado. Caso nenhum caminho diferencial seja encontrado a busca por<br />
um padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial continua enquanto não for encontrado um<br />
caminho diferencial válido que corresponda a um dado padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial.<br />
Para 15 rodadas, vimos que o número mínimo <strong>de</strong> portas AND ativas é 26. Nosso<br />
programa <strong>de</strong>ve procurar algum caminho diferencial válido correspon<strong>de</strong>nte ao padrão <strong>de</strong><br />
peso <strong>de</strong> caminho diferencial encontrado, ou a qualquer outro padrão <strong>de</strong> peso <strong>de</strong> caminho<br />
diferencial com 26 portas AND ativas.<br />
Para buscar um caminho diferencial válido testamos todas as possibilida<strong>de</strong>s <strong>de</strong><br />
valores diferenciais possíveis para cada valor <strong>de</strong> peso do padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial<br />
e utilizamos as proprieda<strong>de</strong>s <strong>de</strong> cada uma das operações da função <strong>de</strong> compressão<br />
conforme mostrado em 2.1 na página 3.<br />
Com este programa, <strong>de</strong>scobrimos que para o primeiro padrão <strong>de</strong> peso <strong>de</strong> caminho<br />
diferencial encontrado para s = 15 com 26 portas AND ativas (D 54 = 1, D 71 = 2, D 143 =<br />
2, D 232 = 2), não existe caminho diferencial válido. Mas o programa encontrou outros<br />
padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial com 26 portas AND ativas, e encontrou um que<br />
tem um respectivo caminho diferencial válido. Para este padrão <strong>de</strong> peso <strong>de</strong> caminho<br />
diferencial: D 28 = 2, D 83 = 1, D 100 = 2, D 172 = 2 existe um caminho diferencial válido:<br />
A 28 = 0x8001, A 83 = 0x1, A 100 = 0x8001, A 172 = 0x8001 (valores em hexa<strong>de</strong>cimal).<br />
3.2. Análise dos caminhos diferenciais válidos encontrados<br />
Analisando o caminho diferencial com 26 portas AND ativas em 15 rodadas (A 28 =<br />
0x8001, A 83 = 0x1, A 100 = 0x8001, A 172 = 0x8001) vemos que a formação <strong>de</strong>le é<br />
possível porque os valores <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits no passo 4 <strong>de</strong> uma rodada são iguais<br />
aos valores <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits do passo 12, como mostrado na tabela <strong>de</strong> <strong>de</strong>slocamento<br />
<strong>de</strong> bits 1: 11 bits para a direita e 15 bits para a esquerda. A diferença entre as<br />
posições t 0 e t 5 módulo 16 é igual a 8 (89 - 17 = 72; 72 módulo 16 = 8), ou seja, é igual à<br />
diferença entre as posições da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits que contém o mesmo valor<br />
<strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits, as posições 4 e 12. Assim, um valor diferencial que apareça na<br />
259
posição t 0 em um passo 4 ou 12 no módulo 16, necessariamente aparecerá na posição t 5<br />
em um passo 12 ou 4 no módulo 16, respectivamente, e a este valor diferencial será aplicado<br />
o mesmo <strong>de</strong>slocamento <strong>de</strong> bits, resultando no alinhamento e cancelamento <strong>de</strong>stes<br />
valores diferenciais em um passo posterior. No caminho diferencial encontrado, o valor<br />
diferencial do passo 83 aparece na posição t 0 do passo 100, e 100 módulo 16 é igual a<br />
4. É também o valor diferencial na posição t 5 do passo 172, e 172 módulo 16 é igual a<br />
12. Portanto nos passos 100 e 172 obtemos o mesmo valor diferencial por que é aplicado<br />
nesse passos o mesmo <strong>de</strong>locamento <strong>de</strong> bits ao valor diferencial do passo 83. No passo<br />
189, o valor diferencial gerado no passo 100 estará na posição t 5 e o valor diferencial<br />
do passo 172 estará na posição t 0 . Como eles são iguais, ocorre um alinhamento das<br />
diferenças e elas são anuladas.<br />
Concluímos que esta coincidência <strong>de</strong> valores da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />
1 a uma distância que coinci<strong>de</strong> com a diferença entre as posições t 0 e t 5 no módulo 16<br />
é uma falha na escolha dos valores <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits. Seria interessante tentar<br />
escolher uma outra tabela on<strong>de</strong> esta coincidência não ocorra, verificando como a função<br />
se comporta com esta alteração<br />
3.3. Investigando uma nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />
A escolha da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits 1 foi feita através <strong>de</strong> um programa computacional<br />
disponibilizado pelos autores do MD6. Este programa procura uma tabela <strong>de</strong><br />
<strong>de</strong>slocamento tentando maximizar a taxa <strong>de</strong> difusão dos bits <strong>de</strong>ntro das palavras, dadas<br />
as posições t 0 a t 5 e estabelecidas algumas exigências na escolha dos valores <strong>de</strong> <strong>de</strong>slocamento.<br />
Cada valor <strong>de</strong> <strong>de</strong>slocamento não po<strong>de</strong> ser zero, <strong>de</strong>ve ser no máximo w/2 (32) e<br />
r i e l i não <strong>de</strong>vem ser múltiplos um do outro. Cada par <strong>de</strong> valores (r i , l i ) <strong>de</strong>ve ser escolhido<br />
tal que uma saída com peso <strong>de</strong> hamming igual a 1 não possa ser gerado por uma<br />
palavra <strong>de</strong> entrada <strong>de</strong> peso menor que cinco. Além disso, r i e l j não po<strong>de</strong>m ser múltiplos<br />
um do outro para qualquer j tal que (i − j) ∈ t 0 , t 5 , t 5 − t 0 (todos os índices no módulo<br />
c = 16). Estas últimas condições ajudam a garantir que um <strong>de</strong>slocamento à esquerda em<br />
uma rodada não será seguido por um <strong>de</strong>slocamento à direita pela mesma quantida<strong>de</strong> (ou<br />
um múltiplo) em uma rodada posterior. Para cada tabela gerada aleatoriamente <strong>de</strong> acordo<br />
com as restrições <strong>de</strong>scritas é medido um valor para que as tabelas possam ser comparadas<br />
<strong>de</strong> forma que seja escolhida a tabela que garanta o efeito avalanche mais rápido entre as<br />
tabelas testadas. Para a escolha da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6 foram<br />
testadas 1 milhão <strong>de</strong> tabelas.<br />
Como mostramos, notamos que outras condições po<strong>de</strong>riam ser impostas aos valores<br />
da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits para evitar a formação <strong>de</strong> alguns caminhos diferenciais<br />
com baixos valores <strong>de</strong> peso <strong>de</strong> hamming. Fomos então adicionando novas restrições<br />
aos valores da tabela, procurando novas tabelas, testando a nova tabela encontrada e <strong>de</strong>scobrindo<br />
novas restrições que po<strong>de</strong>riam ser impostas. Eliminamos todas as características<br />
da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits que contribuiam para a formação <strong>de</strong> caminhos diferenciais<br />
com 26 portas AND ativas em 15 rodadas. Ainda assim, existe caminho diferencial<br />
com 26 portas AND ativas em 15 rodadas, mas esse caminho não <strong>de</strong>pen<strong>de</strong> <strong>de</strong> nenhuma<br />
característica especial da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits, ou seja, nenhuma tabela <strong>de</strong> <strong>de</strong>slocamento<br />
<strong>de</strong> bits evitaria a formação <strong>de</strong>sse caminho.<br />
As restrições adicionais que <strong>de</strong>scobrimos que <strong>de</strong>vem ser impostas para que a ta-<br />
260
ela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits não possibilite a formação <strong>de</strong> alguns dos caminhos diferenciais<br />
com 26 portas AND ativas em 15 rodadas estão <strong>de</strong>scritas a seguir:<br />
1. Se i − j = t 5 − t 0 módulo c, então:<br />
l i <strong>de</strong>ve ser diferente <strong>de</strong> l j e<br />
r i <strong>de</strong>ve ser diferente <strong>de</strong> r j se l j > r j e l i > r i .<br />
2. Se i − j = t 5 módulo c, então:<br />
l i <strong>de</strong>ve ser diferente <strong>de</strong> l j se r i > l i e<br />
r i <strong>de</strong>ve ser diferente <strong>de</strong> r j se l j > r j e l i > 2r i .<br />
Essas restrições foram implementadas na função que gera tabelas aleatórias <strong>de</strong><br />
<strong>de</strong>slocamento <strong>de</strong> bits. Esta função faz parte do código fornecido pelos autores do MD6<br />
que foi utilizado para a busca da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6.<br />
Executando o programa <strong>de</strong> busca da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits com essas<br />
restrições adicionais e testando a mesma quantida<strong>de</strong> <strong>de</strong> tabelas que foram testadas para<br />
a escolha da tabela original do MD6, 1 milhão <strong>de</strong> tabelas, a melhor tabela encontrada é<br />
um pouco pior do que a tabela original do MD6, <strong>de</strong> acordo com a medida usada para a<br />
comparação das tabelas, que é uma medida da taxa <strong>de</strong> difusão dos bits <strong>de</strong>ntro das palavras<br />
obtida pela tabela. Continuando a busca, foi encontrada uma tabela melhor do que a tabela<br />
original do MD6 <strong>de</strong> acordo com essa medida da taxa <strong>de</strong> difusão <strong>de</strong> bits (e que ainda aten<strong>de</strong><br />
às restrições que adicionamos).<br />
O programa <strong>de</strong> busca utiliza uma semente para a geração <strong>de</strong> uma tabela <strong>de</strong> <strong>de</strong>slocamento<br />
<strong>de</strong> bits aleatória. Ele começa a busca com a semente 0, e vai incrementando<br />
esse valor. Então, para 1 milhão <strong>de</strong> tabelas testadas, a semente utilizada para a geração<br />
da última tabela é igual a 999.999. A tabela original do MD6 foi gerada com a semente<br />
939.663. Com as restrições adicionais, encontramos a melhor tabela ao testar a semente<br />
número 1.421.812. Os resultado obtidos po<strong>de</strong>m ser rapidamente verificados com o programa<br />
fornecido pelos autores do MD6 (shiftopt.c), os valores das sementes que geram<br />
as melhores tabelas e as alterações no código que implementam as restrições adicionais<br />
<strong>de</strong>scritas acima. A tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits que encontramos é a tabela 4.<br />
Tabela 4. Nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits encontrada: melhor taxa <strong>de</strong> difusão<br />
<strong>de</strong> bits em relação à tabela original do MD6 e aten<strong>de</strong> às restrições adicionais<br />
para impedir a formação <strong>de</strong> alguns dos caminhos diferenciais com 26 portas<br />
AND ativas em 15 rodadas.<br />
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15<br />
r i 13 13 7 8 11 9 10 4 11 14 2 12 11 8 6 12<br />
l i 4 9 23 10 5 21 13 18 12 3 27 7 15 17 23 5<br />
3.4. Resultados obtidos com a nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />
Com a tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6, o primeiro padrão <strong>de</strong> peso <strong>de</strong><br />
caminho diferencial com 26 portas AND ativas em 15 rodadas que possui um caminho<br />
diferencial válido correspon<strong>de</strong>nte encontrado pelo programa <strong>de</strong> busca é:<br />
D 28 = 2, D 83 = 1, D 100 = 2, D 172 = 2. (6)<br />
Com a nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits não existe um caminho diferencial válido para<br />
este padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial. Mas, com qualquer tabela <strong>de</strong> <strong>de</strong>slocamento<br />
261
<strong>de</strong> bits, existe um outro padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial com 26 portas AND ativas<br />
em 15 rodadas que possui um correspon<strong>de</strong>nte caminho diferencial válido:<br />
D 16 = 2, D 71 = 1, D 88 = 2, D 160 = 2. (7)<br />
Po<strong>de</strong>mos observar que estes dois padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial são semelhantes,<br />
estando apenas <strong>de</strong>slocados <strong>de</strong> 12 posições. O que possibilita a existência <strong>de</strong> um caminho<br />
diferencial válido correspon<strong>de</strong>nte ao padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial (7), in<strong>de</strong>pen<strong>de</strong>nte<br />
da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits usada, é o fato do índice 88 fazer parte das<br />
primeiras 89 palavras do caminho, e portanto o valor diferencial <strong>de</strong>sta posição <strong>de</strong>pen<strong>de</strong> <strong>de</strong><br />
um valor diferencial que não faz parte do caminho, que é anterior ao valor diferencial da<br />
posição <strong>de</strong> índice 0. Sendo assim, o valor diferencial da posição 88 <strong>de</strong>pen<strong>de</strong> <strong>de</strong> um valor<br />
diferencial <strong>de</strong>sconhecido que consi<strong>de</strong>ramos que possa ser qualquer valor. No padrão <strong>de</strong><br />
peso <strong>de</strong> caminho diferencial (6), para que os valores diferenciais se anulem na posição<br />
189, é necessário que o valor diferencial da posição 83 resulte nos mesmos valores diferenciais<br />
nas posições 100 e 172. Já no padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial (7), como<br />
o valor diferencial da posição 88 não <strong>de</strong>pen<strong>de</strong> apenas do valor diferencial da posição 71,<br />
mas também <strong>de</strong> um valor <strong>de</strong>sconhecido, o valor diferencial da posição 88 po<strong>de</strong> ser igual<br />
ao valor diferencial da posição 160 in<strong>de</strong>pen<strong>de</strong>nte da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits usada.<br />
A vantagem da nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits aparece quando buscamos<br />
caminhos diferenciais válidos em 16 rodadas. Esse <strong>de</strong>slocamento <strong>de</strong> 12 posições entre<br />
(6) e (7) faz muita diferença quando 1 rodada é adicionada ao cálculo. O valor diferencial<br />
da posição 172 em (6) aparecerá no cálculo do valor diferencial da posição 261 (172+89).<br />
Mas, em 16 rodadas temos 256 passos, portanto a posição 261 está além do cálculo <strong>de</strong> 16<br />
rodadas. Desta forma, com a tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6, o mesmo<br />
caminho diferencial com 26 portas AND ativas em 15 rodadas correspon<strong>de</strong>nte ao padrão<br />
<strong>de</strong> peso <strong>de</strong> caminho diferencial (6) é válido para 16 rodadas. Já o valor diferencial da<br />
posição 160 em (7) aparecerá no cálculo do valor diferencial da posição 249 (160 + 89),<br />
que está <strong>de</strong>ntro do cálculo <strong>de</strong> 16 rodadas.<br />
Executando o programa <strong>de</strong> busca para 16 rodadas com a nova tabela <strong>de</strong> <strong>de</strong>slocamento<br />
<strong>de</strong> bits, comprovamos a existência <strong>de</strong> um caminho diferencial válido para o<br />
seguinte padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial:<br />
D 16 = 2, D 71 = 1, D 88 = 2, D 160 = 2, D 249 = 4. (8)<br />
Este padrão <strong>de</strong> peso <strong>de</strong> caminho diferencial é uma extensão a 16 rodadas <strong>de</strong> (7). O número<br />
<strong>de</strong> portas AND ativas neste caminho é 38.<br />
A busca por padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial com 26 portas AND ativas<br />
ou mais é bem <strong>de</strong>morada. Até o momento conseguimos comprovar que com a nova tabela<br />
não existem caminhos diferenciais válidos com até 27 portas AND ativas. Não conseguimos<br />
comprovar a inexistência <strong>de</strong> caminhos diferenciais válidos com mais <strong>de</strong> 27 e menos<br />
do que 38 portas AND ativas. Pelo que temos observado dos resultados da busca computacional<br />
e pelo que conseguimos analisar das possibilida<strong>de</strong>s <strong>de</strong> formação <strong>de</strong> caminhos<br />
diferenciais válidos, parece improvável que exista um caminho diferencial válido com<br />
menos do que 38 portas AND ativas em 16 rodadas quando utilizada a nova tabela <strong>de</strong><br />
<strong>de</strong>slocamento <strong>de</strong> bits.<br />
262
A tabela 5 mostra, para cada valor <strong>de</strong> comprimento do resumo da mensagem d,<br />
quantas rodadas seriam necessárias para garantir a segurança da função <strong>de</strong> compressão do<br />
MD6 contra um ataque diferencial padrão, consi<strong>de</strong>rando a possibilida<strong>de</strong> <strong>de</strong> que o número<br />
mínimo <strong>de</strong> portas AND ativas em 16 rodadas com a nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />
seja 38, e compara essa quantida<strong>de</strong> <strong>de</strong> rodadas com a quantida<strong>de</strong> <strong>de</strong> rodadas necessárias<br />
quando a tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6 é utilizada.<br />
Tabela 5. Número mínimo <strong>de</strong> rodadas r para cada valor <strong>de</strong> d quando a tabela original<br />
do MD6 é utilizada e portanto existe um caminho diferencial com 26 portas<br />
AND ativas em 16 rodadas, comparado ao número mínimo <strong>de</strong> rodadas consi<strong>de</strong>rando<br />
a possibilida<strong>de</strong> <strong>de</strong> que o número mínimo <strong>de</strong> portas AND ativas em 16<br />
rodadas seja 38 quando utilizada a nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits (número<br />
mínimo <strong>de</strong> rodadas já somado à margem <strong>de</strong> segurança <strong>de</strong> 15 rodadas).<br />
d min AAGs r min original r min com nova tabela redução<br />
40 20 29 29 0%<br />
80 40 43 37 14%<br />
128 64 57 46 19%<br />
160 80 66 55 17%<br />
224 112 87 63 28%<br />
256 128 90 76 16%<br />
384 192 132 101 23%<br />
512 256 165 127 23%<br />
Segue um exemplo <strong>de</strong> como foram calculados os números <strong>de</strong> rodadas na tabela 5:<br />
precisamos <strong>de</strong> 5 conjuntos <strong>de</strong> 16 rodadas mais 1 conjunto <strong>de</strong> 6 rodadas para garantir que<br />
haverá no mínimo mínimo 192 portas AND ativas para quando o comprimento do resumo<br />
da mensagem é <strong>de</strong> 384 bits, pois se cada conjunto <strong>de</strong> 16 rodadas tem no mínimo 38 portas<br />
AND ativas e um conjunto <strong>de</strong> 6 rodadas tem no mínomo 3 portas AND ativas (tabela 2),<br />
então em 5 conjuntos <strong>de</strong> 16 rodadas mais 1 conjunto <strong>de</strong> 6 rodadas teremos no mínimo<br />
5 × 38 + 3 = 193 portas AND ativas. Então, o número mínimo <strong>de</strong> rodadas <strong>de</strong>verá ser<br />
5 × 16 + 6 = 86. Somando as 15 rodadas da margem <strong>de</strong> segurança, chegamos em 101<br />
rodadas. As 132 rodadas necessárias quando a tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original<br />
do MD6 é utilizada foi calculada da mesma forma, mas consi<strong>de</strong>rando que nesse caso o<br />
número mínimo <strong>de</strong> portas AND ativas em 16 rodadas é 26, e não 38.<br />
4. Conclusão<br />
A eficiência do MD6 é excelente em sistemas com múltiplas unida<strong>de</strong>s <strong>de</strong> processamento,<br />
mas nas plataformas <strong>de</strong> referência da competição do NIST para escolha do SHA-3 ela não<br />
é suficiente para torná-la competitiva.<br />
Ao anunciar que o MD6 não aten<strong>de</strong>ria aos requisitos estabelecidos pelo NIST<br />
para a competição <strong>de</strong> escolha do SHA-3, Ron Rivest alertou que seria extremamente<br />
importante que o algoritmo <strong>de</strong> SHA-3 que viesse a ser escolhido fosse <strong>de</strong>monstravelmente<br />
resistente a ataques diferenciais.<br />
O número <strong>de</strong> rodadas da função <strong>de</strong> compressão do MD6 tem um impacto direto<br />
na velocida<strong>de</strong> <strong>de</strong> processamento, e precisa ser relativamente alto para a <strong>de</strong>monstração da<br />
263
esistência do MD6 a ataques diferenciais. A <strong>de</strong>monstração da resistência a ataques diferenciais<br />
exige a comprovação <strong>de</strong> que em um <strong>de</strong>terminado número <strong>de</strong> rodadas haverá um<br />
número mínimo <strong>de</strong> portas AND ativas. Seguindo inicialmente as sugestões apresentadas<br />
em [Rivest et al. 2008] na página 111, mostramos nesse trabalho que é possível <strong>de</strong>monstrar<br />
a resistência da função <strong>de</strong> compressão a ataques diferenciais com um número menor<br />
<strong>de</strong> rodadas, mostrando que o número mínimo <strong>de</strong> portas AND ativas em 16 rodadas po<strong>de</strong><br />
ser maior se utilizada na função <strong>de</strong> compressão uma nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits<br />
(4).<br />
Verificamos se existiam caminhos diferenciais válidos correspon<strong>de</strong>ntes aos<br />
padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial encontrados na busca do limite inferior <strong>de</strong> portas<br />
AND ativas em até 15 rodadas. Constatamos que esses caminhos diferenciais válidos<br />
existiam para alguns padrões <strong>de</strong> peso <strong>de</strong> caminho diferencial, mas, analisando esses caminhos<br />
diferenciais <strong>de</strong>scobrimos que alguns <strong>de</strong>les só existiam <strong>de</strong>vido a <strong>de</strong>terminadas características<br />
da tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits original do MD6 (1), o que i<strong>de</strong>ntificamos<br />
ser uma falha na escolha dos valores da tabela original.<br />
Buscamos por uma nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits e encontramos a tabela<br />
(4), que não possui as falhas i<strong>de</strong>ntificadas na tabela original e nem outras possíveis falhas<br />
encontradas em outras tabelas durante o processo <strong>de</strong> busca, e ainda é melhor para a taxa<br />
<strong>de</strong> difusão <strong>de</strong> bits, que foi o critério usado para a escolha da tabela original.<br />
O uso <strong>de</strong>sta nova tabela não aumenta o número mínimo <strong>de</strong> portas AND ativas em<br />
até 15 rodadas, que foi o número <strong>de</strong> rodadas analisado originalmente na <strong>de</strong>monstração<br />
da resistência do MD6 a ataques diferencias, mas a nova tabela faz diferença quando o<br />
cálculo é feito para 16 rodadas. Quando a tabela original do MD6 é usada, existe um<br />
caminho diferencial válido com 26 portas AND ativas em 16 rodadas. Com a nova tabela<br />
só conseguimos encontrar um caminho diferencial válido em 16 rodadas com 38 portas<br />
AND ativas, e já comprovamos que não existem caminhos válidos com até 27 portas AND<br />
ativas. Se confirmado que 38 é o número mínimo <strong>de</strong> portas AND ativas em 16 rodadas, a<br />
nova tabela <strong>de</strong> <strong>de</strong>slocamento <strong>de</strong> bits torna possível a <strong>de</strong>monstração da resistência do MD6<br />
a ataques diferenciais com um número <strong>de</strong> rodadas reduzido <strong>de</strong> acordo com os resultados<br />
apresentados na tabela 5.<br />
Referências<br />
Rivest, R., Agre, B., Bailey, D., Crutchfield, C., Dodis, Y., Fleming, K., Khan, A., Krishnamurthy,<br />
J., Lin, Y., Reyzin, L., et al. (2008). The MD6 hash function A proposal to<br />
NIST for SHA-3. Submission to NIST.<br />
264
Acordo <strong>de</strong> Chave Seguro contra Autorida<strong>de</strong> Mal Intencionada<br />
Denise Goya ∗ , Dionathan Nakamura † , Routo Terada<br />
1 Departamento <strong>de</strong> Ciência da Computação – Universida<strong>de</strong> <strong>de</strong> São Paulo – Brasil<br />
{dhgoya, nakamura, rt}@ime.usp.br<br />
Abstract. Certificateless key agreement protocols allow authenticated key establishment<br />
without the need of digital certificate distribution and with security<br />
level higher than the one reached by i<strong>de</strong>ntity-based key agreement protocols. In<br />
this work, we introduce an enhanced security mo<strong>de</strong>l that is resistant to malicious<br />
authority attacks, in which an authority is able to generate system parameters<br />
with shortcuts to session key recovery. We present a new protocol that is proved<br />
secure in this exten<strong>de</strong>d security mo<strong>de</strong>l and has equivalent performance to<br />
previous ones.<br />
Resumo. Protocolos <strong>de</strong> acordo <strong>de</strong> chaves no mo<strong>de</strong>lo <strong>de</strong> criptografia <strong>de</strong> chave<br />
pública sem certificado permitem o estabelecimento <strong>de</strong> chaves secretas com<br />
autenticação, sem a necessida<strong>de</strong> <strong>de</strong> distribuição <strong>de</strong> certificados digitais e com<br />
nível <strong>de</strong> segurança maior que o alcançado por protocolos baseados em i<strong>de</strong>ntida<strong>de</strong>.<br />
Neste artigo, propomos a extensão do mo<strong>de</strong>lo <strong>de</strong> segurança, tornando-o<br />
resistente a ataques <strong>de</strong> uma autorida<strong>de</strong> mal intencionada, que gera parâmetros<br />
do sistema <strong>de</strong> forma a criar atalhos para recuperação <strong>de</strong> chaves <strong>de</strong> sessão.<br />
Apresentamos um protocolo que é mostrado seguro nesse mo<strong>de</strong>lo estendido,<br />
com eficiência equivalente a <strong>de</strong> protocolos anteriores.<br />
1. Introdução<br />
Em 2003, Al-Riyami e Paterson propuseram um mo<strong>de</strong>lo alternativo <strong>de</strong> chave pública que<br />
dispensa a necessida<strong>de</strong> <strong>de</strong> certificados digitais e <strong>de</strong> uma infraestrutura <strong>de</strong> chaves públicas<br />
(ICP) [Al-Riyami e Paterson 2003]. Nesse mo<strong>de</strong>lo, conhecido como certificateless, cada<br />
usuário cria um par <strong>de</strong> chaves (pública e privada, tal qual no mo<strong>de</strong>lo convencional), porém<br />
a autorida<strong>de</strong> do sistema, chamada Centro <strong>de</strong> Geração <strong>de</strong> Chaves ou KGC (Key Generation<br />
Center), fornece a cada usuário registrado uma chave secreta parcial, calculada a partir<br />
da i<strong>de</strong>ntida<strong>de</strong> do usuário e da chave secreta mestra do KGC. Essa chave secreta parcial é<br />
um componente da chave secreta e estabelece um vínculo entre o usuário e o sistema. A<br />
certificação da chave pública ocorre implicitamente com a execução dos protocolos. Comparado<br />
ao mo<strong>de</strong>lo convencional em que é requerida uma ICP para geração, distribuição,<br />
validação e revogação <strong>de</strong> certificados, o mo<strong>de</strong>lo <strong>de</strong> Al-Riyami e Paterson simplifica os<br />
processos, requer uma infraestrutura mais simples e potencialmente reduz custos operacionais.<br />
Por outro lado, os algoritmos sob esse mo<strong>de</strong>lo ten<strong>de</strong>m a ser mais complexos,<br />
pois preveem a existência <strong>de</strong> um adversário capaz <strong>de</strong> substituir arbitrariamente as chaves<br />
públicas dos usuários.<br />
∗ O autor recebeu apoio financeiro da Fapesp, 2008/06189-0.<br />
† O autor recebeu apoio financeiro do CNPq.<br />
265
No caso particular dos protocolos <strong>de</strong> acordo <strong>de</strong> chaves com autenticação no mo<strong>de</strong>lo<br />
<strong>de</strong> criptografia <strong>de</strong> chave pública sem certificados (CL-AKA), participantes em uma<br />
comunicação po<strong>de</strong>m se autenticar mutuamente e estabelecer chaves <strong>de</strong> sessão sem verificar<br />
certificados <strong>de</strong> chave pública. Protocolos CL-AKA são mais seguros que os baseados<br />
em i<strong>de</strong>ntida<strong>de</strong> [Chen et al. 2007], pois as consequências do comprometimento da chave<br />
mestra secreta são atenuadas e a segurança é menos <strong>de</strong>pen<strong>de</strong>nte do nível <strong>de</strong> confiança que<br />
os usuários precisam <strong>de</strong>positar na autorida<strong>de</strong> do sistema. Um problema acerca dos protocolos<br />
CL-AKA é a carência <strong>de</strong> opções computacionalmente eficientes que são ao mesmo<br />
tempo seguras sob forte mo<strong>de</strong>lo <strong>de</strong> segurança.<br />
Um gran<strong>de</strong> número <strong>de</strong> protocolos CL-AKA po<strong>de</strong> ser encontrado na literatura. No<br />
entanto, um estudo realizado por Swanson e Jao mostra que todos os protocolos existentes<br />
até então são inseguros sob um mo<strong>de</strong>lo <strong>de</strong> segurança a<strong>de</strong>quado ao caso sem certificados<br />
[Swanson e Jao 2009]. Lippold, Boyd e González Nieto (LBG) aprimoram o mo<strong>de</strong>lo <strong>de</strong><br />
Swanson e Jao e apresentam o primeiro protocolo CL-AKA <strong>de</strong>monstrado seguro sob um<br />
mo<strong>de</strong>lo forte <strong>de</strong> segurança [Lippold et al. 2009]. Um segundo protocolo CL-AKA <strong>de</strong> que<br />
temos conhecimento ter sido <strong>de</strong>monstrado seguro sob o mesmo mo<strong>de</strong>lo é o <strong>de</strong> Goya,<br />
Okida e Terada (GOT), uma versão otimizada do antecessor LBG [Goya et al. 2010].<br />
Ambos protocolos, LBG e GOT, são seguros sob a hipótese <strong>de</strong> dificulda<strong>de</strong> do problema<br />
Diffie-Hellman Bilinear (BDH), porém são lentos e pouco viáveis para uso prático. Nos<br />
dois casos, os autores afirmam que versões simplificadas, cerca <strong>de</strong> 50% mais velozes,<br />
são seguras sob a hipótese <strong>de</strong> dificulda<strong>de</strong> do problema Diffie-Hellman Bilinear Lacunar<br />
(Gap-BDH).<br />
Mais recentemente, Yang e Tan propuseram protocolo CL-AKA que não requer<br />
emparelhamento bilinear [Yang e Tan 2011]. Os autores refinam a <strong>de</strong>scrição do mo<strong>de</strong>lo<br />
<strong>de</strong> segurança dado inicialmente em [Lippold et al. 2009] e apresentam <strong>de</strong>monstração sob<br />
a hipótese <strong>de</strong> dificulda<strong>de</strong> do problema Diffie-Hellman Computacional Lacunar (Gap-DH).<br />
Alguns protocolos <strong>de</strong> assinatura e <strong>de</strong> cifragem no mo<strong>de</strong>lo sem certificado são<br />
vulneráveis ao ataque do KGC mal intencionado, que gera parâmetros do sistema <strong>de</strong><br />
forma a criar atalhos para forjar assinaturas ou <strong>de</strong>cifrar textos <strong>de</strong> usuários pre<strong>de</strong>terminados<br />
[Au et al. 2007]. Não é <strong>de</strong> nosso conhecimento nenhum mo<strong>de</strong>lo ou protocolo para CL-<br />
AKA que tenham sido propostos para segurança contra KGC mal intencionado.<br />
Neste trabalho, apresentamos as seguintes contribuições:<br />
• esten<strong>de</strong>mos o mo<strong>de</strong>lo <strong>de</strong> segurança para CL-AKA, tornando-o mais forte que o <strong>de</strong><br />
[Lippold et al. 2009] para prevenir ataques contra KGC mal intencionado;<br />
• apresentamos um novo protocolo e respectiva <strong>de</strong>monstração <strong>de</strong> segurança sob esse<br />
mo<strong>de</strong>lo estendido;<br />
• apontamos que existem falhas na <strong>de</strong>monstração <strong>de</strong> segurança do protocolo <strong>de</strong><br />
[Yang e Tan 2011], <strong>de</strong> modo que nada se po<strong>de</strong> afirmar sobre sua segurança.<br />
Organização do Trabalho<br />
Na Seção 2, apresentamos conceitos necessários para a compreensão dos protocolos citados.<br />
Na Seção 3, <strong>de</strong>screvemos uma extensão do mo<strong>de</strong>lo <strong>de</strong> segurança para captura <strong>de</strong><br />
ataques <strong>de</strong> um KGC mal intencionado. Na Seção 4, propomos um novo protocolo que é<br />
<strong>de</strong>monstrado seguro no mo<strong>de</strong>lo estendido (no Apêndice A). Na Seção 5, apontamos falha<br />
na <strong>de</strong>monstração <strong>de</strong> segurança do protocolo <strong>de</strong> [Yang e Tan 2011]. Por fim, na Seção<br />
266
6 realizamos comparações com o novo protocolo proposto, seguidas das conclusões na<br />
Seção 7.<br />
2. Conceitos Preliminares<br />
Os protocolos aqui discutidos fazem uso <strong>de</strong> um emparelhamento bilinear admissível e :<br />
G × G → G T , com G e G T grupos <strong>de</strong> or<strong>de</strong>m prima q [Boneh e Franklin 2003]. Seja<br />
P ∈ G um gerador <strong>de</strong> G e valores aleatórios a, b, c ∈ Z q . São supostos difíceis:<br />
BDH. Problema Diffie-Hellman Bilinear: dados 〈P, aP, bP, cP 〉, calcular e(P, P ) abc .<br />
DBDH. Problema <strong>de</strong> Decisão Diffie-Hellman Bilinear: dados 〈aP, bP, cP, T 〉, <strong>de</strong>cidir se<br />
e(P, P ) abc ? = T .<br />
Gap-BDH. Problema Diffie-Hellman Bilinear Lacunar: dados 〈P, aP, bP, cP 〉, calcular<br />
e(P, P ) abc , com a ajuda <strong>de</strong> um oráculo <strong>de</strong> <strong>de</strong>cisão DBDH.<br />
2.1. Proprieda<strong>de</strong>s <strong>de</strong> Segurança para CL-AKA<br />
Dentre as proprieda<strong>de</strong>s <strong>de</strong> segurança mais importantes e requeridas nos protocolos <strong>de</strong><br />
acordo <strong>de</strong> chaves com autenticação estão a resistência a ataques <strong>de</strong> personificação básicos<br />
e a ataques <strong>de</strong> personificação pelo comprometimento <strong>de</strong> chave secreta (KCI, ou Key-<br />
Compromise Impersonation), a segurança <strong>de</strong> chave conhecida, a segurança no futuro<br />
completa-fraca (wPFS, ou Weak Perfect Forward Secrecy), a resistência a ataques <strong>de</strong><br />
compartilhamento <strong>de</strong>sconhecido <strong>de</strong> chave (UKS, ou Unknown Key-Share) e a resistência<br />
ao vazamento <strong>de</strong> segredos temporários ou do estado da sessão [LaMacchia et al. 2007,<br />
Krawczyk 2005]. No caso especial sem certificado, é <strong>de</strong>sejado também segurança no<br />
futuro perante o KGC (KGC Forward Secrecy) e resistência ao vazamento <strong>de</strong> segredos<br />
temporários para o KGC. Essas duas últimas proprieda<strong>de</strong>s são tratadas no mo<strong>de</strong>lo formalmente<br />
<strong>de</strong>scrito em [Lippold et al. 2009], que permite um adversário:<br />
• substituir a chave pública <strong>de</strong> um dado usuário ou revelar o valor secreto correspon<strong>de</strong>nte<br />
à chave pública <strong>de</strong> um usuário;<br />
• revelar a chave secreta parcial <strong>de</strong> <strong>de</strong>terminados usuários ou revelar a chave mestra<br />
secreta do KGC;<br />
• revelar o segredo temporário <strong>de</strong> uma dada sessão ou escolhê-lo ativamente;<br />
• revelar a chave secreta <strong>de</strong> uma dada sessão;<br />
• interagir <strong>de</strong> forma adaptativa com o protocolo, iniciando sessões ou registrando<br />
novos usuários arbitrariamente.<br />
Esse mo<strong>de</strong>lo é uma variante do Canetti-Krawczyk estendido<br />
[LaMacchia et al. 2007]. Um protocolo CL-AKA <strong>de</strong>monstrado seguro no mo<strong>de</strong>lo<br />
<strong>de</strong> [Lippold et al. 2009] se mantém seguro ainda que o adversário corrompa no máximo<br />
dois dos três componentes <strong>de</strong> cada um dos participantes da sessão <strong>de</strong> Teste, que <strong>de</strong>notamos<br />
por A e B. Por exemplo, sobre o participante A, o adversário po<strong>de</strong> efetuar, no<br />
máximo, duas das três linhas abaixo:<br />
• revelar o valor secreto x A ou substituir a chave pública <strong>de</strong> A;<br />
• revelar a chave secreta parcial d A ou revelar a chave mestra secreta;<br />
• revelar o valor temporário <strong>de</strong> sessão r A .<br />
Todos os <strong>de</strong>mais usuários po<strong>de</strong>m ser integralmente corrompidos pelo adversário.<br />
A principal diferença entre os mo<strong>de</strong>los propostos em [Swanson e Jao 2009] e em<br />
267
[Lippold et al. 2009] está no tratamento do oráculo que revela para o adversário a chave<br />
<strong>de</strong> uma dada sessão. No trabalho <strong>de</strong> Swanson e Jao, o usuário continua a usar seu próprio<br />
par original <strong>de</strong> chaves pública e secreta no cálculo da chave <strong>de</strong> sessão, mesmo que o<br />
adversário tenha substituído a chave pública; nesse caso, os <strong>de</strong>mais usuários calculam a<br />
chave <strong>de</strong> sessão usando a chave pública substituída. No trabalho <strong>de</strong> Lippold et al., se o adversário<br />
substituir uma chave pública, até mesmo o usuário dono passa a usar a nova chave<br />
pública escolhida pelo adversário. Esta diferença é equivalente à existente nos mo<strong>de</strong>los<br />
Strong e Weak para cifragem sem certificado [Dent 2008]. O mo<strong>de</strong>lo Strong é estritamente<br />
mais forte que o Weak, isto é, os protocolos que são seguros no primeiro também<br />
o são no segundo. Outra diferença no mo<strong>de</strong>lo <strong>de</strong> Swanson e Jao é que o adversário que<br />
conhece a chave mestra secreta não po<strong>de</strong> substituir chaves públicas.<br />
Outro mo<strong>de</strong>lo <strong>de</strong> segurança que sabemos ter sido <strong>de</strong>senvolvido para protocolos<br />
CL-AKA foi apresentado em [Zhang et al. 2010]. No entanto, trata-se <strong>de</strong> um mo<strong>de</strong>lo<br />
mais fraco que restringe os po<strong>de</strong>res do adversário, como, por exemplo, impedir que um<br />
atacante externo revele a chave parcial <strong>de</strong> um dos participantes da sessão <strong>de</strong> Teste e não<br />
permitir que um adversário interno substitua a chave pública <strong>de</strong> um dos participantes do<br />
Teste. Com essas limitações, protocolos que são <strong>de</strong>monstrados seguros sob o mo<strong>de</strong>lo <strong>de</strong><br />
Zhang et al. são eficientes, porém na prática não são resistentes a ataques do tipo KCI.<br />
Lippold e González Nieto apresentaram uma versão mais fraca <strong>de</strong> mo<strong>de</strong>lo<br />
para mostrar a segurança no mo<strong>de</strong>lo padrão <strong>de</strong> uma construção geral <strong>de</strong> CL-AKA<br />
[Lippold e González Nieto 2010]. Nesse mo<strong>de</strong>lo mais fraco, o adversário tem as mesmas<br />
restrições que as <strong>de</strong> [Zhang et al. 2010], além <strong>de</strong> não po<strong>de</strong>r revelar chaves <strong>de</strong> sessão<br />
para os casos em que um dos participantes tenha a chave pública substituída. Com essas<br />
limitações, o mo<strong>de</strong>lo fica mais fraco que o <strong>de</strong> Swanson e Jao.<br />
3. Extensão do Mo<strong>de</strong>lo <strong>de</strong> Segurança<br />
Nesta seção, <strong>de</strong>screvemos informalmente o mo<strong>de</strong>lo <strong>de</strong> segurança que previne ataques do<br />
KGC mal intencionado. Tomamos como ponto <strong>de</strong> partida o mo<strong>de</strong>lo <strong>de</strong> Lippold et al., mas<br />
alterações similares po<strong>de</strong>m ser feitas sobre o mo<strong>de</strong>lo <strong>de</strong> [Swanson e Jao 2009].<br />
O mo<strong>de</strong>lo <strong>de</strong> Lippold et al. especifica dois tipos <strong>de</strong> adversário, um atacante externo<br />
e outro interno. Nada mudamos nas <strong>de</strong>finições relacionadas ao atacante externo<br />
(Tipo I), que é aquele que <strong>de</strong>sconhece a chave mestra secreta, mas que po<strong>de</strong> revelar chaves<br />
parciais <strong>de</strong> entida<strong>de</strong>s à sua escolha, po<strong>de</strong> substituir chaves públicas ou revelar segredos<br />
temporários <strong>de</strong> sessão. O atacante interno (Tipo II) conhece a chave mestra secreta<br />
e mo<strong>de</strong>la o KGC ou um adversário que corrompeu o principal segredo do sistema. Para<br />
capturar um comportamento in<strong>de</strong>sejável do KGC em gerar parâmetros <strong>de</strong> forma <strong>de</strong>sonesta,<br />
permitimos que o adversário interno escolha arbitrariamente todos os parâmetros<br />
do sistema e os entregue ao simulador do sistema; a chave mestra secreta fica em po<strong>de</strong>r<br />
exclusivo do adversário. Por esse motivo, <strong>de</strong>sabilitamos para o adversário interno a consulta<br />
aos oráculos que revelam a chave mestra ou a chave parcial <strong>de</strong> um dado usuário.<br />
Também é preciso modificar o comportamento do oráculo que cria novos usuários (<strong>de</strong>sonestos,<br />
isto é, sob total controle do adversário); nesse caso, o adversário informa o valor<br />
da chave secreta parcial, além da i<strong>de</strong>ntida<strong>de</strong> e chave pública do usuário. Esse atacante<br />
interno mal intencionado po<strong>de</strong> substituir chaves públicas e revelar segredos temporários<br />
<strong>de</strong> sessão.<br />
268
Duas sessões são consi<strong>de</strong>radas com matching se: (1) envolvem os mesmos participantes,<br />
(2) se na primeira sessão um participante é o emissor e o outro o receptor, então<br />
na segunda sessão os participantes <strong>de</strong>vem inverter os papéis e (3) as mensagens <strong>de</strong> saída<br />
<strong>de</strong> uma sessão são iguais às <strong>de</strong> entrada na outra e vice-versa. Uma sessão é consi<strong>de</strong>rada<br />
fresh se:<br />
• ela se encerrou e o adversário não revelou a chave <strong>de</strong> sessão;<br />
• nenhum <strong>de</strong> seus participantes teve mais que dois segredos corrompidos;<br />
• não existe sessão com matchingque tenha tido sua chave secreta revelada.<br />
O adversário po<strong>de</strong> realizar uma única consulta ao oráculo <strong>de</strong> Teste, sobre uma sessão<br />
necessariamente fresh. Para respon<strong>de</strong>r esse oráculo, o simulador joga uma moeda não<br />
viciada para escolher se entrega a verda<strong>de</strong>ira chave da sessão <strong>de</strong> Teste ou um número<br />
aleatório. O adversário vence o jogo contra o simulador se pu<strong>de</strong>r advinhar qual foi o<br />
resultado da moeda jogada. A vantagem do adversário é <strong>de</strong>finida como a distância entre<br />
0,5 e a probabilida<strong>de</strong> <strong>de</strong>le vencer o jogo.<br />
Um protocolo CL-AKA é dito seguro se qualquer adversário, externo ou interno<br />
mal intencionado, tem vantagem negligenciável sob o parâmetro <strong>de</strong> segurança.<br />
A <strong>de</strong>scrição formal <strong>de</strong>sses conceitos e mo<strong>de</strong>lo segue [Bellare e Rogaway 1993a] e<br />
[LaMacchia et al. 2007].<br />
4. Novo Protocolo CL-AKA Seguro no Mo<strong>de</strong>lo Estendido<br />
Passamos a <strong>de</strong>screver um novo protocolo CL-AKA que po<strong>de</strong> ser <strong>de</strong>monstrado seguro no<br />
mo<strong>de</strong>lo estendido, <strong>de</strong>scrito na Seção 3. Os parâmetros do sistema incluem um emparelhamento<br />
bilinear e : G×G → G T , três funções <strong>de</strong> hash criptográficas H : {0, 1} ∗ → {0, 1} k<br />
H 1 : {0, 1} ∗ → G e H 2 : {0, 1} ∗ → G, além da chave mestra pública sP , calculada a<br />
partir da chave mestra secreta s do KGC. Um usuário i<strong>de</strong>ntificado por sua i<strong>de</strong>ntida<strong>de</strong>,<br />
digamos A, possui um valor público (Q A1 = H 1 (A), Q A2 = H 2 (A)), um par para chave<br />
secreta parcial (d A1 = sQ A1 , d A2 = sQ A2 ), que é calculado e entregue pelo KGC <strong>de</strong><br />
forma segura, um valor secreto x A e a correspon<strong>de</strong>nte chave pública x A P .<br />
Para estabelecerem uma chave secreta em comum, dois usuários A e B escolhem<br />
seus valores secretos temporários, respectivamente r A , r B ∈ Z q , e calculam r A P e r B P .<br />
Então trocam as seguintes mensagens<br />
A → B : E A = (r A P, x A P ) B → A : E B = (r B P, x B P )<br />
Ao receberem a mensagem do parceiro, verificam a pertinência a G 2 e:<br />
A calcula:<br />
B calcula:<br />
K = e(r B P + Q B1 , r A sP + d A1 ) K = e(r A P + Q A1 , r B sP + d B1 )<br />
L = e(r B P + Q B2 , r A sP + d A2 ) L = e(r A P + Q A2 , r B sP + d B2 )<br />
M = e(x B P, d A1 ) · e(Q B1 , x A sP ) M = e(x A P, d B1 ) · e(Q A1 , x B sP )<br />
Z = (x A x B P, x A r B P, r A r B P, r A x B P ) Z = (x B x A P, r B x A P, r B r A P, x B r A P )<br />
SK = H(A, B, E A , E B , K, L, M, Z) SK = H(A, B, E A , E B , K, L, M, Z)<br />
4.1. Segurança do Novo Protocolo<br />
Para a segurança do protocolo proposto, apresentamos uma redução do problema Diffie-<br />
Hellman Bilinear Lacunar (Gap-BDH) para o problema <strong>de</strong> se construir um algoritmo que<br />
diferencie um número aleatório <strong>de</strong> uma chave secreta calculada pelo protocolo proposto.<br />
269
A redução indica que se houver um adversário com vantagem não negligenciável contra<br />
o protocolo, sob o mo<strong>de</strong>lo <strong>de</strong> adversário estendido da Seção 3, então existe algoritmo <strong>de</strong><br />
tempo polinomial que resolve o Gap-BDH. A seguir, enunciamos o teorema que relaciona<br />
a vantagem do adversário com a do solucionador do Gap-BDH; no apêndice A, apresentamos<br />
sua <strong>de</strong>monstração sob o mo<strong>de</strong>lo <strong>de</strong> oráculo aleatório [Bellare e Rogaway 1993b].<br />
Teorema 1 Sob a hipótese <strong>de</strong> dificulda<strong>de</strong> do problema Gap-BDH, se as funções H, H 1 e<br />
H 2 são mo<strong>de</strong>ladas como oráculos aleatórios, então o protocolo CL-AKA Novo é seguro.<br />
5. Revisão do Protocolo <strong>de</strong> Yang e Tan<br />
Yang e Tan propuseram pequenas modificações na especificação formal do mo<strong>de</strong>lo <strong>de</strong><br />
segurança <strong>de</strong> [Lippold et al. 2009], porém sem alterar as proprieda<strong>de</strong>s essenciais, como<br />
permitir adversário ativo, isto é, que po<strong>de</strong> escolher arbitrariamente o valor do temporário<br />
secreto dos envolvidos em uma sessão <strong>de</strong> comunicação [Yang e Tan 2011]. Os autores<br />
propuseram um protocolo CL-AKA sem emparelhamento bilinear e apresentaram<br />
<strong>de</strong>monstração <strong>de</strong> segurança sob a hipótese <strong>de</strong> dificulda<strong>de</strong> do Gap-DH. O protocolo <strong>de</strong><br />
Yang e Tan é menos eficiente no uso do canal <strong>de</strong> comunicação, porém ten<strong>de</strong> a ser mais<br />
eficiente computacionalmente, <strong>de</strong>pen<strong>de</strong>ndo do esquema <strong>de</strong> assinatura escolhido.<br />
No entanto, na prova <strong>de</strong> segurança, os autores não tratam corretamente os casos em<br />
que o adversário revela chaves <strong>de</strong> sessões diferentes da <strong>de</strong> Teste, mas que envolvem seus<br />
participantes e que possuem matching com outra sessão. Nessas situações (por exemplo<br />
no caso (1f) da <strong>de</strong>monstração), a simulação po<strong>de</strong> ser abortada e o simulador não po<strong>de</strong>rá<br />
aproveitar a vantagem do adversário. Por esse motivo, não se po<strong>de</strong> afirmar que o protocolo<br />
é seguro no mo<strong>de</strong>lo prometido.<br />
6. Comparações<br />
O protocolo novo tem <strong>de</strong>sempenho computacional similar aos anteriores, porém apresenta<br />
nível <strong>de</strong> segurança maior com relação a um adversário interno, pois foi mostrado seguro<br />
no mo<strong>de</strong>lo estendido apresentado na Seção 3. A Tabela 1 mostra os protocolos LBG<br />
[Lippold et al. 2009], GOT [Goya et al. 2010] e o novo (<strong>de</strong>scrito na Seção 4), todos no<br />
nível <strong>de</strong> segurança para o problema Gap-BDH, em dois cenários diferentes. O cenário<br />
normal exibe os protocolos da maneira como eles são <strong>de</strong>finidos, contando-se o tempo<br />
<strong>de</strong>s<strong>de</strong> a escolha do valor secreto temporário rP até o cálculo da chave <strong>de</strong> sessão SK.<br />
Tabela 1. Comparação dos protocolos seguros sob o problema Gap-BDH<br />
Normal<br />
Pré-computação<br />
LBG-Gap GOT-Gap Novo LBG-Gap GOT-Gap Novo<br />
Emparelhamentos 4 4 4 1 1 2<br />
Exponenciações em G T 2 0 0 1 0 0<br />
Multiplicações em G T 2 1 1 1 0 0<br />
Multiplicações em G 5 7 6 4 5 5<br />
Adições em G 0 2 4 0 2 4<br />
Mo<strong>de</strong>lo <strong>de</strong> segurança Lippold et al. est. Lippold et al. est.<br />
Tempo (s) B-271 0,062 0,061 0,062 0,019 0,019 0,033<br />
B-1223 3,504 3,432 3,442 0,992 0,955 1,769<br />
270
O cenário com pré-computação é consi<strong>de</strong>rado quando um usuário A se comunica<br />
frequentemente com um usuário B, assim do ponto <strong>de</strong> vista do usuário A, alguns valores<br />
referentes a B não precisam ser computados novamente, bastando apenas serem armazenados.<br />
É importante notar os valores pré-calculados <strong>de</strong>rivados da chave secreta <strong>de</strong>vem ser<br />
armazenados <strong>de</strong> forma segura.<br />
Os protocolos foram codificados com a biblioteca criptográfica Relic (versão<br />
0.2.3) [Aranha e Gouvêa ], que é escrita em linguagem <strong>de</strong> programação C. A Tabela 1<br />
apresenta dois tempos que se referem às execuções empregando as curvas binárias B-271<br />
e B-1223 presentes na biblioteca. Essas curvas apresentam nível <strong>de</strong> segurança mínimo<br />
<strong>de</strong> 70 bits e 128 bits respectivamente. O ambiente <strong>de</strong> testes para simulação dos protocolos<br />
inclui um computador com processador Intel Core 2 Duo T5450 (1.66Ghz e 2MB <strong>de</strong><br />
cache L2) e sistema operacional Ubuntu 11.04. Apesar do processador ter 2 núcleos, os<br />
programas são executados em apenas uma única thread. Os programas são compilados e<br />
executados em 64 bits. Os tempos da Tabela 1 foram obtidos com essa configuração.<br />
Com base nos resultados apresentados na Tabela 1, observa-se que em uso normal<br />
os protocolos possuem aproximadamente os mesmos tempos <strong>de</strong> execução. Já com<br />
pré-computação, o novo protocolo não obtém vantagem <strong>de</strong> tempo. Na tabela não foram<br />
incluídos os protocolos que são seguros sob outros mo<strong>de</strong>los, pois apresentam nível <strong>de</strong><br />
segurança inferior.<br />
7. Conclusões<br />
Esten<strong>de</strong>mos o mo<strong>de</strong>lo <strong>de</strong> segurança mais forte <strong>de</strong>ntre os existentes para protocolos <strong>de</strong><br />
acordo <strong>de</strong> chave no mo<strong>de</strong>lo <strong>de</strong> chave pública sem certificado, tornando-o resistente a<br />
ataques <strong>de</strong> uma autorida<strong>de</strong> mal intencionada. Apresentamos um novo protocolo que é<br />
seguro nesse mo<strong>de</strong>lo estendido, sob a hipótese <strong>de</strong> dificulda<strong>de</strong> do problema Gap-BDH,<br />
no mo<strong>de</strong>lo <strong>de</strong> oráculos aleatórios. O protocolo proposto tem <strong>de</strong>sempenho equivalente a<br />
outros que foram mostrados seguros em condições similares, mas ocupa um patamar <strong>de</strong><br />
segurança mais elevado. Apontamos que o protocolo <strong>de</strong> Yang e Tan, que tem potencial<br />
para implementações eficientes, apresenta falhas na <strong>de</strong>monstração <strong>de</strong> segurança. Estamos<br />
trabalhando em duas variações sobre o protocolo aqui proposto, uma para garantir nível<br />
<strong>de</strong> segurança maior com o problema computacional BDH (melhor que Gap-BDH) e outra<br />
para maior eficiência com mo<strong>de</strong>lo <strong>de</strong> segurança melhorado <strong>de</strong> Swanson e Jao. Como<br />
trabalho futuro, sugerimos a busca por protocolos que sejam mostrados seguros no mo<strong>de</strong>lo<br />
padrão, sem oráculos aleatórios.<br />
Referências<br />
Al-Riyami, S. S. e Paterson, K. G. (2003). Certificateless public key cryptography. In<br />
ASIACRYPT 2003, volume 2894 of LNCS. Springer.<br />
Aranha, D. F. e Gouvêa, C. P. L. RELIC is an Efficient LIbrary for Cryptography. http:<br />
//co<strong>de</strong>.google.com/p/relic-toolkit/.<br />
Au, M. H., Mu, Y., Chen, J., Wong, D. S., Liu, J. K. e Yang, G. (2007). Malicious kgc<br />
attacks in certificateless cryptography. In Proceedings of the 2nd ACM symposium on<br />
Information, computer and communications security, ASIACCS ’07, pages 302–311,<br />
New York, NY, USA. ACM.<br />
271
Bellare, M. e Rogaway, P. (1993a). Entity authentication and key distribution. In LNCS -<br />
CRYPTO’93, pages 232–249. Springer Berlin. v.773.<br />
Bellare, M. e Rogaway, P. (1993b). Random oracles are practical: A paradigm for <strong>de</strong>signing<br />
efficient protocols. In First ACM Conference on Computer and Communications<br />
Security, pages 62–73, Fairfax, Virginia, USA. ACM.<br />
Boneh, D. e Franklin, M. (2003). I<strong>de</strong>ntity-based encryption from the weil pairing. SIAM<br />
J. Comput., 32(3):586–615.<br />
Chen, L., Cheng, Z. e Smart, N. P. (2007). I<strong>de</strong>ntity-based key agreement protocols from<br />
pairings. Int. J. Inf. Secur., 6(4):213–241.<br />
Dent, A. W. (2008). A survey of certificateless encryption schemes and security mo<strong>de</strong>ls.<br />
Int. J. Inf. Secur., 7(5):349–377.<br />
Goya, D., Okida, C. e Terada, R. (2010). A two-party certificateless authenticated key<br />
agreement protocol. In SBSeg 2010 X Simpósio Brasileiro <strong>de</strong> Segurança da Informação<br />
e <strong>de</strong> Sistemas Computacionais. Socieda<strong>de</strong> Brasileira <strong>de</strong> Computação.<br />
Krawczyk, H. (2005). Hmqv: a high-performance secure diffie-hellman protocol. In<br />
Advances in Cryptology, CRYPTO 2005, LNCS 3621, page 546566.<br />
LaMacchia, B., Lauter, K. e Mityagin, A. (2007). Stronger security of authenticated key<br />
exchange. In ProvSec’07: Proceedings of the 1st international conference on Provable<br />
security, volume 4784 of LNCS, pages 1–16, Berlin, Hei<strong>de</strong>lberg. Springer-Verlag.<br />
Lippold, G., Boyd, C. e González Nieto, J. (2009). Strongly secure certificateless key<br />
agreement. In Pairing ’09: Proceedings of the 3rd International Conference Palo<br />
Alto on Pairing-Based Cryptography, volume 5671 of LNCS, pages 206–230, Berlin,<br />
Hei<strong>de</strong>lberg. Springer-Verlag.<br />
Lippold, G. e González Nieto, J. (2010). Certificateless key agreement in the standard<br />
mo<strong>de</strong>l. In Proceedings of the Eighth Australasian Conference on Information Security<br />
– volume 105, AISC ’10, pages 75–85. Australian Computer Society, Inc.<br />
Swanson, C. e Jao, D. (2009). A study of two-party certificateless authenticated keyagreement<br />
protocols. In INDOCRYPT ’09: Proceedings of the 10th International<br />
Conference on Cryptology in India, volume 5922 of LNCS, pages 57–71, Berlin, Hei<strong>de</strong>lberg.<br />
Springer-Verlag.<br />
Yang, G. e Tan, C.-H. (2011). Strongly secure certificateless key exchange without pairing.<br />
In Proceedings of the 6th ACM Symposium on Information, Computer and Communications<br />
Security, ASIACCS ’11, pages 71–79, New York, NY, USA. ACM.<br />
Zhang, L., Zhang, F., Wu, Q. e Domingo-Ferrer, J. (2010). Simulatable certificateless<br />
two-party authenticated key agreement protocol. Inf. Sci., 180:1020–1030.<br />
A. Demonstração do Teorema 1<br />
Suponha, por absurdo, que existe um algoritmo A <strong>de</strong> tempo polinomial probabilístico<br />
com vantagem não negligenciável em quebrar o protocolo. Vamos mostrar como construir<br />
um algoritmo S que recebe como entrada uma quádrupla (P, aP, bP, cP ) referente a um<br />
<strong>de</strong>safio BDH e gera como resposta o valor e(cP, abP ) com a ajuda <strong>de</strong> um oráculo <strong>de</strong><br />
<strong>de</strong>cisão DBDH. S simula uma execução real do protocolo e interage com o adversário<br />
272
Tabela 2. Casos válidos <strong>de</strong> corrompimento dos participantes da sessão <strong>de</strong> Teste<br />
Adversário 1 2 3 4 5 6 7 8 9<br />
consulta A B A B A B A B A B A B A B A B A B<br />
RevealPartial ou r r r r<br />
KGC mal intenc. e e e e e e e e<br />
RevealSV ou r r r r r r r r r r r r<br />
ReplacePK e e e e e e e e e e e e<br />
RevealEph ou r r r r r r r r r r r r<br />
adversário é ativo r e r e r e r e r e r e<br />
Adversário po<strong>de</strong> revelar(r) ou escolher(e)/modificar valor do componente secreto<br />
A, nos mol<strong>de</strong>s do jogo <strong>de</strong>scrito no mo<strong>de</strong>lo <strong>de</strong> segurança <strong>de</strong> [Lippold et al. 2009] com as<br />
ampliações <strong>de</strong>scritas na Seção 3. Se o jogo não for abortado, A prossegue até o final<br />
e obtém vantagem contra o protocolo. O simulador usa os passos do adversário para<br />
calcular, então, a resposta ao <strong>de</strong>safio BDH, que é armazenada na variável answer.<br />
Antes do início do jogo entre o simulador S e o adversário A, S tenta advinhar<br />
qual será a sessão sobre a qual A realizará a consulta <strong>de</strong> Teste e quem serão os participantes<br />
<strong>de</strong>ssa sessão. Consi<strong>de</strong>re um conjunto <strong>de</strong> usuários honestos previamente estabelecidos<br />
U = {U 1 , . . . , U n }, com n ≤ q 1 , e uma lista correspon<strong>de</strong>nte com valores (ID i , x i , x i P ).<br />
O simulador escolhe I, J ∈ {1, . . . , n}, com I ≠ J, e a sessão Π t I,J , on<strong>de</strong> t ∈ {1, . . . , q 0}.<br />
A probabilida<strong>de</strong> <strong>de</strong> S fazer escolhas corretas é maior que 1/(q 0 q 2 1).<br />
Se S fizer escolhas incorretas, será obrigado a abortar o jogo em algum momento.<br />
Por outro lado, se o adversário realizar alguma operação não permitida, o jogo também é<br />
abortado por S. No entanto, se A apresenta vantagem não negligenciável, é porque realiza<br />
a consulta <strong>de</strong> Teste sobre uma sessão fresh, respeitando a <strong>de</strong>finição <strong>de</strong> segurança. Em<br />
outras palavras, o adversário revela (ou modifica) no máximo dois dos três componentes<br />
secretos associados a cada participante da sessão <strong>de</strong> Teste.<br />
Na Tabela 2, são listadas as possibilida<strong>de</strong>s que o adversário possui para revelar ou<br />
modificar valores secretos associados à sessão <strong>de</strong> Teste e seus participantes, sem corromper<br />
integralmente a sessão. Os participantes da sessão <strong>de</strong> Teste são <strong>de</strong>notados por A e B,<br />
que equivalem respectivamente às i<strong>de</strong>ntida<strong>de</strong>s ID I e ID J . Sem perda <strong>de</strong> generalida<strong>de</strong>,<br />
consi<strong>de</strong>re que A é quem inicia a sessão e B é quem respon<strong>de</strong>.<br />
Os casos 1 a 4 representam aqueles em que o adversário po<strong>de</strong> ser a própria autorida<strong>de</strong><br />
<strong>de</strong> geração <strong>de</strong> chaves que, na situação mais crítica, é um KCG que gera os parâmetros<br />
<strong>de</strong> forma <strong>de</strong>sonesta. Para mostrar que o adversário não é capaz <strong>de</strong> tirar vantagem em escolher<br />
parâmetros <strong>de</strong> forma mal intencionada, S permite que A selecione arbitrariamente<br />
os parâmetros do sistema; A entrega para o simulador os parâmetros gerados junto com a<br />
chave mestra pública mpk e não revela a chave mestra secreta msk. Os casos 5 a 9 representam<br />
aqueles em que o adversário é externo. Nesses casos, S seleciona os parâmetros<br />
do sistema e <strong>de</strong>fine mpk = aP .<br />
O simulador tenta advinhar qual <strong>de</strong>sses nove casos o adversário explorará para<br />
quebrar o protocolo. Se S errar na escolha, o jogo será abortado em algum momento. Se<br />
acertar, então a probabilida<strong>de</strong> <strong>de</strong> S completar o jogo será maior que 1/(9q 0 q 2 1). S ainda<br />
estabelece que x A P = aP (casos 1 e 3), x B P = bP (casos 1 e 4), x A P = cP (caso 6)<br />
e x B P = cP (caso 5); quando for o caso, S faz x A =⊥ ou x B =⊥. S inicia, então, a<br />
273
simulação.<br />
Respostas aos Oráculos<br />
Uma vez iniciado o jogo, o simulador <strong>de</strong>ve respon<strong>de</strong>r às consultas realizadas pelo adversário<br />
aos oráculos disponíveis. O comportamento do simulador para tratar essas consultas<br />
varia <strong>de</strong> acordo com cada um dos nove casos. Os oráculos H e RevealSessionKey,<br />
que respectivamente calcula e revela a chave <strong>de</strong> sessão, são os mais críticos a serem<br />
tratados pelo simulador. Por esse motivo, eles serão <strong>de</strong>scritos mais <strong>de</strong>talhadamente no<br />
Apêndice A.1. Os <strong>de</strong>mais oráculos são tratados como segue:<br />
H 1 (ID i ). Se S está simulando os casos 5 a 9, S embute convenientemente as entradas<br />
do <strong>de</strong>safio BDH:<br />
• casos 5, 7 e 9: H 1 (A) = bP , ou seja, Q A1 é <strong>de</strong>finido como bP<br />
• casos 6 e 8: H 1 (B) = bP , ou seja, Q B1 é <strong>de</strong>finido como bP<br />
• caso 9: H 1 (B) = cP , ou seja, Q B1 é <strong>de</strong>finido como cP<br />
Para os <strong>de</strong>mais participantes nos casos 5 a 9 e para os casos 1 a 4, S escolhe l i ∈ Z q<br />
ao acaso e respon<strong>de</strong> l i P . Todas as respostas e os valores l i são armazenados em<br />
uma lista.<br />
H 2 (ID i ). Análogo a H 1 , porém S sorteia z, y ∈ Z q (ou z, y A , y B , para o caso 9) e <strong>de</strong>fine:<br />
• casos 5 e 7: H 2 (A) = yP −zbP , ou seja, Q A2 é <strong>de</strong>finido como yP −zQ A1<br />
• casos 6 e 8: H 2 (B) = yP −zbP , ou seja, Q B2 é <strong>de</strong>finido como yP −zQ B2<br />
• caso 9: H 2 (A) = y A P − zbP , isto é, Q A2 = y A P − zQ A1 e<br />
H 2 (B) = y B P − zcP , ou seja, Q B2 = y B P − zQ B1<br />
Para os <strong>de</strong>mais participantes nos casos 5 a 9 e para os casos 1 a 4, S escolhe p i ∈<br />
Z q ao acaso e respon<strong>de</strong> p i P . Todas as respostas e os valores p i são armazenados<br />
em uma lista.<br />
RequestPublicKey(ID i ). S respon<strong>de</strong> x i P .<br />
EstablishParty(ID i , x i P ). O simulador cria o usuário <strong>de</strong>sonesto com i<strong>de</strong>ntificador<br />
(ID i ), caso ainda não exista, chamando os oráculos H 1 , H 2 . S registra a chave<br />
pública x i P , <strong>de</strong>fine x i =⊥. Nos casos 5 a 9, entrega ao adversário a chave secreta<br />
parcial (d i1 = l i aP, d i2 = p i aP ); nos casos 1 a 4, S recebe a chave secreta parcial<br />
como entrada à consulta ao oráculo e a armazena.<br />
Send(Π s i,j, m). Se a sessão Π s i,j ainda não existe, S cria uma sessão para onwner ID i e<br />
peer ID j , com estado in<strong>de</strong>finido e com o papel <strong>de</strong> emissor (se m = λ) ou receptor<br />
(em caso contrário). Se m = λ e Π s i,j é sessão <strong>de</strong> Teste, então <strong>de</strong>fine r iP = aP<br />
(nos casos 2 e 4) ou r i P = cP (no caso 8). Se m ≠ λ, Π s i,j é sessão <strong>de</strong> Teste<br />
com papel <strong>de</strong> receptor, então <strong>de</strong>fine r i P = bP (nos casos 2 e 3) ou r i P = cP<br />
(no caso 7). Nos <strong>de</strong>mais casos, S escolhe r i ao acaso. S executa o protocolo,<br />
extraindo r B P <strong>de</strong> m quando necessário, atualiza o estado da sessão e entrega r i P<br />
ao adversário.<br />
RevealPartialKey(ID i ). Se S está tratando os casos 1 a 4, aborta. Se ID i = A e S está<br />
tratando os casos 5, 7 ou 9, aborta. Se ID i = B e S está tratando os casos 6, 8<br />
ou 9, aborta. Caso contrário, respon<strong>de</strong> a chave secreta parcial (d i1 = l i aP, d i2 =<br />
p i aP ).<br />
RevealSecretValue(ID i ). Se x i =⊥, aborta. Se ID i = A e S está tratando os casos 1,<br />
3 ou 6, aborta. Se ID i = B e S está tratando os casos 1, 4 ou 5, aborta. Caso<br />
contrário, respon<strong>de</strong> o valor secreto x i .<br />
274
ReplacePublicKey(ID i , x i P ). Se ID i = A e S está tratando os casos 1, 3 ou 6, aborta.<br />
Se ID i = B e S está tratando os casos 1, 4 ou 5, aborta. Caso contrário, substitui<br />
a chave pública por x i P e <strong>de</strong>fine x i =⊥.<br />
RevealEphemeral(Π s i,j). Se ID i = A e S está tratando os casos 2, 4 ou 8, aborta. Se<br />
ID i = B e S está tratando os casos 2, 3 ou 7, aborta. Caso contrário, <strong>de</strong>volve o<br />
valor secreto r i da sessão.<br />
RevealSessionKey(Π s i,j). Se (Π s i,j) for a sessão <strong>de</strong> Teste, aborta. Caso contrário, prossegue<br />
com os passos <strong>de</strong>scritos no Apêndice A.1. Nos casos 1 a 4, S recebe a chave<br />
secreta parcial do participante ID i como entrada para a consulta.<br />
H(ID i , ID j , E i , E j , K, L, M, Z). Prossegue com os passos <strong>de</strong>scritos no Apêndice A.1.<br />
Test(Π s i,j). Se Π s i,j não é a sessão <strong>de</strong> Teste, aborta. Caso contrário, S joga uma moeda<br />
b ∈ {0, 1}. Se b = 0, <strong>de</strong>volve a chave <strong>de</strong> sessão; caso contrário sorteia e <strong>de</strong>volve<br />
um número aleatório r ∈ {0, 1} k para o adversário.<br />
Finalização do Jogo<br />
Assim que A finaliza o jogo, S <strong>de</strong>volve answer. Se a probabilida<strong>de</strong> <strong>de</strong> sucesso <strong>de</strong> A<br />
é P r[A], então a probabilida<strong>de</strong> <strong>de</strong> sucesso <strong>de</strong> S é P r[S] ≥ P r[A]/(9q 0 q1). 2 Se A tem<br />
vantagem não negligenciável em diferenciar um número aleatório da chave <strong>de</strong> sessão é<br />
porque A consultou H com valores corretos <strong>de</strong> K, L, M e Z. Nesse caso, answer contém<br />
o valor e(cP, abP ), conforme cálculos apresentados na seção A.1. Então S resolve o<br />
problema Gap-BDH em tempo polinomial em k, o que contradiz a hipótese <strong>de</strong> dificulda<strong>de</strong><br />
do Gap-BDH.<br />
□<br />
A.1. Oráculos H e RevealSessionKey<br />
Quando o oráculo RevealSessionKey é consultado pelo adversário, S <strong>de</strong>ve informar o<br />
valor da chave <strong>de</strong> uma dada sessão Π s i,j, caso ela não seja a sessão <strong>de</strong> Teste. Entretanto,<br />
nas sessões que não são a <strong>de</strong> Teste e que envolvem os participantes A e/ou B do Teste, o<br />
simulador não é capaz <strong>de</strong> calcular por si só o valor da chave <strong>de</strong> sessão, pois <strong>de</strong>sconhece<br />
alguns valores secretos. Se S informar valores diferentes <strong>de</strong> chave <strong>de</strong> sessão para duas<br />
sessões com matching, o adversário <strong>de</strong>tecta a incoerência e aborta o jogo. Se isso ocorre,<br />
S é incapaz <strong>de</strong> aproveitar a vantagem <strong>de</strong> A para resolver Gap-BDH. Por esse motivo,<br />
passamos a <strong>de</strong>screver como S proce<strong>de</strong> <strong>de</strong> modo a ser sempre consistente.<br />
O simulador mantém uma lista H lst , inicialmente vazia, com entradas na forma<br />
(ID i , ID j , E i , E j , K, L, M, Z, SK). Como H é função, S <strong>de</strong>ve respon<strong>de</strong>r o mesmo valor<br />
SK <strong>de</strong> chave <strong>de</strong> sessão para as mesmas entradas. Se A consultar H antes <strong>de</strong> eventualmente<br />
solicitar RevealSessionKey, basta S calcular o valor da chave <strong>de</strong> sessão SK e<br />
atualizar a lista. Se RevealSessionKey é consultado antes e S não é capaz <strong>de</strong> calcular<br />
todos os valores K, L, M, Z, então S sorteia SK e insere um novo registro na lista H lst<br />
com os valores (ID i , ID j , E i , E j , . . . , SK), preechendo tanto quanto possível os valores<br />
corretos <strong>de</strong> K, L, M, Z. Em uma eventual consulta posterior a H referente a uma sessão<br />
com matching, S atualiza H lst com os dados faltantes e respon<strong>de</strong> o mesmo valor SK. A<br />
seguir, vamos dividir a análise em dois gran<strong>de</strong>s casos, on<strong>de</strong> H e RevealSessionKey são<br />
consultados sobre sessões que:<br />
(a) não envolvem os participantes A e B da sessão <strong>de</strong> Teste e<br />
(b) envolvem o participante A e/ou B da sessão <strong>de</strong> Teste<br />
275
Tabela 3. Casos válidos para o adversário e inserção do <strong>de</strong>safio BDH<br />
1 2 3 4 5 6 7 8 9<br />
Chave A B A B A B A B A B A B A B A B A B<br />
ID: Q 1 x x x x x x x x bP bP bP bP bP cP<br />
PK: xP aP bP x x aP x x bP x cP cP x x x x x x x<br />
Eph: rP x aP bP bP aP x x x cP cP x x<br />
Desafio<br />
mpk = aP<br />
em: Z 1 Z 3 Z 2 Z 4 M 1 M 2 K 1 K 2 K 3<br />
(aP, bP, cP )–<strong>de</strong>safio BDH<br />
(x)–simulador <strong>de</strong>sconhece componente secreto<br />
(a) Sessões que Não Envolvem A e B Alvos do Teste<br />
Consi<strong>de</strong>re que A consulta H ou RevealSessionKey sobre participantes ID i e ID j , ambos<br />
diferentes <strong>de</strong> A, B. Sem perda <strong>de</strong> generalida<strong>de</strong>, suponha que ID i é quem inicia a sessão.<br />
O simulador conhece as chaves secretas <strong>de</strong> ID i e <strong>de</strong> ID j , a não ser nos seguintes casos:<br />
• A substitui a chave pública <strong>de</strong> ID i e, portanto, S não conhece x i<br />
• A substitui a chave pública <strong>de</strong> ID j e, portanto, S não conhece x j<br />
• A escolhe ativamente o valor temporário <strong>de</strong> ID j e, portanto, S não conhece r j<br />
Po<strong>de</strong>mos supor que S conhece r i porque, se A ativamente alterar r i P e entregar outro valor<br />
a ID j , não haverá sessão com matching (a não ser com probabilida<strong>de</strong> negligenciável).<br />
No pior dos casos, A consulta RevealSessionKey antes <strong>de</strong> consultar H e S é incapaz <strong>de</strong><br />
calcular os valores Z 1 , Z 2 . Em uma eventual consulta posterior <strong>de</strong> A a H, S verifica se<br />
e(x i P, x j P ) ? = e(x i x j P, P ) e se e(x i P, r j P ) ? = e(x i r j P, P ), on<strong>de</strong> x i x j P e x i r j P são<br />
informados por A. Se ambas igualda<strong>de</strong>s valem e <strong>de</strong>mais entradas <strong>de</strong> H correspon<strong>de</strong>m<br />
aos valores que S consegue calcular, então S respon<strong>de</strong> a mesma chave SK, pois se trata<br />
<strong>de</strong> sessão com matching, caso contrário, sorteia nova chave. S atualiza H lst conforme<br />
necessário.<br />
(b) Sessões que Envolvem A ou B Alvos do Teste<br />
O simulador embute os valores do <strong>de</strong>safio em pontos estratégicos do protocolo, <strong>de</strong> modo a<br />
induzir o adversário a realizar cálculos com esses valores. Na Tabela 3, são relacionadas<br />
as possíveis estratégias que A po<strong>de</strong> empregar para quebrar a segurança do protocolo e<br />
que chaves são associadas aos valores do <strong>de</strong>safio. A última linha da Tabela 3 indica as<br />
variáveis que ocorrem no protocolo e que capturam o cálculo <strong>de</strong> e(cP, abP ), ou seja, a<br />
resposta do <strong>de</strong>safio. Obviamente S não sabe calcular essa resposta, mas mostraremos que<br />
se A apresenta vantagem não negligenciável, é porque conhece elementos suficientes para<br />
que a solução seja calculada. Tais elementos são entregues ao simulador sempre que A<br />
realiza consultas ao oráculo H.<br />
Observe que as variáveis K e L do protocolo po<strong>de</strong>m ser reescritas como indicado<br />
na Tabela 4. O fatores <strong>de</strong> M e os componentes <strong>de</strong> Z também são nomeados para facilitar a<br />
leitura dos cálculos. Quando S embute uma das entradas do <strong>de</strong>safio BDH em uma chave,<br />
automaticamente torna-se <strong>de</strong>sconhecido o respectivo valor secreto. Por exemplo, quando<br />
aP é atribuído como valor <strong>de</strong> chave pública <strong>de</strong> A, isto é, x A P = aP , S <strong>de</strong>sconhece x A<br />
por <strong>de</strong>sconhecer a. Nos casos 5 a 9, a chave pública mestra recebe o valor aP e, por isso,<br />
S não tem acesso ao valor da chave mestra secreta. Quando Q A1 = bP , nos casos 5, 7 e<br />
276
Tabela 4. Nomenclatura das variáveis<br />
K = e(r B P, d A1 ) · e(Q<br />
} {{ }<br />
B1 , r A sP ) · e(Q<br />
} {{ }<br />
B1 , d A1 ) · e(r<br />
} {{ } B P, r A sP )<br />
} {{ }<br />
K 1 K 2 K 3<br />
L = e(r B P, d A2 ) · e(Q<br />
} {{ }<br />
B2 , r A sP ) · e(Q<br />
} {{ }<br />
B2 , d A2 ) · e(r<br />
} {{ } B P, r A sP )<br />
} {{ }<br />
L 1 L 2 L 3<br />
K 4<br />
L 4 (=K 4 )<br />
M = e(x B P, d A1 ) · e(Q<br />
} {{ }<br />
B1 , x A sP )<br />
} {{ }<br />
M 1<br />
M 2<br />
Z = (x A x B P , x<br />
} {{ } A r B P , r<br />
} {{ } A r B P , r<br />
} {{ } A x B P )<br />
} {{ }<br />
Z 1 Z 2 Z 3 Z 4<br />
9, S <strong>de</strong>sconhece a chave parcial secreta d A1 = abP , pois não sabe calcular ab. Na Tabela<br />
3, são indicados com “x” outros componentes secretos aos quais S não tem acesso. São<br />
os casos em que A é permitido substituir a chave pública ou escolher ativamente o valor<br />
temporário <strong>de</strong> sessão, preservando ainda a característica <strong>de</strong> sessão fresh e com matching.<br />
De acordo com a <strong>de</strong>finição <strong>de</strong> sessão fresh, se não houver sessão com matching, o<br />
receptor não po<strong>de</strong> ser totalmente corrompido. S precisa tratar corretamente as situações<br />
em que B se envolve em sessões integralmente corrompidas, isto é, com um participante<br />
C <strong>de</strong>sonesto. Esse cenário é tratado como subcaso dos casos 1, 4, 5, 6, 8 e 9. Analogamente,<br />
S <strong>de</strong>ve lidar corretamente com as sessões em que A interage com o participante C<br />
<strong>de</strong>sonesto; essa situação é tratada como subcaso <strong>de</strong> todos os nove casos.<br />
Na sequência, vamos analisar os nove casos sobre sessões que envolvem A e/ou<br />
B, participantes do Teste. Nos casos 5 a 9, fazemos uso do oráculo <strong>de</strong> <strong>de</strong>cisão BDH,<br />
suposto existente no problema Gap-BDH. No caso 9, usamos duas variantes do problema<br />
Gap-BDH, que mostramos serem equivalentes ao Gap-BDH, no Apêndice A.2.<br />
Caso 1. O <strong>de</strong>safio é embutido em Z 1 . Se A consulta H(A, B, E A , E B , K, L, M, (Z 1 , Z 2 ,<br />
?<br />
Z 3 , Z 4 )), S verifica se e(aP, bP ) = e(P, Z 1 ), caso sim, answerBDH ←<br />
e(cP, Z 1 ). S proce<strong>de</strong> como no caso (a) para manter H lst atualizada.<br />
Casos 2, 3 e 4. O <strong>de</strong>safio é embutido respectivamente em Z 3 , Z 2 e Z 4 . S proce<strong>de</strong> <strong>de</strong><br />
forma semelhante ao caso 1.<br />
Caso 5. O <strong>de</strong>safio é embutido em M 1 .<br />
Se A consulta H(A, B, E A , E B , K, L, M, Z), S verifica se M 1 contém a resposta ao<br />
<strong>de</strong>safio, calculando M 2 = e(d B1 , x A P ), M 1 = M/M 2 e submetendo 〈aP, bP, cP, M 1 〉<br />
ao oráculo DBDH; se o oráculo respon<strong>de</strong>r positivamente, answerBDH ← M 1 . S verifica<br />
se já foi calculada chave para a sessão em questão ou uma com matching; em caso<br />
positivo, atualiza entradas incompletas no registro <strong>de</strong> H lst se for preciso, caso contrário,<br />
sorteia SK e cria novo registro em H lst . Respon<strong>de</strong> SK.<br />
Se A consulta RevealSessionKey(A, B, s), S calcula as variáveis <strong>de</strong> que é capaz e procura<br />
(A, B, E A , E B , ∗, ∗, ∗, (∗, ∗, Z 3 , Z 4 ), ∗) em H lst ; se encontrar registros na forma<br />
K<br />
(A, B, E A , E B , K, L, M, (Z 1 , Z 2 , Z 3 , Z 4 ), SK), calcula K 1 =<br />
K 2·K 3·K 4<br />
M 1 = M M 2<br />
e fornece<br />
〈aP, bP, r B P, K 1 〉 e 〈aP, bP, cP, M 1 〉 ao oráculo DBDH; se o oráculo respon<strong>de</strong>r<br />
positivamente em ambas consultas, S calcula L 1 =<br />
L<br />
L 2·L 3·L 4<br />
e verifica se valem todas as<br />
?<br />
= e(r B P, yaP ) · K −z<br />
1 , se e(x A P, x B P ) ? = e(Z 1 , P ) e se<br />
seguintes igualda<strong>de</strong>s: se L 1<br />
e(x A P, r B P ) = ? e(Z 2 , P ); em caso positivo, S respon<strong>de</strong> SK, caso contrário, sorteia novo<br />
SK.<br />
277
Se A consulta RevealSessionKey(A, C, s), S proce<strong>de</strong> <strong>de</strong> forma análoga e captura consistência<br />
fornecendo 〈aP, r c P, yP, K 1 〉 e 〈aP, x c P, yP, M 1 〉 ao oráculo DBDH.<br />
Se A consulta RevealSessionKey(C, B, s), S testa a consistência dos componentes <strong>de</strong> Z e<br />
testa se K ? = K 1 ·K 2 ·K 3 ·e(Z 3 , aP ) e se L ? = L 1 ·L 2 ·L 3 ·e(Z 3 , aP ); se todas igualda<strong>de</strong>s<br />
valem, respon<strong>de</strong> SK, caso contrário, sorteia novo SK.<br />
Casos 6, 7 e 8. O <strong>de</strong>safio é embutido respectivamente em M 2 , K 1 e K 2 . S proce<strong>de</strong> <strong>de</strong><br />
forma semelhante ao caso 5.<br />
Caso 9. Similar ao caso 5, mas o <strong>de</strong>safio é embutido em K 3 . Se A consulta H, S fornece<br />
〈aP, bP, cP, r A P, r B P, K〉 ao oráculo <strong>de</strong> <strong>de</strong>cisão-BDH + (ver Apêndice A.2); se o<br />
oráculo respon<strong>de</strong>r positivamente, S calcula K ′ K<br />
=<br />
K 2·K 4<br />
L ′ L<br />
=<br />
L 2·L 4<br />
U 1 =<br />
[<br />
e(<br />
y A (r z BP + y B P ) − y A cP − y B bP, aP ) ] [ ] −1<br />
1+z<br />
U 2 = [L ′ ] −1<br />
1<br />
z K<br />
K 3 = U 1 ·<br />
′ 1+z<br />
U 2<br />
e<br />
answerBDH ← K 3 .<br />
Se A consulta RevealSessionKey(A, B, s), S testa K como acima e fornece<br />
〈aP, bP, cP, x A P, x B P, M〉 ao oráculo <strong>de</strong> <strong>de</strong>cisão-BDH ∗ ; se o oráculo respon<strong>de</strong>r positivamente<br />
e K também passar no teste, S respon<strong>de</strong> SK, caso contrário, sorteia novo SK.<br />
Se A consulta RevealSessionKey para (A, C, s) ou (C, B, s), S proce<strong>de</strong> <strong>de</strong> forma análoga<br />
ao caso 5.<br />
A.2. Variantes do problema Gap-BDH<br />
Seja e : G × G → G T um emparelhamento bilinear admissível, com G e G T grupos <strong>de</strong><br />
or<strong>de</strong>m prima q, P gerador <strong>de</strong> G e valores aleatórios a, b, c ∈ Z q e r, s ∈ Z ∗ q. Defina os<br />
seguintes problemas computacionais:<br />
BDH ∗ : dados 〈aP, bP, cP, rP, sP 〉, calcular e(sP, abP ) · e(rP, acP ).<br />
BDH + : dados 〈aP, bP, cP, rP, sP 〉, calcular e(sP + cP, raP + abP ).<br />
Gap-BDH ∗ : dados 〈aP, bP, cP, rP, sP 〉, calcular e(sP, abP ) · e(rP, acP ), com ajuda <strong>de</strong><br />
um oráculo <strong>de</strong> <strong>de</strong>cisão-BDH ∗ , que <strong>de</strong>ci<strong>de</strong> se e(vP, xyP ) · e(uP, xzP ) ? = T , para<br />
dados (xP, yP, zP, uP, vP, T ) ∈ G 5 × G T .<br />
Gap-BDH + : dados 〈aP, bP, cP, rP, sP 〉, calcular e(sP +cP, raP +abP ), com ajuda <strong>de</strong><br />
um oráculo <strong>de</strong> <strong>de</strong>cisão-BDH + .<br />
Os problemas BDH ∗ e BDH + são equivalentes ao BDH:<br />
BDH = p BDH ∗ . É imediato que BDH ∗ ≤ p BDH. Para ver que BDH ≤ p BDH ∗ , suponha<br />
que existe um algoritmo A que resolve o BDH ∗ ; vamos construir um algoritmo<br />
S que resolve o BDH. S recebe como entrada (xP, yP, zP ), escolhe u, v ∈ Z ∗ q,<br />
submete (xP, yP, uP, vP, zP ) para A e recebe como resposta T = e(zP, xyP ) ·<br />
e(vP, xuP ). S <strong>de</strong>volve T · e(vP, xP ) −u como solução.<br />
BDH = p BDH + . Para ver que BDH ≤ p BDH + , suponha que existe um algoritmo A que<br />
resolve o BDH + ; vamos construir um algoritmo S que resolve o BDH. S recebe<br />
como entrada (xP, yP, zP ), escolhe u, v ∈ Z ∗ q, submete (xP, yP, zP, uP, vP )<br />
para A e recebe como resposta T = e(vP + zP, uxP + xyP ) = e(vP, xyP ) ·<br />
e(zP, uxP ) · e(zP, xyP ) · e(vP, uxP ). S <strong>de</strong>volve T · e(xP, yP ) −v · e(zP, xP ) −u ·<br />
e(vP, xP ) −u como solução. BDH + ≤ p BDH segue <strong>de</strong> forma análoga.<br />
Dessas equivalências, segue que Gap-BDH ∗ e Gap-BDH + são equivalentes a Gap-BDH.<br />
278
WTICG<br />
279
Mobile Steganography Embed<strong>de</strong>r<br />
Thomas F. M. White 1 , Jean E. Martina 1,2∗†<br />
1 Computer Laboratory<br />
University of Cambridge<br />
15 JJ Thomson Avenue<br />
Cambridge - UK - CB3 0FD<br />
2 Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina<br />
Departamento <strong>de</strong> Informática e <strong>de</strong> Estatística<br />
Laboratório <strong>de</strong> Segurança em Computação<br />
Campus Universitário - Florianópolis - SC - Brazil<br />
fredley@gmail.com, Jean.Martina@cl.cam.ac.uk<br />
Abstract. Despite the capabilities of Android mobile phones, compared in<br />
specification to personal computers a few years ago, few programs for applied<br />
steganography has been written for such <strong>de</strong>vices. Our objective is to<br />
produce an application that uses echo steganography to hi<strong>de</strong> a short text message<br />
in an audio message recor<strong>de</strong>d by the user, and then share that message.<br />
Someone with the same application on their <strong>de</strong>vice who receives such a message<br />
will be able to extract the hid<strong>de</strong>n data from the audio message. We show<br />
our <strong>de</strong>velopment strategy as well the evaluation process for our application.<br />
1. Introduction<br />
SMS messages, and MMS messages are easy to screen, especially for simple keywords.<br />
GSM itself has also been compromised [Paget 2011], so sending sensitive messages<br />
could be dangerous. Merely encrypting messages sometimes cannot be enough,<br />
as the vast majority of traffic over such systems is unencrypted (asi<strong>de</strong> from GSM).<br />
Malicious parties could <strong>de</strong>tect high levels of encrypted traffic as a signal of unwanted<br />
activity. By tracking who a person is in communication with, oppressive governments<br />
can i<strong>de</strong>ntify and track social groups using social network analysis [Scott 2000].<br />
Our project will build on the work done by Jenkins’s Steganography in Audio<br />
[Jenkins 2009], and will focus on implementing the steganographic methods used on<br />
the Android platform. We build an application in which a user can perform steganography<br />
without any complex setup or configuration, or specialist knowledge.<br />
A user will be able to use our application to communicate securely and secretly<br />
with others in a way that seems innocuous to an observer with complete access to all<br />
data. Should there be a danger of the <strong>de</strong>vice being inspected, the application can be set<br />
up to erase all traces of usage from the <strong>de</strong>vice. It will also multicast messages, so as to<br />
obscure the target of a particular message.<br />
∗ Project Supervisor<br />
† Supported by CAPES Foundation/Brazil on grant #4226-05-4<br />
280
1.1. Relevant Material<br />
Most existing steganography applications only make use of least-significant-bit encoding,<br />
and there are freely available tools which can be modified relatively simply to<br />
<strong>de</strong>tect hid<strong>de</strong>n messages reliably in this case [Steg Secret 2011]. Apart from MP3Stego<br />
[MP3 Stego 2011]all use uncompressed audio to hold the hid<strong>de</strong>n data, and most have<br />
command-line interfaces.<br />
The steganography techniques explored in Jenkinss [Jenkins 2009] go beyond,<br />
providing methods which resistant to steganalysis, at least going as far as making the<br />
problem computationally infeasible on a large scale [Meghanathan and Nayak 2010].<br />
We will take the implementation of echo steganography to our application.<br />
First proposed in 1996 by Gruhl et al. [Gruhl et al. 1996], the i<strong>de</strong>a behind echo<br />
steganography is to introduce tiny echoes into the audio, similar to the echoes present<br />
in a room. The brain ignores these, making the changes in the audio almost imperceptible.<br />
Since the data is enco<strong>de</strong>d in the actual audio itself rather than the bits of the<br />
file, this method is resistant to format changes. This is i<strong>de</strong>al for a mobile application,<br />
where data connectivity is often slow and/or expensive.<br />
2. Design Decisions<br />
The audio manipulation package javax.sound is not present in the stripped down version<br />
of Java available in Android, and the SDK provi<strong>de</strong>s no alternative. There is also<br />
no provision for recording uncompressed audio or transcoding.<br />
We used several libraries to provi<strong>de</strong> the easiest way of performing each task,<br />
and to improve the readability of the co<strong>de</strong>. There is a small cost in terms of the size<br />
of the application, but this is not too large. To overcome these problems we have used<br />
the following libraries, and 3rd-party co<strong>de</strong>:<br />
• Rehearsal Assistant [Rehearsal Assistant Source 2011] - we used some classes<br />
in or<strong>de</strong>r to record uncompressed audio data and store as a wave file.<br />
• javax.sound.sampled - This package is present in the full JDK, and is used for<br />
exactly the kind of low-level audio manipulation required in this project<br />
• FourierTransform[Fast Fourier Transform at Co<strong>de</strong> Log 2011] - An open-source<br />
Fast Fourier Transform library necessary for extracting data.<br />
• Jcraft Jorbis Library[Jcraft Jorbis Project 2011] - Ease of use for converting<br />
between uncompressed and compressed data.<br />
All other functionality, such as encryption with AES and sharing mechanisms<br />
were available in the Android SDK.<br />
2.1. Methodology and Planning<br />
We chose to use an Evolutionary Development Mo<strong>de</strong>l while <strong>de</strong>veloping the application,<br />
as it allows it to be built up in sections, writing and testing each module as it is<br />
ad<strong>de</strong>d to the project. Formal testing is done after each evolutionary cycle with unit tests<br />
to check each class behaves according to specification. Later on in the <strong>de</strong>velopment<br />
cycle versions of the application were released onto the Android Market.<br />
281
2.1.1. Requirements Analysis<br />
With the goal of the project is to create a usable application, the target audience must<br />
be consi<strong>de</strong>red. Recently there has been a period of unrest in various countries. One<br />
notable method used by governments to control their people in times of unrest has been<br />
to severely clamp down on communication networks. This user would likely have the<br />
following characteristics and requirements:<br />
• Potentially low-powered <strong>de</strong>vice<br />
• Potentially ol<strong>de</strong>r versions of Android installed<br />
• Ability to send via different mediums (e.g. Bluetooth)<br />
• Possible requirement for support of non-English character-sets<br />
• Plausible <strong>de</strong>niability highly <strong>de</strong>sirable<br />
Police agents working un<strong>de</strong>r cover are un<strong>de</strong>r a huge amount of pressure, not<br />
just from the stress of their job, but from lack of communication with the outsi<strong>de</strong><br />
world. This user would likely have the following characteristics and requirements:<br />
• Ability to multicast, preferably publicly (broadcast) is essential<br />
• Plausible <strong>de</strong>niability is essential<br />
• Ability to receive messages from a variety of public sources<br />
It is worth noting at this point that there are a number of potential misuses of<br />
this technology. This is of course true for any security application. Phil Zimmerman,<br />
the creator of PGP points out in an article [Zimmerman 2011] after the 9/11 attacks on<br />
the US that he has ‘No regrets about <strong>de</strong>veloping PGP’, and that ‘...strong cryptography<br />
does more good for a <strong>de</strong>mocratic society than harm...’.<br />
Consi<strong>de</strong>ring the user personas, the application will need to perform:<br />
• Record audio from the microphone, and embed a short text message into it<br />
using echo steganography.<br />
• Compress this audio file into a file which is of an appropriate size for sharing.<br />
• Share, and multicast via all available methods on the <strong>de</strong>vice being used.<br />
• Open audio messages received by any method and extract hid<strong>de</strong>n information.<br />
• Operate the application in a ‘paranoid mo<strong>de</strong>’, in which all usage data is wiped<br />
from the <strong>de</strong>vice, to ensure plausible <strong>de</strong>niability.<br />
2.2. Application Design<br />
Writing applications for Android encourages applications to be <strong>de</strong>signed within certain<br />
constraints, and everything is centred on the Activity class currently in focus<br />
[Android 2011b]. This has the advantage of making it easy to <strong>de</strong>sign applications<br />
in the Mo<strong>de</strong>l-View-Controller (MVC) <strong>de</strong>sign pattern [Reenskaug 2011].<br />
UI layout is <strong>de</strong>clared in xml files, and interaction with the UI is handled in<br />
Activities. The actual work of the application is handled in other classes and calls to<br />
these are ma<strong>de</strong> from the Activity.<br />
282
When <strong>de</strong>signing a security-centric application, attention must be paid to the<br />
lifecycle of the application. On Android, the lifecycle of an application is governed by<br />
the life-cycles of the Activities, and has several idiosyncrasies, most notably there is<br />
no concept of ’quitting’. Activities have four states:<br />
• Running - The application is in the foreground and the user is able to interact.<br />
• Paused - The application is not in the foreground, but is partially obscured.<br />
• Stopped - The application is not visible (’minimised’), but still alive: it is retained<br />
in memory and maintains state.<br />
• Finished - The application is not active.<br />
2.2.1. Mo<strong>de</strong>l - Steganography<br />
Figure 1. Embedding process<br />
There are two classes which handle the bulk of the work, EchoStegFile and<br />
BitStream. The series of operations that need to be performed for embedding and<br />
extracting are shown here on Figures 1 and 2.<br />
The structure of the<br />
application is simple, as<br />
the process of en- coding<br />
and <strong>de</strong>coding is a 2-way<br />
pipeline. All views are<br />
managed by the StegDroid<br />
Figure 2. Extraction process<br />
Activity, except in the case<br />
of Settings and Multicast. All input from the user is managed by the active Activity, in<br />
the cases of Settings and Multicast, this is done automatically.<br />
2.2.2. View - User Interface<br />
The application needs to perform two basic tasks, encoding and <strong>de</strong>coding. Of these the<br />
more challenging from a UI <strong>de</strong>sign perspective is encoding, since it requires stepping<br />
through a sequence of actions. Settings for paranoid mo<strong>de</strong> and cryptographic keys are<br />
accessible via the menu key, and pressing the back key takes the user to the previous<br />
step, or exits the application from the first step.<br />
2.2.3. Controller - Device Interaction<br />
As previously stated, all interaction between the user and the rest of the application<br />
happens via the Activity classes. Functionality can be <strong>de</strong>legated from the Activity, but<br />
283
it must pass the instance of itself to every class it wishes to <strong>de</strong>legate to for use as a<br />
context.<br />
3. Implementation<br />
In this section we will go through each stage of the steganography<br />
process and explain how we implemented it. Screenshots are provi<strong>de</strong>d<br />
in this document are of the finished application. StegDroid<br />
is available on the Android Market, a link 1 and QR co<strong>de</strong> are provi<strong>de</strong>d.<br />
At time of writing, StegDroid has been downloa<strong>de</strong>d almost<br />
2000 times, and has an overall rating of 4.1/5 stars on the Android<br />
Market rating system.<br />
3.1. Class Organisation<br />
BitStream class <strong>de</strong>als with taking a String and returning a stream of bits, or vice-versa.<br />
It has the option of being passed a key-phrase and returning/<strong>de</strong>coding an encrypted<br />
stream of bits. EchoStegFile class <strong>de</strong>als with the steganographic process of inserting<br />
and retrieving bits from an audio file. It <strong>de</strong>als only with audio files in wave format.<br />
3.2. Audio Manipulation<br />
Android built in MediaRecor<strong>de</strong>r class does provi<strong>de</strong> access to the raw PCM data from<br />
the microphone, but provi<strong>de</strong>s no built in mechanism for creating usable Wave files.<br />
Android again provi<strong>de</strong>s no way to manipulate Wave files at a sample level.<br />
Transcoding is handled by Jcraft’s Jorbis library [Jcraft Jorbis Project 2011].<br />
This library provi<strong>de</strong>s methods to transco<strong>de</strong> between Ogg Vorbis audio files and uncompressed<br />
Wave files. Ogg Vorbis files are used by Android as ringtone files, so it is<br />
a relatively innocuous data type to share.<br />
3.3. Steganography<br />
The processes of embedding and extracting data are very different. Embedding requires<br />
adding echoes to the audio, which is relatively straightforward. Extracting the<br />
data again requires performing Fourier Analysis on each sample in or<strong>de</strong>r to work out<br />
which echo was used.<br />
The process of Echo Hiding convolves the raw audio signal with one of two<br />
echo kernels, with different <strong>de</strong>lays. These echo kernels correspond to 1 and 0. A<br />
double back-forwards echo kernel is used, <strong>de</strong>scribed by the equation y[n] = x[n] + α ·<br />
x[n − d] + α · x[n + d] + α · x[n − <strong>de</strong>] + α · x[n + e], where x is the original signal, y<br />
the output signal, α is the amplitu<strong>de</strong> of the echo and d and e are the two <strong>de</strong>lays used.<br />
The audio sample is split up into windows and the appropriate echo kernel is<br />
applied to each window. In or<strong>de</strong>r to prevent audible artefacts when switching between<br />
signals, a smoothing period is applied between each window, when the signal from the<br />
previous bit is fa<strong>de</strong>d out and the signal for the next bit is fa<strong>de</strong>d in. This is shown in<br />
Figure 3.<br />
1 https://market.android.com/<strong>de</strong>tails?id=uk.ac.cam.tfmw2.stegdroid<br />
284
3.3.1. Extraction<br />
Using Fourier transforms,<br />
the cepstrum<br />
is calculated for each<br />
segment and the<br />
cepstrum for the<br />
echoes for 1 is<br />
compared against the<br />
cepstrum for the<br />
echoes for 0. The<br />
larger value <strong>de</strong>termines<br />
the bit sent<br />
to the output bit<br />
stream.<br />
Figure 3. Composition of signal with echo kernels<br />
The cepstrum<br />
of a signal is calculated<br />
by taking the complex logarithm of the Fourier transform of the signal and performing<br />
an inverse Fourier transform. The resulting data will show peaks corresponding<br />
to the echoes in the original signal. As can be seen by examining the convolution<br />
of the equations being employed. First take two input signals, x 1 [n] and x 2 [n]. Their<br />
convolution, y[n] = x 1 [n] ∗ x 2 [n] is transformed into the Fourier domain:<br />
Y (e iω ) = X 1 (e iω )X 2 (e iω )<br />
The complex log of Y (e iω ) is then:<br />
logY (e iω ) = log(X 1 (e iω )X 2 (e iω )) = logX 1 (e iω ) + logX 2 (e iω )<br />
The cepstrum of a signal x[n] is <strong>de</strong>fined to be ˜x[n], and the above equation is<br />
equivalent to:<br />
ỹ[n] = ˜x 1 [n] + ˜x 2 [n]<br />
By comparing the cepstrum signal at the values for each of the 4 echoes, the<br />
echo kernel used on that segment of data should have a higher values its two echoes<br />
than the echo kernel not used. A Hamming window is applied to the signal in the time<br />
domain, before it is transformed. This is done by the function:<br />
timeDomain[i] = 0.53836 − 0.46164cos( 2πi<br />
N−1 )<br />
The Hamming window as transforming to the Fourier domain implies an infinitely<br />
repeating signal. Since the start and end of the signal are very unlikely to be<br />
continuous this will result in a lot of high-frequency noise in the result, which is un<strong>de</strong>sirable.<br />
Windowing makes sure that the ends of the signal are continuous and prevents<br />
this spectral leakage.<br />
Encryption of messages is provi<strong>de</strong>d, using the AES/ECB/PKCS7Padding cipher<br />
suite with a pre-shared key. The user can enter their passphrase in the settings<br />
285
page of the application, and a SHA-256 hash of the<br />
passphrase is used as the key.<br />
3.4. User Interface<br />
Care has been taken to create a user interface that<br />
gui<strong>de</strong>s the user through the process of encoding and<br />
<strong>de</strong>coding messagesAn example screen for the system<br />
is shown on Figure 4.<br />
Across all of the screens there are status indicators<br />
at the top of the screen, displaying whether encryption<br />
or paranoid mo<strong>de</strong> are enabled. Below that<br />
is a progress indicator, displaying the step the user<br />
is currently on. Below that are brief instructions for<br />
the page. The Back and Next buttons are always at<br />
the very bottom. While playing or recording is active,<br />
other buttons are disabled. In the first and final steps,<br />
Back and Next buttons are displayed but are inactive.<br />
Figure 4. Extraction<br />
process<br />
For the application to actually be useful to<br />
users, it must be able to interact with other applications<br />
in or<strong>de</strong>r to send and receive messages. Luckily,<br />
with one notable exception, this is all handled by Android<br />
by means of a mechanism call Intents. Sadly, sharing data via MMS is not<br />
possible because the application does not register to handle audio data. If this is fixed<br />
in the future, the application will then be able to share data in such a way.<br />
3.5. Paranoid Mo<strong>de</strong><br />
This attempts to provi<strong>de</strong> plausible <strong>de</strong>niability by removing all data created by its<br />
use from the <strong>de</strong>vice. When it is turned on, whenever the application is ‘Paused’<br />
[Android 2011a], that is to say minimised or ‘closed’ by the user, if paranoid mo<strong>de</strong><br />
is enabled, all files created by the application are removed from the filesystem.<br />
3.6. Multicast<br />
We investigated a number of different ways of implementing multicast with the application.<br />
We chose to use contact groups built into the Google contact manager as a<br />
convenient way to send a message to a group of recipients at once.<br />
4. Evaluation<br />
Evaluation data has been collected from a variety of sources, including Android Market<br />
feedback.All these sources indicate the application fulfils its stated purpose, and is<br />
reliable and easy to use. During implementation, unit tests were used to confirm that<br />
parts of the application were working correctly. These were written in a separate test<br />
class which performed checks for the functionality it was testing. No unit tests were<br />
written for the steganographic process.<br />
286
4.1. Steganography Testing<br />
A variety of tests were done to optimise the steganography process. There are three<br />
factors to optimise: bit-rate, reliability (bit-error rate) and ease of <strong>de</strong>tection. Bit-rate<br />
can be calculated from the parameters chosen, reliability can be calculated by measuring<br />
the bit-rate with a series of trials, but ease of <strong>de</strong>tection is subjective, so a rough<br />
estimate will have to suffice.<br />
Reliability was measured by creating a BitStream, passing this BitStream through<br />
the steganographic process and measuring the number of bits that were wrong in the<br />
output. A percentage error-rate was then calculated. The parameters that can be<br />
modified to optimise these factors<br />
are Segmentation Length, Windows<br />
Size, Volume Reducer and the four<br />
echo parameters. Each variable was<br />
altered in turn keeping the others<br />
constant. Three trials were done<br />
with three different recordings.<br />
Figure 5. Modification of Segmentation<br />
Lenght<br />
As shown on Figure 5, 1024<br />
as the Segmentation Lenght seems to<br />
be the optimum from this data, performing as well as 2048 and above but with a higher<br />
bit-rate, but during transcoding testing, a Segmentation Lenght of 2048 proved much<br />
more reliable, and the longer file size required at this stage is compensated for to some<br />
extent by the fact that better compression can be used.<br />
4.2. Transcoding Testing<br />
Tests were conducted to find the optimum<br />
quality to enco<strong>de</strong> the Ogg<br />
Vorbis files to get good reliability<br />
and minimise size.Three files were<br />
taken that had scored 100% on the<br />
previous test. These were enco<strong>de</strong>d<br />
and <strong>de</strong>co<strong>de</strong>d through the Vorbis <strong>de</strong>co<strong>de</strong>r<br />
and the bit-error rate was calculated<br />
in the same manner as the<br />
Figure 6. Transcoding Testing<br />
previous test. The error rate is<br />
recor<strong>de</strong>d, as is the compression rate as a percentage of the original size.<br />
From these results, ( Figure 6) it seems that a value of 0.4 is good. At this<br />
level there is still the possibility of the occasional bit error. Given the purpose of the<br />
application, small errors are not a problem, especially as users have the chance to test<br />
extraction of the message before sending it.<br />
The overhead required to add an error-correction layer into BitStream would<br />
be too great, although if the application were adapted to send other kinds of data this<br />
would be necessary.<br />
287
4.3. Threat Mo<strong>de</strong>l Analysis<br />
Given that the application is <strong>de</strong>signed for sharing potentially sensitive information, an<br />
analysis of potential attacks is critical. Detection of the application is the main threat<br />
to be consi<strong>de</strong>red, as the whole point of using steganography on top of encryption is to<br />
prevent an attacker from even <strong>de</strong>tecting potentially secretive communication.<br />
4.4. User Survey<br />
Most of the testing so far has focussed on the functionality of the application. As part<br />
of the specification was to create a usable application, evaluation of the usability was<br />
conducted with a survey of users. The survey was conducted with the participant using<br />
a Google Nexus S. They were given a brief tour of the Android operating system, and<br />
shown how to open and interact with applications. They were given a list of tasks to<br />
complete with the application. Once they had completed the tasks they were given a<br />
questionnaire to complete, in which there were asked to rate their experience of the<br />
application. Twenty participants were surveyed (University of Cambridge un<strong>de</strong>rgraduate<br />
stu<strong>de</strong>nts), with the mean results for the first 7 questions shown on Figure 7. The<br />
scores range from 0-5. The lower the better..<br />
These are positive<br />
results, which<br />
show that the interface<br />
we have created<br />
allows people<br />
with relatively little<br />
knowledge of<br />
Android phones to<br />
be able to use the<br />
Figure 7. User Survey Result<br />
application easily,<br />
putting complex steganography within reach of many more people as a result.<br />
5. Conclusions<br />
The project proposal set out the following success criteria:<br />
• To create an Android application that makes use of audio steganography. This<br />
criterion has been fully realised, with steganography classes that not only perform<br />
the function of the application, but can be exten<strong>de</strong>d to act as a container<br />
for any data.<br />
• To use audio steganography to embed a user’s text message in a voice message<br />
recor<strong>de</strong>d on the <strong>de</strong>vice. This criteria has also been realised, the application<br />
gui<strong>de</strong>s users through the process of recording a voice message, embedding a<br />
text message and sharing that message.<br />
• To make the application leave as little evi<strong>de</strong>nce of its use as possible. This<br />
criterion has been fulfilled, to a reasonable extent. In paranoid mo<strong>de</strong>, the application<br />
removes all data from the disk and memory that could show use of the<br />
application whenever it is closed.<br />
288
Having implemented these steganographic tools on the Android platform, they<br />
could potentially be used in a number of different ways. One interesting use could be<br />
to use steganography on audio during a phone call. This would allow for a data channel<br />
between two people during a phone call. This could be used to exchange covert text<br />
messages as in our application, or with other protocols to exchange any type of data.<br />
References<br />
[Android 2011a] Android (2011a). Activity lifecycle. http://<strong>de</strong>veloper.<br />
android.com/gui<strong>de</strong>/topics/fundamentals/activities.html%<br />
#Lifecycle.<br />
[Android 2011b] Android (2011b). Documentation on activities. http:<br />
//<strong>de</strong>veloper.android.com/gui<strong>de</strong>/topics/fundamentals/<br />
activities.html.<br />
[Fast Fourier Transform at Co<strong>de</strong> Log 2011] Fast Fourier Transform at Co<strong>de</strong> Log (2011).<br />
http://co<strong>de</strong>.compartmental.net/tools/minim/manual-fft.<br />
[Gruhl et al. 1996] Gruhl, D., Lu, A., and Ben<strong>de</strong>r, W. (1996). Echo hiding. In An<strong>de</strong>rson,<br />
R. J., editor, Information Hiding, volume 1174 of Lecture Notes in Computer<br />
Science, pages 293–315. Springer.<br />
[Jcraft Jorbis Project 2011] Jcraft Jorbis Project (2011).<br />
com/jorbis.<br />
http://www.jcraft.<br />
[Jenkins 2009] Jenkins, N. (2009). Steganography in audio. Technical report, University<br />
of Cambridge.<br />
[Meghanathan and Nayak 2010] Meghanathan, N. and Nayak, L. (2010). Steganalysis<br />
algorithms for <strong>de</strong>tecting the hid<strong>de</strong>n information in image, audio and vi<strong>de</strong>o cover<br />
media. International Journal of Network Security & Its Application (IJNSA),<br />
2(1):43–55.<br />
[MP3 Stego 2011] MP3 Stego (2011). http://www.petitcolas.net/fabien/<br />
steganography/mp3stego.<br />
[Paget 2011] Paget, C. (2011). Def con 18 talk. https://www.<strong>de</strong>fcon.org/<br />
html/links/dc-archives/dc-18-archive.html#Paget.<br />
[Reenskaug 2011] Reenskaug, T. (2011). Mo<strong>de</strong>ls - views - controllers. http://heim.<br />
ifi.uio.no/trygver/1979/mvc-2/1979-12-MVC.pdf.<br />
[Rehearsal Assistant Source 2011] Rehearsal Assistant Source (2011).<br />
sourceforge.net/projects/rehearsalassist.<br />
http://<br />
[Scott 2000] Scott, J. (2000). Social network analysis: a handbook. SAGE Publications.<br />
[Steg Secret 2011] Steg Secret (2011).<br />
net.<br />
http://stegsecret.sourceforge.<br />
[Zimmerman 2011] Zimmerman, P. (2011). No regrets about <strong>de</strong>veloping pgp. http:<br />
//www.mit.edu/fiprz/EN/essays/PRZResponseWashPost.html.<br />
289
Uma aplicação <strong>de</strong> privacida<strong>de</strong> no gerenciamento <strong>de</strong><br />
i<strong>de</strong>ntida<strong>de</strong>s em nuvem com uApprove<br />
Daniel Ricardo dos Santos 1∗ , Carla Merkle Westphall 1<br />
1 Laboratório <strong>de</strong> Re<strong>de</strong>s e Gerência - Departamento <strong>de</strong> Informática e Estatística<br />
Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina (UFSC) - Florianópolis – SC – Brasil<br />
{danielrs,carlamw}@inf.ufsc.br<br />
Abstract. Due to the continued growth in the use of cloud computing and the<br />
ten<strong>de</strong>ncy to migrate services to this new paradigm, it becomes necessary to investigate<br />
security issues that might compromise its use. I<strong>de</strong>ntity Managament<br />
is an area in information security that is concerned with the management of<br />
users and their data, involving authentication, authorization and attribute release.<br />
One of the biggest issues when users’ data are involved is privacy in<br />
the collection, manipulation, storage and <strong>de</strong>struction of these data. This paper<br />
presents a proposal for an i<strong>de</strong>ntity management application with users’ privacy<br />
protection implemented in a cloud computing environment.<br />
Resumo. Com o crescimento da computação em nuvem e a tendência <strong>de</strong><br />
migração <strong>de</strong> serviços para esse novo paradigma, torna-se necessário investigar<br />
questões <strong>de</strong> segurança que possam comprometer seu uso. O gerenciamento<br />
<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s é um campo da segurança da informação que se preocupa com o<br />
gerenciamento <strong>de</strong> usuários e seus dados, envolvendo autenticação, autorização<br />
e liberação <strong>de</strong> atributos. Uma das questões mais preocupantes quando se envolvem<br />
dados <strong>de</strong> usuários é a privacida<strong>de</strong> na coleta, manipulação, armazenamento<br />
e <strong>de</strong>struição <strong>de</strong>sses dados. Este trabalho apresenta uma proposta <strong>de</strong> aplicação<br />
<strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s com proteção à privacida<strong>de</strong> dos usuários implementada<br />
em um ambiente <strong>de</strong> computação em nuvem.<br />
1. Introdução<br />
Computação em nuvem é a entrega <strong>de</strong> recursos computacionais compartilhados, sejam <strong>de</strong><br />
armazenamento, processamento ou mesmo <strong>de</strong> software para usuários através da Internet.<br />
A segurança é importante para garantir o sucesso <strong>de</strong> ambientes <strong>de</strong> nuvem<br />
[Takabi et al. 2010] [Grobauer et al. 2011], com <strong>de</strong>staque para a proteção à privacida<strong>de</strong>,<br />
já que dados sensíveis passam a ficar sob a custódia <strong>de</strong> terceiros [Pearson 2009].<br />
O gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s cresce em importância conforme crescem<br />
os serviços que precisam utilizar autenticação e controle <strong>de</strong> acesso <strong>de</strong> usuários<br />
[Angin et al. 2010] [Bertino and Takahashi 2011]. Esse é o caso <strong>de</strong> muitos serviços que<br />
executam em ambientes <strong>de</strong> nuvem e precisam estabelecer a i<strong>de</strong>ntida<strong>de</strong> <strong>de</strong> seus usuários<br />
ao mesmo tempo que <strong>de</strong>vem proteger sua privacida<strong>de</strong>.<br />
Este trabalho tem como objetivo i<strong>de</strong>ntificar problemas <strong>de</strong> privacida<strong>de</strong> no gerenciamento<br />
<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s em ambientes <strong>de</strong> computação em nuvem e mostrar uma solução<br />
∗ Bolsista do CNPq - Brasil<br />
290
para esses problemas através da implantação <strong>de</strong> uma estrutura <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s<br />
que garanta a privacida<strong>de</strong> dos usuários <strong>de</strong>sses ambientes. O gerenciamento <strong>de</strong><br />
i<strong>de</strong>ntida<strong>de</strong> é realizado pelo software Shibboleth [Internet2 2011a] fazendo uso combinado<br />
do plugin <strong>de</strong> privacida<strong>de</strong> uApprove [SWITCH 2011]. Esta estrutura compõe um provedor<br />
<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> executado em uma máquina virtual no ambiente <strong>de</strong> nuvem da Amazon<br />
[Amazon 2011].<br />
O restante do artigo está organizado da seguinte forma: a seção 2 comenta os<br />
trabalhos científicos relacionados; na seção 3 são <strong>de</strong>scritos os conceitos básicos sobre<br />
gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s e computação em nuvem; a seção 4 aborda conceitos <strong>de</strong><br />
privacida<strong>de</strong> e <strong>de</strong>safios que existem no ambiente <strong>de</strong> nuvem; na seção 5 são apresentadas a<br />
proposta e as ferramentas utilizadas; na seção 6 é <strong>de</strong>scrito o <strong>de</strong>senvolvimento do trabalho<br />
e na seção 7 são feitas as consi<strong>de</strong>rações finais.<br />
2. Trabalhos Relacionados<br />
A privacida<strong>de</strong> está sendo pesquisada em diversos trabalhos da literatura<br />
[Orawiwattanakul et al. 2010], [Bertino and Takahashi 2011], [Goth 2011],<br />
[Tancock et al. 2010] e [Angin et al. 2010].<br />
O artigo [Orawiwattanakul et al. 2010] <strong>de</strong>screve uma extensão do uApprove chamado<br />
uApprove.jp, que permite ao usuário individual do ambiente Shibboleth escolher<br />
quais serão os atributos liberados pelo provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> para o provedor <strong>de</strong> serviço.<br />
O livro <strong>de</strong> [Bertino and Takahashi 2011] cita que a implantação <strong>de</strong> políticas <strong>de</strong><br />
privacida<strong>de</strong> em sistemas <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s continua sendo um <strong>de</strong>safio.<br />
Provedores <strong>de</strong> serviço e <strong>de</strong>senvolvedores das interfaces que atuam em favor dos<br />
usuários <strong>de</strong>vem facilitar o entendimento. O formato <strong>de</strong>stes cenários <strong>de</strong>ve ser sucinto,<br />
conciso, breve e simples para que o usuário saiba o que está acontecendo [Goth 2011].<br />
Na computação em nuvem a privacida<strong>de</strong> <strong>de</strong>ve seguir as leis e os contratos feitos<br />
entre as partes [Tancock et al. 2010] e também proteger dados <strong>de</strong> usuários em provedores<br />
<strong>de</strong> serviço [Angin et al. 2010], <strong>de</strong> acordo com as políticas <strong>de</strong> privacida<strong>de</strong> <strong>de</strong>finidas.<br />
3. Conceitos Básicos<br />
3.1. I<strong>de</strong>ntida<strong>de</strong> e Gerenciamento <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s<br />
I<strong>de</strong>ntida<strong>de</strong>s digitais são coleções <strong>de</strong> dados que representam atributos ou características<br />
<strong>de</strong> uma entida<strong>de</strong> [Windley 2005]. Um serviço <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s po<strong>de</strong><br />
ser <strong>de</strong>finido como “o processo <strong>de</strong> criação, gerenciamento e utilização <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong><br />
usuários e a infraestrutura que suporta esse processo”[Lee et al. 2009].<br />
Os seguintes papéis existem num sistema <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s<br />
[Bertino and Takahashi 2011]:<br />
Usuário É a entida<strong>de</strong> que possui uma i<strong>de</strong>ntida<strong>de</strong> e utiliza os serviços tanto do provedor<br />
<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s quanto do provedor <strong>de</strong> serviços.<br />
Provedor <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s (IdP - I<strong>de</strong>ntity Provi<strong>de</strong>r) Fornece os serviços <strong>de</strong> gerenciamento<br />
<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s necessários para que o usuário use o provedor <strong>de</strong> serviços.<br />
Provedor <strong>de</strong> Serviços (SP - Service Provi<strong>de</strong>r) Fornece os serviços que o usuário efetivamente<br />
<strong>de</strong>seja utilizar. O provedor <strong>de</strong> serviços <strong>de</strong>lega a autenticação e<br />
autorização dos usuários que acessam seus serviços a um IdP.<br />
291
3.2. Computação em Nuvem<br />
O trabalho <strong>de</strong> [Marston et al. 2011] <strong>de</strong>fine computação em nuvem da seguinte forma: “É<br />
um mo<strong>de</strong>lo <strong>de</strong> serviço <strong>de</strong> tecnologia da informação on<strong>de</strong> os serviços computacionais (ambos<br />
hardware e software) são entregues sob <strong>de</strong>manda para os usuários através <strong>de</strong> uma re<strong>de</strong><br />
na forma <strong>de</strong> auto-atendimento, in<strong>de</strong>pen<strong>de</strong>nte <strong>de</strong> dispositivo e <strong>de</strong> localização. Os recursos<br />
necessários para fornecer os diferentes níveis <strong>de</strong> qualida<strong>de</strong> <strong>de</strong> serviço são compartilhados,<br />
dinamicamente escaláveis, alocados rapidamente, virtualizados e liberados com interação<br />
mínima com o provedor <strong>de</strong> serviço”.<br />
Três tipos diferentes <strong>de</strong> serviços são mencionados quando se consi<strong>de</strong>ra<br />
computação em nuvem [Cloud Security Alliance 2010]: Software as a Service (SaaS),<br />
Platform as a Service (PaaS) e Infrastructure as a Service (IaaS). No mo<strong>de</strong>lo SaaS a<br />
empresa assina um serviço <strong>de</strong> uso do software que funciona como um aluguel, tanto do<br />
software como <strong>de</strong> toda a estrutura necessária para executá-lo. No mo<strong>de</strong>lo PaaS o ven<strong>de</strong>dor<br />
do serviço oferece aos clientes uma plataforma <strong>de</strong> <strong>de</strong>senvolvimento <strong>de</strong> aplicativos, que o<br />
usuário utiliza tanto no <strong>de</strong>senvolvimento quanto na posterior disponibilização do serviço.<br />
No caso do IaaS o que o cliente procura é a própria infra-estrutra <strong>de</strong> computação: po<strong>de</strong>r<br />
<strong>de</strong> processamento, capacida<strong>de</strong> <strong>de</strong> armazenamento e taxa <strong>de</strong> transmissão. Nesse tipo <strong>de</strong><br />
serviço geralmente o cliente tem controle sobre a máquina através <strong>de</strong> acesso remoto.<br />
4. Privacida<strong>de</strong><br />
A privacida<strong>de</strong> relaciona-se com a capacida<strong>de</strong> <strong>de</strong> um indivíduo proteger informações sobre<br />
si [Mather et al. 2009]. Uma política <strong>de</strong> privacida<strong>de</strong> é um documento que expressa a<br />
forma como uma entida<strong>de</strong> coleta, utiliza, administra e libera informações <strong>de</strong> seus usuários.<br />
O Fair Information Practice Principles (FIPS) é um conjunto <strong>de</strong> regras para<br />
manipulação <strong>de</strong> informações com proteção à privacida<strong>de</strong> criado pela Comissão <strong>de</strong><br />
Comércio Americana que regula o uso <strong>de</strong> informações privadas nos Estados Unidos e<br />
serve <strong>de</strong> base para regras <strong>de</strong> outros países [Fe<strong>de</strong>ral Tra<strong>de</strong> Comission 2011]. Os FIPs <strong>de</strong>finem<br />
cinco princípios básicos: a consciência significa que o usuário <strong>de</strong>ve ser avisado e<br />
enten<strong>de</strong>r como suas informações serão liberadas; a escolha significa que o usuário <strong>de</strong>ve<br />
escolher como suas informações serão usadas; a participação permite ao usuário acessar<br />
e alterar suas informações; a integrida<strong>de</strong> <strong>de</strong>ve garantir que os dados dos usuários estejam<br />
corretos e o cumprimento garante que os princípios são respeitados.<br />
No Brasil, a privacida<strong>de</strong> é uma garantia constitucional, mas não existe uma lei<br />
específica, como ocorre em outros países [CulturaDigital 2011].<br />
A privacida<strong>de</strong> é um aspecto crítico da segurança em ambientes <strong>de</strong> nuvem<br />
[Mather et al. 2009], [Pearson 2009], [Bertino and Takahashi 2011], [Goth 2011],<br />
[Tancock et al. 2010] e [Angin et al. 2010].<br />
De acordo com [Mather et al. 2009], [Takabi et al. 2010], [Angin et al. 2010],<br />
[Marcon Jr. et al. 2010] existem alguns aspectos que po<strong>de</strong>m ser levantados quando se<br />
pesquisa privacida<strong>de</strong> em ambientes <strong>de</strong> nuvem. O usuário <strong>de</strong>ve ter o direito <strong>de</strong> saber<br />
quais informações suas estão mantidas na nuvem e po<strong>de</strong>r solicitar a remoção <strong>de</strong>ssas<br />
informações; <strong>de</strong>ve também ter garantias <strong>de</strong> que seus dados são armazenados e transferidos<br />
<strong>de</strong> forma segura. Já os provedores <strong>de</strong> serviços <strong>de</strong> nuvem: precisam seguir leis,<br />
normas e regulamentos quando lidam com informações privadas; precisam saber on<strong>de</strong> e<br />
292
como os dados privados são armazenados e <strong>de</strong> que forma po<strong>de</strong>m ser transmitidos; <strong>de</strong>vem<br />
manter políticas que tratem da retenção <strong>de</strong> dados na nuvem; <strong>de</strong>vem garantir que não há<br />
cópias dos dados armazenados em outros locais após sua <strong>de</strong>struição; <strong>de</strong>vem garantir que<br />
estão cumprindo os requisitos <strong>de</strong> privacida<strong>de</strong>; <strong>de</strong>vem manter logs <strong>de</strong> acesso a dados; e,<br />
caso haja um caso <strong>de</strong> violação <strong>de</strong> privacida<strong>de</strong> ou vazamento <strong>de</strong> informações <strong>de</strong>ve-se saber<br />
quem é o culpado e como controlar o caso.<br />
5. Proposta e Ferramentas Utilizadas<br />
A aplicação <strong>de</strong>senvolvida neste trabalho tem como objetivo implantar uma estrutura <strong>de</strong><br />
gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> que garanta a privacida<strong>de</strong> dos usuários autenticados em um<br />
ambiente <strong>de</strong> computação em nuvem para acessar provedores <strong>de</strong> serviço (Figura 1).<br />
Figura 1. Diagrama geral da proposta<br />
Neste cenário, iniciamente o usuário acessa o provedor <strong>de</strong> serviços. O provedor<br />
<strong>de</strong> serviços então redireciona o usuário para o seu respectivo provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s,<br />
que é informado pelo usuário e <strong>de</strong>ve ter a confiança do provedor <strong>de</strong> serviços. O provedor<br />
<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s está executando em um ambiente <strong>de</strong> nuvem, o que é transparente para o<br />
usuário. O provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s pe<strong>de</strong> a autenticação do usuário e acessa seus atributos<br />
em sua base <strong>de</strong> dados. Quando o usuário está autenticado e antes <strong>de</strong> ser novamente redirecionado<br />
para o provedor <strong>de</strong> serviços, seus dados passam por um plugin <strong>de</strong> privacida<strong>de</strong>,<br />
momento no qual o usuário fica ciente e <strong>de</strong>ve consentir com a liberação <strong>de</strong> seus atributos.<br />
5.1. Amazon EC2<br />
O EC2 foi o provedor <strong>de</strong> serviços <strong>de</strong> nuvem utilizado no trabalho. O EC2 provê uma<br />
Infraestrutura como um Serviço, em que é possível instanciar máquinas virtuais a partir<br />
<strong>de</strong> imagens <strong>de</strong> sistemas pré-<strong>de</strong>finidas ou próprias. É possível configurar características da<br />
máquina como capacida<strong>de</strong> <strong>de</strong> processamento, memória e armazenamento.<br />
No EC2 o usuário po<strong>de</strong> atribuir en<strong>de</strong>reços IP estáticos às máquinas instanciadas e<br />
configurar a liberação <strong>de</strong> portas <strong>de</strong> acesso. A persistência dos dados é feita utilizando-se<br />
volumes Elastic Block Storage (EBS), que agem como discos rígidos das máquinas.<br />
293
5.2. Shibboleth<br />
Entre os diversos sistemas <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s disponíveis, optou-se pelo<br />
Shibboleth <strong>de</strong>vido à sua popularida<strong>de</strong> em ambientes acadêmicos e boa documentação,<br />
além <strong>de</strong> ser um software <strong>de</strong> código aberto.<br />
O Shibboleth é formado por duas partes principais: o IdP e o SP, que se encontram<br />
separados, mas se comunicam para prover o acesso seguro aos serviços. O fluxo <strong>de</strong><br />
funcionamento do Shibboleth é representado na Figura 2.<br />
Figura 2. Funcionamento do Shibboleth. [<strong>de</strong> Cordova 2006]<br />
No Passo 1 o usuário navega para o provedor <strong>de</strong> serviços para acessar um recurso<br />
protegido. Nos Passos 2 e 3 o Shibboleth redireciona o usuário para a página Where<br />
are you from? (WAYF), on<strong>de</strong> ele <strong>de</strong>ve informar qual o seu provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s. No<br />
Passo 4 o usuário informa seu IdP e no Passo 5 ele é redirecionado para o site, que é o<br />
componente Handle Service (HS) do seu IdP. Nos Passos 6 e 7 o usuário informa seus<br />
dados e no Passo 8 o componente HS verifica a valida<strong>de</strong> dos seus dados. O HS cria um<br />
handle para i<strong>de</strong>ntificar o usuário e registra-o no Attribute Authority (AA). No Passo 9<br />
esse handle confirma a autenticação do usuário. O handle é verificado pelo Assertion<br />
Consumer Service (ACS) e transferido para o Attribute Requester (AR) e no Passo 10 é<br />
criada uma sessão. No Passo 11 o AR utiliza o handle para requisitar os atributos do<br />
usuário ao IdP. No passo 12 o IdP verifica se po<strong>de</strong> liberar os atributos e no Passo 13 o AA<br />
respon<strong>de</strong> com os valores dos atributos. No Passo 14 o SP recebe os atributos e os passa<br />
para o Resource Manager (RM), que no Passo 15 carrega o recurso [<strong>de</strong> Cordova 2006].<br />
5.3. uApprove<br />
Nos FIPS (<strong>de</strong>scritos na seção 4) os princípios mais importantes da privacida<strong>de</strong> são a<br />
consciência dos usuários <strong>de</strong> que seus dados são coletados e armazenados e a possibilida<strong>de</strong><br />
<strong>de</strong> escolha do usuário quanto a liberação <strong>de</strong>sses dados. Uma ferramenta que implementa<br />
esses dois princípios é o uApprove [SWITCH 2011], um plugin <strong>de</strong> privacida<strong>de</strong> para o<br />
Shibboleth que encontra-se na versão 2.2.1.<br />
O uApprove é dividido em três componentes principais: o IdP plugin é um filtro<br />
do Shibboleth, que testa se a ferramenta <strong>de</strong>ve obter o consentimento do usuário para a<br />
294
liberação <strong>de</strong> seus atributos; o Viewer apresenta ao usuário uma página web com os termos<br />
<strong>de</strong> uso que o usuário <strong>de</strong>ve aceitar quando utiliza o provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s; e o Reset<br />
approvals permite que o usuário reinicie as liberações que já foram concedidas.<br />
A Figura 3 mostra o fluxo <strong>de</strong> execução do IdP plugin para <strong>de</strong>cidir se o Viewer <strong>de</strong>ve<br />
ser invocado.<br />
Figura 3. Fluxograma <strong>de</strong> execução do uApprove. Adaptado <strong>de</strong>: [SWITCH 2011]<br />
Primeiramente o plugin verifica se o LoginContext, que é um objeto Java criado<br />
quando uma autenticação é requisitada, está correto. Caso o LoginContext esteja correto é<br />
verificado se o Shibboleth Authentication Request (AuthN), uma mensagem enviada pelo<br />
SP para o IdP para iniciar uma sessão, foi fornecido. Se alguma <strong>de</strong>ssas verificações for<br />
negativa a execução é cancelada e o processo <strong>de</strong> autenticação terminado.<br />
Caso as duas primeiras verificações sejam positivas o plugin verifica se está executando<br />
em modo <strong>de</strong> observação, on<strong>de</strong> só registra os atributos que serão liberados, sem<br />
interagir com o usuário. Caso esteja nesse modo o fluxo segue para o Shibboleth IdP. Em<br />
caso negativo o plugin continua seu fluxo, verificando se o SP se encontra na lista negra,<br />
uma lista <strong>de</strong> SPs nos quais o uApprove <strong>de</strong>ve assumir automaticamente o consentimento<br />
do usuário.<br />
Se o SP se encontrar na lista o fluxo segue para o Shibboleth IdP, senão o plugin<br />
verifica se o Principal, o i<strong>de</strong>ntificador único <strong>de</strong> um usuário, é conhecido (já usou o plugin).<br />
Se o Principal for <strong>de</strong>sconhecido (nunca utilizou o plugin), o Viewer será invocado.<br />
Se o Principal for conhecido e tiver reiniciado seus consentimentos, o Viewer será<br />
invocado, senão o plugin continua seu fluxo. Na sequência, caso os termos <strong>de</strong> uso tenham<br />
sido alterados <strong>de</strong>s<strong>de</strong> o último acesso o fluxo segue para o Viewer, senão o plugin continua.<br />
Depois é verificado se o usuário conce<strong>de</strong>u aprovação global para a liberação <strong>de</strong><br />
seus atributos. Em caso afirmativo o fluxo segue para o Shibboleth IdP, em caso negativo<br />
segue para a próxima verificação. Então verifica-se se o usuário está acessando o SP pela<br />
primeira vez, em caso afirmativo o Viewer é invocado, em caso negativo é feita a última<br />
verificação, que se refere aos atributos sendo requisitados pelo SP. Se eles tiverem sido<br />
alterados o Viewer é invocado, senão o fluxo segue para o IdP.<br />
295
Em todos os casos em que o fluxo for para o Shibboleth IdP a execução do plugin<br />
é ignorada pelo usuário. Em todos os casos em que o Viewer for invocado, o usuário <strong>de</strong>ve<br />
interagir e fornecer seu consentimento.<br />
6. Desenvolvimento Prático<br />
Usando o Amazon EC2 foi instanciada uma máquina virtual executando Windows Server<br />
2008 e atribuído à máquina o IP estático 50.19.108.64, com DNS público ec2-50-19-108-<br />
64.compute-1.amazonaws.com. Para persistência dos dados utilizou-se um volume EBS<br />
<strong>de</strong> 30GB (Figura 4).<br />
Figura 4. Máquinas virtuais instanciadas no EC2<br />
As portas liberadas no firewall foram: 3306 para acesso ao MySQL, 3389 para<br />
acesso remoto, 8009 para uso do Shibboleth e 8080 para uso do Tomcat.<br />
Na máquina instanciada e em execução foi instalado o servidor web Apache 2.2. O<br />
servidor aceita conexões não-SSL (na porta 80) e conexões SSL (nas portas 443 e 8443).<br />
Depois foi instalado o servidor <strong>de</strong> aplicações Apache Tomcat 6.0.22, no qual <strong>de</strong>vem<br />
ser executadas as aplicações <strong>de</strong> autenticação, gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s e o plugin<br />
<strong>de</strong> privacida<strong>de</strong>. Foi então configurado um proxy no Apache para repassar os pedidos<br />
<strong>de</strong>ssas aplicações para o Tomcat.<br />
Foi instalado o mecanismo <strong>de</strong> autenticação JASIG CAS Server [JASIG 2011],<br />
versão 3.3.2, que autentica usuários através <strong>de</strong> login e senha e então repassa os usuários<br />
autenticados para o Shibboleth. O CAS foi configurado para procurar os usuários em um<br />
diretório LDAP, instalado em outra máquina virtual, executando Ubuntu Server 10.10.<br />
Na instalação do provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s Shibboleth, a fe<strong>de</strong>ração escolhida para<br />
ser utilizada foi a TestShib [Internet2 2011b]. Para utilizá-la foi necessário cadastrar o IdP,<br />
informando o en<strong>de</strong>reço DNS e o certificado gerado, configurando também o Shibboleth<br />
para utilizar os metadados da fe<strong>de</strong>ração.<br />
Na configuração da liberação <strong>de</strong> atributos do usuário foi usado o esquema brEdu-<br />
Person, uma extensão do eduPerson para fe<strong>de</strong>rações brasileiras.<br />
Seguiu-se para a instalação do uApprove. O plugin precisa armazenar informações<br />
sobre o consentimento dos usuários e a liberação <strong>de</strong> seus atributos e para isso foi utilizado<br />
o MySQL, versão 5.5, instalado na mesma máquina do Shibboleth.<br />
296
Foi então gerado um arquivo que contém um exemplo <strong>de</strong> Termos <strong>de</strong> Uso e, com as<br />
configurações prontas, criado um filtro para ativar o uso do IdP plugin com o Shibboleth.<br />
Com a instalação concluída, uma visão <strong>de</strong>talhada da aplicação po<strong>de</strong> ser resumida<br />
na Figura 5, que representa a visão <strong>de</strong>talhada da parte do IdP da Figura 1.<br />
Figura 5. Visão <strong>de</strong>talhada da aplicação<br />
Como ponto <strong>de</strong> acesso temos o servidor web Apache, que recebe as requisições<br />
HTTPS e as encaminha para o Tomcat, para que sejam recebidas pela aplicação correta.<br />
Dentro do Tomcat existem três aplicações sendo executadas: Shibboleth IdP, CAS Server<br />
e uApprove. O diretório LDAP se encontra na máquina com o Ubuntu Server 10.10. O<br />
restante dos componentes se encontram na máquina virtual com o Windows Server 2008.<br />
Para realizar seu primeiro acesso ao SP o usuário acessa o provedor <strong>de</strong> serviços<br />
em https://sp.testshib.org/ e informa o provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s https://<br />
ec2-50-19-108-64.compute-1.amazonaws.com/idp/shibboleth para<br />
ser então redirecionado para a página <strong>de</strong> autenticação, fornecida pelo CAS, on<strong>de</strong> faz sua<br />
autenticação por login e senha, que são buscados no LDAP.<br />
Depois da autenticação o Shibboleth busca no diretório os atributos que <strong>de</strong>vem<br />
ser liberados. Nesse momento o filtro do uApprove entra em ação e exibe uma página<br />
contendo os termos <strong>de</strong> uso do IdP. Caso o usuário aceite os termos <strong>de</strong> uso o plugin o<br />
redireciona para uma página que mostra os atributos que serão liberados (Figura 6).<br />
O usuário autenticado é novamente requisitado a aceitar a liberação <strong>de</strong> seus atributos<br />
e, se concordar, é levado à página <strong>de</strong> acesso protegido do provedor <strong>de</strong> serviços.<br />
297
Figura 6. Atributos que serão liberados<br />
7. Conclusões e trabalhos futuros<br />
Nesse trabalho foi possível tratar problemas específicos <strong>de</strong> privacida<strong>de</strong> no gerenciamento<br />
<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s em ambientes <strong>de</strong> nuvem: a falta <strong>de</strong> consciência dos usuários quanto à<br />
liberação <strong>de</strong> seus atributos para provedores <strong>de</strong> serviço e a falta <strong>de</strong> preocupação dos provedores<br />
<strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s quanto à apresentação <strong>de</strong> seus termos <strong>de</strong> uso. Isso é importante,<br />
<strong>de</strong> acordo com [Goth 2011] [Bertino and Takahashi 2011] [Angin et al. 2010] e contribui<br />
para tratar os aspectos citados na seção 4.<br />
A proposta <strong>de</strong> solução, com o uso dos softwares Shibboleth e uApprove, mostrou<br />
que é possível resolver os dois problemas <strong>de</strong> maneira eficiente e sem comprometer a<br />
usabilida<strong>de</strong> da aplicação. A proposta se mostrou viável e pô<strong>de</strong> ser implantada em uma nuvem<br />
pública, com a possibilida<strong>de</strong> <strong>de</strong> utilização em fe<strong>de</strong>rações consolidadas. Por fim, este<br />
artigo também contribui para um melhor entendimento do funcionamento do uApprove.<br />
A maior dificulda<strong>de</strong> para a realização do trabalho foi a falta <strong>de</strong> referências <strong>de</strong><br />
implementações em ambientes <strong>de</strong> nuvem. Vários artigos apresentam mo<strong>de</strong>los e propostas,<br />
mas praticamente não há exemplos <strong>de</strong> implementações reais. Automatização da<br />
verificação <strong>de</strong> compatibilida<strong>de</strong> entre políticas <strong>de</strong> privacida<strong>de</strong> <strong>de</strong> provedores e <strong>de</strong> usuários<br />
po<strong>de</strong> ser consi<strong>de</strong>rado um trabalho futuro.<br />
Referências<br />
Amazon (2011). Amazon elastic compute cloud. http://aws.amazon.com/ec2/.<br />
Angin, P., Bhargava, B., Ranchal, R., Singh, N., Lin<strong>de</strong>rman, M., Ben Othmane, L., and<br />
Lilien, L. (2010). An entity-centric approach for privacy and i<strong>de</strong>ntity management in<br />
cloud computing. In IEEE SRDS, 2010, pages 177 –183.<br />
Bertino, E. and Takahashi, K. (2011). I<strong>de</strong>ntity Management: Concepts, Technologies, and<br />
Systems. Artech House.<br />
Cloud Security Alliance (2010). Domain 12: Guidance for i<strong>de</strong>ntity and access management<br />
v2.1.<br />
298
CulturaDigital (2011). Os rumos da lei <strong>de</strong> proteção <strong>de</strong> dados.<br />
http://culturadigital.br/dadospessoais/<br />
os-rumos-da-lei-<strong>de</strong>-protecao-<strong>de</strong>-dados/.<br />
<strong>de</strong> Cordova, A. S. (2006). Aplicação prática <strong>de</strong> um sistema <strong>de</strong> gerenciamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s.<br />
TCC, Ciência da Computação, UNIVALI.<br />
Fe<strong>de</strong>ral Tra<strong>de</strong> Comission (2011). Fair information practice principles. http://www.<br />
ftc.gov/reports/privacy3/fairinfo.shtm.<br />
Goth, G. (2011). Privacy gets a new round of prominence. Internet Computing, IEEE,<br />
15(1):13 –15.<br />
Grobauer, B., Walloschek, T., and Stocker, E. (2011). Un<strong>de</strong>rstanding cloud computing<br />
vulnerabilities. IEEE Security and Privacy, 9:50–57.<br />
Internet2 (2011a). About shibboleth. http://shibboleth.internet2.edu/<br />
about.html.<br />
Internet2 (2011b). Testshib two. https://www.testshib.org/<br />
testshib-two/in<strong>de</strong>x.jsp.<br />
JASIG (2011). Jasig cas. http://www.jasig.org/cas.<br />
Lee, H., Jeun, I., and Jung, H. (2009). Criteria for evaluating the privacy protection<br />
level of i<strong>de</strong>ntity management services. Emerging Security Information, Systems, and<br />
Technologies, The International Conference on, 0:155–160.<br />
Marcon Jr., A., Laureano, M., Santin, A., and Maziero, C. (2010). Aspectos <strong>de</strong> segurança<br />
e privacida<strong>de</strong> em ambientes <strong>de</strong> computação em nuvem. In Livro-texto <strong>de</strong> minicursos<br />
do SBSeg 2010, volume 1, pages 53 –102, Porto Alegre, RS. SBC.<br />
Marston, S., Li, Z., Bandyopadhyay, S., Zhang, J., and Ghalsasi, A. (2011). Cloud computing<br />
– the business perspective. Decision Support Systems, 51(1):176 – 189.<br />
Mather, T., Kumaraswamy, S., and Latif, S. (2009). Cloud Security and Privacy: An<br />
Enterprise Perspective on Risks and Compliance. O’Reilly Media, Inc.<br />
Orawiwattanakul, T., Yamaji, K., Nakamura, M., Kataoka, T., and Sonehara, N. (2010).<br />
User-controlled privacy protection with attribute-filter mechanism for a fe<strong>de</strong>rated sso<br />
environment using shibboleth. In 3PGCIC, 2010, pages 243 –249.<br />
Pearson, S. (2009). Taking account of privacy when <strong>de</strong>signing cloud computing services.<br />
In Proc. of the 2009 ICSE Workshop, CLOUD ’09, pages 44–52, Washington, DC,<br />
USA. IEEE Computer Society.<br />
SWITCH (2011). uapprove. http://www.switch.ch/aai/support/tools/<br />
uApprove.html.<br />
Takabi, H., Joshi, J. B., and Ahn, G.-J. (2010). Security and privacy challenges in cloud<br />
computing environments. IEEE Security and Privacy, 8:24–31.<br />
Tancock, D., Pearson, S., and Charlesworth, A. (2010). A privacy impact assessment tool<br />
for cloud computing. In IEEE CloudCom, 2010, pages 667 –676.<br />
Windley, P. (2005). Digital I<strong>de</strong>ntity. O’Reilly Media, Inc.<br />
299
Análise Visual <strong>de</strong> Comportamento <strong>de</strong> Código Malicioso<br />
Alexandre Or Cansian Baruque 1,2,+ , André Ricardo Abed Grégio 1,2 , Paulo Lício <strong>de</strong> Geus 2<br />
1 Centro <strong>de</strong> Tecnologia da Informação Renato Archer (CTI)<br />
2 Universida<strong>de</strong> Estadual <strong>de</strong> Campinas (Unicamp)<br />
+ Bolsista do CNPq — Brasil<br />
orcansian@gmail.com, argregio@cti.gov.br, paulo@las.ic.unicamp.br<br />
Abstract. Malware attacks are a major threat to computer systems. To <strong>de</strong>velop<br />
counter-measures, it is necessary to un<strong>de</strong>rstand the behavior presented by<br />
malware, i.e., the actions performed in the targets. Dynamic analysis systems<br />
are used to trace malware behaviors, but they generate a massive amount of<br />
data that can confuse the analyst. Visualization techniques can be applied to<br />
these data to i<strong>de</strong>ntify useful patterns and help in the analysis process. In this<br />
paper, we propose a visual and interactive tool to analyze malware behavior.<br />
Resumo. Ataques por programas maliciosos constituem uma das principais<br />
ameaças aos sistemas computacionais atuais. Para criar contra-medidas, é<br />
necessário enten<strong>de</strong>r o comportamento <strong>de</strong>stes programas, isto é, as ações realizadas<br />
nos alvos. Sistemas <strong>de</strong> análise dinâmica existem para traçar tais comportamentos,<br />
mas geram muitos dados textuais que po<strong>de</strong>m confundir o analista.<br />
Técnicas <strong>de</strong> visualização po<strong>de</strong>m ser utilizadas na tentativa <strong>de</strong> se i<strong>de</strong>ntificar padrões<br />
que sirvam no auxílio à análise, possibilitando a <strong>de</strong>scoberta <strong>de</strong> informações<br />
úteis. Neste artigo, apresenta-se uma ferramenta interativa e visual para<br />
análise <strong>de</strong> comportamento <strong>de</strong> código malicioso.<br />
1. Introdução<br />
Programas maliciosos constituem uma gran<strong>de</strong> ameaça aos usuários <strong>de</strong> sistemas computacionais.<br />
Também conhecidos como malware, esses programas englobam os vírus, worms,<br />
cavalos-<strong>de</strong>-tróia, e po<strong>de</strong>m infectar uma máquina através <strong>de</strong> arquivos anexos em mensagens<br />
<strong>de</strong> e-mail, do acesso à links <strong>de</strong> páginas Web servindo conteúdo malicioso e do<br />
compartilhamento <strong>de</strong> mídias contaminadas. A monitoração da execução <strong>de</strong>ste tipo <strong>de</strong><br />
programa provê uma gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> informações, que <strong>de</strong>vem ser analisadas <strong>de</strong><br />
forma a produzir resultados úteis que possam auxiliar na tomada <strong>de</strong> contra-medidas. Entretanto,<br />
muitas variantes <strong>de</strong> malware surgem a cada dia, causando uma sobrecarga para<br />
os mecanismos <strong>de</strong> <strong>de</strong>fesa e para os analistas <strong>de</strong> segurança.<br />
As informações obtidas a partir das ativida<strong>de</strong>s efetuadas por um programa malicioso<br />
po<strong>de</strong>m ser confusas para um analista e, <strong>de</strong>vido à quantida<strong>de</strong>, po<strong>de</strong> ser difícil encontrar<br />
rapidamente o que é realmente relevante para o tratamento <strong>de</strong> um inci<strong>de</strong>nte <strong>de</strong>ste<br />
tipo. Com a finalida<strong>de</strong> <strong>de</strong> facilitar a análise das ações nocivas executadas por malware,<br />
é possível se aplicar técnicas <strong>de</strong> visualização, as quais po<strong>de</strong>m permitir a observação <strong>de</strong><br />
padrões e i<strong>de</strong>ntificação <strong>de</strong> comportamentos <strong>de</strong> ataque <strong>de</strong> maneira mais intuitiva. Neste<br />
trabalho, é apresentada uma ferramenta interativa tridimensional para ajudar na análise<br />
300
das ativida<strong>de</strong>s que um malware efetua durante a infecção <strong>de</strong> uma máquina-alvo, a qual foi<br />
<strong>de</strong>senvolvida e testada com exemplares reais coletados.<br />
2. Conceitos e Trabalhos Relacionados<br />
Visualização <strong>de</strong> dados po<strong>de</strong> ser utilizada para vários objetivos visando a análise [6], tais<br />
como:<br />
• Exploração, na qual não há uma hipótese <strong>de</strong>finida sobre os fenômenos que po<strong>de</strong>m<br />
ocorrer nos dados analisados, envolvendo a busca visual por tendências, exceções<br />
ou estruturas visando a <strong>de</strong>finição das hipóteses.<br />
• Confirmação, que usa dados <strong>de</strong> natureza conhecida e hipóteses sobre os fenômenos<br />
relacionados <strong>de</strong> forma a confirmá-las ou rejeitá-las, por meio <strong>de</strong> visualização.<br />
• Apresentação, on<strong>de</strong> é feita a <strong>de</strong>monstração visual dos dados, fenômenos relacionados<br />
a estes ou hipóteses, <strong>de</strong> modo a permitir sua interpretação.<br />
Há muitas técnicas <strong>de</strong> visualização <strong>de</strong> dados, as quais variam a complexida<strong>de</strong> e<br />
generalida<strong>de</strong> <strong>de</strong>s<strong>de</strong> um simples gráfico <strong>de</strong> área até o fatiamento <strong>de</strong> volumes tridimensionais.<br />
Estas técnicas po<strong>de</strong>m ser agrupadas por categorias, como por exemplo, geométricas,<br />
baseadas em ícones, pixels ou grafos, hierárquicas, tridimensionais, ou que se utilizam <strong>de</strong><br />
mapas. Muitas <strong>de</strong>las foram utilizadas em trabalhos voltadas à visualização <strong>de</strong> eventos <strong>de</strong><br />
segurança.<br />
Quist e Liebrock [8] aplicaram técnicas <strong>de</strong> visualização para compreen<strong>de</strong>r o comportamento<br />
<strong>de</strong> executáveis compilados. O framework criado por eles, VERA (Visualization<br />
of Executables for Reversing and Analysis), auxilia os analistas a terem um melhor<br />
entendimento do fluxo <strong>de</strong> execução <strong>de</strong> um executável, tornando o processo <strong>de</strong> engenharia<br />
reversa mais rápido.<br />
Conti et al. [2] <strong>de</strong>selvolveram um sistema que facilita uma análise livre <strong>de</strong> contexto<br />
<strong>de</strong> arquivos <strong>de</strong> tipos diversos, fornecendo um rápido panorama do contexto e das estruturas<br />
internas dos arquivos. Isto é especialmente útil em um ambiente <strong>de</strong> análise forense,<br />
quando se analisa arquivos em formatos não documentados e busca-se por mensagens <strong>de</strong><br />
texto ocultas em arquivos binários.<br />
Trinius et al. [10] apresentam <strong>de</strong> métodos visualização para aprimorar a compreensão<br />
do comportamento <strong>de</strong> malware. Em seu trabalho, é mostrado o uso <strong>de</strong> treemaps e<br />
thread graphs para mostrar as ações <strong>de</strong> um executável e classificar seu comportamento<br />
como malicioso.<br />
O framework DEViSE [9] (Data Exchange for Visualizing Security Events) permite<br />
ao analista um meio <strong>de</strong> passar dados <strong>de</strong> uma ferramenta para outra, obtendo assim<br />
uma compreensão maior dos dados ao agregar mais informações extraídas <strong>de</strong> várias origens.<br />
Existem diversas ferramentas que fazem uso da visualização para fins <strong>de</strong> análise<br />
voltada à segurança, cada uma <strong>de</strong>las utilizando uma abordagem própria das técnicas, com<br />
vantagens e <strong>de</strong>svantagens <strong>de</strong> acordo com a situação em que é utilizada. Como visto,<br />
há também muita pesquisa na tentativa <strong>de</strong> superar as dificulda<strong>de</strong>s causadas pela gran<strong>de</strong><br />
quantida<strong>de</strong> <strong>de</strong> dados presentes em dados <strong>de</strong> eventos <strong>de</strong> segurança.<br />
A principal limitação dos trabalhos nesta área é que parte da pesquisa não é aberta<br />
ao público, as ferramentas muitas vezes não são interativas ou intuitivas o suficiente, e<br />
301
a interpretação po<strong>de</strong> ser muito complexa, tirando a vantagem trazida pela visualização.<br />
Um dos objetivos do trabalho proposto neste artigo é superar algumas <strong>de</strong>stas limitações,<br />
provendo interativida<strong>de</strong> e utilizando técnicas <strong>de</strong> visualização tridimensionais e baseadas<br />
em ícones a fim <strong>de</strong> produzir um resultado mais compreensível.<br />
Por exemplo, em um dos trabalhos já citados [10], é proposta a visualização <strong>de</strong><br />
comportamentos <strong>de</strong> malware através <strong>de</strong> treemaps, mostrando a frequência e distribuição<br />
das ações maliciosas capturadas. Entretanto, ainda existe o excesso <strong>de</strong> dados e a falta <strong>de</strong><br />
interativida<strong>de</strong>. Para resolver o problema do excesso <strong>de</strong> dados, a proposta <strong>de</strong>ste artigo é<br />
visualizar apenas as ações que causam mudanças em um sistema alvo. Quanto a falta <strong>de</strong><br />
interativida<strong>de</strong>, foi proposto um gráfico <strong>de</strong> comportamento em espiral, representando todas<br />
essas ativida<strong>de</strong>s escolhidas <strong>de</strong> forma temporal e que po<strong>de</strong> ser aumentado, rotacionado e<br />
ter ícones específicos selecionados <strong>de</strong> forma a <strong>de</strong>talhar a ação. Estas características serão<br />
explicadas na seção a seguir.<br />
3. Descrição da ferramenta<br />
A ferramenta <strong>de</strong> visualização proposta tem como objetivo principal receber um arquivo <strong>de</strong><br />
comportamento e exibir as informações contidas nele <strong>de</strong> uma forma interativa por meio<br />
<strong>de</strong> um gráfico em três dimensões no formato <strong>de</strong> uma espiral como visto na Figura 1. A<br />
visualização gráfica em espiral permite uma análise interativa e mais compreensível <strong>de</strong><br />
dados complexos.<br />
Figura 1. Visão geral do gráfico em espiral<br />
Nota-se que, <strong>de</strong>vido à forma ser em espiral, esta ferramenta visual permite a interpretação<br />
<strong>de</strong> uma gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> informações, o que seria muito mais difícil através<br />
da análise manual, sem o auxílio <strong>de</strong> software <strong>de</strong> análise específico. Um outro ponto para<br />
a escolha visual é po<strong>de</strong>r comparar rapidamente os padrões presentes em comportamentos<br />
distintos. Caso a apresentação fosse bidimensional, com os ícones dispostos em uma<br />
matriz (como mostrado em [3], pequenas variações nas ações po<strong>de</strong>riam gerar gráficos<br />
bem diferentes para comportamentos muito similares, o que é in<strong>de</strong>sejável na análise <strong>de</strong><br />
malware.<br />
Dentre as principais características da ferramenta, <strong>de</strong>stacam-se:<br />
302
• A capacida<strong>de</strong> <strong>de</strong> manipular livremente o ângulo <strong>de</strong> visão do gráfico para obter<br />
mais <strong>de</strong>talhes <strong>de</strong> uma <strong>de</strong> uma <strong>de</strong>terminada área do gráfico.<br />
• A possibilida<strong>de</strong> <strong>de</strong> <strong>de</strong>stacar pontos relevantes do gráfico.<br />
• A flexibilida<strong>de</strong> em aceitar como entrada diversos tipos arquivos <strong>de</strong> entrada através<br />
da configuração a<strong>de</strong>quada dos parâmetros.<br />
• A facilida<strong>de</strong> em personalizar características do gráfico criado, como por exemplo<br />
o raio da espiral.<br />
3.1. Arquitetura<br />
A arquitetura da ferramenta é dividida em dois módulos: Módulo GUI e o Módulo Visualização.<br />
O usuário interage com o Módulo GUI, e este por sua vez encaminha as<br />
escolhas do usuário para o Módulo Visualização, que é responsável pela apresentação dos<br />
resultados.<br />
3.2. Módulo GUI<br />
O Módulo GUI é uma interface gráfica, conforme po<strong>de</strong> ser visto na Figura 2, que foi<br />
criada através do uso da biblioteca Swing da linguagem Java.<br />
Figura 2. Interface gráfica criada pelo Módulo GUI<br />
Através do uso <strong>de</strong>sta interface, o usuário fornece as informações a respeito da formatação<br />
dos arquivos (logs) a serem analisados, bem como <strong>de</strong>termina qual será a representação<br />
gráfica das palavras-chave presentes nestes logs que serão criadas pelo Módulo<br />
Visualização.<br />
A vantagem do uso <strong>de</strong>ste Módulo está na flexibilida<strong>de</strong> da interpretação dos arquivos<br />
<strong>de</strong> logs genéricos, proporcionando uma melhor filtragem da palavra-chave <strong>de</strong> interesse,<br />
pois somente serão visualizadas na espiral as formas geométricas e cores relacionadas<br />
às palavras-chave indicadas pelos usuário. Tanto o formato esperado <strong>de</strong> um arquivo<br />
<strong>de</strong> comportamento, quanto uma explicação melhor a respeito das palavras-chave estão na<br />
Seção 3.3.1<br />
3.3. Módulo Visualização<br />
O Módulo Visualização utiliza a biblioteca j3d do Java. Esta biblioteca foi escolhida por<br />
permitir um rápido <strong>de</strong>senvolvimento do Módulo, e também por facilitar a implementação<br />
da computação gráfica, que por sua vez gera o ambiente em 3D, exibindo assim o gráfico<br />
para o usuário.<br />
303
Ao ser iniciado, o Módulo Visualização executa as seguintes tarefas: recebe os<br />
parâmetros do Módulo GUI, cria a cena, ren<strong>de</strong>riza a cena e exibe a imagem do gráfico. A<br />
seguir são <strong>de</strong>talhados os mecanismos que permitem a execução <strong>de</strong>stas tarefas.<br />
3.3.1. Estrutura do arquivo <strong>de</strong> entrada<br />
A Figura 3 exemplifica uma linha <strong>de</strong> um arquivo <strong>de</strong> entrada válido, no qual o caracter<br />
separador é o “;”, open é a primeira palavra-chave e process a segunda. Estas palavras<br />
referem-se, respectivamente, à cor e à forma geométrica. Vale lembrar que a posição das<br />
palavras-chave e o caracter separador são escolhidas pelo usuário no Módulo GUI.<br />
%HOMEPATH%\<strong>de</strong>sktop\malware.exe;open;process;proc.exe<br />
Figura 3. Exemplo <strong>de</strong> uma linha <strong>de</strong> um arquivo log válido<br />
Cada ponto no gráfico é composto simultaneamente por uma cor e uma forma<br />
geométrica. A cor correspon<strong>de</strong> a uma palavra-chave e a forma a outra palavra-chave.<br />
Portanto, é necessário que cada linha do arquivo log contenha duas palavras-chave para<br />
que a composição gráfica seja feita corretamente.<br />
As palavras-chave, no caso específico <strong>de</strong>ste trabalho, são as ações (criar, escrever,<br />
remover) e os tipos <strong>de</strong> subsistema influenciados por estas (arquivo, registros, processos)<br />
quando da ativida<strong>de</strong> <strong>de</strong> um programa malicioso. A Tabela 1 mostra as ações, seus tipos e<br />
os respectivos ícones (formas geométricas) e cores que representam tais informações.<br />
3.3.2. Adição <strong>de</strong> um ponto no gráfico da cena<br />
A biblioteca j3d possui algumas poucas fomas geométricas nativas, entre elas o cubo<br />
e a esfera. Portanto, para tornar possível o uso <strong>de</strong> formas não nativas foram criados<br />
vários métodos que encapsulam a criação <strong>de</strong> formas complexas (tais como, a pirâmi<strong>de</strong> e<br />
o asterisco utilizados neste artigo) a partir da composição <strong>de</strong> retas e planos. Além disso,<br />
também foi criado um método que encapsula a criação <strong>de</strong> um objeto “ponto” a partir <strong>de</strong><br />
uma cor e uma forma geométrica <strong>de</strong>finida.<br />
Com o intuito <strong>de</strong> facilitar o gerenciamento das informações pelo Módulo Visualização<br />
foi criado o objeto “ponto” mencionado, o qual contém todas as informações<br />
relevantes a um ponto do gráfico, tais como a cor, a forma geométrica e a linha correspon<strong>de</strong>nte<br />
do arquivo <strong>de</strong> entrada. Para <strong>de</strong>finir em qual posição (x,y,z) um ponto será inserido,<br />
utilizam-se as fórmulas abaixo:<br />
x = cos(αy)<br />
z = sin(αy)<br />
Observa-se que uma vez <strong>de</strong>finida a coor<strong>de</strong>nada “y”, o resto do vetor posição<br />
(x,y,z) também estará <strong>de</strong>finido. A coor<strong>de</strong>nada “y” <strong>de</strong>pen<strong>de</strong> <strong>de</strong> dois fatores: a linha na<br />
qual o ponto correspon<strong>de</strong> e a constante “α”.<br />
304
Tabela 1. Ações, tipos possíveis <strong>de</strong> visualização e ícones que as representam.<br />
Action / Type MUTEX FILE PROC REG NET<br />
READ<br />
QUERY<br />
RECEIVE<br />
WRITE<br />
SEND<br />
CONNECT<br />
CREATE<br />
DISCONNECT<br />
DELETE<br />
TERMINATE<br />
RELEASE<br />
Um ponto referente à enésima linha do arquivo possui a coor<strong>de</strong>nada “y” <strong>de</strong>finida<br />
pela fórmula y = 10n<br />
α<br />
, na qual “α” é uma constante escolhida pelo usuário no Módulo<br />
GUI, e “n” é o número da linha a qual o ponto se refere.<br />
3.3.3. Criação da cena<br />
Durante o método <strong>de</strong> criação da cena, cada linha do arquivo <strong>de</strong> entrada é percorrida. Caso<br />
o método encontre um par <strong>de</strong> palavras-chave, este adiciona um ponto correspon<strong>de</strong>nte no<br />
gráfico da cena, como já <strong>de</strong>scrito na Seção 3.3.2. Em seguida, são adicionados ao gráfico<br />
os <strong>de</strong>talhes, isto é, os eixos e a curva da espiral.<br />
3.3.4. Ren<strong>de</strong>rização da cena<br />
A ren<strong>de</strong>rização é o processamento das informações providas na cena para gerar, <strong>de</strong> fato, a<br />
imagem visível ao usuário. A ren<strong>de</strong>rização é feita quase que integralmente pelos métodos<br />
nativos da biblioteca j3d, com exceção <strong>de</strong> duas classes customizadas: a classe CanvasOverlay<br />
e a classe MouseBehavior.<br />
A classe CanvasOverlay esten<strong>de</strong> a classe nativa Canvas, e tem como objetivo<br />
implementar a capacida<strong>de</strong> <strong>de</strong> se escrever texto sobre a camada do plano principal (canvas).<br />
Isto é feito para mostrar ao usuário informações adicionais sobre um ponto específico no<br />
gráfico, conforme ilustrado na Figura 4.<br />
305
Figura 4. Detalhes das marcações nos pontos (gra<strong>de</strong> ver<strong>de</strong>) e texto inserido<br />
através da classe CanvasOverlay<br />
A classe MouseBehavior esten<strong>de</strong> a classe nativa Behavior e tem como objetivo<br />
adicionar ao Módulo Visualização a capacida<strong>de</strong> <strong>de</strong> reconhecer comandos do mouse diretamente<br />
sobre a tela, como a posição e o clique do mouse sobre o canvas.<br />
Com a classe MouseBehavior é possível controlar a câmera com o mouse e também<br />
criar marcações para <strong>de</strong>stacar pontos do gráfico (Figura 4). As marcações são criadas<br />
por métodos implementados <strong>de</strong>ntro da classe MouseBehavior. Assim, quando for <strong>de</strong>tectado<br />
um clique do mouse sobre algum ponto do gráfico, este método irá adicionar ou<br />
remover, alternadamente, a marcação correspon<strong>de</strong>nte ao ponto.<br />
4. Testes e Resultados<br />
A representação <strong>de</strong> comportamentos maliciosos envolve diversas categorias <strong>de</strong> ações e<br />
tipos, para os quais foram <strong>de</strong>finidos cores e formas geométricas, com a finalida<strong>de</strong> <strong>de</strong><br />
facilitar sua i<strong>de</strong>ntificação e representação (Tabela 1).<br />
Através do módulo GUI, é possível filtrar as facetas do comportamento que se<br />
<strong>de</strong>seja visualizar. Por exemplo, supondo que o usuário <strong>de</strong>seje verificar apenas as ativida<strong>de</strong>s<br />
relacionadas à processos (criação e finalização), este <strong>de</strong>ve escolher somente a caixa<br />
<strong>de</strong> seleção “process”, <strong>de</strong>terminado pela cor ver<strong>de</strong> na Figura 2, <strong>de</strong>smarcando as outras.<br />
Isto faz com que a espiral produzida contenha apenas o tipo <strong>de</strong> informação selecionada,<br />
permitindo uma análise mais <strong>de</strong>talhada, conforme po<strong>de</strong>-se observar na Figura 5.<br />
Para fins <strong>de</strong> teste, foram obtidos os comportamentos <strong>de</strong> mais <strong>de</strong> 400 exemplares <strong>de</strong><br />
malware coletados pela arquitetura apresentada em [4]. Estes exemplares foram submetidos<br />
a um sistema <strong>de</strong> análise dinâmica <strong>de</strong> malware [5], para que fossem extraídos os perfis<br />
comportamentais. Os arquivos com comportamentos foram utilizados na geração das espirais,<br />
através da ferramenta <strong>de</strong>senvolvida apresentada neste artigo. É interessante notar<br />
que exemplares i<strong>de</strong>ntificados pelo antivírus ClamAV [1] como pertencentes à família “Allaple”<br />
apresentam padrões similares, mesmo quando o comportamento é incompleto. Isto<br />
po<strong>de</strong> ser observado na Figura 6.<br />
Dado que mesmo uma família <strong>de</strong>nominada por um mecanismo <strong>de</strong> antivírus po<strong>de</strong><br />
ter variantes diversificadas em diferentes grupos internos, ou sub-famílias, a análise <strong>de</strong>ssas<br />
diferenças é um processo relevante na compreensão das ativida<strong>de</strong>s maliciosas. Por exemplo,<br />
a família <strong>de</strong> worms anteriormente mencionada, conhecida como “Allaple” é bastante<br />
popular, contém <strong>de</strong>zenas <strong>de</strong> variantes e ainda está em ativida<strong>de</strong>. Os exemplares se caracterizam<br />
por realizar ativida<strong>de</strong>s <strong>de</strong> varredura em re<strong>de</strong>s visando atacar outros sistemas e se<br />
disseminar.<br />
306
Figura 5. Espiral gerada através da seleção, no módulo GUI, <strong>de</strong> visualização<br />
filtrada por ativida<strong>de</strong>s relacionadas aos processos presentes no comportamento<br />
Figura 6. Comportamento <strong>de</strong> três exemplares da família “Allaple”. Em (a), o<br />
malware parou sua execução antes <strong>de</strong> gerar tráfego <strong>de</strong> re<strong>de</strong>; em (b), po<strong>de</strong>-se<br />
notar a presença <strong>de</strong> algum tráfego enquanto que em (c), ativida<strong>de</strong>s <strong>de</strong> re<strong>de</strong> ocorreram<br />
em gran<strong>de</strong> quantida<strong>de</strong><br />
Entretanto, po<strong>de</strong>m haver mudanças no comportamento que levem à ativida<strong>de</strong>s<br />
mais sofisticadas, como downloads ou obtenção <strong>de</strong> informações sobre as máquinas sondadas<br />
em uma varredura. Na Figura 7 é mostrada uma variante <strong>de</strong> “Allaple” cujo comportamento<br />
difere visivelmente das variantes da Figura 6, indicando uma possível sub-família.<br />
Além disso, po<strong>de</strong>-se notar uma alternância entre as ativida<strong>de</strong> <strong>de</strong> conexão com a re<strong>de</strong> e<br />
criação <strong>de</strong> arquivos, representadas por esferas vermelhas e rosas, respectivamente.<br />
Em um outro caso, foi possível classificar um exemplar não i<strong>de</strong>ntificado pela<br />
semelhança com a espiral <strong>de</strong> um cavalo-<strong>de</strong>-tróia conhecido (i<strong>de</strong>ntificado pelo ClamAV<br />
como uma variante <strong>de</strong> Trojan.Agent), conforme mostrado na Figura 8. Isto mostra que,<br />
visualmente, foi possível <strong>de</strong>tectar um comportamento <strong>de</strong> um programa até então classificado<br />
como inofensivo por um mecanismo antivírus, como sendo malicioso. É interessante<br />
notar que o comportamento do programa <strong>de</strong>sconhecido contém mais ações do que as do<br />
i<strong>de</strong>ntificado como um trojan, inclusive ativida<strong>de</strong>s <strong>de</strong> re<strong>de</strong> diversas.<br />
5. Conclusão<br />
Devido ao problema causado pelos programas maliciosos em sistemas <strong>de</strong> computadores e<br />
re<strong>de</strong>s, é necessário criar meios que facilitem a compreensão da atuação <strong>de</strong>stes e a tomada<br />
307
Figura 7. Variante <strong>de</strong> exemplar <strong>de</strong> malware da família “Allaple”, cujo comportamento<br />
predominante envolve a alternância entre as ativida<strong>de</strong>s <strong>de</strong> conexões <strong>de</strong><br />
re<strong>de</strong> (esferas vermelhas) e criação <strong>de</strong> arquivos (esferas rosas)<br />
(a) Exemplar não i<strong>de</strong>ntificado.<br />
(b) Trojan.Agent<br />
Figura 8. Exemplar não i<strong>de</strong>ntificado pelo antivírus ClamAV (a), cujo comportamento<br />
inicial é similar ao <strong>de</strong> um cavalo-<strong>de</strong>-tróia da classe “Agent” (b)<br />
<strong>de</strong> medidas <strong>de</strong> proteção. Técnicas <strong>de</strong> visualização po<strong>de</strong>m ser aplicadas com sucesso no<br />
auxilio à análise <strong>de</strong> comportamento malicioso, pois permitem a visualização <strong>de</strong> padrões<br />
que po<strong>de</strong>riam estar ocultos em uma massa muito gran<strong>de</strong> <strong>de</strong> informações textuais.<br />
Com a finalida<strong>de</strong> <strong>de</strong> ajudar na análise <strong>de</strong> malware, foi <strong>de</strong>senvolvida uma ferramenta<br />
para visualização <strong>de</strong> comportamento <strong>de</strong> execução <strong>de</strong> programas a qual é também<br />
interativa, permitindo a um usuário ou analista <strong>de</strong> segurança a verificação das ativida<strong>de</strong>s<br />
<strong>de</strong> forma <strong>de</strong>talhada e informativa. Esta ferramenta utiliza-se <strong>de</strong> tecnologias tridimensionais<br />
providas por pacotes em Java e apresenta os dados dispostos sob a forma <strong>de</strong> uma<br />
espiral.<br />
308
Para validar a ferramenta, foram feitos testes que produziram mais <strong>de</strong> 400 espirais<br />
<strong>de</strong> programas maliciosos e permitiram i<strong>de</strong>ntificar, visualmente, padrões comuns em famílias<br />
(tornando possível seu agrupamento e classificação posterior). Além disso, mostrouse<br />
que é possível associar programas maliciosos não i<strong>de</strong>ntificados à malware que já é<br />
conhecido. Como trabalho futuro, propõe-se uma extensão que permita abrir e manipular<br />
diversos arquivos <strong>de</strong> comportamentos ao mesmo tempo, possibilitando a comparação em<br />
paralelo mais rápida <strong>de</strong> várias instâncias <strong>de</strong> malware.<br />
A fim <strong>de</strong> disseminar o conhecimento científico e prover transparência, uma versão<br />
“beta” da ferramenta está disponível em [7], bem como as figuras <strong>de</strong> todas as espirais<br />
geradas.<br />
Referências<br />
[1] Clam antivirus. http://www.clamav.net.<br />
[2] G. Conti, E. Dean, M. Sinda and B. Sangster. Visual Reverse Engineering of Binary and<br />
Data Files. Proceedings of the 5th international workshop on Visualization for<br />
Computer Security(VizSec), 2008, pp. 1-17.<br />
[3] S. G. Eick, J. L. Steffen and E. E. Sumner, Jr. Seesoft—A Tool for Visualizing Line<br />
Oriented Software Statistics. In IEEE Transactions on Software Engineering, vol.<br />
18, no. 11, pp. 957-968, 1992.<br />
[4] A. R. A. Grégio, I. L. Oliveira, R. D. C. dos Santos, A. M. Cansian and P. L. <strong>de</strong> Geus.<br />
Malware distributed collection and pre-classification system using honeypot technology.<br />
Proceedings of SPIE , vol. 7344, pp. 73440B-73440B-10, 2009.<br />
[5] D. S. Fernan<strong>de</strong>s Filho, V. M. Afonso, A. R. A. Grégio, R. D. C. dos Santos, M. Jino and<br />
P. L. <strong>de</strong> Geus. Análise Comportamental <strong>de</strong> Código Malicioso através da Monitoração<br />
<strong>de</strong> Chamadas <strong>de</strong> Sistema e Tráfego <strong>de</strong> Re<strong>de</strong>. <strong>Anais</strong> do X Simpósio Brasileiro<br />
em Segurança da Informação e <strong>de</strong> Sistemas Computacionais (SBSeg), pp. 311-324,<br />
2010.<br />
[6] D. Keim. Visual Data Mining, Tutorial. In 23rd International Conference on Very Large<br />
Data Bases (VLDB ’97), 1997. Visitado em Agosto <strong>de</strong> 2011.<br />
[7] Malicious Behavior Spiral. http://www.las.ic.unicamp.br/~gregio/mbs<br />
[8] D. Quist and L. Liebrock. Visualizing Compiled Executables for Malware Analysis. Proceedings<br />
of the Workshop on Visualization for Cyber Security, 2009, pp. 27-32.<br />
[9] H. Read, K. Xynos and A. Blyth. Presenting DEViSE: Data Exchange for Visualizing<br />
Security Events. IEEE Computer Graphics and Applications, vol. 29,pp. 6-11,<br />
2009.<br />
[10] P. Trinius, T. Holz, J. Gobel and F. C. Freiling. Visual analysis of malware behavior using<br />
treemaps and thread graphs. International Workshop on Visualization for Cyber<br />
Security(VizSec), 2009, pp. 33-38.<br />
309
Troca <strong>de</strong> Chaves Criptográficas com Re<strong>de</strong>s Neurais<br />
Artificiais<br />
Denis R. M. Piazentin 1 , Maurício Duarte 1<br />
1 Computer and Information Systems Research Lab (COMPSI)<br />
Centro Universitário Eurípe<strong>de</strong>s <strong>de</strong> Marília (UNIVEM) – Marília, SP – Brasil<br />
<strong>de</strong>nis@piazentin.com, maur.duarte@univem.edu.br<br />
Abstract. Encryption algorithms work by scrambling information to protected<br />
then from unauthorized access. These algorithms use cryptographic<br />
keys, a data used by a given algorithm for scrambling the information and<br />
subsequent restoration of these information through <strong>de</strong>cryption. The distribution<br />
of cryptographic keys is a known problem in cryptography. Given<br />
that artificial neural networks can synchronize by mutual learning, adjusting<br />
their weights, it is possible to use this property of synchronization to<br />
solve the problem of exchanging cryptographic keys. This work is the study<br />
of this technique, known as Neural Cryptography.<br />
Resumo. Algoritmos <strong>de</strong> criptografia trabalham embaralhando informações<br />
para as proteger <strong>de</strong> acesso in<strong>de</strong>vido. Esses algoritmos usam chaves criptográficas,<br />
um dado usado pelo algoritmo para o embaralhamento das informações<br />
e posterior restauração dos mesmos através da <strong>de</strong>scriptografia. A<br />
distribuição das chaves criptográficas é um conhecido problema em criptografia.<br />
Tendo em vista que re<strong>de</strong>s neurais artificiais po<strong>de</strong>m se sincronizar por<br />
aprendizado mútuo, ajustando seus pesos, é possível usar essa proprieda<strong>de</strong><br />
<strong>de</strong> sincronização para solucionar o problema <strong>de</strong> troca <strong>de</strong> chaves criptográficas.<br />
Este trabalho é o estudo <strong>de</strong>sta técnica, conhecida como Criptografia<br />
Neural.<br />
1. Introdução<br />
A criptografia usa algoritmos criptográficos para transformar texto plano em texto<br />
cifrado e utiliza um dado chamado chave criptográfica para criptografar e <strong>de</strong>scriptografar<br />
esses textos. Fazer com que ambas as partes da comunicação possuam essa<br />
mesma chave é um problema conhecido em criptografia, que já teve propostas e implementadas<br />
soluções como o uso <strong>de</strong> um terceiro confiável, a troca com antecedência<br />
e uso <strong>de</strong> chaves públicas. A sincronização <strong>de</strong> re<strong>de</strong>s neurais e o uso <strong>de</strong> seus pesos<br />
como chaves criptográficas é uma alternativa ao problema <strong>de</strong> troca <strong>de</strong> chave.<br />
Com a <strong>de</strong>scoberta da sincronização entre re<strong>de</strong>s neurais por um processo conhecido<br />
como aprendizagem mútua, on<strong>de</strong> os pesos são ajustados até que convirjam<br />
e com a criação <strong>de</strong> re<strong>de</strong>s neurais com uma estrutura diferenciada on<strong>de</strong> há uma sincronização<br />
muito mais rápida que o treinamento comum, foi possível propor um<br />
protocolo <strong>de</strong> troca <strong>de</strong> chaves que utiliza os pesos <strong>de</strong>ssas re<strong>de</strong>s sincronizadas como<br />
chaves criptográficas, criando uma alternativa ao problema <strong>de</strong> troca <strong>de</strong> chave.<br />
310
Este trabalho tem como objetivo prover uma revisão bibliográfica e apresentar<br />
o uso da sincronização <strong>de</strong> re<strong>de</strong>s neurais artificiais como protocolo <strong>de</strong> troca <strong>de</strong> chaves.<br />
A criptografia neural é uma alternativa interessante, tendo em vista que problemas<br />
encontrados em outros protocolos não são observáveis aqui.<br />
2. Criptografia e Troca <strong>de</strong> Chaves<br />
Criptografar é o ato <strong>de</strong> converter informações sensíveis em textos ilegíveis, enquanto<br />
que, o processo inverso, converter textos ilegíveis em informação legível, consiste<br />
do ato <strong>de</strong> <strong>de</strong>scriptografar. Para criptografar e <strong>de</strong>scriptografar dados, utilizam-se<br />
algoritmos criptográficos que, por sua vez, utilizam um dado conhecido como chave.<br />
Na criptografia computadorizada, a chave é sempre um número ou um conjunto <strong>de</strong><br />
números [Burnett e Paine 2001].<br />
Alguns algoritmos <strong>de</strong> criptografia mais conhecidos são o Data Encryption<br />
Standart (DES), o Advanced Encryption Standart (AES) e o RSA [Terada 2008].<br />
O DES foi o primeiro algoritmo <strong>de</strong> criptografia <strong>de</strong> conhecimento público e<br />
se tornou o padrão comercial em algoritmos criptográficos, junto com sua variante,<br />
Triple DES. No DES e nos algoritmos públicos que se seguiram, a segurança se baseia<br />
exclusivamente no conhecimento da chave secreta. O DES e todos os algoritmos<br />
conhecidos como <strong>de</strong> criptografia <strong>de</strong> chave simétrica utilizam a mesma chave para<br />
criptografar e <strong>de</strong>scriptografar [Terada 2008].<br />
Sucessor do DES, o AES foi escolhido para ser o novo padrão comercial<br />
através <strong>de</strong> uma competição criada em 1998. Os algoritmos candidatos a AES foram<br />
analisados quanto à sua segurança, performance e tamanho [Burnett e Paine 2001].<br />
A partir <strong>de</strong>ssa análise, foram selecionados uma série <strong>de</strong> algoritmos que foram e-<br />
xaustivamente testados e, em outubro <strong>de</strong> 2000, o algoritmo Rijndael foi escolhido e<br />
adotado como AES [Terada 2008]. O AES é um algoritmo <strong>de</strong> chave simétrica que<br />
utiliza chaves <strong>de</strong> 128, 192 ou 256 bits <strong>de</strong> comprimento [Terada 2008].<br />
O algoritmo RSA, publicado em 1978, utiliza o conceito <strong>de</strong> chaves públicas<br />
e privadas. Nesse esquema, cada usuário possui seu par <strong>de</strong> chaves; a chave pública,<br />
que é usada por terceiros para criptografar o conteúdo e uma chave distinta, privada,<br />
que é usada pelo usuário para <strong>de</strong>scriptografar os dados [Burnett e Paine 2001]. O<br />
algoritmo RSA comumente é utilizado para criptografar uma chave <strong>de</strong> sessão, que é<br />
usada por outro algoritmo, <strong>de</strong> criptografia simétrica, para criptografar e <strong>de</strong>scriptografar<br />
a mensagem em si [Burnett e Paine 2001]. Isso ocorre porque algoritmos <strong>de</strong><br />
chave pública como o RSA são muito mais lentos que os <strong>de</strong> chave simétrica, chegando<br />
a ser 500 vezes mais lento em algumas comparações [Burnett e Paine 2001].<br />
A criptografia <strong>de</strong> chave pública é uma das soluções para o problema <strong>de</strong> troca<br />
<strong>de</strong> chaves. A criptografia é usada para proteger a troca <strong>de</strong> informações secretas,<br />
mas para isso também é necessário proteger as chaves que <strong>de</strong>scriptografam essas<br />
informações e, se um atacante po<strong>de</strong> interceptar a mensagem com o texto cifrado,<br />
também po<strong>de</strong> interceptar a mensagem com a chave que a <strong>de</strong>scriptografa [Burnett<br />
e Paine 2001]. Outras soluções para o problema <strong>de</strong> troca <strong>de</strong> chaves são a troca <strong>de</strong><br />
chaves com antecedência, o uso <strong>de</strong> um terceiro confiável e a criptografia neural.<br />
Na troca <strong>de</strong> chaves com antecedência, as duas partes que <strong>de</strong>sejam se comuni-<br />
311
car <strong>de</strong>vem se encontrar antes e compartilhar a chave que será usada para criptografar<br />
as mensagens através <strong>de</strong> um meio <strong>de</strong> comunicação seguro [Burnett e Paine 2001].<br />
O principal problema com esse protocolo é a dificulda<strong>de</strong> na troca <strong>de</strong> chaves que<br />
surge quando as partes estão em locais geograficamente distantes ou quando muitas<br />
partes <strong>de</strong>sejam se comunicar, situações em que ocorrem problemas <strong>de</strong> logística que<br />
inviabilizam a troca [Burnett e Paine 2001].<br />
No caso <strong>de</strong> terceiro confiável, cada parte possui uma chave diferente compartilhada<br />
com uma terceira parte confiável (trusted third party, TTP), que armazena a<br />
chave <strong>de</strong> todas as outras partes e tem acesso a todas as mensagens [Burnett e Paine<br />
2001]. O principal problema com esse protocolo é que a confiabilida<strong>de</strong> da TTP é extremamente<br />
crítica, e caso a TTP seja perdida ou comprometida <strong>de</strong> qualquer forma,<br />
é necessário obter outra TTP e reiniciar o processo <strong>de</strong> geração <strong>de</strong> chaves para todas<br />
as partes, o que po<strong>de</strong> ser muito custoso [Burnett e Paine 2001].<br />
Criptografia neural utiliza os pesos <strong>de</strong> re<strong>de</strong>s neurais sincronizadas como chaves<br />
criptográficas [Kinzel e Kanter 2002]. O protocolo se baseia na proprieda<strong>de</strong> <strong>de</strong><br />
sincronização <strong>de</strong> certas re<strong>de</strong>s neurais e no fato <strong>de</strong> que a sincronização é muito mais<br />
rápida que o aprendizado <strong>de</strong> uma terceira re<strong>de</strong> neural <strong>de</strong> um atacante que esteja<br />
apenas monitorando a comunicação [Ruttor 2007].<br />
3. Re<strong>de</strong>s Neurais Artificiais<br />
Re<strong>de</strong>s neurais artificiais (RNAs) são sistemas paralelos distribuídos por unida<strong>de</strong>s<br />
<strong>de</strong> processamento simples (neurônios artificiais) que calculam <strong>de</strong>terminadas funções<br />
matemáticas [Braga et al. 2007].<br />
O primeiro neurônio artificial, que foi proposto em 1943 por McCulloch e<br />
Pitts, é um simplificação do neurônio biológico, que é dividido em corpo ou soma,<br />
<strong>de</strong>ndritos e axônio, conforme ilustrado na Figura 1.<br />
Figura 1. Mo<strong>de</strong>lo <strong>de</strong> neurônio biológico com o corpo, os <strong>de</strong>ndritos e o axônio com<br />
seus terminais sinápticos. Fonte: próprio autor<br />
O mo<strong>de</strong>lo <strong>de</strong> neurônio artificial foi composto <strong>de</strong> n terminais <strong>de</strong> entrada, recebendo<br />
os valores x 1 , x 2 , . . . , x n , com pesos acoplados w 1 , w 2 , . . . , w n representando a<br />
força das sinapses do neurônio, com o efeito da sinapse i então sendo dado por x i w i<br />
no momento em que o neurônio atinge seu limiar <strong>de</strong> excitação, dado pela somatória<br />
dos valores x i w i e por uma função <strong>de</strong> ativação f(u), com o disparo sendo dado pela<br />
saída y nos valores 1 ou 0 [Braga et al. 2007] [Russell e Norvig 2010]. O mo<strong>de</strong>lo do<br />
neurônio artificial é representado na Figura 2.<br />
312
Figura 2. Mo<strong>de</strong>lo matemático <strong>de</strong> um neurônio artificial, com as entradas<br />
x 1 , x 2 , . . . , x n , pesos w 1 , w 2 , . . . , w n , saída y e corpo com a somatória <strong>de</strong> x i w i e<br />
função <strong>de</strong> ativação f(u). Fonte: próprio autor<br />
Neurônios individuais são computacionalmente limitados, mas conjuntos <strong>de</strong><br />
neurônios organizados em forma <strong>de</strong> re<strong>de</strong> po<strong>de</strong>m resolver problemas mais complexos<br />
[Braga et al. 2007]. Para isso, se organizam re<strong>de</strong>s <strong>de</strong> neurônios artificiais com<br />
quantia <strong>de</strong> camadas variadas e com conexão entre si unidirecionais (feedforward)<br />
ou recorrentes, com saídas da camada inferior alimentando entradas da camada<br />
superior [Braga et al. 2007].<br />
As RNAs são treinadas para apren<strong>de</strong>r e melhorar sua performance na resolução<br />
<strong>de</strong> um problema [Haykin 1999]. Esse treinamento consiste <strong>de</strong> um processo<br />
iterativo <strong>de</strong> ajuste dos pesos das conexões [Braga et al. 2007] em que as entradas da<br />
re<strong>de</strong> são alimentadas e, <strong>de</strong> acordo com o resultado, os pesos são ajustados. O ajuste<br />
dos pesos é dado por w(t + 1) = w(t) + ∆w(t), com w(t + 1) sendo o valor do peso<br />
no instante t + 1 e ∆w(t) o ajuste aplicado aos pesos.<br />
O treinamento ou aprendizado po<strong>de</strong> ser supervisionado ou não supervisionado.<br />
No treinamento supervisionado, há um supervisor estimulando as entradas e<br />
ajustando os pesos para aproximar sua saída da saída <strong>de</strong>sejada. No treinamento não<br />
supervisionado, padrões são apresentados continuamente à re<strong>de</strong> e as regularida<strong>de</strong>s<br />
nos dados apresentados torna o aprendizado possível [Braga et al. 2007].<br />
A regra <strong>de</strong> aprendizado <strong>de</strong> Hebb, uma das regras <strong>de</strong> aprendizado usadas na<br />
criptografia neural, que propõe que o peso <strong>de</strong>ve ser ajustado caso haja sincronismo<br />
entre ativida<strong>de</strong>s <strong>de</strong> entrada e saída, é classificada como não supervisionada [Braga<br />
et al. 2007].<br />
4. Criptografia Neural<br />
A sincronização <strong>de</strong> re<strong>de</strong>s neurais é um caso especial <strong>de</strong> aprendizado on<strong>de</strong> duas re<strong>de</strong>s<br />
neurais são iniciadas com pesos escolhidos aleatoriamente e, a cada passo do processo<br />
<strong>de</strong> sincronização, recebem um vetor <strong>de</strong> entradas gerado publicamente, calculam suas<br />
saídas e as comunicam uma para a outra. Caso o mapeamento entre a entrada atual<br />
e a saída <strong>de</strong> ambas as re<strong>de</strong>s não seja igual, os pesos da re<strong>de</strong> são atualizados <strong>de</strong> acordo<br />
com uma das regras aplicáveis [Ruttor 2007].<br />
Nas re<strong>de</strong>s neurais mais simples, como os perceptrons, não se observa diferença<br />
significativa entre o tempo para a re<strong>de</strong> ser treinada por exemplos do tempo necessário<br />
para sincronizar, porém re<strong>de</strong>s neurais com uma estrutura específica, as Tree Parity<br />
313
Machines (TPM), sincronizam muito mais rápido do que uma terceira re<strong>de</strong> que esteja<br />
escutando a comunicação precisa para apren<strong>de</strong>r, e essa diferença <strong>de</strong> tempo é usada<br />
pelo protocolo para resolver o problema <strong>de</strong> troca <strong>de</strong> chaves [Ruttor 2007].<br />
A arquitetura da re<strong>de</strong> TPM foi apresentada no artigo Secure exchange of<br />
information by synchronization of neural networks [Kanter et al. 2002] e po<strong>de</strong> ser<br />
vista na Figura 3:<br />
Figura 3. Estrutura <strong>de</strong> uma Tree Parity Machine, com K = 3 e N = 4. Fonte:<br />
próprio autor<br />
A TPM é composta por três camadas, a <strong>de</strong> entrada, a oculta e a <strong>de</strong> saída,<br />
respectivamente. A camada oculta possui K unida<strong>de</strong>s, representados na Figura 3<br />
por o i on<strong>de</strong> i = 1, . . . , K, com cada unida<strong>de</strong> possuindo N unida<strong>de</strong>s da camada <strong>de</strong><br />
entradas x j com peso associado w j , on<strong>de</strong> j = 1, . . . , N. A camada <strong>de</strong> saída possui<br />
apenas uma unida<strong>de</strong> y.<br />
Tem-se que todos os valores <strong>de</strong> entradas são binários, tais que<br />
x i,j ∈ {−1, +1} (1)<br />
e os pesos que <strong>de</strong>finem o mapeamento <strong>de</strong> entradas para saída são números discretos<br />
entre −L e +L,<br />
w i,j ∈ {−L, −L + 1, . . . , +L − 1, L} (2)<br />
como em outras re<strong>de</strong>s neurais, tem-se também que o estado <strong>de</strong> cada neurônio é dado<br />
pelo somatório <strong>de</strong> x j w j ,<br />
h i = 1 √<br />
N<br />
x i w i = 1 √<br />
N<br />
N<br />
∑<br />
j=1<br />
com a saída o i sendo <strong>de</strong>finida pela função sinal <strong>de</strong> h i ,<br />
x i,j w i,j (3)<br />
o i = sgn(h i ) (4)<br />
com o caso especial <strong>de</strong> h i = 0 sendo mapeado para −1 para garantir um valor<br />
<strong>de</strong> saída binário. Tem-se então que a saída total y da TPM é dado pelo produto<br />
(parida<strong>de</strong>) das unida<strong>de</strong>s da camada oculta o i ,<br />
y =<br />
K∏<br />
o i (5)<br />
i=1<br />
De tal forma, a saída y apenas indica se o número <strong>de</strong> unida<strong>de</strong>s inativas da<br />
camada oculta é par (y = +1) ou ímpar(y = −1) e, consequentemente, há 2 K−1<br />
314
diferentes representações internas (o 1 , o 2 , . . . , o k ) que resultam no mesmo valor <strong>de</strong><br />
y [Ruttor 2007].<br />
O processo <strong>de</strong> sincronização tem início com os pesos das TPM A e B sendo<br />
inicializados com valores aleatórios, não relacionados e secretos. Após isso, para<br />
cada passo da sincronização, é gerada publicamente uma lista <strong>de</strong> valores aleatórios<br />
<strong>de</strong> tamanho K × N que alimenta as entradas A e B, em que as saídas y A e y B são<br />
calculadas [Ruttor 2007].<br />
Caso y A ≠ y B nenhuma ação é tomada e caso y A = y B é aplicada uma das<br />
regras <strong>de</strong> aprendizado, que são [Prabakaran e P. 2010]:<br />
• Regra <strong>de</strong> aprendizado <strong>de</strong> Hebb:<br />
w A/B<br />
i<br />
• Regra <strong>de</strong> aprendizado anti-Hebb:<br />
w A/B<br />
i<br />
(t + 1) = w A/B<br />
i (t) + x i y A/B Θ(y A/B o A/B<br />
i )Θ(y A y B ) (6)<br />
(t + 1) = w A/B<br />
i (t) − x i o i Θ(y A/B o A/B<br />
i )Θ(y A y B ) (7)<br />
• Regra <strong>de</strong> aprendizado Passeio Aleatório<br />
w A/B<br />
i<br />
(t + 1) = w A/B<br />
i (t) + x i Θ(y A/B o A/B<br />
i )Θ(y A y B ) (8)<br />
On<strong>de</strong> Θ é a função <strong>de</strong>grau,<br />
Θ(x) = 1 + sgn(x)<br />
2<br />
⎧<br />
⎪⎨ 0, x < 0<br />
1<br />
=<br />
2<br />
⎪⎩<br />
, x = 0<br />
1, x > 0<br />
(9)<br />
<strong>de</strong>ssa forma, apenas são atualizadas as unida<strong>de</strong>s on<strong>de</strong> o i = y A/B quando y A = y B .<br />
Essa restrição na atualização dos pesos é especialmente útil, já que torna impossível<br />
saber quais pesos foram atualizados sem conhecer os seus valores na camada oculta<br />
[Firmino Filho 2009].<br />
Os passos da sincronização <strong>de</strong>vem ser repetidos até que as duas re<strong>de</strong>s estejam<br />
sincronizadas. As re<strong>de</strong>s são consi<strong>de</strong>radas sincronizadas quando para cada peso w A i<br />
das K unida<strong>de</strong>s ocultas <strong>de</strong> A e o peso correspon<strong>de</strong>nte w B i em B tem-se que w A i = w B i .<br />
Porém, como as TPM A e B possuem pesos secretos, essa comunicação não<br />
é possível. Como alternativa para a <strong>de</strong>tecção <strong>de</strong> sincronização entre as re<strong>de</strong>s, é proposto<br />
que seja feito um teste cifrando uma mensagem pré-<strong>de</strong>terminada com um algoritmo<br />
criptográfico usando como chave o estado dos pesos <strong>de</strong> A e B e comparando-os,<br />
<strong>de</strong> forma que se a mensagem cifrada m A seja igual à m B , então A e B estão sincronizados.<br />
Para reduzir os custos <strong>de</strong> processamento <strong>de</strong>sse algoritmo, acrescenta-se<br />
a regra <strong>de</strong> que o teste <strong>de</strong> sincronização <strong>de</strong>ve ser executado apenas caso a condição<br />
y A = y B tenha ocorrido nos últimos M passos.<br />
O processo <strong>de</strong> sincronização é baseado na competição entre forças aleatórias<br />
atrativas e repulsivas. Um passo atrativo ocorre quando y A = o A i = o B i = y B ,<br />
situação on<strong>de</strong> os pesos <strong>de</strong> ambas as re<strong>de</strong>s são atualizados. Com os pesos das re<strong>de</strong>s<br />
315
entre −L e +L, a distância d i = |wi<br />
A − wi B | não será modificada, exceto caso o valor<br />
<strong>de</strong> um dos pesos ultrapasse L, caso em que é atribuido ao mesmo o valor limitante,<br />
o que faz com que a distância d i diminua, até que d i = 0 [Firmino Filho 2009].<br />
Um passo repulsivo ocorre quando y A = y B mas o A i ≠ o B i . Nessa situação<br />
apenas um dos pesos é atualizado, o que aumenta a distância d i = |wi A − wi B |.<br />
Para uma re<strong>de</strong> neural atacante, a probabilida<strong>de</strong> <strong>de</strong> passos repulsivos é sempre<br />
maior do que entre A e B [Ruttor 2007].<br />
O principal problema para um atacante E é que a representação interna<br />
(o 1 , o 2 , . . . , o i ) <strong>de</strong> A e B lhe é <strong>de</strong>sconhecida. Como as alterações nos pesos <strong>de</strong>pen<strong>de</strong><br />
dos valores <strong>de</strong> o i , é importante para um ataque bem sucedido que o estado das<br />
unida<strong>de</strong>s ocultas seja adivinhado corretamente.<br />
Ataques <strong>de</strong> força bruta são computacionalmente inviáveis contra o protocolo,<br />
pois para <strong>de</strong>terminada TPM há (2L + 1) KN diferentes configurações possíveis <strong>de</strong><br />
pesos.<br />
Há quatro principais formas <strong>de</strong> ataque; simples, geométrico, <strong>de</strong> maioria e o<br />
genético. No ataque simples, E treina uma terceira TPM com os vetores públicos x<br />
e com as saídas y A , que são transmitidas publicamente entre A e B.<br />
A TPM <strong>de</strong> E <strong>de</strong>ve ter a mesma estrutura <strong>de</strong> A e B e inicia com pesos<br />
aleatórios [Ruttor 2007]. A re<strong>de</strong> neural <strong>de</strong> E é treinada por uma das seguintes<br />
equações:<br />
• Regra <strong>de</strong> aprendizado <strong>de</strong> Hebb:<br />
• Regra <strong>de</strong> aprendizado anti-Hebb:<br />
w E i (t + 1) = w E i (t) + x i y E Θ(y A o E i )Θ(y A y B ) (10)<br />
w E i (t + 1) = w E i (t) − x i o i Θ(y A o E i )Θ(y A y B ) (11)<br />
• Regra <strong>de</strong> aprendizado Passeio Aleatório<br />
w E i (t + 1) = w E i (t) + x i Θ(y A o E i )Θ(y A y B ) (12)<br />
O ataque geométrico é similar ao ataque simples, porém a regra <strong>de</strong> aprendizado<br />
só é aplicada caso y E = y A = y B . Caso y E ≠ y A = y B , o atacante tentará<br />
corrigir sua representação interna para obter a mesma saída antes <strong>de</strong> atualizar seus<br />
pesos, trocando o valor <strong>de</strong> sua saída y E pelo valor da saída <strong>de</strong> um neurônio da<br />
camada oculta [Firmino Filho 2009].<br />
No ataque <strong>de</strong> maioria, o atacante usa m TPMs para melhorar sua capacida<strong>de</strong><br />
<strong>de</strong> predição. As m re<strong>de</strong>s não inicializadas com pesos aleatórios e quando a saída <strong>de</strong><br />
uma <strong>de</strong>terminada re<strong>de</strong> yi<br />
E for diferente <strong>de</strong> y A/B , E tenta corrigir sua representação<br />
da mesma forma que o ataque geométrico. Após a correção, o atacante E seleciona<br />
a representação interna mais comum e esta será adotada por todas as re<strong>de</strong>s na regra<br />
<strong>de</strong> aprendizagem [Firmino Filho 2009].<br />
Para aumentar a eficiência e reduzir a correlação que surge entre as TPMs<br />
<strong>de</strong> E <strong>de</strong>vido às atualizações idênticas, o atacante po<strong>de</strong> usar o ataque <strong>de</strong> maioria e o<br />
316
ataque geométrico alternadamente [Ruttor 2007]. O ataque <strong>de</strong> maioria é o com maior<br />
taxa <strong>de</strong> sucesso contra a criptografia neural, e para aumentar a segurança contra<br />
esse protocolo foi proposto por [Ruttor 2007] o uso <strong>de</strong> queries, em que um algoritmo<br />
utiliza informações internas <strong>de</strong> uma das TPM para gerar vetores <strong>de</strong> entradas com<br />
maior probabilida<strong>de</strong> <strong>de</strong> ocorrência <strong>de</strong> passos atrativos entre os parceiros.<br />
O ataque genético é baseado em um algoritmo evolucionário. No ataque<br />
genético, E começa com apenas uma TPM, mas po<strong>de</strong> usar até m re<strong>de</strong>s neurais.<br />
Quando y A = y B , o seguinte algoritmo é aplicado:<br />
m<br />
• Caso E tenha até Tree Parity Machines, ele <strong>de</strong>termina todas as 2 K−1<br />
2 K−1<br />
representações internas (o 1 , o 2 , . . . , o i ) que produzem a saída y A e os usa para<br />
atualizar os pesos <strong>de</strong> acordo com a regra <strong>de</strong> aprendizado. Assim E cria 2 K−1<br />
variantes <strong>de</strong> cada TPM nesse passo <strong>de</strong> mutação [Ruttor 2007].<br />
• Caso E já tenha mais que<br />
E isso é obtido <strong>de</strong>scartando todas as re<strong>de</strong>s que predisseram menos que U<br />
saídas y A nos últimos V passos <strong>de</strong> aprendizagem em que y A = y B no passo<br />
<strong>de</strong> seleção. Como regra adicional, E mantém ao menos 20 TPMs.<br />
m<br />
TPMs, só as mais aptas <strong>de</strong>vem ser mantidas.<br />
2 K−1<br />
Foram propostas duas melhorias ao algoritmo, sendo o uso <strong>de</strong> queries, por<br />
[Ruttor 2007], e o uso <strong>de</strong> transmissões errôneas, proposto por [Allam e Abbas 2010],<br />
em que as TPMs parceiras enviam suas saídas erroneamente com probabilida<strong>de</strong><br />
baseada na distância estimada entre os pesos <strong>de</strong> A e B e a re<strong>de</strong> parceira tenta<br />
predizer o envio <strong>de</strong>sta informação usando os mesmos cálculos.<br />
5. Conclusões<br />
O protocolo foi implementado na linguagem Python para comprovar o funcionamento<br />
da técnica <strong>de</strong> criptografia neural. Com a implementação, po<strong>de</strong>-se observar<br />
o fenômeno <strong>de</strong> sincronização <strong>de</strong> re<strong>de</strong>s neurais e validar algumas características do<br />
protocolo. Foi possível confirmar que, conforme verificado por Ruttor 2007 e Firmino<br />
Filho 2009, o tempo <strong>de</strong> sincronização das re<strong>de</strong>s neurais aumenta exponencialmente<br />
com o aumento <strong>de</strong> L.<br />
Foram utilizadas duas re<strong>de</strong>s neurais Tree Parity Machine utilizando a regra<br />
<strong>de</strong> aprendizado <strong>de</strong> Hebb e configuradas com K = 4, N = 4 e L variável para obter<br />
a média do tempo <strong>de</strong> sincronização e sua variação com L. Os resultados obtidos<br />
encontram-se na figura 4, on<strong>de</strong> po<strong>de</strong>-se observar um crescimento polinomial no<br />
número <strong>de</strong> mensagens trocadas para atingir a sincronização com o aumento <strong>de</strong> L.<br />
Mantendo o valor L = 3, N = 4 e variando o parametro K, obtemos os tempos<br />
<strong>de</strong> sincronização exibidos na figura 5, on<strong>de</strong> po<strong>de</strong>mos observar que o aumento<br />
no número <strong>de</strong> mensagens trocadas para a sincronização não aumenta consi<strong>de</strong>ravelmente<br />
com o aumento <strong>de</strong> K, porém, o tempo <strong>de</strong> processamento gasto aumenta<br />
proporcionalmente.<br />
Temos que, após cada sincronização bem sucedida entre TPMs, obtemos uma<br />
matriz <strong>de</strong> pesos <strong>de</strong> tamanho K × N, exemplificada na figura 6. É possível, <strong>de</strong>ntre<br />
outras formas, utilizar a matriz como chave criptográfica concatenando os valores e<br />
aplicando um algoritmo <strong>de</strong> hash, como o SHA-256, para gerar imediatamente uma<br />
chave <strong>de</strong> 256 bits válida para um algoritmo criptográfico simétrico, como o AES.<br />
317
Figura 4. Número <strong>de</strong> mensagens trocadas até a sincronização, com L variável.<br />
Fonte: próprio autor<br />
Figura 5. Número <strong>de</strong> mensagens trocadas e tempo <strong>de</strong> CPU até a sincronização,<br />
com K variável. Fonte: próprio autor<br />
Foram efetuados testes <strong>de</strong> sincronização via re<strong>de</strong> usando TPMs configuradas<br />
com K = 4, N = 4 e L = 3, on<strong>de</strong> foi verificado que as re<strong>de</strong>s neurais sincronizaram<br />
com sucesso, com M = 5, gerando uma matriz <strong>de</strong> pesos similar à da figura 6<br />
idênticas nas TPMs A e B.<br />
A criptografia neural é uma alternativa ao problema <strong>de</strong> troca <strong>de</strong> chaves. Consiste<br />
<strong>de</strong> um algoritmo simples e precisa <strong>de</strong> um número baixo <strong>de</strong> cálculos para gerar<br />
chaves [Kanter et al. 2002], que torna as implementações do protocolo vantajosas em<br />
situações com recursos computacionais limitados. Também não possui algumas das<br />
<strong>de</strong>svantagens encontradas em outras técnicas, como a troca <strong>de</strong> chave com antecedência,<br />
que é logísticamente inviável e não <strong>de</strong>pen<strong>de</strong> exclusivamente <strong>de</strong> uma máquina<br />
mestre com acesso a todas as informações, como na abordagem do uso <strong>de</strong> um terceiro<br />
confiável.<br />
Estudos adicionais serão feitos para comparar a performance do algoritmo <strong>de</strong><br />
criptografia neural com a encontrada no algoritmo <strong>de</strong> criptografia pública RSA para<br />
validar a velocida<strong>de</strong> do protocolo proposto. Também serão feitas análises mais <strong>de</strong>talhadas<br />
da segurança do protocolo implementado, comparando-o com a criptografia<br />
<strong>de</strong> chave pública e o protocolo Diffie-Hellman.<br />
318
Figura 6. Número <strong>de</strong> mensagens trocadas até a sincronização, com K variável.<br />
Fonte: próprio autor<br />
Referências<br />
Allam, A. M. e Abbas, H. M. (2010). On the improvement of neural cryptography<br />
using erroneous transmitted information with error prediction. Trans.<br />
Neur. Netw., 21:1915–1924.<br />
Braga, A., Carvalho, A., e Lu<strong>de</strong>rmir, T. (2007). Re<strong>de</strong>s Neurais Artificiais: Teoria e<br />
Aplicações. LTC, 2nd edition.<br />
Burnett, S. e Paine, S. (2001). The RSA Security’s Official Gui<strong>de</strong> to Cryptography.<br />
Osborne/McGraw-Hill, Berkeley, CA, USA.<br />
Firmino Filho, J. (2009). Implementação e análise <strong>de</strong> <strong>de</strong>sempenho dos protocolos<br />
<strong>de</strong> criptografia neural e diffie-hellman em sistemas rfid utilizando uma plataforma<br />
embarcada. Universida<strong>de</strong> Fe<strong>de</strong>ral do Rio Gran<strong>de</strong> do Norte, page 61.<br />
Haykin, S. (1999). Neural networks: a comprehensive foundation. Prentice Hall.<br />
Kanter, I., Kinzel, W., e Kanter, E. (2002). Secure exchange of information by<br />
synchronization of neural networks. Europhysics Letters, 57(1):11.<br />
Kinzel, W. e Kanter, I. (2002). Neural cryptography. In in Proc. of the 9th International<br />
Conference on Neural Information Processing, pages 18–22.<br />
Prabakaran, N. e P., V. (2010). A new security on neural cryptography with queries.<br />
Int. J. of Advanced Networking and Applications, pages 437–444.<br />
Russell, S. e Norvig, P. (2010). Artificial intelligence: a mo<strong>de</strong>rn approach. Prentice<br />
Hall series in artificial intelligence. Prentice Hall, 3rd edition.<br />
Ruttor, A. (2007). Neural synchronization and cryptography. arXiv, page 120.<br />
Terada, R. (2008). Segurança <strong>de</strong> Dados: Criptografia em Re<strong>de</strong> <strong>de</strong> Computador.<br />
Edgard Blucher, 2nd edition.<br />
319
Comparação entre Linguagens <strong>de</strong> Especificação <strong>de</strong> Protocolos<br />
Thiago C. Vieira 1 , Cláudia Nalon 1<br />
1 Departamento <strong>de</strong> Ciência da Computação<br />
Universida<strong>de</strong> <strong>de</strong> Brasília (<strong>UnB</strong>) – Brasília, DF – Brasil<br />
thiagotcvieira@gmail.com, nalon@unb.br<br />
Abstract. The <strong>de</strong>velopment and verification of security protocols and authentication<br />
algorithms is a challenging problem. There are several tools for specifying<br />
and verifying protocols. We compare two of those specification approaches –<br />
one is based on combinations of logics and the other is based on a specification<br />
language for distributed systems. The analyses is carried out from the specifier<br />
point of view, highlighting the mechanisms that make easier (or difficult) to<br />
accomplish the task of <strong>de</strong>signing and verifying a protocol.<br />
Resumo. O <strong>de</strong>senvolvimento e verificação <strong>de</strong> protocolos é um problema <strong>de</strong>safiador,<br />
existindo várias ferramentas para auxiliar nestas tarefas. Neste trabalho,<br />
comparamos duas <strong>de</strong>stas ferramentas formais para especificação – uma<br />
baseada em combinações <strong>de</strong> lógicas e outra baseada em uma linguagem <strong>de</strong><br />
especificação para sistemas distribuídos. A análise é feita a partir do ponto <strong>de</strong><br />
vista do especificador, procurando enfatizar as dificulda<strong>de</strong>s e facilida<strong>de</strong>s encontradas<br />
pelo projetista na utilização <strong>de</strong> tais ferramentas.<br />
1. Introdução<br />
A criação e verificação <strong>de</strong> protocolos <strong>de</strong> segurança e algoritmos <strong>de</strong> autenticação é<br />
um problema <strong>de</strong>safiador. Com o avanço e socialização da Internet, incluindo a crescente<br />
alocação <strong>de</strong> dados e até <strong>de</strong> sistemas inteiros para o ambiente web, a correção dos mecanismos<br />
<strong>de</strong> segurança é um fator crítico. Em geral, um dos problemas para a verificação<br />
sistemas complexos, como sistemas concorrentes ou protocolos, por exemplo, está na<br />
dificulda<strong>de</strong> em especificá-los <strong>de</strong> maneira suficientemente completa.<br />
Protocolos <strong>de</strong> comunicação estão inseridos em diversas áreas do conhecimento,<br />
<strong>de</strong>s<strong>de</strong> linguística às engenharias. Um protocolo <strong>de</strong> comunicação <strong>de</strong>fine o formato e<br />
a or<strong>de</strong>m que são trocadas mensagens entre dois ou mais agentes, bem como as ações<br />
que são realizadas por quem envia e quem recebe a mensagem [Kurose and Ross 2008],<br />
on<strong>de</strong> os agentes são os participantes ativos <strong>de</strong> um processo. De forma mais geral, protocolos<br />
também po<strong>de</strong>m ser <strong>de</strong>finidos como uma forma <strong>de</strong> processamento distribuído<br />
baseado em troca <strong>de</strong> mensagens. Neste trabalho, consi<strong>de</strong>raremos somente os aspectos<br />
<strong>de</strong> comunicação, conforme [Dolev and Yao 1983], ou seja, aspectos criptográficos não<br />
serão consi<strong>de</strong>rados.<br />
O objetivo <strong>de</strong>ste artigo é mostrar as dificulda<strong>de</strong>s e facilida<strong>de</strong>s para especificar<br />
um protocolo, com o necessário <strong>de</strong>talhamento, em dois enfoques específicos: através <strong>de</strong><br />
combinações <strong>de</strong> lógicas modais e através <strong>de</strong> uma linguagem <strong>de</strong> especificação <strong>de</strong> processos<br />
distribuídos. O <strong>de</strong>talhamento <strong>de</strong> um protocolo exige, por exemplo, que se possa expressar<br />
na linguagem <strong>de</strong> especificação que <strong>de</strong>terminado agente A sabe (ou conhece) a chave<br />
320
pública do agente B. É também importante, como outro exemplo, que a linguagem <strong>de</strong><br />
especificação tenha meios para expressar os procedimentos <strong>de</strong> troca <strong>de</strong> mensagens: que<br />
se A envia uma mensagem cifrada para B, esta mensagem será em algum momento (futuro)<br />
recebida por B. É este nível <strong>de</strong> <strong>de</strong>talhamento, permitido ou não pela linguagem, que<br />
<strong>de</strong>sejamos analisar neste trabalho. Como estudo <strong>de</strong> caso, foi feita a especificação do protocolo<br />
<strong>de</strong> chaves públicas Needham-Schröe<strong>de</strong>r [Needham and Schröe<strong>de</strong>r 1978], <strong>de</strong>scrito<br />
na Seção 2, utilizando duas abordagens distintas.<br />
Na primeira abordagem é utilizada lógica modal, que é uma extensão da lógica<br />
clássica com alguns novos operadores. Nas lógicas aqui utilizadas, operadores temporais<br />
apreen<strong>de</strong>m os aspectos dinâmicos das trocas <strong>de</strong> mensagens; operadores epistêmicos <strong>de</strong>notam<br />
o conhecimento dos agentes envolvidos acerca dos aspectos da comunicação. Esta<br />
primeira formalização é apresentada resumidamente na Seção 3.<br />
A outra abordagem é baseada no uso <strong>de</strong> um verificador <strong>de</strong> mo<strong>de</strong>los. Como<br />
<strong>de</strong>finido em [Merz 2001], o termo verificação <strong>de</strong> mo<strong>de</strong>los correspon<strong>de</strong> a um coleção<br />
<strong>de</strong> técnicas para análise automática <strong>de</strong> sistemas reativos, ou seja, sistemas que recebem<br />
estímulos externos e realizam ações <strong>de</strong> acordo com estes. O SPIN [Ben-Ari 2008,<br />
Holzmann 2003] é um representante <strong>de</strong>ste grupo <strong>de</strong> ferramentas, possuindo uma linguagem<br />
específica para a <strong>de</strong>scrição dos mo<strong>de</strong>los, chamada PROMELA. Apresentamos<br />
a formalização do NSP na Seção 5.<br />
Observamos que este trabalho não visa <strong>de</strong>monstrar a incorreção do NSP, fato<br />
já <strong>de</strong>monstrado anteriormente [Lowe 1996]. Tão pouco visa apresentar mais uma<br />
formalização <strong>de</strong> tal protocolo, já vastamente estudado e <strong>de</strong>scrito em diferentes linguagens<br />
[NuSMV 2011, Burrows et al. 1990, SPIN 2011, Islam et al. 2006, Dixon et al. 2007,<br />
Samia et al. 2009]. Como já mencionado, o trabalho <strong>de</strong> especificação envolve o <strong>de</strong>talhamento<br />
dos aspectos <strong>de</strong> comunicação e nossa intenção é analisar características dos<br />
dois formalismos apontados que facilitem ou dificultem as tarefas <strong>de</strong> especificação e<br />
verificação. Esta análise, baseada no estudo <strong>de</strong> caso, é apresentada na Seção 7. Na Seção 8<br />
apresentamos nossas consi<strong>de</strong>rações finais.<br />
2. Protocolo <strong>de</strong> Chaves Públicas Needham-Schröe<strong>de</strong>r<br />
O protocolo <strong>de</strong> autenticação <strong>de</strong> chave pública <strong>de</strong>scrito em<br />
[Needham and Schröe<strong>de</strong>r 1978], conhecido pela sigla NSP, tem como finalida<strong>de</strong> estabelecer<br />
autenticação entre um agente A, que inicia o protocolo, e outro agente B. O<br />
protocolo completo consiste em sete mensagens: três que correspon<strong>de</strong>m ao estabelecimento<br />
da autenticação propriamente dita e quatro relativas à consulta ao servidor <strong>de</strong><br />
chaves públicas.<br />
A Tabela 1 apresenta esquematicamente as mensagens trocadas para a<br />
autenticação dos agentes envolvidos. A primeira coluna da tabela i<strong>de</strong>ntifica a mensagem;<br />
a segunda coluna apresenta o encaminhamento da mensagem; e a terceira coluna, seu<br />
conteúdo. Por exemplo, a primeira linha diz que a Mensagem 1, cujo conteúdo são as<br />
i<strong>de</strong>ntificações dos agentes A e B, é encaminhada pelo agente A ao servidor, S. Mensagens<br />
com o subscrito chave pub(Z) <strong>de</strong>notam que o conteúdo é cifrado com a chave<br />
pública do agente Z; analogamente, o subscrito chave priv(Z) <strong>de</strong>nota que o conteúdo é<br />
cifrado com a chave privada <strong>de</strong> Z.<br />
Ainda na Tabela 1, os nonces dos agentes são representados por N in<strong>de</strong>xado pelo<br />
321
Mensagem Direção Conteúdo<br />
Mensagem 1 A ⇒ S : {A, B}<br />
Mensagem 2 S ⇒ A : {chave pub B, B} chave priv S<br />
Mensagem 3 A ⇒ B : {N A , A} chave pub B<br />
Mensagem 4 B ⇒ S : {B, A}<br />
Mensagem 5 S ⇒ B : {chave pub A, A} chave priv S<br />
Mensagem 6 B ⇒ A : {N B , N A } chave pub A<br />
Mensagem 7 A ⇒ B : {N B } chave pub B<br />
Tabela 1. Mensagens do NSP<br />
agente a que pertence. Na Mensagem 3, por exemplo, N A representa o nonce do agente<br />
A. Nonce é uma abreviação para número usado somente uma vez, da tradução do inglês.<br />
Em geral, é um número aleatório/pseudoaleatório utilizado no processo <strong>de</strong> autenticação<br />
que visa assegurar que comunicações anteriormente estabelecidas entre dois agentes não<br />
sejam retomadas por um terceiro. Assim, o nonce é mais um elemento para tentar garantir<br />
a autenticida<strong>de</strong> <strong>de</strong>ntro do protocolo, baseando-se no fato <strong>de</strong> que a construção matemática<br />
<strong>de</strong>ste elemento dificulta a ocorrência <strong>de</strong> repetições <strong>de</strong>ntro <strong>de</strong> um pequeno espaço <strong>de</strong><br />
tempo.<br />
Os <strong>de</strong>talhes referentes a cada uma das mensagens trocadas no NSP, apresentadas<br />
na Tabela 1 po<strong>de</strong>m ser vistos em [Needham and Schröe<strong>de</strong>r 1978].<br />
3. Lógica Epistêmico-Temporal<br />
A especificação lógica <strong>de</strong> <strong>de</strong>terminado sistema computacional consiste na<br />
caracterização ou <strong>de</strong>scrição, a partir <strong>de</strong> um conjunto <strong>de</strong> fórmulas, das proprieda<strong>de</strong>s iniciais<br />
e do comportamento <strong>de</strong>ste sistema. Para a especificação do NSP, neste trabalho é<br />
utilizada uma combinação específica <strong>de</strong> duas lógicas modais, chamada lógica epistêmicotemporal,<br />
<strong>de</strong>notada por KL (n) [Fagin et al. 1995].<br />
A primeira componente correspon<strong>de</strong> a S5 (n) [Chellas 1980], que fornece mecanismos<br />
para falar sobre o conhecimento dos n agentes. Além dos operadores clássicos, em<br />
S5 (n) existe um conjunto <strong>de</strong> operadores modais K i , um para cada agente i. A fórmula,<br />
K i p representa o fato <strong>de</strong> que o agente i sabe p.<br />
A segunda componente é a lógica temporal linear, conhecida como PLTL (Propositional<br />
Linear Temporal Logic) [Pnueli 1977, Gabbay et al. 1980], que permite representar<br />
os aspectos dinâmicos <strong>de</strong> um sistema. O conjunto <strong>de</strong> operadores temporais utilizados<br />
nesta lógica são ♦ (alguma vez no futuro), (sempre no futuro), ✐ (no momento<br />
seguinte do futuro), U (até que) e W (a menos que ou até que fraco).<br />
A sintase <strong>de</strong> KL (n) é dada pela seguinte gramática:<br />
ϕ :: true | false | start | p ∈ P | ¬ϕ | ϕ∧ϕ | ϕ∨ϕ | ϕ ⇒ ϕ | K i ϕ | ✐ ϕ | ♦ϕ | ϕ U ϕ | ϕ W ϕ,<br />
on<strong>de</strong> P = {p, q, r, . . . , p 1 , q 1 , l 1 , . . .} é o conjunto enumerável <strong>de</strong> símbolos proposicionais<br />
e i ∈ A = {1, . . . , n}, um conjunto finito <strong>de</strong> agentes. Para caracterizar a semântica,<br />
apresentamos as seguintes <strong>de</strong>finições:<br />
Definição 1 Uma linha do tempo t é uma sequência discreta, infinitamente longa e linear<br />
<strong>de</strong> estado, os quais são in<strong>de</strong>xados por números naturais. Definimos T Linhas como o<br />
conjunto <strong>de</strong> todas as linhas do tempo.<br />
322
Definição 2 Um ponto q é um par q = (t, u), on<strong>de</strong> t ∈ T Linhas é uma linha do tempo<br />
e u ∈ N é um índice temporal para t. Definimos P ontos como o conjunto <strong>de</strong> todos os<br />
pontos.<br />
Definição 3 Uma valoração π é uma função π : P ontos × P −→ {true, false}<br />
Dadas estas <strong>de</strong>finições, po<strong>de</strong>mos agora caracterizar formalmente a noção <strong>de</strong> mo<strong>de</strong>lo<br />
para a lógica KL (n) :<br />
Definição 4 Um mo<strong>de</strong>lo é uma estrutura M = 〈T L, K 1 , . . . , K n , π〉 on<strong>de</strong>:<br />
• T L ⊆ T Linhas é um conjunto <strong>de</strong> linhas do tempo com uma linha distinta, t 0 ;<br />
• K i ⊆ P ontos × P ontos, para todo i ∈ A, é uma relação <strong>de</strong> equivalência sobre<br />
os pontos do mo<strong>de</strong>lo; e<br />
• π é uma valoração.<br />
A satisfação <strong>de</strong> uma fórmula é <strong>de</strong>finida em relação aos pontos <strong>de</strong> um mo<strong>de</strong>lo:<br />
Definição 5 A satisfação <strong>de</strong> uma fórmula em um <strong>de</strong>terminado ponto (t, u) <strong>de</strong> um mo<strong>de</strong>lo<br />
M = 〈T L, K 1 , . . . , K n , π〉 é dada por:<br />
• 〈M, (t, u)〉 |= true;<br />
• 〈M, (t, u)〉 false;<br />
• 〈M, (t, u)〉 |= start, se, e somente se, t = t 0 e u = 0;<br />
• 〈M, (t, u)〉 |= p sse π(t, u)(p) = true, on<strong>de</strong> p ∈ P;<br />
• 〈M, (t, u)〉 |= ¬ϕ sse 〈M, (t, u)〉 ϕ;<br />
• 〈M, (t, u)〉 |= (ϕ ∧ ψ) sse 〈M, (t, u)〉 |= ϕ e 〈M, (t, u)〉 |= ψ;<br />
• 〈M, (t, u)〉 |= (ϕ ∨ ψ) sse 〈M, (t, u)〉 |= ϕ ou 〈M, (t, u)〉 |= ψ;<br />
• 〈M, (t, u)〉 |= (ϕ ⇒ ψ) sse 〈M, (t, u)〉 |= ¬ϕ ou 〈M, (t, u)〉 |= ψ;<br />
• 〈M, (t, u)〉 |= ✐ ϕ sse 〈M, (t, u + 1)〉 |= ϕ;<br />
• 〈M, (t, u)〉 |= ♦ϕ sse ∃k, k ∈ N, k ≥ u, 〈M, (t, k)〉 |= ϕ;<br />
• 〈M, (t, u)〉 |= ϕ sse ∀k, k ∈ N, se k ≥ u, então 〈M, (t, k)〉 |= ϕ;<br />
• 〈M, (t, u)〉 |= ϕ U ψ sse ∃k, k ∈ N, k ≥ u, 〈M, (t, k)〉 |= ψ e ∀j, j ∈ N, se<br />
u ≤ j < k, então 〈M, (t, j)〉 |= ϕ;<br />
• 〈M, (t, u)〉 |= ϕ W ψ sse 〈M, (t, u)〉 |= ϕ U ψ ou 〈M, (t, u)〉 |= ϕ;<br />
• 〈M, (t, u)〉 |= K i ϕ sse ∀t ′ , u ′ , tal que (t, u)K i (t ′ , u ′ ), 〈M, (t ′ , u ′ )〉 |= ϕ.<br />
4. Especificação em Lógica<br />
A especificação do NSP em KL (n) foi baseada em [Dixon et al. 2007] com algumas<br />
modificações para o tratamento da comunicação com o servidor <strong>de</strong> chaves públicas.<br />
A lógica KL (n) é proposicional, mas para simplificar a <strong>de</strong>scrição, utilizamos predicados,<br />
quantificadores e igualda<strong>de</strong>s para caracterizar proprieda<strong>de</strong>s que se refiram aos<br />
conjuntos finitos <strong>de</strong> agentes, mensagens e chaves. Como estes conjuntos são finitos, a<br />
representação na lógica puramente proposicional é garantida: a cada predicado <strong>de</strong>vidamente<br />
instanciado correspon<strong>de</strong> uma única variável proposicional. Os predicados são os<br />
<strong>de</strong>scritos na Tabela 2, on<strong>de</strong> variáveis X e Y <strong>de</strong>notam agentes; N ou M, in<strong>de</strong>xadas ou<br />
não, <strong>de</strong>notam nonces e mensagens, respectivamente; K <strong>de</strong>nota uma chave; e V <strong>de</strong>nota<br />
um valor qualquer.<br />
A especificação consiste em quatro conjuntos <strong>de</strong> axiomas que <strong>de</strong>screvem as<br />
condições gerais acerca dos conteúdos das mensagens e chaves (Axiomas Globais); o<br />
323
1. send(X, M, K): o agente X envia a mensagem M cifrada com a chave K;<br />
2. recv(X, M, K): o agente X recebe a mensagem M cifrada com a chave K;<br />
3. Msg(M): M é uma mensagem;<br />
4. chave priv(X)echave pub(X):<br />
5. val chave pub(X, V ): o valor da chave pública X é V ;<br />
6. val nonce(N X , V ): o valor do nonce N X é V ;<br />
7. contem(M 1 , M 2 ): a mensagem M 2 está contida em M 1 .<br />
Tabela 2. Tabela <strong>de</strong> predicados<br />
conhecimento dos agentes (Axiomas <strong>de</strong> Conhecimento); a comunicação entre os agentes<br />
e a maneira que o conhecimento é modificado com o tempo (Axiomas <strong>de</strong> Comunicação);<br />
e as condições iniciais do conteúdo das mensagens, chaves e nomes para uma situação específica<br />
(Axiomas <strong>de</strong> Caso). Todos os axiomas apresentados estão no escopo do operador<br />
, uma vez que caracterizam condições que <strong>de</strong>vem ser mantidas durante todo o protocolo.<br />
Nos trechos <strong>de</strong> especificação aqui apresentados, omitiremos o operador temporal.<br />
Como o interesse <strong>de</strong>ste trabalho está centrado na comparação entre abordagens,<br />
apresentaremos apenas alguns dos axiomas globais e <strong>de</strong> conhecimento. O conjunto completo<br />
<strong>de</strong> axiomas po<strong>de</strong> ser visto em [Vieira 2011]. Três dos cinco axiomas globais são<br />
apresentados na Tabela 3. Estes axiomas caracterizam as condições do protocolo relativas<br />
aos conteúdos das mensagens e chaves. Na Tabela 4 apresentamos três dos seis axiomas<br />
relacionados ao conhecimento básico dos agentes envolvidos no protocolo. Estes serão<br />
os axiomas que utilizaremos na análise apresentada à Seção 7.<br />
1. ∀X, Chave, M 1<br />
(send(X, M 1 , Chave) ⇒ ¬contem(M 1 , val chave priv(X)))<br />
Nenhum agente irá revelar sua chave privada a outros agentes<br />
2. ∀X, Y, V<br />
((val chave pub(X, V ) ∧ val chave pub(Y, V )) ⇒ X = Y )<br />
Nenhum par <strong>de</strong> agentes possui chaves públicas idênticas<br />
3. ∀X, Chave, M 2<br />
(send(X, M 2 , Chave) ∧ ∃Y (contem(M 2 , N Y ) ⇒ (Chave = chave pub Y )))<br />
Mensagens contendo nonces, estão cifradas pela chave pública do <strong>de</strong>stinatário<br />
Tabela 3. Axiomas globais<br />
1. start ⇒<br />
∀X(¬K X val chave pub(A, a) ∧ ¬K X val chave pub(B, b) ∧ ¬K X val chave pub(C, c))<br />
Nenhum agente sabe as chaves públicas dos outros agentes no início do protocolo<br />
2. ∀X, N, V (K X val nonce(N, V ) ⇒ ❣ K X val nonce(N, V ))<br />
Os agentes não esquecem os nonces que já conhecem<br />
3. ∀XK X val chave priv(S, s)<br />
Todos os agentes sabem as chave privada do servidor S<br />
Tabela 4. Axiomas <strong>de</strong> conhecimento<br />
5. SPIN e PROMELA<br />
O SPIN é um verificador <strong>de</strong> processos assíncronos que explora, usando força<br />
bruta, todos os possíveis estados que <strong>de</strong>screvem um sistema. PROMELA é a linguagem<br />
para especificação <strong>de</strong> sistemas concorrentes utilizada pelo SPIN [Holzmann 2003].<br />
324
Dado um sistema especificado em PROMELA, o SPIN gera o código <strong>de</strong> um verificador.<br />
O verificador consiste basicamente <strong>de</strong> um autômato <strong>de</strong> Büchi, construído a<br />
partir da especificação, e procedimentos para verificação <strong>de</strong> proprieda<strong>de</strong>s fornecidas em<br />
PLTL. Estas proprieda<strong>de</strong>s são também transformadas em autômatos. A intersecção dos<br />
autômatos da especificação e das proprieda<strong>de</strong>s <strong>de</strong>termina a satisfação (ou não) <strong>de</strong>stas proprieda<strong>de</strong>s<br />
pelo sistema <strong>de</strong>scrito.<br />
A partir da verificação po<strong>de</strong>mos obter três tipos <strong>de</strong> resultados: a proprieda<strong>de</strong> po<strong>de</strong><br />
ser satisfeita no mo<strong>de</strong>lo; violada e, sendo assim, o SPIN irá fornecer o contraexemplo<br />
como prova <strong>de</strong>ssa violação; ou po<strong>de</strong> não haver memória suficiente para a verificação<br />
completa do mo<strong>de</strong>lo.<br />
6. Especificação com SPIN<br />
A especificação completa consiste em quatro processos principais: Alice, Bob,<br />
Eve e init [Vieira 2011]. O processo init é responsável pela inicialização dos outros<br />
processos. Aqui iremos <strong>de</strong>screver as estruturas utilizadas e mostrar dois trechos da<br />
especificação: do processo Alice (Figura 1) e do processo Bob (Figura 2).<br />
As variáveis usadas na especificação consistem em um conjunto <strong>de</strong> constantes<br />
simbólicas do tipo mtype que i<strong>de</strong>ntificam as mensagens do protocolo, chaves públicas<br />
dos agentes, i<strong>de</strong>ntificação dos agentes e os nonces. A estrutura Pkt, que correspon<strong>de</strong> ao<br />
conteúdo da mensagem cifrada, é composta por três constantes (key, content1 e content2).<br />
Na Figura 1 apresentamos o início da <strong>de</strong>scrição do processo Alice (no label MEN-<br />
SAGEM1) que escolhe, não-<strong>de</strong>terministicamente com quem irá se autenticar (linhas 3 e<br />
4). Em seguida, o processo envia pelo canal network1, que liga os agentes ao servidor <strong>de</strong><br />
chaves públicas, a sua i<strong>de</strong>ntificação e a <strong>de</strong> quem está solicitando a chave pública. Na linha<br />
7, o processo aguarda a resposta do servidor com o i<strong>de</strong>ntificador msg2, sua i<strong>de</strong>ntificação<br />
e os dados contendo a chave pública requisitada.<br />
A Figura 2 mostra um trecho do processo Bob. Inicialmente, o processo aguarda<br />
o recebimento da mensagem 3 do protocolo (linha 1). Uma vez que as variáveis msg3<br />
e agentB sejam instanciadas, o dados da variável data são extraídos (linhas 2 e 3). O<br />
operador -> é uma guarda, ou seja, os comandos apresentados à direita só serão executados<br />
caso o comando (ou expressão) à esquerda seja executável (satisfeita). Na linha<br />
4, o agente Bob requisita a chave pública <strong>de</strong> quem o enviou a mensagem e aguarda pela<br />
resposta (linha 5). Em seguida, se receber uma resposta do servidor, o protocolo é continuado<br />
passando à execução do código da MENSAGEM6; caso contrário, o processo passa<br />
a um estado inválido.<br />
1 MENSAGEM1:<br />
2 if<br />
3 :: partnerA = agentB; network1 ! agentA,agentB;<br />
4 :: partnerA = agentI; network1 ! agentA,agentI;<br />
5 fi;<br />
6<br />
7 network ? (msg2,agentA,data);<br />
Figura 1. Trecho do Processo Alice<br />
325
1 network ? (msg3, agentB, data) -><br />
2 partnerB = data.content1;<br />
3 pnonce = data.content2;<br />
4 network1 ! agentB,partnerB;<br />
5 network ? (msg5,agentB,data);<br />
6 if<br />
7 :: (data.key == keyS) -> pkey = data.content1;<br />
8 goto MENSAGEM6;<br />
9 :: else -> goto FAIL;<br />
10 fi;<br />
Figura 2. Trecho do Processo Bob<br />
7. Comparação das especificações<br />
Nesta seção será discutida a relação entre alguns trechos das duas especificações.<br />
O Axioma Global 2 da Tabela 3 <strong>de</strong>termina que “nenhum par <strong>de</strong> agentes possui chaves<br />
públicas idênticas”. Seu equivalente na especificação em PROMELA é dado pelas diferente<br />
<strong>de</strong>finições <strong>de</strong> chave no escopo do processo servidor, on<strong>de</strong> cada processo possui uma<br />
variável Keyi, on<strong>de</strong> i i<strong>de</strong>ntifica o processo (S, A, B ou I).<br />
O Axioma <strong>de</strong> Conhecimento 1 da Tabela 4 caracteriza a proprieda<strong>de</strong> <strong>de</strong> que “nenhum<br />
agente sabe as chaves públicas dos outros agentes no início do protocolo”. O código<br />
correspon<strong>de</strong>nte em PROMELA utiliza uma variável local mtype pkey, inicializada com<br />
o valor zero. O mesmo acontece para o Axioma <strong>de</strong> Conhecimento 2: no código em<br />
PROMELA é criada uma variável mtype pnonce para armazenar o valor do nonce durante<br />
toda execução.<br />
Ainda na Tabela 4, o Axioma <strong>de</strong> Conhecimento 3 especifica a proprieda<strong>de</strong> <strong>de</strong> que<br />
“todos os agentes sabem as chave privada do servidor S”. Em PROMELA, esta condição<br />
é assegurada com a utilização <strong>de</strong> uma variável global.<br />
Um dos Axiomas <strong>de</strong> Comunicação, que faz parte da formalização completa do<br />
protocolo, mas que não foi apresentado anteriormente, <strong>de</strong>termina que “se um agente receber<br />
uma mensagem, então existe um agente que em algum momento anterior a enviou”.<br />
A especificação <strong>de</strong>ste axioma é mostrada na Tabela 5, on<strong>de</strong> o operador modal significa<br />
“em algum momento do passado”.<br />
∀X, Chave, M 1 [recv(X, M 1 , Chave) ⇒ ∃Y send(Y, M 1 , Chave)]<br />
Tabela 5. Axioma <strong>de</strong> conhecimento<br />
Os comandos <strong>de</strong> envio e recebimento <strong>de</strong> mensagens via canais em PROMELA<br />
codificam esta proprieda<strong>de</strong>, já que uma mensagem só será recebida caso algum outro<br />
processo a tenha enviado; caso contrário o processo que aguarda o recebimento fica bloqueado<br />
naquele ponto da sua execução.<br />
Proprieda<strong>de</strong>s que especifiquem o conhecimento dos agentes durante cada etapa do<br />
processo po<strong>de</strong>m ser caracterizados somente usando a abordagem lógica. Por exemplo, a<br />
terceira e quarta mensagens do protocolo, dadas na Tabela 1, são:<br />
Mensagem 3: A ⇒ B : {N A , A} chave pub B<br />
Mensagem 4: B ⇒ S : {B, A}<br />
326
A partir <strong>de</strong>stas mensagens é possível inferir que “o agente B sabe que o agente A<br />
sabe sua chave pública”, ou seja, os agentes são capazes <strong>de</strong> raciocionar sobre o conhecimento<br />
dos outros agentes.<br />
8. Consi<strong>de</strong>rações Finais<br />
A principal vantagem existente na especificação do NSP a partir da abordagem<br />
lógica é o fato da linguagem possuir operadores que caracterizam explicitamente a noção<br />
<strong>de</strong> conhecimento e tempo, o que po<strong>de</strong> ser usado para tratar o raciocínio dos agentes.<br />
Dessa forma, fica mais fácil observar como o conhecimento é adquirido com o <strong>de</strong>correr<br />
das trocas <strong>de</strong> mensagens, além <strong>de</strong> permitir seu processo <strong>de</strong> verificação.<br />
A especificação em PROMELA tem como fator favorável a legibilida<strong>de</strong> e um nível<br />
<strong>de</strong> abstração mais alto <strong>de</strong>vido às proprieda<strong>de</strong>s da linguagem, como não-<strong>de</strong>terminismo<br />
e canais síncronos para troca <strong>de</strong> mensagens. Muitas proprieda<strong>de</strong>s, que necessitam ser<br />
especificadas como axiomas na linguagem lógica, são satisfeitas pelo mo<strong>de</strong>lo gerado a<br />
partir da especificação em PROMELA <strong>de</strong>vido à forma em que o algoritmo é implementado<br />
ou pelas características da linguagem. Apesar <strong>de</strong> ser mais natural e legível, esta não<br />
possui mecanismos para <strong>de</strong>screver o conhecimento dos processos e consequentemente a<br />
verificação <strong>de</strong>ste tipo <strong>de</strong> proprieda<strong>de</strong>.<br />
Apesar das duas abordagens serem a<strong>de</strong>quadas, ainda não há uma metodologia<br />
padrão para especificação e verificação <strong>de</strong> protocolos <strong>de</strong> comunicação. Seja qual for a<br />
ferramenta utilizada, a principal dificulda<strong>de</strong> é saber i<strong>de</strong>ntificar as peculiarida<strong>de</strong>s <strong>de</strong> cada<br />
sistema/protocolo para po<strong>de</strong>r escolher a melhor abordagem.<br />
Com os estudos realizados e o conhecimento adquirido com as duas metodologias,<br />
futuros trabalhos incluem a criação <strong>de</strong> um extensão epistêmica para o PROMELA<br />
fundamentada em programas baseados em conhecimento [Fagin et al. 1995] a partir da<br />
automatização da tradução da lógica epistêmica para a temporal ou proposicional, tornando<br />
explícito, na especificação, o conhecimento dos processos.<br />
Referências<br />
Ben-Ari, M. (2008). Principles of the SPIN Mo<strong>de</strong>l Checker. Springer.<br />
Burrows, M., Abadi, M., and Needham, R. (1990). A logic of authentication. ACM<br />
TRANSACTIONS ON COMPUTER SYSTEMS, 8:18–36.<br />
Chellas, B. F. (1980). Modal Logic: an introduction. Cambridge University Press.<br />
Dixon, C., Fernán<strong>de</strong>z-Gago, M.-C., Fisher, M., and van <strong>de</strong>r Hoek, W. (2007). Temporal<br />
logics of knowledge and their applications in security. Eletronic Notes in Theoretical<br />
Computer Science, 182:27–42.<br />
Dolev, D. and Yao, A. C. (1983). On the security of public key protocols. IEEE Transactions<br />
on Information Theory, 29(12):198–208.<br />
Fagin, R., Halpern, J. Y., Moses, Y., and Vardi, M. Y. (1995). Reasoning about Knowledge.<br />
MIT Press.<br />
Gabbay, D., Pnueli, A., Shelah, S., and Stavi, J. (1980). On the temporal analysis of<br />
fairness. In POPL ’80: Proceedings of the 7th ACM SIGPLAN-SIGACT Symposium on<br />
Principles of Programming Languages, pages 163–173, New York, NY, USA. ACM.<br />
327
Holzmann, G. (2003). The Spin mo<strong>de</strong>l checker: primer and reference manual. Addison-<br />
Wesley Professional.<br />
Islam, S. M. S., Sqalli, M. H., and Khan, S. (2006). Mo<strong>de</strong>ling and formal verification of<br />
DHCP using SPIN. IJCSA, 3(2):145–159.<br />
Kurose, J. F. and Ross, K. W. (2008). Computer Networking: A Top-Down Approach,<br />
chapter 1.1.3 What Is a Protocol. Addison-Wesley, fourth edition.<br />
Lowe, G. (1996). Breaking and fixing the Needham-Schröe<strong>de</strong>r public-key protocol using<br />
fdr. In TACAS, pages 147–166.<br />
Merz, S. (2001). Mo<strong>de</strong>l checking: A tutorial overview. In et al., F. C., editor, Mo<strong>de</strong>ling<br />
and Verification of Parallel Processes, volume 2067 of Lecture Notes in Computer<br />
Science, pages 3–38. Springer-Verlag, Berlin.<br />
Needham, R. M. and Schröe<strong>de</strong>r, M. D. (1978). Using encryption for authentication in<br />
large networks of computers. Commun. ACM, 21(12):993–999.<br />
NuSMV (2011). Nusmv: a new symbolic mo<strong>de</strong>l checker. http://nusmv.fbk.eu/.<br />
último acesso em maio <strong>de</strong> 2011.<br />
Pnueli, A. (1977). The temporal logic of programs. In 18th IEEE Symposium Foundations<br />
of Computer Science, pages 46–57, Provi<strong>de</strong>nce.<br />
Samia, M., Wiegard, H., Bendisposto, J., and Leuschel, M. (2009). High-Level versus<br />
Low-Level Specifications: Comparing B with Promela and ProB with Spin. In Attiogbe<br />
and Mery, editors, Proceedings TFM-B 2009. APCB.<br />
SPIN (2011). On-the-fly, ltl mo<strong>de</strong>l checking with spin. http://spinroot.com/<br />
spin/whatispin.html. último acesso em maio <strong>de</strong> 2011.<br />
Vieira, T. C. (2011). Especificação <strong>de</strong> proprieda<strong>de</strong>s temporais do protocolo <strong>de</strong> chavespúblicas<br />
needham-schröe<strong>de</strong>r. Trabalho <strong>de</strong> Conclusão <strong>de</strong> Curso.<br />
328
Uma Avaliação <strong>de</strong> Segurança no Gerenciamento <strong>de</strong><br />
Mobilida<strong>de</strong> nas Re<strong>de</strong>s em Malha sem Fio<br />
Larissa Barabasz, Michele Nogueira<br />
1 Núcleo <strong>de</strong> Re<strong>de</strong>s sem Fio e Re<strong>de</strong>s Avançadas (NR2)<br />
Departamento <strong>de</strong> Informática - Universida<strong>de</strong> Fe<strong>de</strong>ral do Paraná (UFPR)<br />
Caixa Postal 19.081 – 81.531-980 – Curitiba – PR – Brasil<br />
{ltb08,michele}@inf.ufpr.br<br />
Abstract. In wireless mesh networks, the support to mobility is one of their<br />
main advantages. Thus, it is necessary an efficient and secure mobility management.<br />
However, existing mobility management protocols are proposed without<br />
handling security vulnerabilities in mobility.This paper evaluates how security<br />
vulnerabilities can compromise the availability of mobility in wireless mesh<br />
networks. Hence, it presents an evaluation of the PGMID mobility protocol<br />
un<strong>de</strong>r attacks against mesh routers and the ARP protocol. These attacks aim<br />
at affecting the network mobility. Through this study, we aim to show how the<br />
absence of security mechanisms, that ensure availability and network access,<br />
influences negatively on network behavior.<br />
Resumo. Nas re<strong>de</strong>s em malha sem fio, o suporte à mobilida<strong>de</strong> é uma das suas<br />
principais vantagens. Assim, é primordial que o gerenciamento <strong>de</strong> mobilida<strong>de</strong><br />
seja eficiente e seguro. Entretanto, protocolos <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong><br />
existentes <strong>de</strong>sconsi<strong>de</strong>ram as vulnerabilida<strong>de</strong>s <strong>de</strong> segurança na mobilida<strong>de</strong>.Este<br />
artigo avalia como a mobilida<strong>de</strong> <strong>de</strong> uma re<strong>de</strong> em malha po<strong>de</strong> ser comprometida<br />
caso a segurança não seja consi<strong>de</strong>rada. Para isso, é apresentada a avaliação<br />
por meio <strong>de</strong> simulações do protocolo <strong>de</strong> mobilida<strong>de</strong> PGMID frente a ataques<br />
contra roteadores mesh e contra o protocolo ARP, que tenham por objetivo prejudicar<br />
a mobilida<strong>de</strong> na re<strong>de</strong>. Através do estudo, buscamos mostrar o quanto<br />
a ausência <strong>de</strong> mecanismos <strong>de</strong> segurança que garantam a disponibilida<strong>de</strong> e o<br />
acesso à re<strong>de</strong> influem negativamente no seu funcionamento.<br />
1. Introdução<br />
As re<strong>de</strong>s em malha sem fio, também conhecidas como re<strong>de</strong>s mesh (WMN - Wireless<br />
Mesh Networks), são uma das alternativas mais promissoras para a comunicação <strong>de</strong> dados<br />
sem fio. Essas re<strong>de</strong>s são compostas por roteadores e clientes mesh (nós), apoiadas<br />
por uma comunicação multissalto <strong>de</strong> topologias dinâmicas e com suporte à mobilida<strong>de</strong><br />
[Akyildiz et al. 2005]. O backbone <strong>de</strong>ssas re<strong>de</strong>s é formado por roteadores mesh, sendo<br />
a comunicação entre estes nós realizada unicamente via interface sem fio. Estes nós são<br />
constituídos <strong>de</strong> interfaces <strong>de</strong> diferentes tecnologias <strong>de</strong> comunicação e dotados <strong>de</strong> mobilida<strong>de</strong><br />
mínima, aten<strong>de</strong>ndo às requisições dos usuários (os clientes mesh). Alguns <strong>de</strong>stes roteadores<br />
possuem funcionalida<strong>de</strong>s <strong>de</strong> gateways e pontes, permitindo assim a interligação<br />
com outras re<strong>de</strong>s, tais como as re<strong>de</strong>s locais sem fio (WLAN) e a Internet.<br />
Ao contrário das re<strong>de</strong>s locais sem fio, a expansão <strong>de</strong> uma re<strong>de</strong> em malha não é<br />
um problema; a adição <strong>de</strong> nós ao backbone promove o aumento <strong>de</strong> pontos <strong>de</strong> acesso à<br />
329
e<strong>de</strong> e a capacida<strong>de</strong> <strong>de</strong> roteamento da mesma [Akyildiz et al. 2005]. Essa capacida<strong>de</strong> <strong>de</strong><br />
suportar o crescimento da re<strong>de</strong> é <strong>de</strong>nominada escalabida<strong>de</strong>. Além disso, essas re<strong>de</strong>s são<br />
autoconfiguráveis, ou seja, são capazes <strong>de</strong> se adaptar às alterações em sua topologia. A<br />
autoconfiguração faz com que essas re<strong>de</strong>s sejam resilientes e tolerantes a falhas. Essas<br />
vantagens, aliadas às características inerentes das re<strong>de</strong>s em malha, as tornam uma interessante<br />
solução para a comunicação <strong>de</strong> dados sem fio, suportando o uso crescente dos mais<br />
diversos dispositivos móveis, a convergência tecnológica e a mobilida<strong>de</strong>.<br />
Com o avanço das tecnologias sem fio e o fácil acesso a dispositivos portáteis,<br />
os usuários têm se tornado cada vez mais móveis, fazendo com que a mobilida<strong>de</strong> exerça<br />
gran<strong>de</strong> importância no meio sem fio. Para que a mobilida<strong>de</strong> seja possível, são necessários<br />
mecanismos <strong>de</strong> suporte à mobilida<strong>de</strong>, garantindo a disponibilida<strong>de</strong> dos serviços aos<br />
usuários que requerem acesso à Internet a partir <strong>de</strong> seus respectivos dispositivos móveis <strong>de</strong><br />
forma contínua sem restringir sua movimentação. O <strong>de</strong>safio em questão é garantir a transparência,<br />
ou seja, que todo o processo <strong>de</strong> mobilida<strong>de</strong> não seja perceptível às aplicações<br />
e, consequentemente, aos usuários. Para tal, se faz necessária a existência <strong>de</strong> um gerenciamento<br />
<strong>de</strong> mobilida<strong>de</strong> efetivo. Este, por sua vez, é constituído pelo gerenciamento <strong>de</strong><br />
localização e pelo gerenciamento <strong>de</strong> handoffs [Akyildiz et al. 1999].<br />
Nas re<strong>de</strong>s em malha sem fio, a segurança é um campo ainda pouco explorado,<br />
mas não menos importante. De forma geral, a privacida<strong>de</strong>, a disponibilida<strong>de</strong>, a justiça,<br />
o não-repúdio e o controle <strong>de</strong> acesso são requisitos <strong>de</strong> segurança que dizem respeito às<br />
re<strong>de</strong>s em malha [Egners and Meyer 2010]. Estes estão estritamente associados ao cenário<br />
<strong>de</strong> utilização e às características <strong>de</strong>ssas re<strong>de</strong>s, tais como o dinamismo e a heterogeneida<strong>de</strong><br />
<strong>de</strong> seus componentes. O dinamismo, ou seja, a mobilida<strong>de</strong> dos nós na re<strong>de</strong>, é suscetível a<br />
ameaças <strong>de</strong> segurança que visam comprometer a disponibilida<strong>de</strong>, prejudicando o ingresso<br />
e a manutenção <strong>de</strong> clientes mesh na re<strong>de</strong>. A disponibilida<strong>de</strong> po<strong>de</strong> ser afetada por ações<br />
que objetivem sobrecarregar a re<strong>de</strong> ou indisponibilizar as ativida<strong>de</strong>s dos roteadores mesh.<br />
Como as soluções <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong> existentes para as re<strong>de</strong>s locais<br />
sem fio não aten<strong>de</strong>m por completo aos requisitos das re<strong>de</strong>s em malha, se faz necessário o<br />
projeto <strong>de</strong> soluções específicas que consi<strong>de</strong>rem as diferenças entre estas re<strong>de</strong>s. O objetivo<br />
<strong>de</strong>ste artigo, por sua vez, é a avaliação e a análise <strong>de</strong> uma das soluções <strong>de</strong> gerenciamento<br />
<strong>de</strong> mobilida<strong>de</strong> sob a perspectiva <strong>de</strong> segurança, a fim <strong>de</strong> i<strong>de</strong>ntificar os pontos vulneráveis<br />
na mobilida<strong>de</strong>. O objeto <strong>de</strong> estudo foi apresentado em [Boukerche and Zhang 2008] e<br />
consiste <strong>de</strong> um protocolo <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong> intra-domínio baseado em roteamento<br />
híbrido. Uma das vantagens <strong>de</strong>sse protocolo é promover a integração entre as camadas<br />
<strong>de</strong> re<strong>de</strong> e <strong>de</strong> enlace para o encaminhamento <strong>de</strong> pacotes, sendo relevante para nossa<br />
análise por aten<strong>de</strong>r aos requisitos <strong>de</strong> mobilida<strong>de</strong> <strong>de</strong> forma eficiente. O protocolo possui<br />
ainda características importantes para o gerenciamento <strong>de</strong> mobilida<strong>de</strong> como a ausência <strong>de</strong><br />
atualização <strong>de</strong> localização e <strong>de</strong> re-roteamento, garantindo assim handoffs transparentes.<br />
O artigo está organizado da seguinte forma. A Seção 2 apresenta os trabalhos relacionados<br />
ao gerenciamento <strong>de</strong> mobilida<strong>de</strong> e às arquiteturas <strong>de</strong> segurança nas re<strong>de</strong>s em<br />
malha sem fio. A seção 3 <strong>de</strong>talha o funcionamento do protocolo avaliado. A Seção 4<br />
<strong>de</strong>screve as vulnerabilida<strong>de</strong>s <strong>de</strong> segurança em re<strong>de</strong>s em malha. A seção 5 <strong>de</strong>screve o ambiente<br />
<strong>de</strong> avaliação e os resultados da avaliação <strong>de</strong>ste protocolo diante dos ataques sobre<br />
os roteadores mesh e sobre o protocolo ARP (Address Resolution Protocol). Finalmente,<br />
a Seção 6 apresenta as conclusões e as direções para trabalhos futuros.<br />
330
2. Trabalhos Relacionados<br />
O gerenciamento <strong>de</strong> en<strong>de</strong>reços, uma das questões <strong>de</strong> projeto do gerenciamento <strong>de</strong><br />
localização, tem por finalida<strong>de</strong> permitir a i<strong>de</strong>ntificação <strong>de</strong> um nó móvel na re<strong>de</strong> durante<br />
a sua movimentação. Nas re<strong>de</strong>s em malha sem fio, essa i<strong>de</strong>ntificação <strong>de</strong>ve ocorrer tanto<br />
interna quanto externamente, ou seja, no backbone mesh e no domínio da Internet. A<br />
inalteração do en<strong>de</strong>reço IP <strong>de</strong> um cliente mesh, permite que, após a ocorrência <strong>de</strong> handoffs,<br />
as comunicações UDP e TCP <strong>de</strong>ste nó sejam mantidas. Os protocolos como Mobile<br />
IP e iMesh [Xie and Wang 2008], por sua vez, são soluções que permitem ao cliente a<br />
manutenção do seu en<strong>de</strong>reço IP sem restrições <strong>de</strong> mobilida<strong>de</strong>.<br />
A mobilida<strong>de</strong> e o roteamento são tratados in<strong>de</strong>pen<strong>de</strong>ntemente nos mecanismos <strong>de</strong><br />
gerenciamento <strong>de</strong> mobilida<strong>de</strong> [Xie and Wang 2008]. Essa abordagem clássica po<strong>de</strong> levar<br />
a tarefas <strong>de</strong> processamento <strong>de</strong>snecessárias e a redundâncias <strong>de</strong> funções. Essas questões<br />
po<strong>de</strong>riam ser evitadas caso a mobilida<strong>de</strong> e o roteamento se complementassem, ou seja,<br />
caso existisse uma abordagem conjunta entre ambos. Uma abordagem nesta direção foi<br />
<strong>de</strong>senvolvida no protocolo Mobile Party [Mehdi et al. 2007], cuja solução faz uso <strong>de</strong> uma<br />
estrutura <strong>de</strong> árvore <strong>de</strong> en<strong>de</strong>reços para lidar com a mobilida<strong>de</strong> e o roteamento.<br />
Soluções <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong> que tratam <strong>de</strong> questões <strong>de</strong> segurança<br />
não são conhecidas. Em geral, para suprir as necessida<strong>de</strong>s <strong>de</strong> segurança em protocolos<br />
<strong>de</strong> gerência <strong>de</strong> mobilida<strong>de</strong>, uma arquitetura <strong>de</strong> segurança <strong>de</strong>ve ser adotada. Entretanto,<br />
as arquiteturas <strong>de</strong> segurança propostas não são direcionadas particularmente<br />
a protocolos <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong>. Assim sendo, essas soluções <strong>de</strong>sconsi<strong>de</strong>ram<br />
as especificida<strong>de</strong>s dos protocolos com os quais estão trabalhando. MobiSEC<br />
[Martignon et al. 2008] é uma <strong>de</strong>ntre as arquiteturas <strong>de</strong> segurança propostas. Essa arquitetura<br />
provê um arcabouço completo para lidar com as questões <strong>de</strong> segurança relativas ao<br />
backbone e ao acesso à re<strong>de</strong>s em malha. Esta arquitetura, por sua vez, se enquadra como<br />
uma solução <strong>de</strong> segurança genérica.<br />
A questão mobilida<strong>de</strong> versus segurança nos protocolos <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong><br />
ainda tem muito a ser explorada. Neste artigo, a avaliação da segurança em um<br />
protocolo <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong> busca fornecer um panorama geral <strong>de</strong> como a<br />
ausência <strong>de</strong> mecanismos <strong>de</strong> segurança po<strong>de</strong> ainda influenciar na mobilida<strong>de</strong> da re<strong>de</strong>.<br />
3. Protocolo <strong>de</strong> Gerenciamento <strong>de</strong> Mobilida<strong>de</strong><br />
Nesta seção, é <strong>de</strong>scrito o funcionamento do protocolo <strong>de</strong> gerenciamento <strong>de</strong> mobilida<strong>de</strong> em<br />
estudo, o qual será referenciado por PGMID (Protocolo <strong>de</strong> Gerenciamento <strong>de</strong> Mobilida<strong>de</strong><br />
Intra-Domínio) [Boukerche and Zhang 2008]. A solução proposta por este protocolo é<br />
<strong>de</strong>stinada a aten<strong>de</strong>r os requisitos que garantam a intra-mobilida<strong>de</strong> nas re<strong>de</strong>s em malha sem<br />
fio infraestruturadas, provendo handoffs transparentes para aplicações em tempo real, tais<br />
como aplicações <strong>de</strong> voz e ví<strong>de</strong>o. Aos clientes mesh é permitido o acesso à re<strong>de</strong> através da<br />
associação com os roteadores mesh, processo que será <strong>de</strong>scrito mais adiante nesta seção.<br />
3.1. Associação <strong>de</strong> um Cliente à Re<strong>de</strong><br />
A Figura 1 ilustra o processo <strong>de</strong> chegada <strong>de</strong> um cliente à re<strong>de</strong> e o processo envolvido na<br />
comunicação entre clientes mesh no mesmo domínio. Para exemplificação, nosso cenário<br />
é composto por apenas quatro roteadores mesh (nós escuros) e um par <strong>de</strong> clientes mesh<br />
(nós claros). Na chegada <strong>de</strong> um cliente mesh (nó A) à re<strong>de</strong>, ilustrado na Figura 1(a), este<br />
331
<strong>de</strong>ve primeiramente escolher um roteador para associação, o qual irá lhe proporcionar o<br />
acesso <strong>de</strong>sejado à re<strong>de</strong>. Com o intuito <strong>de</strong> auxiliar a escolha <strong>de</strong>ste roteador, mensagens<br />
<strong>de</strong> sondagem são geradas pelo cliente A. Essas mensagens são transmitidas em broadcast<br />
procurando obter respostas por parte dos roteadores para a avaliação <strong>de</strong> seus enlaces. Na<br />
Figura 1(b), respostas (representadas pelas flechas) são geradas pelos dois roteadores cujo<br />
raio <strong>de</strong> alcance cobre o cliente A. Suponha que o roteador A’ é o que apresenta o enlace<br />
<strong>de</strong> melhor qualida<strong>de</strong>, ou seja, o enlace com menor atraso <strong>de</strong> resposta. Assim, o cliente<br />
toma-o como possível roteador para associação.<br />
(a) (b) (c)<br />
Figura 1. Processo <strong>de</strong> associação <strong>de</strong> um cliente mesh à re<strong>de</strong><br />
O processo <strong>de</strong> associação entre um cliente e um roteador é ilustrado na Figura<br />
1(b). Este processo é concretizado através da troca <strong>de</strong> duas mensagens, uma requisição<br />
<strong>de</strong> associação ao roteador mesh escolhido (flecha escura), e sua respectiva resposta (flecha<br />
clara). Ao receber a requisição proveniente do nó A, o roteador A’ armazena duas<br />
informações referentes a este cliente em uma tabela: o en<strong>de</strong>reço IP (obtido através do<br />
servidor DHCP) e o en<strong>de</strong>reço MAC. Enquanto este roteador for o ponto <strong>de</strong> acesso do cliente<br />
à re<strong>de</strong>, esta entrada será mantida na tabela. O en<strong>de</strong>reço IP obtido, juntamente com os<br />
en<strong>de</strong>reços MAC do gateway e do próprio roteador A’, constituem a mensagem <strong>de</strong> resposta<br />
ao cliente, possibilitando, finalmente, seu acesso à re<strong>de</strong>.<br />
3.2. Comunicação Intra-Domínio entre Clientes<br />
Assumindo que o cliente B está <strong>de</strong>vidamente conectado à re<strong>de</strong> através do processo <strong>de</strong><br />
associação <strong>de</strong>scrito na seção 3.1, a Figura 1(c) ilustra o início do processo <strong>de</strong> comunicação<br />
<strong>de</strong> A para B, on<strong>de</strong> A’ e B’ atuam, respectivamente, como pontos <strong>de</strong> acesso <strong>de</strong>sses nós à<br />
re<strong>de</strong>. Em um primeiro momento, o cliente A <strong>de</strong>sconhece o en<strong>de</strong>reço físico do cliente B. A<br />
fim <strong>de</strong> obter este en<strong>de</strong>reço, requisições ARP são enviadas aos roteadores por toda a re<strong>de</strong>,<br />
como mostra a Figura 1(c). O roteador B’, ao receber essa requisição ARP (flecha escura),<br />
irá verificar que o cliente B, nó cujo en<strong>de</strong>reço MAC é procurado, consta em sua tabela<br />
<strong>de</strong> clientes associados. Assim, este roteador é o encarregado <strong>de</strong> respon<strong>de</strong>r a requisição<br />
ARP (flecha clara), na qual informa que o en<strong>de</strong>reço requisitado é o seu próprio en<strong>de</strong>reço<br />
físico. O cliente A, ao receber a resposta, possui todas as informações necessárias para o<br />
preenchimento dos campos <strong>de</strong> en<strong>de</strong>reços do cabeçalho MAC, os en<strong>de</strong>reços 1 (receptor), 2<br />
(transmissor), 3 (<strong>de</strong>stino) e 4 (origem). Para que esses campos sejam interpretados <strong>de</strong> tal<br />
forma, assume-se ToDS = 1 e FromDS = 1 no cabeçalho MAC. O preenchimento <strong>de</strong>sses<br />
campos e o encaminhamento dos pacotes originados por A são ilustrados na Figura 2(a).<br />
Quando os pacotes gerados pelo cliente A são recebidos pelo roteador A’, este se<br />
torna responsável pelo seu encaminhamento. Para isso, toma por base sua tabela <strong>de</strong> roteamento.<br />
No nosso exemplo, o próximo salto <strong>de</strong>finido na tabela <strong>de</strong> roteamento é o roteador<br />
B’. O cabeçalho MAC dos pacotes que serão encaminhados por A’ com <strong>de</strong>stino à B’ são<br />
332
(a) (b) (c)<br />
Figura 2. Comunicação entre clientes mesh no mesmo domínio<br />
<strong>de</strong>finidos na Figura 2(b). Quando o pacote atingir seu <strong>de</strong>stino (roteador B’), este será<br />
responsável por <strong>de</strong>scobrir qual é o en<strong>de</strong>reço IP do cliente mesh a que se <strong>de</strong>stina o pacote.<br />
Conhecendo esse en<strong>de</strong>reço, o roteador B’ <strong>de</strong>termina o en<strong>de</strong>reço MAC correspon<strong>de</strong>nte ao<br />
cliente mesh <strong>de</strong>stino com o auxílio da tabela <strong>de</strong> clientes associados. O roteador B’ dá<br />
início ao roteamento na camada <strong>de</strong> re<strong>de</strong>, e finalmente encaminha os pacotes ao cliente B,<br />
processo o qual é representado na Figura 2(c).<br />
3.3. Processo <strong>de</strong> Ativação <strong>de</strong> Handoffs<br />
Caso um cliente esteja sob movimentação, este po<strong>de</strong> mudar seu ponto <strong>de</strong> acesso à re<strong>de</strong>,<br />
ou seja, se associar a um novo roteador mesh, abandonando assim a conexão antiga. Essa<br />
troca <strong>de</strong> pontos <strong>de</strong> acesso à re<strong>de</strong> por parte dos clientes caracterizam os handoffs, que,<br />
por sua vez, são recorrentes da mobilida<strong>de</strong> na re<strong>de</strong> e do fato dos roteadores mesh serem<br />
limitados ao alcance <strong>de</strong> suas antenas. Para contextualizar a ativação <strong>de</strong> handoffs, usaremos<br />
como base a Figura 3, na qual é <strong>de</strong>scrito todo o processo resultante <strong>de</strong>ssa ativação. O<br />
cenário <strong>de</strong> exemplo é o mesmo especificado para a Figura 1.<br />
(a) (b) (c) (d)<br />
Figura 3. Handoffs durante a comunicação entre nós no mesmo domínio<br />
Inicialmente, o cliente B mantém-se associado ao roteador B’, recebendo os pacotes<br />
gerados pelo cliente A e realizando verificações periódicas da qualida<strong>de</strong> do enlace<br />
com este roteador. Num certo momento, o cliente B começa a se movimentar, como indicado<br />
na Figura 3(a). Conforme B se afasta do seu ponto <strong>de</strong> acesso original, a qualida<strong>de</strong><br />
<strong>de</strong>sse enlace ten<strong>de</strong> a diminuir gradativamente. Quando o atraso <strong>de</strong> resposta ultrapassa o<br />
limite máximo estipulado no protocolo, o processo <strong>de</strong> handoff inicia.<br />
Mensagens <strong>de</strong> sondagem serão transmitidas, em broadcast, com o propósito <strong>de</strong><br />
<strong>de</strong>terminar outro ponto <strong>de</strong> acesso para o cliente B. No exemplo em questão, supõe-se que<br />
o enlace <strong>de</strong> melhor qualida<strong>de</strong> <strong>de</strong>tectado seja o do roteador B”. Para uma nova associação,<br />
duas trocas <strong>de</strong> mensagens são necessárias entre o cliente B e o roteador B”, conforme<br />
indicado na Figura 3(b). A primeira é uma mensagem <strong>de</strong> reassociação (representada pela<br />
flecha escura) e a segunda é a resposta que confirma essa associação (flecha clara).<br />
333
Ao receber a confirmação do roteador B”, o cliente B <strong>de</strong>ve informar aos <strong>de</strong>mais<br />
clientes na re<strong>de</strong> seu novo en<strong>de</strong>reço MAC e enviar uma mensagem <strong>de</strong> <strong>de</strong>sassociação ao<br />
roteador B’, na qual <strong>de</strong>ve informar o en<strong>de</strong>reço MAC do seu novo ponto <strong>de</strong> acesso. Esse<br />
processo é representado na Figura 3(c), on<strong>de</strong> as mensagens <strong>de</strong> anunciação <strong>de</strong> en<strong>de</strong>reço<br />
MAC são representadas pelas flechas claras, e a mensagem <strong>de</strong> <strong>de</strong>sassociação é representada<br />
pela flecha escura. Quando o cliente A tomar conhecimento do novo en<strong>de</strong>reço MAC<br />
<strong>de</strong> B, os pacotes serão <strong>de</strong>stinados a B”. No nosso exemplo, a tabela <strong>de</strong> roteamento <strong>de</strong> A’<br />
indica uma rota alternativa para o roteador B”. O roteador B’, conhecendo o novo ponto<br />
<strong>de</strong> acesso do cliente B à re<strong>de</strong>, é capaz <strong>de</strong> redirecionar os pacotes, que originalmente o<br />
tinham por <strong>de</strong>stino, para esse novo ponto. Esse processo é representado na Figura 3(d),<br />
on<strong>de</strong> os pacotes referentes a esse encaminhamento são representados pela linha tracejada<br />
em cor cinza.<br />
4. Vulnerabilida<strong>de</strong>s <strong>de</strong> Segurança no Gerenciamento <strong>de</strong> Mobilida<strong>de</strong><br />
No processo <strong>de</strong> mobilida<strong>de</strong> do PGMID, duas observações sobre segurança po<strong>de</strong>m ser<br />
feitas. Primeiro, não há controle no acesso à re<strong>de</strong>. Quando um cliente <strong>de</strong>seja se associar<br />
ou trocar seu ponto <strong>de</strong> acesso à re<strong>de</strong>, nenhum processo envolvendo autenticação e<br />
autorização é realizado. A única informação fornecida pelo cliente ao roteador mesh são<br />
seus respectivos en<strong>de</strong>reços MAC e IP. Em segundo, o correto funcionamento <strong>de</strong>sse protocolo<br />
parte do princípio <strong>de</strong> que todos os nós na re<strong>de</strong> são cooperativos. Presume-se que<br />
nenhum nó tenha propósitos maliciosos, seja modificando cabeçalhos com informações<br />
in<strong>de</strong>vidas ou injetando mensagens maliciosas na re<strong>de</strong>. Por não consi<strong>de</strong>rar nenhum requisito<br />
<strong>de</strong> segurança em sua solução, a vulnerabilida<strong>de</strong> da re<strong>de</strong> se torna evi<strong>de</strong>nte, tornando<br />
propícia a ação <strong>de</strong> nós maliciosos.<br />
Os ataques nas re<strong>de</strong>s em malha sem fio po<strong>de</strong>m ser <strong>de</strong> natureza externa ou interna.<br />
Os ataques <strong>de</strong> natureza externa são gerados <strong>de</strong> fora da re<strong>de</strong>, enquanto os ataques<br />
<strong>de</strong> natureza interna partem <strong>de</strong> <strong>de</strong>ntro da re<strong>de</strong> e, por isto, são <strong>de</strong> mais difícil prevenção<br />
[Aguiar et al. 2008]. Nosso interesse está nos ataques internos direcionados ao backbone<br />
da re<strong>de</strong>, os quais possam representar ameaças à mobilida<strong>de</strong> dos clientes mesh. Com este<br />
propósito, dois ataques são investigados neste artigo, os quais chamaremos <strong>de</strong> ataque<br />
contra ARP e <strong>de</strong> ataque contra RM (roteador mesh). Estes são <strong>de</strong>scritos como segue.<br />
4.1. Ataque contra RM<br />
O ataque contra RM tem como objetivo indisponibilizar o acesso a <strong>de</strong>terminadas partes<br />
da re<strong>de</strong>. Isto é possível com ataques direcionados aos roteadores mesh, a fim <strong>de</strong> sobrecarregá-los.<br />
Esse ataque é consi<strong>de</strong>rado um ataque <strong>de</strong> Negação <strong>de</strong> Serviço (DoS - Denial of<br />
Service), pois faz com que os roteadores, em um dado momento, não aceitem requisições<br />
<strong>de</strong> associação dos clientes.<br />
A estratégia do atacante é o envio contínuo <strong>de</strong> mensagens <strong>de</strong> requisições <strong>de</strong><br />
associação utilizando falsos en<strong>de</strong>reços IP <strong>de</strong> origem aos roteadores. Como ao receber<br />
uma requisição o roteador não verifica a legitimida<strong>de</strong> <strong>de</strong> sua origem, todas as requisições<br />
falsas serão aceitas. Pelos recursos dos roteadores serem finitos e estes aten<strong>de</strong>rem a falsos<br />
clientes, requisições válidas serão ignoradas. Mesmo que verificações periódicas nos<br />
roteadores permitam a <strong>de</strong>tecção <strong>de</strong> clientes que não estejam utilizando os recursos a ele<br />
alocados, a velocida<strong>de</strong> com que um atacante gera as mensagens é suficientemente alta<br />
para indisponibilizá-los por certos períodos <strong>de</strong> tempo.<br />
334
4.2. Ataque contra ARP<br />
O objetivo do ataque contra ARP é sobrecarregar o tráfego na re<strong>de</strong>. Para isso, toma-se<br />
como referência o fato <strong>de</strong> que se um cliente acusa não possuir o en<strong>de</strong>reço MAC do cliente<br />
ao qual <strong>de</strong>seja enviar pacotes, a obtenção do mesmo ocorre com o envio <strong>de</strong> requisições<br />
ARP, que, por sua vez, são propagadas por todo o backbone da re<strong>de</strong>. O tráfego ARP é<br />
naturalmente elevado nesse protocolo, e, <strong>de</strong>pen<strong>de</strong>ndo da quantida<strong>de</strong> <strong>de</strong> nós no backbone,<br />
po<strong>de</strong> vir a ser um problema, uma vez que mesmo com apenas um roteador respon<strong>de</strong>ndo à<br />
requisição, todos os roteadores tomam conhecimento da mesma e promovem seu reencaminhamento.<br />
Devido ao fato <strong>de</strong> requisições ARP se propagarem por toda a re<strong>de</strong>, o ataque<br />
contra ARP se aproveita <strong>de</strong>sta característica para elevar o tráfego na re<strong>de</strong>.<br />
Neste tipo <strong>de</strong> ataque, o atacante <strong>de</strong>ve manter uma conexão com um cliente qualquer<br />
na re<strong>de</strong>, sendo este responsável por gerar o tráfego malicioso. A estratégia adotada<br />
pelo atacante para realizar este ataque é restaurar constantemente sua tabela ARP ao estado<br />
inicial, fazendo com que faltas do en<strong>de</strong>reço MAC do <strong>de</strong>stino sejam acusadas. Vale<br />
notar que o sobrecarregamento do tráfego não é causado por pacotes sem fundamento; as<br />
requisições são necessárias, porém, a ação maliciosa está em torná-las frequentes, comprometendo<br />
o tráfego da re<strong>de</strong> em geral.<br />
5. Avaliação<br />
Nesta seção, é apresentada a avaliação do protocolo PGMID sob ataques contra RM e<br />
ARP. O objetivo da análise consiste em medir o impacto <strong>de</strong>stes ataques em uma re<strong>de</strong> em<br />
malha utilizando o protocolo PGMID. A seção 5.1 <strong>de</strong>screve em <strong>de</strong>talhes o ambiente <strong>de</strong><br />
simulação, e a seção 5.2, por sua vez, apresenta os resultados das simulações.<br />
5.1. Ambiente <strong>de</strong> Simulação<br />
Para avaliar o <strong>de</strong>sempenho do protocolo PGMID, foi utilizado o simulador NS-2.34. A<br />
implementação do PGMID consi<strong>de</strong>ra que mensagens <strong>de</strong> sondagem são enviadas a cada<br />
2 s, o atraso máximo <strong>de</strong> resposta é <strong>de</strong> 10 ms e o número máximo <strong>de</strong> saltos das mensagens<br />
ARP é equivalente a 7. Como protocolo <strong>de</strong> roteamento híbrido adotou-se o protocolo<br />
Hybrid Routing Mesh Protocol (HWMP) [Boukerche and Zhang 2008] em modo reativo.<br />
A topologia da re<strong>de</strong> consiste <strong>de</strong> vinte roteadores mesh com raio <strong>de</strong> alcance <strong>de</strong><br />
250m, os quais são distribuídos uniformemente em gra<strong>de</strong> ao longo <strong>de</strong> uma área <strong>de</strong><br />
1300x1100m. O mo<strong>de</strong>lo <strong>de</strong> mobilida<strong>de</strong> Random Waypoint foi o adotado para promover<br />
a movimentação dos clientes mesh, os quais se movimentam com velocida<strong>de</strong> <strong>de</strong> até<br />
5m/s. O tráfego na re<strong>de</strong> é <strong>de</strong>finido com o auxílio do gerador <strong>de</strong> tráfego cbrgen, e consiste<br />
em fluxos <strong>de</strong> pacotes CBR <strong>de</strong> 521 bytes enviados a cada 20ms, sendo o número<br />
máximo <strong>de</strong> conexões correspon<strong>de</strong>nte ao número <strong>de</strong> clientes na simulação. Para todas<br />
as simulações foram garantidas pelo menos uma comunicação entre um cliente atacante<br />
e um não-atacante, e para cada comunicação <strong>de</strong>ssas, uma entre clientes não-atacantes é<br />
estabelecida. Para as simulações com ataque, a quantida<strong>de</strong> <strong>de</strong> atacantes <strong>de</strong>finida correspon<strong>de</strong><br />
a 10% do total <strong>de</strong> clientes da simulação, e suas ações maliciosas são <strong>de</strong>senca<strong>de</strong>adas<br />
a cada 10ms. Grupos <strong>de</strong> 4, 6 e 12 clientes foram consi<strong>de</strong>rados na avaliação.<br />
Três tipos <strong>de</strong> cenários foram analisados para cada grupo <strong>de</strong> 4, 6 e 12 clientes, os<br />
cenários com ataque contra ARP, os com ataque contra RM e os sem ataque. Para<br />
cada tipo <strong>de</strong> cenário foram realizadas 33 simulações, a fim <strong>de</strong> possibilitar o cálculo do<br />
335
intervalo <strong>de</strong> confiança <strong>de</strong> 95%. A taxa <strong>de</strong> entrega, o número <strong>de</strong> handoffs e a latência <strong>de</strong><br />
entrega dos pacotes UDP e dos handoffs são métricas utilizadas para quantificar o impacto<br />
que os ataques causam à re<strong>de</strong>. A latência dos handoffs consiste no tempo <strong>de</strong> reassociação<br />
com um novo roteador na camada <strong>de</strong> enlace.<br />
5.2. Resultados<br />
O gráfico da Figura 4(a) apresenta um comparativo da taxa <strong>de</strong> entrega dos três tipos <strong>de</strong><br />
simulações realizadas. Como po<strong>de</strong> ser observado, in<strong>de</strong>pen<strong>de</strong>nte da quantida<strong>de</strong> <strong>de</strong> clientes<br />
na re<strong>de</strong>, a taxa <strong>de</strong> entrega apresenta quedas consi<strong>de</strong>ráveis quando a re<strong>de</strong> está sob ataque,<br />
sendo essa queda <strong>de</strong> até 35%, nas simulações envolvendo 4 clientes. Já a latência <strong>de</strong><br />
entrega, representada na Figura 4(b), observa-se um aumento nas simulações envolvendo<br />
4 e 6 clientes diante <strong>de</strong> ataques contra RM ou ARP. Entretanto, para 12 clientes, os três<br />
tipos <strong>de</strong> cenários resultam em valores <strong>de</strong> latência muito mais elevados in<strong>de</strong>pen<strong>de</strong>nte da<br />
presença ou não <strong>de</strong> ataques na re<strong>de</strong>.<br />
(a)<br />
(b)<br />
Figura 4. Taxa <strong>de</strong> entrega e latência <strong>de</strong> pacotes UDP<br />
Os handoffs foram avaliados <strong>de</strong> acordo com seu número <strong>de</strong> ocorrências e com<br />
sua latência na camada <strong>de</strong> enlace. De acordo com o gráfico da Figura 5(a), o objetivo<br />
do ataque contra RM é atingido. Como aponta o gráfico, para cenários com 4 clientes,<br />
o número <strong>de</strong> handoffs sofre uma queda <strong>de</strong> aproximadamente 50% quando comparado a<br />
outros cenários. Já quanto à latência dos handoffs, os resultados obtidos são apresentados<br />
no gráfico da Figura 5(b). Com a queda da quantida<strong>de</strong> <strong>de</strong> handoffs, consequentemente há<br />
uma diminuição da quantida<strong>de</strong> <strong>de</strong> mensagens <strong>de</strong>stinadas ao processo <strong>de</strong> handoff. Tal fator<br />
implica na sua menor latência verificada para cenários com 4 e 6 clientes.<br />
(a)<br />
(b)<br />
Figura 5. Quantida<strong>de</strong> e latência <strong>de</strong> handoffs<br />
336
Para quaisquer cenários envolvendo uma quantida<strong>de</strong> <strong>de</strong> clientes superior a 4,<br />
observa-se que a eficiência do protocolo diminui gradativamente conforme esse número<br />
aumenta. O elevado número <strong>de</strong> handoffs, combinado a uma quantida<strong>de</strong> maior <strong>de</strong><br />
requisições ARP trafegando pela re<strong>de</strong>, resultam em um ambiente com um alto overhead<br />
<strong>de</strong> mensagens. Estas mensagens, por sua vez, são resultantes do próprio processo responsável<br />
por garantir a mobilida<strong>de</strong>. Assim, ao consi<strong>de</strong>rar uma situação on<strong>de</strong> um protocolo<br />
<strong>de</strong> mobilida<strong>de</strong> <strong>de</strong>ve lidar com um número <strong>de</strong> clientes muito superior a 4, alterações<br />
no PGMID são necessárias para que a adoção <strong>de</strong>ste protocolo como solução <strong>de</strong> mobilida<strong>de</strong><br />
se torne viável.<br />
5.3. Discussão<br />
Sob ataque contra ARP, o aumento da frequência com que as requisições ARP são geradas<br />
na re<strong>de</strong> implica numa maior carga <strong>de</strong> pacotes a ser processada pelos roteadores.<br />
Os roteadores, ao receberem mais dados do que são capazes <strong>de</strong> processar, enfileiram os<br />
pacotes que chegam a ele <strong>de</strong> acordo com a política <strong>de</strong> enfileiramento do protocolo em<br />
vigor, a fim <strong>de</strong> serem futuramente processados. Na implementação em questão, o tipo <strong>de</strong><br />
fila utilizada implementa a política FIFO (First In First Out). As filas, no entanto, têm<br />
uma capacida<strong>de</strong> finita <strong>de</strong> armazenamento, que, quando atingida, ocasiona o <strong>de</strong>scarte <strong>de</strong><br />
pacotes por parte dos roteadores. Como o protocolo UDP é o protocolo da camada <strong>de</strong><br />
transporte em vigor, esse <strong>de</strong>scarte é <strong>de</strong>finitivo. Por esse motivo, a taxa <strong>de</strong> entrega neste<br />
protocolo ten<strong>de</strong> a diminuir conforme o tráfego se intensifica.<br />
O aumento da latência da entrega <strong>de</strong> pacotes UDP é diretamente influenciada pelo<br />
aumento do tráfego na re<strong>de</strong> sob ataque contra ARP. O processo <strong>de</strong> roteamento na re<strong>de</strong> é<br />
menos eficiente, uma vez que os pacotes referentes ao roteamento po<strong>de</strong>m ser mantidos na<br />
fila por outros roteadores, ou, até mesmo, <strong>de</strong>scartados por estes. Assim, além da tendência<br />
<strong>de</strong> um pacote UDP permanecer aguardando na fila por mais tempo, obter informações para<br />
seu encaminhamento se torna um processo mais lento, ocasionando assim o aumento da<br />
latência <strong>de</strong> entrega <strong>de</strong>sses pacotes.<br />
Quando a re<strong>de</strong> está sob o ataque contra RM, a frequência com que os clientes realizam<br />
handoffs é diretamente afetada por esse ataque. Os clientes, ao acusarem que sua<br />
conexão atual não é mais viável, dão início ao processo <strong>de</strong> handoff. Porém, a troca <strong>de</strong><br />
ponto <strong>de</strong> acesso só é possível se existem roteadores na re<strong>de</strong> aptos a aceitar conexões. Se,<br />
durante as mensagens <strong>de</strong> sondagem, o cliente não receber respostas por parte dos roteadores,<br />
a conexão atual <strong>de</strong>verá ser mantida até que este encontre um roteador disponível.<br />
Assim, caso o cliente se veja obrigado a manter sua conexão atual e se movimentar para<br />
uma área a qual o roteador não oferece cobertura, este per<strong>de</strong>rá totalmente o acesso à re<strong>de</strong>.<br />
Isto po<strong>de</strong> ocorrer pois o cliente não conseguirá outra conexão, uma vez que os roteadores,<br />
os quais po<strong>de</strong>riam lhe oferecer acesso à re<strong>de</strong>, estão <strong>de</strong>stinando seus recursos à clientes<br />
atacantes. Desta forma, o <strong>de</strong>scarte <strong>de</strong> pacotes é inevitável tanto dos que se <strong>de</strong>stinam a<br />
esse cliente, quanto dos pacotes que são gerados por ele. Como consequência, a taxa<br />
<strong>de</strong> entrega ten<strong>de</strong> a cair, e os clientes diminuem suas trocas <strong>de</strong> ponto <strong>de</strong> acesso, por não<br />
disporem <strong>de</strong> opções para handoffs.<br />
O atraso <strong>de</strong> resposta, utilizado para avaliar a qualida<strong>de</strong> <strong>de</strong> um enlace, é a principal<br />
causa do elevado número <strong>de</strong> handoffs. Esse atraso, por sua vez, é sensível a qualquer<br />
alteração na banda do roteador. Se um roteador é sobrecarregado, mesmo que momentaneamente,<br />
po<strong>de</strong> ser o suficiente para iniciar processos <strong>de</strong> handoffs para todos os<br />
337
clientes que o tem como ponto <strong>de</strong> acesso. Assim, handoffs não <strong>de</strong>pen<strong>de</strong>m apenas da<br />
movimentação dos clientes, mas, principalmente, do tráfego do roteador ao qual estão<br />
associados. Dessa forma, handoffs po<strong>de</strong>m ser iniciados com o propósito <strong>de</strong> obter um enlace<br />
<strong>de</strong> menor tráfego, mesmo que o sinal com o roteador seja suficiente ou que o cliente<br />
permaneça estacionado na re<strong>de</strong>.<br />
6. Conclusão<br />
O gerenciamento da mobilida<strong>de</strong> é uma das questões mais relevantes nas re<strong>de</strong>s em malha<br />
sem fio, sendo que um <strong>de</strong> seus maiores atrativos é a livre movimentação com a garantia<br />
<strong>de</strong> acesso à re<strong>de</strong>. Porém, ações maliciosas por parte dos nós po<strong>de</strong>m influenciar negativamente<br />
na mobilida<strong>de</strong> da re<strong>de</strong>. A fim <strong>de</strong> medir o impacto que ações maliciosas po<strong>de</strong>m<br />
causar a uma re<strong>de</strong> em malha, este artigo apresentou a avaliação <strong>de</strong> um protocolo <strong>de</strong> gerenciamento<br />
<strong>de</strong> mobilida<strong>de</strong>. Essa avaliação teve por objetivo <strong>de</strong>terminar o comportamento<br />
da re<strong>de</strong> frente aos ataques contra os roteadores mesh e contra o protocolo ARP que, por<br />
sua vez, tinham por fim comprometer a mobilida<strong>de</strong> na re<strong>de</strong>. Ambos os ataques mostraram<br />
que é possível reduzir significativamente a eficiência do protocolo, sendo que sob ataque<br />
contra ARP houve uma redução <strong>de</strong> cerca <strong>de</strong> 35% da taxa <strong>de</strong> entrega <strong>de</strong> pacotes UDP na<br />
re<strong>de</strong>. Mesmo tendo por objeto <strong>de</strong> estudo um protocolo em particular, as fraquezas apontadas<br />
neste protocolo são válidas e <strong>de</strong>vem ser consi<strong>de</strong>radas no projeto <strong>de</strong> protocolos <strong>de</strong><br />
mobilida<strong>de</strong> para re<strong>de</strong>s em malha. Assim, mecanismos que garantam a disponibilida<strong>de</strong> e o<br />
acesso à re<strong>de</strong> são imprescindíveis para o correto funcionamento <strong>de</strong> quaisquer protocolos<br />
<strong>de</strong> mobilida<strong>de</strong>. Como trabalho futuro, preten<strong>de</strong>mos <strong>de</strong>senvolver um protocolo <strong>de</strong> gerenciamento<br />
<strong>de</strong> mobilida<strong>de</strong> seguro consi<strong>de</strong>rando os resultados apresentados neste trabalho.<br />
Referências<br />
Aguiar, E. S., Jorge, A., Abelém, G., Damalio, D. B., Lopes, R., and Pinheiro, B. A. (2008). Segurança em<br />
re<strong>de</strong>s mesh: Tendências, <strong>de</strong>safios e aplicações. Minicursos do Simpósio Brasileiro <strong>de</strong> Segurança 2008,<br />
1:101–149.<br />
Akyildiz, I., Wang, X., and Wang, W. (2005). Wireless mesh networks: a survey. Computer Networks,<br />
47:445–487.<br />
Akyildiz, I. F., McNair, J., Ho, J. S., Uzunalioglu, H., and Wang, W. (1999). Mobility management in<br />
next-generation wireless systems. Proceedings of the IEEE, 87:1347–1384.<br />
Boukerche, A. and Zhang, Z. (2008). A hybrid-routing based intra-domain mobility management scheme<br />
for wireless mesh networks. In Proceedings of the 11th international symposium on Mo<strong>de</strong>ling analysis<br />
and simulation of wireless and mobile systems, MSWiM ’08, pages 268–275. ACM.<br />
Egners, A. and Meyer, U. (2010). Wireless mesh network security: State of affairs. IEEE 35th Conference<br />
on Local Computer Networks (LCN), pages 997–1004.<br />
Martignon, F., Paris, S., and Capone, A. (2008). Mobisec: a novel security architecture for wireless<br />
mesh networks. Proceedings of the 4th ACM symposium on QoS and security for wireless and mobile<br />
networks.<br />
Mehdi, S., Ghazi, A., Badii, J., Djamal, Z., and Hossam, A. (2007). Mobile party: A mobility management<br />
solution for wireless mesh network. IEEE International Conference on Wireless and Mobile Computing,<br />
Networking and Communication, page 45.<br />
Xie, J. and Wang, X. (2008). A survey of mobility management in hybrid wireless mesh networks. IEEE<br />
Network, 22:34–40.<br />
338
A New Scheme for Anonymous Communication in Wireless<br />
Mesh Networks<br />
Joarley Moraes 1 , Roberto Araújo 2 , Antônio Abelém 2<br />
1 Instituto <strong>de</strong> Tecnologia – Universida<strong>de</strong> Fe<strong>de</strong>ral do Pará (UFPa)<br />
Belém – PA – Brasil<br />
2 Instituto <strong>de</strong> Ciências Exatas e Naturais – Universida<strong>de</strong> Fe<strong>de</strong>ral do Pará (UFPa)<br />
Belém – PA – Brasil<br />
{joarley,rsa,abelem}@ufpa.br<br />
Abstract. Wireless Mesh Networks (WMN) have rapidly evolved as a promising<br />
solution for broadband communication. However, security issues as the user’s<br />
anonymity have been an obstacle for their wi<strong>de</strong> <strong>de</strong>ployment. Wu and Li proposed<br />
a scheme to provi<strong>de</strong> anonymity in WMN, but their scheme has drawbacks. In<br />
this paper we present a new scheme, based on some of WuLi’s principles, to<br />
provi<strong>de</strong> anonymous communication in WMN. The solution overcomes previous<br />
drawbacks and is more effective than the former one.<br />
1. Introduction<br />
Wireless Mesh Networks (WMN) is a self-organized and self-configured network<br />
paradigm where mesh no<strong>de</strong>s operate distributively as host and router. WMNs have became<br />
very popular due to their many inherent advantages such low-cost, easy maintenance,<br />
robustness, and reliable and high-speed network coverage. Such network technology<br />
are un<strong>de</strong>rgoing rapid progress and has been <strong>de</strong>ployed in a variety of application in<br />
personal, campus, and metropolitan areas [Akyildiz et al. 2005]. A WMN can be rapidly<br />
<strong>de</strong>ployed, for example, in a small city, so that the inhabitants can share a satellite connection.<br />
In such a scenario, each household works as a mesh no<strong>de</strong> and thus has to be<br />
equipped with Wireless <strong>de</strong>vices. A gateway router,<br />
a centralized entity, is responsible for granting Internet access to the households. Mesh<br />
no<strong>de</strong>s communicate to each other and to the gateway usually in multi-hop style. When<br />
the communication end is out of range, the data has to transverse a series of other no<strong>de</strong>s<br />
which will act as intermediate forwar<strong>de</strong>rs.<br />
Security and privacy issues, however, are the current main obstacles to the wi<strong>de</strong><br />
<strong>de</strong>ployment of this technology. Privacy is specially important because of the inherent<br />
public and distributed nature of the WMN channel. Source anonymity is one of the most<br />
relevant privacy properties. Users in a mesh network access the Internet in different context<br />
for services like web-surfing, e-mail, Internet banking, e-commerce, and so on. These<br />
communication may contain several sensitive user’s information, such as personal i<strong>de</strong>ntities,<br />
activities, location informations, financial data, etc. If those information are disclosed<br />
by attackers, the user’s privacy is compromised. In addition, when such an information<br />
are further correlated to user’s i<strong>de</strong>ntity, more severe consequences may occur.<br />
In this work, we focus on protecting mesh no<strong>de</strong>s anonymity against traffic analysis<br />
and flow tracing attacks. In particular, we review a protocol proposed by Wu and Li in<br />
339
[Wu and Li 2006] which claims to <strong>de</strong>fend against those attacks, assuming a global and<br />
aggressive adversary. However, their solution is vulnerable to a number of attacks due<br />
to problems in the protocol <strong>de</strong>sign, which were pointed out by the authors. We propose<br />
a new protocol based on some of Wu and Li’s i<strong>de</strong>as. However, our solution does not<br />
suffer from the problems of the former proposal. In addition, it enables multiple no<strong>de</strong>s<br />
to communicate using a single data carrier, which makes our scheme more effective than<br />
Wu and Li’s proposal, namely WuLi.<br />
This paper is organized as follows: the next section presents an outline of WuLi’s<br />
scheme and its drawbacks. After that, in Section 3, we present our new protocol. Next,<br />
we sketch the security analysis of our solution. Section 4 presents the works related to<br />
our solution. Finally, in Section 5, we conclu<strong>de</strong> this work.<br />
2. A Summary of WuLi’s Proposal and Its Drawbacks<br />
In or<strong>de</strong>r to provi<strong>de</strong> anonymous communication in WMN, WuLi proposed the private<br />
onion ring protocol. In that protocol, they applied the concept of onion routing<br />
[Syverson et al. 1997] to obtain data confi<strong>de</strong>ntiality and to achieve source anonymity.<br />
The entire protocol relies on the security of the so-called private onion ring, which is<br />
an anonymously constructed route for no<strong>de</strong>s’ communication. As the name suggests, the<br />
route has a ring topology, where the gateway is both the beginning and the end of it. Before<br />
presenting this topology, they proposed an open route approach. In this approach,<br />
the communication starts at the gateway and could end at any mesh no<strong>de</strong>. However, the<br />
approach had a serious anonymity vulnerability, which were solved by employing the ring<br />
solution.<br />
Their protocol works as follows. First, the gateway sends an request carrier to<br />
the first no<strong>de</strong> of the ring. Each no<strong>de</strong> encrypts the carrier (using a symmetric key shared<br />
between the no<strong>de</strong> and the gateway) and then forwards it to the next hop in the ring. When a<br />
no<strong>de</strong> wants to make an access request, it replaces the carrier with a new one containing its<br />
request. If more than one no<strong>de</strong> tries to request access in the same access session, always<br />
the no<strong>de</strong> closer to the gateways gets granted, since the requester erases the previous ones.<br />
After knowing the requester, the gateway sends a downlink onion through the ring, in<br />
or<strong>de</strong>r to provi<strong>de</strong> the requested data. No<strong>de</strong>s peel off one layer and forward the onion to<br />
another hop. When the onion arrives at the active no<strong>de</strong>, it obtains the plain downlink data,<br />
and then replaces it with uplink data. After that, the active no<strong>de</strong> encrypts the onion and<br />
sends it to the next hop. These procedures continue until the onion returns to the gateway.<br />
WuLi’s private onion ring solution overcomes the drawbacks of the open route<br />
approach. However, the ring topology still have some problems. The rings established by<br />
the gateway make the route fixed and easy for an adversary launching privacy attacks. In<br />
addition, if a no<strong>de</strong> goes down, a new ring must be re-established. This topology dynamics<br />
may make the scheme too inefficient. Malicious no<strong>de</strong>s could also utilize it to launch<br />
powerful DoD attacks against the WMN. Besi<strong>de</strong>s, ring route is vulnerable to the so-called<br />
intersection attacks based on user profile. This vulnerability is pointed out by the authors<br />
as the main problem of the protocol: “Assume that a Mesh no<strong>de</strong> initiates a session to<br />
connect to an Internet address through a ring. Later it is inclu<strong>de</strong>d in new ring, through<br />
which it visits the same address again. Both visits are observed by the adversary that<br />
monitors the Gateway router. If the address only has very special visitors, based on the<br />
340
observations, the adversary may conclu<strong>de</strong> that the session initiator is one of the Mesh<br />
no<strong>de</strong>s that are in both rings.” [Wu and Li 2006]<br />
3. The new Proposal<br />
Our protocol employs a principle similar to that one presented by WuLi in their private<br />
onion ring protocol. That is, it avoids that a no<strong>de</strong> directly sends data (e.g., an access request<br />
or uplink data) to the gateway router. Instead, no<strong>de</strong>s should wait for specific tokens<br />
in or<strong>de</strong>r to anonymously communicate. However, other than using WuLi’s ring routing<br />
approach, we propose a probabilistic routing protocol to make routes more flexible. As<br />
such, our method overcomes the drawbacks of the former proposal of having a fixed ring<br />
route topology.<br />
3.1. Overview<br />
Our proposal consists of three phases: the access phase, the downlink phase, and the uplink<br />
phase. The access phase is inten<strong>de</strong>d to grant to mesh no<strong>de</strong>s anonymous access to<br />
gateway services. The downlink phase follows the access phase and it aims at anonymously<br />
<strong>de</strong>livering data to the requester. And finally, the uplink phase takes place when a<br />
no<strong>de</strong> wants to anonymously send uplink data to the gateway.<br />
In the access phase, the gateway periodically generates access tokens and <strong>de</strong>livers<br />
them to mesh no<strong>de</strong>s. The gateway <strong>de</strong>livers a token to one the no<strong>de</strong>s next to itself. After<br />
receiving it, the no<strong>de</strong> either forwards it to another hop or uses it to make an access request<br />
to the gateway. In the former case, the no<strong>de</strong> performs cryptographic operations on the<br />
token before forwarding it. In the latter case, the mesh no<strong>de</strong> modifies the token to obtain<br />
a new one containing the no<strong>de</strong>’s request. In either case, the no<strong>de</strong>s are free for choosing<br />
the next hop. After the token visits a <strong>de</strong>fined number of hops, the last hop sends it back to<br />
the gateway.<br />
The downlink phase works similar as proposed by WuLi. In this phase, the gateway<br />
provi<strong>de</strong>s data from an Internet address requested by a specific mesh no<strong>de</strong>. These<br />
data are <strong>de</strong>livered as an onion packet through a given route, chosen by the gateway. Each<br />
no<strong>de</strong> in this route <strong>de</strong>crypts one layer of the onion to discover the next hop and then forwards<br />
the packet to it. If the no<strong>de</strong> is the requester, it will obtain the plain downlink data<br />
after <strong>de</strong>crypting the onion’s layer. Finally, the uplink phase occurs when no<strong>de</strong>s want to<br />
asynchronously send uplink data up to the gateway. This phase is based on the same i<strong>de</strong>a<br />
used in the access phase. In or<strong>de</strong>r to send uplink data, active no<strong>de</strong>s should wait until a<br />
so-called uplink carrier arrives. As in the access phase, this carrier, or token, is cast in the<br />
network by the gateway. The next procedures also follow as before, except that the active<br />
no<strong>de</strong> inserts uplink data into the token, instead of an access request.<br />
3.2. Assumptions and Attack Mo<strong>de</strong>l<br />
The assumptions and the attack mo<strong>de</strong>l of our scheme are similar to that ones employed<br />
by Wu and Li in their scheme. An adversary can learn which Internet address is being<br />
accessed, but it cannot confirm which mesh no<strong>de</strong> performed a request to this address. This<br />
means that the no<strong>de</strong> that performed the request (i.e. the active no<strong>de</strong>) is hid<strong>de</strong>n within a<br />
group of mesh no<strong>de</strong>s. In addition, each mesh no<strong>de</strong> and the gateway are assumed to have<br />
enough computer resources to perform the operations required.<br />
341
We consi<strong>de</strong>r two kinds of computer-boun<strong>de</strong>d adversaries: an insi<strong>de</strong>r and an outsi<strong>de</strong>r.<br />
The insi<strong>de</strong>r is a malicious no<strong>de</strong> in the set of no<strong>de</strong>s that compose the mesh network.<br />
It can perform any task that other mesh no<strong>de</strong>s are able to, such as forwarding packets,<br />
checking packets type, and making an access request to the gateway. The outsi<strong>de</strong>r is a<br />
malicious no<strong>de</strong> that is not in the set of no<strong>de</strong>s that compose the mesh network. It can monitor<br />
the mesh no<strong>de</strong>s and the gateway activities. Also, it can <strong>de</strong>termine which web activities<br />
are performed by the gateway on behalf of mesh no<strong>de</strong>s. We assume a small number of<br />
insi<strong>de</strong>rs and one or few outsi<strong>de</strong>rs. Insi<strong>de</strong>rs and outsi<strong>de</strong>rs may cooperate to launch attacks<br />
against mesh no<strong>de</strong>s’ privacy. They may inject or modify traffic, try to replay messages,<br />
jam no<strong>de</strong>s’ communication, etc. Also, we consi<strong>de</strong>r that the no<strong>de</strong>s cannot stop the message<br />
flow.<br />
3.3. The Data Carrier<br />
The data carrier is a specific purpose packet periodically issued by the gateway router.<br />
When a no<strong>de</strong> wants to either make an access request or send uplink data to the gateway,<br />
it has to wait for the appropriate data carrier. If a no<strong>de</strong> wants to make an access request,<br />
then it uses the access carrier; if it wants to send uplink data, it should use the uplink<br />
carrier. Both carriers, however, have the same basic structure and they will be addressed<br />
in this section as data carrier.<br />
The data carrier consists of two well-<strong>de</strong>fined parts. The first part is called<br />
onioned data and the second one is called encrypted route information. The onioned<br />
data part is composed of a multilayer encrypted data, i.e. an onion. It is built by successively<br />
encrypting the received data carrier at each mesh no<strong>de</strong>. As an onion, the<br />
onioned data may be constructed by either employing a symmetric cryptosystem, such<br />
as AES [Daemen and Rijmen 2002], or an asymmetric cryptosystem, such as El Gamal<br />
[Gamal 1985]. Here we employ a symmetric cryptosystem to build the onion. Throughout<br />
this paper we <strong>de</strong>note E X (·) a ciphertext using the symmetric or public key X.<br />
The onioned data has the following general format:<br />
E kr (...E k2 (E k1 (data 1 ), data 2 )..., data r ), where k i is a symmetric key shared between<br />
the gateway and a no<strong>de</strong> i, and data i is the plain data inserted by each mesh no<strong>de</strong><br />
i; data r is the data corresponding to the last no<strong>de</strong> of a route of length r. Note that<br />
this approach enables multiple no<strong>de</strong>s using the same carrier to communicate with the<br />
gateway. Additionally, data i could be just padding bits in case a no<strong>de</strong> has no data to<br />
inclu<strong>de</strong> into the carrier.<br />
As stated before, the data carrier is just a packet abstraction. The actual packets<br />
are the access and the uplink carriers. Hence, data i is actually a request (<strong>de</strong>noted as req)<br />
if the packet is an access carrier, the req is composed of {reqId, url, N i }, where reqId<br />
is the request’s i<strong>de</strong>ntification generated by the requester no<strong>de</strong>, url is the Internet address<br />
that the no<strong>de</strong> wants to access and N i is the no<strong>de</strong>’s i<strong>de</strong>ntification. Differently, if the packet<br />
is an uplink carrier, the data will be uplink = {url, updata, N i }, where url is the web<br />
<strong>de</strong>stination of the uplink data, and updata is the uplink traffic the active no<strong>de</strong> is sending.<br />
The second part of the carrier, the encrypted route information, consists of a set<br />
of no<strong>de</strong>s’ encrypted secret parameters. A no<strong>de</strong>’s secret parameter is a unique information<br />
about the no<strong>de</strong>, which, later on, will work as the no<strong>de</strong>’s i<strong>de</strong>ntification. Precisely, when<br />
the carrier returns to the gateway, it uses these parameters to i<strong>de</strong>ntify which no<strong>de</strong>s the<br />
342
carrier visited in a random route. We implement no<strong>de</strong>s’ encrypted secret parameter by<br />
encrypting the previously mentioned shared symmetric key k i (a unique parameter) with<br />
the public key G of the gateway, to obtain E G (k i ) – though, there are other ways to<br />
implement this. Each ciphertext is inserted into the route part of carrier and concatenated<br />
to the previous ones. At the end of a route of length r, the route information would be as<br />
follows: E G (k 1 )‖E G (k 2 )‖...‖E G (k r−1 )‖E G (k r )<br />
Due to this concatenation structure, any mesh no<strong>de</strong> can count how many secret parameters<br />
have been inclu<strong>de</strong>d in the carrier. However, they cannot <strong>de</strong>termine the originator<br />
no<strong>de</strong>, since these parameters are encrypted. Hence, insi<strong>de</strong>rs and outsi<strong>de</strong>rs are unable to<br />
know the entire route the carrier took. That count is the criterion that no<strong>de</strong>s use to stop<br />
forwarding the carrier. When a carrier reaches the gateway, it <strong>de</strong>crypts each no<strong>de</strong>s’ secret<br />
parameter to discover which hops the carrier has visited. This information is important to<br />
check the correctness of the protocol, as <strong>de</strong>tailed in the next section.<br />
3.4. The Protocol Description<br />
The protocol is composed of three phases: access, downlink and uplink phases. These<br />
phases are prece<strong>de</strong>d by a setup phase.<br />
1. Setup Phase<br />
Before the no<strong>de</strong>s begin sending or receiving data to/from the gateway, they first<br />
need to generate and distribute key material. In particular, the gateway generates a pair<br />
of asymmetric keys and sends its public key to every mesh no<strong>de</strong>. After that, each no<strong>de</strong><br />
generates a symmetric key and shares it with the gateway. To perform this, each no<strong>de</strong><br />
encrypts its key with the gateway’s public key and sends it to the gateway. Additionally,<br />
a key sharing protocol must be performed between each mesh no<strong>de</strong> and their neighbours<br />
(i.e. the no<strong>de</strong>s within the communication range). These keys will be used for the no<strong>de</strong>s<br />
single-hop communication.<br />
In addition, the gateway <strong>de</strong>fines the number of no<strong>de</strong>s r that a carrier should visit<br />
before being forwar<strong>de</strong>d back to the gateway. This value may consi<strong>de</strong>r the number of<br />
mesh no<strong>de</strong>s (and thus estimating network traffic) and the level of anonymity that should<br />
be achieved. The anonymity level is further commented in the Section 3.5.<br />
2. Access Phase<br />
The protocol starts with the access carriers generation by the gateway. Initially,<br />
this carrier contains only an encrypted nonce value, used to protect the network against<br />
replay attacks. The gateway periodically generates access carriers and casts them to the<br />
mesh network. When a no<strong>de</strong> receives a carrier and wants to make a request, it inserts a<br />
valid access request into the onioned data section, encrypts the result with its shared key,<br />
and then forwards the carrier to any hop within its communication range. However, if a<br />
no<strong>de</strong> has no request to make, it proceeds as before, except that it inserts padding bits into<br />
onioned data part, instead of an actual request.<br />
Besi<strong>de</strong>s operating on the first part of the carrier, each no<strong>de</strong> adds its encrypted<br />
secret parameter into the route information part. Later on, the gateway will use this information<br />
to verify which hops the carrier visited. Since the route is randomly taken, having<br />
this knowledge ensures that the carrier visited different and valid no<strong>de</strong>s in the network.<br />
343
The access carriers travels through r random no<strong>de</strong>s before being forwar<strong>de</strong>d back to<br />
the gateway. Each no<strong>de</strong> checks how many times a carrier has been forwar<strong>de</strong>d by counting<br />
the number of encryptions on the route information part. Based on the count, the no<strong>de</strong><br />
<strong>de</strong>termines the packet’s <strong>de</strong>stination. That is, if the count is less then r (r was <strong>de</strong>fined in the<br />
setup phase) the no<strong>de</strong> continues forwarding the packet. Otherwise, if the count is equal<br />
to r, that means the current no<strong>de</strong> is the last one in the random route and should send the<br />
carrier back to the gateway. The gateway receives the carrier sent back from a no<strong>de</strong> and<br />
verifies its correctness. In or<strong>de</strong>r to perform this, the gateway first <strong>de</strong>crypts each encrypted<br />
secret parameter. After that, it obtains the plaintext of each shared symmetric key which<br />
works as no<strong>de</strong>’s i<strong>de</strong>ntification. Based on that, it discovers the carrier’s route by checking<br />
the or<strong>de</strong>r of these keys. From this knowledge, the onioned data can be <strong>de</strong>crypted. At the<br />
end, the gateway may have a set of plain access requests, and thus, will be able to provi<strong>de</strong><br />
access to the requesters. The protocol is verified based on the success of <strong>de</strong>cryption<br />
operation over the onioned data. If it is not successful, the protocol has not been properly<br />
followed and the gateway drops the carrier.<br />
As an example, suppose a gateway G, a parameter r = 6, and a sequence of<br />
no<strong>de</strong>s N 1 , . . . , N 7 , hops of a random route. Suppose N 1 , N 2 , N 4 , N 5 , and N 7 are just<br />
forwar<strong>de</strong>rs, whereas N 3 and N 6 are requesters. At first, G generates an access carrier<br />
E k1 (nonce) containing a nonce value encrypted with the shared symmetric key k 1 . This<br />
encryption is performed as a mean to authenticate the packet to N 1 . After receiving the<br />
carrier, N 1 processes it by padding onioned data with dummy bits and then encrypting<br />
the result using k 1 to obtain E k1 (nonce, pad). Then N 1 generates its encrypted secret<br />
parameter E G (k 1 ) and inserts it into to the route part of the carrier. Finally, N 1 sends the<br />
new carrier, E k1 (nonce, pad), E G (k 1 ), to the no<strong>de</strong> N 2 .<br />
N 2 , N 4 , N 5 operates exactly as N 1 .On the other hand, N 3 and N 6 proceeds slightly<br />
different. As requesters, rather than adding padding bits, they add an actual request into<br />
the onioned data. After finishing, N 6 sends the carrier to N 7 . As any other no<strong>de</strong> in the<br />
route, N 7 verifies if the number of parameters on the route part are equal to r. Up to that<br />
point, as the route part has 6 encryptions and r = 6, N 7 just forwards the carrier back to<br />
G. The following message flow summarizes this example.<br />
G → N 1 : E k1 (nonce)<br />
N 1 → N 2 : E k1 (nonce, pad), E G (k 1 )<br />
N 2 → N 3 : E k2 (E k1 (nonce, pad), pad), E G (k 1 )‖E G (k 2 )<br />
N 3 → N 4 : E k3 (E k2 (E k1 (nonce, pad), pad)req 3 ), E G (k 1 )‖E G (k 2 )‖E G (k 3 )<br />
N 4 → N 5 : E k4 (E k3 (E k2 (E k1 (nonce, pad), pad), req 3 ), pad),<br />
E G (k 1 )‖E G (k 2 )‖E G (k 3 )‖E G (k 4 )<br />
N 5 → N 6 : E k5 (E k4 (E k3 (E k2 (E k1 (nonce, pad), pad), req 3 ), pad), pad),<br />
E G (k 1 )‖E G (k 2 )‖E G (k 3 )‖E G (k 4 )‖E G (k 5 )<br />
N 6 → N 7 : E k6 (E k5 (E k4 (E k3 (E k2 (E k1 (nonce, pad), pad), req 3 ), pad), pad), req 6 ),<br />
E G (k 1 )‖E G (k 2 )‖E G (k 3 )‖E G (k 4 )‖E G (k 5 )‖E G (k 6 )<br />
N 7 → G : E k6 (E k5 (E k4 (E k3 (E k2 (E k1 (nonce, pad), pad), req 3 ), pad), pad), req 6 ),<br />
E G (k 1 )‖E G (k 2 )‖E G (k 3 )‖E G (k 4 )‖E G (k 5 )‖E G (k 6 )<br />
344
When the gateway receives the access carrier from the no<strong>de</strong> N 7 , it begins by <strong>de</strong>crypting<br />
each secret information, from E G (k 1 ) to E G (k 6 ). By doing this, it discovers the<br />
route that the carrier took and it can start <strong>de</strong>crypting each layer of the onioned request.<br />
In the example above, the gateway peels off all onion’s layers using the obtained shared<br />
keys and finds two plain requests: req 3 and req 6 .<br />
3. Downlink Phase<br />
The downlink phase takes place as soon as the gateway receives an access request.<br />
When the gateway discovers a plain request, it obtains the <strong>de</strong>sired Internet data on behalf<br />
of the requester. After receiving the data, the gateway encapsulates it into a downlink<br />
packet. This packet may contain data requested by different no<strong>de</strong>s. In or<strong>de</strong>r to <strong>de</strong>livery<br />
the data requested, the gateway sends the downlink packet through an anonymous route.<br />
This route is carefully chosen by the gateway to inclu<strong>de</strong>, not only the requesters, but some<br />
dummy no<strong>de</strong>s.<br />
The downlink packet’s content is structured as an onion, similar to the<br />
data carrier. Each onion’s layer may contain downlink data and the address<br />
of the next hop in the route. The downlink packet has the following format:<br />
E k1 (E k2 (E k3 (...E kl (G, down l , E G (nonce)), ...N 4 , down 3 ), N 3 , down 2 ), N 2 , down 1 ),<br />
where down i is the downlink data <strong>de</strong>stined to the requester N i and E G (nonce) is an<br />
unique value inclu<strong>de</strong>d by the gateway for <strong>de</strong>livery confirmation purpose. Besi<strong>de</strong>s the<br />
downlink data, down i also contains the reqId. It is inten<strong>de</strong>d to link the downlink traffic<br />
with a given access request. Additionally, similar as in the data carrier, the gateway<br />
pads down i with dummy bits in those layers where no data need to be inclu<strong>de</strong>d. In the<br />
innermost layer of onion, we have the information <strong>de</strong>stined to last no<strong>de</strong> of the route N l ,<br />
which should forward the packet to the gateway’s address (G).<br />
The downlink protocol begins when the gateway sends the onion to the first no<strong>de</strong><br />
in the route. Each mesh no<strong>de</strong> <strong>de</strong>crypts one layer, checks for any downlink data, verifies<br />
the next hop’s address and then forward the packet to it. Note that before forwarding, a<br />
no<strong>de</strong> N i removes both down i and N i+1 from its corresponding layer. Every mesh no<strong>de</strong><br />
performs the same operation along the route, even if the down i is not a real downlink traffic.<br />
This protocol continues until the packet reaches the last no<strong>de</strong> in the route. This no<strong>de</strong><br />
performs the operations <strong>de</strong>scribed before and then forwards the packet to the gateway.<br />
The packet’s content at this point is only E G (nonce). The gateway receives this data and<br />
verifies that the packet visited every no<strong>de</strong> of the route. Hence, this information works as<br />
a <strong>de</strong>livery confirmation mechanism.<br />
From the example presented in the access phase, suppose the gateway constructs<br />
a downlink packet to <strong>de</strong>livery data to the requester no<strong>de</strong>s N 3 and N 6 . The dummy no<strong>de</strong>s<br />
inclu<strong>de</strong>d in downlink route will be N 8 , N 9 , N 10 , and N 11 . The gateway makes an onion<br />
to target the six no<strong>de</strong>s of the route in the following or<strong>de</strong>r: N 8 → N 9 → N 3 → N 10 →<br />
N 6 → N 11 . The message flow, from the gateway until the no<strong>de</strong> last no<strong>de</strong> N 11 , is as<br />
follows:<br />
345
G → N 8 : E k8 (E k9 (E k3 (E k10 (E k6 (E k11 (G, pad, E G (nonce)), N 11 , down 6 ), N 6 , pad),<br />
N 10 , down 3 ), N 3 , pad), N 9 , pad)<br />
N 8 → N 9 : E k9 (E k3 (E k10 (E k6 (E k11 (G, pad, E G (nonce)), N 11 , down 6 ), N 6 , pad),<br />
N 10 , down 3 ), N 3 , pad)<br />
N 9 → N 3 : E k3 (E k10 (E k6 (E k11 (G, pad, E G (nonce)), N 11 , down 6 ), N 6 , pad),<br />
N 10 , down 3 )<br />
N 3 → N 10 : E k10 (E k6 (E k11 (G, pad, E G (nonce)), N 11 , down 6 ), N 6 , pad)<br />
N 10 → N 6 : E k6 (E k11 (G, pad, E G (nonce)), N 11 , down 6 )<br />
N 6 → N 11 : E k11 (G, pad, E G (nonce))<br />
N 11 → G : E G (nonce)<br />
4. Uplink Phase<br />
In the uplink phase, mesh no<strong>de</strong>s send uplink data to gateway anonymously. If a<br />
no<strong>de</strong> has any uplink data to send, it employs the same approach used to make access requests.<br />
They wait for an uplink carrier arrives, insert the <strong>de</strong>sired data, and then chooses a<br />
random no<strong>de</strong> to forward the carrier. After visiting r hops, the carrier is sent back to gateway<br />
which performs the protocol check, in the same way as <strong>de</strong>scribed in the access phase.<br />
After visiting r no<strong>de</strong>s of a random route, N 1 , N 2 , . . . , N r , an uplink carrier has the following<br />
format: E kr (...E k2 (E k1 (uplink 1 ), uplink 2 )..., uplink r ), E G (k 1 )‖E G (k 2 )‖...‖E G (k r ).<br />
Note that in all protocol phases we have inclu<strong>de</strong>d mechanisms to enable various<br />
no<strong>de</strong>s to anonymously communicate using a single packet. This is a feature WuLi’s protocol<br />
fails to provi<strong>de</strong> [Wu and Li 2006]. In their both schemes, when two or more no<strong>de</strong>s<br />
make a request, always the no<strong>de</strong> closer to the gateway gets granted, since it replaces the<br />
onion. In a networks with a large number of no<strong>de</strong>s, such as metropolitan-scale WMNs,<br />
this turns out to be a real concern, because simultaneously communication is very likely<br />
to occur.<br />
3.5. Sketch of Security Analysis<br />
The security of our protocol is based on the uniform behaviour of mesh no<strong>de</strong>s while<br />
following the protocol. That is, the activities for an active no<strong>de</strong> is indistinguishable from<br />
the activities of an inactive one. This is achieved by employing modified onion routing<br />
schemes associated with redundancy and padding techniques. No<strong>de</strong>s may either encrypt<br />
or <strong>de</strong>crypt onions according to the protocol phase. Padding bits are inclu<strong>de</strong>d into the<br />
onion to <strong>de</strong>fend against message’s size attacks. Redundancy, in turn, is the key technique<br />
for achieving anonymity. That is, packets visit several mesh no<strong>de</strong>s, so that an active one<br />
is hid<strong>de</strong>n among them. Hence, the anonymity level achieved can be measured by the<br />
number of redundant no<strong>de</strong>s involved in a given protocol phase. In other words, the more<br />
no<strong>de</strong>s the network has, the better the anonymity level will be. However, a large number<br />
of no<strong>de</strong>s would introduce relevant overhead over the network performance.<br />
In addition, onion routing techniques also provi<strong>de</strong>s privacy to mesh no<strong>de</strong>s’ data,<br />
since each layer is encrypted with a shared symmetric key. The security of the data is<br />
then guaranteed by the un<strong>de</strong>rline symmetric cryptosystem. In setup phase, more sophisticated<br />
key agreement protocol, such as [Wan et al. 2009], may be employed to establish<br />
more secure symmetric keys. Asymmetric cryptography is also employed to secure other<br />
346
data, such as the no<strong>de</strong>s’ secret parameters, which are encrypted with the gateway’s public<br />
key. Finally, since we assume computer-boun<strong>de</strong>d adversaries, and thus cannot break<br />
into symmetric or asymmetric cryptosystems, it can be claimed that data confi<strong>de</strong>ntiality<br />
is secure.<br />
In or<strong>de</strong>r to enhance anonymity, we enforce the use of non-<strong>de</strong>terministic routes<br />
for packet routing. In the access and uplink phases, each mesh no<strong>de</strong> randomly forwards<br />
carriers to one of the hops in its range. After r hops, carriers have travelled through a<br />
random route. Any attempt of manipulating the route part of the carrier is easily verified<br />
by the gateway by checking the no<strong>de</strong>s’ shared key against the onioned data. Having non<strong>de</strong>terministic<br />
route make it difficulty for an adversary, even for a global one, to target<br />
specific no<strong>de</strong>s in privacy attacks In the downlink phase, routes for message <strong>de</strong>livery are<br />
properly selected by the gateway, so that they are different for each downlink session.This<br />
approach makes the downlink route also non-<strong>de</strong>terministic, in the sense that no one, but<br />
the gateway, knows the entire route; no<strong>de</strong>s only know their previous and next hops. Non<strong>de</strong>terministic<br />
routes approach also turns infeasible the so-called intersection attack, the<br />
main problem of WuLi’s protocol. WuLi’s solution reveals the ring’s ID inclu<strong>de</strong>d in<br />
every packets. As their topology is fixed, the intersection attack becomes viable. In our<br />
protocol, is difficulty to correlate the web activities observed at the gateway with specific<br />
mesh no<strong>de</strong>s, since they are not inclu<strong>de</strong> in <strong>de</strong>terministic routing paths.<br />
The protocol is secure against a global outsi<strong>de</strong>r which may cooperate with a small<br />
number of insi<strong>de</strong>rs. In this context, a number of attacks could be launched aiming at<br />
breaching mesh user’s privacy. An attacker could, for example, record the no<strong>de</strong>s’ encrypted<br />
secret parameters from previous access or uplink sessions. Then the attacker may<br />
then try to reuse them in a replay attack. This would allow the adversary to control the<br />
length of the route and thus weakening the anonymous communication protocol. The adversary<br />
could, in<strong>de</strong>ed, perform this. However the attack will not be successful, as the first<br />
part of the data carrier(the onioned data) requires encryption which requires the knowledge<br />
of the no<strong>de</strong>’s shared key. When the carrier returns to the gateway, a broken carrier<br />
can be easily verified, by checking each onion layer. This kind of attack may only be<br />
successful if the attacker controls at least r − 1 no<strong>de</strong>s in the network, where r is the previously<br />
<strong>de</strong>fined length of the route. In this scenario, the attacker could intentionally forward<br />
the carrier to the compromised no<strong>de</strong>s and lastly forward to a target no<strong>de</strong>. Hence r should<br />
be large enough to avoid this kind of attack, but shall not be so large, as the carrier’s size<br />
increases along the route.<br />
4. Related Work<br />
Anonymity in Wireless Mesh Networks has gained attention in the literature. Wu<br />
and Li <strong>de</strong>signed a robust protocol to protect against aggressive global adversaries<br />
[Wu and Li 2006]. They employ both cryptography and redundancy to protect against<br />
traffic analysis and flow tracing attacks. However, their Private Onion Ring protocol<br />
is mainly vulnerable to the so-called intersection attack. To overcome this problem,<br />
[Li et al. 2009] proposed a new protocol based on a multilayer onion ring approach. In<br />
[Wu et al. 2006], the authors propose the use of multi-path communication to achieve privacy.<br />
However, the protocol cannot <strong>de</strong>fend against a powerful global attacker who is able<br />
to observe most traffic in the network.<br />
Another solution related to ours is the one proposed in [Islam et al. 2008], where<br />
347
the authors work on a 3-tier architecture and propose a secure mechanism to anonymously<br />
authenticate mesh clients to mesh routers. To achieve this, they employ Chaum’s blind<br />
signature scheme. However, their solution only works if the communication between<br />
mesh clients and routers are single-hop. Based on this same architecture, a recent work<br />
[Wan et al. 2009] presents two protocols for privacy protection in WMN in a metropolitan<br />
scale. In a basic protocol, group signatures are used to authenticate mesh clients to mesh<br />
routers. This approach achieves privacy against eavesdroppers, but it reveals the client’s<br />
i<strong>de</strong>ntity to mesh routers. To solve this, the authors propose an advanced protocol which<br />
uses pairwise shared secrets along with group signatures to keep mesh clients anonymous<br />
from mesh routers.<br />
5. Conclusion<br />
This work presented a solution based on some of the principles employed by Wu and Li’s<br />
protocol to address the challenge of achieving anonymous communication in WMN. The<br />
solution avoids that a no<strong>de</strong> directly sends data to the gateway router. Instead, it waits for a<br />
token to arrive and, thus, anonymously communicating. Our protocol makes it difficulty<br />
for an adversary launching the so-called intersection attack, due to the non-<strong>de</strong>terministic<br />
feature of the routing protocol. In addition, we have produced a more effective solution,<br />
since mesh no<strong>de</strong>s can simultaneously communicate with the gateway within the same<br />
session.<br />
Acknowledgment - This work was partially supported by SEDEC and FAPESPA.<br />
References<br />
Akyildiz, I. F., Wang, X., and Wang, W. (2005).<br />
Computer Networks, 47(4):445–487.<br />
Wireless mesh networks: a survey.<br />
Daemen, J. and Rijmen, V. (2002). The Design of Rijndael: AES - The Advanced Encryption<br />
Standard. Springer.<br />
Gamal, T. E. (1985). A public key cryptosystem and a signature scheme based on discrete<br />
logarithms. IEEE Transactions on Information Theory, 31(4):469–472.<br />
Islam, S., Hamid, A., Hong, C. S., and Chang, B.-H. (2008). Preserving i<strong>de</strong>ntity privacy in<br />
wireless mesh networks. In Information Networking, 2008. ICOIN 2008. International<br />
Conference on, pages 1 –5.<br />
Li, R., Pang, L., Pei, Q., and Xiao, G. (2009). Anonymous communication in wireless<br />
mesh network. In CIS (2), pages 416–420. IEEE Computer Society.<br />
Syverson, P. F., Goldschlag, D. M., and Reed, M. G. (1997). Anonymous connections<br />
and onion routing. In IEEE Symposium on Security and Privacy, pages 44–54. IEEE<br />
Computer Society.<br />
Wan, Z., Ren, K., Zhu, B., Preneel, B., and Gu, M. (2009). Anonymous user communication<br />
for privacy protection in wireless metropolitan mesh networks. In Proceedings<br />
of the 4th International Symposium on Information, Computer, and Communications<br />
Security, ASIACCS ’09, pages 368–371, New York, NY, USA. ACM.<br />
Wu, T., Xue, Y., and Cui, Y. (2006). Preserving traffic privacy in wireless mesh networks.<br />
In WOWMOM, pages 459–461. IEEE Computer Society.<br />
Wu, X. and Li, N. (2006). Achieving privacy in mesh networks. In SASN, pages 13–22.<br />
348
Avaliação do Impacto do Uso <strong>de</strong> Mecanismos <strong>de</strong> Segurança<br />
em uma Aplicação Distribuída que Utiliza Re<strong>de</strong>s Veiculares<br />
Ramon Rodrigues Rita, Michelle Silva Wangham<br />
Curso <strong>de</strong> <strong>Engenharia</strong> <strong>de</strong> Computação – Universida<strong>de</strong> do Vale do Itajaí (UNIVALI)<br />
ramonrr@br.com.br, wangham@gmail.com<br />
Resumo. As re<strong>de</strong>s veiculares são formadas entre veículos ou entre veículos e a<br />
infraestrutura localizada nas ruas. Há muitos obstáculos para adoção <strong>de</strong>stas<br />
re<strong>de</strong>s, entre estes, <strong>de</strong>staca-se a segurança na comunicação, <strong>de</strong>vido aos<br />
possíveis ataques <strong>de</strong> usuários ou nós maliciosos. Este trabalho objetiva<br />
avaliar o uso <strong>de</strong> mecanismos <strong>de</strong> segurança capazes <strong>de</strong> garantir a<br />
autenticida<strong>de</strong> e a integrida<strong>de</strong> das informações em uma aplicação distribuída<br />
que utiliza re<strong>de</strong>s veiculares.<br />
Abstract. Vehicular networks are formed among vehicles or among vehicles<br />
and infrastructure located on the road. There are many obstacles for their<br />
wi<strong>de</strong>spread adoption. Among these, there is secure communication due to<br />
possible attacks by malicious users or no<strong>de</strong>s. This work aims to evaluate the<br />
use of security mechanisms able to ensure the authenticity and integrity of<br />
information in a distributed application that uses a vehicle network.<br />
1. Introdução<br />
Os nós que compõem as re<strong>de</strong>s veiculares são os próprios veículos, criando assim<br />
características peculiares <strong>de</strong>ste tipo <strong>de</strong> re<strong>de</strong>, como alta mobilida<strong>de</strong> dos nós, enlaces<br />
intermitentes e requisitos estritos <strong>de</strong> latência. A promessa <strong>de</strong> aumento <strong>de</strong> segurança no<br />
trânsito tem sido um dos principais incentivos à expansão <strong>de</strong>stas re<strong>de</strong>s. No entanto, a<br />
transmissão pelo ar como meio <strong>de</strong> comunicação, a ausência <strong>de</strong> infraestrutura e o<br />
encaminhamento colaborativo das mensagens fazem com que as re<strong>de</strong>s veiculares<br />
possuam vulnerabilida<strong>de</strong>s específicas [Alves et al, 2008]. Raya et al. (2005) consi<strong>de</strong>ram<br />
a segurança em re<strong>de</strong>s veiculares um fator que precisa ser observado, pois os possíveis<br />
ataques po<strong>de</strong>m ter graves consequências, como por exemplo, em aplicações <strong>de</strong><br />
sinalização <strong>de</strong> trânsito, em que há vidas humanas envolvidas.<br />
Em geral, as aplicações <strong>de</strong> segurança no trânsito têm por objetivo reduzir o<br />
número e a gravida<strong>de</strong> dos aci<strong>de</strong>ntes. Estas aplicações possuem caráter preventivo e<br />
emergencial, em que o principal <strong>de</strong>safio é divulgar rapidamente as informações para que<br />
o condutor tenha tempo para reagir. Em geral, aplicações <strong>de</strong> segurança restringem a<br />
divulgação das informações apenas aos nós localizados próximos ao local em que foi<br />
i<strong>de</strong>ntificada a situação <strong>de</strong> perigo [ALVES et al, 2006]. O sucesso das aplicações em<br />
VANETs <strong>de</strong>pen<strong>de</strong> principalmente da cooperação <strong>de</strong> todos os membros, em prol do<br />
benefício coletivo. Entretanto, interesses difusos po<strong>de</strong>m levar os membros da re<strong>de</strong> a<br />
tentar manipular o comportamento dos outros veículos, <strong>de</strong> forma que seus objetivos<br />
sejam satisfeitos [PAULA, 2009].<br />
Entre as aplicações que utilizam re<strong>de</strong>s veiculares, cita-se a aplicação RAMS<br />
(Road Alert Message Service), <strong>de</strong>senvolvida por Oliveira (2010), que tem por objetivo<br />
349
enviar, receber e repassar sinalizações <strong>de</strong> alertas em rodovias. As mensagens são<br />
enviadas através da utilização <strong>de</strong> um protocolo <strong>de</strong> disseminação baseado em inundação<br />
e múltiplos saltos. A Figura 1 apresenta a visão geral <strong>de</strong>sta aplicação.<br />
Figura 1: Visão Geral da Aplicação RAMS<br />
Conforme ilustrado na Figura 1, o funcionamento <strong>de</strong>ste sistema consiste nos<br />
seguintes passos:<br />
1 – O operador se autentica na aplicação RAMS Manager e cria o alerta a ser<br />
enviado;<br />
2 – O alerta é enviado por difusão para os nós mais próximos;<br />
3 – O RAMS Mobile recebe o alerta e checa se o mesmo já foi recebido. Caso<br />
seja uma nova mensagem, é repassada aos nós vizinhos. Caso contrário, o alerta é<br />
<strong>de</strong>scartado;<br />
4 – O RAMS Mobile disponibiliza o alerta ao condutor.<br />
Os requisitos <strong>de</strong> segurança mais importantes em re<strong>de</strong>s veiculares são a<br />
autenticida<strong>de</strong> dos nós, a integrida<strong>de</strong>, a disponibilida<strong>de</strong>, a privacida<strong>de</strong> e o controle <strong>de</strong><br />
acesso [Raya et al. 2005]. Além disto, segundo os autores, as aplicações <strong>de</strong> segurança<br />
no trânsito impõem requisitos estritos <strong>de</strong> latência. Questões como estas <strong>de</strong>monstram que<br />
os requisitos <strong>de</strong> segurança computacional <strong>de</strong>vem ser respeitados no <strong>de</strong>senvolvimento<br />
<strong>de</strong>stas aplicações. Este trabalho é caracterizado como uma pesquisa aplicada, cujo<br />
objetivo é avaliar o impacto do uso <strong>de</strong> mecanismos <strong>de</strong> segurança que provêem a<br />
integrida<strong>de</strong> e a autenticida<strong>de</strong> <strong>de</strong> mensagens em uma aplicação voltada à segurança no<br />
trânsito, que utiliza re<strong>de</strong>s veiculares, o sistema RAMS.<br />
2. Segurança em Re<strong>de</strong>s Veiculares<br />
350
A segurança em VANETs é um fator bastante relevante que precisa ser observado, pois<br />
como quaisquer re<strong>de</strong>s <strong>de</strong> computadores estas estão suscetíveis a ataques por nós mal<br />
intencionados [RAYA et al., 2005]. Os requisitos <strong>de</strong> segurança a serem atendidos em<br />
re<strong>de</strong>s veiculares <strong>de</strong>pen<strong>de</strong>m principalmente do tipo <strong>de</strong> aplicação.<br />
Dentre os requisitos <strong>de</strong> segurança, <strong>de</strong>stacam-se: autenticida<strong>de</strong>, integrida<strong>de</strong>,<br />
disponibilida<strong>de</strong>, privacida<strong>de</strong> e controle <strong>de</strong> acesso. A autenticação pelo fato <strong>de</strong> i<strong>de</strong>ntificar<br />
a i<strong>de</strong>ntida<strong>de</strong> do remetente <strong>de</strong> cada mensagem recebida. A integrida<strong>de</strong> para evitar que um<br />
intruso seja capaz <strong>de</strong> alterar mensagens legítimas. O anonimato e privacida<strong>de</strong> são<br />
necessários para evitar que veículos possam ser rastreados bem como também<br />
localizado. E o controle <strong>de</strong> acesso para garantir que os nós realizem somente aquilo que<br />
lhes foi autorizado [Raya et al. 2005] [ALVES et al., 2008].<br />
Atualmente, muitos mecanismos <strong>de</strong> segurança estão sendo <strong>de</strong>senvolvidos e<br />
empregados para evitar ou minimizar os ataques contra aplicações <strong>de</strong> re<strong>de</strong>s veiculares.<br />
No entanto, <strong>de</strong>vido às suas características, tais como alta mobilida<strong>de</strong> dos nós, enlaces<br />
intermitentes e requisitos estritos <strong>de</strong> latência, muitos mecanismos <strong>de</strong> segurança não<br />
apresentam <strong>de</strong>sempenho satisfatório.<br />
3. Avaliação do Impacto do Uso <strong>de</strong> Mecanismos <strong>de</strong> Autenticação<br />
Este trabalho teve como foco avaliar os impactos (latência da re<strong>de</strong>, mobilida<strong>de</strong> e<br />
<strong>de</strong>nsida<strong>de</strong> dos nós) <strong>de</strong>correntes da inserção dos mecanismos <strong>de</strong> segurança em uma<br />
aplicação que utiliza re<strong>de</strong>s veiculares para disseminação <strong>de</strong> alertas em rodovias, a<br />
aplicação RAMS. Visando avaliar esta sobrecarga, foram realizadas simulações, pois<br />
para testes em um ambiente real seria necessário utilizar veículos, condutores e<br />
equipamentos, o que acaba por elevar os custos. Além disto, torna-se difícil por se tratar<br />
<strong>de</strong> um ambiente com diversas variáveis, que em alguns momentos po<strong>de</strong>m não se<br />
mostrar satisfatórias para os testes. Já a utilização <strong>de</strong> simuladores permite o controle<br />
sobre o ambiente e consome menos recursos.<br />
A aplicação RAMS foi escolhida por tratar-se <strong>de</strong> uma aplicação que contribui<br />
com a segurança no trânsito das rodovias, mas que em sua versão original [OLIVEIRA,<br />
2010] não se preocupa com os aspectos <strong>de</strong> segurança da informação.<br />
Visando i<strong>de</strong>ntificar quais mecanismos são a<strong>de</strong>quados para prover a integrida<strong>de</strong> e<br />
autenticida<strong>de</strong> das mensagens trocadas no sistema RAMS, uma análise preliminar dos<br />
mecanismos <strong>de</strong> segurança foi realizada, sendo que alguns se mostraram inviáveis antes<br />
mesmo <strong>de</strong> serem implementados. Entre estes, citam-se o Protocolo TESLA que, apesar<br />
<strong>de</strong> ser indicado para comunicação broadcast, se mostra <strong>de</strong>sfavorável para comunicação<br />
em múltiplos saltos, pois este impe<strong>de</strong> que o criador da mensagem calcule quanto tempo<br />
será necessário para que a mensagem chegue a todos os nós da re<strong>de</strong> e por assumir que<br />
os nós <strong>de</strong>vem se autenticar antes do início <strong>de</strong> cada transmissão. A solução baseada em<br />
Códigos <strong>de</strong> Autenticação <strong>de</strong> Mensagem (MAC) também não é indicada para<br />
comunicação broadcast, por exigir que todos os <strong>de</strong>stinatários conheçam a chave MAC<br />
dos emitentes.<br />
Outro mecanismo <strong>de</strong> segurança utilizado em re<strong>de</strong>s veiculares, proposto por<br />
Zhang et al. (2008), consiste em uma solução híbrida, que utiliza tanto assinaturas<br />
digitais quanto códigos <strong>de</strong> autenticação <strong>de</strong> mensagens, mas que se mostra <strong>de</strong>sfavorável<br />
para a aplicação RAMS por exigir que todas as verificações <strong>de</strong> assinatura sejam<br />
realizadas por uma autorida<strong>de</strong> centralizadora. Isto implica em aumento nos tempos <strong>de</strong><br />
351
transmissão e recepção das mensagens, indo contra o objetivo principal <strong>de</strong>sta aplicação,<br />
que é disseminar as mensagens <strong>de</strong> alerta o mais rápido possível.<br />
A partir <strong>de</strong>sta análise, <strong>de</strong>finiu-se que o recurso mais a<strong>de</strong>quado para garantir as<br />
referidas proprieda<strong>de</strong>s <strong>de</strong> segurança é a implantação <strong>de</strong> uma solução que utiliza<br />
assinaturas digitais. Para avaliar seu custo computacional, esta técnica foi implementada<br />
na aplicação alvo, sendo que dois algoritmos <strong>de</strong> assinaturas foram consi<strong>de</strong>rados nos<br />
experimentos simulados, o algoritmo DSA (Digital Signature Algorithm), por ser<br />
amplamente utilizado e o algoritmo ECDSA (Elliptic Curve Digital Signature<br />
Algorithm), pois requer um menor espaço <strong>de</strong> armazenamento, utiliza chaves menores e<br />
por usar operações <strong>de</strong> soma ao invés <strong>de</strong> multiplicação e somas cumulativas ao invés <strong>de</strong><br />
exponenciação.<br />
Para realização das simulações a fim <strong>de</strong> obter os dados necessários para<br />
avaliação da aplicação, foi escolhido o simulador OMNET++ (Objective Modular<br />
Network Testbed in C++), por apresentar alto nível <strong>de</strong> abstração dos mecanismos <strong>de</strong><br />
simulação <strong>de</strong> eventos discretos e maior flexibilida<strong>de</strong>, que permite uma simulação com<br />
nível <strong>de</strong> <strong>de</strong>talhes satisfatório. A fim <strong>de</strong> tornar as simulações mais realistas, foi utilizada<br />
uma ferramenta geradora <strong>de</strong> cenários <strong>de</strong> mobilida<strong>de</strong>, o SUMO (Simulation of Urban<br />
Mobility), sendo que este po<strong>de</strong> ser facilmente integrado ao simulador OMNET++<br />
(acoplamento bidirecional).<br />
Para implementação <strong>de</strong> assinaturas digitais, foi utilizada a biblioteca Crypto++ ®<br />
Library 5.6.1 1 , uma biblioteca criptográfica escrita em C++, que inclui um gran<strong>de</strong><br />
número <strong>de</strong> algoritmos. Sua infraestrutura é substancialmente baseada em templates e<br />
herança <strong>de</strong> classes. Seus arquivos individuais são <strong>de</strong> domínio público. Neste projeto,<br />
foram utilizados dois algoritmos <strong>de</strong>sta biblioteca, obtendo assim assinaturas através dos<br />
métodos DSA e ECDSA.<br />
Para o algoritmo DSA, foram utilizadas chaves <strong>de</strong> 1024 bits. Com o algoritmo<br />
ECDSA, este tamanho foi reduzido para 160 bits. O algoritmo DSA possui um tamanho<br />
da assinatura igual a 160 bits, já no ECDSA, este tamanho varia <strong>de</strong> acordo com a curva<br />
elíptica utilizada. Neste trabalho, a assinatura foi gerada com a curva “secp160r1”,<br />
apresentando um tamanho <strong>de</strong> assinatura igual a 42 bits. Esta escolha se <strong>de</strong>u após uma<br />
análise das curvas elípticas disponíveis para utilização na biblioteca Crypto++, tendo<br />
esta se mostrado favorável às necessida<strong>de</strong>s <strong>de</strong> segurança exigidas pela aplicação.<br />
As alterações realizadas no projeto inicial da aplicação RAMS não se<br />
restringiram apenas à inclusão dos mecanismos <strong>de</strong> segurança da informação, visto que<br />
foram i<strong>de</strong>ntificados outros aspectos que po<strong>de</strong>riam ser modificados a fim <strong>de</strong> melhorar o<br />
<strong>de</strong>sempenho e a confiabilida<strong>de</strong> <strong>de</strong>ste sistema.<br />
Dentre estes aprimoramentos, cita-se a retirada da camada <strong>de</strong> transporte,<br />
eliminando assim a utilização do protocolo UDP para a transmissão das mensagens.<br />
Este protocolo não oferece garantias <strong>de</strong> que o pacote chegará ao seu <strong>de</strong>stino, não<br />
trazendo nenhum benefício para aplicação. Pelo contrário, sua utilização só aumenta o<br />
tempo <strong>de</strong> transmissão da mensagem.<br />
A camada <strong>de</strong> re<strong>de</strong> também foi eliminada do projeto, sendo <strong>de</strong>scartado o uso do<br />
protocolo IP na transmissão das mensagens. Este protocolo oferece um serviço <strong>de</strong><br />
1 Disponível em http://www.cryptopp.com/<br />
352
datagramas não confiável, não trazendo vantagens à aplicação, pois os pacotes po<strong>de</strong>m<br />
chegar <strong>de</strong>sor<strong>de</strong>nados, duplicados, ou até mesmo serem perdidos. Por se tratar <strong>de</strong> uma<br />
aplicação que objetiva enviar os alertas por meio <strong>de</strong> difusão (broadcast), utilizar<br />
somente as camadas <strong>de</strong> enlace e física do protocolo 802.11g se mostrou satisfatório.<br />
Outra alteração bastante notável foi a mudança na maneira como a mensagem é<br />
criada. No método anterior, a mensagem era constituída por um buffer <strong>de</strong> um formato,<br />
em que os campos estavam separados entre si através <strong>de</strong> <strong>de</strong>limitadores. Para obter<br />
<strong>de</strong>terminado campo, era necessário percorrer todo este buffer (através <strong>de</strong> um parser) até<br />
encontrá-lo. Outra <strong>de</strong>svantagem está na adição ou retirada <strong>de</strong> campos na mensagem.<br />
Caso um <strong>de</strong>stes procedimentos fosse necessário (<strong>de</strong> fato a aplicação RAMS modificada<br />
passou a possuir mais campos), seria necessário alterar este parser em todo o código,<br />
alterando a posição dos campos nesta rotina.<br />
No aprimoramento da aplicação RAMS realizado neste trabalho, foram<br />
aplicados os conceitos <strong>de</strong> orientação a objetos, utilizando-se do encapsulamento <strong>de</strong><br />
dados. Dentre outras vantagens, cita-se o fato <strong>de</strong> que toda parte encapsulada po<strong>de</strong> ser<br />
modificada sem que os usuários da classe em questão sejam afetados. Além disto, o<br />
encapsulamento protege o acesso direto aos atributos <strong>de</strong> uma instância fora da classe no<br />
qual estes foram <strong>de</strong>clarados. Encapsular os atributos também ajuda a garantir que o<br />
estado e o comportamento <strong>de</strong> <strong>de</strong>terminado objeto se mantenham coesos.<br />
Na versão modificada do sistema RAMS, caso seja necessário acrescentar outro<br />
campo à mensagem, basta adicionar um atributo à classe. O acesso a cada atributo da<br />
mensagem passa a ser mais simples, através dos métodos get e set. O parser do buffer é<br />
então feito em um único momento, evitando que se percorra todo o código da aplicação<br />
para alterá-lo quando necessário. Isto facilita a manutenibilida<strong>de</strong> do sistema.<br />
A Figura 2 representa a estrutura <strong>de</strong> uma mensagem <strong>de</strong> alerta do sistema RAMS<br />
com autenticação <strong>de</strong> mensagens. Com o objetivo <strong>de</strong> evitar o reenvio <strong>de</strong> alertas já<br />
emitidos, ao receber a mensagem, a aplicação RAMS Mobile realiza uma comparação<br />
entre o hash gerado a partir dos campos endMAC, Tipo, Descrição, Coor<strong>de</strong>nadas e<br />
Timestamp das mensagens. Isto se faz necessário, pois o campo TTL não é cifrado,<br />
po<strong>de</strong>ndo ser facilmente alterado por nós maliciosos.<br />
Figura 2: Estrutura da Mensagem <strong>de</strong> Alerta<br />
Foram modificados também os critérios <strong>de</strong> comparação para reenvio da<br />
mensagem. Além <strong>de</strong> verificar a autenticida<strong>de</strong> e integrida<strong>de</strong> da mensagem através da<br />
assinatura digital, os campos timestamp, a distância do local do aci<strong>de</strong>nte (por meio das<br />
coor<strong>de</strong>nadas) e o TTL são analisados. Diferente do proposto por Oliveira (2010), o<br />
campo timestamp <strong>de</strong>ve ser verificado no recebimento da mensagem, sendo utilizado<br />
como meio para garantir que a mensagem <strong>de</strong> alerta foi recentemente criada. Para cada<br />
tipo <strong>de</strong> mensagem, é configurado o tempo máximo a ser consi<strong>de</strong>rado para reenvio da<br />
mensagem. Desta forma, é possível evitar que mensagens antigas, que não refletem<br />
mais a situação atual da rodovia sejam retransmitidas.<br />
353
Outro aprimoramento na aplicação consiste na verificação da distância<br />
euclidiana entre o recebimento da mensagem e o local do aci<strong>de</strong>nte, obtida através das<br />
coor<strong>de</strong>nadas X e Y, servindo como um critério <strong>de</strong> parada <strong>de</strong> reenvio das mensagens. A<br />
cada tipo <strong>de</strong> alerta é atribuída uma distância máxima, que comparada ao local <strong>de</strong><br />
recebimento da mensagem, <strong>de</strong>termina se este alerta <strong>de</strong>ve ou não ser retransmitido aos<br />
outros condutores.<br />
Por exemplo, para uma mensagem do tipo “Aci<strong>de</strong>nte com Vítimas”, a distância<br />
máxima <strong>de</strong>finida para envio é <strong>de</strong> 1000 metros. Ao receber um alerta, a aplicação RAMS<br />
Mobile calcula a distância entre o local que foi gerada a mensagem e o local em que este<br />
veículo se encontra. Caso a distância calculada seja maior que a distância máxima<br />
<strong>de</strong>finida, esta mensagem é então <strong>de</strong>scartada.<br />
4. Simulações e Avaliação dos Resultados<br />
Com o objetivo <strong>de</strong> avaliar o impacto ocasionado pela inserção dos mecanismos <strong>de</strong><br />
segurança, foram realizadas simulações. O cenário <strong>de</strong> mobilida<strong>de</strong> utilizado para as<br />
simulações é composto por três elementos e foi <strong>de</strong>senvolvido por Oliveira (2010), com<br />
utilização da ferramenta geradora <strong>de</strong> cenários <strong>de</strong> mobilida<strong>de</strong> SUMO. As etapas para<br />
criação <strong>de</strong>ste cenário consistem na criação da via <strong>de</strong> circulação, na caracterização dos<br />
veículos e na geração dos movimentos <strong>de</strong>stes veículos.<br />
Para criação da via <strong>de</strong> circulação, Oliveira (2010) consi<strong>de</strong>rou um trecho real da<br />
rodovia BR-101 entre os municípios <strong>de</strong> Itapema e Porto Belo, no estado <strong>de</strong> Santa<br />
Catarina (cerca <strong>de</strong> 50 quilômetros da capital, Florianópolis). Este trecho possui cinco<br />
quilômetros <strong>de</strong> extensão e é composto por dois sentidos e duas faixas para cada sentido,<br />
totalizando quatro pistas <strong>de</strong> circulação. A velocida<strong>de</strong> máxima configurada segue a<br />
legislação, 100 Km/h. No cenário <strong>de</strong>senvolvido por Oliveira (2010), o nó fixo (que<br />
possui a aplicação RAMS Manager), responsável por criar e disseminar o alerta, está<br />
posicionado no início do quilometro cinco, mesmo local em que ocorre o aci<strong>de</strong>nte. Este<br />
aci<strong>de</strong>nte obstrui as duas pistas sentido sul.<br />
A fim <strong>de</strong> i<strong>de</strong>ntificar um valor padrão para o TTL (responsável por <strong>de</strong>terminar o<br />
número <strong>de</strong> saltos <strong>de</strong> cada alerta na re<strong>de</strong>), foram realizadas simulações com diferentes<br />
valores, po<strong>de</strong>ndo assim <strong>de</strong>finir qual se torna mais a<strong>de</strong>quado para a aplicação. Para estas<br />
simulações, foi utilizado um cenário com 150 veículos, levando em consi<strong>de</strong>ração o<br />
número <strong>de</strong> pacotes gerados, as colisões ocorridas e a quantida<strong>de</strong> <strong>de</strong> nós atendidos.<br />
Consi<strong>de</strong>rou-se que o valor <strong>de</strong> TTL i<strong>de</strong>al para aplicação é cinco, visto que ao realizar as<br />
simulações com este valor, todos os nós da re<strong>de</strong> são atendidos, e é o valor que apresenta<br />
a menor proporção <strong>de</strong> pacotes gerados e colididos após esta totalida<strong>de</strong> <strong>de</strong> atendimento.<br />
Para cada simulação realizada foi consi<strong>de</strong>rado um tempo igual a cinco minutos,<br />
ao fim do qual os dados foram coletados e analisados. O intervalo entre retransmissões<br />
da aplicação RAMS Manager foi <strong>de</strong> 20 segundos, <strong>de</strong> acordo com os testes realizados<br />
em Oliveira (2010). Estas simulações foram realizadas em um computador com<br />
processador Intel Core i3, com frequência <strong>de</strong> clock <strong>de</strong> 2,27 GHz, 3GB <strong>de</strong> memória<br />
RAM e o sistema operacional Ubuntu versão 11.4, baseado em Linux.<br />
Através <strong>de</strong> uma análise comparativa dos resultados encontrados antes e após a<br />
inclusão dos mecanismos, foi possível realizar uma avaliação quantitativa dos impactos<br />
causados à aplicação, levando em consi<strong>de</strong>ração o tempo <strong>de</strong> atraso no envio e<br />
354
ecebimento das mensagens, o número <strong>de</strong> colisões <strong>de</strong> pacotes e a quantida<strong>de</strong> <strong>de</strong> nós<br />
atendidos.<br />
A fim <strong>de</strong> avaliar o impacto da utilização <strong>de</strong> assinaturas digitais na aplicação<br />
RAMS, foram realizadas simulações em <strong>de</strong>z diferentes cenários. Estes cenários diferem<br />
apenas na quantida<strong>de</strong> <strong>de</strong> veículos que circulam na via. Para cada cenário, foram<br />
realizados três tipos <strong>de</strong> simulação. O primeiro tipo refere-se à aplicação RAMS sem os<br />
mecanismos <strong>de</strong> segurança, servindo como valor base para as comparações. O segundo<br />
tipo consiste na assinatura digital das mensagens através do algoritmo DSA. Por fim,<br />
têm-se as simulações em que as mensagens são assinadas através do algoritmo ECDSA.<br />
Para cada um dos cenários simulados, foi analisada a quantida<strong>de</strong> <strong>de</strong> nós que<br />
receberam o alerta emitido pela aplicação RAMS. Esta contagem inclui tanto o<br />
recebimento dos alertas criados pelo operador através da aplicação RAMS Manager,<br />
quanto os recebidos através da aplicação RAMS Mobile embarcada em outros veículos,<br />
responsável pelo reenvio <strong>de</strong>stas mensagens.<br />
Em oito dos <strong>de</strong>z cenários simulados sem o uso da assinatura digital, todos os<br />
veículos receberam o alerta do aci<strong>de</strong>nte ocorrido. No entanto, nos outros dois cenários,<br />
esta totalida<strong>de</strong> <strong>de</strong> atendimento não foi obtida. O primeiro cenário em que nem todos os<br />
nós receberam mensagens é composto por <strong>de</strong>z veículos. Destes, dois veículos não<br />
receberam nenhuma alerta. A mesma situação ocorre no segundo cenário, composto por<br />
20 veículos, em que dois veículos também não receberam o alerta.<br />
Por <strong>de</strong>pen<strong>de</strong>r do encaminhamento colaborativo das mensagens, cenários com<br />
poucos nós apresentam certa dificulda<strong>de</strong> na distribuição das mensagens, pois estes nós<br />
atuam como roteadores no envio das mensagens. Nestes casos, o envio da mensagem<br />
por difusão ocorreu, mas o fato dos veículos estarem distantes uns dos outros impediu<br />
que todos estes nós recebessem o alerta. Conforme mencionado, a distância máxima<br />
para que haja comunicação entre dois veículos foi limitada em 500 metros.<br />
Para os outros dois tipos <strong>de</strong> simulação, utilizando assinaturas digitais com os<br />
diferentes algoritmos, não houve diferença na quantida<strong>de</strong> <strong>de</strong> nós atendidos,<br />
permanecendo os valores supracitados. Isto <strong>de</strong>monstra que a inclusão dos mecanismos<br />
<strong>de</strong> segurança não impe<strong>de</strong> a aplicação RAMS <strong>de</strong> atingir um dos seus principais<br />
objetivos, que é enviar as mensagens ao maior número <strong>de</strong> veículos possível.<br />
Apesar <strong>de</strong> não aten<strong>de</strong>r a todos os veículos em duas situações, os aprimoramentos<br />
não comprometem ou prejudicam a eficácia da aplicação RAMS, pois a quantida<strong>de</strong> <strong>de</strong><br />
veículos nestes dois cenários foge à realida<strong>de</strong> da rodovia, visto que <strong>de</strong> acordo com<br />
informações da Polícia Rodoviária Fe<strong>de</strong>ral, circulam neste local cerca <strong>de</strong> 1880 veículos<br />
por hora, o que representa uma média <strong>de</strong> 156 veículos a cada cinco minutos.<br />
Para auxiliar na avaliação da eficiência e da eficácia da aplicação RAMS<br />
aprimorada, foi levado em consi<strong>de</strong>ração a quantida<strong>de</strong> <strong>de</strong> colisões <strong>de</strong> pacotes na re<strong>de</strong>.<br />
Uma colisão <strong>de</strong> pacotes acontece sempre que dois ou mais nós tentam transmitir dados<br />
ao mesmo tempo. As colisões diminuem o <strong>de</strong>sempenho da re<strong>de</strong>, que fica parada por<br />
alguns milissegundos quando ocorre este evento. A Figura 3 ilustra, para cada cenário<br />
simulado, uma comparação entre a quantida<strong>de</strong> <strong>de</strong> colisões <strong>de</strong> pacotes ocorridas na<br />
aplicação RAMS, antes e após as modificações realizadas neste trabalho, além <strong>de</strong><br />
<strong>de</strong>monstrar a quantida<strong>de</strong> <strong>de</strong> colisões <strong>de</strong> pacotes com os mecanismos <strong>de</strong> segurança<br />
implementados.<br />
355
960<br />
920<br />
880<br />
840<br />
800<br />
760<br />
720<br />
680<br />
640<br />
600<br />
560<br />
520<br />
480<br />
440<br />
400<br />
360<br />
320<br />
280<br />
240<br />
200<br />
160<br />
120<br />
80<br />
40<br />
0<br />
10 20 30 48 97 146 150 160 170 292<br />
RAMS Original<br />
Sem Mecanismos<br />
DSA<br />
ECDSA<br />
Figura 3: Quantida<strong>de</strong> <strong>de</strong> Colisões <strong>de</strong> Pacotes em cada Cenário<br />
Conforme ilustrado na Figura 3, houve uma redução consi<strong>de</strong>rável na quantida<strong>de</strong><br />
<strong>de</strong> colisões <strong>de</strong> pacotes quando a aplicação RAMS original é comparada com a<br />
aprimorada. Isto ocorreu <strong>de</strong>vido à retirada das camadas UDP e IP da aplicação,<br />
conforme citado na seção referente aos aprimoramentos realizados na aplicação RAMS.<br />
Ainda analisando a Figura 3, percebe-se que houve uma pequena variação na<br />
quantida<strong>de</strong> <strong>de</strong> colisões <strong>de</strong> pacotes, se comparadas às simulações sem mecanismos <strong>de</strong><br />
segurança às com este mecanismo. Isto <strong>de</strong>monstra que as modificações realizadas neste<br />
trabalho melhoraram o <strong>de</strong>sempenho da re<strong>de</strong> veicular simulada, e mesmo com a inclusão<br />
dos mecanismos <strong>de</strong> segurança, este <strong>de</strong>sempenho não foi prejudicado.<br />
Outro critério levado em consi<strong>de</strong>ração para avaliar a eficiência e a eficácia da<br />
aplicação RAMS aprimorada foi o atraso no tempo <strong>de</strong> criação e envio da mensagem<br />
pela aplicação RAMS Manager e seu recebimento pela aplicação RAMS Mobile,<br />
embarcada nos veículos participantes da re<strong>de</strong>. Os resultados das simulações<br />
<strong>de</strong>monstraram que a utilização <strong>de</strong> assinaturas digitais aumenta o tempo necessário para<br />
criação e envio do alerta. Este tempo extra refere-se à soma dos tempos necessários para<br />
a geração da chave privada e para a assinatura do alerta. O algoritmo ECDSA utilizou<br />
uma quantia maior <strong>de</strong> tempo do que o DSA para cumprir estes procedimentos.<br />
Apesar <strong>de</strong> não po<strong>de</strong>r afirmar que estas diferenças são <strong>de</strong>sprezíveis no caso <strong>de</strong><br />
um ambiente real, percebe-se que estes valores são pequenos, não ocasionando impactos<br />
consi<strong>de</strong>ráveis à aplicação RAMS. Além do tempo <strong>de</strong> criação, é necessário analisar o<br />
tempo <strong>de</strong> recebimento dos alertas, para verificar se houve impacto na aplicação <strong>de</strong>vido à<br />
utilização das assinaturas digitais. A Figura 4 a seguir representa um comparativo entre<br />
o tempo <strong>de</strong> recebimento dos alertas para um cenário com 150 veículos, em cada tipo <strong>de</strong><br />
simulação. O eixo “y” representa o tempo <strong>de</strong> recebimento do alerta e cada veículo é<br />
representado por um ponto no eixo “x”.<br />
356
1000<br />
100<br />
10<br />
ECDSA<br />
DSA<br />
1<br />
0,1<br />
Sem<br />
0,01<br />
Mecanismo<br />
0,001<br />
0,0001<br />
Figura 4: Tempo <strong>de</strong> Recebimento das Mensagens – Cenário com 150 veículos<br />
A sobreposição das curvas formadas pelo tempo <strong>de</strong> recebimento das mensagens<br />
<strong>de</strong> alerta, ilustrada na Figura 4 <strong>de</strong>monstra que houve um acréscimo no tempo necessário<br />
para recebimento dos alertas pela aplicação RAMS Mobile com a utilização dos<br />
mecanismos <strong>de</strong> segurança. Este tempo refere-se à verificação da assinatura digital.<br />
Utilizando o algoritmo DSA, o tempo necessário para este procedimento foi menor<br />
comparado ao algoritmo ECDSA.<br />
Neste cenário, a diferença entre o tempo necessário para o primeiro veículo<br />
receber o alerta em uma simulação sem mecanismos <strong>de</strong> segurança e com assinatura<br />
através do método DSA é <strong>de</strong> 0,21 milissegundos. Utilizando o método ECDSA, esta<br />
diferença sobe para 6,9 milissegundos.<br />
Para o centésimo veículo a receber o alerta, a diferença entre o tempo <strong>de</strong><br />
recebimento sem mecanismos <strong>de</strong> segurança e com assinatura através do algoritmo DSA<br />
é <strong>de</strong> 32,1 milissegundos. Com o algoritmo ECDSA, este valor sobe para 0,34 segundos.<br />
Mesmo tendo sido encontradas alterações nos tempos necessários para o envio e o<br />
recebimento das mensagens <strong>de</strong> alerta, para este critério a utilização <strong>de</strong> assinaturas<br />
digitais na aplicação RAMS se mostra favorável, pois os prejuízos que po<strong>de</strong>m vir a ser<br />
causados por nós maliciosos são imensamente maiores do que os mínimos impactos<br />
apresentados nestas simulações.<br />
5. Conclusão<br />
Ao realizar o estudo sobre as ameaças às re<strong>de</strong>s veiculares e seus impactos, foi possível<br />
observar a importância da segurança da comunicação em re<strong>de</strong>s veiculares. Se os<br />
requisitos <strong>de</strong> segurança apresentados não forem respeitados, não somente a aplicação<br />
per<strong>de</strong>rá sua confiabilida<strong>de</strong>, mas também a vida <strong>de</strong> seres humanos po<strong>de</strong> ser colocada em<br />
risco, em função da busca <strong>de</strong> benefícios <strong>de</strong> alguns usuários mal intencionados.<br />
357
Os aprimoramentos realizados na maneira como a mensagem é criada pela<br />
aplicação RAMS Manager melhoraram a manutenção do sistema. Além disto, conforme<br />
os valores encontrados nas simulações, as modificações realizadas também trouxeram<br />
benefícios ao sistema, tais como a diminuição na quantida<strong>de</strong> <strong>de</strong> colisão <strong>de</strong> pacotes e<br />
redução no tempo necessário para envio e recebimento das mensagens <strong>de</strong> alerta.<br />
Em todos os cenários simulados, <strong>de</strong>ntre os três critérios analisados, a utilização<br />
<strong>de</strong> assinaturas digitais apresentou impactos ao sistema em apenas um <strong>de</strong>les, o tempo<br />
necessário para envio e recebimento dos alertas. Nestes testes, o algoritmo DSA se<br />
mostrou mais vantajoso em relação ao algoritmo ECDSA, apresentando tempos<br />
menores tanto para a assinatura da mensagem quanto para sua verificação. Pelo fato dos<br />
dois métodos agregarem o mesmo nível <strong>de</strong> segurança à aplicação, i<strong>de</strong>ntificou-se que<br />
para esta aplicação a melhor forma <strong>de</strong> garantir a autenticida<strong>de</strong> e a integrida<strong>de</strong> dos dados<br />
po<strong>de</strong> ser obtida através da utilização do algoritmo DSA.<br />
Nas simulações realizadas, o impacto ocasionado pela utilização das assinaturas<br />
digitais é não é tão significativo se comparado aos benefícios que a segurança da<br />
informação traz ao sistema, aumentando a sua confiabilida<strong>de</strong>. Além disto, quando a<br />
segurança dos dados não é levada em consi<strong>de</strong>ração, os prejuízos causados pela ação <strong>de</strong><br />
nós maliciosos são difíceis <strong>de</strong> serem mensurados, principalmente em aplicações como<br />
estas, em que há vidas envolvidas.<br />
No entanto, como em qualquer simulação, os resultados encontrados não <strong>de</strong>vem<br />
ser tomados como verda<strong>de</strong> absoluta, mas sim ser interpretados <strong>de</strong> forma cuidadosa,<br />
visto que em um ambiente <strong>de</strong> simulação não são consi<strong>de</strong>rados todos os aspectos da re<strong>de</strong>,<br />
apenas os mais importantes.<br />
Referências<br />
ALVES, R. dos S et al; Uma Análise Experimental da Capacida<strong>de</strong> <strong>de</strong> Re<strong>de</strong>s Ad Hoc Veiculares.<br />
In: SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES E SISTEMAS<br />
DISTRIBUÍDOS, 27., 2008, Recife. SBRC. p.1-6.<br />
ALVES, Rafael dos S.; CAMPBELL, Igor do V.; COUTO, Rodrigo <strong>de</strong> S.; CAMPISTA, Miguel<br />
Elias M.; MORAES, Igor M.; RUBINSTEIN, Marcelo G.; COSTA, Luís Henrique M. K.;<br />
DUARTE, Otto Carlos M. B.; ABDALLA, Michel. Re<strong>de</strong>s Veiculares: Princípios,<br />
Aplicações e Desafios. In: SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES<br />
E SISTEMAS DISTRIBUÍDOS, 2009, Recife. Livro <strong>de</strong> Mini-Cursos... Recife: SBRC,<br />
2006. p.200-246.<br />
OLIVEIRA, R. Desenvolvimento <strong>de</strong> uma aplicação distribuída utilizando re<strong>de</strong>s veiculares para<br />
sinalizar problemas em rodovias. 2010. 107f. Trabalho <strong>de</strong> Conclusão <strong>de</strong> Curso –<br />
Universida<strong>de</strong> do Vale do Itajaí, São José, 2010.<br />
PAULA, WELLINGTON PASSOS DE. Um mecanismo <strong>de</strong> reputação para re<strong>de</strong>s veiculares<br />
tolerantes a atrasos e <strong>de</strong>sconexões. 2009. 94f. Tese. Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Minas Gerais,<br />
Minas Gerais, 2009.<br />
RAYA, M.; HUBAUX, J. P. The security of vehicular ad hoc networks. In: SASN´05:<br />
PROCEEDINGS OF THE 3rd ACM WORKSHOP ON SECURITY OF AD HOC AND<br />
SENSOR NETWORSKS, 2005, New York, 2005, p. 11-21.<br />
ZHANG, C.; LIN, Xiadong; LU, Rongxing; HO, Pin-Pan; SHEN, Xuemin. An efficient<br />
message authentication scheme for vehicular communicatios. In: IEEE TRANSACTIONS<br />
ON VEHICULAR TECHNOLOGY, 57, 2008.<br />
358
Uma Maneira Simples <strong>de</strong> Obter Regiões <strong>de</strong> Interesse em<br />
Imagens <strong>de</strong> Impressões Digitais<br />
Igor L. P. Andrezza 1,2 , Erick V. C. <strong>de</strong> L. Borges 1,2 , Adriano da S. Marinho 1,2 ,<br />
Adriana E. <strong>de</strong> Oliveira 1,2 , José R. T. Marques 2 , Pedro A. Jr. 2 , e Leonardo V.<br />
Batista 1<br />
1 Departamento <strong>de</strong> Informática – Universida<strong>de</strong> Fe<strong>de</strong>ral da Paraíba (UFPB)<br />
58051-900 – João Pessoa – PB – Brasil<br />
2 Departamento <strong>de</strong> Pesquisa e Desenvolvimento, Divisão <strong>de</strong> Segurança<br />
Vsoft Tecnologia, Joao Pessoa, Paraiba<br />
{igor, erick, adrianosmarinho, drill}@di.ufpb.br,<br />
{raphaelmarques, pedro}@vsoft.com.br,<br />
leonardo@di.ufpb.br<br />
Abstract. In or<strong>de</strong>r to use fingerprint images to i<strong>de</strong>ntify people, image<br />
segmentation pre-processing is normally nee<strong>de</strong>d. In this paper, we show a<br />
simple technique to segment fingerprint images in background and<br />
foreground, so as to obtain the Region-Of-Interest (ROI) by using standard<br />
<strong>de</strong>viation, median and binarization filters.<br />
Resumo. Segmentar imagens <strong>de</strong> impressão digital para obter a região <strong>de</strong><br />
interesse (ROI) é uma etapa necessária ao reconhecimento biométrico<br />
automático <strong>de</strong> indivíduos. Neste trabalho, apresentamos um método simples,<br />
que usa os filtros <strong>de</strong> <strong>de</strong>svio-padrão, mediana e binarização, para extração da<br />
região <strong>de</strong> interesse <strong>de</strong> impressões digitais.<br />
1. Introdução<br />
Com a proliferação <strong>de</strong> serviços baseados em Internet, sistemas <strong>de</strong> i<strong>de</strong>ntificação<br />
confiáveis tornaram-se componentes chaves <strong>de</strong> várias aplicações que disponibilizam<br />
serviços para usuários autenticados. Métodos tradicionais para estabelecer a i<strong>de</strong>ntida<strong>de</strong><br />
<strong>de</strong> um usuário incluem mecanismos baseados em conhecimento (e.g., senhas) e<br />
mecanismos baseados em tokens (e.g., cartões <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>). Porém, tais mecanismos<br />
po<strong>de</strong>m ser facilmente perdidos, roubados ou até mesmo manipulados, objetivando um<br />
acesso não autorizado. Neste contexto, entra em cena a autenticação por Biometria<br />
(Ross, Nandakumar, & Jain, 2006).<br />
A Biometria oferece um mecanismo <strong>de</strong> autenticação confiável utilizando traços<br />
(físicos ou comportamentais) que permitam i<strong>de</strong>ntificar usuários baseados em suas<br />
características naturais. Assim, utilizando a Biometria é possível estabelecer a<br />
i<strong>de</strong>ntida<strong>de</strong> <strong>de</strong> um usuário baseado em quem ele é (who you are) ao invés <strong>de</strong> em o que<br />
ele possui (what you possess) ou <strong>de</strong> o que ele lembra (what you remember) (Ross,<br />
Nandakumar, & Jain, 2006).<br />
Atualmente, a impressão digital é o traço biométrico mais utilizado no mundo.<br />
Isto se <strong>de</strong>ve à unicida<strong>de</strong> das mesmas, bem como ao baixo custo associado aos produtos<br />
359
que <strong>de</strong>la se utilizam. I<strong>de</strong>ntificar suspeitos <strong>de</strong> um crime é um exemplo <strong>de</strong> uso prático das<br />
impressões digitais. Sistemas que i<strong>de</strong>ntificam automaticamente indivíduos utilizando<br />
impressões digitais são chamados <strong>de</strong> AFIS (Automatized Fingerprint I<strong>de</strong>ntification<br />
Systems). Neles, normalmente uma etapa <strong>de</strong> segmentação das imagens <strong>de</strong> impressão<br />
digital é necessária, pois separar a região <strong>de</strong> interesse faz com que o tempo <strong>de</strong><br />
processamento diminua e evita erros in<strong>de</strong>sejados (Maltoni, Maio, Jain, & Prabhakar,<br />
2009).<br />
Neste trabalho, apresentamos um método <strong>de</strong> extração da ROI (Region Of<br />
Interest, região <strong>de</strong> interesse) em imagens <strong>de</strong> impressão digital que usa os filtros <strong>de</strong><br />
<strong>de</strong>svio-padrão, mediana e binarização, em <strong>de</strong>trimento <strong>de</strong> métodos complexos que<br />
utilizam classificadores.<br />
2. Fundamentação Teórica<br />
Nesta seção apresentamos os conceitos referentes a biometria, impressões digitais e<br />
segmentação <strong>de</strong> imagens necessários para o entendimento <strong>de</strong>ste trabalho.<br />
2.1 Biometria<br />
O termo Biometria se refere ao uso <strong>de</strong> características físicas ou comportamentais, tais<br />
como face, íris, impressão digital, voz e keystroke (forma <strong>de</strong> digitar), para i<strong>de</strong>ntificar<br />
pessoas automaticamente. Uma vez que os i<strong>de</strong>ntificadores biométricos não po<strong>de</strong>m ser<br />
facilmente extraviados, forjados, ou compartilhados, métodos <strong>de</strong> i<strong>de</strong>ntificação<br />
biométricos são consi<strong>de</strong>rados mais confiáveis do que métodos baseados em tokens<br />
(como smart cards) ou senhas (Maltoni, Maio, Jain, & Prabhakar, 2009). Assim, os<br />
sistemas <strong>de</strong> reconhecimento biométrico estão sendo cada vez mais implantados em um<br />
gran<strong>de</strong> número <strong>de</strong> aplicações governamentais e civis.<br />
Devido ao fato das impressões digitais serem únicas e invariantes em relação à<br />
ida<strong>de</strong> do indivíduo, técnicas <strong>de</strong> reconhecimento utilizando impressões digitais têm sido<br />
amplamente aplicadas em sistemas <strong>de</strong> i<strong>de</strong>ntificação pessoal (Liu, Zhao, Guo, Liang, &<br />
Tian, 2011). Atualmente, o reconhecimento utilizando impressões digitais é o método<br />
mais popular <strong>de</strong> reconhecimento biométrico e é utilizado em todo o mundo pelas<br />
autorida<strong>de</strong>s policiais na procura <strong>de</strong> suspeitos (Zhu, Yin, Hu, & Zhang, 2006).<br />
Apesar <strong>de</strong> ser um método popular, o reconhecimento biométrico utilizando<br />
impressões digitais não é perfeito. Erros que variam <strong>de</strong>s<strong>de</strong> a forma como as impressões<br />
digitais são capturadas pelo sistema até a forma do matching po<strong>de</strong>m ocorrer. Para uma<br />
referência completa dos tipos <strong>de</strong> erros e suas causas, o leitor <strong>de</strong>ve consultar (Maltoni,<br />
Maio, Jain, & Prabhakar, 2009).<br />
2.2 Extração da região <strong>de</strong> interesse em impressões digitais<br />
Uma imagem da impressão digital consiste em cristas (linhas escuras) e vales (linhas em<br />
branco) intercaladas. As terminações e bifurcações das cristas, chamadas minúcias, são<br />
os traços mais característicos da impressão digital (Zhu, Yin, Hu, & Zhang, 2006). A<br />
maioria dos AFIS é baseada em minúcias.<br />
Imagens <strong>de</strong> impressões digitais geralmente precisam ser segmentadas em<br />
segundo plano e primeiro plano (on<strong>de</strong> o primeiro plano é a região <strong>de</strong> interesse) para<br />
360
emover as regiões que não contêm informações úteis antes <strong>de</strong> executar outros passos <strong>de</strong><br />
processamento, tais como o realce e <strong>de</strong>tecção <strong>de</strong> minúcias. Desta forma, o<br />
processamento <strong>de</strong> imagem vai consumir menos tempo <strong>de</strong> CPU e evitar erros<br />
in<strong>de</strong>sejados, como a <strong>de</strong>tecção <strong>de</strong> minúcias espúrias em imagem <strong>de</strong> baixa qualida<strong>de</strong>.<br />
2.3 Trabalhos relacionados<br />
Nos parágrafos seguintes, citamos alguns trabalhos relacionados ao nosso.<br />
Em (Afsar, Arif, & Hussain, 2005), um algoritmo <strong>de</strong> segmentação <strong>de</strong> impressão<br />
digital que utiliza Fisher Discriminant Analysis and Learning Vector Quantization<br />
(LVQ) Neural Networks foi proposto. Os autores alegam uma taxa <strong>de</strong> apenas 1,8% <strong>de</strong><br />
erros na segmentação <strong>de</strong> todas as bases <strong>de</strong> imagens FVC 2000 (Maio, Maltoni, Capelli,<br />
Wayman & Jain, 2000).<br />
(Shi, Wang, Qi, & Xu, 2004) apresenta um algoritmo que introduz novas<br />
características para extrair ROI em imagens <strong>de</strong> impressões digitais. Os autores utilizam<br />
uma etapa <strong>de</strong> pré-processamento para estimar a qualida<strong>de</strong> da impressão digital antes da<br />
segmentação. Depois, propõem e utilizam uma nova característica, <strong>de</strong>nominada<br />
Momento Excêntrico, para localizar a fronteira borrada. Os autores informam que o<br />
algoritmo foi testado na base <strong>de</strong> imagens DB3 do FVC 2002 (Maio, Maltoni, Capelli,<br />
Wayman & Jain, 2002), entretanto não informam um percentual <strong>de</strong> acertos.<br />
Finalmente, (Bazen & Gerez, 2001) apresentou um algoritmo <strong>de</strong> segmentação <strong>de</strong><br />
impressões digitais baseado em três características: a média, a coerência e a variância.<br />
Ele treina um classificador linear ótimo para classificar por pixel.<br />
3. Algoritmo Proposto<br />
A fim <strong>de</strong> i<strong>de</strong>ntificar a região <strong>de</strong> interesse em uma imagem <strong>de</strong> impressão digital,<br />
<strong>de</strong>senvolvemos um algoritmo <strong>de</strong> segmentação simples e eficaz. Seu fluxo <strong>de</strong> dados é<br />
mostrado na Figura 1 e seus passos são <strong>de</strong>scritos a seguir.<br />
Figura 1: Fluxo <strong>de</strong> dados do algoritmo<br />
A Figura 2 mostra a impressão digital usada para ilustrar o nosso algoritmo <strong>de</strong><br />
segmentação.<br />
361
Figura 2: Imagem usada para ilustrar os passos do nosso algoritmo<br />
Em primeiro lugar, um filtro <strong>de</strong> <strong>de</strong>svio padrão (Hengl, 2011) é aplicado à<br />
imagem da impressão digital <strong>de</strong> modo a obter sua variação em escala <strong>de</strong> cinza e dividir a<br />
imagem em blocos. O tamanho dos blocos é um parâmetro <strong>de</strong>finido pelo usuário na<br />
aplicação do filtro <strong>de</strong> <strong>de</strong>svio padrão. A Figura 3 ilustra o resultado <strong>de</strong>sta operação.<br />
O próximo passo é reduzir a imagem a partir <strong>de</strong> blocos <strong>de</strong> pixels. Todos os<br />
pixels em cada bloco resultante do processo <strong>de</strong> <strong>de</strong>svio padrão têm o mesmo valor.<br />
Consequentemente, cada bloco irá produzir um único pixel. Esta etapa é realizada<br />
visando à eliminação <strong>de</strong> informações redundantes, <strong>de</strong> modo que os resultados dos<br />
próximos passos não sejam afetados erroneamente. A Figura 3b mostra o resultado da<br />
segunda etapa.<br />
Por conseguinte, a fim <strong>de</strong> homogeneizar a imagem reduzida, um filtro <strong>de</strong><br />
mediana (Arias-Castro & Donoho, 2009) é aplicado a ela. A mediana é usada em vez da<br />
média <strong>de</strong>vido à sua capacida<strong>de</strong> <strong>de</strong> preservar as bordas da imagem. A Figura 3c ilustra o<br />
resultado.<br />
A imagem é binarizada no próximo passo, como mostrado na Figura 3d, a fim <strong>de</strong><br />
separar o plano <strong>de</strong> fundo e o primeiro plano. A maior região contínua do primeiro plano,<br />
i.e., a maior região branca, é então i<strong>de</strong>ntificada (usando o algoritmo conhecido como<br />
Region Growing) e marcada como ROI (Figura 3e). Por fim, a imagem segmentada é<br />
ampliada <strong>de</strong> volta ao seu tamanho normal. A Figura 4 ilustra o resultado final e a<br />
imagem original cercada pelo contorno da ROI.<br />
362
(a)<br />
(b)<br />
(c)<br />
(d)<br />
Figura 3: Passos do algoritmo proposto. (a) Desvio padrão. (b) Redução por<br />
blocos. (c) Mediana. (d) Binarização. (e) Maior região contínua.<br />
(e)<br />
363
(a)<br />
Figura 4: Último passo. (a) Resultado da extração da maior região contínua. (b)<br />
Desenho do contorno da ROI na imagem original.<br />
4. Resultados<br />
Para avaliar a nossa técnica, efetuamos um teste <strong>de</strong> calibração dos parâmetros dos<br />
filtros, <strong>de</strong>scrito a seguir.<br />
4.1 Calibração dos parâmetros dos filtros<br />
Quatro parâmetros po<strong>de</strong>m ter seus valores alterados no algoritmo para que se obtenha<br />
uma melhor região <strong>de</strong> interesse: tamanho da janela mediana, limiar <strong>de</strong> binarização e os<br />
tamanhos do bloco interno e do bloco externo. O tamanho do bloco interno refere-se ao<br />
tamanho dos blocos produzidos pelo <strong>de</strong>svio-padrão e o tamanho do bloco externo<br />
refere-se ao tamanho da janela usada para calcular o <strong>de</strong>svio-padrão. Para calibrar estes<br />
valores e <strong>de</strong>scobrir quais produzem os melhores resultados, escolhemos aleatoriamente<br />
50 imagens do banco <strong>de</strong> impressões digitais UareU (NEUROtechnology, 2007). Os<br />
valores padrão dos parâmetros que produzem os melhores resultados são, baseados em<br />
testes empíricos, respectivamente: 2, 25, 5, 10. A Figura 5 mostra os resultados do<br />
algoritmo (com variações nos parâmetros) para a mesma imagem <strong>de</strong> entrada, on<strong>de</strong> a<br />
Figura 5a mostra o resultado com os melhores valores. Os resultados são <strong>de</strong>scritos nos<br />
parágrafos seguintes.<br />
Variações no tamanho da janela da mediana (abaixo e acima do melhor valor,<br />
respectivamente) foram testadas nas Figuras 5b e 5c. Durante o teste, observou-se que,<br />
quanto menor o valor, mais sensível é o algoritmo (<strong>de</strong>tectando as mínimas falhas da<br />
imagem). O aumento no valor produz um contorno mais preciso (que <strong>de</strong>sconsi<strong>de</strong>ra<br />
pequenas imperfeições).<br />
O limiar <strong>de</strong> binarização foi testado nas Figuras 5d e 5e. Na Figura 5d, ele foi<br />
testado com um valor abaixo do melhor, enquanto que na Figura 5e, com um valor<br />
acima. Observa-se que a diminuição <strong>de</strong>ste parâmetro faz com que o algoritmo encontre<br />
uma região <strong>de</strong> interesse muito maior (e, portanto, imprecisa). Aumentar o valor torna o<br />
algoritmo mais preciso, causando na região <strong>de</strong> interesse a eliminação <strong>de</strong> partes <strong>de</strong> baixa<br />
qualida<strong>de</strong> da impressão digital.<br />
(b)<br />
364
(a) (b) (c)<br />
(d) (e) (f)<br />
(g) (h) (i)<br />
Figura 5: Resultados com diferentes valores nos parâmetros.<br />
Nas Figuras 5f e 5g, valores diferentes para o tamanho do bloco interno (abaixo<br />
e acima do melhor valor) foram aplicados. O valor mais baixo leva a um maior<br />
<strong>de</strong>talhamento da ROI, enquanto o oposto ocorre com o mais elevado. Nota-se também<br />
que, quanto maior o valor, menor o tempo <strong>de</strong> processamento do algoritmo, conforme<br />
mostra a Figura 6.<br />
365
Figura 6: Gráfico do tempo <strong>de</strong> processamento x tamanho do bloco interno.<br />
Finalmente, as Figuras 5h e 5i ilustram a variação do tamanho do bloco externo,<br />
respectivamente acima e abaixo do melhor valor. O tamanho do bloco externo sempre<br />
tem que ser maior que o tamanho do bloco interno. Os testes indicam que, quanto mais<br />
próximo do melhor valor, mais sensível é o resultado do algoritmo. Além disso, quanto<br />
maior o valor do tamanho do bloco externo, maior o tempo <strong>de</strong> processamento, conforme<br />
mostra a Figura 7.<br />
Figura 7: Gráfico do tempo <strong>de</strong> processamento x tamanho do bloco externo.<br />
5. Discussão e Conclusão<br />
Neste trabalho, uma nova técnica para extrair a região <strong>de</strong> interesse em imagens <strong>de</strong><br />
impressão digital foi apresentada. Em primeiro lugar, o filtro <strong>de</strong> <strong>de</strong>svio padrão é<br />
aplicado à imagem, esta é reduzida em blocos e um filtro <strong>de</strong> mediana é aplicado para<br />
homogeneizá-la. A imagem homogeneizada é binarizada e a região <strong>de</strong> interesse é<br />
extraída a partir da maior região contínua. Por último, a imagem é <strong>de</strong>volvida ao seu<br />
tamanho normal.<br />
366
Quatro parâmetros referentes aos filtros (tamanho da janela mediana, limiar <strong>de</strong><br />
binarização e os tamanhos do bloco interno e do bloco externo) foram testados para<br />
<strong>de</strong>scobrir quais os valores representavam as melhores escolhas (2, 25, 5, 10) para a<br />
aplicação pretendida. Depen<strong>de</strong>ndo da segmentação <strong>de</strong>sejada, não necessariamente<br />
<strong>de</strong>vemos usar esses valores que representam a melhor escolha. Consi<strong>de</strong>ramos a<br />
possibilida<strong>de</strong> <strong>de</strong> troca dos valores como uma vantagem do nosso algoritmo.<br />
Quando comparado com outras técnicas, verificamos que a simplicida<strong>de</strong> <strong>de</strong><br />
implementação <strong>de</strong> nossa técnica é uma vantagem. Por exemplo, ela não usa<br />
classificadores como (Bazen & Gerez, 2001), (Yin, Zhu, Yang, Zhang, & Hu, 2007) e<br />
(Zhu, Yin, Hu, & Zhang, 2006), e não <strong>de</strong>senvolve uma nova medida como (Shi, Wang,<br />
Qi, & Xu, 2004) e (Afsar, Arif, & Hussain, 2005). Além disso, ela permite a<br />
manutenção das regiões <strong>de</strong> baixa qualida<strong>de</strong> na ROI e o ajuste entre a sua velocida<strong>de</strong> ou<br />
precisão, através da variação <strong>de</strong> parâmetros. Porém, a fim <strong>de</strong> comparar a eficácia <strong>de</strong><br />
nosso algoritmo com a eficácia das técnicas citadas (em relação aos acertos na<br />
classificação <strong>de</strong> imagens), apontamos como trabalho futuro a segmentação (manual e<br />
automática) completa das bases <strong>de</strong> impressões digitais FVC 2000 e FVC 2002 DB3.<br />
A extração da ROI em imagens <strong>de</strong> impressões digitais é um passo importante<br />
para o reconhecimento biométrico através <strong>de</strong>ste traço. Uma <strong>de</strong>tecção mais precisa <strong>de</strong>sta<br />
região auxilia na extração <strong>de</strong> informação relevante a ser usada no processo <strong>de</strong><br />
comparação <strong>de</strong> impressões digitais tanto para a verificação (autenticação) quanto para a<br />
i<strong>de</strong>ntificação <strong>de</strong> indivíduos, contribuindo para reduzir as taxas <strong>de</strong> erro do sistema.<br />
Para trabalhos futuros, preten<strong>de</strong>-se também obter resultados quantitativos sobre<br />
como a região <strong>de</strong> interesse extraída afeta o processo <strong>de</strong> i<strong>de</strong>ntificação e autenticação em<br />
sistemas biométricos.<br />
6. Bibliografia<br />
Afsar, F. A., Arif, M., & Hussain, M. (2005). An Effective Approach to Fingerprint<br />
Segmentation using Fisher Basis. 9th International Multitopic Conference, IEEE<br />
INMIC 2005, (pp. 1-6).<br />
Arias-Castro, E., & Donoho, D. L. (2009). Does median filtering truly preserve edges<br />
better than linear filtering? Annals of Statistics, 1172-1206.<br />
Bazen, A. M., & Gerez, S. H. (2001). Segmentation of Fingerprint Images. PRORISC<br />
2001 Workshop on Circuits, Systems and Signal Processing, (pp. 276-280).<br />
Hengl, T. (2011). Standard <strong>de</strong>viation filters. Retrieved Julho 15, 2011, from<br />
"http://spatialanalyst.net/ILWIS/htm/ilwisapp/filter_types_standard_<strong>de</strong>viation_filters.htm"<br />
Liu, E., Zhao, H., Guo, F., Liang, J., & Tian, J. (2011). Fingerprint segmentation based<br />
on an AdaBoost classifier. Frontiers of Computer Science in China, 5(2).<br />
Maio, D., Maltoni, D., Cappelli, R., Wayman, J., & Jain, A. (2000). FVC2000:<br />
Fingerprint Verification Competition. Relatório Técnico. Acesso em Agosto <strong>de</strong><br />
2011, disponível em<br />
http://bias.csr.unibo.it/fvc2000/Downloads/fvc2000_report.pdf.<br />
367
Maio, D., Maltoni, D., Cappelli, R., Wayman, J., & Jain, A. (2002). FVC2002: Second<br />
Fingerprint Verification Competition. Proceedings of 16th International<br />
Conference on Pattern Recognition (ICPR2002) (pp. 811-814). Disponível em<br />
http://bias.csr.unibo.it/fvc2002/Downloads/FVC2002_ICPR.pdf.<br />
Maio, D., Maltoni, D., Cappelli, R., Wayman, J., & Jain, A. (2004). FVC2004: Third<br />
Fingerprint Verification Competition. Springer Berlin / Hei<strong>de</strong>lberg.<br />
Maltoni, D., Maio, D., Jain, A. K., & Prabhakar, S. (2009). Handbook of Fingerprint<br />
Recognition (2ª ed.). 1848822537: Springer Publishing Company, Incorporated.<br />
NEUROtechnology. (2007, Janeiro). U.are.U 4000 sample fingerprint database.<br />
Retrieved Julho 10, 2011<br />
Ross, A. A., Nandakumar, K., & Jain, A. K. (2006). Handbook of Multibiometrics<br />
(International Series on Biometrics). Secaucus, NJ, USA: Springer-Verlag New<br />
York, Inc.<br />
Shi, Z., Wang, Y., Qi, J., & Xu, K. (2004). A New Segmentation Algorithm for Low<br />
Quality Fingerprint Image. Proceedings of the Third International Conference<br />
on Image and Graphics (pp. 314-317). Washington, DC, USA: IEEE Computer<br />
Society.<br />
Yin, J., Zhu, E., Yang, X., Zhang, G., & Hu, C. (2007). Two steps for fingerprint<br />
segmentation. Image Vision Comput., 1391-1403.<br />
Zhu, E., Yin, J., Hu, C., & Zhang, G. (2006, Agosto). A systematic method for<br />
fingerprint ridge orientation estimation and image segmentation. Pattern<br />
Recogn., 39(8), 1452-1472.<br />
368
Análise e implementação <strong>de</strong> um protocolo <strong>de</strong> gerenciamento<br />
<strong>de</strong> certificados<br />
An<strong>de</strong>rson Luiz Silvério 1 , Jonathan Gehard Kohler 1 , Ricardo Felipe Custódio 1<br />
1 Laboratório <strong>de</strong> Segurança em Computação (LabSEC)<br />
Departamento <strong>de</strong> Informática e Estatística (INE)<br />
Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina (UFSC)<br />
Florianópolis – SC – Brasil<br />
{an<strong>de</strong>rson.luiz, jonathan, custodio}@inf.ufsc.br<br />
Abstract. Public Key Infrastructures (PKIs) have constantly been used to solve<br />
problems in several kinds of applications. To enable interoperability between<br />
different components of PKIs, protocols that <strong>de</strong>scribe how the communication<br />
between these components should be ma<strong>de</strong> are used. The main contribution of<br />
this work is to propose improvements to the Certificate Management Protocol<br />
(CMP) and to implement these improvements in the Certificate Management<br />
System of the Educational Public Key Infrastructure (SGCI).<br />
Resumo. Infraestruturas <strong>de</strong> Chaves Públicas (ICPs) têm sido constantemente<br />
utilizadas para solucionar problemas em diversos tipos <strong>de</strong> aplicações. Para<br />
possibilitar a interoperabilida<strong>de</strong> entre os componentes das ICPs existem protocolos<br />
que <strong>de</strong>screvem como <strong>de</strong>ve ser feita a comunicação entre tais componentes.<br />
Este trabalho tem como objetivo estudar e propor melhorias no Certificate<br />
Management Protocol (CMP) e implantar tais melhorias no Sistema <strong>de</strong> Gerenciamento<br />
<strong>de</strong> Certificados Digitais da Infraestrutura <strong>de</strong> Chaves Públicas para<br />
Ensino e Pesquisa (SGCI).<br />
1. Introdução<br />
Certificados digitais, em conjunto com chaves criptográficas assimétricas, têm sido utilizados<br />
para i<strong>de</strong>ntificar pessoas e equipamentos <strong>de</strong>s<strong>de</strong> que foram propostos por Konfel<strong>de</strong>r,<br />
em 1978. O certificado digital associa uma pessoa ou equipamento a um par <strong>de</strong> chaves. A<br />
chave privada é mantida sob controle da entida<strong>de</strong> i<strong>de</strong>ntificada pelo certificado e a chave<br />
pública é distribuída através do próprio certificado.<br />
A gestão do ciclo <strong>de</strong> vida <strong>de</strong> certificados digitais é feita por uma infraestrutura<br />
<strong>de</strong> chaves públicas (ICP). Uma ICP é formada por vários componentes, cada um provendo<br />
algum serviço relacionado ao ciclo <strong>de</strong> vida <strong>de</strong> certificados digitais. Um exemplo<br />
<strong>de</strong> componente <strong>de</strong> uma ICP é a Autorida<strong>de</strong> Certificadora (AC), responsável pela emissão<br />
<strong>de</strong> certificados digitais.<br />
Para gerir os certificados digitais a<strong>de</strong>quadamente os diferentes componentes <strong>de</strong><br />
uma ICP necessitam se comunicar. Existem protocolos que <strong>de</strong>screvem como <strong>de</strong>ve ser feita<br />
esta comunicação, como o CMP [Adams et al. 2005] e o CMC [Schaad and Myers 2008].<br />
Estes protocolos <strong>de</strong>screvem quais as mensagens que <strong>de</strong>vem ser trocadas entre os diferentes<br />
componentes da ICP em diferentes operações como, por exemplo, emissão <strong>de</strong> certificados<br />
digitais.<br />
369
Para garantir a integrida<strong>de</strong> e autenticida<strong>de</strong> <strong>de</strong>stas mensagens, é necessário algum<br />
mecanismo <strong>de</strong> proteção para as mensagens. A assinatura digital é normalmente utilizada<br />
para suprir tais necessida<strong>de</strong>s. Porém, no caso das autorida<strong>de</strong>s certificadoras, o uso da<br />
chave privada é muito restrito e <strong>de</strong>ve-se limitar apenas a assinar certificados digitais e<br />
listas <strong>de</strong> certificados revogados (LCRs). Além disso, o uso da mesma chave para dois<br />
propósitos distintos po<strong>de</strong> enfraquecer a segurança da chave ou dos serviços providos por<br />
ela [Barker et al. 2011].<br />
Neste artigo é proposto a criação <strong>de</strong> um novo par <strong>de</strong> chaves, para ser utilizado<br />
para assinar as mensagens produzidas por ACs, eliminando o uso em <strong>de</strong>masia da chave<br />
privada da AC. Para a distribuição da chave pública <strong>de</strong>ste novo par <strong>de</strong> chaves, são propostas<br />
alterações no protocolo CMP. Esta distribuição é chamada <strong>de</strong> relacionamento <strong>de</strong><br />
confiança, um conceito utilizado pelo Sistema <strong>de</strong> Gerenciamento <strong>de</strong> Certificados Digitais<br />
ICPEDU (SGCI), para uma AC informar em quais Autorida<strong>de</strong>s <strong>de</strong> Registro (ARs) ela<br />
confia e aceita receber requisições. Da mesma forma, uma AR informa para quais ACs<br />
ela po<strong>de</strong> enviar requisições e receber respostas.<br />
Na seção 2 é apresentada uma breve revisão bibliográfica sobre o SGCI e o Certificate<br />
Management Protocol (CMP). A seção 3 apresenta o conceito <strong>de</strong> chave <strong>de</strong> transporte,<br />
proposto por este trabalho para resolver o problema do uso da chave privada <strong>de</strong> Autorida<strong>de</strong>s<br />
Certificadoras. Nas seções 4 e 5 são apresentadas as alterações propostas para o<br />
CMP, para suportar a distribuição da chave <strong>de</strong> transporte, e sua implementação, respectivamente.<br />
Na seção 6 são apresentadas as contribuições <strong>de</strong>ste trabalho ao SGCI e, por fim,<br />
na seção 7 são apresentadas as consi<strong>de</strong>rações finais e propostas <strong>de</strong> trabalhos futuros.<br />
2. Fundamentos Teóricos<br />
2.1. Sistema <strong>de</strong> Gerenciamento <strong>de</strong> Certificados Digitais ICPEDU<br />
O Sistema <strong>de</strong> Gerenciamento <strong>de</strong> Certificados Digitais da Infraestrutura <strong>de</strong> Chaves Públicas<br />
para Ensino e Pesquisa (SGCI) é um software <strong>de</strong>senvolvido para o âmbito acadêmico,<br />
fazendo parte do projeto da Infraestrutura <strong>de</strong> Chaves Públicas para Ensino e Pesquisa (IC-<br />
PEDU), em uso em diversas universida<strong>de</strong>s e centros <strong>de</strong> pesquisa brasileiros, provendo as<br />
funcionalida<strong>de</strong>s necessárias para o gerenciamento <strong>de</strong> ICPs. Atualmente o Laboratório <strong>de</strong><br />
Segurança em Computação (LabSEC) é responsável pelo <strong>de</strong>senvolvimento do SGCI.<br />
A Infraestrutura <strong>de</strong> Chaves Públicas para Ensino e Pesquisa (ICPEDU) consiste<br />
na implantação <strong>de</strong> uma infraestrutura <strong>de</strong> criação <strong>de</strong> certificados digitais e chaves <strong>de</strong> segurança<br />
<strong>de</strong>ntro do ambiente das Instituições Fe<strong>de</strong>rais <strong>de</strong> Ensino Superior (Ifes), Unida<strong>de</strong>s <strong>de</strong><br />
Pesquisa (UPs) e <strong>de</strong>mais instituições <strong>de</strong> ensino. A utilização <strong>de</strong> certificados digitais confere<br />
credibilida<strong>de</strong> aos serviços e processos administrativos das instituições. Além disso,<br />
permite que processos sejam executados com maior eficiência e agilida<strong>de</strong>. [RNP 2011]<br />
2.2. Certificate Management Protocol<br />
O Certificate Management Protocol (CMP) [Adams et al. 2005] é um protocolo utilizado<br />
para criação e gerenciamento <strong>de</strong> certificados digitais X.509v3 [Cooper et al. 2008] e <strong>de</strong>fine<br />
mensagens que permitem a interação <strong>de</strong> diferentes componentes <strong>de</strong> uma ICP.<br />
Toda mensagem <strong>de</strong>finida pelo CMP possui uma estrutura básica, contendo os seguintes<br />
campos:<br />
370
• cabeçalho: Apresenta informações comuns a várias mensagens, utilizadas para<br />
i<strong>de</strong>ntificar o emissor e <strong>de</strong>stinatário, por exemplo;<br />
• corpo: Apresenta informações específicas para cada requisição;<br />
• proteção: Contém bits que protegem a mensagem. Por exemplo, a assinatura dos<br />
campos citados acima. Este campo é opcional;<br />
• certificados extras: Po<strong>de</strong> ser usado para carregar certificados necessários por uma<br />
das partes. Este campo é opcional.<br />
O documento HTTP Transport for CMP [Kause and Peylo 2011] <strong>de</strong>fine como é<br />
feito o transporte das mensagens do CMP sobre o protocolo HTTP.<br />
3. Geração do novo par <strong>de</strong> chaves<br />
Dos softwares pesquisados neste trabalho foi encontrado apenas um que suporta o CMP, o<br />
EJBCA [PrimeKey 2011]. Este utiliza a chave privada da AC para assinar as mensagens.<br />
Porém notou-se que o uso da chave privada da AC é muito restrito, i<strong>de</strong>almente limitandose<br />
apenas a assinar certificados e LCRs [ITI 2011]. Além disso, aumentando o uso da<br />
chave privada, sua segurança é enfraquecida [Barker et al. 2011].<br />
Durante o processo <strong>de</strong> auditoria <strong>de</strong> uma AC, espera-se que a sua chave privada seja<br />
utilizada apenas uma vez durante cada operação. Por exemplo na emissão <strong>de</strong> certificado,<br />
para assinar o certificado emitido. E se a chave da entida<strong>de</strong> estiver sob algum mecanismo<br />
que controle o uso da mesma, como um módulo criptográfico, é provável que a chave<br />
será liberada para apenas um uso, tornando impraticável o uso da chave da entida<strong>de</strong> para<br />
também assinar as mensagens do CMP.<br />
Propõe-se então o uso <strong>de</strong> uma nova chave, chamada neste trabalho <strong>de</strong> chave <strong>de</strong><br />
transporte. Neste trabalho é gerado um novo par <strong>de</strong> chaves para as ACs, cujo uso é exclusivo<br />
para assinar/verificar as mensagens do CMP. Dessa forma elimina-se o problema <strong>de</strong><br />
utilizar a chave privada da AC duas vezes numa mesma operação (por exemplo, um uso<br />
para assinar um certificado digital e outro para assinar a resposta que será enviada à AR<br />
ou ao requerente do certificado).<br />
Como esta chave é utilizada apenas para assinar as mensagens enviadas pela AC,<br />
ela possui requisitos <strong>de</strong> segurança menores que os da chave privada da AC. E o seu comprometimento<br />
não implica no comprometimento da AC, não sendo necessário revogar o<br />
certificado da AC. Um atacante <strong>de</strong> posse da chave <strong>de</strong> transporte da AC não conseguirá<br />
emitir certificados em nome da AC, apenas irá gerar mensagens em nome da AC com<br />
conteúdo inválido que po<strong>de</strong> ser <strong>de</strong>tectado pelo <strong>de</strong>stinatário da mensagem. Por exemplo,<br />
um atacante po<strong>de</strong> gerar uma resposta para uma requisição <strong>de</strong> certificado, com um certificado<br />
inválido, não emitido pela AC ou com um certificado anteriormente emitido pela<br />
AC para outra entida<strong>de</strong>. Em ambos os casos o <strong>de</strong>stinatário da mensagem po<strong>de</strong> verificar<br />
o certificado recebido e informar a AC que o mesmo não correspon<strong>de</strong> à requisição<br />
solicitada.<br />
4. Melhorias no CMP<br />
Com o intuito <strong>de</strong> facilitar a distribuição da chave pública <strong>de</strong> transporte e tornar o CMP<br />
mais flexível, foram propostas algumas alterações no protocolo, <strong>de</strong>scritas nas seções seguintes.<br />
371
4.1. Relacionamento <strong>de</strong> confiança<br />
Com a adição do novo par <strong>de</strong> chaves para assinar as mensagens do CMP, foi também<br />
necessário alterar o CMP para que a chave pública <strong>de</strong>ste novo par <strong>de</strong> chaves possa ser<br />
distribuída <strong>de</strong> forma segura e confiável. Esta alteração consiste em adicionar novas mensagens<br />
ao CMP, adicionando novos valores à estrutura PKIBody, <strong>de</strong>scrita na RFC4210<br />
[Adams et al. 2005, seção 5.1.2, p. 26-27].<br />
Para o estabelecimento <strong>de</strong> relação <strong>de</strong> confiança, são propostos dois mo<strong>de</strong>los: um<br />
assíncrono e outro síncrono. A seguir serão <strong>de</strong>talhados cada um <strong>de</strong>stes mo<strong>de</strong>los.<br />
4.1.1. Mo<strong>de</strong>lo Síncrono<br />
No mo<strong>de</strong>lo síncrono há um par <strong>de</strong> mensagens: uma requisição e uma resposta. Uma entida<strong>de</strong><br />
faz uma requisição <strong>de</strong> estabelecimento <strong>de</strong> relação <strong>de</strong> confiança e recebe a resposta<br />
para esta requisição. A requisição <strong>de</strong> relacionamento <strong>de</strong> confiança contém a estrutura<br />
TrustedRelReq, apresentada na figura 1. Ela contém o certificado da entida<strong>de</strong> requisitante<br />
e a chave <strong>de</strong> transporte.<br />
TrustedRelReq : : = SEQUENCE {<br />
c e r t i f i c a t e C e r t i f i c a t e ,<br />
t r a n s p o r t P u b PublicKey }<br />
Figura 1. Estrutura TrustedRelReq em ASN.1<br />
A resposta para a requisição <strong>de</strong> relacionamento <strong>de</strong> confiança contém a estrutura<br />
TrustedRelRep, apresentada na figura 2. Ela contém o status do pedido, <strong>de</strong>scrito pela<br />
estrutura PKIStatusInfo do CMP [Adams et al. 2005], o certificado da entida<strong>de</strong> e a chave<br />
<strong>de</strong> transporte. Os dois últimos campos são opcionais e só <strong>de</strong>verão estar presentes caso a<br />
relação <strong>de</strong> confiança seja aprovada.<br />
TrustedRelRep : : = SEQUENCE {<br />
s t a t u s<br />
P K I S t a t u s I n f o<br />
c e r t i f i c a t e [ 0 ] C e r t i f i c a t e OPTIONAL ,<br />
t r a n s p o r t P u b [ 1 ] PublicKey OPTIONAL }<br />
Figura 2. Estrutura TrustedRelRep em ASN.1<br />
Com a requisição aprovada e a resposta recebida pela entida<strong>de</strong> requisitante, ambas<br />
as entida<strong>de</strong>s possuirão a chave pública <strong>de</strong> transporte uma da outra e consi<strong>de</strong>ra-se que a<br />
relação <strong>de</strong> confiança entre elas está estabelecida. É importante ressaltar que para garantir<br />
que a chave <strong>de</strong> transporte efetivamente pertence à entida<strong>de</strong>, é necessário que a mensagem<br />
seja assinada com a sua chave privada. Após o estabelecimento da relação <strong>de</strong> confiança,<br />
o restante das mensagens <strong>de</strong>finidas pelo CMP po<strong>de</strong>m ser assinadas com a chave <strong>de</strong> transporte.<br />
4.1.2. Mo<strong>de</strong>lo Assíncrono<br />
Para o mo<strong>de</strong>lo assíncrono, apenas uma nova estrutura foi criada, apresentada na estrutura<br />
ASN.1 da figura 3.<br />
372
TrustedRelAnn : : = SEQUENCE {<br />
c e r t i f i c a t e C e r t i f i c a t e ,<br />
t r a n s p o r t P u b [ 1 ] PublicKey OPTIONAL<br />
pop [ 2 ] P r o o f O f P o s s e s s i o n OPTIONAL }<br />
P r o o f O f P o s s e s s i o n : : = CHOICE { −− only one p o s s i b i l i t y f o r now −−<br />
s i g n a t u r e [ 0 ] POPOSigningKey }<br />
Figura 3. Estrutura TrustedRelAnn em ASN.1<br />
Ela contém o certificado da entida<strong>de</strong>, a chave <strong>de</strong> transporte e um campo para<br />
a assinatura. A assinatura é calculada a partir dos campos certificate e transportPub e<br />
serve para a entida<strong>de</strong> informar, <strong>de</strong> forma segura, a sua chave <strong>de</strong> transporte. A figura<br />
4 apresenta a estrutura que contém a assinatura. Na proposta <strong>de</strong>ste trabalho apenas os<br />
campos algorithmI<strong>de</strong>ntifier e signature são utilizados, contendo o algoritmo usado na<br />
assinatura e os bytes da assinatura, respectivamente.<br />
POPOSigningKey : : = SEQUENCE {<br />
p o p o s k I n p u t [ 0 ] POPOSigningKeyInput OPTIONAL ,<br />
a l g o r i t h m I d e n t i f i e r A l g o r i t h m I d e n t i f i e r ,<br />
s i g n a t u r e BIT STRING }<br />
Figura 4. Estrutura POPOSigningKey em ASN.1[Schaad 2005]<br />
4.1.3. Mo<strong>de</strong>lo Síncrono vs Mo<strong>de</strong>lo Assíncrono<br />
No mo<strong>de</strong>lo síncrono observou-se dois problemas:<br />
• É necessário gerar uma nova mensagem a cada pedido <strong>de</strong> relacionamento <strong>de</strong> confiança<br />
e, consequentemente, utilizar a chave privada da entida<strong>de</strong> para assinar a<br />
mensagem várias vezes;<br />
• Um atacante po<strong>de</strong> realizar pedidos <strong>de</strong> relação <strong>de</strong> confiança, com entida<strong>de</strong>s falsas,<br />
à uma mesma entida<strong>de</strong>. Dessa forma, quando um operador da entida<strong>de</strong> for avaliar<br />
os pedidos <strong>de</strong> relação <strong>de</strong> confiança pen<strong>de</strong>ntes, po<strong>de</strong>rão haver centenas <strong>de</strong> pedidos<br />
falsos e apenas um verda<strong>de</strong>iro.<br />
O mo<strong>de</strong>lo assíncrono resolve estes problemas. O primeiro problema é resolvido<br />
com a assinatura sendo feita somente sobre o certificado e a chave <strong>de</strong> transporte da entida<strong>de</strong>.<br />
Como o certificado e a chave <strong>de</strong> transporte permanecem os mesmos, a estrutura<br />
po<strong>de</strong> ser assinada somente uma vez e anexada nas várias mensagens que a entida<strong>de</strong> possa<br />
gerar para cadastro <strong>de</strong> relação <strong>de</strong> confiança. O segundo problema é resolvido pois, no mo<strong>de</strong>lo<br />
assíncrono, uma entida<strong>de</strong> não faz um pedido <strong>de</strong> relação <strong>de</strong> confiança a outra entida<strong>de</strong>,<br />
ela cria uma espécie <strong>de</strong> lista com as entida<strong>de</strong>s que ela confia e aceita receber mensagens.<br />
O mo<strong>de</strong>lo síncrono po<strong>de</strong> ser melhorado, utilizando-se a i<strong>de</strong>ia <strong>de</strong> assinar com a<br />
chave privada da entida<strong>de</strong> somente o seu certificado e a chave pública <strong>de</strong> transporte e<br />
adicionando algum mecanismo <strong>de</strong> filtro para quais entida<strong>de</strong>s po<strong>de</strong>m realizar pedidos <strong>de</strong><br />
relacionamento <strong>de</strong> confiança à uma <strong>de</strong>terminada entida<strong>de</strong>. Esta última melhoria, no entanto,<br />
não faria parte do protocolo e necessitaria ser feita pelo software <strong>de</strong> gerenciamento<br />
<strong>de</strong> AC/AR. Por exemplo, na configuração da entida<strong>de</strong>, o usuário po<strong>de</strong>ria informar que só<br />
373
aceita receber requisições <strong>de</strong> relacionamento <strong>de</strong> confiança <strong>de</strong> entida<strong>de</strong>s cujo certificado<br />
foi emitido por uma <strong>de</strong>terminada AC.<br />
Por fim, a mensagem do mo<strong>de</strong>lo assíncrono po<strong>de</strong> ser utilizada no mo<strong>de</strong>lo síncrono<br />
para uma entida<strong>de</strong> divulgar uma nova chave pública <strong>de</strong> transporte para as entida<strong>de</strong>s com<br />
as quais ela já estabeleceu relação <strong>de</strong> confiança previamente. Tal operação é importante<br />
caso a chave seja comprometida.<br />
4.2. Codificação em XML<br />
Para tornar o CMP mais flexível, propõe-se o suporte do protocolo a outros tipos <strong>de</strong><br />
codificação para suas mensagens. Neste trabalho optou-se por utilizar o formato XML,<br />
por ser amplamente utilizado atualmente para o compartilhamento <strong>de</strong> informações, além<br />
<strong>de</strong> ser <strong>de</strong> código aberto e in<strong>de</strong>pen<strong>de</strong>nte <strong>de</strong> plataforma. A conversão das estruturas ASN.1<br />
<strong>de</strong>scritas na RFC4210 [Adams et al. 2005] para XML foram feitas utilizando as regras <strong>de</strong><br />
codificação XML Enconding Rules (XER) [ITU-T 2001].<br />
Também foi feita a conversão das estruturas ASN.1 do CMP para a linguagem<br />
XML Schema Definition (XSD) [W3C 2004]. O XSD permite fazer a validação da estrutura<br />
<strong>de</strong> um documento XML com base em <strong>de</strong>terminadas regras. Dessa forma é possível<br />
verificar se dado documento XML representa uma mensagem válida do CMP. Como o<br />
XML e o XSD são linguagens in<strong>de</strong>pen<strong>de</strong>ntes <strong>de</strong> plataforma, é possível utilizar as regras<br />
XSD criadas em qualquer implementação do CMP.<br />
5. Implementação do protocolo<br />
Inicialmente foi feito um levantamento na literatura das bibliotecas já existentes<br />
que suportam o CMP. Foram encontradas duas bibliotecas, a cryptLib<br />
[Digital Data Security Limited 2011] e a cmpForOpenssl [Martin Peylo 2011]. Foi <strong>de</strong>sconsi<strong>de</strong>rado<br />
o uso <strong>de</strong>stas bibliotecas para este trabalho pelos seguintes motivos:<br />
• são escritas na linguagem C. Desta forma seria ainda necessário portar as funcionalida<strong>de</strong>s<br />
para o PHP, <strong>de</strong> modo a utilizar com o SGCI;<br />
• não possuem suporte a XML.<br />
Não existindo nenhuma biblioteca que satisfaça as necessida<strong>de</strong>s <strong>de</strong>ste trabalho, foi<br />
criada uma nova biblioteca, orientada a objetos e em PHP. Um dos objetivos <strong>de</strong>sta biblioteca<br />
é fornecer uma interface simples e in<strong>de</strong>pen<strong>de</strong>nte, po<strong>de</strong>ndo ser utilizada por diferentes<br />
softwares. Além disso, ela foi concebida <strong>de</strong> forma a facilitar a adição <strong>de</strong> mensagens não<br />
tratadas por este trabalho ou fazer implementações customizadas das mensagens.<br />
6. Contribuições ao SGCI<br />
Na atual versão do SGCI, 1.3.7, o protocolo <strong>de</strong> comunicação entre as entida<strong>de</strong>s não é um<br />
protocolo padronizado, implementado apenas para satisfazer as necessida<strong>de</strong>s do software<br />
no momento em que foi <strong>de</strong>senvolvido. Nesta implementação, a troca <strong>de</strong> mensagens entre<br />
as entida<strong>de</strong>s é feita <strong>de</strong> forma offline, e necessita da interação <strong>de</strong> operadores que precisam<br />
primeiramente exportar as mensagens em uma entida<strong>de</strong>, para <strong>de</strong>pois importar na entida<strong>de</strong><br />
<strong>de</strong> <strong>de</strong>stino.<br />
A partir <strong>de</strong>ste trabalho, o SGCI passa a utilizar o CMP como protocolo <strong>de</strong> comunicação<br />
entre AC a AR e são adicionados dois novos mo<strong>de</strong>los <strong>de</strong> comunicação. O<br />
374
primeiro mo<strong>de</strong>lo é conhecido como mo<strong>de</strong>lo online com AC <strong>de</strong> resposta manual, cuja<br />
única diferença do mo<strong>de</strong>lo offline é que o envio das mensagens entre a AR e a AC é feita<br />
<strong>de</strong> forma automática. No segundo mo<strong>de</strong>lo, conhecido como mo<strong>de</strong>lo online com AC <strong>de</strong><br />
resposta automática, além do envio das mensagens ser feito <strong>de</strong> forma automática, o seu<br />
processamento também é feito <strong>de</strong> forma automática.<br />
A vantagem do SGCI suportar diferentes mo<strong>de</strong>los <strong>de</strong> comunicação é a possibilida<strong>de</strong><br />
<strong>de</strong> ele po<strong>de</strong>r ser usado por diferentes entida<strong>de</strong>s com diferentes requisitos <strong>de</strong> segurança.<br />
Por exemplo, ACs Raízes normalmente têm requisitos <strong>de</strong> segurança elevados e<br />
funcionam <strong>de</strong> forma offline. Já ACs intermediárias, que emitem certificados para usuário<br />
final, e as ARs po<strong>de</strong>m funcionar <strong>de</strong> forma online.<br />
A versão do SGCI, integrada ao protocolo CMP po<strong>de</strong> ser encontrada em https:<br />
//projetos.labsec.ufsc.br/sgci.<br />
7. Consi<strong>de</strong>rações Finais<br />
Neste trabalho foi proposto o uso <strong>de</strong> um novo par <strong>de</strong> chaves por Autorida<strong>de</strong>s Certificadoras,<br />
chamada chave <strong>de</strong> transporte, para assinar as mensagens do protocolo CMP. A<br />
existência <strong>de</strong>sta chave <strong>de</strong> transporte elimina alguns problemas relacionados à restrição <strong>de</strong><br />
uso da chave privada das ACs.<br />
A criação <strong>de</strong> um novo par <strong>de</strong> chaves gerou a necessida<strong>de</strong> <strong>de</strong> mecanismos para a<br />
sua distribuição. Foram propostos dois mo<strong>de</strong>los para fazer a distribuição da chave pública<br />
<strong>de</strong> transporte: um síncrono e outro assíncrono. No mo<strong>de</strong>lo síncrono a chave privada da<br />
AC é utilizada sempre que for necessário fazer a distribuição da chave para uma nova<br />
entida<strong>de</strong>. No mo<strong>de</strong>lo assíncrono a assinatura é feita somente sobre a chave <strong>de</strong> transporte<br />
e o certificado da entida<strong>de</strong>, po<strong>de</strong>ndo ser gerada uma única vez e anexada a todas as mensagens.<br />
Também foi proposto o uso <strong>de</strong> XML para codificar as mensagens do CMP, pois o<br />
XML é uma linguagem amplamente utilizada para a troca <strong>de</strong> informações entre diferentes<br />
sistemas, além <strong>de</strong> ser simples <strong>de</strong> implementar e fornecer uma representação textual,<br />
legível para humanos.<br />
Para facilitar a geração e manipulação das mensagens do CMP, foi implementada<br />
uma biblioteca, na linguagem PHP, orientada a objetos, seguindo as práticas <strong>de</strong> programação<br />
<strong>de</strong> Desenvolvimento Orientado a Testes (TDD, do inglês Test Driven Development) e<br />
Clean Co<strong>de</strong>, a fim <strong>de</strong> garantir uma alta qualida<strong>de</strong> no código <strong>de</strong>senvolvido.<br />
Por fim, a biblioteca implementada foi integrada ao SGCI, tornando-o compatível<br />
com o protocolo CMP e adicionando dois novos mo<strong>de</strong>los <strong>de</strong> comunicação ao software.<br />
Como trabalho futuro, propõe-se um estudo <strong>de</strong> como fazer a geração da chave <strong>de</strong><br />
transporte, <strong>de</strong> forma a associa-la com a chave pública da AC. Sendo possível verificar uma<br />
assinatura feita com a chave <strong>de</strong> transporte utilizando-se da chave pública da AC, tornaria<br />
o processo <strong>de</strong> distribuição da chave <strong>de</strong> transporte da AC mais simples. Também eliminaria<br />
a necessida<strong>de</strong> do uso da chave privada da AC para assinar a mensagem <strong>de</strong>stinada à<br />
distribuição da mesma.<br />
375
Referências<br />
Adams, C., Farrell, S., Kause, T., and Mononen, T. (2005). Internet X.509 Public Key Infrastructure<br />
Certificate Management Protocol (CMP). RFC 4210 (Proposed Standard).<br />
Barker, E., Barker, W., Burr, W., Polk, W., and Smid, M. (2011). Recommendation for key<br />
management - pat1: General (revision 3). NIST Special Publication 800-57, National<br />
Institute of Standards and Technology.<br />
Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and Polk, W. (2008).<br />
Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List<br />
(CRL) Profile. RFC 5280 (Proposed Standard).<br />
Digital Data Security Limited (2011). Cryptlib security software.<br />
http://www.cryptlib.com/.<br />
ITI (2011). Declaração <strong>de</strong> práticas <strong>de</strong> certificação da autorida<strong>de</strong> certificadora raiz da<br />
icp-brasil - v.4.1. DOC-ICP 01, Instituto Nacional <strong>de</strong> Tecnologia da Informação.<br />
ITU-T (2001). Information technology – asn.1 encoding rules: Xml encoding rules (xer).<br />
Recommendation X.693, International Telecommunication Union.<br />
Kause, T. and Peylo, M. (2011). Internet X.509 Public Key Infrastructure – HTTP Transport<br />
for CMP.<br />
Martin Peylo (2011). Cmp for openssl. http://sourceforge.net/apps/mediawiki/cmpforopenssl/in<strong>de</strong>x.php.<br />
PrimeKey (2011). Ejbca. http://www.ejbca.org/.<br />
RNP (2011). Infraestrutura <strong>de</strong> chaves públicas para ensino e pesquisa (icpedu).<br />
http://www.rnp.br/servicos/icpedu.html.<br />
Schaad, J. (2005). Internet X.509 Public Key Infrastructure Certificate Request Message<br />
Format (CRMF). RFC 4211 (Proposed Standard).<br />
Schaad, J. and Myers, M. (2008). Certificate Management over CMS (CMC). RFC 5272<br />
(Proposed Standard).<br />
W3C (2004). Xml schema part 1: Structures second edition. Recommendation, World<br />
Wi<strong>de</strong> Web Consortium.<br />
376
WGID<br />
377
Avaliação <strong>de</strong> um Sistema <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e Acesso<br />
em uma Organização Pública Fe<strong>de</strong>ral<br />
Yuri Feitosa Negócio 1 , Felipe P. <strong>de</strong> Assumpção Santiago 1 , Laerte Peotta <strong>de</strong> Melo 2<br />
1<br />
Empresa <strong>de</strong> Tecnologia e Informações da Previdência Social - DATAPREV<br />
2<br />
Universida<strong>de</strong> <strong>de</strong> Brasília - UNB.<br />
{yuri.feitosa, felipe.santiago}@dataprev.gov.br, peotta@unb.br<br />
Abstract. The protection of individual and institution privacy is essential<br />
within Brazilian fe<strong>de</strong>ral public administration due to the critical informations<br />
handled by the governmental systems. It involves the execution of a set of<br />
procedures that ensures information access control properly. Concerning this<br />
scenario, this paper analyzes the enforcement of information and<br />
communication security controls related to i<strong>de</strong>ntity and access management<br />
applied by a fe<strong>de</strong>ral public organization<br />
Resumo. Para a Administração Pública Fe<strong>de</strong>ral se torna imperativo proteger<br />
a privacida<strong>de</strong> individual e das instituições. Devido à criticida<strong>de</strong> das<br />
informações manipuladas por estes sistemas, exige-se que sejam aplicados<br />
uma série <strong>de</strong> processos que assegurem que a informação tenha seu acesso<br />
controlado a<strong>de</strong>quadamente. Neste sentido, este trabalho realiza uma análise<br />
na aplicação atual dos controles <strong>de</strong> segurança da informação e comunicações<br />
relacionadas à gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso fornecida aos clientes <strong>de</strong> uma<br />
Organização Pública Fe<strong>de</strong>ral.<br />
1. Introdução<br />
O avanço constante das tecnologias <strong>de</strong> computação e comunicação possibilita<br />
cada vez mais o acesso da socieda<strong>de</strong> a uma vasta gama <strong>de</strong> informações, sem as<br />
tradicionais restrições físicas e temporais. Esta nova realida<strong>de</strong> que se apresenta,<br />
<strong>de</strong>nominada <strong>de</strong> Socieda<strong>de</strong> da Informação, está alterando bruscamente as relações entre<br />
os indivíduos e setores da socieda<strong>de</strong>. No sentido <strong>de</strong> reduzir a burocracia e melhorar o<br />
atendimento da população, a Administração Pública Fe<strong>de</strong>ral (APF) tem realizado<br />
constantes investimentos no <strong>de</strong>senvolvimento <strong>de</strong> sistemas <strong>de</strong> informação. Segundo<br />
Simião (2009), a APF é composta por organizações complexas <strong>de</strong> amplo alcance que<br />
lidam com informações importantes, tanto para a prestação <strong>de</strong> serviços públicos aos<br />
cidadãos, como também para a tomada <strong>de</strong> <strong>de</strong>cisões estratégicas do Estado. Desta forma,<br />
a medida que estes novos sistemas <strong>de</strong> informação representam os processos <strong>de</strong> negócio<br />
e fornecem insumos para a tomada <strong>de</strong> <strong>de</strong>cisões, eles tem se tornado cada vez maiores e<br />
mais complexos, e, conseqüentemente, disponibilizam um maior volume <strong>de</strong><br />
informações e recursos sensíveis.<br />
Consi<strong>de</strong>rando a sua importância e impacto nos objetivos <strong>de</strong> negócios <strong>de</strong> uma<br />
organização, o controle <strong>de</strong> acesso necessita <strong>de</strong> leis, normas, regulamentos,<br />
procedimentos que governem sua execução. Alguns esforços na APF são observados,<br />
como o Decreto nº 4.553, <strong>de</strong> 27 <strong>de</strong> <strong>de</strong>zembro <strong>de</strong> 2002, a Instrução Normativa GSI nº 1,<br />
<strong>de</strong> 13 <strong>de</strong> junho <strong>de</strong> 2008, e a Norma Complementar 07, <strong>de</strong> 06 <strong>de</strong> maio <strong>de</strong> 2010.<br />
378
Entretanto, inúmeros <strong>de</strong>safios ainda estão presentes. Uma evidência das<br />
dificulda<strong>de</strong>s, mesmo que não diretamente relacionado com a APF, é que <strong>de</strong> acordo com<br />
a pesquisa feita pelo Ponemon Institute (Ponemon, 2010), 87% dos usuários das<br />
organizações possuem acesso a mais informações do que precisariam para execução <strong>de</strong><br />
suas ativida<strong>de</strong>s.<br />
Neste sentido, consi<strong>de</strong>rando os <strong>de</strong>safios envolvidos na ativida<strong>de</strong> <strong>de</strong> gestão da<br />
segurança da informação e comunicações e tendo em vista reduzir as ameaças<br />
envolvidas, este artigo apresenta uma avaliação da gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso<br />
<strong>de</strong>sempenhados por uma organização da APF. Para isso, foram selecionados e avaliados<br />
63 controles <strong>de</strong> segurança nos principais frameworks, normativos e guias como o<br />
COBIT (ITGI, 2007), OISM3 (O-ISM3, 2011), ABNT NBR ISO 27002:2005 (ABNT,<br />
2005), Norma Complementar 07 (DISC/GSIPR, 2010) e o guia <strong>de</strong> Boas Práticas em<br />
Segurança da Informação do Tribunal <strong>de</strong> Contas da União (BRASIL, 2008).<br />
Trabalhos similares foram realizados por (Barbosa, 2009) e (Paranhos, 2010). O<br />
primeiro trabalho avalia <strong>de</strong> forma geral as Organizações Militares do Exército Brasileiro<br />
quanto à maturida<strong>de</strong> e aplicação dos controles ISO/IEC 27002:2005. O segundo<br />
trabalho propõe um framework para avaliação da maturida<strong>de</strong> da segurança da<br />
informação em organizações, através do uso <strong>de</strong> diversas normas. Este artigo difere um<br />
pouco dos <strong>de</strong>mais, pois engloba os normativos e guias adotados pela APF como<br />
referência.<br />
Este artigo está organizado da seguinte forma: a seção 2 apresenta os conceitos e<br />
a classificação adotada para os controles da gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso. A seção 3<br />
apresenta as principais referências selecionadas para a i<strong>de</strong>ntificação dos controles. A<br />
seção 4 apresenta os controles selecionados e o estado atual da aplicação <strong>de</strong>les na<br />
organização avaliada. Por fim, a seção 5 apresenta as conclusões finais e os trabalhos<br />
futuros.<br />
2. Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e Acesso<br />
O conceito <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> está relacionado com a associação entre um indivíduo e<br />
suas características únicas. A gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> é o controle <strong>de</strong> todo o ciclo <strong>de</strong> vida<br />
envolvido na execução <strong>de</strong>ste processo. De acordo com NSTC (2008), a gestão <strong>de</strong><br />
i<strong>de</strong>ntida<strong>de</strong> po<strong>de</strong> ser <strong>de</strong>finida como a combinação <strong>de</strong> sistemas técnicos, regras e<br />
procedimentos que <strong>de</strong>finem a posse, utilização, e segurança <strong>de</strong> uma i<strong>de</strong>ntida<strong>de</strong>. Seu<br />
objetivo primário é estabelecer a confiança na associação <strong>de</strong> atributos a uma i<strong>de</strong>ntida<strong>de</strong><br />
digital e conectar esta i<strong>de</strong>ntida<strong>de</strong> com uma entida<strong>de</strong> individual.<br />
Para complementar a gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>, existe a gestão <strong>de</strong> acesso que, <strong>de</strong><br />
acordo com FICAM (2009), tem como propósito garantir que a verificação da<br />
i<strong>de</strong>ntida<strong>de</strong> seja realizada quando um indivíduo tenta acessar os dados, sistemas <strong>de</strong><br />
informação ou instalações físicas. Para simplificar a compreensão e melhorar a<br />
i<strong>de</strong>ntificação das responsabilida<strong>de</strong>s, o FICAM (2009) dividiu a gestão <strong>de</strong> acesso em três<br />
áreas principais:<br />
Gestão <strong>de</strong> Recursos: Responsável por estabelecer e manter os dados (regras <strong>de</strong><br />
acesso, requisitos <strong>de</strong> cre<strong>de</strong>nciais) para uma <strong>de</strong>terminada informação ou recurso<br />
que possa ser acessado.<br />
Gestão <strong>de</strong> Privilégios: Responsável pela gestão <strong>de</strong> políticas e processos que<br />
<strong>de</strong>finem como são fornecidos os direitos <strong>de</strong> acesso das entida<strong>de</strong>s aos sistemas <strong>de</strong><br />
379
informação. Engloba a gestão <strong>de</strong> todos os dados que constituem os privilégios <strong>de</strong><br />
acesso e atributos, envolvendo o armazenamento, organização e acesso a<br />
informação nos diretórios.<br />
Gestão <strong>de</strong> Políticas: Responsável pelos processos que estabelecem e mantêm as<br />
políticas <strong>de</strong> controle <strong>de</strong> acesso que são incorporadas nas lógicas e regras <strong>de</strong><br />
negócio. Normalmente, é baseada nos atributos e papéis associados a uma<br />
i<strong>de</strong>ntida<strong>de</strong>. Ela gerencia o que é permitido ou não <strong>de</strong> ser acessado em uma<br />
<strong>de</strong>terminada transação.<br />
A gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso é uma ativida<strong>de</strong> complexa que po<strong>de</strong> estar<br />
difusa nos processos <strong>de</strong> uma organização. Diante da inexistência <strong>de</strong> um programa <strong>de</strong><br />
gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso, é importante i<strong>de</strong>ntificar as responsabilida<strong>de</strong>s sobre a<br />
execução <strong>de</strong> controles <strong>de</strong> segurança por áreas. Sendo assim, este artigo adota a<br />
separação em cinco áreas <strong>de</strong> gestão i<strong>de</strong>ntida<strong>de</strong>, gestão <strong>de</strong> acesso (recursos, privilégios, e<br />
políticas) e auditoria.<br />
3. Controles para Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e Acesso<br />
A ativida<strong>de</strong> <strong>de</strong> controle está relacionada com a capacida<strong>de</strong> <strong>de</strong> uma <strong>de</strong>terminada<br />
pessoa ou grupo adquirir domínio sobre uma <strong>de</strong>terminada ativida<strong>de</strong> ou outro grupo.<br />
Para a área <strong>de</strong> tecnologia da informação não existe um consenso formal sobre a<br />
<strong>de</strong>finição <strong>de</strong> controle, entretanto, para esta pesquisa foi utilizada a <strong>de</strong>finição proposta<br />
pelo COBIT (ITGI, 2007) em que c<br />
<strong>de</strong>tectados e corrigidos.<br />
As próximas subseções irão apresentar os principais frameworks e normas<br />
relacionados com a segurança da informação e com a gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso.<br />
Cada subseção irá i<strong>de</strong>ntificar as áreas ou grupo <strong>de</strong> controles diretamente envolvidos na<br />
gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso.<br />
3.1. COBIT<br />
O Control Objectives for Information and related Technology (ITGI, 2007) é<br />
e orientado a processos, baseado em controles e orientado<br />
por medic<br />
mo<strong>de</strong>lo COBIT, em sua versão 4.1, apresenta um conjunto <strong>de</strong> boas práticas<br />
i<strong>de</strong>ntificadas através <strong>de</strong> um consenso entre especialistas internacionais, que são<br />
organizadas através mo<strong>de</strong>lo <strong>de</strong> processo genérico baseado em quatro domínios e trinta e<br />
quatro processos. O COBIT <strong>de</strong>fine suas ativida<strong>de</strong>s em alto nível, orientando a<br />
organização no que precisa ser feito e não em como <strong>de</strong>ve ser feito para se obter<br />
governança, gerenciamento e controle.<br />
Os processos são responsáveis, em conjunto com os recursos <strong>de</strong> TI, por<br />
constituir a arquitetura <strong>de</strong> TI da organização. No COBIT, os processos são mapeados<br />
em domínios que equivalem às tradicionais áreas sob responsabilida<strong>de</strong> <strong>de</strong> TI, como o<br />
planejamento, construção, processamento e monitoramento. Os quatro domínios <strong>de</strong><br />
processos (ITGI, 2007) são: Planejar e Organizar (PO), Adquirir e Implementar (AI),<br />
Entregar e Suportar (DS), Monitorar e Avaliar (ME).<br />
380
Em 2009, criou-se o Programa <strong>de</strong> Auditoria e Garantia <strong>de</strong> Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong><br />
(ISACA, 2009) com o objetivo <strong>de</strong> prover uma avaliação in<strong>de</strong>pen<strong>de</strong>nte relacionada com<br />
a eficácia da gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>, suas políticas, procedimentos e ativida<strong>de</strong>s <strong>de</strong><br />
governança através <strong>de</strong> uma revisão <strong>de</strong> auditoria. O foco <strong>de</strong>sta revisão <strong>de</strong> auditoria está<br />
relacionado nos padrões, guias e procedimentos, bem como na sua implementação e<br />
governança sobre tais ativida<strong>de</strong>s.<br />
De acordo com (ISACA, 2009) os domínios Planejar e Organizar (PO) e Entrega<br />
e Suporte (DS) estão diretamente relacionados com a avaliação da gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>.<br />
Para o primeiro domínio temos os controles Esquema <strong>de</strong> Classificação <strong>de</strong> Dados (PO<br />
2.3) e Responsabilida<strong>de</strong> por Riscos, Segurança e Conformida<strong>de</strong> (PO 4.8). Para o<br />
segundo domínio temos os controles Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> (DS 5.3) e Gestão <strong>de</strong> Contas<br />
<strong>de</strong> Usuário (DS 5.4).<br />
3.2. Open Information Security Management Maturity Mo<strong>de</strong>l (O-ISM3)<br />
O Open Information Security Management Maturity Mo<strong>de</strong>l (O-ISM3, 2011) é<br />
um framework para a criação, adaptação e operação <strong>de</strong> um Sistema <strong>de</strong> Gerenciamento<br />
<strong>de</strong> Segurança da Informação (SGSI) <strong>de</strong>senvolvido pelo The Open Group. Ele <strong>de</strong>fine um<br />
número gerenciável e coeso <strong>de</strong> processos <strong>de</strong> segurança da informação necessários para a<br />
maioria das organizações. Para cada processo relevante, alguns controles <strong>de</strong> segurança<br />
são i<strong>de</strong>ntificados e atuam como partes essenciais do processo. Neste sentido, o ISM3 é<br />
compatível com os padrões ISO/IEC 27000:2009, COBIT e ITIL(OGC, 2007).<br />
De acordo com o O-ISM3, para serem efetivos, os processos <strong>de</strong> segurança da<br />
informação <strong>de</strong> uma organização <strong>de</strong>vem ser documentados, medidos e gerenciados. O<br />
framework O-ISM3 <strong>de</strong>fine a maturida<strong>de</strong> <strong>de</strong> acordo com a execução <strong>de</strong> processos<br />
essenciais para a segurança. A capacida<strong>de</strong> é <strong>de</strong>finida em termos <strong>de</strong> métricas e práticas<br />
gerenciais utilizadas. O framework exige que os objetivos <strong>de</strong> segurança e suas<br />
responsabilida<strong>de</strong>s sejam <strong>de</strong>rivados dos objetivos <strong>de</strong> negócio, além <strong>de</strong> promover uma<br />
medição formal da eficácia <strong>de</strong> cada processo <strong>de</strong> segurança.<br />
A gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e controle <strong>de</strong> acesso é uma das categorias <strong>de</strong> objetivos <strong>de</strong><br />
segurança essenciais para <strong>de</strong>terminar os processos que compõe o sistema <strong>de</strong> gestão <strong>de</strong><br />
segurança da informação (SGSI) baseado no O-ISM3. Nesta pesquisa, foram<br />
i<strong>de</strong>ntificados quatro processos diretamente relacionados, são eles:<br />
1. Definição das regras <strong>de</strong> divisão <strong>de</strong> responsabilida<strong>de</strong>s (SSP-4): Através da<br />
divisão das responsabilida<strong>de</strong>s, é possível melhorar o uso dos recursos e<br />
reduzir os riscos <strong>de</strong> inci<strong>de</strong>ntes por ameaças internas.<br />
2. Inventário <strong>de</strong> Ativos (OSP-3): A operação do SGSI <strong>de</strong>pen<strong>de</strong> da<br />
i<strong>de</strong>ntificação e classificação dos ativos críticos da organização.<br />
3. Controle <strong>de</strong> Acesso (OSP-11): Garante a proteção contra inci<strong>de</strong>ntes como,<br />
por exemplo, espionagem, negação <strong>de</strong> responsabilida<strong>de</strong>, tentativa <strong>de</strong><br />
acesso não autorizado e divulgação da informação.<br />
4. Registro <strong>de</strong> Usuários (OSP-12): Garante a proteção contra inci<strong>de</strong>ntes<br />
relacionados com o cadastro errôneo e concessão ina<strong>de</strong>quada <strong>de</strong> acesso<br />
as informações da organização.<br />
São três processos operacionais e um único estratégico. O SSP-4 é um processo<br />
estratégico que tem a importante missão <strong>de</strong> separar a responsabilida<strong>de</strong> na execução <strong>de</strong><br />
processos <strong>de</strong> negócio críticos. O OSP-3 é responsável por classificar a informação e os<br />
381
ativos da organização, sendo consi<strong>de</strong>rada uma ativida<strong>de</strong> essencial para uma política <strong>de</strong><br />
controle <strong>de</strong> acesso eficaz. O OSP 11 e OSP-12 são os tradicionais processos <strong>de</strong> gestão<br />
<strong>de</strong> acesso e i<strong>de</strong>ntida<strong>de</strong>.<br />
3.3. Guia <strong>de</strong> Boas Práticas em Segurança da Informação do TCU<br />
O Tribunal <strong>de</strong> Contas da União, com<br />
a Administração Pública Fe<strong>de</strong>ral,<br />
em segurança da informação (Brasil, 2008). O guia tem como objetivo apresentar as<br />
boas práticas para qualquer pessoa que se relacione <strong>de</strong> alguma forma com sistemas<br />
informatizados, <strong>de</strong>s<strong>de</strong> simples usuários até profissionais envolvidos diretamente com<br />
segurança da informação.<br />
O documento está dividido em quatro capítulos, que tratam o controle <strong>de</strong> acesso<br />
lógico, a política <strong>de</strong> segurança <strong>de</strong> informações e o plano <strong>de</strong> contingência. Por fim, o<br />
guia apresenta no quarto capítulo os comentários sobre a NBR ISO/IEC 27002:2005 e<br />
Por ter sido escrito <strong>de</strong> forma abrangente, o guia apresenta informalmente<br />
conceitos e controles relacionados com os assuntos pertinentes a cada capítulo.<br />
Consi<strong>de</strong>rando o foco <strong>de</strong>sta pesquisa, observa-se que as práticas envolvidas no controle<br />
<strong>de</strong> acesso lógico <strong>de</strong> sistemas po<strong>de</strong>m ser divididas em sete grupos <strong>de</strong> práticas, são elas:<br />
Cre<strong>de</strong>nciamento, Autenticação, Gerenciamento <strong>de</strong> Sessões, Autorização,<br />
Monitoramento, Administração <strong>de</strong> Usuários e Acesso e Políticas <strong>de</strong> Controle <strong>de</strong> Acesso.<br />
3.4. Norma Complementar 07<br />
O Departamento <strong>de</strong> Seguranc a da Informac<br />
(DSIC) do<br />
Gabinete <strong>de</strong> Segurança Institucional da Presidência da República (GSI-PR) aprovou a<br />
Norma Complementar 07 que estabelece as diretrizes para a implementac<br />
a da Informac<br />
entida<strong>de</strong>s da Administrac<br />
A Norma Complementar 07 baseou-se amplamente nos controles <strong>de</strong>finidos pela<br />
ISO/IEC 27002:2005. Entretanto, ela faz uma clara distinção entre o controle <strong>de</strong> acesso<br />
lógico e o físico. Para o controle <strong>de</strong> acesso lógico foram <strong>de</strong>finidos três grupos <strong>de</strong><br />
diretrizes, são eles: Criação e Administração <strong>de</strong> Contas, Acesso a Re<strong>de</strong> <strong>de</strong><br />
Computadores e Ativos da Informação. Para o controle <strong>de</strong> acesso físico são <strong>de</strong>finidos<br />
quatro grupos <strong>de</strong> diretrizes: Acesso as Áreas e Instalações Físicas, Usuários, Ativos <strong>de</strong><br />
Informação e ao Perímetro <strong>de</strong> Segurança. O foco <strong>de</strong>ste trabalho está orientado na<br />
avaliação da organização quanto ao controle <strong>de</strong> acesso lógico, portanto, apenas as<br />
diretrizes relacionadas controle <strong>de</strong> acesso lógico foram avaliados.<br />
3.5. ISO 27002:2005<br />
A ABNT NBR ISO 27002:2005 é a versão nacional do código <strong>de</strong> práticas para<br />
gestão da segurança da informação. Historicamente, a norma <strong>de</strong>rivou-se da BS7799-<br />
1:1999 <strong>de</strong>finida pelo BSI (British Standards Institution) no Reino Unido. Seu objetivo<br />
é <strong>de</strong>finir, <strong>de</strong> forma abrangente, um conjunto <strong>de</strong> controles que po<strong>de</strong>m ser implementados<br />
por uma organização. Segundo Cal<strong>de</strong>r; Watkins (2008), ela é utilizada como guia <strong>de</strong><br />
382
ações necessárias para a implementação <strong>de</strong> um Sistema <strong>de</strong> Gestão <strong>de</strong> Segurança da<br />
Informação (SGSI) segundo a norma ABNT NBR ISO 27001:2005.<br />
De acordo ABNT NBR ISO 27002:2005(ABNT, 2005), seus controles po<strong>de</strong>m<br />
ser consi<strong>de</strong>rados como o ponto <strong>de</strong> partida para o <strong>de</strong>senvolvimento <strong>de</strong> diretrizes voltadas<br />
para a segurança da informação em uma organização. Entretanto, nem sempre eles<br />
po<strong>de</strong>m ser aplicados ou são suficientes para assegurar a segurança da informação. Um<br />
exemplo <strong>de</strong>sta afirmativa, é o fato <strong>de</strong> que <strong>de</strong>terminados controles po<strong>de</strong>m ser mais<br />
dispendiosos que o valor da informação que eles preten<strong>de</strong>m proteger ou que a constante<br />
evolução das ameaças justifique a adoção <strong>de</strong> controles adicionais. Sendo assim, eles<br />
<strong>de</strong>vem ser selecionados mediante uma análise <strong>de</strong> risco e <strong>de</strong> retorno <strong>de</strong> investimento<br />
periódica.<br />
Os controles relacionados com gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso estão<br />
distribuídos em graus diferentes por todas as áreas <strong>de</strong>finidas. Entretanto, eles estão<br />
concentrados em maior grau nas áreas <strong>de</strong> gestão <strong>de</strong> ativos, segurança em recursos<br />
humanos e controle <strong>de</strong> acesso.<br />
4. Controles Selecionados e Avaliação em uma OPF<br />
Segundo a ABNT NBR ISO 27002:2005 (ABNT, 2005), convém que os<br />
controles sejam selecionados e implementados para assegurar que os riscos sejam<br />
reduzidos a um nível aceitável. Para cada controle i<strong>de</strong>ntificado foi realizada uma análise<br />
do objetivo envolvido. Diante <strong>de</strong>sta análise, os controles similares foram agrupados em<br />
um único controle e classificados quanto ao seu tipo: Administrativo (A), Operacional<br />
(O) e Técnico (T). Para cada item <strong>de</strong> controle i<strong>de</strong>ntificado, sua execução foi classificada<br />
através da escala apresentada na Tabela 1.<br />
Tabela 1 – Escala <strong>de</strong> verificação <strong>de</strong> controles<br />
Nível<br />
Efetivo<br />
Não Efetivo<br />
Insuficiente<br />
Descrição<br />
Quando o controle é aplicado e o seu resultado é consi<strong>de</strong>rado eficiente.<br />
Quando o controle é aplicado mas o seu resultado não é consi<strong>de</strong>rado eficiente.<br />
Quando o controle é aplicado, mas não aten<strong>de</strong> completamente.<br />
Não Aplicado<br />
Quando o controle não é aplicado.<br />
A Tabela 2 apresenta os controles i<strong>de</strong>ntificados já agrupados, a relação <strong>de</strong> cada<br />
controle com o framework ou norma que o <strong>de</strong>finiu e a relação com do controle com a<br />
área <strong>de</strong> gestão i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso (recursos, privilégios e políticas). Ao total foram<br />
63 controles i<strong>de</strong>ntificados, on<strong>de</strong> 22 relativos à gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>, 34 com a gestão <strong>de</strong><br />
acesso e 7 com auditoria.<br />
Para a avaliação dos controles foram utilizadas técnicas como a análise<br />
documental, observação direta e a realização <strong>de</strong> entrevistas semi-estruturadas com os<br />
dois principais responsáveis pela área <strong>de</strong> gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso da<br />
organização.<br />
383
Tabela 2 – Controles Selecionados para a Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> Acesso<br />
Controles C O T N 2<br />
Controles C O T N 2<br />
Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong><br />
Políticas e Procedimentos<br />
(A) Se todos os usuários possuem um único<br />
i<strong>de</strong>ntificador universal e formalmente <strong>de</strong>finido.<br />
(A) Se o custo beneficio para a representação da<br />
i<strong>de</strong>ntida<strong>de</strong> digital foi <strong>de</strong>finido<br />
(A) Se os direitos e obrigações do uso da<br />
i<strong>de</strong>ntida<strong>de</strong> estão <strong>de</strong>finidos no contrato <strong>de</strong><br />
trabalho<br />
(A) Se o processo <strong>de</strong> solicitação, emissão,<br />
revogação, modificação <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> está<br />
<strong>de</strong>finido<br />
(O) Se existe política <strong>de</strong> confi<strong>de</strong>ncialida<strong>de</strong> na<br />
entrega <strong>de</strong> cre<strong>de</strong>nciais<br />
(A) Se existem políticas <strong>de</strong> privacida<strong>de</strong> para o<br />
uso da i<strong>de</strong>ntida<strong>de</strong><br />
(A) Se são <strong>de</strong>finidos políticas e procedimentos<br />
prévios <strong>de</strong> cre<strong>de</strong>nciamento<br />
x x x<br />
x<br />
x x x x<br />
x x x x x<br />
x<br />
x<br />
x<br />
(O) Se os direitos <strong>de</strong> acesso são<br />
concedidos baseados nos princípios<br />
necessida<strong>de</strong> <strong>de</strong> conhecer, mínimo<br />
privilégio e interesse do serviço<br />
(O) Se os direitos <strong>de</strong> acesso são<br />
revisados periodicamente<br />
(O) Se existem relatórios <strong>de</strong> métricas<br />
<strong>de</strong> acesso<br />
Gestão <strong>de</strong> Políticas<br />
Política e Procedimentos<br />
(A) Se os direitos e obrigações do uso<br />
dos direitos <strong>de</strong> acesso estão <strong>de</strong>finidos<br />
no contrato <strong>de</strong> trabalho<br />
(A) Se a política <strong>de</strong> controle <strong>de</strong> acesso<br />
é <strong>de</strong>finida formalmente pela<br />
organização<br />
(A) Se a segregação <strong>de</strong> funções é<br />
<strong>de</strong>finida na política <strong>de</strong> controle <strong>de</strong><br />
acesso<br />
x x x x x<br />
x<br />
x<br />
x<br />
x x<br />
x x x<br />
x<br />
(A) Se o cre<strong>de</strong>nciamento ocorre apenas <strong>de</strong>pois<br />
da contratação<br />
(A) Se existe política para a criação <strong>de</strong><br />
cre<strong>de</strong>nciais seguras<br />
(A) Se o processo <strong>de</strong> solicitação, emissão,<br />
revogação e modificação <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> está<br />
<strong>de</strong>finido para os ambientes <strong>de</strong> <strong>de</strong>senvolvimento<br />
(A) Se o cre<strong>de</strong>nciamento dos usuários está <strong>de</strong><br />
acordo com as normas e legislações vigentes<br />
para o acesso a sistemas críticos<br />
(A) Se são <strong>de</strong>finidas políticas para a concessão<br />
<strong>de</strong> cre<strong>de</strong>nciais <strong>de</strong> administração<br />
Execução e Verificação<br />
(T) Se as i<strong>de</strong>ntida<strong>de</strong>s digitais estão armazenadas<br />
em um repositório central<br />
(O) Se as i<strong>de</strong>ntida<strong>de</strong>s digitais são revisadas<br />
periodicamente<br />
(A) Se existem relatórios <strong>de</strong> métricas das<br />
i<strong>de</strong>ntida<strong>de</strong>s<br />
(T) Se o primeiro acesso com uma cre<strong>de</strong>ncial é<br />
controlado<br />
(O) Se as cre<strong>de</strong>nciais são modificadas<br />
periodicamente<br />
(T) Se os históricos das cre<strong>de</strong>nciais são<br />
armazenados<br />
(T) Se as i<strong>de</strong>ntida<strong>de</strong>s são bloqueadas por<br />
inativida<strong>de</strong><br />
(T) Se o cre<strong>de</strong>nciamento é feito por um<br />
processo automatizado<br />
(O) Se as cre<strong>de</strong>nciais são removidas após o<br />
<strong>de</strong>sligamento do usuário<br />
(T) Se a autenticação utiliza múltiplos fatores<br />
Gestão <strong>de</strong> Acesso<br />
Gestão <strong>de</strong> Recursos<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
(A) Se existe uma política que<br />
<strong>de</strong>screva o procedimento <strong>de</strong><br />
autenticação<br />
(A) Se são <strong>de</strong>finidos nos contratos<br />
políticas que apliquem sanções a<br />
acessos não autorizados por parte das<br />
terceirizadas<br />
(A) Se a implementação do controle <strong>de</strong><br />
acesso é aprovada previamente pela<br />
direção da organização<br />
(A) Se a política <strong>de</strong> controle <strong>de</strong> acesso<br />
está em conformida<strong>de</strong> com a política<br />
<strong>de</strong> segurança da informação e<br />
comunicações<br />
(A) Se existem programas <strong>de</strong><br />
conscientização e sensibilização sobre<br />
controle <strong>de</strong> acesso<br />
Execução e Verificação<br />
(T) Se o registro <strong>de</strong> último acesso é<br />
preservado e mostrado ao usuário<br />
(T) Se a sessão <strong>de</strong> acesso é expirada<br />
após tempo <strong>de</strong> inativida<strong>de</strong><br />
(T) Se a sessão <strong>de</strong> acesso proíbe acesso<br />
concorrente<br />
(T) Se a concessão <strong>de</strong> acesso baseia-se<br />
em horários<br />
(T) Se as conexões são encerradas apos<br />
o fim da sessão <strong>de</strong> acesso<br />
(T) Se informações relevantes não são<br />
informadas no procedimento <strong>de</strong><br />
autenticação<br />
Gestão <strong>de</strong> Privilégios<br />
Política e Procedimentos<br />
(A) Se o processo <strong>de</strong> solicitação,<br />
concessão, modificação e revogação <strong>de</strong><br />
direitos <strong>de</strong> acesso está <strong>de</strong>finido<br />
x x<br />
x<br />
x x<br />
x x<br />
x<br />
x<br />
x x<br />
x<br />
x x<br />
x<br />
x<br />
x x x x<br />
Política e Procedimentos<br />
(A) Se a política <strong>de</strong> classificação da informação<br />
está <strong>de</strong>finida<br />
x<br />
x<br />
(A) Se existe um mo<strong>de</strong>lo para<br />
solicitação <strong>de</strong> acesso<br />
(A) Se a concessão <strong>de</strong> acesso é baseada<br />
na segregação <strong>de</strong> funções<br />
x<br />
x<br />
384
(A) Se os controles <strong>de</strong> acesso são i<strong>de</strong>ntificados<br />
com base na gestão <strong>de</strong> riscos <strong>de</strong> segurança da<br />
informação e comunicações<br />
x<br />
(A) Se os direitos <strong>de</strong> acesso são<br />
aprovados pelos proprietários das<br />
informações<br />
x<br />
x<br />
(A) Se são <strong>de</strong>finidos termos <strong>de</strong><br />
responsabilida<strong>de</strong> para o uso dos recursos<br />
(A) Se os direitos <strong>de</strong> acesso são documentados x x<br />
(A) Se os recursos criptográficos utilizados são<br />
homologados<br />
Execução e Verificação<br />
(O) Se a informação está classificada quanto ao<br />
sigilo<br />
(O) Se os proprietários da informação são<br />
<strong>de</strong>finidos<br />
(O) Se o tempo <strong>de</strong> retenção da informação é<br />
<strong>de</strong>finido<br />
(O) Se a classificação da informação é revisada<br />
periodicamente<br />
(T) Se os direitos <strong>de</strong> acesso são armazenados<br />
em um repositório central<br />
(T) Se o armazenamento das informações é<br />
a<strong>de</strong>quado<br />
(T) Se o recurso oferecido utiliza canal seguro<br />
<strong>de</strong> comunicação<br />
(A) Se o processo <strong>de</strong> solicitação, concessão,<br />
modificação e revogação <strong>de</strong> direitos <strong>de</strong> acesso<br />
está <strong>de</strong>finido<br />
(A) Se existe um mo<strong>de</strong>lo para solicitação <strong>de</strong><br />
acesso<br />
(A) Se a concessão <strong>de</strong> acesso é baseada na<br />
segregação <strong>de</strong> funções<br />
(A) Se os direitos <strong>de</strong> acesso são aprovados<br />
pelos proprietários das informações<br />
(A) Se o processo <strong>de</strong> revisão <strong>de</strong> concessão <strong>de</strong><br />
direitos <strong>de</strong> acesso é <strong>de</strong>finido formalmente<br />
Legenda: C = Cobit, O = OISM2, T = TCU, N = NC 07 e 2 = ISO 27002<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x x x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x x x x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
(A) Se o processo <strong>de</strong> revisão <strong>de</strong><br />
concessão <strong>de</strong> direitos <strong>de</strong> acesso é<br />
<strong>de</strong>finido formalmente<br />
Execução e verificação<br />
(O) Se os direitos <strong>de</strong> acesso são<br />
concedidos baseados nos princípios<br />
necessida<strong>de</strong> <strong>de</strong> conhecer, mínimo<br />
privilégio e interesse do serviço<br />
(O) Se os direitos <strong>de</strong> acesso são<br />
revisados periodicamente<br />
(O) Se existem relatórios <strong>de</strong> métricas<br />
<strong>de</strong> acesso<br />
Auditoria<br />
Políticas e Procedimentos<br />
(A) Se os eventos <strong>de</strong> auditoria são<br />
previamente <strong>de</strong>finidos<br />
(T) Se são <strong>de</strong>finidos mecanismos que<br />
garantam a exatidão dos registros <strong>de</strong><br />
auditoria<br />
Execução e Verificação<br />
(T) Se o uso da i<strong>de</strong>ntida<strong>de</strong> é registrado<br />
(trilha <strong>de</strong> auditoria)<br />
(O) Se as trilhas <strong>de</strong> auditoria do uso da<br />
i<strong>de</strong>ntida<strong>de</strong> são analisadas<br />
(T) Se os usuários são i<strong>de</strong>ntificados no<br />
acesso as informações (trilhas <strong>de</strong><br />
auditoria)<br />
(O) Se as trilhas <strong>de</strong> auditorias do<br />
acesso as informações são analisadas<br />
periodicamente<br />
(T) Se os acessos são registrados para<br />
oferecer rastreabilida<strong>de</strong> das ações<br />
tomadas<br />
x<br />
x<br />
x x x x x<br />
x<br />
x<br />
x<br />
x<br />
x x x<br />
As próximas subseções apresentam os resultados coletados sobre a<br />
conformida<strong>de</strong> <strong>de</strong> uma organização com os controles i<strong>de</strong>ntificados.<br />
4.1. Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong><br />
A Figura 1 apresenta os resultados obtidos dos controles relacionados com a<br />
Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong> Política e Procedimentos. Foram i<strong>de</strong>ntificados 59% dos controles<br />
como efetivos, 25% como insuficientes, 8% como não efetivos e 8% como não<br />
aplicados. Quanto a Execução e Verificação foram i<strong>de</strong>ntificados 60% dos controles<br />
como efetivos, 20% como insuficientes, 20% como não aplicados e nenhum controle<br />
como não efetivo.<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
Figura 1: Avaliação dos Controles da Gestão <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong><br />
385
4.2. Gestão <strong>de</strong> Acesso<br />
A Figura 2 apresenta os resultados obtidos dos controles relacionados com a<br />
Gestão <strong>de</strong> Acesso e Política e Procedimentos. Foram i<strong>de</strong>ntificados 50% dos controles<br />
como efetivos, 11% como insuficientes, 39% como não aplicados e nenhum como não<br />
efetivo.<br />
Figura 2: Controles da Gestão <strong>de</strong> Acesso<br />
A Figura 2 também apresenta os resultados obtidos dos controles relacionados<br />
com a Gestão <strong>de</strong> Acesso e Execução e Verificação. Foram i<strong>de</strong>ntificados 56% dos<br />
controles como efetivos, 19% como insuficientes, 19% como não aplicados e 6% como<br />
não efetivos.<br />
4.3. Auditoria<br />
A Figura 3 apresenta os resultados obtidos dos controles relacionados com a<br />
Auditoria Políticas e Procedimentos. Foram i<strong>de</strong>ntificados 50% dos controles como<br />
efetivos, 50% como insuficientes. Não foram i<strong>de</strong>ntificados controles como não<br />
aplicados e não efetivos. Quanto a Execução e Verificação, foram i<strong>de</strong>ntificados 60%<br />
dos controles como efetivos, 20% como insuficientes, 20% como não aplicados e<br />
nenhum como não efetivo.<br />
Figura 3: Controles <strong>de</strong> Auditoria relacionados com Políticas e Procedimentos<br />
5. Conclusão e Trabalhos Futuros<br />
Este trabalho teve como objetivo avaliar um sistema <strong>de</strong> gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong><br />
acesso em uma Organização Pública Fe<strong>de</strong>ral. Para o estabelecimento do critério <strong>de</strong><br />
análise, foram i<strong>de</strong>ntificados os principais controles técnicos, administrativos e<br />
operacionais relacionados com a gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso, com base nos<br />
principais normativos. Os controles relacionados foram i<strong>de</strong>ntificados e agrupados <strong>de</strong><br />
acordo com o seu propósito, levando em consi<strong>de</strong>ração gestão da i<strong>de</strong>ntida<strong>de</strong> e as<br />
subdivisões da gestão <strong>de</strong> acesso, como a gestão <strong>de</strong> recursos, gestão <strong>de</strong> privilégios e<br />
gestão <strong>de</strong> políticas.<br />
Após a i<strong>de</strong>ntificação, os controles <strong>de</strong> segurança foram avaliados em uma<br />
organização específica integrante da APF. Embora os dados coletados sejam suficientes<br />
para compreen<strong>de</strong>r o panorama atual da gestão da i<strong>de</strong>ntida<strong>de</strong> e do acesso da organização<br />
pesquisada, a não adoção <strong>de</strong> um mo<strong>de</strong>lo <strong>de</strong> maturida<strong>de</strong> tornou impossível a<br />
386
classificação do estágio atual em níveis. Este <strong>de</strong>safio será foco <strong>de</strong> futuros trabalhos, com<br />
o objetivo <strong>de</strong> melhorar a avaliação do sistema <strong>de</strong> gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso.<br />
Por fim, a i<strong>de</strong>ntificação dos controles <strong>de</strong> segurança da gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e do<br />
acesso com base nos principais normativos e a verificação da implementação real <strong>de</strong> tais<br />
controles foram as principais contribuições da pesquisa para a organização. Os controles<br />
i<strong>de</strong>ntificados po<strong>de</strong>m ser utilizados por outras organizações para a avaliação <strong>de</strong> seus<br />
sistemas <strong>de</strong> gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong> e <strong>de</strong> acesso, como também, po<strong>de</strong>m ser verificados<br />
novamente para i<strong>de</strong>ntificar a evolução <strong>de</strong>stes processos. Esta nova verificação permite<br />
observar e direcionar melhorias na segurança da informação e comunicações no<br />
controle <strong>de</strong> acesso às informações.<br />
Referências Bibliográficas<br />
ABNT. Código <strong>de</strong> prática para a gestão da segurança da informação: ABNT NBR<br />
ISO/IEC 27002:2005. 2a. ed. Rio <strong>de</strong> Janeiro, 2005.<br />
BARBOSA, A. <strong>de</strong> S. Avaliação Preliminar dos Níveis <strong>de</strong> Maturida<strong>de</strong> dos Controles <strong>de</strong><br />
Segurança da Informação e Comunicações adotados em Organizações Militares do<br />
Exército Brasileiro, <strong>de</strong> acordo com a Norma ABNT NBR ISO/IEC 27002:2005.<br />
Monografia <strong>de</strong> Conclusão <strong>de</strong> Curso (Especialização). Universida<strong>de</strong> <strong>de</strong> Brasília. 2009.<br />
ALDER A WA K N G : A M ’ G D y<br />
ISO 27001/ISO 27002. 4ª Edição. Reino Unido. Kogan Page Limited. 2008.<br />
BRASIL. Tribunal <strong>de</strong> Contas da União. Boas práticas em segurança da informação /<br />
Tribunal <strong>de</strong> Contas da União. – 3. ed. Brasília. TCU 2008.<br />
DSIC/GSIPR. Norma Complementar 07/IN01/DSIC/GSIPR. 2010.<br />
FICAM. Fe<strong>de</strong>ral I<strong>de</strong>ntity, Cre<strong>de</strong>ntial, and Access Management (FICAM). Roadmap and<br />
Implementation Guidance. Versão 1.0. 2009.<br />
ISACA. Information Systems Audit and Control Foundation. I<strong>de</strong>ntity Management<br />
Audit/Assurance Program. ISACA. 2009.<br />
ITGI - IT GOVERNANCE INSTITUTE. COBIT 4.1. 4.1. ed. USA, 2007.<br />
NTSC. National Science and Technology Council: Subcommittee on Biometrics and<br />
I<strong>de</strong>ntity Management. I<strong>de</strong>ntity Management Task Force Report. USA. 2008.<br />
OGC. Information Technology Infrastructure Library: Service Strategy. Londres. 2007.<br />
O-ISM3. Open Information Security Management Maturity Mo<strong>de</strong>l. Open Group. 2011.<br />
PARANHOS, M. M. Framework <strong>de</strong> segurança da informação para medição do nível <strong>de</strong><br />
maturida<strong>de</strong> das organizações. Dissertação <strong>de</strong> mestrado. UCB. Brasília. 2010.<br />
PONEMON. Access Governance Trends Survey 2010 - Study of IT Practitioners in<br />
Multinational Organizations. Ponemon Institute. 2010.<br />
SILVA, S. R. F. Proposta <strong>de</strong> Mo<strong>de</strong>lo <strong>de</strong> Controle <strong>de</strong> Acesso Lógico por Servidores<br />
Públicos aos Recursos Computacionais da Administração Pública. Monografia <strong>de</strong><br />
Conclusão <strong>de</strong> Curso (Especialização). Universida<strong>de</strong> <strong>de</strong> Brasília. 2008.<br />
SIMIÃO, R. S. Segurança da Informação e Comunicações: conceito aplicável em organizações<br />
governamentais. Monografia <strong>de</strong> Conclusão <strong>de</strong> Curso (Especialização). Universida<strong>de</strong> <strong>de</strong><br />
Brasília. 2009.<br />
387
Uma Plataforma para Gerenciamento <strong>de</strong> I<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong><br />
Software como Serviço em uma Infraestrutura como Serviço<br />
Maicon Stihler e Altair Olivo Santin<br />
Programa <strong>de</strong> Pós-Graduação em Informática – Pontifícia Universida<strong>de</strong> Católica do<br />
Paraná (PUCPR)<br />
Rua Imaculada Conceição, 1155 – Prado Velho – CEP 80215-901 – Curitiba – PR<br />
{stihler,santin}@ppgia.pucpr.br<br />
Abstract. Users of software as a service (SaaS) do not exist on the<br />
infrastructure as a service (IaaS) domain; this complicates the accounting and<br />
auditing of resource consumption. Consequently, <strong>de</strong>velopers of SaaS<br />
applications are tasked with managing the mapping of i<strong>de</strong>ntities between SaaS<br />
and IaaS. The traditional approaches to i<strong>de</strong>ntity fe<strong>de</strong>ration look at the<br />
problem at only one level (eg. SaaS), thus we propose a platform to allow the<br />
mapping of i<strong>de</strong>ntities between multiple levels in a transparent fashion. The<br />
result is reduced complexity for <strong>de</strong>velopers, transparency for users, and a<br />
more accurate accounting and auditing of resource usage.<br />
Resumo. Usuários <strong>de</strong> software como serviço (SaaS) não existem no domínio<br />
da infraestrutura como serviço (IaaS), o que complica a contabilida<strong>de</strong> e<br />
auditoria do consumo <strong>de</strong> recursos. Consequentemente, os programadores <strong>de</strong><br />
aplicações SaaS têm a tarefa <strong>de</strong> gerenciar o mapeamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s entre<br />
SaaS e IaaS. As abordagens tradicionais para a fe<strong>de</strong>ração <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s<br />
olham para o problema em apenas um nível (e.g. SaaS), portanto, propomos<br />
uma plataforma para permitir o mapeamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s entre os vários<br />
níveis <strong>de</strong> uma forma transparente. O resultado é a redução <strong>de</strong> complexida<strong>de</strong><br />
para os <strong>de</strong>senvolvedores, a transparência para os usuários, e a contabilida<strong>de</strong><br />
e auditoria mais precisas do uso <strong>de</strong> recursos.<br />
1. Introdução<br />
O amadurecimento da modalida<strong>de</strong> <strong>de</strong> computação em nuvem conhecida como<br />
Infraestrutura como Serviço (Infrastructure as a Service, IaaS), trouxe novas<br />
possibilida<strong>de</strong>s para os <strong>de</strong>senvolvedores <strong>de</strong> Software como Serviço (Software as a<br />
Service, SaaS). A elasticida<strong>de</strong> computacional oferecida por um ambiente <strong>de</strong> IaaS<br />
permite, <strong>de</strong> mesmo modo, que uma aplicação em nível SaaS seja redimensionada<br />
conforme a <strong>de</strong>manda <strong>de</strong> seus usuários aumenta[Badger, Grance, Patt-Corner e Voas<br />
2011] .<br />
Essa flexibilida<strong>de</strong>, no entanto, oferece <strong>de</strong>safios que não são solucionados<br />
facilmente pelas propostas existentes na literatura. A concepção em camadas do mo<strong>de</strong>lo<br />
<strong>de</strong> serviços <strong>de</strong> computação em nuvem <strong>de</strong>svincula a lógica da aplicação da<br />
infraestrutura, mas cria dificulda<strong>de</strong>s <strong>de</strong> mapeamento entre as i<strong>de</strong>ntida<strong>de</strong>s dos usuários<br />
da aplicação SaaS e as i<strong>de</strong>ntida<strong>de</strong>s dos usuários que existem no ambiente IaaS. Isto é,<br />
388
um usuário válido em um ambiente não é reconhecido no outro. Essa <strong>de</strong>sintegração tem<br />
impacto direto, por exemplo, na capacida<strong>de</strong> do <strong>de</strong>senvolvedor SaaS <strong>de</strong> implementar<br />
políticas <strong>de</strong> autorização dinâmicas para seus usuários. Além disto, o <strong>de</strong>senvolvedor da<br />
aplicação tem dificulda<strong>de</strong>s para rastrear i<strong>de</strong>ntida<strong>de</strong>s em nível <strong>de</strong> SaaS e adaptar as<br />
políticas ao consumo <strong>de</strong> infraestrutura que o usuário faz em nível <strong>de</strong> IaaS.<br />
Adicionalmente, o controle <strong>de</strong> acesso em nível <strong>de</strong> IaaS não conhece a associação entre<br />
as políticas <strong>de</strong> acesso e o usuário que são controladas em nível <strong>de</strong> SaaS. Estas<br />
dificulda<strong>de</strong>s para gerenciar i<strong>de</strong>ntida<strong>de</strong>s entre as camadas trazem prejuízos para outros<br />
controles no ambiente <strong>de</strong> computação em nuvem.<br />
Consi<strong>de</strong>rando que a natureza <strong>de</strong> cobrança dos serviços <strong>de</strong> IaaS precisa ser<br />
contabilizada pelo consumo individual <strong>de</strong> recursos, tem-se uma limitação <strong>de</strong><br />
granularida<strong>de</strong> nas abordagens aplicadas atualmente. Em geral a contabilização <strong>de</strong><br />
consumo é feita pelo contratante e não pelo usuário. Essa contabilida<strong>de</strong> fina permitiria a<br />
aplicação <strong>de</strong> políticas <strong>de</strong> autorização específicas para cada usuário, assim como<br />
políticas <strong>de</strong> cobrança a<strong>de</strong>quadas para cada perfil. Por exemplo, um usuário que consuma<br />
mais recursos do que o previsto inicialmente po<strong>de</strong> entrar em um esquema <strong>de</strong> cobrança<br />
diferenciado e ter seu acesso garantido por políticas <strong>de</strong> controle <strong>de</strong> uso dinâmicas.<br />
Ainda que os planos <strong>de</strong> cobrança utilizados em SaaS sejam diferentes dos<br />
utilizados em IaaS, a individualização do consumo <strong>de</strong> recursos da infraestrutura<br />
<strong>de</strong>correntes do uso <strong>de</strong> serviços (SaaS) abre novas possibilida<strong>de</strong>s <strong>de</strong> cobrança e controle.<br />
Em abordagens tradicionais os custos <strong>de</strong> provimento do serviço é rateada entre os<br />
usuários, <strong>de</strong>vido à incapacida<strong>de</strong> <strong>de</strong> i<strong>de</strong>ntificar as parcelas <strong>de</strong> uso <strong>de</strong> maneira<br />
indidualizada.<br />
Para equacionar a dificulda<strong>de</strong> <strong>de</strong> mapeamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s entre domínios<br />
diferentes, vários trabalhos propõem a fe<strong>de</strong>ração <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s ou autenticação<br />
distribuída: Shibboleth[Morgan, Cantor, Carmody, Hoehn e Klingenstein 2004],<br />
OpenSSO [Oracle Corporation 2010], SAML [OASIS 2011] e OpenID [OpenID<br />
Foundation 2007]. No entanto, estas abordagens operam em um único nível <strong>de</strong><br />
abstração, ou seja, as i<strong>de</strong>ntida<strong>de</strong>s são utilizadas em contextos homogêneos (e.g.<br />
aplicações web). Neste contexto, observamos que as aplicações SaaS costumam possuir<br />
mecanismos <strong>de</strong> segurança diferentes dos utilizados em sistemas IaaS (e.g. os sistemas<br />
<strong>de</strong> autenticação utilizados). Assim, as propostas existentes para fe<strong>de</strong>ração <strong>de</strong><br />
i<strong>de</strong>ntida<strong>de</strong>s não po<strong>de</strong>m aten<strong>de</strong>r satisfatoriamente e <strong>de</strong> forma transparente os três níveis<br />
<strong>de</strong> abstração <strong>de</strong> computação em nuvem.<br />
Para contornar as limitações citadas anteriormente é proposto neste trabalho uma<br />
plataforma interposta entre a camada <strong>de</strong> IaaS e a aplicação SaaS, ocultando do<br />
<strong>de</strong>senvolvedor <strong>de</strong> SaaS os <strong>de</strong>talhes <strong>de</strong> autenticação e contabilida<strong>de</strong> em nível <strong>de</strong> IaaS.<br />
Deste modo, uma aplicação SaaS ganha a possibilida<strong>de</strong> <strong>de</strong> rastrear a utilização <strong>de</strong><br />
recursos <strong>de</strong> baixo nível (camada <strong>de</strong> IaaS) individualmente, através do mapeamento das<br />
389
i<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong> seus usuários e dos processos executados em nome <strong>de</strong>stes no ambiente<br />
IaaS.<br />
Este artigo está organizado da seguinte maneira: na Seção 2 é apresentada uma<br />
revisão dos principais trabalhos relacionados; a Seção 3 discute a arquitetura da<br />
plataforma proposta. A Seção 4 apresenta uma discussão sobre a implementação <strong>de</strong> um<br />
protótipo e as consi<strong>de</strong>rações finais são apresentadas na Seção 5.<br />
2. Trabalhos Relacionados<br />
Shibboleth e OpenSSO oferecem compatibilida<strong>de</strong> com o profile web da Security<br />
Assertion Markup Language (SAML). Um dos fundamentos <strong>de</strong> SAML é prover<br />
i<strong>de</strong>ntida<strong>de</strong>s fe<strong>de</strong>radas para permitir que organizações que utilizem diferentes<br />
mecanismos <strong>de</strong> autenticação e autorização possam interoperar.<br />
No OpenSSO/Shibboleth, quando um usuário tenta acessar um recurso web com<br />
seu navegador, o service provi<strong>de</strong>r (SP) exige informações sobre o usuário para <strong>de</strong>cidir<br />
se o acesso será permitido. A requisição é redirecionada para um site executando o<br />
software <strong>de</strong> i<strong>de</strong>ntificação (I<strong>de</strong>ntity Provi<strong>de</strong>r, IdP) da organização responsável, on<strong>de</strong> o<br />
usuário efetua seu login. O IdP redireciona o navegador <strong>de</strong> volta ao recurso protegido,<br />
embutindo algumas informações (i.e. assertivas) que comprovam que o usuário está<br />
autenticado. O SP valida estas assertivas e coleta mais informações sobre o usuário no<br />
IdP. Os atributos são repassados à aplicação Web para que a <strong>de</strong>cisão <strong>de</strong> autorização seja<br />
tomada.<br />
O OpenID possui uma abordagem similar ao Shibboleth. Sua estrutura básica é<br />
composta pelos sites consumidores <strong>de</strong> cre<strong>de</strong>nciais, chamados <strong>de</strong> relying party (RP), e<br />
pelos OpenID provi<strong>de</strong>rs (i.e. provedores <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>). A diferença principal entre a<br />
abordagem das opções anteriores está no fato <strong>de</strong> que o usuário <strong>de</strong>ci<strong>de</strong> quais RPs <strong>de</strong>vem<br />
receber suas informações. Nos casos anteriores, o provedor <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s é quem<br />
<strong>de</strong>ci<strong>de</strong>, através <strong>de</strong> suas políticas <strong>de</strong> segurança, quais são as partes que <strong>de</strong>vem ter acesso<br />
às cre<strong>de</strong>nciais do usuário. OpenID é centrado no usuário e seu foco tem sido a aplicação<br />
para autenticação distribuída em sites web [OpenID Foundation 2007].<br />
Essa abordagem, OpenID, contudo não é a<strong>de</strong>quada para o ambiente discutido na<br />
introdução. Pois, além da proposta ser limitada a recursos web, sua função é garantir o<br />
single sign-on (i.e. autenticação única) entre domínios <strong>de</strong> segurança diferentes. Ainda<br />
que seja possível efetuar a autenticação <strong>de</strong> acesso a aplicações SaaS com o uso <strong>de</strong>stas<br />
soluções, o mapeamento entre as i<strong>de</strong>ntida<strong>de</strong>s SaaS e IaaS ainda é uma questão em<br />
aberto.<br />
Um sistema muito popular para o gerenciamento <strong>de</strong> autenticação em nível <strong>de</strong><br />
sistema operacional é o Kerberos Authentication System [Steiner, Neuman, e Schiller<br />
1988]. Através <strong>de</strong> uma série <strong>de</strong> mensagens cifradas, uma aplicação po<strong>de</strong> verificar que<br />
uma requisição é feita em nome <strong>de</strong> um <strong>de</strong>terminado usuário. O Kerberos altera o<br />
protocolo <strong>de</strong> autenticação <strong>de</strong> Needham e Schroe<strong>de</strong>r [Needham e Schroe<strong>de</strong>r 1978] para<br />
390
eduzir o número <strong>de</strong> mensagens <strong>de</strong> autenticação, através do uso <strong>de</strong> timestamps, um<br />
serviço para eliminar a necessida<strong>de</strong> <strong>de</strong> utilização subsequente <strong>de</strong> senhas – o serviço <strong>de</strong><br />
ticket-granting, e a possibilida<strong>de</strong> <strong>de</strong> utilizar servidores <strong>de</strong> autenticação que existam em<br />
domínios diferentes daquele da aplicação alvo [Neuman e Ts'o 1994].<br />
O Kerberos permite a centralização das informações <strong>de</strong> autenticação e po<strong>de</strong> ser<br />
utilizado em um ambiente <strong>de</strong> IaaS. Contudo ele não está integrado a autenticação da<br />
aplicação SaaS. Em nossa proposta, o mo<strong>de</strong>lo apresentado pelo Kerberos é utilizado<br />
como parte da plataforma <strong>de</strong> autenticação. Utilizamos as cre<strong>de</strong>nciais <strong>de</strong> nível SaaS para<br />
obtermos cre<strong>de</strong>nciais <strong>de</strong> baixo nível (e.g. utilizando Kerberos), através <strong>de</strong> mapeamentos<br />
entre cre<strong>de</strong>nciais <strong>de</strong> níveis distintos.<br />
3. Arquitetura Proposta<br />
Antes <strong>de</strong> apresentar a arquitetura proposta é importante <strong>de</strong>finirmos as entida<strong>de</strong>s da<br />
proposta.<br />
<br />
<br />
<br />
Usuário SaaS: é o consumidor da aplicação <strong>de</strong>senvolvida a partir da<br />
infraestrutura <strong>de</strong> IaaS. Sua i<strong>de</strong>ntida<strong>de</strong> apenas é reconhecida pela aplicação SaaS,<br />
não sendo possível rastrear suas ativida<strong>de</strong>s por meios convencionais no<br />
ambiente <strong>de</strong> IaaS, pois o ambiente <strong>de</strong> SaaS executa virtualizado sobre o IaaS.<br />
Contratante <strong>de</strong> IaaS: é aquele que utiliza os recursos <strong>de</strong> IaaS para oferecer uma<br />
aplicação como serviço.<br />
Usuário <strong>de</strong> IaaS: são as i<strong>de</strong>ntida<strong>de</strong>s reconhecidas em nível <strong>de</strong> IaaS, isto é, os<br />
usuários reconhecidos pelos sistemas operacionais virtualizados.<br />
Além disto, neste texto serão consi<strong>de</strong>rados recursos e serviços como <strong>de</strong>finidos abaixo:<br />
<br />
Recursos: são os meios computacionais disponibilizados como infraestrutura<br />
(e.g. espaço <strong>de</strong> armazenamento, tempo <strong>de</strong> processamento, banda <strong>de</strong> re<strong>de</strong> etc.).<br />
Serviço: é a aplicação SaaS disponibilizada aos usuários SaaS, utilizando os<br />
recursos oferecidos em nível <strong>de</strong> IaaS.<br />
O contratante <strong>de</strong> IaaS utiliza os recursos contratados para oferecer um serviço<br />
aos usuários <strong>de</strong> SaaS. O monitoramento da quantida<strong>de</strong> <strong>de</strong> consumo realizada no<br />
provimento do serviço é essencial, tendo em consi<strong>de</strong>ração que as políticas <strong>de</strong> cobrança<br />
<strong>de</strong> ambientes <strong>de</strong> IaaS costumam ser baseadas no consumo (i.e. pay-as-you-go).<br />
Além disso, os recursos contratados po<strong>de</strong>m estar sujeitos a diferentes tarifas,<br />
<strong>de</strong>pen<strong>de</strong>ndo do perfil do recurso utilizado. Isso ressalta a importância da<br />
individualização do consumo <strong>de</strong> recursos por parte dos usuários SaaS. A abordagem<br />
simplista <strong>de</strong> rateio dos custos com todos os usuários não é satisfatória; a<br />
individualização do consumo em nível <strong>de</strong> Serviço, contudo é uma tarefa bastante<br />
complicada <strong>de</strong>vido à falta <strong>de</strong> integração no esquema <strong>de</strong> gestão <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong><br />
usuários em nível <strong>de</strong> SaaS e IaaS.<br />
391
Baseados nesses pressupostos, propomos uma arquitetura para mapeamento <strong>de</strong><br />
i<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong> usuários SaaS para IaaS. Um objetivo importante é ocultar do<br />
contratante <strong>de</strong> IaaS as especificida<strong>de</strong>s do mapeamento e os mecanismos <strong>de</strong><br />
implementação, permitindo que o mesmo concentre seus esforços no gerenciamento dos<br />
usuários SaaS. Como po<strong>de</strong>mos ver na Figura 1, que apresenta os principais<br />
componentes da arquitetura proposta, existe uma intersecção entre os ambientes SaaS e<br />
PaaS. Isto <strong>de</strong>corre do fato <strong>de</strong> que, apesar <strong>de</strong> ser provido por uma plataforma, o gateway<br />
do serviço e seus interceptadores operam em nível <strong>de</strong> SaaS.<br />
O componente <strong>de</strong>nominado <strong>de</strong> Usuário SaaS conduz a comunicação com o<br />
serviço, usando para isso um protocolo específico (e.g. HTTP, via navegador web). As<br />
requisições são enviadas ao gateway do serviço – interface pública do serviço oferecida<br />
pelo contratante <strong>de</strong> IaaS; O serviço é a aplicação SaaS.<br />
Figura 1: Componentes da Arquitetura<br />
As requisições feitas pelo cliente <strong>de</strong>vem conter as informações <strong>de</strong> autenticação<br />
requeridas pelo serviço (e.g. um par usuário/senha); estas informações são direcionadas<br />
ao gateway do serviço e são processadas por um interceptador. O interceptador extrai<br />
da requisição do cliente as informações <strong>de</strong> autenticação e <strong>de</strong>senca<strong>de</strong>ia um procedimento<br />
<strong>de</strong> autenticação junto à infraestrutura. Isto é feito através do serviço <strong>de</strong> autenticação, no<br />
estilo do protocolo <strong>de</strong> autenticação Needham-Schroe<strong>de</strong>r, usando a API authenticationserver.<br />
Este processo verifica a existência <strong>de</strong> um mapeamento entre a cre<strong>de</strong>ncial SaaS<br />
fornecida e uma cre<strong>de</strong>ncial IaaS.<br />
392
O serviço <strong>de</strong> autenticação utiliza informações <strong>de</strong> autenticação <strong>de</strong> alto-nível (i.e.<br />
usuários SaaS) para autenticar o acesso a recursos <strong>de</strong> IaaS. Uma vez comprovada a<br />
autenticida<strong>de</strong> do usuário SaaS, o interceptador utiliza a API ticket-granting-server para<br />
obter um token <strong>de</strong> i<strong>de</strong>ntificação.<br />
Este token <strong>de</strong> i<strong>de</strong>ntificação é embutido na requisição do serviço; a requisição é<br />
então repassada à API do Serviço para o processamento esperado do serviço. O serviço<br />
<strong>de</strong>ve então utilizar o token para acessar os recursos protegidos, utilizando para isso a<br />
API Protegida pelos mecanismos <strong>de</strong> segurança nativos do sistema operacional (e.g. o<br />
serviço po<strong>de</strong> instanciar novos processos, ou gravar informações em diretórios<br />
específicos). O sistema operacional po<strong>de</strong> então verificar a autenticida<strong>de</strong> da requisição e<br />
avaliar localmente a autorização do acesso.<br />
3.1. Avaliação qualitativa da proposta<br />
Com a utilização do esquema proposto, a primeira vantagem obtida é a<br />
centralização da ativida<strong>de</strong> <strong>de</strong> gerenciamento do mapeamento <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s no serviço<br />
<strong>de</strong> autenticação. Isto é, ao invés do contratante ser obrigado a administrar contas<br />
específicas para cada usuário SaaS em cada instância <strong>de</strong> sistema operacional criada,<br />
somente será necessário gerenciar uma base <strong>de</strong> autenticação central. Como resultado, o<br />
redimensionamento do serviço não incorre em custos administrativos extras para o<br />
contratante <strong>de</strong> IaaS; uma vez criado o mapeamento no servidor <strong>de</strong> autenticação, todas<br />
as máquinas virtuais instanciadas po<strong>de</strong>rão receber requisições <strong>de</strong> serviço para a<br />
i<strong>de</strong>ntida<strong>de</strong> cadastrada <strong>de</strong> maneira distribuída.<br />
A segunda vantagem da proposta refere-se à possibilida<strong>de</strong> <strong>de</strong> rastrear as<br />
ativida<strong>de</strong>s específicas <strong>de</strong> cada usuário SaaS na infraestrutura. Como o sistema<br />
operacional geralmente oferece mecanismos para monitorar o consumo <strong>de</strong> um usuário<br />
local, o contratante po<strong>de</strong> utilizar tais mecanismos para contabilizar a utilização <strong>de</strong><br />
recursos referentes ao usuário i<strong>de</strong>ntificado pelo token.<br />
Esta segunda possibilida<strong>de</strong> prove a capacida<strong>de</strong> <strong>de</strong> estabelecer políticas <strong>de</strong><br />
autorização dinâmicas para cada usuário. Utilizando os princípios <strong>de</strong>lineados no mo<strong>de</strong>lo<br />
<strong>de</strong> controle <strong>de</strong> uso [Park e Sandhu 2004], por exemplo, é possível disparar funções<br />
administrativas para enten<strong>de</strong>r a quantida<strong>de</strong> <strong>de</strong> recursos disponíveis para um usuário, ou<br />
executar tarefas <strong>de</strong> bilhetagem.<br />
A unificação do sistema <strong>de</strong> i<strong>de</strong>ntificação resulta em um controle fino para o<br />
contratante <strong>de</strong> IaaS que, tal qual os provedores <strong>de</strong> IaaS, po<strong>de</strong> oferecer um serviço<br />
elástico aos seus usuários. Como os usuários <strong>de</strong> SaaS estão isolados <strong>de</strong>ste procedimento<br />
<strong>de</strong> gerenciamento unificado <strong>de</strong> cre<strong>de</strong>nciais, seu uso continua inalterado in<strong>de</strong>pen<strong>de</strong>nte<br />
dos movimentos <strong>de</strong> redimensionamento da infraestrutura utilizada pelo serviço.<br />
4. Implementação<br />
Estudos preliminares foram efetuados para o <strong>de</strong>senvolvimento <strong>de</strong> um protótipo. Como<br />
ambiente <strong>de</strong> IaaS, o middleware adotado foi a versão <strong>de</strong> código aberto do software<br />
Eucalyptus [Eucalyptus Systems, Inc. 2011]. A tecnologia <strong>de</strong> virtualização utilizada é o<br />
393
Xen Hypervisor [Citrix Systems 2011], sendo que as máquinas virtuais executam um<br />
sistema baseado em Linux, como por exemplo, a distribuição Debian [Debian Project<br />
2011].<br />
Como mencionamos anteriormente, o mo<strong>de</strong>lo para autenticação em nível <strong>de</strong><br />
infraestrutura é baseado no protocolo <strong>de</strong> Needham-Schroe<strong>de</strong>r, sendo que uma<br />
implementação do Kerberos é a solução mais apropriada; Para isso, é utilizada a<br />
distribuição <strong>de</strong> código aberto do Massachusetts Institute of Technology [Massachusetts<br />
Institute of Technology 2011].<br />
O serviço, que <strong>de</strong>sempenhará o papel <strong>de</strong> uma aplicação SaaS, será<br />
implementado com base no Apache Axis2 [Apache Foundation 2011], que é uma<br />
implementação da pilha <strong>de</strong> protocolos para serviços web. O Axis2 oferece a opção <strong>de</strong><br />
implementação <strong>de</strong> interceptadores transparentes, <strong>de</strong> modo que po<strong>de</strong>mos inspecionar a<br />
requisição SOAP [W3C 2011] para obtermos as informações <strong>de</strong> autenticação do usuário<br />
SaaS, e embutir cabeçalhos adicionais com o token obtido do serviço <strong>de</strong> autenticação<br />
(Kerberos).<br />
O serviço, instanciado em uma máquina virtual, po<strong>de</strong>rá então receber<br />
requisições dos usuários SaaS. O Interceptador irá efetuar a autenticação do usuário<br />
através das interfaces oferecidas pelo servidor Kerberos, embutindo o token obtido na<br />
mensagem SOAP <strong>de</strong>stinada ao serviço. O serviço, por sua vez, utilizará esse token para<br />
instanciar um processo responsável por aten<strong>de</strong>r a requisição do usuário. Agentes <strong>de</strong><br />
monitoramento instalados no sistema operacional virtualizado po<strong>de</strong>m, então, utilizar o<br />
i<strong>de</strong>ntificador do usuário para coletar os dados <strong>de</strong> consumo do processo criado.<br />
Neste contexto, o serviço funciona como um <strong>de</strong>spachante <strong>de</strong> requisições para<br />
processos criados em nome dos usuários SaaS – a criação <strong>de</strong> processos po<strong>de</strong> ser<br />
executada através do comando ksu(kerberized version of the su), que permite ao serviço<br />
assumir a i<strong>de</strong>ntida<strong>de</strong> do usuário contida no token para fins <strong>de</strong> instanciar o processo.<br />
Através <strong>de</strong> utilitários como o LiSt Open Files (lsof) os agentes po<strong>de</strong>m obter as métricas<br />
referentes a cada usuário (e.g. tempo <strong>de</strong> processamento, espaço utilizado em disco).<br />
A Figura 2 apresenta uma visão geral dos componentes utilizados para<br />
implementar o protótipo da plataforma proposta. Um servidor executando o software<br />
Eucalyptus gerencia as máquinas virtuais em execução na infraestrutura (i.e. são os<br />
recursos IaaS da Figura 1). Cada instância <strong>de</strong>stinada a aten<strong>de</strong>r requisições <strong>de</strong> serviço<br />
possui os componentes da Figura 2 pré-instalados. As cre<strong>de</strong>nciais dos usuários SaaS são<br />
cadastradas em uma base <strong>de</strong> i<strong>de</strong>ntida<strong>de</strong>s utilizadas pelo servidor Kerberos, que emite<br />
tokens <strong>de</strong> autorização utilizados pelo serviço para criar processos em nome dos usuários<br />
SaaS; O servidor Kerberos realiza o papel do servidor <strong>de</strong> autenticação e <strong>de</strong> tickets da<br />
plataforma <strong>de</strong> segurança da Figura 1.<br />
O Cliente SOAP é a aplicação que realiza as requisições <strong>de</strong>sejadas pelo Usuário<br />
SaaS. As requisições são capturadas por um módulo interceptador implementado no<br />
Apache Axis2, para realizar as validações necessárias (i.e. autenticação do usuário SaaS<br />
394
e obtenção <strong>de</strong> token Kerberos para uso no sistema operacional). O Serviço instancia um<br />
processo para aten<strong>de</strong>r as requisições do usuário, e este processo <strong>de</strong> usuário efetua a<br />
interação com o sistema operacional para usar os recursos necessários. O processo <strong>de</strong><br />
usuário executa sob a i<strong>de</strong>ntida<strong>de</strong> fornecida pelo token Kerberos.<br />
Figura 2: Componentes do Protótipo<br />
5. Consi<strong>de</strong>rações Finais<br />
Neste trabalho foi apresentada uma plataforma que permite o mapeamento entre<br />
i<strong>de</strong>ntida<strong>de</strong>s <strong>de</strong> usuários <strong>de</strong> aplicações SaaS e i<strong>de</strong>ntida<strong>de</strong>s em nível <strong>de</strong> IaaS. A integração<br />
das i<strong>de</strong>ntida<strong>de</strong>s provê ao <strong>de</strong>senvolvedor <strong>de</strong> aplicações SaaS a possibilida<strong>de</strong> <strong>de</strong> rastrear a<br />
utilização <strong>de</strong> recursos <strong>de</strong> seus usuários em baixo nível (nível <strong>de</strong> mecanismo), através da<br />
contabilida<strong>de</strong> individual (<strong>de</strong> granularida<strong>de</strong> fina).<br />
Como resultado da proposta, o <strong>de</strong>senvolvedor obtém outras vantagens como a<br />
capacida<strong>de</strong> <strong>de</strong> aplicação <strong>de</strong> políticas dinâmicas <strong>de</strong> autorização baseadas no consumo <strong>de</strong><br />
cada usuário; a cobrança diferenciada e individualizada para cada usuário SaaS,<br />
evitando o rateamento indiscriminado <strong>de</strong> custos <strong>de</strong> consumo.<br />
A utilização <strong>de</strong> interceptadores entre o nível <strong>de</strong> SaaS e os sistemas em nível <strong>de</strong><br />
IaaS permite a integração, <strong>de</strong> forma transparente ao usuário SaaS, dos sistemas <strong>de</strong><br />
autenticação da aplicação e do sistema operacional virtualizado. Ou seja, o aumento no<br />
controle oferecido não incorre em nenhum inconveniente para o usuário final.<br />
As discussões sobre a implementação <strong>de</strong> um protótipo sugerem que a proposta é<br />
realizável com componentes <strong>de</strong> software amplamente disponíveis. As tecnologias<br />
sugeridas são maduras e testadas em produção, o que sugere uma robustez inerente à<br />
proposta.<br />
395
Referências<br />
Apache Foundation (2011), Apache Axis2, Acessível em:<br />
http://axis.apache.org/axis2/java/core/, referenciado em 22 <strong>de</strong> Setembro <strong>de</strong><br />
2011.<br />
Badger, L., Grance, T., Patt-Corner, R. e Voas, J. (2011), Cloud Computing Synopsis<br />
and Recommendations, disponível em: http://csrc.nist.gov/publications/drafts/800-<br />
146/Draft-NIST-SP800-146.pdf, Referenciado em 22 <strong>de</strong> Setembro <strong>de</strong> 2011.<br />
Citrix Systems (2011), Inc. Xen Hypervisor. Disponível em:<br />
http://xen.org/products/xenhyp.html, referenciado em 22 <strong>de</strong> Setembro <strong>de</strong> 2011.<br />
Debian Project (2011), Debian GNU/Linux. Disponível em: http://www.<strong>de</strong>bian.org,<br />
referenciado em 22 <strong>de</strong> Setembro <strong>de</strong> 2011.<br />
Eucalyptus Systems, Inc. (2011), Eucalyptus Cloud Platform. Disponível em:<br />
http://www.eucalyptus.com/, referenciado em 22 <strong>de</strong> Setembro <strong>de</strong> 2011.<br />
Massachusetts Institute of Technology (2011), Kerberos: The Network Authentication<br />
Protocol, Disponível em: http://web.mit.edu/Kerberos/, referenciado em 22 <strong>de</strong><br />
Setembro <strong>de</strong> 2011.<br />
Morgan, R. L., Cantor, S., Carmody, S., Hoehn, W. e Klingenstein (2004), K. Fe<strong>de</strong>rated<br />
Security: The Shibboleth Approach, EDUCAUSE Quarterly, vol. 27, no. 4 pp 12-17.<br />
Needham, R. M. e Schroe<strong>de</strong>r, M. D. (1978), Using encryption for authentication in<br />
large networks of computers, Commun. of the ACM. vol. 21, no. 12, pp 993-999.<br />
[Needham]<br />
Neuman, B.C. e Ts'o, T. (1994), Kerberos: An Authentication Service for Computer<br />
Networks, IEEE Communications, vol. 32 no. 9, pp 33-38.<br />
OpenID Foundation (2007), OpenID Authentication 2.0 Disponível em:<br />
http://openid.net/specs/openid-authentication-2_0.html, referenciado em 22 <strong>de</strong><br />
Setembro <strong>de</strong> 2011.<br />
Oracle Corporation (2010), OpenSSO Architecture Overview, documentação.<br />
http://wikis.sun.com/display/OpenSSO/OpenSSO+Architecture+Overview.<br />
Referenciado em 22 <strong>de</strong> Setembro 2011.<br />
Organization for the Advancement of Structured Information Standards (OASIS)<br />
(2011), Security Assertion Markup Language, v. 2.0. http://docs.oasisopen.org/security/saml/v2.0/saml-core-2.0-os.pdf,<br />
2005. Referenciado em 22 <strong>de</strong><br />
Setembro <strong>de</strong> 2011.<br />
Park, J. e Sandhu, R. (2004), The UCON ABC Usage Control Mo<strong>de</strong>l. ACM Trans. Inf.<br />
Syst. Secur., vol. 7 no. 1, pp 128-174.<br />
Steiner, J.G., Neuman, B.C., e Schiller, J.I. (1988), Kerberos: An Authentication<br />
Service for Open Network Systems. In Proceedings of the Winter 1988 Usenix<br />
Conference.<br />
The World Wi<strong>de</strong> Web Consortium (W3C) (2011), SOAP Version 1.2 Part 1 Messaging<br />
Framework (Second Edition). Disponível em http://www.w3.org/TR/soap12-part1,<br />
referenciado em 22 <strong>de</strong> Setembro <strong>de</strong> 2011.<br />
396
Electronic Documents with Signature Constraints<br />
Felipe C. Werlang 1 , Ricardo F. Custódio 1 , Roberto Araújo 2<br />
1 Departamento <strong>de</strong> Informática e Estatística – Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina (UFSC)<br />
Caixa Postal 476 – 88.040-900 – Florianópolis – SC – Brazil<br />
2 Faculda<strong>de</strong> <strong>de</strong> Computação – Universida<strong>de</strong> Fe<strong>de</strong>ral do Pará (UFPA)<br />
Rua Augusto Corrêa, 01 - Setor Básico – 66075-110 – Belém – PA – Brazil<br />
felipewer@inf.ufsc.br, custodio@inf.ufsc.br, rsa@ufpa.br<br />
Abstract. X.509 Public Key Certificates and Attribute Certificates are well established<br />
technologies. They are employed in digital signatures to prove a signatory’s<br />
i<strong>de</strong>ntity and authorization. However, there is no standard <strong>de</strong>finition for<br />
the way electronic documents should specify the i<strong>de</strong>ntity and the authorization<br />
of required signatories, nor the number of expected signatures. In this paper we<br />
propose to bind i<strong>de</strong>ntity and authorization requirements to a document through<br />
a creator signature. For this, we introduce a new signed signature attribute.<br />
Keywords: Digital Signature, Authorization, Attribute Certificates, Signature<br />
Constraints, Electronic Documents, Authorization Requirements<br />
1. Introduction<br />
Mo<strong>de</strong>rn digital signature standards employ Public Key Certificates (PKCs) to i<strong>de</strong>ntify the<br />
signatories. They also support the inclusion of Attribute Certificates (ACs) in signatures<br />
to provi<strong>de</strong> authorization cre<strong>de</strong>ntials. However, these certificates only certify who signed<br />
a given document and what his attributes were. This does not mean that the signatory had<br />
the authorization to sign that document. We could take, for example, a court injunction.<br />
Although anyone could sign a document containing a court injunction, it only acquires<br />
legal value if signed by a judge. This means that applications enforcing authorization<br />
constraints in digital signatures have to look for a pre<strong>de</strong>fined set of attributes in the signatory’s<br />
AC. That attribute set, in turn, <strong>de</strong>pends directly on the business process in which<br />
the signature is used. Thus, each application ends up tied to a specific business process.<br />
Applications <strong>de</strong>signed to incorporate digital signatures in specific business processes,<br />
with fixed authorization constraints, are quite common. Examples inclu<strong>de</strong> management<br />
systems and communication protocols. Many kinds of forms also tend to have<br />
fixed authorization constraints. However, there are even more cases of documents with<br />
dynamic content and format. Each of these documents may have different authorization<br />
constraints for its signatures. A good example of this is a business contract.<br />
Furthermore, there may be situations where a document has a mix of authorization<br />
and i<strong>de</strong>ntity constraints. For example, a contract between a company and an individual<br />
may require the signature of the company’s director and the signature of the individual. In<br />
this case the first signature has an authorization constraint <strong>de</strong>fined by a role, i.e. Company<br />
Director, and the second signature has an i<strong>de</strong>ntity constraint <strong>de</strong>fined by the individual’s<br />
i<strong>de</strong>ntity.<br />
397
From all those possibilities, one realizes that it should be possible to let the author<br />
specify which signatures are required for the electronic document he creates. The process<br />
would then become similar to the way it is done with paper documents. This would allow<br />
applications performing digital signature validation to gather i<strong>de</strong>ntity and authorization<br />
requirements directly from the document. Those requirements would then be enforced<br />
against the PKCs and ACs present in the signatures.<br />
In or<strong>de</strong>r to address this necessity, we propose to bind i<strong>de</strong>ntity and authorization<br />
requirements to a document through a creator signature. For this, we introduce a new<br />
signed signature attribute.<br />
The structure of the paper is as follows. In Section 2 we briefly <strong>de</strong>scribe Attribute<br />
Certificates and the support offered by digital signature standards CAdES and XAdES<br />
to the inclusion of these certificates. Section 3 <strong>de</strong>scribes different alternatives for the inclusion<br />
of authorization constraints in a document. Section 4 proposes the concept of<br />
a creator signature and introduces a new signed signature attribute. Section 5 discusses<br />
advantages and limitations of the proposed solution in comparison to the existing alternatives.<br />
Section 6 conclu<strong>de</strong>s the paper and <strong>de</strong>scribes future work.<br />
2. Attribute Certificates and Digital Signature Standards<br />
The digital signature standards CAdES[ETSI 2011] and XAdES[ETSI 2010] currently<br />
support the use of X.509 Attribute Certificates [Farrell et al. 2010] to carry the signatories’<br />
authorization cre<strong>de</strong>ntials within the signature.<br />
X.509 Attribute Certificates(ACs) are certificates that can provi<strong>de</strong> authorization<br />
information about a given entity. They are issued by an Authorization Authority(AA) and<br />
they reference a single Public Key Certificate(PKC) [Cooper et al. 2008]. These certificates<br />
are wi<strong>de</strong>ly used in access control schemes. A well know example is the Permis<br />
Project[Chadwick and Otenko 2002].<br />
The CAdES and XAdES digital signature standards are respectively evolutions<br />
of the Cryptographic Message Syntax(CMS) [Housley 2009] and XML Signature Syntax<br />
and Processing(XMLDSIG)[Eastlake et al. 2002] formats. They <strong>de</strong>fine the attributes that<br />
can be present in a digital signature and how those attributes shall be interpreted. Those<br />
attributes are classified as signed or unsigned attributes. Signed attributes are inclu<strong>de</strong>d in<br />
the signature container before the actual signature value is calculated, therefore becoming<br />
part of the signed content along with the document’s content itself. Thus, these attributes<br />
cannot be altered after the signature is completed. An example of a signed attribute is the<br />
Signing Certificate attribute, which holds a reference of the signatory’s PKC. Unsigned<br />
attributes, in the other hand, are inclu<strong>de</strong>d in the signature container after the signature<br />
value calculation. These attributes can be altered at any time. They are used mainly to<br />
carry validation data, as certificates and certificate revocation data, and artifacts to extend<br />
the lifetime os the signature, such as timestamps.<br />
ACs can be inclu<strong>de</strong>d in a CAdES signature with a signed attribute called signer-<br />
Attributes. The equivalent in XAdES is the signed property signerRoles.<br />
398
3. Authorization Constraints<br />
Paper documents have authorization constraints regarding the signatories specified directly<br />
in the document’s text. This is done by specifying signatories’ names or roles<br />
directly un<strong>de</strong>r the signature field. In a similar way, these constraints can also be inclu<strong>de</strong>d<br />
in the contents of an electronic document. Unfortunately, this poses a big challenge to<br />
automated validation of the authorization constraints. We further discuss this challenge<br />
in Section 5.<br />
Another approach consists of including signature authorization requirements in<br />
the document’s un<strong>de</strong>rlying structure. For this to be possible, the document’s format <strong>de</strong>finition<br />
must contain clear specifications of the fields in which those requirements shall<br />
be inclu<strong>de</strong>d. They must also specify the syntax and interpretation characteristics of the<br />
requirements. However, different organizations may have control over the <strong>de</strong>finition of<br />
different document formats. This implies that the way document formats specify signature<br />
authorization requirements may differ dramatically from one another.<br />
The Portable Document Format (PDF), <strong>de</strong>fined in ISO 32000-1<br />
[Adobe Systems Incorporated 2008], is an example of a document format that already<br />
provi<strong>de</strong>s a specification for signature authorization requirements. This consists of<br />
an internal structure called seed value dictionary. As <strong>de</strong>scribed in clause 12.7.4.5 of ISO<br />
32000-1, the seed value dictionary’s entries “provi<strong>de</strong> constraining information that shall<br />
be used at the time the signature is applied.”<br />
One of the possible entries in a seed value dictionary that is relevant for authorization<br />
purposes is the Cert entry. This entry contains a certificate seed value dictionary,<br />
which, in turn, contains information regarding certificates that shall be used when signing.<br />
Table 235 of ISO 32000-1 lists all possible entries in a certificate seed value dictionary.<br />
These entries provi<strong>de</strong> numerous ways of filtering acceptable signing certificates. Due to<br />
the goals of this paper, we only refer to the <strong>de</strong>scriptions of the Subject and SubjectDN<br />
entries.<br />
Subject: “An array of byte strings containing DER-enco<strong>de</strong>d X.509v3 certificates<br />
that are acceptable for signing.”[Adobe Systems Incorporated 2008]. This entry, then,<br />
enables the document’s author to specify unequivocally the i<strong>de</strong>ntities of the acceptable<br />
signatories based on their PKCs.<br />
SubjectDN: “An array of dictionaries, each specifying a Subject Distinguished<br />
Name (DN) that shall be present within the certificate for it to be acceptable for<br />
signing. The certificate ultimately used for the digital signature shall contain all<br />
the attributes specified in each of the dictionaries in this array. (PDF keys and<br />
values are mapped to certificate attributes and values.) The certificate is not constrained<br />
to use only attribute entries from these dictionaries but may contain additional<br />
attributes”[Adobe Systems Incorporated 2008]. This entry is effectively more flexible<br />
than the Subject entry. It still allows constrains over the signatory’s i<strong>de</strong>ntity, for example<br />
by specifying the expected value of the common name field in the certificate’s Subject DN.<br />
But it also brings the possibility of constraining acceptable signing certificates by other<br />
attributes. These attributes may refer, for example, to authorization cre<strong>de</strong>ntials, such as<br />
roles or group memberships. In other words, it is possible to constrain acceptable signing<br />
certificates just by specifying attributes that shall be present in these PKCs.<br />
399
4. A Digital Signature with Authorization Requirements<br />
In this section we <strong>de</strong>scribe the notion of a creator signature. This is a signature performed<br />
exclusively by the document’s author. We do this by presenting a new signed signature<br />
attribute called Authorization Requirements. This attribute is used to specify i<strong>de</strong>ntity and<br />
authorization requirements in a creator signature.<br />
A creator signature is technically a normal CAdES or XAdES digital signature.<br />
This signature is applied to an electronic document by its author. The author’s goal for<br />
the signature is to seal the document and bind it to a set of requirements regarding future<br />
signatures applied by other parties. Those parties, however, are not going to sign<br />
the actual document. Instead, they will countersign the author’s signature. Those countersignatures<br />
will then be embed<strong>de</strong>d in the author’s signature as unsigned attributes. Each<br />
countersignature must comply with a corresponding entry in the Authorization Requirements<br />
attribute.<br />
The Authorization Requirements attribute is structured as a list of required countersignatures.<br />
Each entry contains a set of required signatory attributes, a signatory<br />
i<strong>de</strong>ntity reference or both. The set of required signatory attributes specifies which attributes<br />
shall be present in the signatory’s AC. In a similar way, the signatory i<strong>de</strong>ntity<br />
reference is a reference to the required signatory’s PKC . Figure 1 presents a possible<br />
ASN.1[ITU-T 2008a] structure for the CAdES version of the proposed attribute.<br />
A u t h o r i z a t i o n R e q u i r e m e n t s : : = SEQUENCE of R e q u i r e d C o u n t e r S i g E n t r y<br />
R e q u i r e d C o u n t e r S i g E n t r y : : = SEQUENCE {<br />
s i g n e r A t t r i b u t e s [ 0 ] SEQUENCE of A t t r i b u t e OPTIONAL ,<br />
s i g n e r I d e n t i t y [ 1 ] S i g n e r I d e n t i t y OPTIONAL<br />
}<br />
S i g n e r I d e n t i t y : : = CHOICE {<br />
s i g n e r I d e n t i t y V 1 [ 0 ] S i g n i n g C e r t i f i c a t e ,<br />
s i g n e r I d e n t i t y V 2 [ 1 ] S i g n i n g C e r t i f i c a t e V 2<br />
}<br />
Figure 1. Authorization Requirements ASN.1 structure<br />
The signerAttributes field in Figure 1 shall be consistent with Section 4.2.7 of RFC<br />
5755 [Farrell et al. 2010]. Attribute types are <strong>de</strong>fined in Section 4.4 of RFC 5755. The<br />
types SigningCertificate and SigningCertificateV2 in figure 1 are <strong>de</strong>fined in RFC 5035<br />
[Schaad 2007]. The signerAttributes and signerI<strong>de</strong>ntity fields are optional, but at least<br />
one of them must be present in a RequiredCounterSigEntry instance.<br />
The validation process of a digital signature that contains an Authorization Requirements<br />
attribute begins precisely with that attribute. First, the presence of all required<br />
countersignatures in the creator’s signature unsigned attributes section is assured. Next,<br />
each countersignature is validated. This inclu<strong>de</strong>s the signature and Certification Path validation<br />
of both the signatory’s PKC and AC. Then, these certificates are evaluated against<br />
the criteria specified in the requirements. If they all meet the requirements, the signatories’<br />
authorization is acknowledged and the rest of the signature validation proceeds as<br />
usual. It should be noted that if one of the countersignatures is invalid or does not meet<br />
400
the requirements, the document cannot be consi<strong>de</strong>red valid.<br />
Figure 2 shows the structure of a signed document for a hypothetic contract between<br />
university “A” and company “B”. In this example, the document must be signed<br />
by two people from the university, a Financial Manager and a Department Supervisor,<br />
and one person from the company, the company Director. These constraints are specified<br />
using the Role attribute type, which is <strong>de</strong>fined in ISO/IEC 9594-8 [ITU-T 2008b]. The<br />
Role shall have the same value in the authorization requirements and the signatory’s AC.<br />
Figure 3 shows the ASN1 representation of the Authorization Requirements attribute for<br />
this specific example. Since, for now, there are no OIDs <strong>de</strong>fined for the types Authorization<br />
Requirements and RequiredCounterSigEntry, these appear only as sequences in the<br />
represented structure.<br />
signs<br />
Authorization Requirements<br />
RequiredCounterSigEntry<br />
Creator Signature<br />
signerAttributes<br />
Signed Attributes<br />
Contract<br />
Role: “Director”<br />
Authorization<br />
Requirements<br />
...<br />
RequiredCounterSigEntry<br />
signerAttributes<br />
Unsigned Attributes<br />
Role: “Financial Manager”<br />
1st Countersignature<br />
2nd Countersignature<br />
RequiredCounterSigEntry<br />
3rd Countersignature<br />
...<br />
contains<br />
matches AC attribute<br />
signerAttributes<br />
Role: “Department Supervisor”<br />
signs<br />
University A<br />
PKC<br />
AC<br />
PKC<br />
AC<br />
PKC<br />
AC<br />
Company B<br />
Department<br />
Supervisor<br />
Finacial<br />
Manager<br />
Director<br />
Figure 2. Contract Signature<br />
5. Discussion<br />
It may seem natural to specify the i<strong>de</strong>ntity and the authorization constraints of required<br />
signatories directly in the document’s text. This may even be appropriate if those constraints<br />
are meant to be checked manually. However, automated validation of the signatories’<br />
i<strong>de</strong>ntity and authorization becomes very tricky when the constraints are specified in<br />
401
0 103: SEQUENCE<br />
{<br />
2 38: SEQUENCE {<br />
4 36: SEQUENCE {<br />
6 34: SEQUENCE {<br />
8 3: OBJECT IDENTIFIER role (2 5 4 72)<br />
13 27: SET {<br />
15 25: SEQUENCE {<br />
17 23: [1] {<br />
19 21: [6] ’Director’<br />
: }<br />
: }<br />
: }<br />
: }<br />
: }<br />
: }<br />
42 34: SEQUENCE {<br />
44 32: SEQUENCE {<br />
46 30: SEQUENCE {<br />
48 3: OBJECT IDENTIFIER role (2 5 4 72)<br />
53 23: SET {<br />
55 21: SEQUENCE {<br />
57 19: [1] {<br />
59 17: [6] ’Financial Manager’<br />
: }<br />
: }<br />
: }<br />
: }<br />
: }<br />
: }<br />
78 25: SEQUENCE {<br />
80 23: SEQUENCE {<br />
82 21: SEQUENCE {<br />
84 3: OBJECT IDENTIFIER role (2 5 4 72)<br />
89 14: SET {<br />
91 12: SEQUENCE {<br />
93 10: [1] {<br />
95 8: [6] ’Department Supervisor’<br />
: }<br />
: }<br />
: }<br />
: }<br />
: }<br />
: }<br />
: }<br />
Figure 3. Contract Authorization Requirements ASN.1<br />
this way. That is because natural languages are inherently ambiguous and this turns the<br />
constraint’s interpretation and localization in the text a lot more difficult and imprecise.<br />
On the other hand, the inclusion of signature authorization requirements in the<br />
documents un<strong>de</strong>rlying structure is more suitable for automated validation. Once there is<br />
a clear specification of where those requirements shall be inclu<strong>de</strong>d and how they shall<br />
be interpreted, the software implementations become easy. Still, in principle, any kind of<br />
electronic file can be signed. While it is possible to promote the structural changes nee<strong>de</strong>d<br />
on some file formats, expanding those changes to all types of files would be impractical.<br />
Obviously, the employment of the signature requirements is more common in electronic<br />
documents and PDF is currently one of the most wi<strong>de</strong>ly used file formats for documents.<br />
As shown in section 3, PDF already offers internal structures for the inclusion<br />
of constraints upon future signatures. What it does not provi<strong>de</strong>, though, is an integrity<br />
guarantee of those constraints. In a sense, the constraints only work as gui<strong>de</strong>lines, since<br />
they are subject to changes until signatures are applied to the document.<br />
402
A creator signature, in comparison, seals the document. Since the Authorization<br />
Requirements attribute is signed, the constraints it <strong>de</strong>fines cannot be changed later. This<br />
signature can also be employed with any kind of file. Thus, a single specification and<br />
implementation is required instead of one for each file format.<br />
Nevertheless, the usage of the creator signature also has its drawbacks. One of<br />
the biggest problems with this approach is the overhead in storage and cryptographic<br />
operations it results in. This may not be significant when we consi<strong>de</strong>r a single document,<br />
where an extra signature represents just some KBytes more in storage. The size <strong>de</strong>pends<br />
on the inclusion or not of certificates and revocation data within the signature. However, as<br />
we scale, the impact of that signature becomes quite evi<strong>de</strong>nt. We could take, for example,<br />
the amount of documents that transit everyday in a Court of Justice, or in a big company.<br />
Every extra signature ad<strong>de</strong>d to the process may represent hundreds of GBytes in storage an<br />
precious processing power. Moreover, an extra signature increases the time spent on the<br />
validation process, thus, bringing inconvenience to its use. A <strong>de</strong>eper analyses of the costs<br />
in storage an the amount of operations related do digital signatures in conventional X.509<br />
PKIs can be found in the work of da Silva [da Silva 2011] and Moecke [Moecke 2011].<br />
In a general sense, the introduction of the creator signature with authorization<br />
requirements does not obsoletes existing solutions. It only presents a generic solution that<br />
is applicable in a wi<strong>de</strong>r range of scenarios.<br />
6. Conclusion<br />
In this paper we <strong>de</strong>scribed the necessity of a way to specify constraints upon required<br />
signatories regarding i<strong>de</strong>ntity and authorization and a way to bind these constraints to an<br />
electronic document. Existing solutions to <strong>de</strong>al with this necessity were evaluated and a<br />
new approach, the creator signature, was proposed.<br />
The creator signature, along with the Authorization Requirements attribute, allows<br />
the author to specify the i<strong>de</strong>ntity and/or the attributes of the signatories that shall sign a<br />
given document. It then enables generic applications to validate the authorization of those<br />
signatories, based on the author’s requirements. This approach is especially useful in<br />
contexts where a document <strong>de</strong>pends on a specific set of signatures to acquire value, while<br />
the content of that document does not follow any pre-<strong>de</strong>fined format. Examples inclu<strong>de</strong><br />
legal proceedings, business contracts and others.<br />
Future work inclu<strong>de</strong>s the <strong>de</strong>finition of the XAdES version of the Authorization<br />
Requirements attribute and the implementation of a prototype application to test the proposal.<br />
Furthermore we plan to make an adaptation of the proposed mo<strong>de</strong>l to work with a<br />
Notary Based Public Key Infrastructure (NBPKI)[Moecke 2011]. Thereby we intend to<br />
<strong>de</strong>crease the overhead of an additional signature discussed in Section 5. Finally, we wold<br />
like to explore the possibility of including authorization <strong>de</strong>legation schemes in our mo<strong>de</strong>l.<br />
This would allow signature authorizations to be <strong>de</strong>legated un<strong>de</strong>r specified conditions.<br />
References<br />
Adobe Systems Incorporated (2008). Document management - Portable document format<br />
403
- Part 1: PDF 1.7. Number ISO 32000-1. 1st edition.<br />
Chadwick, D. W. and Otenko, A. (2002). The permis x.509 role based privilege management<br />
infrastructure. In Proceedings of the seventh ACM symposium on Access control<br />
mo<strong>de</strong>ls and technologies, SACMAT ’02, pages 135–140, New York, NY, USA. ACM.<br />
Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and Polk, W. (2008).<br />
Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List<br />
(CRL) Profile. RFC 5280 (Proposed Standard).<br />
da Silva, N. (2011). Preservação por longo prazo <strong>de</strong> assinaturas digitais. Master’s thesis,<br />
Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina.<br />
Eastlake, D. E., Reagle, J. M., and Solo, D. (2002). XML-signature syntax and processing.<br />
World Wi<strong>de</strong> Web Consortium, Recommendation REC-xmldsig-core-20020212.<br />
ETSI (2010). XML Advanced Electronic Signatures (XAdES). Number TS 101 903. 1.4.2<br />
edition.<br />
ETSI (2011). CMS Advanced Electronic Signatures (CAdES). Number TS 101 733. 1.8.3<br />
edition.<br />
Farrell, S., Housley, R., and Turner, S. (2010). An Internet Attribute Certificate Profile<br />
for Authorization. RFC 5755 (Proposed Standard).<br />
Housley, R. (2009). Cryptographic Message Syntax (CMS). RFC 5652 (Standard).<br />
ITU-T (2008a). Information technology - Abstract Syntax Notation One (ASN.1): Specification<br />
of basic notation. Number ISO/IEC 8824-1. 4th edition.<br />
ITU-T (2008b). Information technology - Open systems interconnection - The Directory:<br />
Public-key and attribute certificate frameworks. Number ISO/IEC 9594-8. 6th edition.<br />
Moecke, C. T. (2011). Nbpki - uma icp baseada em autorida<strong>de</strong>s notariais. Master’s thesis,<br />
Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina.<br />
Schaad, J. (2007). Enhanced Security Services (ESS) Update: Adding CertID Algorithm<br />
Agility. RFC 5035 (Proposed Standard).<br />
404
Using Notary Based Public Key Infrastructure in Shibboleth<br />
Fe<strong>de</strong>ration<br />
Hendri Nogueira 1 , Ricardo Felipe Custódio 1 , Cristian Thiago Moecke 2 , Michelle S. Wangham 3<br />
1 Laboratório <strong>de</strong> Segurança em Computação (LabSEC)<br />
Universida<strong>de</strong> Fe<strong>de</strong>ral <strong>de</strong> Santa Catarina (UFSC)<br />
Caixa Postal 476 – 88040-900 – Florianópolis – SC – Brasil<br />
2 SecUSo - IT Security, Usability and Society<br />
Center for Advanced Security Research Darmstadt<br />
TU Darmstadt<br />
Mornewegstraße 32 – D - 64293 Darmstadt<br />
3 Grupo <strong>de</strong> Sistemas Embarcados e Distribuídos–GSED/CTTMAR<br />
Universida<strong>de</strong> do Vale do Itajaí(UNIVALI)<br />
São José, SC, Brasil<br />
{jimi,custodio}@inf.ufsc.br, cristian.moecke@cased.<strong>de</strong>, wangham@univali.br<br />
Abstract. The X.509 Public Key Infrastructure contains many services such as<br />
Registration Authorities, Time Stamping Authorities and Certification Authorities,<br />
that increases its complexity, redundancy and difficulties of implementation<br />
for a digital certification. Notary Based Public Key Infrastructure (NBPKI) is a<br />
mo<strong>de</strong>l that eliminates the redundant processes, complexity and brings many facilities<br />
for the authentication processes. This work <strong>de</strong>scribes the use of NBPKI<br />
mo<strong>de</strong>l combined with a Cre<strong>de</strong>ntials Translation Service to improve the Shibboleth<br />
Authentication Process.<br />
1. Introduction<br />
Public Key Infrastructures (PKIs) provi<strong>de</strong> the capability of establishing a trusted relationship<br />
between the entities involved in a digital transaction. PKI is used for digital signature,<br />
secure network communication, on-line transactions (E-commerce), authentication,<br />
digital i<strong>de</strong>ntity, to protect data with encryption and others [Lancaster et al. 2003].<br />
PKI is normally formed by entities that <strong>de</strong>tain a pair of asymmetric cryptographic<br />
keys. The private key is securely maintained and controlled exclusively by its owner, and<br />
the public key is shared with the others. Some types of these mo<strong>de</strong>ls are PGP (Pretty<br />
Good Privacy), SPKI (Simple Public Key Infrastructure) and IBC (I<strong>de</strong>ntity Based Criptography).<br />
The most used mo<strong>de</strong>l is X.509 [Cooper et al. 2008].<br />
The increased use of X.509 PKI has led to a series of limitations and difficulties<br />
related to its implementation [Linn 2004]. In a typical X.509 PKI environment, the verifier<br />
of a digital signature needs to check: the time-stamp signature; the validity of the<br />
Time Stamping Authority certificate and its certificate chain, including the revocation information<br />
at that time; the signatory certificate validity and all certificates in its certificate<br />
chain, revocation information based on time-stamp date and the document signature.<br />
These verifications need excessive human and computational resources to maintain<br />
and provi<strong>de</strong> long-term trustworthy services. To <strong>de</strong>al with these and others limitations,<br />
405
Moecke et. all [Moecke 2011] proposed a new PKI mo<strong>de</strong>l (NBPKI - Notary Based Public<br />
Key Infrastructure), that uses self-signed digital certificates and substitutes the Certificate<br />
Authority (CA) with Notarial Authorities (NA).<br />
Differently from Moecke who focused his mo<strong>de</strong>l in digital signature, this work<br />
focuses on another use of Notarial Authorities – Fe<strong>de</strong>rate Authentication. This paper<br />
<strong>de</strong>scribes the use of self-signed certificates to improve the Shibboleth Authentication<br />
Infrastructure. The solution combines NBPKI - a mo<strong>de</strong>l that eliminates the redundant<br />
processes, complexity and brings many facilities for the authentication processes - to an<br />
I<strong>de</strong>ntity Provi<strong>de</strong>r with additional functionalities in or<strong>de</strong>r to make possible to a user of<br />
fe<strong>de</strong>ration, through <strong>de</strong>sktop application or browser, authenticates using a self-signed certificate.<br />
The proposed mo<strong>de</strong>l supports authentication cre<strong>de</strong>ntials translation.<br />
The remain<strong>de</strong>r of this paper is structure as follows: section 2 reviews the typical<br />
authentication cre<strong>de</strong>ntials for aca<strong>de</strong>mic fe<strong>de</strong>rations based on Shibboleth framework; section<br />
3 explains some questions relating to NBPKI; section 4 presents some related works;<br />
section 5 <strong>de</strong>scribes the use of NBPKI in Shibboleth Fe<strong>de</strong>ration; and section 6 conclu<strong>de</strong>s<br />
the paper and <strong>de</strong>scribes the future works.<br />
2. Fe<strong>de</strong>rated Authentication and Authorization Infrastructure<br />
Aca<strong>de</strong>mic Fe<strong>de</strong>rations are collections of educational and research institutions and organizations<br />
that have agreed to inter-operate using a common set of rules, particularly in the<br />
areas of privacy and security. Fe<strong>de</strong>rations make the use of standard methods for authentication<br />
and authorization and single sign-on technology [Internet2 2011b]. They <strong>de</strong>fine<br />
the trust relationship, the policies used for exchanging information, software to enable authentication<br />
and authorization, and distribute the metadata necessary for interoperability.<br />
The fe<strong>de</strong>rated i<strong>de</strong>ntity technology allows organizations and institutions with an<br />
economically efficient and convenient way to manager and <strong>de</strong>liver i<strong>de</strong>ntity services between<br />
different organizations, helping <strong>de</strong>al with user and data security on the same network<br />
[Don and Smith 2008].<br />
A Fe<strong>de</strong>rated Authentication and Authorization Infrastructure (AAI) inclu<strong>de</strong>s Service<br />
Provi<strong>de</strong>rs (SP) and I<strong>de</strong>ntity Provi<strong>de</strong>rs (IdP). IdPs maintain i<strong>de</strong>ntity databases and<br />
authenticate users. The SPs are responsible for authorize the accesses and do not need to<br />
maintain user databases.<br />
There are many aca<strong>de</strong>mic fe<strong>de</strong>rations around the world, like FEIDE, InCommon,<br />
SURFnet, CAFe and many others. CAFe Fe<strong>de</strong>ration is from Brazil and managed by RNP<br />
(Re<strong>de</strong> Nacional <strong>de</strong> Pesquisa) [RNP 2011]. Like others fe<strong>de</strong>rations, CAFe uses the Shibboleth<br />
framework [Internet2 2011d] as authentication and authorization infrastructure.<br />
Shibboleth is a project [Scavo and Cantor 2005] initiated from Internet2<br />
[Internet2 2011c], an advanced networking consortium led by the U.S research<br />
and education community. The Shibboleth architecture <strong>de</strong>fines a set of interactions<br />
between IdPs and SPs to facilitate the browsing of attributes’ exchange and single sign-on<br />
authentication through web browsers [Cantor 2005]. Shibboleth is based on the SAML<br />
(Security Assertion Markup Language) standard [OASIS 2011].<br />
The Shibboleth framework implements both si<strong>de</strong>s of the fe<strong>de</strong>rated communication<br />
(IdP and SP) and a central service responsible for obtaining the information about the IdPs<br />
406
egistered in the fe<strong>de</strong>ration and performing the redirect that is called WAYF (Where Are<br />
You From?) or DS (Discovery Service).<br />
Figure 1 shows the typical communication flows in a Shibboleth Fe<strong>de</strong>ration. The<br />
communication for a user that accesses a service for the first time, occurs with the following<br />
steps:<br />
1. The user attempts to access a Shibboleth-protected resource on the SP site.<br />
2. The service redirects the user’s browser to the WAYF service.<br />
3. The user selects his institution from the list presented by the WAYF. He is redirected<br />
to his IdP.<br />
4. The user authenticates to the home IdP, using his username and password, for<br />
example.<br />
5. The IdP generates a one-time handle (session i<strong>de</strong>ntifier) and sends it to the user’s<br />
browser, then redirects to the SP. Sometimes the SP needs to request others attributes<br />
information from the IdP to authorize his access. The IdP, on the basis<br />
of its Attribute Release Policy, allows or <strong>de</strong>nies attribute information to be ma<strong>de</strong><br />
available to this SP.<br />
6. Based on the attribute information ma<strong>de</strong> available to it, the SP allows or refuses<br />
the user access to the resource.<br />
I<strong>de</strong>ntity Provi<strong>de</strong>r<br />
LDAP<br />
5.1 Requests Attribute<br />
4. Authentication<br />
3. is redirected<br />
5. Issues the<br />
attribute<br />
assertions<br />
2. is redirected<br />
2. Selects your IdP<br />
1. Attempts to access<br />
6. Allows or refuses the<br />
user access to the resources<br />
Service Provi<strong>de</strong>r<br />
Figure 1. Communication flows in a Shibboleth Fe<strong>de</strong>ration<br />
3. NBPKI<br />
NBPKI (Notary Based Public Key Infrastructure) is a new approach of PKI,<br />
which through its simplicity, becomes a<strong>de</strong>quate for signing electronic documents<br />
without losing the generality of a PKI [Moecke 2011]. It does not propose<br />
new cryptographic algorithms as IBC [Shamir 1984], CLC (Certificateless<br />
Cryptography) [Al-Riyami and Paterson 2003], CBC (Certificate Based Cryptography)<br />
[Gentry 2003], and does not propose any change in the X.509 standard. This mo<strong>de</strong>l<br />
407
proposes a new structure and organization in X.509 PKI, based on the same cryptographic<br />
algorithms already wi<strong>de</strong>spread, tested and used in X.509 PKIs.<br />
This mo<strong>de</strong>l uses the approach of self-signed certificates [Moecke et al. 2010] and<br />
consequently does not have any certificate chain. The proof of the certificate’s validity is<br />
only necessary on the date of verification.<br />
This indicates that it is not necessary a Certificate Authority (CA) to issue the<br />
certificate. The proof should provi<strong>de</strong> sufficient evi<strong>de</strong>nce to confirm the information in the<br />
certificate. The certificate format is similar to the X.509 mo<strong>de</strong>l, so the X.509 standard can<br />
be used in this mo<strong>de</strong>l.<br />
In the NBPKI mo<strong>de</strong>l, two authorities are proposed [Moecke 2011]: the Registration<br />
Authority (RA) and the Notarial Authority (NA). This mo<strong>de</strong>l needs the existence of<br />
at least one entity responsible for the issue of the self-signed certificate proof – the NA in<br />
which the role is similar to a CA.<br />
Notarial Authority<br />
User<br />
1. Requests<br />
the proof<br />
NA<br />
1. Certificate<br />
generation<br />
3. Send the user<br />
certificate<br />
2. Authentication<br />
3. Sends the<br />
document,<br />
certificate<br />
and the proof<br />
2. Sends the<br />
proof<br />
4. Verifies the<br />
document<br />
signature<br />
Register Authority<br />
(a) Self-signed certificate creation.<br />
Verifier<br />
(b) Verification of a digital signature with the<br />
certificate proof<br />
Figure 2. Self-signed certificate and the validation proof<br />
The RA has a similar role to the RA in X.509 PKI. In this mo<strong>de</strong>l, the user can<br />
generates his own self-signed certificate and makes the communication to the RA through<br />
a secure authentication to prove his i<strong>de</strong>ntity and the possession of his private key. The RA<br />
verifies the information of the certificate and then sends it to the NA. The NA stores the<br />
certificate in the database and it is ready to issue the user certificate proof.<br />
The Figure 2(a) shows the generation of the self-signed certificate. The user can<br />
also go to a RA entity, prove his information, and get his self-signed certificate and private<br />
key on a secure hardware.<br />
After the NA receives the certificate from the RA, the NA needs only a simple<br />
and automatic process to register the certificate in its database. When requested, the NA<br />
is responsible for issue the proof at an exact instant in time. As there is not a certificate<br />
chain in this mo<strong>de</strong>l, the user/system does not need to build and checks the certificate<br />
chain.<br />
When the user needs to validate the integrity of a certificate, he needs to obtain<br />
one valid proof from the NA. The proof can be obtained by the user and dispatched to<br />
408
the verifier (user or service) or solicited by the system. The Figure 2(b) shows how the<br />
verification of a digital signature is in the NBPKI environment [Moecke 2011].<br />
A NA verifies the certificate’s status in the database and returns the proof, which<br />
is called a token. The token contains the revocation situation of the certificate, that is valid<br />
or invalid at that time. As the token’s validity is short, this mo<strong>de</strong>l can dismiss the use of a<br />
revocation mechanism to validate the token, proposed by Rivest and Elisson [Rivest 1998,<br />
Ellison et al. 1999].<br />
The date is inclu<strong>de</strong>d in the token by the NA by a trusted clock, similar in what<br />
happens in Time Stamping Authorities. This makes the date safe as well as the Notarial<br />
Authority when issuing the proof. The use of self-signed certificates for the authentication<br />
brings less complexity of certificate verification and no necessity of certificate revocation<br />
list.<br />
4. Cre<strong>de</strong>ntial Translation<br />
The Shibboleth framework does not provi<strong>de</strong> the integration of different types of authentication<br />
cre<strong>de</strong>ntials, such as X.509 cre<strong>de</strong>ntials used to grid applications. Besi<strong>de</strong>s that, in a<br />
fe<strong>de</strong>rated environment, the Shibboleth [Cantor 2005] permits only that communications<br />
among the user, the IdP and SP occur only through the web, i.e, using web browsers and<br />
HTTP protocol. As a result, many services provi<strong>de</strong>d by other organizations can not be<br />
integrated in Shibboleth Fe<strong>de</strong>ration.<br />
Some works proposed alternatives to integrate services that supports different authentication<br />
methods, by SAML cre<strong>de</strong>ntials translation into other types of cre<strong>de</strong>ntials, like<br />
X.509 certificates. Mello [<strong>de</strong> Mello et al. 2009] proposed a mo<strong>de</strong>l based on the Cre<strong>de</strong>ntial<br />
Translation Service that allows SSO authentication where even heterogeneous security<br />
technologies are consi<strong>de</strong>red. Mello’s proposed mo<strong>de</strong>l provi<strong>de</strong>s authentication cre<strong>de</strong>ntials<br />
translation and attribute transposition, involving different kinds of cre<strong>de</strong>ntials and permissions<br />
in the fe<strong>de</strong>ration environment.<br />
There are many projects that involve a new infrastructure that enables the integrations<br />
from different AAI technologies and bringing better the interaction and security<br />
for management and exchanges of the information, like Project Moonshot [Howlett 2011]<br />
and CILogon [Directorate 2011].<br />
Wangham [Wangham et al. 2010] proposed an infrastructure that aims to offer<br />
new features to Shibboleth Fe<strong>de</strong>rations. This work is being <strong>de</strong>veloped in the context<br />
of GT-STCFed project [Wangham et al. 2011], fun<strong>de</strong>d by RNP (NREN who manages the<br />
Brazilian fe<strong>de</strong>ration - CAFe). The features provi<strong>de</strong>d by the infrastructure are the translation<br />
of authentication cre<strong>de</strong>ntials and fe<strong>de</strong>rated authentication to non-web applications.<br />
The infrastructure of the GT-STCFed pilot project is composed of two services: the STS<br />
(Security Token Service) and CTS (Cre<strong>de</strong>ntial Translation Service). The STS consists of a<br />
Web Service that has the function of issuing and validating security cre<strong>de</strong>ntials, according<br />
to the WS-Trust, WS-Security and WS-Policy specifications.<br />
The STS acts as a gateway between trusted i<strong>de</strong>ntity provi<strong>de</strong>rs in a Shibboleth Fe<strong>de</strong>ration<br />
and non-Web applications. The CTS <strong>de</strong>als with aspects of translation of cre<strong>de</strong>ntials<br />
between different security technologies and is always invoked by the STS when the<br />
application requires a security cre<strong>de</strong>ntial (eg. X.509 certificates) different from that used<br />
409
y the fe<strong>de</strong>ration. STS and CTS are integrated into the IdP, composing an IdP with additional<br />
features (called IdP+). This IdP+ can be accessed by a web service client (<strong>de</strong>sktop<br />
application), not only via a Web browser.<br />
5. The use of NBPKI in Shibboleth Fe<strong>de</strong>ration<br />
In aca<strong>de</strong>mic fe<strong>de</strong>rations, IdPs acts like RAs, generating key pair and issuing the certificate<br />
for theirs users at the moment of the user’s registration. In this paper, it is proposed a<br />
service (RA) that creates the private key and a self-signed certificate at the user station,<br />
based on the user information at the IdP database.<br />
This mo<strong>de</strong>l by using communication protocols of web browsers needs to communicate<br />
to an IdP that has the support of be linked to the RA service for mapping the certificates<br />
parameters through SAML assertion. This different IdP structure is called IdP+<br />
and the RA is implemented at the same server as IdP+ because the flows are simplest.<br />
2. Authentication<br />
1. Attempts to access<br />
4. Sends the script<br />
5. Sends the certificate<br />
RA<br />
IdP+<br />
NA<br />
6. Sends the certificate<br />
to be stored in the NA´s<br />
database<br />
3. Issues attributes/<br />
Mapping the<br />
certificate’s<br />
attributes<br />
Figure 3. Creation of the user self-signed certificate through Shibboleth Fe<strong>de</strong>ration.<br />
The figure 3 shows the flows for the creation of the user self-signed certificate<br />
through the Shibboleth Fe<strong>de</strong>ration. After a success authentication, RA does the mapping<br />
through SAML assertions issued by IdP+ to compose the certificate’s DN (Distinguished<br />
Name). This mapping gets the user’s SN (surname) plus the EPPN (eduPersonPrincipal-<br />
Name) from the EduPerson [Internet2 2011a] LDAP scheme to set the certificate’s CN<br />
(Common Name). Then the RA sends a script to the user via web browser. The keys and<br />
the certificate are created at the user system. The user returns his certificate to the RA and<br />
it sends to the NA. Now, NA is ready to issues the proof.<br />
One unique proof can be used as many times as nee<strong>de</strong>d, without the necessity<br />
of getting other information. In the Shibboleth Fe<strong>de</strong>ration, the use of the certificate and<br />
its proof through a <strong>de</strong>sktop application authentication realizes with some changes of the<br />
standard IdP structure.<br />
For <strong>de</strong>sktop authenticated application, this new IdP structure (called IdP+) is like<br />
in the infrastructure used by the GT-STCFed project. The STS permits to a <strong>de</strong>sktop application<br />
communicates to the Shibboleth provi<strong>de</strong>rs. The user, through the <strong>de</strong>sktop application,<br />
does the authentication with his self-signed certificate and the application gets the<br />
proof from NA and sends to IdP+.<br />
410
IdP+<br />
5. Requests the<br />
certificate proof<br />
6. Sends the proof<br />
4. Authentication 7. Issues the<br />
attribute<br />
3. is redirected assertions<br />
NA<br />
2. Selects your<br />
IdP<br />
2. is redirected<br />
1. Attempts to access<br />
8. Allows or refuses the<br />
user access to the resourse<br />
SP<br />
Figure 4. User authentication with his self-signed certificate and its proof.<br />
The Figure 4 shows the user accessing a service by doing his authentication<br />
through the Shibboleth Fe<strong>de</strong>ration and with his self-signed certificate. If SP provi<strong>de</strong>s<br />
a web service, then the redirections are nee<strong>de</strong>d as a typical Shibboleth Fe<strong>de</strong>ration, otherwise<br />
they do not exist.<br />
5.1. Grid Scenario<br />
In the Grid Scenario, authentication and authorization is based on the use of X.509 certificates,<br />
signed by a Certificate Authority. Delegation (a service “A” tries to access service<br />
“B” on behalf of the user) is implemented using proxy certificates (short lived, fully functional<br />
certificates, that can be traced back to the original user). This PKI system works<br />
well for many different applications, including web browsers, but is complex and difficult<br />
for many users [Assembla 2011].<br />
The figure 5 shows the flows for a GRID certificate generation that uses self-signed<br />
certificates at a Shibboleth environment. The following steps are:<br />
1. The user attempts to access the service that generates the grid certificates.<br />
2. Then the user will be redirected to the WAYF.<br />
3. The user selects his IdP and he is redirected to his institution’s log-in site.<br />
4. He does the authentication using his self-signed certificate.<br />
5. IdP+ requests the certificate proof to the NA.<br />
6. IdP+ receives the proof from the NA.<br />
7. If the authentication was conclu<strong>de</strong>d, the IdP+ sends the user’s information to the<br />
SP.<br />
8. The service sends a script to the user to build the certificate’s request with his<br />
self-signed certificate information and his private key. This request is ma<strong>de</strong> at the<br />
user’s environment and then is sent to the service.<br />
9. The service receives the request, assigns it and then returns the new X.509 certificate.<br />
10. Now the user can use the grid service.<br />
411
IdP+<br />
5. Requests the<br />
certificate proof<br />
4. Authentication 7. Issues the<br />
attribute<br />
3. is redirected assertions<br />
2. Selects your<br />
IdP<br />
1. Attempts to access<br />
6. Sends the proof<br />
2. is redirected<br />
8. Sends the script to make the certificate<br />
request<br />
9. Creates/Sends the user<br />
certificate<br />
NA<br />
Certificate<br />
Generator<br />
Service<br />
(SP)<br />
Figure 5. Grid certificate generation.<br />
6. Conclusion and Future Works<br />
This new mo<strong>de</strong>l of Public Key Infrastructure, NBPKI, provi<strong>de</strong>s some facilities for digital<br />
signature validation. This mo<strong>de</strong>l uses self-signed certificates for the users, and the<br />
Certificate Authority is replaced by the Notarial Authority. The NA is responsible for the<br />
emission of tokens which are like a validation proof of the user certificate. With these<br />
tokens, it is not necessary to verify and validate the certificate chain of the user certificate,<br />
to check the certificate revocation lists nor the Time Stamping Authority is necessary.<br />
This new mo<strong>de</strong>l is useful for improving authentication process in services which<br />
use X.509 certificates within an aca<strong>de</strong>mic fe<strong>de</strong>rated environment. The Shibboleth Fe<strong>de</strong>rations<br />
can be more usable when have more support to use different authentication cre<strong>de</strong>ntials.<br />
The use of self-signed certificates improves the facilities of the certificates management,<br />
the use of certificates for authentication processes and even the security of the<br />
user authentication. The facilities of the issue of digital certificates without losing the<br />
infrastructure security and integrating with the aca<strong>de</strong>mic institutions through Shibboleth<br />
Fe<strong>de</strong>rations, becomes this mo<strong>de</strong>l one positive different view for the increase of the use of<br />
digital certificates for authentication.<br />
The authentication structure does not need to suffer a lot of alterations in the aca<strong>de</strong>mic<br />
fe<strong>de</strong>rated infrastructure and in the protocols used. The complexity nee<strong>de</strong>d by the<br />
standard certificate verification may be kept asi<strong>de</strong> whether self-signed certificate is used<br />
for the authentication process.<br />
The NBPKI and the IdP+ were implemented in Java language due to be portable<br />
and the facility in web applications <strong>de</strong>velopment. The next stages for the improvement<br />
of this work is to perform tests to verify the impacts due to the use of the authentication<br />
based on self-signed certificates in the Shibboleth Fe<strong>de</strong>rations.<br />
412
References<br />
Al-Riyami, S. and Paterson, K. (2003). Certificateless Public Key Cryptography. Advances<br />
in Cryptology-ASIACRYPT 2003, pages 1–40.<br />
Assembla (2011). Confusa project. http://www.assembla.com/wiki/show/confusa.<br />
Cantor, S. (2005). Shibboleth architecture - protocols and profiles. Technical report, Internet2.<br />
http://shibboleth.internet2.edu/docs/internet2-mace-shibboleth-archprotocols-<br />
200509.pdf.<br />
Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and Polk, W. (2008).<br />
Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List<br />
(CRL) Profile. RFC 5280 (Proposed Standard).<br />
<strong>de</strong> Mello, E., Wangham, M., da Silva Fraga, J., <strong>de</strong> Camargo, E., and da Silva Böger, D.<br />
(2009). A mo<strong>de</strong>l for authentication cre<strong>de</strong>ntials translation in service oriented architecture.<br />
In Gavrilova, M., Tan, C., and Moreno, E., editors, Transactions on Computational<br />
Science IV, volume 5430 of Lecture Notes in Computer Science, pages 68–86.<br />
Springer Berlin / Hei<strong>de</strong>lberg.<br />
Directorate, C. (2011). Cilogon. http://www.cilogon.org/.<br />
Don and Smith (2008). The challenge of fe<strong>de</strong>rated i<strong>de</strong>ntity management. Network Security,<br />
2008(4):7 – 9.<br />
Ellison, C., Frantz, B., Lampson, B., Rivest, R., Thomas, B., and Ylonen, T. (1999). SPKI<br />
Certificate Theory. RFC 2693 (Experimental).<br />
Gentry, C. (2003). Certificate-based encryption and the certificate revocation problem.<br />
In 22nd Annual International Conference on the Theory and Applications of Cryptographic<br />
Techniques.<br />
Howlett, J. (2011). Project moonshot. http://www.project-moonshot.org.<br />
Internet2 (2011a). eduperson & eduorg object classes.<br />
http://middleware.internet2.edu/eduperson/.<br />
Internet2 (2011b). Incommon. http://www.incommonfe<strong>de</strong>ration.org/.<br />
Internet2 (2011c). Internet2. http://www.internet2.edu/.<br />
Internet2 (2011d). Shibboleth. http://shibboleth.internet2.edu/.<br />
Lancaster, S., Yen, D. C., and Huang, S.-M. (2003). Public key infrastructure: a micro<br />
and macro analysis. Computer Standards & 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