[Ubuntu-BR] PGP e GnuPG (era: Anti-spam da UOL)

Rodrigo Tassinari de Oliveira rto em ms.microlink.com.br
Quarta Setembro 14 22:49:37 UTC 2005


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

On 13-09-2005 22:30, Álvaro Justen [Turicas] wrote:
> Mudando de assunto, e saindo um pouco de "Ubuntu", como funciona essa
> assinatura PGP? Desculpem-me a ignorância, mas gostaria de saber como
> funcionam essas coisas de criptografia...

Bom vamos lá, não sou nenhum expert em criptografia mas posso tentar
ajudar... :) Primeiro a teoria e depois a prática.

==TEORIA==

Primeiro vamos entender como funciona a criptografia de chaves
assimétricas, que é a usada pelo PGP, GnuPG, websites seguros, no ssh, etc.

Chaves assimétricas significa que usamos duas chaves diferentes, uma
para encriptar algo e outra para desencriptar. Estas chaves tem uma
natureza matemática peculiar: o que foi encriptado por uma chave só pode
ser desencriptado pela outra, e vice-versa. Alem disso, é
matematicamente impossível deduzir uma chava a partir da outra. É isso
que permite que a estrutura de chaves públicas funcione.

Ao criarmos este par de chaves, chamamos uma delas de pública e outra de
privada. A diferença é que a pública nós divulgamos para todo mundo, e a
privada nós guardamos sem mostrar à ninguém.

Assim, quando alguém quiser enviar algo encriptado para você, esta
pessoa irá ENCRIPTAR o texto usando a SUA chave PÚBLICA. Dessa maneira,
apenas VOCÊ, com a sua chave PRIVADA, poderá DESENCRIPTAR este texto.

De maneira semelhante, quando você desejar enviar uma mensagem
encriptada para alguém, deve encriptar esta mensagem usando a chave
pública do recipiente.

Agora que entendemos como a encriptação funciona, vamos entender a parte
de assinaturas.

Uma mensagem encriptada usando chaves assimétricas assegura que apenas o
 destinatário pretendido possa ler o conteúdo da mensagem ou arquivo.
Isso é ótimo, mas nada garante que quem tenha enviado aquele texto
encriptado seja quem realmente está dizendo, ou que o texto não tenha
sido alterado no caminho. Para isso usamos as assinaturas digitais.

Assinatura digital é uma espécie de encriptação ao contrário. Para
assinar um texto, mensagem ou arquivo, basta encriptar o texto usando a
SUA chave PRIVADA. Assim, qualquer pessoa do mundo que tenha a SUA chave
PÚBLICA poderá desencriptar a mensagem. Isto não fornece nenhuma
segurança quanto à privacidade, claro, mas como se supõe que apenas VOCÊ
possua a sua chave PRIVADA, conclui-se que apenas VOCÊ poderia ter
encriptado aquela mensagem, e mais ninguém. Está feita a assinatura!

Você pode combinar os dois efeitos: basta encriptar um texto com a chave
pública do recipiente e em seguida encriptá-lo de novo com a sua chave
privada. Agora o texto estará encriptado e assinado digitalmente, ou
seja, o recipiente terá a garantia de que apenas ele poderá ler o
conteúdo da mensagem E apenas você poderia ter enviado-a.

Na verdade, quando queremos assinar algo, não encriptamos todo o texto
com a nossa chave pública. O que realmente acontece é que usamos um
algoritmo de hash para gerar uma "impressão digital" do texto e
encriptamos esta impressão digital apenas, para facilitar o processo e
reduzir o tempo e poder de computação gasto com encriptação.

Um algoritmo de hash faz uma computação especial para criar uma
sequência binário que seja única daquele texto ou arquivo. Caso apenas 1
bit do arquivo seja mudado, o hash resultante será completamente
diferente. É uma verdadeira impressão digital do arquivo. O hash usado
nas assinaturas digitais inclui não só a mensagem, mas também a data e
hora da assinatura, para provar que não se trata da mesma mensagem
enviada em datas diferentes. Algoritmos de hash famosos são o MD5,
SHA-1, etc...

UFA! Complicado né?

==PRÁTICA==

Claro que você não precisa lembrar disso tudo para usar encriptação!
Os programas fazem quase tudo automagicamente para nós! :)

O principal programa que você precisa ter é o GnuPG, a versão livre do
PGP. Para instalar no seu Ubuntu, um simples

sudo apt-get install gnupg

já resolve. Ele funciona na linha de comando, então sugiro que instale
também um front-end para facilitar a criação das suas chaves e outras
tarefas. Um muito bom é o kgpg. Pra instalá-lo, rode

sudo apt-get install kgpg

Porém, o uso mais frequente será junto com seu programa de e-mail, pois
e-mail é completamente inseguro (qualquer um pode ler o conteúdo de um
e-mail seu pela rede e é muito fácil forjar um e-mail, isto é, mandar um
e-mail se passando por outro endereço). Se você usa o Mozilla
Thunderbird (que eu recomendo), instale então a extensão EnigMail, que
faz a ligação com o GnuPG e já inclui um front-end legal, assim você não
precisa instalar o kgpg. Instale o EnigMail com

sudo apt-get install mozilla-thunderbird-enigmail

(PS: e você usa a suite Mozilla normal, pode usar o enigmail também, mas
aí o pacote será "mozilla-enigmail")

Use o kgpg ou o engmail (dentro do thunderbird, vá no menu 'Enigmail' ->
 'Open PGP Key Management') para criar suas chaves. Depois disso,
publique sua chave pública em um servidor na internet (o próprio
front-end faz isso) e pronto.

O enigmail irá incluir um botão nas mensagens para você escolher se quer
assinar e/ou encriptar cada mensagem.

Se você usa o Evolution como cliente de email, não precisa de extensão,
ele já é compativel com o gnupg, mas voce precisará criar as chaves na
linha de comando ou com o kgpg.

Ah, o GnuPG, o thunderbird e o enigmail funcionam em windows também.

É isso, ufa, saiu grande esse e-mail... espero ter ajudado! :)


Abraços,
Rodrigo.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)

iD8DBQFDKKkBClkU/m0udu8RAviVAKDJDoYUrB0GymIvqEVAC9kncP5jgwCfRYzy
hH7cyaPkmNNfyZRij1IHhCU=
=V97w
-----END PGP SIGNATURE-----




More information about the ubuntu-br mailing list