Artigos Tecnologia

Segurança digital é tão fácil quanto PGP

Os usuários comuns de computador seriam perdoados por não terem nenhuma idéia do que é PGP. Há tanta coisa acontecendo abaixo da superfície da experiência de computação moderna que até ferramentas de segurança criticamente importantes como PGP estão escondidas.

Para ter certeza, existem círculos especializados que fazem uso explícito regular do PGP. Os usuários do Diligent Linux teriam pelo menos uma familiaridade passageira com PGP, já que o fato de os fabricantes não terem instalado nosso sistema operacional para nós significa que temos que verificar sua integridade nós mesmos.

Caso contrário, se o seu trabalho não toca na segurança da informação, o PGP seria compreensivelmente um mistério para você. Mas como eu disse, não é menos importante para essa realidade. Na verdade, o PGP desempenhou um papel significativo na razão de termos comunicações seguras na Internet. Na verdade, não é porque é amplamente utilizado, embora seja definitivamente utilizado em utilitários de instalação de software em todo o mundo. Em vez disso, sua importância deriva de seu desafio desafiador a um governo excessivamente zeloso que procurou comprometer a criptografia muito antes de a maioria dos americanos usar a Internet regularmente.

Meu objetivo em tratar PGP aqui é duplo. O primeiro é lançar alguma luz sobre isso para os não iniciados. O segundo, e mais importante, é ensinar aos ousados ​​entre vocês como manejar esta ferramenta poderosa. Esperançosamente, você encontrou seu caminho até aqui depois de ler meu guia de segurança. Do contrário, verifique a última parcela e você verá que o PGP pode ser útil em certos cenários de ameaças de alto risco.

Antes de prosseguirmos, tenha em mente que, como com qualquer ferramenta, a utilidade do PGP adere ao efeito de rede. Sua praticabilidade é extremamente limitada devido aos poucos círculos de desenvolvimento de software de adoção. Se você deseja aplicar o PGP à comunicação interpessoal, aqueles com quem você se comunica devem fazer o mesmo.

Todo herói tem uma história de origem

As Crypto Wars foram uma época sombria … e ainda são, dependendo da sua perspectiva. Como a maioria das tentativas do governo de mudar fundamentalmente as implementações tecnológicas, a primeira guerra criptográfica veio quando o pânico moral se apoderou de Washington. As autoridades eleitas ficaram com medo de que a Internet fosse um reino sem lei, onde os demônios atacavam os inocentes. Para remediar isso, eles procuraram desesperadamente uma maneira de garantir que a aplicação da lei pudesse investigar a atividade de internautas abusivos. A criptografia tornou isso impossível.

Essa inclinação é compreensível, porque a Internet era muito nova e agourenta para seus constituintes. Nem deve ser esquecido que as pessoas estavam realmente se machucando com interações que ocorreram total ou parcialmente online.

A resposta deles foi tentar enfraquecer a criptografia para que a polícia pudesse ter certeza de conformidade quando cumprisse um mandado. A criptografia, por definição, só é eficaz se o conteúdo de uma mensagem for indecifrável para todos, exceto para o remetente e o destinatário pretendidos. A proposta, por mais bem-intencionada que fosse, desrespeitava completamente esse princípio.

Foi quando Phil Zimmerman ofereceu ao mundo o PGP. Ele escreveu o PGP, que significa “Pretty Good Privacy”, antes das Crypto Wars, em 1991. Mas quando as hostilidades começaram, os defensores da criptografia inquebrável se reuniram sob sua bandeira. Aos olhos de Zimmerman, se o governo estivesse decidido a comprometer todas as cifras que controlava, ele faria as suas e se recusaria a jogar bola.

O governo respondeu rapidamente, abrindo uma investigação criminal contra ele em 1993 por violar um regulamento que ajudou a avançar sua campanha de enfraquecimento da criptografia: restrições à exportação. Sob essas restrições, o governo dos Estados Unidos tornou ilegal exportar software de criptografia para outros países que fosse tão forte quanto o software de criptografia dos Estados Unidos sem uma licença de comércio de armas. Phil Zimmerman não tinha um desses.

Foi então que Zimmerman se tornou criativo: ele publicou seu programa como um livro, que qualquer pessoa, em qualquer lugar do mundo, tinha liberdade para comprar. Se esses compradores de livros desejassem, eles poderiam transcrever seu conteúdo em um editor de código e salvá-lo como um arquivo. Na verdade, foi exatamente isso que algumas pessoas fizeram. Quando o governo disse a Zimmerman para cortar o negócio engraçado, ele apontou para seus direitos da Primeira Emenda e decisões judiciais estabelecendo que código de computador é palavra.

Entre o PGP e outras pressões, o governo acabou deixando a criptografia de todos em paz. Felizmente, o governo quase sempre se absteve de tentar legislar diluições de criptografia, pelo menos até recentemente.

Longe de ser uma relíquia dos primórdios da Internet, o PGP (teoricamente) permanece viável hoje. Apesar dos avanços na supercomputação e criptoanálise, a cifra fundamental que o PGP usa por padrão permanece válida. Sempre que um supercomputador que pode quebrar uma chave é construído, os usuários precisam apenas fazer chaves mais longas.

Então, como funciona o PGP?

Como acontece com a maioria da criptografia, os detalhes técnicos são difíceis de entender, mas o básico é bastante simples. PGP é um programa de criptografia que usa as cifras RSA ou DSA. De qualquer forma, o PGP gera o que é chamado de chaves “assimétricas” – ou seja, um par de chaves.

A chave “principal” é a chave privada. A chave privada (ou, como algumas implementações a chamam, a “chave secreta”), como o nome indica, permanece privada. Depois de gerar um par de chaves, um usuário deve proteger sua chave privada como seu segredo mais profundo e sombrio.

A outra chave do par é a chave pública. Ao contrário da chave privada, por design, esta é uma solução viável. O usuário entrega essa chave para qualquer pessoa que queira enviar as coisas com segurança. Não há risco real de segurança em permitir que outras pessoas o tenham.

Cada chave em um par de chaves pode reverter a operação criptográfica realizada com a outra chave. Quando uma chave é aplicada a um texto simples (o conteúdo normal e legível do arquivo), ela se torna um texto cifrado (efetivamente um jargão). Aplicar o complemento da chave que criou o texto cifrado restaurará o texto simples. Portanto, na prática, se um usuário se comunica com PGP, ele terá uma chave privada e muitas chaves públicas: sua própria chave privada, sua própria chave pública e uma chave pública para cada pessoa com quem se comunicar.

Por não estar associado a nenhum cliente de mensagem, você pode fazer muitas coisas legais com PGP. Para começar, você pode criptografar qualquer texto simples “bruto”. Já que o seu computador representa tudo como bits, e tudo que o PGP faz é embaralhá-los e decodificá-los, o PGP é capaz de criptografar conteúdo de e-mail ou bate-papo, arquivos de áudio e vídeo e até mensagens postadas na web.

Normalmente, você criptografa o texto simples com uma chave pública para que o detentor da chave privada possa descriptografá-lo, mas há um truque que você pode fazer se inverter o processo. Se você “criptografar” usando sua chave privada para que as pessoas com sua contraparte de chave pública a “descriptografe”, você pode criar o que é conhecido como assinatura criptográfica. Essas assinaturas permitem que você prove que tudo o que você assinou foi inequivocamente de sua autoria.

É assim que PGP é usado para verificar o software. Os desenvolvedores assinam seu software com sua chave privada e, em seguida, liberam sua chave pública para qualquer pessoa que queira verificar a autenticidade do software. Se alguém mexer na chave ou na assinatura (mas não em ambas), o subterfúgio será detectado. O ataque poderia funcionar se a assinatura e a chave pública fossem alteradas da maneira certa, mas isso é logisticamente complicado o suficiente para ser improvável.

Vestindo a máscara para você mesmo

Neste ponto, você provavelmente está pronto para fazer um test drive com esse bad boy, então vamos começar.

Para todos os exemplos a seguir, estarei usando uma ferramenta chamada GPG (Gnu Privacy Guard), uma implementação de linha de comando gratuita e de código aberto do PGP. A justificativa para isso é que, uma vez que a segurança é o ponto principal do PGP, uma ferramenta mais simples, aberta e madura funciona melhor.

Este guia também assume que você está usando algum tipo de computador com o sabor do Unix, ou seja, Linux, BSD ou macOS. O GPG deve funcionar da mesma maneira no Windows, mas, como não o testei, não juro que isso é verdade.

Como uma advertência final, todos esses comandos são baseados em meus testes com GPG 2.2.19, como empacotado com Linux Mint 20. Tentarei observar onde você pode experimentar comportamento divergente, mas independentemente disso, mantenha isso em mente.

Você vai começar fazendo um par de chaves, que envolve um comando simples de uma linha:

gpg –gen-key

Na versão GPG que testei, esta é a opção de geração de chave simplificada, em oposição à opção personalizável “–full-gen-key”. Definitivamente explore este último se você for do tipo aventureiro, mas não vou entrar nele aqui.

Antes de executar o comando, você precisará descobrir alguns detalhes para os prompts de tela que surgem quando ele é executado.

Primeiro, verifique se você tem um endereço de e-mail para associar à sua chave. Em segundo lugar, escolha o nome que deseja inserir. Insira seu nome real apenas se tiver certeza de que deseja que sua chave pública o identifique. Terceiro, escolha uma senha para sua chave. A importância desta etapa não passou despercebida para você, tenho certeza.

A próxima coisa que devemos fazer é gerar um certificado de revogação. Isso é feito com o seguinte comando:

gpg –gen-revoke –armor key_name > privkey_rev.asc

O “–gen-revoke” é autoexplicativo, mas você pode se perguntar o que a opção “–armor” faz. Isso gera a chave com bits representados como caracteres ASCII em vez do formato bruto que parece que seu terminal está cantando um encantamento de convocação de ancião.

Os certificados de revogação permitem que as pessoas saibam que sua chave privada foi comprometida e que não devem mais confiar nela. Eles só entram em vigor quando você os publica, mas é uma boa ideia criá-los antes de precisar deles.

Feito isso, faça backup imediatamente do seu par de chaves e certificado de revogação para um meio de armazenamento externo criptografado. Não há nada que o impeça de ter arquivos duplicados da mesma chave ou certificado para segurança extra, mas certifique-se de que você pode contabilizar todas as cópias desses arquivos.

Para realizar este backup, você terá que exportar suas chaves como arquivos. Por padrão, eles são apenas bytes em um banco de dados de chaves analisável apenas por GPG.

Exporte suas chaves executando os seguintes comandos:

gpg –export –armor key_name > pubkey.asc
gpg –export-secret-keys –armor key_name > privkey.asc

Copie sua chave privada, chave pública e certificado de revogação em seu armazenamento criptografado.

Agora, tudo que você precisa são as chaves públicas das pessoas com quem deseja falar e já está no mercado. Existem essencialmente duas maneiras de obter estes

A primeira é importar chaves públicas de um arquivo transferido diretamente para sua máquina localmente. Na maioria dos casos, isso significa que seu amigo está lhe entregando uma unidade flash para que você possa copiar a chave pública diretamente para o seu computador. Essa abordagem tem benefícios substanciais.

A maior vantagem é o alto nível de segurança: como você não está enviando uma chave pela Internet, há uma chance consideravelmente reduzida de que a chave tenha sido sabotada. Seu amigo também está disponível para confirmar com você que a chave é legítima, já que ele pode olhar para sua tela e dizer “sim, é esse mesmo”.

As etapas para fazer isso são bastante simples:

1. Verifique a identificação emitida pelo governo do proprietário da chave. Seriamente. Esta é uma tradição cypherpunk consagrada pelo tempo e reforça a ideia de que esses bits validam a identidade de uma pessoa com a mesma autoridade de um documento de identidade real, então eu o encorajo a participar desse ritual sagrado.2. Obtenha o arquivo da mídia de armazenamento para o seu computador. Seu dispositivo, sistema operacional e meio de armazenamento irão ditar como isso vai acontecer.

3. Em seu terminal, importe a chave pública em seu chaveiro GPG executando o seguinte comando.

gpg –import pub_key.asc

4. Em seguida, execute este comando para exibir a impressão digital da chave, uma string de texto que identifica exclusivamente uma chave, mas que não compromete sua segurança.

gpg –fingerprint pub_key_name

5. Peça à pessoa que você identificou para verificar se a impressão digital da chave pública, conforme mostrado em seu sistema, é a mesma que a chave pública realmente produz.

As vantagens de segurança não param por aí. Contanto que você apenas transfira chaves públicas por meio de uma unidade flash USB, não há registro na rede de que as chaves foram trocadas. Isso pode ser uma grande vantagem operacional.

A outra coisa boa sobre o método de troca de chaves local é que você não precisa mexer com servidores de chaves. Os servidores de chaves não são tão difíceis de usar, no grande esquema do GPG, mas a interface com eles ainda é um pouco desajeitada.

Esse é, no entanto, o outro método de transferência principal: baixar chaves públicas de um servidor de chaves na Internet. Os servidores de chaves que, como o nome sugere, mantêm as chaves, existem há eras de computador. Mantidos por organizações como o MIT, esses servidores são sincronizados entre si para permitir que os usuários distribuam suas chaves públicas amplamente.

Os servidores de chaves têm o benefício distinto de permitir que você obtenha chaves públicas de pessoas que você não pode conhecer pessoalmente. Afinal, a Internet é útil justamente porque permite a comunicação remota instantânea. No entanto, como o proprietário da chave pública não pode garantir a integridade da chave pessoalmente, há uma chance de que a chave tenha sido comprometida em trânsito.

Isso geralmente é tratado por proprietários de chaves públicas publicando a impressão digital de suas chaves em outro lugar na Web pública. Dependendo das capacidades do seu adversário, entretanto, você não pode ter certeza de que a impressão digital postada na Web não foi alterada para corresponder à impressão digital falsa que você obteve de uma chave baseada no servidor de chaves comprometida. Você provavelmente não deveria ficar acordado à noite se preocupando com isso, mas é um risco.

Você pode importar uma chave do servidor de chaves usando as seguintes etapas:

1. Insira este comando para pesquisar o servidor de chaves, onde “palavra-chave” é uma parte do nome ou endereço de e-mail do proprietário da chave.gpg –search-keys keyword

2. Agora serão apresentados os resultados da pesquisa em páginas de 10. Percorra os resultados e selecione a tecla desejada, o número correspondente e pressione Enter. Seu dispositivo irá agora baixar a chave.

3. Execute o seguinte comando para gerar a impressão digital da chave.

gpg –fingerprint pub_key_name

4. Finalmente, encontre uma impressão digital publicada para o proprietário da chave pública e compare-a com a impressão digital que o comando anterior gerou.

Agora você está pronto para criptografar todas as coisas! Comece encontrando um arquivo que deseja criptografar (aqui, “arquivo” é o referido arquivo).

Em seguida, execute o comando encrypt do GPG, que se parece com isto:

arquivo gpg -e

A operação perguntará qual chave pública usar ao criptografar o arquivo, que você especifica usando a sequência de números e letras na segunda linha da entrada da chave – para ver esta entrada você deve executar ‘gpg –list-keys’ . Quando o comando encrypt é concluído, ele cria um arquivo criptografado com um nome de arquivo idêntico ao arquivo de entrada mais “.gpg” anexado. Envie-o para o criador da chave pública e eles saberão o que fazer.

Descriptografar os arquivos enviados para você é tão fácil quanto. Encontre o arquivo criptografado para você e execute o seguinte comando:

gpg -d arquivo> outfile

Digite a senha da sua chave privada e você terá um arquivo descriptografado.

Por padrão, o sinalizador de descriptografia apenas exibe o conteúdo do arquivo descriptografado no console. Como você provavelmente vai querer que o texto simples descriptografado seja salvo para mais tarde, a parte ‘ > outfile ‘ do comando é incluída para produzir a operação em um arquivo.

Duas chaves privadas são melhores do que uma

O que poderia ser mais seguro do que uma chave privada? Que tal dois?

Alguns esclarecimentos são necessários. Não quero dizer criar duas chaves privadas completas. Em vez disso, essa abordagem usa duas partes de sua chave privada: uma só pode descriptografar mensagens criptografadas com a chave pública, a outra pode assinar arquivos.

Então, o que isso significa para você? Dividir sua chave permite que você mantenha sua chave mestra exclusivamente em armazenamento externo criptografado até que você precise dela.

Como a subchave pode descriptografar as mensagens enviadas a você, você pode manter sua correspondência normal mantendo apenas a subchave em seu dispositivo. Se o seu computador ficar infectado (o que você talvez nunca detecte), os invasores não conseguirão falsificar suas assinaturas, tornando mais fácil para você revogar a chave roubada e começar do zero.

Sem dúvida, chaves privadas separadas com controles de segurança separados induzem uma dor de cabeça muito maior. Para começar, você deve ser capaz de diferenciá-los, porque se você permitir que sua chave mestra esteja em seu computador enquanto ele está conectado à rede, do ponto de vista de segurança operacional, sua chave mestra será envenenada, exposta a grau inverificável de perigo que qualifica sua integridade.

Mas mesmo assumindo que você os mantenha no lugar certo, você deve ter um procedimento operacionalmente seguro para a assinatura do PGP – no mínimo, que desabilitar sua rede no nível do sistema operacional (de preferência no nível do hardware), conectar seu armazenamento criptografado, importar uma cópia da chave mestra, executando a operação de assinatura, excluindo a cópia da chave mestra em seu dispositivo e seus dados em seu chaveiro GPG, ejetando seu armazenamento criptografado e reativando sua rede.

Minha versão do GPG realmente divide a chave nessas duas partes por padrão, mas as agrupa, tanto em seu chaveiro quanto nas exportações de chave privada.

No entanto, se você quiser dividir as chaves, execute estas etapas:

1. Desative sua rede. Caso contrário, sua chave privada principal será envenenada desde o início.2. Execute a mesma exportação de chave privada de antes.

3. Exporte sua subchave privada para seu próprio arquivo usando este comando.

gpg –export-secret-subkeys –armor key_name > sub_key.asc

4. Mova sua chave privada e arquivos de subchave para proteger o armazenamento externo.

5. Execute este comando, seguindo os prompts para excluir a chave secreta principal do seu chaveiro, mas não a subchave.

gpg –delete-secret-keys

6. Certifique-se de que todas as cópias de arquivo de sua chave privada principal sejam excluídas do dispositivo.

Seu computador agora não tem nenhum vestígio de sua chave privada “mestra” nele, mas tem sua subchave com segurança no chaveiro para descriptografia.

Aí vem a criptonita

Existem algumas limitações sérias a serem lembradas com o PGP. Afinal, se fosse perfeito, todos estariam usando.

Um problema é que os servidores de chaves têm uma falha gritante que parece além da mitigação, na qual os invasores podem tornar um certificado muito grande para ser processado funcionalmente de maneira adequada. A menos que sua chave pública se torne um item importante, você provavelmente não será atingido por isso. No entanto, contribui para o desprezo geral pelo PGP .

No entanto, esse é, na verdade, outro problema: uma interface de usuário complicada que impõe uma carga considerável de verificação manual sobre o usuário é quase uma sentença de morte para software de segurança. Se uma ferramenta só é segura para quem segue meticulosamente um procedimento que pode ser mal executado, há grandes chances de alguém, você ou o destinatário, escorregar.

Tudo isso é para dizer que eu não confiaria no PGP a menos que você tivesse muita prática e alternativas superiores não existissem. Eu diria, entretanto, que o PGP é valioso o suficiente para apreciar a criptografia e a manutenção da chave que a sustenta. Portanto, se você definir suas expectativas de forma realista, poderá obter uma experiência valiosa com o PGP.


Ajude-nos a crescer, visite SENASNERD no Twitter FacebookInstagram . e deixe o seu gosto, para ter acesso a toda a informação em primeira mão. E se gostou do artigo não se esqueça de partilhar o mesmo com os seus amigos.

SUBSCREVA-SE NO CANAL YOUTUBE SENASNERD

Artigos Relacionados

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Botão Voltar ao Topo