02 - Criptografia Assimétrica (RSA, ECC, Diffie-Hellman)
video: https://youtu.be/... no frontmatter da nota.Criptografia Assimétrica (RSA, ECC, Diffie-Hellman)
A criptografia assimétrica revolucionou a segurança digital ao resolver o problema fundamental da distribuição de chaves que limitava a criptografia simétrica. Em vez de uma chave compartilhada, utiliza um par de chaves matematicamente relacionadas: uma pública (que pode ser livremente divulgada) e uma privada (mantida em segredo absoluto pelo dono). O que é cifrado com uma só pode ser decifrado com a outra.
Abaixo, detalham-se os principais algoritmos assimétricos, suas bases matemáticas, tamanhos de chave, casos de uso e o comparativo RSA vs ECC.
1. Características Gerais
| Atributo | Valor |
|---|---|
| Número de chaves por entidade | 2 (par pública/privada) |
| Velocidade relativa | Lenta (100-1000x mais lenta que simétrica) |
| Tamanho típico de chave | 2048-4096 bits (RSA) / 256-521 bits (ECC) |
| Base matemática | Fatoração, log discreto, curvas elípticas |
| Aplicações | TLS, SSH, PGP, assinaturas, certificados X.509, IPSec |
| RFC de referência | RFC 8017 (PKCS#1 RSA), RFC 7748 (Curve25519/Curve448), RFC 6090 (ECC básica) |
2. RSA (Rivest-Shamir-Adleman)
O RSA foi o primeiro algoritmo de criptografia assimétrica publicado, em 1977 por Ron Rivest, Adi Shamir e Leonard Adleman do MIT. (Pesquisas recentes revelaram que James Ellis, Clifford Cocks e Malcolm Williamson do GCH britânico haviam descoberto o mesmo método em 1973, mantido classificado até 1997.)
Base Matemática
A segurança do RSA baseia-se na dificuldade de fatorar o produto de dois números primos grandes. O par de chaves é gerado a partir de:
- Dois primos grandes
peq(geralmente de ~1024 bits cada para RSA-2048). n = p × q(módulo público).- Função totiente de Euler:
φ(n) = (p-1)(q-1). - Expoente público
e(usualmente 65537 = 216+1). - Expoente privado
dtal qued × e ≡ 1 (mod φ(n)).
| Operação | Fórmula |
|---|---|
| Cifragem | c = m^e mod n |
| Decifragem | m = c^d mod n |
| Assinatura | s = m^d mod n |
| Verificação | m = s^e mod n |
Tamanhos de Chave e Status
| Tamanho | Status NIST SP 800-57 | Uso recomendado até |
|---|---|---|
| 1024 bits | Obsoleto | Proibido desde 2013 |
| 2048 bits | Aceitável | 2030 |
| 3072 bits | Recomendado | 2031+ |
| 4096 bits | Conservador | >2031 |
3. ECC (Elliptic Curve Cryptography)
A ECC é uma família de algoritmos assimétricos baseados em curvas elípticas sobre corpos finitos. A segurança apóia-se na dificuldade do Problema do Logaritmo Discreto sobre Curvas Elípticas (ECDLP), que é significativamente mais difícil que o log discreto clássico, permitindo chaves equivalentemente seguras com tamanho muito menor.
Curvas Padronizadas
| Curva | Padrão | Uso Típico |
|---|---|---|
| P-256 (secp256r1) | NIST FIPS 186-4 | TLS, certificados X.509, ECDSA |
| P-384 (secp384r1) | NIST FIPS 186-4 | Nível de segurança 192 bits |
| P-521 (secp521r1) | NIST FIPS 186-4 | Nível de segurança 256 bits |
| Curve25519 | RFC 7748 | Ed25519, X25519, WireGuard, Signal |
| Curve448 | RFC 7748 | Nível de segurança 224 bits |
| secp256k1 | SECG | Bitcoin, Ethereum |
Vantagens do ECC
- Chaves menores com segurança equivalente a RSA — economia em banda, armazenamento e CPU.
- Operações mais rápidas que RSA em nível equivalente de segurança.
- Curvas modernas (Curve25519, Ed25519) foram projetadas para evitar falhas de implementação (resistência a canais laterais, não-cofactor issues).
4. RSA vs ECC: Tamanhos de Chave Equivalentes
| Segurança (bits) | RSA | ECC | Fator de redução |
|---|---|---|---|
| 80 | 1024 | 160 | ~6x |
| 112 | 2048 | 224 | ~9x |
| 128 | 3072 | 256 | ~12x |
| 192 | 7680 | 384 | ~20x |
| 256 | 15360 | 521 | ~30x |
Uma chave ECC-256 bits oferece segurança equivalente a um RSA-3072 bits, ocupando apenas ~8% do tamanho. Em sistemas embarcados, IoT e mobile, ECC é a escolha dominante.
5. Diffie-Hellman (DH) e ECDH
O protocolo Diffie-Hellman, publicado em 1976 por Whitfield Diffie e Martin Hellman (com contribuição de Ralph Merkle), foi a primeira proposta prática de troca de chaves segura sobre canal inseguro. Permite que duas partes, sem conhecimento prévio uma da outra, estabeleçam uma chave secreta compartilhada usando um canal público.
Funcionamento Clássico (DH)
- Acordo público: primo
pe geradorg. - Alice escolhe
asecreto, enviaA = g^a mod p. - Bob escolhe
bsecreto, enviaB = g^b mod p. - Ambos computam
K = B^a = A^b = g^(ab) mod p. - Um atacante observa
A,B,p,g, mas não consegue derivarKsem resolver o log discreto.
Variações Modernas
| Variante | Base | RFC | Uso Típico |
|---|---|---|---|
| DH | Log discreto em Z_p* | RFC 2631 | IPSec histórico |
| DHE | DH Efêmero (chaves temporárias) | RFC 7919 | TLS 1.2 forward secrecy |
| ECDH | Curvas elípticas | RFC 6090 | SSH, Wi-Fi WPA3 (SAE) |
| ECDHE | ECDH Efêmero | RFC 8422 | TLS 1.3 (obrigatório) |
| X25519 | Curve25519 | RFC 7748 | TLS 1.3, WireGuard, Signal |
| X448 | Curve448 | RFC 7748 | Nível alto (224 bits) |
Forward Secrecy (Sigilo Futuro)
A propriedade de Forward Secrecy (ou PFS — Perfect Forward Secrecy) garante que, mesmo que a chave privada de longo prazo do servidor seja comprometida no futuro, as sessões anteriores gravadas permanecem seguras. Isso exige chaves efêmeras (DHE/ECDHE) em cada sessão, descartadas após o uso. TLS 1.3 tornou ECDHE obrigatório.
6. DSA e Ed25519 (Assinaturas Digitais)
DSA (Digital Signature Algorithm)
Padronizado pelo NIST em FIPS 186 (1994), o DSA é baseado em log discreto em Z_p*. Historicamente usado em certificados, hoje é obsoleto em favor do ECDSA e Ed25519.
ECDSA (Elliptic Curve DSA)
Variante de DSA sobre curvas elípticas, padronizado em FIPS 186-4. Muito usado em TLS, mas vulnerável a falhas de implementação: se o nonce k for reutilizado ou previsível, a chave privada pode ser recuperada (ataque que comprometeu a PS3 da Sony em 2010).
Ed25519
Sistema de assinatura baseado na curva Curve25519, usando o esquema EdDSA (RFC 8032). Vantagens:
- Determinístico (não requer fonte aleatória de alta qualidade — elimina o risco de Sony PS3).
- Rápido — verificação em ~100 µs, geração em ~50 µs.
- Compacto — assinaturas de 64 bytes, chaves públicas de 32 bytes.
- Resistente a canais laterais — projeção em coordenadas twisted Edwards.
Adotado por: SSH (padrão em OpenSSH 6.5+), WireGuard, OpenBSD, FreeBSD, Signal, age encryption.
7. Tabela Comparativa: Algoritmos Assimétricos
| Algoritmo | Ano | Tipo | Tamanho típico | Operação Principal | RFC |
|---|---|---|---|---|---|
| RSA | 1977 | Cifra + Assinatura | 2048-4096 bits | Fatoração | RFC 8017 |
| DH | 1976 | Troca de chaves | 2048 bits | Log discreto em Z_p | RFC 2631 |
| DSA | 1994 | Assinatura | 2048 bits | Log discreto em Z_p | FIPS 186 |
| ECDH | 1985 | Troca de chaves | 256 bits (P-256) | ECDLP | RFC 6090 |
| ECDSA | 1985 | Assinatura | 256 bits (P-256) | ECDLP | FIPS 186-4 |
| Ed25519 | 2011 | Assinatura | 256 bits | ECDLP (twisted Edwards) | RFC 8032 |
| X25519 | 2015 | Troca de chaves | 256 bits | ECDLP (Curve25519) | RFC 7748 |
8. Casos de Uso Modernos
| Protocolo | Assimétrico Usado | Função |
|---|---|---|
| TLS 1.3 | X25519 / P-256 (ECDHE) + RSA-PSS / ECDSA / Ed25519 | Troca de chaves + assinatura do certificado |
| SSH | RSA-2048+, ECDSA-P256, Ed25519 | Autenticação de servidor e usuário |
| WireGuard | X25519 (Noise Protocol) | Troca de chaves efêmera |
| Signal | X25519 + XEdDSA | Double Ratchet |
| Bitcoin | secp256k1 (ECDSA) | Assinatura de transações |
| PGP/OpenPGP | RSA, ECC | Cifragem + assinatura de e-mails |
| WPA3 (SAE) | X25519 (RFC 7748) | Dragonfly key exchange |
9. Boas Práticas
- Migrar para ECC (P-256 ou Curve25519) sempre que possível — economia de banda e CPU.
- Preferir Ed25519 para assinaturas em sistemas novos (determinística, segura e rápida).
- Usar ECDHE efêmero em TLS — obrigatório para forward secrecy.
- Desabilitar RSA key exchange (sem DHE/ECDHE) em TLS — não oferece PFS.
- Tamanho mínimo RSA: 2048 bits (idealmente 3072 para vida útil >5 anos).
- Proteger chave privada com passphrase + HSM/KMS em ambientes críticos.
- Rotação periódica de chaves (política de 1-2 anos para chaves raiz).
10. Conclusão
A criptografia assimétrica é o pilar que viabilizou a Internet segura como a conhecemos — sem ela, não haveria HTTPS, PKI, SSH, VPNs escaláveis nem criptomoedas. O RSA, embora ainda dominante em legado, está sendo progressivamente substituído por ECC (em especial Curve25519/Ed25519) por seu melhor equilíbrio entre segurança e desempenho. Diffie-Hellman e suas variantes efêmeras (DHE/ECDHE) garantem forward secrecy, propriedade hoje considerada obrigatória em TLS 1.3. A escolha entre RSA e ECC depende do ecossistema: RSA mantém compatibilidade ampla; ECC oferece eficiência superior em dispositivos com restrições. Em ambos os casos, a implementação correta é tão crítica quanto o algoritmo em si — falhas como nonce reutilizado ou geração de números aleatórios fraca comprometem qualquer esquema.