◇ OpenCyber Academy
Graduação · Capítulo 38 · Português

Capítulo 38 — Implementação do trabalho de conclusão

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 38 — Implementação do trabalho de conclusão

Mapa da aula

Aula 38 publicada. Mapa, exemplo, EX112.

flowchart TD
  N0["38.1 Incrementos"]
  N1["38.2 Registros de decisão"]
  N2["38.3 Avaliação"]
  N3["38.4 Lendo a matriz de confusão"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX112"]

Desenho lógico

flowchart LR
  N0["38.1 Incrementos"]
  N1["38.2 Registros de decisão"]
  N2["38.3 Avaliação"]
  N3["38.4 Lendo a matriz de confusão"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX112"]
[38.1 Incrementos]
    |
    v
[38.2 Registros de decisão]
    |
    v
[38.3 Avaliação]
    |
    v
[38.4 Lendo a matriz de confusão]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX112]

Objetivos de aprendizagem

Você vai (1) implementar o artefato do trabalho de conclusão em incrementos pequenos e testados; (2) manter um registro de mudanças e um registro de decisões; (3) avaliar o artefato num conjunto rotulado, com uma matriz de confusão; e (4) relatar precisão e revocação com os seus denominadores.

38.1 Incrementos

Construa primeiro a menor versão de ponta a ponta: ler um arquivo de captura, classificar cada escrita, imprimir as decisões. Depois acrescente as regras uma de cada vez, cada uma com testes (Capítulo 8) e vetores de conformidade (Capítulo 27). Uma ferramenta pequena funcionando na semana 4 vale mais que uma ambiciosa que nunca roda. A versão da semana 4 de Maya lia uma captura sintética, classificava cada escrita Modbus contra a lista de permissão do Capítulo 27 e imprimia uma decisão por linha. A regra de taxa veio depois, com os seus próprios testes, e a regra de mudança cumulativa só depois que a avaliação mostrou que o ataque de deriva passava despercebido. Cada incremento podia ser executado e conferido contra os oito casos rotulados antes de o próximo começar.

38.2 Registros de decisão

Quando você escolhe, registre o porquê: "Decisão 7: tratar escritas durante uma janela de manutenção programada como benign-maint apenas se o ID do chamado aparecer na lista da janela; alternativas consideradas: regra só por horário (rejeitada: insiders poderiam cronometrar ataques)." Os registros de decisão permitem que os examinadores sigam o raciocínio. As decisões posteriores de Maya seguem o mesmo formato. Depois da avaliação, um registro acrescenta uma regra de mudança cumulativa para o ataque de deriva não detectado, com a alternativa de um limiar mais baixo por escrita rejeitada porque sinalizava ajustes comuns dos operadores. Outro registra a correlação das escritas da HMI com os eventos de login dos operadores, para tratar a escrita de setpoint que veio da HMI-1, que está na lista de permissão.

38.3 Avaliação

O laboratório avalia a saída de um monitor em oito casos rotulados do conjunto sintético de Maya.

"""Lab 38: capstone evaluation - precision/recall with denominators (synthetic results)."""
cases = [("replay", True, True), ("replay", True, True), ("setpoint", True, False), ("setpoint", True, True),
         ("benign-maint", False, True), ("benign", False, False), ("benign", False, False), ("drift", True, False)]
tp = sum(a and d for _, a, d in cases); fp = sum((not a) and d for _, a, d in cases)
fn = sum(a and not d for _, a, d in cases); tn = sum((not a) and not d for _, a, d in cases)
print(f"TP={tp} FP={fp} FN={fn} TN={tn}")
print(f"precision={tp}/{tp+fp}={tp/(tp+fp):.2f} recall={tp}/{tp+fn}={tp/(tp+fn):.2f}")
print("missed classes:", sorted({c for c, a, d in cases if a and not d}))

Execute com python3 lab_eval.py. Saída verificada:

TP=3 FP=1 FN=2 TN=2
precision=3/4=0.75 recall=3/5=0.60
missed classes: ['drift', 'setpoint']

Os oito casos incluem cinco ataques e três escritas benignas, entre elas uma escrita de manutenção. O laboratório calcula a precisão e a revocação a partir dos rótulos do monitor e imprime a matriz de confusão. O conjunto é de brinquedo: o seu propósito é mostrar quais classes o monitor deixa passar, e um nono caso poderia mudar todas as taxas. O seu valor está em que cada caso tem uma resposta conhecida, escrita antes de o monitor ser executado, de modo que uma divergência é sempre um erro do monitor ou do rótulo, e Maya registra qual dos dois.

38.4 Lendo a matriz de confusão

Três verdadeiros positivos, um falso positivo (uma escrita de manutenção sinalizada), dois falsos negativos (um ataque de setpoint e o ataque de deriva não detectados), dois verdadeiros negativos. Precisão 3/4 = 0,75; revocação 3/5 = 0,60. Oito casos são poucos demais para taxas precisas — um intervalo de Wilson para 3/5 vai de aproximadamente 0,23 a 0,88 —, então o uso honesto desta tabela é encontrar classes de falha, e não classificar ferramentas.

O único falso positivo é a escrita de manutenção, que a Decisão 7 trata como benigna apenas quando o ID do chamado aparece na lista da janela. As duas falhas apontam para correções diferentes, uma regra de mudança cumulativa para o ataque de deriva e a correlação com logins para a escrita da HMI-1, e por isso Maya examina cada classe separadamente em vez de ajustar um único limiar.

Exemplo resolvido (LDHP sintética)

Maya examina as duas falhas de detecção. O ataque de deriva usou muitas escritas pequenas, cada uma dentro da faixa da lista de permissão — um monitor baseado em regras sem uma regra de taxa ou de tendência não consegue vê-lo. O ataque de setpoint não detectado veio da própria HMI-1, que está na lista de permissão. Os dois levam a novos registros de decisão: acrescentar uma regra de mudança cumulativa e correlacionar as escritas da HMI com os eventos de login dos operadores.

Caso sintético — Lakeside District Heating Plant. Os oito casos são um conjunto de brinquedo para ilustração.

Erros e limites

Os rótulos só são tão bons quanto o autor do cenário; um ataque rotulado como "benigno" corrompe todas as métricas. Não ajuste as regras nos casos de avaliação para depois relatar os mesmos números.

Exercícios

Síntese

Implemente em incrementos testados, registre as decisões e use conjuntos de avaliação pequenos para encontrar classes de falha, e não para alegar taxas.

Continue estudando — capítulo 38 de 40

← Capítulo 37 · Índice de capítulos do curso · Capítulo 39 →

Siga para a próxima lição escrita.