¿Un shell completo de Turing significa igual de seguro?

-1

He escuchado que Linux es más seguro que Windows. ¿Es eso cierto? Creo que son igual de seguros porque ambos tienen un shell completo de Turing, por lo tanto, si la administración hace daño en un sistema, existe un método para hacer el mismo daño en otro sistema. ¿Mi razonamiento es correcto?

    
pregunta junior 06.07.2017 - 18:28
fuente

4 respuestas

2

La integridad y la seguridad de Turing son independientes entre sí. Linux tiene una reputación de ser más seguro debido a su modelo de permiso y al hecho de que todo es de código abierto. La razón por la cual el código abierto es más seguro es que más personas son capaces de revisar las vulnerabilidades de seguridad del sistema operativo.

    
respondido por el user52472 06.07.2017 - 21:13
fuente
12

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

    
respondido por el SYS_V 06.07.2017 - 21:17
fuente
3

La integridad de Turing no significa que puedas hacer todo. Significa que cualquier programa es expresable en el lenguaje. No significa que el sistema subyacente realmente permita que el programa haga lo que se expresa.

Por ejemplo, en Linux, un programa de nivel de usuario (es decir, no root) puede, de hecho, expresar y ejecutar "rm -rf /" para eliminar todo en la computadora. Sin embargo, no tendrá éxito ya que el programa de nivel de usuario que se ejecuta en el shell de nivel de usuario simplemente no puede eliminar los archivos que el usuario no controla.

    
respondido por el crovers 06.07.2017 - 21:16
fuente
1

La integridad de Turing significa que una máquina puede hacer cualquier cálculo que pueda hacer otra máquina de Turing completa. Esto no significa que pueda hacer otra cosa. Todas las computadoras tienen capacidades que se extienden más allá de lo que hace una máquina Turing porque se espera que todas las computadoras hagan más que solo cálculos computacionales.

Una máquina de Turing no:

  • Leer desde un teclado
  • crear paquetes de ethernet
  • Mostrar información en una pantalla
  • Lea un reloj o mida el paso del tiempo.

Lo que el hecho de que Turing complete implica es que, por lo general, puedes emular cualquier cálculo que otra computadora pueda hacer, siempre que esos cálculos no tengan límite de tiempo.

Como ejemplo de la vida real, considere el cliente nativo de Google (NaCl). En general, es muy arriesgado ejecutar ejecutables desconocidos en su computadora. Nunca se sabe cuándo serán maliciosos. NaCl proporciona un subconjunto estricto de esa funcionalidad nativa que está diseñada para evitar formas inteligentes de hacer daño. Sin embargo, no impide que estas aplicaciones se completen con Turing. Son bienvenidos a calcular cualquier cosa que deseen dentro de su pequeña burbuja ... simplemente no tienen permitido tener ningún efecto secundario no deseado fuera de esa burbuja.

    
respondido por el Cort Ammon 07.07.2017 - 02:18
fuente

Lea otras preguntas en las etiquetas