Neste artigo, dividido em duas partes, será abordado como trabalhar com PGP e Mac OS X.
?
O PGP (iniciais para Pretty Good Privacy) é um programa de criptografia bastante seguro frequentemente utilizado, que usa uma chave de criptografia pública. Com o PGP, você pode criptografar informações tais como mensagens, documentos e arquivos, de forma que somente o destinatário possa decodificá-los e abri-los.
O objetivo deste artigo é capacitá-lo em PGP para que você possa operá-lo através de um terminal, e que se sinta familiar com sua operação.
Princípios da criptografia
Há dois tipos de criptografia, simétrica e assimétrica (também chamada de chave pública). A cripotografia simétrica usa uma chave para codificar e para decodificar mensagens. Frequentemente, a criptografia simétrica funciona muito bem, uma vez que há algoritmos muito robustos disponíveis, e que deixam os dados seguros rapidamente. Contudo, a criptografia simétrica tem o grave inconveniente de ser necessário transportar uma chave de forma segura ao destinatário. Considerando que o meio de transporte é a Internet, isso não é verdadeiramente possível.
Já a criptografia assimétrica usa duas chaves, uma pública e outra privada. Quando você usa criptografia assimétrica, uma chave pública é disponibilizada, e uma chave privada é mantida secreta. Mensagens que são criptografadas com sua chave pública podem ser decodificadas somente com sua chave privada. Dessa forma, você pode enviar e receber mensagens criptografadas para uma terceira pessoa, sem o inconveniente de ter que transportar a chave decodificadora por um meio seguro.
Outro benefício da criptografia assimétrica é que pares de chaves também podem ser usados para autenticar mensagens. Isso é feito criptografando dados com sua chave privada. No momento do recebimento de uma mensagem, o destinatário usará sua chave pública para decodificá-la. O processo de criptografar uma informação com uma chave privada com propósitos de autenticação chama-se criar uma assinatura digital.
Eu por exemplo tenho minha chave pública aqui e em múltiplos servidores de chaves públicas. Sempre que alguém deseja me enviar uma mensagem criptografada, ele usa minha chave pública para criptografá-la e sua chave privada para assiná-la. Uma vez que isso é feito, a única forma de decodificar a mensagem é usando minha chave privada, que mantenho em estrita segurança. No recebimento da mensagem criptografada, eu a decodifico com minha chave privada e a autentico com a chave pública do remetente.
Apresentadas as facilidades, vamos iniciar.
Instalando o software
1. O PGP vem com muitas implementações. Contudo, a que usaremos neste artigo é GPG (GNU Privacy Guard), que segue o padrão OpenPGP, é completamente grátis e oferece a facilidade do uso do instalador Mac OS X. Obtenha o instalador Mac GPG em sourceforge.
O que são implementações PGP?
O PGP já foi um produto comercial da PGP Incorporated. Contudo, percebendo que um mecanismo robusto e aberto de criptografia era tão importante, a comunidade de criptografia e a PGP Inc. trabalharam conjuntamente para fazer do OpenPGP um padrão. Através do OpenPGP, variações compatíveis de PGP puderam ser criadas por terceiros, e distribuídas livremente.
Aprenda mais sobre openPGP aqui.
2. Fique paranóico (opcional!). Você não estaria lendo isto se confiasse em todo mundo, então mantenha isso em mente. O próximo passo é verificar a MD5 checksum para o arquivo que você acabou de baixar. Dessa forma, terá certeza de que o instalador veio do Mac GPG e não de um cara no meio do caminho. Vá para a imagem baixada e digite o seguinte (onde o nome do arquivo e o MD5 checksum combinam com sua versão particular):
$ md5 GnuPG1.4.8.dmg | grep db046fd96e274dfe3c7021047561fb5a
MD5 (GnuPG1.4.8.dmg) = db046fd96e274dfe3c7021047561fb5a
O que eu fiz?
Arquivos podem ser processados para criar uma string relativamente única para eles, e tal algoritmo de processamento é MD5 (Machine Digest 5). Próximo ao link baixado para o instalador na webpage do Mac GPG, você também verá uma string de 32 caracteres, que é o MD5 digest para a imagem de disco disponível para download.
No terminal, usamos o comando md5 para processar GnuPG1.4.8.dmg. Aplica-se então um grep para a string MD5 postada no website do Mac GPG. Se combinar, retornará o valor. Caso contrário, retornará vazio.
Aprenda mais sobre o MD5 aqui.
3. Agora que sabemos que a imagem de disco é legítima, podemos montá-la e instalar o Mac GPG. É um processo simples, porque é feito através de um wizard de instalação. Siga os passos e rapidamente você estará com o programa rodando.
Gerando uma chave
Agora que você tem o GPG instalado, começará a gerar o seu par de chaves e irá adicioná-lo a seu conjunto de chaves. Tudo isso será feito através do shell. Então, se prepare para um pouco de digitação.
1. Comece o processo para gerar seu par de chaves. Feito isso, você será solicitado a escolher entre três tipos de chaves, escolha o padrão DAS e o tipo Elgamal pressionando enter.
NOTA: Como esta é sua primeira vez gerando chaves, o GPG o alertará acerca da criação de um diretório ~/.gnupg e sair. Apenas dê o comando novamente e você estará pronto para prosseguir.
$ gpg --gen-key
gpg (GnuPG) 1.4.8; Copyright (C) 2007 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection?
O que são DSA e Elgamal?
DSA (Digital Signature Algorithm) e Elgamal (também chamado ELG) são os algoritmos usados pelo GPG. DSA, como o nome sugere, é usado para autenticação, enquanto Elgamal é usado para criptografia.
Saiba mais sobre DSA aqui e Elgamal aqui.
2. Escolha o tamanho de sua chave de criptografia Elgamal (ELG-E). O GPG usa chaves de 1024 bit para DSA, mas permite que você escolha o comprimento de sua chave Elgamal. O comprimento padrão de 2048 bits deve estar completo, portanto pressione enter.
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
3. Escolha a data de expiração de seu par de chaves. A menos que você seja realmente paranóico, a escolha padrão de prazo indeterminado deve funcionar bem. Pressione enter.
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
4. Confirme que sua chave não irá expirar digitando “y” e pressionando enter.
Key does not expire at all
Is this correct? (y/N) y
5. Crie uma identidade para sua chave. Há três partes – seu nome, seu e-mail e comentários. O comentário para sua chave é opcional, e é geralmente usado quando você escolhe ter mais de um par de chaves para monitorar. Preencha suas informações, digite “O” e pressione enter.
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: First and Last Name
Email address: name@domain.com
Comment: Mac GPG Tutorial
You selected this USER-ID:
"First and Last Name (Mac GPG Tutorial) <name@domain.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
6. Escolha sua passphrase. Para manter sua chave privada segura (alguém poderia abrir seu computador e ler), o PGP a criptografará com uma codificação simétrica. A passphrase que você dará será usada como a chave de criptografia. Todas as vezes que você quiser usar sua chave privada, o PGP lhe pedirá a passphrase. Se estiver correta, o PGP decodificará a sua chave privada e a usará. Escolha uma senha longa, uma frase por exemplo, e pressione enter. Você então será solicitado a confirmar sua passphrase. Faça isso e pressione enter de novo.
E se eu esquecer a passphrase?
Se senhas fossem facilmente quebradas, não seriam de utilidade. Se isso acontecer, sua única opção real é fazer um novo par de chaves.
Mais adiante neste artigo, falaremos sobre o processo de fazer a revogação de seu certificado, de forma que sua chave pública possa ser “desligada” se isso acontecer.
Aprenda mais sobre passphrases aqui.
7. O GPG então começará a exibir alguns caracteres enquanto gera o seu par de chaves. Durante esse período, o GPG também pedirá para que você use seu computador, digitando alguma coisa, movendo seu mouse, ou acessando seu HD. Isso tem o propósito de criar mais entropia, e ajuda a gerar uma chave melhor.
O que é entropia, e por que ela gera uma chave melhor?
Em termos computacionais, entropia é ser aleatório. Computadores na verdade não são muito bons em tomar decisões aleatórias, ao contrário das pessoas. Na medida em que você move o mouse e pressiona algumas teclas, você está fazendo com que seu computador processe informações ao acaso e que, dessa forma, gere um par de chaves mais robusto.
O processo aleatório é muito importante na geração de chaves criptografadas. Se houvesse um padrão para criar essas chaves, então haveria um padrão reverso que poderá ser usado para sua decodificação, o que seria um grande problema. Muito trabalho tem sido feito visando à criação de geradores de números aleatórios em sistemas de criptografia, mas pressionar o teclado ao acaso trará provavelmente o mesmo resultado. Pelo menos até agora.
Aprenda mais sobre entropia aqui e geração de números aleatórios aqui.
8. Depois que o seu par de chaves é gerado, o GPG apresentará as informações seguintes na tela. O básico é que o GPG faça o seguinte:
- Crie uma base de dados confiável chamada ~/.gnupg/trustdb.gpg. Nessa database, o GPG guardará o quanto você confia nas chaves públicas que você recebe de outros.
- Assinale a sua chave pública com o mais alto nível de confiança, uma vez que ele assume que você confia completamente em uma chave pública que você mesmo gerou.
- Informe que uma chave pública e outra secreta (privada) foram criadas e autenticadas como sua.
- Passe pelos processos de como foi feita a validação. A validação está um pouco além do propósito deste artigo, mas você pode aprender mais aqui e aqui.
- Mostre a informação sobre a chave pública recém-criada, incluindo a sua impressão digital e a sub-chave (a ser discutida em breve).
gpg: ~/.gnupg/trustdb.gpg: trustdb created
gpg: key A7327C0E marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
pub 1024D/A7327C0E 2008-02-14
Key fingerprint = 2291 60E9 A962 5C22 6E4F 1F20 120A 2881 A732 7C0E
uid First and Last Name (Mac GPG Tutorial) <name@domain.com>
sub 2048g/60ED8082 2008-02-14
9. Liste as chaves públicas em seu conjunto de chaves – que deve conter apenas a sua por enquanto. Tome nota especialmente da ID de sua chave (keyID) – A7327C0E neste exemplo – já que você precisará dela mais tarde. Você poderá sempre listar suas chaves novamente no futuro, se necessário.
$ gpg --list-keys
~/.gnupg/pubring.gpg
--------------------------------
pub 1024D/A7327C0E 2008-02-14
uid First and Last Name (Mac GPG Tutorial) <name@domain.com>
sub 2048g/60ED8082 2008-02-14
10. Finalmente, vá em frente e liste as chaves privadas em seu conjunto de chaves – no qual também você também deve ter apenas uma.
$ gpg --list-secret-keys
~/.gnupg/secring.gpg
--------------------------------
sec 1024D/A7327C0E 2008-02-14
uid First and Last Name (Mac GPG Tutorial) <name@domain.com>
ssb 2048g/60ED8082 2008-02-14
Na segunda e última parte deste artigo, veremos como gerenciar as chaves, a importação e verificação de chaves públicas e como codificar e decodificar mensagens.
?
Texto original disponível em http://www.robertsosinski.com/2008/02/18/working-with-pgp-and-mac-os-x/.