Sunteți pe pagina 1din 190

XV Simpsio Brasileiro em Segurana da

Informao e de Sistemas Computacionais


Florianpolis SC, 9 a 12 de novembro de 2015

MINICURSOS
Sociedade Brasileira de Computao SBC
Organizadores
Eduardo Souto, UFAM
Michelle Wangham, UNIVALI
Joni da Silva Fraga, UFSC
Realizao
Universidade Federal de Santa Catarina UFSC
Universidade do Vale do Itaja UNIVALI
Promoo
Sociedade Brasileira de Computao SBC

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Copyright 2015 Sociedade Brasileira de Computao


Todos os direitos reservados
Capa: Luciana Soares Fernandes
Editorao: Carlos Maziero, UFPR

Dados Internacionais de Catalogao na Publicao (CIP)


S57

Simpsio Brasileiro em Segurana da Informao e de Sistemas


Computacionais (15. : 2015 : Florianpolis, SC)
XV Simpsio Brasileiro de Segurana da Informao e de Sistemas
Computacionais : minicursos, 9 a 12 de novembro de 2015 / Sociedade
Brasileira de Computao ; Organizadores, Eduardo Souto, Michelle
Wangham, Joni da Silva Fraga. Porto Alegre, RS : Sociedade Brasileira
de Computao, 2015.
v, 183 p. il. ; 23 cm.
ISBN: 978-85-7669-304-8
1. Cincia da computao. 2. Informtica. 3. Segurana da informao.
4. Segurana de sistemas. I. Souto, Eduardo. II. Wangham, Michelle. III.
Fraga, Joni da Silva. V. Ttulo. VI. Ttulo: Minicursos [do] XV Simpsio
Brasileiro de Segurana da Informao e de Sistemas Computacionais.

CDU 004(082)

ii

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Sociedade Brasileira de Computao SBC


Presidncia
Lisandro Zambenedetti Granville (UFRGS), Presidente
Thais Vasconcelos Batista (UFRN), Vice-Presidente
Diretorias
Renata de Matos Galante (UFRGS), Diretora Administrativa
Carlos Andr Guimares Ferraz (UFPE), Diretor de Finanas
Antnio Jorge Gomes Abelm (UFPA), Diretor de Eventos e Comisses Especiais
Avelino Francisco Zorzo (PUC-RS), Diretor de Educao
Jos Viterbo Filho (UFF), Diretor de Publicaes
Claudia Lage da Motta (UFRJ), Diretora de Planejamento e Programas Especiais
Marcelo Duduchi Feitosa (CEETEPS), Diretor de Secretarias Regionais
Eliana Silva de Almeida (UFAL), Diretora de Divulgao e Marketing
Diretorias Extraordinrias
Roberto da Silva Bigonha (UFMG), Diretor de Relaes Profissionais
Ricardo de Oliveira Anido (UNICAMP), Diretor de Competies Cientficas
Raimundo Macdo (UFBA), Diretor de Cooperao com Sociedades Cientficas
Srgio Castelo Branco Soares (UFPE), Diretor de Articulao com Empresas
Contato
Av. Bento Gonalves, 9500
Setor 4 - Prdio 43.412 - Sala 219
Bairro Agronomia
91.509-900 Porto Alegre RS
CNPJ: 29.532.264/0001-78
http://www.sbrc.org.br

iii

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Mensagem do Coordenador de Minicursos


Este livro apresenta a seleo de Minicursos da 15a edio do Simpsio Brasileiro em Segurana da
Informao e de Sistemas Computacionais (SBSeg), realizado em Florianpolis -SC, entre os dias 09 a 12
de novembro de 2015. As sesses de minicursos do evento representam uma oportunidade para acadmicos
e profissionais se aprofundarem em temas relevantes e atuais da rea, e que normalmente no so cobertos
em grades curriculares das universidades. A reconhecida qualidade dos textos produzidos pelos autores dos
Minicursos tem elevado estes textos categoria de documentos de referncia para trabalhos acadmicos e
formao complementar de estudantes, pesquisadores e profissionais.
Em 2015, foram submetidas 10 propostas, das quais 4 foram selecionadas para publicao e apresentao, representando assim uma taxa de aceitao de 40%. O comit de avaliao dos minicursos foi composto
por 16 renomados pesquisadores, que desempenharam um excelente trabalho no processo de elaborao dos
pareceres para seleo das propostas. Esta edio rene, portanto, quatro captulos, produzidos pelos autores das propostas aceitas. No Captulo 1, os autores discutem a utilizao programtica de criptografia
por desenvolvedores de software com pouca ou nenhuma experincia em segurana da informao e criptografia. O texto mostra aos programadores de software, por meio de exemplos reais e trechos de cdigo, os
bons e maus usos da criptografia. O Captulo 2 discorre sobre o ambiente de aplicaes de Mobile Crowd
Sensing, focando principalmente nas questes relacionadas privacidade, segurana e a confiabilidade das
informaes. No Captulo 3, os autores descrevem os aspectos que ajudam a tornar uma implementao de
criptografia em software eficiente e segura. E, finalmente, o Captulo 4 apresenta as principais tcnicas e
trabalhos relacionados deteco de spam.
Como Coordenador de Minicursos, gostaria de agradecer a todos envolvidos na produo deste livro.
Primeiramente aos coordenadores gerais do SBSEG 2015, Michelle Wangham (UNIVALI) e Joni Fraga
(UFSC), pelo convite para a coordenao de minicursos, alm de todo o suporte necessrio para a realizao
do evento. Agradeo tambm a todos os membros do comit de avaliao por terem aceitado o meu convite
e dedicado grande esforo para produzir as revises de alta qualidade para todos os trabalhos submetidos.
Por fim, um agradecimento especial a todos os autores que prestigiaram a iniciativa de realizao dos
minicursos do SBSEG, submetendo propostas que refletem os resultados das suas pesquisas, estudos e
projetos acadmicos.
Eduardo Souto (Universidade Federal do Amazonas)
Coordenador de Minicursos do SBSEG 2015

iv

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Comit de Avaliao de Minicursos


Alberto Schaeffer-Filho, UFRGS
Aldri dos Santos, UFPR
Andr Santos. UECE
Antonio Rocha, UFF
Carlos Westphall, UFSC
Clio Vinicius Neves de Albuquerque, UFF
Eduardo Feitosa, UFAM
Eduardo Souto, UFAM
Joaquim Celestino Jnior, UECE
Julio Hernandez, UNICAMP
Lau Cheuk Lung, UFSC
Michelle Wangham, UNIVALI
Paulo Andr da Silva Gonalves, UFPE
Raul Ceretta Nunes UFSM
Ricardo Dahab, UNICAMP
Rossana Andrade, UFC

Sumrio
Mensagens dos organizadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

iv

Comits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Introduo Criptografia para Programadores: Evitando Maus Usos.


Alexandre Braga e Ricardo Dahab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Segurana em Mobile Crowd Sensing.


Jolisson Joaquim de V. Laurido e Eduardo Luzeiro Feitosa . . . . . . . . . . . . . . . . .

51

Implementao Eficiente e Segura de Algoritmos Criptogrficos.


Armando Faz Hernndez, Roberto Cabral, Diego F. Aranha, Julio Lpez . . . . . . . . . .

93

Abordagens para Deteco de Spam de E-mail.


Cleber K. Olivo, Altair O. Santin e Luiz Eduardo S. Oliveira . . . . . . . . . . . . . . . . 141

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Captulo

1
Introduo Criptografia para Programadores:
Evitando Maus Usos da Criptografia em
Sistemas de Software
Alexandre Braga e Ricardo Dahab

Abstract
Studies have shown that vulnerabilities in cryptographic software are generally caused
by implementation defects and mismanagement of cryptographic parameters. In
addition, we see the recurring presence of several cryptographic bad practices in
various software and mobile applications in particular. Possibly, these vulnerabilities
were included unintentionally by inexperienced programmers without expert support.
Along this vein, this short course addresses the programmatic use of cryptography by
software developers with little or no experience in information security and
cryptography. The material is introductory and aims to show software developers,
through real examples and code snippets, the good and bad uses of cryptography and
thus facilitate further improvements in future studies.
Resumo
Estudos tm revelado que vulnerabilidades em softwares criptogrficos so causadas
em geral por defeitos de implementao e pela m gesto de parmetros criptogrficos.
Alm disso, percebe-se a presena recorrente de diversas prticas ruins de criptografia
em softwares diversos e aplicativos mveis em particular. Possivelmente, estas
vulnerabilidades foram includas sem inteno por programadores inexperientes e sem
apoio de especialistas. Desta forma, este minicurso aborda a utilizao programtica
de criptografia por desenvolvedores de software com pouca ou nenhuma experincia
em segurana da informao e criptografia. O material introdutrio e tem o objetivo
de mostrar aos programadores de software, por meio de exemplos reais e trechos de
cdigo, os bons e maus usos da criptografia e, assim, facilitar o aprofundamento em
estudos futuros.

Livro-texto de Minicursos

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.1.

Introduo

Atualmente, a proliferao de smartphones e tablets e o advento da computao em


nuvem esto mudando a forma como o software desenvolvido e distribudo. Se por um
lado h uma pulverizao do esforo de construo de aplicativos, por outro surge, em
escala sem precedentes, uma grande quantidade de aplicativos mveis disponveis para
aquisio em qualquer lugar e prontos para uso a qualquer momento.
Neste universo de aplicativos mveis sempre conectados, o uso de funes de
segurana baseadas em tcnicas criptogrficas cada vez maior. Observa-se que a
utilizao de criptografia tem aumentado muito, seja em termos do volume de dados
criptografados (por exemplo, os smartphones mais modernos possuem sistemas de
arquivos cifrados como uma opo padro), seja em relao quantidade de aplicativos
com servios criptogrficos includos em seu funcionamento (por exemplo, uma loja de
aplicativos pode vir a possuir centenas de aplicativos voltados a proteo criptogrfica
de dados: veja https://play.google.com/store/search?q=cryptography&c=apps).
Alm dos casos de uso j tradicionais do software criptogrfico autnomo, tais
como encriptao/decriptao e assinatura/verificao, h diversas situaes novas,
intrinsecamente relacionadas lgica da aplicao e do negcio, tornando cada vez mais
diversificado o universo de ameaas ao software criptogrfico moderno e exigindo cada
vez mais do programador comum, geralmente no especializado em criptografia.
Este texto aborda a utilizao programtica de criptografia por desenvolvedores
de software com pouca ou nenhuma experincia em segurana da informao e
criptografia. O texto introdutrio e tem o objetivo de mostrar aos programadores de
software, por meio de exemplos reais e trechos de cdigo, os bons e maus usos da
criptografia e, assim, facilitar o aprofundamento em estudos futuros.
Os objetivos do curso so os seguintes: (i) apresentar conceitos bsicos de
criptografia para programadores iniciantes em segurana da informao; (ii) mostrar
como esses conceitos so utilizados em plataformas de desenvolvimento de software
modernas; e (iii) ilustrar maus usos de criptografia comumente cometidos durante o
desenvolvimento de software. Vale ainda ressaltar que o texto incentiva a utilizao
correta de implementaes criptogrficas prontas, a partir de uma API padronizada; por
isto, a implementao de algoritmos criptogrficos tratada apenas superficialmente.
O tratamento dado ao tema prtico, a partir de programas de computador
escritos na linguagem Java, com a API criptogrfica padro da plataforma Java [38] e a
biblioteca criptogrfica BouncyCastle [39]. Estas tecnologias foram escolhidas por
serem amplamente utilizadas em uma variedade grande de plataformas de computao,
desde sistemas corporativos baseados em servios, sistemas web, at plataformas
mveis modernas. Quando apropriado, exemplos reais, extrados de incidentes causados
por mau uso, so utilizados para ilustrar os conceitos apresentados. Os cdigos fonte dos
programas exemplo podem ser obtidos mediante solicitao aos autores.
O restante deste captulo est organizado do seguinte modo. A Seo 1.2 explica
conceitos bsicos da criptografia; a Seo 1.3 mostra os usos adequados dos servios
criptogrficos mais comuns; a Seo 1.4 explica os maus usos da criptografia que levam
a vulnerabilidades em programas; a Seo 1.5 detalha a implementao em Java de um
algoritmo criptogrfico simtrico e a Seo 1.6 contm consideraes finais.
Livro-texto de Minicursos

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.2.

Conceitos Bsicos

As redes de comunicao abertas, como a Internet, geralmente no oferecem segurana


intrnseca, fim-a-fim, para seus usurios. No existe, por exemplo, sigilo intrnseco para
a informao que viaja de um ponto a outro na grande rede. A criptografia a nica
tecnologia capaz de garantir o sigilo e a autenticidade da informao em trnsito pelos
meios eletrnicos. A criptografia pode ser usada de muitas maneiras, sendo muitas vezes
a principal linha de defesa contra bisbilhotagem (snooping) e falsificao (spoofing).
A Criptografia (do grego kryptos, significando oculto) a cincia que se dedica
ao estudo e ao desenvolvimento das tcnicas (matemticas) utilizadas para tornar uma
mensagem secreta. Historicamente, o verbo criptografar tem sido usado apenas nesse
sentido. Entretanto, a criptografia moderna possui funes como assinaturas digitais,
resumo (hash) criptogrfico e outras, que no se limitam a prover sigilo da informao.
De fato, como veremos a seguir, a palavra Criptografia denota hoje um conjunto de
tcnicas matemticas das quais uma grande parte dos requisitos, mecanismos e servios
de segurana da informao no podem prescindir.
Esta seo aborda conceitos bsicos e servios criptogrficos comumente
encontrados em sistemas de software. So eles: objetivos e funes da criptografia;
sistemas criptogrficos e suas ameaas comuns; criptografia de chave secreta;
criptografia de chave pblica; encriptao para sigilo e privacidade; autenticao para
identificao, irrefutabilidade de mensagens ntegras e autnticas; encriptadores de fluxo
e de bloco; distribuio de chaves secretas; distribuio de chaves pblicas; acordos de
chaves; armazenamento seguro de chaves; gesto do ciclo de vida de chaves
criptogrficas (gerao, distribuio, uso e revogao); chaves de sesso e sistemas
criptogrficos hbridos. Os livros [1][2][3][4] podem auxiliar no estudo do tema.

1.2.1. Objetivos e funes da criptografia


Historicamente associada ao sigilo, a criptografia moderna tambm oferece servios
para autenticao, integridade e irrefutabilidade. Os quatro servios so os seguintes:
1. Confidencialidade (ou sigilo) obtida com o uso da criptografia para manter a
informao secreta, confidencial. Enviar e-mails encriptados e manter arquivos
encriptados em cartes de memria so exemplos de confidencialidade.
2. Autenticao obtida com o uso da criptografia para validar a identidade de uma
entidade. Um exemplo de autenticao o uso de assinaturas digitais para
verificar a autoria de uma mensagem de texto ou de um documento eletrnico.
3. Integridade obtida com o uso da criptografia para garantir que uma poro de
dados no foi modificada desde a sua criao. Cdigos de deteco de erros so
exemplos de mecanismos para verificao de integridade de dados.
4. Irrefutabilidade obtida pelo uso da criptografia como meio de garantir que o
autor de uma mensagem autntica no possa negar para um terceiro a sua autoria.
Na prtica, estes servios so usados juntos. Por exemplo, uma mensagem de
correio eletrnico pode ser encriptada e assinada digitalmente. Deste modo, tanto a
confidencialidade quanto a autenticao estaro garantidas. Visto que a assinatura
digital nica para a mensagem, a integridade tambm preservada.
Livro-texto de Minicursos

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 1: Sistema criptogrfico.

1.2.2. Sistemas criptogrficos


A Figura 1 mostra um sistema criptogrfico e seus elementos fundamentais. Trs
personagens ilustram a figura: Ana, a remetente das mensagens; Beto, o destinatrio das
mensagens; e Ivo, o adversrio com desejo de conhecer os segredos de Ana e Beto. As
mensagens passam por um canal de comunicao inseguro e controlado por Ivo. O
algoritmo criptogrfico usado para transformar o texto em claro (legvel por qualquer
um) em texto encriptado (o criptograma legvel apenas por Ana e Beto) e vice-versa.
A chave criptogrfica o parmetro de configurao do algoritmo que viabiliza a
recuperao de um texto claro a partir do texto encriptado. Ana e Beto usam uma chave
criptogrfica conhecida apenas por eles e compartilhada (ou combinada) por um canal
seguro diferenciado. Teoricamente, diz-se que a segurana do sistema criptogrfico
reside no segredo da chave e no no segredo do algoritmo criptogrfico. Grosso modo,
em sendo usado um algoritmo de boa reputao, a qualidade da implementao deste
algoritmo e o tamanho da chave determinam a dificuldade em quebrar a encriptao da
mensagem. A Figura 1 tem os seguintes passos:
1. Ana configura o algoritmo de encriptao com a chave compartilhada com Beto;
2. Ana passa o texto claro para o algoritmo e obtm o criptograma;
3. O criptograma transmitido pelo canal inseguro e recebido por Beto;
4. Beto configura o algoritmo de decriptao com a chave compartilhada com Ana;
5. Beto decripta o criptograma recebido e obtm o texto claro original.

1.2.3. Ameaas comuns aos sistemas criptogrficos


Encontrar vulnerabilidades em sistemas criptogrficos, em vez de nas implementaes
destes sistemas, uma tarefa complexa, pois normalmente os algoritmos criptogrficos
modernos so bem projetados, com segurana demonstrvel, e submetidos ao escrutnio
de pesquisadores por um bom perodo de tempo. Geralmente, o teste do tempo pode
ser interpretado como evidncia de robustez do algoritmo.
Em termos prticos, algoritmos criptogrficos passam a ter valor a partir do
momento em que so implementados, seja em software ou em hardware, para prover
Livro-texto de Minicursos

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

confidencialidade, integridade, autenticidade e irrefutabilidade. Tradicionalmente, maior


ateno tem sido dada implementao confivel dos algoritmos criptogrficos, uma
vez que estas implementaes podem expor problemas relacionados com o algoritmo
subjacente, ou podem elas mesmas introduzir vulnerabilidades. Recentemente, tem
crescido o interesse no uso correto dos algoritmos e suas implementaes.
Uma implementao robusta de um sistema criptogrfico difcil de ser obtida,
pois exige do desenvolvedor uma grande variedade de conhecimentos tericos e prticos
sobre criptografia, desenvolvimento de software seguro, arquitetura de computadores,
compiladores, linguagens de programao, entre outras reas da Cincia da
Computao. Mesmo que o desenvolvedor possua esse tipo de conhecimento amplo e ao
mesmo tempo profundo, defeitos de implementao ainda podem ocorrer.
Por causa destas dificuldades, em vez de tentar encontrar falhas nos algoritmos
criptogrficos, mais fcil e prtico para um adversrio (Ivo) procurar por falhas no
apenas nas implementaes criptogrficas, mas tambm, e s vezes principalmente, nos
outros componentes dos sistemas criptogrficos, como por exemplo, as camadas de
software que encapsulam ou utilizam as implementaes criptogrficas.
Um ataque simples (porm, quase sempre impraticvel) realizado por Ivo contra
sistemas criptogrficos aquele conhecido como ataque de fora bruta, no qual todas as
possibilidades de chaves criptogrficas so testadas na tentativa de decriptar
corretamente o criptograma. Em geral, chaves longas so mais seguras, pois possuem
um nmero maior de possibilidades. Vale observar que todos os outros ataques listados
a seguir so facilitados se o primeiro ataque for bem sucedido e a chave secreta ou
privada for comprometida (descoberta, adivinhada, ou deduzida). Ivo pode atacar um
sistema criptogrfico (por exemplo, um canal de comunicao protegido com
criptografia) das seguintes maneiras:
1. Realizando um ataque de fora bruta contra as chaves. Neste ataque, todas as
chaves vlidas possveis so testadas na decriptao de um criptograma, para
uma mensagem conhecida, at que a chave correta seja encontrada;
2. Grampeando o canal. Grampear um canal aberto relativamente simples, pois
basta ler a informao em trnsito. Por outro lado, para grampear um canal
seguro preciso no somente ler o criptograma em trnsito, mas tambm
decript-lo. Para tal, seria necessrio conhecer a chave de decriptao;
3. Reenviando mensagens antigas. Este ataque possvel se as mensagens no so
unicamente identificadas (por exemplo, com carimbos temporais timestamps)
ou no possuem cdigos de autenticao, ou ainda se as chaves no so trocadas
periodicamente e com frequncia adequada;
4. Personificando uma das partes comunicantes (Ana ou Beto). Ivo pode se fazer
passar por Ana ou Beto pela substituio da chave de Ana/Beto pela sua prpria,
sem o conhecimento de Ana/Beto;
5. Assumindo o papel do intermedirio (Man-in-the-Middle). Para este ataque, Ivo
obtm as chaves de Ana e de Beto; personifica tanto Ana quanto Beto; intercepta
os criptogramas de Ana/Beto para Beto/Ana; decripta estes criptogramas e os
encripta novamente com sua prpria chave de encriptao, antes de reenvi-los.

Livro-texto de Minicursos

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.2.4. Tipos de sistemas criptogrficos


Existem dois tipos de sistemas criptogrficos, comumente conhecidos como criptografia
de chave secreta (ou simtrica) e criptografia de chave pblica (ou assimtrica). Na
criptografia de chave secreta, uma nica chave usada para encriptar e decriptar a
informao. Na criptografia de chave pblica, duas chaves so necessrias. Uma chave
usada para encriptar; a outra chave, diferente, usada para decriptar a informao. Estas
duas chaves so matematicamente relacionadas e trabalham aos pares, de modo que o
criptograma gerado com uma chave deve ser decriptado pela outra chave do par. Cada
chave inverte o trabalho da outra e nenhuma pode ser usada sozinha em um sistema
criptogrfico. Nos sistemas de chave pblica, uma das chaves do par dita privada (a de
decriptao), a outra feita pblica (a de encriptao).

1.2.5. Criptografia de chave secreta


Os sistemas criptogrficos de chave secreta modernos possuem geralmente bom
desempenho, mesmo em computadores considerados lentos. Com esta tecnologia,
apenas uma chave usada para encriptar e decriptar a informao. A Figura 2 ilustra os
passos da encriptao com algoritmos simtricos de chave secreta, conforme a seguir:
1. Ana configura o algoritmo para o modo de encriptao com a chave secreta;
2. Ana alimenta o algoritmo com a mensagem original, o texto claro;
3. Ana encripta a mensagem e obtm o criptograma (mensagem encriptada).
Apenas a chave usada na encriptao pode decriptar corretamente a informao.
Por isso, esta chave deve ser protegida e guardada em segredo; da o nome de chave
secreta. A Figura 2 tambm ilustra os passos da decriptao com chave secreta:
1. Beto configura o algoritmo para o modo de decriptao com a chave secreta;
2. Beto alimenta o algoritmo com a mensagem encriptada (criptograma);
3. Beto decripta a mensagem encriptada e obtm o texto claro original.
Teoricamente, este sistema criptogrfico pode ser diretamente utilizado para
encriptao bidirecional com a mesma chave. Porm, conforme tratado adiante neste
texto, na prtica, diversos detalhes de implementao dificultam a utilizao segura da
mesma chave para encriptao nas duas direes do canal de comunicao.
Na criptografia simtrica, a chave secreta deve ser conhecida por todos aqueles

Figura 2: Sistema criptogrfico simtrico.

Livro-texto de Minicursos

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 3: Encriptadores de fluxo (a esquerda) e de bloco (a direita).

que precisam decriptar a informao encriptada com ela. Mas como compartilhar a
chave secreta sem que ela seja descoberta pelos adversrios? Uma soluo seria marcar
um encontro secreto com todos que devem conhecer a chave. Porm, na Internet, isto
no fcil, afinal, usa-se a Internet quando encontros presenciais so difceis. Sabe-se
que a Internet insegura por natureza (por isso, usar a criptografia), ento no se pode
simplesmente distribuir a chave secreta por e-mail ou mensagem de texto. A
distribuio de chaves um aspecto importante da criptografia de chave secreta. Apesar
das dificuldades de distribuio de chaves, a criptografia de chave secreta muito usada.
Suas dificuldades aparentes podem ser contornadas pela combinao desta tecnologia
com a criptografia de chave pblica, originando sistemas criptogrficos hbridos.

1.2.5.1. Encriptadores de fluxo e de bloco


Existem duas categorias de algoritmos simtricos (Figura 3): os encriptadores de fluxo e
de bloco. Nos encriptadores de bloco, o texto claro quebrado em blocos de bits de
tamanho fixo. O encriptador trabalha sobre blocos e produz sadas em blocos tambm.
O tamanho da chave criptogrfica geralmente um mltiplo do tamanho do bloco.
Os encriptadores de fluxo trabalham sobre sequncias (de bits). A sequncia ou
fluxo de entrada transformado continuamente na sequncia ou fluxo de sada, bit a bit.
importante que a chave criptogrfica seja uma sequncia de bits pelo menos do
mesmo tamanho do fluxo de entrada. Na prtica, os bits da chave podem ser produzidos
por um gerador de sequncias de bits pseudoaleatrias, a partir de uma chave mestra de
tamanho fixo.

1.2.6. Criptografia de chave pblica


Devido complexidade das operaes matemticas envolvidas, a criptografia de chave
pblica tradicional possui em geral um desempenho pior se comparada criptografia de
chave secreta, no mesmo hardware. A criptografia de chave pblica utiliza duas chaves,
que so relacionadas matematicamente e construdas para trabalharem juntas. Uma das
chaves do par dita a chave privada (pessoal) e mantida em segredo, sendo conhecida
Livro-texto de Minicursos

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 4: Sistema criptogrfico assimtrico para sigilo.

apenas pelo dono do par de chaves. A outra chave do par dita a chave pblica por
poder ser conhecida publicamente. A criptografia de chave pblica pode ser usada para
obter sigilo. Neste caso, a encriptao com a chave pblica torna possvel que qualquer
um envie criptogramas para o dono da chave privada.

1.2.6.1. Encriptao para sigilo e privacidade


A Figura 4 ilustra um sistema criptogrfico assimtrico para sigilo e seus
elementos bsicos. Mais uma vez, Ana, Beto e Ivo so os personagens. As mensagens
de Ana para Beto so transmitidas por um canal inseguro, controlado por Ivo. Beto
possui um par de chaves, uma chave pblica e outra privada. Ana conhece a chave
pblica de Beto, mas somente o dono do par de chaves (Beto) conhece a chave privada
(no h segredo compartilhado). A Figura 4 contm os passos a seguir:
1. Ana configura o algoritmo de encriptao com a chave pblica de Beto;
2. Ana alimenta o algoritmo com a mensagem original (o texto claro);
3. O texto claro encriptado e transmitido pelo canal inseguro para Beto;
4. Beto configura o algoritmo de decriptao com a sua prpria chave privada;
5. O criptograma decriptado e o texto claro original obtido por Beto.
Analisando a Figura 4, observa-se que Ana envia uma mensagem privada para
Beto. Para fazer isso, Ana encripta a mensagem usando a chave pblica de Beto. Ana
conhece a chave pblica de Beto por que ela foi divulgada por Beto. Porm, o
criptograma s pode ser decriptado pela chave privada de Beto; nem Ana pode faz-lo.
Para obter comunicao segura bidirecional, basta acrescentar ao sistema
criptogrfico o mesmo processo no sentido oposto (de Beto para Ana), com outro par de
chaves. Isto , Beto usa a chave pblica de Ana para enviar mensagens encriptadas para
ela. Ana, ao receber a mensagem, usa sua prpria chave privada pessoal para decriptar a
mensagem enviada por Beto. A criptografia de chave pblica indispensvel para a
Livro-texto de Minicursos

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 5: Sistema criptogrfico assimtrico para autenticidade.

segurana da Internet, pois torna possvel a comunicao privada em uma rede pblica.
A criptografia de chave pblica a base para outros dois servios: a autenticao das
partes e a verificao de integridade das mensagens.

1.2.6.2. Autenticao e irrefutabilidade


O uso da criptografia de chave pblica para autenticao de mensagens quase o oposto
do uso para sigilo. A criptografia de chave pblica para assinatura digital usada para
obter integridade, autenticidade e irrefutabilidade. Chama-se assinatura digital ao
resultado de uma certa operao criptogrfica com a chave privada sobre o texto claro.
Neste caso, o dono da chave privada pode gerar mensagens assinadas, que podem ser
verificadas por qualquer um que conhea a chave pblica correspondente, portanto,
sendo capaz de verificar a autenticidade da assinatura digital. Nem sempre a operao de
assinatura uma encriptao e a sua verificao uma decriptao.
Visto que qualquer um de posse da chave pblica pode decriptar a assinatura
digital, ela no mais secreta, mas possui outra propriedade: a irrefutabilidade. Isto ,
quem quer que verifique a assinatura com a chave pblica, sabe que ela foi produzida
por uma chave privada exclusiva; logo, a mensagem no pode ter sido gerada por mais
ningum alm do proprietrio da chave privada.
Na Figura 5, Ana usa sua chave privada para assinar digitalmente uma
mensagem para Beto. O texto claro e a assinatura digital so enviados por um canal
inseguro e podem ser lidos por todos, por isso a mensagem no secreta. Qualquer um
que conhea a chave pblica de Ana (todo mundo, inclusive Beto), pode verificar a
assinatura digital. Ivo pode ler a mensagem, mas no pode falsific-la, pois no conhece
a chave privada de Ana.
O principal problema administrativo deste modelo de autenticao justamente
a confiana depositada na chave pblica. Se a chave pblica de algum pode ser
Livro-texto de Minicursos

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 6: Funes de resumo (hash) criptogrfico.

encontrada em qualquer lugar, ento fica difcil saber se esta chave no foi corrompida
ou substituda. O problema de garantir a autenticidade da chave pblica muito
importante e, se no for solucionado satisfatoriamente, pode comprometer a confiana
no sistema criptogrfico. Uma maneira de validar chaves pblicas fazer com que elas
sejam emitidas por Autoridades Certificadoras (AC) de uma Infraestrutura de Chaves
Pblicas (ICP), que torne possvel a verificao da autenticidade de tais chaves.

1.2.6.3. Assinaturas digitais de tamanho fixo


A gerao de assinaturas digitais com o mesmo tamanho do texto claro ruim para a
transmisso de dados. Alm disso, a matemtica envolvida na criptografia de chave
pblica mais trabalhosa (complexa) e, por isso, no teria desempenho eficiente em
processadores mais lentos. Por estas razes, normalmente, no o texto claro inteiro
que assinado digitalmente, mas sim um resumo dele, que o identifique unicamente.
Este identificador nico calculado por rotinas matemticas chamadas de funes de
resumo (ou hash) criptogrfico, cujas propriedades so ilustradas na Figura 6.
Estas funes de hash geram uma sequncia de bits, o valor do hash, que nico
para o documento de entrada da funo. O hash muito menor que o documento
original e geralmente tem um tamanho fixo de dezenas (algumas centenas) de bits. A
funo de hash unidirecional porque no reversvel, isto , no possvel recuperar o
documento original a partir da sequncia binria do hash. Alm disso, idealmente, no
existem dois documentos que geram o mesmo valor de hash.

Figura 7: Assinaturas digitais de tamanho fixo.

Livro-texto de Minicursos

10

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Na Figura 7, Ana no assina o texto claro inteiro, pois ele pode ter um tamanho
arbitrariamente grande. De fato, Ana usa um mecanismo de assinaturas digitais que
calcula o hash do texto claro usando uma funo de resumo criptogrfico. O hash da
mensagem ento assinado com a chave privada de Ana usando um mecanismo de
assinatura digital. O modo de combinar a funo de resumo e o algoritmo assimtrico
dependente de cada mecanismo de assinatura digital. Esta assinatura digital fixa
enviada junto com o texto claro original e est acessvel para quem precisar verificar a
autoria do texto claro.
A integridade do texto claro tambm est garantida, pois se ele tiver qualquer bit
modificado, o hash calculado na verificao no corresponder mais quele da
assinatura e a assinatura no ser mais verificada com sucesso. Ana no pode mais negar
(refutar) a autoria do texto claro, pois h uma assinatura digital feita com sua chave
privada pessoal. Ningum precisa da ajuda de Ana para verificar a autoria do
documento, desde que a chave pblica de Ana esteja amplamente disponvel. Por isso, a
assinatura digital irrefutvel.

1.2.7. Distribuio de chaves


A despeito da segurana oferecida pelas funes criptogrficas para encriptao e
assinatura digital, resta ainda um aspecto importante a ser considerado na anlise de
viabilidade de um sistema criptogrfico: a distribuio de chaves. Distribuir as chaves
na implantao de um sistema criptogrfico significa oferecer a cada indivduo
participante do sistema todas as chaves necessrias para que ele consiga comunicar-se
de modo seguro com qualquer outro participante. As tecnologias criptogrficas
simtricas e assimtricas possuem restries diferentes quanto distribuio de chaves.
Na criptografia simtrica, deve haver uma chave secreta compartilhada dentro de
cada grupo de pessoas que deseja falar sem o conhecimento de outros. Por exemplo,
para Ana e Beto trocarem segredos sem o conhecimento de Ivo, eles dois devem
compartilhar uma chave secreta. A Figura 8 mostra a distribuio de chaves secretas
entre pares para quatro indivduos. Ana tem uma chave secreta para cada pessoa com
que ela troca segredos sem que os outros saibam. Beto tambm quer ter seus segredos
com cada pessoa em separado, por isso ele tem chaves secretas compartilhadas com
cada participante. O mesmo vale para cada par de indivduos.

Figura 8: Distribuio de chaves simtricas e sua funo de crescimento.


Livro-texto de Minicursos

11

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 9: Distribuio de chaves assimtricas e sua funo de crescimento.

Uma caracterstica interessante dessa configurao o sigilo mantido entre os


pares. Cada par mantm seus segredos fora do alcance dos outros. O problema est na
quantidade de chaves necessria para manter este nvel alto de sigilo. Para um grupo de
quatro pessoas, seis chaves so necessrias. Para cinco pessoas, dez chaves so
necessrias, e assim por diante. Deste modo, este comportamento pode ser descrito por
uma funo quadrtica. Isto , a quantidade de chaves secretas cresce em funo do
quadrado da quantidade de pessoas do grupo.
O grfico da Figura 8 mostra o crescimento da quantidade de chaves secretas em
funo do quadrado da quantidade dos participantes. Observa-se que para meros cem
participantes, a quantidade de chaves secretas chega a alguns milhares, para cento e
cinquenta participantes, tem-se mais de dez mil chaves e para duzentos participantes a
quantidade de chaves quase chega a duzentos mil.
A criptografia assimtrica de chaves pblicas simplifica muito o problema de
distribuio de chaves. Cada participante s precisa ter o seu par de chaves, manter em
segredo a chave privada e divulgar a chave pblica. Pode haver um repositrio global
para todas as chaves pblicas. A Figura 9 mostra a distribuio de chaves pblicas para
um grupo de quatro indivduos. O grfico da Figura 9 mostra o crescimento da
quantidade de chaves (pblicas e privadas) como uma funo afim da quantidade de
participantes. A quantidade de chaves o dobro da quantidade de participantes.

1.2.8. Transporte de chaves e sistemas criptogrficos hbridos


A criptografia de chave pblica recomendada para grupos grandes e ambientes
dinmicos e pblicos. Por outro lado, a criptografia de chave secreta recomendada
para grupos pequenos e estticos. A Tabela 1 compara as tecnologias criptogrficas
simtricas e assimtricas. Observa-se que as deficincias de uma tecnologia so
complementadas pelas vantagens da outra. De fato, uma soluo amplamente utilizada
pelos protocolos de comunicao segura na Internet usa uma combinao das
tecnologias simtrica e assimtrica, chamada de sistemas criptogrficos hbridos.
Uma combinao interessante das tecnologias aquela que oferece o
desempenho superior da criptografia simtrica com a autenticao forte e a facilidade de
distribuio de chaves da criptografia assimtrica. Tal combinao pode ser
Livro-texto de Minicursos

12

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

implementada pelo uso de uma chave secreta encriptada por uma chave pblica para
transporte seguro. A criptografia assimtrica usada como canal seguro para o
compartilhamento da chave secreta. A Figura 10 mostra os passos da encriptao com a
chave secreta em um sistema criptogrfico hbrido:
1. Ana configura um algoritmo assimtrico com a chave pblica de Beto;
2. Ana cria uma chave secreta e alimenta o algoritmo assimtrico com ela;
3. A chave secreta encriptada pela chave pblica de Beto;
4. Ana configura o algoritmo simtrico com a chave secreta;
5. Ana alimenta o algoritmo simtrico com um texto claro para Beto;
6. Ana envia o criptograma para Beto, junto com a chave secreta encriptada.
Durante uma comunicao segura, a sequncia completa de passos para
encriptao s executada uma nica vez, no incio da comunicao, para compartilhar
a chave secreta. A partir do segundo criptograma da conversa, basta que os passos 5 e 6
sejam executados. A tarefa de Beto recuperar a chave secreta e manter a comunicao
com Ana usando a chave secreta para proteger os dados.
De modo anlogo, na decriptao, os passos para recuperar a chave secreta s
so executados no incio da comunicao. Observados os detalhes de implementao,
depois que ambos (Ana e Beto) possuem a chave secreta, a comunicao pode ocorrer
nos dois sentidos. Isto , tanto de Ana para Beto, quanto de Beto para Ana.
Tabela 1: Comparao entre tecnologias criptogrficas simtricas e assimtricas.

Criptografia Simtrica

Criptografia Assimtrica

Desempenho superior (mais rpida).

Desempenho inferior (mais lenta).

No oferece autenticao forte, o segredo


compartilhado.

Autenticao forte com assinaturas digitais.

No irrefutvel (a autoria pode ser negada).

Assinatura digital irrefutvel.

Distribuio de muitas chaves trabalhosa.

Distribuio de muitas chaves simplificada.

Figura 10: Sistema criptogrfico hbrido e o transporte da chave de secreta.

Livro-texto de Minicursos

13

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.2.9. Aspectos de gesto de chaves criptogrficas


A gesto de chaves criptogrficas um tpico complexo e bastante suscetvel a erros de
construo, sendo muitas vezes a causa de vulnerabilidades graves em sistemas
criptogrficos. Esta seo aborda brevemente o armazenamento seguro de chaves em
software, os mtodos de acordo de chave e o ciclo de vida de chaves criptogrficas.

1.2.9.1. Armazenamento seguro de chaves em software


O sigilo das chaves de encriptao e assinatura (privadas e secretas) da maior
importncia para a segurana dos sistemas criptogrficos. Nas implementaes em
software, sem auxlio de hardware de segurana, as chaves privadas e secretas devem
ser guardadas de forma encriptada. A criptografia de proteo das chaves tambm
necessita de chaves para encriptao, que por sua vez tambm precisam de proteo
criptogrfica, e assim por diante, levando a um problema aparentemente insolvel.
A Criptografia Baseada em Senhas (Password-Based Encryption - PBE) resolve
esta questo ao proporcionar os meios adequados para gerar uma chave criptogrfica a
partir de uma senha. A Figura 11 ilustra o funcionamento do mtodo. O mecanismo de
PBE geralmente utilizado para proteger chaves logo que elas so criadas, para reduzir
a exposio destas chaves. O mecanismo encapsula uma funo de derivao de chaves
(Key Derivation Function - KDF) e uma rotina de encriptao simtrica. Os passos de
uso do PBE so os seguintes:
1. A PBE configurada com uma senha (forte) e parmetros de segurana;
2. A chave (privada ou secreta) a ser protegida passada para a PBE;
3. Uma chave de proteo de chaves (CPC) gerada pelo KDF a partir da senha;
4. A encriptao simtrica configurada com a CPC;
5. A chave a ser protegida encriptada e pode ser armazenada em um arquivo;
6. A CPC pode ser derivada novamente no futuro e por isto deve ser apagada.
A recuperao da chave encriptada feita pela decriptao com a CPC derivada
novamente a partir da senha. Vale ainda mencionar que as cpias em claro da chave a
ser protegida devem ser apagadas do sistema, como uma boa prtica de segurana.
Mecanismos de verificao de integridade podem ser combinados ao mtodo PBE.

Figura 11: Armazenamento seguro de chaves com criptografia baseada em senhas.


Livro-texto de Minicursos

14

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.2.9.1. Acordo de chaves


H ocasies em que entidades que nunca tiveram a oportunidade de compartilhar chaves
criptogrficas (por exemplo, nunca se encontram ou no se conhecem) precisam se
comunicar em sigilo. Nestes casos, uma chave efmera, usada apenas para algumas
encriptaes e decriptaes decorrentes de uma conversa, pode ser gerada momentos
antes do incio da conversa. Os mtodos de acordo de chaves so utilizados para
combinar ou negociar uma chave secreta entre dois ou mais participantes usando um
canal pblico. Uma caracterstica interessante destes mtodos que o segredo
compartilhado (a partir do qual a chave ser derivada) combinado pela troca de
informaes pblicas por meio de um canal inseguro.

1.2.9.2. Ciclo de vida de chaves criptogrficas


Uma chave criptogrfica tem uma finalidade e est associada a uma entidade (pessoa ou
sistema). A Figura 12 ilustra os estados e as fases da vida de uma chave criptogrfica
[28]. Uma chave possui seis estados, que so organizados em um ciclo de vida com
quatro fases. Cada fase tem vrias atividades especficas a serem realizadas. Em
situaes normais, uma chave passa a maior parte de sua vida til no estado Ativado da
fase Operacional. Uma chave desativada, que no est mais em operao, ainda pode ser
utilizada para recuperar informao encriptada antiga.
O criptoperodo o perodo de tempo durante o qual as chaves para um
determinado sistema permanecem em vigor e autorizadas para utilizao. Uma chave sai
de operao por dois motivos: o seu tempo de uso (criptoperodo) terminou e ela ser
desativada, ou ela foi comprometida em algum incidente de segurana. A destruio de
uma chave requer cuidados com a assegurao do apagamento ou remoo segura. Uma
chave mal apagada ainda pode ser comprometida. Alm disso, a destruio de uma
chave comprometida no desfaz o comprometimento dos dados encriptados por ela, pois
um segredo revelado nunca volta a ser um segredo de novo.

Figura 12: Estados e fases do ciclo de vida de uma chave criptogrfica.


Livro-texto de Minicursos

15

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.

Como usar a criptografia: entendendo os bons usos

Esta seo aborda, por meio de (trechos de) programas em Java [38] e a biblioteca
criptogrfica BouncyCastle [39], os conceitos descritos na seo anterior. A bibliografia
de apoio [10][11][12] explica aspectos especficos de programao da API criptogrfica.
Em particular, aqui so abordados os seguintes assuntos: encriptao/decriptao
simtrica e assimtrica; modos de operao e suas propriedades; verificao de
integridade e autenticao de mensagem; encriptao autenticada; criptografia baseada
em senhas; transporte de chave simtrica com criptografia assimtrica; aleatoriedade e
gerao de nmeros pseudoaleatrios; e distribuio e validao de certificados digitais.
Ainda, os programas so inspirados nos padres de projeto para criptografia [9].

1.3.1. O padro de projeto de software criptogrfico


A estrutura de um sistema criptogrfico seque um padro recorrente de arquitetura que
foi primeiramente documento pelos autores em [9] e ficou conhecido como o padro de
projeto de software criptogrfico. A Figura 13 mostra o diagrama de classes, em UML,
de um sistema criptogrfico simtrico para sigilo, em que Ana encripta e Beto decripta.
O leitor deve ser capaz de abstrair a arquitetura de software da Figura 13 e visualizar
estruturas semelhantes nos trechos de programas criptogrficos mostrados a seguir.
Na figura, Ana e Beto usam a criptografia por meio de um aplicativo (App), em
instanciaes distintas, AnaApp e BetoApp, respectivamente. O App possui uma classe
com esteretipo de controlador (CriptoCtrl) que responsvel por orquestrar os servios
criptogrficos e a configurao de parmetros de segurana juntamente com a lgica da
aplicao. Por exemplo, no caso de Ana, o CriptoCtrl formata a mensagem m em um
formato adequado para a criptografia, encripta o texto claro tc com a chave ke e faz com
que Beto receba o criptograma c. Beto, por sua vez, utiliza o seu orquestrador
criptogrfico para decriptar c com a chave kd e converter o texto claro tc para a
formatao requerida m. Ana e Beto utilizam instncias diferentes da mesma classe
Algoritmo (criptogrfico).

Figura 13: Sistema criptogrfico simtrico para sigilo, em que Ana encripta e Beto decripta.

Livro-texto de Minicursos

16

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.2. Encriptao e decriptao com chave secreta (simtrica)


O trecho de cdigo mostrado no Programa 1 contm todos os elementos do sistema
criptogrfico simtrico usado por Ana e Beto. O Programa 1 no contm o cdigo fonte
completo, mas apenas o ncleo essencial para o sistema criptogrfico. Trechos
secundrios, tais como importaes de pacotes, declaraes de variveis auxiliares e
apresentao de resultados, no so mostrados. Este estilo de apresentao ser
reproduzido no restante deste texto. O trecho de cdigo do Programa 1 est dividido em
trs partes. A primeira parte, nas linhas de 01 a 06, contm as configuraes comuns do
sistema criptogrfico. A segunda parte (linhas de 08 a 12) mostra o processo de
encriptao pela Ana. A decriptao por Beto est nas linhas de 13 a 16.
As configuraes comuns do sistema criptogrfico so as seguintes. Na linha 02,
o provedor criptogrfico BouncyCastle (identificado adiante por BC) adicionado
dinamicamente. A configurao dinmica mais flexvel e recomendada nas instalaes
em que no possvel, sem modificaes do sistema operacional, alterar as
configuraes da Mquina Virtual Java (JVM), como o caso dos dispositivos mveis
Android. Nas linhas 03 e 04, um gerador de chaves instanciado com o algoritmo
criptogrfico AES, do provedor BC, e inicializado para chaves de 256 bits. A chave
criptogrfica gerada na linha 05. A linha 06 instancia o encriptador para o algoritmo
AES como um encriptador de bloco no modo de operao CTR e padding PKCS#7 (os
modos de operao e os mecanismos de padding so explicados adiante no texto).
O processo de encriptao comea na linha 09 com a configurao do
encriptador para encriptao com a chave k. Na linha 11, os bytes do texto claro so
encriptados pelo mtodo doFinal(), produzindo o criptograma. O modo CTR requer
um IV nico, que no foi informado por Ana e por isto foi gerado automaticamente pelo
encriptador e recuperado para uso da decriptao (linha 12). Na decriptao por Beto, o
encriptador configurado para decriptao com a chave compartilhada k e o mesmo IV
usado na encriptao, linha 15. A decriptao (linha 16) devolve os bytes do texto claro
e direta pelo mtodo doFinal(). O IV deve atender s propriedades do modo de
operao CTR, sendo nico e especfico do criptograma, no devendo ser reutilizado
com a mesma chave. Alm do CTR, outros modos de operao comumente utilizados
so o ECB, o CBC, o CFB e o OFB, detalhados adiante no texto.
Programa 1: Encriptao com criptografia simtrica com AES/CTR/PKCS7Padding.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16

// configuraes do sistema criptogrfico para Ana e Beto


Security.addProvider(new BouncyCastleProvider());
KeyGenerator g = KeyGenerator.getInstance("AES","BC");
g.init(256);
Key k = g.generateKey();
Cipher c = Cipher.getInstance("AES/CTR/PKCS7Padding", "BC");
// Encriptao pela Ana
c.init(Cipher.ENCRYPT_MODE, k);
byte[] textoclaroAna = "Testando o AES..".getBytes();
byte[] criptograma = c.doFinal(textoclaroAna);
byte[] iv = c.getIV();
// decriptao pelo Beto
c.init(Cipher.DECRYPT_MODE, k, new IvParameterSpec(iv));
byte[] textoclaroBeto = c.doFinal(criptograma);

Livro-texto de Minicursos

17

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.3. Mecanismos de preenchimento de blocos incompletos


Os encriptadores de bloco trabalham sobre dados com tamanho igual a um mltiplo
inteiro do tamanho do bloco. J o texto claro tem tamanho livre. Para obter flexibilidade
no texto claro, necessrio um mecanismo de preenchimento de blocos incompletos a
fim de que o tamanho do texto claro seja mltiplo do tamanho do bloco. Chama-se de
padding (preenchimento) o ato de completar a cadeia binria do texto claro para que ela
tenha o tamanho mltiplo do tamanho do bloco do algoritmo de encriptao.
Os paddings PKCS#5, para blocos de 8 bytes, e PKCS#7, para blocos de 16
bytes, so calculados utilizando a mesma regra ilustrada a seguir para bloco de 16 bytes,
em que M o texto claro da mensagem, L o tamanho de M em bytes, PM a
mensagem preenchida com o valor do padding, o caractere | a concatenao e
resto o resto da diviso inteira de L por 16. Assim,
Se o resto de L dividido por 16 15, PM = M | 0x01;
Se o resto de L dividido por 16 14, PM = M | 0x0202;
Se o resto de L dividido por 16 13, PM = M | 0x030303;
Se o resto de L dividido por 16 12, PM = M | 0x04040404;
Se o resto de L dividido por 16 11, PM = M | 0x0505050505;
Se o resto de L dividido por 16 10, PM = M | 0x060606060606;
Se o resto de L dividido por 16 09, PM = M | 0x07070707070707.
Assim por diante at a situao em que M tem um resto que um bloco quase
completo, exceto por um byte, e o resto de L dividido por 16 1. Nesta situao, a
mensagem preenchida PM = M | 0x0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E.
Finalmente, quando M tem tamanho mltiplo inteiro do bloco e o resto de L dividido
por 16 0, temos PM = M | 0x0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F.
O trecho de cdigo do Programa 2 mostra que o mecanismo de padding deve ser
determinado no momento de instanciao do encriptador de bloco. Trs mecanismos so
ilustrados (PKCS#5, PKCS#7 e X9.23) alm das opes sem padding e com padding
default. Quando no h padding, somente blocos completos podem ser encriptados.
Quando h padding, o criptograma computado sobre o texto claro com padding e por
isto, maior que o texto claro original, podendo chegar a ter um bloco a mais.
Programa 2: Mecanismos de padding das cifras de bloco com PKCS5, PKCS7 e X9.23.
01
02
03
04
05

Cipher
Cipher
Cipher
Cipher
Cipher

c1
c2
c3
c4
c5

=
=
=
=
=

Cipher.getInstance("AES/ECB/NoPadding"
,
Cipher.getInstance("AES"
,
Cipher.getInstance("AES/ECB/PKCS5Padding",
Cipher.getInstance("AES/ECB/PKCS7Padding",
Cipher.getInstance("AES/ECB/X9.23Padding",

01
02
03
04
05
06
07
08
09
10
11

// configuraes do sistema
Chave AES de 128 bits
:
Um bloco de texto claro
:
Texto claro em hexadecimal:

"BC");
"BC");
"BC");
"BC");
"BC");

criptogrfico
073815E64B5F3B04F793B09813908994
Testando o AES..
54657374616E646F206F204145532E2E

// resultados da encriptao com padding


Nenhum : A0DF739B83DD6A72EFB4F5941B2A9915
Default:A0DF739B83DD6A72EFB4F5941B2A9915F0FFEC381B1CF8466000A69620F61A36
PKCS5 :A0DF739B83DD6A72EFB4F5941B2A9915F0FFEC381B1CF8466000A69620F61A36
PKCS7 :A0DF739B83DD6A72EFB4F5941B2A9915F0FFEC381B1CF8466000A69620F61A36
X9.23 :A0DF739B83DD6A72EFB4F5941B2A9915C378DA269D95F861666C9ABEA33AC9C5

Livro-texto de Minicursos

18

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.4. Modos de operao dos encriptadores de bloco e suas propriedades


Os modos de operao dos encriptadores de bloco combinam de maneiras diferentes o
IV e o texto claro (ou o criptograma) com o algoritmo criptogrfico e a chave, para
produzir encadeamentos de blocos encriptados caractersticos de cada um deles. Assim,
o mesmo trio texto claro, chave e IV, quando usados com modos de operao diferentes,
resultam em criptogramas diferentes. Os modos de operao mais usados so ECB,
CBC, CFB, OFB e CTR [26]. Os modos ECB e CBC so encriptadores de bloco tpicos.
Os modos CFB, OFB e CTR se comportam como encriptadores de fluxo. Os modos de
operao so diferentes em relao recuperao de erros e perda de sincronismo.
A Sada 1 mostra o resultado sobre o texto decriptado da modificao de um bit
nos criptogramas gerados com os modos ECB, CBC, CFB, OFB e CTR, a partir da
mesma chave e IV. A modificao simplesmente o XOR do byte 1 com o valor 0x01.
As linhas de 01 a 03 mostram a chave, o IV em hexadecimal e o texto claro, que tem
tamanho de exatamente dois blocos do AES (32 bytes). No modo ECB, cada bloco
independente dos anteriores e no influencia seus sucessores. Por isto, na linha 07, o
bloco do bit corrompido perdido e o bloco seguinte preservado.
O modo CBC faz o XOR do bloco processado pelo algoritmo com o bloco
anterior ou com o IV, se for o primeiro bloco. Por isto, na linha 11, no apenas o bloco
corrompido completamente perdido, mas tambm o byte do segundo bloco que
corresponde ao byte corrompido do primeiro bloco. Nos modos CFB, OFB e CTR, um
fluxo de chaves gerado pela encriptao encadeada (de maneiras especficas) da
sequncia de IVs. O XOR entre o fluxo de chaves e o texto claro produz o criptograma,
e vice-versa. Na linha 15, com CFB, apenas o byte corrompido do primeiro bloco
perdido, j o bloco seguinte inteiro perdido. Os modos OFB e CTR so anlogos, em
que apenas o byte corrompido do primeiro bloco perdido e mais nada.
Em relao perda de sincronismo, no modo ECB, a perda de um bloco do
criptograma no afeta a decriptao dos blocos seguintes. Nos modos CBC e CFB, a
perda de um bloco inviabiliza a decriptao apenas do bloco seguinte. Nos modos OFB
e CTR, a perda e um bloco inviabiliza a decriptao de todos os blocos seguintes.
Sada 1: Comportamento dos modos de operao quando 1 bit do criptograma modificado.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Chave
: 0123456789ABCDEF0123456789ABCDEF
iv
: ABCDEF1234567890ABCDEF1234567890
Texto claro: Modo de operacaoModo de operacao
Teste 1: AES/ECB/NoPadding
Criptograma: D005B98ACDC054C81666DB6B2EDF8D8BD004B98ACDC054C81666DB6B2EDF8D8B
Texto claro: ????????????????Modo de operacao
Teste 2: AES/CBC/NoPadding
Criptograma: 4A7F495EE367615DFC107C6B1A5589C70940086079FDB9D307D044C2E017D8D7
Texto claro: ????????????????Mndo de operacao
Teste 3: AES/CFB/NoPadding
Criptograma: F8241BBA339DC359EFA5ACF0DDB177583DBD525C351AA7388B95ADBF9E001926
Texto claro: Mndo de operacao????????????????
Teste 4: AES/OFB/NoPadding
Criptograma: F8241BBA339DC359EFA5ACF0DDB17758858195019B5F22A3D4FC3366EDC9095F
Texto claro: Mndo de operacaoModo de operacao
Teste 5: AES/CTR/NoPadding
Criptograma: F8241BBA339DC359EFA5ACF0DDB1775861AD5E88AE385B452C01C82A18A68E33
Texto claro: Mndo de operacaoModo de operacao

Livro-texto de Minicursos

19

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.5. Verificao de integridade e autenticao de mensagem


O uso de encriptao somente no capaz de garantir que o criptograma no foi
corrompido, maliciosamente modificado, ou at mesmo completamente substitudo por
Ivo, quando em trnsito de Ana at Beto. Um valor de hash calculado sobre o
criptograma poderia ser enviado por Ana junto com o criptograma e verificado por Beto.
Deste modo, as corrupes acidentais ou maliciosas do criptograma poderiam ser
detectadas por Beto. Mas Ivo ainda seria capaz de substituir o criptograma e o hash.
Este problema resolvido pelo uso de uma tag de autenticao no lugar do hash. Um
cdigo de autenticao de mensagem (MAC) um mecanismo criptogrfico que produz
um selo (tag) de autenticidade baseado em uma chave compartilhada entre Ana e Beto e,
por isto, relativa apenas a eles. A funo de MAC recebe como entrada a chave
simtrica e a mensagem e, geralmente, utiliza em seu algoritmo funes de encriptao
ou de hash, produzindo a tag. A verificao da tag feita pela comparao da tag
recebida com uma nova tag calculada no recebimento da mensagem.
O trecho de cdigo do Programa 3 mostra a utilizao combinada de MAC e
encriptao simtrica e est divido em trs partes. As linhas de 01 a 06 contm as
configuraes comuns do sistema criptogrfico. As linhas de 08 a 11 mostram a
encriptao e a gerao da tag de autenticao pela Ana. A decriptao com a
verificao por Beto da tag de autenticao est nas linhas de 13 a 16. A linha 02
mostra, em hexadecimal, o segredo compartilhado por Ana e Beto. A linha 03 produz a
chave AES a partir do segredo. A linha 04 identifica o MAC como HMACSHA256
[30], uma funo de MAC baseada no hash (HMAC) da famlia SHA de 256 bits [29], e
cria a chave correspondente. As linhas 05 e 06 instanciam o AES/ECB e o MAC.
A encriptao com tag de autenticao da mensagem ocorre do seguinte modo.
Na linha 08, o MAC e o encriptador so inicializados com suas chaves, o criptograma
gerado na linha 10 e, na linha 11, a tag calculada sobre o criptograma. A decriptao
por Beto com verificao da tag ocorre assim: na linha 14, o MAC e o decriptador so
inicializados com suas chaves, o criptograma decriptado na linha 15 e, na linha 16, a
tag recebida comparada tag calculada. A segurana do HMAC depende da funo de
hash e dada pela metade de seu tamanho em bits. O HMACSHA256 tem tag de 256
bits e segurana de 128 bits; por isto as chaves do MAC e do AES tambm tm 128 bits.
Programa 3: MAC e encriptao com HMACSHA256 e AES/ECB/PKCS7Padding, 128 bits.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16

// configuraes do sistema criptogrfico para Ana e Beto


byte[] k = U.x2b("0123456789ABCDEF0123456789ABCDEF");
SecretKeySpec sks1 = new SecretKeySpec(k, "AES");
SecretKeySpec sks2 = new SecretKeySpec(k, "HMACSHA256");
Cipher c = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
Mac m = Mac.getInstance("HMACSHA256", "BC");
// encriptao pela Ana com tag de autenticao da mensagem
m.init(sks2); c.init(Cipher.ENCRYPT_MODE, sks1);
byte[] criptograma = c.doFinal(textoclaroAna.getBytes());
byte[] tag = m.doFinal(criptograma);
// decriptao pelo Beto com verificao da tag
m.init(sks2); c.init(Cipher.DECRYPT_MODE, sks1);
byte[] textoclaroBeto = c.doFinal(criptograma);
boolean ok = MessageDigest.isEqual(m.doFinal(criptograma),tag);

Livro-texto de Minicursos

20

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.6. Encriptao autenticada


A encriptao autenticada combina em uma nica funo criptogrfica as funes de
encriptao e de MAC. A unio das duas funes em uma nica rotina tem duas
vantagens principais. A primeira simplificar a programao do software criptogrfico
pelos programadores que, neste caso, utilizam uma API de mais alto nvel. A segunda
evitar a combinao incorreta de encriptao e MAC (tratada na prxima seo). A
encriptao autenticada no apenas o encapsulamento das funes de encriptao e
autenticao por uma API de mais alto nvel. De fato, ela uma funo criptogrfica
nova que atende aos dois objetivos (encriptao e autenticao) simultaneamente. A
funo de encriptao autenticada geralmente materializada por modos de operao
especficos para encriptadores de bloco conhecidos, tais como os modos de operao
GCM [27] do AES e CCM, aplicvel a qualquer encriptador de bloco.
O trecho de cdigo do Programa 4 mostra a encriptao autenticada com
AES/GCM e est divido em trs partes. As linhas de 01 a 04 contm as configuraes
comuns do sistema criptogrfico. As linhas de 06 a 09 mostram a encriptao
autenticada com dados autenticados por Ana. A decriptao com a verificao por Beto
est nas linhas de 11 a 15. A linha 02 j e conhecida e cria uma chave para o AES a
partir de um segredo. A linha 03 constri a estrutura para os parmetros do modo GCM,
o IV e o tamanho da tag de autenticao, com 128 bits (tags de 96 bits tambm so
vlidas). A linha 04 instancia o AES/GCM sem um padding explcito. O modo GCM
baseado no modo CTR e, por isto, segue as mesmas restries do CTR para IVs nicos e
no requer um padding, j que se comporta como um encriptador de fluxo.
O encriptador inicializado com a chave e os parmetros da encriptao
autenticada na linha 07. A linha 08 mostra como dados adicionais que somente sero
autenticados (AAD), mas no encriptados, so inseridos no encriptador pelo mtodo
updateAAD(). O criptograma computado como de costume (mtodo doFinal())
na linha 09. A tag de autenticao com 16 bytes implicitamente anexada ao final do
criptograma. Na linha 12, o encriptador e inicializado para decriptao autenticada e, na
linha 13, ele recebe os dados adicionais autenticados, geralmente conhecidos por Ana e
Beto. Na linha 14, a decriptao acontece com a verificao implcita e obrigatria da
tag, que se for incorreta ou invlida, lana uma exceo especifica (linha 15) e impede a
decriptao do criptograma, inviabilizando o uso de um texto claro no autenticado.
Programa 4: Encriptao autenticada com AES/GCM.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15

// configuraes do sistema criptogrfico para Ana e Beto


SecretKeySpec ks = new SecretKeySpec(k, "AES");
GCMParameterSpec gps = new GCMParameterSpec(128, iv);
Cipher c = Cipher.getInstance("AES/GCM/NoPadding", "BC");
// Encriptao pela Ana
c.init(Cipher.ENCRYPT_MODE, ks, gps);
c.updateAAD("AAD nao estah cifrado...".getBytes());
byte[] criptograma = c.doFinal(textoClaroAna.getBytes());
// decriptao pelo Beto
c.init(Cipher.DECRYPT_MODE, ks, gps);
c.updateAAD("AAD nao estah cifrado...".getBytes());
try {textoclaroBeto = c.doFinal(criptograma);}
catch (AEADBadTagException e) {ok = false;}

Livro-texto de Minicursos

21

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.7. Criptografia baseada em senhas


Conforme j discutido anteriormente (Seo 1.2), a criptografia baseada em senhas
(Password-Based Encryption - PBE) [21] oferece uma soluo simples para um dos
problemas mais comuns relacionados gesto de chaves criptogrficas em softwares
criptogrficos, a guarda segura de chaves criptogrficas. A encriptao de chaves com
chaves geradas a partir de senhas requer cuidados adicionais na escolha de senhas
suficientemente fortes e outros parmetros adequados. Em particular, uma senha ruim
pode comprometer a segurana de todo o sistema criptogrfico.
Senhas so normalmente menos seguras (menores, menos variadas, ou mais
previsveis) que chaves criptogrficas. Por sito, a obteno de uma chave boa a partir de
uma senha qualquer (preferencialmente boa) requer decises adequadas de segurana
como, por exemplo, a escolha de uma boa funo de derivao de chave (Key
Derivation Function - KDF). A KDF utilizada pelo mecanismo PBE geralmente
necessita, alm da escolha de uma senha forte, da configurao de dois parmetros de
segurana: (i) um nonce, um nmero pseudoaleatrio de uso nico com a funo de salt
no KDF e (ii) um contador de iteraes para a quantidade de vezes que a funo
criptogrfica interna ao KDF ser iterada sobre si mesma.
O trecho de cdigo do Programa 5 mostra a utilizao programtica da API de
PBE. Nas linhas 02 e 03, a senha e o salt so definidos. Na linha 04, a estrutura de
parmetros do PBE instanciada e o contador configurado para 2048. A boa prtica de
segurana estabelece um contador de pelo menos 1000 e um salt com pelo menos 32
bits [15]. As linhas 05 e 06 so bastante densas e estabelecem, de fato, a instncia do
PBE/KDF utilizado na derivao da chave criptogrfica: um PBE sobre o hash SHA1
para uma chave do AES de 128 bits no modo CBC. Na linha 07, a chave finalmente
derivada de acordo com os parmetros estabelecidos.
Uma vez tendo sido derivada, a chave pode ser utilizada normalmente conforme
estabelecido no processo de derivao. No programa exemplo, a linha 08 cria um
encriptador AES/CBC, que ser utilizado por Ana para encriptao (linhas de 10 a 12) e
por Beto para decriptao (linhas de 14 a 16) com a chave derivada. Neste caso, o
segredo compartilhado entre Ana e Beto a senha.
Programa 5: Criptografia baseada em senhas com PBEWithSHA1And128BitAES-CBC-BC.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16

// configuraes do PBE comuns para Ana e Beto


char[] senha = "5enha!23".toCharArray();
byte[] salt = U.x2b("1234567890ABCDEF");
PBEKeySpec pbeks = new PBEKeySpec(senha, salt, 2048);
SecretKeyFactory skf = SecretKeyFactory.getInstance(
"PBEWithSHA1And128BitAES-CBC-BC", "BC");
Key sk = skf.generateSecret(pbeks);
Cipher c = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
// Encriptao pela Ana
c.init(Cipher.ENCRYPT_MODE, sk);
byte[] criptograma = c.doFinal(textoclaroAna.getBytes());
// decriptao pelo Beto
c.init(Cipher.DECRYPT_MODE, sk);
byte[] textoclaroBeto = c.doFinal(criptograma);

Livro-texto de Minicursos

22

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.8. Encriptao e decriptao com chave assimtrica


Tradicionalmente, o algoritmo criptogrfico assimtrico mais conhecido e utilizado para
encriptao o RSA, cujo nome formado pelas letras iniciais dos sobrenomes dos
autores Ron Rivest, Adi Shamir e Leonard Adleman. Para promover segurana e
interoperabilidade, o uso e a implementao do RSA devem obedecer a padres
internacionais. O documento PKCS#1 v2.0 [22] especifica o Optimal Asymmetric
Encryption Padding (OAEP) como um mecanismo de padding, que transforma o RSA
em um mecanismo de encriptao assimtrica aleatorizado chamado RSA-OAEP.
As chaves criptogrficas do RSA so muito grandes se comparadas s chaves de
at 256 bits dos algoritmos simtricos, como o AES. Atualmente, tamanhos de chave
RSA considerados seguros so 2048 bits ou 3072 bits, com um nvel de segurana
comparvel ao dos algoritmos simtricos de 256 bits. A aritmtica mais complexa e os
tamanhos de chave elevados impem ao RSA restries de desempenho e de espao.
O RSA-OAEP limita o tamanho do texto claro que pode ser encriptado em uma
nica chamada da funo. Este limite de tamanho est relacionado ao tamanho do corpo
finito (e da chave) usado na aritmtica modular subjacente ao algoritmo e pode ser
determinado, em bytes, pela frmula (ks-2*hs)/82, onde ks o tamanho da chave RSA
em bits e hs o tamanho do hash em bits usado pelo padding OAEP. Por exemplo, o
RSA-OAEP com chave de 2048 bits e hash de 256 bits pode encriptar de uma vez um
texto claro com at 158 bytes (1264 bits). O criptograma ter o tamanho da chave, que
neste exemplo de 256 bytes.
O trecho de cdigo do Programa 6 mostra a configurao e uso do RSA-OAEP.
A linha 02 instancia um gerador de par de chaves para o RSA. Na linha 03, o gerador
configurado para chaves de 2048 bits e o par de chaves criado na linha 04. Nas linhas
07 e 08, a estrutura de parmetros OAEP criada com a funo de mascaramento
MGF1, o hash SHA-256 e a fonte de nmeros primos padro. As linhas 09 e 10
instanciam o RSA-OAEP com SHA256 e MGF1, que ser utilizado por Ana para
encriptao com a chave pblica de Beto (linhas 13 e 14) e por Beto para decriptao
com sua chave privada (linhas 17 e 18). Aqui, Ana j conhecia a chave pblica de Beto.
Programa 6: Encriptao e decriptao assimtricas com RSA-OAEP.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18

// Beto cria um par de chaves


KeyPairGenerator g = KeyPairGenerator.getInstance("RSA", "BC");
g.initialize(2048);
KeyPair kp = g.generateKeyPair();
// configuraes comuns para Ana e Beto
OAEPParameterSpec OAEPps = new OAEPParameterSpec("SHA-256",
"MGF1",MGF1ParameterSpec.SHA256, PSource.PSpecified.DEFAULT);
Cipher c = Cipher.getInstance(
"RSA/None/OAEPwithSHA256andMGF1Padding", "BC");
// Encriptao pela Ana com a chabe pblica de Beto
c.init(Cipher.ENCRYPT_MODE, kp.getPublic(), OAEPps);
byte[] criptograma = c.doFinal(textoclaroAna.getBytes());
// Decriptao pelo Beto com sua chave privada
c.init(Cipher.DECRYPT_MODE, kp.getPrivate(), OAEPps);
byte[] textoclaroBeto = c.doFinal(criptograma);

Livro-texto de Minicursos

23

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.9. Transporte de chave simtrica com encriptao assimtrica


As limitaes de tamanho e de desempenho do RSA-OAEP podem ser minimizadas
pela combinao deste algoritmo assimtrico com um algoritmo simtrico, como o AES,
em um sistema criptogrfico hbrido para transporte de chaves simtricas. O trecho de
cdigo do Programa 7 ilustra a encriptao de uma chave AES com RSA-OAEP.
O trecho de cdigo bastante semelhante aos anteriores, com as seguintes
diferenas relevantes: as chaves RSA tm 3072 bits, o OAEP usa a funo de hash
SHA-512 e o AES est no modo CTR com padding PKCS#7 e chaves de 256 bits.
Nesta configurao, o RSA encripta de uma nica vez at 254 bytes, o que mais do
que suficiente para os 32 bytes da chave AES mais um bloco de padding PKCS#7.
Nas linhas 26 e 27, a chave secreta AES encriptada por Ana com a chave RSA
pblica do Beto. Nas linhas 31 e 32, Beto decripta a chave secreta com sua chave RSA
privada. A chave AES restaurada (linha 35) e usada na decriptao (linhas 38 e 39).
Programa 7: Sistema criptogrfico hbrido para transporte de chaves com RSA-OAEP e AES.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

// Este o par de chaves do Beto


KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA","BC");
kpg.initialize(3072);
KeyPair kp = kpg.generateKeyPair();
// configuraes da criptografia assimtrica para Ana e Beto
OAEPParameterSpec OAEPps = new OAEPParameterSpec("SHA-512",
"MGF1",MGF1ParameterSpec.SHA512, PSource.PSpecified.DEFAULT);
Cipher x = Cipher.getInstance(
"RSA/None/OAEPwithSHA512andMGF1Padding","BC");
// configuraes da criptografia simtrica para Ana a e Beto
Cipher c = Cipher.getInstance("AES/CTR/PKCS7Padding", "BC");
IvParameterSpec ivps = new IvParameterSpec(iv);
// Chave secreta compartilhada entre Ana e Beto
KeyGenerator gAna = KeyGenerator.getInstance("AES", "BC");
gAna.init(256);
Key skAna = gAna.generateKey();
// Ana encripta alguma mensagem ...
c.init(Cipher.ENCRYPT_MODE, skAna, ivps);
byte[] criptograma = c.doFinal(textoclaroAna.getBytes());
// Encriptao por Ana da chave secreta com chave pblica do Beto.

x.init(Cipher.ENCRYPT_MODE, kp.getPublic(), OAEPps);


byte[] chaveEncriptada = x.doFinal(skAna.getEncoded());
// Aqui comea a parte do Beto
// decriptao da chave secreta pelo Beto com a sua chave privada

x.init(Cipher.DECRYPT_MODE, kp.getPrivate(), OAEPps);


byte[] chaveBytes = x.doFinal(chaveEncriptada);
//recuperacao da chave secreta transportada
SecretKeySpec skBeto = new SecretKeySpec(chaveBytes, "AES");
//decriptando alguma coisa com a chave secreta
c.init(Cipher.DECRYPT_MODE, skBeto, ivps);
byte[] textoClaroBeto = c.doFinal(criptograma);

Livro-texto de Minicursos

24

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.10. Assinaturas digitais e verificao de autenticidade


O trecho de cdigo do Programa 8 mostra a utilizao de dois sistemas criptogrficos
para assinaturas digitais. O primeiro o RSA Probabilistic Signature Scheme (RSAPSS), a padronizao do RSA [22] para assinaturas digitais aleatorizadas. O segundo o
padro norte-americano para assinaturas digitais sobre curvas elpticas, o ECDSA [25].
Os dois sistemas podem ser usados de modo alternativo, desde que a assinatura seja
gerada e verificada pelo mesmo sistema.
O RSA-PSS foi configurado com SHA-256, MGF1 e chave de 3072 bits,
produzindo assinaturas de 384 bytes. O ECDSA foi configurado com SHA-256 e a
curva elptica sobre corpo primo prime256v1, produzindo uma assinatura digital de
70 bytes. A assinatura de tamanho reduzido e a maior velocidade de processamento,
tanto na gerao do par de chaves quanto na assinatura digital favorecem a tecnologia de
curvas elpticas nas situaes em que h restries de espao e de desempenho. O par de
chaves do ECDSA tambm consideravelmente menor em relao ao do RSA-PSS.
O par de chaves de Ana gerado na linha 15. A gerao de uma assinatura
digital com a chave privada da Ana acontece nas linhas de 18 a 20. A verificao por
Beto da autenticidade do documento com a assinatura de Ana, com a chave pblica de
Ana, ocorre nas linhas de 31 a 33. Beto j conhecia previamente a chave pblica de Ana.
Programa 8: Dois algoritmos para assinaturas digitais: RSA-PSS e ECDSA.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

// par de chaves de Ana e configuraes do criptossistema


Signature sAna = null, vBeto = null;
KeyPairGenerator kpg = KeyPairGenerator.getInstance(alg,"BC");
switch (alg) {
case "RSA":
kpg.initialize(3072, new SecureRandom());
sAna = Signature.getInstance("SHA256withRSAandMGF1","BC");
break;
case "ECDSA":
ECGenParameterSpec ec= new ECGenParameterSpec("prime256v1");
kpg.initialize(ec, new SecureRandom());
sAna = Signature.getInstance("SHA256WithECDSA", "BC");
break;
}
KeyPair kpAna = kpg.generateKeyPair();
//Ana assina o documento
sAna.initSign(kpAna.getPrivate(), new SecureRandom());
assinadorAna.update(documento.getBytes);
byte[] assinatura = sAna.sign();
switch (alg) {
case "RSA":
vBeto = Signature.getInstance("SHA256withRSAandMGF1","BC");
break;
case "ECDSA":
vBeto = Signature.getInstance("SHA256WithECDSA", "BC");
break;
}
//Beto verifica a assinatura
vBeto.initVerify(kpAna.getPublic());
vBeto.update(documento.getBytes());
boolean ok = vBeto.verify(assinatura);

Livro-texto de Minicursos

25

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.11. Aleatoriedade e gerao de nmeros pseudoaleatrios


O trecho de cdigo do Programa 9 mostra a utilizao de geradores de nmeros
pseudoaleatrios (PseudoRandom Number Generators - PRNGs). Em particular, o
SHA1PRNG disponvel no provedor criptogrfico padro do JDK testado em relao a
duas propriedades, a disperso ou distribuio dos valores por um intervalo determinado
e a previsibilidade da sequncia pseudoaleatria gerada a partir de uma semente
conhecida. Os PRNGs adequados para uso em sistemas criptogrficos so ditos
criptograficamente seguros. No Java, eles so objetos da classe SecureRandom.
Nas linhas de 02 a 04, as trs instncias do SHA1PRNG so criadas de modo
independente. Nas linhas 06 a 08, as trs instncias produzem cada uma 100 valores
inteiros no intervalo de 0 a 10 mil. O grfico de disperso da Figura 14(A) mostra os
valores obtidos. Observa-se que os valores gerados pelas trs instncias esto
distribudos uniformemente pelo intervalo de 0 a 10 mil. Alm disso, no houve
repetio de valores nas sequncias pseudoaleatrias. Este o comportamento esperado
de um PRNG criptograficamente til. Testes mais rigorosos podem ser feitos [5].
Nas linhas 10 e 11, mais duas instncias so criadas, mas desta vez elas so
configuradas com a mesma semente pseudoaleatria (linha 12). Nas linhas 14 e 15, as
duas instncias produzem cada uma 100 valores inteiros no intervalo de 0 a 10 mil. O
grfico de disperso da Figura 14(B) mostra os valores obtidos. Observa-se que as
sequncias pseudoaleatrias so idnticas. Para a mesma semente, o PRNG sempre
produz a mesma sequncia de valores. Este tambm o comportamento esperado.
Programa 9: Gerao de nmeros pseudoaleatrios com SHA1PRNG.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15

// Teste de disperso estatstica


SecureRandom sr1 = SecureRandom.getInstance("SHA1PRNG", "SUN");
SecureRandom sr2 = SecureRandom.getInstance("SHA1PRNG", "SUN");
SecureRandom sr3 = SecureRandom.getInstance("SHA1PRNG", "SUN");
System.out.println("i , sr1 , sr2, sr3");
for (int i = 0; i < 100; i++) {
U.println(i+","+sr1.nextInt(10000)+","+sr2.nextInt(10000)+","
+sr3.nextInt(10000));}
//Teste de imprevisibilidade
SecureRandom sr4 = SecureRandom.getInstance("SHA1PRNG", "SUN");
SecureRandom sr5 = SecureRandom.getInstance("SHA1PRNG", "SUN");
byte[] s = sr4.generateSeed(32); sr4.setSeed(s); sr5.setSeed(s);
System.out.println("i , sr4 , sr5");
for (int i = 0; i < 100; i++) {
U.println(i+","+sr4.nextInt(10000)+","+sr5.nextInt(10000));}

Figura 14: Testes do SHA1PRNG: (A) distribuio estatstica e (B) imprevisibilidade.

Livro-texto de Minicursos

26

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.3.12. Validao de certificados digitais


Certificao digital um tema amplo e seu tratamento aprofundado tomaria todo o
espao deste texto, talvez merecendo at um captulo exclusivo. Esta seo limita-se aos
aspectos de validao de certificados digitais considerados boas prticas [7][8][28].
Um certificado digital de chave pblica, ou simplesmente certificado, um
documento digital que d como verdadeiro o vnculo entre uma chave pblica autntica
e uma entidade cujo nome est no certificado. A veracidade do certificado garantida
por uma terceira parte confivel emissora do certificado, chamada de Autoridade
Certificadora (CA). O certificado contm a assinatura digital da CA emissora e vrias
informaes, tais como a chave pblica, a identidade da entidade reconhecida pela CA,
datas de incio de uso e de validade (final de uso), etc. Por isto, o certificado usado na
verificao de que uma chave pblica pertence a uma entidade e serve tambm como
meio confivel para distribuio de chaves pblicas.
A validao do certificado realizada toda vez que a autenticidade da chave
pblica contida nele deve ser verificada. A assinatura da AC pode ser verificada por
qualquer um com acesso chave pblica da AC, cujo certificado amplamente
disponvel. Por exemplo, num caso bastante comum, uma AC pode emitir certificados
de servidores web. Quando um software cliente HTTPS (browser) faz uma requisio
para um servidor web protegido, o servidor responde com seu certificado digital. O
software cliente valida o certificado do servidor verificando a assinatura da AC emissora
sobre a chave pblica do servidor e outros parmetros do certificado. Se o cliente j no
possuir a chave pblica da AC, ele vai busc-la (em um repositrio de chaves pblicas
da AC). Se o certificado vlido, ento o cliente sabe que o servidor autntico.
A validao do certificado (e da chave pblica contida nele) abrange mais etapas
do que a mera verificao da assinatura da AC. Alm da verificao da assinatura, o
software de verificao precisa verificar se o certificado no atingiu o final de seu
perodo de validade, se no foi revogado e se o nome constante no certificado o

Figura 15: Fluxograma de validao de um certificado digital.

Livro-texto de Minicursos

27

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

mesmo da parte que alega ser a dona da chave pblica. O nome tambm deve ser obtido
de um terceiro confivel, por exemplo, de um servio de DNS, no caso de nomes de
domnio. A validao do certificado ilustrada no fluxograma da Figura 15.
A verificao da assinatura da AC em um certificado digital exige a chave
pblica da AC. Para ser confivel, a chave pblica da AC deve estar contida em um
certificado assinado por outra AC ou autoassinado, se for uma CA raiz. As verificaes
sucessivas de uma sequncia de assinaturas constroem uma hierarquia de certificados.
Os certificados na base da hierarquia so assinados pelas ACs de mais baixo nvel, cujos
certificados so assinados pelas ACs intermedirias, que tm seus certificados assinados
pelas ACs de alto nvel, cujos certificados so assinados pela AC raiz, que tem seus
certificados autoassinados. A Figura 16 ilustra esta cadeia de certificao.
Uma AC revoga um certificado nas seguintes situaes: quando ocorre erro na
emisso do certificado (nome grafado errado), ou o certificado foi emitido para uso de
um servio e o portador no tem mais acesso a ele (demisso de um funcionrio), ou a
chave privada do portador foi comprometida, ou ainda a chave privada da AC foi
comprometida (uma situao extrema). Uma Lista de Certificados Revogados (LCR) o
documento assinado digitalmente pela AC que lista o nmero de srie de todos os
certificados, ainda no expirados, que perderam a utilidade por algum dos motivos
acima. Um software criptogrfico pode consultar um servio de LCR para receber
atualizaes peridicas, em intervalos regulares definidos por procedimentos, ou ainda
consultar em tempo real se um certificado foi revogado ou no. Porm, a instabilidade
de comunicao pode causar indisponibilidade do servio de validao em tempo real.

Figura 16: Cadeia hierrquica de certificao digital.

Livro-texto de Minicursos

28

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.

Como no usar a criptografia: reconhecendo os maus usos

Esta seo organizada em torno dos maus usos de programao de criptografia que
levam a vulnerabilidades em softwares criptogrficos [13][17][18] e que tm sido
estudados recentemente [14][15][20]. Os maus usos so exemplificados por casos reais
e/ou ilustrados programaticamente por meio de programas em Java. Os maus usos
comuns de criptografia tratados no curso so os seguintes: criptografia determinstica
simtrica e assimtrica, IVs fixos ou reutilizados, sementes fixas ou reutilizadas para
PRNGs, troca indevida de modos de operao, combinao de integridade e encriptao,
reutilizao de chaves em encriptadores de fluxo, maleabilidade dos encriptadores de
fluxo, padding oracles e validao incorreta de certificados digitais. A utilizao de
chaves fracas (pequenas) e de algoritmos obsoletos ou quebrados no tratada aqui
como um mau uso programtico, mas sim uma configurao mal feita.

1.4.1. Criptografia determinstica simtrica


A criptografia determinstica simtrica caracterizada pelo uso indiscriminado do modo
de operao ECB juntamente com um encriptador simtrico, com ou sem padding. A
utilizao do modo ECB considerada um mau uso por que, quando utilizada
inadvertidamente, pode levar a revelao indevida de informao pela identificao de
padres do texto claro no criptograma. Neste caso, a facilidade com que a criptografia
determinstica pode ser utilizada tambm favorece o seu mau uso.
Em Java, este mau uso pode ser identificado j na instanciao do algoritmo
criptogrfico, por exemplo, pelo mtodo getInstance(a), da classe Cipher, em que a o
nome do algoritmo. H trs opes para resolver o nome do algoritmo a com o modo
ECB: (i) apenas o nome do algoritmo, por exemplo, "AES"; (ii) nome do algoritmo e
modo sem padding, por exemplo, "AES/ECB/NoPadding"; e (iii) nome do algoritmo e
modo com padding, por exemplo, "AES/ECB/PKCS7Padding". Vale observar que a
primeira opo leva naturalmente ao erro, uma vez que, na falta de uma escolha
explcita feita pelo programador, o modo ECB a opo padro implcita. A Sada 2
mostra o resultado da encriptao do texto claro Deterministica.. nas trs opes de
configurao do modo ECB, com o algoritmo AES e a mesma chave criptogrfica. Na
linha 04 pode ser observado que a encriptao do mesmo texto claro com os mesmos
parmetros de segurana produz o mesmo criptograma com padding que as outras
opes de encriptao determinstica (mostradas nas linhas 08 sem padding, e 11 com
padding explcito). O algoritmo AES foi utilizado apenas como ilustrao; o mesmo
resultado seria obtido com outros encriptadores de bloco nas mesmas configuraes de
chave e modo de operao. Vale lembrar que o modo ECB no necessita de IV.
Sada 2: Criptografia determinstica com AES no modo ECB.
01
02
03
04
05
06
07
08
09
10
11

Texto claro: Deterministica..


Chave
AES: C64539B4A9E992A077170C413FC02EB2
Encriptado com: AES
Criptograma: EAB196E34C4ED4B8C4261CACC243AC5E507D286A609456C69DA7CE68C844B89E
Encriptado com: AES/ECB/NoPadding
Criptograma: EAB196E34C4ED4B8C4261CACC243AC5E
Encriptado com: AES/ECB/PKCS7Padding
Criptograma: EAB196E34C4ED4B8C4261CACC243AC5E507D286A609456C69DA7CE68C844B89E

Livro-texto de Minicursos

29

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.2. Criptografia determinstica assimtrica


A criptografia determinstica assimtrica caracterizada pelo uso indiscriminado do
algoritmo RSA na sua forma cannica, isto , sem aleatorizao. Analogamente ao
modo ECB dos encriptadores simtricos de bloco, a utilizao do algoritmo RSA sem
padding aleatorizado considerada um mau uso porque, quando utilizada
inadvertidamente, pode levar a revelao indevida de informao pela identificao de
padres do texto claro no criptograma. Mais uma vez, a facilidade com que a
criptografia determinstica pode ser utilizada tambm favorece o seu mau uso [17].
Em Java, este mau uso pode ser identificado j na instanciao do algoritmo
criptogrfico, por exemplo, pelo mtodo getInstance(a), da classe Cipher, em que a o
nome do algoritmo. H trs opes para resolver o nome do algoritmo a para o RSA
cannico: (i) apenas o nome do algoritmo, por exemplo, "RSA"; (ii) nome do algoritmo
e modo ECB sem padding, por exemplo, "RSA/ECB/NoPadding"; e (iii) nome do
algoritmo, sem modo e sem padding, por exemplo, "RSA/None/NoPadding". Vale
observar que a primeira opo leva naturalmente ao erro, uma vez que, na falta de uma
escolha explcita, o RSA cannico a opo padro implcita.
A Sada 3 mostra o resultado da encriptao do texto claro Cripto
deterministica nas trs opes de configurao do RSA cannico e a mesma chave
criptogrfica de 512 bits (uma chave pequena til somente em exemplos). Este tamanho
de chave foi escolhido apenas para facilitar a apresentao do resultado e no tem
relao com este mau uso. Na linha 04 pode ser observado que a encriptao do mesmo
texto claro, com a mesma chave, pelo algoritmo identificado por RSA produz o
mesmo criptograma que as outras opes de encriptao determinstica com RSA e so
mostrados nas linhas 08, "RSA/ECB/NoPadding", e 12, "RSA/None/NoPadding. A
Sada 3 tambm mostra as duas implementaes de RSA aleatorizados disponveis no
provedor BouncyCastle: a verso mais antiga do padro PKCS#1 identificada por
RSA/None/PKCS1Padding e o PKCS#1 verso 2 conhecido como RSA-OAEP e
identificado por RSA/None/OAEPWithSHA1AndMGF1Padding. Ambos mostram
criptogramas diferentes no apenas entre si, mas tambm dos anteriores.
Sada 3: Criptografia determinstica assimtrica com RSA.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21

Texto claro: Cripto deterministica


Encriptado com: RSA
Criptograma: 6C77C92E46A4D7A110F3713D8B635BE7677E140CC607DEF342F10A8CD0AC00E7
E865439CF2501D6CDADAF8884CE4B61C6BA91E13225E5AB375A9DE2662059C3F
Encriptado com: RSA/ECB/NoPadding
Criptograma: 6C77C92E46A4D7A110F3713D8B635BE7677E140CC607DEF342F10A8CD0AC00E7
E865439CF2501D6CDADAF8884CE4B61C6BA91E13225E5AB375A9DE2662059C3F
Encriptado com: RSA/None/NoPadding
Criptograma: 6C77C92E46A4D7A110F3713D8B635BE7677E140CC607DEF342F10A8CD0AC00E7
E865439CF2501D6CDADAF8884CE4B61C6BA91E13225E5AB375A9DE2662059C3F
Encriptado com: RSA/None/PKCS1Padding
Criptograma: 6528EFA1281661E80D83728E5A1FEFDB55E45525DF9027C36784AF0BB375DB84
01767A45DD070B0A85FB31687785314A86C5DA89267259961EFF1D681891F08B
Encriptado com: RSA/None/OAEPWithSHA1AndMGF1Padding
Criptograma: 225EDA0DE625CF0F06400985FF1933F6F4457690F4513F4A0F4547B49A68F9C7
7CD600412BE0A4147D97DC030D3CAEF30FC47B8069A53540F818D36D61944ED6

Livro-texto de Minicursos

30

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.3. IVs fixos ou reutilizados


O mau uso chamado de reutilizao ou fixao dos Vetores de Inicializao (IVs)
caracterizado pela realizao de mais de uma encriptao com o mesmo IV, para a
mesma chave criptogrfica. A repetio de IVs com a mesma chave considerada um
mau uso por que pode levar identificao de padres do texto claro no criptograma.
Este mau uso facilmente identificado em programas de computador quando um valor
fixo para o IV est embutido no cdigo fonte. J ocorrncias cuja identificao mais
desafiadora so aquelas em que o IV obtido de modo indireto, por exemplo, de um
arquivo ou banco de dados, ao ainda computado a partir de algoritmos determinsticos,
como por exemplo, um PRNG de semente fixa.
A Sada 4 mostra o resultado da encriptao do texto claro Teste de IV
fixoTeste de IV fixo de 32 bytes (dois blocos do AES), com a mesma chave e IV. Para
cada modo de operao (CBC, OFB, CFB e CTR) foram feitas duas encriptaes sem
padding, para explicitar a repetio do padro. As linhas 05 e 06 mostram a repetio do
criptograma para o modo CBC. As linhas 10 e 11 mostram os criptogramas repetidos
para o modo OFB. As repeties de criptograma para os modos CFB e CTR so
mostradas nas linhas 14/15 e 18/19, respectivamente.
Um fato curioso dos encriptadores de bloco com comportamento de encriptador
de fluxo (OFB, CFB e CTR) que, para mesma chave e IV, o primeiro bloco do
criptograma de cada um deles idntico ao primeiro bloco dos outros dois. Isto ocorre
por que o criptograma do primeiro bloco gerado simplesmente pelo XOR do texto
claro com o IV encriptado com a chave, resultando sempre no mesmo valor quando h
coincidncia de parmetros. Esta coincidncia est marcada em vermelho na Sada 4.
Os modos de operao tm requisitos de gerao e uso de IVs que precisam ser
observados rigorosamente pelos programadores. Grosso modo, a boa prtica dita que um
IV nunca pode ser reutilizado com a mesma chave criptogrfica no mesmo modo de
operao. O modo CBC pode tolerar IVs pseudoaleatrios com pouqussima chance de
repetio. Os modos com comportamento de encriptadores de fluxo no toleram
qualquer repetio de IV. A consequncia da repetio a revelao de mais informao
do que padres simples no criptograma.
Sada 4: IV fixo ou reutilizado por diversos modos de operao do AES.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19

Texto claro: Teste de IV fixoTeste de IV fixo


Chave
: 4A5349A8E49B4606746DC97BFB541384
IV fixo
: 0123456789ABCDEF0123456789ABCDEF
Encriptado com: AES/CBC/NoPadding
Criptograma1: 5064DB4A860AD38218AC16BE3E18344CBAD4FAE1E36AE256411E51577F5B7116
Criptograma2: 5064DB4A860AD38218AC16BE3E18344CBAD4FAE1E36AE256411E51577F5B7116
Encriptado com: AES/OFB/NoPadding
Criptograma1: 7ED81E3D99B68CC0CEB3CC19733087BFAB503D40DFE8F7F552D59356EC269EFC
Criptograma2: 7ED81E3D99B68CC0CEB3CC19733087BFAB503D40DFE8F7F552D59356EC269EFC
Encriptado com: AES/CFB/NoPadding
Criptograma1: 7ED81E3D99B68CC0CEB3CC19733087BF2D319CE0873444D1461EBD1B34952570
Criptograma2: 7ED81E3D99B68CC0CEB3CC19733087BF2D319CE0873444D1461EBD1B34952570
Encriptado com: AES/CTR/NoPadding
Criptograma1: 7ED81E3D99B68CC0CEB3CC19733087BFC9D6A25699F4877074723804A740086E
Criptograma2: 7ED81E3D99B68CC0CEB3CC19733087BFC9D6A25699F4877074723804A740086E

Livro-texto de Minicursos

31

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.4. Sementes fixas ou reutilizadas para PRNGs


J foi mostrado anteriormente na seo 1.3 que bons geradores de nmeros
pseudoaleatrios produzem sequncias numricas que se comportam, para a maioria dos
usos prticos, como nmeros aleatrios de fato. Porm, as sequncias pseudoaleatrias
so geradas por algoritmos determinsticos, os PRNGs, cujo fluxo de execuo pode ser
reproduzido a partir da repetio dos parmetros de entrada. Quando PRNGs so
utilizados na gerao de IVs pseudoaleatrios, cuidados devem ser tomados para que
no ocorra a repetio dos IVs por causa de uma configurao insegura como, por
exemplo, o reuso de sementes fixas para o PRNG. Caso isto ocorra, um comportamento
semelhante ao do reuso de IVs pode ser observado na gerao dos criptogramas.
O Programa 10 ilustra a reutilizao de IVs a partir da fixao de semente em
um PRNG. O Programa 10 produz um resultado semelhante, mas no idntico, ao da
seo anterior, onde os IVs so reusados diretamente. As linhas 01 a 03 geram a chave
AES de 128 bits. As linhas 04 e 05 criam um array com os quatro modos de operao
CBC, OFB, CFB e CTR, sem padding. Para cada modo de operao, o lao iniciado na
linha 06 faz o seguinte: cria duas instncias (enc e dec) do AES no modo de operao
em questo, cria um PRNG do tipo SHA1PRNG e o configura sempre com a mesma
semente fixa, encripta o texto claro com a mesma chave e com o IV gerado
internamente pelo PRNG, e decripta com a mesma chave e IV gerado pelo PRNG.
Visto que o SHA1PRNG tem na semente a nica fonte de entropia para gerao
da sequncia pseudoaleatria, a fixao da semente na linha 12 elimina a aleatoriedade
da sequncia, que ser sempre a mesma. Este mau uso pode ser eliminado de duas
maneiras: a primeira simplesmente pela eliminao do comando setSeed() da linha 12,
o que permitiria ao SHA1PRNG usar sementes diferentes em cada nova instncia; a
segunda a substituio do SHA1PRNG por outro algoritmo que combine a semente
com outras fontes de entropia, como o caso do Windows-PRNG do sistema
operacional Windows ou o /dev/urandom nos sistemas Linux. Uma terceira opo seria
ainda combinar dois PRNGs, um para gerao de semente e outro para gerao da
sequncia pseudoaleatria.
Programa 10: Semente fixa ou reutilizada em PRNGs para gerao de IVs.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19

KeyGenerator g = KeyGenerator.getInstance("AES", "BC");


g.init(128);
Key k = g.generateKey();
String[] aes = {"AES/CBC/NoPadding","AES/OFB/NoPadding",
"AES/CFB/NoPadding","AES/CTR/NoPadding"};
for (int a = 0; a < aes.length; a++) {
Cipher enc = Cipher.getInstance(aes[a], "BC");
Cipher dec = Cipher.getInstance(aes[a], "BC");
byte[][] criptograma = new byte[2][];
for (int i = 0; i < 2; i++) {
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG","SUN");
sr.setSeed(U.x2b("0123456789ABCDEF0123456789ABCDEF"));
enc.init(Cipher.ENCRYPT_MODE, k, sr);
criptograma[i] = enc.doFinal(textoClaroAna);
dec.init(Cipher.DECRYPT_MODE,k,new IvParameterSpec(enc.getIV()));
byte[] textoClaroBeto = dec.doFinal(criptograma[i]);
}}

Livro-texto de Minicursos

32

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.5. Troca indevida de modos de operao


O mau uso por troca indevida de modos de operao decorrente de dois malentendidos sobre a utilizao de criptografia. O primeiro a noo incorreta de que os
modos de operao so intercambiveis. Isto , que um encriptador de fluxo como o
AES/OFB poderia substituir (erroneamente), sem qualquer alterao no software
criptogrfico, um encriptador de bloco como o AES/CBC. O segundo mal-entendido
est relacionado s consequncias do reuso de chaves e IVs em encriptadores de fluxo.
Em um encriptador de fluxo, como AES/OFB, onde M a mensagem em texto
claro, C o criptograma e o smbolo ^ a operao lgica de OU-exclusivo (XOR), o
fluxo de chaves K obtido por uma cadeia de encriptaes sucessivas do IV inicial.
Neste encriptador de fluxo, obtm-se o criptograma como K^M=C e a decriptao como
C^K=M. No caso de dois criptogramas C1=K1^M e C2=K2^N, obtm-se C1^C2 =
(K1^M)^(K1^N) = M^N.
Se, por exemplo, as chaves so reusadas (K1 = K2) e o texto claro M possui
partes fixas conhecidas, como o caso das mensagens com cabealhos, ento o texto
claro N pode ser facilmente descoberto. A Sada 5 exemplifica a recuperao do texto
claro N a partir da troca de um encriptador de bloco por um encriptador de fluxo em um
sistema criptogrfico que j estava mal configurado. Isto , havia o reuso de IVs no
modo CBC, cuja consequncia o reuso da chave no modo OFB. Na coluna da esquerda
o texto claro encriptado com AES/CBC, e na da direita com o AES/OFB.
No caso do CBC, a consequncia do reuso de IVs para uma mesma chave pode
ser menos prejudicial e geralmente pode passar despercebida por um longo tempo. Na
coluna da esquerda da Sada 5, com modo CBC, a operao C0^C1 com M0 conhecida
no capaz de revelar M1 diretamente. Como pode ser observado pelo resultado da
operao C0^C1^M0 em caracteres no imprimveis mostrados como ?. Por outro
lado, na coluna da direita, com modo OFB, M1 revelada pela aplicao direta da
operao C0^C1^M0, que resulta em M1. Este mau uso tambm pode ocorrer nos modos
de operao CFB e CTR e encriptadores de fluxo verdadeiros como o RC4, podendo ser
evitado pela utilizao de um modo de encriptao autenticada, como o GCM com uma
gesto rigorosa de IVs, conforme ilustrado na prxima seo.
Sada 5: Troca indevida de encriptador de bloco (AES/CBC) por um de fluxo (AES/OFB).
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19

M[0] = Troca a cifra de


M[1] = bloco por fluxo.

M[0] = Troca a cifra de


M[1] = bloco por fluxo.

K = 00112233445566778899AABBCCDDEEFF

K = 00112233445566778899AABBCCDDEEFF

Encriptado com: AES/CBC/NoPadding

Encriptado com: AES/OFB/NoPadding

C[0] =8C61DC63FF9682588910E6FF77866E58

C[0] =29CF058FFD0543D255888BC1A12F33DD

iv[0]=BB3E5CFEDD9A5E6F666AC3ACB3D56D1C

iv[0]=BB3E5CFEDD9A5E6F666AC3ACB3D56D1C

C[1] =00D0625EC980B1FD965931601CE279C3

C[1] =1FD1058FF305529D44C18BDFB5773896

iv[1]=BB3E5CFEDD9A5E6F666AC3ACB3D56D1C

iv[1]=BB3E5CFEDD9A5E6F666AC3ACB3D56D1C

C0^C1 = k^M0^K^M1 = M0^M1 =


=8CB1BE3D361633A51F49D79F6B64179B

C0^C1 = k^M0^K^M1 = M0^M1 =


=361E00000E00114F1149001E14580B4B

M0^M1^M0 = M1 = ????????????????

M0^M1^M0 = M1 = bloco por fluxo.

Livro-texto de Minicursos

33

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.6. Reutilizao de chaves em encriptadores de fluxo


O reuso de chave em um encriptador de fluxo e a existncia de partes fixas, como
cabealhos, nos textos claros, podem viabilizar a descoberta de textos claros. Esta
situao foi mostrada na seo anterior pelo reuso de IVs na gerao do fluxo de chaves.
Em um canal de comunicao bidirecional protegido por um encriptador de fluxo e uma
chave secreta compartilhada, no basta que cada parte comunicante produza de modo
nico e imprevisvel o seu IV. De fato, O IV deve ser nico tambm no canal de
comunicao e, por isto, combinado entre as partes para que no haja repetio. Em um
caso recente [34], o mau uso de um encriptador de fluxo conhecido, o algoritmo RC4,
em um protocolo de comunicao segura permitiu a decriptao de mensagens
encriptadas trocadas entre dois usurios de um aplicativo de comunicao instantnea. A
vulnerabilidade consistiu na reutilizao do fluxo de chaves para encriptar mensagens
nas duas direes do canal de comunicao protegido pelo encriptador de fluxo.
O trecho de cdigo do Programa 11 mostra como Ivo pode descobrir o contedo
de um criptograma de Beto a partir de uma mensagem indevidamente revelada por Ana
em um sistema criptogrfico mal configurado com repetio de IVs. As linhas de 01 a
07 contm as configuraes comuns a Ana e a Beto. Ana encripta nas linhas 09 e 10 e
Beto encripta nas linhas 13 e 14. Ivo monitora a comunicao e l os criptogramas de
Ana e de Beto. Ivo (por exemplo, com engenharia social ou reversa) descobre o texto
claro de Ana. Neste momento, Ivo usa as relaes lgicas entre os criptogramas, a chave
e os textos claros para recuperar o criptograma de Beto (linha 18).
Esta vulnerabilidade causada pelo mau uso do encriptador de fluxo pode ser
evitada pela gesto compartilhada de IVs, em que cada parte comunicante gera o seu IV
em um intervalo de valores diferente do utilizado pela outra parte, evitando deste modo
a repetio do IV e o consequente reuso do fluxo de chaves. Por exemplo, em um IV de
128 bits, 1 bit pode identificar a parte comunicante (por exemplo, quem cria a chave usa
o valor 1) e os 127 bits restantes podem ser incrementados por um contador. A chave
deve ser trocada antes que qualquer lado atinja o limite do contador, evitando assim a
repetio do IV para a mesma chave.
Programa 11: Reutilizao de chaves em um encriptador de fluxo com AES/CTR.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18

// Configuraes comuns para Ana e Beto


byte[][] M = {("Reuso de chave d").getBytes(),
("a Cifra de fluxo").getBytes()};
byte[][] iv = {U.x2b("0123456789ABCDEF0123456789ABCDEF"),
U.x2b("0123456789ABCDEF0123456789ABCDEF")};
SecretKeySpec ks = new SecretKeySpec(k, "AES");
Cipher enc = Cipher.getInstance("AES/CTR/NoPadding", "BC");

01
02

//C0^C1 = k^M0^K^M1 = M0^M1 = 3345361A09520545440648071A10580B


//Resultado: M0^M1^M0 = M1 = a Cifra de fluxo

// Ana encripta
enc.init(Cipher.ENCRYPT_MODE,ks,new IvParameterSpec(iv[0]));
C[0] = enc.doFinal(M[0]);
//Beto Encripta tambm
enc.init(Cipher.ENCRYPT_MODE, ks, new IvParameterSpec(iv[1]));
C[1] = enc.doFinal(M[1]);
// Ivo realiza o ataque
byte[] M0xorM1 = U.xor(C[0],C[1]); byte[] M1 = U.xor(M[0], M0xorM1);

Livro-texto de Minicursos

34

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.7. Maleabilidade indevida dos encriptadores de fluxo


Os criptogramas produzidos por sistemas criptogrficos exclusivamente para sigilo, sem
mecanismos de verificao de integridade e autenticidade, no possuem garantias de
integridade e esto sujeitos a corrupes acidentais ou maliciosas. Em particular, os
criptogramas gerados pelos encriptadores de fluxo so maleveis e podem ser
intencionalmente modificados de modo a produzir alteraes controladas no texto claro.
Seja C = M^K o criptograma de Ana obtido pelo XOR do fluxo de chaves K com
o texto claro M. Aqui K foi bem construdo e no reutilizado. Ivo no precisa conhecer
K. Porm, M possui estrutura e partes do contedo conhecidas por Ivo e, por isto, ele
consegue realizar com preciso as modificaes desejadas. Ivo deseja alterar M para o
valor N a partir de mudanas controladas sobre C. Ivo calcula a mudana X = M^N. Ivo
intercepta C em trnsito, calcula o criptograma modificado Y = C^X e envia Y para
Beto. Beto recebe Y e calcula Y^K = (C^X)^K = (M^K)^(M^N)^K = (M^M)^(K^K)^N =
1^1^N = N. Desta forma, Beto obtm apenas o texto claro falsificado N.
O trecho de cdigo do Programa 12 mostra como criptogramas produzidos com
o AES/CTR podem ser modificados, resultando em textos claros falsos, porm de
contedo vlido no contexto da aplicao. Ana e Beto usam o mesmo encriptador de
fluxo da linha 02. A mensagem de Ana para Beto composta de dois blocos de texto
claro, na linha 05, em que Ana faz uma transferncia de valor para Carlo. Nas linhas de
07 a 10 os blocos do criptograma so gerados conforme pretendido por Ana e Beto.
Vale dizer que o IV do segundo bloco incrementado de um, para evitar a repetio.
Nas linhas 14 a 17, Ivo realiza seu ataque. Primeiro, ele inclui seu nome na
mensagem do seguinte modo. Nas linhas 14 e 15, Ivo calcula X = Carlo^ Ivo e C0
= C0^X. Em seguida, nas linhas 16 e 17, Ivo aumenta o valor da mensagem calculando X
= 010.000,00^ 100.998,54 e, em seguida, C1 = C1^X. O resultado recebido por
Beto so os blocos da mensagem falsa Ana para Ivo e Valor:100.998,54.
Programa 12: Maleabilidade dos encriptadores de fluxo com AES/CTR.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17

// Configuraes comuns para Ana e Beto


Cipher c = Cipher.getInstance("AES/CTR/NoPadding", "BC");

01
02
03

// Resultado: Ivo o novo recebedor de um valor muito mais alto


// Resultado: N[0] =Ana
para
Ivo
// Resultado: N[1] =Valor:100.998,54

// A mensagem composta de dois blocos de texto claro


byte[][]M = {("Ana
para Carlo").getBytes(),
("Valor:010.000,00").getBytes()};
for (int i= 0; i < M.length; i++){
c.init(Cipher.ENCRYPT_MODE,ks,new IvParameterSpec(iv[i]));
C[i] = c.doFinal(M[i]);
}
//Ivo realiza o ataque
X = U.xor("Ana
para Carlo".getBytes(),
"Ana
para
Ivo".getBytes()); C[0] = U.xor(C[0], X);
X = U.xor("Valor:010.000,00".getBytes(),
"Valor:100.998,54".getBytes()); C[1] = U.xor(C[1], X);

Livro-texto de Minicursos

35

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.8. Combinao de integridade e encriptao


O mau uso descrito na seo anterior no pode ser evitado somente pela verificao de
integridade da mensagem. De fato, hashes no so capazes de detectar a corrupo
maliciosa de mensagens maleveis. Esta ideia incorreta constitui outro mau uso da
criptografia. O trecho de cdigo do Programa 13 mostra como a combinao de
encriptao com verificao de integridade por hash no suficiente para proteger um
criptograma malevel contra modificaes intencionais e maliciosas. As linhas 01 a 04
contm as configuraes do sistema criptogrfico para Ana e Beto. Neste exemplo vale
ressaltar a funo de resumo criptogrfico SHA256 na linha 03. A encriptao feita
com AES/CTR.
Nas linhas 06 a 09, Ana inicializa as funes de hash e de encriptao, computa
o criptograma do texto claro e calcula o hash do criptograma. Esta tcnica conhecida
como Encrypt-then-Hash (EtH). Nas linhas 11 a 15, Ivo intercepta a mensagem de Ana
para Beto, e se aproveita da maleabilidade do encriptador de fluxo para modificar o
criptograma, de modo a incluir seu prprio nome no lugar do nome de Beto no texto
claro. Alm disso, Ivo recalcula o hash sobre o novo criptograma e o envia, junto com o
novo criptograma, para Beto.
Nas linhas 17 a 20, ao receber a mensagem com o criptograma e o hash, Beto
inicializa as funes de hash e de encriptao, calcula o hash sobre o criptograma e
compara o hash calculado com o hash recebido. Uma vez que estes dois valores so
iguais, Beto decripta o criptograma e obtm o texto claro. Neste exemplo, Beto foi
incapaz de detectar a modificao maliciosa do texto claro feita por Ivo, uma vez que
Ivo tambm substituiu o hash de verificao de integridade. Felizmente este mau uso
facilmente corrigido pela utilizao de encriptao autenticada, em que a funo de
encriptao pode ser combinada com uma funo de MAC, como por exemplo, o
HMACSHA256, ou ento substituda por uma nica funo de encriptao autenticada,
como por exemplo, o AES/GCM.
Programa 13: Combinao de interidade e encriptao com SHA256 e AES/CTR.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20

// configuraes do sistema criptogrfico para Ana e Beto


Cipher c = Cipher.getInstance("AES/CTR/NoPadding", "BC");
MessageDigest md = MessageDigest.getInstance("SHA256", "BC");
byte[] textoclaroAna = "De Ana para Beto".getBytes();
//Ana calcula o hash do criptograma: Encrypt-then-Hash(EtH)
md.reset(); c.init(Cipher.ENCRYPT_MODE,sks,ivps);
byte[] criptograma = c.doFinal(textoclaroAna);
byte[] hash = md.digest(criptograma);
//Ataque: Ivo modifica o criptograma e recalcula o hash
X = U.xor("De Ana para Beto".getBytes(),
"De Ana para Ivo".getBytes());
criptograma = U.xor(criptograma, X);
hash = md.digest(criptograma);
// decriptao pelo Beto com verificao da hash
md.reset(); c.init(Cipher.DECRYPT_MODE,sks,ivps);
if (MessageDigest.isEqual(md.digest(criptograma), hash))
{ textoclaroBeto = c.doFinal(criptograma);}

Livro-texto de Minicursos

36

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.9. Combinao manual de MAC e encriptao


A encriptao autenticada pode ser obtida manualmente pela combinao programtica
das funes de encriptao e autenticao. Em geral, existem trs mtodos para fazer a
combinao das funes de MAC e encriptao, que se diferenciam em relao ao dado
sobre o qual a tag de autenticao calculada, conforme a seguir:
Encrypt-then-MAC (EtM): encripta ento autentica. Este mtodo calcula a tag de
autenticao sobre o criptograma e a tag no encriptada;
Encrypt-and-MAC (E&M): encripta e autentica. Este mtodo calcula a tag de
autenticao sobre o texto claro e a encriptao feita somente sobre o texto
claro e a tag no encriptada;
MAC-then-Encrypt (MtE): autentica ento encripta. Este mtodo calcula a tag de
autenticao sobre o texto claro e depois encripta o texto claro e a tag.
O primeiro mtodo, encripta ento autentica, considerado o mais seguro e foi
exemplificado na seo anterior. Uma das vantagens do mtodo EtM que ele no
revela informao sobre a integridade de formao do texto claro, uma vez que a tag foi
calculada sobre o criptograma. Por isto, este mtodo no vulnervel ao ataque de
padding oracle. A combinao manual pode ser substituda por uma nica funo de
encriptao autenticada, como o AES/GCM. O trecho de cdigo do Programa 14 mostra
os outros dois mtodos: encripta e autentica (E&M) e autentica ento encripta (MtE). As
configuraes do sistema criptogrfico esto nas linhas de 01 a 05. Duas chaves
criptogrficas so necessrias, uma para o AES/CTR e outra para o HMACSHA256.
O mtodo encripta e autentica mostrado nas linhas de 07 a 11. O criptograma
computado na linha 10 e a tag calculada sobre o texto claro na linha 11. A verificao
da tag requer a decriptao do criptograma. O mtodo autentica ento encripta
mostrado nas linhas de 13 a 18. A tag calculada sobre o texto claro na linha 16, a tag
concatenada ao final do texto claro, linha 17, formando o pacote sobre o qual o
criptograma computado, na linha 18. A verificao da tag requer a decriptao do
criptograma e a separao entre texto claro e tag. Nestes dois mtodos, a verificao de
integridade do texto claro determinstica e revela a repetio de um texto claro.
Programa 14: Encriptao autenticada manual com Encrypt-and-MAC e MAC-then-Encrypt.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18

//configuraes do sistema criptogrfico


SecretKeySpec sks1 = new SecretKeySpec(k, "AES");
SecretKeySpec sks2 = new SecretKeySpec(k, "HMACSHA256");
Cipher c = Cipher.getInstance("AES/CTR/NoPadding", "BC");
Mac m = Mac.getInstance("HMACSHA256", "BC");
// encripta e autentica: Encrypt-and-MAC (E&M)
m.init(sks2);
c.init(Cipher.ENCRYPT_MODE, sks1, new IvParameterSpec(iv));
criptograma = c.doFinal(textoclaroAna);
tag = m.doFinal(textoclaroAna);
// autentica entao encripta: MAC-then-Encrypt (MtE)
m.init(sks2);
c.init(Cipher.ENCRYPT_MODE, sks1, new IvParameterSpec(iv));
tag = m.doFinal(textoclaroAna);
byte[] pacote = Arrays.concatenate(textoclaroAna,tag);
criptograma = c.doFinal(pacote);

Livro-texto de Minicursos

37

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.10. Tempo varivel na verificao de hashes e MACs


Os maus usos criptogrficos podem levar a vazamentos de informao por canais
laterais (side-channels em ingls). Um canal lateral (de tempo) alimentado pelas
variaes de tempo das computaes sobre valores criptogrficos. Por exemplo, quando
a comparao de hashes ocorre em tempo varivel, as pequenas variaes de tempo na
comparao revelam onde est a diferena entre valores comparados e podem ser
utilizadas por Ivo para deduzir o valor de hash original. Para evitar este vazamento de
informao, a comparao de hashes e MACs deve ser realizada em tempo constante e
independente de onde ocorre a primeira diferena entre os valores comparados.
O trecho de cdigo do Programa 15 mostra como possvel medir a diferena de
tempo de comparao entre dois hashes de 64 bytes do SHA512. O lao da linha 05
percorre os 64 bytes do hash calculado, que modificado no ndice i (na linha 08). A
comparao feita pelo mtodo Arrays.areEqual() que tem tempo varivel. O resultado
da tomada de tempo mostrado na Figura 17, onde se percebe que o tempo de
comparao aumenta com o ndice i da primeira diferena entre valores comparados. J
os mtodos MessageDigest.isEqual() e Arrays.ConstTimeAreEqual() oferecem tempos
constantes, com vantagem de desempenho para o primeiro.
Programa 15: Tempo varivel na verificao de hashes com SHA512.
01
02
03
04
05
06
07
08
09
10
11
12
13

MessageDigest md = MessageDigest.getInstance("SHA512", "BC");


boolean ok; long t1, t2; long t[] = new long[64];
byte[] hash1 = md.digest(textoClaro.getBytes());
for (int i = 0; i < t.length; i++) { // 64 bytes
md.reset();
byte[] hash2 = md.digest(textoClaro.getBytes());
hash2[i] = (byte) (hash2[i] ^ 0x01);
t1 = System.nanoTime();
ok = Arrays.areEqual(hash2, hash1);
t2 = System.nanoTime();
t[i] = t2 - t1;
}

Figura 17: Comparao de hashes com tempo varivel e com tempo constante.

Livro-texto de Minicursos

38

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.11. Padding oracles do modo CBC


A vulnerabilidade de padding oracle (orculo de preenchimento, em uma traduo livre)
do modo CBC um tipo de canal lateral conhecido pelos criptlogos desde 2002 [35],
mas que s recentemente foi explorado em ataques reais a sistemas web [33][36].
Grosso modo, o padding oracle um algoritmo que, ao receber um criptograma
qualquer como entrada, retorna um nico bit de informao sobre a validade do padding
que completa o texto claro correspondente. Isto , se o padding vlido, o orculo
retorna 1 ou true (verdadeiro); se ele no vlido, o orculo retorna 0 ou false (falso).
Ao usar estas respostas sobre a validade do texto claro, um adversrio pode deduzir
valores retornados pela funo de decriptao.
Chama-se de vulnerabilidade do padding oracle a este vazamento de um bit da
funo de decriptao que, ao tentar decriptar qualquer criptograma, emitir uma
mensagem de erro informando quando o padding invlido. Este vazamento de um bit
pode ser utilizado iterativamente para descobrir todos os bytes de um texto claro,
geralmente ao custo de apenas alguns milhares de iteraes. Geralmente, a funo de
decriptao executada mesmo que no retorne o texto claro para o adversrio.
Entretanto, ela deve informar se o texto claro tem um padding vlido. Em situaes
extremas, o padding oracle serve no apenas como meio para ataques de decriptao de
mensagens, mas tambm como bloco de construo para orculos de encriptao.
O trecho de cdigo do Programa 16 exemplifica um padding oracle simples. O
orculo recebe como entrada dois blocos de dados, o iv e o criptograma c (linha 01) e
retorna true se a decriptao for bem sucedida. A decriptao de c realizada (linha 06),
mas no retornada. Na linha 07, o orculo trata a exceo de preenchimento ruim
(BadPaddingException) do texto claro e retorna o valor false se ela ocorrer. Para
este exemplo, todas as outras excees so ignoradas. O valor lgico retornado na linha
12 suficiente para a realizao do ataque.
O diagrama de sequncia da Figura 18 ilustra a implementao do ataque de
padding oracle do modo CBC. Primeiro, o atacante Ivo obtm um criptograma e um IV
conhecido e, iterativamente, modifica o byte menos significativo do IV e submete IV e c
ao orculo para descobrir o valor do padding. Em seguida, Ivo, mais uma vez pela
manipulao do IV, modifica iterativamente o padding descoberto para decriptar, byte a
byte, o criptograma, fazendo questionamentos repetidos ao orculo. Padding oracles
como este j foram encontrados em diversos softwares criptogrficos [33][36].
Programa 16: Padding oracle do modo CBC.
01
02
03
04
05
06
07
08
09
10
11
12

public static boolean oracle(byte[] iv, byte[] c) {


boolean ok = true;
try {
Cipher c = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
c.init(Cipher.DECRYPT_MODE, ks, new IvParameterSpec(iv));
c.doFinal(c); // ignora a sada do doFinal()!!!!
} catch (BadPaddingException e) { ok = false;
} catch (NoSuchAlgorithmException | NoSuchProviderException |
NoSuchPaddingException | InvalidKeyException |
InvalidAlgorithmParameterException |
IllegalBlockSizeException ex) { /* ignora!! */}
return ok;}

Livro-texto de Minicursos

39

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 18: Diagrama de sequncia (UML) do ataque de padding oracle do modo CBC.

Existem trs maus usos criptogrficos que podem ser diretamente associados s
causas da vulnerabilidade de padding oracle:
O uso de encriptao no autenticada em canais de comunicao, de modo que
criptogramas injetados pelo adversrio no canal sejam considerados vlidos;
Composio de encriptao e autenticao com os mtodos MAC-then-Encrypt
ou MAC-then-(pad-then)-Encrypt, de modo que a proteo de integridade s
aplicada sobre o texto claro (e o padding) e no sobre o criptograma, permitindo
ao adversrio a manipulao do criptograma para inferir a validade do padding;
O uso de IVs fixos ou previsveis com o modo CBC, de modo que ataques de
decriptao possam ser montados a partir da previso dos IVs.
Estes maus usos podem ser resolvidos pela adoo compulsria da autenticao
em conjunto com a encriptao, que tambm protege a integridade. Ainda, ela precisa
ser aplicada de maneira correta, sobre o criptograma completo, em vez de sobre o texto
claro. Alm disso, a funo atmica de encriptao autenticada elimina a necessidade de
combinao programtica explcita de encriptao e autenticao, reduzindo a chance de
erros. Finalmente, a ltima contramedida para eliminar este canal lateral a inibio de
mensagens de erro relacionadas validao de integridade sobre o texto claro nas
computaes que fazem decriptao em protocolos de comunicao.

Livro-texto de Minicursos

40

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.4.12. Validao incompleta de certificados digitais


A validao de certificados digitais em softwares criptogrficos relativamente bem
estruturada e confivel, uma vez que as falhas de programao mais comuns no uso de
certificados digitais j foram identificadas e solucionadas. Conforme discutido
anteriormente, os quatro pontos mais importantes na validao do certificado digital so
a confirmao do nome do sujeito ou usurio, a verificao da assinatura digital presente
no certificado (e a consequente verificao da cadeia de certificao), a verificao da
data de expirao e a presena do nmero do certificado em uma lista de revogao.
Em softwares criptogrficos em geral, e nos aplicativos mveis em especial,
existe uma variedade grande de bibliotecas para estabelecimento de conexes SSL/TLS.
De acordo com estudos recentes [16][19], todas elas permitem que o programador
desabilite um ou outro item na verificao do certificado, para fins de desenvolvimento.
Porm, h risco da configurao desabilitada ser implantada acidentalmente em
ambiente de produo. Em particular, a no verificao da assinatura ou da cadeia de
certificao facilita o ataque do intermedirio malicioso (Man-in-The-Middle MiTM).
A vulnerabilidade Heartbleed [31] descoberta no cdigo da extenso do TLS em
abril de 2014 e presente no software criptogrfico OpenSSL [40] um exemplo de
como defeitos comuns podem resultar em vulnerabilidades graves nos softwares
criptogrficos. A vulnerabilidade foi causada pela falta de verificao dos limites em um
buffer em que o nonce armazenado pelo protocolo Heartbeat. Na linguagem C, o
tamanho do buffer desvinculado da varivel que registra este seu tamanho. A falta de
consistncia entre tamanho do buffer e a varivel que registra o tamanho pode ser
explorada por meio de leitura estendida de posies de memria alm do tamanho real
do buffer. Este defeito de programao insegura simples, quando presente em um
protocolo de comunicao, como foi o caso do protocolo Heartbeat, possibilitou a
leitura de regies de memria do processo do OpenSSL, no servidor, em que eram
mantidas diversas informaes sensveis tais como chaves de sesso, senhas de usurio
e at chaves privadas de servidores, facilitando os ataques MiTM.
Outra vulnerabilidade recente [32] mais um defeito do OpenSSL descoberto no
sistema operacional iOS da Apple em fevereiro de 2014. O defeito consistiu de duas
sentenas goto fail consecutivas e sem chaves delimitadoras colocadas depois de uma
clusula condicional (if). Este cdigo resultou em um salto incondicional para a
sentena rotulada de fail. Este defeito ocorreu em um ponto crtico do estabelecimento
de sesso do SSL, na verificao de uma assinatura digital; por causa do defeito, passou
a ser considerada sempre bem sucedida, mesmo na ocorrncia de certificados invlidos
ou assinatura inexistente, mais uma vez favorecendo o ataque MiTM.
Estas vulnerabilidades poderiam ter sido facilmente identificadas pela aplicao
de tcnicas comuns de auditoria de cdigo fonte, manuais ou at automticas. Por outro
lado, as vulnerabilidades poderiam nunca ter ocorrido se linguagens de programao
com tipos fortes tivessem sido utilizadas. Para ilustrao, o software de infraestrutura de
chaves pblicas EJBCA [37], escrito em Java e que utiliza biblioteca criptogrfica
BouncyCastle, tambm em Java, so imunes s vulnerabilidades de leitura de buffer
alm dos limites, que causaram a vulnerabilidade Heartbleed.

Livro-texto de Minicursos

41

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.5.

Por dentro de um encriptador de blocos

Este seo ilustra a construo de uma implementao do algoritmo AES conforme a


especificao [23], em que so destacados os aspectos necessrios para utiliz-la como
um encriptador de blocos [26]. Alm disso, so tratadas otimizaes algortmicas e de
cdigo, automao de testes funcionais [24] e anlise de segurana da implementao.

1.5.1. O algoritmo AES


A estrutura de dados principal do AES o square, uma matriz 4x4 de clulas de 1 byte
cada, totalizando 128 bits. Todas as operaes do AES so realizadas sobre esta matriz.
Computaes tambm so feitas sobre palavras de quatro bytes. Uma palavra uma
linha ou uma coluna da matriz. O conjunto de valores correntes da matriz chamado de
estado. Cada rodada do AES usa uma subchave de 128 bits derivada da chave principal
por meio de um mecanismo de expanso de chaves. O AES trabalha com trs tamanhos
de chaves: 128, 192 e 256 bits. O lao principal do AES possui 10,12 ou 14 rodadas,
conforme o tamanho da chave. O Programa 17 mostra a funo de encriptao do AES,
com as operaes sobre a estrutura de estado: adio da chave da rodada, a substituio
de bytes, a rotao de linhas, e a mistura de colunas. A decriptao anloga, com as
operaes inversas.

1.5.2. Modos de operao e padding


A implementao crua do AES de pouca utilidade prtica. A fim de torn-la til
necessrio acrescentar as construes necessrias para torn-la um encriptador de bloco:
modos de operao e esquema de padding do texto claro, para que este tenha o tamanho
de um mltiplo do tamanho do bloco do algoritmo de encriptao. Em um encriptador
de bloco, a operao de encriptao insere o padding e em seguida encripta com o modo
de operao determinado. A operao de decriptao decripta com o modo de operao
correspondente e em seguida remove o padding, conforme visto no Programa 18 (linhas
01 a 15). As linhas 17 a 55 mostram os modos de operao ECB (17 a 25), CBC (27 a
41) e CTR (43 a 54) [26]. O padding PKCS#5/PKCS#7 [21] est a partir da linha 58.

Programa 17: Funo de encriptao do AES.


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16

public void encrypt(byte[] in, byte[] out) {


wCount = 0;
byte[][] state = new byte[4][Nb];
Util.toState(state, in);
addRoundKey(state);
for (int round = 1; round < Nr; round++) {
subBytes(state);
shiftRows(state);
mixColumns(state);
addRoundKey(state);
}
subBytes(state);
shiftRows(state);
addRoundKey(state);
Util.fromState(out, state);
}

Livro-texto de Minicursos

42

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Programa 18: Modos de operao e padding de um encriptador de bloco.


01 public byte[] doCipher(byte[] in){
02
byte[] inPadded = null, outPadded = null, out = null;
03
if (padding){
04
if(enc==ENCRYPT) {inPadded = doPadding(in);}
05
if(enc==DECRYPT) {inPadded = in;}
06
} else { inPadded = in;}
07
outPadded = new byte[inPadded.length];
08
if (this.opMode == ECB) {doECB(inPadded,outPadded);}
09
else if (this.opMode == CBC) {doCBC(inPadded,outPadded);}
10
else if (this.opMode == CTR) {doCTR(inPadded,outPadded);}
11
if (padding){
12
if (enc == ENCRYPT) { out = outPadded; }
13
if (enc == DECRYPT) { out = undoPadding(outPadded);}
14
} else { out = outPadded;} return out;
15 }
16
17 private void doECB(byte[] in, byte[] out) {
18
int numBlocks = (int)(in.length/blockSize);
19
for (int i = 0; i < numBlocks; i++) {
20
int offset = i * blockSize;
21
for (int j=0; j<blockSize; j++) { inBlock[j] = in[offset+j];}
22
if
(enc == ENCRYPT) { aes.encrypt(inBlock, outBlock);}
23
else if (enc == DECRYPT) { aes.decrypt(inBlock, outBlock);}
24
for (int j=0; j<blockSize; j++) {out[offset+j] = outBlock[j];}
25 }}
26
27 private void doCBC(byte[] in, byte[] out) {
28
int numBlocks = (int)(in.length/blockSize);
29
byte[] inX = new byte[blockSize], outX = new byte[blockSize];
30
for (int i=0; i<numBlocks; i++) {
31
int offset = i * blockSize;
32
for (int j=0; j<blockSize; j++) {inBlock[j] = in[offset+j];}
33
if (i == 0) {copy(iv,outX);}
34
if (enc == ENCRYPT) {
35
xor(inBlock,outX,inX);
36
aes.encrypt(inX,outBlock);
37
copy(outBlock,outX);}
38
if (enc == DECRYPT) {
39
aes.decrypt(inBlock, inX);
40
xor(inX,outX,outBlock);
41
copy(inBlock,outX)
;}
42
for (int j=0; j<blockSize; j++) {out[offset+j] = outBlock[j];}
43 }}
44
45 private void doCTR(byte[] in, byte[] out) {
46
int numBlocks = (int)(in.length/blockSize), sizeCTR = blockSize/2;
47
byte[] inCTR = new byte[blockSize], outCTR = new byte[blockSize];
48
for (int i = 0; i < numBlocks; i++) {
49
int offset = i * blockSize;
50
for (int j=0; j<blockSize; j++) {inBlock[j] = in[offset+j];}
51
if (i == 0) {copy(iv,inCTR);}
52
else {standardIncrement(inCTR,sizeCTR);}
53
if (enc == ENCRYPT || enc == DECRYPT)
54
{ aes.encrypt(inCTR, outCTR); xor(outCTR,inBlock,outBlock);}
55
for(int j=0; j<blockSize; j++) {out[offset+j] = outBlock[j];}
56 }}
57
58 private byte[] doPadding(byte[] in){
59
byte pad[] = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
60
byte val
= (byte) (in.length%blockSize);
61
int numBlocks = (int)(in.length/blockSize);
62
byte[] padded = new byte[(numBlocks+1)*blockSize];
63
for(int i=0; i<in.length; i++){padded[i] = in[i];}
64
for(int i=in.length; i<padded.length; i++){padded[i]=(byte)pad[val];}
65
return padded;
66 }
67 private byte[] undoPadding(byte[] padded){
68
byte[] out = new byte[padded.length - padded[padded.length-1]];
69
for(int i=0; i<out.length; i++){ out[i]=padded[i];} return out;}
c
Livro-texto de Minicursos
43
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Programa 19: Dois mtodos de multiplicao.


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17

public byte FFMul(byte a, byte b) {


byte aa = a, bb = b, r = 0, t;
while (aa!=0){
if ((aa&1) != 0) {r = (byte)(r^bb);}
t = (byte) (bb&0x80); bb =(byte)(bb << 1);
if (t != 0) {bb =(byte) (bb^0x1b);}
aa =(byte)((aa & 0xff) >> 1);
}
return r;
}
public byte FFMulFast(byte a, byte b) {
int t = 0;
if (a == 0 || b == 0) { return 0;}
t = (L[(a & 0xff)] & 0xff) + (L[(b & 0xff)] & 0xff);
if (t > 255) { t = t - 255;}
return E[(t & 0xff)];
}

1.5.3. Otimizao da implementao do algoritmo AES


A implementao do AES sofreu otimizaes algortmicas e de cdigo. A substituio
do mtodo de multiplicao utilizado pelas operaes de encriptao e decriptao foi a
que resultou no maior ganho de desempenho, pois baixou a complexidade do algoritmo.
O mtodo convencional, com deslocamentos de bits, foi substitudo pelo mtodo mais
eficiente baseado em lookup de tabelas. O Programa 19 mostra os dois mtodos, o mais
lento (linhas 1 a 10) e o mais rpido (linhas 11 a 17).
Outras otimizaes realizadas foram a desenrolagem de laos dentro do fluxo de
controle do algoritmo e a pr-computao das tabelas. Nestas otimizaes de cdigo os
ganhos foram mais modestos. A Figura 19 mostra o ganho de desempenho acumulado
com as otimizaes combinadas: sem otimizao, otimizao algortmica (multiplicao
rpida) e otimizaes de cdigo. A figura mostra os tempos, em milissegundos, de
encriptao e decriptao para trs implementaes, nos trs tamanhos de chave. A
otimizao algortmica ofereceu a maior contribuio no desempenho final. A
decriptao mais lenta por causa da inverso modular na decriptao.
(1) AES padro

(2) Otimiz. algortmica em 1

(3) Otimiz. cdigo em 2

Tempo (milisegundos)

0,009

0,008
0,007
0,006
0,005
0,004
0,003
0,002
0,001
0
E128

E192

E256

D128

D192

D256

Encriptao (E) e Decriptao (D) para chaves de 128, 192 e 256

Figura 19: Tempos de encriptao e decriptao para trs implementaes do AES.


Livro-texto de Minicursos

44

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.5.4. Validao funcional com vetores de teste


A validao funcional de implementaes criptogrficas pode ser realizada com o
auxlio de vetores de teste criptogrficos, que so conjuntos de dados construdos com o
objetivo de avaliar a correo de implementaes criptogrficas em relao s normas e
especificaes. A correo funcional de uma implementao criptogrfica premissa
para a segurana desta implementao, uma vez que uma implementao incorreta no
oferece segurana. Porm, a validao no oferece uma medida da segurana da
implementao. Alm de ajudar a determinar a conformidade com as especificaes, a
validao pode detectar falhas de implementao, incluindo problemas com ponteiros, a
alocao insuficiente de memria, tratamento incorreto de erros e comportamentos
anmalos diversos na implementao avaliada.
Devido ao grande volume de dados envolvidos, os vetores de teste so utilizados
em testes automticos das implementaes criptogrficas. Para que a validao seja
vivel, o software criptogrfico deve permitir ao software de validao ter o controle
sobre os parmetros de entrada necessrios aos testes, por exemplo, por meio de uma
interface de programao (API). Se um software criptogrfico no permite o controle
dos parmetros de entrada, os testes no podem ser realizados satisfatoriamente.
Existem diversas bases ou vetores de teste para validao de implementaes de
algoritmos criptogrficos. Um conjunto de vetores de boa reputao o do NIST CAVP
[24]. Os vetores de testes devem ter uma amostragem estatstica, seno exaustiva, que
permita pelo menos a cobertura completa dos fluxos de controle do algoritmo. Quanto
melhor a cobertura da validao, maior ser a confiana na correo da implementao.
Alm disto, a validao de implementaes contra amostras diversas e atualizadas
uma boa prtica de teste de software. A Figura 20 conceitua a validao de algoritmos
com vetores de teste criptogrficos. Vale observar que em se tratando de algoritmos no
padronizados, geralmente o prprio criptlogo disponibiliza os vetores de teste.

Figura 20: O conceito de validao de algoritmos criptogrficos com vetores de teste.

Livro-texto de Minicursos

45

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.5.5. Anlise de segurana da implementao


Neste ponto, supe-se que a implementao tenha passado pelos testes de validao e
possa ser considerada, em certa medida, aderente sua especificao com uma
confiana justificada pela cobertura ou abrangncia da validao. Isto, porm, no
significa que a implementao seja segura. Em particular, a implementao est sujeita
s vulnerabilidades dos sistemas criptogrficos e de computao em que ser utilizada.
Conforme visto anteriormente, existem diversas maneiras de usar mal um
encriptador de blocos. Por exemplo, o modo ECB determinstico e est sujeito
repetio de padres, enquanto o modo CBC est sujeito ao mau uso de IVs e,
combinado ao padding PKCS#7, vulnervel ao ataque por canal lateral conhecido
como padding oracle. J o modo CTR seriamente afetado pelo reuso de IVs.
Alm de variaes do tempo de execuo, ataques por canais laterais tambm
usam monitoramento do consumo de energia, uso da memria, emanao
eletromagntica, tratamento de erros, entre outras [5]. Como j vimos, as diferenas de
tempo durante as computaes com chaves criptogrficas podem levar a ataques de
canal lateral, assim como as diferenas de tempo entre o processamento bem sucedido e
o tratamento de erros e excees. Uma implementao criptogrfica deve evitar os
vazamentos por canais laterais. Entretanto, nem sempre possvel obter uma soluo
efetiva somente em software, sem o apoio do hardware subjacente ou das outras
camadas de software intermedirias.
Em Java, as modificaes no cdigo fonte feitas para eliminar canais laterais
podem ser desfeitas pela JVM durante o processo de compilao em tempo real (Just-inTime Compilation - JiTC). Este processo pode no apenas desfazer protees, como
tambm acrescentar vulnerabilidades relacionadas aos canais laterais. Este o caso das
construes em cdigo fonte para computaes em tempo constante.
Finalmente, implementaes do AES so particularmente vulnerveis aos
ataques por canais laterais sobre os acessos memria cache dos processadores [5].
Duas variaes deste tipo de ataque so: a que correlaciona o tempo de execuo aos
acertos e faltas na cache; e a que monitora a sequncia de acertos e faltas pelo consumo
de energia da CPU [6]. A viabilidade destes ataques muitas vezes requer a execuo
concorrente de cdigo malicioso para o monitoramento do sistema alvo. Na
implementao em Java do AES, a pr-computao e carga antecipada das tabelas
seriam uma medida de proteo contra os ataques de cache, se no fossem
potencialmente desfeitas pelas diversas transformaes de cdigo at a sua execuo em
um hardware especfico.

Livro-texto de Minicursos

46

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.6.

Consideraes finais

Este texto um primeiro passo na direo da construo de um arcabouo que d ao


programador no especialista a confiana necessria para a codificao segura de
mtodos criptogrficos. Como todos sabemos, o provimento de segurana uma tarefa
sem fim, sob constante ameaa de novas tecnologias e do talento de adversrios mais ou
menos bem intencionados. Por isso mesmo este texto no pode pretender ser completo e
esttico. Mais do que os elementos especficos (contramedidas, recomendaes, etc),
nosso objetivo foi despertar o leitor para a necessidade de implementaes cuidadosas
de mtodos criptogrficos, ilustrando com exemplos a diferena entre um cdigo real e
aqueles encontrados em livros-textos da rea. Esperamos que o leitor programador use
este texto como um primeiro recurso para a sua atividade, e que desfrute da sua leitura
tanto quanto desfrutamos da sua escrita.
A elaborao deste texto foi desafiadora porque exigiu no apenas os
conhecimentos tcnicos em criptografia e programao, mas tambm a habilidade para
apresentar os conceitos do modo mais adequado ao pblico alvo. Um senso de utilidade
prtica esteve presente durante toda a elaborao do texto. Por isto, muitas vezes,
quando foram tomadas decises de compromisso entre complexidade do contedo e
facilidade de apresentao, a ltima sempre foi preferida em detrimento da primeira. A
elaborao de exemplos prticos dos maus usos mais comuns em criptografia pode
auxiliar programadores em geral a melhorar a segurana de seus softwares. Em um
desdobramento interessante, a coleo de maus usos contida neste texto pode dar origem
a uma lista de verificao, de apoio inspeo de cdigo fonte, com grande utilidade em
verificaes de segurana realizadas sobre softwares criptogrficos.
Como era de se esperar em um texto curto (cerca de 50 pginas apenas) para um
assunto abrangente e complexo, houve grandes omisses propositais. As ausncias mais
evidentes, motivadas pelas faltas tanto de espao no texto quanto de tempo para elaborar
uma apresentao adequada, so os exemplos programticos de acordo de chaves e de
validao de certificados digitais. Houve casos em que no foram encontradas, na
infraestrutura de software escolhida, implementaes fceis de usar em demonstraes,
como foi o caso do acordo de chaves com Diffie-Hellman autenticado.
Alm disso, h ainda diversas prticas (boas e ruins) de programao
criptogrfica que no foram includas e podero, em conjunto s omisses supracitadas,
dar origem a um segundo volume deste texto. Citam-se os seguintes assuntos de
interesse: a escolha de parmetros para gerao de chaves para algoritmos assimtricos,
a utilizao programtica de curvas elpticas, os bons usos de encriptao determinstica
em buscas sobre dados cifrados e prticas boas e ruins em certificao digital.
Naturalmente, a listagem no pode ser exaustiva.
Finalmente, um ltimo comentrio sobre a bibliografia utilizada na elaborao
deste texto. Alm de respaldar os conceitos apresentados no texto, a bibliografia foi
escolhida e organizada para servir como material de leitura para o leitor interessado em
aprofundar os estudos. Assim, a lista bibliogrfica est dividida nos seguintes tpicos:
(i) livros texto sobre criptografia moderna, (ii) aspectos de implementao criptogrfica,
(iii) programao criptogrfica, (iv) maus usos da criptografia, (v) normas e padres, (vi)
vulnerabilidades e ataques e (vii) softwares criptogrficos. Espera-se, com esta
organizao, facilitar a navegao do leitor pelo tema e tambm os estudos futuros.
Livro-texto de Minicursos

47

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1.7.

Agradecimentos

Alexandre Braga agradece UNICAMP pelo apoio institucional e financeiro e ao CPqD


pelo apoio institucional s atividades acadmicas de seus funcionrios. Ricardo Dahab
agradece a UNICAMP e a Universidade de Waterloo pelo apoio institucional, e
Fapesp, Capes e CNPq por auxlios pesquisa.

1.8.

Referncias

1.8.1. Criptografia moderna


[1] A. Menezes, P. Van Oorschot, and S. Vanstone, Handbook of applied cryptography.
CRC press, 1996.
[2] J. Katz and Y. Lindell, Introduction to Modern Cryptography, 2006.
[3] W. Mao, Modern cryptography: theory and practice. 2003.
[4] W. Stallings, Cryptography and network security, principles and practices. 2003.

1.8.2. Aspectos de implementao criptogrfica


[5] C. Ko, About Cryptographic Engineering. 2009.
[6] N. Ferguson, B. Schneier, and T. Kohno, Cryptography Engineering: Design
Principles and Practical Applications. Wiley, 2011.
[7] P. Gutmann, Everything you Never Wanted to Know about PKI but were Forced to
Find Out. [Online] https://www.cs.auckland.ac.nz/~pgut001/pubs/pkituto rial.pdf.
[8] P. Gutmann, Godzilla crypto tutorial - Part 2, Key Management and Certificates.
[Online]. Available: https://www.cs.auckland.ac.nz/~pgut001/tutorial/index.html.

1.8.3. Programao criptogrfica


[9] A. Braga, C. Rubira, and R. Dahab, Tropyc: A pattern language for cryptographic
object-oriented software, Chapter 16 in Pattern Languages of Program Design 4 (N.
Harrison, B. Foote, and, in Also in Procs. of PLoP, 1999.
[10] CryptoWorkshop and BouncyCastle, The Cryptoworkshop Guide to Java
Cryptography and the Bouncy Castle APIs. 2013.
[11] D. Hook, Beginning cryptography with Java. John Wiley & Sons, 2005.
[12] T. S. Denis, Cryptography for Developers. Syngress Publishing, 2006.

1.8.4. Maus usos da criptografia


[13] B. Schneier, Cryptographic design vulnerabilities, Comp., Sept., pp.2933, 1998.
[14] D. Lazar, H. Chen, X. Wang, and N. Zeldovich, Why Does Cryptographic
Software Fail?: A Case Study and Open Problems, in 5th Asia-Pacific Workshop
on Systems, 2014, pp. 7:17:7.

Livro-texto de Minicursos

48

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[15] M. Egele, D. Brumley, Y. Fratantonio, and C. Kruegel, An empirical study of


cryptographic misuse in android applications, ACM SIGSAC conference on
Computer & communications security - CCS 13, pp. 7384, 2013.
[16] M. Georgiev, S. Iyengar, and S. Jana, The most dangerous code in the world:
validating SSL certificates in non-browser software, in Proceedings of the 2012
ACM conf. on Computer and comm.. security - CCS 12 (2012), 2012, pp. 3849.
[17] P. Gutmann, Lessons Learned in Implementing and Deploying Crypto Software,
Usenix Security Symposium, 2002.
[18] R. Anderson, Why cryptosystems fail, in 1st ACM conference on Computer and
communications security, 1993, pp. 215227.
[19] S. Fahl, M. Harbach, and T. Muders, Why Eve and Mallory love Android: An
analysis of Android SSL (in) security, in ACM conference on Computer and
communications security, 2012, pp. 5061.
[20] S. Shuai, D. Guowei, G. Tao, Y. Tianchang, and S. Chenjie, Modelling Analysis
and Auto-detection of Cryptographic Misuse in Android Applications, in IEEE
12th Intl. Conf. Dependable, Autonomic and Secure Computing, 2014, pp. 7580.

1.8.5. Normas e padres


[21] B. Kaliski, PKCS #5: Password-Based Cryptography Specification Version 2.0
(RFC 2898). [Online]. Available: http://tools.ietf.org/html/rfc2898.
[22] J. Jonsson and Burt Kaliski, Public-Key Cryptography Standards (PKCS) #1: RSA
Cryptography Specifications Version 2.1, RSA Laboratories, 2003. [Online].
Available: https://tools.ietf.org/html/rfc3447.
[23] NIST, Advanced Encryption Standard (AES), NIST FIPS PUB 197, 2001.
[Online]. Available: http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf.
[24] NIST, Cryptographic Algorithm Validation Program (CAVP). [Online].
Available: csrc.nist.gov/groups/STM/cavp/index.html.
[25] NIST, Digital Signature Standard (DSS), NIST FIPS PUB 186-4, 2013. [Online].
Available: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf.
[26] NIST, Recommendation for Block Cipher Modes of Operation, NIST SP 80038A,2001.[Online]. At: csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf.
[27] NIST, Recommendation for Block Cipher Modes of Operation: Galois/Counter
Mode (GCM) and GMAC, NIST SP 800-38D, 2007. [Online]. Available:
http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf.
[28] NIST, Recommendation for Key Management Part 1: General (Revision 3),
NIST SP 800-57, 2012. [Online]. Available: http://csrc.nist.gov/publications/
nistpubs/800-57/sp800-57_part1_rev3_general.pdf.
[29] NIST, Secure Hash Standard (SHS), NIST FIPS PUB 180-4, 2015. [Online].
Available: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf.

Livro-texto de Minicursos

49

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[30] NIST, The Keyed-Hash Message Authentication Code (HMAC), NIST FIPS
PUB 198-1, 2008. [Online]. Available: http://csrc.nist.gov/publications/fips/
fips198-1/FIPS-198-1_final.pdf.

1.8.6. Vulnerabilidades e ataques


[31] The Heartbleed Bug. [Online]. Available: http://heartbleed.com/.
[32] Apples SSL/TLS Goto fail bug. [Online]. Available: www.imperialviolet.org/
2014/02/22/applebug.html.
[33] J. Rizzo and T. Duong, Practical padding oracle attacks, Proceedings of the 4th
USENIX conference on Offensive technologies (2010), pp. 19, 2010.
[34] Piercing Through WhatsApps Encryption. [Online]. Available: https://blog.
thijsalkema.de/blog/2013/10/08/piercing-through-whatsapp-s-encryption/.
[35] S. Vaudenay, Security Flaws Induced by CBC PaddingApplications to SSL,
IPSEC, WTLS..., Advances in CryptologyEUROCRYPT 2002, no. 1, 2002.
[36] T. Duong and J. Rizzo, Cryptography in the Web: The Case of Cryptographic
Design Flaws in ASP.NET, IEEE Security and Privacy, pp. 481489, 2011.

1.8.7. Softwares criptogrficos


[37] EJBCA - Open source PKI and CA. [Online]. Available: www.ejbca.org.
[38] Java Cryptography Architecture (JCA) Reference Guide. [Online]. Available:
docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html.
[39] The Legion of the Bouncy Castle. [Online]. Avail.: http://www.bouncycastle.org.
[40] OpenSSL Cryptography and SSL/TLS toolkit. [Online]. Avail.: OpenSSL.org.

Livro-texto de Minicursos

50

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Captulo

Segurana em Mobile Crowd Sensing


Jolisson Joaquim de V. Laurido e Eduardo Luzeiro Feitosa

Abstract
Mobile Crowd Sensing (MCS) applications allow that participants or users to collect
(using different sensors on your mobile devices - microphone, camera, GPS, etc.) and
share information in order to assist other users in decision-making (based on third-party
opinion) or inform about different events. Examples of MCS applications include coverage of instantly news, traffic congestion, weather disasters, air pollution, parking spaces,
among others. Once the operation of MCS applications involves human or mechanical
participation (cars, drones, sensors, etc.) to collect data that will be used by end users,
the privacy and safety of the participants, not to mention the reliability of generated and
received information are important issues that need investigation. In this context, this
chapter aims to provide understanding of the environment of MCS applications, focusing
mainly on issues related to privacy, security and reliability of the information.
Resumo
Aplicaes de Mobile Crowd Sensing (MCS) so aquelas onde os participantes ou usurios coletam (atravs dos diferentes sensores em seu dispositivo mvel - microfone, cmera, GPS, entre outros) e compartilham informaes com o intuito de auxiliar outros
usurios na tomada de decises (baseada na opinio de terceiros) ou informar sobre os
mais diversos acontecimentos. Entre exemplos comuns de aplicaes de MCS pode-se
citar a cobertura de notcias instantaneamente, informaes sobre pontos de congestionamento, desastres climticos, poluio do ar, buracos em vias pblicas, vagas em
estacionamentos, entre outros. Uma vez que o funcionamento de aplicaes MCS envolve a participao humana ou mecnica (automveis, drones, sensores, entre outros)
para coletar os dados que sero usados por usurios finais, a privacidade e a segurana
dos participantes, sem falar na confiabilidade das informaes geradas e recebidas so
questes importantes que precisam investigadas. Neste contexto, este Captulo objetiva
fornecer entendimento sobre o ambiente de aplicaes de Mobile Crowd Sensing, focando
principalmente nas questes relacionados a privacidade, a segurana e a confiabilidade
das informaes.
Livro-texto de Minicursos

51

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

2.1. Introduo
H algum tempo, o processo de sensoriamento passou a ser utilizado na gesto de cidades,
atravs da monitorizao de reas urbanas e da observao da dinmica das comunidades,
visando a fornecer aos gestores informaes essenciais para a tomada de deciso sobre os
mais variados assuntos. Atualmente, esse processo de gesto parte essencial da vida nas
cidades. Por exemplo, o sensoriamento de fatores ambientais permite que autoridades ou
agncias obtenham dados e informem a populao sobre condies de trfego, poluio
sonora, poluio do ar, qualidade da gua, segurana pblica, entre outros assuntos, informando o que acontece, quando acontece e o que fazer quando algo acontecer. Mas como
fazer esse sensoriamento?
As atuais e tradicionais tcnicas de sensoriamento, tais como as redes de sensores
sem fio (RSSF), vm sendo muito aproveitadas para adquirir as condies do mundo
real. Contudo, as redes de sensores comerciais nunca foram implantadas com sucesso no
mundo real, devido a problemas como a cobertura insuficiente, falta de escalabilidade e,
principalmente, o custo de instalao e manuteno.
Graas ao exponencial crescimento do poder computacional e da quantidade e disponibilidade de sensores embutidos nos dispositivos mveis usados diariamente, possvel,nos dias atuais, que o cidado comum possa monitorar aspectos sobre a cidade, sua
comunidade ou uma regio e, assim, contribuir de alguma forma para melhorar e/ou auxiliar a vida das outras pessoas. Entre os exemplos bvios esto o nvel de rudo na cidade
e o fluxo de trfego. Tambm possvel incluir situaes que interferem na qualidade de
vida, como buracos em vias pblicas e estradas, os quais podem ser detectados usando
dispositivos mveis.
Recentemente, um novo paradigma de sensoriamento vem tirando proveito dessa
vasta gama de recursos para monitorar e compartilhar informaes de interesses comum,
coletadas atravs dos sensores embutidos nos dispositivos mveis, o que acaba por auxiliar as pessoas na tomada de decises. Denominado de Mobile Crowd Sensing, ou
simplesmente MCS, esse paradigma parte do princpio de que possvel (e at fcil em
certo ponto) utilizar os mais variados sensores (cmeras, acelermetros, sistemas de posicionamento global - GPS, sensores de temperatura, entre muitos outros) presentes em
smartphones, dispositivos de IoT (Internet of Thing), tocadores de msicas, consoles de
jogos (Wii e XboX Kinect, por exemplo) e veculos (GPS, computadores de bordo) para
coletar informaes relevantes para uma cidade ou uma comunidade.
As aplicaes MCS vm sendo utilizadas para o monitoramento do rudo nas
cidades [Maisonneuve et al. 2010, Rana et al. 2010], poluio ambiental [IBM 2010] e
fenmenos climticos [Thepvilojanapong et al. 2010], medio da densidade demogrfica [Weppner and Lukowicz 2013], cenrios de emergncias [Ludwig et al. 2015], medicina [Lane et al. 2010], anomalias no trfego [Pan et al. 2013, Ganti et al. 2011] e at
mesmo detectar terremotos [Minson et al. 2015].
Um aspecto importante que as aplicaes MCS vm ganhando popularidade
com a criao de diversos sistemas e aplicativos e, consequentemente, conquistando o
envolvimento de mais e mais pessoas, redes e grupo de colaboradores. Em conjunto
com outras tecnologias e plataformas, como rede sociais e armazenamento em nuvem,
Livro-texto de Minicursos

52

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

as MCS tm desempenhado um papel imprescindvel na integrao entre pessoas que


buscam informaes ajustadas para tomar decises que possam ajud-las.
O diferencial de MCS em relao a outras abordagens de sensoriamento com participao de usurios reside no fato de que toda ao de registro (coleta de dados e informaes) parte do dispositivo mvel do usurio participante do servio, conectado a
qualquer rede de acesso Internet, muitas vezes sem a necessidade de registro em tempo
real [Wang et al. 2013]. Assim, o custo de implantao e utilizao torna-se bastante reduzido, uma vez que no se faz necessrio construir uma infraestrutura especfica, como
ocorre em sensores convencionas. Servios e aplicaes de MCS podem usar a infraestrutura das prprias operadoras de telefonia mveis bem como redes domsticas e/ou empresarias atravs de WiFi e 3G Alm disso, quanto maior o nmero de participantes mais
tarefas podem ser disponibilizadas e mais reas pode ser cobertas [Tuncay et al. 2012], o
que acaba por aumentar a confiabilidade das informaes, permitindo que que elas sejam
mais facilmente aceitas.
Por outro lado, o uso de MCS tambm traz seus riscos. O principal deles a
privacidade [Ganti et al. 2011, Lane et al. 2010, Kong et al. 2015]. O cenrio a seguir
exemplifica melhor o problema. Considerando um sistema MCS cujo objetivo recolher
imagens ou vdeos curtos sobre irregularidades no trnsito em diferentes partes de uma
cidade, qualquer pessoa que deseja participar precisa, primeiramente, enviar uma consulta
ao servidor de aplicativos para descobrir o conjunto de locais prximos a ela que ainda
necessitam de coleta de dados. Se o participante no estiver disposto a divulgar sua identidade, o servidor pode at remover a identificao (ID) da consulta, mas ainda precisa
saber as informaes de localizao do participante, a fim de responder consulta. Assim, devido a essa forte correlao entre os participantes e seus movimentos, um servidor
malicioso pode identificar um participante atravs de sua informao de localizao.
Diante do exposto, o objetivo deste Captulo introduzir o leitor no paradigma de
Mobile Crowd Sensing. A ideia apresentar os principais conceitos e definies sobre
o tema. Contudo, o foco principal voltado para a questo de segurana (privacidade
e confiabilidade) das informaes coletadas e transmitidas pelos participantes de MCS.
Alm de possibilitar a compreenso dos problemas de segurana em MCS e apresentar
as solues existentes, este Captulo tambm identifica oportunidades de estudos na rea,
bem como aponta alguns trabalhos futuros.
Para alcanar os objetivos propostos, o restante deste Captulo est organizado da
seguinte forma. A Seo 2.2 caracteriza Mobile Crowd Sensing, apresentando conceitos,
definies e caractersticas nicas, bem como discutindo a evoluo dos esquemas de sensoriamento participativo at chegar s MCS e apresentando exemplos de aplicaes reais.
A Seo 2.3 trata dos aspectos de segurana em MCS, onde so discutidos os problemas
de privacidade dos participantes e de confiabilidade dos dados. Os problemas causados e
as tcnicas empregadas como contramedidas a esses problemas so relatadas. A Seo 2.4
apresenta algumas solues (arquiteturas, aplicaes, bibliotecas e ferramentas) existentes que levam em considerao a segurana em MCS ou permitem que sejam empregadas
nos aspectos de segurana em MCS. A Seo 2.5, por sua vez, aponta algumas questes
em aberto. Por fim, a Seo 2.6 apresenta os comentrios finais sobre o tema.

Livro-texto de Minicursos

53

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

2.2. Mobile Crowd Sensing


Como j mencionado na Seo anterior, Mobile Crowd Sensing (MCS) apresenta um
novo paradigma de sensoriamento baseado no poder dos dispositivos mveis. Ele tira
proveito do grande nmero de dispositivos que acompanham um usurio (telefones
celulares, dispositivos portteis e veculos inteligentes) e de sua mobilidade para adquirir
conhecimento local e compartilhar esse conhecimento dentro de uma esfera social.
Esta Seo discute o processo evolutivo do sensoriamento, traz definies sobre
tais aplicaes, enumera os elementos arquiteturais de sistemas MCS, apresenta as caractersticas nicas que o paradigma proporciona e termina exemplificando algumas aplicaes MCS.
2.2.1. Da Sabedoria das Multides a MCS
Para entender o paradigma de MCS, preciso, primeiramente, compreender a ideia de
resolver problemas usando populaes como fonte de informao (definido em ingls
como crowd-powered problem-solving).
Em seu livro The Wisdom of Crowd (Sabedoria das Multides), Surowiecki
[Surowiecki 2005] revela que a agregao de dados ou informaes a partir de um grupo
de pessoas resulta, muitas vezes, em decises melhores do que as feitas por um nico
indivduo . Na mesma linha de raciocnio da sabedoria das multides, existe o conceito de
inteligncia coletiva, um tipo de saber compartilhado oriundo da colaborao de muitas
pessoas em suas diversidades. Segundo Levy [Levy and da Costa 1993], a inteligncia
coletiva aquela distribuda por toda parte, na qual todo o saber est na humanidade, j
que ningum sabe tudo, porm todos sabem alguma coisa.
Com base nos conceitos de sabedoria das multides e inteligncia coletiva, duas
formas de aproveitar a participao de multides, intrinsecamente ligados a MCS. A primeira delas Crowdsourcing. Definido por Jeff Howe e Mark Robinson em [Howe 2006],
Crowdsourcing o ato de uma empresa ou instituio, tendo uma funo uma vez realizada por funcionrios, terceiriz-la a uma rede indefinida (e geralmente grande) de
pessoas sob a forma de um convite aberto. Crowdsourcing um modelo de produo que
utiliza a inteligncia coletiva, a cultura colaborativa e a formao de comunidades para
solucionar problemas, criar contedo ou buscar inovao. Um exemplo tpico a Wikipedia, a maior enciclopdia do mundo, criada por milhares de contribuidores, de forma
colaborativa.
A segunda forma o Sensoriamento Participativo [Burke et al. 2006], que sustenta a ideia que cidados e dispositivos mveis podem formar redes de sensores participativas para aquisio e compartilhamento de conhecimento local, enfatizando a participao explcita do usurio. Sensoriamento Participativo requer um ativo envolvimento
dos indivduos para contribuir com dados sensoriados (uma foto, um relato sobre uma via
pblica interditada) de acordo com o fenmeno monitorado.
Embora as diferenas entre Crowdsourcing, Sensoriamento Participativo e MCS
possam no ser facilmente percebidas, elas existem. Todas as trs formas de sensoriamento assumem que existe a participao de multides, uma vez que quanto maior
nmero de participantes, mais dados podem ser sensoriados, maiores reas podem ser
Livro-texto de Minicursos

54

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

cobertas e o que aumenta a confiabilidade das informaes coletadas.


Contudo, alm da coleta de dados, MCS tambm permite (e algumas vezes exige)
que o participante atue no processamento das informaes coletadas. Alm disso, MCS
aceita a participao oportunista [Lane et al. 2010], onde necessrio apenas que o aplicativo capture os dados atravs dos sensores disponveis, e a participao mecnica (carros
inteligentes, drones, entre outros) na atividade de coleta [Konidala et al. 2013].
A Figura 2.1 ilustra a abrangncia de MCS em comparao aos conceitos de sabedoria das multides, crowdsourcing e sensoriamento participativo.
Mobile'Crowd'Sensing'
Crowdsourcing+

Inteligncia+da+Mquina+

Sabedoria+das+Mul5des+

(coleta+de+dados+e+processamento)+

Inteligncia+Humana+

Par5cipao+Implcita+

Par5cipao+Explcita+

Sensoriamento+
Par5cipa5vo+

Comunidade+online+

Comunidade+mvel+e+Gsica+

(opinies+pessoais+jus5a,+)+

Figura 2.1. Comparao entre MCS e os conceitos relacionados. Adaptado de


[Guo et al. 2015]

Percebe-se na Figura 2.1 que enquanto a sabedoria das multides e crowdsourcing contam apenas com a inteligncia humana, o sensoriamento participativo e MCS
exploram uma fuso da inteligncia humana e da mquina.
Segundo Hu et al. [Hu et al. 2013], em comparao com sistemas e redes de sensores fixos, com grande complexidade estrutural e logstica, MCS possui vantagens como:
Generalidade, uma vez que atendem a diversidade de sistemas operacionais e
hardwares, ignorando nuances e generalizando o desenvolvimento de aplicaes
necessrias e populares;
Escalabilidade, pois no limitam a quantidade de usurios;
Mobilidade de contedo, j que as informaes coletadas podem ser passadas por
diversos canais (redes sociais, canais de rdio, jornais online e televiso, por exemplo), antes de serem acessadas/vistas, no havendo barreiras para as informaes
transmitidas.
Livro-texto de Minicursos

55

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

2.2.2. Definies
Como j mencionado neste Captulo, Mobile Crowd Sensing (MCS) apresenta um novo
paradigma de sensoriamento baseado no poder dos dispositivos mveis.
Para Ganti et al. [Ganti et al. 2011], os pesquisadores responsveis por cunharem
o termo, Mobile Crowd Sensing se refere a uma variada e ampla gama de modelos de sensoriamento no qual indivduos com dispositivos computacionais e sensores so capazes
de coletar e contribuir com dados valiosos para diferentes aplicaes. Em linhas gerais,
MCS tira proveito do grande nmero de dispositivos que acompanham um usurio (telefones celulares, dispositivos portteis e veculos inteligentes) e de sua mobilidade para
adquirir conhecimento local e compartilhar esse conhecimento dentro de uma esfera social. A informao recolhida mais a fuso dos dados coletados (que acontece com o apoio
da computao em nuvem), torna MCS uma plataforma verstil que muitas vezes pode
substituir as infraestruturas de sensoriamento estticos, permitindo uma ampla variedade
de aplicaes.
Guo et al. [Guo et al. 2015] definem MCS como um novo paradigma de deteco que capacita os cidados comuns contribuir com dados sensoriados ou gerados a
partir de seus dispositivos mveis, agregados e fundidos na nuvem para a extrao de
inteligncia da multido, prestando servios centrados nas pessoas. J autores como
[Dimov 2014] definem MCS como sendo um novo modelo de negcios do conceito de
crowdsourcing, uma vez que permite que um grande nmero de dispositivos mveis sejam usados no somente para troca de informaes entre seus usurios, mas tambm para
atividades que podem ter um grande impacto social.
Quanto ao que pode ser sensoriado com MCS, Ganti et al. [Ganti et al. 2011]
afirmam que tudo depende do fenmeno que se est medindo. Eles sugerem a seguinte
classificao:
Ambiental, onde fenmenos de natureza ambiental so os alvos. Exemplos incluem o nvel e qualidade da gua em rios [IBM 2010, Minkman et al. 2015], a
medio dos nveis de poluio em cidades [Dutta et al. 2009, Leonardi et al. 2014]
e o monitoramento de vida selvagem em seu habitat [Mediated Spaces, Inc 2015].
Infraestrutura envolve a medio em larga escala de fenmenos relacionados a
infraestrutura pblica. Exemplos incluem a disponibilidade de vagas em estacionamentos [Mathur et al. 2010], a condio de rodovias e estradas, problemas com
aparelhos pblicos (hidrantes, iluminao, entre outros) e o monitoramento do trnsito em tempo real [Mohan et al. 2008, Google 2015].
Social, onde os participantes coletam e compartilham informaes entre si. Exemplos incluem dados sobre os exerccios [Reddy et al. 2007] que realizaram durante
o dia ou quanto andaram de bicicleta [Eisenman et al. 2007].
2.2.3. Componentes Arquiteturais
Embora no exista uma arquitetura formal, visto que ela depende do que se quer sensoriar,
a Figura 2.2 mostra uma arquitetura genrica de MCS.
Livro-texto de Minicursos

56

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015


Cmeras,(GPS(
M i c r o f o n e ,(
Acelermetro(
....(

Servidor(de(Aplicao(
(Gerente(de(Tarefas)(
Usurios,

Par$cipantes,

Cmeras,(GPS(
M i c r o f o n e ,(
Acelermetro(
....(

Visualizao(

Figura 2.2. Exemplo de arquitetura geral em MCS. Adaptado de [Pournajaf et al. 2014]

Entretanto, vrios autores [Pournajaf et al. 2014, Ganti et al. 2011] concordam que
qualquer sistema MCS deve possuir pelos menos trs componentes chave:
Participantes: So as entidades, pessoas, que usam algum tipo de sensor para obter
ou medir a informao requisitada sobre um elemento de interesse;
Aplicaes ou Usurios Finais: So as entidades que requisitam dados atravs de
tarefas e ento utilizam a informao coletada pelos participantes;
Servidor de Aplicao: Tambm chamado de gerentes de tarefas, so as entidades
responsveis pela distribuio de tarefas aos participantes que conseguem atender
aos requisitos das aplicaes. O modo de distribuio de tarefas do servidor de
aplicao varia de acordo com as tarefas e os participantes, e pode ser categorizado
em:
Centralizado: Um servidor central fornece aos participantes diferentes tarefas para executar. Por exemplo, em um aplicativo que mede o entusiasmo de
festas (party thermometer), um servidor central pode escolher um conjunto
de participantes, pedindo que eles classificam uma determinada festa. Uma
questo importante do modelo centralizado ter um nico ponto de falha para
interaes entre participantes e aplicaes;
Descentralizado: Cada participante pode se tornar um gerente de tarefa e decidir ou executar uma tarefa ou pass-la para outros participantes que possam
estar melhor adaptados para cumpr-la. Esta deciso pode ser baseada em certos atributos de outros participantes, como localizao, habilidades ou hardware disponvel no dispositivo. Um bom exemplo o modelo de recrutamento
descentralizado proposto em [Tuncay et al. 2012], que notifica os participantes qualificados de uma atividade de sensoriamento prxima;
Hbrido: Neste esquema, um servidor central e um conjunto de participantes atuam na construo do ncleo de gerenciamento de tarefas. Um bom
exemplo o esquema de bolha [Lu et al. 2010], que requer um servidor central para manter o controle das tarefas de sensoriamento, que so alocadas
principalmente de forma descentralizada.
Livro-texto de Minicursos

57

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

2.2.4. Ciclo de Vida de MCS


De acordo com Zhang et al. [Zhang et al. 2014a], o ciclo de vida em MCS consiste: (1)
na criao de aplicativos de acordo com os requisitos; (2) na atribuio de tarefas de sensoriamento para os participantes; (3) na execuo da tarefa (sensoriamento, computao
e upload) no dispositivo mvel do participante, e (4) coleta e processamento dos dados
enviados pelos participantes (Figura 2.3).
Criao(de(
Tarefas(

Atribuio(
de(Tarefas(

Execuo(das(
Tarefas(

Integrao(dos(Dados(

Tarefa&1&
Execuo&da&Tarefa&
Execuo&da&Tarefa&
Tarefa&2&

Cloud&
&

Execuo&da&Tarefa&
Execuo&da&Tarefa&
&

&

&
Dados(
&
&

Senoriamento&

&

Tarefa&3&

Computao&
&

&
&

Upload&

Figura 2.3. Ciclo de vida em MCS. Adaptado de [Zhang et al. 2014a]

As funcionalidades fundamentais de cada fase so descritos como:


Criao de tarefas: O organizador/gerenciador MCS define uma tarefa de acordo
com as necessidades estabelecidas e elabora uma aplicao MCS que deve ser fornecida aos participantes.
Atribuio de tarefas: Aps a tarefa MCS e a aplicao mvel serem criadas, a
prxima fase atribuir a tarefa, ou seja, recrutar participantes e lhes atribuir tarefas de sensoriamento individuais que so supostamente para serem executadas no
dispositivo mvel de cada participante. Encontrar participantes suficientes e adequados para o sensoriamento a questo central neste estgio.
Execuo de tarefas individuais: Depois de receber a tarefa, o participante deve
tentar termin-la dentro do perodo pr-definido. Esta fase pode ser dividida em 3
sub-fases - sensoriamento, computao e upload dos dados.
Integrao de dados: Esta etapa recebe os fluxos de dados coletados de todos os
participantes como entrada, agrega-os e fornece aos usurios finais no formato adequado. Para algumas aplicaes MCS [Sherchan et al. 2012], o processamento de
dados nesta fase bastante simples. Um servidor armazena os dados centrais e
fornece interfaces para usurios consultarem e partilharem os dados. Enquanto outros aplicativos MCS [Mun et al. 2009, Rachuri et al. 2011] empregam algoritmos
complicados para integrar dados e extrair alto nvel de inteligncia coletiva a partir
dos dados brutos.
Livro-texto de Minicursos

58

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

2.2.5. Caractersticas nicas


De acordo com Guo et al. [Guo et al. 2015], MCS possui quatro caractersticas chave que
a diferenciam das outras abordagens. So elas.
Sensoriamento baseado em Multides
Em comparao com redes de sensores tradicionais, a diferena fundamental de
MCS o envolvimento de multides para o sensoriamento em grande escala, o que oferece duas grandes vantagens. A primeira aproveitar a capacidade de sensoriamento nos
dispositivos dos participantes bem como a infraestrutura de comunicao existente, facilitando a implantao e reduzindo custos. A segunda aproveitar a mobilidade inerente
dos usurios de dispositivos mveis, o que oferece uma cobertura espao-temporal sem
precedentes comparada s implementaes de redes de sensores estticas.
Alm disso, o sensoriamento atravs de multides de MCS oferece novos recursos.
O primeiro deles o modo de gerao de dados. MCS pode reunir (sensoriar) dados de
dois modos diferentes:
1. Sensoriamento Mvel, onde o processo de coleta baseado no contexto individual, ou seja, o sensoriamento feito a partir dos dispositivos dos indivduos
[Lane et al. 2010];
2. Redes Sociais Mveis (Mobile Social Networks ou MSN), onde os dados postados
pelos usurios em servios de redes sociais contribuem, em larga escala, como outra
fonte de dados.
A combinao desses dois modos uma caracterstica nica de MCS.
O segundo o estilo de sensoriamento. Ganti et al. [Ganti et al. 2011] afirmam
que o sensoriamento em MCS pode ser classificado em participativo e oportunista, dependendo dos requisitos das aplicaes e dos recursos do dispositivo. O sensoriamento
participativo, tambm chamado de explicito, quando a tarefa de sensoriamento informada pelo usurios. Em outras palavras, a gerao de dados (sensoriamento) feita a
partir do dispositivo do usurio de forma individual ou baseada no contexto. J o sensoriamento oportunista, como o prprio nome diz, tira proveito das interaes online envolvendo elementos fsicos (por exemplo, check-in em lugares) ocorridas em redes sociais
mveis como fonte de dados. Assim, os dados coletados so enviados pelos usurios
de servios de redes sociais mveis. No entanto, os dados so usados para um segundo
propsito (o objetivo principal a interao social online), e, portanto, ela realizada
de modo implcito. Devido essa caracterizao de dois estilos de sensoriamento, Guo et
al. [Guo et al. 2015] afirmam que MCS apresenta uma nova dimenso: a conscincia do
usurio na realizao do sensoriamento.
O terceiro a organizao de voluntrios. Os participantes podem ser cidados
auto-organizados com diferentes nveis de envolvimento organizacional, variando de totais estranhos, grupos pouco organizados de vizinhos que enfrentam um problema comum
at grupos bem-organizados de ativistas previamente existentes [Maisonneuve et al. 2010].
Os voluntrios podem ser organizados em:
Livro-texto de Minicursos

59

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1. Grupos, pessoas organizadas de forma oportunista (tipicamente vizinhos) que desejam abordar de forma colaborativa um problema enfrentado por todos;
2. Comunidades, onde as pessoas que vivem em uma determinada rea se unem por
causa de seus interesses comuns;
3. Urbanos, onde qualquer cidado (na sua maioria estranhos) pode participar da atividade de sensoriamento em escala urbana.
Sistema Centrado no Usurio
Como j mencionado neste Captulo, MCS destaca-se pela capacidade de integrar
a inteligncia humana e da mquina. Contudo, para motivar a participao plena dos
usurios bem como melhorar sua experincia de uso, sistemas MCS so desenvolvidos
centrados no usurio (user-centric).
Embora vital, tal fato traz alguns problemas. O primeiro deles como motivar os
usurios a participarem? A primeira vista, a promessa de ganho financeiro um mtodo
importante e bastante usado como incentivo. Contudo, o simples fato do entretenimento
pode ser motivador em muitas situaes, mesmo quando no h perspectiva de ganhos
financeiros [Ganti et al. 2011]. As pessoas tambm podem ser motivadas a participar por
razes ticas e sociais, tais como a socializao com outros ou o reconhecimento. Vale
lembra que os usurios tem noo de que ao usar seus dispositivos e sensores estaro
consumindo seus prprios recursos (energia e dados mveis, por exemplo).
Outro problema a segurana e privacidade do usurio. O compartilhamento
de dados pessoais em sistemas MCS pode levantar preocupaes quanto a privacidade.
Para motivar a participao do usurio, essencial que novas tcnicas para proteo da
privacidade do usurio sejam elaboradas, permitindo que seus dispositivos possam contribuir de forma confivel. De forma particular, a definio de segurana e privacidade pode
e precisa evoluir nos sistemas MCS, j que informaes pessoais podem no ser obtidas
diretamente, mas sim inferidas a partir de dados agregados. Por exemplo, o fato de que um
objeto com uma etiqueta RFID poder ser identificado exclusivamente e rastreado de volta
at seu utilizador pode trazer muitos problemas de privacidade [Acampora et al. 2013].
Requisitos de Comunicao
O sucesso de qualquer soluo MCS depende de recursos de comunicao e de conexes heterogneas temporrias que permitam a coleta eficiente dos dados sensoriados.
Embora aplicaes e sistemas MCS possam ter arquiteturas de comunicao diferentes,
grande parte delas baseai-se em quatro pontos.
O primeiro a conexo de rede heterognea. Os atuais dispositivos mveis so
geralmente equipados com mltiplas interfaces e tecnologias de comunicao sem fio (por
exemplo, GSM, Wi-Fi e Bluetooth). Enquanto as interfaces GSM e WiFi podem fornecer
conectividade com uma infraestrutura de comunicao pr-existente, Bluetooth ou Wi-Fi
podem fornecer conexo de curto alcance entre dispositivos mveis e redes oportunistas
auto-organizadas para compartilhar dados [Conti and Kumar 2010, Guo et al. 2013].
O segundo a topologia de rede e mobilidade humana. A mobilidade dos dispositivos mveis e seus donos no s fornece uma boa cobertura de sensoriamento para
Livro-texto de Minicursos

60

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

MCS, mas tambm traz desafios para as comunicaes:


A topologia da rede evolui ao longo do tempo, o que torna difcil encontrar rotas
estveis entre dispositivos mveis;
Os protocolos de roteamento tradicionais, projetados para redes sem fio estticas,
no conseguem lidar com topologias altamente dinmicas para cumprir as tarefas
bsicas de comunicao em MCS (especialmente para implementaes ad hoc puras);
Uma vez que a mobilidade humana desempenha um papel importante na dinmica
e no comportamento de sistemas MCS, os esforos em pesquisa sobre mobilidade
humana [Karamshuk et al. 2011, Clementi et al. 2013] precisam avanar.
O terceiro o servio tolerante a interrupes. Em algumas aplicaes MCS,
os dados sensoriados no precisam ser transmitidos em tempo real ou com garantias de
completude e preciso. Portanto, esses sistemas podem tirar proveito das redes tolerantes
a interrupo [Gao and Cao 2011], que s dependem de conectividade de rede intermitente e tm custo de implantao muito menor. Vale lembrar que muitos dispositivos
mveis no possuem garantias de conexo o tempo todo devido fraca cobertura de rede
(por exemplo, a fora fraca de sinal devido a interferncias ou nenhum sinal em uma rea
rural), restrio de energia (por exemplo, bateria fraca), ou preferncias do usurio (por
exemplo, telefone desligado em uma reunio) [Ma et al. 2014].
O quarto e ltimo a exigncia de alta escalabilidade. Uma vez que MCS baseiase em dados de sensoriamento de um grande volume de usurios mveis, a escalabilidade
claramente um requisito bsico e um desafio fundamental para os sistemas de comunicao subjacentes. Para alcanar a escalabilidade suficiente, os protocolos de comunicao
MCS e arquiteturas de rede so geralmente altamente distribudas e descentralizadas. Tais
solues podem tambm melhorar a robustez do sistema global MCS. Alm disso, o projeto eficiente de energia tem de ser considerado, devido aos recursos limitados de energia
de cada dispositivo individual e do grande nmero de dispositivos no sistema.
Processamento de Dados e Inteligncia na Extrao
Uma vez que um dos objectivo de MCS extrair inteligncia de alto nvel a partir
de um grande volume de entradas, a participao humana no processo de sensoriamento
traz algumas incertezas para os sistemas MCS.
Uma delas a baixa qualidade dos dados, geralmente definida como o grau de
como se encaixam os dados para utilizao em operaes, tomada de deciso e planejamento. Por exemplo, os participantes annimos podem enviar dados incorretos, de baixa
qualidade ou at mesmo falsos [Zhang et al. 2014b, Wang et al. 2011a]. Alm disso, dados oriundos de pessoas diferentes podem ser redundantes ou inconsistentes ou o mesmo
sensor pode sentir o mesmo evento sob diferentes condies (por exemplo, deteco de
rudos em ambiente com o celular no bolso ou na mo). Portanto, a seleo de dados
muitas vezes necessria para melhorar a qualidade dos dados, devendo ser explorados
mtodos de filtragem de faltas, estimativa de qualidade, incentivo ao participante especialista, entre outros.
Livro-texto de Minicursos

61

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Outra questo a minerao de dados heterogneos. Os dados em MCS so


obtidos em comunidades fsicas e virtuais tanto de forma offline quanto online. Diferentes comunidades representam maneiras distintas de interao (por exemplo, comentrios,
transferncias online, localizao offline) e conter conhecimento diferente (por exemplo,
a amizade em comunidades online, os padres de movimento em comunidades offline).
Portanto, o problema como associar, de forma eficaz, dados com diferenas espaciais.
2.2.6. Exemplos de Aplicaes
Para melhor apresentar o paradigma, esta Seo descreve algumas aplicaes voltadas
para MCS.
CreekWatch
Desenvolvido pela IBM Almaden Research Center, o Creek Watch [IBM 2010]
visa monitorar o nveis das guas de riachos, baseando-se em imagens coletadas por participantes. O aplicativo permite o uso do smartphone (somente verses para IOS esto
disponveis) para marcar uma posio (usando GPS), tirar fotos daquele ponto e informar
observaes perceptveis pelo usurio como o nvel da gua, o fluxo e a presena de lixo.
A Figura 2.4 ilustra alguns passos para o uso do Creek Watch.

Figura 2.4. Exemplo de uso do Creek Watch

Os dados coletados so automaticamente enviados para o servidor central ou armazenados no prprio dispositivo se no houver acesso a Internet. Todas as informaes
podem ser acessadas e baixadas em http://creekwatch.org. De acordo com a
IBM, o Creek Watch j conta com mais de 4.000 usurios em 25 pases.
NoiseTube
NoiseTube uma nova abordagem para a avaliao da poluio sonora que envolve o pblico em geral [Maisonneuve et al. 2009]. O objetivo transformar telefones
celulares equipados com GPS em sensores de rudo que permitam aos cidados medir sua
exposio pessoal ao rudo no seu ambiente quotidiano.
Cada usurio pode contribuir compartilhando suas medies geolocalizadas bem
como anotaes pessoais para produzir um mapa de rudo coletivo. Uma vez que os dados
coletados so enviados ao servidor, qualquer usurio pode ver suas prprias contribuies
Livro-texto de Minicursos

62

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

e a de outros atravs do Web site ou visualiz-las usando o Google Earth. Essa maior possibilidade de exibio faz com que o NoiseTube forneca dados para convencer e auxiliar
autoridades na tomada de deciso sobre o problema da poluio sonora. NoiseTube usa
o conceito de translucidez social, que consiste em fazer os participantes e suas atividades
se tornarem visveis um para o outro.
A verso inicial do NoiseTube foi escrita em Java, focada em smartphones com
sistema operacional Symbian/S60 e testada em um dispositivo Nokia N95 com 8GB.
Alm disso, um receptor de GPS externo (conectado via Bluetooth) foi utilizado. Atualmente, est disponvel para plataformas iOS, Android e smartphones com Java ME. O
servidor implementado using Ruby on Rails, MySQL, Google Maps e Google Earth.
A Figura 2.5 ilustra algumas interfaces do NoiseTube, que representam a coleta e
a visualizao das medies.

Figura 2.5. Exemplo de interfaces do NoiseTube

Nericell
O Nericell uma aplicao MCS voltada para monitorar o trfego em ruas, avenidas e rodovias em tempo real, mas de forma oportunista [Mohan et al. 2008]. Desenvolvida pela Microsoft Research, a ideia que quando um usurio participante coloca seu
telefone no bolso e comea a dirigir, a aplicao ir automaticamente monitorar as condies da estrada e do trnsito, transmitindo certas informaes para um servio na nuvem
para a agregao e gerao de relatrios.
Um aspecto interessante da Nericell o uso de vrios sensores presentes em dispositivos mveis, tais como bluetooth, rdio celular, microfone, acelermetro e GPS.
Segundo os criadores, um sensoriamento rico e diversificado fundamental no contexto
das cidades, onde as condies das estradas tendem a ser variveis (buracos), existem vrios tipos de veculos (2 rodas, 3 rodas, carros, caminhes) e o fluxo de trfego pode ser
catico (por exemplo, vrios motorista buzinando em um congestionamento). Assim, por
exemplo, o acelermetro pode ser usado para detectar buracos e o microfone para detectar
buzinas, ajudando a determinar a condio de trafegabilidade.
Alm da questo do sensoriamento, Nericell tambm resolve certos aspectos tcniLivro-texto de Minicursos

63

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

cos como consumo de energia. Sobre consumo de energia, a aplicao emprega o conceito
de sensoriamento por gatilho, onde um sensor relativamente barato em termos de energia
usado para desencadear a operao de um sensor de maior consumo energtico, quando
necessrio. Por exemplo, o acelermetro utilizado para detectar uma alta incidncia de
frenagens, o que provoca ento o sensoriamento baseado no microfone para verificar se
h buzinas.
Waze
Waze um popular sistema de navegao que usa Crowdsensing para oferecer informaes de trfego em tempo quase real. Criado em 2008, o Waze registrava aproximadamente mais de 50 milhes de usurios em 2013, ano em que foi comprado pelo Google.
Waze recolhe periodicamente dados do GPS em dispositivos mveis e os utiliza para calcular a velocidade do veculo. Assim, pode fornecer informaes teis sobre as condies
de trfego em diferentes reas. O sistema tambm oferece aos seus usurios alertas prdefinidos informando incidentes como engarrafamentos e pontos de verificao da polcia,
bem como informaes sobre as condies de trfego. Tambm possvel usar subcategorias de incidentes para melhor especific-los, por exemplo, engarrafamento pesado
em vez de apenas engarrafamento.
A Figura 2.6 ilustra algumas interfaces do Waze.

Figura 2.6. Exemplo de interfaces do Waze

mCrowd
mCrowd uma plataforma de Crowdsourcing, desenvolvida em [Yan et al. 2009],
que permite aos usurios mveis postar e trabalhar em tarefas relacionadas com o sensoriamento mvel distribudo. Ela permite que os usurios de iPhones possam utilizar, de
forma plena, os diferentes sensores para participar e realizar tarefas de Crowdsourcing,
incluindo a coleta de imagens com cincia de localizao (geolocalizao), marcao de
imagens, monitoramento do trfego rodovirio, entre outros. Obviamente, para incentivar
a participao, oferecida uma compensao financeira para cada usurio. Alm de facilitar o Crowdsourcing, mCrowd torna vivel que os usurios usem servios populares como
Livro-texto de Minicursos

64

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Amazon Mechanical Turk (https://www.mturk.com/mturk/welcome) (Mturk)


e ChaCha (http://www.chacha.com), atravs de uma interface nica, simplificando
assim sua participao no Crowdsourcing.
Por ser um aplicativo interativo e de fcil manuseio, o tratamento com as tarefas um processo simples. Primeiro, as tarefas de interesse so postadas e em seguida
os usurios capazes de execut-las so convocados para atuar. Diferentes servios de
Crowndsourcing podem ser usados, como Mtrurk ou ChaCha, para postar uma imagem
ou texto. Ao acessar o mCrowd, o usurio pode escolher uma categoria de tarefas e postla no Mturk atravs de um mecanismo de busca. Aps enviar a tarefa, uma lista com as
tarefas montada e a recompensa associada a tarefa.
A Figura 2.7 mostra a interface de usurio do mCrowd.

(a)$Viso$do$Solicitante$$$$$$$$(b)$Exibio$de$Tarefas$$$$$$$$$$$$$$$(c)$Resultados$
(a) Requester View
(b) Tasks View
(c) Results View
Figure 2. mCrowd
iPhone
Requesters
start posting
from (a)requester
view,
the posted
tasks are shown in (b)
Figura
2.7.client.
Interfaces
do mCrowd.
Ostask
usurios
que desejam
iniciar
uma tarefa
task view, and the
results
submitted
by
workers
are
shown
in
(c)
results
view.
postam a partir da (a) viso do solicitante, as tarefas postadas so mostrados

na exibio de tarefas (b) e os resultados apresentados pelos participantes so


mostradas em resultados (c). Fonte: [Yan et
2009].
Demonstration
4 al.References

[1] chacha: Your mobile bff. http://www.chacha.com.


The goal of our demonstration is to show how mCrowd
can facilitate crowdsourcing and discuss the potential ap[2] The ireport. http://www.ireport.com/about.jspa.
plications that are feasible
using
Allpara
SenSys
atmCrowd
foi mCrowd.
estruturado
suportar
quatro
tipo de tarefas: marcao de imagem,
[3] mcrowd: The worlds workforce at your fingertips.
tendees will be able to use our mCrowd system to post
captura
de Imagem,
consultas
consultas baseadas
em localizao. Na marcao
http://crowd.cs.umass.edu.
sensor-related
jobs and
obtain results
as welltextuais
as worke on
os objetos
interesse
so etiquetados
marcados
serem
consumidos
jobs postedde
byimagem,
other mCrowd
users indereturn
for monetary
[4] E.ou
Miluzzo,
N. D.para
Lane,
K. Fodor,
R. Peterson, H. Lu,
rewards, through
easy-to-use
client.marcar um determinado
pelosan
usurios,
poriPhone
exemplo,
emS.uma
imagem. J
cap- and A. T.
M. objeto
Musolesi,
B. Eisenman,
X. na
Zheng,
The usertura
interface
of
mCrowd
is
shown
in
figure
2.
On
the
Campbell.
Sensing
meets
mobile
social
networks: the
de imagens, a imagem capturada quando h interesse em um determinado local,
requester view, a requester can choose one of the category of
design, implementation and evaluation of the cenceme
como
de diverses.
Consultas
textuais so
destinadas a obter as opinies dos
tasks and post
it toparques
MTurk through
our mCrowd
proxy. The
application. In SenSys08, pages 337350, New York,
como,
por exemplo,
quaissupport.
os melhores restaurantes,
pontos
tursticos, entre oufigure showsusurios
the four types
of tasks
that we currently
NY, USA, 2008.
ACM.
Once a usertros.
postsConsultas
a task, it will
be
shown
as
an
entry
in
the
baseadas em localizao buscam[5]informaes
sobre locais
prximos
Amazon mechanical
turk. mais
https://www.mturk.com/
task list with an associated reward. Currently, we provide a
de
um
determinado
ponto
(por
exemplo,
restaurantes,
floriculturas,
entre
outros).
mturk/welcome.
free mode to users, wherein users can post jobs for free but
we offer a worker a small reward for providing an answer for
[6] Nokia sensor planet. http://research.nokia.com/
the task. 2.3. Privacidade e Confiabilidade em Mobile
research/projects/sensorplanet/index.html.
Crowd Sensing
Tasks posted by users are immediately posted on MTurk
[7] Urban sensing.
http://urban.cens.ucla.edu/
Esta asSeo
discute
osjobs
dois so
principais
problemas deprojects/peir/.
segurana enfrentados
por solues,
using mCrowd
special
mobile
that mCrowd
users can easily
accesse and
work on these
Note that in do usurio e a confiabilidade dos dados.
sistemas
aplicaes
MCS:jobs.
a privacidade
[8] L. von Ahn, B. Maurer, C. Mcmillen, D. Abraham, and
the figure, all the tasked posted through mCrowd are shown
M. Blum. recaptcha: Human-based character recognias the Mobile
tasks
that
reside
on
top
of
Other
tasks
that
c
Livro-texto de Minicursos
65
SBC Soc.
Bras. deScience,
Computao
tion via 2015
web security
measures.
August 2008.
are ordinary MTurk tasks. Workers explore the task list and
tab to choose a task to work on. In this case, the monetary
[9] The wikipedia. http://en.wikipedia.org/.
reward offered is 1 cent. Once the working results are submitted to MTurk successfully, they will appear in the results

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Em relao a privacidade, o problema a possibilidade da divulgao de informaes privadas (identidades, endereos fsicos e na Internet, rotas, estilo de vida, entre
muitas outras), uma vez que aplicaes MCS gerenciam grandes volumes de informao
que tipicamente so e devem ser tornadas pblicas.
J quanto a confiabilidade dos dados, o problema que no existem garantias de
que ou os dados inseridos pelos participantes so reais ou que as informaes mantidas
nos servidores ainda so reais.
2.3.1. Privacidade
O que privacidade? Na rea do Direito Civil, conceitua-se privacidade como a faculdade que tem cada indivduo de obstar a intromisso de estranhos em sua vida privada e
familiar, assim como de impedir-lhes o acesso a informaes sobre a privacidade de cada
um, e tambm impedir que sejam divulgadas informaes sobre esta rea da manifestao
existencial do ser humano [Vieira and Alves 2014]. Em outras palavras, privacidade o
direito de cada indivduo de manter e controlar o conjunto de informaes que o cerca,
podendo decidir se, quando, por que e por quem essas informaes podem ser obtidas
e usadas. Esse conjunto de informaes incluem desde o seu modo de vida, as relaes
familiares e afetivas, os segredos, os pensamentos, os hbitos, os fatos e at mesmo os
planos de futuro.
No paradigma MCS, devido suas caractersticas nicas, a privacidade envolve o
direito do usurio e/ou participante de permanecer livre de intrusos e autnomo. A privacidade em MCS traz preocupaes com a divulgao direta da identidade dos participantes bem como com a divulgao de atributos sensveis, incluindo locais (por exemplo,
endereo residencial ou do trabalho) e outras informaes privadas como atividades pessoais ou condies (por exemplo, estilo de vida ou doena) que permitam inferir sobre a
identidade dos participantes [Pournajaf et al. 2014].
Do ponto de vista dos participantes, as ameaas privacidade podem ocorrer
quando:
1. O participante recebe uma tarefa especfica e compartilha suas preferncias durante
a atribuio dessa tarefa ou notifica o servidor que aceitou a tarefa. Neste momento,
alguns atributos como a localizao, o tempo, os tipos de tarefas que o participante
est interessado ou alguns atributos do sensor que ele dispe podem ser revelados.
Embora seja possvel argumentar que estas informaes por si s podem no violar
a privacidade, o fato que elas podem permitir que algum (atacante, adversrio)
possa rastrear as tarefas selecionadas pelo participante e, consequentemente, revelar
sua identidade ou outros atributos sensveis [Shin et al. 2011]. Alguns dos atributos
que podem ser usados para rastrear os participantes so seus IDs, endereos IP ou
outras informaes de rede.
2. O participante realiza ou participa de tarefas espaciais com frequncia. Essa repetio pode levar divulgao de atributos sensveis, como endereo residencial ou,
eventualmente, sua identificao atravs de ataques de inferncia [Krumm 2007].
Nestes tipos de tarefas, mesmo que o participante esteja usando o aplicativo de
forma annima, sua trajetria pode revelar locais sensveis.
Livro-texto de Minicursos

66

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

3. No processo de definio de tarefas, uma entidade maliciosa (aplicativo ou uma


entidade separada) cria tarefas que impem limitaes estritas sobre os atributos do
participante ou o dispositivo que est carregando (por exemplo, exigindo um estilo
de vida especial ou um tipo de sensor raro para se qualificar para a tarefa). Este
ataque pode resultar na divulgao da identidade ou outros atributos sensveis do
participante que aceita uma tarefa to rigorosa [Shin et al. 2011].
4. No processo de distribuio de tarefas, uma entidade maliciosa (aplicativo, uma entidade separada ou outro participante) pode compartilhar tarefas para um conjunto
limitado de participantes para ser capaz de aprender seus atributos ou rastre-los
[Shin et al. 2011] (por exemplo, empurrar ou atribuir uma tarefa a apenas um participante).
5. Vrias aplicaes ou usurios finais podem conspirar para conectar-se a informao dos participantes, com a finalidade de desanonimizao. O usurio final malintencionado pode criar vrias aplicaes em uma tentativa de coletar mais dados
privados.
De acordo com Christin et al. [Christin et al. 2011], as principais informaes
reveladas quando ocorrem quebras na privacidade dos participantes so:
Tempo e Localizao: A divulgao desses dois tipos de dados tem si mostrado
altamente sensvel privacidade dos participantes, uma vez que permitem inferir
ou de fato obter endereos residncias e do local de trabalho, bem como as rotinas e hbitos dos participantes [Shilton 2009]. Por exemplo, visitas frequentes a
hospitais podem permitir que os empregadores infiram sobre a condio mdica
de seus empregados, assim como a participao em eventos polticos pode fornecer informaes sobre os pontos de vista polticos dos utilizadores [Liu 2007]. Em
resumo, sem qualquer mecanismo de proteco, a divulgao de informaes de localizao pode levar graves consequncias sociais [Shilton 2009]. Alm disso, as
ameaas resultantes do rastreamento de localizao e tempo no se limitam a aplicaes onde necessria autenticao. Mesmo no caso de contribuies annimas,
registros de localizao podem ser analisados para deduzir a identidade dos participantes com base na localizao de sua residncia e consultas as listas telefnicas
[Mun et al. 2009].
Amostras de Som: Alm inferir identidades e preferncias a partir de dados espaotemporais (tempo e localizao), a imagem dos usurios pode ser refinada com
amostras de outras modalidades de sensoriamento. Um bom exemplo so as amostras de som registradas intencionalmente pelos participantes ou capturadas automaticamente pelos dispositivos mveis. Enquanto os participantes podem facilmente
preservar a sua privacidade somente gravando eventos no-sensveis no primeiro
caso, os dispositivos mveis, de forma eficaz, se comportam como espies inteligentes no caso de gravaes automatizados. Mesmo em locais pblicos, o reconhecimento de padres sonoros caractersticos, que so exclusivos para determinados
eventos e locais, podem permitir que adversrios determinem o contexto atual de
um participante.
Livro-texto de Minicursos

67

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Fotos e Vdeos: O contedo de imagens e vdeos gravados tambm susceptvel a


revelar informaes pessoais sobre os participantes e seu ambiente. Por exemplo, a
aplicao SensoDiet [Reddy et al. 2007] marca as fotos tiradas das refeies consumidas e no existe qualquer contramedida para esconder os rostos das pessoas que
compartilham a refeio com os participantes. Em todos os cenrios em que a cmera orientada longe do participante, rostos de outras pessoas na vizinhana so
possivelmente capturados nas imagens, e, portanto, as concluses sobre o nmero
e a identidade das relaes sociais do participante podem ser feitas. A publicao
de imagens capturadas pode levar a consequncias semelhantes como as em redes
sociais online, como o Facebook. Semelhante a gravaes de som, o contexto do
utilizador atual e o ambiente em volta tambm podem ser extrados a partir dos
dados do sensor. Por exemplo, imagens que mostram pontos de interesse podem
facilmente estabelecer a presena do participante nesses locais.
Acelermetro: fcil pensar que as leituras de acelermetros presentes em dispositivos mveis so os dados menos importantes no que diz respeito a revelar
informaes pessoais sobre os participantes. No entanto, essa hiptese nem sempre verdadeira e muitas vezes pode servir como uma falsa sensao de segurana.
Por exemplo, se o celular est na cintura, informaes sobre a marcha, a forma de
caminhar, correr, entre outras, podem gerar possveis indicaes sobre a identidade
de um usurio [Derawi et al. 2010]. Assim, empregadores podem querer verificar
se seus funcionrios esto realmente trabalhando durante suas horas de trabalho.
Dados ambientais: Dados ambientais (registro de partculas, das concentraes
de gs ou presso baromtrica) podem no representar uma ameaa direta a privacidade dos participantes. No entanto, esses registros, quando combinados com
informaes secundrias, tais como temperatura, podem revelar a localizao dos
participantes a um nvel de granularidade melhor (um quarto dentro de um edifcio)
do que as obtidas via GPS ou outros servios de localizao.
Dados biomtricos: Da mesma forma que dados de um sensor biomtrico podem ser usados para o diagnstico do estado fisiolgico do usurio, atacantes e
adversrios podem identificar anomalias de sade ou doenas com base nos dados
capturados. Informaes mdicas vazadas podem ser utilizadas por companhias de
seguros de sade ou empregadores para revogar contratos, se um agravamento das
condies fisiolgicas dos participantes identificado.
Como forma de manter a privacidade dos usurios, e ao mesmo tempo disponibilizar as informaes coletadas, vrias tcnicas e mtodos de segurana so empregados.
So elas [Christin et al. 2011]:
2.3.1.1. Preferncias do Usurio
Permitir aos participantes expressarem suas preferncias de privacidade uma tcnica
que visa controlar o processo de coleta de dados junto ao dono do dispositivo sensor,
evitando assim danos privacidade dos participantes. Alm de simples, tambm permite
a aplicao em diferentes graus.
Livro-texto de Minicursos

68

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Das et al. [Das et al. 2010] propuseram um esquema binrio (acesso completo
aos dados do sensor ou nenhum acesso) que pode ser estendido atravs da introduo
de nveis intermedirios adicionais. Por exemplo, os participantes podem decidir ativar
seletivamente as medies do sensor, dependendo de uma variedade de fatores, como a
presena em locais sensveis (casa ou escritrio), e de pessoas de seu convvio social
(presena de amigos ou familiares). A seleo desses fatores permite aos participantes
expressamente indicar quais tipos de informao eles esto aptos e felizes a coletar em
diferentes contextos.
Os autores argumentam que um esquema com granularidade mais fina nas preferncias de sensoriamento pode permitir aos participantes ajustar tanto a atividade quanto
o tempo de atuao. Por exemplo, amostras podem ser recolhidas a cada hora ao invs de
a cada 15s ou as informaes de localizao podem ser capturadas em diferentes graus de
granularidade.
Embora essa tcnica no fornea claramente um trade-off entre privacidade e dados divulgados, ela obviamente melhora a aceitao global de uma soluo ao oferecer
granularidade de configuraes de privacidade para os participantes. Vale ressaltar que
embora algumas solues permitem que os usurios desativem totalmente sua funo sensora [Miluzzo et al. 2008, Shilton et al. 2008], isso de pouca utilidade para MCS.
2.3.1.2. Distribuio de Tarefas Anonimamente
A coleta de dados de um sensor geralmente desencadeada por meio de tarefas que especificam as modalidades de sensoriamento (por exemplo, regies de interesse, critrios
a cumprir para iniciar a captura, sensores usados e frequncia de amostragem) com base
nos requisitos da aplicao [Reddy et al. 2009]. Assim, as tarefas so distribudas para os
dispositivos que satisfaam os requisitos das tarefas.
Como explicado na Seo 2.2.2, a distribuio de tarefas pode ocorrer de forma
centralizada - atravs de um servidor de tarefas ou aplicativos, que seleciona os dispositivos apropriados com base em critrios pr-determinados para otimizar o processo de sensoriamento, de forma descentralizada, onde os prprios dispositivos, de forma autnoma,
gerenciam e distribuem tarefas ou de forma hbrida. Em todas essas trs abordagens, os
processos de contato e envio das tarefas podem colocar a privacidade dos participantes
em perigo de vrias maneiras, uma vez que baixar tarefas fornece informaes ao servidor de tarefas sobre a localizao dos participantes, com data e hora precisas. Alm disso,
a natureza das tarefas fornece dicas sobre os dispositivos utilizados.
Como forma de proteger os participantes, foram propostos alguns mecanismos
para assegurar o anonimato e a privacidade de localizao:
Transferncia das tarefas somente em locais densamente povoadas [Shin et al. 2011],
j que a alta densidade de pessoas presentes nesses locais torna a identificao dos
participantes pelo servidor difcil e, portanto, esconde suas identidades.
Autenticao baseada em atributos [Kapadia et al. 2009], onde ao invs de usar a
sua identidade, os participantes podem usar credenciais baseadas em criptografia
Livro-texto de Minicursos

69

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

que comprovam sua participao em um determinado grupo (por exemplo, os alunos matriculados no clube de ciclismo da universidade);
Esquemas de roteamento para preservao da privacidade de localizao, que visam esconder a localizao dos participantes [Kapadia et al. 2009] utilizando rotas
especficas.
2.3.1.3. Anonimato
Segundo o Dicionrio Aurlio, anonimato significa: (1) qualidade do que annimo; (2)
sistema de escrever anonimamente, sem se identificar; e (3) o mesmo que anonimado. De
forma geral, anonimato a qualidade ou condio de permanecer annimo. Em segurana da informao, anonimato o que permite ocultar qualquer informao que possa
identificar um usurios antes de compartilhar informaes.
Embora o uso de tcnicas de anonimato seja muito abrangente, em MCS a inteno remover qualquer informao que possa identificar os usurios/participantes ou
outras entidade durante a distribuio e realizao de tarefas [Pournajaf et al. 2014]. Os
mtodos de anonimato mais usuais para proteo da privacidade em MCS so:
Pseudnimos
Pseudnimo um mecanismo comum e at certo ponto simples para proteo
do anonimato e da privacidade dos participantes [Christin et al. 2011], visto que ao invs de transmitir nomes em texto simples, toda a interao com o aplicativo executado sob um pseudnimo. O uso de pseudnimos em tarefas de sensoriamento j bem
conhecido e empregado nos trabalhos de Shilton et al. [Shilton et al. 2008], Shilton
[Shilton 2009] e Deng e Cox [Deng and Cox 2009] e mais recentemente em Konidala et
al. [Konidala et al. 2013] e Gisdakis et al. [Gisdakis et al. 2014].
Vale ressaltar que o uso de pseudnimos no garante necessariamente a privacidade, especialmente em aplicativos baseados em localizao. Todos autores que empregam esse mecanismo so unanimes em afirmar que quando usado em conjunto com outros
esquemas de autenticao, solues base de pseudnimos garantem anonimato e confidencialidade para os participantes.
K-Anonimato
Alm dos esquemas de roteamento, mecanismos baseados no k-anonimato podem
ser aplicados para proteger a privacidade localizao dos participantes quando recebendo
tarefas ou enviando os dados. A ideia chave por trs k-anonimato [Sweeney 2002]
construir grupos de k participantes que partilham um atributo comum (por exemplo, os k
participantes localizados no mesmo distrito), tornando-os indistinguveis uns dos outros.
Diferentes mtodos vm sendo utilizados para encontrar um atributo comum apropriado e assim construir grupos de k usurios. Estes mtodos podem ser classificados em
Livro-texto de Minicursos

70

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

duas categorias principais de generalizao e perturbao [Huang et al. 2010b]. No primeiro caso, o valor original do atributo generalizado por um valor com menor grau de
detalhe. Por exemplo, as coordenadas exatas dos k participantes so substitudas pelo
nome do distrito da localizao atual.
Em Shin et al. [Shin et al. 2011], os autores usaram uma forma de generalizao
baseada na diviso de uma rea geogrfica em vrias regies, chamada de Tessellation,
para mapear os pontos de acesso. O ponto de acesso no centro de cada regio mantm um
registo do nmero mdio de dispositivos ligados, que igual ao valor mximo K que pode
ser conseguida dentro da regio. Para garantir k-anonimato em toda a rede, regies com
K < k so combinados em clulas com um valor igual soma de cada regio individual.
Uma vez que as clulas tenham sido definidas, os participantes marcam seus dados com
o limite geogrfico da sua clula atual ao invs de fornecer suas coordenadas exatas.
Por outro lado, a perturbao baseada na substituio dos dados dos sensores
originais por um novo valor resultante de uma funo aplicada s leituras dos sensores
de k membros do grupo. Por exemplo, a localizao de cada membro do grupo pode
ser substituda pela localizao mdia de todos os membros. Domingo-Ferrer e MateoSanz [Domingo-Ferrer and Mateo-Sanz 2002] usam micro-agregao para substituir o local real pela localizao mais prxima dos k participantes.
Um risco a solues de k-anonimato a possibilidade de ataques de homogeneidade, como apresentado por Machanavajjhala et al. [Machanavajjhala et al. 2007]. Esses
ataques exploram a monotonia de determinados atributos para identificar indivduos a partir do conjunto de k participantes.
Ocultao Seletiva
Locais sensveis podem ser selecionados pelos participantes e protegidos usando
a ocultao seletiva de localizao [Mun et al. 2009]. A ideia que quando um usurio
se aproxima de um local que foi definido previamente como sensvel, a aplicao gera
registros fictcios de localizao para evitar que o local seja selecionado. Obviamente,
os registros gerados so e precisam ser realistas, ou seja, devem realmente representar
estradas e ruas existentes. Em geral, um algoritmo de ocultao seleciona, primeiro, os
lugares mais prximos e, em seguida, refina a seleo levando em conta o histrico de
resultados dos participantes (por exemplo, suas capacidades fsicas com base em suas
experincias anteriores). Alm disso, o algoritmo ainda altera as atividades e modifica
sua durao para manter a consistncia dos resultados da aplicao.
Quando comparado k-anonimato, o esquema de ocultao seletiva melhora a
privacidade de localizao sem impactar os resultados da aplicao.
Agregao de dados
Em MCS, os dados precisam ser agregados e isso normalmente feito pelo servidor de aplicao ou algum servio prprio na nuvem. Contudo, a abordagem de agregao
Livro-texto de Minicursos

71

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

de dados para preservao da privacidade proposta em Shi et al. [Shi et al. 2010] no depende de uma entidade central para proteger a privacidade de dados, mas sim da proteo
mtua entre participantes. Antes de transmitir os dados para o servidor, os dispositivos mveis distribuem parcialmente seus dados entre os vizinhos. Em seguida, fazem o
upload dos dados de sensoriamento vindo de seus vizinhos e os restantes de seus prprios
dados. Esta distribuio diminui a probabilidade de atribuir, com sucesso, cada leitura do
sensor para o dispositivo mvel que realmente a capturou. Por exemplo, se os dois dispositivos mveis (A e B) trocam metade de seus dados, a probabilidade de que os dados
reportados por A ser realmente capturado por ele mesmo s de 50% e o mesmo para B.
Dependendo da natureza das funes de agregao, dois regimes distintos podem
ser aplicados. Para funes aditivas, cada dispositivo mvel particiona seus dados em
n + 1 fatias e envia uma fatia para cada um de n ns selecionados. Uma vez que cada
n distribuiu suas fatias para seus vizinhos, as fatias trocados e prpria fatia do n so
combinadas e enviadas para o servidor de agregao que ento capaz de calcular o
resultado agregado. Para as funes de agregao no-aditivas, tais como percentuais e
histogramas, um mtodo que combina corte, consulta de contagem e busca binria pode
ser aplicado. No entanto, esta abordagem s assegura a proteo da privacidade de dados
se os ns e o servidor no conspirarem para violar a privacidade de alvos potenciais.
2.3.1.4. Processamento de Dados
Em aplicaes tpicas de MCS e sensoriamento participativo, o processamento de dados
compartilhado entre os dispositivos mveis e servidores de aplicativos. No entanto,
devido s limitaes de recursos em plataformas mveis, a distribuio das tarefas de
processamento entre ambas as partes tipicamente feita em direo ao servidor. Embora
o pr-processamento seja geralmente levado a cabo sobre os dispositivos para reduzir a
quantidade de dados para transformar, a fim de economizar largura de banda e energia de
transmisso, processamento de tarefas complexas pode exceder o poder computacional de
dispositivos mveis, obrigando a execuo no servidor.
O processamento de dados no dispositivo mvel consiste, principalmente, na extrao de caractersticas, a partir dos dados brutos, a fim de remover informaes sensveis
(por exemplo, vozes humanas gravadas ou pessoas fotografadas) que possam pr em perigo a privacidade dos participantes e tambm para economia de recursos. Por exemplo,
um classificador de udio pode analisar as amostras de som para determinar se vozes humanas foram registradas [Miluzzo et al. 2008]. Alm disso, o nvel de intensidade das
amostras de udio pode ser determinado localmente atravs da execuo de algoritmos
de processamento de sinal para minimizar os dados a serem transferidos para o servidor
[Maisonneuve et al. 2009]. Aps processamento, os dados brutos podem ser excludos do
armazenamento local e os resumos processados so relatados ao servidor central.
No lado do servidor, os dados relatados podem ento ser processado para eliminar
informaes sensveis sobre a privacidade, tais como as caractersticas de identidade ou
dados que ameaam o anonimato/privacidade dos participantes. Por exemplo, os dados
capturados podem ser agregados entre vrios participantes para torn-los indistinguveis
ou publicados sob a forma de estatsticas [Ganti et al. 2011] e mapas [Dong et al. 2008].
Livro-texto de Minicursos

72

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Ao fazer isso, os dados confidenciais no esto diretamente relacionados aos usurios


finais, o que evita a identificao direta dos participantes. No entanto, os participantes
devem contar com o aplicativo para: anonimizar eficientemente os dados, proteger suficientemente sua privacidade, e no divulgar informaes sensveis privacidade em seus
dados comunicados a terceiros.
2.3.1.5. Controle de Acesso e Auditoria
Dependendo do cenrio de aplicao, os resultados de um sensoriamento podem no ser
s de interesse dos participantes, mas tambm de outras pessoas como, por exemplo,
pesquisadores, pessoal mdico, amigos, familiares, conselhos municipais ou at mesmo
um pblico maior. No entanto, os participantes podem no estar dispostos a partilhar
seus dados com todos os tipos de pessoas dentro do grupo de pessoas interessados com
a mesma granularidade. Alm de abordar questes de privacidade antes do processo de
sensoriamento e da liberao de dados para a aplicao, os participantes podem definir o
pblico-alvo que est autorizado a acessar seus dados a partir da interface de usurio de
muitas aplicaes.
Os participantes podem definir grupos [Grosky et al. 2007, Gaonkar et al. 2008],
selecionar certas pessoas [Reddy et al. 2007, Gaonkar et al. 2008, Shilton 2009] ou autorizar todos [Gaonkar et al. 2008]. Podem tambm refinar sua seleo, especificando a
natureza dos dados que compartilham, bem como definir subconjuntos especficos de dados acessveis [Reddy et al. 2007, Miluzzo et al. 2008, Shilton 2009]. Alm disso, eles
podem definir condies precisas de liberao do acesso aos dados [Shilton et al. 2008].
Para destacar as implicaes de privacidade de partilhar dados, ferramentas grficas, incluindo mapas ou imagens, so usadas para visualizar os dados sendo liberados e aumentar a conscincia dos participantes [Shilton et al. 2008]. Depois que os dados foram publicados, os participantes tambm podem monitorar o acesso aos dados,
consultando arquivos de log da aplicao. Esses logs registram a natureza dos dados
acessados, a frequncia desses acessos, bem como a identidade das pessoas a acess-los
[Shilton et al. 2008, Shilton 2009, Mun et al. 2010]. Com base nos resultados dessas auditorias, os participantes controlam a distribuio de suas informaes e podem julgar sua
adequabilidade. Se necessrio, eles podem atualizar suas polticas de controle de acesso
para restringir ou ampliar as condies de autorizao, a fim de corresponder s suas
preferncias de privacidade.
2.3.2. Confiabilidade dos Dados
Embora, num primeiro momento possa ser difcil estabelecer uma relao entre confiabilidade dos dados e segurana em MCS, fcil afirmar que o simples fato de haver
participao humana no processo j o problema. Em outras palavras, os dados coletados e enviados pelos participantes nem sempre podem ser tratados ou considerados como
confiveis. Os motivos so:
1. Contribuies erradas: Infelizmente, aplicaes MCS podem permitir que qualquer participante possa contribuir com dados, o que significa que as aplicaes
Livro-texto de Minicursos

73

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

podem receber dados errados e mal intencionados. Os participantes podem propositalmente registrar medies incorretas, colocando seus dispositivos em posies
inadequadas. Por exemplo, gravaes de udio incorretas podem ser obtidas caso
o dispositivo mvel do participante esteja indevidamente colocado em locais que
atrapalham seu funcionamento, como no bolso durante uma tarefa de deteco de
rudo.
2. Conluio: Nos atuais sistemas de reputao que usam MCS, cada participante pode
publicar falsos relatrios para o servidor de aplicativo e fornecer informaes arbitrrias sobre os valores durante o processo de votao de reputao. Alm disso,
atacantes podem conspirar para inutilizar aplicativos MCS.
3. Contribuies mal-intencionadas: Participantes mal-intencionados, para seus prprios benefcios, podem forjar informaes para obter um maior ganho antes de
finalizar tarefas que envolvem algum tipo de ganho monetrio [Tuncay et al. 2012].
O problema da confiabilidade dos dados geralmente discutido como diretamente
relacionado a privacidade dos usurios [Pournajaf et al. 2014, Ganti et al. 2011] . Por
exemplo, para alcanar a confiabilidade dos dados de localizao dos participantes, algumas solues baseiam-se em verificar a localizao segura do dispositivos mveis em
tempo real [Capkun et al. 2006] enquanto outras tentar estimar a confiabilidade dos dados
coletados.
Contudo, pesquisas recentes envolvendo sistemas confiveis (trusted system) aplicados a MCS vm sendo realizadas. Em linhas gerais, estes sistemas se concentram em
como avaliar a confiabilidade dos dados compartilhados e como manter a reputao de
entidades da rede de processamento de dados. Huang et al. [Huang et al. 2010a] propuseram um sistema de reputao com base na funo de Gompertz para calcular scores de
pontuaes de dispositivos para medir a confiabilidade dos dados coletados. No entanto,
ele no leva em conta a preservao da privacidade.
Mais recentemente, vrios esquemas de reputao que esto tm sido propostos [Dua et al. 2009, Christin et al. 2012, Li et al. 2014, Shin et al. 2011]. Algumas das
abordagens [Dua et al. 2009, Christin et al. 2012] invocam a existncia de uma terceira
parte confivel, mas o estabelecimento e manuteno desta entidade em um ambiente
distribudo no trivial. No esquema de [Dua et al. 2009], vrios pseudnimos so atribudos para cada participante. Um servidor confivel necessrio para gerenciar o mapeamento entre a verdadeira identidade um participante e seus pseudnimos, e os valores
de reputao entre os diferentes pseudnimos. Em comparao com outros mtodos,
este mtodo no requer operaes criptogrficas caras e tem baixo custo de comunicao.
Alm disso, Dua et ai. [Christin et al. 2012] props e implementou um Trusted Platform
Module (TPM), que um microcontrolador embutido dentro de cada dispositivo mvel,
para atestar a integridade de leituras dos sensores. No entanto, os chips TPM ainda no
so amplamente adotado em dispositivos mveis.
Alguns mtodos que no dependem da existncia de uma terceira parte de confiana foram propostos. Em [Li et al. 2014], foi proposta uma soluo de preservao da
reputao de anonimato chamado IncogniSense. Ele gera pseudnimos peridicos usando
Livro-texto de Minicursos

74

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

assinaturas cegas e disfara valores exatos de reputao dinamicamente em grupos de reputao. Por exemplo, a soluo depende de uma redundante nmero de participantes e
incorre em despesas gerais de comunicao pesados. Shin et al. [Shin et al. 2011] props
outra soluo baseada em assinatura cega. Os autores consideraram o problema do ponto
de vista do incentivo e tem como objetivo permitir aos participantes ganharem crditos
atravs de contribuies. Assim, a necessidade de penalizar participantes maliciosos no
precisa ser considerada.
Alm disso, fazendo uso do fato de que mltiplas fontes de informao esto
geralmente disponveis em uma rede, Wang et al. [Wang et al. 2011b] propuseram avaliar
a semelhana de mltiplas informaes de diferentes fontes sobre o mesmo acontecimento
e, em seguida, ajustar a pontuao de confiana de cada parte de informao. Com base
na avaliao de confiana, as pontuaes de confiana de ns tambm pode ser ajustada
dinamicamente.

2.4. Implementaes Seguras e de Segurana para MCS


Esta Seo apresenta algumas arquiteturas de aplicaes MCS projetadas para garantir
a segurana e privacidade dos usurios. Tambm apresenta ferramentas e bibliotecas
voltados segurana em sistemas MCS. Primeiramente sero discutidas as arquiteturas e
posteriormente as bibliotecas. No fim, uma discusso sumariza os trabalhos apresentados.
2.4.1. Arquiteturas
Anonymous Authentication of Visitors for Mobile Crowd Sensing at Amusement
Parks
Konidala et al. [Konidala et al. 2013] elaboraram um aplicativo que emprega
pseudnimos certificados e um esquema de assinaturas parcialmente cegas para garantir a autenticidade e privacidade de usurios em parques de diverso. A primeira tcnica
utiliza criptografia para tornar annima a presena do visitante no parque. J a assinatura
parcialmente cega (Partially Blind Signature) permite ao visitante ocultar a mensagem a
ser assinada bem como explicitamente incorporar informaes necessrias como, data da
emisso, data da validade, a identidade do assinante.
Em linhas gerais, a soluo funciona da seguinte forma: ao chegar no parque, o
visitante solicita o aplicativo, instala e informa dados como idade, sexo, nacionalidade,
altura (para recomendao de atraes), restries alimentares, alm de problemas de
sade e preferncias de passeio. Para manter a privacidade do usurio, alguns dados so
omitidos e no so solicitados, como nome, endereo, entre outros. Aps essa coleta, o
aplicativo envia as preferncias e localizao do usurio para o servidor de aplicativos, gerenciado pelo parque, o que permite ao servidor ser capaz de produzir, de forma dinmica,
um itinerrio personalizado para cada visitante. Como incentivo para uso do aplicativo e
eliminao dos tickets fsicos, o visitante concorre a prmios e participa de promoes.
A soluo tambm permite ao parque gerir e implantar seus recursos de forma
eficiente, melhorando o fluxo de acesso s atraes e analisando vrios ndices de desempenho (filas, idade, tempo de espera de cada atrao, atraes mas requisitadas, entre
Livro-texto de Minicursos

75

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

outras). Com a localizao dos visitantes, o parque tambm pode inferir sobre o comportamento de grupos e visitantes individuais. Os autores acreditam que com a soluo
proposta pode alcanar um nvel satisfatrio de segurana, porm no asseguram que o
visitante tenha sua privacidade totalmente preservada, tendo em vista que algumas informao so armazenadas e existem fatores alheios ao escopo do trabalho como, por
exemplo, uso de WiFi dentro do parque.
No que diz respeito a segurana, os autores desenvolveram um protocolo para autenticao annima dos visitantes (AAV). O protocolo utiliza pseudnimos para dissociar
os dados dos visitantes de suas verdadeiras identidades e um procedimento de ofuscao,
implementado atravs de um esquema de assinatura parcialmente cega (fase de emisso
de pseudnimos certificados). Assim, nenhum pseudnimo de visitante revelado para o
servidor de aplicativo. Como o servidor de aplicativo no tem nenhum papel na gerao
dos pseudnimos, ele no pode vincular o pseudnimo de qualquer visitante com qualquer ticket ou carto de crdito utilizado para a compra de bilhetes. Segundo os autores,
o protocolo alcana uma autenticao annima, atravs do qual o servidor de aplicativo
aceita dados somente de pseudnimos que foram certificados.
Para lidar com ataques de falsa localizao, o protocolo usa a abordagem de
[He et al. 2011], onde o servidor formula e poem em prtica certas heursticas, tais como
calcular o tempo decorrido entre o local anterior dos visitantes e a localizao atual. Se
esse tempo coincide com o tempo mdio gasto por outros visitantes entre os mesmos dois
locais, os dados so considerados legtimos. Sempre que o servidor de aplicativo identifica que os dados de um determinado pseudnimo no corresponde a estas heursticas e os
valores limite, o servidor pode revogar o pseudnimo certificado e negar todas as comunicaes futuras. O protocolo tambm usa HTTPS, por padro, no canal de comunicao
entre o aplicativo e o servidor.
SPPEAR: Security Privacy-preserving Architecture for Participatory-sensing Applications
Com o foco direcionado em preservar a privacidade dos participantes e permitir
a concesso de incentivos aos participantes, Gisdakis et al. [Gisdakis et al. 2014] propuseram um arquitetura para Sensoriamento Participativo que faz uso de pseudnimos.
Denominada SPPEAR, a arquitetura abrangente e segura, e capaz de: (i) ser escalvel,
confivel e aplicvel a qualquer tipo de aplicao de sensoriamento participativo e MCS;
(ii) garantir a no identificao dos usurios, oferecendo forte proteo a privacidade; (iii)
limitar a participao de usurios legtimos de forma totalmente responsvel; (iv ) evitar
de forma eficiente que as identidades dos usurios sejam reveladas; (v) ser resiliente as
entidades participantes; e (vi) poder suportar vrios mecanismos de incentivo de forma a
preservar a privacidade.
A arquitetura SPPEAR formada por:
Usurios: Atuam tanto como produtores de informao (ou seja, enviando dados)
quanto consumidores de informao (ou seja, solicitando informaes do sistema).
Os dispositivos de usurios com capacidades de sensoriamento participam das tareLivro-texto de Minicursos

76

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

fas submetendo amostras autenticadas ou por meio de consulta aos dados coletados.
Servio de Tarefas - TS: Esta entidade inicia tarefas e campanhas de sensoriamento. Tambm, define e fornece as recompensas que os participantes recebero
por suas contribuies.
Gerente de Grupo - GM: responsvel por registrar os dispositivos do usurio e
emitir as credenciais annimas para eles. Alm disso, o GM autoriza a participao
de dispositivos em vrias tarefas de forma indiferente, usando tokens de autorizao.
Provedor de identidade - IdP: Oferece servios de gerenciamento e identificao
de credenciais (por exemplo, autenticao de usurio e controle de acesso, entre
outros) para o sistema.
Certificao pseudnimo Authority - PCA: Fornece credenciais annimos efmeras, denominadas pseudnimos, para os dispositivos. Um pseudnimo um
certificado X.509, que se liga a uma identidade annima com uma chave pblica e
que possui uma validade, medida em tempo. PCA gera a quantidade desejada de
pares de chaves e gera o mesmo nmero de assinaturas de pedidos de certificado.
Servios de Agregao de Amostras - SAS: Os dispositivos de usurio mandam
amostras para esta entidade que responsvel por armazenar e processar os dados
coletados. Para cada amostra submetida autntico, o SAS emite um recibo para o
dispositivo, que depois o envia para reivindicar crditos para a tarefa de deteco.
O SAS possui interfaces que permitem a qualquer usurio autenticado e autorizado
consultar os resultados das tarefas de sensoriamento e campanhas.
Autoridade de Resoluo - RA: a entidade responsvel pela revogao do anonimato dos dispositivos (por exemplo, dispositivos que perturbam o sistema ou poluem o processo de recolha de dados).
A Figura 2.8 apresenta a arquitetura SPPEAR.
Uma vez que separa processos e funes atravs de entidades, de acordo com o
princpio de separao de direitos: a cada entidade dado o mnimo de informaes
necessrias para executar a tarefa desejada, SPPEAR atinge os objetivos de segurana e
confiabilidade para qualquer aplicao.
Participatory Privacy: Enabling Privacy in Participatory Sensing
Em [De Cristofaro and Soriente 2013], Cristofaro e Soriente propuseram uma arquitetura de reforo a privacidade para aplicaes MCS. A arquitetura proposta, denominada PEPSI (Figura 2.9) faz uso de um provedor de servios de aplicaes que gerencia
as campanhas MCS. Os participantes (chamados de ns mveis) enviam relatrios dos
dados de sensoriamento para o provedor de servios, que aps processar os dados, encaminha os relatrios aos usurios finais. PEPSI envolve uma quarta entidade, designada
Livro-texto de Minicursos

77

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Servidor(de(
Tarefas(

1.(Descrio(da(Tarefa(

GM(
Convel)

7.(Crditos(
6.(Resultados(

Convel)

SAS(

5.(Amostras/Consultas(

2.(Registro(

Usurio(

3.(AutenHcao(

IdP(

4.(Fornecimento((
do(Pseudnimo(
Convel)

Convel)

PCA(

Figura 2.8. Viso geral da arquitetura SPPEAR

como autoridade de registro. Ela responsvel pela definio inicial dos parmetros do
sistema e pelo registro dos ns mveis e usurios finais.
Uma vez que um dos principais objetivos da PEPSI ocultar relatrios de dados
e consultas de pessoal no autorizado, todos os dados, relatrios e consultas so criptografadas. PEPSI usa Identidade baseada em Criptografia (Identity-base Encryption IBE). Cada relatrio identificado por um conjunto de rtulos (etiquetas), que so usados
??como identidades. Assim, ns mveis podem derivar uma chave de criptografia pblica
nica a partir desses rtulos e us-la para criptografar os relatrios a serem transmitidos
ao provedor de servio. Durante o registro, ns mveis registram esses rtulos para a
autoridade de registro, que, em seguida, atua como o gerador de chave privada do sistema
IBE. Ele gera a chave de decifrao privada correspondente a esses rtulos e passa a chave
privada para os usurios finais interessante sobre seu registro.
Outra caracterstica de PEPSI que o provedor de servios no apenas retransmiti
todos os relatrios a todos os usurios finais. Isto geraria uma carga de processamento
pesada para os usurios finais, porque eles precisariam tentar todas as suas chaves privadas para descriptografar um relatrio. Ao invs disso, o provedor de servios impe um
mecanismo de marcao atravs do qual ele pode combinar, de forma eficiente, os relatrios com as consultas. O mecanismo exige que os ns mveis etiquetem cada relatrio
com um token criptogrfico que identifica o tipo de relatrio apenas para usurios finais
autorizados, sem vazamento de nenhuma informao do relatrio. A marca calculada
a partir das mesmas etiquetas utilizadas para derivar a chave pblica. Ao mesmo tempo,
devido s propriedades de mapeamento bilinear inerente a IBE, usurios finais podem
computar a mesma marca para o mesmo relatrio usando suas chaves de criptografia privadas e fornecer a etiqueta para o provedor de servios quando fizer uma subscrio de
consulta. Em seguida, o provedor de servios apenas encaminha um relatrio marcado
aos usurios finais que forneceram a mesma marca.
Towards a Practical Deployment of Privacy-preserving Crowd-sensing Tasks
Livro-texto de Minicursos

78

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Provedor'de'Servio'
Consultas'e'entrega'de'relatrios''
Usurios(Finais(

Registro'dos''
Usurios'Finais'

Dados'
Reportados'

Registro'do'N'Mvel'
N(Mvel((
(Par4cipante)(

dsdsdsdsdsds'

Figura 2.9. Arquitetura PEPSI. Fonte: [De Cristofaro and Soriente 2013]

Haderer et al. [Haderer et al. 2014] apresentaram uma nova plataforma de Crowdsourcing capaz de preservar a privacidade atravs da unio de dois middlewares conhecidos: APISENSE e PRIVAPI.
APISENSE uma plataforma de Crowdsourcing mvel que facilita a implantao
de experincias MCS por cuidar dos desafios crticos neste domnio [Haderer et al. 2013].
Ela fornece uma plataforma de Software-as-a-Service, onde experimentos so descritos
como scripts que sero enviados para os dispositivos mveis, a fim de recolher dados. A
arquitetura distribuda do APISENSE formada pelo: (i) servio Hive, responsvel por
gerenciar a comunidade de usurios mveis e publicar as tarefas de sensoriamento; (ii)
Honeypot, utilizado para descrever as tarefas como scripts (com base em uma extenso
de JavaScript) e envi-los para (iii) os dispositivos mveis, que recebem e executam as
tarefas. A plataforma APISENSE apoia a implementao de diferentes estratgias de incentivo, incluindo feedback do usurio, ranking do usurio e recompensas. A seleo de
estratgias de incentivo depende da natureza das experincias Crowdsourcing. No que diz
respeito a privacidade, uma camada no dispositivo mvel implementa vrios algoritmos
para filtrar e perturbar informaes sensveis (por exemplo, catlogo de endereos, localizao) dependendo das preferncias do usurio. O usurio mantm o controle do seu
dispositivo mvel para seleccionar os sensores, bem como quando e onde estes sensores
pode ser utilizados pela plataforma.
PRIVAPI um middleware de preservao da privacidade que pode ser facilmente
integrado no topo da APISENSE. Seu objetivo pr-processar os dados recolhidos de
mobilidade antes de ser liberado. Graas ao seu conhecimento sobre o conjunto de dados inteiro, pode-se usar uma estratgia de anonimizao ideal nos dados de mobilidade
enquanto ainda oferece um nvel satisfatrio de utilidade.
A Figura 2.10 apresenta a arquitetura proposta.
Livro-texto de Minicursos

79

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015


APISENSE))
Hive)Service))

as
ref
Ta

Re
co
mp
en
s

a)

Dados)com)
privacidade)
preservada)

101000110101010010#
Dados))

Dados)coletados))
HoneyComb)APISENSE))

PRIVAPI))

Figura 2.10. Viso geral da arquitetura proposta

Figure 1: Architecture of the data collection platform.

2.4.2. Bibliotecas

experiments in order to ease their recruitment and therefore

unique anonymization strategy that always performs well

sensors as a mean to abstract the individual devices and


therefore oer a set of additional services that self-organize
a group of mobile devices to orchestrate the retrieval of
datasets according to dierent strategies (e.g., round robin,
energy-aware). The APISENSE platform supports the implementation of dierent incentive strategies, including user
feedback, user ranking, user rewarding and win-win services.
The selection of incentive strategies carefully depends on the
nature of the crowdsourcing experiments.
Concerning privacy, a first layer is deployed on the mobile device and implements several algorithms to filter out
and blur sensitive information (e.g., address book, location)
depending on user preferences. The user keeps the control
of her mobile phone to select the sensors to be shared, as
well as when and where these sensors can be used by the
platform.

dataset.

3.

middleware protecting mobility data by producing privacy-

on the nature of the datasets to be collected. The


but many from which we can choose the one that fits the
Cach:focus
Caching
Location-Enhanced Content to Improve
User Privacy
APISENSE platform also implements the concept of virtual
best to the usage that will be done with the anonymized

Amini et al. [Amini et al. 2011] propuseram Because


a criao
uma
biblioteca
capaz
of the de
threats
related
to points of
interest, we
have implemented an original anonymization strategy that
que atender a uma quantidade significativa de aplicaes
que
realizam
a busca
dethat
dados
focuses on
hiding
these places.
To achieve
we use an
algorithm that
speed along
(typically
de localizao dos usurios. Denominada Cach, o objetivo
da smoothes
biblioteca,
alma trajectory
de dar suone day of data) to guarantee that speed is constant. This
porte o outros aplicativos, oferecer aos usurios umstill
nvel
detoprivacidade
aceitvel,
allows
analyze the trajectory
of a usertendo
but prevents
find out places where he stopped during his day. First
em vista a crescente preocupao com a exposio deto
informaes
sensveis.
Arquitetada
experiments show that under such a protection utility of
our anonymized
dataset remains high
for useful
para trabalhar como um repositrio de localizao, aplicada
a privacidade,
Cach
atuadata
re-mining
tasks such as finding out crowded places or predicting traffic.
alizando uma pr-busca das informaes solicitadas antes que o usurio necessite. Como
4. CONCLUSION
a busca feita localmente, o usurio evita que sua localizao
seja exposta no momento
We introduced a privacy-preserving crowd-sensing platque realmente esteja utilizado-as. Assim, ao invs deform
compartilhar
localizao
atual em
composed of two a
complementary
components.
APISENSE2
as an open platform that can be used to quickly deploy
cada pedido de informao, o usurio s precisa compartilhar
o perodo
de tempo.
a wide diversity
of crowdsourcing
tasks. PRIVAPI is a
THE PRIVAPI MIDDLEWARE
APRIVAPI
biblioteca
funciona da seguinte maneira (Figura
2.11).
Emanonymized
primeirodatasets.
lugar, existe
preserving
yet useful
is a generic middleware that can be integrated
with any crowd-sensing
platform.
It focuses ao
on protecting
a necessidade
do aplicativo
se adequar
Cach. Por5.exemplo,
o
desenvolvedor
do aplicaACKNOWLEDGMENTS
mobility data, which comes with specific threats against lotivo deve
fornecer
algumas
informaes
como
a forma
de fazer
o download
do
This work
was supported
by the
LABEX IMU (ANR-10cation
privacy. We
have previously
studied in [3] relevantes
the impact
LABX-0088) of Universite de Lyon, within the program Inof points of interest, which are places where a user spends
contedo,
URL
de
acesso
e
intervalo
de
atualizao
do
contedo.
Depois,
o
usurio
insvestissements dAvenir (ANR-11-IDEX-0007) operated by
significant amounts of time like his home, his office, a cinthe French de
National
Agency
(ANR).
ema, etc. These
places are highly
sensitive
they as regies
tala o aplicativo
habilitando
o Cach
e because
seleciona
seu Research
interesse.
Em
seguida,
convey rich semantic information. Moreover, they allow to
o Cachalmost
realiza
o download
e atualiza
otheir
contedo
com
na taxa de atualizao que o
uniquely
identify individuals
by studying
mobil6. base
REFERENCES
ity patterns. We have shown that even a recent state-of-the
[1]com
N. Haderer,
R.de
Rouvoy,
and L. Seinturier.
Dynamic
desenvolvedor
especificou.
Como
o
Cach
trabalha
bloco
informaes
relativaart protection mechanism still allows to re-identify at least
Deployment of Sensing Experiments in the Wild Using
60
%
of
the
points
of
interest
from
a
real-life
dataset.
mente grandes, esperado o momento mais oportuno para
baixarInoDAIS
contedo
e atualiza-lo
Smartphones.
2014, pages
4356.
PRIVAPI leverages the global knowledge of the whole sys[2] J. Krumm. Inference
Attacks
on Location
Tracks.
(por exemplo,
quando
o
dispositivo
mvel
estiver
conectado
a
uma
conexo
WiFi).
A In
tem to apply an optimal anonymization strategy and proPervasive 2007, pages 127143.
duce a privacy-preserving mobility dataset. Because publtima etapa
acontece
quando
a aplicao
exigeitum contedo,
que
recuperado
do Cach
[3] V. Primault,
S. Ben
Mokhtar, C. Lauradoux
and L.
lished data
will be used
by researchers
or industrials,
Brunie. Dierentially Private Location Privacy in
must
guarantee
both
privacy
and
utility.
A
minimum
level
ao invs de fazer uma consulta externa. Desta forma,Practice.
o contedo
ser utilizado offline
In MOSTa2014.
of privacy must be enforced, as parametrized by the users
(sem necessidade
de conexo
desame
dados).
Segundo
o 2autor, sua arquitetura semelhante a
and/or the platform
owner. In the
time, our
middleAPISENSE online: http://www.apisense.com
ware wants to be utility-driven. We believe there is not one
um proxy
Internet (no transparente).

Embora no tenha sido criado especificamente para MCS, Cach, atravs do uso
da pr-busca, permite o uso de contedo com capacidade de localizao, garantindo a
privacidade do usurio, sem contar com os benefcios relacionados ao download de dados. Cach tambm incentiva os desenvolvedores de aplicativos a elaborarem ideias para
melhorar a privacidade do usurio como, por exemplo, trabalhar com esquemas melhores
de amostragem para que os usurios no necessitem acessar contedo online e sem a necessidade de de infraestrutura de terceiros para garantir a privacidade dos usurios.
Livro-texto de Minicursos

80

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 2.11. Funcionamento do Cach. Uma vez que o desenvolvedor tenha


registrado a aplicao (1) e o usurio ter especificado as regies para quais contedos devem ser armazenados em cache (2), o Cach faz o pedido e armazena
o contedo (3) para uso futuro pela aplicao (4). Fonte: [Amini et al. 2011].

2.5. Pesquisas em Aberto


Neste Captulo j foram discutidas as ameaas segurana em MCS, bem como foram
apresentados algumas solues, ferramentas e bibliotecas seguras ou que fornecem segurana para MCS. O leitor deve ter percebido que as solues so normalmente sob medida
(para atender uma determinada situao) e que prticas para lidar com a privacidade so
escassas. Assim, ainda existe uma ampla gama de desafios de pesquisa sem soluo. Esta
Seo destaca algumas pontos de pesquisa ainda em aberto.
2.5.1. Como inserir os participantes na questo da privacidade
Um dos principais desafios para novas geraes de sistemas e aplicaes MCS a incluso
dos participantes na questo da privacidade. Para tanto, os seguintes aspectos precisam
ser estudados:
Privacidade sob medida: Nas atuais solues, a noo de privacidade altamente
individual e depende do ponto de vista e da opinio do usurio. Assim, fundamental para criar conscincia para as ameaas privacidade ao usurio, e ajud-lo,
tornando a configurao complexa de aplicaes de sensoriamento participativos
de fcil compreenso. No entanto, a maioria das contramedidas de preservao da
privacidade discutidos no apresentam uma interface de usurio que pode sensibilizar e facilitar a compreenso dos mecanismos complexos em uso. Interfaces de
usurio personalizadas, que consideram as caractersticas originais de dispositivos
mveis, so, portanto, muito procurados. Alm disso, a existncia de tais interfaces
podem incentivar a aceitao e, mais tarde, a adoo dos mecanismos de preservaLivro-texto de Minicursos

81

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

o da privacidade por parte dos participantes, como eles sero capazes de entender
melhor (atravs das interfaces) os meandros dos mecanismos.
Facilidade de uso: A usabilidade das aplicaes e suas configuraes de privacidade precisam ser levadas em considerao. Toda vez que um participante
obrigado a realizar uma extensa e manual configurao de suas preferncias, frequentemente sua pacincia termina e ela acaba ou por deixar as configuraes no
modo padro ou por marca quaisquer opes sem entender as implicaes de suas
escolhas. O estudo de Gross e Acquisti [Gross and Acquisti 2005] demonstra essa
situao no caso das configuraes de privacidade em redes sociais online.
A transparncia dos nveis de proteco da privacidade: Para avaliar se a proteco da privacidade oferecida adequada, os usurios precisam ser capazes de
comparar o nvel oferecido de proteo contra seus requisitos de proteo individual. Embora a maioria das solues pesquisadas baseiam suas avaliaes em mtricas matemticos e verificveis, a percepo do usurio e seu nvel de satisfao
com as solues existentes no tem sido explicitamente considerado.
Incorporao de feedback do usurio: Alm de fornecer interfaces de usurio
para configurar os nveis de privacidade, insights sobre como a proteo percebida e para quais extenses os usurios esto envolvidos na configurao de suas
configuraes de privacidade so obrigados a apresentar a usabilidade.
Em linhas gerais, os usurios ainda so considerados no processo de avaliao da
usabilidade e utilidade das solues de privacidade. Os estudos existentes na rea apenas
correlacionam preocupaes com a privacidade com as modalidades de sensoriamento
usadas (Klasnja et al., 2009), ou analisam a forma como os participantes entendem, selecionam e se comportam com os mtodos, por exemplo, de ocultao da localizao (Brush
et al. , 2010).
2.5.2. Adaptabilidade das Solues de Privacidade
Toda vez que uma nova modalidades de sensoriamento incorporada as plataformas de
dispositivos mveis, surgem novas famlias de aplicaes e surgem tambm novos desafios a privacidade. A capacidade de lidar com essa ampla gama de cenrios extremamente necessria. Assim, as futuras solues de segurana e privacidade em MCS
precisam ser combinveis e adaptveis.
Entre as questes esto:
Aplicaes independentes X solues sob medida: Algumas das solues apresentadas neste Captulo so ou foram adaptadas para cenrios de especficos. Por
exemplo, a ocultao de locais sensveis, atravs da criao de registros falsos de
localizao para evitar correlaes entre usurios e locais s foi avaliada no cenrio aplicao PEIR [Mun et al. 2009]. Outros cenrios precisam ser investigados
para determinar os limites potenciais e os inconvenientes das solues propostas
em funo das especificidades de aplicao. Esta investigao ir destacar as mudanas necessrias para proceder a partir de solues de privacidade adaptados aos
conceitos de privacidade de aplicao agnstica.
Livro-texto de Minicursos

82

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Abordagem sistmica: No existe, ou pelo menos os autores deste Captulo no


encontraram, uma arquitetura de privacidade flexvel que aborde o problema do
ponto de vista do sistema. Existem vrias contramedidas onde os aspectos de privacidade so abordados.

Cenrios evolutivos de sensoriamento: Em cenrios nos quais as caractersticas


dos dados dos sensores so conhecidas antecipadamente, solues de privacidade
podem ser adaptadas em conformidade, por exemplo, pela adio de rudo com
propriedades correspondentes. No entanto, em caso de sensoriamento de cenrios
dinmicos e/ou imprevisveis, em que as caractersticas dos dados do sensor no podem ser determinadas com antecedncia, novos conceitos de privacidade precisam
ser inventados.

2.5.3. Trade-offs entre Privacidade, Desempenho e Fidelidade dos Dados


Mecanismos robustos para proteo da privacidade (remoo ou ofuscao de leituras do
sensor, por exemplo) podem influenciar a fidelidade de dados, o atraso no sensoriamento
ou a integridade dos dados. No entanto, proteger a integridade dos dados do sensor neutraliza mecanismos de preservao da privacidade. Consequentemente, existe um trade-off
entre as garantias de privacidade e fidelidade.
J est claro que a participao do usurio precisa ser incentivada atravs da garantia da sua privacidade. Por outro lado, sistemas vulnerveis ou defeituosos podem contribuir para que dados corrompidos ou errados sejam utilizados pelas aplicaes. Percebese ento que existe um trade-off entre anonimato e qualidade/integridade dos dados.
Para evitar que dados degradem a preciso dos resultados das aplicaes, os dispositivos
ou os dados em questo precisam ser identificados e eliminados a partir do conjunto de
dispositivos encarregados do sensoriamento. Assim, a investigao sobre sistemas de reputao que servem tanto para o anonimato quanto para as exigncias e especificidades
dos cenrios de sensoriamento necessria.
Outro ponto que precisa de anlise a proteo da privacidade de outras pessoas. O trabalho de Tang et ai. (2010) demonstra que os participantes valorizam a privacidade da localizao de seus amigos, mas a maioria dos mecanismos de preservao
da privacidade atuais se concentram na proteo apenas prprios participantes (DietSense
[] prova que os rostos de pessoas no envolvidas podem aparecer nas imagens da aplicao). O fato que que os sistemas atuais, a funo de proteger a privacidade dos outros
do usurio participante. Solues automatizadas para minimizar os dados capturados de
forma que ele no viole a privacidade dos outros de grande interesse.
Por fim, embora a proteo de dados sensveis seja altamente valorizado, em certas
situaes, como em cenrios de emergncia, podem ser necessrios meios para substituir
ou sobrescrever as configuraes de privacidade especificadas pelos participantes. Esta
questo pode ser comparada a encontrada no cenrio de sade, onde os mdicos podem
ser capazes de substituir o controle de acesso de sensores corporais para obter acesso a
dados crticos de sade.
Livro-texto de Minicursos

83

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

2.5.4. Como medir privacidade?


Diferentes mtodos, critrios ou mtricas esto sendo usados para avaliar o desempenho
das solues propostas em termos de proteco da privacidade. Embora possa ser difcil
ou mesmo impossvel chegar a mtricas universais para quantificar a privacidade, a necessidade de definir mtricas generalizadas amplamente reconhecida. Capturando o nvel
de proteo de privacidade, independentemente do cenrio de aplicao particular, pode
ser visto como uma meta de pesquisa de longo prazo, mas a definio dessas mtricas
obrigatria para alcanar uma base comum para a comparao de mecanismos. Mas
como obt-las?
As mtricas de privacidade empregadas atualmente precisam ser pesquisadas para
determinar quais parmetros de entrada (por exemplo, a quantidade de participantes na
mesma regio) so considerados necessrios para calcular o grau de privacidade e qual a
natureza dos parmetros de sada (por exemplo, a distncia euclidiana entre os dados reais
e os ocultados/perturbados), considerando os cenrios de aplicao. Adicionalmente, as
mtricas de privacidade de outros domnios de aplicao devem ser analisadas em relao
sua aplicabilidade em MCS.
Alm disso, analisando certas solues, percebe-se a existncia de uma entidade
central para proteger a privacidade e anonimato do participante. No entanto, tais solues
no demonstram garantias ou provas de que o grau prometido de privacidade respeitado, uma vez que detalhes de implementao dificilmente esto disponveis e at mesmo
a abordagem empregada para proteger a privacidade normalmente desconhecida. A investigao sobre viabilidade dos mecanismos de privacidade ainda permanece como um
campo de pesquisa em aberto.
2.5.5. Normas para Investigar Privacidade
Devido sua natureza sensvel, conjuntos de dados pblicos do mundo real para aplicaes
MCS so escassos. Por isso, a investigao da privacidade ocorre geralmente com conjuntos de dados privados ou sintticos. Como resultado, a base de dados no bem aceita
para a avaliao de novos mecanismos, o que dificulta sua aferio em relao outros.
Para superar essa limitao, a comunidade de pesquisa deve fornecer para conjuntos de dados abertos que podem servir como uma base para avaliaes de desempenho e
segurana. Isso inclui conjuntos de dados do mundo real, bem como conjuntos de dados
sintticos representativos para vrias modalidades de sensoriamentos diferentes.
Alm disso, como as implementaes de mecanismos de privacidade esto quase
sempre indisponveis para o pblico em geral, torna-se difcil ou mesmo impossvel
referncia-las contra mecanismos propostos. Tornar a descrio tcnica e detalhada da
implementao ou sua prpria execuo disponvel para a comunidade de pesquisa permite validar os resultados e as solues individuais de referncia.

2.6. Consideraes Finais


Este Captulo apresentou o paradigma de Mobile Crowd Sensing (MCS) e suas aplicaes
para o dia a dia. A Seo 2.2 tratou da explicar MCS. Primeiro, a evoluo das ideais
sobre sobre sensoriamento foi contextualizada. Em seguida, definies sobre MCS foram
Livro-texto de Minicursos

84

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

feitas e os componentes e o ciclo de vida explicados. Depois, as caractersticas nicas de


MCS foram enumeradas. Por fim, algumas aplicaes MCS foram apresentadas.
A Seo 2.3 tratou os aspectos de segurana em MCS. Os dois principais problemas de segurana (privacidade do usurio e confiabilidade dos dados) foram bem discutidos. Os problemas e tambm as tcnicas para resolv-los foram apresentadas. Perto do
fim, as solues existentes (Seo 2.4) baseadas em segurana para MCS foram discutidas. A Seo 2.5 apontou vrias questes em aberto
2.6.1. Observaes Finais
A longo prazo, MCS capaz de estimular a pesquisa em uma srie de domnios.
Em primeiro lugar, o mundo hoje consiste de espaos fsicos e virtuais, onde qualquer objeto sensoriado est entre esses espaos. Assim, importante para explorar abordagens para agregao e fuso dos dados complementares para o melhor entendimento.
Em segundo lugar, ainda preciso estudar a fuso da inteligncia humana e da
mquina em todo o ciclo de vida de MCS, desde o sensoriamento, transmisso de dados
e processamento de dados.
Em terceiro lugar, alguns dos fatores ticos, como a inventividade e privacidade
do usurio, devem ser os blocos de construo fundamentais de arquiteturas MCS.
Finalmente, o sucesso de MCS baseia-se na utilizao de conhecimentos multidisciplinares, incluindo cincias sociais, cincia cognitiva, economia, cincia de computao, e assim por diante. Todas essas reas devem ser considerada no desenho de tcnicas
e sistemas MCS.

Referncias
[Acampora et al. 2013] Acampora, G., Cook, D., Rashidi, P., and Vasilakos, A. (2013). A
survey on ambient intelligence in healthcare. Proceedings of the IEEE, 101(12):2470
2494.
[Amini et al. 2011] Amini, S., Lindqvist, J., Hong, J., Lin, J., Toch, E., and Sadeh, N.
(2011). Cach: caching location-enhanced content to improve user privacy. In Proceedings of the 9th international conference on Mobile systems, applications, and services, pages 197210. ACM.
[Burke et al. 2006] Burke, J., Estrin, D., Hansen, M., Parker, A., Ramanathan, N., Reddy,
S., and Srivastava, M. B. (2006). Participatory sensing. In In: Workshop on WorldSensor-Web (WSW06): Mobile Device Centric Sensor Networks and Applications,
pages 117134.
[Capkun et al. 2006] Capkun, S., Cagalj, M., and Srivastava, M. (2006). Secure localization with hidden and mobile base stations. In INFOCOM 2006. 25th IEEE International Conference on Computer Communications. Proceedings, pages 110.
[Christin et al. 2011] Christin, D., Reinhardt, A., Kanhere, S. S., and Hollick, M. (2011).
A survey on privacy in mobile participatory sensing applications. Journal of Systems
and Software, 84(11):1928 1946. Mobile Applications: Status and Trends.
Livro-texto de Minicursos

85

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[Christin et al. 2012] Christin, D., Rosskopf, C., Hollick, M., Martucci, L., and Kanhere,
S. (2012). Incognisense: An anonymity-preserving reputation framework for participatory sensing applications. In Pervasive Computing and Communications (PerCom),
2012 IEEE International Conference on, pages 135143.
[Clementi et al. 2013] Clementi, A., Pasquale, F., and Silvestri, R. (2013). Opportunistic
manets: Mobility can make up for low transmission power. IEEE/ACM Trans. Netw.,
21(2):610620.
[Conti and Kumar 2010] Conti, M. and Kumar, M. (2010). Opportunities in opportunistic
computing. Computer, 43(1):4250.
[Das et al. 2010] Das, T., Mohan, P., Padmanabhan, V. N., Ramjee, R., and Sharma, A.
(2010). Prism: Platform for remote sensing using smartphones. In Proceedings of the
8th International Conference on Mobile Systems, Applications, and Services, MobiSys
10, pages 6376, New York, NY, USA. ACM.
[De Cristofaro and Soriente 2013] De Cristofaro, E. and Soriente, C. (2013). Participatory privacy: Enabling privacy in participatory sensing. Network, IEEE, 27(1):3236.
[Deng and Cox 2009] Deng, L. and Cox, L. P. (2009). Livecompare: Grocery bargain
hunting through participatory sensing. In Proceedings of the 10th Workshop on Mobile
Computing Systems and Applications, HotMobile 09, pages 4:14:6, New York, NY,
USA. ACM.
[Derawi et al. 2010] Derawi, M. O., Nickel, C., Bours, P., and Busch, C. (2010). Unobtrusive user-authentication on mobile phones using biometric gait recognition. In Proceedings of the 2010 Sixth International Conference on Intelligent Information Hiding
and Multimedia Signal Processing, IIH-MSP 10, pages 306311, Washington, DC,
USA. IEEE Computer Society.
[Dimov 2014] Dimov, D. (2014).
Crowdsensing: State of the art and privacy
aspects.
http://resources.infosecinstitute.com/
crowdsensing-state-art-privacy-aspects/.
[Domingo-Ferrer and Mateo-Sanz 2002] Domingo-Ferrer, J. and Mateo-Sanz, J. M.
(2002). Practical data-oriented microaggregation for statistical disclosure control.
IEEE Trans. on Knowl. and Data Eng., 14(1):189201.
[Dong et al. 2008] Dong, Y. F., Kanhere, S., Chou, C. T., and Bulusu, N. (2008). Automatic collection of fuel prices from a network of mobile cameras. In Proceedings of
the 4th IEEE International Conference on Distributed Computing in Sensor Systems,
DCOSS 08, pages 140156, Berlin, Heidelberg. Springer-Verlag.
[Dua et al. 2009] Dua, A., Bulusu, N., Feng, W.-C., and Hu, W. (2009). Towards
trustworthy participatory sensing. In Proceedings of the 4th USENIX Conference on
Hot Topics in Security, HotSec09, pages 88, Berkeley, CA, USA. USENIX Association.
Livro-texto de Minicursos

86

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[Dutta et al. 2009] Dutta, P., Aoki, P. M., Kumar, N., Mainwaring, A., Myers, C., Willett,
W., and Woodruff, A. (2009). Common sense: Participatory urban sensing using a
network of handheld air quality monitors. In Proceedings of the 7th ACM Conference
on Embedded Networked Sensor Systems, SenSys 09, pages 349350, New York, NY,
USA. ACM.
[Eisenman et al. 2007] Eisenman, S. B., Miluzzo, E., Lane, N. D., Peterson, R. A., Ahn,
G.-S., and Campbell, A. T. (2007). The bikenet mobile sensing system for cyclist
experience mapping. In Proceedings of the 5th International Conference on Embedded
Networked Sensor Systems, SenSys 07, pages 87101, New York, NY, USA. ACM.
[Ganti et al. 2011] Ganti, R., Ye, F., and Lei, H. (2011). Mobile crowdsensing: current
state and future challenges. Communications Magazine, IEEE, 49(11):3239.
[Gao and Cao 2011] Gao, W. and Cao, G. (2011). User-centric data dissemination in
disruption tolerant networks. In INFOCOM, 2011 Proceedings IEEE, pages 3119
3127.
[Gaonkar et al. 2008] Gaonkar, S., Li, J., Choudhury, R. R., Cox, L., and Schmidt, A.
(2008). Micro-blog: Sharing and querying content through mobile phones and social
participation. In Proceedings of the 6th International Conference on Mobile Systems,
Applications, and Services, MobiSys 08, pages 174186, New York, NY, USA. ACM.
[Gisdakis et al. 2014] Gisdakis, S., Giannetsos, T., and Papadimitratos, P. (2014). Sppear: Security &#38; privacy-preserving architecture for participatory-sensing applications. In Proceedings of the 2014 ACM Conference on Security and Privacy in Wireless &#38; Mobile Networks, WiSec 14, pages 3950, New York, NY, USA. ACM.
[Google 2015] Google (2015). Waze. http://waze.com.
[Grosky et al. 2007] Grosky, W., Kansal, A., Nath, S., Liu, J., and Zhao, F. (2007). Senseweb: An infrastructure for shared sensing. MultiMedia, IEEE, 14(4):813.
[Gross and Acquisti 2005] Gross, R. and Acquisti, A. (2005). Information revelation
and privacy in online social networks. In Proceedings of the 2005 ACM Workshop
on Privacy in the Electronic Society, WPES 05, pages 7180, New York, NY, USA.
ACM.
[Guo et al. 2015] Guo, B., Wang, Z., Yu, Z., Wang, Y., Yen, N. Y., Huang, R., and Zhou,
X. (2015). Mobile crowd sensing and computing: The review of an emerging humanpowered sensing paradigm. ACM Comput. Surv., 48(1):7:17:31.
[Guo et al. 2013] Guo, B., Zhang, D., Wang, Z., Yu, Z., and Zhou, X. (2013). Opportunistic iot: Exploring the harmonious interaction between human and the internet of
things. J. Netw. Comput. Appl., 36(6):15311539.
[Haderer et al. 2014] Haderer, N., Primault, V., Raveneau, P., Ribeiro, C., Rouvoy, R.,
and Ben Mokhtar, S. (2014). Towards a Practical Deployment of Privacy-preserving
Crowd-sensing Tasks. In Middleware Posters and Demos 14, Bordeaux, France.
Livro-texto de Minicursos

87

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[Haderer et al. 2013] Haderer, N., Rouvoy, R., and Seinturier, L. (2013). Dynamic deployment of sensing experiments in the wild using smartphones. In Dowling, J. and
Taani, F., editors, Distributed Applications and Interoperable Systems, volume 7891
of Lecture Notes in Computer Science, pages 4356. Springer Berlin Heidelberg.
[He et al. 2011] He, W., Liu, X., and Ren, M. (2011). Location cheating: A security
challenge to location-based social network services. In Distributed Computing Systems
(ICDCS), 2011 31st International Conference on, pages 740749.
[Howe 2006] Howe, J. (2006). Crowdsourcing: A definition. Crowdsourcing: Tracking
the rise of the amateur.
[Hu et al. 2013] Hu, X., Liu, Q., Zhu, C., Leung, V. C. M., Chu, T. H. S., and Chan, H.
C. B. (2013). A mobile crowdsensing system enhanced by cloud-based social networking services. In Proceedings of the First International Workshop on Middleware for
Cloud-enabled Sensing, MCS 13, pages 3:13:6, New York, NY, USA. ACM.
[Huang et al. 2010a] Huang, K. L., Kanhere, S. S., and Hu, W. (2010a). Are you contributing trustworthy data?: The case for a reputation system in participatory sensing.
In Proceedings of the 13th ACM International Conference on Modeling, Analysis, and
Simulation of Wireless and Mobile Systems, MSWIM 10, pages 1422, New York,
NY, USA. ACM.
[Huang et al. 2010b] Huang, K. L., Kanhere, S. S., and Hu, W. (2010b). Preserving
privacy in participatory sensing systems. Computer Communications, 33(11):1266
1280.
[IBM 2010] IBM (2010).
Creekwatch: Explore your watershed.
creekwatch.researchlabs.ibm.com.

http://

[Kapadia et al. 2009] Kapadia, A., Kotz, D., and Triandopoulos, N. (2009). Opportunistic sensing: Security challenges for the new paradigm. In Communication Systems and
Networks and Workshops, 2009. COMSNETS 2009. First International, pages 110.
[Karamshuk et al. 2011] Karamshuk, D., Boldrini, C., Conti, M., and Passarella, A.
(2011). Human mobility models for opportunistic networks. Communications Magazine, IEEE, 49(12):157165.
[Kong et al. 2015] Kong, L., He, L., Liu, X.-Y., Gu, Y., Wu, M.-Y., and Liu, X. (2015).
Privacy-preserving compressive sensing for crowdsensing based trajectory recovery. In
Distributed Computing Systems (ICDCS), 2015 IEEE 35th International Conference
on, pages 3140.
[Konidala et al. 2013] Konidala, D., Deng, R., Li, Y., Lau, H., and Fienberg, S. (2013).
Anonymous authentication of visitors for mobile crowd sensing at amusement parks.
In Deng, R. and Feng, T., editors, Information Security Practice and Experience, volume 7863 of Lecture Notes in Computer Science, pages 174188. Springer Berlin
Heidelberg.
Livro-texto de Minicursos

88

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[Krumm 2007] Krumm, J. (2007). Inference attacks on location tracks. In Proceedings


of the 5th International Conference on Pervasive Computing, PERVASIVE07, pages
127143, Berlin, Heidelberg. Springer-Verlag.
[Lane et al. 2010] Lane, N. D., Miluzzo, E., Lu, H., Peebles, D., Choudhury, T., and
Campbell, A. T. (2010). A survey of mobile phone sensing. Comm. Mag., 48(9):140
150.
[Leonardi et al. 2014] Leonardi, C., Cappellotto, A., Caraviello, M., Lepri, B., and Antonelli, F. (2014). Secondnose: An air quality mobile crowdsensing system. In Proceedings of the 8th Nordic Conference on Human-Computer Interaction: Fun, Fast,
Foundational, NordiCHI 14, pages 10511054, New York, NY, USA. ACM.
[Levy and da Costa 1993] Levy, P. and da Costa, C. I. (1993). tecnologias da inteligncia, As. Editora 34.
[Li et al. 2014] Li, Q., Cao, G., and La Porta, T. (2014). Efficient and privacy-aware data
aggregation in mobile sensing. Dependable and Secure Computing, IEEE Transactions
on, 11(2):115129.
[Liu 2007] Liu, L. (2007). From data privacy to location privacy: Models and algorithms.
In Proceedings of the 33rd International Conference on Very Large Data Bases, VLDB
07, pages 14291430. VLDB Endowment.
[Lu et al. 2010] Lu, H., Lane, N. D., Eisenman, S. B., and Campbell, A. T. (2010). Fast
track article: Bubble-sensing: Binding sensing tasks to the physical world. Pervasive
Mob. Comput., 6(1):5871.
[Ludwig et al. 2015] Ludwig, T., Reuter, C., Siebigteroth, T., and Pipek, V. (2015).
Crowdmonitor: Mobile crowd sensing for assessing physical and digital activities of
citizens during emergencies. In Proceedings of the 33rd Annual ACM Conference on
Human Factors in Computing Systems, CHI 15, pages 40834092, New York, NY,
USA. ACM.
[Ma et al. 2014] Ma, H., Zhao, D., and Yuan, P. (2014). Opportunities in mobile crowd
sensing. Communications Magazine, IEEE, 52(8):2935.
[Machanavajjhala et al. 2007] Machanavajjhala, A., Kifer, D., Gehrke, J., and Venkitasubramaniam, M. (2007). L-diversity: Privacy beyond k-anonymity. ACM Trans. Knowl.
Discov. Data, 1(1).
[Maisonneuve et al. 2009] Maisonneuve, N., Stevens, M., Niessen, M., and Steels, L.
(2009). Noisetube: Measuring and mapping noise pollution with mobile phones. In
Athanasiadis, I. N., Rizzoli, A. E., Mitkas, P. A., and Gomez, J. M., editors, Information Technologies in Environmental Engineering, Environmental Science and Engineering, pages 215228. Springer Berlin Heidelberg.
[Maisonneuve et al. 2010] Maisonneuve, N., Stevens, M., and Ochab, B. (2010). Participatory noise pollution monitoring using mobile phones. Info. Pol., 15(1,2):5171.
Livro-texto de Minicursos

89

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[Mathur et al. 2010] Mathur, S., Jin, T., Kasturirangan, N., Chandrasekaran, J., Xue, W.,
Gruteser, M., and Trappe, W. (2010). Parknet: Drive-by sensing of road-side parking
statistics. In Proceedings of the 8th International Conference on Mobile Systems, Applications, and Services, MobiSys 10, pages 123136, New York, NY, USA. ACM.
[Mediated Spaces, Inc 2015] Mediated Spaces, Inc (2015). The wildlab: Use mobile technology to explore, discovery, and share the natural world. http://
thewildlab.org.
[Miluzzo et al. 2008] Miluzzo, E., Lane, N. D., Fodor, K., Peterson, R., Lu, H., Musolesi, M., Eisenman, S. B., Zheng, X., and Campbell, A. T. (2008). Sensing meets
mobile social networks: The design, implementation and evaluation of the cenceme
application. In Proceedings of the 6th ACM Conference on Embedded Network Sensor
Systems, SenSys 08, pages 337350, New York, NY, USA. ACM.
[Minkman et al. 2015] Minkman, E., van Overloop, P., and van der Sanden, M. (2015).
Citizen science in water quality monitoring: Mobile crowd sensing for water management in the netherlands. In World Environmental and Water Resources Congress 2015,
pages 13991408.
[Minson et al. 2015] Minson, S. E., Brooks, B. A., Glennie, C. L., Murray, J. R., Langbein, J. O., Owen, S. E., Heaton, T. H., Iannucci, R. A., and Hauser, D. L. (2015).
Crowdsourced earthquake early warning. Science Advances, 1(3):e1500036+.
[Mohan et al. 2008] Mohan, P., Padmanabhan, V., and Ramjee, R. (2008). Nericell: Rich
monitoring of road and traffic conditions using mobile smartphones. In ACM Sensys.
Association for Computing Machinery, Inc. Raleigh, NC, USA.
[Mun et al. 2010] Mun, M., Hao, S., Mishra, N., Shilton, K., Burke, J., Estrin, D., Hansen, M., and Govindan, R. (2010). Personal data vaults: A locus of control for personal
data streams. In Proceedings of the 6th International COnference, Co-NEXT 10, pages 17:117:12, New York, NY, USA. ACM.
[Mun et al. 2009] Mun, M., Reddy, S., Shilton, K., Yau, N., Burke, J., Estrin, D., Hansen,
M., Howard, E., West, R., and Boda, P. (2009). Peir, the personal environmental impact
report, as a platform for participatory sensing systems research. In Proceedings of the
7th International Conference on Mobile Systems, Applications, and Services, MobiSys
09, pages 5568, New York, NY, USA. ACM.
[Pan et al. 2013] Pan, B., Zheng, Y., Wilkie, D., and Shahabi, C. (2013). Crowd sensing of traffic anomalies based on human mobility and social media. In Proceedings
of the 21st ACM SIGSPATIAL International Conference on Advances in Geographic
Information Systems, SIGSPATIAL13, pages 344353, New York, NY, USA. ACM.
[Pournajaf et al. 2014] Pournajaf, L., Xiong, L., Garcia-Ulloa, D. A., and Sunderam, V.
(2014). A survey on privacy in mobile crowd sensing task management. Technical report, Technical Report TR-2014-002, Department of Mathematics and Computer
Science, Emory University.
Livro-texto de Minicursos

90

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[Rachuri et al. 2011] Rachuri, K. K., Mascolo, C., Musolesi, M., and Rentfrow, P. J.
(2011). Sociablesense: Exploring the trade-offs of adaptive sampling and computation offloading for social sensing. In Proceedings of the 17th Annual International
Conference on Mobile Computing and Networking, MobiCom 11, pages 7384, New
York, NY, USA. ACM.
[Rana et al. 2010] Rana, R. K., Chou, C. T., Kanhere, S. S., Bulusu, N., and Hu, W.
(2010). Ear-phone: An end-to-end participatory urban noise mapping system. In Proceedings of the 9th ACM/IEEE International Conference on Information Processing in
Sensor Networks, IPSN 10, pages 105116, New York, NY, USA. ACM.
[Reddy et al. 2007] Reddy, S., Parker, A., Hyman, J., Burke, J., Estrin, D., and Hansen,
M. (2007). Image browsing, processing, and clustering for participatory sensing: Lessons from a dietsense prototype. In Proceedings of the 4th Workshop on Embedded
Networked Sensors, EmNets 07, pages 1317, New York, NY, USA. ACM.
[Reddy et al. 2009] Reddy, S., Samanta, V., Burke, J., Estrin, D., Hansen, M., and Srivastava, M. (2009). Mobisense: mobile network services for coordinated participatory
sensing. In Autonomous Decentralized Systems, 2009. ISADS 09. International Symposium on, pages 16.
[Sherchan et al. 2012] Sherchan, W., Jayaraman, P., Krishnaswamy, S., Zaslavsky, A.,
Loke, S., and Sinha, A. (2012). Using on-the-move mining for mobile crowdsensing.
In Mobile Data Management (MDM), 2012 IEEE 13th International Conference on,
pages 115124.
[Shi et al. 2010] Shi, J., Zhang, R., Liu, Y., and Zhang, Y. (2010). Prisense: Privacypreserving data aggregation in people-centric urban sensing systems. In Proceedings
of the 29th Conference on Information Communications, INFOCOM10, pages 758
766, Piscataway, NJ, USA. IEEE Press.
[Shilton 2009] Shilton, K. (2009). Four billion little brothers?: Privacy, mobile phones,
and ubiquitous data collection. Commun. ACM, 52(11):4853.
[Shilton et al. 2008] Shilton, K., Burke, J., Estrin, D., Hansen, M., and Srivastava, M.
(2008). Participatory privacy in urban sensing. In Proceedings of the International
Workshop on Mobile Devices and Urban Sensing, MODUS, pages 17.
[Shin et al. 2011] Shin, M., Cornelius, C., Peebles, D., Kapadia, A., Kotz, D., and Triandopoulos, N. (2011). Anonysense: A system for anonymous opportunistic sensing.
Pervasive and Mobile Computing, 7(1):16 30.
[Surowiecki 2005] Surowiecki, J. (2005). The Wisdom of Crowds. Anchor.
[Sweeney 2002] Sweeney, L. (2002). K-anonymity: A model for protecting privacy. Int.
J. Uncertain. Fuzziness Knowl.-Based Syst., 10(5):557570.
[Thepvilojanapong et al. 2010] Thepvilojanapong, N., Ono, T., and Tobe, Y. (2010). A
deployment of fine-grained sensor network and empirical analysis of urban temperature. Sensors, 10(3):2217.
Livro-texto de Minicursos

91

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[Tuncay et al. 2012] Tuncay, G. S., Benincasa, G., and Helmy, A. (2012). Autonomous
and distributed recruitment and data collection framework for opportunistic sensing. In
Proceedings of the 18th Annual International Conference on Mobile Computing and
Networking, Mobicom 12, pages 407410, New York, NY, USA. ACM.
[Vieira and Alves 2014] Vieira, A. P. and Alves, J. C. R. (2014). Direito privacidade na
sociedade da informao. Revista Jus Navigandi, (3979).
[Wang et al. 2011a] Wang, H., Uddin, M., Qi, G.-J., Huang, T., Abdelzaher, T., and Cao,
G. (2011a). Photonet: A similarity-aware image delivery service for situation awareness. In Information Processing in Sensor Networks (IPSN), 2011 10th International
Conference on, pages 135136.
[Wang et al. 2013] Wang, L., Zhang, D., and Xiong, H. (2013). effsense: Energyefficient and cost-effective data uploading in mobile crowdsensing. In Proceedings
of the 2013 ACM Conference on Pervasive and Ubiquitous Computing Adjunct Publication, UbiComp 13 Adjunct, pages 10751086, New York, NY, USA. ACM.
[Wang et al. 2011b] Wang, X., Govindan, K., and Mohapatra, P. (2011b). Collusionresilient quality of information evaluation based on information provenance. In Sensor,
Mesh and Ad Hoc Communications and Networks (SECON), 2011 8th Annual IEEE
Communications Society Conference on, pages 395403.
[Weppner and Lukowicz 2013] Weppner, J. and Lukowicz, P. (2013). Bluetooth based
collaborative crowd density estimation with mobile phones. In Pervasive Computing
and Communications (PerCom), 2013 IEEE International Conference on, pages 193
200.
[Yan et al. 2009] Yan, T., Marzilli, M., Holmes, R., Ganesan, D., and Corner, M. (2009).
mcrowd: A platform for mobile crowdsourcing. In Proceedings of the 7th ACM Conference on Embedded Networked Sensor Systems, SenSys 09, pages 347348, New
York, NY, USA. ACM.
[Zhang et al. 2014a] Zhang, D., Wang, L., Xiong, H., and Guo, B. (2014a). 4w1h in
mobile crowd sensing. Communications Magazine, IEEE, 52(8):4248.
[Zhang et al. 2014b] Zhang, X., Yang, Z., Wu, C., Sun, W., Liu, Y., and Liu, K. (2014b).
Robust trajectory estimation for crowdsourcing-based mobile applications. Parallel
and Distributed Systems, IEEE Transactions on, 25(7):18761885.

Livro-texto de Minicursos

92

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Captulo

Implementao Eficiente e Segura de Algoritmos Criptogrficos


Armando Faz Hernndez, Roberto Cabral, Diego F. Aranha, Julio Lpez

Abstract
Software implementation of a cryptographic algorithm is not an easy task even for
advanced programmers, because it requires a careful knowledge not only about algorithms but also of the target architecture. In this tutorial, we will describe some
techniques to produce an efficient and secure software implementation. For the sake
of efficiency, we will detail how advanced vector instruction sets accelerate the execution of the following cryptographic algorithms: the AES encryption algorithm,
the SHA-3 cryptographic hash function and the key agreement protocol based on the
elliptic curve Curve25519. Focusing on the secure software development, we will illustrate some implementations that are vulnerable against side-channel attacks; also
we will present some countermeasures that mitigate such attacks thereby preventing
leakage of secret information.
Resumo
A implementao segura de um algoritmo criptogrfico no uma tarefa trivial nem
mesmo para os programadores mais experientes, pois requer um conhecimento cuidadoso no apenas do prprio algoritmo, mas tambm da arquitetura alvo. Neste
minicurso, vamos nos concentrar em descrever os aspectos que ajudam a tornar uma
implementao de criptografia em software eficiente e segura. Do lado da eficincia,
detalharemos como os conjuntos avanados de instrues aceleram a execuo dos
algoritmos criptogrficos a seguir: o algoritmo de encriptao AES, a funo de resumo SHA-3 e o protocolo de acordo de chaves baseado na curva elptica Curve25519.
Pensando no desenvolvimento seguro, mostraremos como algumas implementaes
so vulnerveis contra ataques de canais laterais, adicionalmente apresentaremos
tcnicas que mitigam ditos ataques evitando assim o vazamento de informao secreta.
Livro-texto de Minicursos

93

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

3.1. Introduo criptografia


Nesta seo, sero apresentados um conjunto de conceitos bsicos sobre criptografia
que sero usados ao longo deste captulo. Espera-se que leitores familiarizados com
o tema possam relembrar os conceitos bsicos e propriedades dos algoritmos criptogrficos, e leitores que esto tendo contato com o tema pela primeira consigam uma
base terica mnima necessria para entender o captulo.
3.1.1. Conceitos bsicos
O modelo de comunicao mais simples consiste em duas entidades, A e B, querendo
se comunicar. Neste modelo a entidade A (emissor) quer enviar uma mensagem para
a entidade B (receptor) atravs de um meio de comunicao; esse meio pode ser
acessado por uma terceira entidade E (tambm chamada de intruso ou adversrio).
Visando facilitar a descrio de protocolos de comunicao, denotamos as entidades
A, B e E por Alice, Bob e Eva, respectivamente.
Um dos problemas presente neste modelo de comunicao assegurar que
uma mensagem enviada por Alice seja lida unicamente por Bob, que a mensagem
recebida por Bob tenha sido gerada por Alice e que a mensagem no tenha sofrido
qualquer alterao no caminho.
A criptografia moderna pode ser vista como um conjunto de tcnicas matemticas que permitem estabelecer uma comunicao segura na presena de adversrios
maliciosos. Ela engloba mecanismos para assegurar a integridade de dados, tcnicas
para troca de chave secreta, protocolos para autenticar usurios, votao eletrnica,
moeda eletrnica, entre outros.
Uma comunicao segura deve possuir os seguintes servios segurana:
Sigilo. A informao mantida em segredo de todos, exceto das partes autorizadas.
Autenticao. Deve ser possvel garantir a autenticidade do remetente de
uma mensagem; um atacante no deve ser capaz de se passar por outra pessoa.
Integridade. O receptor deve conseguir verificar se a mensagem recebida
no foi modificada durante a transmisso; um atacante no deve ser capaz de
substituir uma mensagem falsa pela legtima.
Irretratabilidade. Garante que uma entidade no pode negar ter participado
de uma comunicao.
De acordo com o tipo de chave usado, os mtodos criptogrficos podem ser
subdivididos em duas grandes categorias: criptografia simtrica e criptografia assimtrica:
Criptografia Simtrica. Consiste nas funes de encriptao que usam a
mesma chave para encriptar e decriptar. Esses algoritmos requerem que o
Livro-texto de Minicursos

94

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

emissor e o receptor estabeleam uma chave para realizar a comunicao encriptada. Esta parte da criptografia tambm conhecida como criptografia de
chave secreta no sentido que a chave s pode ser conhecida pelos envolvidos
na comunicao, pois toda a segurana do esquema baseia-se na chave criptogrfica, uma vez que qualquer pessoa de posse da chave consegue encriptar ou
decriptar mensagens.
Criptografia Assimtrica. Tambm conhecida como criptografia de chave
pblica, considera o uso de duas chaves distintas, uma pblica e uma privada,
para cada participante da comunicao; sendo que a chave pblica pode ser
divulgada e a chave privada deve ser mantida em segredo. Assim, uma mensagem que encriptada com a chave pblica, ser decriptada somente com o
uso da correspondente chave privada. A gerao do par de chaves deve garantir que a chave privada no possa ser obtida a partir da chave pblica.
Na criptografia assimtrica as operaes de encriptao podem ser realizadas
por qualquer entidade, contudo as operaes de decriptao so restritas
entidade que possui a chave privada. Dentre os usos da criptografia assimtrica encontram-se a encriptao de dados, a gerao de assinaturas digitais,
o estabelecimento seguro de chaves, entre outros.
Os protocolos criptogrficos podem ser construdos a partir de primitivas criptogrficas. Um protocolo criptogrfico composto por uma srie de computaes e
comunicaes entre duas ou mais entidades com o fim de realizar uma tarefa especifica. Por exemplo: transmitir dados de forma segura, verificar a integridade de uma
mensagem ou estabelecer chaves privadas mediante um canal inseguro.
3.1.2. Encriptao de dados
A encriptao de dados tem como objetivo prover sigilos das mensagens quando
se usa um meio de comunicao inseguro. Portanto, o processo de encriptao (as
vezes tambm denominado como cifrao) consiste em converter um texto claro em
um texto encriptado usando uma chave secreta. O processo inverso, conhecido por
decriptao, transforma um texto encriptado em um texto claro usando a mesma
chave usada na encriptao.
Um dos princpios fundamentas da criptografa foi postulado em 1883 por
Kerckhoff e diz que a segurana do processo de encriptao no deve estar baseada
apenas em manter em segredo o funcionamento interno do algoritmo. Na criptografia
moderna, os algoritmos devem ser conhecidos por toda a comunidade e a segurana
dos mesmos deve estar atrelada a uma chave criptogrfica.
Em termos matemticos o texto claro representado por M e o texto encriptado por C. Portanto, a funo de encriptao E usa uma chave criptogrfica k e
opera sobre M para produzir C = Ek (M ). No processo reverso, tem-se a funo D
que usa a mesma chave k que foi usada para encriptar e opera sobre C para produzir
M = Dk (C). A encriptao e decriptao so operaes inversas, por conta disso, a
identidade M = Dk (Ek (M )) deve ser verdadeira para quaisquer valores de M e k.
Se uma funo de encriptao possui o mesmo tamanho de entrada e sada,
Livro-texto de Minicursos

95

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

esta funo tambm conhecida como cifrador de bloco; alguns exemplos de cifradores de bloco so: o Digital Encryption Standard (DES) e o Advanced Encryption
Standard (AES) com blocos de tamanho 64 e 128 bits, respectivamente. Para encriptar mensagens de tamanho arbitrrio possvel usar modos de operao, os quais
usam os cifradores de bloco como primitiva bsica. Esses modos sero examinados
com mais detalhe na Seo 3.4.1.2.
Um dos ataques que pode ser aplicado grande maioria dos cifradores o
ataque de fora bruta, que consiste em achar a chave usada na encriptao, dado
um texto claro e um texto encriptado, testando cada uma das chaves possveis. A
complexidade desse ataque 2n , onde n o tamanho da chave. Um cifrador possui
um nvel de segurana de n bits se o melhor algoritmo capaz de encontrar a chave
criptogrfica possui uma complexidade de O(2n ).
3.1.3. Funes de resumo criptogrfico
As funes de resumo criptogrfico agem como uma funo de compresso que mapeia uma cadeia de bits de tamanho arbitrrio em uma cadeia de bits de tamanho
fixo. Elas so muito usadas na criptografia moderna e seu uso essencial em vrias
aplicaes de segurana, tais como: esquemas de assinatura digital, verificao da
integridade dos dados, gerao de nmeros pseudo aleatrios, gerao de chaves,
dentre outras.
A cadeia de bits gerada por uma funo de resumo chamada de valor de
resumo ou digest; e teoricamente, deve identificar mensagem de forma nica. Uma
funo de resumo h : M R mapeia uma cadeia de bits x M de tamanho finito e
arbitrrio em uma cadeia de bits y R de tamanho fixo n. Tendo, y = h(x).
Pode-se notar que mais de uma mensagem poder ser mapeada em um mesmo
valor de resumo, visto que o domnio M de h maior que sua imagem R. Porm, algumas aplicaes, como as assinaturas digitais, por exemplo, requerem que
seja computacionalmente invivel encontrar duas mensagens diferentes que gerem
o mesmo valor de resumo; outras aplicaes apenas necessitam que seja invivel
encontrar uma mensagem dado o valor de resumo.
As primeiras definies, analises e construes de funes de resumo criptogrficos podem ser encontradas nos trabalhos de Rabin [Rab78], Yuval [Yuv78]
e Merkle [Mer79]. Rabin props um modelo baseado no algoritmo de encriptao
DES; Yuval usou o paradoxo de aniversrio para mostrar como encontrar colises
para uma funo de resumo de n bits com 2n/2 operaes; e Merkle introduziu que
esse tipo de funo deveria ser resistente colises, primeira pr-imagem e segunda
pr-imagem.
As funes de resumo criptogrfico, diferentemente dos algoritmos de encriptao, no possuem chaves secretas. Assim, para termos uma funo de resumo
segura necessrio que satisfaa as seguintes propriedades de segurana, ilustradas
na Figura 3.1:
Resistncia pr-imagem: Dada uma funo h : M R e um valor de
resumo y R, computacionalmente invivel encontrar x M tal que h(x) = y.
Livro-texto de Minicursos

96

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

x =?

x1 =?

x0

x0 =?

x1 =?

y = h(x)

h(x0 ) = h(x1 )

h(x0 ) = h(x1 )

(a) Pr-imagem.

(b) Segunda pr-imagem.

(c) Colises.

Figura 3.1: As trs propriedades de segurana de uma funo de resumo.

Resistncia segunda pr-imagem: Dada uma funo h : M R e uma


mensagem x0 M , computacionalmente invivel encontrar uma mensagem
x1 M tal que x0 6= x1 e h(x0 ) = h(x1 ).

Resistncia coliso: Dada uma funo h : M R, computacionalmente


invivel encontrar duas mensagens x0 , x1 M tal que x0 6= x1 e h(x0 ) = h(x1 ).
Em 1993, a funo de resumo chamada Secure Hash Algorithm (SHA) foi
desenvolvida pelo National Institute of Standards and Technology (NIST) e publicada como padro nacional americano para o processamento seguro de informaes [Nat93]. Posteriormente esta verso foi revisada e ficou conhecida por SHA-1
[Nat95]. J em 2002, o NIST definiu trs novas funes de resumo, conhecidas por
SHA-2, com tamanhos de valor de resumo de 256, 384 e 512 bits [Nat02], e em 2008
mais uma funo de resumo com tamanho de sada de 224 bits [Nat08a]. Em 2015,
uma terceira verso do padro, chamada SHA-3, foi publicada [Nat08b, Nat15].
3.1.4. Protocolo de acordo de chaves
Suponha que Alice e Bob querem compartilhar uma chave secreta para ser usada
em uma funo de encriptao simtrica, sendo que o nico meio de comunicao
inseguro, ou seja qualquer informao transmitida pode ser observada por Eva.
Esse problema comumente conhecido como acordo de chaves e foi engenhosamente
resolvido por Diffie e Hellman em 1976 [DH76].
Eles propuseram uma soluo para esse problema observando que a computao de algumas funes possuem uma certa assimetria; isto , dado uma entrada
x fcil calcular y = f (x), entretanto dado y computacionalmente invivel obter
x tal que x = f 1 (y). Por exemplo, obter o produto de dois nmeros primos grandes simples, mas difcil recuperar os nmeros primos que compem o produto.
Diffie e Hellman observaram que este fenmeno poderia ser usado para estabelecer
um protocolo de troca de chaves seguro. O protocolo Diffie-Hellman est descrito a
seguir:
1. Alice e Bob negociam os seguintes parmetros de domnio: um nmero primo
p grande e um gerador g do grupo cclico Zp .
Livro-texto de Minicursos

97

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

2. Alice escolhe aleatoriamente um valor x Zp , computa kA = g x e envia o


resultado para Bob.
3. Bob atua de forma similar, escolhendo aleatoriamente um valor y Zp , computando kB = g y e enviando o resultado para a Alice.
y
4. Bob recebe o valor kA da Alice e computa kA
. De forma anloga, Alice comx
puta kB com o valor recebido pelo Bob.
x = k y = g xy o segredo compartilhado que
5. Neste ponto, o seguinte valor kB
A
pode ser usado para gerar uma chave privada.

A intuio atrs deste protocolo consiste na existncia de uma funo eficiente para
calcular a exponenciao de elementos em Zp ; no entanto, a computao de sua
funo inversa, conhecida como o logaritmo discreto, computacionalmente invivel.
Assim, qualquer atacante que interceptar as mensagens transmitidas deve calcular
g xy a partir de g, g x e g y .
Originalmente, Diffie e Hellman propuseram o uso do grupo multiplicativo
dos inteiros modulo p para a implementao do protocolo. Embora, existam outros
grupos onde a operao de exponenciao mais eficiente; por exemplo, o grupo
formado pelo conjunto de pontos de uma curva elptica. Se a curva elptica possui
certas propriedades que tornam o logaritmo discreto invivel, ento esse grupo uma
opo vivel para a implementao do protocolo de acordo de chaves, o qual comumente chamado de protocolo Diffie-Hellman baseado em curvas elpticas (ECDH).
3.1.5. Curvas elpticas
Uma curva elptica E est definida sobre um corpo finito primo Fp pela seguinte
equao:
E : y 2 = x3 + Ax + B
(1)
tal que A, B Fp e 4A3 + 27B 2 6= 0. Os pontos pertencentes curva elptica E, junto
como o ponto no infinito, formam um grupo cclico:
E(Fp ) = {(x, y) : x, y Fp tal que y 2 = x3 + Ax + B} {O},

(2)

onde O o elemento identidade do grupo. O nmero de elementos deste conjunto

est delimitado pelo intervalo de Hasse: #E(Fp ) = p + 1 2 p. Usualmente a


operao de grupo expresso de forma aditiva; assim a lei do grupo a soma de
dois pontos P, Q E(Fp ) denotado como P + Q.

Define-se geometricamente a soma de dois pontos da seguinte forma: trace


uma linha reta que passe por P e Q, esta linha ir intersectar E em um ponto R0 ;
agora trace uma linha vertical sobre o ponto R0 ; a linha intersectar curva E no
ponto R. Ento, o ponto R representar a soma P + Q. O caso especial da soma de
um ponto consigo mesmo conhecido como duplicao de pontos. Geometricamente
o clculo de 2P = P + P segue o mesmo conceito descrito; embora ao invs de traar
uma linha que passe por dois pontos, deve-se traar a linha tangente curva E no
ponto P . Essa linha ir intersectar curva em um ponto R0 ; do qual se trace uma
Livro-texto de Minicursos

98

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

(a) Soma de dois pontos diferentes P e Q.

(b) Duplicao de um ponto P .

Figura 3.2: Representao geomtrica da lei do grupo em uma curva elptica definida
sobre R.
linha vertical que cruza curva num ponto R; este ltimo representar a computao
de 2P ; na Figura 3.2 mostrada de forma grfica a lei do grupo numa curva elptica
definida sobre R.
A soma repetida de um ponto P , denominada por multiplicao de um ponto
P por um inteiro k, est definida como:
kP = |P + P +
+ P} .
{z
k vezes

Um dos mtodos mais eficientes para computar a multiplicao de pontos o algoritmo duplicao-e-soma, chamado assim porque utiliza as funes de duplicao e
soma, antes mencionadas. O algoritmo inicializa um ponto Q = O que serve como
acumulador. Uma vez feito isso, o processamento l os bits de k iterativamente, do
mais ao menos significativo, de modo que a cada iterao i o ponto Q duplicado e
se o i-simo bit de k igual a 1, o ponto P somado ao acumulador. Uma vez que
todos os bits foram lidos, o ponto Q conter o ponto kP .
A obteno de mltiplos de um ponto uma operao que pode ser computada eficientemente, no entanto acredita-se que a operao inversa para certas
curvas elpticas computacionalmente invivel. Dado um ponto G que seja gerador do grupo elptico E(Fp ) e um ponto qualquer da curva Q E(Fp ) determinar
um k Z tal que Q = kG conhecido como o Problema do Logaritmo Discreto
em Curvas Elpticas (ECDLP). Osqalgoritmos mais eficientes que resolvem ECDLP
possuem uma complexidade de O( #E(Fp )). Por exemplo, se p 2256 ento a complexidade de resolv-lo requer aproximadamente 2128 operaes, tornando o calculo
de k invivel.

3.2. Instrues avanadas dos processadores


Nesta seo sero descritos alguns conjuntos avanados de instrues que apareceram nos processadores atuais; por exemplo, os conjuntos de instrues AES-NI,
Livro-texto de Minicursos

99

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

SSE, AVX e o mais recente, AVX2. O leitor ser familiarizado a terminologia bsica
das instrues avanadas dos processadores e ser apresentada a evoluo das instrues vetoriais nas micro-arquiteturas; em particular a nfase ser dada microarquitetura Haswell. Finalmente, ser discutido um exemplo de como detectar a
presena dos conjuntos avanados de instrues nos processadores.
3.2.1. Instrues vetoriais
No fim da dcada de 1990, os fabricantes de processadores focaram seus esforos
em explorar o paralelismo de dados ao invs do paralelismo de instrues como
era feito nas arquiteturas RISC. Para isso, eles incorporaram unidades funcionais
que so capazes de executar uma nica instruo sobre um conjunto de dados; esse
processamento encaixa-se no paradigma conhecido como Single Instruction Multiple
Data (SIMD), introduzido em [Fly72].
Um dos primeiros conjuntos de instrues a implementar o paradigma SIMD
foi lanado em 1997, conhecido como Multimedia eXtensions (MMX) [Cor]. O MMX
adicionou registradores de 64 bits e instrues vetoriais que habilitavam o processamento de duas operaes de 32 bits, nessa poca as arquiteturas possuam registradores nativos de 32 bits. Essas instrues definem a semntica do contedo do
registrador, isto , um registrador de 64 bits poderia ser operado como um vetor de
oito palavras de 8 bits, um vetor de quatro palavras de 16 bits, um vetor de duas
palavras de 32 bits ou como um vetor de 64 bits. No comeo as instrues MMX
foram voltadas para auxiliar o processamento de aplicaes grficas e multimdia.
Nos ltimos 18 anos, tanto a Intel como a AMD lanaram novos conjuntos
de instrues vetoriais para explorar ainda mais o paralelismo a nvel de dados. A
seguir sero apresentados alguns dos conjuntos mais relevantes lanados por essas
duas companhias:
Em 1999, a Intel lanou Streaming SIMD Extensions (SSE) que adicionou oito
registradores de 128 bits (denotados XMM0-XMM7) e incluiu instrues para dar
suporte computao de aritmtica de ponto flutuante.
No ano 2000, a AMD desenvolveu a arquitetura de 64 bits, com isso o tamanho
dos registradores nativos aumentou de 32 bits para 64 bits e o nmero de
registradores vetoriais foi duplicado (denotados XMM0-XMM15).
O conjunto de instrues SSE foi evoluindo com o lanamento dos novos conjuntos SSE2, SSE3, SSSE3 e SSE4. O SSE2 foi lanado para dar suporte s
operaes de aritmtica inteira. Os outros conjuntos, entretanto, foram incorporando outros tipos de instrues vetoriais; desse modo, comeou a surgir
instrues para manipulao de cadeias de caracteres, permutao de palavras
dentro dos registradores e cdigos de correo de erros.
A diversidade das instrues aumentou ainda mais em 2010, quando foi includo o Advanced Encryption Standard New Instructions (AES-NI) que acelera a computao do algoritmo de encriptao AES. Este conjunto ser amplamente explicado na Seo 3.4.1.
Livro-texto de Minicursos

100

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

J em 2011, o conjunto Advanced Vector Extensions (AVX) fez contribuies


relevantes na arquitetura. Pois incluiu registradores de 256 bits, chamados
YMM, que encontram-se sobrepostos sobre os registradores XMM. Alm disso,
AVX introduziu um novo formato de codificao que permite utilizar cdigo
de montagem de trs operandos, o que torna a atribuio de registradores mais
flexvel.
O mais recente conjunto de instrues a segunda verso do AVX, chamada
AVX2. Esse conjunto ser detalhado na seo seguinte.
Como foi apresentado, as primeiras instrues vetoriais foram direcionadas ao processamento grfico, esse cenrio vem mudando nos ltimos anos e agora est disponvel uma vasta diversidade de instrues. Neste documento, sero apresentadas
tcnicas para se tirar proveito destes conjuntos na implementao eficiente de algoritmos criptogrficos.
3.2.2. O conjunto de instrues AVX2
A microarquitetura Haswell foi lanada no incio de 2013 e trouxe consigo uma srie
de inovaes para acelerar a execuo dos programas. Dentre as quais destacamse: a incluso de mais duas portas de execuo, um novo multiplicador inteiro, as
instrues de manipulao de bits, entre outras. No entanto, a caracterstica mais
relevante do Haswell o suporte ao conjunto de instrues vetoriais AVX2.
O AVX2 contm novas instrues que expandem a computao de aritmtica inteira nos registradores de 256 bits; pois o conjunto AVX continha instrues
apenas para a aritmtica de ponto flutuante. Alm disso, AVX2 conta com instrues de permutao e combinao, que permitem movimentar as palavras contidas
nos registradores vetoriais, entre outras caractersticas. A seguir, so destacadas
algumas instrues que fazem parte do conjunto AVX2 e que so relevantes para o
contexto de implementao eficiente de algoritmo criptogrficos:
1. Acesso a memria.
(a) LOAD/STORE. Essas funes carregam/armazenam um conjunto de dados
de/para um endereo de memria de/para um registrador vetorial. Vale
a pena mencionar que o endereo de memria deve estar alinhado para
32 bits, ou seja, o valor de endereo deve ser um mltiplo de 32, caso
contrrio o desempenho da aplicao afetado.
(b) BRCAST. Essa instruo replica um valor de 64 bits de um registrador
nativo (ou endereo de memria) em um registrador vetorial.
2. Aritmtica inteira.
(a) ADD/SUB. Essas funes calculam a adio e subtrao de nmeros inteiros
armazenados nas palavras de um registrador vetorial. Por exemplo, a
instruo pode computar oito operaes de 32 bits ou quatro operaes
de 64 bits.
Livro-texto de Minicursos

101

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

(b) MUL. Usando essa instruo possvel calcular quatro multiplicaes de


palavras de 32 bits; os quatro produtos de 64 bits gerados so armazenados em um registrador de 256 bits.
3. Funes lgicas.
(a) XOR/AND/OR/ANDNOT. Essas funes calculam operaes lgicas de 256
bits.
(b) SHL/SHR. Para cada palavra armazenada em um registrador vetorial, essas instrues deslocam para esquerda ou direta, respectivamente, uma
quantidade fixa de bits.
(c) SHLV/SHRV. Essas instrues potencializam o processamento paralelo das
instrues de deslocamento. Porque ao invs de fazer um deslocamento
fixo, a instruo recebe, alm do registrador alvo, um segundo registrador contendo a quantidade de bits a serem deslocados; desta forma, cada
palavra do vetor alvo ser deslocada de acordo com s quantidades especificadas no segundo registrador.
4. Permutaes internas no registrador.
(a) PERM. Instrues para embaralhar a posio das palavras dentro do registrador so chamadas de permutaes. No entanto, nas primeiras verses
do SSE e AVX, foram tambm conhecidos como shuffle ou shuffling. Durante o texto o termo permutao ser usado para se referir a esse tipo
de instrues.
5. Combinao de registradores.
(a) UPCK. Essas instrues preenchem um registrador intercalando as palavras
da parte alta/baixa de outros dois registradores de origem.
(b) BLEND. Esse tipo de instruo preenche um registrador a partir de palavras
contidas em dois registradores diferentes; a escolha est baseada no valor
de uma mscara binria.
(c) PRBLEND. Essa instruo combina partes de 128 bits de dois registradores
de 256 bits em um novo registrador de 256 bits; a escolha est baseada
no valor de uma mscara binria.
(d) ALIGNR. Essa instruo concatena dois registradores de 128 bits e desloca
n bytes, os 128 bits menos significativos do valor intermedirio gerado
so armazenado no registrador destino.
6. Converso de elementos.
(a) CAST. So pseudo-instrues que mudam a semntica do contedo dos
registradores. A maioria dessas instrues so tratadas diretamente pelos
compiladores e no geram nenhuma instruo em cdigo de montagem.
Livro-texto de Minicursos

102

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Instruo vetorial

Latncia

Vazo

LOAD
STORE
BRCAST

3
3
5

2
1
2

ADD/SUB
MUL

1
5

2
1

XOR
SHL/SHR
SHLV SHRV

1
1
2

3
1
0.5

PERM
BLEND
PRBLEND
ALIGNR
UPCK

3
1
3
1
1

1
3
1
1
1

CAST
EXTRACT
INSERT

0
3
3

1
1

Porta de execuo
0

Tabela 3.1: Latncia, vazo (instrues executadas por ciclo quando no h dependncias) e portas de execuo de algumas instrues AVX2.
(b) EXTRACT. Essa instruo retorna um registrador de 128 bits composto
pela parte alta (ou baixa) de um registrador de 256 bits. Diferente das
instrues de CAST, esta uma instruo explicita que codificada em
linguagem de montagem.
(c) INSERT. Essa instruo tem a funcionalidade inversa instruo EXTRACT,
pois ela permite adicionar o contedo de um registrador de 128 bits na
parte alta (ou baixa) de um registrador de 256 bits.
Essa lista no inclui todas as instrues pertencentes ao conjunto de instrues
AVX2; recomendado consultar [Cor11] para informao adicional sobre o conjunto
AVX2. Na Tabela 3.1 so mostradas as latncias, a vazo e as portas de execuo
das instrues AVX2 acima citadas; essas informaes foram extradas do relatrio
tcnico produzido por Agner Fog [Fog14].
3.2.3. Deteco dos conjuntos de instrues
Antes de usar um conjunto avanado de instrues preciso verificar se tal conjunto
suportado pelo processador alvo. Existem vrias formas de fazer essa verificao,
caso o sistema operacional usado seja o Linux a maneira mais fcil rodar o seguinte
comando no terminal:
1

$ cat / p r o c / c p u i n f o | g r e p f l a g s

Livro-texto de Minicursos

103

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1
2
3
4
5
6
7
8

flags :

f p u vme de p s e t s c msr pae mce cx8 a p i c s e p m t r r


pge mca cmov p a t p s e 3 6 c l f l u s h d t s a c p i mmx f x s r
sse sse2 s s h t tm pbe s y s c a l l nx pdpe1gb r d t s c p
p n i p c l m u l q d q d t e s 6 4 m o n i t o r d s _ c p l vmx smx e s t
tm2 ssse3 fma cx16 x t p r pdcm p c i d sse4_1 sse4_2
x 2 a p i c movbe p o p c n t t s c _ d e a d l i n e _ t i m e r aes x s a v e
f s g s b a s e t s c _ a d j u s t bmi1 h l e avx2 smep bmi2 erms
i n v p c i d rtm avx

Esse comando mostra as caractersticas do processador. Dentre as sadas


temos o campo flags, onde apresentado os conjuntos de instrues suportados.
O processador onde esse comando foi executado apresentado no Apndice A e,
como se pode perceber, o mesmo suporta todos os conjuntos de instrues aqui
apresentados.
Outra forma de verificar se os conjuntos de instrues so suportados, independente de sistema operacional, usando a instruo CPUID para verificar se o bit
que identifica a presena de um conjunto de instrues est habilitado ou no. No
seguinte trecho de cdigo pode-se ver como usar CPUID para identificar se o conjunto de instruo AES-NI suportado. Adicionalmente, recomenda-se a execuo
do programa FeatureDetector, que pode ser encontrado em [Yee15], para verificar se
os outros conjuntos de instrues so suportados.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# include < stdio .h >


# define cpuid ( func , ax , bx , cx , dx ) \
__asm__ __volatile__ ( " cpuid " : \
" = a " ( ax ) , " = b " ( bx ) , \
" = c " ( cx ) , " = d " ( dx ) : \
" a " ( func ));
int C h e c k _ C P U _ s u p p o r t _ A E S () {
unsigned int a ,b ,c , d ;
cpuid (1 ,a ,b ,c , d );
return ( c & 0 x2000000 );
}
void main (){
printf ( " O processador suporta AES - NI : % s \ n " ,
C h e c k _ C P U _ s u p p o r t _ A E S () ? " Sim " : " Nao " );
}

3.3. Tcnicas para implementao segura


Utilizar criptografia de maneira segura na prtica no-trivial. Algoritmos criptogrficos fornecem suas propriedades de segurana apenas em condies muito precisas, quanto todas as premissas so devidamente satisfeitas. Alguns erros comuns
observados em sistemas em produo quando da utilizao de algoritmos criptogrficos so a gerao, distribuio e armazenamento inseguros de chaves criptogrficas,
a escolha inadequada de primitivas, a utilizao de algoritmos obsoletos, o desenvolvimento de algoritmos e implementaes prprias sem reviso externa, a validao
descuidada da titularidade de chaves pblicas e certificados digitais, e o vazamento
Livro-texto de Minicursos

104

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

de informao sensvel por canais laterais [Sta10] ou recuperao de dados latentes


da memria principal [HSH+ 09]. Como este captulo se restringe implementao
segura e eficiente dos algoritmos criptogrficos propriamente ditos, sem tratar em
detalhes de sua utilizao correta, a discusso ser limitada ao escopo de implementao e mitigao de ataques de canal lateral.
3.3.1. Ataques de canal lateral
Eficincia no o nico requisito para aplicaes prticas de criptografia, especialmente em sistemas embarcados que expem superfcies de ataque considerveis e
alto potencial para manipulao direta por agentes maliciosos. Intervenes desse
tipo podem incluir a medio em tempo real de caractersticas como tempo de execuo, consumo de energia, emanaes acsticas e eletro-magnticas; e injeo de
falhas para interromper a operao normal de uma funo criptogrfica, sempre na
esperana de extrair informao secreta e material de chave diretamente do estado
interno do algoritmo [Sta10]. possvel mitigar essas ameaas com o projeto cuidadoso das implementaes de algoritmos criptogrficos, aplicando tcnicas para
execuo regular e invariante no tempo, de forma a desassociar padres de computao com informao sensvel.
Algumas vezes os recursos necessrios para se implementar um algoritmo criptogrfico de forma segura j esto disponveis na plataforma, na forma de instrues
dedicadas ou organizao da arquitetura. Na maioria dos casos, o implementador
precisa tomar cuidado adicional para verificar se suas contramedidas so corretamente traduzidas em linguagem de mquina pelo compilador ou utilizar linguagem
de montagem diretamente. Em software, o escopo do que pode ser feito bastante
limitado, pois difcil ter controle de granularidade fina sobre todos os aspectos da
execuo. Por essa razo, a nfase ser dada a contramedidas simples que protegem
implementaes contra ataques de canal lateral baseados no tempo.
3.3.2. Contramedidas algortmicas
Implementaes seguras de algoritmos criptogrficos devem ser realizadas em tempo
invariante com a informao sensvel processada (dados a serem cifrados ou chave
criptogrfica), caso contrrio um adversrio capaz de monitorar o tempo de execuo
do algoritmo pode correlacionar suas observaes com informao secreta. A monitorao no precisa ser necessariamente local e pode acontecer via iterao remota,
pois j foi demonstrado que a latncia de rede no insere rudo o suficiente para
esconder pequenas variaes do tempo de execuo, mesmo que na granularidade
de ciclos [BT11, BB05]. As variaes ocorrem especialmente em trechos crticos
que manipulam a chave privada, validam o formato de preenchimento (padding) ou
conferem um valor de resumo ou autenticador.
Pequenas variaes de tempo de execuo podem se apresentar durante a
comparao de cadeias de caracteres, desvios condicionais dependentes de bits da
chave e limitantes do nmero de iteraes de laos. No primeiro caso, se a interrupo do lao acontecer exatamente na primeira posio diferente entre as cadeias
sendo comparadas, o adversrio capaz de realizar um ataque de busca exaustiva
Livro-texto de Minicursos

105

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

em cada byte individualmente, baseado no tempo de resposta da comparao. Desta


forma, possvel determinar o autenticador de uma mensagem, por exemplo, sem
conhecimento da chave. O trecho de cdigo abaixo ilustra uma forma segura de
comparao:
1
2
3
4
5
6
7
8
9
10

int cmp_const ( const void * a , const void * b ,


const size_t size ) {
const unsigned char * _a = a , * _b = b ;
unsigned char result = 0;
size_t i ;
for ( i = 0; i < size ; i ++) {
result |= _a [ i ] ^ _b [ i ];
}
return result ;
}

Desvios condicionais podem ser outra fonte de problemas [Koc96], especialmente


quando se considera execuo especulativa em processadores modernos ou o efeito
da predio de desvios [AcKKS07]. A remoo de desvios condicionais envolve a
aplicao de tcnicas de programao sem desvios condicionais. A aplicao correta
dessas tcnicas altamente dependente do algoritmo sendo estudado, mas uma
generalizao til calcular os dois ramos do desvio condicional simultaneamente
e utilizar operaes mascaradas para selecionar o valor correto apenas ao final da
execuo. A ideia ilustrada pelo trecho de cdigo abaixo para seleo entre dois
valores em tempo constante, dependendo de um bit:
1
2
3
4
5
6
7
8

unsigned select ( unsigned a , unsigned b ,


unsigned bit ) {
/* -0 = 0 , -1 = 0 xFF .... FF */
unsigned mask = - bit ;
unsigned ret = mask & ( a ^ b );
ret = ret ^ a ;
return ret ;
}

Outra possibilidade utilizar uma variante da funo de seleo para alterar em


tempo constante os valores de entrada do trecho de cdigo protegido ser executado.
Por fim, cuidado adicional deve ser tomado tambm para no permitir que o nmero de iteraes de laos sejam variveis com informao sensvel, por exemplo o
comprimento de uma chave criptogrfica em um sistema criptogrfico assimtrico.
3.3.3. Contramedidas de acesso memria
Acessos memria devem tambm ser cuidadosamente protegidos. No contexto de
cifras de bloco, a preocupao se concentra na representao de caixas de substituio como vetores ou introduo de qualquer tabela pr-calculada para acelerar
operaes sobre bits realizadas pela cifra. O algoritmo AES ilustra muito bem o
problema, pois seu desempenho depende enormemente da eficincia das caixas de
substituio, motivando o implementador a utilizar tabelas simples. Entretanto, um
Livro-texto de Minicursos

106

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

adversrio capaz de monitorar o comportamento da memria cache pode determinar


que pores da caixa de substituio so usadas na etapa de cifrao e recuperar
informao sensvel [Ber04, Per05, BM06, TOS10].
Existem contramedidas de diversos tipos para mitigar o problema. Uma opo simples adotar arquiteturas com latncia de acesso uniforme memria, como
alguns microcontroladores simples. Outra possibilidade utilizar uma implementao em hardware do algoritmo, quando disponvel, que deve oferecer uma superfcie
de ataque menor. Alternativas mais sofisticadas para implementao em software
so bitslicing, onde as operaes sobre bits so realizadas explicitamente, sem ajuda
de tabelas pr-calculadas, e o impacto em desempenho reduzido pela aplicao do
mesmo circuito lgico a bits de diferentes variveis simultaneamente [Bih97, KS09].
Para tabelas pequenas, tambm possvel utilizar uma instruo para acesso a tabela armazenada em um registrador [Ham09] ou percorrer a tabela inteira a cada
leitura, utilizando a funo de seleo apresentada anteriormente para realizar uma
cpia condicional entre o valor lido e um valor atual da varivel de interesse.
A implementao segura de criptografia assimtrica, comum a necessidade
de manipular vetores em memria em tempo constante. Por exemplo, algoritmos de
exponenciao costumam calcular pequenos mltiplos da base para acelerar o clculo
de uma potncia da chave privada. Se o adversrio puder recuperar as posies de
memria sendo acessadas ao longo das iteraes do algoritmo, o expoente privado
termina relevado. A mitigao mais comum para esse problema percorrer toda a
tabela utilizando uma variao da funo de seleo para vetores, na forma de uma
cpia condicional sem desvios, que terminar visitando toda a tabela em ordem
determinstica mas copiando apenas as posies desejadas:
1
2
3
4
5
6
7
8
9

void copy_cond ( int *c , const int *a ,


int d , dig_t b ) {
dig_t mask , t ;
mask = -b ;
for ( int i = 0; i < d ; i ++) {
t = ( a [ i ] ^ c [ i ]) & mask ;
c [ i ] ^= t ;
}
}

Como ser visto adiante, outros algoritmos de exponenciao possuem padro regular de execuo em cada uma de suas iteraes, mas as variveis de entrada e sada
podem ser diferentes dependendo dos bits da chave [Mon87]. Nesse caso, monitorar
a latncia de acesso memria pode revelar ao adversrio informao sobre a chave
a partir dos acertos ou erros na memria cache. Uma soluo para o problema,
realizar trocas condicionais entre as variveis a cada iterao a partir de uma variante da cpia condicional encontrada abaixo. Por mais que as verses das funes
sejam apresentadas para vetores de palavras do processador, possvel aprimorar
seu desempenho pela implementao de verses de maior granularidade utilizando
instrues vetoriais.
Livro-texto de Minicursos

107

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1
2

void swap_cond ( int *c , int *a , int d , dig_t b ) {


dig_t mask , t ;

3
4
5
6
7
8
9
10

mask = -b ;
for ( int i = 0; i < d ; i ++) {
t = ( a [ i ] ^ c [ i ]) & mask ;
a [ i ] ^= t ;
c [ i ] ^= t ;
}

Outras tcnicas para implementao segura de algoritmos criptogrficos podem ser encontradas em https://cryptocoding.net/.

3.4. Tcnicas para acelerar operaes criptogrficas


O objetivo desta seo apresentar exemplos concretos sobre a implementao de
algoritmos criptogrficos, e mostrar conjuntos avanados de instrues que podem
ser usados para acelerar a implementao de: o algoritmo de encriptao AES, a
funo de resumo SHA-3 e o protocolo de acordo de chaves baseado na curva elptica
Curve25519.
Para cada algoritmo, sero descritas as operaes necessrias para seu funcionamento; os detalhes de como implement-lo eficientemente em uma arquitetura
de 64 bits, que preferencialmente suporte os conjuntos avanados de instrues; e
finalmente os resultados de desempenho sero reportados.
3.4.1. Acelerao do algoritmo de encriptao AES
Esta seo descreve como maximizar o uso do suporte nativo em hardware para
acelerar a computao do algoritmo de encriptao AES. Inicialmente, as operaes
realizadas para encriptar um bloco de dados sero descritas e posteriormente como
acelerar a execuo destas operaes atravs de instrues especiais presentes nos
processadores atuais.
3.4.1.1. Descrio do algoritmo AES
O algoritmo Advanced Encryption Standard (AES) foi publicado pelo NIST em
2001 [Nat01a]. AES um cifrador de bloco que encripta uma mensagem M de 128
bits usando uma chave k e produz um texto cifrado C de 128 bits. O tamanho da
chave pode ser de 128, 192 ou 256 bits; o cifrador AES denotado por AES-128,
AES-192 ou AES-256 dependendo do tamanho da chave usada.
O Algoritmo 1 descreve a sequncia de operaes do AES, cuja entrada uma
chave k de 128, 192 ou 256 bits e uma mensagem de 128 bits, que pode ser visto
como uma matriz S de 4 4 bytes, denotada por estado; o AES modifica o estado
iterativamente usando um conjunto de operaes, onde o nmero de iteraes N
depende do tamanho da chave. O estado modificado a cada rodada pelas seguintes
transformaes:
Livro-texto de Minicursos

108

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

SubBytes. O estado atualizado pela aplicao da caixa de substituio da


seguinte maneira: seja s algum byte do estado a ser substitudo; primeiramente
se calcula t0 que o inverso multiplicativo de s no corpo F28 , quando s = 0
ento t0 = 0. Depois, seja (t07 , . . . , t00 )2 a representao na base 2 de t0 . Ento
possvel substituir s pelo byte t = At0 + b, onde A e b esto definidas no
padro [Nat01a]. As operaes de multiplicao e soma devem ser feitas no
corpo binrio F2 , isto , com a aritmtica modulo 2. A caixa de substituio
foi projetada para que possua uma baixa correlao entre os bits de entrada e
os bits de sada [DR01].
ShiftRows. Realiza uma rotao nas linhas da matriz, isso assegura que os
bytes de uma coluna sejam dispersos nas quatro colunas.

t0 t1 t2 t3
t0 t1 t2 t3

t
t

t5 t6 t7
t
t
t

4
5
6
7
4

= ShiftRows
t8
t10 t11 t8
t9 t10 t11
t9
t12 t13 t14 t15
t15 t12 t13 t14

(3)

MixColumns. Calcula a multiplicao do estado, visto como matriz, com uma


matriz predefinida. Diferente da operao SubBytes, aqui as operaes aritmticas so realizadas no corpo binrio F28 .

u0 u1 u2 u3
2
u

u5 u6 u7 1
4

=
u8
u9 u10 u11 1
u12 u13 u14 u15
3

3
2
1
1

1
3
2
1

1
t0 t1 t2 t3

1 t5 t6 t7 t4

3 t10 t11 t8 t9
2
t15 t12 t13 t14

(4)

AddRoundKey. Aplica uma operao XOR entre o estado e a chave de rodada


correspondente, como pode ser visto nas linhas 3, 8 e 12 do Algoritmo 1.
A chave usada para gerar um conjunto de chaves de rodada as quais so
computadas mediante uma funo de expanso de chaves, descrita no Algoritmo 2.
Neste algoritmo so introduzidas duas operaes que operam sobre palavras de 32
bits:
RotWord. Seja (t3 , t2 , t1 , t0 )8 a representao na base 8 da palavra T , ento a
funo de rotao est definida como segue:
(t2 , t1 , t0 , t3 )8 RotWord(T ).

(5)

SubWord. Seja (t3 , t2 , t1 , t0 )8 a representao na base 8 da palavra T , a operao


consiste em aplicar a caixa de substituio descrita em SubBytes para cada
byte:
(t03 , t02 , t01 , t00 )8 SubWord(T ), t0i SubBytes(ti ) para i {0, 1, 2, 3}.

(6)

O conjunto de chaves de rodada pode ser gerado antes da execuo do algoritmo de


encriptao. Essas chaves podem ser reutilizadas para gerar as chaves de rodada do
processo de decriptao.
Livro-texto de Minicursos

109

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Algoritmo 1 Encriptao de um bloco de 128 bits usando AES.


Entrada: M , uma cadeia binria de 128 bits.
k, uma chave de tamanho l {128, 192, 256} bits.
Sada: C, uma cadeia binria de 128 bits que representa o texto encriptado de M .
1: {R0 , . . . , RN } KeyExpansion(k)

10 if l = 128
2: N 12 if l = 192

14 if l = 256
3: S M R0
4: for i 1 to N 1 do
5:
T SubBytes(S)
6:
T 0 ShiftRows(T )
7:
U MixColumns(T 0 )
8:
S U Ri
9: end for
10: S SubBytes(S)
11: S ShiftRows(S)
12: C S RN
13: return C

Algoritmo 2 Expanso de chaves do algoritmo AES (KeyExpansion).


Entrada: k, uma chave de tamanho l {128, 192, 256} bits.
Sada: {R0 , . . . , RN }, o conjunto de chaves de rodada.
l
1: Nk 32

10 if l = 128
2: N 12 if l = 192

14 if l = 256
3: RConi 2i1 F28 para i {1, . . . , 10}.
4: Seja (wNk 1 , . . . , w0 )32 a representao na base 32 da chave k.
5: for i Nk to 4N + 3 do
6:
T wi1
7:
if i 0 mod Nk then
8:
T SubWord(RotWord(T )) RConi/Nk
9:
else if NK > 6 and i 4 mod Nk then
10:
T SubWord(T )
11:
end if
12:
wi wiNk T
13: end for
14: for i 0 to N do
15:
Ri (w4i k w4i+1 k w4i+2 k w4i+3 )
16: end for
17: return {R0 , . . . , RN }
Livro-texto de Minicursos

110

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

P1

P2

P3

Pn

VI
Ek

Ek

Ek . . . Ek

C1

C2

C3

C1

C2

C3

Dk

Dk

Dk . . . Dk

P1

P2

P3

VI

Cn

(a) Encriptao no modo CBC.

V I +2

V I +n

Ek

Ek

Ek
. . . Pn

P2
C1

Pn

(b) Decriptao no modo CBC.

V I +1

P1

Cn

C2

Cn

(c) Modo CTR.

Figura 3.3: Modos de operao definidos pelo NIST no padro SP 800-38A [Nat01b].

3.4.1.2. Modos de operao


O algoritmo AES recebe como entrada um bloco de 128 bits e uma chave para
produzir um texto encriptado do mesmo tamanho. Se o texto claro for maior que
128 bits ainda possvel usar o AES, dividindo-o em blocos de 128 bits. No entanto,
quando mltiplos blocos so encriptados usando a mesma chave alguns problemas
de segurana podem surgir.
Para resolver esse problema, existem algoritmos chamados modos de operao que permitem que os cifradores de bloco sejam usados para mensagens de qualquer tamanho. Esses modos dividem a mensagem em n blocos, P = {P1 , . . . , Pn },
e utilizam o cifrador de bloco como primitiva bsica para obter o texto cifrado,
C = {C1 , . . . , Cn }. O NIST definiu no padro SP 800-38A cinco modos de operao: ECB, CBC, CFB, OFB e CTR [Nat01b]. Aqui sero detalhados dois dos mais
utilizados.
No modo de operao Cipher Block Chaining (CBC) a computao do texto
cifrado feita como segue: o primeiro bloco, C1 , computado como pela encriptao
de P1 V I, onde V I um vetor de inicializao; os blocos subsequentes so computados por Ci = Ek (Pi Ci1 ), para 2 i n. Como pode ser visto na Figura 3.3a, a
gerao do texto encriptado inerentemente sequncial. Entretanto, a decriptao
pode ser computada mais rapidamente, pois depende apenas dos blocos de texto
Livro-texto de Minicursos

111

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

encriptado, veja a Figura 3.3b.


O modo de operao Counter (CTR) um modo mais flexvel e eficiente do
que o CBC. O CTR calcula o texto cifrado da seguinte maneira: cada bloco do texto
cifrado Ci calculado pela operao XOR entre Pi e o resultado da encriptao de
V I + i, para 1 i n. A encriptao de um texto claro pode ser feita em paralelo,
sendo mais eficiente do que o modo CBC. Alm disso, o processo de decriptao
anlogo ao de encriptao e pode ser computado por Pi = Ci Ek (V I + i), para
1 i n. Na Figura 3.3c est ilustrado o modo de operao CTR.
O vetor de inicializao (V I) tem o efeito de aleatorizar o processo de encriptao, portanto deve ser escolhido aleatoriamente sempre que uma encriptao
realizada. Por conta disso, recomendado que o mesmo vetor de inicializao no
seja utilizado mais de uma vez, caso contrrio o modo de operao se torna inseguro.
3.4.1.3. Implementaes do algoritmo AES
A maioria das operaes usadas pelo AES podem ser calculadas atravs de operaes
binrias que esto presentes na maioria dos processadores atuais. Entretanto, uma
implementao eficiente e resistente a ataques de canal lateral do AES no uma
tarefa trivial. Um conjunto de tcnicas que podem ser usadas para conseguir uma
implementao com tais caractersticas apresentado a seguir:
Tabelas de consulta. O AES pode ser implementado eficientemente usando
tabelas de consulta; nessa tcnica uma parte do processamento do algoritmo
pode ser substituda diretamente por um acesso a uma tabela previamente
computada. Essa tcnica, entretanto, requer que os acessos tabela sejam
feitos de forma segura, evitando assim os ataques de canal lateral.
Bitslice. A tcnica de implementao bitslicing foi proposta por Biham para
o algoritmo DES [Bih97]. Posteriormente essa tcnica comeou a ser usada
tambm no AES [RSD06, MN07, KS09], visando aumentar o desempenho,
pois com o bitslice as transformaes do AES podem ser descritas na forma de
circuitos lgicos que operam bit a bit.
AES-NI. Em 2010 a Intel agregou a seus processadores um novo conjunto de
instrues, Intel Advanced Encryption Standard New Instructions (AES-NI),
que implementa todas as etapas do algoritmo AES em hardware, resultando
assim em uma implementao do AES mais eficiente que as implementaes
de software conhecidas at ento. Alm de permitir a implementao do AES
com alto desempenho as novas instrues tambm fornecem benefcios de segurana, pois elas no utilizam tabelas de consulta e seu tempo de execuo deve
ser igual, independente dos dados de entrada, eliminando assim os principais
ataques de tempo conhecidos [Gue10].
Na seo seguinte sero apresentados mais detalhes de como as novas instrues so
aplicadas na implementao segura e eficiente do algoritmo AES.
Livro-texto de Minicursos

112

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

3.4.1.4. Acelerao usando instrues AES-NI


Em 2010, a Intel lanou uma arquitetura chamada Westmere, que adicionou seis
novas instrues para acelerar o processo de encriptao usando o algoritmo AES.
Esse novo conjunto de instrues conhecido como AES-NI e tais instrues podem
ser usadas diretamente em linguagem de montagem ou tambm como funes em
linguagem C (comumente conhecidas como intrinsics [Cor14]).
As instrues AES-NI usam registradores de 128 bits para armazenar a informao da chave e o estado. A seguir so apresentadas as instrues presentes no
conjunto AES-NI:
AESENC. Realiza uma rodada da funo de encriptao do AES. Aplica as
operaes de ShiftRows, SubBytes e MixColumns sobre um registrador XMM1,
que contm o estado; posteriormente aplicado uma operao XOR entre o
resultado e a chave de rodada, guardada no registrador XMM2.
AESENCLAST. Computa a ltima rodada de funo de encriptao do AES.
Aplica as operaes de ShiftRows e SubBytes sobre um registrador XMM1,
que contm o estado; posteriormente aplicado uma operao XOR entre o
resultado e a chave de rodada, guardada no registrador XMM2.
AESDEC/AESDECLAST. Essas instrues so anlogas s instrues previamente
explicadas, com a diferena que estas so usadas para computar a decriptao.
AESKEYGENASSIST. Essa instruo usada para gerar as chaves de rodada do
AES; na Figura 3.4d pode ser visto o cdigo que usado para gerar as chaves
de rodada do algoritmo AES-128.
AESIMC. Essa funo gera as chaves de rodada da decriptao a partir das
chaves de rodada da encriptao, usando o trecho de cdigo na Figura 3.4c.
Os trechos de cdigo abaixo mostram como implementar em linguagem de
montagem o algoritmo AES-128 para encriptar um bloco de 128 bits. Inicialmente,
as chaves de rodada previamente computadas se encontram armazenadas nos registradores XMM0 a XMM10, e o estado S armazenado no registrador XMM15. A primeira
instruo faz um XOR com a primeira chave de rodada e depois utiliza nove vezes
a instruo AESENC para computar uma rodada. Finalmente, a computao da ltima rodada executada pela instruo AESENCLAST. Nas Figuras 3.4a e 3.4b so
mostradas as sequencias de instrues para realizar a encriptao e a decriptao de
blocos de 128 bits, respectivamente.
3.4.1.5. Testes de desempenho
Alguns experimentos foram projetados para nos auxiliar a observar os ganhos obtidos
com a utilizao do conjunto AES-NI.
Livro-texto de Minicursos

113

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1
2
3
4
5
6
7
8
9
10
11

pxor
xmm15 , xmm0
aesenc xmm15 , xmm1
aesenc xmm15 , xmm2
aesenc xmm15 , xmm3
aesenc xmm15 , xmm4
aesenc xmm15 , xmm5
aesenc xmm15 , xmm6
aesenc xmm15 , xmm7
aesenc xmm15 , xmm8
aesenc xmm15 , xmm9
aesenclast xmm15 , xmm10

;
;
;
;
;
;
;
;
;
;
;

AddRoundKey
Round 1
Round 2
Round 3
Round 4
Round 5
Round 6
Round 7
Round 8
Round 9
Round 10

(a) Encriptao.
1
2
3
4
5
6
7
8
9
10
11

pxor
xmm15 , xmm10
aesdec xmm15 , xmm9
aesdec xmm15 , xmm8
aesdec xmm15 , xmm7
aesdec xmm15 , xmm6
aesdec xmm15 , xmm5
aesdec xmm15 , xmm4
aesdec xmm15 , xmm3
aesdec xmm15 , xmm2
aesdec xmm15 , xmm1
aesdeclast xmm15 , xmm0

;
;
;
;
;
;
;
;
;
;
;

1
2
3
4
5
6
7
8
9
10
11
12
13
14

AddRoundKey
Round 1
Round 2
Round 3
Round 4
Round 5
Round 6
Round 7
Round 8
Round 9
Round 10

(b) Decriptao.

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

mov rdx , OFFSET Key_Schedule


mov rax , OFFSET K e y _ S c h e d u l e _ D e c r y p t
movdqu xmm1 , XMMWORD PTR [ rdx ]
movdqu XMMWORD PTR [ rax ] , xmm1
add rdx , 0 x10
add rax , 0 x10
mov ecx , 9
; {9 ,11 ,13}
repeat :
movdqu xmm1 , XMMWORD PTR [ rdx ]
aesimc xmm1 , xmm1
movdqu XMMWORD PTR [ rax ] , xmm1
add rdx , 0 x10
add rax , 0 x10
sub rcx , 0 x01
jnz repeat

30
31
32
33
34
35
36
37
38
39

keygen_128 :
movdqu xmm1 , XMMWORD PTR Keyindent
movdqu XMMWORD PTR KeySch , xmm1
mov rcx , OFFSET KeySch +16
a es ke yg e na ss is t xmm2 , xmm1 , 0 x01
call k e y _ e x p a n s i o n _ 1 2 8
a es ke yg e na ss is t xmm2 , xmm1 , 0 x02
call k e y _ e x p a n s i o n _ 1 2 8
a es ke yg e na ss is t xmm2 , xmm1 , 0 x04
call k e y _ e x p a n s i o n _ 1 2 8
a es ke yg e na ss is t xmm2 , xmm1 , 0 x08
call k e y _ e x p a n s i o n _ 1 2 8
a es ke yg e na ss is t xmm2 , xmm1 , 0 x10
call k e y _ e x p a n s i o n _ 1 2 8
a es ke yg e na ss is t xmm2 , xmm1 , 0 x20
call k e y _ e x p a n s i o n _ 1 2 8
a es ke yg e na ss is t xmm2 , xmm1 , 0 x40
call k e y _ e x p a n s i o n _ 1 2 8
a es ke yg e na ss is t xmm2 , xmm1 , 0 x80
call k e y _ e x p a n s i o n _ 1 2 8
a es ke yg e na ss is t xmm2 , xmm1 , 0 x1b
call k e y _ e x p a n s i o n _ 1 2 8
a es ke yg e na ss is t xmm2 , xmm1 , 0 x36
call k e y _ e x p a n s i o n _ 1 2 8
jmp END
key_expansion_128 :
pshufd xmm2 , xmm2 ,
pslldq xmm3 , xmm1 ,
pxor
xmm1 , xmm3
pslldq xmm3 , xmm1 ,
pxor
xmm1 , xmm3
pslldq xmm3 , xmm1 ,
pxor
xmm1 , xmm3
pxor
xmm1 , xmm2
movdqu XMMWORD PTR
add rcx , 0 x10
ret
END :

0 xFF
0 x04
0 x04
0 x04
[ rcx ] , xmm1

(d) Gerao das chaves de rodada para encriptao.

movdqu xmm1 , XMMWORD PTR [ rdx ]


movdqu XMMWORD PTR [ rax ] , xmm1

(c) Gerao das chaves de rodada para decriptao.

Figura 3.4: Lista de cdigos de montagem usados na implementao das funes


de encriptao, decriptao e gerao das chaves de rodada do algoritmo AES-128
usando as instrues AES-NI.

Teste 1. Calcular os ciclos por byte e a vazo para encriptar mensagens de 50 MB


usando o algoritmo AES com tamanho de chave de 128 bits e com os modos de
operao CBC e CTR.
O desempenho de dois cdigos que implementam o algoritmo AES-128 sero
mostrados, usando os modos de operao CBC e CTR. A primeira implementao
Livro-texto de Minicursos

114

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Implementao
Nativa de x64
AES-NI

Modo CBC

Modo CTR

Ciclos/byte

MB/s

Ciclos/byte

MB/s

11,08
4,50

306,08
752,36

11,67
0,83

290,51
4061,86

Tabela 3.2: Comparao do desempenho do AES-128-CBC e AES-128-CTR. Os


resultados deste teste foram obtidos no computador HW-ULTRA especificado no
Apndice A.

no aproveita o suporte de encriptao por hardware e simplesmente utiliza instrues nativas de 64 bits. A segunda implementao, entretanto, utiliza as instrues
AES-NI presentes nos processadores da Intel. Esses cdigos fazem parte da biblioteca de exemplos da Intel (verso 1.2) que est disponvel em [Rot11].
Os resultados do Teste 1 so apresentados na Tabela 3.2; pode-se perceber
que no modo de operao CBC, a implementao que usa AES-NI aproximadamente 2,5 vezes mais rpida que a implementao nativa de 64 bits. O impacto no
desempenho causado pelas instrues AES-NI ainda maior no CTR, que chega a
ser 14 vezes mais rpido do que uma implementao sequencial nativa de 64 bits.
Teste 2. Utilizar o modulo de medio de desempenho da biblioteca OpenSSL para
determinar o tempo de execuo do algoritmo AES-128-CBC. O teste ser feito, com
e sem suporte das instrues AES-NI.
Neste experimento foi utilizado o OpenSSL, verso 1.0.2d [The03]. O desempenho do algoritmo AES pode ser medido pela seguinte linha de comando:
1

$ o p e n s s l s p e e d e l a p s e d evp aes 128cbc | t a i l

Na hora de indicar o parmetro -evp o OpenSSL escolher a implementao adequada para a arquitetura alvo; caso seu computador no conte com o conjunto de
instrues AES-NI, ento ser executado o teste com uma implementao suportada. Parte da sada deste comando, executada no processador HW-ULTRA,
apresentada a seguir:
1
2
3
4
5

The numbers a r e i n 1000 s o f b y t e s p e r s e c o n d p r o c e s s e d .


type
16 b y t e s
64 b y t e s
256 b y t e s
aes128cbc
285865.74 k
306641.68 k
311269.29 k
type
1024 b y t e s
8192 b y t e s
aes128cbc
313865.59 k
314833.08 k

Agora, o mesmo experimento ser executado indicando explicitamente, atravs de uma varivel de ambiente, que execute uma implementao genrica, isto ,
sem suporte ao AES-NI.
1
2

$ OPENSSL_ia32cap="~0 x200000200000000 " \


o p e n s s l s p e e d e l a p s e d evp aes 128cbc | t a i l

Livro-texto de Minicursos

115

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

1
2
3
4
5

The numbers a r e i n 1000 s o f b y t e s p e r s e c o n d p r o c e s s e d .


type
16 b y t e s
64 b y t e s
256 b y t e s
aes128cbc
129931.97 k
144134.36 k
146498.66 k
type
1024 b y t e s
8192 b y t e s
aes128cbc
148852.61 k
149275.23 k

Os resultados dos experimentos, mostram que a implementao usando AESNI acima de 2 vezes mais rpida do que a implementao genrica. Maiores
detalhes sobre o desempenho do OpenSSL usando instrues AES-NI podem ser
consultados em [GGF+ 15].
Observaes: esses dois experimentos so uma prova de que possvel atingir um
nvel de desempenho alto para encriptar dados desde que a implementao aproveite
de maneira adequada as instrues especializadas contidas nos processadores.
3.4.2. Implementao da funo de resumo SHA-3
Esta seo detalha como usar o conjunto de instrues vetoriais para acelerar a
computao do mais novo padro de funes de resumo SHA-3. Inicialmente ser
apresentada uma breve introduo da famlia de funes de resumo SHA-3 e, posteriormente, como a implementao em software do SHA-3 pode ser acelerada por
meio de instrues vetoriais.
A famlia de funes de resumo Standard Hash Algorithm (SHA) [Nat08a] foi
padronizada pelo Instituto Nacional de Padres e Tecnologias americano (NIST) e
atualmente usada em muitas aplicaes e protocolos. Nos ltimos anos, a famlia
SHA sofreu alguns ataques; em 2005, [BCJ+ 05] e [RO05] mostraram ataques
colises em uma verso reduzida do SHA-1; no mesmo ano, [WYY05] mostrou um
ataque que quebra, teoricamente, a resistncia coliso do SHA-1. A segunda verso
da famlia, SHA-2, possui uma estrutura muito similar ao SHA-1 e j possui alguns
ataques sua verso reduzida, como mostrado em [IMPR09].
Adicionalmente, foram feitas crticas aos algoritmos SHA-1 e SHA-2 por seus
detalhes de projeto serem fechados ao pblico. Por este motivo, aps um perodo de
consulta pblica e dois workshops, o NIST decidiu publicar, em 2007, uma chamada
aberta para a seleo de um novo algoritmo, o SHA-3. Ao contrrio dos algoritmos
anteriores, o concurso para a escolha do SHA-3 foi feito nos mesmos moldes do AES,
algoritmo padro de cifra de bloco, selecionado em 2001 aps cinco anos de concurso
[Nat01a]. Por esse motivo, todos os algoritmos que foram submetidos tiveram que
ter suas patentes abertas e o cdigo disponvel, afim de serem analisados e testados
durante o concurso. Em 2012, aps trs rodadas de competio, o algoritmo Keccak [BDPA11] foi anunciado como vencedor [jCPB+ 12], este algoritmo baseia-se na
construo esponja definida sobre uma permutao Keccak-p.
Em Agosto de 2015 foi publicado o documento oficial FIPS 202 [Nat15],
que descreve os detalhes da famlia SHA-3 e padroniza quatro funes de resumo,
SHA3-224, SHA3-256, SHA3-384 e SHA3-512 e duas funes de resumo com sada
varivel, Extendable Output Functions (XOF), chamadas SHAKE128 e SHAKE256.
Livro-texto de Minicursos

116

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Funes

Tamanho
de sada

Nvel de segurana em bits


Coliso

Pr-imagem

2a Pr-imagem

SHA-1

160

<80

160

160L(M )

SHA-224
SHA-512/224
SHA-256
SHA-512/256
SHA-384
SHA-512

224
224
256
256
384
512

112
112
128
128
192
256

224
224
256
256
384
512

min(224, 256 L(M ))


224
256L(M )
256
384
512L(M )

SHA3-224
SHA3-256
SHA3-384
SHA3-512
SHAKE128
SHAKE256

224
256
384
512
d
d

112
224
128
256
192
384
256
512
min(d/2, 128) min(d, 128)
min(d/2, 256) min(d, 256)

224
256
384
512
min(d, 128)
min(d, 256)

Tabela 3.3: Nvel de segurana das funes SHA-1, SHA-2 e SHA-3 [Nat15].

Os parmetros de todas as funes da famlia SHA podem ser encontrados na Tabela


3.3. Nas sees seguintes sero apresentadas a famlia SHA-3 baseada no algoritmo
Keccak e como implementar esse algoritmo eficientemente em arquiteturas de 64
bits.
3.4.2.1. Permutaes Keccak-p
Uma permutao Keccak-p que possui nr rodadas e trabalha sobre um estado S
de b bits denotada por Keccak-p[b, nr ]; a permutao definida para quaisquer
b {25, 50, 100, 200, 400, 800, 1600} e qualquer inteiro positivo nr . Uma rodada da
permutao Keccak-p consiste de uma sequncia de cinco transformaes, chamadas
de etapas de mapeamento.
O estado organizado em uma matriz 5 5 w, onde w = b/25 pode ser visto
como o tamanho das palavras do estado em bits. As 25 palavras de w bits de um
estado S so denotadas mediante si para 0 i < 25 como pode ser visto a seguir:

s0 s1 s2 s3 s4

s5
s6 s7 s8 s9

S=
s10 s11 s12 s13 s14 ; S[x, y] = s5x+y para 0 x, y < 5.

s15 s16 s17 s18 s19


s20 s21 s22 s23 s24

(7)

Etapas de mapeamento. As cinco etapas de mapeamento usadas durante uma


rodada da funo Keccak-p[b, nr ] so denotadas por , , , e . O algoritmo para
cada uma dessas etapas tem como entrada um estado S e como retorno esse estado
Livro-texto de Minicursos

117

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

atualizado. A etapa de mapeamento a nica que possui uma entrada adicional,


um inteiro ir chamado ndice da rodada.
O tamanho do estado um parmetro que est omitido da notao, pois
b sempre especificado quando as etapas de mapeamento so chamadas; visando
simplificar a notao, todas as operaes lgicas e de rotao usadas nas etapas de
mapeamento so aplicadas sobre palavras de tamanho w.
As especificaes das etapas de mapeamento so apresentadas a seguir:
Etapa de mapeamento . O efeito da etapa aplicar uma operao XOR
entre cada palavra do estado com a paridade de duas colunas do estado.
Etapa de mapeamento . Nesta etapa cada palavra do estado rotada
uma quantidade fixa de ri bits. A seguir pode-se ver a matriz R, onde cada
elemento ri representa a quantidade de bits que a palavra si ser rotada.

0 1 62 28 27

36 44 6 55 20

R=
3 10 43 25 39 ; R[x, y] = r5x+y para 0 x, y < 5.

41 45 15 21 8
18 2 61 56 14

(8)

Etapa de mapeamento . O efeito da etapa de mapeamento embaralhar as palavras do estado. Ela promove uma difuso a longo prazo dentro
das rodadas, a fim de evitar que padres sejam explorados em determinados
ataques.
Etapa de mapeamento . O efeito da etapa de mapeamento aplicar
uma operao XOR em cada palavra do estado si com a sada de uma funo
no linear aplicada a duas palavras da mesma linha de si .
Etapa de mapeamento . A etapa de mapeamento consiste na aplicao
de uma operao XOR entre o elemento s0 com um valor contante rc(ir ), onde
ir o ndice da rodada; os valores de rc so definidos em [Nat15] e so gerados
a partir de um Linear Feedback Shift Register (LFSR).
Dado um estado S e o ndice de uma rodada ir , uma funo Rnd a transformao que resulta na aplicao das etapas de mapeamento , , , e , como
pode ser visto a seguir:
Rnd(S, ir ) = (((((S)))), ir ).

(9)

A permutao Keccak-p[b, nr ] consiste de nr iteraes de Rnd.


3.4.2.2. Construo esponja
A construo esponja [BDPA07] define uma funo ESPONJA[f , pad, r] com domnio
{0, 1} e codominio {0, 1} usando uma permutao de tamanho fixo f , uma regra
Livro-texto de Minicursos

118

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 3.5: Construo esponja: Z = ESPONJA[f , pad, r](M, d).


de preenchimento pad e uma taxa de bits r. A partir desta funo, uma sada de
tamanho finito pode ser obtida pelo truncamento dos primeiros l bits. Uma instncia
da construo esponja chamada de funo esponja.
A funo esponja opera sobre um estado de b = r + c bits; onde r a taxa
de bits e c a capacidade. Primeiramente, todos os bits do estado so inicializados
com zeros. A regra de preenchimento pad aplicada sobre a mensagem de entrada
e posteriormente a mensagem dividida em k blocos de r bits; uma vez feito isso o
processamento composto por duas fases: a fase de absoro e a fase de extrao.
Na fase de absoro aplicado uma operao XOR entre um bloco de r bits
da mensagem de entrada com os primeiros r bits do estado atual. Ento, o estado
atualizado por meio de uma permutao f ; esse processo aplicado para cada um
dos k blocos da mensagem.
Na fase de extrao os primeiros r bits do estado so usados como sada; se
o tamanho de l for maior que o tamanho de r, o estado processado novamente
pela permutao f e os r bits retornados so concatenados com os r bits retornados
previamente; esse processo repetido at que os l bits requeridos sejam extrados.
Os ltimos c bits do estado nunca so afetados diretamente pelos blocos de
entrada na fase de absoro e nem extrados na fase de extrao; o parmetro c
determina a segurana atingvel pela construo [BDPA08].
A construo esponja ilustrada na Figura 3.5 e seu pseudo-cdigo apresentado no Algoritmo 3.
3.4.2.3. O algoritmo Keccak
Keccak uma famlia de funes de resumo, originalmente definida em [BDPA11].
A seguir, a regra de preenchimento usada pela famlia Keccak ser descrita com os
parmetros e a permutao fundamental usada pelo Keccak:
Regra de preenchimento pad10 1. Recebe como entrada o tamanho da
mensagem m e a taxa de bits r, retornando uma cadeia de dados Z = 1||0j ||1,
Livro-texto de Minicursos

119

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Algoritmo 3 ESPONJA[f , pad, r](M, d)


Entrada: Cadeia de dados M e um inteiro no negativo d.
Sada: Cadeia de dados Z, tal que |Z| = d.
1: P = M k pad(r, |M |)
2: n = |P |/r
3: c = b r
4: Seja P = P0 k . . . k Pn1 a diviso de P em blocos de tamanho r.
5: S = 0b
6: for all i tal que 0 i < n do
7:
S = f (S (Pi k 0c ))
8: end for
9: Seja Z uma cadeia de dados vazia.
10: while d > |Z| do
11:
Z = Z k Truncr (S)
12:
Se d > |Z| ento S = f (S)
13: end while
14: return Truncd (Z)
onde j = (m + 2) mod r.

Especificao de Keccak[c]. A famlia de funes esponjas Keccak com


a funo de permutao Keccak-p[b, nr ] e a regra de preenchimento pad10 1
est definida para quais quer par de taxa de bits r e capacidade c tal que
r + c {25, 50, 100, 200, 400, 800, 1600}.
Quando o tamanho do estado restrito para b = 1600, a famlia Keccak denotada por Keccak[c]; nesse caso, r determinado pela escolha do parmetro c. Em
particular,
Keccak[c] = ESPONJA[Keccak-p[1600, 24], pad10 1, 1600 c].

(10)

Assim, dado uma mensagem M e um tamanho de sada d,

Keccak[c](M, d) = ESPONJA[Keccak-p[1600, 24], pad10 1, 1600 c](M, d).

(11)

3.4.2.4. Especificaes da funo SHA-3


Nesta seo, sero descritas as quatro funes de resumo SHA-3 e as duas funes
com sada varivel SHAKE128 e SHAKE256.
As quatro funes de resumo SHA-3 so definidas a partir da aplicao da
funo Keccak[c] sobre uma mensagem M concatenada com dois bits e a especificao do tamanho de sada, como pode ser visto a seguir:
SHA3-224(M) = Keccak[448](M||01,224)
SHA3-256(M) = Keccak[512](M||01,256)
SHA3-384(M) = Keccak[768](M||01,384)
SHA3-512(M) = Keccak[1024](M||01,512)
Livro-texto de Minicursos

120

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Em cada caso, a capacidade sempre o dobro do tamanho da sada; os dois bits


adicionados mensagem (01) servem para dar suporte separao de domnio, por
exemplo, distinguir as mensagens processadas pela funo de resumo SHA-3 e pelas
funes com sada varivel.
As duas funes com sada varivel, SHAKE128 e SHAKE256 so definidas
a partir da funo Keccak[c], uma mensagem M concatenada com quatro bits e pela
especificao do tamanho de sada d, como pode ser visto a seguir:
SHAKE128(M) = Keccak[256](M||1111,d)
SHAKE256(M) = Keccak[512](M||1111,d)
Os primeiros dois bits servem para dar suporte a separao de domnio e os dois
bits adicionais (11) so usados para prover compatibilidade ao esquema Sakura
[BDPV14]. Esse esquema facilitar o desenvolvimento de uma extenso dessas funes, chamada resumos em rvore [Mer88], onde a mensagem pode ser processada
em paralelo, conseguindo assim computar mensagens longas de forma mais eficiente.

3.4.2.5. Implementao nativa de 64 bits do SHA-3


Dado que a permutao Keccak-p[1600,24] trabalha com palavras de 64 bits, a implementao para uma arquitetura de 64 bits pode ser feita de forma direta. O
primeiro passo para a implementao definir como o estado do algoritmo ser
representado.
Organizao do estado. As palavras do estado so mapeadas diretamente
variveis de 64 bits; desse modo, para comportar as 25 palavras do estado S =
{s0 , . . . , s24 }, preciso usar 25 variveis de 64 bits, denominadas M = {M0 , . . . , M24 },
onde {M0 = s0 , M1 = s1 , . . . , M24 = s24 }.

Uma vez mapeado o estado a variveis de 64 bits, pode-se comear a computao da permutao Keccak-p[1600,24]. Uma implementao direta de uma rodada,
denotada Rnd(M, ir ), pode ser vista no Algoritmo 4.
A maioria das arquiteturas de 64 bits atuais possuem menos que 25 registradores de propsito geral e sabe-se que operaes em registradores so substancialmente mais rpidas que operaes que buscam dados da memria. Por conta disso,
uma implementao eficiente tem que aproveitar os dados dentro dos registradores
na maior parte do tempo.

Visando um melhor aproveitamento dos registradores, pode-se implementar


as etapas de mapeamento , , e de forma modular, processando as etapas e
para um bloco de cinco palavras que sero usadas conjuntamente na etapa . O
trecho de cdigo a seguir necessrio para computar as novas palavras s5 , s6 , s7 , s8
e s9 aps a aplicao das etapas de mapeamento , e :
Livro-texto de Minicursos

121

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Algoritmo 4 Rnd(M, ir )
Entrada: Estado M e ir o ndice da rodada.
Sada: Estado M atualizado.
Etapa de mapeamento
1: Cy = M0+y M5+y M10+y M15+y M20+y
2: Dx = C(x1) mod 5 (C(x+1) mod 5 1)
3: M5x+y = M5x+y Dx
4:

Etapas de mapeamento e
B(16x+10y) mod 25 = (M5x+y r5x+y )

5:
6:
7:
8:

Etapa de mapeamento
for all (x, y) tal que 0 x, y < 5 do
T = (B(5x+y+2) mod 5 ) (B(5x+y+1)
M5x+y = B5x+y T
end for

para 0 y < 5
para 0 x < 5
para 0 x, y < 5
para 0 x, y < 5

mod 5 )

Etapa de mapeamento
9: M0 = M0 rc(ir )
10: return M
T0 = M3 28
T1 = M9 20
T2 = M10 3
T3 = M16 45
T4 = M22 61
M16 = T0 (T2 (T1 ))
M3 = T1 (T3 (T2 ))
M10 = T2 (T4 (T3 ))
M22 = T3 (T0 (T4 ))
M9 = T4 (T1 (T0 ))

M16 = (((s5 )))


M3 = (((s6 )))
M10 = (((s7 )))
M22 = (((s8 )))
M9 = (((s9 )))

Aps a execuo das etapas , e as palavras computadas no ficaram


armazenadas nos registradores M5 , M6 , M7 e M8 , isso acontece porque as palavras
armazenadas nesses registradores ainda no foram processadas pelas etapas , e
. A computao da etapa depende apenas do registrador M0 , desse modo pode-se
comput-la a qualquer momento aps calcular o novo valor de X0 aps a execuo
da etapa .
Pode-se perceber que, aps a execuo dessas etapas na iterao i, o estado
tem uma organizao diferente da inicial. Por conta disso, a implementao das
etapas de mapeamento para a iterao seguinte (i + 1) precisa levar em conta a nova
configurao do estado. O estado volta sua configurao original aps aplicao
das etapas de mapeamento , e na iterao i + 1.
Com essas otimizaes, pode-se dispensar o estado temporrio usado no Algoritmo 4 e tambm diminuir o acesso a memria, visto que os dados podem ser
encontrados em registradores na maior parte do tempo.
Livro-texto de Minicursos

122

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Y0

s10

s20

s30

s40

Y1

s11

s21

s31

s41

Y2
..
.

s12

s22

s32

s42

Y22

s122 s222 s322 s422

Y23

s123 s223 s323 s423

Y24

s124 s224 s324 s424

..
.

(a) Organizao do estado para a implementao vetorial usando registradores de 256 bits.

T0 = LOAD(S1 )
T1 = LOAD(S2 )
T2 = LOAD(S3 )
T3 = LOAD(S4 )
T4 = UNPACK_LO(T0 , T1 )
T0 = UNPACK_HI(T0 , T1 )
T1 = UNPACK_LO(T0 , T1 )
T2 = UNPACK_HI(T0 , T1 )
Y0 = PRBLEND(T4 , T1 )
Y1 = PRBLEND(T0 , T2 )
Y2 = PRBLEND(T4 , T1 )
Y3 = PRBLEND(T0 , T2 )

[s10 , s11 , s12 , s13 ]


[s20 , s21 , s22 , s23 ]
[s30 , s31 , s32 , s33 ]
[s40 , s41 , s42 , s43 ]
[s10 , s20 , s12 , s22 ]
[s11 , s21 , s13 , s23 ]
[s30 , s40 , s32 , s42 ]
[s31 , s41 , s33 , s43 ]
[s10 , s20 , s30 , s40 ]
[s11 , s21 , s31 , s41 ]
[s12 , s22 , s32 , s42 ]
[s13 , s23 , s33 , s43 ]

(b) Sequencia de instrues para ordenar as palavras dos


registradores Y0 , Y1 , Y2 e Y3 .

Figura 3.6: Organizao do estado e sequencia de instrues para organizar as primeiras quatro palavras do estado.

3.4.2.6. Implementao vetorial usando registradores de 256 bits


Uma forma direta de usar as instrues vetoriais para implementar a funo de permutao Keccak-p[1600,24] processar mais de um estado por vez. Tirando proveito
dos registradores de 256 bits pode-se processar quatro estados concorrentemente. A
seguir so apresentados os detalhes internos dessa implementao; primeiramente,
como criar um novo estado, com registradores de 256 bits, que contenha os quatro
estados a serem processados e posteriormente como aplicar as etapas de mapeamento
sobre esse novo estado.
Organizao do estado. As instrues de 256 bits processam quatro palavras
de 64 bits usando apenas uma instruo. O primeiro passo para a implementao
foi mapear os quatro estados a serem processados em registradores de 256 bits;
para comportar as 100 palavras dos estados S 1 = {s10 , . . . , s224 }, S 2 = {s20 , . . . , s224 },
S 3 = {s30 , . . . , s324 } e S 4 = {s40 , . . . , s424 } foi preciso usar 25 registradores de 256 bits,
denominados Y = {Y0 , . . . , Y24 }. O mapeamento de cada uma das palavras do estado
em seus respectivos registradores pode ser visto na Figura 3.6a.
O mapeamento dos estados S 1 , S 2 , S 3 e S 4 em Y pode ser feito eficientemente
com o uso das instrues LOAD, UNPACK_LO, UNPACK_HI e PERM; na Figura 3.6b
apresentado o trecho de cdigo que mapeia as primeiras quatro palavras dos estados
nos registradores Y0 , Y1 , Y2 e Y3 ; o processamento para as outras palavras anlogo
ao apresentado.
Uma vez mapeado os estados a registradores de 256 bits, pode-se comear a
computao da funo de permutao Keccak-p[1600,24]. A implementao dessa
verso que usa registradores de 256 bits para processar quatro estados independentes
concorrentemente muito similar ao Algoritmo 4; a diferena que aqui todas as
Livro-texto de Minicursos

123

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

operaes so sobre registradores de 256 bits enquanto no Algoritmo 4 as operaes


so sobre palavras de 64 bits.
Tambm pode-se aplicar diretamente todas as otimizaes usadas na implementao de 64 bits. Esta implementao usa praticamente a mesma quantidade de
instrues que a implementao 64 bits.
3.4.2.7. Testes de desempenho
Para analisar o desempenho das implementaes do algoritmo SHA-3 aqui apresentadas projetamos alguns experimentos que nos auxiliaro observar os ganhos obtidos
com a utilizao de instrues vetoriais.
Teste 3. Calcular os ciclos por byte para produzir o valor de resumo de uma mensagem de 50 MB usando a implementao nativa de 64 bits e para produzir os valores
de resumo de quatro mensagens de 50 MB concorrentemente usando a implementao que aproveita as instrues vetoriais.
A implementao nativa de 64 bits, foi desenvolvida por Ronny Van Keeris, e a implementao mais rpida disponvel no ECRYPT Benchmarking of
Cryptographic Systems (eBACS)[BL15a]. Essa implementao foi otimizada para a
arquitetura de 64 bits usando as tcnicas apresentadas nesta seo. A implementao vetorizada uma implementao que usa registradores de 256 bits para calcular
quatro valores de resumo concorrentemente e faz parte das implementaes vetoriais
do SHA-3 que foram apresentadas em [CL14].
Na Figura 3.7a apresentado os ciclos por bytes necessrios para computar
o valor de resumo de mensagens de 50 MB para cada uma das funes da famlia
SHA-3. Pode-se perceber o impacto das instrues vetoriais na acelerao desse
algoritmo, uma vez que calcular o valor de resumo de quatro mensagens de mesmo
tamanho usando as instrues vetoriais em torno de 2,5 vezes mais rpido do que
fazer a mesma computao usando a implementao de 64 bits.
Teste 4. Calcular os ciclos por byte para produzir o valor de resumo de mensagens
com tamanho variando de 256 B at 512 MB.
Na Figura 3.7b apresentado os ciclos por byte necessrios para calcular
o valor de resumo de mensagens de tamanho 256 B a 512 MB usando a funo
SHA3-256.
Observaes: devido importncia do novo padro de funes de resumo, interessante dispor de tcnicas de implementao que ajudem na acelerao da execuo
desses algoritmos, como as que foram apresentadas nesta seo.
3.4.3. Implementao do protocolo ECDH usando AVX2
A implementao do protocolo de acordo de chaves baseado em curvas elpticas envolve diversos aspectos a serem levados em conta: do ponto de vista de desempenho,
como usar as instrues vetoriais na acelerao da execuo do protocolo; do ponto
Livro-texto de Minicursos

124

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

(a) Ciclos por byte para calcular o valor de resumo para as funes da famlia SHA-3.

(b) Ciclos por byte para calcular o valor de resumo de mensagens de tamanho 256 B a
512 MB.

Figura 3.7: Resultado dos testes de desempenho das implementaes do algoritmo


SHA-3.

de vista de segurana, quais contramedidas so usadas para evitar vazamento de


informao sigilosa.
Atualmente o protocolo ECDH implementado usando as diretrizes definidas pelo padro SP 800-56A do NIST [BJS07] e utilizando as curvas elpticas
recomendadas no padro de assinaturas digitais definido em [KSD13]. Embora esse
padro ainda esteja em vigncia; recentemente, surgiram inmeras propostas de
implementao do protocolo ECDH usando novos modelos de curvas elpticas. Essas curvas permitem acelerar a execuo do protocolo sem afetar a segurana do
esquema [BL15c].
Atualmente uma das propostas que tem ganhado muita ateno encontra-se
disponvel em um documento publicado pela comunidade Internet Engineering Task
Force (IETF) [LHT15]; dita proposta consiste de duas curvas elpticas, conhecidas
por Curve25519 [Ber06] e Goldilocks [Ham15], que suportam os nveis de segurana
Livro-texto de Minicursos

125

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Algoritmo 5 Multiplicao de pontos mediante o algoritmo de Montgomery.


Entrada: k, um nmero inteiro de t bits.
x(P ), a coordenada x de um ponto P E.
Sada: x(kP ), a coordenada x do ponto kP .
1: Seja (kt = 0, kt1 , . . . , k0 )2 a representao binria de k.
2: XQ0 Q1 x(P ), ZQ0 Q1 1
3: XQ0 x(P ), ZQ0 1
4: XQ1 1, ZQ1 0
5: for i t 1 to 0 do
6:
b ki ki+1
7:
XQ1 , XQ0 CondSwap(b, XQ1 , XQ0 )
8:
ZQ1 , ZQ0 CondSwap(b, ZQ1 , ZQ0 )
9:
XQ1 , ZQ1 , XQ0 , ZQ0 Ladder(XQ0 Q1 , ZQ0 Q1 , XQ1 , ZQ1 , XQ0 , ZQ0 )
10: end for
11: return x(kP ) XQ0 (ZQ0 )1
de 128 e 224 bits, respectivamente. Essas curvas permitem calcular a multiplicao
de pontos com um menor nmero de operaes aritmticas no corpo finito Fp .
Nesta seo sero apresentadas a curva elptica Curve25519, como implementar eficientemente a aritmtica de pontos e a aritmtica do corpo primo F2255 19 ,
onde as instrues vetoriais possuem um papel fundamental na acelerao do protocolo.
3.4.3.1. Descrio da curva elptica Curve25519
A curva elptica Curve25519 denotada por E definida pela seguinte equao:
E:

y 2 = x3 + 486662x2 + x

(12)

onde as coordenadas dos pontos pertencem ao corpo primo Fp sendo p = 2255 19.

Essa curva permite que a multiplicao de pontos seja feita usando apenas a
coordenada x do ponto P ; isto , dado um inteiro k e a coordenada x do ponto P ,
existe um algoritmo que computa a coordenada x de ponto kP ; esse algoritmo foi
proposto por Montgomery [Mon87] e apresentado no Algoritmo 5. O algoritmo
utiliza as coordenadas projetivas, onde a coordenada x representada por dois
valores (X, Z) sendo x = X/Z. Para realizar o calculo de kP so usados dois pontos
acumuladores Q0 e Q1 . O primeiro contendo o valor de P e o segundo contendo
O. O contedo dos acumuladores ser atualizado iterativamente em funo do valor
dos bits de k; assim sendo, se o i-simo bit de k for igual a 1, ento o contedo
dos acumuladores trocado; feito isso, a funo Ladder atualizar os acumuladores
Q0 2Q0 e Q1 Q0 + Q1 . Aps percorrer todos os bits de k, o valor de kP se
encontrar armazenado no acumulador Q0 = (X, Z), finalmente a coordenada x de
kP computada como x = X/Z.
A funo CondSwap deve ser implementada em tempo constante, isto , o

Livro-texto de Minicursos

126

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Algoritmo 6 Soma e duplicao de dois pontos na curva Curve25519 (Ladder).


Entrada: XP Q , ZP Q , XP , ZP , XQ , ZQ Fp , e seja a
2 = 486662.
Sada: X2P , Z2P , XP +Q , ZP +Q Fp .
C XQ + ZQ
1: A XP + ZP
D XQ ZQ
2: B XP ZP
CB C B
3: DA A D
t0 DA CB
4: t1 DA + CB
t0 t20
5: t1 t21
ZP +Q t0 XP Q
6: XP +Q t1 ZP Q
B0 B2
7: A0 A2
a2 + 2) A0
a2 2) B 0
B 0 y 14 (
8: A0 x 14 (
9: E A0 B 0
F A0 x B 0 y
0
0
10: X2P A B
Z2P E F
11: return X2P , Z2P , XP +Q , ZP +Q .

[soma]
[subt]
[mult]
[soma/subt]
[quad]
[mult]
[quad]
[mult]
[subt]
[mult]

mesmo processamento deve ser executado independente do valor do bit b, seguindo


as recomendaes apresentadas na Seo 3.3.
A funo Ladder consiste na computao de 2Q0 e Q0 + Q1 sobre a curva
Curve25519, onde as formulas da lei de grupo para esta curva esto listadas no Algoritmo 6, lembrando que as operaes deste algoritmo so realizadas na aritmtica
do corpo primo F2255 19 . Esse algoritmo tem a propriedade de que algumas operaes aritmticas podem ser computadas em paralelo; como podemos observar, cada
linha processa o mesmo tipo de operao em ambas colunas. Esta caracterstica nos
permite um melhor aproveitamento das instrues vetoriais.
3.4.3.2. Aritmtica do corpo primo
Um corpo primo Fp uma estrutura algbrica que define duas operaes binrias
sobre um conjunto finito de nmeros; o qual pode ser representado como o conjunto
dos nmeros inteiros no intervalo de 0 a p 1. A aritmtica do corpo segue as mesma
operaes do conjunto dos inteiros, mas os resultados devem ser reduzidos modulo
p para continuarem no intervalo determinado. O primo usado na curva Curve25519
p = 2255 19 e ele pertence ao conjunto dos primos pseudo-Mersenne, que so
apropriados para fazer a reduo modular de forma eficiente.
A aritmtica do corpo primo opera sobre nmeros de 256 bits. Usualmente,
uma implementao que usa instrues nativas de 64 bits armazena um elemento
do corpo em quatro palavras de 64 bits; algumas operaes envolvem a possvel propagao de resultados intermedirios entre as palavras que compem o elemento do
corpo e esta propagao de dados introduz dependncias na execuo das instrues,
implicando em uma implementao lenta.
Uma forma de minimizar a propagao de dados consiste em representar os
elementos do corpo de modo que as operaes possam ser computadas em paralelo,
o que permitiria usar instrues vetoriais ao invs de instrues nativas de 64 bits.
Livro-texto de Minicursos

127

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Assim, para representar eficientemente um elemento F2255 19 a tupla de coeficientes ser utilizada; de agora em diante ser denotado por A = {a0 , . . . , a9 }, tal
que a seguinte equao seja satisfeita:
= a0 + a1 226 + a2 251 + a3 277 + a4 2102 + a5 2128 + a6 2153 + a7 2179 + a8 2204 + a9 2230 ,
(13)
o nmero ser representado por cinco palavras de 26 bits e cinco palavras de 25 bits.
A representao dos elementos tambm pode ser vista como um polinmio
em x de grau 9 tal que xi = 2d25,5ie . Por conta disso, as operaes aritmticas seguem
a mesma lgica das operaes sobre polinmios como descrito a seguir:
Soma e subtrao. A soma e substrao so realizadas coeficiente a coeficiente que podem ser calculadas usando instrues de 32 ou 64 bits, pois os
bits restantes serviro para armazenar os bits de carry. Desta forma, possvel realizar uma sequencia de somas e substraes antes de precisar realizar
a reduo modular; isto reduz a propagao de dados e acrescenta o grau de
paralelismo nas computaes.
Multiplicao. A multiplicao de elementos no corpo pode ser feita como a
multiplicao de dois polinmios, produzindo um polinmio de grau 18. A fim
de manter uma representao compacta, se aplica a reduo modulo 2255 19;
ela consiste em reduzir os monmios de grau maior ou igual a 10 pela equivalncia x10 = 2255 19, portanto os monmios com fator x10 so multiplicados
por 19 e adicionados com os monmios correspondentes. A distribuio dos
produtos da multiplicao modular mostrada na Figura 3.8, onde cada coluna lista os produtos a serem adicionados na potncia correspondente. Nesta
representao do corpo F2255 19 , quando i e j so mpares existe um caso
especial onde (ai xi )(bj xj ) = 2ai bj xi+j , por conta disso na Figura 3.8 alguns
produtos aparecem multiplicados por 2.
Inverso multiplicativo. O inverso multiplicativo calculado usando a se5
guinte equivalncia a1 ap2 (250 )2 a11 . Parte da exponenciao pode
ser eficientemente computada pelo algoritmo de Itoh-Tsujii [IT88] que calcula
x
o termo x = a2 1 mediante uma cadeia de adio. Assim, para obter 250
calcula-se 5 10 20 40 50 100 200 250 , onde a transiyx
o x y encontra-se definida como y = (x )2 yx para x y Z+ .
A representao apresentada permite que o calculo das operaes aritmticas
seja feito por uma srie de operaes independentes, tentando acrescentar o grau de
paralelismo e agilizar a execuo das operaes aritmticas. Como foi visto, essas
operaes servem como blocos bsicos para a implementao da aritmtica de curvas
elpticas.
3.4.3.3. Implementao vetorial da curva Curve25519
Nas sees anteriores foram mostrados algoritmos para a computao da multiplicao de pontos e uma representao dos elementos do corpo primo. Nos dois casos,
Livro-texto de Minicursos

128

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

x9

x6

x5

x4

x3

x2

x1

x0

a9 b0 38a9 b9 19a9 b8 38a9 b7


a8 b 1
a8 b0 19a8 b9 19a8 b8
a7 b2 2a7 b1
a7 b0 38a7 b9
a6 b 3
a6 b 2
a6 b 1
a6 b0
a5 b4 2a5 b3
a5 b2 2a5 b1
a4 b 5
a4 b 4
a4 b 3
a4 b 2
a3 b6 2a3 b5
a3 b4 2a3 b3
a2 b 7
a2 b 6
a2 b 5
a2 b 4
a1 b8 2a1 b7
a1 b6 2a1 b5
a0 b 9
a0 b 8
a0 b 7
a0 b 6

19a9 b6
19a8 b7
19a7 b8
19a6 b9
a5 b 0
a4 b 1
a3 b 2
a2 b 3
a1 b 4
a0 b 5

38a9 b5
19a8 b6
38a7 b7
19a6 b8
38a5 b9
a4 b 0
2a3 b1
a2 b 2
2a1 b3
a0 b 4

19a9 b4
19a8 b5
19a7 b6
19a6 b7
19a5 b8
19a4 b9
a3 b 0
a2 b1
a1 b 2
a0 b 3

38a9 b3
19a8 b4
38a7 b5
19a6 b6
38a5 b7
19a4 b8
38a3 b9
a2 b 0
2a1 b1
a0 b 2

19a9 b2
19a8 b3
19a7 b4
19a6 b5
19a5 b6
19a4 b7
19a3 b8
19a2 b9
a1 b 0
a0 b 1

38a9 b1
19a8 b2
38a7 b3
19a6 b4
38a5 b5
19a4 b6
38a3 b7
19a2 b8
38a1 b9
a0 b 0

c5

c4

c3

c2

c1

c0

c9

x8

c8

x7

c7

c6

Figura 3.8: Forma compacta de arranjar os produtos intermedirios na computao


da multiplicao modular de dois elementos no corpo, C = A B F2255 19 .
os algoritmos apresentavam um certo grau de paralelismo que pode ser explorado
usando instrues vetoriais. A seguir ser discutido como utilizar as instrues do
conjunto AVX2 para implementar o protocolo.
Cada linha do Algoritmo 6 calcula duas operaes aritmticas independentes,
uma por coluna. Como foi discutido em [FL15], o raciocnio por trs deste processamento reduzir o uso de instrues de alta latncia, isto , aquelas que movem
dados entre a parte baixa e alta dos registradores de 256 bits. Partindo dessa observao, os primeiros 128 bits dos registradores YMM so usados para processar as
operaes da coluna esquerda e os bits restantes para processar as operaes da coluna direita. Assim, os elementos do corpo so associados aos registradores vetoriais
da seguinte maneira: denota-se por hA, Bi as tuplas entrelaadas de A e B (duas
tuplas representando dois elementos do corpo), para representar cinco registradores
YMM contendo:
hA, Bii = [a2i+1 , a2i , b2i+1 , b2i ] para 0 i < 5.

(14)

assim, o registrador de 256 bits conter dois coeficientes de duas tuplas armazenados
em palavras de 64 bits. Contudo, a implementao das operaes aritmticas ainda
beneficiada pelas instrues vetoriais, pois as operaes podem usar vetores de 128
bits.
Uma das operaes mais crticas em termos de desempenho a multiplicao
modular, pois requer calcular uma grande quantidade de multiplicaes de coeficientes. O Algoritmo 7 apresenta a sequncia de instrues para o processamento da
multiplicao modular no corpo F2255 19 . Nas linhas 2-5 inicializado um conjunto
de registradores que contm alguns coeficientes de hB, Di multiplicados por 2; durante o ciclo principal, nas linhas 6-18, as variveis Zi acumularo o contedo dos
produtos intermedirios ai bj ; e no ltimo ciclo, nas linhas 19-22, a reduo modular
calculada sobre os coeficientes de grau maior ou igual a 10.
Livro-texto de Minicursos

129

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

A instruo MUL possui uma latncia de 5 ciclos e ao fim de cada ciclo possvel comear a execuo de uma nova multiplicao, fazendo com que a latncia total
de uma sequncia de multiplicaes independentes seja reduzida. Adicionalmente,
enquanto uma multiplicao est sendo processada na porta 0 as outras portas de
execuo do processador ficam disponveis para execuo de outros tipos de instrues; por exemplo, pode-se fazer operaes de acesso a memria concorrentemente
s multiplicaes.
A sada da funo de multiplicao produz uma tupla entrelaada onde cada
palavra de 64 bits contm um coeficiente de aproximadamente 52 bits. Posteriormente, essa tupla pode ser usada para computar operaes de soma ou substrao.
Entretanto, se duas multiplicaes precisam ser computadas sucessivamente, o tamanho dos coeficientes devem ser reduzidos tal que sejam menor que 32 bits visto
que a instruo MUL computa apenas produtos de palavras de 32 bits.
O processamento antes mencionado denominado de reduo de coeficientes
e assegura que cada coeficiente seja de aproximadamente 26 bits. Neste processamento, cada coeficiente ci dividido em trs partes (li , mi e hi ), de modo que li
contm os primeiros 26 bits, mi os prximos 25 bits e hi os bits remanescentes. Aps
a diviso, a reduo dos coeficientes calculada por:
c00 = l0 + 19(m9 + h8 ),
c01 = l1 + m0 + 19h9 ,
c0i = li + mi1 + hi2 para 2 i < 10.

(15)

O Algoritmo 8 mostra o processamento realizado usando as instrues AVX2. No


primeiro ciclo, nas linhas 1-6, feita a diviso das palavras para calcular os vetores l,
m e h. No segundo ciclo, nas linhas 7-9, o algoritmo arranja os coeficientes do vetor
m, alinhando-os com l e h. Das linhas 10-15, so computadas as multiplicaes por
19 dos termos m9 , h8 e h9 ; finalmente, o ltimo ciclo calcula a soma dos vetores l,
m e h. Cada coeficiente da tupla entrelaada que retornada tem um tamanho de
aproximadamente 26 bits.
3.4.3.4. Testes de desempenho
O impacto causado pelas instrues AVX2 na computao do protocolo ECDH foi
mostrada no trabalho de [FL15]. A Tabela 3.4 mostra uma comparao das implementaes da curva elptica Curve25519. Note que as implementaes que usam
instrues vetoriais obtiveram um melhor desempenho sobre as implementaes com
instrues nativas de 64 bits.
Para mostrar o desempenho obtido no protocolo ECDH usando a curva elptica Curve25519, o seguinte teste ser feito.
Teste 5. Calcular a quantidade de operaes de acordo de chaves calculadas por
segundo para o conjunto de curvas suportado pela biblioteca OpenSSL e a curva
elptica Curve25519 usando AVX2.
Livro-texto de Minicursos

130

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Algoritmo 7 Sequencia de instrues para calcular a multiplicao modular no


corpo F2255 19 usando as instrues AVX2.
Entrada: hA, Ci e hB, Di, duas tuplas entrelaadas.
Sada: hE, Fi uma tupla entrelaada tal que E = A B e F = C D.
1: Zi 0 para 0 i < 10
2: for i 0 to 4 do
3:
hB0 , D0 ii ALIGNR(hB, Dii+1 mod 5 , hB, Dii )
4:
hB0 , D0 ii SHLV(hB0 , D0 ii , [0, 1, 0, 1])
5: end for
6: for i 0 to 4 do
7:
U SHUFFLE(hA, Cii , 0)
8:
for j 0 to 4 do
9:
Zi+j ADD(Zi+j , MUL(U, hB, Dij ))
10:
end for
11:
V SHUFFLE(hA, Cii , 1)
12:
for j 0 to 3 do
13:
Zi+j+1 ADD(Zi+j+1 , MUL(V, hB0 , D0 ij ))
14:
end for
15:
W MUL(V, hB0 , D0 i4 )
16:
Zi ADD(Zi , BLEND(W, [0, 0, 0, 0], 0101))
17:
Zi+5 ADD(Zi+5 , BLEND(W, [0, 0, 0, 0], 1010))
18: end for
19: for i 0 to 4 do
20:
19Zi+5 ADD(ADD(SHL(Zi+5 , 4), SHL(Zi+5 , 1)), Zi+5 )
21:
hE, Fii ADD(Zi , 19Zi+5 )
22: end for
23: return hE, Fi

ci
13
hi

25
mi

26
li

(a) Diviso do coeficiente ci .

l9
+
m8

l8
+
m7

l7
+
m6

l6
+
m5

l5
+
m4

l4
+
m3

l3
+
m2

l2
+
m1

l1
+
m0

l0
+
19m9

+
h7

+
h6

+
h5

+
h4

+
h3

+
h2

+
h1

+
h0

19h9

19h8

c09

c08

c07

c06

c05

c04

c03

c02

c01

c00

(b) Aps da soma os coeficientes so de aproximadamente 26 bits.

Figura 3.9: Reduo de coeficientes. Na esquerda, cada coeficiente ci divido em


trs partes chamadas li , mi e hi . Essas partes so adicionadas como mostrado na
figura da direita. Note que m9 , h8 e h9 so reduzidos modulo p.

Livro-texto de Minicursos

131

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Algoritmo 8 Sequencia de instrues para calcular a reduo de coeficientes usando


instrues AVX2.
Entrada: hA, Bi, uma tupla entrelaada.
Sada: hA, Bi, tal que |c2i | 27 e |c2i+1 | 26 para 0 i < 5 e c {a, b}.
1: for i 0 to 4 do
2:
Li AND(hA, Bii , [225 1, 226 1, 225 1, 226 1])
3:
Mi SHRV(hA, Bii , [25, 26, 25, 26])
4:
Mi AND(Mi , [226 1, 225 1, 226 1, 225 1])
5:
Hi SHRV(hA, Bii , [51, 51, 51, 51])
6: end for
7: for i 0 to 4 do
8:
Mi0 ALIGNR(Mi , Mi1 mod 5 )
9: end for
10: H4 SHRV(hA, Bi8 , [51, 26, 51, 26])
11: U ADD(H4 , SHR(H4 , 64))
12: 19U ADD(ADD(SHR(U, 4), SHR(U, 1)), U )
13: T AND(19U, [0, 226 1, 0, 226 1])
14: S SHR(19U, [0, 26, 0, 26])
15: H4 UPCK(T, S)
16: for i 0 to 4 do
17:
hA, Bii ADD(ADD(Li , Mi0 ), Hi1 mod 5 )
18: end for
19: return hA, Bi

Implementao

Processador

NaCl [BLS13]
Core i7-4770
amd64-51 [BL15b] Core i7-4770
amd64-51 [BL15b] Xeon E3-1275 V3
AVX [Cho15]
Core i5-3210M
AVX2 [FL15]
Core i7-4770 ()

Instr. Vetoriais

Acordo de Chaves

No
No
No
Sim
Sim

261.000
163.200
161.600
159.100
156.500

Tabela 3.4: Tempos de execuo do protocolo de acordo de chaves usando a curva


Curve25519 ; os tempos so reportados em ciclos.

Livro-texto de Minicursos

132

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Curva Elptica

Operaes/segundo

B-283
K-283
P-256
Curve25519

2.159
2.268
14.384
21.787

Tabela 3.5: Comparao do desempenho das curvas padro do NIST contra a curva
elptica Curve25519.

Como pode ser visto na Tabela 3.5, as curvas binrias do NIST, B-283 e K283, que esto implementadas na biblioteca do OpenSSL reportam uma taxa baixa
de computaes por segundo, atingindo na mdia dois mil operaes por segundo.
A implementao da curva P-256 mais otimizada obtendo acima de quatorze mil
operaes por segundo; no entanto o desempenho oferecido pela curva Curve25519
1.5 vezes mais rpido do que a curva NIST P-256.
Observaes: A latncia do protocolo ECDH pode ser reduzida com o uso de
curvas especficas que reduzem o nmero de operaes a serem calculadas; alm
disso, a aritmtica do corpo primo foi adaptada para evitar propagao de dados,
acrescentando o grau de paralelismo.

3.5. Comentrios finais


Os algoritmos criptogrficos garantem a segurana da informao atravs de meios de
comunicao propensos a ataques. Algumas vezes, esses ataques so bem sucedidos
devido presena de implementaes que no cumprem com os requisitos mnimos
de segurana; por exemplo, a proteo contra ataques de canais laterais.
A implementao destes algoritmos precisa de um estudo meticuloso do fluxo
da informao, dos acessos a memria, do tipo de instrues presentes na arquitetura
e dos possveis ataques. Portanto, a implementao de algoritmos criptogrficos
apresenta desafios em mltiplas dimenses.
A relevncia que a segurana da informao tem ganhado nos ltimos anos
tem impactado no projeto dos processadores e arquiteturas atuais. Prova disso,
o suporte em hardware adicionado para o padro de encriptao de dados AES,
como foi visto nas sesses anteriores. Esse no um caso isolado, pois a prxima
arquitetura Skylake dar suporte funo de resumo SHA-2 [Cor13].
Este trabalho se aprofundou na eficincia das operaes, visando aproveitar
os recursos disponveis nos processadores recentes. Atualmente existe uma tendncia
forte por explorar o paralelismo mediante o escalonamento de mltiplas instrues
por ciclo, a incluso de unidades de execuo mais potentes, a diviso de tarefas,
entre outras. Por conta disso imprescindvel encontrar tcnicas que adaptem os
algoritmos s arquiteturas modernas. Em particular, o conjunto de instrues vetoriais AVX2 se apresentou como uma alternativa bem sucedida para acelerar a
execuo de algoritmos criptogrficos.
Livro-texto de Minicursos

133

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Consideramos que as tcnicas aqui apresentadas podem ser dimensionadas


para outros conjuntos de instrues vetoriais. Por exemplo, a arquitetura do coprocessador Xeon Phi possui registradores de 512 bits, mais de 60 unidades de
processamento e o novo conjunto de instrues vetoriais AVX-512 [Cor13]. Este
tipo de arquitetura est voltado para o processamento de grandes quantidades de
informao, o que a torna uma arquitetura ideal para a implementao de algoritmos
criptogrficos com alto grau de paralelismo.
Finalmente, inteno dos autores incentivar ao leitor interessado nos tpicos
aqui descritos a aprofundar mais seus conhecimentos na literatura recente. Caso
mais informao seja necessria, sugerimos entrar em contato com a lista de autores
do minicurso, pois alguns dos resultados aqui apresentados fazem parte de projetos
de pesquisa em andamento.

A. Plataforma de teste de desempenho


Para os testes de desempenho realizados neste minicurso foram utilizados os computadores HW-DESKTOP e HW-ULTRA; ambos usam um processador Haswell da
Intel. Eles so capazes de rodar instrues nativas de 64 bits, vetoriais de 128 e 256
bits e suportam os conjuntos de instrues AVX2 e AES-NI.
importante mencionar que apesar de possurem a mesma arquitetura, o
computador HW-DESKTOP um processador de propsito geral indicado para
computadores de mesa, j o computador HW-ULTRA um processador de baixo
consumo energtico, voltado para a computao mvel. Na Tabela 3.6 so mostradas
as especificaes tcnicas de cada computador.
HW-DESKTOP
Processador
Core i7-4770
Frequncia
3.4 GHz
Memoria RAM
4 GB
Sistema operacional Fedora 18

HW-ULTRA
Core i5-4350U
1.4 GHz
4 GB
Fedora 20

Tabela 3.6: Especificaes tcnicas dos computadores HW-DESKTOP e HWULTRA usados neste trabalho.

Livro-texto de Minicursos

134

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Referncias
[AcKKS07] Onur Aciimez, etin Kaya Ko, and Jean-Pierre Seifert. Predicting
Secret Keys Via Branch Prediction. In Masayuki Abe, editor, Topics
in Cryptology - CT-RSA 2007, The Cryptographers Track at the RSA
Conference 2007, San Francisco, CA, USA, February 5-9, 2007, Proceedings, volume 4377 of Lecture Notes in Computer Science, pages 225
242. Springer, 2007.
[BB05]

David Brumley and Dan Boneh. Remote timing attacks are practical.
Computer Networks, 48(5):701716, 2005.

[BCJ+ 05]

Eli Biham, Rafi Chen, Antoine Joux, Patrick Carribault, Christophe


Lemuet, and William Jalby. Collisions of SHA-0 and Reduced SHA-1.
In Advances in CryptologyEUROCRYPT 2005, pages 3657. Springer,
2005.

[BDPA07] G. Bertoni, J. Daemen, M. Peeters, and G. Van Assche. Sponge functions. Ecrypt Hash Workshop 2007, May 2007.
[BDPA08] G. Bertoni, J. Daemen, M. Peeters, and G. Van Assche. On the Indifferentiability of the Sponge Construction. In Nigel P. Smart, editor, Advances in Cryptology Eurocrypt 2008, volume 4965 of Lecture Notes in Computer Science, pages 181197. Springer, 2008. http:
//sponge.noekeon.org/.
[BDPA11] Guido Bertoni, Joan Daemen, Michal Peeters, and GV Assche. The
keccak reference. Submission to NIST (Round 3), 13, 2011.
[BDPV14] Guido Bertoni, Joan Daemen, Michal Peeters, and Gilles Van Assche.
Sakura: A Flexible Coding for Tree Hashing. In Ioana Boureanu, Philippe Owesarski, and Serge Vaudenay, editors, Applied Cryptography and
Network Security, volume 8479 of Lecture Notes in Computer Science,
pages 217234. Springer International Publishing, 2014.
[Ber04]

Daniel J. Bernstein. Cache-timing attacks on AES, 2004.


http://cr.yp.to/papers.html#cachetiming.

[Ber06]

Daniel J. Bernstein. Curve25519: New Diffie-Hellman Speed Records. In


Moti Yung, Yevgeniy Dodis, Aggelos Kiayias, and Tal Malkin, editors,
Public Key Cryptography, volume 3958 of Lecture Notes in Computer
Science, pages 207228. Springer, 2006.

[Bih97]

Eli Biham. A fast new DES implementation in software. In Fast Software


Encryption, pages 260272. Springer, 1997.

[BJS07]

Elaine B. Barker, Don Johnson, and Miles E. Smid. SP 800-56A. Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography (Revised). Technical report, National
Institute of Standards & Technology, Gaithersburg, MD, United States,
2007.

Livro-texto de Minicursos

135

URL:

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[BL15a]

Daniel J. Bernstein and Tanja Lange. eBACS: ECRYPT Benchmarking


of Cryptographic Systems, September 2015.

[BL15b]

Daniel J. Bernstein and Tanja Lange. eBACS: ECRYPT Benchmarking


of Cryptographic Systems. Accessed on 20 March 2015, March 2015.

[BL15c]

Daniel J. Bernstein and Tanja Lange. SafeCurves: choosing safe curves


for elliptic-curve cryptography. http://safecurves.cr.yp.to accessed 20 March 2015, 2015.

[BLS13]

Daniel J. Bernstein, Tanja Lange, and Peter Schwabe. NaCl: Networking and Cryptography library. http://nacl.cr.yp.to/, October
2013.

[BM06]

Joseph Bonneau and Ilya Mironov. Cache-Collision Timing Attacks


Against AES. In Louis Goubin and Mitsuru Matsui, editors, Cryptographic Hardware and Embedded Systems - CHES 2006, 8th International Workshop, Yokohama, Japan, October 10-13, 2006, Proceedings,
volume 4249 of Lecture Notes in Computer Science, pages 201215.
Springer, 2006.

[BT11]

Billy Bob Brumley and Nicola Tuveri. Remote Timing Attacks Are Still
Practical. In Vijay Atluri and Claudia Daz, editors, Computer Security
- ESORICS 2011 - 16th European Symposium on Research in Computer
Security, Leuven, Belgium, September 12-14, 2011. Proceedings, volume
6879 of Lecture Notes in Computer Science, pages 355371. Springer,
2011.

[Cho15]

Tung Chou. Fastest Curve 25519 Implementation Ever. In National Institute of Standards and Technology, editors, Workshop on Elliptic Curve
Cryptography Standard. National Institute of Standards and Technology,
June 2015.

[CL14]

Roberto Cabral and Julio Lpez. Software implementation of SHA-3


family using AVX2. In Simpsio Brasileiro em Segurana da Informao
e de Sistemas Computacionais, volume XIV, pages 330333. Sociedade
Brasileira de Computao, 2014.

[Cor]

R Pentium proIntel Corporation. Hardware Design Site Archives. Intel


TM
cessor with MMX
technology documentation. http://www.intel.
com/design/archives/Processors/mmx/.

[Cor11]

R Advanced Vector Extensions Programming


Intel Corporation. Intel
Reference, June 2011. Disponvel em https://software.intel.com/
sites/default/files/m/f/7/c/36945.

[Cor13]

Intel Corporation. Intel Instruction Set Architecture Extensions. Available at https://software.intel.com/en-us/intel-isa-extensions,


July 2013.

Livro-texto de Minicursos

136

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[Cor14]

R Intrinsics Guide. https://software.intel.


Intel Corporation. Intel
com/sites/landingpage/IntrinsicsGuide/, February 2014.

[DH76]

W. Diffie and M.E. Hellman. New directions in cryptography. Information Theory, IEEE Transactions on, 22(6):644654, Nov 1976.

[DR01]

Joan Daemen and Vincent Rijmen. Algorithm Alley: Rijndael: The


Advanced Encryption Standard. Dr. Dobbs Journal of Software Tools,
26(3):137139, March 2001.

[FL15]

Armando Faz-Hernndez and Julio Lpez. Fast Implementation of


Curve25519 Using AVX2. In Kristin E. Lauter and Francisco RodrguezHenrquez, editors, Progress in Cryptology - LATINCRYPT 2015 - 4th
International Conference on Cryptology and Information Security in Latin America, Guadalajara, Mexico, August 23-26, 2015, Proceedings, volume 9230 of Lecture Notes in Computer Science, pages 329345. Springer, 2015.

[Fly72]

M. Flynn. Some Computer Organizations and Their Effectiveness. Computers, IEEE Transactions on, C-21(9):948960, Sept 1972.

[Fog14]

Agner Fog. Instruction tables: Lists of instruction latencies, throughputs and micro-operation breakdowns for Intel, AMD and VIA CPUs,
December 2014.

[GGF+ 15] Vinodh Gopal, Sean Gulley, Wajdi Feghali, Ilya Albrekht, and Dan
Zimmerman. Improving OpenSSL Performance. Technical report, Intel Corporation, May 2015. Disponvel em https://software.intel.
com/en-us/articles/improving-openssl-performance.
[Gue10]

Shay Gueron. Intel advanced encryption standard (AES) instructions


set. Intel White Paper, Rev, 3, 2010.

[Ham09]

Mike Hamburg. Accelerating AES with Vector Permute Instructions. In


Christophe Clavier and Kris Gaj, editors, Cryptographic Hardware and
Embedded Systems - CHES 2009, 11th International Workshop, Lausanne, Switzerland, September 6-9, 2009, Proceedings, volume 5747 of
Lecture Notes in Computer Science, pages 1832. Springer, 2009.

[Ham15]

Mike Hamburg. Ed448-Goldilocks, a new elliptic curve. Cryptology


ePrint Archive, Report 2015/625, 2015. http://eprint.iacr.org/.

[HSH+ 09]

J. Alex Halderman, Seth D. Schoen, Nadia Heninger, William Clarkson,


William Paul, Joseph A. Calandrino, Ariel J. Feldman, Jacob Appelbaum, and Edward W. Felten. Lest we remember: cold-boot attacks on
encryption keys. Commun. ACM, 52(5):9198, 2009.

[IMPR09]

Sebastiaan Indesteege, Florian Mendel, Bart Preneel, and Christian Rechberger. Collisions and other non-random properties for step-reduced

Livro-texto de Minicursos

137

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

SHA-256. In Selected Areas in Cryptography, pages 276293. Springer,


2009.
[IT88]

Toshiya Itoh and Shigeo Tsujii. A Fast Algorithm for Computing Multiplicative Inverses in GF(2m ) Using Normal Bases. Inf. Comput.,
78(3):171177, September 1988.

[jCPB+ 12] Shu jen Chang, Ray Perlner, William E Burr, Meltem Snmez Turan,
John M Kelsey, Souradyuti Paul, and Lawrence E Bassham. Thirdround report of the SHA-3 cryptographic hash algorithm competition.
US Department of Commerce, National Institute of Standards and Technology, 2012.
[Koc96]

P. C. Kocher. Timing Attacks on Implementations of Diffie-Hellman,


RSA, DSS, and Other Systems. In Neal Koblitz, editor, 16th Annual
International Cryptology Conference (CRYPTO 1996), volume 1109 of
LNCS, pages 104113. Springer, 1996.

[KS09]

Emilia Ksper and Peter Schwabe. Faster and timing-attack resistant AES-GCM. Cryptographic Hardware and Embedded Systems-CHES
2009, pages 117, 2009.

[KSD13]

Cameron F. Kerry, Acting Secretary, and Charles Romine Director.


FIPS PUB 186-4 FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION Digital Signature Standard (DSS), 2013.

[LHT15]

Adam Langley, Mike Hamburg, and Sean Turner. Elliptic Curves for
Security, September 2015. Disponvel em https://datatracker.ietf.
org/doc/draft-irtf-cfrg-curves/.

[Mer79]

Ralph Charles Merkle. Secrecy, authentication, and public key systems.


PhD thesis, Stanford University, 1979.

[Mer88]

RalphC. Merkle. A Digital Signature Based on a Conventional Encryption Function. In Carl Pomerance, editor, Advances in Cryptology
CRYPTO 87, volume 293 of Lecture Notes in Computer Science, pages
369378. Springer Berlin Heidelberg, 1988.

[MN07]

Mitsuru Matsui and Junko Nakajima. On the power of bitslice implementation on Intel Core2 processor. Cryptographic Hardware and
Embedded Systems-CHES 2007, pages 121134, 2007.

[Mon87]

Peter L. Montgomery. Speeding the Pollard and Elliptic Curve Methods


of Factorization. Mathematics of Computation, 48(177):243264, 1987.

[Nat93]

National Institute of Standards and Technology. FIPS PUB 180: Secure Hash Standard. National Institute for Standards and Technology,
Gaithersburg, MD, USA, May 1993.

Livro-texto de Minicursos

138

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[Nat95]

National Institute of Standards and Technology. FIPS PUB 180-1:


Secure Hash Standard. National Institute for Standards and Technology,
Gaithersburg, MD, USA, April 1995. Supersedes FIPS PUB 180 1993
May 11.

[Nat01a]

National Institute of Standards and Technology. FIPS PUB 197, ADVANCED ENCRYPTION STANDARD (AES). National Institute for
Standards and Technology, Gaithersburg, MD, USA, November 2001.

[Nat01b]

National Institute of Standards and Technology. NIST Special Publication 800-38A. Recommendation for Block Cipher Modes of Operation.
National Institute for Standards and Technology, Gaithersburg, MD,
USA, December 2001.

[Nat02]

National Institute of Standards and Technology. FIPS PUB 180-2, Secure Hash Standard, Federal Information Processing Standard (FIPS),
Publication 180-2. National Institute for Standards and Technology,
Gaithersburg, MD, USA, August 2002. Supersedes FIPS PUB 180-1
1995 April.

[Nat08a]

National Institute of Standards and Technology. FIPS PUB 180-3, Secure Hash Standard, Federal Information Processing Standard (FIPS),
Publication 180-3. National Institute for Standards and Technology,
Gaithersburg, MD, USA, October 2008. Supersedes FIPS PUB 180-2
2002 August.

[Nat08b]

National Institute of Standards and Technology. FIPS PUB 180-4, Secure Hash Standard, Federal Information Processing Standard (FIPS),
Publication 180-4. National Institute for Standards and Technology,
Gaithersburg, MD, USA, October 2008. Supersedes FIPS PUB 180-3
October 2008.

[Nat15]

National Institute of Standards and Technology. FIPS PUB 202 SHA-3


Standard: Permutation-Based Hash and Extendable-Output Functions.
National Institute for Standards and Technology, Gaithersburg, MD,
USA, August 2015.

[Per05]

Colin Percival. Cache missing for fun and profit. In Proceedings of


BSDCan 2005, 2005.

[Rab78]

Michael O Rabin. Digitalized signatures. Foundations of secure computation, 78:155166, 1978.

[RO05]

Vincent Rijmen and Elisabeth Oswald. Update on SHA-1. In Topics in


CryptologyCT-RSA 2005, pages 5871. Springer, 2005.

[Rot11]

Jeffrey Rott. Intel AESNI Sample Library. Technical report, Intel Corporation, May 2011. Disponvel em https://software.intel.com/
en-us/articles/download-the-intel-aesni-sample-library.

Livro-texto de Minicursos

139

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[RSD06]

Chester Rebeiro, David Selvakumar, and A Devi. Bitslice implementation of AES. Cryptology and Network Security, pages 203212, 2006.

[Sch95]

Bruce Schneier. Applied Cryptography (2Nd Ed.): Protocols, Algorithms, and Source Code in C. John Wiley & Sons, Inc., New York,
NY, USA, 1995.

[Sta10]

Franois-Xavier Standaert. Introduction to side-channel attacks. In


Secure Integrated Circuits and Systems, pages 2742. Springer, 2010.

[The03]

The OpenSSL Project. OpenSSL: The Open Source toolkit for SSL/TLS. www.openssl.org, April 2003.

[TOS10]

Eran Tromer, Dag Arne Osvik, and Adi Shamir. Efficient Cache Attacks
on AES, and Countermeasures. J. Cryptology, 23(1):3771, 2010.

[WYY05]

Xiaoyun Wang, Yiqun Lisa Yin, and Hongbo Yu. Finding collisions
in the full SHA-1. In Advances in CryptologyCRYPTO 2005, pages
1736. Springer, 2005.

[Yee15]

Alexander Yee. FeatureDetector, April 2015. Disponvel em https:


//github.com/Mysticial/FeatureDetector.

[Yuv78]

G. Yuval. How to Swindle Rabin. Rapport nr. IR. Vrije Universiteit,


Wiskundig Seminarium, 1978.

Livro-texto de Minicursos

140

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Captulo

4
Abordagens para Deteco de Spam de E-mail
Cleber K. Olivo, Altair O. Santin e Luiz Eduardo S. Oliveira

Abstract
The e-mail, one of the oldest and widely used services on the Internet, is the more used
tool to send an indiscriminate number of unsolicited message, known as spam. Given the
wide variety of techniques used for sending spam, this type of e-mail is a problem still far
from being solved. This work aims to present works and techniques relating of spam detection from a new perspective. Instead of classifying the works by type of detection technique, as is usually made in the literature, each one will be organized using the technique
applied in spam dissemination as entry key. Then, it will addressed the detection techniques for each case and it will make consideration about its efficiency.
Resumo
O e-mail, um dos servios mais antigos e mais utilizados na Internet, o meio mais utilizado para o envio indiscriminado de mensagens no solicitadas, conhecidas como spam.
Devido grande variedade de tcnicas utilizadas para o envio de spam, esse tipo de email um problema que ainda est longe de ser solucionado. Este trabalho tem como
objetivo apresentar as principais tcnicas e trabalhos relacionados a deteco de spam
sob uma nova perspectiva. Ao invs de classificar os trabalhos pelo tipo de tcnica de
deteco do spam, como normalmente feito na literatura, as abordagens sero organizadas a partir da tcnica utilizada na disseminao do spam. Ento, sero abordadas as
tcnicas de deteco para cada caso e feitas consideraes acerca de sua eficincia.

4.1. Introduo
4.1.1 Spam
O SMTP (Simple Mail Transfer Protocol) o protocolo padro utilizado para
transferncia de e-mails [1]. Nas ltimas dcadas, o e-mail tem sido um dos servios mais
utilizados na Internet, sendo o primeiro da lista quando o assunto comunicao entre
usurios na rede mundial. Por ser um dos servios mais antigos e mais utilizados na Internet, o e-mail tornou-se o favorito para o envio de mensagens de marketing e, em alguns
casos, at mesmo para o envio de mensagens fraudulentas ou contendo cdigos maliciosos anexados. O envio indiscriminado de e-mails sem o consentimento de seus destinatrios conhecido como spam. O envio de spam pela Internet causa vrios problemas, desde
o aborrecimento dos usurios - por receberem mensagens indesejadas, at problemas de
Livro-texto de Minicursos

141

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

sobrecarga dos servidores SMTP - devido ao grande volume de spam recebido. Em alguns
casos mais graves, como o phishing (considerado uma subcategoria de spam), o dano
causado pode ir muito alm de um simples aborrecimento, levando o usurio a ter a segurana de seus computadores comprometida ou a ter prejuzos financeiros [2].
O spam, na sua forma virtual, um problema cada vez mais presente na vida dos
usurios e administradores de sistemas. O primeiro envio de spam por e-mail ocorreu em
1978, quando foi enviado para 393 usurios da ARPANET [3]. Desde ento, as estatsticas sobre o envio de spam apresentam-se cada vez piores. Em 1997, a AOL estimou que
de 5 a 30% de seus 10 milhes de e-mails recebidos por dia eram spam [4]. Em 2004, um
estudo apresentou uma previso de que esse percentual chegar em 95%, numa escala
global, at 2015 [5]. Mais recentemente, estatsticas divulgadas pela Symantec revelaram
que um percentual de 89,1% j foi atingido em 2010 [6], sendo o maior percentual at
ento [7]. Para se ter uma ideia, naquele ano a quantidade de e-mail enviado por dia foi
de 62 bilhes. Nos ltimos anos o volume que esses percentuais representam vem diminuindo para 60% no ano de 2013, para um volume global de spam estimado em 29 bilhes
de mensagens por dia [8].
O spamming (envio de spam) vai muito alm do aborrecimento do usurio. Enquanto o custo computacional para envio do spam relativamente baixo, os provedores
de servios na Internet e seus usurios tem um custo alto, causado pelo desperdcio de
banda e pelos custos das tecnologias empregadas para a sua deteco [3].
Os spammers (termo utilizado para definir quem envia spam), a fim de dificultar
a deteco de suas mensagens, fazem uso de subterfgios tcnicos que vo desde a sua
forma de envio at informaes inseridas propositalmente no corpo da mensagem, com o
objetivo de confundir os mecanismos de deteco de spam (e.g. filtros antispam). O SPF
(Sender Policy Framework), concebido para ser uma tcnica antispam, embora se mostrasse promissor no comeo, acabou sendo pouco eficiente, visto que os prprios spammers comearam a publicar seus registros SPF [9]. Isso mostra que protocolos de autenticao de e-mail por si s no so suficientes, tendo mais utilidade em casos de phishing
ou e-mail spoofing. Um outro exemplo de tcnica para burlar os mecanismos de deteco
o uso de imagens no envio das mensagens de e-mail. Isto aconteceu porque a eficincia
dos mecanismos antispam na forma textual aumentou e ento, em 2006, os spammers
comearam a converter as mensagens em imagem [10]. De acordo com a Ironport, naquele mesmo ano, a quantidade de spam de imagem quadruplicou, representando entre
25% e 45% de todo spam, em alguns dias [11].
As tcnicas para driblar os mecanismos antispam tambm so utilizadas para tornar ineficazes as tcnicas baseadas em reconhecimento de texto. Palavras como 'viagra',
por exemplo, podem se apresentar de diversas formas (e.g. V1AGR4, v.i.a.g.r.a etc). Um
estudo revelou que essa mesma palavra pode ter mais de um quintilho de variaes [12],
sendo praticamente impossvel que os mecanismos de deteco baseados em anlise de
texto tenham conhecimento de todas as variaes possveis de uma nica palavra. O problema atinge uma escala muito maior se for considerado que h vrias palavras que podem produzir estes nmeros significativos de variaes num mesmo texto.
A criao de novas tcnicas de deteco de spam levou os spammers a criarem
novas tcnicas de disseminao, geralmente baseadas na alterao constante do contedo
da mensagem. De um modo geral, algumas das tcnicas de deteco de spam existentes,
envolvendo a rea de reconhecimento de padres, conseguem taxas razoveis de classificao correta de e-mails. Entretanto, devido grande variedade de tcnicas utilizadas para
o envio de spam, haver detalhes especficos na mensagem que dificultaro a sua correta
identificao. Assim, o spam um problema que ainda est longe de ser solucionado,

Livro-texto de Minicursos

142

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

visto que no existe uma tcnica de deteco que seja eficiente para todas as tcnicas de
disseminao existentes.
Muitas ferramentas para classificao de e-mails, assim como a maioria das ferramentas de navegador, utilizam listas de remetentes bons (whitelists) e maus (blacklists). Normalmente, as blacklists bloqueiam o endereo IP do servidor de e-mail de origem das mensagens spam, ou ainda o prprio endereo de e-mail do remetente. O bloqueio do endereo IP ou domnio pode causar problemas quando o remetente utiliza o
servidor de SMTP de algum provedor (e.g Yahoo, Gmail, etc), pois acaba por bloquear
todos os remetentes que o utilizam. J o bloqueio do e-mail do remetente pode ser ineficiente, visto que o mesmo pode ter sido forjado, sequestrado ou roubado de um usurio
legtimo [13].
Algumas abordagens sugerem, tambm, a colaborao dos usurios para auxiliar
o mecanismo antispam a classificar mensagens [14, 15]. Isto pode confundir o mecanismo
de classificao de e-mails, pois um usurio pode considerar algo como spam, quando na
verdade apenas no gosta de receber aquele tipo de e-mail por uma questo pessoal, enquanto outros usurios gostariam de receb-lo.
As ferramentas baseadas em aprendizagem de mquina, em sua maioria acabam
falhando quando um novo tipo de spam recebido, visto que um novo modelo precisa ser
treinado para que o novo spam possa ser detectado. Ou seja, at que o classificador seja
treinado novamente, este novo spam j atingiu vrios usurios. Alm disto, o uso de imagens na mensagem, como comentado anteriormente, se tornou muito comum, ento esta
tcnica passou a ser uma das mais exploradas, de acordo com a literatura [16, 17, 18, 19,
20, 21] para burlar os mecanismos antispam.
Uma tcnica de disseminao de spam baseada no contedo da mensagem (mensagem textual), e que se tornou um problema para os classificadores baseados na ocorrncia de palavras, o ofuscamento de palavras ou caracteres. A quantidade de caracteres
que podem ser trocados, visando confundir os mecanismos antispam, aumenta drasticamente a quantidade de palavras que podem substituir os termos originais que so comuns
em mensagens de spam [12], pois para essas tcnicas de classificao, se um nico caractere trocado em uma palavra, j no computacionalmente considerado a mesma string
de caracteres.
Este captulo tem como objetivo apresentar as principais tcnicas e trabalhos relacionados deteco de spam. Porm, ao invs de classificar os trabalhos existentes pela
tcnica de deteco/classificao utilizada, como normalmente feito na literatura, as
propostas sero classificadas de acordo com a tcnica utilizada na disseminao de spam.
Ou seja, para cada artimanha utilizada pelos spammers para driblar os mecanismos de
deteco, so apresentadas as solues propostas na literatura para mitigar o problema.
Um dos problemas de apresentar as tcnicas de deteco de spam na forma tradicional (classificando pela tcnica de deteco ao invs da tcnica de envio) que, para
quem no conhece o assunto a fundo, esta abordagem no revela os problemas relacionados deteco de spam que devem ser resolvidos. Aps a apresentao dos principais
tipos de spam, classificando a partir das tcnicas utilizadas, so apresentadas as principais
tcnicas de deteco propostas na literatura. Deste modo, mais fcil entender e questionar a eficincia das tcnicas de deteco para cada tipo de abordagem utilizada na disseminao das mensagens de spam.

Livro-texto de Minicursos

143

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

4.1.2 Organizao
A seo 4.2 apresenta alguns conceitos bsicos sobre o funcionamento do servio
de e-mail. O objetivo dessa seo entender como funciona o envio do e-mail, alguns
aspectos importantes em relao ao protocolo SMTP (Simple Mail Transfer Protocol) e
os principais campos da mensagem utilizados na comunicao entre servidores,
aplicativos e usurios.
A seo 4.3 apresenta as principais tcnicas utilizadas para o envio de spam.
Diferente da maioria dos trabalhos, os quais classificam as abordagens a partir das
tcnicas de deteco propostas [4, 22, 23, 24, 25, 26], esta proposta apresenta uma viso
diferenciada, que trata das tcnicas de deteco sob o ponto de vista de cada tcnica de
envio de spam. Ou seja, a partir das principais tcnicas de envio de spam so apresentadas
as tcnicas de deteco mais indicadas. Essa viso facilita o entendimento do problema,
identificando a tcnica de disseminao de spam e a abordagem de classificao de emails mais apropriada. Desse modo, se um administrador de sistemas estiver com
problemas no recebimento de spam que utilize uma tcnica especfica (e.g spam de
imagem), poder conhecer as principais tcnicas para a deteco deste tipo especfico de
spam.
Aps a apresentao dos principais tipos de spam, ao apresentar cada tcnica de
deteco ficar mais fcil questionar a sua eficincia para um ou outro tipo de mensagem.
Havendo o entendimento dessas tcnicas de disseminao, possvel seguir para a
prxima etapa (seo 4.4), onde so discutidas as principais tcnicas de deteco de spam
encontradas na literatura.
Na seo 4.5 apresentada uma relao entre os tipos de spam apresentados na
seo 4.3 e as tcnicas de deteco apresentadas seo 4.4. A partir deste ponto, ser
possvel inferir que nenhuma das tcnicas isoladamente capaz de conseguir timos
resultados, sendo necessria uma combinao das mesmas para obter um mecanismo (e.g.
filtro ou classificador) robusto e eficiente. Para cada tipo de spam, ser apresentada a
tcnica mais recomendada. Adicionalmente, sero apresentadas as principais limitaes
de cada tcnica e algumas alternativas utilizadas.
A ltima seo (4.6) apresenta as consideraes finais acerca do assunto,
possibilitando uma visibilidade maior sobre a complexidade do problema que o spam
representa, incluindo os esforos mais recentes em pesquisa que buscam mitigar suas
causas.

4.2. O Servio de E-mail


O envio e recebimento de e-mails envolve dois componentes principais: o MTA
(Mail Transfer Agent) e o MUA (Mail User Agent). O MTA (e.g. Postfix [27], qmail [28],
Exchange [29], etc.) o servidor responsvel pelo envio e recebimento dos e-mails. Em
um envio de e-mail atravs da Internet, na origem da mensagem, o MUA (e.g.
Thunderbird [30], Microsoft Outlook [31], etc.) tem a funo de coletar o e-mail do
remetente e encaminhar a mensagem, atravs do protocolo SMTP, a um MTA de origem,
que o servidor encarregado de encaminhar a mensagem ao MTA de destino. O MTA de
destino encarregado pela entrega do e-mail ao MUA do destinatrio atravs de algum
servio de entrega (e.g. IMAP [32] ou POP3 [33]). A Figura 4.1 ilustra um cenrio onde
h troca de mensagens entre dois MTAs.

Livro-texto de Minicursos

144

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 4.1. Troca de mensagens entre dois MTAs.


As regras para a troca de mensagens entre MTAs esto definidas na RFC 2821
(Simple Mail Transfer Protocol), que especifica que o e-mail composto por um envelope
(em ingls, envelope) e por um contedo (content) [1]. O envelope composto por um
endereo de origem (para onde os relatrios de erro so direcionados), um ou mais
endereos de destino (destinatrios) e outras informaes opcionais do protocolo. O
contedo dividido em duas partes: cabealho (header) e o corpo (body).
O cabealho sempre precede o corpo do e-mail, e contm informaes
obrigatrias, tais como os campos FROM (e-mail do remetente), TO (endereo do
destinatrio) e DATE (data), e outras informaes opcionais, mas que geralmente so
utilizadas, tais como os campos SUBJECT (assunto) e CC (do ingls, carbon copy
demais destinatrios copiados no e-mail).
No que diz respeito ao spam, o prprio protocolo SMTP, por questes de projeto,
possui limitaes que so exploradas pelos spammers no envio de suas mensagens,
possibilitando, por exemplo, que o endereo no campo remetente seja substitudo por
outro diferente do e-mail de quem est enviando a mensagem. Essas limitaes so
apresentadas com mais detalhes na seo 4.3.1.
O corpo contm a mensagem do e-mail, que pode ser composta por imagens e por
texto com uso de recursos de hipertexto, como o HTML (HyperText Markup Language)
- que sero interpretados pelo MUA. Embora o cabealho do e-mail seja essencialmente
codificado no formato US-ASCII (American Standard Code for Information
Interchange), o corpo do e-mail estruturado conforme o formato MIME Multipurpose
Internet Mail Extensions [34].
A definio do MIME foi necessria pois o padro que antecedia a RFC 2821
(RFC 822 Standard for the Format of ARPA Internet Text Messages, 1982) [35], tinha
a inteno de especificar apenas um formato para mensagens de texto. Mensagens em
Livro-texto de Minicursos

145

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

outros formatos, tais como mensagens multimdia, que podem incluir udio e vdeo, no
foram mencionadas no padro. Alm disso, o padro especificado pela RFC 822
inadequado para as necessidades atuais dos usurios de e-mail, os quais utilizam idiomas
que necessitam de um conjunto de caracteres mais amplo que o US-ASCII, como os
caracteres de idiomas asiticos e europeus [34]. O MIME redefine o formato das
mensagens para permitir:
(1) Texto do corpo da mensagem utilizando conjuntos de caracteres diferentes do USASCII;
(2) Um conjunto extensvel de diferentes formatos para corpos de texto em formato
no-textual;
(3) Corpos de mensagem multi-part, ou seja, divididos em duas ou mais partes, cada
uma com conjuntos de caracteres diferentes;
(4) Informao textual do cabealho em um conjunto de caracteres diferente do USASCII.
A possibilidade de uso de diversos conjuntos de caracteres, somada ao uso de
imagens e recursos de hipertexto (HTML), permitiu que o corpo do e-mail se tornasse o
campo da mensagem onde h o maior nmero de subterfgios tcnicos que podem ser
utilizados para burlar os mecanismos antispam.
A seo 4.3 apresenta em detalhes as principais formas como o protocolo SMTP,
o corpo do e-mail e o cabealho so utilizados na disseminao de spam, buscando a
mxima eficincia, seja com o objetivo de alcanar o maior nmero de destinatrios no
menor tempo possvel ou, ainda, driblando os mecanismos antispam.

4.3. Principais Tipos de Spam com Base na Tcnica de Disseminao


Utilizada
As tcnicas utilizadas para a disseminao de spam sofreram mudanas significativas nos
ltimos anos. A criao de tcnicas mais eficientes para a deteco de spam obrigou os
spammers a criarem novas artimanhas para driblar os mecanismos de deteco. As
tcnicas de spam podem ser classificadas em duas categorias principais: i) tcnicas
baseadas no envio do spam e ii) tcnicas baseadas no contedo do e-mail.
As tcnicas baseadas no envio do spam correspondem forma como o e-mail
enviado (e.g. atravs de uma botnet ou MTA legtimo). J as tcnicas baseadas no
contedo normalmente esto associadas s artimanhas utilizadas no corpo do e-mail, para
confundir os mecanismos de deteco baseados no contedo (textual ou no) da
mensagem. Normalmente, o spammer utiliza uma combinao de tcnicas presentes nas
duas categorias (ou ainda vrias tcnicas da mesma categoria), maximizando as chances
da mensagem passar pelos mecansimos antispam sem ser detectada. A possibilidade de
inmeras combinaes dessas tcnicas aumenta substancialmente o desafio de quem faz
a classificao das mensagens (spam ou no-spam), i.e., os administradores de servidores
de e-mail, que configuram os mecanismos antispam ou os pesquisadores que
desenvolvem novas tcnicas de classificao de mensagens.
A seguir ser mostrado que cada uma dessas categorias principais pode abrigar
vrias subcategorias, como ser apresentado nas prximas sees (4.3.1 4.3.3).

Livro-texto de Minicursos

146

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

4.3.1. Tcnicas Baseadas no Envio de Spam


As tcnicas baseadas no envio de spam esto relacionadas com a forma como as
mensagens so encaminhadas para os endereos de e-mail dos usurios. Ou seja, essas
tcnicas esto mais associadas com o disparo dos e-mails do que com o contedo da
mensagem. Por exemplo, um spam pode ser encaminhado com ou sem a opo de
verificao do recebimento da mensagem e fazer o reenvio em alguns casos de falha na
entrega. Um spam poderia, tambm, ser encaminhado por um MTA que pertence a uma
organizao confivel - para fins publicitrios, ou por uma origem fraudulenta, atravs de
um mecanismo simples de envio e.g. atravs de um malware (cdigo malicioso
desenvolvido para fins ilcitos e sem o consentimento do usurio).
Mais exemplos de tcnicas baseadas no envio do spam e suas caractersticas so
apresentadas nos itens de a at e.
a) Mecanismo simples de envio
Uma das formas tpicas de enviar spam atravs de um mecanismo simples de
envio massivo de e-mails. Geralmente, este tipo de tcnica utilizado quando o objetivo
atingir o mximo de destinatrios no menor tempo possvel, sendo feito o envio de
milhares de e-mails (ou mesmo dezenas ou centenas de milhares) sem se preocupar com
erros de envio e confirmaes de entrega das mensagens.
Em um MTA devidamente configurado, normalmente verificado o recebimento
da mensagem pelo MTA de destino. Alm de problemas de rede, pode ocorrer, inclusive,
verificaes relacionadas conta de e-mail do destinatrio, retornando uma mensagem
de erro caso a conta de usurio no exista ou esteja com a cota em disco esgotada. Em
alguns casos de erro na entrega, a mensagem pode ser recolocada em uma fila para uma
posterior tentativa de reenvio do e-mail. Esses controles e verificaes que, entre vrios
propsitos, tm por objetivo a reduo de erros de comunicao e maior eficincia do
servio, aumentam o custo computacional, o tempo de envio dos e-mails, e a
complexidade dos softwares envolvidos no processo de envio massivo de mensagens.
Com a ausncia de qualquer tipo de controle ou verificao na transmisso da
mensagem (Figura 4.2), o mecanismo de envio massivo de e-mails torna-se muito mais
simples, reduzindo consideravelmente o custo computacional, a complexidade do
software e o tempo necessrios para o envio do spam. O envio atravs de um mecanismo
simples pode ser realizado atravs de um software com poucas linhas de cdigo (inclusive
algum malware), no sendo necessrio a configurao de um servidor MTA completo.
Neste caso no feita uma nova tentativa de envio, ou seja, o servidor de origem
(spammer) no precisa tratar os e-mails que retornam com erro, simplificando o sistema
de envio do atacante.
A Figura 4.2 ilustra um exemplo no qual o spammer utiliza um computador
pessoal para enviar spam para uma conta de e-mail que no existe naquele domnio
(evento 1). O servidor SMTP ao receber a mensagem e constatar que no existe uma caixa
de entrada para aquele endereo (usuario_inexistente@servidor_smtp.com), fornece uma
mensagem de erro para o endereo do spammer (evento 2). A RFC 3463 mostra os
cdigos de estado para o servio de e-mail [36]. O computador do spammer, por estar
configurado como um mecanismo simples de envio de e-mails, no est preparado para
tratar os e-mails de retorno, descartando a mensagem de erro (evento 3).

Livro-texto de Minicursos

147

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 4.2. Envio atravs de mecanismo simples, sem tratamento de erros.


Em um gateway SMTP (ambiente de entrada e sada de e-mails onde pode haver
um ou mais MTAs configurados) com grande volume de mensagens, possvel notar uma
grande quantidade de e-mails destinados a endereos inexistentes (contas de usurio
desativadas ou que nunca existiram). Isto ocorre porque os spammers muitas vezes se
utilizam de listas de e-mails que possuem uma grande quantidade desses endereos
inexistentes. Como no h tratamento desses e-mails com destinatrios invlidos, o nico
tempo desperdiado pelo spammer, nesses casos, o do prprio envio da mensagem.
b) Envio com tratamento de erros
Neste caso, diferente do mecanismo simples de envio, os e-mails que retornam
com erro so recolocados na fila de envio do MTA e so programados para serem
retransmitidos mais tarde (Figura 4.3). Por exemplo, se ocorrer um erro temporrio de
rede ou no MTA de destino, o spam retorna ao MTA de origem e reenviado mais tarde.
O nmero de tentativas de reenvio e o tempo de espera para a retransmisso da mensagem
varivel, podendo ser configurado no MTA de origem. Este tipo de envio se tornou mais
comum medida que foram criadas tcnicas para a deteco de mensagens de spam
enviadas atravs de mecanismos simples de envio, sendo tambm muito comum em
servidores de e-mail que enviam spam com fins publicitrios.

Figura 4.3. Tratamento de erros entre MTAs completos.


Na Figura 4.3, o servidor SMTP da origem da mensagem encaminha o e-mail para
o servidor SMTP de destino e, por alguma razo (e.g. problemas de rede ou no servidor
de destino) no consegue concluir a transferncia do e-mail (evento 1). Ao constatar o
erro na entrega do e-mail (evento 2), a mensagem colocada em uma fila (evento 3) para
posterior tentativa de reenvio. O tempo que a mensagem permanece na fila e o seu
Livro-texto de Minicursos

148

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

descarte aps vrias tentativas uma questo de configurao do MTA de origem. Na


ilustrao, a mensagem entregue com sucesso aps uma nova tentativa (evento 4).
Esta tcnica de envio permite que o spammer valide e atualize os endereos de
suas listas de e-mail, podendo remover aqueles e-mails que retornaram erro, evitando
futuros envios sem sucesso.
Esta forma de envio tambm adotada pela maioria das entidades legtimas em
campanhas de marketing (e.g. sites de e-commerce), podendo ser de interesse parcial dos
destinatrios que recebem seus e-mails, dificultando ainda mais a tarefa de classificao
da mensagem, uma vez que o que spam para alguns usurios pode no ser considerado
da mesma forma para outros. Detalhes sobre o contedo das mensagens de e-mail
marketing so apresentados na seo 4.3.2.
c) Envio com substituio de remetente ou transmissor
O prprio protocolo SMTP por uma questo de projeto [1], permite que o endereo
do remetente seja substitudo. Assim, num ataque, alm de forjar o remetente de um email, tambm comum que o atacante forje o endereo IP (Internet Protocol) do
remetente (IP Spoofing). Essas tcnicas so utilizadas para violar os mecanismos
antispam baseados no endereo de e-mail ou IP do remetente. A Figura 4.4 ilustra este
exemplo.

Figura 4.4. Envio com forja do remetente.


Alm do intuito de burlar os mecanismos baseados no e-mail ou IP do remetente
para envio de spam, em geral, esta prtica muito comum em casos de phishing1 de email. Em outras palavras, o phishing passa uma mensagem vtima tentando convencla de que o remetente uma fonte confivel (e.g. banco, site de e-commerce, rgos
governamentais etc.). Alm disto, o phishing executa alguma ao que normalmente lhe
causar algum tipo de prejuzo (e.g. carto de crdito clonado ou senha bancria roubada)
1

Phishing uma forma de estelionato que usa engenharia social para fazer vtimas, enganando-as com o
uso de recursos tecnolgicos, normalmente com o objetivo de obter suas informaes pessoais (geralmente
de cunho financeiro) e causar-lhes prejuzos [2]. De acordo com o Cdigo Penal Brasileiro, estelionato
obter, para si ou para outrem, vantagem ilcita, em prejuzo alheio, induzindo ou mantendo algum em erro,
mediante artifcio, ardil, ou qualquer outro meio fraudulento [37].
Livro-texto de Minicursos

149

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

ao usurio. Com o remetente forjado, ao abrir o e-mail, o usurio vtima do phishing acaba
sendo convencido de que o remetente de uma fonte confivel, sem perceber o golpe.
Alm de forjar o remetente, o atacante costuma usar um contedo da mensagem bem
convincente, porm esta questo ser explorada na seo 4.3.2.
d) Envio atravs de botnets
Uma botnet uma rede de computadores comprometidos (bots), conectados
Internet e controlados por um atacante remoto (botmaster) [38]. As botnets utilizadas para
a disseminao de spam geralmente so compostas por computadores comprometidos de
usurios, onde foi instalado algum tipo de malware (cdigo malicioso). Esses
computadores so controlados remotamente, sem o consentimento do usurio, para a
disseminao de spam (Figura 4.5).

Figura 4.5. Envio atravs de botnets.


Como uma botnet tem grande escalabilidade, a dificuldade em detectar o spam a
partir do endereo de origem significativamente aumentada. Esta prtica tambm
facilita o anonimato do spammer, pois utiliza computadores de pessoas comuns, que
podem estar localizados em pontos geogrficos distantes, espalhados por diferentes pases
ou continentes, sem precisar configurar temporariamente servidores SMTP que
denunciariam a sua localizao. Assim, a quantidade de endereos IP de origem
(computadores comprometidos) e a variedade de faixas de endereos IP (devido s
diferentes localizaes geogrficas) so to grandes que no h como realizar um
bloqueio eficaz atravs dos endereos de origem.
O uso de botnets facilita anonimato e, portanto, uma das tcnicas mais utilizadas
para a disseminao de phishing de e-mail, alm de outras ameaas existentes na Internet.
Como o malware presente nos computadores dos usurios costuma possuir poucas linhas
de cdigo, o spam enviado atravs de botnets geralmente se enquadra tambm na
categoria de mecanismo simples de envio (seo 4.3.1.a).
Livro-texto de Minicursos

150

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

e) Envio atravs de open relays


Open relays ou relays abertas so servidores SMTP onde qualquer pessoa ou
sistema pode se conectar e enviar e-mails livremente atravs deste, sem precisar de
qualquer tipo de autenticao. A conexo feita, quase na totalidade dos casos, sem o
consentimento ou conhecimento da organizao responsvel pelo servidor.
Durante o final da dcada de 90 at o incio dos anos 2000, o envio de mensagens
pelos spammers atravs de servidores open relay era uma prtica muito comum. Na
poca, os desenvolvedores de MTAs realizaram mudanas nos cdigos e na configurao
padro dos sistemas para assegurar que as instalaes padro fossem closed relays (relays
fechadas) e tornar a criao de uma open relay mais difcil, de modo a permitir que os emails fossem enviados atravs do servidor somente por usurios autorizados [39]. Entre
2012 e 2013, o projeto Spamhaus registrou cerca de 4 mil registros de open relays, sendo
que diariamente os spammers descobrem e exploram de 10 a 20 novas relays abertas
[39]. A Figura 4.6 ilustra o envio de spam atravs de open relays.

Figura 4.6. Envio de spam atravs de open relays.


O bloqueio de servidores SMTP open relay complicado devido grande
quantidade desses servidores vulnerveis espalhados pela Internet e pelo surgimento
constante de novas relays abertas a cada dia. Alm disso, o bloqueio do endereo IP de
origem, neste caso, tambm pode acarretar o bloqueio indevido dos e-mails de uma
organizao legtima.
4.3.2. Tcnicas Baseadas no Contedo E-mail
Diferentemente das tcnicas apresentadas na seo 4.3.1, as tcnicas de envio de spam
baseadas no contedo do e-mail esto, na maioria dos casos, associadas a violao de
mecanismos antispam que se baseiam nas informaes coletadas a partir do corpo da
mensagem. Essas tcnicas vo desde a insero proposital de palavras, que confundem o
Livro-texto de Minicursos

151

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

classificador de e-mails, at o uso de subterfgios tcnicos, como recursos da linguagem


de hipertexto (HTML) incorporada ao e-mail.
A identificao dessas tcnicas dar sequncia s que foram apresentadas na seo
4.3.1, porm com foco exclusivo no corpo da mensagem. As principais tcnicas so
apresentadas nos itens entre a e f.
a) Insero proposital de palavras
A insero proposital de palavras utilizada pelos spammers para confundir os
classificadores de spam, que usam a ocorrncia de palavras mais comuns para a deteco
do ataque. o caso dos classificadores bayesianos [40], que classificam as mensagens
com base nas palavras que ocorrem com mais frequncia, tanto para spam como para nospam. Dependendo das palavras existentes no corpo da mensagem, o classificador gera
uma probabilidade do e-mail ser spam ou no.
Para confundir o classificador, o spammer insere de forma proposital, palavras
(texto comum) em e-mails legtimos no contedo do spam, fazendo com que a tcnica de
classificao utilizada caracterize a mensagem como no-spam, porque h predominncia
de texto legtimo no e-mail.
b) Troca ou insero proposital de caracteres
A troca ou insero proposital de caracteres (tambm conhecida por ofuscao
textual) outra tcnica utilizada pelos spammers para violar os mecanismos de deteco
baseados no texto da mensagem. Diferentemente da insero proposital de palavras, em
vez de inserir palavras que possam confundir o classificador, realizada a troca, excluso
ou insero proposital de caracteres nas palavras mais comuns. Este tipo de tcnica
prejudica a deteco tanto nos mecanismos baseados na probabilidade de mensagens
como em filtros baseados em regras de deteco com palavra-chave (seo 4.3).
Por exemplo, a palavra 'viagra', muito comum em mensagens de spam, com o uso
desta tcnica poderia se apresentar de diversas formas (e.g. V1AGR4, v.i.a.g.r.a etc.),
chegando a mais de seiscentos quintilhes de variaes (600.426.974.379.824.381.952)
[12]. Este nmero torna a deteco dessa e demais palavras e suas variaes praticamente
impossvel porque esta quantidade fantstica de combinaes deveria ser gerada em
tempo real para todas as palavras ou armazenada em alguma base de dados. Em ambos
os casos, os mecanismos de deteco baseados na ocorrncia de palavras precisam
comparar, no e-mail recebido, cada palavra do corpo da mensagem com todas as
combinaes possveis (strings ofuscadas) de todas as palavras possveis. O nmero de
combinaes possvel devido ao grande nmero de caracteres existentes no padro
Unicode que, em sua verso 8.0, rene 120.672 cdigos que representam caracteres de
vrios idiomas, ideogramas e colees de smbolos [41].
No caso da substituio de caracteres, o problema pode aumentar mais ainda caso
haja substituies de um caractere da palavra original por dois ou mais caracteres. A
Tabela 4.1 mostra alguns exemplos.
A Tabela 4.1 apresenta alguns exemplos de ofuscao textual que podem ocorrer.
A forma mais simples a insero de caracteres no meio da palavra como espaos, pontos,
hifens etc. Os caracteres inseridos podem variar na mesma palavra (e.g. 'V I.A-G.R A').
Alm da simples insero de caracteres no meio de uma palavra especfica, tambm pode
ocorrer uma substituio N1, ou seja, onde um ou mais caracteres (N) so utilizados
para representar um caractere especfico. possvel ainda que uma nica palavra possua
uma combinao de mais de um dos tipos de ofuscao apresentados na Tabela 4.1 (e.g.
Livro-texto de Minicursos

152

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

'P|-|AR.M/\CE.UTI.C@L'). Com a grande possibilidade de inseres, substituies e


combinaes de caracteres para realizar a ofuscao textual, fica claro o tamanho da
complexidade do problema.
Tabela 4.1. Exemplos de ofuscao textual.
Tipo de Ofuscao

Exemplos

Insero de caracteres

'P h a r m a c e u t i c a l', 'V.I.A.G.R.A', 'T-i-c-k-e-t', 'V I.A-G.R A'

Substituio 11

'Ph@rmaceutica1', 'V1AGR4', 'T1CKET'

Substituio 21

'PH/\RMACEUTIC/\L', 'VI/\GR/\', 'TICl<ET'

Substituio 31

'P|-|ARMACEUTIC/-\L', 'VI/-\GR/-\'

Liu e Stamm [42] realizaram experimentos para comprovar o quanto a ofuscao


de palavras pode prejudicar o resultado de um classificador. Para a realizao dos testes,
foram substitudos termos originais (sem ofuscao) em mensagens da base de spam por
caracteres Unicode que possuem semelhana visual com o caractere original. Depois de
treinar a ferramenta SpamAssassin [43], foram realizados testes de classificao nas bases
originais (sem ofuscamento), com ofuscamento e na base desofuscada. Os resultados
obtidos demonstram que termos ofuscados tm grande impacto no resultado do
classificador. O Spam Assassin atribui uma nota (score) para o e-mail que, quanto mais
alta, maior a probabilidade de ser spam. Em um dos experimentos, as mensagens de
spam originais receberam notas de 7,9 a 21,7. Com os termos ofuscados, as notas foram
de 1,9 a 5,94, ou seja, muito abaixo do que um spam normalmente receberia.
c) Contedo falso
Uma prtica comum utilizada pelos phishers (spammers que disseminam
phishing) utilizar um texto bem convincente e muito parecido com mensagens legtimas.
Mas, que na verdade ludibriam o usurio do sistema de e-mail, convencendo-o a realizar
alguma ao que poder torn-lo vtima de algum tipo de fraude.

Figura 4.7. Mensagem de um phishing de e-mail.


Livro-texto de Minicursos

153

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

A Figura 4.7 um exemplo de contedo de uma mensagem de um phishing.


O texto tenta convencer a vtima que o seu dispositivo de segurana utilizado para
acessar servios bancrios est desatualizado (o texto possui, inclusive, a palavra
'atualizao' destacada em amarelo para chamar a ateno do usurio). Para atualizlo o usurio deve acessar o link informado, que o levar a baixar um malware que
depois poder lhe causar prejuzos financeiros, por exemplo, devido ao roubo de
senhas bancrias.
Este tipo de e-mail acaba fugindo regra pois, alm de forjar o remetente (seo
4.3.1.c), possui caractersticas textuais muito parecidas com e-mails legtimos, tornando
a mensagem ainda mais convincente aos olhos do usurio (vtima). Esses e-mails tambm
podem conter outras artimanhas utilizadas pelos phishers, o uso de recursos da linguagem
de hipertexto HTML para enganar as vtimas (assunto que ser apresentado na seo
4.3.2.e). Por se parecerem com e-mails que esto presentes em bases de no-spam, os
classificadores baseados no texto da mensagem muitas vezes no so eficientes contra
este tipo de spam.
d) Uso de imagens
medida que os mecanismos de deteco de spam textuais foram se tornando
mais eficientes, os spammers passaram a inserir o texto da mensagem dentro de imagens,
tornando os classificadores tradicionais ineficazes para este tipo de spam [10]. Uma das
solues para isto foi o uso de OCR (Optical Character Recognition) Reconhecimento
tico de Caracteres, que realiza a extrao do texto contido nessas imagens (prprocessamento) e submetendo-o em seguida para o processamento textual. Aps a adoo
de tcnicas de OCR como soluo do problema, os spammers comearam a utilizar
tcnicas para dificultar o processamento das imagens.

Figura 4.8. Imagem com tcnica de ofuscao. Adaptado de [20].


As tcnicas utilizadas pelos spammers para dificultar o tratamento dessas imagens
(e.g. ofuscao de imagens, Figura 4.8) aumentam consideravelmente a complexidade da
classificao dos e-mails. Pela sua eficincia, esta tcnica se tornou o tipo de spam mais
explorado recentemente. O ofuscamento de imagens consiste em utilizar uma imagem de
fundo que dificulte, de alguma maneira, o reconhecimento e a extrao do texto durante
o pr-processamento, mas sem prejudicar a mensagem do texto para a viso humana.
Esta prtica passou a ser comum a partir de 2006 [10], sendo que no mesmo ano
a quantidade de e-mail com este tipo de spam quadruplicou, representando de 25 a 45%
do total, dependendo do dia [11]. Outro agravante o tamanho mdio do spam de imagem,
Livro-texto de Minicursos

154

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

que em mdia cerca de 10 vezes maior do que o spam textual, consumindo maior banda
para trafegar na rede e mais recursos de armazenamento [16], alm de necessitar de tempo
e capacidade adicional de processamento no MTA de destino.
A Figura 4.8 um exemplo de spam de imagem com tcnica de ofuscao. O
fundo poludo e a variao de cores tanto no fundo como nas letras da imagem
dificultam consideravelmente a aplicao do OCR para a extrao textual. Para viso
humana, entretanto, possvel compreender a mensagem com um mnimo de dificuldade.
e) Uso de recursos da linguagem HTML
O uso de recursos de hipertexto (HTML) de forma mal-intencionada muito
comum em casos de estelionato, como no phishing de e-mail. Nesse caso, os recursos da
linguagem podem ser utilizados para ocultar informaes da vtima ou at mesmo
confundi-la.
Um dos exemplos mais comuns do uso de recursos HTML quando o texto
ncora, ou seja, o texto visvel para o usurio uma URL (Uniform Resource Locator) de
algum site legtimo, mas que aponta para um domnio fraudulento diferente do endereo
visvel para o usurio, por exemplo:
<a href=http://playpal.com> http://www.paypal.com/login.php </a>
Neste exemplo, o usurio ver a URL http://www.paypal.com/login.php, porm
ser redirecionado para o endereo http://playpal.com. Um usurio mais experiente
saber que um simples passar do ponteiro do mouse sobre o link provavelmente mostrar
a verdadeira URL por trs do texto ncora, porm, esta tcnica costuma funcionar com os
usurios mais desatentos ou inexperientes.
Um outro exemplo poderia ser:
<img src=http://www.dpf.gov.br/logo.png> Voc est intimado a comparecer em nossa
delegacia! <a href=http://badsite.com/malware.exe> Clique aqui para saber o
motivo </a>.
Neste caso, a vtima enxergaria a mensagem Voc est intimado a comparecer
em nossa delegacia! Clique aqui para saber o motivo, com uma imagem do logo da
organizao, retirado diretamente do Portal da Polcia Federal e contendo um link para o
endereo http://badsite.com/malware.exe, que aponta para um arquivo executvel que
provavelmente contm algum tipo de malware.
No trabalho de Olivo, C. K., Santin, A. O. e Oliveira, L. S. [2] h exemplos de
vrios outros casos de uso do HTML que so comuns em phishing.
f) Campanha Publicitria (E-mail marketing)
Campanhas publicitrias (e-mail Marketing ou marketing por e-mail) so
mensagens com fins publicitrios que geralmente so enviadas por um MTA com
considervel poder de processamento, que possui um domnio autntico para envio de emails, tratamento de erros etc. importante ressaltar que o e-mail marketing no
exatamente uma tcnica de disseminao de spam baseada no contedo da mensagem,
pois nem sempre o objetivo primrio destes e-mails causar problemas ao usurio ou
administradores de servidores de e-mail. O problema dessas mensagens sua
classificao pelos usurios (que podem consider-las mensagens no solicitadas
spam), esta a razo pela qual esta categoria de e-mails est includa nesta seo.
Livro-texto de Minicursos

155

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Diferentemente de e-mails que promovem a venda de medicamentos (e.g. Viagra,


Cialis etc.) e outras categorias de spam que so indesejados por quase todos os usurios,
este tipo de e-mail pode ser do interesse de alguns por conter assuntos de interesse
especfico, tais como: promoes de produtos, lanamentos etc. A maioria destes e-mails
de campanhas publicitrias tambm oferece ao usurio a opo de remoo do seu
endereo da mailing list, para que no receba mais o que considera spam.
4.3.3. Consideraes sobre as tcnicas de disseminao de spam
Conforme apresentado nas sees anteriores, h uma grande variedade de tcnicas
e tipos de spam. A Tabela 4.2 sumariza as principais caractersticas, objetivos e principais
dificuldades de deteco para cada tipo de spam.
A grande diversidade de tcnicas de disseminao ou tipos de spam aumenta
consideravelmente a complexidade do problema. Sem entender a complexidade do
problema, ao analisar uma tcnica especfica de deteco, impossvel ter a compreenso
necessria da abordagem apresentada, identificando em que momento o mecanismo de
deteco poder falhar.
Tabela 4.2. Exemplos de ofuscao textual
Tipo de Spam

Mecanismo
simples de
envio

Caractersticas

Objetivos

Normalmente ocorre o envio de milhares, ou Atingir o maior nmero possvel de


mesmo dezenas de centenas de milhares de
destinatrios no menor tempo
e-mails.
possvel, sem se preocupar com erros
de transmisso.
Envio sem tratamento de erros.
Transmisso da mensagem sem tentativa de
reenvio em caso de erro.
Comum em casos de computadores
comprometidos por malwares que
disseminam spam.
Sistemas de envio de e-mail sem robustez.
Poucas linhas de cdigo so necessrias para
o mecanismo de envio.
Baixo custo computacional para envio da
mensagem.

Mecanismos de envio mais robustos.


Dificultar a deteco do spam contra
Ocorre o tratamento de erros ou
tcnicas que so eficazes contra
retransmisso
da
mensagem.
mecanismos simples de envio.
Envio com
tratamento de Muito comum em casos de e-mail marketing. Possibilitar a validao de endereos
de e-mail, excluindo aqueles que
erros
retornam com erro, facilitando o
controle do processo de spamming.
Ocorre a falsificao do endereo IP ou do Violar os mecanismos baseados em
endereo de e-mail do remetente da
deteco de spam atravs do endereo
Envio com
mensagem.
de e-mail ou IP do remetente.
substituio No caso da falsificao do e-mail, a tcnica Enganar a vtima, fazendo-a acreditar
de remetente
possvel devido s limitaes do protocolo
que o e-mail foi encaminhado de uma
ou
SMTP.
fonte confivel.
transmissor Muito comum em casos de phishing de email.

Envio de spam atravs de computadores Ocultar a localizao do spammer, j


Envio atravs
de botnets

comprometidos por malwares,


consentimento dos seus usurios.

Livro-texto de Minicursos

156

sem

que o envio feito atravs de


computadores comprometidos de
terceiros.

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Tipo de Spam

Caractersticas

Objetivos

Grande escalabilidade da botnet, o que Atingir o maior nmero possvel de


dificulta a deteco do spam a partir do
endereo de origem.
Tambm se enquadra na categoria
mecanismo simples de envio.

destinatrios no menor tempo


possvel, atravs do envio massivo de
e-mails, devido alta escalabilidade
das botnets.

Servidores SMTP que permitem que Dificultar a localizao do spammer,

qualquer pessoa ou sistema se conecte


j que o envio feito atravs de
livremente, utilizando-os para a disseminao
servidores SMTP que pertencem a
de spam.
terceiros.
Envio atravs

Envio realizado sem o consentimento da Dificultar o bloqueio a partir do


de open relays
endereo IP de origem, devido
organizao responsvel pelo servidor SMTP
grande quantidade de servidores com
configurado como open relay.
esse tipo de vulnerabilidade na
Internet.

Insero proposital de palavras comuns em e- Enganar os classificadores baseados


Insero
mails que no so spam.
na ocorrncia de palavras mais
proposital de
comuns em mensagens de spam.
palavras
Tcnica tambm conhecida como ofuscao Enganar os classificadores baseados
textual.
na ocorrncia de palavras mais
Ocorre a troca, excluso ou insero comuns em mensagens de spam.
proposital de caracteres em palavras comuns
Troca ou
em spam.
insero
Mesmo com a troca dos caracteres em
proposital de
determinadas palavras, a compreenso
caracteres
humana no prejudicada.
Possibilidade de gerao de inmeras
variaes de uma nica palavra.
Considervel complexidade de deteco.

Contedo
falso

Texto bem convincente, com caractersticas Ludibriar o usurio do sistema de etextuais semelhantes a mensagens legtimas.
mail, convencendo-o a realizar
Normalmente tambm utilizado com a forja alguma ao que poder torn-lo
vtima de algum tipo de fraude.
de remetente.
Normalmente utiliza recursos hipertexto da
linguagem HTML para enganar as vtimas.
Classificadores baseados em caractersticas
textuais da mensagem muitas vezes no so
eficientes contra este tipo de spam.

Uso de
imagens

Texto da mensagem passa a ser embutido Burlar os mecanismos antispam


em imagens.
baseados em caractersticas textuais.
Um dos tipos de spam mais explorados na Nos casos de ofuscamento de
literatura.
imagens, o objetivo dificultar o
Pode ocorrer o uso de tcnicas de ofuscao
tratamento desse tipo de spam.
de imagens.
Tamanho mdio do spam de imagem dez
vezes maior do que o spam textual.
Consome mais recursos de armazenamento e
gera maior trfego na rede.
Necessita de tcnicas adicionais de OCR
(pr-processamento) para extrair o texto da
imagem para posterior processamento textual.

Uso de
recursos da

Seu uso mal-intencionado muito comum em No caso de phishing, o objetivo


casos de estelionato, como no phishing de email.

Livro-texto de Minicursos

157

ocultar informaes da vtima ou


confundi-la.

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Tipo de Spam

Caractersticas

Objetivos

linguagem
HTML

E-mail
marketing

Normalmente encaminhado atravs de Realizar campanhas publicitrias por


MTAs robustos.
e-mail, usando assuntos que podem
ser do interesse de apenas alguns
Geralmente o envio de e-mails realizado
usurios.
com o tratamento de erros.
No h unanimidade na classificao desses Nem sempre o objetivo primrio
desses e-mails causar problemas ao
e-mails por parte dos usurios (se spam ou
usurio e administradores de
no-spam).
servidores de e-mail.
A maioria desses e-mails permite que o
usurio remova seu endereo da lista de
envio.

Com o objetivo de aumentar a compreenso sobre o problema e complexidade do


spam, a seo 4.3 apresentou as principais tcnicas de disseminao utilizadas pelos
spammers, com o objetivo de facilitar a anlise das tcnicas de classificao de e-mails
que sero apresentadas nas prximas sees.

4.4. Principais tcnicas utilizadas para deteco de spam


Diante das tcnicas mais utilizadas para a disseminao de spam, vrias propostas
foram criadas prometendo solucionar ou mitigar o problema. Esta seo apresentar as
principais tcnicas encontradas na literatura.
4.4.1. Tcnicas de deteco de spam baseadas em regras, polticas ou protocolos
a) Whitelists e Blacklists
O exemplo mais comum de regra para bloqueio de spam o uso de listas de bons
(whitelists) e maus (blacklists) remetentes. Basicamente, a regra consiste em aceitar ou
rejeitar todo e-mail, domnio ou IP contido nessas listas. No caso das whitelists, h a
possibilidade de liberar o e-mail destinado a caixa de entrada do usurio sem precisar
passar pelos demais mecanismos e classificadores, agilizando o processo de entrega e
diminuindo a carga de processamento das mensagens no MTA de destino. Este tipo de
configurao, entretanto, pode ser um risco para a segurana por aceitar qualquer
mensagem de endereos que estejam na whitelist. Da mesma forma so utilizadas as
blacklists para o bloqueio das mensagens. A Figura 4.9 ilustra o funcionamento dessas
listas.
Na Figura 4.9 o e-mail que no spam enviado por um remetente que consta na
whitelist do MTA de destino, sendo entregue diretamente ao MUA do usurio sem
qualquer tipo de processamento da mensagem. Uma das vantagens do uso de whitelists
evitar o bloqueio indevido e reduzir o custo computacional para o processamento de emails de fontes confiveis. Entretanto, se esses remetentes confiveis estiverem
comprometidos por algum tipo de malware, poder representar um srio risco segurana
do servidor de seus usurios e redes as quais estiver conectado.
Na Figura 4.9 no exemplo em que um spam encaminhado, o endereo do
spammer est presente na blacklist e, portanto, a mensagem bloqueada. O uso de
blacklists til para o bloqueio de fontes de spam conhecidas.
O uso destas listas, apesar de parecer eficiente, possui vrias limitaes e o seu
uso recomendado somente em ltimo caso. O bloqueio do endereo IP ou domnio pode
Livro-texto de Minicursos

158

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

causar problemas quando o remetente utiliza o servidor de SMTP de algum provedor (e.g.
Yahoo, Gmail etc.), pois acaba por bloquear todos os remetentes que o utilizam. J o
bloqueio do e-mail do remetente pode ser ineficiente, visto que o mesmo pode ter sido
forjado (veja a seo 4.3.1.c).
No caso do phishing (seo 4.3.2.c) a origem da mensagem (e.g. endereo IP,
URL alvo do phishing, e-mail forjado etc.) costuma mudar constantemente para evitar
seu rastreamento. Alm disso, a dificuldade de administrao dessas listas pode se tornar
muito complexa, pois o fluxo de mensagens pode ser muito intenso no servidor SMTP
onde a filtragem realizada. Assim, esta abordagem geralmente ineficiente [2].

Figura 4.9. Funcionamento de whitelists e blacklists.


b) Mecanismos antispam baseados em palavras-chave
De modo similar as blacklists, tambm possvel bloquear e-mails que contenham
determinadas palavras no corpo da mensagem. As palavras inseridas na lista de palavraschave podem fazer uso de expresses regulares para identificar algumas variaes de
strings de caracteres.
Na figura 4.10 h um exemplo de palavras-chave utilizadas no bloqueio de spam.
De acordo com Jargas, A. M. [44], uma expresso regular um mtodo formal de se
especificar um padro de texto. A expresso, quando aplicada em um texto qualquer,
retorna sucesso caso este texto obedea a todas as suas condies. Na Figura 4.10, entre
colchetes esto os caracteres (expresso regular) que podem ocorrer em determinada
posio da string. Apesar de ser um exemplo simples, a complexidade das expresses
regulares pode ser muito maior, sendo muito til no momento de compor essas listas de
palavras, abrangendo um nmero considervel de variaes de uma mesma string de
caracteres. Entretanto, sem a percia adequada, o uso de expresses regulares pode causar
o bloqueio indevido dos e-mails.
O bloqueio a partir de palavras-chave deve ser utilizado somente em ltimo caso
ou de maneira paliativa, por exemplo, bloqueando um spam que no est sendo detectado
pela tcnica de classificao textual, de forma temporria, usando assunto da mensagem
ou alguma palavra ou frase no corpo do e-mail para selecionar o alvo do bloqueio. Como
esse tipo de bloqueio no considera o contexto da mensagem como um todo e no calcula
Livro-texto de Minicursos

159

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

nenhum tipo de probabilidade da mensagem ser ou no spam, a insero de palavras na


lista de bloqueio deve ser feita com bastante cautela, a fim de evitar o bloqueio indevido
de mensagens.

Figura 4.10. Bloqueio por palavras-chave.


c) Greylisting
Em configuraes mais rudimentares de spam a maioria das mensagens enviada
atravs de programas pouco robustos, tentando atingir o mximo de destinatrios
possveis em um determinado tempo (seo 4.3.1.a). No dispondo de um MTA completo,
as mensagens de spam que no fossem aceitas pelo servidor de destino no eram
colocadas em fila para reenvio posterior. Isso muito comum atualmente, em
computadores comprometidos em uma botnet para envio de spam (seo 4.3.1.d). Alm
disso, para evitar seu rastreamento, comum o spammer no possuir nenhum domnio
registrado em seu nome. Esse fato levou criao de diversas outras tcnicas baseadas
em listas, como o greylisting [45] e o SPF (Sender Policy Framework) [46].
A greylisting (Figura 4.11) consiste numa recusa inicial da mensagem recebida
pelo MTA de destino (evento 1), supondo que o spammer no dispe de um MTA
completo que reenviar a mensagem em caso de falha na entrega. O endereo do
remetente colocado temporariamente na greylist, onde permanecer por um tempo
determinado aguardando o reenvio da mensagem (evento 2). O servidor SMTP de destino
enviar uma mensagem de erro (evento 3) informando que a mensagem foi colocada na
greylist. Na origem, se o MTA estiver configurado devidamente para reprocessar as
mensagens, o e-mail colocado numa fila para reenvio (evento 4). Na nova tentativa de
envio da mensagem, o servidor SMTP de destino far a checagem do endereo do
remetente, que desta vez estar na greylist, aceitando a mensagem (evento 5). O tempo
que os endereos permanecem na greylist e o tempo que em que ocorre uma nova tentativa
de envio da mensagem, correspondendo a um detalhe de configurao dos servidores.
Levine, J. R. [47] cita vrias situaes em o greylisting pode falhar, por exemplo:
(1) Perda de e-mails legtimos, caso o MTA de origem no esteja configurado para
reenviar mensagens com falha na entrega;
(2) Atraso na entrega de e-mails (tempo entre o primeiro e segundo envio), o que se
agrava dependendo da configurao do MTA de origem;
(3) Mquinas de envio de spam mais robustas podem suportar o reenvio de
mensagens, o que inviabiliza o uso desta tcnica (seo 4.3.1.b).
Livro-texto de Minicursos

160

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Figura 4.11. Cenrio de uso de Greylisting.


d) Framework com Poltica de Remetente (SPF - Sender Policy Framework)
O SPF um padro aberto que especifica um procedimento para prevenir a
substituio do remetente do e-mail (seo 4.3.1.c envio com substituio de remetente
ou transmissor). Mais especificamente, a verso atual do SPF (SPFv1 ou SPF Clssico)
protege o campo envelope sender address (tambm conhecido como return-path), que
o campo utilizado pelos MTAs de origem e destino na entrega das mensagens, inclusive
nos casos de erro na entrega do e-mail e retorno ao remetente [46].

Figura 4.12. Cenrio de uso de SPF.


O SPF funciona de modo que o proprietrio de um domnio possa especificar quais
servidores so utilizados para enviar e-mails. Para que o procedimento funcione,
primeiramente o proprietrio do domnio remetente deve publicar um registro SPF no
DNS (Domain Name System), o qual contm o endereo de um servidor autorizado a
enviar e-mail em nome do remetente. Alm disso, o servidor de destino deve fazer a
checagem desse registro, rejeitando a mensagem caso essa no seja originada em um
endereo especificado na poltica SPF. Uma vez que a autenticidade do domnio do
servidor do remetente confirmada, este poder ser adicionado a alguma lista ou sistema
de reputao [46]. A Figura 4.12 ilustra o funcionamento desta tcnica.
Atualmente, sabido que boa parte dos spammers possui os recursos de um MTA
completo (seo 4.3.1b), com a possibilidade de reenvio da mensagem em caso de falha

Livro-texto de Minicursos

161

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

(ou na recusa da primeira mensagem pela greylisting), ou mesmo publicando o registro


SPF do seu servidor de e-mail (de onde o spam enviado), tornando esses mecanismos
ineficazes na maioria dos casos [9, 47]. Um bom exemplo da limitao da proposta do
SPF o spam comercial enviado por empresas de e-commerce, onde as mensagens
publicitrias, na maioria das vezes, so encaminhadas atravs de servidores de e-mail
completos (que podem, inclusive, possuir registros SPF publicados). Alm disso, nem
todos os servidores de domnios confiveis (e.g. bancos, rgos governamentais,
empresas, etc.) possuem seus registros SPF publicados, no impedindo que terceiros malintencionados enviem e-mails em nome desses domnios.
e) Tcnicas Baseadas em Assinatura
Vrias tcnicas baseadas na assinatura das mensagens foram desenvolvidas para
mitigar o problema do spam. Uma das mais conhecidas, o DKIM (Domain Keys Identified
Mail), define um mecanismo pelo qual as mensagens de e-mail podem ser assinadas
digitalmente, permitindo que um domnio assinante reivindique a responsabilidade pela
introduo da mensagem no fluxo de e-mails. Os destinatrios da mensagem podem
verificar a assinatura solicitando a chave pblica diretamente ao domnio assinante e
assim confirmar que a mensagem foi verificada por algum em posse da chave privada
para o domnio remetente [48].
Em outras palavras, o DKIM uma especificao do IETF (Internet Engineering
Task Force) que define um mecanismo para autenticao de e-mail baseado em
criptografia de chaves pblicas. Atravs do uso do DKIM (Figura 4.13) uma organizao
assina digitalmente as mensagens que envia, permitindo ao receptor confirmar a
autenticidade das mensagens que recebe. Para verificar a assinatura digital, a chave
pblica obtida por meio de consulta ao DNS do domnio do remetente. Ao contrrio do
SPF, que verifica somente o envelope, o DKIM verifica o cabealho da mensagem.
Assim, o DKIM impe um custo computacional adicional para processar cada mensagem,
tanto para o MTA remetente quanto para o receptor [49].
O DKIM, alm de verificar a assinatura da mensagem, tambm possibilita a
verificao da integridade do contedo do e-mail. A autenticao da mensagem auxilia
no controle de spam e phishing de e-mail [50].
Antes do DKIM, houve outros quatro padres IETF para assinatura de e-mails
[50], como listado a seguir:

PEM - Privacy Enhaced Mail (1987) [51];

PGP Pretty Good Privacy (1991), padronizada mais tarde como OpenPGP [52];

MOSS - MIME Object Security Services (1995), originado do PEM [53];

S/MIME Secure MIME, desenvolvido de forma independente pela RSA Security


e mais tarde padronizado pela IETF [54].

De modo geral, as tcnicas de autenticao de e-mails baseadas em assinatura


poderiam ser a soluo definitiva para problemas como o phishing de e-mail. Entretanto,
a falta de padronizao da tcnica de autenticao utilizada no servio de e-mail e a noobrigatoriedade do uso da mesma impede a soluo do problema. Na verdade, o prprio
protocolo SMTP deixa a desejar quando tolera a ausncia de uma tcnica de autenticao.
Essas tcnicas consumem recursos computacional e configuraes adicionais no sistema
de e-mail e, portanto, nem sempre so adotadas. Alm disso, um remetente (MTA de
origem) que no assina suas mensagens no necessariamente uma fonte no-confivel,
mas a recusa de mensagens desta fonte nem sempre possvel. O mesmo vale para as
Livro-texto de Minicursos

162

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

mensagens autenticadas, que mesmo que assinadas digitalmente, no so necessariamente


de fontes confiveis. A impossibilidade de verificao da autenticidade de todas as
mensagens, somada ao fato que a assinatura em uma mensagem no significa que a
mesma no seja spam, faz com que as tcnicas de autenticao no representem a soluo
definitiva para o problema.

Figura 4.13. Cenrio de uso de DKIM.


4.4.2. Tcnicas de deteco de spam baseadas reconhecimento de padres
Reconhecimento de padres consiste na descoberta automtica de padres nos
dados, usando algoritmos computacionais, que permitem classificar os dados em
diferentes categorias [55]. Tcnicas de reconhecimento de padres so muito utilizadas
no combate ao spam. Em se tratando de deteco de spam, algumas das tcnicas ou
classificadores mais utilizados so as abordagens Bayesianas, Redes Neurais, rvores de
Deciso e SVM (Support Vector Machines).
De um modo geral, as abordagens propostas para deteco de spam podem ser
divididas em dois tipos:
(1) As que utilizam essencialmente a frequncia de ocorrncia de palavras como
caracterstica;
(2) As que se utilizam de vrias caractersticas presentes no e-mail como informaes
de cabealho, uso de recursos especficos da linguagem HTML etc.
Tambm possvel encontrar propostas que combinam ambas [56]. Dentre as
propostas que utilizam a frequncia de palavras para a classificao de e-mails, os filtros
bayesianos esto entre os mais comuns. A teoria da deciso bayesiana uma abordagem
estatstica fundamental para o problema de classificao de padres [40], sendo o
classificador Nave Bayes (NB) um dos mais utilizados para a classificao textual [57]
(inclusive para a classificao de e-mails). Uma das razes a sua simplicidade, o que o
torna fcil de ser implementado e com boa taxa de acerto, comparando-se a outros
algoritmos mais elaborados de aprendizagem de mquina [58]. O algoritmo NB tem sido
um dos mais utilizados em propostas comerciais de filtros antispam [59].
Livro-texto de Minicursos

163

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Chen, C. e seus colegas [59] fizeram uma comparao de trs propostas que
utilizam NB [60, 61, 62] e mais quatro abordagens tradicionais (SVM, C4.5, NB e KNN).
De um modo geral, a proposta apresenta alguns aprimoramentos no algoritmo NB,
tentando comprovar que melhor utilizar o algoritmo NB aprimorado do que mtodos
tradicionais de classificao (incluindo o prprio NB). Porm, ou autores no apresentam
algumas informaes essenciais, tais como taxa de falsos positivos.
Drucker, H., Wu, S., e Vapnik, V. N [63] apresentaram um trabalho que, embora
seja antigo para rea, apresenta vrios conceitos muito utilizados em tcnicas baseadas na
deteco por frequncia de ocorrncias de caracteres, tais como TF (Term Frequency)
quantidade de vezes que uma palavra aparece em um documento, TF-IDF (Term
Frequency Inverse Document Frequency) que define a importncia de um termo
dentro de uma coleo de documentos, e Stop List lista de termos que no devem
aparecer no vetor de caractersticas. Adicionalmente, tambm apresentam vrias tcnicas
muito utilizadas para avaliar a performance do classificador e validao dos resultados,
alm de fazer um estudo do uso do classificador SVM em comparao com outros
algoritmos de classificao (Ripper, Rocchio e Boosting Decision Trees).
Alm das abordagens mais tradicionais de reconhecimento de padres utilizadas
para a deteco de spam, algumas propostas buscam a soluo dos problemas sob uma
outra perspectiva. Ma, W. e seus colegas [64], por exemplo, exploram a deteco de spam
atravs de seleo negativa, ou seja, uma linha de reconhecimento de padres para
casos em que no houve uma etapa de aprendizado (AMO Artificial Immune Systems).
Uma das vantagens seria a pro-atividade na deteco, sem necessitar uma etapa de
treinamento, o que quase sempre necessrio nas abordagens antispam tradicionais.
Outra tcnica que visa facilitar a etapa de aprendizado o co-training, que permite
a construo de um classificador com um nmero relativamente pequeno de amostras
rotuladas [65]. Aps a construo desse primeiro classificador de taxa de acerto fraca,
esse mesmo classificador vai se tornando mais robusto com e-mails no rotulados. O
princpio base desta tcnica considerar que um classificador fraco, feito com amostras
rotuladas, pode encontrar amostras muito similares em uma base no rotulada. Ento, vo
sendo adquiridas novas amostras rotuladas para alimentar a base e refazer seu
treinamento. Kiritchenko e Matwin [66] utilizaram co-training para a classificao de emails, realizando 50 treinamentos na base, medida que mais e-mails eram classificados
a taxa de acerto aumentava. No primeiro treinamento foi possvel classificar corretamente
90% das mensagens com o classificador SVM, mas aps 50 iteraes de treinamento o
resultado aumentou para 94%.
Dentro desta mesma rea, alguns trabalhos propuseram solues para combater as
tcnicas de ofuscao textual utilizadas pelos spammers. Braga e Ladeira (2007)
propuseram uma abordagem que considera a dinamicidade do spam, ou seja, a quantidade
de variaes que costumam surgir visando burlar os mecanismos de deteco [67]. A
abordagem composta por trs mdulos, com funo de pr-processamento, classificao
e adaptao. A etapa de pr-processamento transforma a mensagem em valores
numricos, fazendo uso de rvores de Huffman adaptativas (rvores FGK) e um algoritmo
de ordenao das mensagens com base na representao vetorial das palavras que a
compe. A vantagem de utilizar uma rvore adaptativa a sua capacidade de acrescentar
novas folhas sem precisar criar uma nova rvore desde o incio. Na etapa de classificao
foi utilizado o classificador SVM. A adaptao das mensagens feita atravs de uma
tcnica chamada envelhecimento exponencial. Para retreinar o classificador no tempo
i+1, so utilizadas novas mensagens que chegaram at o tempo i+1, porm nem todas as
Livro-texto de Minicursos

164

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

mensagens do tempo i so escolhidas, dando maior importncia s mensagens mais


recentes.
O nmero de mensagens escolhidas em cada conjunto treinado decresce
exponencialmente, e a periodicidade com que ocorre cada treinamento pode ser ajustada.
O interessante dessa abordagem que a mesma considera que as mensagens de spam
mudam ao longo do tempo, possibilitando que, a cada novo treinamento, seja dado uma
maior importncia s mensagens mais recentes. Alm disso, a abordagem tambm faz uso
de um modelo numrico (rvore de Huffman Adaptativa - FGK), o que acelera todo o
processo se comparado ao uso de texto na aplicao das tcnicas propostas.
Uma outra proposta parecida foi apresentada por Zhou et. Al [69], tambm
fazendo uso de rvores FGK [68]. Os resultados mostram que o modelo com rvore de
Huffman Adaptativa levou vantagens sobre outras sete tcnicas de classificao em oito
dentre dez testes realizados. Seguindo a mesma linha de utilizar mtodos de compresso
para a deteco de spam em geral, alguns trabalhos propuseram o uso do Modelo de
Markov [69, 70, 71, 72]. Modelos de compresso estatsticos podem ser utilizados para
estimar a probabilidade de uma certa sequncia de caracteres, podendo ser aplicados
como classificadores Bayesianos.
Lee e Ng [74] utilizaram um mtodo que faz uso do Modelo de Markov para o
desofuscamento de palavras em spam, o qual eles chamam de rvore Lxica do Modelo
Escondido de Markov (LT-HMM Lexicon Tree Hidden Markov Model) [73]. A
abordagem integra ao Modelo de Markov um dicionrio (lxico) e informaes de
contexto. Por exemplo, para que a palavra ofuscada mortg3ge seja convertida para
mortgage (hipoteca), necessrio saber que mortgage uma palavra do idioma ingls. O
dicionrio construdo atravs do modelo proposto, ou seja, da rvore lxica que na
verdade uma rvore de prefixos. Os resultados apresentados comprovam que a tcnica
eficiente para desofuscar palavras, porm a abordagem possui um ponto fraco que
utilizar apenas os caracteres da tabela ASCII, deixando de lado os milhares de caracteres
que esto na tabela Unicode. Alm disso, a LT-HMM possui um nmero muito grande de
estados (110.919 estados), o que no muito conveniente para aplicaes prticas.
Sculley et al. [75] buscaram solucionar o problema da ofuscao textual com o
uso de algoritmos de busca aproximada. Uma das motivaes para o uso desse tipo de
tcnica que elas tm sido aplicadas com sucesso em reas de biologia computacional
com dados genmicos, j que as strings formadas por esse tipo de dados possuem
inseres, substituies e excluses de caracteres causadas por motivos evolucionais,
fazendo semelhana com o que ocorre em termos comuns em spam. A tcnica utilizada
para fazer a busca aproximada de strings conhecida como k-mers. O problema do uso
desse tipo de tcnica o custo computacional necessrio para realizar a busca. Para
resolver esse problema, foi proposto o uso de variantes desse mtodo que utilizam os
kernels gappy e wildcard, juntamente com o classificador perceptron with margins. Os
resultados apresentados, apesar de interessantes, foram obtidos em uma base de spam que
no possua muitas variaes de caracteres, se comparado ao grande nmero de
possibilidades dentro do padro Unicode (segundo o artigo, havia somente 25 variaes
da palavra 'viagra' com uma variedade mnima de caracteres visualmente semelhantes).
Alm disso, apesar de ser mencionado a importncia de um bom desempenho para esse
tipo de aplicao, no apresentado nenhum resultado que mostre a sua aplicabilidade
em um ambiente real de produo.
As tcnicas de reconhecimento de padres esto entre as mais utilizadas e mais
pesquisadas na literatura relacionada ao combate ao spam. Devido variedade de tcnicas
existentes, h vrios trabalhos que analisam ou testam vrias dessas tcnicas na

Livro-texto de Minicursos

165

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

classificao de e-mails [76, 77]. Embora bastante promissores, os classificadores mais


utilizados no combate ao spam passam a ser do conhecimento dos spammers, que podem
explorar determinadas limitaes em etapas importantes da classificao, tal como a
aprendizagem. Por exemplo, um spammer pode enviar mensagens que contenham
propositalmente palavras frequentes em e-mails que no so spam, deste modo
proporcionalmente estas palavras gerariam falsos positivos, se essas mensagens forem
includas na base de treinamento. Esta tcnica conhecida como evasion [78], costuma ser
utilizada em outras aplicaes relacionadas segurana, como sistemas IDS (Intrusion
Detection System) [79].
Embora no haja um consenso sobre qual a melhor tcnica de reconhecimento
de padres para classificao de e-mails, porque mensagens de spam no se enquadram
em alguns casos muito especficos (e.g. tcnicas da seo 4.2), vrias abordagens desta
rea conseguem classificar corretamente a maioria das mensagens, justificando sua
aplicao nas ferramentas disponveis atualmente.
As tcnicas baseadas em reconhecimento de padres geralmente so indiferentes
em relao s tcnicas de spam apresentadas na seo 4.3.1, porm esto fortemente
relacionadas s tcnicas da seo 4.3.2. Como a aprendizagem de mquina se tornou algo
popular entre as ferramentas antispam, vrias das tcnicas da seo 4.3.2 foram criadas
especialmente para prejudicar a performance dos classificadores, aumentando o nmero
de falsos positivos e falsos negativos.
4.4.3. Tcnicas de deteco de spam baseadas em redes sociais
Algumas abordagens mais recentes de deteco de spam vm explorando o
sucesso crescente das redes sociais para obter informaes que possam ajudar na
classificao de mensagens. Li e Shen [80] sugerem que as informaes obtidas em redes
sociais (e.g. assuntos de interesse, esportes, religio, poltica etc) podem servir de guia
para decidir se as informaes contidas em um determinado e-mail devem ser
consideradas spam para um usurio ou no. Um e-mail com propaganda usa as palavraschave perca peso, este tema pode ser considerado spam para um grupo e muito interesse
para outro grupo com obesos, por exemplo. Assim, o interesse manifestado nas redes
sociais ajudaria a separar os dois grupos e classificar corretamente os e-mails para cada
caso.
A abordagem aplicada em MailRank [81] no utiliza uma rede social especfica
para a coleta de informaes, mas prope a criao de uma espcie de rede de usurios
de e-mail, que seria uma forma de identificar quem se comunica com quem, formando
uma espcie de rede social de comunicao baseada e-mails. Atravs de um algoritmo de
reputao, um servidor central identifica quais usurios so ou no so spammers. Por
exemplo, se um usurio possui uma reputao alta (no spammer) e encaminha um email para um outro usurio, o destinatrio pode ganhar uma pontuao que o faz ser
rotulado como no-spammer. Embora interessante, o ponto fraco da proposta que os
resultados apresentados so baseados em um cenrio simulado. Como esse ambiente no
simula alguns problemas que podem existir em um cenrio real (e.g. propagao de
malwares, bots etc.) os resultados podem no ser muito conclusivos.
Do mesmo modo que as informaes obtidas atravs de redes sociais podem ser
teis no combate ao spam, spammers ou phishers, pode-se fazer uso dessas informaes
para realizar ataques direcionados. Informaes simples como orientao sexual e at
mesmo data de aniversrio do usurio podem disparar um e-mail com felicitaes e
propagar spam ou malwares. Um estudo realizado na Universidade de Michigan utilizou
informaes de 7 mil usurios do Facebook, identificou que muitos usurios que
Livro-texto de Minicursos

166

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

possuam um perfil com informaes restritas, possuem perfis em outras redes sociais que
disponibilizam publicamente algumas informaes. Os resultados mostraram que um
spammer poderia atingir 85% dos usurios com um ataque direcionado, iniciando pelo
Facebook e utilizando outras redes sociais, conforme for o seu interesse [82].
Embora as redes sociais tenham informaes relevantes para o combate ao spam,
ainda so muito recentes se comparado ao servio de e-mail, que se tornou essencial
maioria das pessoas h muito tempo. Nem todos os usurios da Internet possuem cadastro
em redes sociais, assim em muitos casos no possvel a coleta dessas informaes. Alm
disso, a grande variedade de redes sociais, com diferentes finalidades, diferentes formas
de funcionamento e identificao na mesma, isto tudo pode se tornar um complicador
quando for se buscar essas informaes.
4.4.4. Tcnicas de deteco de spam de imagem
Conforme apresentado na seo 4.3.2, o spam de imagem uma tcnica utilizada
pelos spammers para disfarar mensagens de texto usando imagens e, portanto, tornando
impossvel a sua interpretao por classificadores textuais. Uma das solues para esse
tipo de problema o uso de tcnicas de OCR (Optical Character Recognition)
Reconhecimento tico de Caracteres, que faz a converso de imagens em texto (com uma
fase pr-processamento) e depois as analisa usando classificador textual.
As tcnicas utilizadas para tratar spam de imagem tambm esto relacionadas
rea de reconhecimento de padres (seo 4.4.2), porm utilizam tcnicas mais
especficas. Estas tcnicas esto relacionadas principalmente ao pr-processamento das
imagens, que deve ser eficiente, no intuito de facilitar o reconhecimento dos caracteres
que sero entrada de um classificador de spam em formato textual.
Uma das tcnicas mais utilizadas para a deteco de spam de imagem o
histograma [10, 17, 18, 19], representao grfica da distribuio dos dados no espectro
das tonalidades da imagem. Em imagens de spam poderia ser utilizado um histograma de
cores, por exemplo, identificando padres de histogramas para imagens de spam e para
imagens de e-mails legtimos. H ainda abordagens que exploram outros atributos bem
especficos das imagens, como ser apresentado a seguir.
Li et al. [10] apontam como principal problema a deteco de imagens com um
fundo mais complexo (e.g. texto sobreposto a uma fotografia), pois nesses casos as
caractersticas globais da imagem, tais como cor, textura e formato, so similares a
imagens de e-mails legtimos e, portanto, diminuindo a taxa de deteco. De acordo com
os autores, embora as caractersticas globais possam mudar depois do uso das tcnicas de
ofuscamento utilizadas pelos spammers, as caractersticas locais (SIFT - Scale-Invariant
Feature Transform, MSER - Maximally Stable Extremal Regions, Gabor wavelet, etc),
permanecem inalteradas. Logo, as caractersticas locais que focam em detalhes da
extrao de caractersticas da imagem so essenciais para a deteco de spam de imagem.
Biggio, B. e seus colegas [20] consideram que o texto contido em uma imagem
de spam possui a mesma essncia de um texto contido em um spam textual. Logo, se for
resolvido o problema de extrao do texto da imagem, na sequncia possvel aplicar
tcnicas de deteco de spam textual (e.g. filtro bayesiano) que a taxa de acerto ser boa.
A abordagem proposta possui uma etapa de pr-processamento onde o texto inserido nas
imagens convertido em texto puro. A etapa de treinamento realizada aps o prprocessamento imagens convertidas em texto. Os resultados mostram que esse tipo de
estratgia eficiente somente nos casos em que as imagens no tiveram algum tipo de
ofuscamento. Para as mensagens com ofuscamento, a deteco do spam feita
Livro-texto de Minicursos

167

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

considerando que a imagem que oferece algum tipo de dificuldade para o OCR spam.
O parmetro utilizado para detectar a dificuldade imposta ao OCR foi medido atravs da
complexidade perimtrica da imagem.
Os autores Biggio, B. e seus colegas [21], em outro artigo, consideram que as
abordagens da literatura para spam de imagem esto focadas somente no tratamento das
imagens do spam, no se preocupando na identificao das imagens ofuscadas. A
proposta apresentada uma continuao do trabalho anterior [20], onde o foco maior est
na identificao dessas imagens. A identificao feita com base num valor de rudo,
linearizando numa escala de 0 (sem rudo) a 1 (com muito rudo). A novidade em relao
abordagem anterior que a complexidade perimtrica, que geralmente utilizada para
uma imagem inteira, passa a ser utilizada em diversos pontos da imagem, sendo possvel
identificar caracteres quebrados ou agregados ao rudo. Foram identificados padres para
(i) caracteres sem rudo; (ii) caracteres quebrados com pouco rudo no fundo; (iii) dois ou
mais caracteres conectados pelo rudo e (iv) imagens nas quais o texto colocado em
cima de um fundo irregular.
Por ser um problema complexo, existe uma grande variedade de propostas para
solucionar o spam de imagem, cada uma tentando e explorando algum aspecto especfico
do problema. Existem ainda, abordagens que propem a explorao de ambas as
caractersticas, textuais e das imagens [17]. De um modo geral, pode-se dizer o spam de
imagem (seo 4.3.2) um dos tipos mais explorados por spammers e estudados
atualmente. As justificativas para isso podem ser o grande percentual de ocorrncia desses
e-mails em relao ao total global de spam (alta relevncia do problema) e a grande
variedade de tcnicas de reconhecimento de padres utilizadas para o processamento de
imagens. Alm disso, diferente de outras tcnicas utilizadas na rea, as quais visam a
deteco de spam em geral, as abordagens existentes para a deteco deste tipo de spam
geralmente buscam combater uma tcnica bem especfica de disseminao de spam
(seo. 4.3.2.d).
4.4.5. Outras tcnicas de deteco de spam
H ainda algumas abordagens onde a principal contribuio no est totalmente
relacionada a uma das categorias apresentadas anteriormente. Por exemplo, abordagens
onde o principal fator para a deteco est relacionado a uma questo de infraestrutura ou
baseado na colaborao de usurios ou outros servidores, em alguns casos utilizando uma
das tcnicas apresentadas nas sees anteriores.
Liu e seus colegas [83] propuseram uma infraestrutura antispam baseada em grid
computacional. A abordagem considera que um e-mail spam somente se for enviado
para um nmero grande de destinatrios, contabilizando o nmero de pessoas que
receberam o e-mail em uma base denominada CopyRank. Um grupo de servidores
configurado para atrair mensagens de spam, que passam por um filtro bayesiano
distribudo que encaminha as informaes aos computadores clientes. Supe-se que a taxa
de falsos positivos ser baixa uma vez que somente e-mails com um CopyRank alto
podero ser classificados como spam. A grid funciona com um plugin instalado no MUA
(Mail User Agent), que se conecta com o servidor mais prximo da grid toda vez que
recebe um e-mail. O cliente encaminha um checksum do e-mail recebido, e com base nele
o servidor atribui um CopyRank. Alm do CopyRank, o filtro bayesiano faz uma anlise
que indica se o e-mail ou no spam. Os servidores trabalham de forma cooperada para
manter uma tabela de CopyRanks.
Alm de propostas como a que foi apresentada por Liu et al., utilizando
reconhecimento de padres, uma base de reputao e grid computacional, h outras
Livro-texto de Minicursos

168

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

abordagens que so essencialmente baseadas em redes P2P e na colaborao dos usurios


para reportar spam [14, 15].
Apesar destas tcnicas serem inovadoras, assim como as apresentadas
anteriormente, tem bom desempenho enquanto no forem conhecidas pelos spammers.
Depois que se tornam publicas as tcnicas perdem eficcia porque os spammers inventam
maneiras de burlar seus mecanismos de identificao do spam. No caso de tcnicas
baseadas em reconhecimento de padres, por exemplo, os modelos podem ser regerados,
porm na prtica a situao parece ser uma batalha interminvel entre os desenvolvedores
de tcnicas de deteco de spam e os spammers.
4.4.6. Consideraes acerca das tcnicas de deteco de spam
Conforme apresentado nas sees 4.4.1 a 4.4.5, existe uma grande variedade de
tcnicas que buscam o combate ao spam. Essas tcnicas, com exceo daquelas que so
um objeto de pesquisas cientficas mais recentes, normalmente esto ou podem estar
incorporadas a ferramentas antispam utilizadas pelos administradores de sistema de email. O SpamAssassin, uma das ferramentas antispam mais conhecidas, utiliza redes
neurais e mtodos estatsticos de classificao bayesiana para atribuir um score que
representa a probabilidade de um e-mail ser spam ou no [43]. A deciso baseada num
limiar padro (threshold) que tambm pode ser ajustado pelo administrador do servio de
e-mail. Adicionalmente, tambm so utilizadas regras para auxiliar a classificao dos emails.
A Tabela 4.3 resume as principais vantagens e desvantagens das tcnicas de
deteco de spam apresentadas nesta seo. As vantagens e desvantagens apresentadas na
tabela no esto relacionadas somente eficincia dessas tcnicas em relao as tcnicas
de disseminao de spam apresentadas na seo 4.3. Mas, podem apresentar vantagens e
desvantagens relacionadas a aspectos funcionais, como dificuldade de gerenciamento ou
custo computacional.
Aps j terem sido abordadas as principais tcnicas utilizadas pelos spammers e
as principais tcnicas disponveis para deteco do spam, j possvel perceber que
nenhuma tcnica de deteco capaz de funcionar bem isoladamente. Uma anlise mais
detalhada sobre a relao de tcnicas de disseminao de spam e as tcnicas de deteco
ser apresentada na seo 4.5.
Tabela 4.3. Resumo das tcnicas de deteco de spam
Tcnica

Vantagens

Desvantagens

Whitelists e Blacklists Pode agilizar o processo de entrega


da mensagem em casos de no-spam.
Pode agilizar o processo de recusa da
mensagem em casos de spam.
Reduz o custo computacional
necessrio para analisar a mensagem.
eficiente contra fontes conhecidas
de spam.

As whitelists podem significar um


risco para a segurana do servidor.

Seu uso possui muitas limitaes.


ineficiente quando o remetente ou

IP de origem da mensagem
substitudo.
Impe dificuldade de gerenciamento
em servidores com grande fluxo de emails.

Filtros baseados em til em casos em que o classificador Uso deve ser feito com cautela, a fim
palavras-chave
falha em classificar um determinado
de evitar o bloqueio indevido de
spam de e-mail.
mensagens.
Sua
eficincia
pode
ser Uso da tcnica deve ser considerado
potencializada com o uso de
somente em ltimo caso ou de
expresses regulares.
maneira paliativa.
Livro-texto de Minicursos

169

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Tcnica

Vantagens

Desvantagens

Tcnica eficiente quando o spammer Perda de e-mails legtimos, quando o

Greylisting

no realiza o reenvio dos e-mails com


falha na entrega.

MTA de origem no faz o reenvio de


mensagens.
Possibilita atrasos na entrega de emails (entre o primeiro e segundo
envio).
ineficiente contra mquinas de
envio de spam mais robustas.

til contra alguns casos de phishing Ineficiente quando o spammer possui

SPF

de e-mail.

um registro SPF.
Frequente ausncia de registros SPF
publicados no DNS.

Tcnicas baseadas em Permitem confirmar a autenticidade Falta de padronizao da assinatura


assinatura
da mensagem.
no servio de e-mail.
til contra alguns casos de phishing Indisponvel em vrios servidores de
de e-mail.
e-mail, dado que o protocolo SMTP,
Algumas tcnicas permitem atestar a por padro, no exige o uso de uma
tcnica baseada em assinatura.
integridade do contedo do e-mail.
Aumenta o custo computacional para
envio do e-mail tanto na origem
quanto no destino da mensagem.
No garante que uma mensagem
autenticada seja de fonte confivel.
Tcnicas baseadas em Esto entre as tcnicas mais Os spammers costumam explorar as
reconhecimento
de
utilizadas na deteco de spam e mais
carncias de algumas das etapas da
padres
pesquisadas na literatura.
classificao para no serem
detectados por esse tipo de tcnica.
Apresenta variedade de tcnicas que
podem ser utilizadas.
A maioria das tcnicas necessita de
uma etapa de aprendizagem.
Conseguem bons resultados na
classificao, se comparado outras
tcnicas.
Tcnicas baseadas em Podem explorar o sucesso crescente Nem todos os usurios possuem
redes sociais
cadastros
em
redes
sociais,
das redes sociais para auxiliar a
impossibilitando
a
coleta
de
deteco de spam.
informaes
em
alguns
casos.
Algumas abordagens possibilitam a
classificao das mensagens com Variedade de redes sociais aumenta a
complexidade
da
busca
por
base na percepo e interesse do
informaes.
usurio sobre determinados assuntos.
Tipo de tcnica pouco explorada se
comparada s demais.
Tcnicas de deteco Tambm esto relacionadas rea de Focam somente em um tipo
de spam de imagem
reconhecimento de padres (rea
especfico de spam.
muito explorada na Cincia da Esto sujeitas a tcnicas de
Computao).
ofuscamento de imagens.
Esto entre as tcnicas mais
exploradas na literatura.
Outras tcnicas
deteco de spam

de Flexibilidade na criao de novas Podem ser facilmente burladas pelos


tcnicas.
spammers,
inviabilizando
sua
proposta,
uma
vez
que
normalmente
Podem utilizar aspectos de
no podem ser facilmente adaptadas
infraestrutura, tais como redes P2P,
quando h mudana nas tcnicas de
grid computacional, colaborao de
spam.
usurios na classificao etc.

Livro-texto de Minicursos

170

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

4.5. A eficincia das tcnicas de deteco


Esta seo apresenta uma anlise da relao entre as tcnicas de disseminao de
spam e as estratgias que podem ser utilizadas para mitigar o problema. Conforme
mencionado anteriormente, o objetivo fazer essa anlise sempre a partir da tcnica de
disseminao em vez de utilizar as tcnicas de deteco como ponto de partida, em
contraposio ao que convencionalmente feito na literatura [4, 22, 23, 24, 25, 26].
Esta anlise, a partir do ponto de vista da tcnica de disseminao, visa oferece
vantagens em relao a abordagem tradicional. Pois, quando a anlise realizada a partir
da tcnica de deteco, normalmente no apresentado previamente a grande variedade
de tcnicas que os spammers costumam utilizar no envio dos seus e-mails, causando a
falsa impresso de que a tcnica de deteco conseguir mitigar o problema como um
todo. Porm, quando a anlise realizada da tica da tcnica utilizada pelo spammer,
possvel identificar quais tcnicas antispam existentes podem ser eficientes contra aquele
spam e quais so ineficazes ou podem falhar.
4.5.1 Anlise das tcnicas
As tcnicas de disseminao (TD) mais importantes sero analisadas a seguir,
considerando-se as tcnicas antispam (TA) que podem ser utilizadas em cada caso. A
relao entre as tcnicas avaliada com um score que vai de 1 () at 5 (),
sendo o seguinte o significado dos scores.
Tabela 4.4. Scores utilizados na avaliao das tcnicas antispam.

A TA totalmente ineficiente em relao a TD.

A TA pouco eficiente em relao a TD.

A TA neutra em relao a TD.

A TA muito eficiente em relao a TD.

A TA totalmente eficiente em relao a TD.

A Tabela 4.5 sumariza a relao entre as tcnicas de disseminao (TD)


apresentadas na seo 4.3 s tcnicas antispam (TA) apresentadas na seo 4.4.
Em alguns casos, a TA no tem influncia positiva nem negativa em relao
tcnica de disseminao do spam. Esses casos (destacados com as estrelas slidas)
receberam trs estrelas. Por exemplo, as tcnicas baseadas em reconhecimento de padres
(e neste caso inclui-se a deteco de spam de imagem) no tem foco na forma de envio
da mensagem, mas receberam trs estrelas (avaliao neutra) devido a sua eficincia na
deteco do contedo da mensagem, independente da forma de envio. Ou seja, a avaliao
com uma ou duas estrelas (TA totalmente ou pouco ineficiente) seria imprecisa, pois
haver casos em que esta ser bem-sucedida, independente da tcnica de envio. J a
tcnica greylisting, por exemplo, no tem foco no contedo do e-mail mas poder ser
eficiente dependendo da tcnica de envio.
H outros casos em que a tcnica baseada no contedo normalmente est
associada forma de envio. Por exemplo, e-mails com o contedo falso normalmente
esto associados s formas de envio que facilitam o anonimato (e.g. atravs de botnets).
Nessas situaes, as tcnicas so avaliadas caso a caso ao invs de simplesmente
receberem a avaliao neutra.
Livro-texto de Minicursos

171

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

a) Mecanismo simples de envio


Os sistemas utilizados para disseminao de spam que se enquadram nesta
categoria se caracterizam pelo envio de e-mails atravs de mecanismos pouco robustos,
sem tratamento de erros ou reenvio de mensagens em caso de falha na entrega. Estas
caractersticas fazem com que o greylisting seja muito eficiente contra este tipo de spam.
Contudo, essa tcnica no recebeu cinco estrelas pois est sujeita a falhas em algumas
situaes. O greylisting pode falhar por haver MTAs de domnios de organizaes
confiveis que no esto configurados devidamente para tratar o reenvio no caso de uma
recusa inicial de um e-mail. Isto causaria o no recebimento de um e-mail que no spam.
O SPF no poder ser utilizado de maneira isolada para bloquear a mensagem,
que pode ser de uma origem confivel, provavelmente por no ter seus registros
publicados no DNS. Da mesma forma, o uso de assinaturas digitais tambm no
totalmente eficiente, pois depende que o remetente utilize tal recurso. Alm disso, o SPF
e a assinatura digital possuem foco na autenticao da mensagem, e no em caractersticas
especficas dos mecanismos simples de envio.
O bloqueio atravs de blacklists funcionar somente aps a identificao da
origem do spam, e o bloqueio por palavras-chave s ser til aps o conhecimento do
contedo da mensagem, que poder ser alterado propositalmente pelo spammer em pouco
tempo.
b) Envio com tratamento de erros
Quando o sistema de envio de spam capaz de reenviar mensagens em caso de
falha na entrega, tcnicas como o greylisting se tornam totalmente ineficientes. No caso
do SPF, alguns servidores podem possuir seus registros publicados no DNS,
inviabilizando o uso da tcnica. Blacklists poderiam ser muito eficientes contra as fontes
conhecidas de spam, uma vez que nesta categoria os servidores de origem do spam no
costumam mudar com tanta frequncia, porm, pode haver excees. O bloqueio por
palavras-chave s ter utilidade aps o conhecimento do contedo da mensagem, o que
ocorre somente depois que boa parte do spam recebido. No caso das assinaturas digitais,
como alguns servidores podem pertencer a organizaes confiveis, nada impede que o
e-mail seja assinado digitalmente pela empresa responsvel pelo envio, o que no muda
a possibilidade da mensagem ser spam.
c) Substituio de remetente
Quando o spammer utiliza artifcios como a substituio (forja) do remetente,
tcnicas como blacklists que utilizam o nome do domnio do remetente ou o endereo
completo do e-mail do remetente, so totalmente ineficientes, uma vez que o spammer
pode trocar o endereo do remetente quantas vezes quiser e utilizar um domnio de uma
entidade confivel (que no deve ser bloqueado) para parecer um e-mail legtimo. O
greylisting tambm indiferente em relao a esta tcnica, podendo falhar em muitos
casos.
Por outro lado, tcnicas como assinatura digital e SPF podem ser muito eficientes
contra este tipo de spam, falhando apenas em alguns casos. Por exemplo, se o MTA de
destino recebe um phishing que se apresenta como sendo de uma organizao confivel
(e.g. Bancos, rgos governamentais etc.), a TA pode atestar a validade do remetente da
mensagem atravs da chave pblica ou do registro SPF que foi publicado no DNS.
Contudo, estas tcnicas no receberam cinco estrelas, pois dependem que o remetente (ou
o domnio de uma organizao confivel, no caso do phishing) assine as mensagens, ou
tenha seus registros SPF publicados. Alm disso, as vtimas de phishing tambm podem
Livro-texto de Minicursos

172

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

ser enganadas quando utilizado um domnio muito parecido com o legtimo (e.g.
playpal.com em vez de paypal.com).
O bloqueio por palavras-chave, assim como no envio com tratamento de erros, s
ter utilidade aps o conhecimento do contedo da mensagem, normalmente depois que
o MTA de destino j recebeu boa quantidade do spam. Neste caso, entretanto, a gravidade
bem maior pois pode se tratar de uma ameaa como o phishing.
d) Envio atravs de botnets
O envio atravs de botnets tem muitas semelhanas com o mecanismo simples de
envio, porm, com um agravante o bloqueio por blacklists se torna ainda menos eficiente
visto que a origem das mensagens pode mudar mais ainda. Isto acontece porque uma
botnet uma rede de grande escalabilidade, formada por computadores comprometidos
de usurios espalhados pela Internet. O bloqueio por palavras-chave s ter utilidade aps
o conhecimento do contedo da mensagem, aps muito contedo spam ter sido recebido.
Por outro lado, a tcnica greylisting muito eficiente contra esse tipo de spam, visto que
os mecanismos de envio utilizados pelos spammers possuem as mesmas caractersticas
dos mecanismos simples de envio, ou seja, no tratam o reenvio da mensagem.
O uso de assinaturas digitais e SPF pode possuir boa eficincia contra este tipo de
envio, que caracterstico de mensagens como o phishing, onde o spammer encaminha
seus e-mails fraudulentos atravs de computadores comprometidos que esto espalhados
pela Internet, com o objetivo de dificultar a sua localizao.
e) Envio atravs de open relays
Quando se trata de spam enviado atravs de open relays, o uso de blacklists se
torna complicado pois o bloqueio de um IP do MTA de origem pode ocasionar tambm o
bloqueio de todas as mensagens de uma organizao confivel. O bloqueio de palavraschave, como de costume, possui pouca eficincia se utilizada isoladamente e s dever
ser considerado quando todas as outras tcnicas falharem. O greylisting ter pouca
eficincia visto que a open relay, que um servidor que normalmente pertence a uma
organizao confivel, normalmente capaz de reenviar a mensagem aps uma recusa
inicial. O SPF e a assinatura digital s tero utilidade nos casos j previstos anteriormente,
quando h a substituio de remetente e todos os pares da comunicao utilizam tais
recursos.
f) Insero proposital de palavras em mensagens de e-mail
Quando o spammer utiliza recursos textuais para enganar os classificadores de emails, normalmente o envio das mensagens mal-intencionado. Ou seja, no se trata de
um spam que permite que o usurio opte por no receber ou de uma simples divulgao
com fins publicitrios, feita por uma organizao confivel. Nesse caso, a tcnica de spam
baseada no contedo dificilmente utiliza somente recursos textuais ou visuais, podendo
vir acompanhada de alguma caracterstica que permita a variao do endereo de origem
da mensagem, a fim de dificultar ainda mais a sua deteco. Assim, o uso de blacklists
passa a ser pouco eficiente em quase todos os casos em que o spammer explora os
recursos disponveis no corpo da mensagem. O bloqueio por palavras-chave s ter
utilidade aps o recebimento (conhecimento) do contedo da mensagem.
As tcnicas baseadas em deteco de imagem so totalmente ineficientes contra
este tipo de tcnica, visto que neste caso o spammer usa subterfgios tcnicos para burlar
os mecanismos antispam, usando aspectos textuais da mensagem. J as tcnicas de
reconhecimento de padres com foco no texto da mensagem passam a perder sua
eficincia quando este tipo de tcnica utilizado.
Livro-texto de Minicursos

173

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

g) Troca ou insero de caracteres na mensagem de e-mail


A troca ou insero intencional de caracteres no e-mail provoca uma queda ainda
maior na performance dos classificadores textuais baseados em reconhecimento de
padres. Pois, as palavras que so utilizadas como caractersticas para determinar se um
contedo spam, normalmente so aquelas que so modificadas pelos spammers.
A existncia desse tipo de tcnica de insero intencional de caracteres, no faz
com que a rea de reconhecimento de padres seja desconsiderada na classificao textual
das mensagens. A reduo na sua eficincia ocorre principalmente nos classificadores
tradicionais (e.g. classificadores bayesianos e redes neurais), mas h trabalhos que
buscam o aprimoramento dessas tcnicas contra este tipo especfico de spam [67, 68, 69,
73, 74, 75].
h) Contedo falso
No caso de e-mails com contedo falso, como o phishing, as tcnicas tradicionais
de classificao textual so pouco eficientes, pois o contedo da mensagem se parece
muito com uma mensagem real. Alguns trabalhos buscam utilizar outros aspectos notextuais da mensagem como caracterstica, objetivando a classificao desse tipo de spam
[2, 84, 85, 86, 87] atravs de tcnicas de reconhecimento de padres.
No caso do phishing, tcnicas como o SPF e uso de assinatura digital podem ser
muito eficientes contra este tipo de spam se as organizaes confiveis, s quais o phisher
tenta personificar na sua mensagem, fazerem uso de tais recursos. Nesse caso, o receptor
da mensagem poderia atestar que o e-mail no foi enviado pela organizao que consta
como rementem no e-mail.
i) Uso de imagens
O uso de texto embutido em imagens inviabiliza qualquer tipo de tcnica baseada
no texto da mensagem. Por esse motivo, os filtros baseados em palavras-chave passam a
ser totalmente ineficientes. As tcnicas de reconhecimento de padres baseadas no
processamento textual tambm passam a ser totalmente ineficientes, exceto se houver
uma etapa de pr-processamento que extraia o texto da imagem para ento submet-lo s
tcnicas de classificao textual.
J as tcnicas especficas para a deteco de spam de imagem so muito eficientes
contra este tipo de tcnica. Os trabalhos presentes na literatura apresentam abordagens
que vo desde o pr-processamento da mensagem (inclusive para casos de ofuscao da
imagem), para posterior classificao textual atravs de tcnicas tradicionais, at o
reconhecimento do spam pelas caractersticas identificadas na prpria imagem que
contm o texto embutido.
j) Uso de recursos HTML
O uso de recursos da linguagem HTML pode ser mal-intencionado em muitos
casos (e.g. phishing). Assim, a eficincia das tcnicas de reconhecimento de padres a
mesma da TD contedo falso. Alguns trabalhos na literatura exploram caractersticas de
e-mails no formato HTML para realizar a classificao das mensagens [2, 84, 85, 86, 87].
Quando h o uso mal-intencionado de recursos HTML, normalmente h tambm
outras caractersticas que ocorrem em e-mails fraudulentos, como a falsificao do
remetente da mensagem. Tcnicas como o SPF com a assinatura digital possuem muita
eficincia nesses casos.

Livro-texto de Minicursos

174

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

k) E-mail marketing
O e-mail marketing um tipo de spam muito complicado de classificar. Porque
normalmente originado em servidores MTA de organizaes confiveis com fins
publicitrios (que normalmente no mudam de endereo com frequncia ou tentam
esconder a sua localizao); o uso de blacklists pode ser um pouco mais eficiente contra
esse tipo de e-mail. Porm, alguns usurios podem ter interesse em receber os e-mails de
algumas organizaes (e.g. sites de e-commerce) e o uso de blacklists deve ser
considerado em ltimo caso.
O bloqueio por palavras-chave passa a ser totalmente ineficiente, pois h o
agravante de determinadas palavras presentes em algum spam especfico tambm estarem
presentes em um e-mail publicitrio, que do interesse dos usurios, causando o bloqueio
indevido da mensagem. Tcnicas baseadas na autenticao da mensagem (SPF,
greylisting e assinaturas digitais) so pouco eficientes, j que so recursos que tambm
podem ser utilizados pelo spammer.
As tcnicas baseadas em reconhecimento de padres, especificamente aquelas
baseadas nas caractersticas textuais, costumam ter bons resultados na classificao dos
e-mails. H ferramentas que conseguem, inclusive, classificar boa parte dos e-mails em
trs categorias: no-spam, spam, e e-mail marketing, deixando a deciso quanto aos emails desta ltima categoria a critrio do usurio final. Tcnicas baseadas em redes sociais
tambm podem ser de grande utilidade, j que essas redes podem fornecer informaes
sobre os assuntos de interesse do usurio.
Tabela 4.5. Resumo da relao ente TD e TA.

Blacklists

Palavras-chave

Greyliisting

SPF

Assinatura Digital

Reconhecimento de
Padres

Redes Sociais

Spam de Imagem

1.
Mecanismo
simples de
envio

2. Envio
com
tratamento
de erros

3.
Substituio
de
remetente

4. Envio
atravs de
botnets

5. Envio
atravs de
open relays

TA

TD

Tcnicas baseadas no envio do spam

Livro-texto de Minicursos

175

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

Blacklists

Palavraschave

Greyliisting

SPF

Assinatura
Digital

Reconhecime
nto de
Padres

Redes Sociais

Spam de
Imagem

6. Insero
proposital
de
palavras

7. Troca ou
insero de
caracteres

8.
Contedo
falso

9. Uso de
imagens

10. Uso de
recursos
HTML

TA
TD

Tcnicas baseadas no contedo do e-mail

11. E-mail
marketing

4.5.1 Consideraes importantes sobre as tcnicas analisadas


Um fato importante em relao ao spam que no existe uma tcnica de deteco
perfeita, mesmo que a tcnica busque combater um tipo especfico de spam, pois sempre
haver um caso em que a tcnica poder falhar. Por exemplo, o greylisting, tcnica
amplamente utilizada, eficaz contra os mecanismos de envio de spam que no tratam o
reenvio da mensagem. Entretanto, o greylisting pode ocasionar a recusa indevida da
mensagem, mesmo de MTAs legtimos que, por uma questo estratgica ou m
configurao, acabam no tratando o reenvio.
Na avaliao de qualquer tipo de tcnica antispam, alm de avaliar a deteco das
mensagens de spam, tambm se faz necessrio a avaliao do comportamento da tcnica
em relao a e-mails que no so spam. As tcnicas de deteco podem falhar, tanto na
classificao do spam como no-spam, quanto na classificao de um e-mail no-spam
como spam. Para que uma tcnica possa ser considerada eficiente, mesmo que seja apenas
contra um tipo especfico de spam, dever possuir uma possibilidade nula de ocorrncia
de falsos positivos e falsos negativos, ao mesmo tempo que uma taxa de altssima de
verdadeiros positivos e verdadeiros negativos. Por esse motivo, nenhuma das tcnicas foi
classificada como totalmente eficiente.
Algumas tcnicas no chegaram a ser avaliadas sequer como muito eficientes,
como no caso das blacklists e palavras-chave. Isto no desqualifica essas tcnicas a ponto
do seu uso ser desconsiderado. Porm, essas tcnicas podem ser utilizadas como
ferramentas auxiliares na deteco de spam, o que deve ser feito com bastante cautela. J
tcnicas baseadas na autenticao das mensagens, como assinaturas digitais e SPF, que
em alguns casos no receberam cinco estrelas porque sua eficcia depende da sua adoo
Livro-texto de Minicursos

176

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

por terceiros (e no somente pelo MTA de destino), podem ser teis quando todos os pares
da comunicao utilizam a tcnica.
Para as tcnicas baseadas em informaes extradas de redes sociais, abordagem
muito recente e ainda com poucas evidncias de sucesso, a avaliao foi considerada
pouco eficiente em quase todos os casos, exceto para o item 11 da tabela (e-mail
marketing), visto que as informaes obtidas nessas redes podem dizer muito a respeito
dos assuntos de interesse do usurio.
A anlise das tcnicas baseadas em reconhecimento de padres a que deve ser
interpretada com mais cautela. Apesar de ter sido classificada como muito eficiente
somente em um dos casos, ainda a mais utilizada e uma das mais eficientes na deteco
de spam, com inmeras possibilidades de aplicao ainda no exploradas dentro do
problema em questo. Ou seja, suas tcnicas esto entre as mais eficientes para a deteco
do spam em geral, apresentando uma ampla gama de possibilidades de tcnicas que ainda
podem ser aplicadas para mitigar o problema. Ao analisar os scores atribudos em cada
avaliao, deve-se considerar que a TD foi avaliada em relao a TA que especificamente
visam violar tcnicas baseadas em reconhecimento de padres.
Enfim, o uso das tcnicas antispam no deve ser de executada de maneira isolada.
Ou seja, necessrio que haja uma combinao de tcnicas para que o problema seja
mitigado da melhor maneira possvel. Essa combinao pode ser feita para atender
alguma necessidade especfica, otimizando os resultados da classificao dos e-mails, ou
ainda para adequar o ambiente de deteco a capacidade computacional do servidor de emails.

4.6. Concluses
O envio indiscriminado de mensagens sem o consentimento de seus destinatrios,
prtica conhecida como spam, um problema que ainda est longe de ser solucionado,
apesar do e-mail estar presente na vida da maioria das pessoas atualmente. Alm do
aborrecimento dos usurios, o spam pode causar problemas como a gerao de custo
computacional adicional e despesas com tecnologia e infraestrutura para a deteco desse
contedo. Aps a criao de novas tcnicas para a deteco de spam, os spammers
costumam desenvolver novas artimanhas para burlar os mecanismos de classificao dos
e-mails, gerando uma situao de competio que parece no ter fim.
Este captulo apresentou a anlise das tcnicas antispam sob uma nova
perspectiva. Primeiramente foram apresentadas as principais tcnicas utilizadas na
disseminao de spam de e-mail. Em seguida foram apresentadas as principais tcnicas
de deteco existentes na literatura. Com este conhecimento j foi possvel avaliar a
eficincia de cada tcnica antispam que foi apresentada. Por ltimo, foram apresentados
alguns aspectos relacionados a cada tcnica utilizada pelos spammers e a eficincia das
abordagens para combat-las. Para cada tcnica de deteco de spam foi atribudo uma
nota (score) que representa a sua eficincia em relao a um tipo especfico de tcnica de
disseminao de spam.
A anlise realizada apresentou diversos resultados interessantes. Por exemplo,
ficou evidente que nenhuma tcnica antispam eficiente sozinha, pois sempre haver
situaes que levaro falha. As tcnicas baseadas em reconhecimento de padres,
observadas nas ferramentas antispam, so o alvo comum de ataque dos spammers devido
ao seu uso e eficincia.
Livro-texto de Minicursos

177

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

4.7. Referncias
[1] Klensin, J. RFC 2821 - Simple Mail Transfer Protocol, disponvel em:
<http://www.ietf.org/rfc/rfc2821.txt>. Acessado em: 29/09/2015.
[2] Olivo, C. K.; Santin, A. O.; Oliveira, L. S. Obtaining the Threat Model for E-mail
Phishing. em: Applied Soft Computing, vol. 13, issue 12, p.4841-4848. 2013.
[3] Kleiner, K. Happy Spamyversary! Spam Reaches 30, disponvel em:
<http://www.newscientist.com/article/dn13777-happy-spamiversary-spam-reaches30.html>. Acessado em: 29/09/2015.
[4] Hoanca, B. How good are our weapons in the spam wars?, em: IEEE Technology
and Society Magazine, vol. 25, Issue 1, p.22-30. 2006.
[5] Whitworth, B.; Whitworth, E. Spam and the social technical gap, em: IEEE
Computer, vol. 37, Issue 10, p.38-45. 2004.
[6]

Symantec
January
2011
Intelligence
Report,
disponvel
em:
<http://www.messagelabs.com/mlireport/MLI_2011_01_January_Final_en_us.pdf>.
Acessado em junho de 2012.

[7]

Symantec
May
2013
Intelligence
Report,
disponvel
<http://www.symantec.com/content/en/us/enterprise/other_resources/bintelligence_report_05-2013.en-us.pdf>. Acessado em: 29/09/2015.

em:

[8] Symantec Symantec Internet Security Threat Report volume 19, disponvel em:
<www.symantec.com/content/en/us/enterprise/other_resources/bistr_main_report_v19_21291018.en-us.pdf>. Acessado em 29/09/2015.
[9]

Leyden, J. Spammers embrace e-mail authentication, disponvel em


<http://www.theregister.co.uk/2004/09/03/email_authentication_spam/>. Acessado
em: 29/09/2015

[10] Li, P.; Yan, H.; Cui, G.; Du, Y. Integration of Local and Global Features for Image
Spam Filtering, em: Journal of Computational Information Systems, vol. 8, p.779789. 2012.
[11] The New York Times, Spam Doubles, Finding New Ways to Deliver Itself,
disponvel em: <http://www.nytimes.com/2006/12/06/technology/06spam.html>.
Acessado em: 29/09/2015.
[12] There are 600,426,974,379,824,381,952 ways to spell Viagra, disponvel em:
<http://cockeyed.com/lessons/viagra/viagra.html>. Acessado em: 30/09/2015.
[13] Olivo, C. K.; Santin, A. O.; Oliveira, L. E. S. Avaliao de Caractersticas para
Deteco de Phishing de E-mail, Pontifcia Universidade Catlica do Paran, Curitiba
PR, Brasil. 2010.
[14] Damiani, E.; Vimercati, S.; Paraboschi, S.; Samarati, P. P2P-based collaborative
spam detection and filtering, em: Proceedings of the Fourth International Conference
on Peer-to-Peer Computing, IEEE, p. 176-183. 2004.
[15] Dimmock, N.; Maddison, I., Peer-to-peer collaborative spam detection, em: ACM
Crossroads Magazine, vol. 11, issue 2, p. 4-4. 2004.
[16] Liu, Q.; Qin, Z.; Cheng, H.; Wan, M., Efficient Modeling of Spam Images, em:
2010 Third International Symposium on Intelligent Information Technology and
Security Informatics, IEEE, p. 663-666. 2010.
[17] Soranamageswari, M.; Meena, C., A Novel Approach Towards Image Spam
Detection, em: International Journal of Computer Theory and Engineering, vol. 3, p.
84-88. 2011.
Livro-texto de Minicursos

178

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[18] Xu, C.; Chiew, K.; Chen, Y.; Liu, J. , Fusion of Text and Image Features: A New
Approach to Image Spam Filtering, em: Practical Applications of Intelligent Systems,
Advances in Intelligent and Soft Computing, Springer, vol. 124, p. 129-140. 2012.
[19] Gao, Y.; Yang, M.; Zhao, X.; Pardo, B. Wu, Y.; Pappas, T.N.; Choudhary, A., Image
Spam Hunter, em: International Conference on Acoustics, Speech and Signal
Processing, IEEE, p. 1765-1768. 2008.
[20] Biggio, B.; Fumera, G.; Pillai, I.; Roli, F., Image Spam Filtering Using Visual
Information, em: 14th International Conference on Image Analysis and Processing,
IEEE, p. 105-110. 2007.
[21] Biggio, B.; Fumera, G.; Pillai, I.; Roli, , Image spam filtering by content obscuring
detection, em: Fourth conference on e-mail and antispam. 2007.
[22] Caruana, G.; Li, M., "A survey of emerging approaches to spam filtering", em: ACM
Computing Surveys (CSUR), vol. 44, Issue 2. 2012.
[23] Gansterer, W.; Ilger, M.; Lechner, P.; Neumayer, R.; Straub, J., "Anti-Spam Methods
State-of-the-Art", disponvel em: <security.taa.univie.ac.at/files/FA384018-1.pdf>.
Acessado em 30/09/2015.
[24] Blanzieri, E.; Bryl, A., "A survey of learning-based techniques of email spam
filtering", em: Journal Artificial Intelligence Review, vol. 29, Issue 1, p. 63-92. 2008.
[25] Goodman, J.; Cormack, G.; Heckerman, D. "Spam and the ongoing battle for the
inbox", em: Communications of the ACM, vol. 50, Issue 2, p. 24-33. 2007.
[26] Wang, X.; Cloete, I., "Learning to classify email: a survey", em: Proceedings of the
Fourth Conference on Machine Learning and Cybernetics, vol. 9, p.5716-5719.
[27] The Postfix Home Page, disponvel em: <http://www.postfix.org/>. Acessado em
30/09/2015.
[28] Bernstein, D. qmail: Second Most Popular MTA on the Internet, disponvel em:
<http://qmail.linorg.usp.br/top.html>. Acessado em 30/09/2015.
[29] Secure Enterprise Email Solutions for Business | Exchange, disponvel em:
<https://products.office.com/pt-br/exchange/email>. Acessado em 30/09/2015.
[30] Thunderbird Software Made to Make E-mail Easier, disponvel em:
<https://www.mozilla.org/pt-BR/thunderbird/>. Acessado em 30/09/2015.
[31] Software de E-mail e Calendrio Microsoft Outlook, disponvel em:
<https://products.office.com/pt-br/outlook/email-and-calendar-software-microsoftoutlook>. Acessado em 30/09/2015.
[32] Crispin, M. RFC 3501 Internet Message Access Protocol Version 4rev1,
disponvel em: <https://tools.ietf.org/rfc/rfc3501.txt>. Acessado em 30/09/2015.
[33] Myers, J.; Rose, M. RFC 1939 Post Office Protocol Version 3, disponvel em:
<https://www.ietf.org/rfc/rfc1939.txt>. Acessado em 30/09/2015.
[34] Freed, N.; Borenstein, I., RFC 2045 - Multipurpose Internet Mail Extensions
(MIME) Part One: Format of Internet Message Bodies, disponvel em:
<http://tools.ietf.org/rfc/rfc2045.txt>. Acessado em 30/09/2015.
[35] Crocker, D. RFC 882 Standard for the Format of ARPA Internet Text Messages,
disponvel em: <http://tools.ietf.org/rfc/rfc822.txt>. Acessado em 30/09/2015.
[36] Vaudreuil, G. RFC 3463 Enhaced Mail System Status Codes, disponvel em:
<https://tools.ietf.org/rfc/rfc3463.txt>. Acessado em 30/09/2015.
Livro-texto de Minicursos

179

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[37] Cdigo Penal Brasileiro, Ttulo II, Cap. VI, Art. 171, disponvel em:
<http://www.planalto.gov.br/ccivil_03/Decreto-Lei/Del2848.htm>. Acessado em
30/09/2015.
[38] Wang, P.; Sparks, S.; Zou, C. An Advanced Hybrid Peer-to-Peer Botnet, em: IEEE
Transactions on Dependable And Secure Computing, vol. 7, n 2. 2010.
[39] Bianchi, N. M., The Return of the Open Relays, disponvel em:
<http://www.spamhaus.org/news/article/706/the-return-of-the-open-relays>.
Acessado em: 30/09/2015.
[40] Duda, R.; Hart, P.; Stork D., Pattern Classification, 2 edio, Wiley-Interscience.
2000.
[41] The Unicode Standard Technical Introduction, disponvel
<http://www.unicode.org/standard/principles.html>. Acessado em 30/09/2015.

em:

[42] Liu, C.; Stamm, S. Fighting Unicode-Obfuscated Spam, em: Proceedings of the
Anti-Phishing Working Group - 2nd Annual eCrime Researchers Summit, p. 45-59,
ACM. 2007.
[43] SpamAssassin The #1 Enterprise Open-Source Spam Filter, disponvel em:
<http://spamassassin.apache.org/>. Acessado em 24/09/2015.
[44] Jargas, A. M. Shell Script Profissional, 1 edio, Editora Novatec LTDA. 2008.
[45] Harrys, E. The Next Step in Spam Control War: Greylisting, disponvel em:
<http://projects.puremagic.com/greylisting/whitepaper.html>.
Acessado
em:
30/09/2015.
[46] Sender Policy Framework, disponvel em: <http://www.openspf.org/>. Acessado
em: 30/09/2015.
[47] Levine, J. R. Experiences with Greylisting, em: Second Conference on e-mail and
Anti-Spam. 2005.
[48] Allman, E.; Callas, J.; Delany, M.; Libbey, M.; Fenton, J.; Thomas, M., RFC 4871
- DomainKeys Identified Mail (DKIM) Signatures, disponvel em: <http://www.rfceditor.org/rfc/rfc4871.txt>. Acessado em: 30/09/2015.
[49] Antispam.br, Domain Keys Identified Mail (DKIM), disponvel em:
<http://antispam.br/admin/dkim/>. Acessado em 30/09/2015.
[50] Hansen, T.; Crocker, D.; Hallam-Baker, P. RFC 5585 - DomainKeys Identified Mail
(DKIM) Service Overview, disponvel em: <http://tools.ietf.org/rfc/rfc5585.txt>.
Acessado em 30/09/2015.
[51] Linn, J. Privacy Enhancement for Internet Electronic Mail, disponvel em:
<https://tools.ietf.org/rfc/rfc989.txt>. Acessado em 30/09/2015.
[52] Callas, J.; Donnerhacke, L.; Finney, H.; Shaw, D.; Thayer, R. RFC 4880 - OpenPGP
Message Format, disponvel em: <https://tools.ietf.org/rfc/rfc4880.txt>. Acessado
em 30/09/2015.
[53] Crocker, S.; Freed, N.; Galvin, J.; Murphy, S., RFC 1848 - MIME Object Security
Services, disponvel em: <https://tools.ietf.org/rfc/rfc1848.txt>. Acessado em
30/09/2015.
[54] Ramsdell, B., RFC 3851 - Secure/Multipurpose Internet Mail Extensions (S/MIME)
Version
3.1
Message
Specification,
disponvel
em:
<https://tools.ietf.org/rfc/rfc3851.txt>. Acessado em 30/09/2015.
[55] Bishop, C. Pattern Recognition and Machine Learning, 1 edio, Springer. 2007.
Livro-texto de Minicursos

180

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[56] Karthika, D.; Hamsapriya, T.; Raja, M.; Lakshmi, P. Spam Classification Based on
Supervised Learning Using Machine Learning Techniques, em: International
Conference on Process Automation, Control and Computing (PACC), IEEE, p. 1-7.
2011.
[57] Schneider, K. A comparison of event models for Naive Bayes anti-spam e-mail
filtering, em: Proceedings of the tenth conference on European chapter of the
Association for Computational Linguistics - Volume 1, ACM, p. 307-314. 2003.
[58] Androutsopoulos, I.; Paliouras, G.; Michelakis, E. Learning to Filter Unsolicited
Commercial E-Mail, em: NCSR Demokritos Technical Report, n 2004/2,
disponvel em: <http://nlp.cs.aueb.gr/pubs/TR2004_updated.pdf>. Acessado em:
30/09/2015.
[59] Chen, C.; Tian, Y.; Zhang, C. Spam Filtering with Several Novel Bayesian
Classifiers, em: 19th International Conference on Pattern Recognition, IEEE, p. 1-4.
2008.
[60] Frank, E; Hall, M.; Pfahringer, B. Locally Weighted Naive Bayes, em: Proceedings
of the Nineteenth conference on Uncertainty in Artificial Intelligence, ACM, p. 249256. 2002.
[61] Zhang, H; Jiang, L.; Su, J. Hidden Naive Bayes, em: Proceedings of the 20th
national conference on Artificial intelligence - Volume 2, ACM, p. 919-914. 2005.
[62] Webb, G.; Boughton, J.; Wang, Z. Not so Naive Bayes: Aggregating OneDependence Estimators, em: Machine Learning, vol. 58, issue 1, p.5-24. 2005.
[63] Drucker, H.; Wu, S.; Vapnik, V. N. Support Vector Machines for Spam
Categorization, em: IEEE Transactions on Neural Networks, vol. 10, issue 5, p. 10481054. 1999.
[64] Ma, W.; Tran, D.; Sharma, D. A Novel Spam e-mail Detection System Based on
Negative Selection, em: Fourth International Converence on Computer Science and
Convergence Information Technology, IEEE, p. 987-992. 2009.
[65] Blum, A.; Mitchell, T. Combining labeled and unlabeled data with co-training, em:
Proceedings of the Eleventh Annual Conference on Computational Learning Theory,
ACM, p.92-100. 1998.
[66] Kiritchenko, S.; Matwin, S. E-mail Classification with Co-training, em:
Proceedings of the 2001 Conference of the Centre for Advanced Studies on
Collaborative Research, IBM Press, p. 8. 2001.
[67] Braga, I.; Ladeira, M. Um modelo adaptativo para a filtragem de spam, em: VI
Encontro Nacional de Inteligncia Artificial, Rio de Janeiro RJ, Anais do XXVII
Congresso da Sociedade Brasileira de Computao, p. 1381-1390. 2007.
[68] Zhou, Y.; Mulekar, M.; Nerellapalli, P. Adaptive Spam Filtering Using Dynamic
Feature Space, em: 17th IEEE International Conference on Tools with Artificial
Intelligence. 2005.
[69] Bratko, A.; Filipi, B. Spam Filtering using Character-level Markov Models:
Experiments for the TREC 2005 Spam Track, em: Proceedings of the 14th Text
Retrieval Conference. 2005.
[70] Chhabra, S.; Yerazunis, W.; Siefkes, C. Spam Filtering Using a Markov Random
Field Model with Variable Weighting Shcemas, em: Fourth IEEE International
Conference on Data Mining, p. 347-350. 2004.

Livro-texto de Minicursos

181

c
2015
SBC Soc. Bras. de Computao

XV Simpsio Brasileiro em Segurana da Informao e de Sistemas Computacionais SBSeg 2015

[71] Ndumiyana, D.; Sakala, L. Hidden Markov Models and Artificial Neural Networks
for Spam Detection, em: International Journal of Engineering Research &
Technology, vol. 2, issue 4. 2013.
[72] Bratko, A.; Cormack, G.; Filipi, B.; Lynam, T.; Zupan, B. Spam Filtering Using
Statistical Data Compression Models, em: Journal of Machine Learning Research,
vol. 7, p. 2673-2698. 2006.
[73] Lee, H.; Ng, A. Spam Deobfuscation Using a Hidden Markov Model, em: Second
Conference on Email and Anti-Spam. 2005.
[74] Lee, S.; Jeong, I.; Choi, S. Dynamically Weighted Hidden Markov Model for Spam
Deobfuscation, em: Proceedings of the 20th International Joint Conference on
Artificial Intelligence, p. 2523-2529, Morgan Kaufmann Publishers Inc. 2007.
[75] Sculley, D.; Wachman, G.; Brodley, C., Spam Filtering Using Inexact String
Matching in Explicit Feature Space with On-line Linear Classifiers, em: Proceedings
of the 15th Text Retrieval Conference. 2006.
[76] Kiran, R. S. S.; Atmosukarto, I. Spam or Not Spam That is the Question, em:
Technical Report, University of Washington. 2005.
[77] Guzella, T.; Caminhas, W. A Review of Machine Learning Approaches to Spam
Filtering, em: Expert Systems with Applications, Elsevier, vol. 36, issue 7, p.1020610222. 2009.
[78] Nelson, B.; Rubinstein, B.; Huang, L.; Joseph, A.; Tygar, J. Classifier Evasion:
Models and Open Problems, em: Privacy and Security Issues in Data Mining and
Machine Learning, vol. 6549, Lecture Notes in Computer Science, p. 92-98, Springer.
2011.
[79] Barreno, M.; Nelson, B.; Sears R.; Joseph, A.; Tygar, J. Can Machine Learning be
Secure?, em: Proceedings of the 2006 ACM Symposium on Information, Computer
and Communications Security, p. 16-25. 2006.
[80] Li, Z.; Shen, H. SOAP: A Social Network Aided Personalized and Effective Spam
Filter to Clean Your E-mail Box, em: IEEE INFOCOM, p. 1835-1843. 2011.
[81] Chirita, P.; Diederich, J.; Nejdl, W. MailRank: Using Ranking for Spam Detection,
em: Proceedings of the 14th ACM International Conference on Information and
Knowledge Management, p. 373-380. 2005.
[82] Brown, G.; Howe, T.; Ihbe, M.; Prakash, A.; Borders, K. Social Network and
Context Aware Spam, em: Proceedings of the 2008 ACM Conference on Computer
Supported Cooperative Work, p. 403-412. 2008.
[83] Liu, P.; Chen, G.; Ye, L.; Zhong, W. Anti-spam grid: a dynamically organized spam
filtering infrastructure, em: Proceedings of the 5th WSEAS International Conference
On Simulation, Modeling And Optimization, p. 61-66. 2005.
[84] Chen, J. e Guo, C. Online Detection and Prevention of Phishing Attacks, em:
Communications and Networking in China, p.19-21. 2006.
[85] Cook, D., Gurbani, V. e Daniluk, M. Phishwish: A Stateless Phishing Filter Using
Minimal Rules, em: Lecture Notes in Computer Science, p.182-186. 2008.
[86] Fette, I., Sadeh, N. e Tomasic, A. Learning to Detect Phishing emails, em:
International World Wide Web Conference, p.649-656. 2007.
[87] M. Chandrasekaran, K. Narayanan, S. Upadhyaya Phishing email Detection Based
on Structural Properties, em: Cyber Security Symposium. 2006.
Livro-texto de Minicursos

182

c
2015
SBC Soc. Bras. de Computao

S-ar putea să vă placă și