Linux in Brazil traz mais um artigo submetido pelos leitores. Este tutorial completo sobre o PGP (uma ferramenta de criptografia) foi escrito pelo João André Simioni, um curitibano que cursa Engenharia Eletrônica no CEFET-PR e é usuário de Linux há dois anos. Para maiores informações, contate-o através de seu site pessoal.
PGP - Sigla de Pretty Good Privacy (Privacidade Bastante Boa), é uma ferramenta para criptografia. Criptografia, pelo dicionário é: "Arte de escrever em cifra, em alfabeto oculto", ou seja, transformar um texto que seja "legível" por um texto codificado. O objetivo disso é simples. Caso o texto caia em mãos erradas, a pessoa que a interceptou não será capaz de lê-lo.
Muitos não sabem, mas muita informação que transita pela internet é enviada em forma de texto puro, fácilmente legível. Isso inclui mensagens em salas de chat, IRC, ICQ, e-mail, senhas. Essa informação, para chegar até seu destino, passa por vários lugares. Se em algum desses lugares, tiver uma pessoa mal intencionada, pode salvar as informações que transitaram por ali para fazer uso ilícito delas.
Utilizando criptografia evita-se que o texto seja compreendido pelo interceptador. Somente o destinatário REAL terá capacidade de decodificar a mensagem. É com esse sistema, que funcionam as páginas seguras (secure http), como por exemplo as páginas de compras on-line, de home banking, que enviam informações sigilosas.
Basicamente, a criptgrafia pode ser de dois tipos, simétrica e assimétrica.
Na criptografia simétrica, utiliza-se a mesma "chave" para codificar e decodificar a mensagem. Dessa forma, a pessoa que recebe a mensagem deverá saber com qual chave ela foi criptografada. Esse tipo de criptografia possui um problema sério, que é justamente o de como combinar a chave a ser usada.
A criptografia assimétrica oferece uma solução para esse problema, pois nela a chave para criptografia é diferente da chave para decriptografia. Para isso cria-se o conceito de chave pública e chave privada. A chave pública é uma chave livremente distribuída e serve apenas para criptografar os dados. Mas para decriptografar esses dados é necessário utilizar a chave privada. Dessa forma é possível por exemplo, que eu divulgue a minha chave pública na internet para qualquer um mandar uma mensagem codificada para mim. Mas como eu sou o único que possuo a chave privada somente eu serei capaz de decodificar.
O PGP pode ser utilizado com qualquer uma das formas de criptografia. Mas a mais interessante é justamente o método assimétrico. Cada pessoa cria uma chave pública e uma chave privada para si mesmo, e divulga sua chave pública. Existem ferramentas para essa divulgação, como por exemplo, servidores de chaves.
Na hora de se criptografar a mensagem, o remetente utiliza como "senha" $ criptografia a chave pública do destinatário. Na hora de decriptografar, o destinatário deverá usar como "senha" sua chave privada.
Além da idéia de criptografia, existe a idéia de "Autenticação". Com isso, pode-se garantir a autencidade do remetente da mensagem. Para isso, a mensagem deve ser codificada utilizando a chave privada do remetente. Alguém que a receba, decodifica a mensagem utilizando a chave pública do remetente. Caso a decodificação seja bem sucedida, significa que o par "chave pública, chave privada" está correto, e que portanto o remetente é quem diz ser.
A chave privada deve ser bem guardada, e jamais divulgada a ninguém.
O algoritmo de criptografia do PGP utiliza chaves de até 4096 bits. Para um computador tentar "quebrar" a criptografia da mensagem, levaria bastante tempo. Com 1024 a segurança já é muito boa, mas quanto maior o tamanho da chave, mais segura ela será. Só para base de comparação, uma chave de 1024 bits em um algoritmo assimétrico é equivalente a uma chave de 80 bits em um algoritmo simétrico.
Outra coisa que você deve saber é sobre as versões do PGP. Ele está disponível no formato PGP, e PGPi. A versão PGPi é a versão internacional, e é a que você deverá usar, a não ser que resida nos Estados Unidos. Isso se deve às leis dos EUA a respeito de criptografia, proibindo-a de ser exportada. Existe então um projeto de internacionalização do PGP, chamado PGPi.
Bem, essa foi apenas uma pequena introdução ao funcionamento do PGP, mas vamos a parte prática. O PGP está disponível para UNIXes, Windows 95/98/NT, DOS, Macintosh e provavelmente para qualquer outra plataforma existente. Ele pode ser utilizado apenas para se criptografar textos que estejam em seu disco, mas sua maior vantagem para a maioria das pessoas comuns é de se integrar com os programas de e-mail para facilitar o envio e recebimento de mensagens.
Em UNIXes existe um script para interação com o PINE. Em Windows, o programa pode ser instalado para funcionar com diversos mailers, como o Microsoft Outlook, Microsoft Outlook Express, Eudora.
Aqui você terá 2 opções para instalar o PGPi. Você poderá utilizar o PGP 5.0i regular, ou então o GNUPG (Gnu Privacy Guard), que é um substituto para o PGP. Ambos podem ser encontrados em: http://www.pgpi.org/download/. Lembre-se apenas de, se for fazer download do PGPi regular, baixar a versão Internacional (PGP 5.0i).
O tutorial aqui será utilizando o GNUPG, versão genérica (.tar.gz). Existe também uma versão RPM para download, caso você prefira.
Após fazer o download do arquivo em http://www.gnupg.org, descompacte-o:
tar xvfz gnupg-0.9.10.tar.gz
entre no diretório que foi criado:
cd gnupg-0.9.10
Leia a documentação que está ali. Muitos dos problemas que possam aparecer têm sua solução documentada. Existe um FAQ dentro do diretório doc. Uma lista de comandos para o configure pode ser conseguida com o comando:
./configure --help
Após tudo lido e compreendido, digite:
./configure
Após o script ter conseguido todas as informações sobre seu sistema, digite:
make
Após o programa ter compilado, entre como superusuáro (su) e então:
make install
Volte com seu usuário padrão, e então digite:
gpg --gen-key
Você verá um texto como se segue:
Please select what kind of key you want: (1) DSA and ElGamal (default) (2) DSA (sign only) (4) ElGamal (sign and encrypt) Your selection?
Ele pede para você escolher qual o tipo de chave deseja utilizar. A opção 1 é a mais recomendada.
Your selection? 1 DSA keypair will have 1024 bits. About to generate a new ELG-E keypair. minimum keysize is 768 bits default keysize is 1024 bits highest suggested keysize is 2048 bits What keysize do you want? (1024)
Escolha então o tamanho de sua chave. Quanto maior, mais segura ela será, e mais tempo levará para que as mensagens sejam criptografadas. Eu utilizarei o padrão, que é 1024 bits.
What keysize do you want? (1024) 1024 Requested keysize is 1024 bits Please specify how long the key should be valid. 0 = key does not expire= key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0)
Você precisa escolher então por quanto tempo sua chave deverá ser válida. Escolhendo 0, será válida para sempre, ou então você pode definir por exemplo, 10m para 10 meses, ou 1y para 1 ano. Vou selecionar 0, para tempo indefinido. Ele pede confirmação, e então seus dados pessoais (nome, e-mail, etc).
Informe e confirme seus dados. Agora você precisará escolher uma frase para ter acesso a sua chave privada. Essa chave será requisitada sempre que for decriptografar uma mensagem. Coloque então algo fácil para você memorizar, mas procure adicionar caracteres diferentes, como letras maiúsculas e minúsculas e caracteres não alfanuméricos. O programa irá gerar agora suas chaves públicas e privadas. Um texto surgirá, pedindo pra que durante o processo de criação de senhas você mexa o mouse, tecle algumas teclas em seu teclado, faça seu disco funcionar, para com isso, gerar uma chave o mais aleatória possível.
Agora que você adicionou suas chaves, poderá começar a "brincar". Você pode ver sua chave pública, para informar às outras pessoas, com o comando:
gpg --export -a [Nome]
A opção -a é para a saída ser na forma ASCII de 7 bits, e não na forma binária. Essa opção pode ser combinada com qualquer outro comando do GPG e é útil pra se enviar a saída via e-mail, por exemplo.
Você pode redirecionar a chave para um arquivo, usando:
gpg -o [arquivo] --export -a [Nome]
Para adicionar uma chave pública ao seu conjunto de chaves, você pode usar o comando:
gpg --import [arquivo]
Após adicionar a chave pública, você deve valida-la, ou então no momento em que for criptografar uma mensagem para o destinatário, o GPG irá pedir confirmação. Mas somente valide uma chave que você tenha certeza de que é realmente do destinatário. Essa confirmação você pode ter por telefone, ou no site da pessoa, com base no "FINGERPRINT" da chave pública. Para validar a chave, digite:
gpg --edit-key [nome]
Uma linha de comando surgirá e você deve digitar: sign e então [enter] O programa pedirá confirmação, responda y e então digite sua frase. Após ter feito isso, digite: save e [enter]
Agora você já tem sua chave pública, divulgue-a para seus conhecidos. Adicione algumas chaves públicas de algumas pessoas que você conheça e então comece a criptografar/decriptografar as mensagens. Você pode, por exemplo, usar dois ou mais usuários em seu sistema para fazer alguns testes.
Para criptografar uma arquivo, use o comando:
gpg -o arquivodesaida -r destinatario -e arquivo
Destinatário é a pessoa a quem é destinada o arquivo criptografado. Você deve ter adicionado a chave pública dela em sua lista. Caso você suprima o parâmetro "-o arquivodesaida" o comando criará um arquivo com o mesmo nome do arquivo original, com extensão .gpg
Para decriptografar uma mensagem, digite:
gpg -o arquivodesaida arquivo.gpg
O comando pedirá sua frase e então criará um arquivo com o nome escolhido, ou caso tenha suprimido a opção "-o arquivodesaida", o programa pedirá um nome.
É possível também criptografar um arquivo no formato "simétrico". Basta para isso o parâmetro "--symmetric". Por exemplo:
gpg -o arquivodesaida --symmetric arquivo
Você receberá um prompt pedindo com qual chave deseja criptografar o arquivo.
Você pode assinar os arquivos como sendo seus, além de criptografa-los. Pra isso utilize o comando
gpg -o arquivodesaida -s arquivo
Sua frase será pedida. Qualquer um que o receba poderá verificar sua assinatura simplesmente digitando
gpg -o arquivodesaida arquivo
Com essa forma de assinatura, o arquivo é ao mesmo tempo compactado, ficando ilegível. Para criar uma assinatura sem destruir a legibilidade do arquivo, use o comando:
gpg -o arquivodesaida --clearsign arquivo
Se desejar criptografar e assinar ao mesmo tempo, use:
gpg -o arquivodesaida -r destinatario -s -e arquivo
Como já havia dito, todos esses comandos podem incluir o parâmetro "-a" que induz a uma saída em ASCII 7bits.
Para facilitar nossas vidas, existem servidores de chaves. Esses servidores mantém cadastros de chaves para diversos e-mails. Você pode adicionar sua chave pública a um desses servidores, ou procurar a chave pública de algum e-mail particular. Um servidor bem conhecido é o www.keyserver.net.
Caso você receba uma mensagem criptografada e não possua a chave publica para aquele ID, pode tentar encontrar num servidor de chaves. Com o comando:
gpg --keyserver www.keyserver.net --recv-keys KEYID
Você consegue a chave pública de um ID qualquer. (desde que esteja registrado no Keyserver). Para adicionar sua chave publica ao Keyserver, você pode ir até o site e cadastrar manualmente, ou então deixar que o gpg faça isso por você. Pra isso digite:
gpg --keyserver www.keyserver.net --send-keys NOME
Onde nome é o parâmetro que identifica sua chave (seu e-mail, nome ou Comentário).
Para uma lista de comandos mais detalhada, você pode verificar a página manual do gpg. (man gpg)
O pine é provavelmente o gerenciador de e-mail mais onipresente no ambienet UNIX, e naturalmente ele pode suportar o PGP. Portanto, a primeira coisa a ser feita é instalar o PINE em seu computador. Você pode encontrar os fontes no site http://www.washington.edu/pine
Você deverá fazer download do programa de filtro para integrar o Pine com o PGP. No site do PGPi (http://www.pgpi.org) você pode encontrar algumas ferramentas para isso. Eu recomendo a utilização do pgp4pine escrito por Chris Wiegand, que é um programa escrito em C compatível com PGP5, PGP2 e GnuPG. Você pode fazer o download desse script na página http://members.home.com/cdwiegand/pgp4pine a última versão é a 1.62, porém eu tentei compilar essa versão e ela aparentemente possui algum problema com o Makefile gerado (Pelo menos não funcionou direto aqui). Portanto, até que o autor corrija o problema, recomendo que você faça o download da versão 1.61 (que é exatamente igual. A única mudança está na instalação, que utiliza autoconf/automake). A versão 1.61 pode ser encontrada em http://members.home.com/cdwiegand/pgp4pine/pgp4pine_1.61.tar.gz.
Após fazer o download, descompacte o arquivo ($ tar xvfz pgp4pine_1.61.tar.gz). Entre no diretório que foi criado com a descompactação (pgp4pine_1.61), leia os arquivos README e INSTALL para esclarecer qualquer dúvida e então rode o make.
Tudo deve ocorrer bem. Entre como superusuário (su) e então digite:
make install
para copiar o executável e os arquivos de manual para os diretórios padrão (/usr/bin e /usr/man). Se desejar instalar em outro diretório que não esse, edite o Makefile e altere a localização.
Volte com seu usuário padrão. (exit). Você precisa criar agora um arquivo de configuração para o pgp4pine. Dentro do diretório pgp4pine/doc você encontra um arquivo de exemplo (pgp4pinerc). Copie esse arquivo para seu diretório pessoal.
cp doc/pgp4pinerc ~/.pgp4pinerc
Edite o arquivo ~/.pgp4pinerc com seu editor de textos favorito. As principais linhas que devem ser alteradas são:
profile_list=pgp5:pgp2:gpg - Define qual é o programa de criptografia que deve ser utilizado. Caso tenha mais de 1, como é o caso do exemplo, ele pergunta qual deverá ser usado no momento em que o programa for rodado. Como eu utilizo apenas o GnuPG, modifiquei essa linha para: profile_list=gpg
Você deve definir um arquivo temporário que o pgp4pine utiliza como arquivo de troca para criptografar/decriptografar as mensagens. Para isso, adicione a linha:
profile_gpg_tmpfile=/caminho/arquivo
onde /caminho/arquivo é o arquivo temporário. O caminho deverá ser completo, por exemplo: /home/brett/mail/.temp Outras opções podem ser configuradas nesse arquivo, como por exemplo definir que todos os e-mails devem ser assinados. O próprio arquivo tem comentários que ajudam a entender. Só é importante notar que as opções são para cada um dos programas de criptografia. Ou seja, se você usa GnuPG, as linhas de configuração começam com profile_gpg e se você usa PGP5 as linhas deverão começar com profile_pgp5.
Depois disso configurado, basta informar ao Pine para utilizar o pgp4pine como filtro para suas mensagens. Inicie o Pine, vá em SETUP, Config. Procure pela linha:
display-filters:
e coloque:
_LEADING("-----BEGIN PGP")_ /usr/bin/pgp4pine -d -i _TMPFILE_
Essa linha indica que os e-mails que chegarem e tiverem neles "-----BEGIN PGP" devem ser filtrados utilizando o script /usr/bin/pgp4pine antes de ser visualizado.
Procure pela linha:
sending-filters:
e coloque:
/usr/bin/pgp4pine -e -i _TMPFILE_ -r _RECIPIENTS_
Na hora em que for enviar uma mensagem, o Pine perguntará se deseja utilizar algum filtro, e então escolha esse. Você pode escolher que por padrão as mensagens sejam enviadas utilizando o filtro, pra isso, você deve habilitar a opção: compose-send-offers-first-filter.
A utilização é intuitiva o suficiente pra não precisar de maiores detalhes.
Quaisquer dúvidas, seja bem-vindo a me enviar um e-mail. O endereço é: jas@xmail.com.br. Mas antes de enviar qualquer coisa, verifique os sites que eu indiquei e você poderá encontrar muita informação. Recomendo também utilizar foruns públicos ou listas de discussão, pois assim sua dúvida pode ser compartilhada por todos.
O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.