Resolvi escrever um pouco sobre um tema que acho muito interessante: a segurança proporcionada pelo uso de criptografia e assinatura digital. Para não ficar apenas nos conceitos básicos, vou contar um pouco da história do software livre chamado GnuPG, que para mim é uma boa ferramenta para quem deseja aproveitar os benefícios das tecnologias citadas acima.
Para começar, proponho uma pequena reflexão e por isso peço que leia as quatro perguntas abaixo. Perceba que cada pergunta “mestre” possui uma pergunta “complemento” que tem por objetivo apimentar a discussão.
a) Na empresa onde você trabalha, quantos processos importantes são realizados utilizando o sistema de e-mail? Quando você recebe um e-mail, que garantias você tem de que ele foi enviado pela pessoa que consta no remetente?
b) Quantas vezes por mês você entra no site do seu banco para ver seu saldo, efetuar um pagamento ou realizar uma transferência? Como garantir que o site do banco que você está acessando é legítimo e não se trata de um site clonado por pessoas mal intencionadas?
c) Quem presta suporte ao usuário quando a estação de trabalho apresenta um defeito na empresa onde você trabalha? Além de consertar o defeito, em que tipo de informações o técnico poderia “dar uma olhadinha”?
d) Se você puder escolher, prefere usar um desktop ou um notebook? Se seu notebook for roubado, que informações estarão disponíveis para a pessoa que o receber?
Em 1991, Phil Zimmermann criou uma aplicação chamada PGP – Pretty Good Privacy. Seu objetivo era fornecer uma ferramenta de criptografia e assinatura digital. Distribuído pela PGP Inc., em poucos anos o PGP atingiu grande popularidade e muitas aplicações foram desenvolvidas para serem compatíveis com seu padrão de criptografia.
Em 1997, convencido por outros desenvolvedores, Phil propôs ao IETF a criação de um padrão aberto de criptografia e assinatura digital, chamado OpenPGP. Um ano depois, o IETF publicou a RFC 2440, substituída em 2007 pela RFC 2880.
O GnuPG é um projeto GNU que implementa por completo o padrão OpenPGP definido pela RFC 2880 do IETF. Também conhecido como GPG, ele possibilita a criptografia e assinatura digital de dados e comunicações.
Funciona também como um versátil sistema gerenciador de chaves e oferece módulos de integração para todo tipo de diretórios públicos de chaves. O projeto envolve um interpretador de comandos, interfaces gráficas, bibliotecas, rica documentação e recursos que possibilitam fácil integração com outras aplicações.
Algumas Características do GnuPG
-
-
Distribuído sobre a GNU GPL, ou seja, seu código fonte é aberto;
-
O programa é gratuito;
-
Não utiliza algoritmos patenteados;
-
Implementa todo o protocolo OpenPGP (RFC 2880);
-
Compatível com várias versões do PGP;
-
Disponível em Português e em mais de 10 outros idiomas;
-
Trabalha com os principais algoritmos de criptografia;
Sobre Criptografia e Assinatura Digital
O termo criptografia tem sua origem em palavras gregas:
kriptos = oculto + grifo = escrita
Quando a mesma chave é utilizada para cifrar e decifrar uma mensagem, dizemos que a criptografia é simétrica.

Quando uma chave é utilizada para cifrar e outra para decifrar, dizemos que a criptografia é assimétrica.

O processo de assinatura digital é muito similar à criptografia assimétrica utilizada para confidencialidade e, de fato, usa desta tecnologia.
A diferença é que a chave privada do emissor é utilizada na assinatura do documento e a chave pública do emissor é utilizada pelos receptores para validar a assinatura. A assinatura digital tem como principais objetivos garantir a autenticidade, integridade e não repúdio de uma mensagem.
O processo de assinatura digital começa com o cálculo do HASH do documento. O HASH consiste de uma seqüencia de caracteres de tamanho fixo extraída a partir de uma mensagem. Utiliza funções matemáticas e algoritmos específicos.
Exemplo: considere a mensagem “Hello World”.
HASH(“Hello World”) = “b10a8db164e0754105b7a99be72e3fe5”

Qual foi minha surpresa quando descobri que um famoso worm que anda fazendo muito estrago quando escrevi este post, chamado Conficker, utiliza assinatura digital para verificar se as instruções que buscou na Internet são legítimas, ou seja, escritas por uma pessoa com autorização para tal, e, portanto, devem ser executadas.

Então, caro leitor, fica aí minha pergunta principal: se o lado negro da força está utilizando assinatura digital para garantir que um worm execute apenas aquilo que deve executar, por que muitos de nós ainda não utilizamos a mesma tecnologia para aumentar a segurança das nossas comunicações?
Segue uma lista de URLs que trazem mais detalhes sobre os temas abordados:
http://www.gnupg.org
http://www.openpgp.org
http://pt.wikipedia.org/wiki/OpenPGP
http://www.ietf.org/rfc/rfc4880.txt
http://mtc.sri.com/Conficker
https://www.icpbrasil.gov.br