Como a Criptografia de Chave Pública Realmente Funciona
Um guia prático sobre criptografia assimétrica, pares de chaves e assinaturas digitais, sem analogias matemáticas superficiais.
Toda vez que você SSH em um servidor ou carrega um site HTTPS, duas chaves matematicamente ligadas fazem o trabalho pesado. Uma é pública, uma é privada, e a relação entre elas é o que torna possível a comunicação segura em uma rede não confiável em primeiro lugar.
A ideia básica
Com criptografia simétrica, uma única chave tanto bloqueia quanto desbloqueia os dados. Isso funciona bem se ambas as partes já compartilham um segredo, mas distribuir esse segredo com segurança é a parte difícil. A criptografia de chave pública (assimétrica) resolve isso gerando um par matematicamente relacionado: uma chave pública que você distribui para qualquer um, e uma chave privada que você nunca compartilha.
Dados criptografados com a chave pública só podem ser descriptografados com a chave privada correspondente. Dados assinados com a chave privada podem ser verificados por qualquer um que tenha a chave pública. Essas duas propriedades cobrem quase tudo o que usamos para isso: confidencialidade e autenticação.
RSA, o exemplo clássico
RSA se baseia no fato de que multiplicar dois números primos grandes é rápido, mas fatorar o produto de volta para esses primos é brutal computacionalmente em escala. Uma chave RSA de 2048 bits é construída a partir de dois primos aproximadamente 1024 bits cada. A chave pública é (n, e) — n sendo o produto dos primos, e um expoente fixo como 65537. A chave privada é derivada usando o totiente de n e envolve conhecer os primos originais.
Criptografia é exponenciação modular: c = m^e mod n. Descriptografia inverte com o expoente privado d: m = c^d mod n. Ninguém está realmente criptografando grandes cargas úteis diretamente com RSA na prática — é lento e tem limites de tamanho ligados ao comprimento da chave. Em vez disso, RSA tipicamente encapsula uma chave de sessão simétrica (AES-256, por exemplo), e a cifra simétrica lida com os dados em massa. Essa é a abordagem híbrida que TLS usa.
Criptografia de curva elíptica e por que está tomando conta
ECC oferece segurança equivalente a RSA com chaves muito menores. Uma chave ECC de 256 bits (como curve secp256r1 ou Curve25519) é aproximadamente comparável em força a uma chave RSA de 3072 bits. Chaves menores significam handshakes mais rápidos e menos largura de banda, por isso configurações modernas de TLS, implementações SSH e o protocolo Signal se apoiam em ECC.
A matemática é diferente — é baseada no problema do logaritmo discreto sobre pontos em uma curva elíptica em vez de fatoração de inteiros — mas a relação de chave pública/privada e as garantias são conceitualmente as mesmas.
Assinaturas digitais: a outra metade da equação
Criptografia mantém dados confidenciais. Assinaturas provam autenticidade e integridade. Para assinar uma mensagem, você a faz hash (SHA-256, tipicamente) e criptografa esse hash com sua chave privada. Qualquer um com sua chave pública pode fazer hash da mensagem, descriptografar sua assinatura e verificar se os dois hashes coincidem.
Isso é exatamente o que acontece quando você executa git commit -S com uma chave GPG, ou quando uma Autoridade Certificadora assina um certificado TLS. A chave privada da CA assina seu certificado; navegadores vêm com a chave pública da CA pré-confiável, então podem verificar a autenticidade do seu certificado sem nunca falar com a CA diretamente.
Onde isso aparece no dia a dia
Autenticação por chave SSH é uma aplicação direta: ssh-keygen -t ed25519 gera um par de chaves, você coloca a metade pública em ~/.ssh/authorized_keys no servidor, e a autenticação acontece através de um desafio-resposta usando a chave privada, nenhuma senha nunca transmitida.
Handshakes TLS usam criptografia assimétrica brevemente, apenas para estabelecer uma chave simétrica compartilhada (via troca de chave ECDHE em configurações modernas), depois caem em criptografia simétrica rápida para a sessão real. Criptografia de email PGP/GPG segue o padrão híbrido também — criptografa a mensagem com uma chave AES aleatória, depois criptografa essa chave AES com a chave pública RSA ou ECC do destinatário.
O que realmente quebra na prática
A matemática atrás de RSA e ECC não foi quebrada através da computação clássica. O que dá errado é quase sempre implementação: geração fraca de números aleatórios ao criar chaves (o bug Debian OpenSSL de 2008 é o caso de livro), nonces reutilizados em assinaturas ECDSA vazando chaves privadas, ou ataques de oráculo de padding contra RSA mal implementado (ataque de Bleichenbacher contra preenchimento PKCS#1 v1.5). Computação quântica é a ameaça teórica de longo prazo — o algoritmo de Shor quebraria tanto RSA quanto ECC se um computador quântico suficientemente grande existisse — por isso NIST já padronizou algoritmos pós-quânticos como ML-KEM (anteriormente Kyber) para migração futura.
Se você quer ir mais longe com isso, a trilha de criptografia do Korra Studio cobre protocolos de troca de chaves e internals de funções hash em mais profundidade, e os segmentos de rede mostram como tudo isso se encaixa em um handshake TLS real byte a byte.
Escrito com assistência de IA, revisado e publicado por Michal Pilch (CISSP), Korra Studio.
Esta é uma anotação da base de conhecimento da Korra Studio — a plataforma associa cada tema com mentoria 1-para-1.
Começar gratuitamentearrow_forward