Genode es un marco de sistema operativo (SO) de software libre y de código abierto que consta de una capa de abstracción de microkernel y un conjunto de componentes de espacio de usuario . [4] [5] [6] El marco es notable como uno de los pocos sistemas operativos de código abierto que no se deriva de un SO propietario, como Unix . La filosofía de diseño característica es que una pequeña base informática confiable es la principal preocupación en un sistema operativo orientado a la seguridad.
Desarrollador | Laboratorios Genode |
---|---|
Escrito en | C ++ |
Estado de trabajo | Actual |
Modelo fuente | Fuente abierta |
Versión inicial | 2008 |
Último lanzamiento | 21.05 [1] / 31 de mayo de 2021 |
Repositorio | |
Objetivo de marketing | Computadoras de escritorio Sistemas integrados |
Disponible en | inglés |
Plataformas | BRAZO , RISC-V , [2] x86 , x86-64 [3] |
Tipo de grano | Microkernel |
Userland | Genode, POSIX |
Licencia | AGPL-3.0 solo y comercial |
Página web oficial | https://genode.org/ |
Genode se puede utilizar como base para un sistema operativo de computadora de escritorio [7] [8] o tableta [9] o como monitor de máquina virtual para sistemas operativos invitados. El marco se ha utilizado como componente confiable de sistemas de virtualización seguros para x86 [10] y ARM . [11]
La pequeña base de código de Genode lo convierte en una alternativa flexible a los sistemas operativos derivados de Unix más complejos. Por esta razón, el marco se ha utilizado como un sistema base para la investigación en campos como virtualización, [12] comunicación entre procesos , [13] aislamiento de pila IP , [14] [15] monitoreo, [16] y desarrollo de software . [17] [18]
Historia
Genode fue concebido por primera vez como el informe de investigación Bastei OS Architecture [19] en la Universidad Técnica de Dresde ( TU Dresden ). El enfoque del informe fue determinar la practicidad de un sistema operativo basado en componentes que utiliza seguridad basada en capacidades . Este informe fue motivado en parte por la investigación en microhipervisores L4 [20] realizada durante el mismo tiempo. Tras el éxito de un prototipo inicial, los autores del informe fundaron la empresa Genode Labs para desarrollar Bastei como Genode OS Framework.
Lanzamientos
El proyecto se desarrolla públicamente como un proyecto de código abierto publicado bajo los términos de la Licencia Pública General GNU Affero con una entidad comercial que ofrece licencias alternativas. Las versiones están programadas a intervalos de tres meses para realizar cambios en la interfaz binaria de la aplicación del sistema (ABI), la interfaz de programación de la aplicación (API) y la documentación de la emisión. El marco del sistema operativo está disponible en forma de código fuente y, después de la versión 18.02, se proporciona un derivado de propósito general llamado Sculpt con implementación binaria en el destino.
Características arquitectonicas
Genode se basa en la filosofía general de los microkernels: cuanto más pequeño y simple es el código, más fácil es verificar su confiabilidad y corrección. Genode extiende esta filosofía al espacio del usuario componiendo aplicaciones complejas a partir de pequeños componentes. Cada componente existe en una estricta jerarquía de relaciones entre padres e hijos. Cualquier componente que actúe como padre puede aplicar políticas de acceso a recursos y comunicación entre procesos (IPC) a sus hijos. Este diseño de sistema jerárquico produce particiones intuitivas y desescalación de privilegios, ya que los subsistemas especializados están anidados dentro de subsistemas más generales, lo que mitiga el confuso problema de diputado endémico de la política del sistema centralizado o superusuario .
El marco está diseñado para ser alojado por microkernels, sin embargo, las características de cualquier microkernel dado caen principalmente dentro de un conjunto común, y los núcleos monolíticos implementan un superconjunto de esas características. La abstracción de estas características permite a Genode actuar como espacio de usuario para una variedad de microkernels L4, [21] [22] y Linux.
Crítica
C ++
Genode es a menudo criticado por la elección de su lenguaje de implementación, C ++ (algunos otros sistemas operativos implementados en C ++ incluyen BeOS , Fuchsia , Ghost , Haiku , IncludeOS , OSv , Palm OS , ReactOS , Syllable y todos los principales motores de navegador). Esta crítica generalmente afirma que C ++ es una mala elección para implementar bibliotecas del sistema y API debido a la complejidad inherente de C ++ y la dificultad de analizar el código para determinar su comportamiento correcto. Si bien Genode hace uso de múltiples herencias y plantillas en su biblioteca del sistema, el uso de la biblioteca estándar de C ++ no está permitido y las características del lenguaje que dependen del estado global implícito, como el almacenamiento local de subprocesos y el asignador global, se han eliminado de el tiempo de ejecución del idioma. [23] No es posible realizar un análisis estático completo de C ++. Sin embargo, el proyecto Genode publica pruebas unitarias para análisis empíricos.
XML
Los componentes de Genode consumen y publican el estado utilizando datos estructurados serializados en XML , en contraste con el modelo de texto plano de los derivados de Unix. El marco de trabajo de Genode hace uso de XML de manera efectiva en todos sus componentes porque XML se analiza y genera fácilmente de manera programática y, al mismo tiempo, es posible comprenderlo y editarlo manualmente.
Espacio de nombres local
Genode carece de un espacio de nombres global práctico ; no existe un sistema de archivos global o registro de procesos o puntos finales de IPC. Esto contrasta con sistemas como Unix, que cuentan con un sistema de archivos ubicuo y permiten que un contexto de superusuario administre arbitrariamente cualquier proceso dentro del sistema. Declarar explícitamente los permisos y el enrutamiento de los componentes puede percibirse como una labor intensiva en relación con Unix. Sin embargo, la administración compartimentada permite que los subsistemas sean administrados por administradores de sistemas que no son de confianza mutua en la misma máquina sin tener que recurrir a la virtualización, un método de aislamiento común.
Esculpir
El proyecto Genode publica un sistema operativo de escritorio llamado Sculpt que se dirige a los portátiles de consumo actuales . [24] Sculpt es un pequeño sistema base con detección y configuración automática de dispositivos, algunas interfaces de control GUI y frontends para el administrador de paquetes Genode. El sistema no cuenta con un entorno de escritorio completo, pero requiere que los usuarios implementen máquinas virtuales que albergan sistemas operativos tradicionales para un escritorio con todas las funciones. Sculpt se distingue del marco del sistema operativo Genode en que se basa en gran medida en la reconfiguración dinámica utilizando componentes de control privilegiados en contraste con los sistemas especializados con políticas estáticas.
Ver también
- HelenOS , un sistema operativo basado en microkernel de escritorio
- QNX , un sistema operativo patentado similar a Unix alojado por un microkernel
- Qubes OS , un sistema operativo de escritorio que brinda seguridad a través de la virtualización
- Subgraph (sistema operativo) , una distribución de Linux que brinda seguridad a través del sandboxing
- Seguridad basada en capacidad
- Seguro por defecto
Referencias
- ^ "Versión 21.05" . 31 de mayo de 2021 . Consultado el 1 de junio de 2021 .
- ^ "Genode OS agrega soporte RISC-V" .
- ^ Larabel, Michael. "Genode está desarrollando un multiplexor de GPU para hardware de gráficos Intel" . Phoronix .
- ^ "Introducción del marco del sistema operativo Genode" . archive.fosdem.org/2012 .
- ^ "Sistemas operativos basados en L4" . L4hq.org . Archivado desde el original el 14 de junio de 2018 . Consultado el 1 de junio de 2018 .
- ^ Larabel, Michael. "Redox OS, MINIX, Hurd y Genode también tuvieron su tiempo en FOSDEM" . Phoronix .
- ^ Baader, Hans-Joachim. "Genode 2018.2 mit Sculpt OS" . prolinux.de .
- ^ Larabel, Michael. "Sculpt pretende ser un sistema operativo de propósito general construido sobre Genode" .
- ^ Tarasikov, Alexander (11 de mayo de 2013). "Portar Genode a hardware comercial" . Odio el software . Blogger.
- ^ "Muen: un núcleo de separación x86 / 64 de alta seguridad" .
- ^ Williams, John. "Inspección de datos desde la seguridad de su entorno de ejecución de confianza" (PDF) .
- ^ "Embajadas: Refactorización radical de la Web" (PDF) . USENIX.
- ^ Wegner, Martin; Holthusen, Sönke (11 de diciembre de 2014). "Especificación del contrato e idioma" . ccc-project.org .
- ^ Hamad, Mohammad (6 de enero de 2016). "El módulo de comunicación segura de CCC" . ccc-project.org .
- ^ Hamad, Mohammad. "Un marco de comunicación para el control de acceso distribuido en sistemas basados en microkernel" (PDF) .
- ^ Pruthiviraj, B .; Madhusuthun, GS; Vijayasarathy, S .; Chakrapani, K. "Un sistema operativo seguro basado en microkernel que utiliza Genode Framework" (PDF) . JATIT .
- ^ Hähne, Ludwig. "Comparación empírica de SCons y GNU Make" (PDF) .
- ^ Millo-Sánchez, Reinier; Paz Rodríguez, Waldo; Fajardo-Moya, Alexis. "Genode OS Framework, un framework para el desarrollo de sistemas embebidos" . ResearchGate .
- ^ "Informe técnico TU Dresden TUD-FI06-07" (PDF) .
- ^ "Microhipervisor NOVA" .
- ^ "Sistemas operativos basados en L4" . L4hq.org . Archivado desde el original el 14 de junio de 2018 . Consultado el 1 de junio de 2018 .
- ^ "Proyectos Comunitarios SeL4" . sel4.systems .
- ^ "Dialecto consciente de C ++ de Genode" . genodians.org . Consultado el 29 de noviembre de 2019 .
- ^ "Notas de la versión 18.02" .
enlaces externos
- Sitios web oficiales
Página web oficial
- Genodelabs en GitHub
- Proyectos de investigación
- KV-Cache: un caché de objetos web escalable de alto rendimiento para Manycore
- TrApps: compartimentos seguros en la nube malvada
- Desarrollo de una plataforma integrada para servicios CPS seguros
- Proyecto Secure-OS de IIT Madras
- Aislamiento del kernel de un sistema operativo de seguridad basado en capacidades
- Seguridad de dispositivos móviles con ARM TrustZone