022.3 Lição 1
Certificado: |
Security Essentials |
---|---|
Versão: |
1.0 |
Tópico: |
022 Criptografia |
Objetivo: |
022.3 Criptografia de Email |
Lição: |
1 de 1 |
Introdução
No cenário digital atual, o e-mail continua sendo uma ferramenta de comunicação crítica, mas também é vulnerável à interceptação e ao acesso não autorizado. Para proteger informações sensíveis trocadas via e-mail, tecnologias de criptografia como OpenPGP e S/MIME oferecem confidencialidade, integridade e autenticidade. Compreender esses dois padrões de criptografia é essencial para qualquer pessoa envolvida em comunicações seguras.
Open Pretty Good Privacy (OpenPGP) e Secure/Multipurpose Internet Mail Extensions (S/MIME) são dois protocolos amplamente adotados para criptografar e assinar digitalmente mensagens de e-mail. O OpenPGP baseia-se em um modelo de confiança descentralizado, permitindo que os usuários criem e gerenciem suas próprias chaves de criptografia, enquanto o S/MIME opera com um modelo de confiança centralizado, utilizando certificados digitais emitidos por Autoridades Certificadoras (CAs) confiáveis. Ambos os padrões oferecem criptografia para proteger o conteúdo de uma mensagem de e-mail contra leitura por destinatários não intencionais, além de assinaturas digitais para verificar a identidade do remetente e garantir que a mensagem não tenha sido adulterada.
Vamos explorar o Mozilla Thunderbird, um cliente de e-mail multiplataforma, que é conhecido por suportar e integrar tanto o OpenPGP quanto o S/MIME, permitindo a criptografia de ponta a ponta. A configuração geralmente envolve a configuração do OpenPGP e S/MIME, a geração de pares de chaves públicas e privadas, a importação de certificados X.509 e a gestão do envio e recebimento seguro de mensagens criptografadas.
Criptografia de E-mail e Assinaturas Digitais
Para criptografar e-mails, os sistemas utilizam criptografia de chave pública ou criptografia assimétrica. Em contraste com a criptografia simétrica, que depende da mesma chave para a criptografia e a descriptografia, a criptografia de chave pública fornece a cada usuário um par de chaves, consistindo em uma chave pública e uma chave privada.
Como os nomes sugerem, a chave pública é compartilhada abertamente e é acessível a qualquer pessoa que deseje participar de comunicações de e-mail criptografadas. A chave privada, por outro lado, permanece confidencial e nunca é compartilhada ou transmitida pelo usuário.
O processo de criptografia funciona da seguinte forma: o remetente utiliza a chave pública do destinatário para criptografar a mensagem em texto simples, resultando em um texto cifrado que é ilegível sem a chave privada correspondente. Somente o destinatário, que possui a chave privada, pode descriptografar o texto cifrado e acessar o texto simples original.
A criptografia de chave pública é empregada em uma variedade de aplicações, como navegação web segura via HTTPS (Protocolo de Transferência de Hipertexto Seguro), e-mail seguro com S/MIME ou PGP, e assinaturas digitais, que garantem a autenticidade e a integridade de documentos digitais.
Dois algoritmos amplamente utilizados em criptografia de chave pública são o RSA e o DSA. O RSA recebe o nome de seus criadores (Ron Rivest, Adi Shamir e Leonard Adleman), enquanto DSA significa Digital Signature Algorithm (Algoritmo de Assinatura Digital). Um desenvolvimento mais recente é a criptografia de curva elíptica, que inclui o Elliptic Curve Digital Signature Algorithm (Algoritmo de Assinatura Digital de Curva Elíptica - ECDSA, na sigla em inglês).
OpenPGP
Como você pode aprender no site do OpenPGP, essa tecnologia foi originalmente derivada do software PGP criado por Phil Zimmermann. Hoje, o OpenPGP é o padrão de criptografia de e-mail mais amplamente utilizado. Para mostrar como funciona, utilizaremos o GNU Privacy Guard (GnuPG ou GPG, para abreviar), uma implementação gratuita do OpenPGP para criptografar e assinar digitalmente seus dados e comunicações. O GPG é publicado sob os termos da Licença Pública Geral GNU.
O GPG pode usar criptografia de chave simétrica e criptografia de chave assimétrica. Entre todos os algoritmos suportados, o AES é talvez o mais conhecido para criptografia simétrica, enquanto o RSA e o ECDSA são os mais frequentemente utilizados pelo GPG para criptografia assimétrica.
Vamos começar abrindo um terminal e criptografando simetricamente um arquivo que contém uma mensagem em texto simples:
$ echo "Hello world" > message_file.txt $ gpg --symmetric message_file.txt
Você será solicitado a inserir uma senha duas vezes e o arquivo criptografado message_file.txt.gpg
será gerado. Se você tentar ler o texto agora, receberá uma sequência de caracteres incompreensíveis como a seguinte:
$ cat message_file.txt.gpg ???_?#?[??Qw?h:0???V?)??z/LBzL>?ϧQ$?֫?#U.srm[?.3?O??V?p!\@!J?w?|??90?,R??
Para descriptografá-lo, basta usar a opção --decrypt
e fornecer a senha quando solicitado:
$ gpg --decrypt message_file.txt.gpg gpg: AES256.CFB encrypted data gpg: encrypted with 1 passphrase Hello world
Você também pode assinar e criptografar a mensagem em um único comando (desde que você tenha criado uma chave privada anteriormente):
$ gpg --sign --symmetric message_file.txt
Você pode avançar um nível e usar o GPG de maneira mais sofisticada, criptografando assimetricamente uma mensagem para um destinatário específico. Para isso, você precisará criar um par de chaves. Embora aprenderemos a gerar facilmente um par de chaves usando o Mozilla Thunderbird mais tarde na lição, é interessante notar que você também pode usar gpg
na linha de comando para fazer isso:
$ gpg --full-generate-key gpg (GnuPG) 2.2.27; Copyright (C) 2021 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: directory '/home/carol/.gnupg' created gpg: keybox '/home/carol/.gnupg/pubring.kbx' created Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) (14) Existing key from card Your selection? RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (3072) Requested keysize is 3072 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct? (y/N) y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Real name: Carol Doe E-mail address: carol.doe@example.com Comment: Generating keys is fun! You selected this USER-ID: "Carol Doe (Generating keys is fun!) <carol.doe@example.com>" Change (N)ame, (C)omment, (E)-mail or (O)kay/(Q)uit? O We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilise the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. gpg: /home/carol/.gnupg/trustdb.gpg: trustdb created gpg: key 683714AD69979321 marked as ultimately trusted gpg: directory '/home/carol/.gnupg/openpgp-revocs.d' created gpg: revocation certificate stored as '/home/carol/.gnupg/openpgp-revocs.d/FFA136F2E1B69CAA35DE55CE683714AD69979321.rev' public and secret key created and signed. pub rsa3072 2023-05-03 [SC] FFA136F2E1B69CAA35DE55CE683714AD69979321 uid Carol Doe (Generating keys is fun!) <carol.doe@example.com> sub rsa3072 2023-05-03 [E]
Pronto! Seu par de chaves está agora preparado. Outras opções mais rápidas para criar um par de chaves são --quick-generate-key
e --generate-key
.
Talvez a opção mais importante do gpg
seja --help
, pois ela fornece todas as opções e informações necessárias.
A criptografia assimétrica envolve criptografar a mensagem usando sua chave privada juntamente com a chave pública do destinatário, de modo que a mensagem possa ser descriptografada apenas com a chave privada do destinatário. Para fazer isso, você precisará da chave pública do destinatário. Você pode obtê-la por meio de compartilhamento ou, mais frequentemente, procurá-la em servidores de chaves públicas. Este tópico nos leva diretamente à nossa próxima seção.
O Papel dos Servidores de Chaves OpenPGP
A função principal dos servidores de chaves OpenPGP é armazenar chaves públicas e torná-las disponíveis para qualquer pessoa que deseje se comunicar de forma segura com o proprietário da chave. Quando um usuário deseja enviar uma mensagem de e-mail criptografada ou verificar uma assinatura digital, ele pode procurar a chave pública do destinatário em um servidor de chaves, garantindo que o processo de criptografia possa prosseguir sem a necessidade de troca manual de chaves.
Os servidores de chaves armazenam e disponibilizam chaves públicas criptográficas e são utilizados para trocar chaves públicas. O procedimento padrão é o seguinte (vamos assumir dois usuários chamados Carol e John):
-
Carol cria um par de chaves (pública e privada) usando o GPG.
-
Carol mantém a chave privada.
-
Carol exporta (envia) sua chave pública para um servidor de chaves públicas para que John possa usá-la.
-
John importa (baixa) a chave pública de Carol para seu chaveiro.
Agora John pode assinar assimetricamente uma mensagem que só pode ser descriptografada com a chave privada de Carol.
A chave pública geralmente é incluída em um arquivo de certificado criptográfico que contém não apenas a chave, mas também informações sobre seu proprietário.
S/MIME
Suportado pela grande maioria dos clientes de e-mail (como Apple Mail, Microsoft Outlook e Mozilla Thunderbird), o S/MIME é um protocolo padrão para proteger e autenticar mensagens de e-mail usando criptografia de chave pública: criptografia e assinaturas digitais. Assim, o S/MIME garante a confidencialidade, integridade e autenticidade do e-mail.
Os seguintes termos são frequentemente confundidos, por isso é importante ter uma ideia clara do que cada um significa:
- Confidencialidade
-
A mensagem deve ser descriptografada e lida apenas pelo destinatário pretendido. Isso é alcançado por meio da criptografia.
- Integridade
-
A mensagem deve chegar ao seu destino exatamente como foi escrita (não modificada). Isso é alcançado por meio de assinaturas digitais.
- Autenticidade
-
As identidades do remetente e do destinatário devem ser verificadas. Isso é alcançado por meio da assinatura digital e verificação das mensagens de e-mail usando a chave privada do remetente e a chave pública do destinatário, respectivamente.
O S/MIME fornece segurança de ponta a ponta para a comunicação por e-mail. O remetente criptografa a mensagem de e-mail usando a chave pública do destinatário, de modo que ela só possa ser descriptografada com a chave privada do destinatário. Isso é extremamente importante, pois garante que a mensagem só possa ser lida pelo destinatário pretendido e que não seja alterada durante o transporte por partes não autorizadas.
Além disso, o S/MIME fornece assinaturas digitais, que permitem que os remetentes assinem digitalmente suas mensagens usando suas chaves privadas e que os destinatários verifiquem se a mensagem realmente veio do remetente alegado. Isso é feito da seguinte maneira: o remetente cria uma assinatura digital criptografando um hash da mensagem com sua chave privada. O destinatário pode então verificar a assinatura descriptografando o hash com a chave pública do remetente e comparando-o com o hash que ele mesmo calculou.
Uma função de hash recebe um conjunto de dados ou uma mensagem como entrada e aplica um conjunto de algoritmos para gerar uma saída única de comprimento fixo: uma sequência de caracteres ou bits conhecida como message digest (resumo da mensagem), hash code (código de hash) ou simplesmente hash. Esse hash resultante é, em geral, utilizado para validar a integridade dos dados de entrada. Uma das vantagens do hashing é que ele permite que os dados sejam comparados de forma rápida e eficiente, sem a necessidade de comparar todo o conteúdo dos dados.
O Papel dos Certificados para S/MIME
Para usar o S/MIME, tanto o remetente quanto o destinatário devem ter um cliente de e-mail compatível com S/MIME e um certificado digital emitido por uma Autoridade Certificadora confiável. Além da chave pública do proprietário, o certificado contém outras informações identificadoras importantes e é utilizado para provar a identidade do proprietário, bem como a autenticidade da chave pública.
Algumas CAs oferecem certificados digitais S/MIME gratuitos por um período de um ano. Você também pode gerar seu próprio certificado autoassinado com o OpenSSL.
Como as Chaves PGP e os Certificados S/MIME estão Associados a um Endereço de E-mail
Como já mencionado, tanto o PGP quanto o S/MIME são utilizados para criptografia de e-mail e assinaturas digitais. No entanto, eles diferem na forma como associam chaves ou certificados a um endereço de e-mail.
O PGP exige que o usuário gere um par de chaves PGP e associe a chave pública ao seu endereço de e-mail no cliente de e-mail. Isso normalmente é feito compartilhando a chave pública em um servidor de chaves. Outros usuários podem então procurar a chave pública associada ao endereço de e-mail do usuário no servidor de chaves e usá-la para enviar mensagens criptografadas para o usuário.
Por outro lado, o S/MIME utiliza certificados para associar a chave pública a um endereço de e-mail. O certificado digital é emitido por uma CA confiável, que verifica a identidade do usuário e a autenticidade da chave pública. O usuário deve ter o certificado digital instalado em seu cliente de e-mail. O certificado contém a chave pública do usuário, bem como outras informações identificadoras, incluindo o endereço de e-mail. Outros usuários podem então verificar a assinatura digital do usuário e criptografar mensagens para o usuário usando a chave pública associada ao seu endereço de e-mail.
Usando o Mozilla Thunderbird para Enviar e Receber E-mail Criptografado
O Mozilla Thunderbird é um cliente de e-mail multiplataforma, gratuito e de código aberto, que realiza a criptografia de e-mail de ponta a ponta e integra tanto o OpenPGP quanto o S/MIME, além de funcionalidades de gerenciamento de chaves integradas. As seções a seguir demonstram como configurar o Thunderbird para criptografar e descriptografar e-mails de forma assimétrica.
As instruções assumem que o Thunderbird está instalado em seu sistema e que uma conta de e-mail já está configurada.
Configurando o OpenPGP e Gerando um Par de Chaves
Uma vez que sua conta esteja criada, vá para a guia “Inbox” (Caixa de Entrada) e clique no ícone da engrenagem “Settings” (Configurações) no canto inferior esquerdo. Em seguida, na aba “Settings” (Configurações), clique em “Account Settings” (Configurações da Conta) e, por fim, em “End-To-End Encryption.” (Criptografia de Ponta a Ponta). Você encontrará a tela mostrada em Tela de Criptografia de Ponta a Ponta.
Atualmente, nenhuma chave está disponível para sua conta (ou certificados pessoais S/MIME, para o caso), então você deve clicar no botão “Add key…” (Adicionar chave). Agora você pode escolher entre importar uma chave OpenPGP existente para seu endereço de e-mail ou criar uma nova chave OpenPGP do zero. Vamos optar pela segunda opção (Criando um novo par de chaves PGP).
Em seguida, você deve fazer algumas configurações, como selecionar o tempo de expiração da sua chave, o tipo de chave e o tamanho da chave (Configurando seu par de chaves).
Finalmente, você é informado sobre o tempo necessário para a geração da chave e solicitado a confirmar a operação (Confirmando a criação do par de chaves).
O par de chaves deve agora ter sido criado com sucesso (Par de chaves criado com sucesso).
Agora você pode clicar em “OpenPGP Key Manager” (Gerenciador de Chaves OpenPGP) para configurar várias opções, como um servidor de chaves a ser usado para procurar chaves públicas de seus potenciais destinatários (Interface do gerenciador de chaves).
Configurando S/MIME e Importando um Certificado
Agora vamos abordar o S/MIME. Começamos obtendo e importando um certificado X.509 válido para assinar digitalmente e criptografar e-mails com S/MIME. Para simplificar o processo, você pode obter um certificado gratuito de uma CA confiável. (Gerar seu próprio certificado autoassinado está fora do escopo desta lição.) Uma vez que você tenha feito isso, clique em “Manage S/MIME Certificates” (Gerenciar Certificados S/MIME), procure seu certificado no seu disco local e importe-o. Se for solicitado um password, forneça-o conforme mostrado em Fornecendo uma senha ao importar um certificado.
Em seguida, selecione seu certificado (Selecionando um certificado S/MIME).
Em seguida, você será solicitado a fornecer um segundo certificado que será usado por outras pessoas ao enviar suas mensagens criptografadas. Você pode escolher o mesmo certificado (Selecionando um segundo certificado).
Por fim, você pode verificar se seu certificado está selecionado tanto para assinatura digital quanto para criptografia (Os certificados estão prontos para uso.).
Agora que você configurou tanto o OpenPGP quanto o S/MIME, pode ir até o final da página e escolher sua tecnologia de criptografia preferida: OpenPGP, S/MIME ou seleção automática com base nas chaves ou certificados disponíveis (Tecnologia de Criptografia Preferida).
Enviando e Recebendo E-mail Criptografado com OpenPGP
Se você tentar enviar uma mensagem para alguém cujo chave pública você possui, o Thunderbird avisará que a criptografia de e-mail está disponível e você pode prosseguir para usá-la. A criptografia é possível quando você possui a chave pública do destinatário. mostra a mensagem que aparece na parte inferior da mensagem de e-mail. A interface é bastante amigável.
Portanto, se você enviar uma mensagem para si mesmo com o assunto “Testing email encryption” (Testando a criptografia de e-mail) e o corpo “Hi! Bye!” (Oi! Tchau!), você poderá abri-la e lê-la. No lado direito da tela, clique no botão “OpenPGP” para obter informações sobre a chave (Enviando e recebendo e-mails criptografados com PGP).
Por outro lado, se você tentar enviar uma mensagem para um destinatário cujo chave pública você não possui no seu repositório de chaves, você receberá uma mensagem alertando que a criptografia não é possível (A criptografia não é possível a menos que você tenha uma chave utilizável para o destinatário.).
Você pode importar chaves públicas a partir de arquivos ou procurá-las no servidor de chaves.
Enviando e Recebendo E-mails Criptografados com S/MIME
De forma similar ao que vimos na seção anterior, o Thunderbird permite que você envie e-mails criptografados para alguém cujo certificado você possui (A criptografia é possível se você tiver um certificado válido do destinatário.).
Você pode enviar uma mensagem para si mesmo com o assunto “Retesting email encryption” (Retestando criptografia de e-mail) e o mesmo corpo de email de antes. Novamente, você poderá abri-la, lê-la e ver as informações de segurança S/MIME clicando no botão “S/MIME” à direita (Envio e recebimento de e-mail criptografado por S/MIME).
Se você tentar enviar uma mensagem para um destinatário cujo certificado você não possui, uma mensagem de alerta o informará sobre isso (A criptografia de ponta a ponta exige a resolução de questões de chave para o destinatário).
Exercícios Guiados
-
A criptografia de chave pública é baseada em um par de chaves que consiste em uma chave pública e uma chave privada. Indique a qual tipo de chave as afirmações a seguir correspondem:
Declaração Chave pública ou chave privada? Disponível para qualquer pessoa que deseja enviar e-mail criptografado
Não deve ser compartilhada com ninguém
Aplicada a uma mensagem em texto simples para obter um texto cifrado
Usada para descriptografar e-mail
Pode ser importada para o seu chaveiro
-
Indique a qual dos seguintes conceitos as afirmações a seguir correspondem: criptografia simétrica, texto cifrado, autoridade certificadora, assinatura digital, Mozilla Thunderbird, ECDSA, confidencialidade, par de chaves, GPG, S/MIME.
Declaração Conceito Uma chave pública e sua correspondente chave privada
A mesma chave é usada para criptografar e descriptografar
Uma terceira parte confiável que emite, revoga e gerencia certificados digitais
Usada para verificar a autenticidade e integridade de um documento digital
Uma implementação gratuita do OpenPGP
Um algoritmo criptográfico para gerar e verificar assinaturas digitais
Uma mensagem que foi tornada ininteligível
Um protocolo de segurança que garante criptografia de ponta a ponta
Garante que uma mensagem seja lida apenas pelo destinatário pretendido
Um cliente de e-mail gratuito e multiplataforma que suporta criptografia de ponta a ponta
Exercícios Exploratórios
-
Além dos três casos de uso mencionados no último exercício da seção anterior, cite dois protocolos de troca de dados que utilizam criptografia assimétrica. Explique brevemente como eles funcionam.
-
Quais protocolos podem garantir uma troca segura de e-mails?
-
Quais protocolos podem garantir uma navegação na web segura?
Sumário
Esta lição aborda a importância crucial da criptografia de e-mails no mundo digital atual, com foco em dois protocolos amplamente utilizados: OpenPGP e S/MIME. Esses padrões de criptografia garantem a confidencialidade, integridade e autenticidade das comunicações por e-mail, oferecendo proteção contra acessos não autorizados. O OpenPGP opera em um modelo de confiança descentralizado, onde os usuários gerenciam suas próprias chaves de criptografia, enquanto o S/MIME utiliza um modelo de confiança centralizado, respaldado por certificados digitais emitidos por Autoridades Certificadoras (CAs) confiáveis. Ambos os protocolos permitem a criptografia para impedir que destinatários não autorizados leiam o conteúdo do e-mail e oferecem assinaturas digitais para verificar a identidade do remetente.
A lição também discute a configuração prática do Mozilla Thunderbird, um cliente de e-mail popular que oferece suporte tanto para OpenPGP quanto para S/MIME para criptografia de ponta a ponta.
Respostas dos Exercícios Guiados
-
A criptografia de chave pública é baseada em um par de chaves que consiste em uma chave pública e uma chave privada. Indique a qual tipo de chave as afirmações a seguir correspondem:
Declaração Chave pública ou chave privada? Disponível para qualquer pessoa que deseja enviar e-mail criptografado
chave pública
Não deve ser compartilhada com ninguém
chave privada
Aplicada a uma mensagem em texto simples para obter um texto cifrado
chave pública
Usada para descriptografar e-mail
chave privada
Pode ser importada para o seu chaveiro
chave pública
-
Indique a qual dos seguintes conceitos as afirmações a seguir correspondem: criptografia simétrica, texto cifrado, autoridade certificadora, assinatura digital, Mozilla Thunderbird, ECDSA, confidencialidade, par de chaves, GPG, S/MIME.
Declaração Conceito Uma chave pública e sua correspondente chave privada
par de chaves
A mesma chave é usada para criptografar e descriptografar
criptografia simétrica
Uma terceira parte confiável que emite, revoga e gerencia certificados digitais
autoridade certificadora
Usada para verificar a autenticidade e integridade de um documento digital
assinatura digital
Uma implementação gratuita do OpenPGP
GPG
Um algoritmo criptográfico para gerar e verificar assinaturas digitais
ECDSA
Uma mensagem que foi tornada ininteligível
texto cifrado
Um protocolo de segurança que garante criptografia de ponta a ponta
S/MIME
Garante que uma mensagem seja lida apenas pelo destinatário pretendido
confidencialidade
Um cliente de e-mail gratuito e multiplataforma que suporta criptografia de ponta a ponta
Mozilla Thunderbird
Respostas dos Exercícios Exploratórios
-
Além dos três casos de uso mencionados no último exercício da seção anterior, cite dois protocolos de troca de dados que utilizam criptografia assimétrica. Explique brevemente como eles funcionam.
O Protocolo de Transferência de Arquivos Seguro (SFTP) e o Secure Shell (SSH) garantem a transferência segura de arquivos entre um cliente e um servidor.
Uma Rede Virtual Privada (VPN) oferece comunicação segura e autenticada entre dispositivos remotos através de uma rede insegura, como a internet.
-
Quais protocolos podem garantir uma troca segura de e-mails?
PGP, S/MIME.
-
Quais protocolos podem garantir uma navegação na web segura?
SSL, TLS.