Un kernel de separación es un tipo de kernel de seguridad que se utiliza para simular un entorno distribuido. El concepto fue introducido por John Rushby en un artículo de 1981. [1]Rushby propuso el kernel de separación como una solución a las dificultades y problemas que habían surgido en el desarrollo y verificación de kernels de seguridad grandes y complejos que estaban destinados a "proporcionar una operación segura multinivel en sistemas multiusuario de propósito general". Según Rushby, "la tarea de un núcleo de separación es crear un entorno que sea indistinguible del que proporciona un sistema físicamente distribuido: debe parecer que cada régimen es una máquina separada y aislada y que la información solo puede fluir desde una máquina. a otro a lo largo de líneas de comunicación externas conocidas. Una de las propiedades que debemos demostrar de un núcleo de separación, por lo tanto, es que no existen canales para el flujo de información entre regímenes distintos de los que se proporcionan explícitamente ".
Una variante del núcleo de separación, el núcleo de partición, ha ganado aceptación en la comunidad de la aviación comercial como una forma de consolidar, en un solo procesador, múltiples funciones, quizás de criticidad mixta . Los fabricantes de aeronaves han utilizado productos comerciales de sistemas operativos en tiempo real de este género para aplicaciones de aviónica críticas para la seguridad.
En 2007, la Dirección de Garantía de la Información de la Agencia de Seguridad Nacional de EE. UU . (NSA) publicó el Perfil de protección del núcleo de separación (SKPP), [2] una especificación de requisitos de seguridad para los núcleos de separación adecuados para ser utilizados en los entornos de amenazas más hostiles. El SKPP describe, en el lenguaje de Common Criteria [3] , una clase de productos modernos que proporcionan las propiedades fundamentales del núcleo de separación conceptual de Rushby. Define los requisitos funcionales y de garantía de seguridad para la construcción y evaluación de núcleos de separación, al tiempo que proporciona cierta libertad en las opciones disponibles para los desarrolladores.
El SKPP define el núcleo de separación como "mecanismos de hardware y / o firmware y / o software cuya función principal es establecer, aislar y separar particiones múltiples y controlar el flujo de información entre los sujetos y los recursos exportados asignados a esas particiones". Además, los requisitos funcionales centrales del núcleo de separación incluyen:
- Protección de todos los recursos (incluida la CPU , la memoria y los dispositivos) contra el acceso no autorizado.
- Separación de los recursos internos utilizados por Target of Evaluation Security Functions (TSF) de los recursos exportados puestos a disposición de los sujetos.
- Partición y aislamiento de recursos exportados.
- Mediación de flujos de información entre particiones y entre recursos exportados.
- Servicios de auditoria.
El núcleo de separación asigna todos los recursos exportados bajo su control en particiones. Las particiones están aisladas a excepción de los flujos de información permitidos explícitamente. Las acciones de un sujeto en una partición están aisladas de (es decir, no pueden ser detectadas ni comunicadas a) sujetos en otra partición, a menos que se haya permitido ese flujo. Las particiones y los flujos se definen en los datos de configuración. Tenga en cuenta que 'partición' y 'sujeto' son abstracciones ortogonales. La "partición", como lo indica su génesis matemática, proporciona una agrupación de entidades del sistema en la teoría de conjuntos, mientras que "sujeto" nos permite razonar sobre las entidades activas individuales de un sistema. Por lo tanto, una partición (una colección que contiene cero o más elementos) no es un sujeto (un elemento activo), pero puede contener cero o más sujetos. [2]
El núcleo de separación proporciona a sus programas de software alojados propiedades de control de flujo de información y particiones de alta seguridad que son a prueba de manipulaciones y no se pueden eludir. Estas capacidades proporcionan una base confiable configurable para una variedad de arquitecturas de sistemas. [2]
En septiembre de 2008, INTEGRITY-178B de Green Hills Software se convirtió en el primer núcleo de separación certificado contra SKPP. [4]
Wind River Systems tiene tecnología de núcleo de separación que estaba en proceso de certificación activo en 2009.
Lynx Software Technologies tiene un núcleo de separación, LynxSecure .
En 2011, la Dirección de Garantía de la Información eliminó el SKPP. La NSA ya no certificará sistemas operativos específicos, incluidos los núcleos de separación contra el SKPP, y señaló que "la conformidad con este perfil de protección, por sí sola, no ofrece suficiente confianza en que la información de seguridad nacional esté protegida adecuadamente en el contexto de un sistema más grande en el que el el producto está integrado ". [5]
El micronúcleo seL4 tiene una prueba de concepto formal de que se puede configurar como un núcleo de separación. [6] La continuidad forzosa de la información [7] junto con esto implica que es un ejemplo de seguridad de alto nivel. El núcleo de separación de Muen [8] es también un núcleo de separación de código abierto verificado formalmente para máquinas x86.
Ver también
- Para una arquitectura de seguridad informática basada en un núcleo de separación, consulte Múltiples niveles independientes de seguridad .
- Chroot
- Cárcel de FreeBSD
- Virtualización a nivel de sistema operativo
Referencias
- ^ John Rushby, "El diseño y verificación de sistemas seguros", octavo simposio de ACM sobre principios de sistemas operativos, págs. 12-21, Asilomar, CA, diciembre de 1981. ( Revisión de sistemas operativos de ACM , vol. 15, n. ° 5).
- ^ a b c Dirección de garantía de la información, Agencia de seguridad nacional, Fort George G. Meade, MD. "Perfil de protección del gobierno de EE. UU. Para núcleos de separación en entornos que requieren alta robustez", versión 1.03, junio de 2007.
- ^ "Criterios comunes para la evaluación de la seguridad de la tecnología de la información", versión 3.1, CCMB-2006-09-001, 002, 003, septiembre de 2006.
- ^ http://www.niap-ccevs.org/cc-scheme/st/st_vid10119-st.pdf
- ^ https://www.niap-ccevs.org/pp/archived/PP_SKPP_HR_V1.03/
- ^ https://github.com/seL4/l4v/blob/master/proof/bisim/Syscall_S.thy
- ^ https://www.nicta.com.au/publications/research-publications/?pid=6464
- ^ https://muen.sk/muen-report.pdf