Sistemas operativos de tiempo real, bastionado y funcionamiento

Fecha de publicación 25/07/2019
Autor
INCIBE (INCIBE)
Reloj

Los sistemas de control industrial (SCI) llevan a cabo procesos muy variados que son realizados por equipos muy diversos. Algunos de estos procesos, por su naturaleza, implican requisitos de tiempos y aplicaciones de tiempo real, por lo que emplean sistemas operativos de tiempo real. Unos ejemplos pueden ser las rotativas de una imprenta, que requieren de unos tiempos muy precisos y determinados para aplicar los colores en los momentos adecuados a cada página; o una máquina herramienta destinada a la fabricación de una pieza concreta, que debe finalizar cada pieza en un tiempo concreto, por ejemplo 2 piezas al segundo.

Sistemas operativos de tiempo real vs. Sistemas de propósito general

Los sistemas operativos de tiempo real son un tipo concreto de sistema desarrollado para ejecutar aplicaciones que disponen de algún tipo de restricción temporal. Estas aplicaciones se caracterizan por poseer unos requisitos específicos de ejecución y tiempo de respuesta, ya sea la de ejecutar las acciones en menos de un tiempo predefinido o la de ejecutarlas a intervalos determinados.

Sistemas embebidos de tiempo real

- División de sistemas operativos -

Principalmente, los SOTR (Sistemas Operativos de Tiempo Real, RTOS en inglés) presentan requisitos especiales, que les diferencian del resto, en 5 áreas específicas:

  • Determinismo: se conoce como sistema operativo determinista al que realiza las acciones dentro de un intervalo de tiempo concreto o acotado. Un sistema operativo de propositivo general no puede garantizar el determinismo.

Respuesta en tiempo de los SOTR y los SOPG

- Respuesta en tiempo de los SOTR y los SOPG -

  • Sensibilidad: la sensibilidad de un sistema operativo es el tiempo que tarda en reconocer una interrupción e iniciar la rutina de su tratamiento (ISR - Interrupt Service Routine, rutina de servicio de interrupción). Por regla general, un SOTR será más sensible al inicio de esta rutina.
  • Control de usuario: los usuarios poseen un mayor control sobre los procesos.
  • Fiabilidad: mediante watchdogs que se encargan de reiniciar cualquier proceso que falle.
  • Tolerancia a fallos: están diseñados para responder de manera adecuada ante varias formas de fallo, incluso concurrentes.

Para poder satisfacer estos requisitos, los SOTR implementan las siguientes características:

  • Soporte para la planificación de los procesos: soporte para la creación, planificación y borrado de múltiples procesos en contraparte de un SO general, en el cual, es él mismo el que determina el orden de ejecución de los procesos.
  • Planificación de los procesos por prioridad: los procesos de mayor prioridad siempre se van a ejecutar antes que los procesos de menor prioridad, aunque lleven menos tiempo de espera en la cola o ya haya empezado a ejecutarse otro de menor prioridad. En los SO generales, normalmente, si un proceso se está ejecutando se debe esperar a su finalización para que pase a ejecución el de mayor prioridad.
  • Respuesta ante interrupciones garantizada: reconocen rápidamente la aparición de una interrupción o un evento y toman una acción determinística ante dicho evento.
  • Comunicación entre procesos: las comunicaciones entre procesos están soportadas de una manera precisa y estable, empleando mecanismos como el uso de semáforos, el paso de mensajes y el uso de memoria compartida.
  • Adquisición de datos a alta velocidad: siendo capaces de utilizar conjuntos de datos a una alta velocidad de adquisición, proporcionando los medios necesarios para optimizar el almacenamiento en disco.
  • Soporte de E/S: debido a que las aplicaciones de tiempo real acostumbran a incluir cierto número de interfaces de entrada/salida, los SOTR proporcionan las herramientas necesarias para incorporar dispositivos de E/S específicos. Además, un SOTR realiza la E/S de forma asíncrona, de manera que un proceso puede iniciar una operación de E/S y continuar su ejecución concurrentemente a la operación de E/S.
  • Control de los recursos del sistema por parte del usuario: se proporciona a los usuarios el control específico de los recursos del sistema, como son la CPU, memoria y recursos de E/S.

Es necesario conocer bien el funcionamiento de estos sistemas y lo que pueden aportar, ya que solamente si tenemos en cuenta sus características particulares, podremos llevar a cabo un bastionado correcto.

Medidas de bastionado de sistemas operativos de tiempo real

Como cualquier sistema operativo, en los SOTR es posible llevar a cabo algunas acciones y configuraciones que permiten elevar y mejorar la seguridad del dispositivo. Sin embargo, antes de aplicar cualquiera de estas medidas de bastionado, será necesario estudiar su impacto en el funcionamiento del sistema. Las aplicaciones de tiempo real poseen requisitos de tiempo de respuesta muy específicos, los cuales no pueden verse afectados por ninguna de estas medidas, es por ello que, aunque estas medidas a priori parezcan comunes a un sistema operativo de propósito general, su impacto en el funcionamiento del sistema no es el mismo. Las medidas de seguridad a seguir son:

  • Realizar un particionado del sistema: los principales componentes del sistema pueden ser separados en diferentes particiones de manera que en caso de comprometerse una parte del sistema no afecte al resto de las particiones.
  • Habilitar el arranque seguro: si es posible, es recomendable habilitar el arranque seguro de los dispositivos de manera que la imagen de arranque esté firmada criptográficamente con un identificador que el hardware contraste durante el proceso de arranque del dispositivo.
  • Deshabilitar todos los servicios innecesarios: es recomendable realizar un estudio de todos los servicios habilitados en el dispositivo y deshabilitar aquellos que no sean estrictamente necesarios.
  • Habilitar autenticación de los usuarios y niveles de privilegios: los accesos al dispositivo deben seguir un proceso de autenticación y se deben habilitar distintos niveles de privilegios para los usuarios según los requisitos de su operación.
  • Evitar la ejecución de aplicaciones con permisos de administrador: siempre que sea posible las aplicaciones se ejecutarán con privilegios de usuario.
  • Asegurar las comunicaciones: siempre que sea posible, y no afecte a la operación de los dispositivos, habilitar el cifrado de las comunicaciones. Hoy en día, algunas CPU tienen aceleración por hardware que permite el uso de librerías criptográficas sin impacto en el uso de CPU. Si no es posible habilitar este cifrado es recomendable estudiar el uso de túneles VPN para asegurar las comunicaciones.
  • Habilitar el cortafuegos del sistema operativo: los SOTR más modernos implementan un cortafuegos a nivel de SO lo cual eleva aún más su seguridad respecto a los sistemas operativos más antiguos. 

Conclusiones

Los sistemas operativos de tiempo real son un subconjunto que cuenta con unas particularidades específicas dentro de los sistemas operativos de los sistemas de control. Al igual que aplicaríamos medidas de seguridad en los equipos ejecutando un sistema operativo de propósito general, hemos de asegurarnos también de aplicar medidas en los equipos ejecutando sistemas operativos de tiempo real, siempre tras un estudio previo de su impacto y sin olvidarnos de las necesidades particulares de los mismos, garantizado así un nivel de seguridad mayor en todos los equipos de nuestras instalaciones.