Troca de chaves e criptografia híbrida
Veja como a troca de chaves Diffie-Hellman e o TLS combinam métodos simétricos e assimétricos para alcançar desempenho e segurança.
Troca de chaves e criptografia híbrida é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O problema da troca de chaves
A criptografia simétrica exige que ambas as partes compartilhem a mesma chave secreta antes de poderem se comunicar com segurança. Mas como compartilhar essa chave com segurança quando vocês ainda não têm um canal seguro? Esse problema da distribuição de chaves foi considerado insolúvel até 1976, quando Whitfield Diffie e Martin Hellman publicaram um artigo revolucionário. A solução deles — a troca de chaves Diffie-Hellman — permite que duas partes estabeleçam uma chave secreta compartilhada por um canal inseguro sem jamais transmitir a própria chave, mesmo sob a observação de eventuais espiões.
Conceito da troca de chaves Diffie-Hellman
Diffie-Hellman (DH) usa um truque matemático inteligente baseado no problema do logaritmo discreto. Ambas as partes concordam com dois valores públicos (um número primo grande p e um gerador g). Cada parte gera um número aleatório privado, calcula um valor público a partir dele e troca os valores públicos. Em seguida, cada parte pode calcular o mesmo segredo compartilhado usando seu próprio número privado e o valor público da outra parte — mas um espião que veja apenas os valores públicos não consegue calcular o segredo compartilhado sem resolver o problema do logaritmo discreto, o que é computacionalmente inviável para números grandes.
# Diffie-Hellman conceptual flow:
# 1. Agree on public parameters: prime p=23, generator g=5
# 2. Alice picks private a=6: computes A = g^a mod p = 5^6 mod 23 = 8
# 3. Bob picks private b=15: computes B = g^b mod p = 5^15 mod 23 = 19
# 4. Alice sends A=8 to Bob; Bob sends B=19 to Alice
# 5. Alice: s = B^a mod p = 19^6 mod 23 = 2
# 6. Bob: s = A^b mod p = 8^15 mod 23 = 2
# Shared secret = 2 (without either party transmitting it!)ECDH: Elliptic Curve Diffie-Hellman
Elliptic Curve Diffie-Hellman (ECDH) é a variante moderna e mais eficiente da troca de chaves Diffie-Hellman. Ela usa a matemática de curvas elípticas em vez da exponenciação modular, alcançando a mesma segurança com parâmetros muito menores. Uma chave ECDH de 256 bits oferece uma segurança equivalente à de uma chave DH de 3072 bits. A ECDHE (o “E” significa Ephemeral) gera um novo par de chaves para cada sessão, fornecendo Perfect forward secrecy. O TLS 1.3 exige ECDHE para a troca de chaves, tornando-o o mecanismo de troca de chaves predominante na segurança web moderna.
Perfect Forward Secrecy (PFS)
Perfect Forward Secrecy (PFS) garante que as chaves de sessão não sejam comprometidas mesmo que a chave privada de longo prazo do servidor seja roubada posteriormente. O PFS é obtido usando pares de chaves efêmeros para a troca de chaves de cada sessão — a chave de sessão é derivada de um par de chaves temporário que é descartado após o término da sessão. Sem PFS (usando a troca de chaves RSA), um invasor que registre tráfego criptografado hoje e roube a chave privada posteriormente poderá descriptografar retroativamente todo o tráfego passado. Com PFS, as sessões anteriores permanecem seguras mesmo após o comprometimento da chave.
# Check if a website uses Perfect Forward Secrecy
openssl s_client -connect google.com:443 2>/dev/null | grep 'Cipher'
# Cipher : TLS_AES_256_GCM_SHA384 (TLS 1.3 - always has PFS)
# Or look for ECDHE in cipher name:
# Cipher : ECDHE-RSA-AES256-GCM-SHA384 (TLS 1.2 with PFS)
# DHE-RSA-AES256-GCM-SHA384 (DHE = also PFS)
# RSA-AES256-SHA (NO PFS - static RSA key exchange)Hybrid de Criptografia: O Melhor dos Dois
Hybrid encryption combina criptografia assimétrica e simétrica para obter tanto os benefícios de gerenciamento de key da criptografia assimétrica quanto o desempenho da criptografia simétrica. O processo é: (1) gerar uma key de sessão simétrica aleatória; (2) criptografar os dados principais com essa key simétrica (rapidamente); (3) criptografar a key simétrica com a key pública do destinatário (transmissão segura da key); (4) enviar os dados criptografados e a key criptografada. O destinatário descriptografa a key simétrica com sua key privada e, em seguida, descriptografa os dados com a key simétrica recuperada.
# Hybrid encryption example with OpenSSL
# 1. Generate a random AES-256 session key
openssl rand -out session.key 32
# 2. Encrypt the large file with the symmetric session key
openssl enc -aes-256-cbc -pbkdf2 -in largefile.tar -out largefile.enc -pass file:session.key
# 3. Encrypt the session key with recipient's RSA public key
openssl rsautl -encrypt -inkey recipient_public.pem -pubin -in session.key -out session.key.enc
# Send: largefile.enc + session.key.encTLS Handshake: Hybrid de Criptografia na Prática
O TLS handshake é a implementação mais comum de criptografia híbrida no mundo real. No TLS 1.3: (1) o cliente envia os conjuntos de cifras compatíveis e o compartilhamento de key (valor público ECDHE); (2) o servidor responde com seu compartilhamento de key, certificate (contendo sua key pública) e uma assinatura; (3) ambos os lados calculam o mesmo segredo compartilhado por meio de ECDH; (4) todo o tráfego subsequente é criptografado com uma key simétrica derivada do segredo compartilhado (AES-256-GCM). Todo o processo estabelece um canal criptografado em uma única ida e volta, sem jamais transmitir a key simétrica diretamente.
# Observe the TLS 1.3 handshake
openssl s_client -connect example.com:443 -tls1_3
# You'll see:
# TLSv1.3, Handshake [length 0002], ServerHello
# Cipher : TLS_AES_256_GCM_SHA384
# Session-ID: (no session ID in TLS 1.3, uses PSK)
# Verify return code: 0 (ok)Mecanismos de Encapsulamento de Key (KEM)
A criptografia moderna usa Key Encapsulation Mechanisms (KEM) como uma abordagem mais formal e segura para a troca de keys do que a criptografia assimétrica direta de uma key de sessão. Um KEM permite que uma parte gere uma key simétrica e a “encapsule” usando a key pública do destinatário, de modo que somente o destinatário possa desencapsulá-la (recuperá-la). O padrão pós-quântico do NIST, CRYSTALS-Kyber, é um KEM baseado em problemas de reticulados, e não em fatoração de inteiros ou curvas elípticas, o que o torna resistente a ataques de computadores quânticos.
Troca de Key RSA versus ECDHE
Até o TLS 1.3, a troca de key RSA era comum: o cliente gerava um segredo pré-mestre, criptografava-o com a key pública RSA do servidor e o enviava ao servidor. O problema é que isso não oferece sigilo de encaminhamento. Se a key privada do servidor for comprometida posteriormente, todas as sessões anteriores criptografadas dessa forma poderão ser descriptografadas. O TLS 1.3 remove completamente a troca de key RSA (ele permite apenas ECDHE), especificamente para impor sigilo de encaminhamento em todas as conexões. É por isso que desativar TLS 1.0 e 1.2 (que ainda permitem RSA estático) e exigir TLS 1.3 representa uma melhoria de segurança.
Derivação de Key de Sessão
O segredo compartilhado produzido por uma troca de Diffie-Hellman não é usado diretamente como uma key de criptografia. Em vez disso, ele é fornecido a uma Key Derivation Function (KDF) para produzir as keys de criptografia reais e os vetores de inicialização. O TLS 1.3 usa HKDF (HMAC-based Key Derivation Function) para derivar keys separadas para a criptografia em cada direção. As KDFs acrescentam custo computacional (dificultando a força bruta), expandem segredos curtos para a quantidade necessária de bytes de key e garantem que as keys derivadas tenham boas propriedades estatísticas para uso como keys simétricas.
Criptografia de E-mail com PGP: Hybrid em E-mail
Pretty Good Privacy (PGP) e seu equivalente de código aberto, OpenPGP, usam criptografia híbrida para e-mails. Quando Alice envia um e-mail criptografado para Bob: o PGP gera uma key de sessão simétrica aleatória, criptografa o corpo do e-mail com ela (AES), criptografa a key de sessão com a key pública RSA ou ECC de Bob e envia ambas juntas. Para e-mails assinados, o PGP calcula o hash da mensagem e assina o hash com a key privada de Alice, fornecendo não repúdio. O modelo de rede de confiança do PGP (usuários assinando as keys uns dos outros) é uma alternativa à PKI baseada em autoridades de certificação.
# Encrypt and sign an email file with GPG (OpenPGP)
# Encrypt to Bob using his public key, sign with Alice's private key
gpg --encrypt --sign --recipient bob@example.com --armor message.txt
# Decrypt (Bob uses his private key)
gpg --decrypt message.txt.asc
# List available keys
gpg --list-keys
gpg --list-secret-keysRisco de Ataque Man-in-the-Middle na Troca de Keys
A troca de keys Diffie-Hellman é segura contra interceptadores passivos, mas vulnerável a ataques man-in-the-middle (MITM) ativos se as partes não autenticarem umas às outras. Um invasor pode interceptar o valor público de Alice, substituí-lo pelo próprio e estabelecer sessões DH separadas com Alice e Bob — cada um acreditando estar se comunicando com o outro. É por isso que o TLS combina a troca de keys DH com autenticação por certificate: o certificate do servidor (assinado por uma CA confiável) comprova a identidade do servidor, impedindo a substituição da key pública por um MITM durante o handshake.
Check Rápido
Teste sua compreensão dos conceitos do CompTIA Security+ (SY0-701) apresentados nesta lição.
Revisão da Lição
Nesta lição, você aprendeu que: o Diffie-Hellman resolve o problema da troca de keys permitindo que as partes derivem um segredo compartilhado por um canal inseguro; o ECDHE (efêmero) oferece Perfect Forward Secrecy; a hybrid encryption combina a troca assimétrica de keys com a criptografia simétrica dos dados principais para obter eficiência; e o TLS 1.3 exige ECDHE para todas as conexões. A seguir, exploraremos Authorities de Certificates e Cadeias de Trust.
Perguntas Frequentes
A aula “Troca de chaves e criptografia híbrida” é grátis?
Sim — o texto completo de “Troca de chaves e criptografia híbrida” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O que vou aprender em “Troca de chaves e criptografia híbrida”?
Veja como a troca de chaves Diffie-Hellman e o TLS combinam métodos simétricos e assimétricos para alcançar desempenho e segurança. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cloud & IT Cert Prep?
Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Troca de chaves e criptografia híbrida”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?
Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Algoritmos de criptografia simétrica
- Criptografia assimétrica e pares de chaves
- Hashing e integridade de dados
- Troca de chaves e criptografia híbrida