◇ OpenCyber Academy
Grado · Capítulo 38 · Español

Capítulo 38 — Implementación del proyecto final

Aprendizaje gratuito y abierto para quienes desean proteger a las personas y la tecnología. No se necesita una cuenta para estudiar ni consultar las respuestas.

Capítulo 38 — Implementación del proyecto final

Mapa de la lección

Lección 38 publicada. Mapa, ejemplo, EX112.

flowchart TD
  N0["Resultados de aprendizaje"]
  N1["38.1 Incrementos"]
  N2["38.2 Registros de decisiones"]
  N3["38.3 Evaluación"]
  N4["38.4 Leer la matriz de confusión"]
  N5["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX112"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje"]
  N1["38.1 Incrementos"]
  N2["38.2 Registros de decisiones"]
  N3["38.3 Evaluación"]
  N4["38.4 Leer la matriz de confusión"]
  N5["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX112"]
[Resultados de aprendizaje]
    |
    v
[38.1 Incrementos]
    |
    v
[38.2 Registros de decisiones]
    |
    v
[38.3 Evaluación]
    |
    v
[38.4 Leer la matriz de confusión]
    |
    v
[Síntesis del capítulo]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX112]

Resultados de aprendizaje

Usted podrá (1) implementar el artefacto de un proyecto final en incrementos pequeños y probados; (2) mantener un registro de cambios y un registro de decisiones; (3) evaluar el artefacto con un conjunto etiquetado mediante una matriz de confusión; y (4) comunicar la precisión y la exhaustividad con sus denominadores.

38.1 Incrementos

Construya primero la versión completa más pequeña: leer un archivo de captura, clasificar cada escritura, imprimir las decisiones. Después añada las reglas una a una, cada una con pruebas (capítulo 8) y vectores de conformidad (capítulo 27). Una herramienta pequeña que funciona en la semana 4 vale más que una ambiciosa que nunca llega a ejecutarse. La versión de la semana 4 de Maya leía una captura sintética, clasificaba cada escritura Modbus frente a la lista de permitidos del capítulo 27 e imprimía una decisión por línea. La regla de frecuencia llegó después, con sus propias pruebas, y la regla de cambio acumulado solo después de que la evaluación mostrara que no se detectaba el ataque de deriva. Cada incremento podía ejecutarse y comprobarse frente a los ocho casos etiquetados antes de empezar el siguiente.

38.2 Registros de decisiones

Cuando elija, registre por qué: «Decisión 7: tratar las escrituras durante una ventana de mantenimiento programada como benign-maint solo si el identificador de la incidencia aparece en la lista de la ventana; alternativas consideradas: regla solo horaria (rechazada: los internos podrían sincronizar sus ataques con ella)». Los registros de decisiones permiten a los examinadores seguir el razonamiento. Las decisiones posteriores de Maya siguen el mismo formato. Tras la evaluación, un registro añade una regla de cambio acumulado para el ataque de deriva no detectado, y rechaza la alternativa de un umbral menor por escritura porque marcaba los ajustes ordinarios de los operadores. Otro registra la correlación de las escrituras del HMI con los eventos de inicio de sesión de los operadores, para abordar la escritura del punto de consigna que procedía de HMI-1, un origen permitido.

38.3 Evaluación

El laboratorio evalúa la salida de un monitor en ocho casos etiquetados del 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}))

Ejecútelo con python3 lab_eval.py. Salida verificada:

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

Los ocho casos incluyen cinco ataques y tres escrituras benignas, entre ellas una escritura de mantenimiento. El laboratorio calcula la precisión y la exhaustividad a partir de las etiquetas del monitor e imprime la matriz de confusión. El conjunto es de juguete: su propósito es mostrar qué clases no detecta el monitor, y un noveno caso podría cambiar todas las tasas. Su valor está en que cada caso tiene una respuesta conocida escrita antes de ejecutar el monitor, así que una discrepancia siempre es un error del monitor o de la etiqueta, y Maya registra cuál.

38.4 Leer la matriz de confusión

Tres verdaderos positivos, un falso positivo (una escritura de mantenimiento marcada), dos falsos negativos (un ataque de punto de consigna y el ataque de deriva no detectados), dos verdaderos negativos. Precisión 3/4 = 0,75; exhaustividad 3/5 = 0,60. Ocho casos son demasiado pocos para obtener tasas precisas —un intervalo de Wilson para 3/5 abarca aproximadamente de 0,23 a 0,88—, así que el uso honesto de esta tabla es encontrar clases de fallo, no clasificar herramientas. El único falso positivo es la escritura de mantenimiento, que la decisión 7 trata como benigna solo cuando el identificador de su incidencia aparece en la lista de la ventana. Los dos fallos de detección apuntan a correcciones distintas, una regla de cambio acumulado para el ataque de deriva y la correlación con los inicios de sesión para la escritura desde HMI-1, y por eso Maya examina cada clase por separado en lugar de ajustar un único umbral.

Ejemplo resuelto (LDHP sintética)

Maya examina los dos fallos de detección. El ataque de deriva usó muchas escrituras pequeñas, cada una dentro del rango permitido: un monitor basado en reglas sin una regla de frecuencia o de tendencia no puede verlo. El ataque de punto de consigna no detectado procedía del propio HMI-1, que está en la lista de permitidos. Ambos llevan a nuevos registros de decisión: añadir una regla de cambio acumulado y correlacionar las escrituras del HMI con los eventos de inicio de sesión de los operadores.

Caso sintético — Lakeside District Heating Plant. Los ocho casos son un conjunto de juguete con fines ilustrativos.

Errores y límites

Las etiquetas solo son tan buenas como el autor del escenario; un ataque etiquetado como «benigno» corrompe todas las métricas. No ajuste las reglas con los casos de evaluación para después comunicar los mismos números.

Ejercicios — capítulo 38

Síntesis del capítulo

Implemente en incrementos probados, registre las decisiones y use los conjuntos de evaluación pequeños para encontrar clases de fallo, no para afirmar tasas.

Siga estudiando — capítulo 38 de 40

← Capítulo 37 (borrador) · Índice de capítulos del curso · Capítulo 39 (borrador) →