Aplicativos, geek, internet, Segurança e Privacidade

PGP e Criptografia de Chave Pública: O que é e para que serve?

encryption-and-key

Em 1991, o criptógrafo Phil Zimmermann desafiou o governo dos Estados Unidos ao lançar publicamente seu novo programa de criptografia de chave pública chamado PGP, Pretty Good Privacy, o primeiro que permitiu criptografia de email de forma relativamente prática, sem exigir que remetente e destinatário se encontrem fisicamente em algum momento. Foi ousado publicar o software para distribuição livre na então jovem internet, porque qualquer sistema de criptografia com chave maior que 40 bits (ou seja, qualquer um que não seja um brinquedo) era considerada pelo governo americano como criptografia de nível balístico ou militar, e sua exportação, pela lei da época, era análoga à exportação de munição, e estava proibida, especialmente para países que estavam sob embargo dos EUA, como Irã. Zimmermann sabia e enfrentou bravamente o governo americano num longo processo. Foi um dos casos em que desobedecer a lei é a coisa a se fazer, e o benefício que o PGP ofereceu às pessoas de todo mundo é incalculável, os que mais usufruíram dele foram jornalistas, ativistas, militantes, whistleblowers, e quaisquer pessoas residentes em países ditatoriais (ou não) em que suas comunicações privadas poderiam até lhes custar a vida. Mas não se engane, não são só os iranianos, cubanos e paquistaneses precisam de privacidade, e também não apenas criminosos, como muitos pensam. Todos precisam, e você não sabe de que forma uma informação aparentemente trivial sua pode ser usada contra você, até que o improvável aconteça.

O protocolo PGP, apesar de ser fácil o bastante para ser usado por leigos em informática com algum esforço e alguma vontade de aprender coisas novas, é bastante complexo em seu funcionamento, e a troca de mensagens criptografadas envolve não apenas a criptografia assimétrica ou de chave pública, mas também criptografia simétrica tradicional para chaves de sessão e outras minúcias técnicas. Mas aqui, para todos os efeitos, vou ignorar estas tecnicalidades e falar apenas da criptografia assimétrica, que é a essência do PGP. A intenção neste post é explicar o mínimo que você precisa saber sobre o sistema e decidir se é necessário para você. É um pouquinho complicado, mas não é ciência de foguetes, então vamos por partes (insira sua piada manjada favorita de professor de cursinho envolvendo serial killers londrinos)

Como funciona

Primeiro, vamos explicar o que é criptografia simétrica: Nada mais é que qualquer criptografia em que uma mesma chave sirva tanto para criptografar quanto para descriptografar um arquivo. Se você é um adolescente que mora com os pais, e só tem um PC na casa para todo mundo, e você não quer que seus pais e irmãos vejam a sua pasta de pornografia pesada, você guarda as fotos e vídeos obscenos no famoso “rar com chave”, compacta toda a putaria em um arquivo só com o WinRAR ou programa de compactação similar (eu gosto do 7Zip) e põe uma senha nele. Neste caso, a senha é a chave, e é a mesma usada para criptografar (quando você está criando o arquivo criptografado com os porns recém baixados, mas ainda tem que fazer o dever de casa) e para descriptografar (quando chega finalmente a hora da bronha). Este é o tipo mais elementar de criptografia, existe literalmente há séculos, e é amplamente utilizado. A protocolo de criptografia simétrica mais forte existente é provavelmente o AES 256, um protocolo que usa uma chave de 256 bits, ou seja, existe 2256 chaves possíveis. O protocolo AES é tão bom que mesmo usando uma chave menor, de 128 bits, já é praticamente inquebrável. O programa de criptografia de disco do macOS, File Vault, usa AES 128. Criptografia simétrica é muito útil para proteger dados que não serão transportados para lugar nenhum, ou aos quais só uma pessoa deve ter acesso. Por exemplo, para criptografar o seu notebook ou seu celular, recurso oferecido por qualquer dispositivo Android ou iPhone.

Mas às vezes ele não serve. Por exemplo, se você for um jornalista e a sua fonte, com uma revelação bombástica, mora no outro lado do mundo, ou se você for um militante pró-democracia em uma país ditatorial, e o único contato que tem com outros militantes é pela internet, vocês não podem se encontrar em pessoa para trocar uma senha, seria inviável ou muito perigoso, e obviamente você não pode mandar a senha pela internet, porque se isto fosse seguro, nem precisaria da criptografia para começo de conversa. É aí que entra a criptografia assimétrica. Foi inventada nos anos 70 por pesquisadores do MIT. Atualmente, os dois protocolos ou algoritmos que podem ser usados com o PGP (um protocolo de troca de mensagem sempre envolve vários sub-protocolos) são o RSA, um dos pioneiros, e o DSA – El Gamal, fusão de dois protocolos criados nos anos 80. Uma chave criptografa a informação, e a outra descriptografa.

No PGP (o protocolo PGP, tanto no programa PGP original quanto em sua implementação software livre, GPG) você primeiro gera um par de chaves: Uma pública e uma privada. A pública, como o nome diz, você deve enviar no mínimo para todo mundo com quem queira se comunicar privadamente, ou para todo mundo mesmo, enviando-a a um servidor de chaves, onde qualquer um que queira enviar-lhe emails criptografados pode conferir sem precisar entrar em contato primeiro. A minha por exemplo, está no servidor keys.mailvelope.com, um servidor de chaves novo que verifica se quem manda a chave pública também tem acesso à chave privada e ao email, e quem procurar nele pelo email c0anomalous@icloud.com irá achar minha chave pública. Ei-la:

Clique para ver a chave

Sim, isso tudo é a chave. A pública, isto é. A privada é maior ainda. Ela também tem uma impressão digital, um código de identidade para conferência rápida, no meu caso, 5BE3 4742 1715 C578 4682 A760 7853 52E4 C096 34F1. Com o blocão de texto, você pode mandar um email criptografado para mim, ou criptografar qualquer arquivo e me mandar por qualquer meio para que só eu possa abrir. Só eu posso abrir porque só eu tenho a contraparte privada da chave, que evidentemente eu não vou colar aqui. E, se ainda não ficou claro: A chave não é a senha. A chave privada pode e deve ser protegida por senha, para não poder ser usada facilmente se cair em mãos erradas, mas a chave em si, tanto a pública quanto a privada, não é uma senha que você digita, é um arquivo de computador (o blocão de texto acima).

No caso da chave pública, é um arquivo que você disponibiliza para todos, ou ao menos para aqueles com quem quer se comunicar sigilosamente, e a chave privada é um arquivo que só você possui. O PGP também permite criar uma chave de revogação para um par de chaves, que assim que é publicada no servidor de chaves (e um servidor de chaves replica aos demais), invalida aquela chave e deixa todos que procurarem pelo seu email saber que ela não serve mais. Você deve revogar a chave e fazer uma nova assim que tiver suspeita de que ela caiu em mãos erradas (por exemplo, se o seu celular, com aplicativo de email configurado para PGP, for roubado). Ao criar o par de chaves, também é possível adicionar uma data de validade, e nesta data as chaves são revogadas automaticamente. O programa pede dados, nome e email no mínimo, quando você vai criar o par de chaves, e algumas implementações deixam por mais dados, até foto, mas a maioria destes campos podem ser deixados em branco, e os dados não precisam ser verdadeiros, nem o email.

Exemplo:

Numa típica comunicação por email criptografada, eu, c0anomalous, escrevo uma mensagem para meu destinatário, um membro da bancada evangélica que acabou de propor um projeto de lei proibindo preservativos sabor tuti-fruti, por incentivarem o pecaminoso sexo oral: “Vai se foder seu bosta, aqui o estado é laico. Assinado c0anomalous”. Então, eu criptografo esta mensagem com a chave pública do Pastor Fulano, o pastor Fulano recebe o email, decifra o conteúdo com sua chave privada, e recebe o insulto de minha parte. Alguém que consiga a senha do email do pastor Fulano mas não tenha sua chave privada só verá que tem um email meu para ele, mas pode pensar que eu mandei um elogio ou um pedido de bênção.

A chave privada, além de servir para descriptografar mensagens recebidas, também serve para assinar um email ou qualquer arquivo e garantir sua autenticidade. Então, além de mandar o email criptografado para o pastor, eu também posso assinar o mesmo email com a minha chave privada, o programa de email com PGP confere se a assinatura é válida,  pela impressão digital que consta no servidor de chaves, e assim ele pode ter certeza de que quem mandou o religioso se foder foi c0anomalous mesmo, não foi Kéfera Buchmann ou Donald Trump se passando por c0anomalous.

O famoso certificado digital, usado por todos os profissionais de direito, nada mais é do que uma chave privada.

O Bitcoin, de que tratei em outro post, também usa um sistema de chave pública apenas para assinatura: A sua carteira é uma coleção de chaves privadas, com as quais você assina transações, que são aceitas pela rede bitcoin se a carteira tiver fundos suficientes e a assinatura for válida. O endereço bitcoin (o meu por exemplo 13GLhDE5YsFCavX5wxChWW2hoBtLYU1Pny), que recebe o montante, é um código derivado da chave pública, é um resumo, grosseiramente falando, similar à impressão digital. Se fosse a chave pública inteira, como vimos, seria muito grande.

Como isto é possível?

E por que não é possível descobrir a chave privada a partir da chave pública ou da assinatura de um arquivo feita com a chave privada? O cientista da computação Andrew Tanenbaum explica que as chaves pública e privada são dois números enormes relacionados à um número primo em comum. Multiplicar dois números grandes só com lápis e papel, apesar de demorado e tedioso, é relativamente fácil, por exemplo, multiplicar 34500 por 21200. Mas extrair a raiz quadrada de 731400000  (731 milhões e 400 mil, o produto da mesma multiplicação) já é algo que quase ninguém conseguiria fazer na unha, mesmo com muito tempo disponível, não importa quanto sexo anal fosse oferecido como recompensa. Uma operação é o inverso da outra, mas fazer uma é muito mais difícil que fazer a outra. Esta é a base da criptografia assimétrica ou de chave pública: A criptografia é uma operação “fácil” e a descriptografia é uma operação “difícil”, mesmo para um computador, e sem ter a chave certa, é praticamente impossível. (Tanenbaum, 2010)

E como eu uso?

Se por um lado o funcionamento interno é espinhoso, por outro o PGP foi feito para ser relativamente simples de usar por leigos. O programa PGP original de Phil Zimmermann, que antes era completamente grátis para qualquer fim não-lucrativo, passou por várias mãos e hoje pertence à Symantec, empresa do Norton, e não é mais grátis. Esqueça-o. A implementação mais usada atualmente é a GPG. Você pode baixar para Windows e para Mac. O que você baixa no site oficial é um pacote com vários programas, como o chaveiro Kleopatra (um chaveiro mesmo, um programa que guarda a sua coleção de chaves públicas e privadas) e extensão para o Outlook. A versão para Mac também implementa uma extensão para o programa de email padrão do Mac. Os pacotes incluem ferramentas para criptografar e descriptografar qualquer arquivo. O Linux (qualquer distribuição) já vem com GPG por padrão no sistema, utilizável por linha de comando, mas se você usa o programa de email Thunderbird, deverá baixar a extensão Enigmail para ele. Também pode baixar o Kleopatra ou outro chaveiro com interface gráfica.

A maioria das pessoas usa Webmail, como Gmail, Outlook ou Yahoo. Neste caso, a opção é instalar em seu navegador a extensão Mailvelope. É também a forma mais simples de usar PGP para mandar e receber emails criptografados e assinados. Na mesma extensão você pode criar seu par de chaves ou importar um que já tenha, e também criptografar e descriptografar arquivos no navegador.

Para celular e tablet: Os aplicativos de email padrão não servem para PGP. Você precisará de um aplicativo de email compatível, como o K-9 Mail ou Squeaky Mail e também um aplicativo para gerir suas chaves e se integrar ao app de email, como o Open KeyChain ou APG. Pelo menos esses apps todos são grátis.

Há duas maneiras de mandar um email assinado com PGP: PGP Mime (em que a assinatura vem de forma similar a um anexo) e com o bloco de assinatura, um hash, embutido ao fim do email, como se fosse uma assinatura de email padrão, que é realmente feio, mas no Mailvelope, é a única opção, e a maioria dos programas de email não aceitam de outra forma, o PGP Mime é mais elegante mas menos compatível. Depois do PGP foi criado outro padrão de criptografia para email, o S/Mime, que é um pouco diferente, uma proposta mais centralizada, ao invés do próprio usuário fazer seu par de chaves, uma entidade certificadora envia uma chave privada para você e faz a certificação, é o mesmo sistema usado para os certificados de sites (o cadeadinho verde). A empresa Comodo, que também faz programas de segurança, oferece certificados S/Mime gratuitamente.

Mas Vale a Pena? Há alternativas melhores?

Talvez não valha para você. O PGP era realmente genial e inovador nos anos 90 e absolutamente essencial para qualquer um que precisasse de privacidade comunicando-se na internet (e todos precisam, algumas pessoas apenas pensam que não). Mas hoje em dia, é uma tecnologia que espanta usuários acostumados com as interfaces amigáveis, intuitivas e sem necessidade de manuais. Muitos de seus entusiastas do passado hoje consideram a tecnologia arcaica, pouco prática, desajeitada e trabalhosa demais; simplesmente exige muito do público leigo. Moxxie Marlinspike, da Open Whisper Systems, é um destes antigos entusiastas hoje desencantados, que acha que chegou à hora de mudarmos para algo melhor, como seu próprio protocolo de mensagens instantâneas, o Signal (implementado no aplicativo de mesmo nome, e também no WhatsApp e nos modos privados do Google Allo e Facebook Messenger). Em uma postagem em seu blog sobre o assunto, diz até que não tem vontade de ler quando chega um email criptografado com PGP. Em sua opinião, o PGP não conseguiu abarcar um grande público, como os hackers sonhavam nos anos 90, e agora é uma espécie de clube particular do qual ele não quer mais fazer parte, e é melhor que morra logo.

Eu não sou tão radical, até porque eu mesmo tenho minha chave PGP, que usei no exemplo, e sinta-se à vontade para mandar um email criptografado com ela se quiser (de preferência mande nudes), e o protocolo, apesar de velho, ainda é extremamente seguro, se você usar os melhores algoritmos de criptografia (RSA 4096 ou DSA-Elgamal 3072), mas admito, apesar da tecnologia ainda ser usada para o que foi feita desde o princípio, ajudar jornalistas, militantes, ativistas, e também ser muito usada por criminosos (obrigatório em todos os mercados da Deep Web, para vendedores e compradores), é muito “chato” para a maior parte do público, especialmente quem não tem muito tempo e/ou paciência para aprender sobre ele, e é preciso estudar um pouco (no mínimo as informações deste post) para usar, não é uma tecnologia “for dummies”, por assim dizer. E tem outros inconvenientes: A chave pode ser perdida ou extraviada, a senha esquecida, e é chato gerenciar as suas chaves e ter mais senha para lembrar, além de mandar a chave privada para todos os seus dispositivos dos quais se manda emails.

Em seu livro Sem Lugar Para Se Esconder, o jornalista Glenn Greenwald conta como foi difícil para Edward Snowden convencê-lo a instalar o PGP em seu computador, para que pudessem se comunicar secretamente e fazer o vazamento dos programas ilegais de espionagem do governo, sem intervenção das autoridades americanas, ao menos não até que o vazamento já estivesse na imprensa. Não importa quão mastigadas eram as informações que o hacker dava ao jornalista sobre a instalação do PGP (fez até um vídeo tutorial) e quantas formas de ajuda oferecia. Greenwald quase perdeu o furo da vida dele por não estar disposto a usar o aprender a usar PGP. Senti empatia. Já perdi a conta de quantas vezes fui desprezado tentando oferecer uma tecnologia melhor para alguém, mesmo uma também gratuita e infinitamente mais fácil de usar que o PGP.

A criptografia PGP não atende ao quesito de segurança forward secrecy, isto é, se alguém conseguir a sua chave privada de alguma forma (por exemplo, instalando um malware em seu PC), conseguirá descriptografar absolutamente todos os emails ou quaisquer arquivos mandados para você com aquela chave, a não ser que você seja biruta o bastante para criar uma nova chave para cada email. Aliás, a própria tecnologia de email em si é bem velhinha e fora de moda, meio cafona, especialmente para o público mais jovem.

Existem maneiras melhores de se comunicar privadamente pela internet, todas se baseiam em criptografia assimétrica que expliquei neste post, mas em um aplicativo de mensagem instantânea – como os rivais Signal e Telegram, e também Wire, Viber e tantos outros –  todo o processo de geração, armazenamento e distribuição de chaves, criptografia e descriptografia, é ocultado do usuário, feito instantaneamente e de forma invisível sem o usuário precisar saber sequer o que é uma chave. Estas são as melhores alternativas atuais para se comunicar trocar qualquer tipo de informação com privacidade, em minha opinião.

Se você precisar trocar informação sigilosa por email com alguém, e tiver que ser por email mesmo, mas PGP não for uma opção de jeito nenhum, você pode arriscar a nuvem criptografada do Mega , se confiar em Kim Dotcom, e também pode usar o serviço de email ProtonMail, desenvolvido no instituto de pesquisa europeu CERN e (supostamente) o email com criptografia ponta-a-ponta mais amigável ao usuário do mundo, com funcionamento similar ao PGP, mas muito mais simplificado. É claro que o seu interlocutor também tem que aderir ao serviço para ser fácil… Mas se puder se encontrar presencialmente com esta pessoa, então faça à moda antiga: Combine uma senha. Dessa forma você pode enviar o email pelo Proton para o seu amigo abrir, mesmo que ele use Gmail, mas com a senha combinada. Ou ainda, se puder combinar a senha por um meio seguro, mande os dados com um email normal também, mas usando um programa de compactação como WinRAR ou 7zip para criptografá-los. Sim, igual ao adolescente punheteiro que todos nós do sexo masculino fomos no passado.


Fonte:

Tanenbaum, A. S. (2010). Sistemas Operacionais Modernos, 3ª Edição. São Paulo: Pearson Education do Brasil.

Anúncios
Padrão

Um comentário sobre “PGP e Criptografia de Chave Pública: O que é e para que serve?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s