Agora entendo por que quase ninguém criptografa seus e-mails



A criptografia de email é um procedimento difícil e doloroso. Recentemente, eu mesmo percebi o quanto. Uma amiga minha, muito avançada no campo da segurança da informação, me enviou sua chave pública PGP e me pediu para mudar para criptografia. Não, ela não é da NSA ou da CIA, é apenas uma pessoa comum que se preocupa com sua privacidade. Eu nunca havia enviado cartas criptografadas antes, mas pensei: "Por que não?" Por muitos anos, eu quis aprender isso, mas não havia ninguém com quem trocar cartas criptografadas.

Comecei instalando o GnuPG na minha máquina Linux.

O GnuPG é semelhante ao PGP, pois usa chaves públicas e privadas para criptografia e descriptografia, mas vem com código-fonte aberto e muitas distribuições Linux. Outra versão de código aberto do PGP é o OpenPGP.

O GnuPG para Windows chamado Gpg4win pode ser baixado do site oficial . Eu escolhi um método geral de criptografar e descriptografar mensagens, que não está vinculado a nenhum provedor de email, porque não queria me limitar à capacidade de criptografar apenas um provedor. Além disso, a única maneira de garantir que mesmo o provedor de correio não tenha acesso às suas cartas é criptografá-las. Encontrei o guia GnuPG mais abrangente do How-To Geek .

Importei a chave pública do meu amigo usando este comando:

gpg --import her_public_key_file.key

Este comando her_public_key_file.keyé substituído pelo arquivo de chave pública real. Depois, verifiquei se a chave dela foi importada com sucesso:

gpg --list-keys

Uma mensagem como esta apareceu:

pub 2048R/FFE7947D 2019-10-11 [expires: 2021-10-10]
uid her_email@her_email_provider.com
sub 2048R/AB48FEC2 2019-10-11

Isso significa que o GnuPG reconhece sua chave pública como válida e a salva para uso futuro.

Em seguida, assinou sua chave pública:

gpg --sign-key her_email_address@email_provider.com

Assinar a chave pública informa ao GnuPG que você confia nessa chave, ou seja, ela realmente veio dessa pessoa. Cada chave pública deve ser assinada antes que as mensagens do proprietário dessa chave pública possam ser descriptografadas. Na minha opinião, este passo não faz nenhum sentido. Por que você importaria uma chave se acha que não veio da pessoa certa?

Então eu tentei gerar minhas chaves:

gpg --output ~/temp.key --armor --export My Name 

Bem, após esse comando, apareceu uma mensagem de erro informando que o final de uma nova linha foi encontrado. Eu pensei que isso poderia ocorrer devido a espaços no meu nome e entre o nome e o endereço de email, então tentei vários formatos. Após cerca de uma hora e muitas tentativas malsucedidas, algumas das quais pareciam bem-sucedidas, mas não foram, finalmente encontrei o comando certo:

gpg --gen-key

O comando acima faz uma série de perguntas. No começo, escolhi a opção "1" e depois a opção de comprimento de chave de 2048 bits. Defina um período ilimitado de validade da chave. Eu não indiquei o sobrenome no campo nome, mas os espaços também são suportados lá: você pode especificar o nome e o sobrenome. Em seguida, digitou o endereço de email dele. O campo de comentário é deixado em branco. E, finalmente, ele introduziu uma senha longa. Uma senha é simplesmente sinônimo de senha. Eu escrevi onde não vai se perder. Na verdade, eu o coloquei em um arquivo criptografado usando o Truecrypt. Uma senha será necessária mais tarde para criptografar as mensagens em caso de reinstalação do GnuPG no disco rígido e reimportação das chaves. E não se esqueça de fazer backup das próprias chaves!

Depois de criar as chaves, verificamos o resultado:

gpg --list-keys

Este comando produz algo como isto:

pub 2048R/FFE7947D 2019-10-11 [expires: 2021-10-10]
uid her_email@her_email_provider.com
sub 2048R/AB48FEC2 2019-10-11


pub 2048R/3A785D3F 2020-02-22
uid My Name
sub 2048R/A7B384FE 2020-02-22

Executei a geração de chaves duas vezes porque não tinha certeza se esse resultado significa que há um par de chaves públicas / privadas ou apenas uma chave. De alguma forma, acabei percebendo que havia criado dois pares de chaves e excluí o segundo par.

Depois tentei exportar minha chave pública para um arquivo. A chave pública deve ser enviada a todos para quem você envia uma carta criptografada para que ela possa descriptografar. Não sei ao certo qual comando usei, mas ele produziu um arquivo de texto que começa com -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1. Enviei esta carta para minha amiga, e ela me respondeu com uma mensagem criptografada.

Tentei descriptografar o arquivo message.asccom a carta dela:

gpg --decrypt message.asc > plain.txt

Mas o GnuPG deu uma mensagem de erro de que não foi possível encontrar a chave secreta:

gpg: encrypted with RSA key, ID XXXXXXXX
gpg: decryption failed: secret key not available

Mas eu vi minha chave secreta. Eu poderia até exportá-lo. Eu sabia que ele era! O que posso dizer, às vezes os programadores escrevem mensagens de erro realmente terríveis. Nesse ponto, eu já havia começado a sentir alguma irritação.

Eu não sabia o que fiz de errado. A única coisa que eu poderia assumir era que, de alguma forma, não consegui criar as chaves corretamente. Ou isso, ou eu exportei a chave pública errada. Então eu decidi começar tudo de novo. Excluí meu par de chaves, gerei um novo par de chaves e exportei minha chave pública para um arquivo usando este comando:

gpg --output ~/my_public_gpg_key.key --armor --export My Name my-email@my-email-povider.com

Então ele enviou a um amigo uma nova chave pública. O parâmetro --armordiz ao GnuPG para criar o arquivo de chave pública em forma de texto. Nome do arquivo - my_public_gpg_key.key.

Ela novamente criptografou sua mensagem e a enviou para mim. Quando tentei descriptografá-lo, vi novamente a mesma mensagem de erro:

gpg: encrypted with RSA key, ID XXXXXXXX
gpg: decryption failed: secret key not available

Dessa vez, notei que o identificador de chave corresponde à minha chave pública antiga, não à nova. Decidi que ela estava errada e pedi que tentasse novamente com uma nova chave. Então, para ter certeza de que não estava enganado, decidi verificar se a chave que eu usava era realmente a minha nova chave. A nova chave que enviei não era nem uma das minhas chaves públicas! Foi sua chave pública que começou com -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1! De alguma forma, eu exportei a chave dela com a adição Version: GnuPG v1! Eu sei disso porque ainda tinha um arquivo com a chave dela que ela me enviou, e começa com -----BEGIN PGP PUBLIC KEY BLOCK-----. Não está aí Version: GnuPG v1! E a chave pública dela corresponde à que eu enviei.

Eu reexportei minha chave pública usando o mesmo comando acima. Dessa vez, verifiquei se realmente era minha chave antes de enviá-la por e-mail. Nos materiais de referência do Internet GnuPG, aprendi que uma mensagem sobre a ausência de uma chave secreta pode aparecer se as pessoas usarem versões diferentes do GnuPG. Eu mencionei isso para ela quando enviei uma nova chave por email.

Algumas semanas depois, recebi uma carta de resposta. A essa altura, eu já tinha decidido que ela havia se rendido. Nas semanas seguintes, tive alguns problemas com o computador, o que tornou necessário reformatar o disco rígido. Então eu tive que reinstalar o GnuPG, reimportar minhas chaves e reimportar sua chave pública. Felizmente, fiz backups! Então eu respondi a última carta dela com outra letra que criptografei com este comando:

gpg --encrypt --sign --armor -r her-email@her-email-provider.com --passphrase my-pass-phrase my-msg.txt

Obviamente, essa não é minha senha real, substituí-a por my-pass-phrasee a mensagem não criptografada por my-msg.txt. Um texto cifrado foi gerado e seu arquivo foi nomeado my-msg.tx.gpg. Não consegui encontrar nenhuma informação sobre como descriptografar meu próprio texto cifrado, então tive que enviá-lo para ela, sem saber se o havia criptografado corretamente. Eu só sabia que ele parecia ter o tamanho certo. Depois de algumas semanas, recebi dela uma nova carta criptografada sobre um tópico diferente. Só então parecia que eu finalmente chegara ao ponto em que podemos nos comunicar com sucesso por email criptografado. Todo o processo do início ao fim levou mais de um mês! Ainda estou tentando automatizar os comandos do GnuPG para poder usá-los sem pensar muito no que estou fazendo.

Com essa experiência, percebi que o email criptografado, embora seja um exercício interessante, não é muito prático. A menos que você seja o Edward Snowden monitorado pela NSA, é improvável que você possa justificar o esforço para criar e usar o correio criptografado. E se você não é Edward Snowden com segredos importantes, é improvável que alguém queira gastar energia na correspondência criptografada com você.

Criptografar e descriptografar emails, como eu fiz no GnuPG, é muito tedioso. Como já gastei muito esforço nisso, continuarei a usá-lo para me comunicar com meu amigo on-line. Mas eu não recomendaria que uma pessoa comum usasse o GnuPG para criptografar emails, se isso puder ser evitado. Entendo que existem soluções mais simples no mercado de provedores de correio específicos, como o Protonmail, mas a maioria das pessoas não deseja alterar o provedor para usá-las. Todos nós precisamos de uma maneira mais fácil de enviar e receber correio criptografado sem alterar o provedor de correio. GnuPG não é uma solução. Se você conhece uma maneira mais simples de criptografar e-mails, considere deixar um comentário.


All Articles