Usando GPG para criptografar e descriptografar arquivos no Linux [Guia para iniciantes]

Um tutorial prático básico que mostra como começar a criptografar e descriptografar arquivos com GPG no Linux.

Usando GPG para criptografar e descriptografar arquivos no Linux [Guia para iniciantes]

GnuPG, popularmente conhecida como GPG, é uma ferramenta extremamente versátil, sendo amplamente usada como padrão da indústria para criptografia de coisas como e-mails, mensagens, arquivos ou qualquer coisa que você precisa enviar para alguém com segurança.

É fácil começar com GPG, e você aprender a usá-lo em questão de minutos.

Neste tutorial, vou mostrar como criptografar e descriptografar arquivos com GPG. Este é um tutorial simples e você pode tentar tudo isso para praticar em seu sistema Linux também. Isso vai ajudá-lo a praticar os comandos GPG e entendê-los quando você está iniciando no assunto.

Leia o tutorial completo primeiro e comece a fazê-lo por conta própria.

Como funciona o GPG para criptografia?

gpg criptografia explicada

Criptografia GPG

Para começar a usar GPG, primeiro você precisará ter uma chave GPG.

Uma chave GPG é o que você usará para criptografar (ou descriptografar) arquivos mais tarde no tutorial. É também o que está acostumado a identificar você, com coisas como seu nome e e-mail sendo vinculados à chave também.

As chaves GPG funcionam usando dois arquivos, uma chave privada e uma chave pública. Essas duas chaves estão ligadas uma à outra, e ambas são necessárias para usar toda a funcionalidade do GPG, notadamente criptografando e descriptografando arquivos.

Quando você criptografa um arquivo com GPG, ele usa a chave privada. O novo arquivo criptografado pode então ser apenas descriptografado com a chave pública emparelhada.

A chave privada deve ser armazenada diretamente em seu nome – em particular, e não dada a ninguém.

A chave pública, por outro lado, deve ser dada aos outros, ou a qualquer um que você queira ser capaz de descriptografar seus arquivos.

É aí que entra em jogo a abordagem principal do GPG para criptografia. Ele permite que você criptografe arquivos localmente e, em seguida, permitir que outros sejam assegurados de que os arquivos recebidos foram realmente enviados de você. Como a única maneira de eles serem capazes de descriptografar o arquivo é com sua chave pública, que só funcionaria se o arquivo fosse criptografado usando sua chave privada em primeiro lugar.

Isso também funciona na direção oposta! Outras pessoas podem criptografar arquivos usando sua chave pública, e a única maneira de ser capaz de ser descriptografado é com sua chave privada. Isso permite que outros postem arquivos publicamente sem se preocupar com as pessoas além de você ser capaz de lê-los.

Em outras palavras, se um arquivo foi criptografado com uma chave privada, ele só pode ser descriptografado com a chave pública correspondente. E se um arquivo foi criptografado com uma chave pública, ele só pode ser descriptografado com a chave privada correspondente.

Você já está usando GPG sem perceber

Um dos exemplos mais comuns de uso do GPG está no gerenciador de pacotes Linux, especialmente os repositórios externos. Você adiciona a chave pública do desenvolvedor nas chaves confiáveis do seu sistema. O desenvolvedor assina os pacotes (gera uma assinatura) com sua chave privada. Como o seu sistema Linux tem o arquivo público, ele entende que o pacote está realmente vindo do desenvolvedor confiável.

Uma série de serviços criptografados usam algum tipo de implementação de GPG por baixo sem que você perceba. Mas é melhor não entrar nesses detalhes agora.

Agora que você está um pouco familiarizado com o conceito, vamos ver como você pode usar o GPG para criptografar um arquivo e depois usá-lo para descriptografar.

Criptografando e descriptografando arquivos com GPG

gpg criptografia básica

Este é um cenário muito simplista. Eu presumo que você tem apenas um sistema e você quer ver como o GPG funciona. Você não está enviando os arquivos para outro sistema. Você criptografa o arquivo e depois o descriptografa no mesmo sistema.

Claro, este não é um caso de uso prático, mas esse também não é o propósito deste tutorial. Meu objetivo é você conhecer os comandos e o funcionamento do GPG. Depois disso, você pode usar esse conhecimento em uma situação do mundo real (se necessário). E por isso, mostrarei como pode compartilhar sua chave pública com os outros.

Passo 1: Instalação do GPG

O GPG pode ser encontrado nos repositórios da maioria das distribuições fora da caixa.

Nos sistemas baseados em Debian e Ubuntu, instale o pacote gpg:

Comandos para usar no terminal

sudo apt install gpg

Se você usar distribuições baseadas em Arch, instale o pacote gnupg com o comando pacman:

Comandos para usar no terminal

sudo pacman -S gnupg

Passo 2: Gerando uma chave GPG

Gerar uma chave GPG no seu sistema é um simples procedimento de um comando.

Basta executar o seguinte comando, e sua chave será gerada (você pode usar os padrões para a maioria das perguntas, como mostrado nas seções sublinhadas abaixo):

Comandos para usar no terminal

gpg --full-generate-key

geração de chaves gpg

Geração de chaves GPG

Verificando a chave GPG

Você pode então ver que a chave privada e a chave pública estão ambas ligados uma à outra por esse ID mostrado em pub usando os comandos -list-secret-keys e -list-public-keys respectivamente:

chaves da lista gpg 1

Listando chaves GPG

Passo 3: Criptografando um arquivo com GPG

Agora que você configurou nossas chaves GPG, você pode começar a criptografar arquivos!

Use o seguinte comando para criptografar arquivos:

Comandos para usar no terminal

gpg --encrypt --output arquivo.gpg --recipient usuario@exemplo.com file

Vamos passar brevemente por cima do que esse comando faz:

Primeiro você especifica a opção --encrypt. Isso simplesmente diz ao GPG que vamos criptografar um arquivo.

Em seguida, você especificou --output arquivo.gpg. Isso pode ser qualquer coisa, embora seja tipicamente o nome do arquivo que você está criptografando mais uma extensão .gpg(então mensagem.txt se tornaria mensagem.txt.gpg).

Em seguida, você digita --recipient usuario@exemplo.com. Isso especifica o e-mail para uma chave GPG correspondente que realmente não existe ainda neste sistema.

Ainda está confuso?

A maneira como isso funciona é que o e-mail que você especifica aqui deve estar vinculado a uma chave pública em seu sistema local.

Normalmente, isso vai ser da chave GPG pública de uma pessoa diferente, que é o que você vai criptografar o seu arquivo. Depois disso, o arquivo só poderá ser descriptografado com a chave privada desse usuário.

Vou usar minha chave GPG anterior com o hunter@hunterwittenborn.com neste exemplo. Assim, a lógica seria que eu estou criptografando o arquivo com a chave pública do hunter@hunterwittenborn.com, que só poderá ser descriptografada com a chave privada de hunter@hunterwittenborn.com.

Você só teria a chave pública se estivesse criptografando um arquivo para outra pessoa, mas já que você está criptografando o arquivo para si mesmo, você tem as duas chaves em seu sistema.

Por fim, você simplesmente especifica o arquivo que você vai criptografar. Para este exemplo, vamos usar um arquivo chamado messagem.txt com o seguinte conteúdo:

We're encrypting with GPG!

mensagem de exemplo gpg

Arquivo de texto de exemplo

Da mesma forma, se o e-mail fosse hunter@hunterwittenborn.com, o novo comando GPG seria o seguinte:

Comandos para usar no terminal

gpg --encrypt --output message.txt.gpg --recipient [email protected] message.txt

gpg exemplo de mensagem criptografada

Arquivo criptografado com GPG

Se você então tentar ler o arquivo, você verá que ele parece todo bagunçado. Isso é esperado porque o arquivo está criptografado agora:

gpg exemplo de mensagem criptografada gibberish

Ler o arquivo criptografado gera texto sem sentido

Agora, vamos excluir o arquivo não criptografado mensagem.txt para que você possa ver que o arquivo mensagem.txt.gpg realmente descriptografa muito bem sem o arquivo original:

gpg mensagem original excluída

Passo 4: Descriptografando o arquivo criptografado com GPG

Por último, vamos descriptografar a mensagem criptografada. Você pode fazer isso usando o seguinte comando:

Comandos para usar no terminal

gpg --decrypt --output arquivo arquivo.gpg

O que está passando pelo argumento aqui, primeiro especificamos --decrypt, que diz ao GPG que você vai descriptografar um arquivo.

Em seguida, você digita o arquivo --output, que simplesmente diz ao GPG qual arquivo você estará salvando a forma criptografada do nosso arquivo depois de descriptografá-lo.

Por fim, você digita arquivo.gpg, que é apenas o caminho para o seu arquivo criptografado.

Seguindo o exemplo, o comando que eu usaria seria o seguinte:

Comandos para usar no terminal

gpg --decrypt --output mensagem.txt mensagem.txt.gpg

descriptografo de mensagem gpg

Descriptografia de arquivo com GPG

E está feito! Isso é tudo o que há quando você quer criptografar e descriptografar arquivos com GPG.

A única outra coisa que você pode querer saber é como compartilhar suas chaves públicas com outros para que eles possam criptografar arquivos antes de enviá-los para você.

Enviando e recebendo chaves GPG

Para enviar a alguém uma chave GPG, primeiro você precisará exportá-la do seu chaveiro, que é o que contém todas as suas chaves públicas e privadas.

Para exportar uma chave, basta encontrar o ID da chave no seu chaveiro e, em seguida, executar o seguinte comando, substituindo id pelo ID da chave e key.gpg com o nome do arquivo que você deseja salvar:

Comandos para usar no terminal

gpg --output key.gpg --export id

exportação de chaves gpg

Chave pública do GPG de exportação

Para importar uma chave, basta dar o arquivo de saída (do comando anterior) para o outro usuário e, em seguida, fazê-lo executar o seguinte comando:

Comandos para usar no terminal

gpg --import key.gpg

importação de chave gpg

Para usar a chave normalmente, porém, você precisará verificar a chave para que o GPG confie corretamente nela.

Isso pode ser feito executando o comando --edit-key no sistema do outro usuário, seguido da chave de assinatura:

Primeira corrida gpg --edit-key id:

gpg editar alerta de tecla

Chave GPG

Em seguida, execute o comando fpr, que mostrará a impressão digital da chave. A saída deste comando deve ser validada contra a saída em sua própria máquina, que pode ser encontrada executando o mesmo comando --edit-key em seu sistema:

gpg editar impressão digital da chave 1

Impressão digital da chave GPG

Se tudo corresponder, basta executar o comando sign e tudo estará pronto:

sinal de tecla de edição gpg

Assinar a chave GPG

É isso mesmo! O outro usuário agora pode começar a criptografar arquivos com sua chave pública, assim como você fez anteriormente, garantindo que eles só serão legíveis por você quando você descriptografá-los com sua chave privada.

E isso é o básico para GPG!

Concluindo

Agora você passou por cima de tudo o que precisa para começar a usar GPG, incluindo criptografar arquivos para si mesmo e para outros. Como mencionei anteriormente, isso é apenas para entender como funciona o processo de criptografia e descriptografia do GPG. O conhecimento básico de GPG que você acabou de adquirir pode ser levado ao próximo nível quando aplicado em cenários do mundo real.

Precisa de ajuda para descobrir algo mais, ou algo que não está funcionando certo? Sinta-se livre para deixar qualquer um dos comentários abaixo.

Última atualização deste artigo: 10 de dezembro de 2021

PROPAGANDA
PROPAGANDA