El Sistema Operativo Extremadamente Confiable ( EROS ) es un sistema operativo desarrollado a partir de 1991 en la Universidad de Pensilvania , y posteriormente en la Universidad Johns Hopkins y The EROS Group, LLC. Sus características incluyen persistencia automática de datos y procesos , cierto soporte preliminar en tiempo real y seguridad basada en capacidades . EROS es un sistema operativo puramente de investigación y nunca se implementó en un entorno real. A partir de 2005El desarrollo se detuvo en favor de un sistema sucesor, CapROS.
Conceptos clave
El objetivo principal del sistema EROS (y sus variantes) es brindar un sólido soporte a nivel del sistema operativo para la reestructuración eficiente de aplicaciones críticas en pequeños componentes comunicantes. Cada componente solo puede comunicarse con los demás a través de interfaces protegidas y está aislado del resto del sistema. Una interfaz protegida , en este contexto, es aquella que impone el núcleo , la parte más baja del sistema operativo . Este es el único componente del sistema que puede transferir información de un proceso a otro. Además, tiene el control total de la máquina y (si está correctamente construido) no puede ser eludido. En EROS, el mecanismo proporcionado por el núcleo mediante el cual un componente nombra e invoca los servicios de otro es una capacidad , que utiliza la comunicación entre procesos (IPC). Al imponer interfaces protegidas por capacidades, el núcleo garantiza que todas las comunicaciones a un proceso lleguen a través de una interfaz exportada intencionalmente. También garantiza que ninguna invocación sea posible a menos que el componente invocador posea una capacidad válida para el componente invocado. La protección en los sistemas de capacidades se logra restringiendo la propagación de capacidades de un componente a otro, a menudo mediante una política de seguridad denominada confinamiento .
Los sistemas de capacidades promueven de forma natural una estructura de software basada en componentes. Este enfoque organizativo es similar al concepto de programación orientada a objetos , pero se aplica a un nivel de granularidad mayor y no incluye el concepto de herencia . Cuando el software se reestructura de esta manera, surgen varios beneficios:
- Los componentes individuales se estructuran de forma más natural como bucles de eventos . Ejemplos de sistemas que suelen estructurarse de esta manera incluyen los sistemas de control de vuelo de aeronaves (véase también DO-178B Consideraciones de software en la certificación de sistemas y equipos aerotransportados ) y los sistemas de conmutación telefónica (véase el conmutador 5ESS ). La programación orientada a eventos se elige para estos sistemas principalmente por su simplicidad y robustez, atributos esenciales en sistemas críticos para la vida y la misión.
- Los componentes se vuelven más pequeños y se pueden probar individualmente, lo que ayuda a aislar e identificar fallos y errores con mayor facilidad.
- El aislamiento de cada componente respecto de los demás limita el alcance de cualquier daño que pueda producirse cuando algo falla o el software funciona incorrectamente.
En conjunto, estos beneficios dan como resultado sistemas notablemente más robustos y seguros. El sistema Plessey 250 fue diseñado originalmente para su uso en centrales telefónicas, y su diseño basado en capacidades se eligió específicamente por razones de robustez.
A diferencia de muchos sistemas anteriores, en EROS las capacidades son el único mecanismo para nombrar y utilizar recursos, lo que lo convierte en lo que a veces se denomina un sistema de capacidades puro . En cambio, IBM i es un ejemplo de un sistema de capacidades comercialmente exitoso, pero no es un sistema de capacidades puro.
Las arquitecturas de capacidades puras se sustentan en modelos de seguridad matemática maduros y bien probados. Estos se han utilizado para demostrar formalmente que los sistemas basados en capacidades pueden ser seguros si se implementan correctamente. Se ha demostrado que la denominada "propiedad de seguridad" es decidible para sistemas de capacidades puras (véase Lipton ). El confinamiento, que es el bloque de construcción fundamental del aislamiento, se ha verificado formalmente como aplicable por sistemas de capacidades puras [ 1 ] y se reduce a la implementación práctica mediante el constructor EROS y la fábrica KeyKOS . No existe una verificación comparable para ningún otro mecanismo de protección primitivo. Existe un resultado fundamental en la literatura que muestra que la seguridad es matemáticamente indecidible en el caso general (véase HRU , pero tenga en cuenta que, por supuesto, es demostrable para un conjunto ilimitado de casos restringidos [ 2 ] ). De mayor importancia práctica, se ha demostrado que la seguridad es falsa para todos los mecanismos de protección primitivos incluidos en los sistemas operativos comerciales actuales. La seguridad es una condición previa necesaria para la aplicación exitosa de cualquier política de seguridad. En términos prácticos, este resultado significa que, en principio, no es posible proteger los sistemas comerciales actuales, pero sí es potencialmente posible proteger los sistemas basados en capacidades, siempre que se implementen con el debido cuidado. Ni EROS ni KeyKOS han sido vulnerados con éxito, y sus mecanismos de aislamiento nunca han sido superados por ningún atacante interno, pero se desconoce si ambas implementaciones fueron lo suficientemente cuidadosas. Uno de los objetivos del proyecto Coyotos era demostrar que el aislamiento y la seguridad de los componentes se han logrado de forma definitiva mediante la aplicación de técnicas de verificación de software.
El sistema L4.sec, sucesor de la familia de microkernels L4 , es un sistema basado en capacidades y ha sido influenciado significativamente por los resultados del proyecto EROS. La influencia es mutua, ya que el trabajo de EROS sobre la invocación de alto rendimiento estuvo fuertemente motivado por los éxitos de Jochen Liedtke con la familia de microkernels L4 .
Historia
El desarrollador principal de EROS fue Jonathan S. Shapiro. También fue la fuerza impulsora detrás de Coyotos, que fue un "paso evolutivo" [ 3 ] más allá del sistema operativo EROS. [ 4 ]
El proyecto EROS comenzó en 1991 como una reconstrucción en un entorno controlado de un sistema operativo anterior, KeyKOS . KeyKOS fue desarrollado por Key Logic, Inc., y fue una continuación directa del trabajo realizado en el sistema anterior Great New Operating System In the Sky ( GNOSIS ), creado por Tymshare, Inc. Las circunstancias que rodearon la desaparición de Key Logic en 1991 hicieron que la concesión de licencias de KeyKOS resultara inviable. Dado que KeyKOS no funcionaba en procesadores comerciales comunes, se decidió reconstruirlo a partir de la documentación disponible públicamente.
A finales de 1992, quedó claro que la arquitectura de los procesadores había cambiado significativamente desde la introducción del concepto de capacidad, y ya no era evidente que los sistemas estructurados en componentes fueran prácticos. Los sistemas basados en microkernels , que también favorecen un gran número de procesos y la comunicación entre procesos (IPC), se enfrentaban a graves problemas de rendimiento, y no estaba claro si estos podrían resolverse con éxito. La arquitectura x86 se estaba consolidando como la dominante, pero la elevada latencia de transición usuario/supervisor en los procesadores 386 y 486 planteaba serios desafíos para el aislamiento basado en procesos. El proyecto EROS se estaba convirtiendo en un proyecto de investigación y se trasladó a la Universidad de Pensilvania para convertirse en el foco de la tesis doctoral de Shapiro. En 1999, se demostró una implementación de alto rendimiento para el procesador Pentium que era directamente competitiva en rendimiento con la familia de microkernels L4 , conocida por su excepcional velocidad en IPC. El mecanismo de confinamiento de EROS se había verificado formalmente, creando así un modelo formal general para sistemas de capacidad seguros.
En 2000, Shapiro se unió al profesorado de Ciencias de la Computación de la Universidad Johns Hopkins. En Hopkins, el objetivo era demostrar cómo utilizar las herramientas proporcionadas por el núcleo EROS para construir servidores seguros y defendibles a nivel de aplicación. Financiado por la Agencia de Proyectos de Investigación Avanzada de Defensa y el Laboratorio de Investigación de la Fuerza Aérea , EROS se utilizó como base para un sistema de ventanas confiable, [ 5 ] una pila de red de alto rendimiento y defendible, [ 6 ] y los inicios de un navegador web seguro. También se utilizó para explorar la efectividad de la verificación estática ligera. [ 7 ] En 2003, se descubrieron algunos problemas de seguridad muy complejos [ 8 ] que son intrínsecos a cualquier arquitectura de sistema basada en primitivas IPC síncronas (en particular, incluyendo EROS y L4). El trabajo en EROS se detuvo en favor de Coyotos, que resolvió estos problemas.
A partir de 2006EROS y sus sucesores son los únicos sistemas de capacidades ampliamente disponibles que se ejecutan en hardware estándar.
Estado
El trabajo en EROS y Coyotos por parte del grupo original se ha detenido, pero existe un sistema sucesor. [ 4 ] CapROS (Capability Based Reliable Operating System), sucesor de EROS, es un sistema operativo de código abierto y orientado comercialmente. [ 9 ]
Véase también
Referencias
- ↑ Shapiro, Jonathan S.; Weber, Samuel (29 de octubre de 1999). Verificación del mecanismo de confinamiento de EROS (PDF) . Simposio IEEE de 2000 sobre seguridad y privacidad. Berkeley, CA, EE. UU. doi : 10.1109/SECPRI.2000.848454 .
- ↑ Lee, Peter. "Código portador de prueba" . Archivado del original el 22 de septiembre de 2006.
- ↑ Shapiro, Jonathan (2 de abril de 2006). "Diferencias entre Coyotos y EROS: un resumen rápido" . Archivado del original el 21 de julio de 2012.
- 1 2 Shapiro, Jonathan S. (7 de abril de 2009). "Estado de Coyotos" . coyotos-dev (Lista de correo). Archivado del original el 24 de julio de 2014. Recuperado el 16 de marzo de 2022.
El trabajo activo en Coyotos se detuvo hace varios meses y es poco probable que se reanude.
- ↑ Shapiro, Jonathan S.; Vanderburgh, John; Northup, Eric; Chizmadia, David (2004). Diseño del sistema de ventanas de confianza EROS (PDF) . XIII Simposio de Seguridad USENIX. San Diego, CA, EE. UU.
- ↑ Sinha, Anshumal; Sarat, Sandeep; Shapiro, Jonathan S. (2004). Subsistemas de red recargados: un subsistema de red de alto rendimiento y defendible (PDF) . Conferencia técnica anual USENIX 2004. Boston, MA, EE. UU.
- ↑ Chen, Hao; Shapiro, Jonathan S. "Uso de la comprobación estática integrada en la compilación para preservar los invariantes de corrección" (PDF) . Archivado del original (PDF) el 3 de marzo de 2016.
- ↑ Shapiro, Jonathan S. (2003). Vulnerabilidades en diseños IPC síncronos (PDF) . Simposio de 2003 sobre seguridad y privacidad. Berkeley, CA, EE. UU. doi : 10.1109/SECPRI.2003.1199341 .
- ↑ Chakraborty, Pinaki (2010). "Sistemas operativos para fines de investigación : un amplio estudio". GESJ: Ciencias de la Computación y Telecomunicaciones . 3 (26). ISSN 1512-1232 .
Revistas
- Lipton, RJ; Snyder, L. (julio de 1977). "Un algoritmo de tiempo lineal para decidir la seguridad del sujeto" . Journal of the ACM . 24 (3): 455– 464. doi : 10.1145/322017.322025 . S2CID 291367 .
- Harrison, Michael A.; Ruzzo, WL; Ullman, Jeffrey D. (agosto de 1976). "Protección en sistemas operativos" . Communications of the ACM . 19 (8): 461– 471. doi : 10.1145/360303.360333 . S2CID 5900205 .
Enlaces externos
- Página principal de EROS en la Wayback Machine (archivada el 4 de marzo de 2016)
- Micronúcleos
- Sistemas operativos en tiempo real
- Sistemas de capacidad
- Sistemas operativos X86