Revista Do Linux
EDIÇÃO DO MÊS
 CD do Mês
 Jogos
 Kernel

 Entrevista
 Capa
 Tutorial
 Debian
 Programação
 Portáteis
 Segurança

 

Um criptosistema ao nosso alcance - Gnu Privacy Guard
Na edição 12, Renato Martini nos alertou para os perigos da vigilância (espionagem?) oficial de nossas comunicações. Neste artigo, ele nos mostra uma maneira segura de manter nossas mensagens longe dos olhos dos "arapongas" governamentais

A criptografia como um conhecimento sistemático possui sem dúvida uma história bastante longa. Mas é nos dias atuais, na Era da Sociedade da Informação, que ela deixa de ser um tema somente técnico, e por isso restrito. Houve uma "virada" nesta história. Como disse o engenheiro Ronald Rivest: "O uso difundido da criptografia é uma conseqüência necessária da revolução na informação". Mesmo assim, o brasileiro ainda usa pouco os importantíssimos recursos da criptografia, e por certo deveremos reverter em breve tal quadro. O aprendizado dos softwares disponíveis, e a permanência da legislação atual, que não restringe em nosso país o uso da criptografia, só pode ajudar nessa reversão.

A aplicabilidade número um da ciência criptográfica é a segurança de dados e a proteção desses dados de olhos indesejados. E numa rede que se mostra tão insegura como a Internet de nossos dias, devemos seriamente nos acostumar a manter, gerir e aplicar um criptosistema, para que ele seja eficaz em proteger o que há de mais valioso num sistema de informação, a saber, os nossos dados. Sobretudo, a criptografia desempenha um importante papel na preservação dos direitos individuais, na preservação da privacidade na era digital ante a "curiosidade" inoportuna de grupos e/ou indivíduos e, principalmente, diante da "curiosidade" sistemática e organizada do Estado. Por isso, os criptosistemas estão aliados a importantes questões de fundo ético e político.

Esse tipo de organização da sociedade para defender o direito à privacidade é muito importante, e a Internet pode e deve ser usada como veículo primordial. Sabidamente diversos Estados ocidentais impõem sérios limites ao uso da criptografia, tendo sempre como pano de fundo a famosa desculpa de proteger o "país" contra as ameaças à "segurança nacional". O exemplo mais conhecido é o do Estado norte-americano. Do ponto de vista legal, a criptografia é enquadrada como "munição" ou "material de guerra", por isso é ilegal exportar criptografia tanto quanto uma arma de guerra qualquer.

Se a criptografia será cada vez mais utilizada, o que tem se mostrado inevitável, não se deve crer que ela seja uma espécie de solução milagrosa. Nas palavras de Steven Bellovin, um dos grandes especialistas em segurança de rede: "a criptografia não é uma panacéia para os problemas de segurança na Internet". Segurança, seja doméstica ou de rede, é um complexo conjunto de variantes, em que a criptografia, a montagem de um criptosistema sólido, é um dos elementos, ainda que seja a nosso ver um dos mais importantes, e curiosamente um dos mais negligenciados.

Assim, se o leitor instalar o software GnuPG, o Gnu Privacy Guard, ler basicamente sua documentação, usar, quem sabe, uma interface para facilitar seu manejo, terá em sua residência ou no seu ambiente de trabalho um criptosistema. O GnuPG é um software livre, desenvolvido inicialmente por Werner Koch, que segue o padrão OpenPGP (rfc 2440) e não usa algoritmos patenteados. Está atualmente na versão 1.0.4, e em pleno desenvolvimento. Por ser uma ferramenta Gnu, ele é bastante portável. Neste sentido, mantenho um site dedicado a organizar e distribuir versões Unix do programa (Solaris, AIX, FreeBSD, UnixWare, SCO OpenServer) prontas para instalar e usar. Ressalte-se ainda um importante projeto levado a cabo na Alemanha: um projeto para melhorar e comercializar o GnuPG. Ele é gerido pelo German Unix User Group (GUUG), com a cooperação da G-N-U GmbH, LinuxLand International, DFN-PCA-Projekt e a Werner Koch Softwaresysteme. O projeto conta também com o concurso do Ministério da Economia e Tecnologia alemão, (BMWi), que contribuiu com US$ 170 mil. Os leitores que têm objetivos mais avançados, que visam uma aplicabilidade mais profissional, devem acompanhar o projeto de perto. Por causa das limitações impostas nos Estados Unidos à criptografia, como já advertimos, a maior parte do GnuPG foi construída na Alemanha. O objetivo agora deste grupo é o aperfeiçoamento do programa com fins comerciais, já que a Licença da GNU, a GPL, não impõe restrições à comercialização desde que o software permaneça livre. Em síntese, eles desejam desenvolver: documentação, desenvolvimento do software para outras plataformas, o desenvolvimento de interfaces gráficas mais sólidas e poderosas, etc. O projeto prevê a criação de uma versão pessoal e uma versão mais robusta do GnuPG para uso nos negócios. Adicionando um amplo suporte para softwares que são usados amplamente no mercado corporativo (Lotus Notes, por exemplo).

O press release do projeto resume bem o que talvez seja, a meu ver, o objetivo mais significativo do GnuPG: "Nós estamos convictos, portanto, que o GnuPG, como um software livre, se estabelecerá como uma ferramenta confiável para os cidadãos europeus que querem proteger sua privacidade ao mesmo tempo que permanecem sendo parte de uma infra-estrutura global de informação".

Assim, podemos resumir facilmente os objetivos de um criptosistema em três pontos: proteger a privacidade de nossos dados, preservar sua integridade e garantir que são autênticos, e seu não-repúdio.

Os criptosistemas podem ser divididos em dois tipos distintos - distinção que é feita segundo o método de criptografia que realizam:

  • Criptografia convencional ou simétrica: criptosistemas simétricos;
  • Criptografia assimétrica ou de chave pública: criptosistemas assimétricos ou de chave pública.

Na criptografia simétrica, tenho apenas uma chave para cifrar ou decifrar os dados. Seu maior problema é como partilhar e enviar esta chave em canais de comunicação tão inseguros como a Internet. Na criptografia assimétrica tenho duas chaves: uma chave secreta ou privada para descriptografar/decifrar, e outra, pública, que divulgo livremente, usada para criptografar/cifrar.

O GnuPG usa a criptografia assimétrica, ainda que possa trabalhar convencionalmente, se você assim desejar. Sua instalação e compilação é simples. Certifique-se antes de possuir um ambiente de programação Gnu instalado (o Gcc, suas respectivas bibliotecas, o Gnu Make). Se você desejar compilá-lo, descompacte o arquivo tar-gzip com o código-fonte em seu Gnu/Linux:



$ tar xvzf gnupg-x.x.x.tar.gz

(substitua os caracteres x.x.x pelo número da versão que está usando).

Vá para o diretório então criado, e execute: ./configure, make e make install. Isto compilará e instalará o GnuPG em seu sistema, e estará pronto para ser usado. Se você obtiver a versão binária do programa, siga as instruções para a instalação do pacote (com os pacotes deb, rpm, etc.) como você faz rotineiramente com qualquer outro software.

O primeiro passo no GnuPG é a criação de seu chaveiro digital. Isto significa gerar o seu par de chaves: uma chave secreta e uma chave pública e, posteriormente, a importação de outras chaves públicas. Use então o parâmetro --gen-key:


$ gpg --gen-key
gpg (GnuPG) 1.0.1; Copyright (C) 1999 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
Please select what kind of key you want:
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) ElGamal (sign and encrypt)
Your selection?

Escolha posteriormente o tipo de algoritmo a ser usado: o padrão é DSA/ElGamal, e é uma escolha razoável para a maioria do usuários. Depois escolha o tamanho da chave em bits. Valores acima de 1024 bits são muito seguros contra o que se chama force-brute attacks, ou seja, tentativas de quebrar uma chave por inúmeras combinações. Após escolhermos o tamanho da chave, somos convidados a escolher uma duração, um prazo de validade, para nossa chave. Aqui dependerá da realidade concreta de cada usuário... Se você não tem uma forte exigência de segurança, pode ser razoável não limitar sua chave. No momento seguinte, você terá de escolher uma identificação para o seu par de chaves:



You need a User-ID to identify your key; 
the software constructs the user id from Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: Jose da Silva
Email address: jsilva@linux.org
Comment: Professor
You selected this USER-ID:
"Jose da Silva (Professor) <jsilva@linux.org>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?  	

É interessante ter em mente que você pode possuir diferentes pares de chaves relativamente às atividades que exerce... Pode ter uma chave pessoal, uma chave para assinar o software que está desenvolvendo, uma chave como militante de um partido, de uma ONG, etc. Neste instante você irá lançar mão desta identificação: um nome, um comentário (sua profissão, ou o departamento onde trabalha, etc.) e um e-mail. A seguir, um momento fundamental: a escolha de uma passphrase, uma "frase-chave" digamos, que nada mais é do que uma senha para sua chave privada. As regras de sempre, por isso nada de senhas banais. Pois quem possui sua passphrase pode manipular sua chave! Quando você receber a mensagem "Public and secret key created and signed...", seu par de chaves foi gerado com êxito, e ficará armazenado no seu diretório $home/.gnupg. Você está apto agora a realizar as tarefas básicas de um criptosistema.

Exportar sua chave pública

$gpg –export -a -o chavpub

Para que possamos tornar disponível às outras pessoas nossa chave pública, ela será exportada num arquivo que chamamos aqui ‘chavpub’ (ou outro). Com esses parâmetros (-a) a chave é gravada num arquivo ASCII legível em qualquer editor. Podemos assim enviá-la por e-mail, exportá-la num Servidor de Chave Pública, ou seja, uma máquina dedicada a armazenar chaves públicas e torná-las facilmente disponíveis. O GnuPG é totalmente compatível com a Internet; podemos enviar através do comando:



$gpg –send-keys jsilva –keyserver nome_do_servidor

Aqui enviamos a chave pública de jsilva para um determinado servidor...

Você pode usar o comando host -l pgp.net | grep wwwkeys para encontrar uma lista de nomes de servidores de chave. No Brasil temos, por exemplo, o servidor cipsga.procempa.com.br/oks.

Podemos ainda incorporar uma chave qualquer ao nosso servidor:



$gpg –recv-key nome –keyserver nome_do_servidor

Cifrar e decifrar um arquivo

Por exemplo, para encriptar um arquivo chamado ‘notas.txt’ para o usuário ‘paulo’ é preciso que tenhamos sua chave pública, e depois usamos o seguinte comando:



$ gpg -r paulo –encrypt notas.txt

Isso gerará o arquivo cifrado notas.txt.gpg. E somente ‘paulo’ poderá, com a posse da respectiva chave privada, decifrar o arquivo:



$gpg -o notas.txt –decrypt notas.txt.gpg

O arquivo de "saída" notas.txt pode agora ser lido sem problemas; lembre-se de que neste instante o GnuPG pedirá ao usuário imaginário ‘paulo’ a passphrase que protege sua chave privada!

Para assinar um arquivo

Posso, com GnuPG, assinar digitalmente um arquivo com ou sem encriptação, isto é, ele pode ser assinado para garantir sua autenticidade (e também a integridade), mas seu conteúdo não é obrigatoriamente encriptado, ou seja, permanece legível. Por exemplo, se desejo assinar o arquivo relat.txt:



$gpg –clear-sign relat.txt

Se você abrir o arquivo num editor verá o seu conteúdo absolutamente legível entre dois blocos de textos com informações que são a assinatura digital propriamente dita. Por exemplo, veja quadro 1.

Note que entre os blocos "BEGIN" e "END" está o corpo de nosso texto...

Podemos também assinar um arquivo binário, ou de áudio ou ainda um arquivo gráfico, fazendo o que se chama de detached-signature, ou assinatura-em-separado. Observe um exemplo:



$ gpg –detach-sign arq.tar.gz

Isso gera o arquivo arq.tar.gz.sig, que é a assinatura. Para verificar a autenticidade dela:



$ gpg –verify arq.tar.gz.sig
gpg: Signature made qua 22 nov 2000 11:44:46 PM EDT using DSA key ID 90CW5CO7
gpg: Good signature from "Paulo Paiva (Advogado) <pp@linux.org>"

O GnuPG foi desenvolvido como um software standalone. Basta ter um terminal e o programa no seu sistema para que você execute todas as suas inúmeras funções criptográficas. No entanto, se desejar, há também uma gama de interfaces gráficas e frontends para facilitar o seu uso no X-Window, ou mesmo num terminal. A interface "standard" é o Gnu Privacy Assistant, o GPA, o Searhorse e o GnomePGP com visual Gnome, o Geheiminiss com visual KDE. Nessas interfaces o usuário conta com todos os recursos típicos do ambiente gráfico: como menus, ícones, drag and drop, etc. Mas procure assimilar antes os conceitos e operações aqui explicados para poder explorar melhor tais recursos. Há também programas para você adaptar em alguns clientes de e-mail para usar o GnuPG no dia-a-dia, assinando e verificando assinaturas, tanto quanto cifrando e decifrando e-mails, como o Pine ou o Mutt, o próprio Emacs e ainda o XFmail, um cliente com o suporte completo ao GnuPG já embutido.

Como o leitor pode constatar, há vários programas que podem auxiliá-lo no uso de um criptosistema. O importante é fazer disso um hábito, e gerir seu chaveiro digital: fazendo cópias de segurança, incorporando chaves públicas, etc. Assim, se mandar um e-mail hoje, mande-o assinado.


Quadro 1



$more relatorio.txt
--BEGIN PGP SIGNED MESSAGE--
Hash: SHA1
Rio de Janeiro, 01/12/2000
No dia de hoje devem ser encerradas todas as compras do setor.
Gerente Geral
--BEGIN PGP SIGNATURE--
Version: GnuPG v1.0.4 (Gnu/Linux)
Comment: For info see www.gnupg.org

iD8DBQE6HHR1YogE2yD8bPYRAvwxAKDh7xw7T22RTKzBTE0AAm6X8WJIrACfQOkH
bqYjl7RNXf2XRvqytbKPJ64=
=sNr7
--END PGP SIGNATURE--

Para saber mais

Site oficial do Gnupg: www.gnupg.org
Interfaces e frontends para o GnuPG: www.gnupg.org/frontends.html
O mini HowTo do GnuPG: www.cipsga.org.br
Lista de discussão CIPSGA-GnuPG: br.egroups.com/group/cipsga-gnupg
Coleção de pacotes já compilados para Gnu/Linux: ftp://crypto.ferrara.linux.it/pub/gpg/
Versões Unix do GnuPG, links e informações: gnupg.unixsecurity.com.br
CIPHR’99 Criptografia e Proteção dos direitos humanos: www.ciphr.org

 
 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux