Uma introdução à criptografia de chave pública e PGP

PGP significa Pretty Good Privacy. Isto se traduz em “uma privacidade muito boa”. Se utilizada corretamente, ela pode proteger o conteúdo de suas mensagens, textos ou mesmo arquivos de ser compreendidos até pelos bem financiados programas de vigilância do governo. Quando o Edward Snowden diz que a ""criptografia funciona"", ele refere-se à PGP e aos seus softwares relacionados. Deve-se observar que não é raro para os governos roubarem as chaves privadas de computadores pessoais (confiscando-os ou introduzindo-lhes malwares pelo seu acesso físico ou por meio de ataques de phishing), desfazendo a proteção e permitindo até mesmo ler e-mails antigos. Isto é comparável a dizer que você pode ter um cadeado irremovível em sua porta, mas talvez alguém na rua roube a chave do seu bolso, a copie e devolva-a sorrateiramente onde ela estava, para posteriormente entrar em sua casa, sem mesmo precisar remover o cadeado.

Infelizmente, a PGP é também muito ruim de entendê-la ou utilizá-la. A forte criptografia que a PGP utiliza, a de chave pública, é engenhosa, mas pouco intuitiva. O próprio software da PGP está presente desde 1991, o que o torna tão antigo quanto às primeiras versões do Microsoft Windows, sendo que a aparência dela não mudou muito desde então.

A boa notícia é que agora existem muitos programas disponíveis, os quais podem ocultar o antigo projeto da PGP e torná-la um pouco mais fácil de utilizar, especialmente quando se trata de criptografia e autenticação de e-mail, sua principal aplicação. Nós incluímos guias para instalar e usar este software em outros lugares.

No entanto, antes de você utilizar a PGP ou os demais programas que a empregam, vale a pena passar alguns minutos conhecendo os princípios da criptografia de chave pública: o que ela pode ou não fazer por você, e quando deve usá-la.

Uma história de duas chaves

Eis aqui o que tentamos fazer ao utilizarmos a criptografia para combater a vigilância:

Tomemos uma mensagem claramente legível, como ""Olá, mãe"". A criptografamos em uma mensagem codificada é incompreensível a qualquer um que olhe para ela e diga “OhsieW5ge+osh1aehah6”. Assim, a enviamos pela Internet, onde ela pode ser lida por um monte de pessoas que esperamos não poder compreendê-la. Então, quando ela chega ao seu destinatário, apenas ele pode descriptografá-la para a sua forma original.

De que maneira o destinatário sabe descriptografar a mensagem quando ninguém mais consegue fazê-lo? É porque ele sabe algo a mais do que as outras pessoas. Vamos chamar isso de chave para descriptografar, pois ela destrava a mensagem interna ao código.

Como o destinatário conhece esta chave? Principalmente porque o remetente a informou previamente, como, por exemplo, ""leia a mensagem contra um espelho"" ou ""substitua cada letra pela próxima letra do alfabeto"". Entretanto, há um problema com esta estratégia. Caso esteja preocupado em ser espionado quando enviar sua mensagem criptografada, como você fará para enviar a chave ao destinatário sem que alguém também espie a conversa? Não faz sentido enviar uma mensagem engenhosamente criptografada se um invasor tem conhecimento da chave para descriptografá-la. Se você tem uma maneira secreta para encaminhar as chaves para descriptografar, por que não utilizá-la para todas as mensagens sigilosas?

A chave pública de criptografia tem a solução certa para isso. Cada pessoa em uma conversa tem uma maneira de criar duas chaves. Uma delas é a sua chave privada, a qual ela mantém consigo e não permite que ninguém a conheça. A outra é uma chave pública, fornecida a quem quiser se comunicar com ele. É indiferente quem pode ver a chave pública. Você pode colocá-la on-line, onde todos possam vê-la.

As "chaves" em si são, essencialmente, números realmente bastante extensos, com certas propriedades matemáticas. As chaves pública e privada estão conectadas. Se você codificar algo utilizando a chave pública, então alguém pode descodificá-lo com a sua chave privada correspondente.

Vejamos como isso poderia funcionar. Você quer enviar uma mensagem secreta para o Aarav. Ele tem uma chave privada, mas, como um bom usuário de criptografia de chave pública, colocou sua chave pública conectada à sua página da Web. Você faz o download desta, criptografa a mensagem com ela e a envia para ele. Esta pessoa pode descriptografá-la, pois tem a correspondente chave privada, mas ninguém mais pode fazer isso.

A assinatura nos tempos atuais

A criptografia de chave pública elimina o problema de ter de contrabandear a chave para descriptografar para a pessoa que você deseja enviar uma mensagem, pois esta pessoa já tem a chave. Você só precisa obter a correspondente distribuída a todos pelo destinatário, até mesmo para os espiões. Ela é inútil para qualquer pessoa que tente descriptografar a mensagem, uma vez que ela só serve para criptografá-la.

E tem mais! Se você criptografar uma mensagem com uma chave pública específica, aquela só poderá ser descriptografada com a correspondente privada. O oposto também é verdadeiro. Se você criptografar uma mensagem com uma chave privada específica, aquela somente será descriptografada com a equivalente pública.

Para que isso seria útil? À primeira vista, parece não haver qualquer vantagem criptografar uma mensagem com sua chave privada, para que todos (ou pelo menos aqueles que têm a sua chave pública) possam descriptografá-la. Mas suponha que eu tenha escrito a seguinte mensagem: “Eu prometo pagar ao Aazul $ 100”, e depois a criptografei com a minha chave privada. Qualquer um pode descriptografá-la - mas apenas uma pessoa pode tê-la escrito: a que tinha a minha chave privada. Se eu fiz um bom trabalho, mantive a minha chave segura, ou seja, somente comigo. Por exemplo, ao criptografar a mensagem com a minha chave privada, tenho certeza de que ela só pode ter sido escrita por mim. Em outras palavras, eu fiz com esta mensagem digital o mesmo que faço quando assino uma mensagem no mundo real.

O fato de assinar as mensagens também as torna à prova de adulteração. Se alguém tentar alterar a mensagem de “Eu prometo pagar ao Aazul $ 100” para “Eu prometo pagar ao Bob $ 100”, este alguém não conseguirá assiná-la novamente utilizando a minha chave privada. Assim, é garantido que uma mensagem assinada seja originada de determinada fonte e não possa ser modificada em trânsito.

Desse modo, a criptografia de chave pública permite que você criptografe e envie mensagens de modo seguro a qualquer um, cuja chave pública seja do seu conhecimento. Se outras pessoas a conhecem, eles podem enviar mensagens criptografadas, as quais só você consegue descriptografar. Se elas sabem qual é a sua chave pública, você pode assinar as mensagens para que saibam que apenas a sua pessoa pode tê-las enviado. Se você sabe qual é a chave pública de alguém, pode descriptografar uma mensagem assinada por esse indivíduo e saber que ela só pode ser proveniente dele.

Agora deve estar claro que a criptografia de chave pública torna-se mais útil, conforme mais pessoas têm conhecimento dela. Deve também ficar evidente que você precisa manter sua chave privada muito segura. Caso alguém obtenha uma cópia dela, esta pessoa pode se passar por você e assinar mensagens alegando que foram escritas pelo possuidor da chave pública. A PGP tem um recurso para ""revogar"" uma chave privada e advertir as pessoas que ela não é mais confiável, mas esta não é uma ótima solução. A coisa mais importante da utilização de um sistema de criptografia de chave pública é proteger a sua chave privada com extremo cuidado.

Como funciona a PGP?

A Pretty Good Privacy (privacidade muito boa) visa principalmente as minúcias da criação e da utilização das chaves pública e privada. Você pode criar a partir dela um par de chaves pública/privada, proteger esta com uma senha e depois utilizar a sua chave pública para assinar e criptografar de textos. Ela também possibilitará fazer download de chaves públicas de outras pessoas e fazer o upload de suas chaves públicas para os ""servidores de chaves públicas"", os quais são repositórios onde outras pessoas podem encontrar a sua chave. Consulte os nossos guias para instalar, no seu software de e-mail, um software compatível com a PGP.

Se há algo que você precisa levar consigo desta visão geral é: você deve manter sua chave privada armazenada em algum lugar seguro e protegido com uma senha longa. Você pode fornecer a sua chave pública para alguém que queira se comunicar com você ou que gostaria de saber se uma mensagem realmente foi enviada por você.

PGP avançada: a rede de confiança

Você pode ter visto uma falha em potencial no funcionamento da criptografia de chave pública. Suponha que comecei a distribuí-la e que eu diga que ela pertencer ao Barack Obama. Se as pessoas acreditaram em mim, podem começar a enviar mensagens secretas para o Barack, criptografando-as com essa chave. Ou eles podem acreditar que qualquer coisa assinada com essa chave é uma declaração juramentada do Barack. Isso é muito raro e ainda que isso tenha realmente acontecido com algumas pessoas na vida real, incluindo com alguns autores deste documento - algumas pessoas que escreveram para ele foram enganadas! (não temos certeza, neste caso, se algumas das que fizeram as chaves falsas puderam ou não interceptar e ler as mensagens em trânsito, ou se tudo não passou de uma brincadeira para torná-las mais inconveniente para as pessoas terem uma conversa segura.)

Outro ataque furtivo é o de um invasor sentar-se entre duas pessoas que conversam on-line, espionar toda a conversa delas e ocasionalmente inserir mensagens enganosas no diálogo. Este ataque é totalmente possível graças ao formato da Internet, que é um sistema que transporta as mensagens entre vários computadores distintos e entidades privadas. Sob estas condições (conhecidas como "man-in-the-middle attack" ou literalmente, em português, “ataque do homem no meio” ou até de “ataque do interceptador”), a troca de chaves sem um prévio acordo pode ser muito arriscada. Uma pessoa que parece ser o Barack Obama anuncia “Aqui está a minha chave” e ela envia um arquivo de chave pública. Mas e se alguém ficou esperando por esse momento do anúncio, interceptou a transmissão da chave do Obama e inseriu sua própria chave?

Como podemos comprovar que uma determinada chave pertence a uma pessoa específica? Uma maneira é obter a chave diretamente, mas não é muito melhor do que nosso desafio original, que é conseguir a chave secreta sem que alguém nos detecte. Ainda assim, as pessoas trocam suas chaves públicas quando se encontram em particular e em “cryptoparties” públicas (ou “criptofestas” - encontros públicos de criptografia).

A PGP tem uma solução ligeiramente melhor, chamada de “rede de confiança"". Nela, se eu acredito que uma chave pertence a uma determinada pessoa, posso assiná-la e, em seguida, fazer upload da dela (e da assinatura) para os servidores de chaves públicas. Então, eles fornecem as chaves assinadas para quem as solicite.

De uma maneira geral, quanto mais as pessoas da minha confiança assinam uma chave, mais provável é que eu acredite que a ela realmente pertence a quem a reivindica. A PGP possibilita assinar as chaves de outras pessoas e também permite que confie em outros signatários, de modo que, se eles a assinarem, seu software interpretará automaticamente que ela é válida.

A rede de confiança tem seus próprios desafios, e as organizações, como a EFF, está atualmente analisando as melhores soluções. Mas, por ora, caso queira uma alternativa para fornecer pessoalmente as chaves para alguém, suas melhores opções são utilizar a rede de confiança e a do servidor de chaves públicas.

Metadados: o que a PGP não pode fazer

A PGP faz de tudo para garantir que os conteúdos de uma mensagem sejam secretos, genuínos e autênticos. Mas essa não é a única preocupação que você pode ter em relação à privacidade. Como observamos, as informações compreendidas nas suas mensagens podem ser tão reveladoras quanto o seu conteúdo (consulte sobre os ""metadados""). Caso esteja trocando mensagens PGP com um conhecido dissidente em seu país, talvez você encontre-se em perigo, apenas por se comunicar com essa pessoa, mesmo que as mensagens não estejam sendo descriptografadas. De fato, em alguns países, você pode ser preso simplesmente por se recusar a descriptografar as mensagens criptografadas.

A PGP não faz nada para encobrir com quem você está falando ou mesmo que está utilizando a PGP para fazê-lo. Na verdade, se fizer upload da sua chave pública para os servidores de chaves ou assinar as de outras pessoas, estará efetivamente mostrando ao mundo qual é a sua chave e quem você conhece.

Você não tem de fazer isso. Você pode deixar quieta sua chave pública da PGP e fornecê-la apenas às pessoas com quem se sente seguro, dizendo-lhes para que não façam upload dela para os servidores de chaves públicas. Você não precisa vincular seu nome a uma chave.

É mais difícil encobrir que está se comunicando com uma determinada pessoa. Uma maneira de fazer isso é ambos utilizarem contas de e-mail anônimas, acessando-as pelo Tor. Se fizer isso, a PGP ainda será útil, seja para manter suas mensagens de e-mails privadas, seja para provar um ao o outro que elas não foram adulteradas.

Last updated: 
2014-11-07
JavaScript license information