Nesse artigo, você vai aprender a usar o Terminal Linux para encriptar, decriptar, assinar e verificar arquivos e mensagens para gpg.
Passo a Passo usando linha de comando no Terminal:
Primeiro de tudo é o comando para saber as chaves públicas listadas no pc:
gpg –list-key
gpg -k
O seu KEYID são os últimos 16 caracteres da sua fingerprint, que é a sequência enorme de caracteres que aparece ao usar o comando acima.
Se quiser copiar de forma mais fácil o KEYID, você faz o seguinte comando:
gpg –fingerprint
Exemplo de resultado: C964 7LVB 3CJL EBEI
São as últimas 4 casas, aí basta copiar da seguinte forma:
KEYID = C9647LVB3CJLEBEI
Você pode usar o e-mail no lugar do KEYID, o detalhe é que dá conflito se usou o mesmo e-mail em mais de uma chave. Por isso só use o e-mail se você só tem uma única chave com aquele e-mail.
Confiar numa pessoa = Chaves [ultimate]:
As chaves que aparecem como ultimate são as que você confia 100% no criador da chave. As chaves que você criou no Kleopatra já aparecem assim por padrão.
Dá para você importar uma chave e colocar ela como ultimate também com linha de comando:
Primeiro você importa a chave de um .txt para o kleopatra, vai no terminal e usa o comando gpg -k
Aí usa gpg –fingerprint para saber os últimos 4 campos que é o KEYID da pessoa sem o espaço, ou usa o e-mail como disse anteriormente.
Você copia o KEYID dessa chave pública e faz o comando:
gpg –edit-key KEYID
Ele entra no modo de edição: você vai dar um voto de confiança
trust
opção 5 (confio totalmente) e y (yes)
save para finalizar essa alteração na chave
Agora quando você der um gpg -k vai mostrar a chave como [ultimate].
Encriptar arquivo para .gpg
gpg -e -r KEYID file.txt
gpg –recipient KEYID –encrypt file.txt
Assinar e encriptar:
gpg -s -e -r KEYID file.txt
Encriptar mensagem ou arquivo para outra chave pgp para mandar e-mail:
Importe a chave pública da pessoa que você mandará email ou arquivo.
gpg -e -u “Sender KEYID”
————————Encriptar mensagem, assinar e enviar para outra chave pgp:
gpg -s -e -u “Sender KEYID” -r “Receiver KEYID” file.txt
Exemplo: gpg -e -u linuxengenheiro -r linuxfaculdade teste.txt
A pessoa com a chave dela poderá decriptar o arquivo ou a mensagem, e você com a sua chave pública consegue decriptar também.
Exemplo na prática:
comando 1: gpg –list-key
comando 2: ls
É necessário o terminal estar aberto na pasta que contém o arquivo que você vai encriptar, se não conseguir mudar para o diretório onde o arquivo está, simplesmente use a interface gráfica Nemo do Linux Mint para recortar o arquivo da pasta dele para a pasta home do usuário, aí quando der ls vai aparecer o nome do arquivo.
comando 3: gpg -s -e -r linuxengenheiro ‘criptografia pgp.zip’
Detalhe: não sei porque mas o nome do arquivo que eu queria encriptar apareceu com aspas simples, só deu certo o comando quando coloquei exatamente dessa forma acima.
comando 4: ls
Aí ele gera o arquivo ‘criptografia pgp.zip.gpg’
comando 5: por fim, use o comando cat
cat ‘criptografia pgp.zip.gpg’
Se você tentar ler o arquivo .gpg vai estar tudo embaralhado por causa da criptografia do arquivo, não tem como ler, não tem como abrir nem fazer nada.
comando 6: clear
Para limpar o terminal. E pronto, agora você tem um arquivo criptografado para gpg.
Você pode enviar ele para o Proton Drive para ter super segurança. Assim você estará usando uma criptografia fora do aplicativo dentro do aplicativo, logo se tiver uma falha de zero click no app, seu arquivo não será afetado.
É mais trabalhoso e menos confortável, mas por questões de segurança vale a pena.
Criptogafia de documentos de forma assimétrica:
Comando: gpg -k
Escolher a KEYID que vai usar a chave pública que são os 16 últimos caracteres ou o e-mail.
gpg –encrypt –recipient KEYID p.png (pode ser qualquer arquivo)
Enter
Recipiente é para quem vai ser criptografado esse documento.
Agora comando ls mostra o arquivo p.png.gpg
file p.png.gpg
Mostra que já está criptografado com RSA
cat p.png.gpg
Vai estar tudo embaralhado esse arquivo e já não será possível mais abrir essa imagem, só o dono da chave pública vai conseguir descriptografar o arquivo com a chave privada dele.
Outra opção para criptografar:
gpg –armor –output arquivotestecifrado -se -r KEYID arquivotesteplano
Enter
ls -la
aparece agora o arquivotestecifrado criado
cat arquivotestecifrado
Vai aparecer como um arquivo encriptado.
Decriptar arquivos
***Decriptando arquivo .gpg na prática:
gpg -d -u KEYID file.txt.gpg > teste_decriptado.gpg.txt
gpg -d -u linuxengenheiro ‘criptografia pgp.zip.gpg’ > teste_decriptado.gpg.zip;
Se tiver passphrase, nessa hora vai precisar colocar. Depois fazer comando ls para ver na pasta o arquivo decriptado.
Detalhe é que você pode colocar qualquer nome, não precisa ser o nome do arquivo .gpg, mas a extensão deve ser a correta, que no caso era um arquivo .zip
Para o caso de arquivo de texto:
Se quiser só saber a mensagem decriptografada sem salvar nenhum arquivo, você pode fazer simplesmente:
gpg -d -u linuxengenheiro ‘criptografia pgp.zip.gpg’
————————Se você vai enviar o arquivo para outra pessoa:
Você pode usar o comando para um destinatário na hora de criar, aí ambos conseguiram fazer essa decriptação que ensinei acima:
-u linuxengenheiro -r linuxaprendiz
Outras opções Decriptar – Slackjeff tutorial:
gpg –output email-recebido –decrypt p.png.gpg
Ele pede a passphrase
No linux tanto faz a extensão do arquivo, não importa na verdade.
comando: ls mostra o arquivo email-recebido
comando: file email-recebido
mostra que é uma imagem PNG
comando: xdg-open email-recebido você consegue visualizar o arquivo recebido.
***Ou fazer o comando:
gpg –output textoplano -d arquivotestecifrado
Pede a passphrase
ls -la vai aparecer o textoplano decriptografado para abrir
cat textoplano
Assinatura de mensagens e arquivos
Além da criptogafia, você tem que assinar para garantir que foi você mesmo:
Criar assinaturas gerando arquivo para checagem .asc (asc de assinatura)
gpg –clear-sign
Abre o modo editor e pode escrever: Oi, tudo bem com você?
Enter e Ctrl+D para dar um end file
Aí ele vai pedir a passphrase para uma chave, mas você pode mudar para outra chave.
Aí ele vai mostrar a assinatura que começa do BEGIN PGP SIGNED MESSAGE, abaixo tem o Hash SHA256, a mensagem que digitou e abaixo para fazer a verificação.
Você pode enviar tudo isso para um arquivo .asc:
texto.asc
oi tudo bem?
Enter e Ctrl+D para dar um end file
cat texto.asc
aí já vai aparecer a sua mensagem assinada no arquivo.
Essa assinatura seria o mesmo que uma assinatura verificada, autenticada no cartório que você escreveu uma carta para alguém ou um arquivo, foi no cartório para eles verificar que você assinou e vão dar um carimbo.
Então você vai enviar esse arquivo para a pessoa, ela vai pegar a sua chave pública e fazer a verificação se realmente o que você escreveu é aquilo.
Para fazer a assinatura mas com informações bagunçadas, usa assim:
gpg –sign
oi tudo bem ?
Enter e Ctrl+D para dar um end file
redirecionar para gpg –sign > texto.gpg
cat texto.gpg
less texto.gpg
vai estar a mensagem lá, mas na parte de assinatura você não vai conseguir entender nada;
Na parte de verificar assinatura vai funcionar da mesma forma:
gpg –verify texto.gpg
Mostra GOOD signature, mas um é de modo legível por humanos e o outro não é.
O –sign é para quando você vai enviar como um anexo porque está no modo binário, e o –clear-sign é legível por humanos e pode enviar no corpo do e-mail.
Essas são as duas formas de assinar.
Opção para arquivo já pronto:
Você pode simplesmente pegar um arquivo já criado e assinar:
gpg –clear-sign arquivo
Enter
ls arquivo*
vai mostrar o arquivo automático criado como arquivo.asc
cat arquivo.asc
***poderia fazer pelo binário:
gpg –sign arquivo
ls arquivo*
vai mostrar o arquivo automático criado como arquivo.gpg
cat arquivo.gpg
Assinar com uma chave pública específica e não pela default:
gpg –default-key KEYID -a -s file.txt
Ele pede a passphrase
cat file.txt.asc
Vai aparecer tudo embaralhado.
***Ou se você quiser uma saída de texto:
gpg –armor -u linuxengenheiro –detach-sign file.txt
Ele pede a passphrase
aí só dar cat fole.txt.asc
mostra –BEGIN PGP SIGNATURE—
Checar assinaturas de arquivos e mensagens
É necessário fazer isso para verificar se realmente a mensagem ou arquivo não teve nenhuma edição da sua origem.
Aí você pega a mensagem e coloca num arquivo file.txt para fazer a verificação com o comando:
gpg –verify file.txt
gpg –default-key KEYID –verify file.txt
Detalhe: poderia ser texto.asc como o arquivo assinado anteriormente. Fica assim:
gpg –verify texto.asc
ele pede a passphrase
Agora vai mostrar as seguintes informações: data e hora de assinatura, usou chave RSA, e depois diz “Good signature” que diz que está tudo certo, sem problema com essa assinatura, com esse documento.
Você coloca o comando: gpg -k para verificar se a fingerprint é a da chave pública correta.
Se você pegar o mesmo documento e editar um espaço qualquer, um único caracter no text editor, e depois dar o comando vai aparecer assim:
gpg –verify texto.asc
Resultado: BAD signature
Ou seja, não está certo porque a assinatura não chegou no destino como era para ser, teve açguma edição no meio do caminho. Ou mesmo na origem, antes de mandar fez alguma coisa, ou no caminho teve alteração.
Se você pegar o mesmo arquivo e voltar ele como estava, aí a verificação fica como GOOD signature.
Outra opção para arquivos baixados da internet:
gpg –verify arquivoteste.asc texto.asc texto
Você coloca o arquivo que contém a assinatura e o arquivo original.
Certificado de Revogação
Você consegue revogar uma chave se você suspeitar que ela foi exposta a algum atacante que está fazendo falsas assinaturas se passando por você.
Comando: gpg –output revocation.crt –gen-revoke KEYID
Exemplo: gpg –output revocation.crt –gen-revoke C9647LVB3CJLEBEI
coloca y (yes) e motivo 0 = Nenhum motivo especificado e y (yes) novamente.
Vai pedir a passphrase que você usou para criar a chave.
Mensagem final:
Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable. But have some caution: The print system of
your machine might store the data and make it available to others!
Agora é só dar o comando ls para ver o arquivo revocation.crt criado na pasta.
Por fim, use cat revocation.crt para ler o conteúdo do arquivo e use comando clear para limpar o terminal.
Com esse certificado, você consegue revogar a chave comprometida. É importante você pegar esse certificado e guardar a 7 chaves num pendrive offline.


Deixe um comentário