stringtranslate.com

Modelo de capacidad de objetos

El modelo de capacidad de objeto es un modelo de seguridad informática . Una capacidad describe un derecho transferible para realizar una (o más) operaciones en un objeto determinado. Se puede obtener mediante la siguiente combinación:

  • Una referencia imposible de falsificar (en el sentido de referencias a objetos o punteros protegidos) que se puede enviar en mensajes.
  • Un mensaje que especifica la operación a realizar.

El modelo de seguridad se basa en no poder falsificar referencias.

  • Los objetos sólo pueden interactuar enviando mensajes sobre referencias.
  • Se puede obtener una referencia mediante:
  1. Condiciones iniciales: en el estado inicial del mundo computacional que se describe, es posible que el objeto A ya tenga una referencia al objeto B.
  2. Paternidad: Si A crea B, en ese momento A obtiene la única referencia al B recién creado.
  3. Dotación: Si A crea a B, B nace con ese subconjunto de referencias de A con el que A decidió dotarlo.
  4. Introducción: si A tiene referencias tanto a B como a C, A puede enviar a B un mensaje que contenga una referencia a C. B puede conservar esa referencia para su uso posterior.

En el modelo de capacidad de objeto, todos los cálculos se realizan siguiendo las reglas anteriores.

Las ventajas que motivan la programación orientada a objetos , como la encapsulación u ocultación de información , la modularidad y la separación de preocupaciones , corresponden a objetivos de seguridad como el privilegio mínimo y la separación de privilegios en la programación basada en capacidades. [1] [2]

El modelo de capacidad del objeto fue propuesto por primera vez por Jack Dennis y Earl C. Van Horn en 1966. [3]

Lagunas en los lenguajes de programación orientados a objetos

Algunos lenguajes de programación basados ​​en objetos (por ejemplo , JavaScript , Java y C# ) proporcionan formas de acceder a los recursos de otras formas distintas a las reglas anteriores, incluidas las siguientes:

Tal uso de una autoridad innegable viola las condiciones del modelo de capacidad del objeto. Caja y Joe-E son variantes de JavaScript y Java, respectivamente, que imponen restricciones para eliminar estas lagunas.

Ventajas de las capacidades de los objetos.

El informático E. Dean Tribble afirmó que en los contratos inteligentes , el control de acceso basado en identidad no soportaba bien el cambio dinámico de permisos, en comparación con el modelo de capacidad de objeto. Simuló el modelo ocap con darle a un valet la llave del auto, sin entregarle el derecho a la propiedad del auto. [4]

Las propiedades estructurales de los sistemas de capacidad de objetos favorecen la modularidad en el diseño de código y garantizan una encapsulación confiable en la implementación del código.

Estas propiedades estructurales facilitan el análisis de algunas propiedades de seguridad de un programa o sistema operativo con capacidad de objeto. Algunos de ellos –en particular, las propiedades del flujo de información– pueden analizarse a nivel de referencias de objetos y conectividad, independientemente de cualquier conocimiento o análisis del código que determina el comportamiento de los objetos. Como consecuencia, estas propiedades de seguridad se pueden establecer y mantener en presencia de nuevos objetos que contengan código desconocido y posiblemente malicioso.

Estas propiedades estructurales se derivan de dos reglas que rigen el acceso a los objetos existentes:

1) Un objeto A puede enviar un mensaje a B solo si el objeto A tiene una referencia a B.
2) Un objeto A puede obtener una referencia a C solo si el objeto A recibe un mensaje que contiene una referencia a C.

Como consecuencia de estas dos reglas, un objeto puede obtener una referencia a otro objeto sólo a través de una cadena de referencias preexistente. En resumen, "Sólo la conectividad engendra conectividad".

Glosario de términos relacionados

sistema de capacidad de objetos
Un sistema computacional que implementa los principios descritos en este artículo.
objeto
Un objeto tiene estado y comportamiento locales. Un objeto en este sentido es a la vez un sujeto y un objeto en el sentido utilizado en la literatura sobre control de acceso.
referencia
Un canal de comunicaciones infalsificable (puntero protegido, dirección opaca) que designa sin ambigüedades un único objeto y proporciona permiso para enviar mensajes a ese objeto.
mensaje
Lo que se envía en una referencia. Dependiendo del sistema, los mensajes pueden ser o no objetos de primera clase.
pedido
Operación en la que se envía un mensaje sobre una referencia. Cuando se reciba el mensaje, el receptor tendrá acceso a cualquier referencia incluida en el mensaje.
atenuación
Un patrón de diseño común en los sistemas de capacidad de objetos: dada una referencia de un objeto, cree otra referencia para un objeto proxy con ciertas restricciones de seguridad, como permitir solo el acceso de solo lectura o permitir la revocación. El objeto proxy realiza controles de seguridad en los mensajes que recibe y transmite los que están permitidos. La atenuación profunda se refiere al caso en el que la misma atenuación se aplica transitivamente a cualquier objeto obtenido a través del objeto atenuado original, normalmente mediante el uso de una "membrana".

Implementaciones

Casi todos los sistemas históricos que han sido descritos como "sistemas de capacidad" pueden modelarse como sistemas de capacidad de objeto. (Tenga en cuenta, sin embargo, que algunos usos del término "capacidad" no son coherentes con el modelo, como "capacidades" POSIX).

KeyKOS , EROS , Integrity (sistema operativo) , [ dudosodiscutir ] CapROS , Coyotos, seL4 , OKL4 y Fiasco.OC son sistemas operativos seguros que implementan el modelo de capacidad de objetos.

Lenguajes que implementan capacidades de objetos.

Ver también

Referencias

  1. ^ Miller, Mark Samuel (mayo de 2006). "Composición robusta: hacia un enfoque unificado para el control de acceso y el control de concurrencia". derechos.org . Baltimore, Maryland . Consultado el 28 de julio de 2013 .
  2. ^ Mark S. Miller; Ka-Ping Yee; Jonathan S. Shapiro (2003). "Mitos sobre la capacidad derribados" (PDF) . Informe Técnico SRL2003-02. Laboratorio de Investigación de Sistemas, Universidad Johns Hopkins. {{cite journal}}: Citar diario requiere |journal=( ayuda )
  3. ^ [1] citando: JB Dennis, EC Van Horn. "Programación de semántica para computaciones multiprogramadas". Comunicaciones de la ACM, 9(3):143–155, marzo de 1966.
  4. ^ ab Lutsch, Felix (26 de agosto de 2019). "Preguntas y respuestas agóricas con Dean Tribble". Coro Uno .
  5. ^ Henry Lieberman (junio de 1981). "Una vista previa del acto 1". Nota 625 del MIT AI. {{cite journal}}: Citar diario requiere |journal=( ayuda )
  6. ^ Henry Lieberman (junio de 1981). "Pensar en muchas cosas a la vez sin confundirse: paralelismo en el acto 1". Nota 626 del MIT AI. {{cite journal}}: Citar diario requiere |journal=( ayuda )