O SSH (Secure Shell) é um protocolo e ferramenta que lida com muitas tarefas de encriptação de rede. Geralmente usado como protocolo remoto de login, o SSH pode também ser usado para a transferência de arquivos e para encriptar outros protocolos. Suponhamos que você queira encriptar os dados enviados para outra pessoa através de um e-mail, por exemplo. Você poderá obter a ajuda do GPG (GNU Privacy Guard) nesta tarefa. O GPG pode ser encontrado em www.gnupg.org.


Este pacote é uma re-implementação de código aberto da proprietária PGP (Pretty Good Privacy). Além de encriptar mensagens inteiras, o GPG permite que você "assine" digitalmente as assinaturas. Usadas desta forma, as mensagens podem ser lidas por recipientes que carecem do software GPG ou chaves apropriadas; mas, aqueles que tiverem estas ferramentas podem verificar que os conteúdos não foram cuidados.

É importante também lembrar que o e-mail nunca foi planejado como uma ferramenta segura de transferência de dados, e a maioria das mensagens passam por vários servidores de e-mail e roteadores de rede. Um cracker pode, por exemplo, em uma destas etapas, rastrear a sua mensagem e pegar os seus dados, como números de cartões de crédito, etc. Encriptando o seu e-mail, possibilita que os seus dados mantenham-se privados.

Gerando e Importando Chaves


Para começar a usar o GPG, você deverá instalar o software. Existem chances da sua própria distribuição já ter o incluído como pacote padrão, então torna-se ainda mais fácil. Já feito isso, você deverá gerar chaves. As chaves GPG são bem parecidas com as chaves SSH: você precisa de uma chave privada e uma chave pública. Você pode assinar suas mensagens com a chave privada e o leitor pode verificá-la com sua chave pública; ou você pode encriptar uma mensagem com outra chave pública de outro usuário, e poderá ser decriptada somente com a chave privada de tal usuário.

Para gerar chaves, você usa o programa gpg com sua opção --gen-key:

$ gpg --export nome > gpg.pub



O programa irá lhe realizar uma série de questões. Na maioria dos casos, responder com os padrões deverá funcionar corretamente, embora poderá haver a necessidade de você digitar o seu nome inteiro e endereço de e-mail. As chaves são armazenadas no diretório ~/.gnupg.

Tendo gerado a sua chave, você pode exportar sua chave pública:

$ gpg --export nome > gpg.pub



Este comando salva a chave pública associada ao nome no arquivo gpg.pub. Você pode usar o seu endereço de e-mail como nome. Depois, você pode tornar a sua chave disponível para os outros, logo, eles poderão encriptar as mensagens de e-mail enviadas para você ou verificar suas mensagens assinadas. Adicionando a opção --armor, irá produzir uma saída ASCII, que pode ser preferível se você pretende enviar e-mail para a chave pública. Você pode deixar o arquivo acessível em seu site Web, transferi-lo como anexo de e-mail ou distribuí-lo de várias outras formas.

Para encriptar o e-mail que você envia para outros, você deverá obter as licenças públicas deles. Pergunte aos seus contatos como obtê-las. Feito isso, você poderá adicionar as chaves deles em seu keyring (O conjunto de chaves que o GPS mantém):

$ gpg --import nomedoarquivo 


Este comando adiciona o nomedoarquivo para o seu conjunto de chaves públicas pertencentes às outras pessoas.

Já criado a sua própria chave e, talvez, importado chaves de outros, você pode ver quais chaves estão disponíveis usando a opção --list-keys.

$ gpg --list-keys
/home/gjones/.gnupg/pubring.gpg
---------------------------------
pub 1024D/190EDB2E 2008-09-05
uid Joselino Morteis [email protected]
sub 2048g/0D657AC8 2008-09-05
pub 1024D/A8B20	61A 2008-09-05
uid Laurizino Iérpen 
sub 2048g/4F33EF6B 2008-09-05




As linhas uid contêm identificadores que você usará quando encriptar ou decriptar os dados, então preste bastante atenção nesta informação.

Encriptando e Decriptando os Dados


Para encriptar os dados, você irá utilizar o gpg com suas opções --out e --encrypt além de, opcionalmente, --recipient e --armor.

$ gpg --out encrypted-file --recipient uid --armor --encrypt original-file



Você pode usar a UID de uma saída gpg --list-keys, ou somente a parte do e-mail, como o uid neste comando. Se você não tiver assinado a chave recipiente, você terá que verificar que você pretende usar aquela chave. O resultado é um novo arquivo, encrypted-file, que possui uma versão encriptada do original-file. Se você omitir a opção --armor, o arquivo resultante tornar-se um arquivo binário; se você mandá-lo como e-mail, terá que mandar como anexo ou encodificá-lo para transmissão baseada em sistema de e-mail. Se incluir a opção --armor, a saída é ASCII, então você poderá cortar-e-colar a mensagem encriptada em um e-mail ou enviá-lo simplesmente como anexo.

Se você recebeu uma mensagem ou arquivo que foi encriptado com sua chave pública, você pode reverter a encriptação usando a opção --decrypt.

$ gpg --out decrypted-file --decrypt encrypted-file



Você será informado a inserir a sua senha. O resultado deverá ser uma versão decriptada do arquivo original. Na prática, o GPG pode ser ainda mais fácil de usar do que você imagina. O GPG é primariamente usado para assegurar e verificar e-mail, então, a maioria dos clientes Linux de e-mail oferecem interfaces GPG. Os detalhes variam de um cliente e-mail para outro, então a melhor coisa a ser feita é consultar a documentação do seu cliente de e-mails para conhecer mais a fundo.

Assinando Mensagens e Verificando Assinaturas


Para assinar as mensagens, use a opção --sign ou --clearsign.

$ gpg --verify received-file



Se qualquer das chaves em seu keyring puder decodificar a mensagem ou verificar a assinatura, o gpg mostra a mensagem Good signature. Para ler uma mensagem que fora encriptada através da opção --sign, você deverá decriptar a mensagem através da opção --decrypt.