◇ OpenCyber Academy
Tecnólogo · Capítulo 15 · Español

Capítulo 15 — Seguridad de TO, IoT y sistemas ciberfísicos: laboratorio guiado

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 15 — Seguridad de TO, IoT y sistemas ciberfísicos: laboratorio guiado

Mapa de la lección

Lección 15 publicada. Mapa, ejemplo, EX043.

flowchart TD
  N0["Resultados de aprendizaje"]
  N1["15.1 La pregunta del laboratorio"]
  N2["15.2 Interpretación"]
  N3["15.3 Qué cambiaría un atacante"]
  N4["15.4 Registrar el resultado"]
  N5["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX043"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje"]
  N1["15.1 La pregunta del laboratorio"]
  N2["15.2 Interpretación"]
  N3["15.3 Qué cambiaría un atacante"]
  N4["15.4 Registrar el resultado"]
  N5["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX043"]
[Resultados de aprendizaje]
    |
    v
[15.1 La pregunta del laboratorio]
    |
    v
[15.2 Interpretación]
    |
    v
[15.3 Qué cambiaría un atacante]
    |
    v
[15.4 Registrar el resultado]
    |
    v
[Síntesis del capítulo]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX043]

Resultados de aprendizaje

Usted será capaz de (1) analizar datos sintéticos de registradores en busca de desviaciones de temperatura; (2) relacionar el retardo de la alarma con la consecuencia para la seguridad alimentaria; (3) reconocer cómo cambiarían el resultado unos datos falsificados; y (4) documentar el resultado de un laboratorio con sus entradas y su salida.

15.1 La pregunta del laboratorio

¿Se mantuvo la antecámara refrigerada del Congelador 2 a 5 °C o menos y, si no, durante cuánto tiempo y saltó la alarma? El laboratorio usa diez lecturas sintéticas tomadas cada cinco minutos y una alarma que solo salta cuando una desviación dura al menos 10 minutos, un retardo que evita las alarmas molestas por la apertura de puertas.

"""Lab 15: find cold-room temperature excursions in synthetic logger data (minutes, degC)."""
readings = [(0, 2.1), (5, 2.4), (10, 3.0), (15, 5.6), (20, 7.2), (25, 8.4), (30, 6.9), (35, 4.8), (40, 3.9), (45, 2.6)]
LIMIT, ALARM_DELAY = 5.0, 10
start = None
for t, v in readings:
    if v > LIMIT and start is None: start = t
    if v <= LIMIT and start is not None:
        dur = t - start
        print(f"excursion {start}-{t} min, duration {dur} min, peak {max(x for s, x in readings if start <= s < t)} C, alarm {'raised' if dur >= ALARM_DELAY else 'not raised'} (delay {ALARM_DELAY} min)")
        start = None

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

excursion 15-35 min, duration 20 min, peak 8.4 C, alarm raised (delay 10 min)

Los datos de la antecámara son el conjunto sintético A, que Priya usó en su informe más abajo. El conjunto A tiene un muestreo de 5 minutos, un límite de 5 °C y un retardo de alarma de 10 minutos, los valores que repite su registro.

15.2 Interpretación

La desviación empezó en el minuto 15 y terminó en el 35, duró 20 minutos y alcanzó un máximo de 8,4 °C. La alarma saltó porque 20 ≥ 10. La salida también nos indica el límite de resolución: con muestras cada cinco minutos, el inicio real podría estar en cualquier punto entre los minutos 10 y 15. Esa incertidumbre de cinco minutos importa en un registro de seguridad alimentaria: un contrato con un cliente que admita desviaciones de hasta 20 minutos se cumpliría o se incumpliría según el punto de esa ventana en que la desviación empezara realmente. El informe de Priya indica una duración de 20 minutos, con un inicio incierto de hasta cinco, y deja el juicio contractual al responsable de calidad.

15.3 Qué cambiaría un atacante

Si las lecturas de los minutos 15–30 se sustituyeran por valores en torno a 4 °C, el script no informaría de ninguna desviación: el registro mostraría cumplimiento mientras la mercancía se calentaba. Por eso el escenario del capítulo 13 compara los datos de los registradores en la nube con la sonda propia del PLC en el historiador: dos registros independientes son mucho más difíciles de falsificar de forma coherente. El informe de Priya recoge como limitación la falta de esa comprobación cruzada: el conjunto sintético A no tiene una sonda de HIST con la que comparar. En los datos reales de NCS, la sonda de HIST en la antecámara sería la comprobación cruzada: una lectura del registrador que discrepe de ella es una pregunta antes que una desviación.

15.4 Registrar el resultado

Registre el archivo de entrada (o su hash), la versión del script, los parámetros de límite y retardo, y la salida. Otro tecnólogo debe poder reproducirlo exactamente. El registro de Priya, citado en el ejemplo resuelto de abajo, indica la desviación, cuánta incertidumbre tiene su inicio por el intervalo de muestreo y la comprobación de integridad que no pudo hacerse. Con el hash del archivo de entrada y el límite de 5 °C y el retardo de 10 minutos registrados, otro tecnólogo puede volver a ejecutarlo y obtener la misma línea.

Ejemplo resuelto (NCS sintética)

Priya escribe: «Laboratorio 15 sobre las lecturas de la antecámara (conjunto sintético A): una desviación de 15 a 35 min, 20 min, máximo de 8,4 °C, alarma activada con retardo de 10 min. Resolución: muestreo de 5 min, por lo que el inicio es incierto hasta 5 min. Comprobación de integridad: comparación con la sonda TT-A1 de HIST, no disponible en el conjunto sintético; recogida como limitación».

Caso sintético — Northgate Cold Storage. Todas las lecturas son inventadas.

Errores y límites

El script supone que las lecturas están ordenadas y espaciadas por igual. Una desviación que sigue en curso en la última muestra no se notifica: un error que merece la pena corregir.

Ejercicios — capítulo 15

Síntesis del capítulo

Un laboratorio guiado convierte lecturas en bruto en una afirmación reproducible y acotada, y muestra exactamente dónde se esconderían los datos falsificados.

Siga estudiando — capítulo 15 de 30

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

Respuestas desarrolladas

EX043. excursion 15-35 min, duration 20 min, peak 8.4 C, alarm not raised (delay 25 min): la desviación no cambia, pero 20 < 25.

EX044. La lectura del minuto 50 inicia una nueva desviación (start = 50), pero el bucle termina antes de que ninguna lectura vuelva a ≤ 5 °C, así que no se imprime nada. Corrección: tras el bucle, si start is not None, imprimir la desviación abierta con «en curso en la última muestra».

EX045. Comparar cada lectura del registrador con la sonda propia del PLC registrada en HIST (o con un segundo registrador en la misma sala) y señalar cualquier intervalo en que difieran más de una tolerancia acordada, por ejemplo 2 °C.