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:

Deje O ser el sistema de objetos, y R el sistema de las derechas, de un sistema. Una lista c de la capacidad es un sistema de pares c = {(o, r): o incluido en O, r incluidos en R}. Deje el casquillo ser una función que determina la lista c de la capacidad asociada a un tema particular s. La interpretación del cap(s) de la lista de la capacidad = {(oi, ri): 1 < = i < = n} es que s sujeto puede tener acceso a oi usando a la derecha en ri.

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.

  

EJEMPLO: Para abrir un archivo de UNIX, un proceso da el nombre del archivo al núcleo. El núcleo obtiene el número del inode del archivo resolviendo el nombre con la jerarquía del archivo. Una vez que se obtenga el inode, el sistema se determina si se concede el acceso solicitado usando los permisos del control de acceso. Si se concede el acceso, el sistema operativo vuelve una capacidad llamada un descriptor del fichero. La capacidad está limitada firmemente al objeto del archivo, tan incluso si se suprime el archivo y un archivo nuevo con el mismo nombre se crea, el descriptor del fichero todavía refiere al archivo anterior.


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 capacidades

Tres 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.

EJEMPLO: El B5700 utilizó una arquitectura marcada con etiqueta (aunque no utilizó capacidades como mecanismos de la protección). El campo de la etiqueta consistió en tres pedacitos e indicó cómo la arquitectura era tratar la palabra (indicador, descriptor, tipo, etcétera).


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.

EJEMPLO: El sistema del CASQUILLO no permitió que los procesos modificaran el segmento en el cual endecha de las instrucciones. También almacenó capacidades en este segmento. Un registro de la cerca separó instrucciones y capacidades.


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.

EJEMPLO: El sistema de la ameba es un sistema distribuido que utiliza capacidades para nombrar objetos. En la creación, una capacidad que corresponde al objeto se vuelve. Para utilizar el objeto, el programa presenta la capacidad correspondiente. La capacidad codifica el nombre del objeto (24 pedacitos), del servidor que lo crearon (48 pedacitos), y de las derechas (8 pedacitos) en una cantidad 128-bit. Inicialmente, se giran todas las derechas.

Los 48 pedacitos pasados se utilizan como campo del cheque. Esto es un número al azar seleccionado en el tiempo de la creación. (porque la capacidad se da al dueño del objeto, el dueño puede modificar libremente las derechas sin peligro.) El número se almacena en una tabla que corresponde al servidor que creó el objeto, así que siempre que la capacidad se presente a ese servidor, verifica que el número al azar esté correcto. Un atacante necesitaría saber el número al azar para poder forjar una capacidad. Sin embargo, como notas de Tanenbaum, el sistema es vulnerable si se divulga una capacidad.


Capacidades de copiado y que amplifican

La 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).

EJEMPLO: La ameba utiliza un esquema interesante. No controla las derechas de copiado. Sin embargo, las aplicaciones a las cuales las esas derechas copiadas pueden ser puestas sea restricto.

Suponga los deseos mates del usuario para permitir que el acebo del usuario lea un objeto que él posee. Él pasa su capacidad para ese objeto al servidor y solicita una capacidad restricta para la lectura. El servidor crea una nueva capacidad para el objeto pero con solamente la derecha leída girada. El campo de las derechas ahora es el 0 a excepción del pedacito leído, que es un 1. Esto es xor'ed con el cheque al azar y la entrada a una función criptográfica del picadillo. La salida es el nuevo número al azar para esta capacidad. La capacidad restricta entonces se pasa de nuevo a mate, que la da al acebo.

Cuando el acebo utiliza la capacidad, el servidor observa que por lo menos un pedacito en el campo de las derechas es 0. Toma el campo de las derechas, él de los xor con el número al azar de la capacidad original (almacenada en sus tablas), y hashes el resultado. Si el picadillo que resulta empareja el número al azar en la capacidad, la capacidad es válida; si no, no es.


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.

EJEMPLO: El HYDRA seminal del sistema utilizó plantillas de la amplificación para amplificar las derechas de los procesos. Se asocia a cada procedimiento en el módulo una plantilla que agrega las derechas a las capacidades según lo necesitado. Por ejemplo, la plantilla para el procedimiento getval agregaría las derechas leídas mientras que el procedimiento era activo. La plantilla para el procedimiento del incremento agregaría leído y escribiría las derechas.


EJEMPLO: El sistema del iAPX 432 de Intel pone un mecanismo en ejecucio'n similar en hardware. Sus "descriptores del acceso" corresponden a las capacidades. Tres pedacitos en la capacidad controlan varias funciones del sistema. Uno de la amplificación de estos controles de los pedacitos de las derechas. Cuando se construye un tipo de datos abstracto módulo, los pedacitos del permiso del tipo control se oponen (que define el tipo de datos) se fijan a los permisos que el procedimiento necesita. Cuando se llama el procedimiento, el sistema comprueba el pedacito de la amplificación. Si se fija, las derechas en el tipo objeto del control son or'ed con las derechas en el descriptor del objeto que es pasado. Esta combinación define las derechas disponibles para el procedimiento.


Revocación de las derechas

En 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.

EJEMPLO: Aplicaciones de la ameba esencialmente este esquema. Para revocar una capacidad, el dueño del objeto solicita que el cambio del servidor el número al azar y publica una nueva capacidad. Esto invalida todas las capacidades existentes.


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 acceso

Dos preguntas son la base del uso de los controles de acceso:

  1. ¿Dado un tema, qué objetos puede tener acceso, y cómo?

  2. ¿Dado un objeto, qué temas pueden tenerle acceso, y cómo?

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


Negación: Nuestro Web site no es responsable de la información contenida por este artículo. Este artículo de ninguna manera refleja las vistas, las opiniones, los pensamientos o la creencia del personal del directorio de los artículos.

Aviso de la traducción: El artículo "capacidades" fue traducido usando un servicio de traducción automatizado. Nos disculpamos sinceramente por cualquier error de la traducción que ocurriera. Gracias por entender.

Online: 326 users browsing the articles directory


  

.