domingo, 22 de noviembre de 2015

6.8 CIFRADO




   CIFRADO



El cifrado es un método que permite aumentar la seguridad de un mensaje o de un archivo mediante la codificación del contenido, de manera que sólo pueda leerlo la persona que cuente con la clave de cifrado adecuada para decodificarlo. Por ejemplo, si realiza una compra a través de Internet, la información de la transacción (como su dirección, número de teléfono y número de tarjeta de crédito) suele cifrarse a fin de mantenerla a salvo. Use el cifrado cuando desee un alto nivel de protección de la información.

Métodos y Técnicas de Cifrado:

Cifrado de sustitución

El cifrado de sustitución consiste en reemplazar una o más entidades (generalmente letras) de un mensaje por una o más entidades diferentes.
Existen varios tipos de cripto sistemas de sustitución:
• La sustitución mono alfabética consiste en reemplazar cada una de las letras del mensaje por otra letra del alfabeto.
• La sustitución poli alfabética consiste en utilizar una serie de cifrados mono alfabéticos que son re-utilizados periódicamente.
• La sustitución homófona hace posible que cada una de las letras del mensaje del texto plano se corresponda con un posible grupo de caracteres distintos.
• La sustitución poligráfica consiste en reemplazar un grupo de caracteres en un mensaje por otro grupo de caracteres.
Cifrado César

Este código de cifrado es uno de los más antiguos ya que su uso se remonta a Julio César. El principio de cifrado se basa en la adición de un valor constante a todos los caracteres de un mensaje o, más precisamente, a su código ASCII.
Cifrado ROT 13

El caso específico del cifrado César donde la clave de cifrado es N (la 13º letra del alfabeto) se denomina ROT 13? (se eligió el número 13, la mitad de 26, para que sea posible cifrar y descifrar fácilmente mensajes textuales).

Cifrado de Transposición

El método de cifrado por transposición consiste en re ordenar datos para cifrar los a fin de hacerlos ininteligibles. Esto puede significar, por ejemplo, re ordenar los datos geométrica mente para hacerlos visualmente inutilizables.

El Cifrado Simétrico.

El cifrado simétrico (también conocido como cifrado de clave privada o cifrado de clave secreta) consiste en utilizar la misma clave para el cifrado y el descifrado.
El cifrado consiste en aplicar una operación (un algoritmo) a los datos que se desea cifrar utilizando la clave privada para hacerlos ininteligibles. El algoritmo más simple (como un OR exclusivo) puede lograr que un sistema prácticamente a prueba de falsificaciones (asumiendo que la seguridad absoluta no existe).

El Cifrado Asimétrico.

El cifrado asimétrico (también conocido como cifrado con clave pública). En un criptosistema asimétrico (o criptosistema de clave pública), las claves se dan en pares:
• Una clave pública para el cifrado.
• Una clave secreta para el descifrado.

En un sistema de cifrado con clave pública, los usuarios eligen una clave aleatoria que sólo ellos conocen (ésta es la clave privada). A partir de esta clave, automáticamente se deduce un algoritmo (la clave pública). Los usuarios intercambian esta clave pública mediante un canal no seguro.





6.7 VALIDACIÓN Y AMENAZAS AL SISTEMA



VALIDACIÓN Y AMENAZAS AL SISTEMA



Los tipos de amenazas a la seguridad de un sistema informático los podemos caracterizar teniendo en cuenta como esta información es suministrada por el sistema. En general, hay un flujo de información de una fuente a un destino.

Dentro de las amenazas que existen podemos mencionar las siguientes:

*Interrupción: Un elemento del sistema es destruido o se hace inservible. Es una amenaza a la disponibilidad. Ejemplos son la destrucción de algún elemento hardware  y la des activación del sistema de gestión de ficheros.

* Intercepción: Una parte no autorizada obtiene acceso a un elemento relacionado con la seguridad. Es una amenaza a la privacidad. Ejemplos son la copia ilícita de programas y la visualización de ficheros que han de permanecer ocultos.


* Modificación: Una parte no autorizada no sólo obtiene acceso sino que puede modificar un elemento relacionado con la seguridad. Es una amenaza a la integridad. Ejemplos son la alteración del contenido de un fichero y modificar un programa para que funcione de forma diferente.

* Fabricación: Una parte no autorizada inserta nuevos elementos en el sistema. Es una amenaza a la integridad. Ejemplos son adición de registros a un fichero y la inclusión de mensajes espúreos en una red.

*Intrusos: dentro de ellos tenemos lo que son los piratas o hackers: que son los individuos que acceden al sistema sin autorización y hacen que los sistemas presenten agujeros que es el lugar por donde consiguen colarse.

AMENAZAS DE TIPO SOFTWARE


· Bomba Lógica: Es un código incrustado en un programa que comprueba si ciertas condiciones se cumplen, en cuyo caso ejecuta alguna acción no autorizada. Un ejemplo de uso de bomba lógica es el caso de un programador que vende un programa a una empresa. Si transcurrido un cierto tiempo la empresa no ha pagado, el programador revela la existencia de la bomba lógica con el fin de obtener su dinero.

· Puerta Falsa (Trapdoor): Es un punto de entrada secreto en un programa, de forma que alguien que conozca la existencia de dicha puerta puede obtener permisos de acceso sin tener que pasar por los mecanismos normales de autentificación.

· Caballo de Troya (Trojan Horse): Es una rutina oculta en un programa de utilidad. Cuando el programa se ejecuta, se ejecuta la rutina y ésta realiza acciones no autorizadas. Estos programas permiten realizar de forma indirecta acciones que no puede realizar de forma directa. Por ejemplo, puede ser un editor que cuando es ejecutado modifica los permisos de los ficheros que edita de forma que éstos puedan ser accedidos por cualquier usuario.

· Virus: Es código introducido en un programa que puede infectar otros programas mediante la copia de sí mismo en dichos programas.

· Bacteria: Programa que consume recursos del sistema replicándose asimismo, pero no daña explícita mente ningún fichero. Se suele reproducir exponencial mente, por lo que puede acaparar recursos como CPU, memoria y disco.

· Gusano (Worm): Es un programa que usa las redes de computadores para pasar de unos sistemas a otros. Una vez que llega a un sistema, el gusano se puede comportar como un virus o una bacteria, puede implantar programas caballo de troya, o puede realizar acciones no autorizadas.

ATAQUES GENÉRICOS A SISTEMAS OPERATIVOS

A sincronismo:
  • Se tienen procesos múltiples que progresan a sincrónicamente.
  • Un proceso podría modificar los parámetros ya validados por otro proceso pero aún no utilizados.
Rastreo:
  • Un usuario revisa el sistema intentando localizar información privilegiada.
Entre líneas:
  • Se utiliza una línea de comunicaciones mantenida por un usuario habilitado que está inactivo.
Código clandestino:
  • Se modifica el S. O. bajo una presunta depuración pero se incorpora código que permite ingresos no autorizados.
Procesos sincronizados interactivos:
  • Se utilizan las primitivas de sincronización del sistema para compartir y pasarse información entre sí.
Disfraz:
  • El intruso asume la identidad de un usuario legítimo luego de haber obtenido la identificación apropiada por medios clandestinos.
Ataque “nak”:
  • Si el S. O. permite a un usuario:
    • Interrumpir un proceso en ejecución mediante una “tecla” de“reconocimiento negativo”.
    • Realizar otra operación.
    • Reanudar el proceso interrumpido.
  • Un intruso podría “encontrar” al sistema en un estado no protegido y hacerse con el control.
Engaño al operador:
  • Con un engaño se hace realizar al operador una acción que comprometa la seguridad del sistema.
Parámetros inesperados:
  • El intruso suministra valores inesperados a una llamada al núcleo.
  • Intenta aprovechar una debilidad de los mecanismos de verificación de la legalidad del S. O.


6.6 CLASIFICACIÓN DE LA SEGURIDAD



CLASIFICACIÓN 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 física.
  • Seguridad operacional.
La seguridad física incluye:
  • Protección contra desastres(como inundaciones, incendios, etc.).
  • Protección contra intrusos.
En la seguridad física son importantes los mecanismos de detección , algunos ejemplos son:
  • Detectores de humo.
  • Sensores de calor.
  • Detectores de movimiento.
La protección contra desastres puede ser costosa y frecuentemente no se analiza en detalle; depende en gran medida de las consecuencias de la perdida.
La seguridad física trata especialmente de impedir la entrada de intrusos:
  • Se utilizan sistemas de identificación física:
    • Tarjetas de identificación.
    • Sistemas de huellas digitales.
    • Identificación por medio de la voz.
Seguridad Operacional
Consiste en las diferentes políticas y procedimientos implementados por la administracion de la instalación computacional.
La autorización determina que acceso se permite y a quien.
La clasificación divide el problema en sub problemas:
  • 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 selección y asignación de personal:
  • La pregunta es si se puede confiar en la gente.
  • El tratamiento que generalmente se da al problema es la división 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 cooperación 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 detección 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.
Para diseñar medidas efectivas de seguridad se debe primero:
  • Enumerar y comprender las amenazas potenciales.
  • Definir que grado de seguridad se desea (y cuanto se esta dispuesto a gastar en seguridad).
  • Analizar las contra medidas disponibles.

6.5 CONCEPTO DE SEGURIDAD



CONCEPTO DE SEGURIDAD 

Los términos seguridad y protección se utilizan en forma indistinta. Sin embargo, es útil hacer una distinción entre los problemas generales relativos a la garantía de que los archivos no sea leídos o modificados por personal no autorizado, lo que incluye aspectos técnicos, de administración, legales y políticos, por un lado y los sistemas específicos del sistema operativo utilizados para proporcionar la seguridad, por el otro. Para evitar la confusión, utilizaremos el termino seguridad para referirnos al problema general y el termino mecanismo de protección para referirnos a los mecanismos específicos del sistema operativo utilizado para resguardar la información de la computadora. Sin embargo, la frontera entre ellos no esta bien definida. Primero nos fijaremos en la seguridad; mas adelante analizaremos la protección.
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 telecomunicación o errores en el programa.
•  Errores Humanos: Entrada incorrecta de datos, mal montaje de las cintas o el disco, ejecución incorrecta del programa, perdida de cintas o discos.
La mayoría 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 mas 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 mas 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 categorías comunes son:
•  Curiosidad casual de usuarios no técnicos. Muchas personas tienen en sus escritorios terminales para sistemas con tiempo compartido y, por la naturaleza humana, algunos de ellos leerán el correo electrónico de los demás u otros archivos, si no existen barreras en frente de ellos. Por ejemplo la mayoría de los sistema UNIS tienen pre definido que todos los archivos se pueden leer de manera publica.
•  Conocidos husmeando. Algunos estudiantes, programadores de sistemas, operadores y demás personal técnico consideran como un reto personal romper la seguridad del sistema de computo local. A menudo son muy calificados y están dispuestos a invertir una cantidad sustancial de su tiempo en este esfuerzo.  
•  Un intento deliberado de hacer dinero. Algunos programadores en banco han intentado penetrar un sistema bancario con el fin de robarle al banco. Los esquemas han variado desde cambiar el software para truncar y no redondear el interés, para quedarse con una pequeña fracción de dinero, hasta sacar dinero de las cuentas que no se han utilizado en anos o el "correo negro" .
•  Espionaje comercias o militar. El espionaje indica un intento serio y fundamentado por parte de un competidor u otro país para robar programas, secretos comerciales, patentes, tecnología, disenso de circuitos, planes de comercialización, etc. A menudo, este intento implica la cobertura de cables o el levantamiento de antenas hacia la computadora con el fin de recoger su radiación electromagnética.
Debe quedar claro que el intento por mantener la KGB lejos de los secretos militares es un poco distinto del intento por evitar que los estudiantes inserten un mensaje gracioso en el sistema. La cantidad de esfuerzo que alguien pone en la seguridad y la protección depende claramente de quien se piensa sea el enemigo.
Otro aspecto del problema de la seguridad es la privacia: la protección de las personas respecto del mal uso de la información 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. El nodo o nodos que contengan los sistemas informáticos deben dotarse de medidas de seguridad físicas frente a posibles intrusiones armadas o subrepticias por parte de potenciales intrusos. Hay que dotar de seguridad tanto a las habitaciones donde las maquinas residan como a los terminales o estaciones de trabajo que tengan acceso a dichas maquinas.
  2. Humano. La autorización de los usuarios debe llevarse a cabo con cuidado, para garantizar que solo los usuarios apropiados tengan acceso al sistema. Sin embargo, incluso los usuarios autorizados pueden verse “motivados” para permitir que otros usen su acceso (por ejemplo, a cambio de un soborno). También pueden ser engañados para permitir el acceso de otros, mediante técnicas de ingeniería social . Uno de los tipos de ataque basado en las técnicas de ingeniería social es el denominado phishing ; con este tipo de ataque, un correo electrónico o pagina web de aspecto autentico llevan a engaño a un usuario para que introduzca información confidencial. Otra técnica comúnmente utilizada es el análisis de desperdicios , un termino autorizado a la computadora (por ejemplo, examinando el contenido de las papeleras, localizando listines de teléfonos encontrando notas con contraseñas). Estos problemas de seguridad son cuestiones relacionadas con la gestión y con el personal, mas que problemas relativos a los sistemas operativos.
  3. Sistema operativo. El sistema debe auto protegerse frente a los diversos fallos de seguridad accidentales o premeditados. Un problema que este fuera de control puede llegar a constituir un ataque accidental de denegación de servicio. Asimismo, una cierta consulta a un servicio podría conducir a la revelación de contraseñas o un desbordamiento de la pila podría permitir que se iniciara un proceso no autorizado. La lista de posibles fallos es casi infinita.
  4. Red. Son muchos los datos en los modernos sistemas informáticos que viajen a través de lineas arrendadas privadas, de lineas compartidas como Internet, de conexiones inalambricas o de lineas de acceso telefónico. La interceptación de estos datos podría ser tan dañina como el acceso a un computador, y la interrupción en la comunicación podría constituir un ataque remoto de denegación de servicio, disminuyendo la capacidad de uso del sistema y la confianza en el mismo por parte de los usuarios.
Si queremos poder garantizar la seguridad del sistema operativo, es necesario garantizar la seguridad en los primeros dos niveles. Cualquier debilidad en uno de los niveles altos de seguridad (físico o humano) podría puentear las medidas de seguridad que son estrictamente de bajo nivel (del nivel del sistema operativo). Así, la frase que afirma que una cadena es tan fuerte como el mas débil de sus eslabones es especialmente cierta cuando hablamos de seguridad de los sistemas. Para poder mantener la seguridad, debemos contemplar todos estos aspectos.
Ademas, el sistema debe proporcionar mecanismos de protección para permitir la implementación de las características de seguridad. Sin la capacidad de autorizar a los usuarios y procesos, de controlar su acceso y de registrar sus actividades, seria imposible que un sistema operativo implementara medidas de seguridad o se ejecutara de forma segura. Para soportar un esquema global de protección hacen falta mecanismos de protección hardware. Por ejemplo, un sistema donde la memoria no este protegida no puede nunca estar seguro.







6.4 PROTECCIÓN BASADA EN EL LENGUAJE



PROTECCIÓN BASADA EN EL LENGUAJE

La protección se logra con la ayuda del núcleo del SO que valida los intentos de acceso a recursos. El gasto de inspeccionar y validar todos los intentos de acceso a todos los recursos es muy grande, por lo tanto debe ser apoyada por hardware. Al aumentar la complejidad del SO, se deben refinar los mecanismos de protección. 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 uso de recursos.El programador de aplicaciones necesita un mecanismo de control de acceso seguro y dinámico para distribuir capacidades a los recursos del sistema entre los procesos de usuario.

Las construcciones que permiten al programador declarar las restricciones tienen tres operaciones básicas
  • Distribuir capacidades de manera segura y eficiente entre procesos clientes.
  • Especificar el tipo de operaciones que un proceso podría invocar en un recurso asignado. 
  • Especificar el orden en que un proceso dado puede invocar las operaciones de un recurso.
  • La especificación de protección en un lenguaje de programación permite la descripción de alto nivel de políticas para la asignación y uso de recursos. 
  • La implementación del lenguaje puede proveer software para hacer cumplir la protección cuando no se pueda validar si el hardware está soportado. 
  • Interpretar las especificaciones de protección para generar llamadas en cualquier sistema de protección provisto por el hardware y el SO.

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, debemos apoyarla con hardware para reducir el costo de cada validación o bien debemos aceptar que el diseñador del sistema podría inclinarse por sacrificar los objetivos de la protección. Es difícil satisfacer todos estos objetivos si los mecanismos de soporte con que se cuenta restringen la flexibilidad para implementar diversas políticas de protección.

A medida que ha aumentado la complejidad de los sistemas operativos, sobre todo al trata de ofrecer interfaces de más alto nivel con el usuario, lo objetivos de la protección se han vuelto mucho más refinados. En esta refinación observamos que los diseñadores de los diseñadores de los sistemas de protección se han apoyado mucho en ideas que se originaron en los lenguajes de programación y especialmente en los conceptos de tipos de datos abstractos y objetos. Los sistemas de protección ahora se ocupan no sólo de la identidad de un recurso al cual se intenta acceder, sino también de la naturaleza funcional de ese acceso. En los sistemas de protección más nuevos, el interés en la función que se invocará se extiende más allá de un conjunto de funciones definidas por el sistema, como los métodos de acceso a archivos estándar, para incluir funciones que también podrían ser definidas por el usuario.

Las políticas para el uso de recursos también podrían variar, dependiendo de la aplicación, y podrían cambiar con el tiempo. Por estas razones, la protección ya no puede considerarse como un asunto que sólo concierne al diseñador de un sistema operativo; también debe estar disponible como herramienta que el diseñador de aplicaciones pueda usar para proteger los recursos de un subsistema de aplicación contra intervenciones o errores.

Aquí es donde los lenguajes de programación entran en escena. Especificar el control de acceso deseado a un recurso compartido en un sistema es hacer una declaración acerca del recurso. Este tipo de declaración se puede integrar en un lenguaje mediante una extensión de su mecanismo de tipificación. Si se declara la protección junto con la tipificación de los datos, el diseñado de cada subsistema puede especificar sus necesidades de protección así debería darse directamente durante la redacción del programa, y en el lenguaje en el que el programa mismo se expresa. Este enfoque tiene varias ventajas importantes: 

Las necesidades de protección se declaran de forma sencilla en vez de programarse como una secuencia de llamadas a procedimientos de un sistema operativo.

Las necesidades de protección pueden expresarse independientemente de los recursos que ofrezca un sistema operativo en particular.

El diseñador de un subsistema no tiene que proporcionar los mecanismos para hacer cumplir la protección.

Una notación declarativa es natural porque los privilegios de acceso están íntimamente relacionados con el concepto lingüístico de tipo de datos. 

Hay diversas técnicas que una implementación de lenguaje de programación puede utilizar para hacer cumplir la protección, pero cualquiera de ellas deberá depender hasta cierto punto del grado de soporte de una máquina subyacente y su sistema operativo. 


¿Qué ventajas relativas tiene entonces el cumplimiento basado exclusivamente en un núcleo, en comparación con el cumplimiento forzado en gran medida por un compilador?

Seguridad: La obligación del cumplimiento por un núcleo ofrece un mayor grado de seguridad del sistema de protección mismo, que el que ofrece la generación de código de verificación de protección por un compilador. En un esquema apoyado por compilador, la seguridad depende de lo correcto que sea el traductor, de algún mecanismo subyacente de gestión de almacenamiento que proteja los segmentos desde los cuales se ejecuta el código compilador y, en última instancia, de la seguridad de los archivos desde los que se carga el programa.


Flexibilidad: Hay límites a la flexibilidad de un núcleo de protección para implementar una política definida por el usuario, aunque podría proporcionar recursos suficientes para que el sistema haga cumplir sus propias políticas. Con un lenguaje de programación, se puede declarar la política de protección y hacerse cumplir según sea necesario en una implementación.

Eficiencia: Se logra la eficiencia máxima cuando hardware apoya directamente el cumplimiento de la protección. En la medida en que se requiera soporte de software, el cumplimiento basado en el lenguaje tiene la ventaja de que es posible verificar el cumplimiento del acceso estático fuera de línea en el momento de la compilación.  

En síntesis, la especificación de la protección en un lenguaje de programación permite describir un alto nivel de políticas de asignación y uso de recursos.



6.3 IMPLANTACIÓN DE MATRICES DE ACCESO



Implantación de matrices de acceso 


Los derechos de acceso definen que acceso tienen varios sujetos sobre varios objetos.
Los sujetos acceden a los objetos.
Los objetos son entidades que contienen información.
Los objetos pueden ser:
  • Concretos:
    • Ej.: discos, cintas, procesadores, almacenamiento, etc.
  • Abstractos:
    • Ej.: estructuras de datos, de procesos, etc.
Los objetos están protegidos contra los sujetos.
Las autorizaciones a un sistema se conceden a los sujetos.
Los sujetos pueden ser varios tipos de entidades:
  • Ej.: usuarios, procesos, programas, otras entidades, etc.
Los derechos de acceso mas comunes son:
  • Acceso de lectura.
  • Acceso de escritura.
  • Acceso de ejecución.
Una forma de implementan es mediante una matriz de control de acceso con:
  • Filas para los sujetos.
  • Columnas para los objetos.
  • Celdas de la matriz para los derechos de acceso que un usuario tiene a un objeto.
Una matriz de control de acceso debe ser muy celosamente protegida por el S. O.
Dominios de protección
Un sistema de cómputos contiene muchos objetos que necesitan protección. Estos objetos pueden ser el hardware, la CPU, los segmentos de memoria, terminales, unidades de disco o impresoras; o bien ser del software, como los proceso, archivos, bases de datos o semáforos.
Cada objeto tiene un único nombre mediante el cual se la hace referencia y un conjunto de operaciones que se pueden realizar en el. READ y WRITE son operaciones adecuadas para un archivo; UP y DOWN tiene sentido en un semáforo.
Es evidente que se necesita una via para prohibir el acceso de los procesos a los objetos a los que no tiene permitido dicho acceso. Ademas, este mecanismo debe posibilitar la restricción de los procesos a un subconjunto de operaciones legales en caso necesario. Por ejemplo, puede permitirse que el proceso A lea el archivo F, pero no escriba en el.
Para tener una forma de analizar los distintos mecanismos de protección, es conveniente presentar el concepto de dominio. Un dominio es un conjunto de parejas (objeto, derechos). Cada pareja determina un objeto y cierto subconjunto de las operaciones que se pueden llevar a cabo en el. Un derecho es, en este contexto, el permiso para realizar alguna de las operaciones.
Una pregunta importante es la forma en que el sistema lleva un registro de los objetos que pertenecen a un dominio dado. Al menos una teoría, uno puede imaginar una enorme matriz, en la que los renglones son los dominio y las columnas son los objetos. Cada cuadro contiene los derechos correspondientes al objeto en ese dominio. Con esta matriz y el numero de dominio activo, el sistema puede determinar si se permite el acceso de cierta forma a un objeto dado desde un domino especifico.
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 el.
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.














Matriz de acceso
El modelo de protección del sistema se puede ver en forma abstracta como una matriz, la matriz de acceso.
Una matriz de acceso es una representación abstracta del concepto de dominio de protección.
Este modelo fue propuesto por Lampson [4] como una descripción generalizada de mecanismos de protección en sistemas operativos. Es el modelo mas utilizado, del que existen numerosas variaciones, especialmente en su implementan.
Los elementos básicos del modelo son los siguientes:
 
•  Sujeto: Una entidad capaz de acceder a los objetos. En general, el concepto de sujeto es equiparable con el de proceso. Cualquier usuario o aplicación consigue acceder en realidad a un objeto por medio de un proceso que representa al usuario o a la aplicación.
•  Objeto: Cualquier cosa cuyo acceso debe controlarse. Como ejemplo se incluyen los archivos, partes de archivos, programas y segmentos de memoria.
•  Derecho de acceso: la manera en que un sujeto accede a un objeto. Como ejemplo están Leer, Escribir y Ejecutar.
El modelo considera un conjunto de recursos, denominados objetos, cuyo acceso debe ser controlado y un conjunto de sujetos que acceden a dichos objetos. Existe también un conjunto de permisos de acceso que especifica los diferentes permisos que los sujetos pueden tener sobre los objetos (normalmente lectura, escritura, etc., aunque pueden ser diferentes, en general, dependiendo de las operaciones que puedan realizarse con el objeto).
Se trata de especificar para cada pareja (sujeto, objeto), los permisos de acceso que el sujeto tiene sobre el objeto. Esto se representa mediante una matriz de acceso M que enfrenta todos los sujetos con todos los objetos. En cada celda M[i, j] se indican los permisos de acceso concretos que tiene el sujeto i sobre el objeto j.


El mecanismo de proteccion es la matriz, junto con todos los elementos que se han de anadir para que se cumplan de manera efectiva todas las restricciones de acceso a los objetos.
•  La politica consiste en decidir como rellenar las distintas celdas de la matriz.
•  La MA permite implementar operaciones de cambio de domino.
•  El objeto sobre el que trabajamos es el Dominio → aparecen tantas columnas como dominios haya en el sistema.
•  La operacion es la conmutacion de un dominio a otro.
•  Tambien la MA es un objeto que se puede modificar. De este modo podemos definir tres operaciones:
•  Copiar derechos de acceso de una celda a otra dentro de la misma columna. Consiste en pasar el derecho de acceso a un objeto de un Dominio que lo tiene, a otro donde originalmente no lo tenia. Se senala con un asterisco (*).
•  Copia ilimitada con propagacion del propio derecho de copia.
•  Copia limitada sin propagacion.
•  Movimiento de derecho.
•  Dueno. Un proceso ejecutandose en un dominio que tiene derecho de “dueno” sobre un objeto, puede repartir cualquier derecho de acceso sobre cualquier dominio para dicho objeto.
•  Control . Opera solo sobre dominios. Ejercer el control sobre un dominio implica que se puede quitar cualquier derecho sobre una fila de dominio.
         •  La MA también ha de ser protegida.





6.2 FUNCIONES DEL SISTEMA DE PROTECCIÓN




FUNCIONES DEL SISTEMA DE PROTECCIÓN

Control de acceso que hace referencia a las características 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 específicos o controlar el acceso a los recursos proporcionados por la aplicación.

Un sistema de protección deberá tener la flexibilidad suficiente para poder imponer una diversidad de políticas y mecanismos.
Existen varios mecanismos que pueden usarse para asegurar los archivos, segmentos de memoria, CPU, y otros recursos administrados por el Sistema Operativo.
Por ejemplo, el direccionamiento de memoria asegura que unos procesos puedan ejecutarse solo dentro de sus propios espacios de dirección. El timer asegura que los procesos no obtengan el control de la CPU en forma indefinida.

La protección se refiere a los mecanismos para controlar el acceso de programas, procesos, o usuarios a los recursos definidos por un sistema de computación. Seguridad es la serie de problemas relativos a asegurar la integridad del sistema y sus datos.
Hay importantes razones para proveer protección. 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 políticas fijadas para el uso de esos recursos.
Un recurso desprotegido no puede defenderse contra el uso no autorizado o de un usuario incompetente. Los sistemas orientados a la protección proveen maneras de distinguir entre uso autorizado y desautorizado.

Mecanismos y Políticas

El sistema de protección tiene la función de proveer un mecanismo para el fortalecimiento de las políticas que gobiernan el uso de recursos. Tales políticas se pueden establecer de varias maneras, algunas en el diseño 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 políticas son diversas, dependen de la aplicación y pueden estar sujetas a cambios a lo largo del tiempo. 
Un principio importante es la separación de políticas de los mecanismos. ‘Los mecanismos determinan como algo se hará. Las políticas deciden que se hará'.
La separación es importante para la flexibilidad del sistema.
Dentro de las funciones del sistema de protección del sistema operativo encontramos:
 
•  Controlar el acceso a los recursos
• Asegurarse que todos los accesos a los recursos del sistema están controlados.