Sistemas operativos modernos

Veamos dos ejemplos sencillos. Los primeros sistemas de correo electrónico enviaban mensajes en forma de texto ASCII, y eran seguros completamente. Nada hay que un mensaje recibido en ASCII pueda hacer para dañar un sistema de cómputo. Luego a la gente se le ocu­ rrió la idea de ampliar el correo electrónico para incluir otros tipos de documentos, como ar­ chivos de Word que pueden contener programas en macros. La lectura de semejante documento implica ejecutar un programa ajeno en la computadora propia. Por más cajas de arena que se usen, la ejecución de un programa ajeno es más peligrosa que leer texto ASCII. ¿Los usuarios exigieron la capacidad para cambiar el correo electrónico de documentos pasi­ vos a programas activos? Quizá no, pero los diseñadores de sistemas pensaron que era una magnífica idea, y no se preocuparon demasiado por las repercusiones en la seguridad. El segundo ejemplo es lo mismo pero para las páginas Web. Cuando Web consistía en pá­ ginas HTML pasivas, no representaba un problema importante para la seguridad (aunque un código HTML incorrecto podía servir para un ataque por desbordamiento de búfer). Ahora que muchas páginas Web contienen applets que e! usuario tiene que ejecutar para ver el contenido, saltan problemas de seguridad por todos lados. Tan pronto como se corrige uno, otro ocupa su lugar. Cuando Web era estática por completo, ¿había ruidosas manifestaciones de usuarios exigiendo contenido dinámico? No en la memoria del autor, pero su introducción trajo consi­ go muchos problemas de seguridad. Al parecer, el director encargado de decir no, estaba dormido. En realidad, hay algunas organizaciones que piensan que una buena seguridad es más impor­ tante que las funciones llamativas, y los militares son el principal ejemplo. En las secciones que siguen veremos algunos aspectos del problema, pero podemos resumirlos en una oración. Para construir un sistema seguro hay que tener un modelo de seguridad en el centro de un sistema operativo lo bastante sencillo como para que los diseñadores puedan entenderlo en realidad, y resistir todas las presiones para desviarse del modelo con el íin de añadir nuevas funciones. 9.7.1 Base de cómputo de confianza En el mundo de la seguridad, se habla a menudo de sistemas de confianza más que de siste­ mas seguros. Estos son sistemas que han planteado formalmente requisitos de seguridad y cum­ plen con ellos. En el corazón de todo sistema de confianza está una base de cómputo de confianza (TCB; Trusted Computing Base) que consiste en el hardware y el software necesa­ rios para hacer cumplir todas las reglas en materia de seguridad. Si la base de cómputo de con­ fianza opera según las especificaciones, la seguridad del sistema no podrá ser violada, sin importar que lo demás esté mal. La TCB por lo regular consta de la mayor parte del hardware (salvo los dispositivos de E/S que no afectan la seguridad), una porción del kemel del sistema operafivo y casi todos, o to­ dos, los programas de usuario que tienen facultades de superusuario (por ejemplo, programas con SETUID root en UNIX). Las funciones del sistema operativo que deben formar parte de la TCB incluyen creación de procesos, conmutación de procesos, administración del mapa de me­ moria y parte de la administración de archivos y de E/S. En un diseño seguro, es común que la TCB se separe con claridad del resto del sistema operativo para reducir al mínimo su tamaño y verificar su corrección.

RkJQdWJsaXNoZXIy MjI4NDcx