miércoles, 5 de enero de 2011

Sistemas de Archivos Distribuidos

Antecedentes

Un sistema distribuido es una colección de máquinas acopladas conectadas entre sí por una red de comunicaciones (Tanto macrocomputadora como una estación simple de trabajo). Dentro de una máquina en un sistema distribuido, el resto de las máquinas y sus respectivos recursos son remotos, mientras que sus propios recursos son locales.

  • Servicio: Entidad de Software que se ejecuta en una o más máquinas y ejecuta un tipo de función específico a favor de clientes que no conoce a priori.
  • Servidor: Software de servicio que se ejecuta en una sola máquina.
  • Cliente: Proceso que puede invocar un servicio empleando un conjunto de operaciones que constituyen su interfaz de cliente.

Nombres y Transparencia

Los nombres establecen una correspondencia entre objetos lógicos y físicos, por lo regular, un usuario se refiere a un archivo con un nombre textual, el cual se transforma en un identificador numérico de más bajo nivel que a su vez se corresponde con bloques de disco. Esta correspondencia proporciona a los usuarios una abstracción de un archivo que oculta los detalles de cómo y en qué parte del disco está almacenado realmente. Un sistema de archivos distribuido transparente añada una nueva dimensión a la abstracción, el de ocultar en qué lugar de la red se encuentra el archivo.

  • Estructuras de Nombres: Los archivos tienen diferentes nombres en los diferentes niveles.
    • Transparencia de ubicación: El nombre de un archivo no da indicio alguno de la posición física de almacenamiento.
    • Independencia de ubicación: No es necesario modificar el nombre de un archivo si la posición física de almacenamiento cambia.

Algunos aspectos a considerar para distinguir estos dos conceptos: separar los datos de su ubicación, la transparencia de ubicación estática proporciona a los usuarios una forma cómoda de compartir archivos, la independencia de la ubicación separa la jerarquía de nombres de la jerarquía de dispositivos de almacenamiento, una vez lograda la separación de nombre y ubicación, varios clientes pueden acceder a archivos que residen en sistemas servidores remotos.

  • Esquemas de Nombres: Hay tres tipos:
    • Sencillo: Los archivos se nombran con alguna combinación del nombre de su anfitrión y su nombre local, lo que garantiza un nombre único en el nivel del sistema, las unidades componentes permanecen aisladas, aunque se proporcionan mecanismos para poder hacer referencia a un archivo remoto.
    • NFS: El segundo enfoque cuenta con un mecanismo para ligar directorios remotos a directorios locales y así dar la apariencia de un árbol de directorios coherente. Inicialmente solo había acceso a directorios remotos previamente montados, con la función automont, los montajes se efectúan por demanda en base a una tabla de puntos de montaje y nombres de estructura de archivos. Existe integración de componentes, aunque limitada y no uniforme, ya que cada máquina puede conectar diferentes directorios remotos a su árbol. La estructura resulta ser un boque de árboles Unix con subárboles compartidos.
    • El tercer enfoque logra la integración total de los sistemas de archivos componentes, una sola estructura de nombres global abarca todos los archivos del sistema.
  • Técnicas de Implementación: Se requiere un mecanismo para transformar un nombre de archivo en la posición correspondiente, para mejorar la disponibilidad de la información de transformación se usan métodos como la replicación, caché local o ambas.

Acceso a Archivos Remotos

En los sistemas de archivos convencionales el motivo de uso de Caché es el reducir las entradas y salidas del disco con el objetivo de mejorar el desempeño, en un Sistema de Archivos Distribuido, la meta es reducir el tamaño del tráfico de red así como las entradas y salidas del disco.

  • Uso de Caché Básico: Si los datos necesarios para satisfacer la solicitud no se encuentran ya en caché, entonces se lleva una copia de dichos datos desde el servidor al sistema del cliente. Los accesos se efectúan en la copia que se encuentra en la caché. Los archivos se siguen identificando con una copia que reside en la máquina del servidor, pero en este lugar, las copias o partes del archivo están dispersas en diferentes cachés. El tamaño del bloque en caché tiene una importancia en el uso por bloques.
  • Ubicación de Caché: Si los datos que se encuentran en caché se mantienen en disco, siguen estando ahí durante la recuperación, por lo que ya no es necesario traerlos nuevamente. Las cachés del disco tienen por lo tanto una ventaja muy clara sobre las cachés de memoria principal. Las cachés en memoria principal permiten estaciones de trabajo sin disco, acceso más rápido a datos, la tendencia actual es sobre memorias con mayor capacidad y menor costo. Las cachés de servidores estarán en memoria principal independientemente de donde se encuentren ubicadas las de usuarios, si en la máquina de un usuario también se usa caché de memoria principal, se puede crear un solo mecanismo de uso de caché para que sea utilizado tanto por el servidor como por el usuario.
  • Política de Actualización de Caché: La política más sencilla es la de escribir datos en el disco tan pronto como sean colocados en cualquier caché, su ventaja es la confiabilidad ya que se pierde poca información cuando falla el sistema de un cliente, la política de escritura demorada retrasamos las actualizaciones en la copia maestra, una consiste en vaciar un bloque cuando está a punto de ser expulsado de la caché de un cliente, otra variante consiste en escribir datos de regreso al servidor cuando se cierra el archivo
  • Consistencia
    • Estrategia iniciada por el cliente; El cliente inicia una verificación de validez en la que se pone en contacto con el servidor y verifica si los datos locales son consistentes con su copia maestra.
    • Estrategia iniciada por el servidor: El servidor registra por cada cliente las partes de los archivos que colocan en caché, esto con el objetivo de que pueda reaccionar cuando detecte una inconsistencia potencial, este ocurre cuando un archivo es colocado en caché por dos clientes diferentes en modo de conflicto.
  • Uso de Caché y Servicios Remotos; Una comparación de estos términos tiene que ver con un incremento potencial en el desempeño y una disminución en la simplicidad, tanto de los cachés como de los servicios remotos.
    • Ventajas: Un número considerable de accesos remotos se puede manejar eficientemente por la caché local cuando se hace uso de estas, el trabajo total adicional de la red en la transmisión de grandes porciones de datos es menor que cuando se transmiten series de respuestas a solicitudes específicas.
    • Desventajas: Problema de consistencia, debido a que en los patrones de acceso que exhiben escrituras poco frecuentes. El uso de caché es superior, para el uso de caché sea eficiente se requiere que se realice en máquinas con discos locales o grandes memorias principales. En el uso de cachés, debido a que los datos se transfieren en masa entre el servidor y el cliente y no en respuesta a las necesidades específicas de una operación sobre archivos, la interfaz inferior entre máquinas es diferente de la interfaz de usuario superior.

Servicios Con Estado

Conservan la información de estado de los clientes entre las solicitudes. Esto es lo que ocurre en los sistemas centralizados.

Ventajas:

· Es posible la cerradura de archivos

· Mensajes de solicitud más cortos

· Mejor desempeño

· Es posible la lectura adelantada

Servicios Sin Estado

Cuando un cliente envía una solicitud a un servidor, éste la lleva a cabo, envía la respuesta y elimina de sus tablas internas toda la información correspondiente a dicha solicitud. El servidor no guarda la información relativa a los clientes entre las solicitudes.

Ventajas:

· No existe límite para el número de archivos abiertos

· Tolerancia de fallas

· No se desperdicia el espacio del servidor en tablas

· No necesita llamadas open/close

· No hay problemas si un cliente falla

Replicación de Archivos

Esta técnica mejora la disponibilidad y el desempeño, ya que la selección de una réplica cercana para atender una solicitud de acceso, reduce el tiempo de servicio. La replicación de archivos se basa en la técnica de realizar varias copias de los archivos y colocarlas en varios servidores de archivos independientes. Al tener varias copias de un archivo, si un servidor deja de funcionar no perdemos la disponibilidad a ese archivo, ya que podremos acceder a otra copia suya disponible en otro servidor.

El problema asociado con las réplicas es su actualización, ya que cualquier cambio de un archivo debe verse reflejado en todas sus réplicas, por lo que si modificamos un archivo deberemos modificar todas y cada una de sus réplicas para mantener todos los sistemas de archivos actualizados.

UNIX United

El proyecto UNIX United de la Universidad de Newcastle, Inglaterra, es uno de los primeros intentos por aumentar la escala del sistema de archivos UNIX de modo que sea distribuido, sin modificar el modo de UNIX. En UNIX existe un conjunto de sistemas interconectados, que se llama sistemas componentes o constituyentes.

Panorama general:

Puede ser posible que cualquier cantidad de sistemas de UNIX se unan, para formar archivos UNIX United. Las estructuras de nombres de los sistemas (para archivos, dispositivos, directorios y órdenes) se reúnen en una sola estructura de nombres dentro de la que cada sistema componente es, en la práctica, solo en directorio. La unidad componente es un árbol de directorios UNIX completo que pertenece a cierta maquina.

Se asignan nombres a las raíces de las unidades componentes con el fin de hacerlas accesibles y distinguibles externamente. Se sigue haciendo referencia a la raíz propia de un sistema de archivos como “/”, y sigue fungiendo como punto de partida de todos los nombres de camino que comienza con “/”.

Los usuarios son conscientes del límite superior de su unidad componente actual, ya que deben usar las sintaxis “../” Siempre que desean ascender más allá de su máquina actual. Por tanto, UNIX United no ofrece transparencia de ubicación completa. Cada sistema componente tiene su propio conjunto de usuarios nombrados y su propio administrador (supe usuario).

La Newcastle Conection

Es una capa de software (En el nivel de usuario) incorporada en cada uno de los sistemas componentes. Esta capa de conexión separa el núcleo de UNIX, por un lado, y los programas en el nivel de usuario, por el otro lado la capa intercepta todas las llamadas al sistema que tienen que ver con archivos y separa las que es necesario redirigir a sistemas remotos.

Los accesos de archivos remotos en sí corren por cuenta de un conjunto de procesos servidores de archivos del sistema objetivo. La conexión inicial se establece con la ayuda de un proceso engendrador que tiene un nombre fijo estándar para que cualquier proceso extremo pueda llamarlo. Este proceso engendrador realiza las verificaciones de derechos de acceso remoto según un par de identificación máquina-usuario; además, convierte esta identificación en un nombre local válido.

El Network File System de SUN

El Network File System (NFS, sistema de archivos de red) es tanto una implementación como una especificación de un sistema de software para acceder a archivos remotos a través de redes de área local (O incluso de área extensa). NFS es parte de ONC+, que la mayor parte de los proveedores de UNIX está apoyando. La implementación forma parte del sistema operativo Solaris, que es una versión modificada de UNIX SVR4 que se ejecuta en estaciones de trabajo SUN y otro hardware.

NFS usa el protocolo de datagramas no confiable (UDP/IP) y Ethernet (u otro sistema de red). La especificación y la implementación se entrelazarán en nuestra descripción de NFS.

Panorama general:

NFS trata un conjunto de estaciones de trabajo interconectadas como un conjunto de máquinas independientes. La meta es permitir cierto grado de comportamiento entre estos sistemas de archivos (por solicitud explicita) de manera transparente. El comportamiento se basa en la relación servidor-cliente. Una máquina puede ser, y a menudo lo es, tanto un cliente como un servidor. Se permite el comportamiento entre cualquier par de maquinas, no solo con maquinas servidoras dedicadas. Para asegurar la independencia de las maquinas, el compartimiento de un sistema de archivos remoto sólo afecta la maquina del cliente y ninguna otra.

Con objeto de poder acceder a un directorio remoto de manera transparente desde una maquina específica, digamos, desde M, un cliente de esa máquina necesita realizar primero un operación montaje. La semántica de la operación es que un directorio remoto se monta en un directorio de un sistema de archivos local. Una vez finalizada la operación de montaje, el directorio montado semeja un subárbol integral del sistema de archivos local, y constituye al subárbol que desciende del directorio local. Este último se convierte en el nombre de la raíz del directorio recién montado.

Al montar un sistema de archivos remoto, el cliente no obtiene acceso a otros sistemas de archivos por casualidad se montaron sobre el sistema de archivos anterior. El mecanismo de montaje no exhibe la propiedad de transitividad.

Uno de los objetivos del diseño de NFS fue operar en un entorno heterogéneo de maquinas, sistemas operativos y arquitecturas de red diferentes. Las especificaciones de NFS son independientes de estos medios y por ello alienta otras implementaciones. La especificación NFS distingue entre los servicios provistos por un mecanismo de montaje y los servicios reales de acceso a archivos remoto. Por consiguiente, se especifican dos protocolos distintos para estos servicios; un protocolo de montaje y un protocolo para acceso a archivos remotos llamado protocolo NFS.

El protocolo de montaje:

Sirve para establecer la conexión lógica inicial entre un servidor y un cliente. En la implementación de SUN, cada máquina tiene un proceso servidor, fuera del núcleo, que desempeña las funciones del protocolo.

Una operación de montaje incluye el nombre del directorio remoto que se va a montar y el nombre de la maquina servidora en la que almacenará. La solicitud de montaje se transforma en la RPC correspondiente y se remite al servidor de montaje que se ejecuta en la maquina servidora especifica.

El servidor también mantiene una lista de las maquinas cliente y los correspondientes directorios que actualmente están montados. Esta lista se usa principalmente para fines administrativos.

El protocolo NFS:

El protocolo NFS proporciona un conjunto de llamadas a procedimientos remotos para efectuar operaciones con archivos remotos. Los procedimientos apoyan las operaciones siguientes:

· Buscar un archivo en directorio.

· Leer un conjunto de entradas de directorio

· Manipular enlaces y directorios

· Acceder a atributos de archivo

· Leer y escribir archivos

Una característica predominante de los servidores de NFS es que no tienen estado: no mantienen información acerca de sus clientes de un acceso siguiente. No existen paralelos con la tabla de archivos abiertos ni las estructuras de archivos de UNIX en el lado del servidor.

Cada solicitud tiene que incluir un juego completo de argumentos, incluido un identificador de archivo único y una distancia absoluta dentro del archivo único y una distancia absoluta dentro del archivo, para las operaciones apropiadas.

La arquitectura de NFS:

Consta de tres capas principales, la primera capa es la interfaz con el sistema de archivos UNIX, basada en las llamadas open, read, write, close, y en descriptores de archivos. La segunda capa es el virtual File System (VFS, sistema de archivos Virtual), y tiene dos funciones importantes:

  • Separa las operaciones genéricas de sistema de archivos de su implementación al definir una interfaz VFS limpia. Varias implementaciones de la interfaz VFS puede coexistir en la misma máquina, lo que permite un acceso transparente a diferentes tipos de sistemas de archivos montados localmente
  • El VFS se basa en una estructura de presentación de archivos llamada v-nodo que contiene un designador numérico para un archivo que es único en toda la red. El núcleo mantiene una estructura de v-nodo para cada nodo activo (archivo o directorio).

Traducción de nombres de camino:

La traducción de los nombres de camino se efectúa dividiendo el camino en nombres de componentes e invocando la búsqueda de NFS individualmente para cada par de nombre de componente y v-nodo de directorio. Una vez que se cruzan punto de montaje, cada búsqueda de componente genera una RCP individual para el servidor.

NFS permite montar un sistema de archivos remoto encima de otro que ya está montado (montaje en cascada). Sin embargo un servidor no puede fungir como intermediario entre un cliente y otro servidor. En vez de ello, un cliente debe establecer una conexión servidor-cliente directa con el segundo servidor montando directamente el directorio deseado. Cuando un cliente tiene un montaje en cascada, puede intervenir más de un servidor en el recorrido de un nombre de camino.

Operaciones remotas:

Existe una correspondencia casi uno a uno entre las llamadas al sistema normales de UNIX para operaciones con archivos y las RPC del protocolo NFS. Así, una operación con un archivo remoto se puede traducir directamente a la RPC correspondiente.

NFS se adhiere al paradigma de servicio remoto, pero en la práctica se emplean técnicas de buffers y cachés para mejorar el desempeño. No existe una correspondencia directa entre una operación remota y una RPC; más bien, las RPC traen bloques de archivo y atributos de archivo que se colocan en cachés locales. Las operaciones remotas futuras usan los datos en caché, sujetas a las restricciones de consistencia.

Andrew

Entorno de computación distribuída que se ha estado desarrollando desde 1983. Su nombre proviene de Andrew Carnegie y Andrew Mellon. Tiene varios beneficios, particularmente en áreas de seguridad y escalabilidad. Usa Kerberos como mecanismo de autenticación, e implementa listas de control de acceso en directorios para usuarios y grupos. El caching a nivel de cliente mejora el rendimiento del sistema, y permite el acceso limitado al sistema de archivos en el caso de caída del servidor o un fallo de red.

Espacio de nombres compartido:

Una característica importante de AFS es el volumen, un árbol de archivos y subdirectorios. Los volúmenes los crean los administradores y los enlazan con una ruta específica en una celda AFS. Una vez ha sido creado, los usuarios del sistema de archivos pueden crear directorios y archivos de manera normal sin tener en cuenta donde se encuentra físicamente el volumen. Un volumen puede tener una cuota asignada para limitar la cantidad de espacio consumido. Según las necesidades, los administradores pueden mover ese volumen a otro servidor y otra localización en disco sin la necesidad de notificar a los usuarios de dicho cambio; esta operación puede realizarse mientras se están usando los archivos dentro del volumen.

El espacio de nombres de archivos en una estación de trabajo Andrew es particionado en dos espacios:

  • Espacio de nombre compartido (Idéntico en todas las estaciones)
  • Local (Único para cada estación, solo contiene archivos temporales necesarios para la inicialización de la estación y enlaces simbólicos a los archivos que se encuentran en el espacio de nombres compartido).

Aspectos adicionales:

  • Movilidad de los clientes: Pueden acceder a cualquier archivo del espacio de nombres compartido desde cualquier estación de trabajo.
  • Seguridad: Mensajes cifrados en la comunicación cliente servidor, la información acerca de los clientes y grupos se guarda en una base de datos de protección que se replica en cada servidor.
  • Protección: Proporciona listas de acceso para proteger directorios y los bits normales de UNIX para proteger archivos.
  • Heterogeneidad: Integración de estaciones de trabajo y sistemas operativos diferentes.

Sprite

Utilidades permitían a dispositivos remotos ser mapeados en el espacio de la computadora local, permitiendo impresiones en red y otras tareas similares. Muchos archivos Unix clave estaban basados en la red. Asimismo, todas las máquinas en la red compartían el directorio root. Otras utilidades Unix comunes (Como finger) fueron re escritas para hacerlas trabajar en red, escuchando a toda la gente conectada a través de la red. Esto hizo que una red Sprite trabajara como si fuera un gran sistema simple de tiempo compartido o una imagen de un sistema simple. Otra adición clave en esta tecnología fue la migración de procesos, los cuales permitían a los programas ser movidos entre ordenadores en cualquier instante.

El trabajo en los inicios de Sprite terminó alrededor de 1987, pero fue mejorado durante el siguiente año. A principios de 1990, Sprite era usado como la base para el desarrollo del primer sistema de archivos log-estructurado (LFS), que incrementaba de forma dramática el desempeño de la escritura de archivos, a costa de un decremento en el desempeño de la lectura. Estos sistemas permiten una mucho más simple recuperación de errores, lo cual se convirtió en el principal enfoque del proyecto durante ese período. Se continuó hasta 1994 (Sprite no era un sistema microkernel, y sufrió los mismos problemas que otros sistemas Unix en términos de complejidad de desarrollo, convirtiéndose cada vez más difícil de desarrollas mientras más funcionalidad era añadida).

Locus

Pretende construir un Sistema Operativo Distribuido con todas las de la ley, presenta a los clientes y aplicaciones una sola jerarquía de nombres con estructura de árbol, la cual cubre todos los objetos de todas las máquinas del sistema. Los nombres son totalmente transparentes, un archivo Locus puede corresponder a un conjunto de copias distribuidas en diferentes sitios. La estructura de nombres lógica disfraza los detalles tanto de ubicación como de replicación ante la vista de clientes y las aplicaciones. A fin de permitir una rápida y un acceso confiable a todo el sistema de archivos del clúster Locus utiliza la replicación, los datos de los archivos pueden ser almacenados en más de un nodo y el locus mantendría las diferentes copias hasta la fecha.

miércoles, 29 de diciembre de 2010

Seguridad y Protección

Todo sistema en una computadora maneja información valiosa para sus propietarios, por lo que la seguridad es un elemento importante para los sistemas operativos, en este resumen se hablará de los siguientes temas: conceptos de seguridad y protección, problemas de la seguridad, políticas, diseño de sistemas operativos seguros, criptografía, clasificación de seguridad, seguridad y protección en sistemas operativos de propósito general, el sistema de seguridad Windows NT y Kerberos.

Conceptos de Seguridad y Protección

La seguridad en un sistema operativo se compone de múltiples facetas: protección ante posibles daños físicos, intrusos, fallos de confidencialidad, etc. El hardware, software y datos son objetos que pueden recibir ataques internos o externos dentro de un sistema y es obligación de un sistema operativo el tener en cuenta este tipo de eventos provenientes del entorno en el que se encuentra para poder tomar acciones para poder mantener un entorno seguro y bien protegido.

La protección consiste en evitar que se haga uso indebido de los recursos que están dentro del ámbito del sistema operativo (Archivos, zonas de memoria, etc.), además es necesario poder comprobar que los recursos solo se usan por usuarios que tienen derecho de acceso a ellos.

La seguridad se basa en tres aspectos de diseño:

·         Evitar la pérdida de datos: La cual se puede dar por varias razones, entre las que podemos mencionar las catástrofes naturales o artificiales, errores del hardware o del software, errores humanos. Una solución a este tipo de problemas es mantener una copia o varias de los datos almacenadas en distintos lugares.
·         Confidencialidad de los datos: Este tipo de control sobrepasa el ámbito de los sistemas operativos, aunque una parte del problema puede resolverse en su ámbito interno. La solución a este problema puede realizarse estableciendo actuaciones externas al sistema operativo, que pueden ser incluso policiales.
·         Controlar acceso de los datos y recursos: Es competencia directa del sistema operativo, es necesario que los usuarios no puedan acceder a archivos a los que no tienen permisos de acceso, se deben ejecutar pruebas de seguridad exhaustivas para todos los elementos del sistema, controles de acceso (Autenticación de usuarios y protección frente a accesos indebidos).





Problemas de Seguridad


Los problemas más frecuentes en un sistema informático se describen a continuación:

·         Uso indebido o malicioso de programas: Los problemas de seguridad generados por programas maliciosos son difíciles de detener y corregir, dos formas muy frecuentes de generar fallas de seguridad son los caballos de troya (Crear programa para que haga cosas no autorizadas en el sistema cuando actúa en el entorno adecuado) y las puertas de atrás (Crean un agujero de seguridad a través de un programa privilegiado que lo permite).
·         Usuarios inexpertos o descuidados: Potencialmente peligrosos, pueden borrar archivos no deseados, dejar abierto el sistema durante largo tiempo, escribir en papel palabras clave junto a la computadora, etc.
·         Usuarios no autorizados: Debe existir un proceso de autenticación de usuarios para evitar usuarios no autorizados, el correo electrónico puede usarse como portador de programas destructores, la existencia de sistemas abiertos da lugar a cuatro tipos de ataques de seguridad: virus, gusanos, rompedores de claves y bombardeos.
·         Virus: Programas que se auto replican con fines destructivos o de violación de seguridad, necesitan un programa que los transporte y un agente que los transmita para poder infectar a otros programas. Existen varias formas de insertar un virus, se puede añadir, en medio, al principio o al final del programa, también puede reemplazarse completamente con otro programa y tomar el mismo nombre pero con un comportamiento totalmente distinto. Actualmente son muy comunes las propagaciones de los virus a través de la red, unidos a otros programas. Dos formas de solucionar virus serían las siguientes: Comprobación manual de todos los dispositivos para limpiarlos del virus o creación de un antídoto que también se propague y limpie el virus.
·         Gusanos: Es un malware que tiene la propiedad de duplicarse a sí mismo. Los gusanos utilizan las partes automáticas de un sistema operativo que generalmente son invisibles al usuario, a diferencia de un virus un gusano no precisa alterar los archivos de programas, sino que reside en la memoria y se duplica a sí mismo. Los gusanos casi siempre causan problemas en la red (aunque sea simplemente consumiendo ancho de banda), mientras que los virus siempre infectan o corrompen los archivos de la computadora que atacan.
·         Rompedores de sistemas de protección: Su objetivo es romper la seguridad de los sistemas (Generalmente remotos) y poder ejecutar accesos ilegales.
·         Bombardeo: Ataques masivos a un servidor determinado que provocan que el servidor deniegue sus servicios a los clientes legales, pueden llegar a bloquear el servidor.

Políticas de Seguridad

Las políticas de seguridad son de suma importancia en las organizaciones, existen distintos tipos de políticas de seguridad, a continuación se describen algunas de ellas, aplicándolas al campo de los sistemas operativos:

·         Política Militar: De las más populares, por lo que casi nunca se aplica en la actualidad, consiste en la clasificación de todos los objetos con requisitos de seguridad en uno de los cinco niveles siguientes: desclasificado, restringido, confidencial, secreto y alto secreto, califica también a los usuarios según el nivel al que pueden acceder. Solo se permite el acceso a datos sensibles a quien los necesita para hacer su trabajo, de esta forma se puede compartimentar a los usuarios, haciendo más estricta la regla general de acceso.
·         Políticas Comerciales: Basándose en la política militar, pero generalmente debilitando las restricciones de seguridad, usan los principios de compartimentación de los usuarios y de clasificación de la información, además definen reglas similares para el trasvase de información entre los distintos niveles y compartimentos.
·         Modelos de Seguridad: Es un mecanismo que permite hacer explícita una política de seguridad, existen modelos multinivel (Permiten representar rangos de sensibilidad y reflejar la necesidad de separar rigurosamente los sujetos de los objetos a los que no tienen acceso) y limitada (Se centran en responder formalmente las propiedades que un sistema seguro debe satisfacer, pero introduciendo restricciones a los sistemas de seguridad multinivel).

Diseño de Sistemas Operativos Seguros

Es necesario el diseñarlos para que admitan mecanismos de seguridad desde un principio, Saitzer y Schroeder extrajeron los criterios de diseño siguientes para dotar a un Sistema Operativo de mecanismos de seguridad:

·         Diseño abierto (Para disuadir a posibles curiosos)
·         Exigir permisos (Política de acceso restrictiva)
·         Privilegios mínimos (Asignar únicamente prioridades necesarias)
·         Mecanismos económicos (Sencillos, regulares y pequeños)
·         Intermediación completa (Comprobación de acceso al sistema)
·         Compartición mínima
·         Fáciles de usar y aceptables (Aceptado por usuarios y fácil de usar)
·         Separación de privilegios (Más de un mecanismo de protección, criptografía)

Técnicas de diseño de sistemas seguros:

·         Separación de recursos (Física, temporal, criptográfica y lógica)
·         Uso de entornos virtuales (Espacios múltiples de memoria virtual, máquinas virtuales) que proporcionan un entorno virtual completo para cada usuario.
·         Diseño por capas: Varios niveles, donde los niveles interiores son los de más confianza

Controles de seguridad externos al sistema operativo:

·         Equipos de penetración y limitación de acceso: Para tratar de detectar el mayor número de fallos posible es habitual usar equipos de penetración, en donde su misión es llevar a cabo todos los ataques de seguridad sobre un sistema. El conjunto de pruebas de seguridad debe ser complejo y riguroso, sobre todo si se trata de sistemas que están conectados en red por la posibilidad de difusión de virus e intento de adquisición de palabras de acceso al sistema mediante programas que descifran dichos códigos. La complejidad de las comprobaciones y el registro de acceso aumentan en los sistemas conectados a una red; en tal caso la seguridad se enfrenta a múltiples puntos de ejecución y canales de comunicación expuestos, por tal motivo se debe utilizar algún mecanismo de protección como el firewall, que consiste en limitar el acceso a la red interna y solo poder realizarlo a través de una máquina determinada denominada cortafuegos.
·         Controles de programación: El diseño y código del sistema deben ser revisados por un grupo de los diseñadores y programadores, se puede aplicar a los programas encapsulando datos y métodos de un objeto de forma que sólo se puedan acceder por métodos verificados e interfaz definida, pruebas independientes, cualquier cambio o instalación de software en un sistema debe ser aprobado por el administrador.
·         Uso de estándares para seguridad: Existen estándares que describen un sistema fiable, algunos controles serían el software viable, sospechar de procesos, registrar accesos, búsquedas periódicas de agujeros de seguridad, etc.

Criptografía

Esta se basa en que el emisor emite un mensaje en claro, que es tratado mediante un cifrador con la ayuda de una clave, para crear un texto cifrado. Este texto cifrado, por medio del canal de comunicación establecido, llega al descifrador que convierte el texto cifrado, apoyándose en otra clave, para obtener el texto en claro original. Las dos claves implicadas en el proceso de cifrado/descifrado pueden ser o no iguales dependiendo del sistema de cifrado utilizado.

Claves
            Concepto básico de criptografía, la clave es el patrón que usan los algoritmos de cifrado y descifrado para manipular los mensajes en uno u otro sentido.

Sistemas de cifrado simétrico

Son aquellos que utilizan la misma clave para cifrar y descifrar un documento. El principal problema de seguridad reside en el intercambio de claves entre el emisor y el receptor ya que ambos deben usar la misma clave. Por lo tanto se tiene que buscar también un canal de comunicación que sea seguro para el intercambio de la clave.

Sistemas de cifrado asimétrico

Llamados de clave pública, usa dos claves diferentes, una es la clave pública y se puede enviar a cualquier persona y otra que se llama clave privada, que debe guardarse para que nadie tenga acceso a ella. Para enviar un mensaje, el remitente usa la clave pública del destinatario para cifrar el mensaje. Una vez que lo ha cifrado, solamente con la clave privada del destinatario se puede descifrar, ni siquiera el que ha cifrado el mensaje puede volver a descifrarlo.

Sistemas de cifrado híbridos

Es el sistema de cifrado que usa tanto los sistemas de clave simétrica como el de clave asimétrica. Funciona mediante el cifrado de clave pública para compartir una clave para el cifrado simétrico.

Clasificaciones de Seguridad

Tema ampliamente discutido desde los años 60, la disparidad de criterios existentes se ha ampliado más con la conexión de las computadoras para formar redes que comparten recursos.

Algunas clasificaciones:

·         Clasificación del Departamento de Defensa de EEUU: Una de las más populares, especifica cuatro niveles de seguridad, siendo estos:
o   Nivel D - Sistemas con protección nula, los cuales no pasan las pruebas de seguridad mínima (Ej.: MS-DOS, Windows 3.1)
o   Nivel C - Capacidad discrecional para proteger recursos, la aplicación de los mecanismos de protección dependen del usuario con privilegios sobre los mismos.
§  Control de acceso por dominio
§  Control de acceso individualizado
o   Nivel B – Control de acceso obligatorio, los controles de acceso no son discrecionales de los usuarios, sino que deben existir obligatoriamente.
§  Etiquetas de seguridad obligatorias
§  Protección estructurada
§  Dominios de seguridad
o   Nivel A – Sistemas certificados
§  Diseño verificado
§  Desarrollo controlado
·         Criterio Alemán
·         Criterio Canadiense
·         ITSEC o Criterio Común

Seguridad y Protección en Sistemas Operativos de Propósito General

Una de las funciones principales del Sistema Operativo es proteger los recursos de cada usuario para que pueda ejecutar en un entorno seguro, donde los mecanismos permiten controlar el acceso a los objetos del sistema permitiéndolo o denegándolo sobre la base de información.

La identificación del usuario (Autenticación)

El objetivo es determinar si un usuario es quien dice ser, existen diversas formas de controles como pedir información que solo él conoce a través de contraseñas, determinar características físicas del usuario  o pedir un objeto que use el usuario por ejemplo. El proceso de autenticación pide tres valores:

·         Identificación del usuario
·         Contraseña
·         Domino de protección al que pertenece el usuario

Palabras Clave

            Es el método más usado actualmente para identificar a un usuario, consiste en un conjunto de caracteres alfanuméricos y especiales conocido únicamente por el usuario y por el sistema operativo sobre el que se ha llegado a un acuerdo para que sea usado como clave de acceso al sistema. Para la asignación de claves, la palabra clave es fijada por el usuario cuando entra en su cuenta y puede cambiarla en el momento que desee.

·         Longitud y formato de claves: La longitud y el formato de las claves han ido cambiando a través del tiempo, principalmente debido a la detección de fallos asociados a las claves usadas en cada momento. Donde para aumentar la complejidad de la clave se puede hacer que el mandato que permite cambiar la contraseña obligue al usuario a meter caracteres no alfanuméricos y que fuerce la existencia de contraseñas de una longitud mínima añadiendo números aleatorios a la palabra antes de cifrarla.
·         Almacenamiento de claves: Suelen almacenarse en archivos cifrados, esto con el objetivo de incrementar la seguridad.
·         Duración de las claves: Se recomienda que sean válidas únicamente durante un cierto tiempo.

Dominios de Protección

            Consiste en la relación entre objetos y derechos de acceso, es un conjunto de pares (Objeto, derechos) donde cada par especifica un objeto y las operaciones que pueden ejecutarse sobre el mismo. Un objeto puede  pertenecer a varios dominios de protección simultáneamente.

Matrices de Protección

                También denominada Matriz de Acceso, los dominios de protección son las filas de la matriz y los objetos son las columnas de la misma. El elemento (i, j) expresa las operaciones que el dominio i; puede ejecutar sobre el objeto j. Si la matriz de protección está completamente definida, los mecanismos de protección pueden saber siempre qué hacer cuando un proceso de un dominio solicita determinada operación sobre un objeto. Para que se resuelva el problema de complejidad y el número fijo de filas y columnas, la mayoría de los sistemas operativos implementan la matriz mediante estructuras dinámicas de datos (listas) a las que se puede añadir o quitar elementos sin tener que redefinir ninguna estructura de datos del sistema operativo.

Lista de Control de Acceso

                Es necesario especificar qué tipos de acceso al objeto son posibles, a cada objeto se le asocia una lista de pares (Dominio, operaciones), cuando un usuario pide acceso a un objeto, se determina a qué dominio de protección pertenece y se recorre la lista para ver si se puede hacer la operación
·         Unix: Implementación sencilla por la simplificación de dominios de protección llevada a cabo por el sistema operativo.
·         Windows NT: Más sofisticado de Unix, todos los objetos tienen asignados descriptores de seguridad como parte de sus fichas de acceso.

Capacidades

                La otra forma posible de implementar la matriz de protección es asociar a cada dominio un conjunto de descriptores que indiquen las operaciones que los componentes de ese dominio pueden efectuar sobre cada objeto del sistema. Estos descriptores se denominan capacidades y son una combinación de una referencia a un objeto con los permisos de acceso al mismo desde el dominio del poseedor de la capacidad.

·         Son muy útiles para incluir información de protección para un proceso en particular.
·         El mecanismo de comprobación de derecho es muy sencillo.
·         Se adaptan muy bien a sistemas distribuidos.

Revocación de Derechos de Acceso

Un problema de las capacidades es que en un sistema dinámico, pueden existir cientos de capacidades concedidas para acceder a un objeto, lo que hace muy difícil su control. El revocar los derechos de acceso para un objeto en particular es complicado, el sistema debe buscar todas las capacidades existentes sobre el mismo para aplicar la revocación de derechos. Las capacidades se pueden implementar, para facilitar la revocación de derechos de acceso como lista de control de acceso en la cual se puede mantener una lista desde cada objeto a todas sus capacidades. Si hay modificaciones, se recorre dicha lista y se aplican, claves de versión donde cada objeto tiene una clave maestra que se copia en cada nueva capacidad sobre ese objeto.

Servicios de Protección y Seguridad
Varían dependiendo de la complejidad del sistema implementado, algunos ejemplos de servicios utilizados en Sistemas Operativos comunes:

Servicios Genéricos

            Todos los sistemas operativos crean la información de protección cuando se crea un objeto, a continuación se muestra una descripción de los servicios genéricos:

·         Crear un nuevo descriptor de protección, que inicialmente, puede no estar asignado a ningún objeto
·         Elimina del sistema un descriptor de protección. No lo hace para aquellos objetos asociados al descriptor que están siendo utilizados o están abiertos.
·         Abrir un descriptor de protección creado previamente para usarlo asociado a un objeto.
·         Obtener información de protección: Permite a los usuarios conocer la información de protección de un objeto.
·         Cambiar información de protección de un objeto, se deben tener permisos de acceso y modificación del descriptor de protección que se desea modificar.
·         Fijar información de protección (Máscaras de protección) que se aplican por defecto a los objetos de un dominio, con esto, los usuarios pueden asegurarse de que sus recursos tienen unas características de protección prefijadas, incluso aunque se creen con descriptores de protección vacíos.

Servicios POSIX

Define servicios que se ajustan a los servicios genéricos ya descritos. No existen servicios específicos para crear, destruir o abrir descriptores de protección. A continuación se definen las más frecuentes:

·         Comprobación de la posibilidad de acceder a un archivo con unos ciertos privilegios. Verifica si un archivo existe y se usa una función que devuelve cero si así lo es, o -1 en caso de error.
·         Cambio de los derechos de acceso a un archivo. Sólo realizable por el dueño de un archivo o el súper usuario.
·         Cambio del propietario de un archivo
·         Obtención de los identificadores del propietario y su grupo
·         Máscara de protección que será aplicada por defecto a todos sus objetos.

Servicios de Win32

Para implantar el modelo de seguridad, Windows NT usa un descriptor de  seguridad y listas de control de acceso (ACL), que a su vez incluyen dos tipos de entradas de control de acceso (ACE):
·         Las entradas de permisos
·          Las entradas de negociaciones

Las más frecuentes:

·         Iniciar el descriptor de seguridad de protección por defecto.
·         Identificador de un usuario
·         Información de seguridad de un archivo y cambio de la información
·         Obtención de los identificadores del propietario de su grupo para un archivo
·         Cambio de identificadores del propietario de su grupo para un archivo
·         Llamadas que permiten iniciar una AOL y añadir entradas de concesión y denegación de accesos.

Sistema de Seguridad de Windows NT
Es una combinación de técnicas que aseguran un nivel de protección consistente contra los accesos no deseados. NT dispone de herramientas de auditoría que permiten conocer nuestros niveles de seguridad.

El modelo de seguridad de Windows NT, incluye los siguientes componentes: Procesos de logon, autoridad de seguridad local, gestor de cuentas de usuario y monitor de referencia de seguridad.

Clasificación de las áreas funcionales:

·         Seguridad de red
·         Seguridad a nivel de sistema operativo
·         Encriptación de datos

Kerberos

Kerberos se basa en criptografía de clave simétrica y requiere un tercero de confianza. Además, existen extensiones del protocolo para poder utilizar criptografía de clave asimétrica. Es un protocolo de autenticación de redes de ordenador que permite a dos computadores en una red insegura demostrar su identidad mutuamente de manera segura. Sus diseñadores se concentraron primeramente en un modelo de cliente-servidor, y brinda autenticación mutua: tanto cliente como servidor verifican la identidad uno del otro. Los mensajes de autenticación están protegidos ataques de Replay.