Ataques de Repetição e Vulnerabilidades de Reutilização de Nonce
Compreenda como a reutilização de nonce no GCM e em outros modos pode comprometer completamente a confidencialidade do texto cifrado.
Ataques de Repetição e Vulnerabilidades de Reutilização de Nonce é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 2 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 Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.
Finalidade do valor de uso único na criptografia
Um valor de uso único garante que a mesma mensagem de texto claro criptografada duas vezes produza textos cifrados diferentes. Isso é essencial para a segurança semântica: um invasor que observe vários textos cifrados não obterá informações sobre eles criptografarem textos claros iguais ou diferentes. Em cifras de fluxo e cifras de bloco no modo CTR, o valor de uso único inicializa a geração do fluxo de chaves, tornando-o fundamental para a segurança.
Inicialização do contador com o valor de uso único do GCM
No AES-GCM, o valor de uso único de 96 bits é usado para inicializar um contador da criptografia no modo CTR e também contribui para o cálculo de autenticação GHASH. O valor do contador para cada bloco AES é obtido incrementando-se o valor de uso único. Se duas criptografias usarem o mesmo valor de uso único e a mesma chave, elas gerarão o mesmo fluxo de chaves, fazendo com que o XOR dos textos cifrados seja igual ao XOR dos textos claros.
Reutilização catastrófica do valor de uso único no GCM
Dois textos cifrados do GCM criptografados com o mesmo par (chave, valor de uso único): o XOR entre eles é igual ao XOR dos textos claros correspondentes. Se um invasor conhecer um dos textos claros, algo comum em cenários de texto claro escolhido, ele recuperará imediatamente o outro. Mesmo sem um texto claro conhecido, o XOR dos textos cifrados revela padrões linguísticos e pode ser atacado com técnicas de busca por padrões prováveis. Esse é um dos padrões de uso indevido mais catastróficos da criptografia.
Recuperação da chave de autenticação com a reutilização do valor de uso único
A reutilização do valor de uso único no GCM tem uma consequência catastrófica adicional além da recuperação do texto claro. A chave de autenticação GHASH, H, é derivada exclusivamente da chave de criptografia. Se duas mensagens compartilharem um par (chave, valor de uso único), o invasor poderá resolver equações polinomiais para recuperar H. Com H conhecido, o invasor poderá forjar marcas de autenticação GCM válidas para textos cifrados arbitrários, comprometendo completamente a integridade das mensagens.
Construção do valor de uso único no TLS 1.3
O TLS 1.3 aprendeu com os riscos de reutilização de valores de uso único nas implementações do TLS 1.2. O TLS 1.3 gera valores de uso único do GCM aplicando XOR ao IV de escrita de 12 bytes, derivado do handshake, com o número de sequência de 8 bytes, preenchido com zeros até atingir 12 bytes. Como os números de sequência são incrementados para cada registro, cada registro usa um valor de uso único exclusivo. Isso elimina o risco da geração aleatória de valores de uso único e garante sua exclusividade por meio do mecanismo de números de sequência.
Visão geral dos ataques de repetição
Um ataque de repetição captura uma mensagem válida ou uma credencial de autenticação e a retransmite posteriormente para produzir um efeito fraudulento. Exemplos incluem repetir uma transação bancária para cobrar duas vezes, repetir uma resposta de autenticação válida para personificar um usuário ou repetir um comando assinado enviado a um dispositivo. O invasor não precisa entender nem modificar a mensagem; basta retransmitir os dados capturados para realizar o ataque.
Marcas temporais para prevenção de repetição
Incluir uma marca temporal em mensagens autenticadas oferece proteção contra repetição. O receptor aceita mensagens apenas dentro de uma janela de tempo curta, por exemplo, 5 minutos a partir da marca temporal informada. Uma mensagem repetida depois de horas estará fora da janela e será rejeitada. A marca temporal deve ser autenticada, dentro do HMAC ou dos dados adicionais do AEAD, para impedir que um invasor a modifique e faça a mensagem parecer recente.
Números de sequência para prevenção de repetição
Os números de sequência oferecem uma proteção contra repetição mais forte que as marcas temporais, pois detectam não apenas repetições antigas, mas também entregas duplicadas e fora de ordem. O receptor mantém o próximo número de sequência esperado e uma janela deslizante dos números vistos recentemente. Cada mensagem deve ter um número de sequência dentro da janela aceitável e que ainda não tenha sido visto. O TLS usa números de sequência para impedir a repetição de registros dentro de uma sessão.
Gerando valores de uso único seguros
Para o AES-GCM, a estratégia recomendada de geração de valores de uso único aleatórios é usar 96 bits provenientes de um gerador de números pseudoaleatórios criptograficamente seguro (CSPRNG). Com valores de uso único aleatórios de 96 bits, a probabilidade de colisão segundo o limite do aniversário chega a 2^-32 após 2^32 criptografias, cerca de 4 bilhões. Para aplicações de alto volume, mude para um valor de uso único baseado em contador ou use outro AEAD, como XChaCha20-Poly1305, com seu valor de uso único de 192 bits, para ampliar o limite seguro.
Valores de uso único determinísticos: gerenciamento do contador
Valores de uso único determinísticos baseados em contador evitam os problemas do limite do aniversário, mas exigem um gerenciamento cuidadoso do estado. O contador deve ser persistido entre as reinicializações da aplicação; um contador que seja redefinido para zero após uma reinicialização criará imediatamente uma reutilização do valor de uso único com a mesma chave. O contador deve ser atualizado atomicamente antes que o valor de uso único seja usado, não depois. Em sistemas distribuídos, valores de uso único baseados em contador exigem coordenação para impedir que dois nós usem o mesmo valor de contador.
XChaCha20-Poly1305 para valores de uso único maiores
O XChaCha20-Poly1305 amplia o valor de uso único do ChaCha20-Poly1305 de 96 para 192 bits. Com valores de uso único aleatórios de 192 bits, a probabilidade de colisão segundo o limite do aniversário é desprezível mesmo após 2^96 criptografias, uma quantidade astronomicamente grande de mensagens. Isso torna segura a geração de valores de uso único aleatórios sem preocupações práticas com o aniversário. O crypto_secretbox do libsodium, baseado em XSalsa20-Poly1305, usa valores de uso único de 192 bits pelo mesmo motivo.
Consequências da reutilização do valor de uso único no GCM
Se dois textos cifrados do GCM forem produzidos usando a mesma chave e o mesmo valor de uso único, o que um invasor poderá recuperar?
Recapitulação dos valores de uso único e dos ataques de repetição
Recapitulação da reutilização de valores de uso único: os valores de uso único garantem a exclusividade dos textos cifrados; a reutilização do valor de uso único no GCM revela o XOR dos textos claros e quebra a autenticação por meio da recuperação de H; o TLS 1.3 usa o XOR do número de sequência com o IV para garantir a exclusividade do valor de uso único; os ataques de repetição retransmitem mensagens válidas sem modificá-las; marcas temporais e números de sequência em mensagens autenticadas impedem repetições; use valores de uso único aleatórios de 96 bits para o GCM, observando os limites do aniversário, ou use XChaCha20 para um espaço maior de valores de uso único aleatórios.
Aprenda Cryptology Academy com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 67
- Aulas
- 261
Perguntas Frequentes
A aula “Ataques de Repetição e Vulnerabilidades de Reutilização de Nonce” é grátis?
Sim — o texto completo de “Ataques de Repetição e Vulnerabilidades de Reutilização de Nonce” é 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 Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.
O que vou aprender em “Ataques de Repetição e Vulnerabilidades de Reutilização de Nonce”?
Compreenda como a reutilização de nonce no GCM e em outros modos pode comprometer completamente a confidencialidade do texto cifrado. Você pratica Cryptology Academy 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 Cryptology Academy?
Nenhuma experiência prévia é necessária. Cryptology Academy 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 2 de 4.
Quanto tempo leva a aula “Ataques de Repetição e Vulnerabilidades de Reutilização de Nonce”?
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 Cryptology Academy?
Sim. Cada aula de Cryptology Academy 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
- Ataques de Oráculo de Preenchimento em Detalhes
- Ataques de Repetição e Vulnerabilidades de Reutilização de Nonce
- Ataques de Temporização em Código no Nível da Aplicação
- Principais Padrões de Uso Indevido da Criptografia