0Pricing
Cryptology Academy · Aula

Ataques de temporização: extração de chaves pelo tempo de execução

Demonstre um ataque de temporização de cache contra uma implementação cujo tempo não é constante.

Ataques de temporização: extração de chaves pelo tempo de execução é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 1 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.

O que é um ataque de temporização?

Um ataque de temporização é um ataque de canal lateral no qual um adversário mede quanto tempo as operações criptográficas levam para inferir dados secretos. Até diferenças de nanossegundos podem revelar bits da chave.

Por que o tempo de execução vaza segredos

Ramificações e acessos à memória dentro do código criptográfico geralmente dependem de valores secretos. Um laço que termina antecipadamente ao encontrar um bit zero é executado mais rapidamente — o atacante mede essa diferença.

Ataques de temporização de cache no AES

As consultas clássicas às tabelas do AES atingem linhas de cache da CPU cujos endereços dependem dos bytes da chave. Ferramentas como Flush+Reload permitem que um atacante observe quais linhas de cache foram acessadas.

O oráculo de temporização RSA de Bleichenbacher

O ataque de Bleichenbacher de 1998 explorou diferenças de temporização na validação do preenchimento PKCS#1 v1.5. Milhões de textos cifrados escolhidos poderiam recuperar uma chave privada RSA de 1024 bits.

Ataques de temporização remotos

Mesmo pela rede, diferenças de temporização inferiores a um milissegundo são mensuráveis com amostras suficientes. O Lucky13 explorou a temporização do MAC no modo CBC do TLS pela internet.

Medindo o tempo em Python

Utilize time.perf_counter_ns() para obter resolução de nanossegundos. Para demonstrar uma comparação vulnerável:

import time

def vulnerable_compare(a, b):
    for x, y in zip(a, b):
        if x != y:
            return False
    return len(a) == len(b)

start = time.perf_counter_ns()
vulnerable_compare(b"secret_key_here", b"wrong_key_xxxxx")
elapsed = time.perf_counter_ns() - start
print(f"Elapsed: {elapsed} ns")

Simulando um oráculo de temporização

Um oráculo de temporização informa se um palpite está correto e vaza a temporização. Podemos recuperar um segredo byte a byte medindo qual palpite demora mais antes de retornar False.

Análise estatística de dados de temporização

Medições individuais são ruidosas. Os atacantes coletam milhares de amostras por candidato e utilizam testes estatísticos (teste t, teste de Welch) para distinguir o sinal do ruído.

O ataque de Manger contra OAEP

Em 2001, Manger mostrou que até mesmo o RSA preenchido com OAEP vaza informações se a implementação distinguir "o primeiro byte é zero" de outros erros por meio de temporizações diferentes.

Exemplos do mundo real

OpenSSL, GnuTLS e NSS já tiveram CVEs relacionados a ataques de temporização. O ataque Lucky13 contra TLS (CVE-2013-0169) afetou praticamente todas as bibliotecas TLS na época da divulgação.

Verificação de conhecimento

Que técnica estatística ajuda os atacantes a distinguir o sinal de temporização do ruído das medições?

Recapitulação da lição

Os ataques de temporização extraem segredos criptográficos medindo diferenças no tempo de execução. Eles funcionam localmente (cache) ou remotamente (rede). A análise estatística separa o sinal do ruído. A correção é utilizar código de tempo constante — isso é abordado na lição sobre contramedidas.

Perguntas Frequentes

A aula “Ataques de temporização: extração de chaves pelo tempo de execução” é grátis?

Sim — o texto completo de “Ataques de temporização: extração de chaves pelo tempo de execução” é 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 temporização: extração de chaves pelo tempo de execução”?

Demonstre um ataque de temporização de cache contra uma implementação cujo tempo não é constante. 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 1 de 4.

Quanto tempo leva a aula “Ataques de temporização: extração de chaves pelo tempo de execução”?

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

  1. Ataques de temporização: extração de chaves pelo tempo de execução
  2. Análise de potência: SPA e DPA
  3. Canais laterais eletromagnéticos e acústicos
  4. Contramedidas: mascaramento, cegamento e código de tempo constante
← Voltar para Cryptology Academy