Mapa de la lección
Lección 27 publicada. Mapa, ejemplo, EX053.
flowchart TD
N0["Resultados de aprendizaje y conexión"]
N1["27.1 Verificación y validación"]
N2["27.2 Tipos de prueba"]
N3["27.3 Evaluar detectores"]
N4["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX053"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje y conexión"]
N1["27.1 Verificación y validación"]
N2["27.2 Tipos de prueba"]
N3["27.3 Evaluar detectores"]
N4["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX053"]
[Resultados de aprendizaje y conexión]
|
v
[27.1 Verificación y validación]
|
v
[27.2 Tipos de prueba]
|
v
[27.3 Evaluar detectores]
|
v
[Síntesis del capítulo]
|
v
[Ejemplo resuelto] --> [Ejercicio EX053]
Resultados de aprendizaje y conexión
Después de este capítulo usted podrá (1) distinguir la verificación («construido correctamente») de la validación («se construyó lo correcto») en los controles de seguridad; (2) diseñar una prueba que pueda mostrar que un control no funciona; (3) evaluar un detector mediante la precisión y la exhaustividad y elegir un umbral con compromisos explícitos; y (4) informar de los resultados de la verificación con sus condiciones y límites. Se apoya en los capítulos 8, 12, 15 y 24 y prepara el capítulo 29 (operaciones) y el Laboratorio II (capítulo 30).
27.1 Verificación y validación
La verificación comprueba que un control hace lo que dice su especificación: el cortafuegos bloquea el puerto 3389 desde la red corporativa hacia la de control; el validador de puntos de consigna rechaza NaN. La validación comprueba que el control logra su propósito en el entorno real: los usuarios corporativos no pueden alcanzar los sistemas de control por ninguna ruta; los operadores no pueden enviar puntos de consigna inseguros. Un control puede superar la verificación y fallar la validación (la regla del cortafuegos funciona, pero un portátil de ingeniería con doble conexión la elude). Una buena verificación es falsable: está diseñada para que un control defectuoso no supere la prueba. Una prueba que se superaría tanto si el control funciona como si no, no demuestra nada.
27.2 Tipos de prueba
La revisión de la configuración compara los ajustes con una línea base. Las pruebas funcionales ejercitan el control con entradas esperadas y prohibidas (las pruebas de límites del capítulo 8). Las pruebas de flujo confirman que las rutas no permitidas están bloqueadas (capítulo 7, con autorización). Los simulacros de restauración verifican de extremo a extremo los controles de recuperación (capítulo 15). Las pruebas de detección reproducen actividad sintética etiquetada o benigna pero sospechosa para ver si la supervisión genera alertas. En la TO, las pruebas sobre el proceso en producción están restringidas; use bancos de pruebas, réplicas fuera de línea o ventanas planificadas acordadas con operaciones. Para la regla de CW entre la red corporativa y la de control, una prueba de flujo desde un equipo corporativo autorizado hacia direcciones de control en una ventana planificada es funcional; una revisión de la configuración por sí sola no lo es.
27.3 Evaluar detectores
Un detector produce puntuaciones; un umbral las convierte en alertas. Compare las alertas con las etiquetas de la verdad de referencia: verdaderos positivos (TP), falsos positivos (FP), falsos negativos (FN). Precisión = TP/(TP+FP): de las alertas, ¿cuántas eran reales? Exhaustividad = TP/(TP+FN): de los eventos reales, ¿cuántos se detectaron? Subir el umbral suele aumentar la precisión y reducir la exhaustividad. Con eventos maliciosos raros (la tasa base del capítulo 12), la precisión puede ser mala incluso con tasas de error por evento excelentes. Elija un umbral preguntándose cuánto le cuesta al servicio cada omisión y cada falsa alarma, y recuerde que los datos de evaluación etiquetados rara vez coinciden con las condiciones reales (Arp et al., 2022).
27.4 Ejemplo resuelto y Lab 10 (sintético)
Este caso es sintético. Calder Mutual evalúa un detector de anomalías sobre 5025 eventos etiquetados, 25 de ellos maliciosos (semilla 10).
# Lab 10 - detection evaluation on a labelled synthetic event set (offline)
import random
random.seed(10)
events = [] # (score from a detector, truly malicious?)
for _ in range(5000):
events.append((random.gauss(0.30, 0.12), False))
for _ in range(25):
events.append((random.gauss(0.70, 0.15), True))
for thr in (0.5, 0.6, 0.7):
tp = sum(1 for s, m in events if s >= thr and m)
fp = sum(1 for s, m in events if s >= thr and not m)
fn = sum(1 for s, m in events if s < thr and m)
prec = tp / (tp + fp) if tp + fp else 0
print(f"threshold {thr}: TP={tp:2} FP={fp:3} FN={fn:2} precision={prec:.2f} recall={tp/(tp+fn):.2f}")
Salida esperada:
threshold 0.5: TP=23 FP=215 FN= 2 precision=0.10 recall=0.92
threshold 0.6: TP=20 FP= 36 FN= 5 precision=0.36 recall=0.80
threshold 0.7: TP=18 FP= 2 FN= 7 precision=0.90 recall=0.72
Con 0,5, el equipo detecta 23 de 25, pero tiene que abrirse paso entre 215 falsas alertas; con 0,7, casi todas las alertas son reales, pero se pasan por alto 7 ataques. Ninguno es «correcto». Una elección defendible podría usar 0,7 para avisar al analista de guardia y 0,5 para una cola de revisión diaria: dos umbrales para dos costes. El informe declara las condiciones: puntuaciones sintéticas, una sola semilla, 25 positivos (por lo que las estimaciones de exhaustividad son gruesas; capítulo 37) y una similitud desconocida con el tráfico real.
27.5 Errores comunes y límites
- Pruebas que no pueden fallar.
- Informar de la exactitud con datos desequilibrados (aquí, un 99,5 % de «exactitud» sin alertar nunca).
- Elegir umbrales sin declarar los costes.
- Evaluar con datos que se parecen más a los de entrenamiento que a la realidad.
- Verificar en un laboratorio y afirmar la validación en producción.
El Lab 10 muestra numéricamente el segundo error: no alertar nunca obtiene un 99,5 % de exactitud. Elegir 0,5 o 0,7 sin decir cuánto cuesta un ataque no detectado o 215 falsas alertas adicionales es el tercero. Una regla de cortafuegos probada solo desde la réplica del laboratorio es el quinto. Una prueba que informaría de «bloqueado» porque el equipo de prueba estaba apagado es el primero.
Ejercicios — capítulo 27
EX053 — Hágala falsable. Objetivo: diseñar una prueba significativa. Entradas: la afirmación «el cortafuegos de CW impide que los usuarios corporativos alcancen la zona de control». Pasos: diseñe una prueba de verificación y una de validación, cada una con un resultado que demostraría que la afirmación es falsa, y la autorización necesaria. Evidencia esperada: dos diseños de prueba. Rúbrica: 3 = prueba a nivel de regla desde un equipo corporativo hacia las direcciones de control en todos los puertos en una ventana planificada, más una validación que busca rutas alternativas (equipos con doble conexión, acceso remoto, inalámbrico) mediante la revisión de la configuración y de los flujos; autorización declarada; 2 = una prueba; 1 = no falsable; 0 = nada.
EX054 — La trampa de la exactitud. Objetivo: ver por qué la exactitud induce a error. Entradas: el Lab 10. Pasos: calcule la exactitud para el umbral 0,7 y para un detector que nunca alerta; explique por qué ambos parecen «excelentes». Evidencia esperada: dos números y una explicación. Rúbrica: 3 = (5025−2−7)/5025 ≈ 0,9982 y 5000/5025 ≈ 0,9950; explica el desequilibrio de clases y recomienda la precisión y la exhaustividad; 2 = solo los números; 1 = un número; 0 = nada.
Síntesis del capítulo
La verificación pregunta si un control funciona según lo especificado; la validación pregunta si logra su propósito. Diseñe pruebas que puedan fallar, evalúe los detectores con la precisión y la exhaustividad en umbrales elegidos según costes declarados, e informe de las condiciones y los límites junto con los números.