viernes, 4 de diciembre de 2015

Introducción a los Sistemas Operativos

A medida que los sistemas informáticos se han hecho más sofisticados y a medida que su rango de aplicaciones se han ido incrementando, también ha crecido la necesidad de proteger la integridad de esos sistemas. La protección se concebía originalmente como algo asociado a los sistemas operativos multiprogramados, de modo que los usuarios que no fueran de confianza pudieran compartir de manera segura un espacio lógico de nombres común, como por ejemplo un directorio de archivos, o compartir un espacio físico de nombres común, como por ejemplo la memoria. Los conceptos modernos  de protección han evolucionado para incrementar la facilidad de cualquier sistema complejo que haga uso de recursos compartidos.

Necesitamos proporcionar protección por diversas razones. La más obvia es la necesidad de impedir una violación maliciosa e intencionada de una restricción de acceso por parte de un usuario. Sin embargo, tiene una mayor importancia general la necesidad de garantizar que cada componente de programa activo en un sistema utilice los recursos del sistema sólo en ciertas formas que sean coherentes con las políticas establecidas. Este requerimiento tiene un carácter primordial si se quiere disponer de un sistema fiable.



El papel de la protección en un sistema informático es proporcionar un mecanismo para la imposición de las políticas que gobiernen el uso de recursos. Las políticas de uso de recursos pueden variar según la aplicación y también pueden variar lo largo del tiempo. Observe que los mecanismos son distintos de las políticas. Los mecanismos determinan cómo se llevará algo a cabo; las políticas deciden qué es lo que hay que hacer.

Referencias:
Fundamentos de Sistemas Operativos
Silberschatz, Galvin, Gagne
Septima Edicion

Concepto y objetivos de protección.

Los sistemas operativos son una parte esencial de cualquier sistema informatico. Del mismo modo, un curso sobre una parte esencial de cualquier carrera de informática. Este campo esta cambiando muy rápidamente, ya que ahora las computadoras se encuentras prácticamente en cualquier aplicación, desde juegos para niños hasta herramientas de planificación externamente sofisticadas para los gobiernos y las grandes multinacionales. Sin embargo, los conceptos fundamentales siguen siendo bastante claros. 

Un sistema operativo es un programa (o conjunto de programas) de control que tiene por objeto  facilitar el uso de la computadora y conseguir que ésta se utilice eficientemente. El objetivo fundamental de los sistemas operativos es gestionar y administrar eficientemente los recursos hardware, permitiendo que se ejecuten concurrentemente varios programas, sin que haya conflicto en el acceso de cada uno de ellos a cada uno de los recursos que necesite. Una computadora que es utilizada, se le asignan los siguientes recursos hardware: el procesador(CPU), la memoria principal, los discos y otros periféricos.

En resumen, el sistema operativo efectúa, entre otras, las siguientes funciones:

- Facilita el uso de la computadora, en general, la comunicación computadora / usuario.   
- Gestiona y asigna recursos hardware (procesador, memoria y periféricos) a los distintos programas o tareas.
- Gestiona y mantiene los archivos en dispositivos de memoria masiva
- Apoya a otros programas.
- Protege los datos y los programas, cuestión especialmente compleja en sistemas multiusuario.
- Identifica y autentifica a los usuarios que hacen uso de la computadora.
- Contabiliza la utilización de los recursos realizada por los distintos usuarios.

Referencias:
Fundamentos de Sistemas Operativos
Silberschatz, Galvin, Gagne
Septima Edicion

Funciones del sistema de protección

Control de acceso que hace referencia a las caracteristicas de seguridad que controlan quien puede obtener acceso a los recursos de un sistema operativo. Las aplicaciones llaman a las funciones de control de acceso para establecer quien puede obtener acceso a los recursos especificos o controlar el acceso a los recursos proporcionados por la aplicacion.

Un sistema de proteccion debera tener la flexibilidad suficiente para poder imponer una diversidad de politicas y mecanismos. Existen varios mecanismos que pueden usarse para asegurar los archivos, segmentos de memoria, CPU, y otros recursos administrados por el Sistema Operativo.

La proteccion se refiere a los mecanismos para controlar el acceso de programas, procesos, o usuarios a los recursos definidos por un sistema de computacion. Seguridad es la serie de problemas relativos a asegurar la integridad del sistema y sus datos. 

Hay importantes razones para proveer proteccion. La mas obvia es la necesidad de prevenirse de violaciones intencionales de acceso por un usuario. Otras de importancia son, la necesidad de asegurar que cada componente de un programa, use solo los recursos del sistema de acuerdo con las politicas fijadas para el uso de esos recursos.

Mecanismos y Politicas

El sistema de proteccion tiene la funcion de proveer un mecanismo para el fortalecimiento de las politicas que gobiernan el uso de recursos. Tales politicas se pueden establecer de varias maneras, algunas en el diseno del sistema y otras son formuladas por el administrador del sistema, otras pueden ser definidas por los usuarios individuales para proteger sus propios archivos y programas.

Las politicas son diversas, dependen de la aplicacion y pueden estar sujetas a cambios a lo largo del tiempo.
Un principio importante es la separacion de politicas de los mecanismos. ‘Los mecanismos determinan como algo se hara. Las politicas deciden que se hara'.

Referencias: 
http://sistemasoperativos.angelfire.com/html/6.2.htm

Implantación de matrices de acceso

Andrew S. Tanenbaum. “Sistemas Operativos Modernos” (1993) define que un modelo de protección puede ser visto abstractamente como una matriz, llamada matriz de derecho. Los renglones de la matriz representan dominios y las columnas representan objetos. Cada entrada en la matriz contiene un conjunto de derechos de acceso. Dado que los objetos son definidos explícitamente por la columna, se puede omitir el nombre del objeto en el derecho de acceso. La entrada "Matriz[i, j]" define el conjunto de operaciones que un proceso ejecutándose en el dominio "Dj" puede realizar sobre el objeto "Oj".

Un ejemplo de una matríz de acceso sería la siguiente:

En esta matríz hay 4 dominios y 5 objetos: 3 Archivos ("A1", "A2", "A3") 1 Puerto Serial y 1 impresora. Cuando un proceso se ejecuta en O1, puede leer los archivos "A1" y "A3".
Un proceso ejecutándose en el dominio "D4" tiene los mismos privilegios que en "D1", pero además puede escribir en los archivos. Nótese que en el puerto serial y la impresora solo se pueden ser ejecutados por procesos del dominio "D2".

H. M. Deitel. “Introducción a los Sistemas Operativos” (1987). Explica una matriz de acceso:
Matriz de Acceso

Un dominio es un conjunto de parejas (objeto, derechos):
  • Cada pareja determina:
    • Un objeto.
    • Un subconjunto de las operaciones que se pueden llevar a cabo en él.
Un derecho es el permiso para realizar alguna de las operaciones.
Es posible que un objeto se encuentre en varios dominios con “distintos” derechos en cada dominio.
Un proceso se ejecuta en alguno de los dominios de protección:
  • Existe una colección de objetos a los que puede tener acceso.
  • Cada objeto tiene cierto conjunto de derechos.
Los procesos pueden alternar entre los dominios durante la ejecución.
Una llamada al S. O. provoca una alternancia de dominio.
En algunos S. O. los dominios se llaman anillos.
Una forma en la que el S. O. lleva un registro de los objetos que pertenecen a cada dominio es mediante una matriz:

  • Los renglones son los dominios.
  • Las columnas son los objetos.
  • Cada elemento de la matriz contiene los derechos correspondientes al objeto en ese dominio, por ej.: leer, escribir, ejecutar.
Referencias:
http://soquipo242m.blogspot.mx/2013/07/63-implementacion-de-matrices-de-acceso.html

Protección basada en el lenguaje

Los sistemas de protección, no solo se preocupan de si puedo acceder a un recurso, sino también de cómo lo accedo, por lo tanto los diseñadores de aplicaciones deben protegerlos, y no solo el SO. Los diseñadores de aplicaciones mediante herramientas de los lenguajes de programación pueden declarar la protección junto con la tipificación de los datos.

Ventajas:
  • Las necesidades de protección se declaran sencillamente y no llamando procedimientos del SO.
  • Las necesidades de protección pueden expresarse independientemente de los recursos que ofrece el SO.
  • El diseñador no debe proporcionar mecanismos para hacer cumplir la protección.
  • Los privilegios de acceso están íntimamente relacionados con el tipo de datos que se declara. 
Diferencias entre las distintas formas de protección: 

  • SeguridadLa obligación de cumplimiento por núcleo ofrece un grado de seguridad que el código de seguridad ofrecido por el compilador.
  • Flexibilidad: La flexibilidad de la implementación por núcleo es limitada. Si un lenguaje no ofrece suficiente flexibilidad, se puede extender o sustituir, perturbando menos cambios en el sistema que si tuviera que modificarse el núcleo.
  •  Eficiencia: Se logra mayor eficiencia cuando el hardware apoya la protección. La especificación de protección en un lenguaje de programación permite describir en alto nivel las políticas de asignación y uso de recursos.
La especificación de protección en un lenguaje de programación permite describir en alto nivel las políticas de asignación y usode recursos.El programador de aplicaciones necesita un mecanismo de control de acceso seguro y dinámico.

Protección en java 2

  • La protección la maneja la máquina virtual (JVM) 
  • La JVM asigna un dominio de protección a una clase cuando la carga. 
  • El dominio de protección indica qué operaciones puede (y no puede) realizar la clase. 
  • Si se invoca un método de biblioteca y éste realiza una operación privilegiada, se examina el stack para asegurar que la biblioteca pueda realizar la operación.

La protección que se ofrece en los sistemas de computación existentes casi siempre se ha logrado con la ayuda del núcleo de un sistema operativo, que actúa como agente de seguridad que inspecciona y valida cada intento por acceder a un recurso protegido. Puesto que la validación de todos los accesos puede dar pie a un gasto extra considerable.

Referencias:
https://sites.google.com/site/materiasisoperativo/unidad-6-proteccion-y-seguridad/6-4-proteccion-basada-en-el-lenguaje

Concepto de seguridad

Los terminos seguridad y proteccion se utilizan en forma indistinta. Sin embargo, es util hacer una distincion entre los problemas generales relativos a la garantia de que los archivos no sea leidos o modificados por personal no autorizado, lo que incluye aspectos tecnicos, de administracion, legales y politicos, por un lado y los sistemas especificos del sistema operativo utilizados para proporcionar la seguridad, por el otro. Para evitar la confusion, utilizaremos el termino seguridad para referirnos al problema general y el termino mecanismo de proteccion para referirnos a los mecanismos especificos del sistema operativo utilizado para resguardar la informacion de la computadora.

La seguridad tiene muchas facetas. Dos de las mas importantes son la perdida de datos y los intrusos. Algunas de las causas mas comunes de la perdida de datos son:
•  Actos divinos: Incendios, inundaciones, terremotos, guerras, revoluciones o ratas que roen las cintas o discos flexibles.
•  errores de Hardware o Software: Mal funcionamiento de la CPU, discos o cintas ilegibles, errores de telecomunicacion o errores en el programa.
•  Errores Humanos: Entrada incorrecta de datos, mal montaje de las cintas o el disco, ejecucion incorrecta del programa, perdida de cintas o discos.
La mayoria de estas causas se pueden enfrentar con el mantenimiento de los respaldos adecuados; de preferencia, en un lugar alejado de los datos originales.

Un problema más interesante es que hacer con los intrusos. Estos tienen dos variedades. Los intrusos pasivos solo desean leer archivos que no están autorizados a leer. Los intrusos activos son más crueles: Desean hacer cambios no autorizados a los datos. Si se desea diseñar un sistema seguro contra los intrusos, es importante tener en cuenta el tipo de intruso con el que se desea tener protección. Algunas de las categorias comunes son:
•  Curiosidad casual de usuarios no tecnicos. 
•  Conocidos husmeando.   
•  Un intento deliberado de hacer dinero. 
•  Espionaje comercias o militar.

Otro aspecto del problema de la seguridad es la privacia: la proteccion de las personas respecto del mal uso de la informacion en contra de uno mismo. Esto implica en forma casi inmediata muchos aspectos morales y legales.
Para proteger un sistema, debemos optar las necesarias medidas de seguridad en cuatro niveles distintos:
  1. Fisico. 
  2. Humano. 
  3. Sistema operativo.
  4. Red.
Referencias:
http://sistemasoperativos.angelfire.com/html/6.5.html

Clasificaciones de la seguridad

La seguridad interna esta relacionada a los controles incorporados al hardware y al Sistema Operativo para asegurar los recursos del sistema.


Seguridad Externa
La seguridad externa consiste en:
  • Seguridad fisica.
  • Seguridad operacional.
La seguridad fisica incluye:
  • Proteccion contra desastres(como inundaciones, incendios, etc.).
  • Proteccion contra intrusos.
En la seguridad fisica son importantes los mecanismos de deteccion , algunos ejemplos son:
  • Detectores de humo.
  • Sensores de calor.
  • Detectores de movimiento.
La proteccion contra desastres puede ser costosa y frecuentemente no se analiza en detalle; depende en gran medida de las consecuencias de la perdida.
La seguridad fisica trata especialmente de impedir la entrada de intrusos:
  • Se utilizan sistemas de identificacion fisica:
    • Tarjetas de identificacion.
    • Sistemas de huellas digitales.
    • Identificacion por medio de la voz.
Seguridad Operacional
Consiste en las diferentes politicas y procedimientos implementados por la administracion de la instalacion computacional.
La autorizacion determina que acceso se permite y a quien.
La clasificacion divide el problema en subproblemas:
  • Los datos del sistema y los usuarios se dividen en clases:
    • A las clases se conceden diferentes derechos de acceso.
Un aspecto critico es la seleccion y asignacion de personal:
  • La pregunta es si se puede confiar en la gente.
  • El tratamiento que generalmente se da al problema es la division de responsabilidades:
    • Se otorgan distintos conjuntos de responsabilidades.
    • No es necesario que se conozca la totalidad del sistema para cumplir con esas responsabilidades.
    • Para poder comprometer al sistema puede ser necesaria la cooperacion entre muchas personas:
      • Se reduce la probabilidad de violar la seguridad.
    • Debe instrumentarse un gran numero de verificaciones y balances en el sistema para ayudar a la deteccion de brechas en la seguridad.
    • El personal debe estar al tanto de que el sistema dispone de controles, pero:
      • Debe desconocer cuales son esos controles:
        • Se reduce la probabilidad de poder evitarlos.
      • Debe producirse un efecto disuasivo respecto de posibles intentos de violar la seguridad.
Referencias: http://sistemasoperativos.angelfire.com/html/6.6.html