
Versão Simplificada do Ataque Criptográfico baseado no Paradoxo do Aniversário: Sweet32 (CVE-2016-2183)
Esta é uma demonstração do ataque Sweet32 (CVE-2016-2183): https://sweet32.info/
O ataque é um exemplo de ataque de aniversário que explora algoritmos criptográficos com tamanhos de bloco pequenos (64 bits) no modo CBC, como 3DES e Blowfish. O ataque requer a geração de muitos blocos criptografados com texto simples conhecido. Após a geração, blocos criptografados idênticos podem ser identificados e usados para identificar o valor do texto simples dos blocos com texto simples desconhecido.
Esta implementação usa 3DES (Triple DES) como seu algoritmo de criptografia, que tem um tamanho de bloco de 64 bits (8 bytes) – o mesmo tamanho que torna o 3DES do mundo real vulnerável ao ataque Sweet32.
Quando dois blocos de texto cifrado colidem (c_i = c_j), podemos recuperar o texto simples desconhecido usando:
p_i = p_j ⊕ c_{i-1} ⊕ c_{j-1}
Onde:
p_i é o texto simples desconhecido (ex.: cookie secreto)p_j é o texto simples conhecido (ex.: cabeçalhos HTTP)c_{i-1} e c_{j-1} são os blocos de texto cifrado anterioresIsso funciona porque no modo CBC, uma colisão significa que as entradas para a cifra de bloco eram iguais, permitindo a recuperação via XOR sem conhecer a chave de criptografia.
Execute a demonstração com uma colisão garantida:
# Passo 1: Gere um pacote criptografado com cookie secreto
python generate_rigged_packets.py rigged_demo.bin
# Passo 2: Execute o ataque para recuperar o cookie
python sweet32.py --block-size 8 rigged_demo.bin
O ataque mostrará o valor do COOKIE SECRETO e, em seguida, o recuperará usando apenas o texto cifrado!
generate_rigged_packets.pyCria um pacote com uma colisão garantida para fins de demonstração. O valor do cookie é elaborado para colidir com um bloco de texto simples conhecido.
sweet32.pyExecute o ataque de aniversário Sweet32 para recuperar o cookie.
O ataque Sweet32 explora o paradoxo do aniversário. Para uma cifra de bloco de 64 bits:
Isso torna o 3DES (e outras cifras de bloco de 64 bits) vulnerável em sessões HTTPS de longa duração.
Para o ataque Sweet32 real no 3DES (blocos de 64 bits):
| Block size | Block size | Num Packets | Data needed | Block count |
|---|---|---|---|---|
| 8 byte | 64 bits | ~785GB | ~785GB | ~2^32 blocks |
O ataque real requer ~785 GB de dados para serem criptografados sob a mesma chave, razão pela qual afeta principalmente conexões HTTPS de longa duração.