Capítulo 29 — Segurança quântica e pós-quântica: medição
Mapa da aula
Aula 29 publicada. Mapa, exemplo, EX057.
flowchart TD
N0["29.1 Fontes de evidência"]
N1["29.2 Atividade prática — Laboratório I"]
N2["29.3 Métricas"]
N3["29.4 Manipulação"]
N4["Nota de engenharia"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX057"]
Desenho lógico
flowchart LR
N0["29.1 Fontes de evidência"]
N1["29.2 Atividade prática — Laboratório I"]
N2["29.3 Métricas"]
N3["29.4 Manipulação"]
N4["Nota de engenharia"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX057"]
[29.1 Fontes de evidência]
|
v
[29.2 Atividade prática — Laboratório I]
|
v
[29.3 Métricas]
|
v
[29.4 Manipulação]
|
v
[Nota de engenharia]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX057]
Objetivos de aprendizagem
Você vai (1) construir e consultar um CBOM; (2) medir os algoritmos negociados versus os configurados; (3) relatar a cobertura e a parcela desconhecida; e (4) projetar métricas resistentes à manipulação. O capítulo parte dos Capítulos 17 e 22.
29.1 Fontes de evidência
As evidências de inventário vêm da varredura de código, da análise de configuração, da observação passiva de handshakes na rede, dos logs dos endpoints e das declarações dos fornecedores. Cada fonte vê coisas diferentes: o código mostra a intenção, a configuração mostra o que é oferecido, a observação passiva mostra o que é negociado e os fornecedores declaram o que fazem os produtos fechados. Combine-as e registre a fonte de cada constatação.
Onde as fontes discordam, a discordância é ela própria uma constatação: se a configuração oferece o grupo híbrido, mas a observação passiva nunca o vê negociado, algo no caminho o está removendo ou os clientes não o oferecem.
29.2 Atividade prática — Laboratório I
# Lab I (ch 29): aggregate a synthetic cryptographic bill of materials (CBOM) and measure coverage.
records = [ # (asset, function, algorithm, source)
("gateway-1", "key-exchange", "X25519MLKEM768", "passive"), ("gateway-1", "signature", "RSA-2048", "config"),
("scada-hmi", "key-exchange", "ECDHE-P256", "passive"), ("scada-hmi", "signature", "ECDSA-P256", "code"),
("billing", "key-exchange", "RSA-kex", "config"), ("billing", "data-at-rest", "AES-256-GCM", "code"),
("crane-plc", "unknown", "unknown", "none"), ("vpn", "key-exchange", "ECDHE-P384", "config")]
VULN = {"RSA-2048", "ECDHE-P256", "ECDSA-P256", "RSA-kex", "ECDHE-P384"}
assets = {r[0] for r in records}
unknown = {r[0] for r in records if r[2] == "unknown"}
vuln = [r for r in records if r[2] in VULN]
print(f"assets {len(assets)}, unknown {len(unknown)} ({100*len(unknown)/len(assets):.0f}%)")
print(f"quantum-vulnerable uses {len(vuln)}:", ", ".join(f"{a}/{f}" for a, f, _, _ in vuln))
print("hybrid key exchange present on:", [r[0] for r in records if "MLKEM" in r[2]])
Saída esperada:
assets 5, unknown 1 (20%)
quantum-vulnerable uses 5: gateway-1/signature, scada-hmi/key-exchange, scada-hmi/signature, billing/key-exchange, vpn/key-exchange
hybrid key exchange present on: ['gateway-1']
O estado desconhecido do CLP do guindaste é uma constatação, não uma lacuna a esconder: ele representa 20% deste inventário minúsculo e precisa ser resolvido por declaração do fornecedor ou por análise em bancada.
Note como o script conta usos, e não ativos: o gateway-1 tem troca de chaves híbrida, mas ainda aparece como vulnerável, porque a sua assinatura é RSA-2048, o que coincide com o ponto anterior de que a troca de chaves híbrida deixa a autenticação intocada. O AES-256-GCM do sistema de faturamento fica corretamente fora da lista de vulneráveis. Amplie os registros com um filtro pela coluna de fonte e imprima quantas constatações se apoiam apenas na configuração; depois acrescente um sexto ativo cuja fonte seja uma declaração do fornecedor e decida como relatá-lo.
29.3 Métricas
- Cobertura: ativos com pelo menos uma determinação criptográfica ÷ todos os ativos.
- Parcela desconhecida: relatada separadamente.
- Parcela híbrida negociada: conexões que negociam grupos PQ/T ÷ conexões, ponderada pela classe de dados.
- Contagem de usos vulneráveis, por função e tempo de vida dos dados.
- Tempo de substituição: dias decorridos entre a mudança de política e a negociação completa de um novo algoritmo num serviço (uma métrica de agilidade).
Ponderar a parcela híbrida pela classe de dados impede que um grande volume de telemetria de vida curta faça o progresso parecer melhor do que é para os dados aduaneiros. O tempo de substituição é a única métrica que mede diretamente a agilidade, e o exercício de mesa de quebra de algoritmo, mais adiante no livro, a utiliza. Cada métrica tem uma definição e uma fonte de dados escritas.
29.4 Manipulação
A "porcentagem migrada" pode ser inflada redefinindo os ativos ou contando a configuração em vez da negociação. Use denominadores auditáveis e publique as definições.
Uma inflação comum é retirar da lista de ativos os dispositivos difíceis de inventariar, o que eleva a cobertura sem nenhum conhecimento novo. A BPA fixa o denominador no registro de ativos mantido pelas operações, que a equipe de segurança não pode editar, e conta apenas os grupos negociados vistos nos logs de sessão. As definições são publicadas junto com cada número mensal, para que qualquer mudança de definição apareça como uma nota visível, e não como um salto inexplicado na linha de tendência.
29.5 Exemplo resolvido
O primeiro relatório do CBOM da BPA: 412 ativos, cobertura de 82%, desconhecidos 18%, 311 usos vulneráveis, negociação híbrida de 0% (antes da implantação). Seis meses depois: cobertura de 94%, desconhecidos 6%, negociação híbrida em 64% das conexões de borda, usos vulneráveis sobre dados de vida longa reduzidos de 37 fluxos para 8.
Os números contam uma história coerente: a cobertura subiu à medida que os desconhecidos caíram, e a redução de 37 fluxos expostos para 8 reflete a mudança nos quatro gateways encontrada pelo modelo, que removeu 29 deles. A negociação híbrida em 64% das conexões de borda, e não em 100%, é esperada, porque os scanners antigos e alguns clientes dos parceiros não oferecem o grupo híbrido; o relatório os lista como exceções conhecidas, com datas de substituição.
29.6 Erros comuns e limites
- Esconder os desconhecidos.
- Contar os algoritmos configurados como proteção.
- Inventários de uma só fonte.
Esconder os desconhecidos faz o inventário parecer completo enquanto sistemas como o CLP do guindaste continuam sem avaliação; o Laboratório I os relata como 20% para que não possam ser ignorados. Contar os algoritmos configurados superestima a proteção sempre que clientes ou middleboxes impedem a negociação. Um inventário construído com uma única fonte deixa escapar o que essa fonte não consegue ver, como bibliotecas ligadas estaticamente, invisíveis às varreduras de pacotes de software, ou equipamentos de fornecedores, invisíveis à varredura de código. A BPA exige pelo menos duas fontes para qualquer ativo que guarde dados de vida longa.
Nota de engenharia
Apresente as medições com os seus pontos cegos. Os sensores passivos no TLS 1.3 veem o grupo de troca de chaves negociado no ServerHello, mas não o certificado, que é cifrado; os logs dos endpoints preenchem essa lacuna, mas só onde o registro está ativado. Um bom painel mostra, portanto, ao lado de cada métrica, qual fonte a produziu e que parcela dos ativos essa fonte consegue observar. Os tomadores de decisão entendem então por que os números da migração de certificados vêm de evidências de configuração, enquanto os números da troca de chaves vêm da rede.
Exercícios
- EX057 — Ampliar o Laboratório I. Acrescente um registro de uma VPN com "IKEv2 ML-KEM-768 + ECDH" e atualize a lógica da lista de híbridos. Rubrica: 3 = o código funciona, a VPN é reconhecida como híbrida.
- EX058 — Definições de métricas. Escreva definições precisas para a cobertura e a parcela híbrida negociada. Rubrica: 3 = numerador, denominador, janela de tempo, fonte de dados.
Síntese
Medir significa um CBOM de várias fontes, métricas do negociado e não do configurado, desconhecidos explícitos e definições que resistem à manipulação.
Continue estudando — capítulo 29 de 50
← Capítulo 28 · Índice de capítulos do curso · Capítulo 30 →
Siga para a próxima lição escrita.