Ataque de temporização
O que é Ataque de temporização?
Ataque de temporizaçãoUm ataque de canal lateral que recupera informação secreta medindo quanto tempo demora uma operação com diferentes entradas.
Os ataques de temporização exploram o tempo de execução dependente da entrada em código criptográfico e de autenticação. Os alvos clássicos são as comparações de strings que não são em tempo constante (um byte que não coincide provoca um curto-circuito precoce e revela até onde o palpite acertou), a exponenciação modular (o algoritmo square-and-multiply vaza bits da chave), os lookups em tabelas do AES afetados pelo estado da cache e as consultas de contas cuja duração revela se um nome de utilizador existe. Mesmo diferenças de nanossegundos podem ser amplificadas fazendo a média de milhares de medições para suprimir o jitter da rede.
O artigo de Paul Kocher de 1996 foi o primeiro a transformar isto numa arma contra o RSA e o Diffie-Hellman. De forma decisiva, o trabalho de Brumley e Boneh de 2003, "Remote Timing Attacks Are Practical" (USENIX Security), extraiu uma chave privada RSA do OpenSSL 0.9.7 através de uma rede, explorando a variação de temporização na redução de Montgomery e na alternância entre multiplicação de Karatsuba e normal — é por isso que o OpenSSL passou a ativar o blinding de RSA por predefinição. Lucky Thirteen (CVE-2013-0169, 2013) recuperou texto simples do TLS medindo diferenças no tempo de verificação do MAC durante o tratamento do preenchimento em modo CBC.
flowchart TD
A[O atacante submete muitas entradas forjadas] --> B[Medir o tempo de resposta com precisão]
B --> C[Fazer a média das amostras para cancelar o jitter]
C --> D{O tempo correlaciona-se<br/>com o segredo?}
D -->|Sim| E[Inferir um bit/byte do segredo]
E --> F[Repetir, reduzindo o espaço de chaves]
F --> G[Segredo completo recuperado]
D -->|Não| H[Código de tempo constante: sem fuga]As defesas exigem implementações em tempo constante: movimentos condicionais sem ramificações, comparações de tempo fixo (crypto_memcmp, hmac.compare_digest do Python, MessageDigest.isEqual do Java), blinding para RSA/ECC e primitivas de cifra reforçadas contra a cache. Ferramentas automatizadas (dudect, ctgrind, MicroWalk) ajudam a auditar a temporização dependente dos dados, e a limitação de taxa reduz o orçamento de medição do atacante nas fronteiras da rede.
● Exemplos
- 01
O ataque de temporização de Kocher de 1996 que recupera bits da chave privada de RSA/Diffie-Hellman.
- 02
Lucky Thirteen (CVE-2013-0169): um ataque de temporização ao preenchimento (padding) CBC do TLS.
● Perguntas frequentes
O que é Ataque de temporização?
Um ataque de canal lateral que recupera informação secreta medindo quanto tempo demora uma operação com diferentes entradas. Pertence à categoria Vulnerabilidades da cibersegurança.
O que significa Ataque de temporização?
Um ataque de canal lateral que recupera informação secreta medindo quanto tempo demora uma operação com diferentes entradas.
Como se defender contra Ataque de temporização?
As defesas contra Ataque de temporização costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Ataque de temporização?
Nomes alternativos comuns: Canal lateral de temporização.