Mapa da aula
Aula 40 publicada. Mapa, exemplo, EX079.
flowchart TD
N0["40.1 Verificação do ponto de observação do atacante"]
N1["40.2 Testes de rebaixamento"]
N2["40.3 Testes de tratamento do estado"]
N3["40.4 Relatório de verificação"]
N4["Nota de engenharia"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX079"]
Desenho lógico
flowchart LR
N0["40.1 Verificação do ponto de observação do atacante"]
N1["40.2 Testes de rebaixamento"]
N2["40.3 Testes de tratamento do estado"]
N3["40.4 Relatório de verificação"]
N4["Nota de engenharia"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX079"]
[40.1 Verificação do ponto de observação do atacante]
|
v
[40.2 Testes de rebaixamento]
|
v
[40.3 Testes de tratamento do estado]
|
v
[40.4 Relatório de verificação]
|
v
[Nota de engenharia]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX079]
Objetivos de aprendizagem
Você vai (1) verificar as proteções de ponta a ponta, num laboratório, a partir do ponto de observação de um atacante; (2) testar a resistência ao rebaixamento; (3) verificar o tratamento do estado das assinaturas com estado; e (4) produzir um relatório de verificação. O capítulo parte dos Capítulos 30–39.
40.1 Verificação do ponto de observação do atacante
Num laboratório isolado que replica a borda da BPA, capture handshakes e confirme o grupo negociado a partir da rede, e não dos logs do servidor. Verifique que as sessões gravadas com grupos híbridos exigiriam quebrar tanto o X25519 quanto o ML-KEM — conferindo que a derivação da chave de sessão inclui os dois compartilhamentos (o princípio do Laboratório C).
Os logs do servidor podem estar errados: uma biblioteca TLS pode registrar o primeiro grupo oferecido em vez do negociado, como o estagiário do Capítulo 43 descobre. Ler o ServerHello na rede dá o grupo real, e compará-lo com os logs verifica os dois de uma só vez.
40.2 Testes de rebaixamento
Um man-in-the-middle de laboratório remove os grupos híbridos do ClientHello. Esperado: a assinatura da transcrição do TLS 1.3 provoca a falha, ou o cliente tenta de novo sem o híbrido somente se a lógica da aplicação o permitir — o que o teste deve detectar e a política deve proibir onde possível. Execute apenas no laboratório.
O resultado esperado para um cliente correto é um handshake que falha, sem nova tentativa, já que a verificação da transcrição detecta o grupo removido. Se o cliente tenta de novo sem o grupo híbrido e tem sucesso, o teste encontrou um caminho de rebaixamento no nível da aplicação. Repita o teste para cada biblioteca cliente no escopo, porque o comportamento de nova tentativa difere entre elas.
40.3 Testes de tratamento do estado
Para LMS/XMSS: simule a restauração do HSM a partir de um backup e confirme que o HSM se recusa a reutilizar índices; simule pedidos de assinatura simultâneos e confirme que não há índice duplicado; esgote uma pequena árvore de teste e confirme que a assinatura para de forma limpa.
O teste de assinatura simultânea importa porque um serviço de assinatura sob carga pode entregar o mesmo índice a dois pedidos se a atualização do contador não for atômica. Esgotar uma pequena árvore de teste, por exemplo uma de altura cinco com 32 assinaturas, permite à equipe verificar o comportamento de fim de chave em minutos, em vez de esperar anos. Cada resultado de teste entra no dossiê com a versão do firmware do HSM usada, já que uma atualização posterior do firmware pode mudar o comportamento.
40.4 Relatório de verificação
Relatório: escopo, ambiente, testes, resultados, desvios, problemas residuais, links para as evidências. Um bom relatório permite que um revisor execute os testes de novo.
Os desvios são a parte mais importante: um teste executado com outra versão de biblioteca ou numa rede simplificada precisa dizê-lo, ou um revisor pode supor que os resultados valem para a produção. Os links para as evidências ligam cada resultado à sua captura ou log bruto. Os relatórios da BPA usam sempre os mesmos títulos, para que os revisores saibam onde procurar e as partes ausentes saltem aos olhos. Um relatório que não pode ser executado de novo é tratado como rascunho.
40.5 Exemplo resolvido
O laboratório da BPA descobre que uma biblioteca cliente interna tenta de novo com grupos somente clássicos após qualquer erro de handshake, inclusive os causados por um atacante. Correção: restringir a nova tentativa a erros de incompatibilidade específicos, registrar as novas tentativas e planejar a remoção do fallback para esse cliente até uma data definida.
Restringir a nova tentativa aos erros de incompatibilidade listados mantém a disponibilidade para pares genuinamente antigos, enquanto nega ao atacante a capacidade de disparar o fallback com um erro forjado. Registrar cada nova tentativa fornece os dados necessários para ver quando o fallback pode ser removido. A remoção datada torna a exceção temporária por projeto, e o teste de rebaixamento é executado de novo após a correção para confirmá-la.
40.6 Erros comuns e limites
- Verificar apenas pelos logs do servidor.
- Testar o rebaixamento em produção.
- Não testar a restauração do estado das assinaturas com estado.
Os logs do servidor refletem o que o software acredita, o que pode diferir da rede, então a verificação apenas pelos logs pode deixar escapar rebaixamentos reais. Os testes de rebaixamento em produção podem quebrar sessões dos parceiros, então eles ficam no laboratório isolado. Não testar a restauração do estado deixa a falha mais perigosa do LMS, a reutilização de índices após a restauração de um backup, sem exame até acontecer de verdade. Cada um desses testes leva horas no laboratório e evita falhas que levariam semanas para reparar em produção.
Nota de engenharia
Inclua controles negativos em cada execução do laboratório. Antes de testar a resistência ao rebaixamento, confirme que o arcabouço de testes consegue detectar um rebaixamento bem-sucedido, configurando deliberadamente um cliente que o permita; se mesmo assim o arcabouço não relatar nenhum rebaixamento, ele está quebrado. Os controles negativos são baratos e evitam a falha de verificação mais constrangedora — um relatório verde produzido por um teste que nunca poderia ter falhado.
Exercícios
- EX079 — Plano do teste de rebaixamento. Escreva o plano de laboratório para o teste de rebaixamento. Rubrica: 3 = isolamento, resultados esperados, critérios de aprovação/reprovação.
- EX080 — Teste de estado. Escreva três casos de teste de tratamento do estado para um HSM LMS. Rubrica: 3 = restauração, concorrência, esgotamento.
Síntese
A verificação de segundo estágio confere as proteções a partir do ponto de observação do atacante, testa o rebaixamento e o tratamento do estado em isolamento e produz relatórios que podem ser executados de novo.