◇ OpenCyber Academy
Ingeniería · Capítulo 41 · Español

Capítulo 41 — Seguridad de TO, IoT y sistemas ciberfísicos: optimización del sistema

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 41 — Seguridad de TO, IoT y sistemas ciberfísicos: optimización del sistema

Mapa de la lección

Lección 41 publicada. Mapa, ejemplo, EX121.

flowchart TD
  N0["Resultados de aprendizaje"]
  N1["41.1 Primero, perfilar"]
  N2["41.2 Preservar las restricciones"]
  N3["41.3 Veto de seguridad funcional"]
  N4["Nota práctica"]
  N5["41.1b Descarte de carga y N+1"]
  N6["Nota de campo: párrafo de seguridad funcional"]
  N7["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX121"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje"]
  N1["41.1 Primero, perfilar"]
  N2["41.2 Preservar las restricciones"]
  N3["41.3 Veto de seguridad funcional"]
  N4["Nota práctica"]
  N5["41.1b Descarte de carga y N+1"]
  N6["Nota de campo: párrafo de seguridad funcional"]
  N7["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX121"]
[Resultados de aprendizaje]
    |
    v
[41.1 Primero, perfilar]
    |
    v
[41.2 Preservar las restricciones]
    |
    v
[41.3 Veto de seguridad funcional]
    |
    v
[Nota práctica]
    |
    v
[41.1b Descarte de carga y N+1]
    |
    v
[Nota de campo: párrafo de seguridad funcional]
    |
    v
[Síntesis del capítulo]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX121]

Resultados de aprendizaje

Usted podrá (1) perfilar de forma ética las canalizaciones de seguridad de TO; (2) optimizar respetando las restricciones de tiempo de ciclo y de las ROE; (3) rechazar optimizaciones que debiliten la seguridad funcional.

41.1 Primero, perfilar

Mida a dónde va el tiempo: decodificación, evaluación del permiso, escritura del evento. Optimice el término dominante. Solo carga sintética. En ABP, Lena perfiló el monitor en el banco de pruebas antes de aprobar cualquier optimización. Reproduciendo un día grabado de tráfico de la línea troncal, midió cuánto tardaban la decodificación, la evaluación del permiso y la escritura del evento, y descubrió que dominaba la escritura del evento. Agrupar las escrituras redujo la latencia total sin cambiar ni una sola regla de permiso. Usa solo carga sintética o reproducida, porque perfilar contra equipos reales añadiría exactamente el riesgo que el monitor existe para reducir, y la copia de banco del PLC-A se comporta de forma suficientemente parecida para el trabajo de temporización.

41.2 Preservar las restricciones

Almacenar en caché AllowListVersion es correcto si la invalidación al publicar es correcta. Almacenar en caché decisiones de permiso entre estaciones no lo es: las estaciones difieren. En el CNHP, la lista de permitidos se guarda en caché en memoria con su número de versión, y cada publicación vacía la caché antes de usar la nueva versión, para que no persistan reglas obsoletas. Se rechazó almacenar en caché decisiones individuales, porque el HMI-1 y la estación de ingeniería tienen permitidos registros distintos, y una decisión almacenada para uno sería errónea para el otro. Las pruebas de Lena incluyen una publicación con carga alta para confirmar que la primera decisión después de publicar siempre usa la nueva versión.

41.3 Veto de seguridad funcional

Cualquier optimización del monitor que omita las comprobaciones de la lista de permitidos, acorte los campos de auditoría o falle de forma abierta se rechaza, sea cual sea el tiempo de ciclo que ahorre.

"""Lab: does a polling schedule fit the PLC scan/communication budget? (synthetic)"""
link_bps = 115200; bits_per_byte = 10           # RS-485 serial, 8N1 + start bit
polls = [("T-1 level", 8), ("T-2 level", 8), ("R-101 block", 40), ("pump status", 8), ("historian sweep", 120)]
overhead = 12                                    # bytes of request+framing per poll (assumed)
total = sum(n + overhead for _, n in polls)
t = total * bits_per_byte / link_bps
print(f"bytes per cycle={total} time per cycle={t*1000:.1f} ms")
for target in (100, 50):
    print(f"cycle budget {target} ms -> {'fits' if t*1000 <= target else 'OVERRUN'}")

Salida esperada:

bytes per cycle=244 time per cycle=21.2 ms
cycle budget 100 ms -> fits
cycle budget 50 ms -> fits

Caso sintético — Ashford Batch Plant. Almacenar en caché en memoria las listas de permitidos firmadas redujo la latencia; la invalidación al publicar mantuvo la seguridad funcional. Se vetó una propuesta para omitir las comprobaciones de registros en los HMI conocidos como fiables.

Lena registra en ABP cada propuesta vetada con su mejora de velocidad esperada y el motivo del rechazo. El registro de decisiones evita que la misma idea se reabra cada trimestre sin nuevos argumentos de seguridad funcional.

41.4 Errores y límites

Las pruebas de rendimiento en portátiles no predicen las líneas troncales de planta. En ABP, un decodificador que funcionaba con holgura en el portátil de un desarrollador se quedó atrás cuando Lena lo probó en la copia de banco de la línea troncal RS-485 con la temporización y los tamaños de trama reales. Los portátiles tienen procesadores más rápidos y ninguno de los límites de temporización serie que importan en la planta. Lena solo acepta ahora cifras de rendimiento del banco de pruebas, y cada informe indica el ciclo de sondeo de 21 ms de la línea troncal y la parada de 50 ms junto al resultado medido, para que los lectores puedan juzgar el margen.

Nota práctica

Las propuestas de optimización requieren un párrafo de seguridad funcional. Las propuestas que no lo tienen se devuelven sin leer.

41.1b Descarte de carga y N+1

Ante una sobrecarga, descarte el trabajo de descubrimiento antes que la evaluación de denegaciones. Las actualizaciones de tickets excesivas durante una importación masiva aplastan el almacén de hallazgos: agrupe las escrituras y mida. Mantenga margen dentro del presupuesto de tiempo de ciclo para que una tormenta de reintentos no lo supere. El orden de descarte de carga está escrito en el procedimiento, para que el responsable de la ventana sepa qué trabajo se pausa primero. Las revisiones de Lena aplican cada regla. En ABP, Lena probó la sobrecarga reproduciendo el tráfico al triple de velocidad: el descubrimiento se pausó primero, mientras las decisiones de denegación continuaban a pleno ritmo y quedaban muy por debajo del presupuesto de ciclo.

Nota de campo: párrafo de seguridad funcional

Una solicitud de incorporación de cambios de optimización que eliminaba los códigos de motivo de los registros de la ruta crítica para ahorrar microsegundos se devolvió sin leer por carecer de párrafo de seguridad funcional. La versión revisada conservó los códigos y encontró la mejora en otra parte. Los párrafos de seguridad funcional no son burocracia; son el mecanismo de veto.

La reproducción de sobrecarga se repite después de cada versión que toca el decodificador.

41.5 Ejemplo resuelto: optimización con veto de seguridad funcional (ABP sintética)

Producción pide acortar el lote del R-101 aumentando el caudal de alimentación, y pide al CNHP que relaje el límite de frecuencia de la función de permiso para escrituras de consigna, de una cada 10 s a una por segundo, para adaptarse a la receta más rápida. Lena perfila primero: solo la fase de carga necesita escrituras más rápidas. Propone un límite específico de fase, aplicado solo mientras el estado del lote es «carga», y lo somete al ingeniero de seguridad de procesos, que confirma que los disparos por alta temperatura y alto nivel del SIS-B no se ven afectados. El ingeniero de seguridad funcional tiene derecho de veto sobre cualquier optimización que toque un lazo relevante para la seguridad; esta se aprobó, con una prueba de carga en el banco de pruebas.

Ejercicios — capítulo 41

Síntesis del capítulo

Velocidad dentro de las restricciones; la seguridad funcional tiene derecho de veto.

Siga estudiando — capítulo 41 de 50

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