La base de cómputo confiable ( TCB ) de un sistema informático es el conjunto de todos los componentes de hardware , firmware y/o software que son críticos para su seguridad , en el sentido de que los errores o vulnerabilidades que ocurran dentro de la TCB podrían poner en peligro las propiedades de seguridad de todo el sistema. Por el contrario, las partes de un sistema informático que se encuentran fuera de la TCB no deben poder comportarse de manera incorrecta de manera que se pierdan más privilegios de los que se les otorgan de acuerdo con la política de seguridad del sistema .
El diseño y la implementación cuidadosos de la base informática confiable de un sistema son fundamentales para su seguridad general. Los sistemas operativos modernos se esfuerzan por reducir el tamaño de la base informática confiable [ no verificada en el cuerpo ] de modo que sea posible realizar un examen exhaustivo de su base de código (mediante una auditoría de software o una verificación de programas manuales o asistidas por computadora ).
El término se remonta a John Rushby [1] , quien lo definió como la combinación del núcleo del sistema operativo y los procesos confiables . Este último se refiere a los procesos a los que se les permite violar las reglas de control de acceso del sistema. En el artículo clásico Authentication in Distributed Systems: Theory and Practice [2], Lampson et al. definen el TCB de un sistema informático simplemente como
Ambas definiciones, aunque claras y convenientes, no son exactas en teoría ni pretenden serlo, ya que, por ejemplo, un proceso de servidor de red bajo un sistema operativo tipo UNIX podría ser víctima de una violación de seguridad y comprometer una parte importante de la seguridad del sistema, pero no es parte del TCB del sistema operativo. El Libro Naranja , otra referencia clásica de la literatura sobre seguridad informática , proporciona [3] una definición más formal del TCB de un sistema informático, como
En otras palabras, la base informática confiable (TCB) es una combinación de hardware, software y controles que trabajan juntos para formar una base confiable para hacer cumplir su política de seguridad.
El Libro Naranja explica además que
En otras palabras, una pieza determinada de hardware o software es parte del TCB si y solo si ha sido diseñado para ser parte del mecanismo que proporciona su seguridad al sistema informático. En los sistemas operativos , esto normalmente consiste en el núcleo (o micronúcleo ) y un conjunto seleccionado de utilidades del sistema (por ejemplo, programas setuid y daemons en sistemas UNIX). En los lenguajes de programación diseñados con características de seguridad integradas, como Java y E , el TCB está formado por el entorno de ejecución del lenguaje y la biblioteca estándar. [4]
Como consecuencia de la definición del Libro Naranja anterior, los límites del TCB dependen estrechamente de los detalles específicos de cómo se desarrolla la política de seguridad. En el ejemplo del servidor de red anterior, aunque, por ejemplo, un servidor web que sirve a una aplicación multiusuario no forma parte del TCB del sistema operativo, tiene la responsabilidad de realizar el control de acceso para que los usuarios no puedan usurpar la identidad y los privilegios de los demás. En este sentido, definitivamente forma parte del TCB del sistema informático más grande que comprende el servidor UNIX, los navegadores del usuario y la aplicación web; en otras palabras, la violación del servidor web a través, por ejemplo, de un desbordamiento de búfer puede no considerarse una vulneración del sistema operativo propiamente dicho, pero sin duda constituye una explotación perjudicial de la aplicación web.
Esta relatividad fundamental del límite del TCB se ejemplifica con el concepto de "objetivo de evaluación" ("TOE") en el proceso de seguridad de Criterios Comunes : en el curso de una evaluación de seguridad de Criterios Comunes, una de las primeras decisiones que se deben tomar es el límite de la auditoría en términos de la lista de componentes del sistema que serán objeto de escrutinio.
Los sistemas que no tienen una base informática fiable como parte de su diseño no proporcionan seguridad por sí mismos: sólo son seguros en la medida en que la seguridad les es proporcionada por medios externos (por ejemplo, un ordenador situado en una habitación cerrada sin conexión a la red puede considerarse seguro dependiendo de la política, independientemente del software que ejecute). Esto se debe a que, como David J. Farber et al. lo expresan, [5] [e]n un sistema informático, la integridad de las capas inferiores suele ser tratada como axiomática por las capas superiores . En lo que respecta a la seguridad informática, razonar sobre las propiedades de seguridad de un sistema informático requiere poder hacer suposiciones sólidas sobre lo que puede y, lo que es más importante, lo que no puede hacer; sin embargo, salvo que haya alguna razón para creer lo contrario, un ordenador puede hacer todo lo que puede hacer una máquina de Von Neumann general . Esto obviamente incluye operaciones que se considerarían contrarias a todas las políticas de seguridad, salvo las más simples, como divulgar un correo electrónico o una contraseña que debería mantenerse en secreto; Sin embargo, salvo disposiciones especiales en la arquitectura del sistema, no se puede negar que el ordenador podría programarse para realizar estas tareas indeseables.
Estas disposiciones especiales que tienen como objetivo impedir la ejecución de determinados tipos de acciones constituyen, en esencia, la base informática de confianza. Por este motivo, el Libro Naranja (que sigue siendo una referencia en el diseño de sistemas operativos seguros a partir de 2007 [actualizar]) caracteriza los distintos niveles de garantía de seguridad que define principalmente en términos de la estructura y las características de seguridad de la TCB.
Como se indica en el Libro Naranja antes mencionado, las partes de software de la base de computación confiable deben protegerse contra la manipulación para que tengan algún efecto. Esto se debe a la arquitectura de von Neumann implementada por prácticamente todos los ordenadores modernos: dado que el código de máquina se puede procesar como cualquier otro tipo de datos, cualquier programa puede leerlo y sobrescribirlo. Esto se puede evitar mediante disposiciones especiales de gestión de memoria que posteriormente deben tratarse como parte de la base de computación confiable. En concreto, la base de computación confiable debe, al menos, impedir que se escriba en su propio software.
En muchas CPU modernas , la protección de la memoria que aloja el TCB se logra agregando una pieza especializada de hardware llamada unidad de administración de memoria (MMU), que es programable por el sistema operativo para permitir o denegar el acceso de un programa en ejecución a rangos específicos de la memoria del sistema. Por supuesto, el sistema operativo también puede denegar dicha programación a los otros programas. Esta técnica se llama modo supervisor ; en comparación con enfoques más rudimentarios (como almacenar el TCB en ROM o, equivalentemente, usar la arquitectura Harvard ), tiene la ventaja de permitir que el software crítico para la seguridad se actualice en el campo, aunque permitir actualizaciones seguras de la base informática confiable plantea sus propios problemas de arranque. [6]
Como se ha dicho antes, para poder avanzar en la determinación de la seguridad del sistema informático es necesaria la confianza en la base informática de confianza. En otras palabras, la base informática de confianza es “de confianza” ante todo en el sentido de que hay que confiar en ella, y no necesariamente en que sea digna de confianza. En los sistemas operativos del mundo real se descubren rutinariamente errores críticos para la seguridad, lo que da fe de los límites prácticos de dicha confianza. [7]
La alternativa es la verificación formal del software , que utiliza técnicas de prueba matemática para demostrar la ausencia de errores. Los investigadores de NICTA y su filial Open Kernel Labs han realizado recientemente una verificación formal de seL4, un miembro de la familia de microkernels L4 , que demuestra la corrección funcional de la implementación C del núcleo. [8] Esto convierte a seL4 en el primer núcleo de sistema operativo que cierra la brecha entre la confianza y la fiabilidad, suponiendo que la prueba matemática está libre de errores.
Debido a la necesidad antes mencionada de aplicar técnicas costosas como la verificación formal o la revisión manual, el tamaño del TCB tiene consecuencias inmediatas en la economía del proceso de aseguramiento del TCB y en la confiabilidad del producto resultante (en términos de la expectativa matemática del número de errores no encontrados durante la verificación o revisión). Por lo tanto, para reducir los costos y los riesgos de seguridad, el TCB debería mantenerse lo más pequeño posible. Este es un argumento clave en el debate sobre la preferencia de los microkernels a los kernels monolíticos . [9]
AIX materializa la base informática confiable como un componente opcional en su sistema de gestión de paquetes en tiempo de instalación. [10]