Criptografia Assimétrica - Casos de Uso
A criptografia assimétrica é a tecnologia que estabelece confiança em redes abertas. Sempre que você acessa um site HTTPS, se autentica em um servidor SSH com chaves, assina um documento digital, instala um pacote verificado em uma distribuição Linux ou envia uma mensagem em um aplicativo com criptografia ponta a ponta, está utilizando criptografia assimétrica em alguma camada.
Neste post percorreremos os principais casos de uso da criptografia assimétrica, categorizados por função (autenticação, confidencialidade, integridade e identidade), com foco em como aparecem em servidores Linux e aplicações cotidianas.
Autenticação de servidores e usuários
Section titled “Autenticação de servidores e usuários”HTTPS e certificados TLS
Section titled “HTTPS e certificados TLS”Em qualquer conexão HTTPS, o servidor apresenta um certificado digital contendo sua chave pública. O cliente usa essa chave pública para:
- Verificar a assinatura da autoridade certificadora (CA) sobre o certificado
- Participar do handshake de troca de chaves (ECDHE geralmente)
Após o handshake, a comunicação propriamente dita é feita com criptografia simétrica (AES-GCM ou ChaCha20-Poly1305).
# Inspecionar o certificado de um siteopenssl s_client -connect blog.ferpdias.com.br:443 \ -showcerts </dev/null 2>/dev/null | \ openssl x509 -noout -textSignificado de cada opção:
s_client: cliente TLS para teste de servidores-connect <host:porta>: endereço do servidor a conectar-showcerts: exibe toda a cadeia de certificados</dev/null: envia entrada vazia para o cliente desconectar após o handshake2>/dev/null: descarta mensagens de erroopenssl x509 -noout -text: formata a saída do certificado em texto legível
SSH com autenticação por chaves
Section titled “SSH com autenticação por chaves”A autenticação por chaves no SSH é um dos usos mais comuns de criptografia assimétrica em servidores Linux. Em vez de senhas, o cliente prova possuir a chave privada correspondente a uma chave pública registrada no servidor.
# Gerar um par de chaves SSH Ed25519ssh-keygen -t ed25519 -C "fernando@notebook"Significado de cada opção:
ssh-keygen: utilitário do OpenSSH para gerar e manipular chaves-t ed25519: tipo do algoritmo (Ed25519)-C "fernando@notebook": comentário opcional que será incluído no final da chave pública, útil para identificação
# Copiar a chave pública para um servidor remotossh-copy-id usuario@servidorSignificado:
ssh-copy-id: utilitário que adiciona a chave pública local ao arquivo~/.ssh/authorized_keysdo servidor remoto, autenticando-se inicialmente com senha
Após essa configuração, as conexões subsequentes usarão apenas as chaves, dispensando a senha.
Autenticação em VPNs modernas
Section titled “Autenticação em VPNs modernas”- WireGuard: utiliza X25519 obrigatoriamente para autenticação de peers
- OpenVPN com certificados: usa RSA ou ECDSA para autenticação mútua
- IPsec em modo de certificados: também baseado em assinaturas digitais
Autenticação em aplicações
Section titled “Autenticação em aplicações”- JWT (JSON Web Token) assinados com RSA ou ECDSA
- SAML e OpenID Connect com assinaturas em asserções
- mTLS (TLS mútuo) para autenticar clientes em APIs e microsserviços
Confidencialidade: criptografia híbrida
Section titled “Confidencialidade: criptografia híbrida”A criptografia assimétrica raramente cifra dados diretamente. Em quase todos os casos práticos, ela é usada para cifrar uma chave simétrica aleatória (chave de sessão), que então cifra o volume de dados. Esse é o modelo híbrido.
TLS e HTTPS
Section titled “TLS e HTTPS”Após o handshake:
- Cliente e servidor acordam uma chave simétrica via ECDHE
- Todo o restante da conexão é cifrado com AES-GCM ou ChaCha20-Poly1305
A chave assimétrica (do certificado) serve apenas para autenticar o servidor e proteger o acordo de chaves, não para cifrar dados.
E-mail com PGP / GPG
Section titled “E-mail com PGP / GPG”O PGP (Pretty Good Privacy) e sua implementação livre GPG (GNU Privacy Guard) usam criptografia híbrida:
- O e-mail é cifrado com uma chave simétrica aleatória (AES, por exemplo)
- Essa chave simétrica é então cifrada com a chave pública do destinatário
- O destinatário usa sua chave privada para recuperar a chave simétrica, e então decifra o e-mail
# Gerar um par de chaves GPGgpg --full-generate-keySignificado:
gpg: utilitário do GnuPG--full-generate-key: inicia um assistente interativo que permite escolher algoritmo, tamanho, validade e identidade
# Cifrar um arquivo para um destinatáriogpg --encrypt --recipient fernando@exemplo.com arquivo.txtSignificado de cada opção:
--encrypt: operação de cifragem--recipient fernando@exemplo.com: destinatário cuja chave pública (já importada) será usadaarquivo.txt: arquivo de entrada; o resultado seráarquivo.txt.gpg
# Decifrar o arquivo recebidogpg --decrypt arquivo.txt.gpg > arquivo.txtSignificado:
--decrypt: operação de decifragem usando a chave privada do usuário atual> arquivo.txt: redireciona a saída decifrada para o arquivo original
Mensageiros ponta a ponta
Section titled “Mensageiros ponta a ponta”- Signal, WhatsApp, Messenger usam o Protocolo Signal, que combina X3DH (acordo de chaves assimétrico inicial) com Double Ratchet (cifragem simétrica com rotação constante de chaves)
- iMessage: RSA para troca de chaves, AES para cifragem
- Threema e outros: ECDH para acordo, AES ou XSalsa20 para cifragem
Integridade e autenticidade: assinaturas digitais
Section titled “Integridade e autenticidade: assinaturas digitais”Assinatura de código e pacotes
Section titled “Assinatura de código e pacotes”Praticamente toda distribuição Linux assina seus pacotes com chaves assimétricas, para garantir que:
- O pacote foi produzido pela equipe oficial
- Não foi alterado em trânsito ou no espelho (mirror)
# Verificar assinaturas dos pacotes instalados (Debian / Ubuntu)sudo apt install debsumssudo debsums -cSignificado de cada comando:
apt install debsums: instala a ferramentadebsums, que verifica integridade de pacotesdebsums -c: verifica apenas pacotes com problemas (-csignifica changed)
# Verificar pacotes RPM (RHEL / Fedora)rpm -VaSignificado:
rpm -V: verifica integridade de pacotes instalados-a: aplica em todos os pacotes
Assinatura de documentos (ICP-Brasil, eIDAS)
Section titled “Assinatura de documentos (ICP-Brasil, eIDAS)”A assinatura digital com certificados ICP-Brasil (padrão A1 em arquivo ou A3 em token/smartcard) tem validade jurídica no Brasil, conforme a MP 2.200-2/2001. Baseia-se em criptografia assimétrica, geralmente RSA 2048.
Processo típico:
- Documento é lido e tem seu hash calculado (SHA-256)
- Hash é cifrado com a chave privada do assinante
- O par (documento, assinatura) pode ser verificado por qualquer um usando a chave pública (do certificado)
- A cadeia de confiança do certificado é validada até a raiz da ICP-Brasil
Assinatura de commits no Git
Section titled “Assinatura de commits no Git”# Configurar o Git para assinar commits com GPGgit config --global user.signingkey <ID-da-chave>git config --global commit.gpgsign true
# Fazer um commit assinadogit commit -S -m "Mensagem do commit"Significado de cada comando:
git config --global user.signingkey <ID>: define qual chave GPG usar para assinaturagit config --global commit.gpgsign true: ativa assinatura automática em todos os commitsgit commit -S -m "...": cria um commit explicitamente assinado (opcional se já ativado globalmente)
Verificação de releases e boot seguro
Section titled “Verificação de releases e boot seguro”- Secure Boot da UEFI usa assinaturas RSA para validar o bootloader
- Pacotes (
.deb,.rpm) incluem assinaturas verificadas pelo gerenciador de pacotes - Imagens ISO oficiais vêm acompanhadas de arquivos de assinatura (
.sigou.asc)
Identidade e cadeia de confiança
Section titled “Identidade e cadeia de confiança”Certificados digitais X.509
Section titled “Certificados digitais X.509”Toda a infraestrutura TLS, S/MIME e ICP-Brasil é construída sobre certificados X.509, que são essencialmente blocos assinados contendo:
- A chave pública da entidade
- Identidade da entidade (CN, SAN, etc.)
- Período de validade
- Assinatura da autoridade certificadora
# Gerar uma CSR (Certificate Signing Request)openssl req -new -newkey rsa:3072 -nodes \ -keyout servidor.key -out servidor.csr \ -subj "/C=BR/ST=SP/L=São Paulo/O=Exemplo/CN=exemplo.com.br"Significado de cada opção:
req -new: cria uma nova solicitação de certificado-newkey rsa:3072: gera uma nova chave RSA de 3072 bits-nodes: não protege a chave privada com senha (do inglês no DES)-keyout servidor.key: arquivo onde a chave privada será salva-out servidor.csr: arquivo onde a CSR será salva-subj "/C=.../CN=...": campos do titular do certificado, incluindo país (C), estado (ST), localidade (L), organização (O) e nome comum (CN)
Let’s Encrypt e ACME
Section titled “Let’s Encrypt e ACME”O Let’s Encrypt é uma autoridade certificadora gratuita que automatiza a emissão de certificados TLS via protocolo ACME. Internamente, o ACME também usa assinaturas digitais para provar controle sobre domínios e sobre chaves privadas.
# Emitir certificado com Certbot (nginx)sudo certbot --nginx -d exemplo.com.brSignificado de cada opção:
certbot: cliente ACME oficial do Let’s Encrypt--nginx: plugin que configura automaticamente o Nginx-d exemplo.com.br: domínio para o qual o certificado será emitido
Repositórios Git assinados
Section titled “Repositórios Git assinados”Além de commits, o Git permite assinar tags (geralmente usadas para releases):
git tag -s v1.0 -m "Versão 1.0 estável"git tag -v v1.0Significado de cada comando:
git tag -s <nome>: cria uma tag assinada com GPG-m "...": mensagem anexagit tag -v <nome>: verifica a assinatura de uma tag
Blockchain e criptomoedas
Section titled “Blockchain e criptomoedas”Toda criptomoeda moderna depende fortemente de criptografia assimétrica:
- Bitcoin e Ethereum usam ECDSA sobre a curva secp256k1 para assinar transações
- Chaves privadas controlam a propriedade de moedas
- Endereços são derivados das chaves públicas por meio de hashes
- Assinaturas são usadas em cada transação para provar autoria
Alguns projetos mais recentes adotam Ed25519 (como Solana e Monero) por eficiência.
Autenticação sem senha e WebAuthn
Section titled “Autenticação sem senha e WebAuthn”O padrão WebAuthn permite autenticação em sites e aplicações sem senhas, usando pares de chaves gerados por dispositivos (chaves de segurança como YubiKey, Trusted Platform Modules, biometria):
- O site conhece apenas a chave pública do usuário
- O dispositivo mantém a chave privada protegida localmente
- A autenticação é feita por desafio/resposta assinado
É a base das passkeys adotadas por Apple, Google e Microsoft para substituir senhas.
Painel consolidado
Section titled “Painel consolidado”| Caso de uso | Algoritmo típico | Ferramentas / Padrões |
|---|---|---|
| HTTPS | ECDSA P-256 ou RSA 3072 | Nginx, Apache, Caddy, Let’s Encrypt |
| SSH | Ed25519 ou ECDSA | OpenSSH |
| VPN moderna | X25519 (WireGuard) | WireGuard |
| E-mail cifrado | RSA ou ECC via OpenPGP | GPG, Enigmail, Thunderbird |
| Assinatura de pacotes | RSA ou ECC | APT, DNF, YUM, Pacman |
| Assinatura de código | RSA ou ECDSA | GPG, codesign, signtool |
| Assinatura jurídica | RSA 2048 (ICP-Brasil) | tokens A3, software A1 |
| Certificados TLS | RSA, ECDSA, Ed25519 | OpenSSL, cfssl, step-ca |
| Mensageria ponta a ponta | X25519 + AES | Signal, WhatsApp, iMessage |
| Criptomoedas | ECDSA (secp256k1), Ed25519 | Bitcoin, Ethereum, Solana |
| WebAuthn / Passkeys | ECDSA, Ed25519 | YubiKey, TPM, Google Password Manager |
| Blockchain em geral | ECDSA ou Ed25519 | diversos protocolos |
O dia a dia do administrador Linux
Section titled “O dia a dia do administrador Linux”A criptografia assimétrica aparece em diversas rotinas administrativas:
# Verificar chaves SSH do servidorls -la ~/.ssh/# Chaves privadas do usuário: ~/.ssh/id_ed25519, ~/.ssh/id_rsa
# Listar fingerprint de chaves conhecidasssh-keygen -lf ~/.ssh/known_hosts
# Importar chave pública de um colaborador no GPGgpg --import chave_publica.asc
# Listar chaves no chaveiro GPGgpg --list-keys
# Validar cadeia de certificados de um siteopenssl s_client -connect site.exemplo.com:443 -showcerts
# Verificar validade de um certificado localopenssl x509 -in certificado.pem -noout -datesSignificado de cada comando:
ssh-keygen -lf <arquivo>: lista o fingerprint das chaves no arquivogpg --import <arquivo>: importa chaves (públicas ou privadas) no chaveiro localgpg --list-keys: lista chaves públicas no chaveiroopenssl x509 -in <cert> -noout -dates: exibe apenas as datas de validade do certificado
Considerações Finais
Section titled “Considerações Finais”A criptografia assimétrica se tornou o cimento invisível da internet. Ela é o mecanismo pelo qual confiamos em servidores que nunca vimos, autenticamos usuários sem compartilhar segredos, assinamos documentos com validade legal e protegemos nossas identidades digitais em dispositivos que nunca interagiram antes.
Entender onde e como ela se aplica é essencial não apenas para administrar sistemas corretamente, mas também para avaliar riscos, projetar arquiteturas e responder a incidentes de segurança. No próximo post faremos um comparativo direto entre criptografia simétrica e assimétrica, consolidando as diferenças entre os dois paradigmas e mostrando por que, na prática, eles são complementares em quase todos os sistemas reais.
