Вы находитесь на странице: 1из 31

Primeiro fascculo do tutorial de criptografia

SEGURANA

Criptografia:
teoria e prtica
Todos sabem que a criptografia promove a segurana.
Entenda como e por qu us-la ao mximo.
por Marcio Barbado Jr. e Tiago Tognozi

criptografia diz respeito ao


conjunto de princpios e tcnicas utilizados na proteo
digital ou mecnica de informaes.
Utilizadas desde a antiguidade grecoromana, as prticas criptogrficas
eram inicialmente aplicadas por
ferramentas mecnicas muito simples e perspicazes, que ocultavam
mensagens legveis, cifrando-as em
formatos incompreensveis.
Historicamente, quatro grupos
de pessoas contriburam para sua
evoluo:
os militares (o grupo mais importante);
os diplomatas;
pessoas que gostam de guardar
memrias; e
os amantes.
Foram os militares que perceberam uma das principais necessidades advindas da adoo de tcnicas
criptogrficas: alternar rpida e eficientemente entre as metodologias
utilizadas. Isso porque vislumbravam
a possibilidade de seus especialistas
serem capturados por inimigos.
Uma macroanlise da criptografia
a revela como um conjunto de algoritmos que, bem empregados, beneficiam diversos processos. Assim, este
primeiro artigo de uma srie sobre
criptografia procura apresentar os
mais respeitados algoritmos (e pro64

tocolos) criptogrficos da atualidade,


bem como sua forma de utilizao.
A crescente complexidade dos
clculos envolvidos na criptografia
fez com que o advento da computao pudesse explorar tais conceitos
com maior eficcia, devido rapidez
com que os computadores processam
operaes. Hoje, diversos programas
comuns, criados para outras finalidades que no a proteo de contedo,
j apresentam funes criptogrficas
atravs das quais o usurio pode encriptar suas informaes. No caso
das distribuies Linux, os editores
de texto Vi e Vim so dois exemplos.

Tipos de algoritmos

A criptografia possui duas abordagens.


Uma, bastante acessvel, sustenta-se
em leis matemticas e conhecida
como criptografia clssica. A outra,
chamada criptografia quntica,
estruturada sobre a primeira e, alm
disso, faz uso de leis da fsica. Porm,
sua adoo ainda enfrenta barreiras,
dada a necessidade dos altos investimentos em infraestrutura envolvidos.
A abordagem quntica utiliza ftons
para gerar chaves inquebrveis, as
ditas chaves qunticas.
O foco adotado neste artigo a
criptografia clssica, cujos tipos de
algoritmo utilizados so:
algoritmo de transposio: rearranja a ordem dos caracteres de uma

mensagem. Um exemplo simples


a transformao de muito obrigado em omtui oobdraig. Para
quem gosta de Matemtica, interessante destacar que esta categoria de algoritmo criptogrfico
composta por uma funo bijetora
para efetuar encriptaes e sua
inversa faz a mensagem voltar
forma original;
algoritmo de substituio: substitui caracteres ou grupos de caracteres por outros caracteres ou
grupos de caracteres. Um exemplo simples: muito obrigado
transformado em nvjup pcsjhbep, substituindo cada letra pela
prxima na sequncia alfabtica.
Cabe aqui meno eficcia
que alguns algoritmos deste tipo
tm demonstrado no combate ao
spam, empregados para proteger
endereos de e-mail.
Diversas so as maneiras de se
empregar produtivamente algumas
tcnicas criptogrficas clssicas por
meio de computadores. Pode-se destacar dentre elas o fortalecimento de
duas prticas comuns a qualquer usurio ou empresa: o backup e a troca
de mensagens eletrnicas.
Entre as organizaes que contriburam para a evoluo da criptografia, destacam-se a RSA Security e a
BT Counterpane.

http://www.linuxmagazine.com.br

Criptografia | SEGURANA

Exemplificando de forma to concreta quanto prosaica, os conceitos


criptogrficos buscam solucionar
problemas universais comuns a duas
situaes bsicas:
proteger informaes armazenadas e utilizadas sempre pela
mesma pessoa ou entidade, e
proteger informaes trocadas
entre duas pessoas (ou entidades)
diferentes.

Simetria

Antes de caracterizar rigorosamente esses dois casos, conveniente


registrar o significado da palavra
simetria.
Simetria, cujo antnimo chamase assimetria, diz respeito igualdade de propriedades existente entre
dois lados opostos de uma mesma
situao. Um exemplo simples e
concreto da existncia de simetria
a imagem frontal do famoso mausolu indiano Taj Mahal (
).
Nota-se que, imaginando uma linha
vertical dividindo a imagem do mausolu ao meio, possvel identificar
caractersticas estticas de uma metade que tambm estaro presentes
- espelhadas no outro lado. Mais do
que isso, possvel enxergar que os
referidos detalhes correspondentes
possuem a mesma distancia da linha
divisria imaginria.
O contexto abordado neste artigo
trata o conceito de simetria aplicando-o s pessoas e servios que participam do processo criptogrfico.
Ento, voltando s duas situaes
j destacadas, a proteo de informaes para uso prprio um caso
simtrico, j que a pessoa a utilizar
um dado arquivo a mesma que o
guardou. Uma situao comum que
se enquadra nesse caso o backup.
O segundo caso proteo de informaes trocadas com outros
assimtrico, pois envolve dois usurios distintos. O exemplo bsico a
troca de e-mails confidenciais.

Linux Magazine #62 | Janeiro de 2010

A soluo elementar encontrada


para caso 1 foi chamada de criptografia simtrica, pois a chave que fecha
o acesso informao a mesma
que o abre.
J para o segundo caso, encontrouse uma soluo na qual a chave de
abertura diferente daquela que
fecha o documento e, por isso, tal
mecanismo foi chamado assimtrico.
A proposta apresentada neste artigo
de uso simplificado sob qualquer
ponto de vista.
Esta primeira parte terica apresenta uma coletnea de conceitos fundamentais para o devido entendimento
dos prximos tutoriais desta srie.

Terminologia

Rigorosamente, os sinnimos encriptar (com essa nova acepo) e cifrar


so os termos mais precisos para descrever a transformao de informaes
teis em dados enigmticos no aproveitveis. Os opostos de encriptar e
cifrar so, respectivamente, decriptar e decifrar tambm sinnimos
que denotam a transformao contrria, que faz dados aparentemente sem
sentido tornarem-se informaes teis.
O termo criptografar no estaria errado em qualquer das situaes acima;
apenas pouco especfico.

A confuso comea com o termo


codificar, cujo oposto decodificar.
H um respeitado padro do governo norte americano, chamado
Federal Standard 1037C, que em
verdade um glossrio de termos utilizados em telecomunicaes, e define
o termo encrypt (encriptar) como
sinnimo de encode (codificar):
encrypt: 1. [A] generic term
encompassing encipher and encode. [NIS] 2. To convert plain
text into unintelligible forms by
means of a cryptosystem. Note:
The term encrypt covers the
meanings of encipher and
encode. [JP1]
Contudo, ocorre que, em determinados contextos, existem diferenas
entre encriptar e codificar.

Bits

comum ouvir de vendedores de


equipamentos, especialmente no
caso de roteadores sem fio, que a
troca de informaes proporcionada pelo equipamento segura, com
o nico argumento de que utiliza
criptografia com 256 bits.
Alm de passarem uma ideia
equivocada e simplista de ser a crip-

O Taj Mahal um exemplo de simetria.

65

SEGURANA | Criptografia

tografia fundamentada em potncias de 2, esses nmeros que muitos


fabricantes vendem como prova de
segurana realmente convencem os
consumidores.
Cabe a indagao: por qual razo
exatamente esses 256 bits devem
tranquilizar o usurio?
Inicialmente, tais nmeros so
utilizados tanto na criptografia simtrica quanto na assimtrica. Podem referir-se, no caso simtrico,
ao tamanho do bloco utilizado no
algoritmo conhecido por cifra de
blocos; e no caso assimtrico, ao
tamanho da chave.
Como no roteador sem fio estamos
falando em comunicaes entre duas
ou mais partes diferentes, o tipo de
criptografia utilizado o assimtrico. Provavelmente, os vendedores se
referem a um nmero que especifica
tamanhos de chaves utilizadas pelo
equipamento.
Cabe salientar o consenso cientfico de que mesmo as chaves de 512

bits no oferecem segurana. No entanto, se tal valor fosse empregado s


chaves utilizadas nas comunicaes
sem fio, inviabilizaria a comodidade
oferecida pelo padro Wi-Fi, pois
tornaria mais lenta a troca de dados.
Portanto, no h razes para tranquilidade ao se adquirir um roteador
que empregue chaves de 256 bits.

Algoritmos

Tambm chamados de cifras, os algoritmos criptogrficos so utilizados


em criptografia simtrica e assimtrica para fins diversos, e nem sempre
esto diretamente ligados a encriptaes ou decriptaes. Podem servir
a outros propsitos, como a gerao
de pares de chaves, ou ainda para
assinaturas digitais.

Criptografia simtrica

Simples e til, a criptografia simtrica


deve cobrir situaes nas quais uma
s parte esteja envolvida. Por exemplo, a pessoa que encripta (lado que

fecha) a mesma que decripta (lado


que abre). a que est a simetria:
a mesma pessoa em ambos os lados.
Um caso digno de destaque pela
distoro explcita com que trata a
criptografia o Wi-Fi, cuja proteo mais elaborada at o momento,
descrita pelo padro WPA2, utiliza
cifras simtricas em comunicaes
entre dois pontos distintos.
O motivo dessa aberrao o ganho de desempenho proporcionado
por algoritmos simtricos.

Algoritmos simtricos

AES: Tambm conhecido como


Rijndael, AES significa Advanced
Encryption Standard (padro de
encriptao avanada). O algoritmo um padro FIPS resultante
de um projeto do NIST, instituto
americano de normas tecnolgicas. A cifra est presente nos
softwares BitLocker e WinZip,
assim como no padro WPA2
(802.11i para Wi-Fi) e outros;
DES: Algoritmo criptogrfico
criado pela IBM;
IDEA: IDEA significa International Data Encryption Algorithm
ou algoritmo internacional para
encriptao de dados;
Blowfish: Elaborado por Bruce
Schneier em 1993, este algoritmo
criptogrfico leva o nome do peixe que conhecemos por baiacu.

Salt

A chave pblica pode ser divulgada de duas formas: individualmente, pelo dono, para cada interlocutor, ou do dono para um servidor
de chaves, que se encarrega de distribu-la para quem a desejar.

66

Recurso poderoso para encriptar


contedo de texto simples, o salt
diz respeito a valores pseudoaleatrios concatenados ao texto simples antes deste ser passado a uma
funo. Os valores e o tamanho do
salt podem variar em acordo com
a necessidade. Aps aplicado informao, o resultado entregue
funo KDF para que o resultado,
j considerado protegido, seja ento
armazenado. O salt utilizado pode
ser o IV (vetor de inicializao),

http://www.linuxmagazine.com.br

Criptografia | SEGURANA

uma sequncia de bits necessria


para a criptografia simtrica.

Criptografia
assimtrica
Hermticas, mas eficazes e portanto, desejveis. Assim eram vistas
as tcnicas assimtricas at pouco
tempo atrs. As patentes sobre os
principais algoritmos os isolavam do
conhecimento pblico. Tais tcnicas,
em verdade, ganham projeo ao se
considerar a interceptao de informaes, um incmodo atemporal.
Pode-se citar 1976 como o ano
do nascimento da criptografia assimtrica, pois foi quando Whitfield
Diffie e Martin Hellman publicaram
o primeiro trabalho descrevendo um
sistema assimtrico (ento patenteado) nos moldes atuais.
Atualmente, a utilizao desregrada de correio eletrnico, alimentada
pela sede de produtividade e resultados constitui uma das lacunas mais
bem preenchidas pela criptografia
assimtrica.
O email desprotegido compromete, mais do que o fechamento de negcios, a vida dos seres humanos por
trs dele. Tal conjuntura fez da ento
hermtica criptografia assimtrica
uma dribladora das interceptaes
no autorizadas de dados.
So duas as componentes da segurana proporcionada pela criptografia
assimtrica: privacidade e autenticidade, como mostra a
.
As componentes so independentes e podem ser utilizadas separadamente. So teis, por exemplo,
na troca de emails. Porm, tais conceitos so recomendados a qualquer
troca de informaes entre pessoas
ou servios. Todavia, seu uso exige
que cada um dos lados possua um
par de chaves, sendo uma chamada
pblica e a outra privada.
A chave pblica de um usurio
de email deve ser do conhecimento
das pessoas que lhe desejam enviar

Linux Magazine #62 | Janeiro de 2010

Tabela 1:
Componentes da segurana por criptografia simtrica
Par de chaves

Confere

Importncia

Do destinatrio

Privacidade

Atribui sigilo s informaes


trocadas entre partes distintas

Do remetente

Autenticidade

Atribui legitimidade s informaes


trocadas entre partes distintas

mensagens, e pode at ser disponibilizada publicamente. J sua chave


privada deve ser conhecida exclusivamente pelo prprio dono.
O emprego das duas chaves leva
em conta que os interlocutores j
possuem, cada um, a chave pblica do outro.
Basicamente, caso uma chave
pblica seja utilizada por um lado,
uma chave privada correspondente
dever ser utilizada pelo outro, e
vice-versa. Se um lado utilizar uma
chave pblica para encriptar uma
mensagem, o outro lado ir decriptla com a chave privada associada.
Essa situao utiliza o par de chaves
do destinatrio.
E caso um lado utilize uma chave
privada para encriptar informaes,
o outro lado ir decript-las com a
chave pblica associada. Essa situao
utiliza o par de chaves do remetente.
Chaves pblicas so utilizadas
no ato de envio, para se restringir o
acesso s informaes, enquanto que
chaves privadas so utilizadas no recebimento normalmente por uma
pessoa diferente do remetente para
obter acesso quelas informaes.

No possvel a chaves pblicas a


abertura de informaes protegidas,
como no exemplo do
.

Chave

Grosso modo, trata-se de uma senha


grande: um parmetro utilizado para
se encriptar e decriptar informaes.
Constituem a menina dos olhos de
qualquer criminoso digital profissional, pois, a partir delas, pode-se
decifrar dados.

Tamanho da chave

A reflexo sobre a definio deste importante parmetro, frequentemente


dado em bits, causa o que os economistas chamariam de trade off, um
conflito ou dilema entre dois itens
desejveis, aqui representados por
produtividade e segurana. Chaves
pequenas (por exemplo, com 512
bits) oferecem melhor desempenho
nas operaes criptogrficas, mas
so facilmente quebradas. Em contrapartida, o uso de chaves grandes
causa lentido, mas oferece extrema
segurana.
Geralmente, chaves de 1024 bits
costumam oferecer um compromis-

Quadro 1: Como uma chave pode ser pblica?


Suponha que Dona Flor fornea sua chave pblica a Vadinho e a Teodoro;
caso Vadinho decida enviar a Dona Flor uma mensagem confidencial, ele utilizar a referida chave que Flor lhe deu para criptografar tal informao.
Suponha que Teodoro, que possui uma chave idntica de seu rival, obtenha
uma cpia das informaes criptografadas enviadas por Vadinho. O primeiro
nada pode compreender, pois a referida chave que possui pblica e no
serve para revelar informaes; apenas Dona Flor, por meio de sua chave privada, tem o poder de decifrar o que Vadinho deseja lhe comunicar.

67

SEGURANA | Criptografia

so interessante entre desempenho e


segurana das operaes.

Chave privada

Uma chave privada deve sempre ser


de conhecimento exclusivo de seu usurio. Apresenta-se como uma senha
bem grande em um arquivo texto,
com no mnimo 1024 bits, ou seja,
uma cadeia extensa de caracteres.
Sendo muito comprida, sua memorizao muito difcil. exatamente neste ponto que as chaves privadas diferem de senhas tradicionais,
pois, ao passo que uma senha pode
e deve ser memorizada, chaves privadas devem justamente evitar esse
fenmeno.
Por isso, essas chaves devem ser
armazenadas digitalmente no computador de seus donos, o que no se
aconselha fazer com senhas tradicionais, pois o armazenamento desse
tipo de informao em computadores constitui um risco de segurana.
preciso, portanto, adotar procedimentos adicionais que garantam a

privacidade sobre as chaves privadas


de modo a compensar essa vulnerabilidade. Frequentemente, esse problema pode ser resolvido protegendose a chave privada com uma senha
mais curta e memorizvel.

Chave pblica

Assim como no caso da chave privada, a apresentao mais simples da


pblica ocorre por meio de um arquivo texto, como mostra a
. Ela representa a chave pblica do
coautor do presente texto.
H muita informao importante
entre as linhas:
--BEGIN PGP PUBLIC KEY BLOCK--

e
--END PGP PUBLIC KEY BLOCK--

incluindo um nome e um endereo


eletrnico.
Suponha que Marcio tenha fornecido sua chave pblica a todos os

Listagem 1: Chave pblica do autor deste artigo


--BEGIN PGP PUBLIC KEY BLOCK-Version: GnuPG v2.0.11 (GNU/Linux)
mQGiBEkdvC4RBACs31hu82H75EAzMCNehjYtokIqqkH2z1nEw1NDpm8EtjPMQCxw
g+RwLc7VHf+EfwdbC6nYuuI9RLr/Yb92/tmIy8PuhZMpuddBJWW1D0vcKJqUpS4j
XHXm3DsF/cax0xBtuUb43myckOrL25ZGQXS1M/ZqtTNR/8PEGZkaD/5KkwCg/FX8
ZWzw3P8uLdRvh/UlDzXN+lcD/3b2vvYvYMhh5FwdlnASVatot03DdZ122wH3wJay
2DAtAxkLr7bwH+aL9PzEIWka3iLNZKnAJcyjj4Dxj9bEU64gtRGEIWDEoG4Cwh9u
K0ooZCJKUi9/j2kkU+fbpTw0st2H5R8xEWkTOWXy3Lclzi8bydaAAyvrfjfnxTac
rbEcA/93MN6UyNUUXXRv+QWD7YqnZSrAcAZaH289imJP7LtFrH+8IQQC97MVAKVq
0I8EuFdSN5QAXumvrTCfXwnQ53bLePCz8R9rEuX9zu6oFa2nzCthKoH+kos3fhx9
QxtAQDYnCJiD/Mq/7tOntZKmerkxxzfzrScv75rsPQslrrGO+bRCTWFyY2lvIEJh
cmJhZG8gSnIgKGJkc2xhYnMuY29tLmJyKSA8bWFyY2lvLmJhcmJhZG9AYmRzbGFi
cy5jb20uYnI+iFkEExECABkFAkkdvC4ECwcDAgMVAgMDFgIBAh4BAheAAAoJEI1o
tYNuFxtYY6UAoL9BYLtQnKjp68iWwFPcjLSC7cAEAKDoYLbNcdYX9d+7bsMqaMn0
LadXAIhGBBARAgAGBQJKVPfsAAoJEDFGSJOKmKWE3rcAn3W5d3JUBv4AVaCVP9Yf
w15x7fDRAJ4z3X+S102+FcWqpB9lGdSh5FvVnLkBDQRJHbwvEAQAlLr9rpf7+0VV
1CLkXHza64TWuohYHvvBeiaDErPMqvyPTJVhQiePtt/kHDYjtT/lsyaKggkLbXd6
C1xAjkconDVULfiJMniVcEFfKyPNezqnwFt6IsggFk/ukakkkSO4hbYKBVFMM76c
PjnFWBi4Jxv64HmAFy4qc/Zc/DwEcV8AAwUD/AwsG53w0H7p6AybHE/kJ8Xe+5Sx
gltdtGmrI5uE32/hq9qDQObK0wEt3QH/QjItzqX31WqEokIID3wEvYJnJMgUvBll
BmEQXDCZ0rwSD8wUHrdiQZfaK7xqRyEkmQdGWTbGVzhBClezXSPlKIdEiPy9LY2g
xaefelfbPNPwDUrQiEYEGBECAAYFAkkdvC8ACgkQjWi1g24XG1jAfwCg6GMoeP4W
8gWnLUq8XPxqhsJNohMAni7Ll32CgFIt3YkiH4rwNsUWh2uc
=IdBq
--END PGP PUBLIC KEY BLOCK--

68

clientes com os quais troca emails.


So duas as situaes nas quais eles
a utilizaro:
quando forem encriptar informaes que devem ser reveladas apenas a ele (e podero ser
decifradas apenas pela chave
privada dele); e
quando desejarem verificar
a autenticidade da assinatura
digital de Marcio (veja a seo Assinatura digital) que
eventualmente constar em algum email ou arquivo que ele
lhes enviar.
Essas situaes podem sugerir
que uma chave pblica melhor
aproveitada quando amplamente divulgada. Isso verdade em um caso,
mas, no outro, requer algum cuidado para que no seja uma mentira.
Os dois casos esto respectivamente
apresentados na
. Note que
muitos usurios da criptografia assimtrica utilizam ambos os meios
para divulgar suas chaves.
Na
, a primeira forma de
divulgao trabalhosa. Requer comunicaes individuais com cada
um dos contatos e, alm disso, exige
novos informes sempre que o dono
da chave pblica precisar se comunicar com um novo contato. seguro,
entretanto, j que os contatos possuiro cpias da chave, que receberam
diretamente de seu detentor.
A segunda forma parece mais
prtica, e pode, de fato, ser. Porm,
to prtica quanto insegura, caso
no se tome algumas providncias.
O ponto-chave a confiabilidade das
fontes intermedirias, responsveis
por fornecer chaves pblicas. Essas
fontes representam participantes
adicionais no processo de distribuio de chaves. No mais otimista dos
cenrios, so instncias adicionais a
ser protegidas. Isso consome recursos
de diversas naturezas.
Essas instncias so locais da Internet, chamados de servidores de

http://www.linuxmagazine.com.br

Criptografia | SEGURANA

chaves, que hospedam chaves pblicas gratuitamente. Muitas vezes,


facilitam o trabalho de divulgao e
disponibilizao de chaves s custas
da segurana. A chave disponibilizada uma nica vez em um desses
servidores, que geralmente pblico.
Trata-se de uma forma de divulgao que, para aumentar a segurana,
exige procedimentos especficos das
trs partes envolvidas, a saber:
o dono da chave pblica, que deseja divulg-la e disponibiliz-la;
o responsvel pelo servidor de
chaves, que ser a parte intermediria, e ir abrigar a chave
pblica; e
o contato, tambm um usurio
da criptografia, que precisa obter
a chave pblica do dono.
Assumindo suas responsabilidades,
cada uma dessas trs partes pode reduzir os riscos inerentes segunda
forma de divulgao:
o dono de uma chave pblica, disponibilizando-a em um
servidor de chaves, deve se certificar de que o servio bem
administrado e deve fornecer
a seus contatos as informaes
de acesso a este. Por exemplo,
o endereo do servidor;
o responsvel pelo servidor de
chaves deve configurar e administrar corretamente seu servio,
principalmente no que se refere
ao cadastro de chaves; e
o contato, ao buscar uma chave
pblica, deve utilizar as informaes de acesso fornecidas pelo
dono desta, que o conduziro
corretamente ao servidor de
chaves.
Contudo, embora esses cuidados
sejam simples, eles no so observados e respeitados com frequncia. Os
riscos, portanto, tambm so trs:
caso o dono da chave no assuma suas responsabilidades,
obviamente dificultar a ob-

Linux Magazine #62 | Janeiro de 2010

teno de sua chave pblica


por seus contatos;
se o responsvel pelo servidor
de chaves no cumprir seu papel, possvel explorar falhas do
referido servio, sendo uma das
principais o cadastro de chaves
falsas com nomes de pessoas
reais (e que, em certos casos,
possuem um par de chaves);
caso o contato no cumpra seu
papel, pode acabar obtendo
uma chave falsa que de nada
lhe servir, e ainda prejudicar
suas tentativas de se comunicar
com o suposto dono da chave.
Percebe-se que o segundo modo
de divulgao, assim como o primeiro, exige uma postura ativa do
detentor da chave e possui o agravante do intermedirio. Portanto,
ilusria a percepo de que um
servidor de chaves proporciona praticidade ao usurio.
O ponto que desperta preocupao
fica por conta da independncia dos
servidores de chaves. Mesmo que
o detentor da chave pblica e seus
contatos atuem corretamente, se o

servidor for administrado indevidamente, possvel, por exemplo, que


usurios mal intencionados realizem
um segundo cadastro do referido detentor, com uma chave pblica falsa.
Isso confunde os contatos do dono
da verdadeira chave e prejudica suas
comunicaes seguras.
Convm salientar que, ao disponibilizar uma chave pblica em um
servidor de chaves, muitos podero
obt-la. Ela poder ser encontrada
por qualquer um com acesso Internet, mesmo que nenhum contato
de seu dono tenha sido notificado
sobre sua existncia. E isso no
constituir uma vulnerabilidade
apenas se os responsveis pelo servidor possurem controle sobre o
cadastro de chaves.
Um bom exemplo de controle
pode ser realizado enviando emails
que solicitem confirmao de cadastro. Nesses casos, tais servios constituem uma facilidade bem vinda.
Uma prova de conceito que demonstra a fragilidade do mtodo de
divulgao via servidores de chaves
ser apresentada no prximo artigo
desta srie. At l!

Sobre os autores
Marcio Barbado Jr. (marcio.barbado@bdslabs.com.br) e Tiago Tognozi (tiago.tognozi@bdslabs
.com.br) so especialistas em segurana na BDS Labs (www.bdslabs.com.br).

Nota de licenciamento
Copyright 2010 Marcio Barbado Jr. e Tiago Tognozi
garantida a permisso para copiar, distribuir e modificar este documento sob os termos da Licena de Documentao Livre GNU (GNU Free Documentation License), Verso 1.2 ou qualquer
verso posterior publicada pela Free Software Foundation. Uma cpia da licena est disponvel
em http://www.gnu.org/licenses/fdl.html

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em
cartas@linuxmagazine.com.br
Este artigo no nosso site:
http://lnm.com.br/article/3241

69

Segundo fascculo do tutorial de criptografia

SEGURANA

Criptografia: teoria
e prtica, parte 2
Chaves pblicas e privadas tm diversos usos e formas. Veja
como us-las e como elas so mal utilizadas.
por Marcio Barbado Jr. e Tiago Tognozi

etomando o primeiro artigo


desta srie [1], vamos abordar
agora mais alguns aspectos
tericos e prticos da criptografia.
Em primeiro lugar, vamos observar
as questes matemticas envolvidas
nessa rea, formalizando matematicamente a criptografia assimtrica.
Seja:
K um conjunto dos pares de chaves
e e d, tais que
(e,d)

com uma coleo de funes


Ee, ditas E ndice ezinho e
formalizadas como:
Ee : e

chave pblica;
d uma chave de decriptao
pertencente a K, ou seja, uma
chave privada;

D um sistema de decriptao
com uma coleo de funes
inversas Dd, ditas D ndice
dezinho e formalizadas como:

K;

e uma chave de encriptao


pertencente a K, ou seja, uma

70

E um sistema de encriptao

Dd : d

m uma mensagem de textopuro;


c uma mensagem m, encriptada

tal que:

Ee (m) = c

e
Dd (c) = m

A funo de encriptao Ee possui


dois parmetros:
a chave e; e
a mensagem de texto puro m.
Assim como a funo de decriptao
Dd, que possui:
a chave d; e
o texto cifrado c.
Considerando-se os possveis pares
(Ee, Dd) para encriptao e decriptao, e uma mensagem encriptada
c, no se chega a m mesmo que se
conhea a coleo de funes Ee.
Ou seja, conhecendo-se uma cha-

http://www.linuxmagazine.com.br

Criptografia | SEGURANA

ve pblica e, no se chega chave


privada d correspondente.
Ee contm funes ditas trapdoor e d a informao trapdoor
necessria para se obter as funes
inversas Dd, que possibilitam as
decriptaes:

funo bijetora a um nmero real,


por exemplo, teremos um resultado.
E para voltar ao real original, aplicase ao resultado a inversa da funo.
Exemplo para uma funo de
primeiro grau:
f(x) = 2x + 1

Dd (Ee (m)) = m

Decifrar a si mesma

Por que uma chave pblica no consegue decifrar o que ela mesma encripta? Utilizar uma chave pblica e
encriptar uma mensagem envolve a
aplicao de uma funo bijetora do
tipo trapdoor. Tal funo devolve
a mensagem encriptada.
Vamos relembrar alguns conceitos de funes. Considere a funo:

Se desejarmos encriptar a mensagem


5 (o nmero cinco), aplicamos a
funo ao nmero 5 e teremos f(5)=11.
Neste caso, 11 seria a mensagem
encriptada. Para decifr-la, necessrio obter a inversa de f(x), que :

Funo bijetora: injetora e


sobrejetora.

x = (y-1)

Ento:
x = (11-1)

x=5

f(x) = y

Funes bijetoras (
) so
injetoras (diferentes valores de X
levam a diferentes valores em Y,
) e sobrejetoras (todo elemento
de Y corresponde a pelo menos um
elemento de X,
).
Portanto, uma funo bijetora,
sendo injetora e sobrejetora, possui o
mesmo nmero de elementos em X e
Y. Durante o perodo escolar bsico,
um contra-exemplo clssico oferecido aos alunos a seguinte funo:
f(x) = x2

Note na
que no se trata de
uma funo injetora. A tabela mostra
que diferentes valores de X nem sempre conduzem a resultados distintos
em Y. A funo no injetora, logo,
no h bijeo. Ela no serve a fins
de encriptao assimtrica.
Convm, entretanto, salientar que
a funo tambm no sobrejetora,
pois os valores negativos de Y jamais
sero alcanados.
Assim como nos casos mais simples da Matemtica, aps aplicar uma

Linux Magazine #63 | Fevereiro de 2010

Assim, deciframos o 11 e obtivemos o 5 original. Muitas pessoas


fizeram esses clculos a vida inteira,
ento no h nenhuma novidade.
Decifrar uma mensagem encriptada com uma funo trapdoor
tambm envolve a obteno de uma
inversa. Porm, essa inversa no facilmente obtida. Funes trapdoor
fazem uso de mecanismos mais sofisticados, como o operadordemdulo, que serve para encontrar o resto
da diviso de um nmero por outro
e, alm disso, dificulta a obteno
da inversa.

Funo injetora: cada


elemento de X leva a um
elemento diferente em Y.

Algoritmos
assimtricos
Os algoritmos apresentados a seguir
se referem componente de privacidade, ou seja, so utilizados para
encriptao e decriptao:
sistema ElGamal: algoritmo de
criptografia assimtrica baseado
em Diffie-Hellman.
O GnuPG se refere a ele como
ELG-E;

Funo sobrejetora: cada


elemento de Y corresponde a pelo menos um
elemento de X.

RSA: Trata-se de uma famlia


de funes trapdoor extremamente eficiente.
71

SEGURANA | Criptografia

Tabela 1:
Funo no injetora
x

f(x)

-2

Autenticao

Considerando o contexto da criptografia, a autenticao um conceito


assimtrico empregado pelo destinatrio para verificar a genuinidade de
informaes recebidas, providas de
privacidade ou no. Assim, possvel
determinar a verdadeira origem das
informaes recebidas.
As tcnicas que atribuem autenticidade a informaes utilizam
assinaturas digitais e so muito exploradas comercialmente no gerenciamento de identidades de pessoas
fsicas, jurdicas e computadores
(mais sobre esse assunto em um
prximo artigo).

Assinatura digital

Assinaturas tradicionais com tinta


de caneta sobre papel so marcas
grficas que cumprem a funo de
identificar seus autores.
Recordando: a criptografia assimtrica permite que duas ou mais
entidades distintas possam trocar
dados de forma segura, graas ao
par chave pblica e chave privada.
Os fatores que compem a segurana proporcionada pelo par de
chaves so dois: a privacidade e a
autenticidade.
O primeiro artigo desta srie [1]
mostrou como usufruir da privacidade proporcionada pelo par de
chaves. O exemplo a seguir almeja
no apenas repassar conceitos, mas
principalmente enfatizar a diferena
entre privacidade e autenticidade:
um computador no Brasil deve
transmitir informaes importantes para outro que se encon72

tra em Uganda; cada computador possui seu par de chaves e,


alm disso, cada um conhece a
chave pblica do outro; antes
do envio, o equipamento brasileiro usa a chave pblica do
ugandense para encriptar as
informaes; no recebimento, o
destinatrio ugandense utiliza
sua chave privada para acessar
as informaes.
Esse exemplo apresenta uma situao simples na qual a troca de
informaes utiliza a criptografia
assimtrica para um computador
enviar informaes com privacidade a outro.
O computador ugandense consegue decifrar o recebido, mas no
consegue determinar se aquelas
informaes realmente partiram
do referido computador brasileiro,
pois este no assinou digitalmente
o que enviou.
O exemplo a seguir uma adaptao do anterior e mostra como o
computador do Brasil deveria proceder para conferir privacidade e
autenticidade ao contedo enviado:
um computador no Brasil deve
transmitir um arquivo confidencial a um outro que se encontra
em Uganda, destinatrio este
que exige garantias da procedncia do arquivo; cada computador possui seu par de chaves e,
alm disso, cada um conhece a
chave pblica do outro; antes do
envio, o computador brasileiro
usa a chave pblica do ugandense para encriptar o arquivo,
e sua prpria chave privada
para assinar digitalmente o que
enviar, atribuindo ao envio
a garantia que o destinatrio
exige; no recebimento, o equipamento ugandense utiliza sua
chave privada para acessar os
dados recebidos, e a chave pblica do computador brasileiro

para verificar a autenticidade


do que recebeu.
Esse exemplo apresenta uma situao de maior aproveitamento da
criptografia assimtrica. Tanto o remetente quanto o destinatrio usam
uma chave de cada par e, ao final
do processo, todas as quatro chaves
envolvidas foram usadas.
O remetente usa:
chave pblica do destinatrio
para conferir privacidade comunicao, e
sua prpria chave privada para
assinar (atribuir autenticidade
ao comunicado).
Ou seja, a chave pblica do destinatrio ugandense utilizada para
impedir terceiros de acessar as informaes do arquivo em questo, e a
chave privada do remetente brasileiro
utilizada para garantir a procedncia do arquivo.
J o destinatrio usa:
sua prpria chave privada para
decriptar o que recebe, e
a chave pblica do remetente
para verificar a assinatura digital e determinar se as informaes realmente foram originadas
por ele.
Ou seja, uma chave (a privada)
do destinatrio ugandense, utilizada para acessar as informaes
do arquivo recebido, e uma chave
(a pblica) do remetente brasileiro
utilizada para verificar a origem
do arquivo.
Um terceiro exemplo a destacar
aquele no qual a privacidade no
utilizada, mas apenas os aspectos
de autenticidade (assinatura digital):
um computador no Brasil deve
transmitir um arquivo de domnio pblico a outro que se
encontra em Uganda, destinatrio este que exige garantias
da procedncia das informaes

http://www.linuxmagazine.com.br

Criptografia | SEGURANA

que recebe; cada computador


possui seu par de chaves e, alm
disso, cada um conhece a chave pblica do outro; antes do
envio, o computador brasileiro
usa sua prpria chave privada
para assinar digitalmente o que
enviar, atribuindo ao arquivo a
garantia que o destinatrio exige;
no recebimento, o equipamento
ugandense utiliza a chave pblica do computador brasileiro
para verificar a autenticidade
do que recebeu.
A
demonstra este ltimo
cenrio. Assinar com uma chave
privada fornece autenticidade, no
privacidade. Isso porque nesse caso,
a chave usada para verificao literalmente pblica.
O GnuPG, software livre para
criptografia, trabalha a assinatura digital com uma funo de hash, que

Arquivo
original

gera um hash do contedo a enviar.


Ento, ele encripta esse valor com a
chave privada do remetente, e isto
a assinatura digital.
A assinatura enviada com uma
cpia completa e inalterada do contedo original. O destinatrio no
precisar utilizar um programa especfico para acessar as informaes
recebidas. O GnuPG ser utilizado,
nesse caso, apenas para verificar a
origem do contedo recebido, agindo da seguinte forma:
o programa l o contedo original e, com a mesma funo de
hash utilizada pelo remetente,
gera um hash do contedo recebido e armazena aquele valor;
em seguida, ele decripta a assinatura utilizando a chave pblica do remetente, gerando um
segundo valor que, sendo igual
ao primeiro hash, comprova a
origem do contedo recebido.

Caso se envie uma mensagem


digitalmente assinada a um destinatrio desprovido de programas de
criptografia, este conseguir acessar
(ler) a mensagem, mas no ser capaz de verificar sua autenticidade.
Relembrando: dado um par de
chaves, sendo uma delas para assinar
o documento, a outra usada para
verificar sua legitimidade.

DSA

O algoritmo de natureza assimtrica


DSA, Digital Signature Algorithm,
foi criado pelo governo dos EUA para
utilizao em assinaturas digitais.

Servidores de
chaves pblicas
comum disponibilizar chaves pblicas em servios gratuitos oferecidos na Internet. Indubitavelmente,
um dos mais notrios servidores de

Remetente
(Brasil)

Destinatrio
(Uganda)

Chave
privada

Chave
pblica

Assinatura
digital

Arquivo
digitalmente
assinado

Verificao

Arquivo
digitalmente
verificado

A criptografia capaz de garantir a privacidade e a autenticidade de um contedo.

Linux Magazine #63 | Fevereiro de 2010

73

SEGURANA | Criptografia

Tabela 2: Certificado digital e criptografia


Tipo de criptografia

Componente pblico Componente privado

Comum

chave pblica

chave privada

Certificao digital

certificado digital

chave privada

chaves para o padro PGP o do


Massachusetts Institute of Technology, em http://pgp.mit.edu/, que
oferece extrema agilidade para o
cadastro de chaves pblicas. Alm
dele, interessante citar a rede de
servidores de chaves CryptNET,
cujos servidores so apresentados
em http://keyserver.cryptnet.net.
Um desses servidores, localizado em
Boston, EUA, responde pelo nome
de bos.us.ks.cryptnet.net e pode ser
acessado pelo protocolo OpenPGP
HTTP Keyserver Protocol (HKP) na
porta 11371.
Tambm h uma listagem de servidores, disponibilizada pelo Open
Directory Project, um respeitado
diretrio de referncias da Netscape, em [2].

O padro OpenPGP

No ano de 1991, muitos pases


inclusive os EUA empregavam
legislaes pavorosamente intrusivas, restringindo o uso de criptografia como artifcio fortalecedor de
privacidade em transaes digitais.
Foi nesse contexto que um programador e ativista poltico chamado
Phil Zimmermann apresentou ao
mundo o programa PGP (Pretty
Good Privacy), possuidor de uma
robustez criptogrfica que excedia muitas das citadas leis. Aquilo
obviamente no seria facilmente
aceito, e Zimmermann foi ento
processado como uma espcie de
terrorista ciberntico.
Assim como hoje, as leis vigentes naquele momento no conseguiam acompanhar os avanos das
tecnologias ligadas aos sistemas de
informao. Tamanha era a confuso causada no mbito legislativo
74

que, nos Estados Unidos, embora


proibissem a disseminao daquelas informaes em formato digital,
simplesmente inexistia meno
troca dessas mesmas informaes
impressas em papel. Atento a essa
brecha, o Massachusetts Institute of
Technology publicou um livro com
o cdigo-fonte do PGP e o programa
ento ganhou a notoriedade de que
necessitava, consolidando-se inclusive fora do meio tcnico.
Finalmente em 1996, as investigaes sobre Phil Zimmermann
cessaram e ele ento fundou a empresa PGP Inc., por meio da qual
foi escrito o software proprietrio
PGP-5, lanado em 1997, mesmo
ano em que Zimmermann solicitou
autorizao ao IETF para que, baseando-se no PGP-5, pudesse escrever
uma especificao mundialmente
aceita, que viria a ser chamada de
OpenPGP, hoje definida na RFC
2440 [3].
A PGP Inc. foi comprada pela
Network Associates em 2002.

Certificado digital

Certificados digitais podem ser entendidos como chaves pblicas


evoludas e servem principalmente
a fins de e-business.
Utilizando um certificado dessa
natureza, o par chave pblica e chave
privada d lugar ao par certificado
digital e chave privada (
).
Respeitando rigores de jargo e
idioma, importante esclarecer a
diferena de significado entre certificado e certificao, muito embora
as duas palavras sejam utilizadas de
maneira permutvel sem maiores
problemas de interpretao para
o leitor.

Certificado, no presente contexto, pode designar um documento.


J o termo certificao diz respeito emisso de um certificado.
Remete ao ato de criao de um
certificado digital.
O certificado digital, especificamente, , como se afirmou previamente, uma chave pblica evoluda. De forma reducionista, trata-se
de um documento emitido por um
rgo competente, contendo uma
chave pblica e tambm algumas
informaes adicionais que atestam
a ligao existente entre tal chave e
seu detentor. Uma das informaes
adicionais presentes no documento
a assinatura digital do rgo que
o gerou.
Tecnicamente, o certificado digital um arquivo de computador
com suas peculiaridades bem definidas por um dos padres existentes.
O mais aceito entre tais padres se
chama X.509, definido pelo ITU-T
(International Telecommunication
Union, Telecommunication sector).
Exemplos de certificados digitais
so alguns arquivos com extenso cer
utilizados por websites.
Pessoas fsicas podem entender
o certificado digital como um documento de identificao para uso
na Internet, tal qual o RG e o CPF
em atividades cotidianas mais convencionais.
Tipicamente, um certificado digital possui:
uma chave pblica;
o nome da entidade que ele representa;
data de expirao do certificado;
nome da organizao que emitiu
o certificado (chamada AC, de
autoridade certificadora);
assinatura digital da referida
organizao;
um nmero de srie; e
algumas informaes adicionais,
chamadas genericamente de
caractersticas.

http://www.linuxmagazine.com.br

Criptografia | SEGURANA

Somente autoridades credenciadas podem emitir tais documentos


providos de valor jurdico. Isso envolve uma entidade confivel, que
um rgo certificador chamado de
autoridade certificadora ou AC
(CA, em ingls), que atesta o carter genuno de chaves pblicas.
O par chave privada e certificado
digital emitido por uma dessas autoridades serve, por exemplo, para
conferir valor legal a logs de sistemas e redes, tornando tais registros
aceitveis em tribunais.
Suponha que um funcionrio
mal intencionado de uma empresa utilize sua conta de usurio no
domnio para obter acesso indevido
a informaes confidenciais. Seus
empregadores ento detectam tal
comportamento por meio dos registros do domnio.
Caso a empresa no possua uma
ICP (infraestrutura de chaves pblicas), poder to somente punilo como funcionrio isto , com
multa ou demisso , mas no obter
grandes resultados denunciando-o ao
poder pblico caso no utilize pares
de chaves emitidos por um rgo

autorizado pelo Governo Federal.


Portanto, nesse caso, os logs que a
empresa tem como provas no possuiriam valor legal.
O processo de registro de uma
chave pblica pode ser comparado situao na qual cada cidado
brasileiro formaliza legalmente sua
identidade civil junto a um rgo
autorizado, por meio da obteno do
documento que se conhece por RG
(registro geral) ou carteira de identidade. Isso origina o que se conhece
por certificao digital.
Qualquer pessoa, fsica ou jurdica,
pode criar um certificado digital. Um
certificado de validao avanada
(EV certificate) um tipo de certificado til a bancos, pois apresenta
proteo adicional.
A CSR (certificate signing request,
ou requisio de assinatura de certificado), um arquivo de computador que contm uma mensagem,
que enviada a uma autoridade
certificadora para solicitar um certificado digital.
A
d alguns exemplos de
situaes em que certificados digitais so teis.

ARs e ACs

Organizaes supostamente confiveis, as autoridades de registro


(ARs) e as autoridades certificadoras
(ACs) atuam em conjunto quando da
emisso do certificado. Assim como
as ARs, as ACs solicitam emisses
de certificados, mas dividem-se em
dois tipos:
Autoridades de Certificao
Raiz, que emitem diretamente
os certificados, e
Autoridades de Certificao Intermedirias, cuja emisso de
certificados repassada s Autoridades de Certificao Raiz.
Existe, portanto, uma hierarquia
de ACs, que constitui uma condio
necessria para a criao de uma
infraestrutura de chaves pblicas.
Uma AC Raiz capaz de emitir
certificados digitais para outras ACs,
enquanto que uma AC Intermediria
cujo certificado foi emitido pela AC
Raiz capaz de emitir certificados
para entidades.
A confiana existe sempre de baixo
para cima, isto , a entidade confia

Tabela 3: Algumas utilidades de certificados digitais


Tipo de transao

Entidades cujos certificados so envolvidos

Transaes eletrnicas de risco realizadas entre


empresas do mercado financeiro

Empresas participantes da transao

Servios de Internet banking utilizados


por pessoas fsicas

Pessoas fsicas e computadores do banco

Servios de Internet banking utilizados


por pessoas jurdicas

Pessoas jurdicas e computadores do banco

Servios de compras online utilizados por pessoas fsicas

Pessoas fsicas e computadores da loja online

Servios de compras online utilizados por


pessoas jurdicas

Pessoas jurdicas e computadores da loja online

Servios para declarao de imposto de renda


para pessoas fsicas

Pessoas fsicas e computadores da Receita Federal

Servios para declaraes de imposto de renda


para pessoas jurdicas

Pessoas jurdicas e computadores da Receita Federal

Linux Magazine #63 | Fevereiro de 2010

75

SEGURANA | Criptografia

na AC Intermediria, que por sua


vez confia na AC Raiz.
Certas vezes, uma Autoridade de
Registro (AR) tambm Autoridade
Certificadora (AC).
Antes de emitir um certificado
digital, uma dada AC precisa de informaes sobre quem ou o que ir
utilizar aquele certificado e, alm disso, essa organizao fica incumbida
de controlar os referidos documentos
e revog-los se necessrio. Isso ocorre por meio da manuteno de uma
lista chamada CRL (Certificate Revocation List, ou lista de revogao
de certificados).

CRL

A Certificate Revocation List uma


lista de revogao de certificados
que contm certificados digitais que
perderam a validade por alguma razo. Exemplos que tornam nulo um
certificado digital:
atinge-se a data de expirao do
certificado,
caractersticas contidas no certificado deixam de ser vlidas,
ou
a chave privada referente ao
certificado comprometida.

ICP-Brasil

A ICP-Brasil torna oficial o par


chave privada e certificado digital
(chave pblica) e exige o padro
X.509v3. A AC raiz da ICP-Brasil
o ITI, Instituto Nacional de Tecnologia da Informao [4], uma
autarquia federal vinculada Casa
Civil brasileira.

Aberraes de cloud

O desespero ganancioso da indstria


em impor o modelo outrora chamado
Saas (Software as a Service), e agora cloud computing, cria algumas
aberraes criptogrficas do ponto
de vista conceitual. Uma delas diz
respeito aos servios de email baseados na Web, o webmail.
76

Algumas empresas oferecem o


servio de webmail, incluindo recursos de criptografia assimtrica no
padro PGP para a troca de mensagens. ocorre que essa situao
contraria o conceito de privacidade
inerente s chaves privadas. Tratamse de servios de webmail capazes
de gerar pares de chaves para seus
usurios sem entretanto aceitar que
estes utilizem pares que j possuem.
Os pares gerados ficam armazenados na to enaltecida nuvem, ou
seja, localizam-se nos servidores das
empresas que oferecem o servio.
Em alguns casos de provedores no
Brasil, as chaves privadas no so

reveladas aos seus usurios, apenas


as pblicas. O usurio do webmail
pode utilizar a tal chave privada
para decriptar mensagens recebidas e assinar mensagens que envia;
contudo, no pode visualiz-la. So
chaves privadas emprestadas. Isso
significa, basicamente, que as chaves
privadas geradas por tais servios no
so privadas.
O armazenamento de chaves pblicas em servidores da Internet faz
parte da criptografia assimtrica. J o
armazenamento de chaves privadas
claramente paradoxal e representa
uma ameaa privacidade dos clientes em questo.

Mais informaes
[1] Marcio Barbado Jr. e Tiago Tognozi, Criptografia: teoria e prtica:
http://lnm.com.br/article/3241
[2] Lista de servidores de chaves: http://www.dmoz.org/Computers/
Security/Products_and_Tools/Cryptography/PGP/Key_Servers/
[3] RFC 2440 do IETF: http://www.apps.ietf.org/rfc/rfc2440.html
[4] Instituto Nacional de Tecnologia da Informao:
http://www.iti.gov.br

Sobre os autores
Marcio Barbado Jr. (marcio.barbado@bdslabs.com.br) e Tiago Tognozi (tiago.tognozi@bdslabs
.com.br) so especialistas em segurana na BDS Labs (www.bdslabs.com.br).

Nota de licenciamento
Copyright 2010 Marcio Barbado Jr. e Tiago Tognozi
garantida a permisso para copiar, distribuir e modificar este documento sob os termos da Licena de Documentao Livre GNU (GNU Free Documentation License), Verso 1.2 ou qualquer
verso posterior publicada pela Free Software Foundation. Uma cpia da licena est disponvel
em http://www.gnu.org/licenses/fdl.html

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em
cartas@linuxmagazine.com.br
Este artigo no nosso site:
http://lnm.com.br/article/3292

http://www.linuxmagazine.com.br

Complete

a sua coleo

Mais
informaes
Site:
www.linuxmagazine.com.br

Terceiro fascculo do tutorial de criptografia

SEGURANA

Criptografia: teoria
e prtica, parte 3
Entenda os algoritmos de hash e comece a
praticar a criao de pares de chaves.
por Marcio Barbado Jr. e Tiago Tognozi

rosseguindo em nosso tutorial


de criptografia, vamos agora
explicar as ltimas questes
tericas e finalmente adentrar a seo
prtica usando o famoso e poderoso
GnuPG (GNU Privacy Guard).

Hash

Hash, checksum ou simplesmente sum


so nomes dados ao valor retornado
por funes de hash. Um hash
pode ser descrito como uma pequena
string de dados que representa uma
outra, maior que ela.
Tais valores so muito utilizados
em fingerprinting (atestado de procedncia), para comprovar o carter
genuno de informaes e so, em
verdade, strings.
Cabe elucidar que o termo checksum faz aluso ao ato de se verificar
o valor hash de uma informao, e
deve ser empregado nesse contexto.
J a designao sum pouco utilizada, pois prima por abreviatura
e derivao de checksum em detrimento de rigor tcnico e clareza
de sentido.
Um exemplo de uso de hash
para garantir que um arquivo recebido seja genuno e no tenha sido
adulterado. Identificar um arquivo
por sua assinatura hash propicia a
64

seu dono ou autor a oportunidade


de envi-lo a outras pessoas de modo
que, chegando tal arquivo em seu
destino, seus destinatrios podero
conferir se as informaes ali contidas no foram indevidamente manipuladas no trajeto.
interessante mencionar que a
confiabilidade do hash para identificar arquivos digitais maior que
a do DNA para identificar pessoas.

Funes de hash

As funes de hash utilizam algoritmos de disperso e atuam sobre


pores arbitrrias de informaes
(um grande arquivo, por exemplo),
extraindo dali um valor, o hash.
As boas funes de hash so aquelas cujas inversas so difceis de se
obter. Suas finalidades so diversas,
tais como:
tabelas hash: utilizadas em desenvolvimento de sistemas para
definir privilgios de acesso a
usurios e servios;
rainbow tables: so tabelas hash
construdas especificamente para
a recuperao de senhas;
fingerprinting: tcnicas j mencionadas, utilizadas para se verificar a integridade e autenticidade de arquivos de computador;

fingerprinting diz respeito s


tcnicas utilizadas para se comprovar a autenticidade de uma
identidade. A traduo do termo
leva ao conceito de impresso
digital, utilizada para identificar
pessoas. Entretanto, a ideia se
estendeu para o universo digital
e para a necessidade de identificar informaes. Enquanto um
cidado pode ser reconhecido
por sua impresso digital ou
at mesmo por seu DNA este
ltimo sendo mais confivel
, um arquivo de computador
pode ser identificado por seu
hash, tambm conhecido como
assinatura hash;
correo de erros: por meio
das verificaes de redundncia presentes em determinadas
transmisses de dados; e
criptografia: finalidade foco deste
documento, a proteo de informaes mediante a aplicao de
funes criptogrficas.
As funes de hash tambm
so utilizadas nas j populares
assinaturas digitais e em diversos mecanismos de autenticao.
Tambm so extremamente teis
em planos de gerenciamento de

http://www.linuxmagazine.com.br

Criptografia | SEGURANA

riscos e planos para continuidade de negcios, pois sua utilizao


preventiva facilita anlises forenses
de equipes CSIRT caso algum problema comprometa os sistemas de
informao de uma empresa.
Dentre as diversas funes de
hash, destacam-se algumas:
MD5: j foram identificadas falhas
no algoritmo desta funo, que entrega 128 bits em sua sada; e
SHA-1: especificaes do governo
norte-americano, por meio de sua
agncia de segurana (a NSA), as
funes SHA so publicadas como
padres FIPS pela agncia NIST. O
termo SHA significa secure hash
algorithm (algoritmo de hash seguro,
utilizando o jargo tcnico brasileiro).

Message

O mundo das funes de hash chama os argumentos (tambm conhecidos como entradas) de message
(mensagem), ou seja, caso uma
dessas funes resolva extrair o hash
de um arquivo MP3, tal arquivo a
message da funo, e o checksum
extrado chamado de message digest (mensagem digerida).

Tamanho da sada

O tamanho da sada um parmetro presente nas funes de hash,


frequentemente expresso em bits.
Ele traduz a dificuldade imposta
por uma funo. Valores comuns
(em bits) so 128, 160, 224, 256 e 512.

de protocolos; a ordem de camadas


pelas quais os dados devem passar
sempre apresentada na vertical,
como na
.
Desperta grandes preocupaes
a camada de aplicao, a mais alta
tanto no modelo OSI como no TCP/
IP. nela que acontecem transaes
como Internet banking, compras
com carto de crdito e entregas de
imposto de renda.
Embora a criptografia tambm
possa ser empregada nas camadas
de enlace de dados (criptografia de
enlace) e transporte, ela surte efeito de maior espectro na camada
de aplicao.

Aplicaes

Alm das situaes bsicas citadas e


exemplificadas anteriormente, a indstria de Segurana da Informao
apresenta diversos outros produtos baseados nos conceitos matemticos da
criptologia. Um dos mais conhecidos
o VPN (Virtual Private Network).
Tambm podemos destacar os
Hardware Security Modules (chamados s vezes de Host Security Modules
ou HSMs), appliances de segurana
que lanam mo de algoritmos criptogrficos (frequentemente utilizam

chaves pblicas) para proteger determinados computadores.


O mercado apresenta HSMs em
diversos formatos, destacando-se
entre eles:
um perifrico padro, que se comunica via porta serial RS-232;
um dispositivo que se comunica
via interface SCSI;
uma placa padro PCI;
um dispositivo IP; e
um dispositivo USB.
Os mais sofisticados podem ainda
atuar juntamente a tokens USB ou
smart cards para salvaguardar suas
chaves. Esta ltima caracterstica
imprescindvel a empresas de alguns
setores especficos da economia.
A proteo de informaes baseada em criptografia constitui um dos
pilares da indstria de cartes de crdito e dbito, formada por gigantes
do mercado de servios financeiros.
Os padres bem definidos de segurana adotados por tais empresas
conhecidos como PCI DSS (Payment Card Industry Data Security
Standard) exigem que as informaes contidas nos cartes sejam
codificadas antes de ser transmitidas
(end-to-end) e impem rigorosas

A camada de aplicao

Esta seo trata do papel da criptografia em contextos no to aparentes das


comunicaes entre computadores.
Camada um conceito ligado a
redes de computadores, que designa
uma etapa com processos distintos,
por meio dos quais dados em trnsito
devem passar.
A formalizao elementar de camadas pode ser encontrada nos modelos OSI e TCP/IP, padres adotados mundialmente para a definio

Linux Magazine #64 | Maro de 2010

Assim como o modelo OSI, a segurana tambm utiliza o conceito


de camadas.

65

SEGURANA | Criptografia

polticas para a administrao das


chaves utilizadas.

PCI DSS

O PCI DSS no representa uma


categoria de produtos ou servios,
mas um padro. O CPqD [1] foi
a primeira instituio da Amrica
Latina a se credenciar como QSA
(Qualified Security Assessor) pela PCI.

Encriptao de disco

Tcnica utilizada por alguns programas, que protege informaes


mesmo quando o sistema operacional que as abriga no est ativo. A
tcnica preenche uma lacuna de
segurana extremamente explorada
por Live CDs.
Diferentemente de programas
para encriptao de arquivos como
o PGP e o GnuPG, que utilizam
arquivos temporrios (buffers), um
programa para encriptao de disco
no os utiliza. Ele encripta e decripta
o contedo do disco de forma transparente, ou seja, quando o usurio
encerra uma sesso, a encriptao
ocorre automaticamente e, no incio
de uma nova sesso, tudo bastar a
esse usurio fornecer sua senha ou
passphrase. Nenhum conhecimento especfico necessrio para que
se possa usufruir de seus benefcios.
Recentemente, o termo on-the-fly
encryption (ou OTFE) passou a ser
utilizado para se referir a tais caractersticas, que se mostram especialmente interessantes para laptops.
Considere um executivo que possui um laptop e utiliza nele um programa para encriptao de disco.
Caso esse computador seja roubado,
as chances de se obter acesso s suas
informaes e da organizao onde
ele trabalha so mnimas.
Exemplos de programas para encriptao de disco so:
TrueCrypt, da TrueCrypt Foundation: software livre multiplataforma [2]; e
BitLocker, da Microsoft.
66

Gerenciamento
de identidades
O termo gerenciamento de identidades designa uma categoria de
produtos e servios que fazem uso
das tcnicas assimtricas de autenticao.

GnuPG ou GPG

Sendo o PGP um software proprietrio [3], o projeto GNU de Richard


Stallman sempre almejou a criao
de uma alternativa livre. Isso, entretanto, se mostrava impossvel, pois os
algoritmos utilizados para criptografia
assimtrica eram ento patenteados.
Ento, em 1997, assim como a
norte americana Diffie-Hellman [4],
algumas outras patentes expiraram.
Contudo, tal fato no fez muita diferena legal nos Estados Unidos,
base do projeto GNU. Continuava
sendo proibida a manipulao dos
referidos algoritmos a qualquer cidado norte americano, residente
ou no em seu pas.
Entretanto, a utilizao dos referidos algoritmos, visando implementar uma verso aberta do PGP,
tornou-se possvel em outras localidades do globo.
Atento a isso tudo, o americano
Stallman estimulou algumas comunidades hackers europeias a iniciar
esse trabalho. Foi quando o alemo
Werner Koch, do German Unix User
Group, comeou a desenvolver o
que hoje se conhece por GnuPG.
Atualmente com mais de dez anos
de idade, o projeto GnuPG (alternativamente citado como GPG), assim
como o clssico PGP de Zimmermann, um programa de computador
utilizado para criptografia simtrica
e assimtrica (chaves pblicas) que
segue o padro OpenPGP.
Lanado sob a licena GPL, o
GnuPG disponibilizado para sistemas baseados em UNIX, Mac OS X
e Windows. Ele compacta, encripta
e decripta informaes, e trabalha

com assinaturas digitais. Dois dos


maiores benefcios que seu uso oferece podem ser traduzidos na troca
segura de emails importantes e na
proteo de arquivos armazenados
em mquinas tradicionais ou em
mdias externas para fins de backup.

Poltica de
backup ideal
Considere a to tradicional quanto
frequente necessidade que as empresas possuem de realizar backups.
Os arquivos presentes nas referidas
cpias de segurana costumam ser
guardados em mdias fisicamente
separadas de suas mquinas de origem, ou seja, os backups so feitos
em CD-Rs, CD-RWs, DVDs diversos, unidades de fita etc. Se, por um
lado, isso oferece segurana mediante
fontes redundantes das informaes
em questo, acaba, por outro lado,
disponibilizando aqueles arquivos
em mais de um lugar e, consequentemente, expondo-os ao dobro do
risco de ser indevidamente acessados
ou manipulados.
Hipoteticamente, estando os arquivos originais em um servidor seguro,
quo protegidas estaro suas cpias?
Considerando um cenrio plausvel de furto das as mdias de backup,
o emprego do GnuPG em polticas
de backup reduziria significativamente as chances dos criminosos
utilizarem os arquivos, uma vez que
as informaes estariam encriptadas.

Funcionamento

Sofisticado e coerente, o GnuPG


trabalha com criptografia simtrica e
assimtrica, e no inclui algoritmos
patenteados como o IDEA, que, para
ser utilizado, exige a instalao de
um mdulo parte. Alm disso, possibilita o gerenciamento das chaves
cadastradas.
Exemplos de algoritmos e funes com os quais o GnuPG pode
trabalhar so:

http://www.linuxmagazine.com.br

Criptografia | SEGURANA

algoritmos RSA para criptografia


assimtrica;
algoritmos Triple DES (3DES),
AES e Blowfish;
funes hash MD5 e SHA; e
algoritmos ZIP, ZLIB e BZIP2
para compresso.
Uma vez instalado, o arquivo
(texto simples) a comportar as configuraes do usurio o gpg.conf.
Tambm interessante destacar
que o GnuPG apresenta recursos
de segurana que nem o PGP possui. o caso da proteo integridade MDC, um hash adicionado
mensagem encriptada que alerta
o dono da informao, caso esta
tenha sido adulterada por meio de
ataques do tipo chosen-ciphertext
(assim chamados pelo especialista
Bruce Schneier).
Esses ataques so aplicados em situaes que envolvem criptografia assimtrica, e exploram vulnerabilidades
dos destinatrios em trocas de emails.
A proteo MDC desativada por
padro ao se usar criptografia simtrica, buscando evitar problemas de
compatibilidade com o PGP.

Criptografia no KDE

As definies criptogrficas so acessveis por meio do Painel de Controle


do KDE, comando kcontrol. O KDE
oferece o Kgpg, interface grfica para
o GnuPG em Linux. Integrado ao
ambiente grfico, ele disponibilizado ao usurio em menus de contexto,
pela opo Arquivar & Criptografar.

Prtica

Vamos comear agora a parte prtica


desta srie de artigos.
Antes de focar o GNU Privacy
Guard, importante tomar certas
precaues que auxiliaro na utilizao do GnuPG. O GnuPG j vem
instalado na maioria das distribuies.
Esta seo introduz medidas para
a devida configurao do programa.
O arquivo gpg.conf exerce papel

Linux Magazine #64 | Maro de 2010

fundamental no comportamento
do programa. Trata-se de um arquivo texto utilizado para se ativar ou
desativar recursos do GPG.
Algumas instalaes do GnuPG
trazem a proteo integridade MDC
desativada por motivos de compatibilidade com o PGP. Isso faz com
que o programa gere avisos como:

h um plugin disponvel em [5], que


fornece os seguintes arquivos:
idea.c.gz: o arquivo fonte do
mdulo, compactado; e
idea.c.gz.sig: sua assinatura.

que no representa grande risco a


princpio; seu propsito alertar
sobre a possibilidade de se ativar a
proteo MDC.

Descompacte o pacote contendo o


fonte (idea.c.gz) e siga as instrues
de compilao contidas no prprio
arquivo.
Em seguida, edite corretamente
o arquivo texto de configurao, ~/.
gnupg/gpg.conf, para que a biblioteca
IDEA possa ser utilizada pelo programa. Insira a seguinte linha para que
o GnuPG carregue o mdulo IDEA:

Passphrase

load-extension idea

message was not integrity protected

O GPG protege a chave privada com


uma passphrase (ou frase-senha),
espcie de senha escolhida pelo usurio. Ou seja, h uma senha (a
passphrase, no residente no computador) protegendo outra senha (a
chave, abrigada no computador).
A passphrase simtrica, isto , a
mesma cadeia de caracteres utilizada
para criptografar e tambm para decifrar a chave privada. Nesse sentido,
parece-se com uma senha tradicional.
Assim, sempre que a chave privada for necessria, o usurio dever
fornecer a passphrase que, analogamente a uma senha tradicional,
deve ser escolhida com cautela.
Jamais escolha passphrases bvias,
pois tentativas de ataque frequentemente utilizam padres baseados em
nomes de parentes, amigos e bichos
de estimao relacionados ao alvo.
O ideal para a obteno de uma
passphrase segura e memorizvel
misturar nmeros e letras espordicos e no relacionados ao usurio,
de modo aleatrio, at totalizar cerca
de vinte caracteres.

Mdulo IDEA

A biblioteca para utilizao do algoritmo simtrico IDEA no vem


inclusa na instalao do GnuPG.
Caso sua utilizao seja necessria,

deixando uma linha em branco ao


final. Depois, salve e feche o arquivo.
Teste o reconhecimento da biblioteca com o comando:
$ gpg --version

ou
$ gpg2 --version

Por meio desses comandos, o algoritmo IDEA deve surgir como uma
opo de cipher.

Novo par de chaves

importante destacar que o GnuPG,


uma vez instalado, j est pronto para
a criptografia simtrica. Todavia, a
utilizao criptogrfica assimtrica
exige algumas medidas adicionais.
Caso ainda no se possua um par
de chaves ou, caso elas j existam
e ainda assim seja necessrio criar
um par adicional, deve-se fornecer
o seguinte comando:
$ gpg --gen-key

e ento, o GnuPG oferece o menu


para definir o tipo do par de chaves
a gerar; convm aceitar a oferta padro, DSA and Elgamal. Ela ativa
67

SEGURANA | Criptografia

o algoritmo de autenticao DSA


(Digital Signature Algorithm) para
assinaturas digitais, e tambm o
ElGamal para conferir privacidade
s comunicaes (confira [6] para
mais detalhes dos algoritmos). Aceite tambm 1024 para o tamanho de
chave em bits.
Tambm preciso definir o tempo
de renovao das chaves, fornecer
um nome e um endereo de email,
que sero ligados ao par. A criao
do par de chaves assimtricas finalizada com o fornecimento de
sua passphrase.
Confirmada a passphrase, o programa realiza ento uma srie de
clculos e cria uma chave pblica
e outra privada. Uma dica para essa
etapa est relacionada ao interessantssimo algoritmo envolvido: o
GnuPG tenta fornecer o par da maneira mais aleatria possvel, realizando clculos com todo o tipo de
informao que estiver disponvel,
inclusive dados provenientes do teclado e da atividade do disco rgido.
Portanto, aps fornecer e confirmar
a passphrase, durante a fase de produo do par de chaves, possvel
participar desse processo, digitando
algo no teclado e consequentemente, entregando dados adicionais ao
processo que culminar com a gerao das chaves.
Aps os clculos das chaves, visualiza-se a chave pblica criada,
exportando-a para o formato ASCII
com a opo --armor.
Abra o prompt de comando e,
dentro do diretrio no qual se deseja
abrigar o arquivo, digite:
$ gpg --armor \
--output chave_pub.txt \
--export E-MAIL_ASSOCIADO

Nesse comando, deve-se utilizar


o endereo de email associado quela chave; a opo --output deve ser
seguida do nome completo que o
arquivo a ser gerado possuir.
68

Ento, visualiza-se a chave pblica, abrindo-se o arquivo chave_pub.


txt com um editor de texto. Note que
as linhas iniciadas por --- tambm
fazem parte da chave. Alm disso, a
linha semelhante a:

Opcionalmente, entretanto, recomenda-se a realizao de cpias


de segurana tambm dos seguintes
arquivos:
pubring.gpg;
secring.gpg; e
trustdb.gpg.

----BEGIN PGP PUBLIC KEY BLOCK----

indica a natureza pblica (PUBLIC)


da chave exportada e serve a fins de
confirmao, ou seja, trata-se da chave
correta para divulgao. Com isso,
est feito o backup da chave pblica.

Esses arquivos so chamados de


chaveiros, pois guardam chaves e
informaes referentes ao par, no
apenas chave pblica. Recomendase, portanto, abrigar essas cpias em
um local de difcil acesso.

Mais informaes
[1] CPqD: http://www.cpqd.com.br/
[2] Truecrypt: http://www.truecrypt.org/
[3] PGP na Wikipdia: http://pt.wikipedia.org/wiki/PGP
[4] Mtodo de criptografia Diffie-Hellman na Wikipdia:
http://pt.wikipedia.org/wiki/Diffie-Hellman
[5] Plugin IDEA para GnuPG: ftp://ftp.gnupg.dk/pub/contrib-dk
[6] Marcio Barbado Jr. e Tiago Tognozi, Criptografia: teoria e prtica,
parte 2:
http://lnm.com.br/article/3292

Sobre os autores
Marcio Barbado Jr. (marcio.barbado@bdslabs.com.br) e Tiago Tognozi (tiago.tognozi@bdslabs
.com.br) so especialistas em segurana na BDS Labs (www.bdslabs.com.br).

Nota de licenciamento
Copyright 2010 Marcio Barbado Jr. e Tiago Tognozi
garantida a permisso para copiar, distribuir e modificar este documento sob os termos da Licena de Documentao Livre GNU (GNU Free Documentation License), Verso 1.2 ou qualquer
verso posterior publicada pela Free Software Foundation. Uma cpia da licena est disponvel
em http://www.gnu.org/licenses/fdl.html

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em
cartas@linuxmagazine.com.br
Este artigo no nosso site:
http://lnm.com.br/article/3330

http://www.linuxmagazine.com.br

Quarto fascculo do tutorial sobre criptografia

SEGURANA

Criptografia: teoria
e prtica, parte 4
Entenda por que os servidores de chaves tm falhas graves e veja
como importar chaves de outras entidades com o GnuPG.
por Marcio Barbado Jr. e Tiago Tognozi

a ltima edio [1], explicamos na prtica como gerar um novo par de chaves
criptogrficas com o GnuPG. Agora, vamos comear a explorar o uso
dessas chaves para garantir tanto a
privacidade quanto a legitimidade
das informaes.

Utilizao

Os comandos do GnuPG so sempre iniciados por gpg ou gpg2. Este


ltimo, quando presente, mais interessante em desktops por ser uma
verso otimizada para tais ambientes.
Para verificar se ambos esto presentes, basta usar os comandos:
$ gpg --version
$ gpg2 --version

Vale destacar que o GnuPG gera


arquivos de extenso .gpg quando
68

encripta, enquanto que o programa


proprietrio PGP usa .pgp.

Publicar e recuperar
chaves pblicas
Uma maneira de se disponibilizar
amplamente uma chave pblica
cadastr-la em ao menos um servidor
de chaves. Servidores dessa natureza
tambm podem ser utilizados para
obter chaves pblicas pertencentes
a outras entidades (pessoas, empresas, organizaes etc.). O GnuPG
j traz embutidos os recursos necessrios para:
publicar em servidores de chaves (remotos) cpias de chaves
que a princpio esto localmente
armazenadas; e
acessar servidores de chaves
(remotos) para obter chaves e
cadastr-las localmente.

Inicialmente, deve-se abordar o


key id, um nmero hexadecimal
composto pelos ltimos oito bytes
da fingerprint (impresso digital) da
chave pblica.
Suponha uma chave pblica com
a seguinte fingerprint:
0911 FAC4 936F F393 60CF C5EE 8C1F
8C96 B17B 1E29

Os ltimos oito bytes so:


B17B 1E29

e a key id da chave ser, retirando


o espao:
B17B1E29

cuja representao exige o prefixo


0x. Ou seja, a representao da key
id dessa chave :

http://www.linuxmagazine.com.br

Criptografia | SEGURANA

0xB17B1E29

Para public-la (isto , export-la),


use o comando:
$ gpg --keyserver \
[NOME_DO_SERVIDOR] \
--send-keys [KEY_ID]

E para recuper-la (cadastr-la):


$ gpg --keyserver \
[NOME_DO_SERVIDOR] \
--recv-keys [KEY_ID]

Existem casos em que se faz necessrio o cadastro local de uma


chave pblica que, a princpio, est
disponvel somente em um servidor
de chaves. As nicas informaes
disponveis so:
o nome do servidor, como pgp.
mit.edu; e
o key id da chave.
Sendo possvel, essas duas informaes j devem comear a fazer
parte de assinaturas de email e cartes de visita.

Servidores negligentes

O contedo desta seo possui finalidade educacional e carter denunciatrio. Um servidor de chaves mal
administrado prejudica as comunicaes entre seus usurios, causando um problema que pode assumir
propores indesejveis, dependendo
dos usurios prejudicados.
Exemplo melhor no h. O renomado key server do MIT (Massachusetts Institute of Technology),
localizado em pgp.mit.edu, o alvo
de nossa demonstrao. nele que
iremos demonstrar como a negligncia administrativa elimina todo
o sentido do uso desse servio.
Esta prova de conceito vai simular,
mas no efetivar o cadastro de uma
chave pblica que supostamente
pertence ao presidente dos Estados
Unidos da Amrica, Barack Obama.

Linux Magazine #65 | Abril de 2010

O cadastro falso deve incluir o


endereo eletrnico do presidente,
presidente@casabranca.gov.
Neste ponto, observe que o servidor de chaves do MIT j possui uma
chave pblica com o nome e o email
do presidente Obama.
Mos obra! Inicialmente, vamos
gerar localmente o par de chaves
para Obama (confira o ltimo artigo
desta srie [1] em caso de dvidas
nesse procedimento):
$ gpg --gen-key

Isso criar um par de chaves com


os algoritmos DSA (autenticidade)
e ElGamal (privacidade) com 1024
bits para o tamanho de chave.
Em seguida, fornea o nome Barack Hussein Obama e o endereo
de email presidente@casabranca.gov.
Seguindo uma linha responsvel
(mesmo sendo esta demonstrao
educacional apenas uma simulao),
a clonagem da chave cadastrada do
presidente no ser completa. Isso
significa que o par de chaves aqui
criado receber propositalmente o
comentrio:
PoC

para se diferenciar do original existente no key server, que apresenta o


comentrio:
DOD

Importante: note que no h


como saber se o cadastro original
realmente de Obama.
Conclui-se com uma passphrase e
voil! O par est criado, localmente
armazenado.
Seria ento necessrio enviar a
chave pblica desse par para o MIT.
Para isso, primeiro vamos obter a
fingerprint dessa chave:
$ gpg --fingerprint \
Barack Hussein Obama

O comando deve utilizar o nome


completo, pois essa foi a informao
passada ao GnuPG durante a criao
do par de chaves. Os ltimos 8 bytes
obtidos formam a key id.
Supondo portanto que a key id
seja 8753E6D3, poderamos publicar
efetivamente a chave pblica falsa
de Barack Obama com o comando:
$ gpg --keyserver \
[NOME_DO_SERVIDOR]
\
--send-keys [KEY_ID]

ou seja:
$ gpg --keyserver \
pgp.mit.edu \
--send-keys 8753E6D3

e a chave falsa estaria cadastrada!


Trocando em midos, geramos
uma chave pblica com caractersticas especficas e depois a enviamos para um servidor de chaves
mal administrado, que a aceitou
e a cadastrou prontamente sem
consisti-la.
A insegurana deste servio do
MIT reside na ausncia de metodologias adequadas para o cadastro de
chaves pblicas. Poderia ao menos
ocorrer o envio de um email para
o dono da chave recm-cadastrada,
solicitando uma confirmao antes
de disponibiliz-la publicamente.
Todavia, negligente e permissivo
que , o key server no apenas despreza essa possibilidade, como sequer
reconhece duplicidades existentes
em chaves que trabalham com o
mesmo endereo eletrnico. Um
ultraje ao padro OpenPGP.
Suponha ento que um cidado
norte-americano desavisado deseje
enviar uma mensagem eletrnica
criptografada a seu presidente. O pretenso remetente consultaria o servidor
do MIT e encontraria duas chaves
que se referem ao mesmo nome e
69

SEGURANA | Criptografia

ao mesmo email. As chances de o


hipottico cidado conseguir empregar a criptografia para se comunicar
com seu presidente so inversamente
proporcionais ao nmero de chaves
falsas publicadas.
Barack Hussein Obama no possuiria obviamente as chaves privadas
que fariam par com as chaves pblicas falsas. Portanto, se recebesse
mensagens importantes encriptadas
com uma chave falsa, no conseguiria acess-las. Cria-se, com isso, uma
barreira comunicao.
Quando presente, essa vulnerabilidade torna incoerente a utilizao
de servidores de chaves. Isso porque
a criptografia assimtrica oferece a
chance de uma segurana elevada
e, ao utilizar um servidor de chaves
mal administrado, abre-se mo desse
grau mais elevado de proteo em
prol da praticidade.
Escolhe-se empregar a criptografia quando se deseja o mais seguro
em detrimento do mais prtico. A
praticidade que busca agilizar processos, tornando-os apenas mais
rpidos, empiricamente insegura. No h nesta anlise qualquer
falcia, mas um convite reflexo
e ao debate.

Backup

A matemtica recomenda sempre a


soluo mais simples na resoluo
de problemas. Neste sentido, a criptografia simtrica a mais adequada
aos fins de backup. Embora seja possvel utilizar a assimtrica, isso seria
como matar mosquitos com metralhadoras, pois, sendo a encriptao
e a decriptao realizadas pela mesma pessoa, no h vantagem em se
empregar duas chaves. Seria como
fingir ter escondido alguma coisa
de si mesmo.
Recomenda-se que, para fins de
backup, o GnuPG proteja informaes adotando a seguinte sequncia
de medidas sobre um arquivo ou
diretrio:
compactar e
cifrar simetricamente (
).
Inicialmente, entretanto, convm
empregar precauo por meio de
duas medidas:
definir a passphrase a ser utilizada e
copiar o contedo a proteger
para outro diretrio local.
Recomenda-se criar um diretrio
exclusivo para tal fim e configurar a

varivel TMPDIR do usurio de forma


a apontar para esse local. Copie o
contedo:
$ cp -a \
ARQUIVO_OU_DIRETRIO] \
[DIRETRIO_TMP]

A opo -a realiza um copia recursiva, preservando links e privilgios.


O comando a seguir deve atuar sobre essa cpia. Ele vai compact-la
e encript-la, atribuindo a extenso
.gpg ao arquivo produzido:
$ gpg2 --output \
[ARQUIVO_OU_DIRETRIO].gpg \
--symmetric \
[ARQUIVO_OU_DIRETRIO]

Por exemplo:
$ gpg2 --output rfc1918.txt.gpg \
--symmetric rfc1918.txt

Neste exemplo, geramos o arquivo rfc1918.txt.gpg e, em seguida,


o rigor recomenda que se exclua
a cpia decriptada do contedo,
contida no arquivo rfc1918.txt. A
compactao padro utiliza o algoritmo Zip por questes de compatibilidade.

Restaurao

A restaurao do backup feita seguindo-se o mesmo procedimento,


porm, na ordem inversa: primeiro,
a decriptao do arquivo, e depois,
sua descompactao.
O comando a seguir deve ser executado no mesmo diretrio em que
reside o arquivo encriptado:
$ gpg2 --[ARQUIVO_OU_DIRETRIO] \
--decrypt [ARQUIVO
_ENCRIPTADO]

Por exemplo:
Fluxo de operaes para envio de dados criptografados.

70

$ gpg2 --output rfc1918.txt \


--decrypt rfc1918.txt.gpg

http://www.linuxmagazine.com.br

Criptografia | SEGURANA

Comunicao

A criptografia assimtrica aplicada


comunicao entre duas ou mais
partes resguarda a privacidade de
ambas. Se fosse usada a tcnica simtrica, seria necessrio o compartilhamento de senhas.
Existindo um remetente e ao menos um destinatrio, este ltimo
chamado de recipient pelo GnuPG.
Cabe ao recipient a tarefa de decriptar ou verificar a assinatura digital de
uma mensagem ou arquivo encriptado ou digitalmente assinado por
outra parte.
Todavia, nem toda troca de informaes que utiliza uma rede de
computadores realizada por email.
Pode-se trocar arquivos por meio de
mensageiros instantneos, ou ento
situao comum a empresas
deixar certos arquivos em diretrios
compartilhados para que um colega
o pegue mais tarde.
Obviamente, tal comunicao
exige que ambos os lados possuam
chaves e mais: que j tenham disponibilizado suas chaves pblicas
um ao outro.

Processo de definio do grau de confiana.

Tabela 1: Graus de confiana


Grau de confiana

Descrio

No sei ou no responderei

No confio

Confio pouco

Confio muito

Confio totalmente

Listagem 1: Chave pblica do autor deste artigo


--BEGIN PGP PUBLIC KEY BLOCK-Version: GnuPG v2.0.11 (GNU/Linux)
mQGiBEkdvC4RBACs31hu82H75EAzMCNehjYtokIqqkH2z1nEw1NDpm8EtjPMQCxw
g+RwLc7VHf+EfwdbC6nYuuI9RLr/Yb92/tmIy8PuhZMpuddBJWW1D0vcKJqUpS4j
XHXm3DsF/cax0xBtuUb43myckOrL25ZGQXS1M/ZqtTNR/8PEGZkaD/5KkwCg/FX8
ZWzw3P8uLdRvh/UlDzXN+lcD/3b2vvYvYMhh5FwdlnASVatot03DdZ122wH3wJay

Cadastrar
chaves pblicas

2DAtAxkLr7bwH+aL9PzEIWka3iLNZKnAJcyjj4Dxj9bEU64gtRGEIWDEoG4Cwh9u

O cadastro de uma nova chave pblica feito pela opo --import, utilizada juntamente com o comando
gnupg ou gnupg2.
Vamos tomar dois protagonistas
para uma srie de exemplos prticos que se estendero pelas prximas sees: Manuel e Luiza. Eles
possibilitaro apresentar situaes
e comandos recorrentes no uso da
criptografia assimtrica.
Supondo que Manuel trabalha
na matriz de uma fbrica e Luiza, na filial. Ambos possuem o
GnuPG instalado em seus sistemas operacionais e uma srie de
chaves pblicas j gravadas. Cada
uma dessas chaves corresponde a
um destinatrio.

0I8EuFdSN5QAXumvrTCfXwnQ53bLePCz8R9rEuX9zu6oFa2nzCthKoH+kos3fhx9

Linux Magazine #65 | Abril de 2010

K0ooZCJKUi9/j2kkU+fbpTw0st2H5R8xEWkTOWXy3Lclzi8bydaAAyvrfjfnxTac
rbEcA/93MN6UyNUUXXRv+QWD7YqnZSrAcAZaH289imJP7LtFrH+8IQQC97MVAKVq
QxtAQDYnCJiD/Mq/7tOntZKmerkxxzfzrScv75rsPQslrrGO+bRCTWFyY2lvIEJh
cmJhZG8gSnIgKGJkc2xhYnMuY29tLmJyKSA8bWFyY2lvLmJhcmJhZG9AYmRzbGFi
cy5jb20uYnI+iFkEExECABkFAkkdvC4ECwcDAgMVAgMDFgIBAh4BAheAAAoJEI1o
tYNuFxtYY6UAoL9BYLtQnKjp68iWwFPcjLSC7cAEAKDoYLbNcdYX9d+7bsMqaMn0
LadXAIhGBBARAgAGBQJKVPfsAAoJEDFGSJOKmKWE3rcAn3W5d3JUBv4AVaCVP9Yf
w15x7fDRAJ4z3X+S102+FcWqpB9lGdSh5FvVnLkBDQRJHbwvEAQAlLr9rpf7+0VV
1CLkXHza64TWuohYHvvBeiaDErPMqvyPTJVhQiePtt/kHDYjtT/lsyaKggkLbXd6
C1xAjkconDVULfiJMniVcEFfKyPNezqnwFt6IsggFk/ukakkkSO4hbYKBVFMM76c
PjnFWBi4Jxv64HmAFy4qc/Zc/DwEcV8AAwUD/AwsG53w0H7p6AybHE/kJ8Xe+5Sx
gltdtGmrI5uE32/hq9qDQObK0wEt3QH/QjItzqX31WqEokIID3wEvYJnJMgUvBll
BmEQXDCZ0rwSD8wUHrdiQZfaK7xqRyEkmQdGWTbGVzhBClezXSPlKIdEiPy9LY2g
xaefelfbPNPwDUrQiEYEGBECAAYFAkkdvC8ACgkQjWi1g24XG1jAfwCg6GMoeP4W
8gWnLUq8XPxqhsJNohMAni7Ll32CgFIt3YkiH4rwNsUWh2uc
=IdBq
--END PGP PUBLIC KEY BLOCK--

71

SEGURANA | Criptografia

Caso Manuel deseje listar os destinatrios que possui cadastrados, ele


deve utilizar o comando:
$ gpg --list-keys

Caso deseje adicionar um outro


destinatrio, ele deve inicialmente
possuir um arquivo com a chave
pblica do referido contato. Ento,
deve utilizar o comando a seguir no
diretrio que abriga o arquivo:
$ gpg --import [NOME_DE_ARQUIVO]

O primeiro passo abrir um


programa editor de texto com um
arquivo ainda vazio. E ento, utilizando a
, copie todo
o contedo (a chave pblica de
Marcio Barbado Jr.) e cole-o no
editor utilizado.
Em seguida, salve o arquivo com
o nome Barbado.txt.
Finalmente, para adicionar a
chave pblica desse destinatrio, basta entrar no diretrio onde
reside o arquivo criado e digitar
o comando:

Resta ainda a tarefa de atribuir


um grau confiabilidade da chave
desse contato:
$ gpg --edit-key \
Marcio Barbado Jr
> trust

Fornea um grau de 1 a 5 para a


confiabilidade que voc julgar cabvel chave pblica do destinatrio
em questo e, ao final, digite:
> quit

onde [NOME_DE_ARQUIVO] deve ser


substitudo pelo nome completo
do arquivo, mantendo-se as aspas.
Adicionado o destinatrio, possvel definir a autenticidade associada quela chave, ou seja, o grau
de confiana que se deposita nela.
O comando:
$ gpg --edit-key \
[NOME_DO_DESTINATRIO]

ativa um prompt para operaes sobre


a chave, e o comando trust:

$ gpg --import Barbado.txt

Depois, o comando:
$ gpg --list-keys

apresentar o destinatrio Marcio


Barbado Jr na lista de contatos.

para salvar o grau de confiana e sair


do prompt do GnuPG.
No prximo artigo, veremos como
usar as chaves de outros usurios para
enviar a eles arquivos encriptados, e
tambm como decriptar o contedo
recebido deles.

Mais informaes
[1] Marcio Barbado Jr. e Tiago Tognozi, Criptografia:
teoria e prtica, parte 3: http://lnm.com.br/article/3330

> trust

apresentar uma questo sobre o


grau de confiana que voc deposita nesse usurio para verificar as
chaves de outros usurios (
).
Isso possibilita a atribuio de um
valor de confiana chave. Os graus
de confiana, em ordem crescente,
vo de 1 a 5 (
).
Aps digitar o valor de confiana, basta usar o comando quit para
salvar a alterao e sair do prompt
do GnuPG.

Exerccio

Recomenda-se um pouco de prtica


neste momento: vamos criar um arquivo texto com uma chave pblica,
e em seguida vamos cadastrar um
destinatrio no GnuPG.

72

Sobre os autores
Marcio Barbado Jr. (marcio.barbado@bdslabs.com.br) e Tiago Tognozi (tiago.tognozi@bdslabs
.com.br) so especialistas em segurana na BDS Labs (www.bdslabs.com.br).

Nota de licenciamento
Copyright 2010 Marcio Barbado Jr. e Tiago Tognozi
garantida a permisso para copiar, distribuir e modificar este documento sob os termos da Licena de Documentao Livre GNU (GNU Free Documentation License), Verso 1.2 ou qualquer
verso posterior publicada pela Free Software Foundation. Uma cpia da licena est disponvel
em http://www.gnu.org/licenses/fdl.html

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em
cartas@linuxmagazine.com.br
Este artigo no nosso site:
http://lnm.com.br/article/3405

http://www.linuxmagazine.com.br

ltimo fascculo do tutorial sobre criptografia

SEGURANA

Criptografia, teoria
e prtica: parte 5
No artigo final desta srie, consolidam-se as prticas para envio e recepo
de arquivos e mensagens criptografados e assinados.
por Marcio Barbado Jr. e Tiago Tognozi

inalmente, chegamos ao ltimo artigo desta srie. Para


finalizar, veremos como aplicar todos os conceitos e prticas
explicados at aqui, com o intuito
de assinar e cifrar mensagens para
envi-las com privacidade e garantia
de autenticidade, assim como decifrar
essas mesmas mensagens e conferir
sua assinatura no recebimento.

Encriptar para enviar

Lembram-se do exemplo de Manuel e


Luiza? Um j possui a chave pblica
do outro, pois esto sempre trocando
arquivos confidenciais.
As redes da matriz e da filial so
interligadas por uma VPN, formando uma s rede. E eis que Manuel
precisa disponibilizar a Luiza uma
importante planilha.
Como de costume, ele ir encriptar tal arquivo e ento coloc-lo no
servidor de arquivos da rede, acessvel
a ambos. Antes de enviar a planilha
para o servidor, a primeira ao a ser
tomada por Manuel encript-la com

Linux Magazine #66 | Maio de 2010

a chave pblica de Luiza. Via linha


de comando, isso seria feito assim:
$ gpg --recipient Luiza \
--output \
Faturamento-Julho09.ods.gpg \
--encrypt \
Faturamento-Julho09.ods

Ou seja, Manuel diria ao GnuPG para


utilizar a chave de Luiza para gerar o
arquivo Faturamento-Julho09.ods.gpg,
encriptado, resultante do original,
chamado Faturamento-Julho09.ods.
Recomenda-se que o arquivo a
ser gerado possua o nome completo
do original, incluindo extenso, que
no caso .ods, acrescido da nova
extenso, .gpg.
Manuel acabou de criar o arquivo
Faturamento-Julho09.ods.gpg, que
um arquivo encriptado pronto para
ser levado ao servidor de arquivos.
A nica pessoa capaz de decriptar
facilmente a planilha Luiza, pois
pertence a ela a chave pblica utilizada na encriptao.

Mltiplos destinatrios

E se Manuel precisar disponibilizar


a planilha protegida para outros funcionrios alm de Luiza? certo que
ele deve possuir cadastradas as chaves
pblicas de cada um dos destinatrios,
mas o GnuPG torna desnecessria a
repetio de comandos.
Manuel fornece um nico comando (longo, verdade) especificando a
lista de pessoas que podero decriptar
o arquivo. E a nica diferena com
relao ao comando apresentado
anteriormente que, agora, cada
destinatrio exige uma opo --recipient adicional, por exemplo:
$ gpg --recipient Luiza \
--recipient Marcio \
--recipient Tiago \
--recipient Manuel --output \
Faturamento-Julho09.ods.gpg \
--encrypt Faturamento-Julho09.ods

Pode parecer estranho o fato de


Manuel ter especificado a si mesmo
nesse comando. Porm, cabe desta69

SEGURANA | GnuPG

car que, ao receber o comando com


mais de uma opo --recipient, o algoritmo de encriptao empregado
pelo GPG utiliza as chaves pblicas
de todos os destinatrios envolvidos.
Com isso, ele gera um arquivo encriptado cujo tamanho sofre pequenos
acrscimos, de forma proporcional
quantidade de pessoas listadas, e
apenas as chaves privadas daquelas
pessoas conseguiro decifr-lo.
Portanto, j que ir possibilitar a
decriptao da planilha a mais de um
destinatrio, e ainda considerando
que esse procedimento no produz
grandes aumentos no tamanho do
arquivo encriptado, Manuel inclui a
si mesmo na lista, possibilitando que
sua chave privada tambm consiga
decifrar o arquivo.
Mas ateno: na verdade, mesmo
nos casos em que precisar disponibilizar o arquivo a um nico destinatrio, interessante acrescentar uma
opo --recipient adicional para si
mesmo; trata-se de uma medida de
segurana que permitir a Manuel

acessar o contedo do arquivo facilmente caso o original (decriptado)


no esteja disponvel.

Decriptar ao receber

Esta seo descreve os procedimentos


necessrios para se decriptar arquivos
assimetricamente, ou seja, utilizando
uma chave privada.
Continuando com o exemplo de
Manuel e Luiza, ela deseja restabelecer o contedo original do arquivo
Faturamento-Julho09.ods.gpg que Manuel deixou no servidor de arquivos.
Ento, ela copia o arquivo encriptado para um diretrio local, no qual
fornece o seguinte comando:
$ gpg --decrypt-files \
Faturamento-Julho09.ods.gpg

que solicitar a passphrase para utilizar sua chave privada e ento decriptar o arquivo, transformando-o
de volta numa planilha que possa
ser aberta e utilizada por Luiza:
Faturamento-Julho09.ods.

Listagem 1: Arquivo mara.txt


Luiza, ouvi rumores de que voc ser promovida.
Ass.: Manuel dos Santos

Listagem 2: Arquivo mara.txt.asc

$ gpg --decrypt faturamento.txt

Assinar para enviar

Esta seo apresenta o comando


--clearsign, que atribui autenticidade
a texto simples, utilizando a chave
privada do remetente. O destinatrio
poder testar o carter genuno do
texto recebido somente se possuir a
chave pblica do remetente.
Suponha que Manuel crie um arquivo texto chamado mara.txt cujo
contedo mostrado na
.
Oras, qualquer um poderia se
passar por Manuel e criar o arquivo
acima. O trecho Ass.: Manuel dos
Santos no realmente uma assinatura. No prova que o autor daquele
arquivo seja ele de fato.
Manuel, ciente disso, decide que,
antes de enviar o arquivo, ir tambm assin-lo digitalmente com o
comando:
$ gpg --local-user [KEY_ID] \
--clearsign mara.txt

---BEGIN PGP SIGNED MESSAGE--Hash: SHA1

ou simplesmente:

Luiza, ouvi rumores de que voc ser promovida.

$ gpg --clearsign mara.txt

Ass.: Manuel dos Santos


---BEGIN PGP SIGNATURE--Version: GnuPG v1.4.7 (MingW32)

A primeira opo de comando


til em situaes nas quais se possui mais de um par de chaves - por
exemplo, um para o email profissional e outro para o pessoal.
Com o comando fornecido, o
GnuPG ir utilizar a chave privada
de Manuel e, portanto, solicitar sua
passphrase.

iD8DBQFKiz6VFTizx1Qd664RApsZAKCR87GzrdUhi4vnUaJD6kMz0BU5NQCgkmcq
LGD5Jn3u4qbqJfcM2KGjp7g=
=8RLi
---END PGP SIGNATURE---

70

Considerando arquivos de texto simples, encriptados, possvel


fornecer um comando via terminal
que permita a visualizao de seus
contedos decriptados sem que essa
ao gere um arquivo decriptado.
Ento, supondo o arquivo encriptado faturamento.txt.gpg, o comando
para a visualizao de seu contedo
no terminal seria:

http://www.linuxmagazine.com.br

GnuPG | SEGURANA

O contedo do arquivo mara.txt


ser ento digitalmente assinado
e o resultado ser escrito em um
novo arquivo, mara.txt.asc, criado
automaticamente, que ficar com
o contedo mostrado na
.
O arquivo de extenso .asc est
pronto para ser enviado. No est
encriptado, apenas assinado (no
h privacidade, apenas autenticidade). Seu contedo pode ser acessado
(lido) normalmente. interessante
destacar as trs formas tradicionais
que Manuel pode utilizar para fazer
com que a mensagem digitalmente
assinada chegue a Luiza. Ele pode:
disponibilizar o arquivo mara.
txt.asc no servidor de arquivos;
enviar o arquivo anexado em
uma mensagem eletrnica; ou
copiar e colar o contedo do
arquivo no corpo de uma mensagem eletrnica a enviar.
A ltima opo pode gerar erros,
dependendo dos clientes de email
envolvidos na comunicao. Muitos
desses erros se manifestam no cliente
do destinatrio, durante a verificao da assinatura digital. Tais falhas
podem ser evitadas, configurando-se
devidamente a codificao da sada
do cliente remetente. Por exemplo:
uma conta do Gmail, utilizada via
Web, exigir mensagens enviadas no
formato UTF-8 (Unicode).

Verificar assinatura
ao receber
Esta seo pressupe que o destinatrio
j possua a chave pblica do remetente
(confira a seo Cadastrar chaves pblicas do quarto artigo desta srie [1]).
O comando --verify permite
que o lado receptor de um arquivo
digitalmente assinado possa conferir
a autenticidade desse arquivo utilizando a chave pblica da entidade
que o enviou.
Luiza recebe ento o arquivo mara.
txt.asc. Para saber se este veio mes-

Linux Magazine #66 | Maio de 2010

mo de Manuel, verifica a assinatura


digital com o comando:
$ gpg --verify mara.txt.asc

Com isso, o GnuPG ir utilizar a


chave pblica de Manuel para testar a assinatura e relatar, na sada
padro do terminal, se vlida ou
no (
).
Caso a mensagem tenha chegado a
Luiza no corpo de um email, tudo o
que ela tem a fazer abrir um editor
de texto com um novo arquivo texto
em branco, copiar e colar o contedo
do corpo da mensagem recebida no
arquivo e salv-lo com um nome, que
pode ser mara.txt.asc. Da em diante, basta utilizar o comando --verify
mostrado nesta seo.

Emails

A criptografia assimtrica aplicada


troca de mensagens eletrnicas
resguarda a estabilidade do relacionamento entre parceiros comerciais
e a privacidade das pessoas por trs
de tudo isso. Ela particularmente
interessante pois envolve a automao
das aes de encriptao, decriptao, assinatura e verificao.
Um email pode basicamente possuir dois pedaos a proteger:
o corpo: basicamente texto;
e/ou
o(s) arquivo(s) anexado(s).
Alguns programas clientes de
email, configurados devidamente,
podem automatizar todo o processo
criptogrfico tanto no envio quanto no
recebimento. E aqui cabe meno
necessidade de se utilizar codificao
Unicode nos referidos programas.

O KMail e o Evolution j possuem


o GnuPG integrado. Note, entretanto, que os exemplos de Manuel e
Luiza tambm servem para ilustrar
situaes nas quais o primeiro deseja enviar uma mensagem eletrnica
contendo um arquivo encriptado,
anexado. E nessa situao, o processo
envolve pouca automao, j que a
encriptao e a decriptao devem
ser realizadas manualmente pelos
usurios, respectivamente antes de
enviar e depois de receber o email.

Envio

O tenebroso e inseguro panorama que


a Internet vem revelando ao mundo
tem forado usurios a adotarem
prticas mais responsveis no envio
de mensagens eletrnicas.
Recomenda-se sempre redigir
emails sem formatao. Esta medida,
alm de contribuir com a comunicao criptografada, combate o terror
causado por mensagens eletrnicas
formatadas em HTML. Trata-se de
uma criteriosa bandeira, hoje defendida formalmente pela campanha
ASCII ribbon campaign, que toca
uma questo de segurana bastante
atual e latente, dadas as novas ameaas da Web, representadas em parte
por textos com formatao HTML
que certas vezes, ao ser carregados,
fazem chamadas a contedos remotos.
A formatao HTML perigosa
e desrespeitosa no sentido de abusar
da confiana e do desconhecimento tcnico do destinatrio. Muitas
organizaes j esto bloqueando
emails dessa natureza.
Devidamente configurado, o cliente de email que Manuel usa emprega
texto simples com codificao Uni-

Listagem 3: Confirmao da assinatura do remetente


gpg: Signature made 08/18/09 20:51:49 using DSA key ID 541DEBAE
gpg: Good signature from Manuel dos Santos (GnuPG test.) <msantos@
bdslabs.com.br>

71

SEGURANA | GnuPG

code para o corpo das mensagens.


Suponhamos que ele queira enviar
a Luiza um email cujo corpo possui um simples aviso, que deve ser
digitalmente assinado.
O programa de envio infelizmente
no faz isso automaticamente durante
o envio. Ento, Manuel dever redigir
o contedo do email em um editor
de texto. Escrita a mensagem, ele a
salva com formato ASCII no arquivo
reuniao.txt (
).
O texto do arquivo ainda no est
digitalmente assinado. Convm observar que o trecho:
Ass.: Manuel dos Santos

no realmente uma assinatura.


No prova que o autor daquele texto
seja de fato Manuel, que deve ento
assinar digitalmente o arquivo para
que Luiza possa verificar (utilizando
a chave pblica do colega) se aquele
aviso partiu da suposta fonte.

Manuel ento fornece um comando em seu computador, que atribui


autenticidade ao texto, assinando-o
digitalmente:
$ gpg --local-user [KEY_ID] \
--clearsign reuniao.txt

ou simplesmente:
$ gpg --clearsign reuniao.txt

Com qualquer um desses comandos, o GnuPG ir utilizar a chave


privada de Manuel, e portanto solicitar sua passphrase. Manuel deve
fornec-la para que o contedo do
arquivo reuniao.txt seja digitalmente
assinado e o resultado seja escrito em
um novo arquivo texto, reuniao.txt.
asc, criado automaticamente, que ter
o contedo mostrado na
.
Manuel deve ento copiar e colar
o contedo do arquivo texto de extenso .asc no corpo da mensagem

Listagem 4: Arquivo reuniao.txt


Luiza, amanh ocorrer uma reunio com o Brulio, aqui na matriz s
18:30.
Ass.: Manuel dos Santos

Listagem 5: Arquivo reuniao.txt.asc


---BEGIN PGP SIGNED MESSAGE--Hash: SHA1
Luiza, amanh ocorrer uma reunio com o Brulio, aqui na matriz s
18:30.
Ass.: Manuel dos Santos
---BEGIN PGP SIGNATURE--Version: GnuPG v1.4.7 (MingW32)
iD8DBQFKkrGfFTizx1Qd664RAmJIAJ9twL6gZHF9nCgVx1hafY6H9GaPxQCfaHao
Zrg0ebcxjkS82NTUW3G2qRw=
=H4Wj
---END PGP SIGNATURE---

72

eletrnica a ser enviada. Feito isso,


basta efetivamente envi-la.

Recepo

Caso o corpo da mensagem esteja


encriptado e o programa de email
que Luiza utiliza no possa decriptlo automaticamente durante o recebimento da mensagem, ela dever:
abrir um editor de texto e criar
um novo arquivo, inicialmente
em branco; e
copiar o contedo encriptado
do corpo do email para o novo
arquivo texto recm-criado e
salv-lo com final .txt.asc, como
em recadinho.txt.asc;
Luiza salva o arquivo (ainda encriptado) no diretrio meus_recadinhos/.
Ento, dentro desse diretrio, ela
deve fornecer o seguinte comando:
$ gpg --decrypt-files \
recadinho.txt.asc

e o GnuPG ir solicitar a ela sua passphrase para ento decriptar o arquivo,


transformando-o em recadinho.txt.
Claro que, se Manuel tiver utilizado outra chave pblica que no a
de Luiza, ela no conseguir decifrar
o tal recadinho.
Tudo transcorre normalmente e
Luiza decifra o recado, contendo um
lembrete de Manuel para que ela no
se esquea de enviar uma foto em
formato digital que havia prometido.
Ento, Manuel recebe no dia seguinte um email de Luiza com um
arquivo anexado, biquini.jpg.gpg ,
que est encriptado.
Ele salva o arquivo localmente e,
com o seguinte comando, decripta-o:
$ gpg --decrypt-files \
biquini.jpg.gpg

Agora, Manuel pode visualizar a


foto, pois o comando que forneceu
gerou o arquivo biquini.jpg, que no
est mais protegido.

http://www.linuxmagazine.com.br

GnuPG | SEGURANA

Soluo de problemas

O interessante modelo colaborativo


proposto pelo movimento FOSS, seja
ele da linha catedral ou bazar,
permite, por exemplo, que sees
como esta, as boas e velhas solues de problemas, possam evoluir.
Colabore com o desenvolvimento do GnuPG. Caso voc encontre
algum problema no abordado por
este texto, existem ainda outros meios
atravs dos quais possvel interagir
com as comunidades ligadas s tecnologias aqui abordadas.
Mais do que apresentarem problemas e solues, o referido modelo
possibilita ao usurio a participao
na busca por solues de novos problemas que no sejam contemplados
por qualquer outra documentao.
Caso voc encontre algum problema interessante, estude-o. Caso
obtenha uma boa soluo, coloque-a
no papel, elabore-a com a maior
didtica possvel em ingls e encaminhe-a para o FAQ do GnuPG.
Esse FAQ mantido por David D.
Scribner e recebe sugestes em ingls
por meio do email faq@gnupg.org.
Eventualmente, caso voc no se
consiga resolver um determinado problema, consulte os arquivos da lista
de discusso do GnuPG [2][3][4].
Se, mesmo recorrendo s listas
de discusso, o bug persistir, envie
um relatrio ao BTS (bug tracking
system) do GnuPG [5] e tambm
um email para gnupg-bugs@gnu.org.

Concluses

A criptografia sofreu notvel evoluo


ao assimilar conceitos da teoria quntica. A ento chamada criptografia
quntica passou, portanto, a unir a
matemtica dos conceitos clssicos
s leis da fsica.
Lembre-se: chaves pblicas podem ser de conhecimento pblico.
Os paradigmas vigentes, referentes
ao tratamento digital inadvertido de
informaes, passam uma falsa ideia
de segurana pelo fato de que even-

Linux Magazine #66 | Maio de 2010

tuais acessos no autorizados a estas


so muitas vezes praticados sem que
as vtimas sequer percebam a quebra
de privacidade.
possvel abrir mo da selvageria
e insegurana generalizadas que acometem o trfego e o armazenamento
de informaes digitais. O risco de
sua exposio ser to grande quanto
a negligncia de seus responsveis.
Assim, uma vez mais, o conhecimento, livremente disseminado,
capaz de preencher lacunas sociais, civilizar e lapidar costumes,
aprimorando-os.

Quanto aos servidores de chaves,


ilusria a percepo de que proporcionam alguma praticidade ao
usurio. A praticidade que almeja
produtividade contra a segurana.
E ainda, referindo-se ao modelo
colaborativo de desenvolvimento,
proposto pelo movimento do Software
Livre; as mltiplas instncias disponibilizadas para solucionar problemas
criam uma grande comunidade de
colaboradores e fazem, nitidamente,
as tecnologias de domnio pblico
evolurem mais rapidamente que as
tecnologias fechadas.

Mais informaes
[1] Marcio Barbado Jr. e Tiago Tognozi, Criptografia: teoria e
prtica, parte 4: http://lnm.com.br/article/3405
[2] Listas de discusso do GnuPG:
http://www.gnupg.org/documentation/mailing-lists.html
[3] Histrico da lista dos usurios do GnuPG:
http://marc.theaimsgroup.com/?l=gnupg-users&r=1&w=2
[4] Histrico da lista dos desenvolvedores do GnuPG:
http://marc.theaimsgroup.com/?l=gnupg-devel&r=1&w=2
[5] Rastreamento de bugs do GnuPG:
https://bugs.g10code.com/gnupg/index

Sobre os autores
Marcio Barbado Jr. (marcio.barbado@bdslabs.com.br) e Tiago Tognozi (tiago.tognozi@bdslabs
.com.br) so especialistas em segurana na BDS Labs (www.bdslabs.com.br).

Nota de licenciamento
Copyright 2010 Marcio Barbado Jr. e Tiago Tognozi
garantida a permisso para copiar, distribuir e modificar este documento sob os termos da Licena de Documentao Livre GNU (GNU Free Documentation License), Verso 1.2 ou qualquer
verso posterior publicada pela Free Software Foundation. Uma cpia da licena est disponvel
em http://www.gnu.org/licenses/fdl.html

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em
cartas@linuxmagazine.com.br
Este artigo no nosso site:
http://lnm.com.br/article/3475

73

Вам также может понравиться