Mapa de la lección
Lección 06 publicada. Mapa, ejemplo, EX016.
flowchart TD
N0["Resultados de aprendizaje"]
N1["6.1 Zonas y conductos como grafo"]
N2["6.2 Búsqueda en anchura"]
N3["6.3 Aristas de corte"]
N4["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX016"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje"]
N1["6.1 Zonas y conductos como grafo"]
N2["6.2 Búsqueda en anchura"]
N3["6.3 Aristas de corte"]
N4["Síntesis del capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX016"]
[Resultados de aprendizaje]
|
v
[6.1 Zonas y conductos como grafo]
|
v
[6.2 Búsqueda en anchura]
|
v
[6.3 Aristas de corte]
|
v
[Síntesis del capítulo]
|
v
[Ejemplo resuelto] --> [Ejercicio EX016]
Resultados de aprendizaje
Usted podrá (1) modelar zonas y conductos como un grafo dirigido; (2) calcular la alcanzabilidad con búsqueda en anchura; (3) razonar sobre qué eliminación de una sola arista desconecta un nodo crítico; y (4) usar conjuntos para expresar listas de permitidos.
6.1 Zonas y conductos como grafo
IEC 62443-3-2 pide a los propietarios de activos dividir un sistema en zonas (grupos de activos que comparten requisitos de seguridad) conectadas por conductos (los canales de comunicación entre zonas). Un grafo dirigido lo captura: los nodos son zonas y las aristas son conductos en el sentido en que puede abrirse una sesión. Una ruta desde la zona corporativa hasta la zona de seguridad funcional es una cuestión de alcanzabilidad en un grafo, que resulta mecánica una vez dibujado el grafo con honestidad.
En el grafo del laboratorio, Maya registra los conductos como pares ordenados, de modo que MeterGW→SCADA y Control→SIS son aristas visibles y no líneas en un dibujo.
6.2 Búsqueda en anchura
La búsqueda en anchura (BFS) visita un nodo de inicio, después todos sus vecinos, después los vecinos de estos, y marca cada nodo visitado una sola vez. Se ejecuta en un tiempo proporcional a los nodos más las aristas, así que incluso la lista de conductos de una gran refinería se comprueba al instante. El peligro no está en el algoritmo sino en la entrada: un módem de un proveedor olvidado o un portátil con doble conexión es una arista que el diagrama omite.
"""Lab 06: reachability over a synthetic LDHP zone/conduit graph (BFS)."""
from collections import deque
CONDUITS = {"Enterprise": ["DMZ"], "DMZ": ["SCADA"], "SCADA": ["Control"],
"Control": ["SIS"], "MeterCloud": ["MeterGW"], "MeterGW": ["SCADA"], "SIS": []}
def reach(src):
seen, q = {src}, deque([src])
while q:
for n in CONDUITS.get(q.popleft(), []):
if n not in seen: seen.add(n); q.append(n)
return seen
for z in ["Enterprise", "MeterCloud", "SCADA"]:
r = sorted(reach(z) - {z}); print(f"{z:10} -> {r} SIS reachable: {'SIS' in r}")
CONDUITS["Control"] = [] # design change: SIS gets its own hardwired trip, no Control->SIS data conduit
print("after removing Control->SIS:", "SIS" in reach("Enterprise"))
Ejecútelo con python3 lab_reach.py. Salida verificada:
Enterprise -> ['Control', 'DMZ', 'SCADA', 'SIS'] SIS reachable: True
MeterCloud -> ['Control', 'MeterGW', 'SCADA', 'SIS'] SIS reachable: True
SCADA -> ['Control', 'SIS'] SIS reachable: True
after removing Control->SIS: False
En LDHP, un módem de proveedor que nadie registró o una EWS-1 conectada a la vez a la red de oficina y a la de control añadiría una arista que el laboratorio no puede conocer; la respuesta de la BFS solo es tan cierta como la lista de conductos.
6.3 Aristas de corte
Una arista cuya eliminación desconecta las zonas expuestas al atacante de la zona crítica es una arista de corte para ese par. En el laboratorio, Control→SIS es una de ellas: eliminarla hace que SIS sea inalcanzable desde Enterprise y desde MeterCloud. La ingeniería suele preferir eliminar por completo un conducto de datos hacia un sistema de seguridad funcional y confiar en disparos cableados, que es exactamente lo que representa el cambio de diseño del laboratorio. La nota de Maya añade el segundo paso: la arista MeterGW→SCADA existe solo para que facturación pueda leer los totales de caudal, así que sustituirla por una exportación unidireccional desde el historiador elimina la otra ruta de la nube de contadores hacia la zona de control.
Ejemplo resuelto (LDHP sintética)
El laboratorio muestra que la nube de contadores alcanza SIS a través de MeterGW → SCADA → Control → SIS. Maya expresa la lista de conductos como un conjunto de pares ordenados y señala que la arista MeterGW→SCADA existe solo para que facturación pueda leer los totales de caudal. Sustituirla por una exportación unidireccional desde el historiador elimina una segunda ruta; eliminar Control→SIS elimina la última.
Caso sintético — Lakeside District Heating Plant. Los nombres de las zonas y los conductos del laboratorio son inventados para que el grafo sea lo bastante pequeño como para comprobarlo a mano.
Errores y límites
La alcanzabilidad indica que puede abrirse una sesión, no que vaya a tener éxito ni lo que puede hacer. Los dibujos no dirigidos ocultan la diferencia entre «el SCADA sondea la pasarela» y «la pasarela puede conectarse al SCADA».
Ejercicios — capítulo 6
- EX016 — Seguir una BFS a mano. Enumere el orden en que la BFS desde MeterCloud visita los nodos del grafo original.
Mostrar criterios de evaluación
Rúbrica: 3 = MeterCloud, MeterGW, SCADA, Control, SIS; 2 = conjunto correcto, orden incorrecto; 1 = falta un nodo; 0 = nada. - EX017 — Un módem de proveedor omitido. Un módem de proveedor da a internet un conducto directo hacia Control. Tras el cambio de diseño del laboratorio, ¿es SIS alcanzable desde internet?
Mostrar criterios de evaluación
Rúbrica: 3 = no, Control no tiene arista saliente hacia SIS tras el cambio, pero el propio Control queda ahora expuesto; 2 = solo «no»; 1 = «sí»; 0 = nada. - EX018 — Lista de permitidos como conjunto. Exprese «HIST-1 puede leer de PLC-H; HMI-1 puede leer y escribir en PLC-H» como un conjunto de tuplas (origen, destino, acción).
Mostrar criterios de evaluación
Rúbrica: 3 = tres tuplas, nada más; 2 = algún extra menor; 1 = usa rangos de equipos; 0 = nada.
Síntesis del capítulo
Dibujar zonas y conductos como un grafo dirigido convierte los argumentos de segmentación en comprobaciones que cualquiera puede volver a ejecutar, siempre que el grafo incluya todas las aristas reales.
Siga estudiando — capítulo 06 de 40
← Capítulo 05 (borrador) · Índice de capítulos del curso · Capítulo 07 (borrador) →