
3.2.- Funciones de un sistema de protección
3.4.- Implantación de matrices de derecho
3.5.- Mecanismo de protección de Windows 95
3.5.1.- Protección de memoria
3.5.2.- Protección de dispositivos
3.5.3.- Protección del sistema operativo
Todo Sistema Operativo debe tener implementado un módulo dedicado
a la protección. Se implementa mediante el uso de funciones especialmente
diseñadas para eso que conforman el nivel 5 en la teoría
de los Sistemas Operativos en Estratos o Capas.
FUNCIONES DE UN SISTEMA DE PROTECCIÓN.
Dado que los sistemas de computo se han venido haciendo cada vez más sofisticados en sus aplicaciones, la necesidad de proteger su integridad, también ha crecido. Los aspectos principales de protección en un Sistema Operativo son:
1. Protección de los procesos del sistema contra los procesos
de usuario.
2. Protección de los procesos de usuario contra los de otros
procesos de usuario.
3. Protección de Memoria.
4. Protección de los dispositivos.
MECANISMOS Y POLÍTICAS. (LIMITACIONES)
La función de la protección en un sistema computacional es la de proveer un mecanismo para la aplicación de políticas que gobiernen el uso de los recursos. Estas políticas pueden ser establecidas de varias maneras. Algunas son fijadas durante el diseño del sistema, mientras que otras son formuladas como parte de la administración en la ejecución del sistema. Algunas otras son definidas por usuarios individuales para proteger sus archivos y programas. Un sistema de protección debe tener la flexibilidad para aplicar las políticas que sean declaradas para ello.
Las políticas para el uso de recursos puede variar, dependiendo de la aplicación y pueden estar sujetas a cambios. Por estas razones, la protección no puede ser considerada como un problema que solamente concierne al diseñador de un Sistema Operativo, sino que debe considerarse, como una herramienta para los programadores de aplicaciones, de manera que los recursos creados y soportados por un subsistema de aplicación, puedan ser protegidos contra el mal uso.
Un principio importante es la separación entre política y mecanismo. Los mecanismos determinan como será realizado algo. En contraste, las políticas deciden que es lo que se realizará. Es posible que las políticas cambien de lugar en lugar o de tiempo en tiempo. En el peor de los casos, cada cambio en la política requerirá un cambio en el subyacente mecanismo.
DOMINIO DE PROTECCIÓN.Un sistema computacional es una colección de procesos y objetos. Los objetos involucran tanto objetos hardware (como CPU, segmentos de memoria, impresoras, etc.) y objetos software (como archivos, programas, semáforos, etc.). Cada objeto tiene un nombre único que lo diferencía de los demás objetos del sistema y cada una puede ser accesado solamente mediante operaciones bien definidas. Los objetos son esencialmente tipos de datos abstractos. Las posibles operaciones que realice un objeto, dependen de él mismo y sus características.
Por ejemplo, un CPU se utiliza solo para ejecución; en los segmentos de memoria se puede leer o escribir; los archivos de datos pueden ser creados, abiertos, escritos, leídos, cerrados y borrados; un archivo de programa puede ser leído, escrito, ejecutado y borrado.
Obviamente, un proceso tendrá permitido accesar solamente a aquellos recursos que está autorizado a accesar solamente a aquellos recursos que está autorizado a accesar. Además, en un momento dado podrá accesar a aquellos recursos que requiera para realizar su tarea. Este requerimiento comúnmente llamado el principio "Need_To_Know" es útil en la limitación de la cantidad de daño que un proceso defectuoso pueda causar al sistema.
Por ejemplo, cuando un proceso "P" invoque al procedimiento "A", al procedimiento le será permitido accesar solamente sus propias variables y los parámetros actuales pasados a él; no podrá accesar todas las variables del proceso "P". Similarmente considérese el caso de que el proceso "P" invoque algún compilador para compilar algún archivo. El compilador no podrá accesar cualquier archivo arbitrariamente, sino a un subconjunto bien definido de archivos (tales como: archivos fuente, archivos de listado, etc.) relacionados al archivo que será compilado. De manera inversa, el compilador no puede tener archivos privados que utilice para propósitos de conteo y optimización, los cuales no podrán ser accesados por el proceso "P".
Para facilitar este esquema se introduce el concepto de dominio de protección. Un proceso opera dentro de un dominio de protección, el cual especifica los recursos que el proceso puede accesar. Cada dominio define un conjunto de objetos y los tipos de operaciones que pueden ser realizadas sobre cada objeto.
La capacidad de ejecutar una operación sobre un objeto es un derecho de acceso. Un dominio es una colección de derechos de acceso, cada uno de los cuales es un par ordenado <Nombre_Objeto, Conjunto_de_Operaciones>.
Por ejemplo, si el dominio "D" tiene derecho de acceso <Archivo F, {Leer, Escribir}>, entonces un proceso que se está ejecutando en el dominio "D" puede tanto leer como escribir en el archivo F; no podrá realizar alguna otra operación sobre este objeto.
Los dominios de protección no necesitan ser distintos; por el
contrario, pueden compartir derechos de acceso. Por el contrario, pueden
compartir derechos de acceso. Por ejemplo; en la siguiente figura:
| D1 | D2 | D3 |
| <O3, {Leer, Escribir}> | <O2, {Escribir}> | <01, {Ejecutar}> |
| <O1, {Leer, Escribir}> | <O4, {Imprimir}> | <O3, {Leer}> |
| <O4, {Imprimir}> |
Se tienen 3 dominios de protección: D1, D2 y D3. El derecho de
acceso <O4, Imprimir> está compartido por los dominios "D2" y
"D3". Esto implica que un proceso ejecutándose en el dominio "D1"
puede tanto leer como escribir sobre el objeto "O1"; mientras que ejecutándose
en el dominio "D3", el proceso podrá solamente ejecutar ese mismo
objeto.
IMPLANTACION DE MATRICES CON DERECHOS DE ACCESO.
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".
Considérese la siguiente matriz de acceso:
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|||
|
|
|
|
|||
|
|
|
|
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".
ESTRUCTURAS DE PROTECCIÓN DINAMICAS.Las matrices de acceso vistas hasta el momento, en las que no cambian los derechos en cada dominio durante su ejecución, son un ejemplo de Estructuras de Protección Estáticas. Con el fin de ofrecer flexibilidad y de implementar eficientemente la protección, un Sistema Operativo debe soportar cambios en los derechos de acceso. Para esto se requiere implementar alguna estructura de protección dinámica.
En este caso continuaremos considerando las matrices de acceso, aunque
en su versión dinámica. Básicamente se requieren cuatro
nuevos derechos de acceso: Copia, Cambio, Propietario y Control.
DERECHO DE ACCESO COPIA.
Este derecho de acceso da la facultad a un proceso de copiar derechos existentes en un dominio hacia otro dominio para el objeto en cuestión. O sea, este derecho genera copias en columnas.
Por ejemplo, considérese la siguiente matriz de acceso:
|
|
|
|
|
|
|
|
|
|
||
|
|
Escribir |
|||
|
|
|
|||
|
|
|
|
En este caso estará indicado el derecho copia añadiendo el signo (+) al nombre de los derechos que pueden ser copiados.
En la tabla se indica que un proceso ejecutándose en el dominio 1 podrá copiar hacia cualquier otro dominio, el derecho enviar sobre el objeto "COM1" y que un proceso ejecutándose en el dominio "D2" podrá copiar el derecho "Leer" hacia cualquier otro dominio sobre el objeto "Archivo2".
De esta manera, en algún momento posterior, la situación
de la tabla podría ser la siguiente:
| Archivo 1 | Archivo 2 | COM 1 | Impresora | |
| D1 | Escribir | Leer | Enviar+ | |
| D2 | Leer+
Escribir |
|||
| D3 | Recibir | |||
| D4 | Leer | Enviar | Imprimir |
En la que se ha copiado el derecho "Enviar" del dominio "D1" al dominio "D4" sobre el objeto "COM1" y se ha copiado el derecho "Leer" del dominio "D2" al dominio "D1" sobre el objeto "Archivo 2".
Puede observarse que los derechos "copiados" no contienen el signo (+), o sea, se ha realizado una copia limitada. En general se podría hablar de 3 variantes del derecho "copia": Copia Limitada, Copia Completa, Translación.
COPIA LIMITADA. La copia no incluye el derecho "Copia", con lo que no se podrán hacer copias sucesivas del derecho. Se puede indicar con el signo (+).
COPIA COMPLETA. La copia incluye el derecho "Copia", por lo que se pueden realizar copias sucesivas del derecho. Se puede indicar con el signo (*).
TRANSLACIÓN. El derecho en cuestión junto con el derecho copia se eliminan del dominio original y se coloca en el nuevo dominio. Esta es una forma básica de retirar derechos de un dominio para asignarlo a otro. Se puede indicar con el signo (?).
DERECHO DE ACCESO CAMBIO.Este derecho de acceso indica la posibilidad de un proceso para cambiarse
de un dominio a otro. La operación cambio actúa sobre dominios,
o sea, en este caso los dominios son los objetos. Entonces, para considerar
este derecho de acceso se deberán incluir los dominios como objetos
adicionales en la matriz de acceso. Considérese la siguiente matriz
de acceso:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
Escribir |
|
||||||
|
|
|
|||||||
|
|
|
|
|
|
Esta tabla indica que un proceso ejecutándose en "D1" puede cambiarse
al dominio "D4" (a); un proceso ejecutándose en "D2" puede cambiarse
a "D3"(b) y un proceso ejecutándose en el dominio "D4" puede cambiarse
a "D1"(c).
MECANISMOS DE PROTECION DE WINDOWS '95
Siempre que una aplicacion intenta acceder a una
zona de memoria que no está comprendida dentro de su mapa actual
de memoria, el procesador 386 genera una interrupción y pasa al
sistema operativo un conjunto de información relativa al problema.
1. Esto se logra por medio de tablas de paginas que describen exactamente
las áreas de memoria física a las que un programa puede acceder.
2. Un indicador de lectura/escritura para impedir modificar una pagina
de solo lectura o de codigo de programa.
3. Un indicador de usuario/supervisor que permite al sistema operativo
proteger su propia memoria de cualquier intento de acceso.
La proteccion de dispositivos es otra área a tratar dentro de Windows '95. En la implementacion de la proteccion de dispositivos se toman en cuenta la referencia de dirección de entrada /salida y una IRQ (Solicitud de Interrupcion) con las que se protege del uso mal administrado o concurrente (que dos usuarios traten de escribir simultaneamente a el).
PROTECCION DEL SISTEMA OPERATIVO
El objetivo de establecer este tipo de proteccion
es el de impedir que un programa pueda corromper la operacion del sistema.
El nucleo de Windows '95 tiene que ser el único
software capaz de realizar operaciones de conmutacion de tareas, manejo
de Interrupciones, etc.
Esto se soluciona por medio de la asignacion de
4 niveles de proteccion establecidos a traves de los bits DPL que se encuentran
en el Descriptor.
El primero (Nivel 0) propone que un software con
ese privilegio puede hacer lo que quiera: cambiar tablas de pagina, conmutar
entre modos del procesador, activar y desactivar paginas, parar el procesador,
etc.
El segundo y tercero (niveles 1y2) hasta la fecha
no se ha requerido de ellos, es por eso que no existe tanta documentacion
acerca de ellos.
Por ultimo, el cuarto nivel (3) en el que se ejecutan
todas las aplicaciones. Al tener este privilegio y querer ejecutar cualquier
operacion del nivel 0 harán que el procesador genere una interrupción.