Capacidades
Conceptual, una capacidad es como la fila de una matriz del control de acceso. Cada tema ha asociado a ella un sistema de pares, con cada par conteniendo un objeto y un sistema de las derechas. El tema asociado a esta lista puede tener acceso al objeto nombrado de cualesquiera de las maneras indicadas por las derechas nombradas. Más formalmente:
Abreviamos la "lista de la capacidad" como C-Lista. Las capacidades encapsulan identidad del objeto. Cuando un proceso presenta una capacidad a nombre de un usuario, el sistema operativo examina la capacidad para determinar el objeto y el acceso a los cuales se da derecho el proceso. Esto refleja cómo los capabiliies para la gerencia de la memoria trabajan; la localización del objeto en memoria se encapsula en la capacidad. Sin una capacidad, el proceso no puede nombrar el objeto en una manera que le dé el acceso deseado.
Los "codewords" de Iliffe son similares a las capacidades. las "capacidades" son una manera de controlar el acceso a los objetos en memoria o almacenaje secundario. Fabry generalizó esta idea de poner la dirección en ejecucio'n capacidad-basada. La arquitectura de capacidades es más interesante que la de las listas del control de acceso. El Access Control List y la identidad de proceso están bajo control del sistema operativo. En ausencia de defectos, los procesos del usuario pueden cambiarlos solamente invocando los servicios del sistema operativo. Sin embargo, un proceso debe identificar una capacidad para utilizarla, así que el proceso debe tener cierto control sobre las capacidades. Si el proceso puede forjar una capacidad y después utilizarla, los controles de acceso fallan. Puesta en práctica de capacidadesTres mecanismos se utilizan para proteger capacidades: etiquetas, memoria protegida, y criptografía. Una arquitectura marcada con etiqueta tiene un sistema de pedacitos asociados a cada palabra del hardware. La etiqueta tiene dos estados: el sistema y unset. Si se fija la etiqueta, un proceso ordinario puede leer pero no modificar la palabra. Si es la etiqueta unset, un proceso ordinario puede leer y modificar la palabra. Además, un proceso ordinario no puede cambiar el estado de la etiqueta; el procesador debe estar en un modo privilegiado a hacer tan.
Más común es utilizar los pedacitos de la protección asociados a la paginación o a la segmentación. Todas las capacidades se almacenan en una página (segmento) que el proceso pueda leer pero no alterar. Esto no requiere ningún hardware special-purpose con excepción de ése usado por el esquema de la gerencia de la memoria. Pero el proceso debe referirse a capacidades indirectamente, generalmente a través de indicadores, más bien que directamente.
Un tercer alternativa es utilizar la criptografía. La meta de etiquetas y de la protección de la memoria es evitar que las capacidades sean alteradas. Esto es relacionado con la comprobación de la integridad. Las sumas de comprobación criptográficas son otro mecanismo para comprobar la integridad de la información. Cada capacidad tiene una suma de comprobación criptográfica asociada a ella, y la suma de comprobación digital se codifica usando un cryptosystem que llave se sepa al sistema operativo. Cuando el proceso presenta una capacidad al sistema operativo, los primeros recomputes del sistema que la suma de comprobación criptográfica se asoció a la capacidad. Después codifica la suma de comprobación usando la llave criptográfica y la compara con la que esta' almacenada en la capacidad, o descifra la suma de comprobación proporcionada la capacidad y la compara con la suma de comprobación computada. Si emparejan, la capacidad es inalterada. Si no, se rechaza la capacidad.
Capacidades de copiado y que amplificanLa capacidad de copiar capacidades implica la capacidad de dar las derechas. Para evitar que los procesos den indistintamente las derechas ausentes, una bandera de la copia se asocia a capacidades. Un proceso no puede copiar una capacidad a otro proceso a menos que se fije la bandera de la copia. Si el proceso copia la capacidad, la bandera de la copia puede ser dada vuelta apagado (en la discreción del proceso o del núcleo).
La amplificación es el aumento de privilegios. La idea de la programación modular, y especialmente de los tipos de datos abstractos, requiere que las derechas que un proceso tiene sobre un objeto estén amplificadas. Para entender porqué, considere el tipo de datos abstracto siguiente para un contador. contador del módulo; ctr increment(var de la entrada del procedimiento: número entero); comience el ctr: = ctr + 1; extremo; getval(ctr de la entrada de la función: número entero); comience getval: = ctr; extremo; ctr clear(var de la entrada del procedimiento: número entero); comience el ctr: = 0; extremo; extremo. Suponga que x está declarado para ser un contador. Las reglas de los tipos de datos abstractos admiten que objeto que se alcanzará solamente por el módulo contrario. Así pues, la capacidad para x contendría inicialmente la derecha de invocar el módulo contrario solamente. Pero cuando el objeto se pasa al módulo contrario, el proceso debe ahora poder leer y escribir a ese objeto. Por lo tanto, la capacidad debe ser amplificada temporalmente mientras que el contador del módulo es activo.
Revocación de las derechasEn un sistema de la capacidad, revocar el acceso a un objeto requiere que todas las capacidades que conceden el acceso a ese objeto estén revocadas. Conceptual, cada proceso podía ser comprobado, y las capacidades ser suprimido. El coste de tal operación sería inaceptable, sin embargo, así que se utilizan los métodos alternativos. El mecanismo más simple es engaño. Defina unas o más tablas globales del objeto. En este esquema, cada objeto tiene una entrada correspondiente en una tabla. Las capacidades no nombran el objeto directamente; nombran la entrada en la tabla que corresponde al objeto. Este esquema tiene varias ventajas. Primero, revocar capacidades, la entrada en la tabla global del objeto se invalida. Después cualquier referencia obtendrá una entrada inválida de la tabla y será rechazada. En segundo lugar, si solamente se van algunas de las capacidades a ser revocadas, el objeto puede tener entradas múltiples, cada uno que corresponde a un diverso sistema de las derechas o un diverso grupo de usuarios.
Un mecanismo alternativo de la revocación utiliza el tipo de datos abstracto encargados. Se incluye con cada tipo de datos abstracto un procedimiento de la revocación. Cuando el acceso debe ser revocado, el tipo encargado simpy rechaza otros accesos del tema que se están revocando las derechas. Esto no afecta métodos alternativos de tener acceso a los objetos subyacentes los tipos de datos abstractos. Por ejemplo, el acceso a un archivo puede ser revocado, pero esta técnica no bloquearía el acceso a los segmentos subyacentes a través de un tipo alternativo encargado. El sistema SCP3 utilizó esta técnica. Comparación con las listas del control de accesoDos preguntas son la base del uso de los controles de acceso:
En teoría, las listas o las capacidades del control de acceso pueden contestar a estas preguntas. Para la primera pregunta, las capacidades son las más simples; lista justa los elementos de la C-Lista asociada del tema. Para la segunda pregunta, ACLs son los más simples; lista justa los elementos del Access Control List del objeto. En un sistema de ACL-based, contestar a la primera pregunta requiere todos los objetos ser explorada. El sistema extrae todas las entradas del ACL asociadas al tema en la pregunta. En un sistema capacidad-basado, contestar a la segunda pregunta requiere todos los temas ser explorada. El sistema extrae todas las capacidades asociadas al objeto en la pregunta. Karger y Herberto especulan que la diferencia práctica en contestar a la segunda pregunta es la razón más listas del control de acceso del uso de los sistemas que capacidades. Esta pregunta se hace más a menudo que el primer. Pues el foco de la respuesta del incidente cambia de puesto de "quién tuvo acceso al objeto" para incluir "qué más hizo ese acceso sujeto," los sistemas capacidad-basados pueden llegar a ser más comunes. esto es un artículo agregado por Fred Foster
|
|||||||||||
|