¿Qué es un sistema operativo seguro?

Tras la publicación de nuestro artículo sobre el hackeo de automóviles, recibimos varias preguntas sobre KasperskyOS. Quienes nos escribieron plantearon -con toda razón- que existen en el mercado varios sistemas operativos buenos y confiables, diseñados, entre otros fines, para la industria automotriz. El principal argumento que esgrimen para demostrar la superioridad tecnológica de las soluciones competidoras es que el principio de aislamiento del dominio de seguridad no es algo novedoso y que muchos de los sistemas actuales en uso poseen varias funciones adicionales de seguridad que se basan en las necesidades actuales, como la implementación de protocolos criptográficos, filtros de red y protección contra ataques de red. ¡Algunos de estos sistemas incluso están certificados con varias normas de seguridad!

Tosas estas funciones adicionales (incluyendo las certificaciones) son sin duda importantes, pero ¿esta funcionalidad por sí misma hace que un sistema operativo sea seguro y confiable? Para responder a esta pregunta, primero necesitamos responder a otra: ¿Qué es un sistema operativo seguro? Desde nuestro punto de vista, un sistema operativo seguro debería garantizar la ejecución segura o confiable de componentes que no son seguros (programas).

Nuestro concepto se basa en dos aspectos muy importantes. Uno es obvio: no confiamos en software de terceros y lo consideramos inseguro y desconfiable por definición. El otro aspecto no es tan obvio: deberíamos confiar en el sistema operativo y considerar confiable las funciones del kernel (núcleo). Para aumentar el nivel de confiabilidad (después de todo, hasta los caballeros no siempre creen en la palabra de sus pares), el kernel debería someterse a verificaciones formales y matemáticas (el sujeto de verificación meritaría, por sí mismo, una extensa investigación).

Tomando este paradigma como punto de inicio, no sólo implementamos una arquitectura segura en base a un kernel confiable, sino que también aprendimos de implementaciones existentes de sistemas operativos seguros. Los principios fundamentales, como la separación del dominio de seguridad y un microkernel son apenas la mitad de la historia. El estudio de otros sistemas y sus limitaciones sirve para evitar problemas conocidos y encontrar nuevas formas de implementar propiedades de seguridad. Como resultado, desarrollamos un sistema operativo que, por una parte, es similar en sus principios operativos a otros sistemas operativos, pero, por otra, posee funciones que le permiten superar limitaciones conocidas y mejorar las características de seguridad del sistema en el que se ejecuta el sistema operativo.

Como un ejemplo de esta mejora, me gustaría mencionar la tipificación IPC (Inter-Process Communication, comunicación entre procesos). Esta tecnología, cuya idea puede parecer bastante obvia, nos proporciona un control de bajo nivel de los datos enviados en llamadas de aplicaciones, proporcionando a las políticas de seguridad control de granularidad que nunca antes se había implementado a este nivel. Otra función consiste en la combinación de diferentes tipos de políticas de seguridad, como Flow Control y Type Enforcement, en un solo sistema. La política resultante es una mezcla de políticas con estado y sin estado, que ofrece lo mejor de ambos mundos. Por supuesto, las posibilidades de combinar políticas no se limitan a estos dos tipos. Ningún sistema operativo comercial puede presumir de esta flexibilidad. Esta funcionalidad proporciona un control estricto de toda la comunicación interprocesos, que se basa no sólo en el conocimiento del sujeto y del objeto de comunicación (quién solicita y a quién), sino también en el conocimiento del contexto de alto nivel de comunicación (lo que se solicita, cuándo y qué datos se transfieren).

Otras funciones de KasperskyOS incluyen un lenguaje flexible para definir políticas de seguridad y un sistema de verificación de políticas, que simplifica considerablemente la creación y depuración de políticas. Existen muchas más. La exclusividad de nuestro trabajo cuenta con el soporte de patentes en EE.UU. y Rusia.

Como resultado, creemos que hemos desarrollado un sistema operativo que implementa el principio de ejecución confiable de aplicaciones desconfiables. Esto se logró, entre otras cosas, mediante el uso del principio de separación del dominio de seguridad y un control de la comunicación interprocesos que es estricto y flexible al mismo tiempo. Esto significa que en el sistema operativo, los módulos sólo pueden interactuar siguiendo un protocolo rigurosamente definido, que les permite llamar sólo a las funciones permitidas en una secuencia rigurosamente definida. Para los usuarios, esto significa que aun si hay alguna vulnerabilidad en algún módulo que pudiera ser objeto de ataques (y admitimos que este puede ser el caso), el sistema operativo funciona de tal manera que el atacante sólo podrá controlar el módulo vulnerable, pero no podrá interferir con el funcionamiento de los otros módulos, porque todas las comunicaciones están controladas.

Un sistema operativo puede compararse a un escudo. Todas las capacidades de seguridad adicionales, incluyendo cortafuegos, protocolos para la transferencia segura de datos, e incluso las certificaciones, constituyen los remaches del escudo. Sin duda aumentan la confiabilidad del conjunto, pero no definen el nivel general de protección. Lo más importante es la arquitectura, los principios subyacentes del sistema operativo. Esto determina si el escudo será de papel, de madera o de acero. Muchos sistemas operativos tienen estupendos remaches, pero ¿en qué tipo de escudo están incrustados?

Publicaciones relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *