No es posible determinar si Linux es más seguro que Windows o viceversa. La integridad de Turing no es una métrica de seguridad que se pueda usar para comparar objetivamente en qué grado dos sistemas se considerarían seguros.
Dadas las diferencias arquitectónicas entre ellos, Linux y Windows son inconmensurable construcciones abstractas en el contexto de la seguridad. Es decir, dadas sus diferencias considerables, sin un estándar objetivo o una rúbrica que pueda usarse para evaluar qué tan seguro es un sistema, estos dos sistemas no se pueden comparar directamente en términos de qué tan seguros / inseguros son.
- El término "Linux" en realidad se refiere al kernel de Linux.
La arquitectura del kernel de Linux es monolítica , lo que significa que el kernel implementa toda la funcionalidad esperada de un sistema operativo. Este no es el caso del sistema operativo Windows, cuya arquitectura se basa en kernel híbrido , en lugar de en el núcleo monolítico.
Windows basado en NT se clasifica como kernel híbrido (o macrokernel) en lugar de kernel monolítico porque los subsistemas de emulación se ejecutan en procesos de servidor en modo usuario, en lugar de en modo kernel como en un kernel monolítico, y aún más debido a la gran cantidad de objetivos de diseño que se asemejan a los objetivos de diseño de Mach (en particular, la separación de las personalidades del sistema operativo del diseño general del núcleo). A la inversa, la razón por la que NT no es un sistema de microkernel es porque la mayoría de los componentes del sistema se ejecutan en el mismo espacio de direcciones que el kernel, como sería el caso con un diseño monolítico (en un diseño monolítico tradicional, no habría un microkernel por sí, pero el kernel implementaría una funcionalidad muy similar a los subsistemas de microkernel y modo kernel de NT). 1
- Incluso si se consideraba que el kernel de Windows NT y el kernel de Linux tienen un diseño monolítico, todavía hay diferencias significativas en la implementación y, por extensión, en la funcionalidad. Un claro ejemplo de esto son las diferencias en las interfaces del kernel (API de llamadas al sistema): mientras que el número de llamadas al sistema Linux es aproximadamente 340, hay mucho más llamadas al sistema de Windows (~ 700 a más de 1000 (especulado), dependiendo de qué kernel). Además de esto, la manera en que se invocan las llamadas al sistema también difiere entre los sistemas.
- Dadas las diferencias en el diseño y la implementación de los kernels de Windows y Linux, no debería sorprender que el formato que debe tener un binario para poder cargarse en la memoria y ejecutarse sea diferente entre los dos sistemas también. Los núcleos aplican diferentes interfaces binarias de aplicación (ABI) que describen cómo se creará un proceso en la memoria virtual en función de los diversos segmentos de un binario ejecutable. Para que el cargador de programas de Windows se asigne a la memoria y ejecute un binario, el binario debe cumplir con el Portable Executable (PE) formato, mientras que los binarios de Linux deben cumplir con el formato ejecutable y enlazable (ELF).
¿Por qué algo de esto es relevante? Debido a las diferencias anteriores y muchas más, además de los núcleos de Windows y Linux, los procesos de Windows y Linux se crean a partir de binarios diseñados y formateados de manera diferente, asignados y cargados en la memoria virtual por diferentes núcleos que aplican diferentes ABI, tienen diferentes entornos de ejecución, tienen diferentes Los mecanismos de invocación del kernel, tienen diferentes concepciones de enlace dinámico, etc. Estas diferencias impiden que se realicen comparaciones directas entre sistemas operativos cuando se trata de seguridad, ya que generalmente no compartirán las mismas debilidades. Esto se evita cuando uno intenta comparar el shell de Windows con shell de Linux , incluso el término "shell" no tiene un significado común entre los dos sistemas. Linux no tiene un registro, el COM, WMI, ASP.NET y así sucesivamente. Un ejemplo concreto de esto es intentar comparar bash con PowerShell para determinar cuál es el "mejor", no se puede hacer.
1. Usuario de modo Kernel de MS Windows NT y Libro Blanco de GDI