ES2284654T3 - Filtrado de un conjunto de autorizaciones que usa solicitudes de autorizacion asociadas con un conjunto de codigo. - Google Patents

Filtrado de un conjunto de autorizaciones que usa solicitudes de autorizacion asociadas con un conjunto de codigo. Download PDF

Info

Publication number
ES2284654T3
ES2284654T3 ES01944152T ES01944152T ES2284654T3 ES 2284654 T3 ES2284654 T3 ES 2284654T3 ES 01944152 T ES01944152 T ES 01944152T ES 01944152 T ES01944152 T ES 01944152T ES 2284654 T3 ES2284654 T3 ES 2284654T3
Authority
ES
Spain
Prior art keywords
authorization
code
requests
authorizations
optional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES01944152T
Other languages
English (en)
Inventor
Brian A. Lamacchia
Loren M. Kohnfelder
Gregory Darrell Fee
Michael J. Toutonghi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2284654T3 publication Critical patent/ES2284654T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)
  • Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
  • Separation Using Semi-Permeable Membranes (AREA)
  • External Artificial Organs (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Lock And Its Accessories (AREA)

Abstract

Un procedimiento para el procesado de un conjunto de autorizaciones asociado con un conjunto de código (106) recibido de un sitio fuente (100) para controlar la ejecución del conjunto de código, comprendiendo el procedimiento: recepción del conjunto de autorizaciones que incluye al menos una autorización asociada con el conjunto de código; recepción de un conjunto de solicitudes de autorización (120, 324, 420, 522) en asociación con el conjunto de código; y filtrado del conjunto de autorizaciones basado en el conjunto de solicitudes de autorización para controlar la ejecución del conjunto de código; caracterizado porque el conjunto de solicitudes de autorización especifica un conjunto de solicitudes opcional que especifica un conjunto opcional de autorizaciones solicitadas en asociación con el conjunto de código; y la operación de filtrado comprende el filtrado del conjunto de autorizaciones basado en el conjunto de solicitudes opcional para generar un conjunto de concesiones de autorización (208 - 212, 414, 520); y que comprende además: ejecución de un primer nivel de la funcionalidad del conjunto de código si el conjunto de solicitudes opcional es un subconjunto del conjunto de concesiones de autorización; y ejecución de un segundo nivel de funcionalidad del conjunto de código si el conjunto de solicitudes opcional no es un subconjunto del conjunto de concesiones de autorización.

Description

Filtrado de un conjunto de autorizaciones que usa solicitudes de autorización asociadas con un conjunto de código.
Esta solicitud que es presentada como solicitud de PCT por MICROSOFT CORPORATION, nacional y residente de los Estados Unidos, que se destina a todos los países excepto EE. UU.
Campo técnico
La invención se refiere generalmente a seguridad de ordenadores y, más concretamente, al filtrado de conjuntos de autorizaciones que usa una solicitud de autorización asociada con un conjunto de código.
Antecedentes de la invención
Los riesgos de la seguridad, tales como la concesión de acceso no autorizado al sistema de un usuario, son inherentes a muchas actividades en línea. Por ello, se han desarrollado mecanismos de seguridad para proteger sistemas de usuario. Por ejemplo, un usuario puede descargar una aplicación a demanda de la Internet y ejecutar la aplicación desde dentro del navegador. Para prevenir el acceso no autorizado a los recursos del sistema de un usuario (por ejemplo, un directorio situado en el disco duro del usuario), el sistema del usuario se protege mediante una protección de "cajón de arena" que es obligatoria en el entorno del navegador. La protección de cajón de arena implica un área segura limitada de memoria de ordenador en la que se puede ejecutar una aplicación, de manera que la aplicación está impedida de acceder a recursos del sistema que residen fuera del área segura.
Sin embargo, en algunas circunstancias un usuario puede desear permitir que una aplicación descargada tenga acceso controlado a ciertos recursos que residen dentro del sistema de usuario. Por ejemplo, un usuario puede desear usar una aplicación de procesamiento de texto a demanda para generar un documento y, seguidamente, guardar el documento en un directorio del sistema del usuario.
Las metodologías existentes para proveer dichas aplicaciones con acceso controlado y seguro a un sistema de usuario son demasiado complicadas y rígidas. En un procedimiento, por ejemplo, se define una norma de seguridad dentro de una base de datos de normas en la que una aplicación dada está asociada con un conjunto de autorizaciones. La norma de seguridad, en combinación información de origen, información de firma y limitaciones de acceso, ayuda a definir una relación "fiable" entre la aplicación y el sistema de usuario.
Consideremos el siguiente ejemplo:
1
En el ejemplo, un applet del sitio fuente, "www.BobsWidgets.com", tiene concedidas autorizaciones de acceso a ciertos archivos si está firmado con una clave concordante con otra clave contenida en BobsCertificate. Tradicionalmente, un applet es un programa diseñado para su ejecución desde dentro de un navegador más que directamente desde dentro del sistema operativo. El applet tiene concedida autorización para leer archivos del directorio "/tmp" del sistema servidor y para crear y escribir en archivos del directorio "/tmp/bwdir". La autorización para ejecutar es otro modificador de autorizaciones habitual. Otras especificaciones de norma de seguridad pueden, por ejemplo, conceder autorizaciones amplias para acceder a archivos de cualquier sitio del sistema, independientemente de la fuente de la aplicación o de si la aplicación está firmada o no.
En estos tipos de metodologías, las normas de seguridad son especialmente estáticas, permaneciendo fijas durante periodos de tiempo prolongados. A medida que el procesado de aplicaciones a demanda a través de la Internet se hace más frecuente, las normas de de seguridad sustancialmente estáticas son demasiado limitativas. Además, los cambios infrecuentes en la normativa de seguridad que tienen lugar (normalmente realizados por un gestor del sistema) pueden introducir debilitamientos o fisuras en la seguridad, o prevenir el funcionamiento de aplicaciones autorizadas negando a una aplicación un acceso que le había sido concedido previamente. Así pues, las arquitecturas de seguridad existentes decepcionan al determinar dinámica y flexiblemente si una aplicación (o un conjunto de código dado de una aplicación) puede ser fiable en cierto número de accesos al sistema de usuario.
Además, en las estructuras de seguridad existentes, la asignación de autorizaciones está determinada por la norma de seguridad definida en el sistema de usuario y, posiblemente, por una pregunta al usuario durante la ejecución o carga de la aplicación. Así pues, un componente de una aplicación a demanda no afecta generalmente a qué autorizaciones está asignado de acuerdo con una norma de seguridad. Por ejemplo, un componente de un sitio autorizado puede tener concedido un acceso amplio a áreas protegidas de un sistema informático, aún cuando ese componente pueda no requerir o incluso desear dicho acceso. Por razones de responsabilidad civil, el componente puede desear un acceso más limitado. Además, un componente puede no ser capaz de ejecución sin un conjunto mínimo de autorizaciones. En las estructuras de seguridad existentes, un conjunto de concesiones de autorización inadecuada solamente se detecta cuando una operación solicitada falla por falta de autorización durante la ejecución del conjunto de código, en cuyo momento el tiempo de ejecución se ha desperdiciado y la recuperación del error puede ser más compleja.
Anand R. y otros en "A Flexible Security Model for Using Internet Content", Actas del 16º Simposio sobre Sistemas de Distribución Fiable, 22 de octubre de 1997, IEEE Computer Soc., EE. UU., páginas 89 a 96 se refieren a la generación de un dominio de protección de contenidos descargados usando dinámicamente el dominio solicitado de contenidos y una base de datos de normas que describe la fiabilidad del usuario en el tipo y fabricante del contenido. Cada contenido se despacha con estampillas firmadas facilitadas por su fabricante con lo que cada estampilla contiene, entre otras cosas, un dominio solicitado. Este dominio solicitado especifica la protección que el contenido requiere para ejecutar el contenido. Para obtener un dominio con protección de contenidos que está establecido en una tabla de derechos de acceso, se añade un derecho de acceso del dominio solicitado al dominio con protección de contenidos si está dentro del dominio máximo para el contenido especificado en la base de datos de normas. De esta manera, la base de datos de normas almacena las configuraciones de las descripciones de los contenidos para dominios de protección máxima por defecto. Además, un módulo de análisis puede recuperar cualquier contenido del dominio de protección máxima por defecto facilitando su descripción a la base de datos de normas.
El documento US-A-6.044.466, de 28 marzo 2000, se refiere a un mecanismo de obtención dinámica que facilita autorizaciones limitadas para ejecutables. El mecanismo usa una descripción autentificada de los ejecutables para determinar las autorizaciones máximas que los autorizadores individuales pueden delegar a contenidos ejecutables. Por cada descripción y descarga de contenido principal, el mecanismo recupera las propuestas de autorizaciones máximas de una norma de seguridad del sitio. Después de la obtención de las autorizaciones máximas de las contribuciones de cada autorizador en la propuesta de autorización máxima, las autorizaciones en curso y máximas se computan usando las propuestas de autorizaciones en curso y máximas y las contribuciones en curso y máximas de los autorizadores de propuestas. Además, las autorizaciones incluyen derechos positivos y negativos así como transformaciones. Los derechos asocian un grupo de objetos con un conjunto de operaciones que son autorizadas o negadas y con un límite del número de veces que se puede usar esta autorización. Las transformaciones asocian una de acción del autorizador de delegación, por ejemplo, una operación, con modificaciones a las autorizaciones, por ejemplo, aumento o disminución de derechos.
Sumario de la invención
El objetivo de la invención es proveer un sistema más flexible para controlar los derechos de acceso a contenidos descargados. Este objetivo lo resuelve la invención como se reivindica en las reivindicaciones independientes.
Las realizaciones preferentes son definidas por las reivindicaciones dependientes.
De acuerdo con la presente invención, los problemas anteriores y otros son resueltos por un gestor de normas basado en la evidencia que genera un conjunto de concesiones de autorización a un conjunto de código recibido de un sitio fuente. El conjunto de concesiones de autorización puede ser afectado (por ejemplo, filtrado) por solicitudes de autorización recibidas en asociación con el conjunto de código. Las solicitudes de autorización pueden definir características de las necesidades de autorización del conjunto de código. Por ejemplo, las solicitudes de autorización pueden incluir un conjunto de solicitudes mínimo, que especifica las autorizaciones requeridas por el conjunto de código para funcionar correctamente con al menos una funcionalidad básica. Las solicitudes de autorización pueden incluir también un conjunto de solicitudes opcional, que especifica las autorizaciones solicitadas por el conjunto de código para proveer un nivel alternativo de funcionalidad. Además, las solicitudes de autorización pueden incluir un conjunto de solicitudes de rechazo, que especifica las solicitudes que no se van a conceder al conjunto de código.
En una realización de la presente invención, se provee un procedimiento de procesado de un conjunto de autorizaciones asociado con un conjunto de código recibido de un sitio fuente para controlar la ejecución del conjunto de código. El conjunto de autorizaciones incluye al menos una autorización asociada con el conjunto de código. Un conjunto de solicitudes de autorización se recibe en asociación con el conjunto de código. El conjunto de autorizaciones es filtrado sobre la base del conjunto de solicitudes de autorización para controlar la ejecución del conjunto de
código.
En otra realización de la presente invención, el procedimiento comprende además la generación del conjunto de autorizaciones basado en la pertenencia del conjunto de código a uno o más grupos de código. Una colección de grupos de código se define sobre la base de una especificación de norma de seguridad. La colección de grupos de código incluye uno o más grupos de código. La evidencia es recibida en asociación con el conjunto de código. La pertenencia del conjunto de código a uno o más grupos de código se evalúa sobre la base de la evidencia.
En otra realización de la presente invención, se provee un módulo gestor de normas para el procesado de un conjunto de autorizaciones asociado con un conjunto de código recibido de un sitio fuente para controlar la ejecución del conjunto de código, incluyendo dicho gestor un filtro que recibe el conjunto de autorizaciones y un conjunto de solicitudes de autorización asociados con el conjunto de código. El filtro filtra también el conjunto de autorizaciones basado en el conjunto de solicitudes de autorización para controlar la ejecución del conjunto de código.
En otras realizaciones de la presente invención, los artículos de fabricación se proveen como productos de programación de ordenadores. Una realización del producto de programación de ordenadores provee un medio de almacenamiento de programa de ordenador que es legible por un sistema de ordenador y que codifica un programa de ordenador para la ejecución de un procedimiento de ordenador para el procesado de un conjunto de autorizaciones asociado con un conjunto de código recibido de un sitio fuente para controlar la ejecución del conjunto de código. Otra realización de un producto de programación de ordenadores puede ser provista en una señal de datos de ordenador realizada en una onda portadora por un sistema informático y que codifica el programa de ordenador para el procesado de un conjunto de autorizaciones asociado con un conjunto de código recibido de un sitio fuente para controlar la ejecución del conjunto de código.
En una realización, el producto de programación de ordenadores codifica un programa de ordenador para la ejecución en un sistema informático de un procedimiento de ordenador que define una colección de grupos de código basado en una especificación de norma de seguridad. La colección de grupos de código incluye uno o más grupos de código. La evidencia se recibe en asociación con el conjunto de código. La pertenencia del conjunto de código a uno o más grupos de código es evaluada sobre la base de la evidencia. El conjunto de autorizaciones se genera sobre la base de la pertenencia del conjunto de código a uno o más grupos de código. El conjunto de autorizaciones incluye al menos una autorización asociada con el conjunto de código. Sobre el conjunto de autorizaciones y el conjunto de solicitudes de autorización se realiza una operación de
\hbox{conjuntos lógicos para generar
un  conjunto de concesiones de autorización.}
Un gran beneficio de una realización de la presente invención es el filtrado de las autorizaciones concedidas a un conjunto de código por el gestor de normas de acuerdo con las solicitudes de autorización. De esta manera, el conjunto de código afecta a las autorizaciones que recibe, en cooperación con lo que permite la normativa de seguridad aplicable. Las autorizaciones se usan para controlar la ejecución del conjunto de código en un sistema informático. Es conveniente conceder solamente las autorizaciones realmente solicitadas por el conjunto de código. Por ejemplo, una norma de seguridad puede conceder amplias autorizaciones a un conjunto de código fiable. Sin embargo, si el conjunto de código no solicita una autorizadión dada, se puede evitar el acceso involuntario a un área protegida del sistema informático, tal como el producido por un error del conjunto de código. Además, el sistema de código puede rehusar un conjunto de autorizaciones determinado para evitar el riesgo potencial de responsabilidad civil por acceder a (y posiblemente corromper) un área protegida de un sistema informático.
Estas y otras diferentes características así como otros beneficios, que caracterizan la presente invención, se harán evidentes con la lectura de la siguiente descripción detallada y con un repaso de los dibujos adjuntos.
Breve descripción de los dibujos
La figura 1 representa un gestor de normas de seguridad basado en evidencias de una realización de la presente invención.
La figura 2 representa una lista de programas y procedimientos de tiempo de ejecución de una realización de la presente invención.
La figura 3 representa un sistema informático para la gestión de la seguridad basado en evidencias de una realización de la presente invención.
La figura 4 representa módulos de un gestor de normas para gestionar la seguridad sobre la base de evidencias de una realización de la presente invención.
La figura 5 representa niveles de normativa ejemplares sobre los que opera un gestor de normas en una realización de la presente invención.
La figura 6 ilustra un diagrama de flujos del filtrado usado en una realización de la presente invención.
La figura 7 ilustra un sistema ejemplar útil para la aplicación de una realización de la presente invención.
La figura 8 ilustra un diagrama de flujos de operaciones para el procesado de un conjunto de autorizaciones en una realización de la presente invención.
Descripción detallada de la invención
Una realización de la presente invención provee un gestor de normas basado en evidencias que genera un conjunto de concesiones de autorización para un conjunto de código recibido de un sitio fuente. Generalmente, un conjunto de código es una unidad de código empaquetado, tal como un archivo .EXE o un archivo .DLL. El gestor de normas se puede ejecutar en un sistema informático (por ejemplo, un cliente de Web o una estación de trabajo en red) en combinación con el módulo de verificación y el cargador de clases del entorno de tiempo de ejecución; sin embargo, un gestor de normas se puede ejecutar también fuera de un entorno de tiempo de ejecución. El conjunto de concesiones de autorización generado para un conjunto de código se aplica en una lista de programas y procedimientos de tiempo de ejecución para ayudar al sistema a determinar si esta autorizada una operación del sistema dada por el conjunto de código. El gestor de normas puede procesar solicitudes de autorización recibidas en asociación con el conjunto de código. Además, tanto los conjuntos de código como la evidencia pueden ser recibidos a través de un mecanismo de distribución, que incluye una fuente local (por ejemplo, desde dentro de la máquina local), una red local o periférica, o un sitio fuente remoto a través de una red (por ejemplo, la Internet).
En una realización de la presente invención, las solicitudes de autorización se usan para filtrar las autorizaciones ofrecidas inicialmente por el gestor de normas sobre la base de una especificación de normativa de seguridad y de la evidencia recibida en asociación con el conjunto de código. De esta manera, el conjunto de código puede afectar al conjunto de concesiones de autorización resultante que está asociado con el conjunto de código, para evitar la recepción de autorizaciones excesivas o innecesarias.
La figura 1 representa un gestor 104 de normas de seguridad basado en evidencia de una realización de la presente invención. Un sitio 100 fuente, tal como un servidor, es accesible para un sistema 102 informático (por ejemplo, un cliente de Web o servidor) a través de una red (no se muestra). Un sitio fuente se indica normalmente mediante un URI (Identificador de Recursos Uniformes), que es un término genérico aplicable a todos los tipos de nombres y direcciones que se refieren a objetos de la Internet. Un URL (Localizador de Recursos Uniformes) es un tipo de URI. Los recursos ejemplares pueden incluir sin limitación documentos, imágenes, datos de audio, aplicaciones, rutinas, y otros datos y almacenes de datos codificados accesibles a través de una red. Se debe entender que un sitio fuente puede ser local respecto del sistema 102 informático o remoto respecto del sistema 102 informático (por ejemplo, acoplado por la Internet.).
Un tipo de recurso aplicable en una realización de la presente invención es un conjunto de código. Un conjunto de código puede constar, por ejemplo, de un conjunto de applets, códigos de aplicación, códigos de clase, códigos de rutina, y datos. Los códigos y los datos incluidos en un conjunto de código pueden estar en forma de códigos de bytes, códigos intermedios, códigos de máquina, y componentes de información (clases, imágenes, segmentos de audio y vídeo, etc.). Además, un conjunto de código puede estar empaquetado en una carpeta de archivo que contiene uno o más clases descargadas de un sitio fuente. En una realización de la presente invención, se combinan las clases de una aplicación en un módulo (un resultado de un procedimiento de unión), y uno o más módulos se pueden combinar en un conjunto de código.
La figura 1 se refiere a la ejecución de una aplicación descargada en un sistema 102 informático. Las realizaciones alternativas pueden incluir applets, controles ACTIVEX, y otras rutinas y objetos descargados. Una aplicación descargada ejemplar consta de objetos definidos en uno o más conjuntos de códigos locales o remotos. Los conjuntos de códigos locales se almacenan dentro del sistema 102 informático y se cargan en memoria cuando son necesarios. Los conjuntos de código remotos se descargan de un sitio fuente, tal como el sitio 100 fuente.
El sistema 102 informático inicia un entorno de tiempo de ejecución para ejecutar la aplicación descargada y gestionar la seguridad del sistema 102. El entorno de tiempo de ejecución en el sistema 102 informático puede ser iniciado por un "servidor fiable", tal como un intérprete de órdenes del sistema operativo, un navegador, un servidor de SQL, u otro código que sea externo al entorno de tiempo de ejecución. El servidor inicia también la ejecución de la aplicación descargando en el sistema 112 los diferentes conjuntos de código 106 que constituyen la aplicación y pasando los conjuntos de código 106 a una máquina 110 virtual para ejecución.
Una máquina virtual provee un entorno operativo autónomo que realiza gran parte de la funcionalidad de un ordenador separado. Por ejemplo, una aplicación puede funcionar en una máquina virtual sin acceso directo al sistema operativo del servidor. Este diseño presenta al menos dos ventajas:
\bullet
Independencia del Sistema: Una aplicación funcionará igual en cualquier máquina virtual que soporte el lenguaje de programación en el que está escrita la aplicación, independientemente del hardware y del software sobre los que se asienta el sistema. Por ejemplo, la misma aplicación (es decir, el mismo código de programación) puede funcionar en una máquina virtual sobre diferentes sistemas informáticos que tengan diferentes tipos de microprocesadores y diferentes tipos de sistemas operativos.
\bullet
Seguridad: Generalmente las aplicaciones que funcionan en una máquina virtual son impedidas de acceder a recursos de sistemas protegidos (es decir, el sistema operativo, el sistema de archivos, las regiones de memoria protegidas, una red o periférico conectado. Sin embargo, se debe entender que una realización de la presente invención puede evaluar evidencias y normas de seguridad para determinar si se autoriza que una aplicación acceda a recursos de sistemas protegidos. Si la autorización para una operación dada está concedida, la aplicación se considera fiable para esa operación. Las solicitudes de autorización recibidas en asociación con un conjunto de código se pueden usar para filtrar el conjunto de concesiones de autorización resultantes que se usa para determinar qué operaciones puede realizar el conjunto de código.
A medida que los componentes de la aplicación (por ejemplo, conjuntos 106 de código descargados) son recibidos por el sistema 102, un módulo de verificación asegura que el código descargado en los conjuntos de código está formateado correctamente y que no viola las limitaciones de seguridad del lenguaje codificado o de la máquina 110 virtual. También se pueden realizar otras verificaciones, tales como la verificación de que la dirección del puntero no está presente, que las áreas de memoria disponibles no se pueden rebasar ni agotar, y que las instrucciones del código tendrán los parámetros tecleados correctamente. Seguidamente, los conjuntos de código se pasan a un cargador 113 de clases, el cual puede asegurar que la aplicación no sustituye componentes del nivel sistema dentro de un entorno de tiempo de ejecución (por ejemplo, el cargador de clases puede forzar la ejecución de conjuntos de código provistos por el servidor cuando se solicita, sustituyendo de esta manera conflictos de nombre por conjuntos de códigos descargados). Posteriormente, el cargador 113 de clases carga los conjuntos 106 de código sobre una lista de programas y procedimientos 114 de tiempo de ejecución en respuesta a solicitudes de la máquina 110 virtual.
Por ejemplo, la máquina virtual ejecuta un primer conjunto de código (por ejemplo, el conjunto 202 de código principal de la figura 2) que llama una rutina facilitada por un segundo conjunto de código (por ejemplo, el conjunto de código reconocedor de la figura 2). El cargador 113 de clases recibe de la máquina virtual la solicitud del segundo conjunto de código y carga el segundo conjunto de código en la lista de programas y procedimientos 114 de tiempo de ejecución de manera que el primer conjunto de código puede llamar la rutina necesaria.
Con el fin de asegurar que se impiden los accesos no autorizados a áreas protegidas, se introduce en el gestor 104 de normas la evidencia 108 asociada con cada uno de los conjuntos 106 de código descargados. El gestor 104 de normas determina el conjunto de concesiones de autorización (véase el conjunto 414 de concesiones de autorización de la figura 4) asociado con cada conjunto de código. También se introduce en el gestor 104 de normas una especificación de norma de seguridad para ayudar en el cómputo de las concesiones adecuadas. Además, las solicitudes 120 de autorización son recibidas en asociación con los conjuntos 106 de código descargados para especificar las características de las necesidades de autorización de cada conjunto 106 de código descargado. En una realización, las solicitudes de autorización se registran en un formato de serialización binaria dentro del propio conjunto de código y, por consiguiente, se descargan con el conjunto de código en una sola comunicación por la red. Alternativamente, las solicitudes de autorización se pueden registrar en otro lugar del sitio fuente accesible para el gestor 104 de normas en una comunicación por red aparte. Además, aunque un formato de serialización binaria se especifica como formato ejemplar para registrar solicitudes de autorización, se contemplan formatos de datos alternativos (por ejemplo, XML) dentro del ámbito de la presente invención.
Además, el desarrollador puede usar un formato de datos, tal como el XML, para especificar inicialmente las solicitudes de autorización. Posteriormente, las solicitudes de autorización especificadas en formato XML, se pueden codificar en otro formato de datos, tal como un formato de serialización binaria, para su inserción en el conjunto de código. Además, algunos compiladores permiten que un desarrollador especifique solicitudes de autorización usando anotaciones de seguridad declarativas en el código fuente del conjunto de código. Seguidamente, el compilador puede codificar las anotaciones en las solicitudes de autorización integradas en el conjunto de código.
En una realización de la presente invención, las solicitudes 120 de autorización se "teclean" de manera que cada tipo de solicitud de autorización se pueda aplicar para filtrar las autorizaciones de manera diferente. Basado en estas entradas, el gestor 104 de normas computa las autorizaciones adecuadas para cada conjunto de código y pasa los conjuntos de concesiones de autorización resultantes a la
\hbox{lista 114 de programas y
procedimientos  de tiempo de ejecución.}
Así pues, cada conjunto de código de la lista de programas y procedimientos de tiempo de ejecución está asociado con un conjunto de concesiones de autorización correspondiente (por ejemplo, conjuntos de concesiones de autorización 208, 210 y 212 de la figura 2). Del gestor de normas se recibe un conjunto de concesiones que define varias autorizaciones que han sido computadas para un conjunto de código correspondiente. Las autorizaciones asociadas con cada conjunto de código pueden variar ampliamente dependiendo del origen relativo del conjunto de código (por ejemplo, local o remoto), del origen específico del conjunto de código (por ejemplo, un URL específico), o de otras características de fiabilidad del conjunto de código, todo lo cual se puede denominar "evidencia" 108. En una realización de la presente invención, las características de fiabilidad se usan para determinar un conjunto de concesiones de autorización para un conjunto de código dado. Además, una especificación 116 de norma de seguridad puede definir múltiples niveles de normativa dentro del marco de seguridad de una determinada empresa, máquina, usuario, aplicación, etc. donde se evalúan las características de fiabilidad de un conjunto de código dado.
La figura 2 representa una lista 200 de programas y procedimientos de tiempo de ejecución que contiene conjuntos de código individuales dispuestos en el orden en el que fueron llamados. Los conjuntos de código individuales se pueden descargar de un sitio fuente remoto o se pueden recuperar localmente del sistema 102 informático de la figura 1. Los conjuntos de código individuales son cargados en listas 114 de programas y procedimientos de tiempo de ejecución por el cargador 113 de clases para acceso y ejecución por la máquina 110 virtual de la figura 1.
Por ejemplo, un objeto de la clase de aplicación principal del conjunto 202 de código es cargado primero por el cargador de clases en la lista 200 de programas y procedimientos de tiempo de ejecución ilustrada. A medida que la máquina virtual ejecuta la clase principal, la clase principal crea un objeto reconocedor desde un conjunto 204 de código y llama un procedimiento del objeto reconocedor para reconocer un archivo de datos en un área protegida del sistema informático. Consecuentemente, el cargador de clases carga el código del reconocedor del conjunto 204 de código en la lista 200 de programas y procedimientos de tiempo de ejecución. Posteriormente, el objeto reconocedor crea un objeto de acceso a archivos desde un conjunto 206 de código y llama un procedimiento del objeto de acceso a archivos para realizar una operación de lectura en el archivo protegido. Consecuentemente, el cargador de clases carga el código de acceso a ficheros del conjunto 206 de código en la
\hbox{lista 200 de programas y procedimientos de tiempo de
ejecución.}
Cada conjunto de concesiones de autorización se corresponde con un conjunto de código de la lista de programas y procedimientos de tiempo de ejecución. Así pues, el intento de un conjunto de código de acceder a un recurso protegido se evalúa frente a su conjunto de concesiones de autorización asociado, así como frente a los conjuntos de concesiones de autorización de otros conjuntos de código de la lista 200 de programas y procedimientos de tiempo de ejecución. En el ejemplo de la operación de lectura de un fichero protegido por parte de la aplicación ilustrado en la figura 2, el conjunto 202 de código principal está asociado con un conjunto 208 de concesiones de autorización. El conjunto 202 de código principal llama (como se representa mediante la flecha 214) un procedimiento del conjunto 204 de código reconocedor, que está asociado con el conjunto 210 de concesiones de autorización. Para acceder al fichero protegido, el conjunto 204 de código reconocedor llama (como se representa mediante la flecha 216) un procedimiento del conjunto 206 de código de acceso a ficheros, que está asociado con el conjunto 212 de concesiones de autorización. Para determinar si el conjunto 206 de código de acceso a ficheros puede acceder al fichero protegido, se calcula la "intersección" de los conjuntos 208, 210 y 212 de concesiones de autorización y se usa para determinar si la operación de acceso al fichero está autorizada. Por ejemplo, si el conjunto 212 de concesiones de autorización incluye una autorización para leer el fichero protegido, pero no la incluye uno de los conjuntos 208 o 210 de concesiones de autorización, en ese caso se niega el acceso al fichero protegido.
Generalmente, una operación de "intersección" (representada por el símbolo "\cap") es una operación de conjuntos que obtiene los elementos comunes de los conjuntos de la operación. Por ejemplo, si el conjunto 1 incluye los elementos A, B, y C, y el conjunto 2 incluye los elementos B, C y D, en ese caso la intersección del conjunto 1 y del conjunto 2 (es decir, conjunto 1 \cap conjunto 2) es igual a B y C. Por el contrario, una operación de "unión" (representada por el símbolo "\cup") es una operación de conjuntos que obtiene todos los elementos de los conjuntos de la operación (es decir, la agregación no duplicada de todos los elementos de los conjuntos). Por ejemplo, si el conjunto 1 incluye los elementos A, B y C, y el conjunto 2 incluye los elementos B, C y D, en ese caso la unión del conjunto 1 y del conjunto 2 (es decir, conjunto 1 \cup conjunto 2) es igual a A, B, C y D.
La figura 3 representa un sistema informático para la gestión de seguridad basada en evidencia de una realización de la presente invención. Un servidor 300 (por ejemplo, un servidor de Internet) está acoplado a un cliente 302 (por ejemplo, un cliente de Internet) por medio de una red de comunicación (no se muestra). El cliente 302 ejecuta un entorno de tiempo de ejecución (por ejemplo, el entorno COM+2.0 Run.time de Microsoft Corporation) para gestionar la ejecución de aplicaciones en el cliente 302. En una realización de la presente invención, el entorno de tiempo de ejecución incluye un módulo 304 de verificación, un módulo 306 cargador y un gestor 308 de normas.
Como se expuso anteriormente, los conjuntos de código se cargan en una lista 318 de programas y procedimientos de tiempo de ejecución para su ejecución por una máquina 312 virtual. Una primera categoría de conjunto de código está representada por los conjuntos 314 de código locales que, generalmente, se consideran conjuntos de código fiables porque se originan en el cliente 302. Por el contrario, una segunda categoría de conjunto de código está representada por los conjuntos 316 de código descargados, que se pueden originar en sitios fuente remotos o no fiables, tal como el servidor 300. En una realización de la presente invención, los conjuntos 314 de código locales y los conjuntos 316 de código descargados se introducen en el módulo 304 de verificación. Seguidamente, los conjuntos de código se introducen en el módulo 306 cargador para ser cargados en la lista 318 de programas y procedimientos de tiempo de ejecución.
Generalmente, los conjuntos 314 y 316 de código están asociados con evidencias (o credenciales) usadas para computar un conjunto de concesiones de autorización para cada conjunto de código. Un componente de evidencia ejemplar puede ser una firma de AUTHENTICODE. Otro componente de evidencia ejemplar es una etiqueta de PICS (Plataforma de Selección de Contenidos de Internet), que indica las propiedades de una fuente de Internet (por ejemplo, un código ejecutable que ha sido verificado en cuanto a virus). En "PICS: Internet Access Controls without Censorship," de P. Resnick y J. Miller, Comunicaciones del ACM, 39 (1996), páginas 87 - 93; disponible también en www.w3.org/pub/WWW/PICS/iacwcv2.htm, se exponen más detalles relativos a una etiqueta de PICS. Otros ejemplos de evidencia pueden incluir, sin limitación, pruebas de compra o de licencia, identificadores de autor, identificadores de vendedor, información de versionado, y credenciales programáticas. Las credenciales programáticas pueden estar, por ejemplo, en forma de código de programación que examina declaraciones hechas por otras credenciales y aporta información complementaria de la red antes de decidir qué declaraciones probatorias se debe facilitar al gestor 308 de normas.
La evidencia acerca de un conjunto de código puede ser facilitada por el servidor o extraída del propio conjunto de código. La evidencia 322 obtenida localmente o del servidor es, implícitamente, fiable y se supone que es verdadera. Sin embargo, la evidencia 320 descargada o facilitada por el conjunto de código no es implícitamente fiable y debe ser o bien autoconfirmada (por ejemplo, firmada digitalmente) o confirmada independientemente. La evidencia 320 descargada puede ser descargada de uno o más sitios fuente desde los cuales se origina el conjunto de código.
La evidencia 322 local y la evidencia 320 descargada se introducen en el gestor 308 de normas, que evalúa la evidencia sobre la base de la normativa de seguridad. En el gestor 308 de normas, se evalúa la evidencia en combinación con la especificación 326 de norma de seguridad (y, opcionalmente, con las solicitudes 324 de autorización, que definen un conjunto de autorizaciones solicitado por el conjunto de código) para generar un conjunto de concesiones de autorización final que se corresponde con un conjunto de código dado.
En una realización de la presente invención, las solicitudes 324 de autorización están asociadas con uno o más conjuntos 314 y 316 de código y pueden incluir al menos un conjunto de solicitudes de autorización de tres tipos siguientes: (1) un conjunto de solicitudes mínimo (MinRS); (2) un conjunto de solicitudes opcional (OptRS); y (3) un conjunto de solicitudes de rechazo (RefuseRS). Se debe entender que dentro del ámbito de la presente invención se contemplan tipos alternativos de conjuntos de solicitudes de autorización.
En una realización de la presente invención (véase el diagrama de flujos de filtrado de la figura 6), los valores por defecto de MinRS y RefuseRS son iguales al conjunto vacío y el valor por defecto de OptRS es el conjunto universal. Como consecuencia, si no se presenta solicitud de autorización alguna, en ese caso, el conjunto de autorizaciones intermedio de la figura 4 se concede como conjunto 414 de concesiones de autorización resultante.
El conjunto de solicitudes mínimo define una condición de autorización mínima y puede incluir el conjunto de autorizaciones mínimo que requiere el conjunto del código asociado para la ejecución. Si el conjunto de concesiones de autorización generado por el gestor 308 de normas no satisface la condición de autorización mínima (por ejemplo, si el conjunto de solicitudes mínimo no es un subconjunto del conjunto de autorizaciones intermedias producido por el generador 518 de conjuntos de autorizaciones de la figura 5), en ese caso el gestor 308 de normas plantea una excepción a la norma que indica al cargador 306 que el conjunto de código 314 o 316 asociado no se debe cargar. En esta realización, se valúa una determinación de seguridad que implica el conjunto de solicitudes mínimo antes de la carga y ejecución del conjunto de código. Alternativamente, un gestor 308 de normas puede permitir que el conjunto de código sea cargado con un conjunto de concesiones de autorización inadecuado, aunque en virtud del conjunto de concesiones de autorización inadecuado, el conjunto de código no llegará a ejecutarse.
Alternativamente, dentro del ámbito de la presente invención se pueden emplear condiciones de autorización mínimas, incluso sin limitación, la provisión de múltiples conjuntos de solicitudes formuladas, en las que la condición de autorización mínima se satisface si al menos uno de los conjuntos de solicitudes formuladas es un subconjunto del conjunto de autorizaciones intermedias. Así pues, el primer conjunto de solicitudes formuladas a satisfacer se puede usar para filtrar el conjunto de autorizaciones intermedias.
Además, también se pueden emplear técnicas alternativas para prevenir la ejecución del conjunto de código, incluso sin limitación el establecimiento de atributos asociados con el conjunto de código 314 o 316 asociado que indique que la condición de autorización mínima no se ha satisfecho. El cargador 306, por ejemplo, puede comprobar los atributos de cada conjunto de código antes de proseguir con la carga del conjunto de código. El cargador 306 también puede devolver un resultado a la máquina 312 virtual indicando que el conjunto de código dejó de cargarse y que no se puede ejecutar.
En una realización alternativa de la presente invención, el entorno de tiempo de ejecución dentro del cliente 302 puede intentar establecer una acción correctiva en respuesta a un fallo del conjunto de código en la obtención de autorizaciones que satisfagan el conjunto de solicitudes mínimo. Por ejemplo, si un conjunto de solicitudes mínimo incluye una autorización requerida para escribir en un directorio protegido dado, el entorno de tiempo de ejecución puede preguntar al usuario si concede esta autorización. Además, se puede eliminar la autoridad requerida para que un usuario conceda interactivamente dicha autorización requerida sobre la base de la identidad del usuario (por ejemplo, solamente un usuario con "status" de administrador puede conceder interactivamente dicha autorización).
El conjunto de solicitudes opcional contiene autorizaciones que el conjunto de código preferiría que fueran concedidas, pero que no son absolutamente necesarias para que se ejecute el conjunto de código. Dichas autorizaciones opcionales pueden permitir que un conjunto de código presente funcionalidad mejorada. Sin embargo, si las autorizaciones opcionales no son concedidas, en ese caso todavía puede estar disponible una funcionalidad más básica, como se define en el conjunto de solicitudes mínimo.
Una realización de la presente invención soporta la naturaleza opcional del conjunto de solicitudes opcional incorporando la funcionalidad opcional en el conjunto de código. Es decir, si algunas o todas las autorizaciones del conjunto de solicitudes opcional no son concedidas, el conjunto de código puede descubrir esto cuando se niegue una operación solicitada (o cuando se niegue la autorización opcional solicitada) durante la ejecución. En respuesta a dicha negativa, el conjunto de código puede ejecutar un código alternativo o adicional que se base en una autorización diferente, tal como una autorización indicada en el conjunto de autorizaciones mínimo. En esta realización, una determinación de seguridad que implique el conjunto de solicitudes mínimo se evalúa durante la ejecución del conjunto de código.
En una realización alternativa, pueden ser recibidos múltiples conjuntos de solicitudes opcionales por el gestor 308 de normas. Los conjuntos de solicitudes opcionales pueden ser procesados para especificar las autorizaciones solicitadas correspondientes a los niveles múltiples de funcionalidad. Basado en los conjuntos de solicitudes opcionales que pueden ser satisfechas o no por el conjunto de autorizaciones, el gestor 308 de normas puede indicar al cargador 306 que omita la carga de una o más clases. Por ejemplo, puede no ser necesario cargar una clase dada si el cargador 306 sabe de antemano que las autorizaciones requeridas por la clase no están disponibles. Dichos conjuntos de solicitudes opcionales pueden ser formuladas también de manera que un máximo nivel de concesión de autorización pueda dar lugar a la carga de conjuntos de código adecuados para permitir un máximo nivel de funcionalidad.
\global\parskip0.900000\baselineskip
Alternativamente, los conjuntos de solicitudes opcionales se pueden usar para especificar grupos de autorizaciones opcionales. Por ejemplo, para proporcionar un primer nivel de funcionalidad, un conjunto de código puede requerir las autorizaciones A, B, C y D (como se especificó en un primer conjunto de solicitudes opcional), mientras que para proporcionar un segundo nivel de funcionalidad, el conjunto de código puede requerir solamente las autorizaciones A y B (como se especificó en un segundo conjunto de solicitudes opcional). Así pues, si el conjunto de autorizaciones puede proporcionar solamente las autorizaciones A, B y C no se satisface el primer conjunto de solicitudes opcional. Consecuentemente, el segundo conjunto de solicitudes opcional filtra el conjunto de autorizaciones para proporcionar solamente las autorizaciones A y B, evitando una concesión innecesaria de la autorización C.
Además, debido a que el procedimiento de verificación en el módulo 304 de verificación y el procedimiento de gestión de la seguridad en el gestor 308 de normas se pueden ejecutar concurrentemente, los dos procedimientos pueden comunicarse entre sí para afectarse mutuamente. Por ejemplo, el gestor 308 de normas puede evaluar una evidencia que indica que un conjunto de código dado está garantizado que es de tipo seguro. Consecuentemente, esta garantía de seguridad del tipo se puede comunicar al módulo 304 de verificación, el cual puede omitir una operación de comprobación de tipo sobre la base de dicha información. Alternativamente, el módulo 304 de verificación puede determinar que un conjunto de código dado no pase una comprobación de seguridad de tipo. En respuesta, el módulo 304 de verificación puede comunicarse con el gestor 308 de normas para preguntar si al conjunto de código le ha sido concedida una autorización de ejecución a pesar de no haber logrado pasar una comprobación de seguridad de tipo.
La figura 4 representa módulos de un gestor de normas para gestionar seguridad basada en evidencia en una realización de la presente invención. Los módulos ejecutables descritos en relación con la figura pueden ser ejecutados como módulos de software que sean ejecutables en un sistema informático. Alternativamente, en el ámbito de la presente invención se contemplan también módulos ejecutables ejecutados en hardware o en una combinación de hardware y software. Además, los módulos revelados en la presente se pueden combinar en menos módulos o dividir en más módulos sin salir del ámbito de la presente invención.
Para recibir una especificación 402 de norma de seguridad y un conjunto 404 de evidencias, se acopla un gestor 400 de normas. La especificación 402 de norma de seguridad especifica una definición de uno o más grupos de código. En una realización, los grupos de código están configurados en una o más colecciones de grupos. Alternativamente, los grupos de código pueden estar configurados en una o más jerarquías de grupos de código. La especificación de la norma de seguridad puede definir también uno o más niveles de norma. El conjunto 404 de evidencias define características de fiabilidad asociadas con conjunto de código recibido por un sistema informático.
En una realización de la presente invención, un módulo 406 reconocedor recibe la especificación 402 de norma de seguridad y extrae una definición de uno o más grupos de código designados. Cada grupo de código está asociado con un criterio de pertenencia, una definición de descendiente (que especifica cero o más grupos de código descendientes del grupo de código), y un conjunto de autorizaciones del grupo de código. El criterio de pertenencia especifica las condiciones de pertenencia a un grupo de código dado, que un conjunto de evidencias debe satisfacer para que un conjunto de código correspondiente sea considerado perteneciente al grupo de código. La definición de grupo de código descendiente especifica el descendiente de un grupo de código dado. Si un conjunto de código demuestra su pertenencia a un primer grupo de código (es decir, un grupo de código progenitor), se considerará que el conjunto de código pertenece a los grupos de código descendientes del grupo de código progenitor. Los conjuntos de autorizaciones del grupo de código representan colecciones de autorizaciones que pueden ser asignadas a grupos de código. Si se determina que un conjunto de código pertenece al grupo de código, las autorizaciones del conjunto de autorizaciones asociado pueden ser concedidas al conjunto de código, dependiendo de otras operaciones del gestor de normas.
Otras realizaciones del grupo de código pueden incluir configuraciones de información alternativas. Por ejemplo, en una realización, la colección de grupos de código está representada en una lista unidimensional de grupos de código, en la que cada grupo de código incluye un criterio de pertenencia y un conjunto de autorizaciones, y omite una definición de grupo de código descendiente presentada anteriormente. En esta realización, la lista unidimensional puede estar ordenada o no ordenada. Además, dentro del ámbito de la presente invención se contemplan otras configuraciones de la información.
En una realización ejemplar de la presente invención, los conjuntos de autorizaciones pueden estar designados para facilitar su identificación en la especificación 402 de norma de seguridad. Más de un grupo de código pueden tener asignado el mismo conjunto de autorizaciones. Así pues, si se hace un cambio en un conjunto de autorizaciones designado (por ejemplo, inserción o eliminación de una autorización individual), el cambio afecta a todos los grupos de código asociados con ese conjunto de autorizaciones designado. Por ejemplo, para conceder las mismas autorizaciones a varios sitios de Internet de una asociación comercial de extranet que pertenecen a grupos de código diferentes, se puede definir un solo conjunto de autorizaciones designado y asignarlo a varios grupos de código.
En una realización de la presente invención, se soportan tres tipos de conjunto de autorizaciones designados: (1) conjuntos de autorizaciones estándar -estos conjuntos están predefinidos y no se pueden cambiar; (2) conjuntos de autorizaciones predefinidos -estos conjuntos pueden ser modificados por el administrador; y (3) conjuntos de autorizaciones personalizados -estos conjuntos pueden ser definidos por un usuario siempre que las designaciones del conjunto de autorizaciones no entren en conflicto con las designaciones de conjuntos de autorizaciones estándar o predefinidos. En una realización, los conjuntos de autorizaciones estándar están disponibles en todos los niveles de normativa y no se pueden predefinir en nivel de normativa de seguridad alguno (ámbito universal). En esta realización, los conjuntos de autorizaciones predefinidos y personalizados se definen y se referencian dentro de cualquier nivel de normativa y no se pueden referenciar desde otros niveles de normativa (ámbito de nivel de normativa). Sin embargo, se debe entender que, en una realización alternativa de la presente invención, el ámbito de cualquier conjunto de autorizaciones se puede ampliar hasta más allá de un nivel de normativa dado.
La Tabla 1 describe conjuntos de autorizaciones estándar disponibles en una realización de la presente invención. Algunos conjuntos de autorizaciones estándar, tales como conjuntos de Internet y de intranets locales, están predefinidos, pero pueden ser modificados por un usuario o administrador. En una realización de la presente invención, otros conjuntos de autorizaciones, tales como los de verificación omitida, no se pueden modificar. Dentro del ámbito de la presente invención se contemplan también conjuntos de autorizaciones designados, y los conjuntos de autorizaciones designados descritos en la Tabla 1 se pueden modificar sin salir de la presente invención.
TABLA 1 Conjuntos de Autorizaciones Estándar
2
Aunque en la presente se describen muchas autorizaciones como autorizaciones ejemplares, en una realización de la presente invención la lista de las posibles autorizaciones contempladas dentro del ámbito de la presente invención no se limita a estas autorizaciones ejemplares. Por ejemplo, una autorización puede ser concedida para permitir la ejecución de un conjunto de código a pesar de omitir la verificación. Otra autorización puede ser concedida para permitir que una clase de un conjunto de código sea heredera de una clase de otro conjunto de código (por ejemplo, un derecho a subclasificar).
El conjunto de autorizaciones de grupo de código asociado con un grupo de código dado puede especificar autorizaciones asociadas con el grupo de código. Alternativamente, el conjunto de de autorizaciones del grupo de código asociado con un grupo de código dado puede especificar autorizaciones asociadas con el grupo de código y con todos los grupos de código progenitores. Esta flexibilidad permite una variedad de configuraciones de seguridad (por ejemplo, niveles de normativa, conjuntos de autorizaciones, criterios de pertenencia, etc.) a definir en una especificación de norma de seguridad. Como se expuso anteriormente, el gestor de normas puede estar desarrollado para albergar dicha variedad de configuraciones de seguridad.
En una realización, la especificación 402 de norma de seguridad puede especificar también múltiples niveles de la norma, teniendo cada nivel de la norma uno o más grupos de código. Los grupos de código se pueden configurar en una o más colecciones de grupos de código. Los niveles de la norma permiten que un administrador, por ejemplo, defina diferentes normas de seguridad para diferentes máquinas, usuarios, aplicaciones, periodos de tiempo, grupos de usuarios, etc. Cuando un módulo 410 evaluador de pertenencias genera un conjunto de autorizaciones con un nivel de norma, el módulo 410 evaluador de pertenencias cruza a través de los grupos de código asociados con ese nivel de norma. Por consiguiente, el gestor 400 de normas puede generar un conjunto de autorizaciones asociado con el nivel de normativa individual. Posteriormente, los conjuntos de autorizaciones de los múltiples niveles de normativa pueden ser procesados (por ejemplo, combinados o seleccionados) para generar un conjunto 414 de concesiones de autorización resultante.
En la realización ilustrada, un módulo 408 generador de colecciones de grupos de código recibe la definición de reconocida del módulo 406 reconocedor y genera una o más colecciones de grupos de código en la memoria del sistema informático. El módulo 410 evaluador de pertenencias recibe el conjunto 404 de evidencias y extrae características de fiabilidad relacionadas con el correspondiente conjunto de código. El módulo 410 evaluador de pertenencias cruza a través de los grupos de código para determinar si el conjunto de código pertenece a uno o más grupos de código. Un módulo 412 generador de conjuntos de autorizaciones recibe la determinación de la pertenencia del módulo 419 evaluador de pertenencias y genera un conjunto 422 de autorizaciones intermedias, basado en una combinación lógica de los conjuntos de autorizaciones del grupo de código asociado con grupos de código cuya pertenencia ha sido determinada. Un módulo 424 de filtro de autorizaciones/solicitudes filtra el conjunto 422 de autorizaciones intermedias y genera el conjunto 414 de concesiones de autorización resultante.
La figura 5 representa niveles de normativa ejemplares sobre los que opera un gestor de normas de una realización de la presente invención. En el gestor 502 de normas procesa una especificación 500 de norma de seguridad para generar uno o más niveles 506, 508 y 510 de normativa de seguridad (este procedimiento está representado por las líneas de puntos que apuntan a cada uno de los niveles de normativa). En una realización de la presente invención, la especificación 500 de norma de seguridad está escrita en un archivo de XML (Lenguaje de maquetación extensible). Sin embargo, en realizaciones alternativas, se pueden emplear otros formatos de información, incluso sin limitación SGML (Lenguaje de Maquetación Generalizado Estándar), HTML (Lenguaje de Maquetación de Hiper Texto), RDF (Marco de Descripción de Recursos), Visual Basic, y otros formatos de información y código estándar y personalizado.
En una realización de la presente invención, la especificación 500 de norma de seguridad es una representación constante de una norma de seguridad (por ejemplo, una colección ordenada de niveles de normativa y/o colecciones de grupos de código), en la que cada nivel de normativa está construido con grupos de código. Los niveles de normativa de orden inferior especifican generalmente limitaciones de la normativa más restrictivas que las de los niveles de normativa de orden superior. La especificación 500 de norma de seguridad es generada típicamente por un sistema de administrador, un usuario o un programa de instalación de la aplicación que tiene autorizaciones adecuadas. Los niveles de normativa ejemplares pueden incluir sin limitación niveles
\hbox{de normativa de empresa, máquina, usuario y
aplicación.}
En una realización de la presente invención, el nivel más alto del nivel normativo es un nivel normativo de empresa, que puede definir la norma de seguridad aplicada a todos los sistemas dentro de una empresa dada. Un nivel inferior del nivel de normativa es un nivel de normativa de una máquina, que puede definir la norma de seguridad aplicada a todos los usuarios de un sistema dado. Un nivel de normativa de usuario puede definir la norma de seguridad aplicada a un usuario dado, independientemente de en que sistema individual está registrado el usuario. Un nivel de normativa de aplicación puede definir una norma de seguridad aplicada a una aplicación dada, independientemente del usuario o sistema de ejecución de la aplicación. Dentro del ámbito de la presente invención se contemplan niveles de normativa y órdenes de nivel de normativa adicionales.
La especificación 500 de norma de seguridad también gestiona seguridad usando colecciones de grupos de código (por ejemplo, colecciones de niveles de grupo de código), que son definidos por las condiciones de pertenencia y contienen conjuntos de autorizaciones y atributos especiales. La especificación 500 de norma de seguridad consta de declaraciones de grupos de código con conjuntos de autorizaciones asociados. Un conjunto de código que pertenece a un grupo de código dado puede recibir concesiones de autorización del conjunto de autorizaciones asociado con el grupo de código. La pertenencia a un grupo de código es determinada por el gestor 502 de normas usando el conjunto 504 de evidencias asociado con el conjunto de código, tal como una firma digital, el origen del conjunto de código, etc. Un administrador puede añadir un grupo de código a la colección de grupos de código para conceder autorizaciones adicionales a los conjuntos de código que pertenecen al nuevo grupo de código.
En una realización de la presente invención, un grupo de código puede ser atribuido con un indicador de propiedad "Exclusiva", que especifica que solamente las autorizaciones asociadas con este grupo de código específico se deben aplicar al conjunto de código perteneciente a dicho grupo. Los conjuntos de autorizaciones de otros grupos de código pertenecientes se ignoran (es decir, no se combinan).
En una realización de la presente invención, los grupos de código se definen en una colección de grupos de código que tiene un nodo raíz correspondiente a "todos" los conjuntos de código. El nodo raíz representa un grupo de código progenitor que tiene nodos descendientes, cada uno de los cuales puede tener también nodos descendientes, etc., para formar una jerarquía de grupos de código. Dentro del ámbito de la presente invención también se contemplan colecciones de grupos de código alternativas incluso, sin limitación, listas ordenadas y no ordenadas de grupos de código. Si el gestor 502 de normas determina que un conjunto de código pertenece a un grupo de código progenitor, en ese caso, se prueba el conjunto de código comparándolo con los descendientes del grupo de código progenitor para determinar la pertenencia del mismo. Los tipos de grupo de código ejemplares y los criterios de pertenencia se describen en la Tabla 2, aunque se contemplan otros tipos de grupos de código dentro del ámbito de la presente invención. Además, los tipos de grupos de código pueden estar asociados con una propiedad. Por ejemplo, un tipo de grupo de código "editor de software" puede
\hbox{estar asociado con
un editor  especificado,  Microsoft , como en  Editor:
Microsoft .}
TABLA 2 Grupos de Código Ejemplares
4
\newpage
\global\parskip1.000000\baselineskip
Además, la especificación 500 de norma de seguridad puede definir múltiples niveles de normativa. En la realización ilustrada, cada nivel de normativa (por ejemplo, nivel empresa 506, nivel máquina 508 y nivel usuario 510) tiene una colección de grupos de código individual. Como se expuso anteriormente, dentro del ámbito de la presente invención, se pueden emplear otras configuraciones del nivel de normativa, tales como una o más colecciones de grupos de código sobre las cuales se distribuyen los múltiples niveles de normativa (por ejemplo, un nivel de normativa por subárbol asociado con un descendiente de un nodo raíz).
En la realización ilustrada, se genera un conjunto de autorizaciones con nivel de normativa (por ejemplo, conjunto 512 de autorizaciones de nivel empresa, conjunto 514 de autorizaciones de nivel máquina, o conjunto 516 de autorizaciones de nivel usuario) de cada uno de los niveles de normativa. Un combinador de conjuntos de autorizaciones con nivel de normativa combina o de otro modo procesa los conjuntos 512, 514 y 516 de autorizaciones con nivel de normativa para generar un conjunto 526 de autorizaciones intermedias. El filtro 524 de autorizaciones/solicitudes introduce solicitudes 522 de autorización y aplica un algoritmo de filtro al conjunto 526 de autorizaciones intermedias para generar el conjunto 520 de concesiones de autorización resultante, si es pertinente.
En una realización ejemplar, el filtro 524 de autorizaciones/solicitudes aplica un algoritmo de filtro para generar el conjunto 520 de concesiones de autorización, descrito en combinación con la figura 6:
1)
MaxRS = (MinRS \cup OptRS) [Operación 600]
2)
Si (MinRS no es un subconjunto de IntPS) [Operación 602], en ese caso el gestor 502 de normas lanza una excepción a la norma para prevenir la carga y/o ejecución del conjunto de código [Operación 604]
3)
Si (MinRS es un subconjunto de IntPS) [Operación 602], en ese caso PGS = (MaxRS \cap IntPS) - RefuseRS [Operación 606]
4)
Si (PGS incluye la autorización de ejecución) [Operación 608], en ese caso el conjunto de código puede ser cargado por el cargador 306 de la figura 3 [Operación 610] y PGS puede ser cargado en el área de memoria 318 de tiempo de ejecución en la figura 3 en asociación con el conjunto de código [Operación 612]
5)
Si (PGS no incluye la autorización de ejecución) [Operación 608], en ese caso el gestor 502 de normas lanza una excepción a la norma para prevenir la carga y/o ejecución del conjunto de código [Operación 614]
donde PGS representa el conjunto 520 de concesiones de autorización, IntPS representa el conjunto 526 de autorizaciones intermedias, MaxAS representa el conjunto de solicitudes máximo, MinRS representa las solicitudes de autorización mínimas, OptAS representa solicitudes de autorización opcional, y RefuseRS representa solicitudes de autorización rechazadas. MinRS, OptRS, y RefuseRS son recibidos como elementos de las solicitudes 522 de autorización.
En una realización de la presente invención, si MinRS, OptRS, o RefuseAS no se especifican, se les asignan valores por defecto. Para MinRS y RefuseAS, los valores por defecto son conjuntos vacíos. Para OptRS, el valor por defecto es el conjunto universal. Por ejemplo, si MinRS y OptRS no se especifican, en ese caso PGS sería igual a lntPS - RefusePS.
La operación 606 lógica de conjuntos se usa para generar un subconjunto del conjunto de autorizaciones intermedias, de manera que en el conjunto de concesiones de autorización solamente se incluyen las autorizaciones necesarias. Es decir, el conjunto de autorizaciones intermedias puede ser mucho más amplio que el requerido o solicitado por el conjunto de código. Consecuentemente, se omiten las autorizaciones innecesarias o no solicitadas del conjunto de concesiones de autorización resultante.
Se debe entender que el algoritmo revelado anteriormente es meramente un algoritmo ejemplar del filtrado de un conjunto de autorizaciones intermedias que usa solicitudes de autorización. Dentro del ámbito de la presente invención se contemplan algoritmos alternativos, especialmente si se usa una combinación de solicitudes de autorización alternativas (por ejemplo, tipos adicionales de conjuntos de autorizaciones).
La figura 7 ilustra un sistema ejemplar útil para la implementación de una realización de la presente invención. Un sistema informático ejemplar para las realizaciones de la invención incluye un dispositivo de computo de uso general en forma de sistema 700 informático convencional, que incluye una unidad 702 de procesador, una memoria 704 del sistema, y un colector 706 del sistema que acopla varios componentes del sistema incluso la memoria 704 del sistema a la unidad 700 de procesador. El colector 706 del sistema puede ser cualquiera de los diferentes tipos de estructuras de colector que incluya un colector de memoria o controlador de la memoria, un colector periférico y un colector local que usa cualquiera de las diferentes arquitecturas de colector. La memoria del sistema incluye una memoria 708 de solo lectura (ROM) y una memoria 710 de acceso aleatorio (RAM). En la ROM 708 está almacenado un sistema 712 de entrada/salida básico (BIOS), que contiene rutinas básicas que ayudan a transferir información entre elementos instalados dentro del sistema 700 informático.
\newpage
El sistema 700 informático incluye además una unidad 712 de disco duro para leer de y escribir en un disco duro, una unidad 714 de disco magnético para leer de o escribir en un disco 716 magnético extraible, y una unidad 718 de disco óptico para leer de o escribir en un disco 719 óptico extraible tal como un CD ROM, DVD u otros medios ópticos. La unidad 712 de disco duro, la unidad 714 de disco magnético y la unidad 718 de disco óptico están conectados al colector 706 del sistema por una interfaz 720 de la unidad de disco duro, una interfaz 722 de la unidad de disco magnético, y una interfaz 724 de la unidad de disco óptico, respectivamente. Las unidades y sus medios informáticos legibles asociados permiten el almacenamiento no volátil de instrucciones legibles de ordenador, estructuras de datos, programas y otra información del sistema 700 informático.
Aunque el entorno ejemplar descrito en la presente emplea un disco duro, un disco 716 magnético extraible, y un disco 719 óptico extraible, en el sistema ejemplar se pueden usar otros tipos de medios legibles del ordenador capaces de almacenar información. Los ejemplos de estos otros tipos de medios legibles del ordenador que se pueden usar en el entorno operativo ejemplar incluyen casettes magnéticos, tarjetas de memoria no volátil, discos de vídeo digitales, cartuchos Bemoulli, memorias de acceso al azar (RAM), y memorias de solo lectura (ROM).
En el disco duro, disco 716 magnético, disco 719 óptico, ROM 708 o RAM 710 se pueden almacenar varios módulos de programa, incluso un sistema 726 operativo, uno o más programas 728 de aplicación, otros módulos 730 de programas e información 732 de programas. Un usuario puede introducir comandos e información en el sistema 700 informático a través de dispositivos de entrada tales como un teclado 734 y un ratón 736 u otros dispositivos de señalización. Los ejemplos de otros dispositivos de entrada pueden incluir un micrófono, una palanca de control, una almohadilla de juego, antena parabólica y escáner. Estos y otros dispositivos de entrada se conectan frecuentemente a la unidad 702 de proceso a través de una interfaz 740 de puerto en serie que se acopla al colector 706 del sistema. No obstante, estos dispositivos de entrada también se pueden conectar a través de otras interfaces, tales como un puerto en paralelo, puerto de juego, o un colector en serie universal (USB). También se conecta al colector 706 del sistema un monitor 742 u otro tipo de dispositivo de presentación por medio de una interfaz, tal como un adaptador 744 de vídeo. Además del monitor 742, los sistemas informáticos típicamente incluyen otros dispositivos periféricos de salida (no se muestran), tales como altavoces e impresoras.
El sistema 700 informático puede operar en un entorno de red usando conexiones lógicas a uno o más ordenadores remotos, tales como un ordenador 746 remoto. El ordenador 746 remoto puede ser un sistema de ordenadores, un servidor, un enrutador, un PC en red, un dispositivo de conexión punto a punto u otro nodo de red común y, típicamente, incluye muchos o todos los elementos descritos anteriormente en relación con el sistema 700 informático. Las conexiones en red incluyen una red de área local (LAN) 748 y una red de área amplia (WAN) 750. Dichos entornos de red son habituales en oficinas, redes de ordenadores amplias de empresa, intranets, e Internet.
El sistema 700 informático, cuando se usa en un entorno de red LAN se conecta a la red 748 local a través de una interfaz o adaptador 752 de red. El sistema 700 informático, cuando se usa en un entorno de red WAN típicamente incluye un módem 754 u otro medio para el establecimiento de comunicaciones a través de la red 750 de área amplia, tal como la Internet. El módem 754, que puede ser interno o externo, se conecta al colector 706 del sistema a través de la interfaz 740 de puerto en serie. En un entorno de red, los módulos de programas representados en relación con el sistema 700 informático, o partes del mismo, se pueden almacenar en el dispositivo de almacenamiento de memoria remota. Se puede apreciar que las conexiones en red mostradas son ejemplares y que se pueden utilizar otros medios para establecer un enlace de comunicación entre los ordenadores.
En la realización ilustrada, se puede leer una especificación de norma de seguridad en una unidad 712 de disco duro, por ejemplo, en la memoria 704. La CPU 702 ejecuta código de instrucciones residente en memoria para los procedimientos de ordenador que ponen en funcionamiento una máquina virtual y que generan un conjunto de concesiones de autorización usando solicitudes de autorización tecleadas asociadas con el conjunto de código recibido de un sitio fuente. Además, la CPU 702 ejecuta los componentes del software que ponen en práctica el gestor de normas citado en las reivindicaciones.
La figura 8 ilustra un diagrama de flujos de operaciones de una realización de la presente invención para la generación de un conjunto de concesiones de autorización que usa las solicitudes de autorización tecleadas asociadas con el conjunto de código recibido de un sitio fuente. La operación 800 de definición define una colección de grupos de código de acuerdo con una especificación de norma de seguridad. La colección de grupos de código incluye uno o más grupos y puede estar configurada como jerarquía de grupos de código. La operación 802 de recepción recibe las evidencias asociadas con un conjunto de código. La operación 804 de pertenencia evalúa la pertenencia del conjunto de código respecto de los grupos de código. Generalmente, la evaluación se basa en un criterio de pertenencia asociado con cada grupo de código.
La operación 806 de generación genera un conjunto de autorizaciones basado en una o más determinaciones de pertenencia hechas por la operación 804 de pertenencia. Por ejemplo, en una realización en la que la colección de grupos de código está configurada como jerarquía de grupos de código, el conjunto de autorizaciones se genera dinámicamente combinando autorizaciones asociadas con un grupo de código progenitor y con grupos de código descendentes a los que el conjunto de código está determinado que pertenece. Las autorizaciones combinadas se producen en la operación 806 de generación como el conjunto de autorizaciones que es recibido por un módulo de filtro de autorizaciones/solicitudes.
La operación 808 de recepción recibe solicitudes de autorización asociadas con el conjunto de código. Las solicitudes de autorización se pueden recibir como parte del conjunto de código, o recibir (o recuperar) de otra fuente, tal como un sitio fuente local (por ejemplo, dentro del sistema informático, de un periférico o medio de almacenamiento adjunto, o de un sitio de almacenamiento de la red) o un sitio fuente remoto (por ejemplo, por medio de la Internet).
La operación 810 de filtrado filtra el conjunto de autorizaciones basada en el conjunto de solicitudes de autorización para controlar la ejecución del conjunto de código. Si la operación 810 de filtrado determina que un conjunto de solicitudes mínimo, si se presenta en asociación con el conjunto de código, no es un subconjunto del conjunto de autorizaciones, el gestor de normas puede prevenir la carga o ejecución del conjunto de código. Análogamente, si una ejecución de autorización no está incluida en el conjunto de autorizaciones, la operación 810 de filtrado puede prevenir la carga u operación del conjunto de código.
La operación 810 de filtrado también puede omitir las autorizaciones no incluidas en un conjunto de solicitudes mínimo o en un conjunto de solicitudes máximo, si se presentan en asociación con el conjunto de código, al generar el conjunto de concesiones de autorización para evitar la concesión de autorizaciones no solicitadas por el conjunto de código. Además, las autorizaciones incluidas en un conjunto de solicitudes de rechazo, si se presentan en asociación con el conjunto de código, también pueden ser omitidas del conjunto de concesiones de autorización.
Las realizaciones de la invención descritas en la presente se ejecutan como etapas lógicas en uno o más sistemas informáticos. Las operaciones lógicas de la presente invención se ejecutan (1) como una secuencia en la ejecución de etapas implementadas por un procesador en uno o más sistemas informáticos y (2) como módulos de máquina interconectados con uno o más sistemas informáticos. La implementación es cuestión de elección, dependiente de los requisitos de rendimiento del sistema informático que implementa la invención. Consecuentemente, las operaciones lógicas que constituyen las realizaciones de la invención descritas en la presente se denominan diversamente operaciones, etapas, objetivos o módulos.
La especificación, ejemplos y datos anteriores constituyen una descripción completa de la estructura y del uso de realizaciones ejemplares de la invención. Dado que se pueden hacer muchas realizaciones de la invención sin salir del ámbito la invención, la invención reside en las reivindicaciones adjuntas a continuación.

Claims (33)

1. Un procedimiento para el procesado de un conjunto de autorizaciones asociado con un conjunto de código (106) recibido de un sitio fuente (100) para controlar la ejecución del conjunto de código, comprendiendo el procedimiento:
recepción del conjunto de autorizaciones que incluye al menos una autorización asociada con el conjunto de código;
recepción de un conjunto de solicitudes de autorización (120, 324, 420, 522) en asociación con el conjunto de código; y
filtrado del conjunto de autorizaciones basado en el conjunto de solicitudes de autorización para controlar la ejecución del conjunto de código;
caracterizado porque
el conjunto de solicitudes de autorización especifica un conjunto de solicitudes opcional que especifica un conjunto opcional de autorizaciones solicitadas en asociación con el conjunto de código; y
la operación de filtrado comprende el filtrado del conjunto de autorizaciones basado en el conjunto de solicitudes opcional para generar un conjunto de concesiones de autorización (208 - 212, 414, 520); y que comprende además:
ejecución de un primer nivel de la funcionalidad del conjunto de código si el conjunto de solicitudes opcional es un subconjunto del conjunto de concesiones de autorización; y
ejecución de un segundo nivel de funcionalidad del conjunto de código si el conjunto de solicitudes opcional no es un subconjunto del conjunto de concesiones de autorización.
2. El procedimiento de la reivindicación 1, en el que la operación de filtrado comprende:
generación del conjunto de concesiones de autorización de un subconjunto del conjunto de autorizaciones, siendo especificado el subconjunto por el conjunto de solicitudes de autorización.
3. El procedimiento de la reivindicación 1 en el que la operación de filtrado comprende:
cómputo de una operación lógica de conjuntos con el conjunto de autorizaciones y el conjunto de solicitudes de autorización para generar un conjunto de concesiones de autorización.
4. El procedimiento de la reivindicación 1 en el que el conjunto de solicitudes de autorización especifica una condición de autorización mínima y la operación de filtrado comprende:
impedir la carga del conjunto de código si el conjunto de autorizaciones deja de satisfacer la condición de autorización mínima.
5. El procedimiento de la reivindicación 1 en el que el conjunto de solicitudes de autorización especifica una condición de autorización mínima y la operación de filtrado comprende:
impedir la ejecución del conjunto de código si el conjunto de autorizaciones deja de satisfacer la condición de autorización mínima.
6. El procedimiento de la reivindicación 1 que comprende además:
definición (800) de una colección de grupos de código basada en una especificación de norma de seguridad (326, 402, 500), incluyendo la colección de grupos de código uno más grupos de código;
recepción (802) de la evidencia (108, 320, 404, 504) asociada con el conjunto de código;
evaluación (804) de la pertenencia del conjunto de código a uno o más grupos de código, basada en la evidencia; y
generación (806) del conjunto de autorizaciones basada en la pertenencia del conjunto de códigos a uno o más grupos de código.
7. El procedimiento de la reivindicación 1 en el que el conjunto de solicitudes de autorización especifica una pluralidad de conjuntos de solicitudes de autorización tecleados, especificando cada conjunto de solicitudes de autorización tecleado un tipo distinto de preferencia de autorización solicitada en asociación con el conjunto de código.
8. El procedimiento de la reivindicación 1 en el que el conjunto de solicitudes de autorización especifica un conjunto de solicitudes mínimo que especifica un conjunto mínimo de autorizaciones solicitadas en asociación con el conjunto de código.
9. El procedimiento de la reivindicación 8 en el que la operación de filtrado comprende:
filtrado del conjunto de autorizaciones basado en el conjunto de solicitudes mínimo para generar el conjunto de concesiones de autorización, de manera tal que el conjunto de concesiones de autorización incluya un subconjunto del conjunto de autorizaciones.
10. El procedimiento de la reivindicación 8 que comprende además:
impedir la carga del conjunto de código si el conjunto de solicitudes de autorización no es un subconjunto del conjunto de autorizaciones.
11. El procedimiento de la reivindicación 8 que comprende además:
impedir la ejecución del conjunto de código si el conjunto de solicitudes mínimo no es un subconjunto del conjunto de autorizaciones.
12. El procedimiento de la reivindicación 1 en el que el conjunto de solicitudes de autorización especifica un conjunto de solicitudes denegadas que especifica un conjunto de una o más autorizaciones a omitir del conjunto de concesiones de autorización en asociación con el conjunto de código.
13. El procedimiento de la reivindicación 12 en el que la operación de filtrado comprende:
omisión del conjunto de una o mas autorizaciones especificado por el conjunto de solicitudes denegadas del conjunto de concesiones de autorización.
14. El procedimiento de la reivindicación 1 en el que el conjunto de solicitudes de autorización incluye un conjunto de solicitudes opcional y un conjunto de solicitudes mínimo que especifica un conjunto mínimo de autorizaciones solicitadas en asociación con el conjunto de código, y en el que la operación de filtrado comprende:
cómputo (600) de una unión del conjunto de solicitudes opcional y del conjunto de solicitudes mínimo para proveer un conjunto de solicitudes máximo; y
cómputo de una intersección del conjunto de solicitudes máximo y del conjunto de autorizaciones.
15. El procedimiento de la reivindicación 14 en el que el conjunto de solicitudes de autorización especifica además un conjunto de solicitudes denegadas que especifica un conjunto de una o más autorizaciones a omitir de un conjunto de concesiones de autorización en asociación con el conjunto de código, y en el que la operación de filtrado comprende además:
sustracción (606) del conjunto de una o más autorizaciones especificado en el conjunto de solicitudes denegadas de la intersección del conjunto de solicitudes máximo y del conjunto de autorizaciones.
16. El procedimiento de la reivindicación 1 en el que la operación de recepción de un conjunto de solicitudes de autorización comprende:
recepción del conjunto de solicitudes de autorización y del conjunto de código en una sola comunicación por la red.
17. El procedimiento de la reivindicación 1 en el que la operación de recepción de un conjunto de solicitudes de autorización comprende:
recuperación del conjunto de solicitudes de autorización en una comunicación por la red distinta de una comunicación por la red en la que se recibe el conjunto de código.
18. Un módulo de gestor de normas (104, 308, 400, 502) para el procesado de un conjunto de autorizaciones asociado con un conjunto de código (106) recibido de un sitio fuente (100) para controlar la ejecución del conjunto de código, comprendiendo el módulo de gestor de normas:
un filtro (424, 524) que recibe (808) el conjunto de autorizaciones y un conjunto (120, 324, 420, 522) de solicitudes de autorización asociado con el conjunto de código y que filtra (810) el conjunto de autorizaciones basado en el conjunto de solicitudes de autorización para controlar la ejecución del conjunto de código;
en el que el conjunto de solicitudes de autorización especifica un conjunto de solicitudes opcional que especifica un conjunto opcional de autorizaciones solicitadas en asociación con el conjunto de código; y en el que el filtro genera un conjunto (208 - 212, 414, 520) de concesiones de autorización basado en el conjunto de solicitudes opcional, estando asociado el conjunto de concesiones de autorización con un primer nivel de la funcionalidad del conjunto de código si el conjunto de solicitudes opcional es un subconjunto del conjunto de concesiones de autorización y que está asociado con un segundo nivel de la funcionalidad del conjunto de código si el conjunto de solicitudes opcional no es un subconjunto del conjunto de concesiones de autorización.
19. El módulo de gestor de normas de la reivindicación 18 que comprende además:
un generador (412, 518) de conjuntos de autorizaciones que recibe un conjunto (404, 504) de evidencias y que genera un conjunto de autorizaciones en asociación con el conjunto de código basado en el conjunto de evidencias.
20. El módulo de gestor de normas de la reivindicación 18 en el que el filtro genera el conjunto de concesiones de autorización a partir de un subconjunto del conjunto de autorizaciones especificado por el conjunto de solicitudes de autorización.
21. El módulo de generador de normas de la reivindicación 18 en el que el filtro computa una operación lógica de conjuntos con el conjunto de autorizaciones y el conjunto de solicitudes de autorización para generar el conjunto de concesiones de autorización.
22. El módulo de gestor de normas de la reivindicación 18 en el que el filtro impide la carga del conjunto de código si el conjunto de autorizaciones deja de satisfacer la condición de autorización mínima.
23. El módulo de gestor de normas de la reivindicación 18 en el que el filtro impide la ejecución del conjunto de código si el conjunto de autorizaciones deja de satisfacer la condición de autorización mínima.
24. El módulo de gestor de normas de la reivindicación 18 en el que el conjunto de solicitudes de autorización especifica una pluralidad de conjuntos de solicitudes de autorización tecleadas, especificando cada conjunto de solicitudes de autorización tecleado un tipo distinto de preferencia de autorización solicitada en asociación con el conjunto de código.
25. El módulo de gestor de normas de la reivindicación 18 en el que el conjunto de solicitudes de autorización especifica un conjunto de solicitudes mínimo que especifica un conjunto mínimo de autorizaciones solicitadas en asociación con el conjunto de código.
26. El módulo de gestor de normas de la reivindicación 18 en el que el filtro genera el conjunto de concesiones de autorización que omite una o más autorizaciones especificadas en un conjunto de solicitudes denegadas.
27. El módulo de gestor de normas de la reivindicación 18 en el que el conjunto de solicitudes de autorización especifica el conjunto de solicitudes opcional y un conjunto de solicitudes mínimo que especifica un conjunto mínimo de autorizaciones solicitadas en asociación con el conjunto de código, y en el que la operación de filtrado
comprende:
cómputo (600) de una unión del conjunto de solicitudes opcional y del conjunto de solicitudes mínimo para proveer un conjunto de solicitudes máximo; y
cómputo de una intersección del conjunto de solicitudes máximo y del conjunto de autorizaciones.
28. El módulo de gestor de normas de la reivindicación 18 que comprende además:
un generador (408) de colecciones de grupos de código que crea (800) una colección de grupos de código basada en una especificación (116, 326, 402, 500) de norma de seguridad, incluyendo la colección de grupos de código uno o más grupos de código;
un evaluador (410) de pertenencia que determina (804) la pertenencia de un conjunto de código a uno o más grupos de código, basado en una evidencia (108, 320, 404, 504) asociada con el conjunto de código; y
un generador (412, 518) de conjuntos de autorizaciones que crea el conjunto de autorizaciones basado en la pertenencia del conjunto de código al uno o más grupos de código.
29. Una señal de datos de ordenador incorporada en una onda portadora por un sistema de computación y que codifica un programa de ordenador para la ejecución de un procedimiento de ordenador que procesa un conjunto de autorizaciones asociado con un conjunto (106) de código recibido de un sitio (100) fuente para controlar la ejecución del conjunto de código, comprendiendo el procedimiento de ordenador:
recepción del conjunto de autorizaciones que incluye al menos una autorización asociada con el conjunto de código;
recepción de un conjunto (120, 324, 420, 522) de solicitudes de autorización en asociación con el conjunto de código; y
filtrado del conjunto de autorizaciones basado en el conjunto solicitudes de autorización para controlar la ejecución del conjunto de código;
en el que el conjunto de solicitudes de autorización especifica un conjunto de solicitudes opcional que especifica un conjunto opcional de autorizaciones solicitadas en asociación con el conjunto de código; y en el que la operación de filtrado comprende además el filtrado del conjunto de autorizaciones basado en el conjunto de solicitudes opcional para generar un conjunto (208 -212, 414, 520) de concesiones de autorización; y que comprende además:
ejecución de un primer nivel de la funcionalidad del conjunto de código si el conjunto de solicitudes opcional es un subconjunto del conjunto de concesiones de autorización; y
ejecución de un segundo nivel de la funcionalidad del conjunto de código si el conjunto de solicitudes opcional no es un subconjunto del conjunto de concesiones de autorización.
30. Un medio de almacenamiento de programas de ordenador legible por un sistema de ordenador y que codifica un programa de ordenador para la ejecución de un procedimiento de ordenador que procesa un conjunto de autorizaciones asociado con un conjunto de código (106) recibido de un sitio fuente (100), comprendiendo el procedimiento de ordenador:
recepción del conjunto de autorizaciones que comprende al menos una autorización asociada con el conjunto de código;
recepción de un conjunto (120, 324, 420, 522) de solicitudes de autorización en asociación con el conjunto de código; y
filtrado del conjunto de autorizaciones basado en el conjunto de solicitudes de autorización para controlar la ejecución del conjunto de código;
en el que el conjunto de solicitudes de autorización especifica un conjunto de solicitudes opcional que especifica un conjunto opcional de autorizaciones solicitadas en asociación con el conjunto de código; y en el que la operación de filtrado comprende el filtrado del conjunto de autorizaciones basado en el conjunto de solicitudes opcional para generar un conjunto (208 - 212, 414, 520) de concesiones de autorización; y que comprende además:
ejecución de un primer nivel de la funcionalidad del conjunto de código si el conjunto de solicitudes opcional es un subconjunto del conjunto de concesiones de autorización; y
ejecución de un segundo nivel de la funcionalidad del conjunto de código si el conjunto de solicitudes opcional no es un subconjunto del conjunto de concesiones de autorización.
31. Un producto de programación de ordenadores que codifica un programa de ordenador para la ejecución en un sistema informático de un procedimiento de ordenador que procesa un conjunto de autorizaciones asociado con un conjunto de código (106) recibido de un sitio fuente (100) para controlar la ejecución del conjunto de código, comprendiendo el procedimiento de ordenador:
definición (800) de una colección de grupos de código basada en una especificación de norma de seguridad, incluyendo la colección de grupos de código uno o más grupos de código;
recepción (802) de una evidencia (108, 320, 404, 504) asociada con el conjunto de código;
evaluación (804) de la pertenencia del conjunto de código al uno o más grupos de código, basada en la evidencia;
generación (806) del conjunto de autorizaciones basada en la pertenencia del conjunto de código al uno o más grupos de código;
recepción del conjunto de autorizaciones que incluye al menos una autorización asociada con el conjunto de código;
recepción (808) de un conjunto (120, 324, 420, 522) de solicitudes de autorización en asociación con el conjunto de código; y
cómputo de una operación de conjuntos lógica con el conjunto de autorizaciones y con el conjunto de solicitudes de autorización para generar un conjunto de concesiones de autorización;
\newpage
en el que el conjunto de solicitudes de autorización especifica un conjunto de solicitudes opcional que especifica un conjunto opcional de autorizaciones solicitadas en asociación con el conjunto de código; y en el que la operación de filtrado comprende el filtrado del conjunto de autorizaciones basado en el conjunto de solicitudes opcional para generar un conjunto (208 - 212, 414, 520) de concesiones de autorización; y que comprende además:
ejecución de un primer nivel de la funcionalidad del conjunto de código si el conjunto de solicitudes opcional es un subconjunto del conjunto de concesiones de autorización; y
ejecución de un segundo nivel de la funcionalidad del conjunto de código si el conjunto de solicitudes opcional no es un subconjunto del conjunto de concesiones de autorización.
32. El producto de programación de ordenadores de la reivindicación 31 en el que el conjunto de solicitudes de autorización incluye el conjunto de solicitudes opcional y un conjunto de solicitudes mínimo que especifica un conjunto mínimo de autorizaciones solicitadas en asociación con el conjunto de código, y en el que la operación de filtrado comprende:
cómputo (600) de una unión del conjunto de solicitudes opcional y del conjunto de solicitudes mínimo para proveer un conjunto de solicitudes máximo; y
cómputo de una intersección del conjunto de solicitudes máximo y del conjunto de autorizaciones.
33. El producto de programación de ordenadores de la reivindicación 32 en el que el conjunto de solicitudes de autorización especifica además un conjunto de solicitudes denegadas que especifica un conjunto de una o más autorizaciones a omitir de un conjunto de concesiones de autorización en asociación con el conjunto de código, y en el que la operación de filtrado comprende además:
sustracción (606) del conjunto de una o más autorizaciones especificado en el conjunto de solicitudes denegadas de la intersección del conjunto de solicitudes máximo y del conjunto de autorizaciones.
ES01944152T 2000-06-21 2001-05-18 Filtrado de un conjunto de autorizaciones que usa solicitudes de autorizacion asociadas con un conjunto de codigo. Expired - Lifetime ES2284654T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/599,015 US6981281B1 (en) 2000-06-21 2000-06-21 Filtering a permission set using permission requests associated with a code assembly
US599015 2000-06-21

Publications (1)

Publication Number Publication Date
ES2284654T3 true ES2284654T3 (es) 2007-11-16

Family

ID=24397852

Family Applications (1)

Application Number Title Priority Date Filing Date
ES01944152T Expired - Lifetime ES2284654T3 (es) 2000-06-21 2001-05-18 Filtrado de un conjunto de autorizaciones que usa solicitudes de autorizacion asociadas con un conjunto de codigo.

Country Status (8)

Country Link
US (3) US6981281B1 (es)
EP (1) EP1299790B1 (es)
JP (1) JP4718753B2 (es)
AT (1) ATE358293T1 (es)
AU (1) AU2001266590A1 (es)
DE (1) DE60127557T2 (es)
ES (1) ES2284654T3 (es)
WO (1) WO2001098876A2 (es)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6606659B1 (en) 2000-01-28 2003-08-12 Websense, Inc. System and method for controlling access to internet sites
US7051366B1 (en) * 2000-06-21 2006-05-23 Microsoft Corporation Evidence-based security policy manager
US6981281B1 (en) * 2000-06-21 2005-12-27 Microsoft Corporation Filtering a permission set using permission requests associated with a code assembly
US7350204B2 (en) * 2000-07-24 2008-03-25 Microsoft Corporation Policies for secure software execution
DE50011222D1 (de) * 2000-12-04 2005-10-27 Siemens Ag Verfahren zum Nutzen einer Datenverarbeitungsanlage abhängig von einer Berechtigung, zugehörige Datenverarbeitungsanlage und zugehöriges Programm
US7099663B2 (en) 2001-05-31 2006-08-29 Qualcomm Inc. Safe application distribution and execution in a wireless environment
US8209753B2 (en) 2001-06-15 2012-06-26 Activcard, Inc. Universal secure messaging for remote security tokens
US20040218762A1 (en) 2003-04-29 2004-11-04 Eric Le Saint Universal secure messaging for cryptographic modules
US20030135758A1 (en) * 2001-07-19 2003-07-17 Turner Elliot B. System and method for detecting network events
US7024555B2 (en) * 2001-11-01 2006-04-04 Intel Corporation Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment
US7194464B2 (en) 2001-12-07 2007-03-20 Websense, Inc. System and method for adapting an internet filter
US7188364B2 (en) * 2001-12-20 2007-03-06 Cranite Systems, Inc. Personal virtual bridged local area networks
US20030177484A1 (en) * 2002-03-15 2003-09-18 Bosschaert Allaert J. D. Firewall class loader
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
SE0201313D0 (sv) * 2002-04-29 2002-04-29 Electrolux Home Prod Corp Behållare för dosering
US20040123152A1 (en) * 2002-12-18 2004-06-24 Eric Le Saint Uniform framework for security tokens
US7475408B2 (en) * 2003-02-27 2009-01-06 Microsoft Corporation Hosting an application in one of a plurality of execution environments
US7430743B2 (en) 2003-02-27 2008-09-30 Microsoft Corporation System and method for hosting an application in one of a plurality of execution environments
TWI263894B (en) * 2003-10-15 2006-10-11 Hon Hai Prec Ind Co Ltd System and method for quickly getting user's permission in access control list
US8930944B2 (en) * 2003-11-18 2015-01-06 Microsoft Corporation Application model that integrates the web experience with the traditional client application experience
US7054868B2 (en) * 2003-12-22 2006-05-30 Insworld, Inc. Methods and systems for creating and operating hierarchical levels of administrators to facilitate the production and distribution of content
US7907935B2 (en) 2003-12-22 2011-03-15 Activcard Ireland, Limited Intelligent remote device
US7054869B1 (en) * 2003-12-22 2006-05-30 Insworld, Inc. Methods and systems for facilitating the production and distribution of content
US20050138380A1 (en) 2003-12-22 2005-06-23 Fedronic Dominique L.J. Entry control system
EP2267625A3 (en) * 2004-04-19 2015-08-05 Lumension Security S.A. On-line centralized and local authorization of executable files
WO2005099340A2 (en) 2004-04-19 2005-10-27 Securewave S.A. On-line centralized and local authorization of executable files
US7743425B2 (en) * 2004-04-29 2010-06-22 Microsoft Corporation Security restrictions on binary behaviors
US7814308B2 (en) * 2004-08-27 2010-10-12 Microsoft Corporation Debugging applications under different permissions
GB2418037B (en) * 2004-09-09 2007-02-28 Surfcontrol Plc System, method and apparatus for use in monitoring or controlling internet access
GB2418999A (en) 2004-09-09 2006-04-12 Surfcontrol Plc Categorizing uniform resource locators
US20060143689A1 (en) * 2004-12-21 2006-06-29 Docomo Communications Laboratories Usa, Inc. Information flow enforcement for RISC-style assembly code
US7890315B2 (en) * 2005-12-29 2011-02-15 Microsoft Corporation Performance engineering and the application life cycle
US20070157311A1 (en) * 2005-12-29 2007-07-05 Microsoft Corporation Security modeling and the application life cycle
US7627652B1 (en) * 2006-01-31 2009-12-01 Amazon Technologies, Inc. Online shared data environment
EP1979812A4 (en) * 2006-02-01 2010-01-06 Nokia Corp ACCESS CONTROL
US7818788B2 (en) * 2006-02-14 2010-10-19 Microsoft Corporation Web application security frame
US7712137B2 (en) * 2006-02-27 2010-05-04 Microsoft Corporation Configuring and organizing server security information
US8020206B2 (en) 2006-07-10 2011-09-13 Websense, Inc. System and method of analyzing web content
US8615800B2 (en) 2006-07-10 2013-12-24 Websense, Inc. System and method for analyzing web content
US8443188B2 (en) * 2006-11-30 2013-05-14 Microsoft Corporation Using code access security for runtime accessibility checks
US9654495B2 (en) 2006-12-01 2017-05-16 Websense, Llc System and method of analyzing web addresses
US20080168528A1 (en) * 2007-01-04 2008-07-10 Dah-Haur Lin Role-based authorization using conditional permissions
GB2445764A (en) 2007-01-22 2008-07-23 Surfcontrol Plc Resource access filtering system and database structure for use therewith
US20080189767A1 (en) * 2007-02-01 2008-08-07 Microsoft Corporation Accessing file resources outside a security boundary
US8015174B2 (en) * 2007-02-28 2011-09-06 Websense, Inc. System and method of controlling access to the internet
AU2009267107A1 (en) 2008-06-30 2010-01-07 Websense, Inc. System and method for dynamic and real-time categorization of webpages
US8190673B2 (en) * 2008-07-30 2012-05-29 Microsoft Corporation Enforcement of object permissions in enterprise resource planning software
CN102486731B (zh) * 2009-11-30 2015-12-09 国际商业机器公司 增强软件的软件调用栈的可视化的方法、设备和系统
US8677506B2 (en) * 2009-12-03 2014-03-18 Osocad Remote Limited Liability Company System and method for loading application classes
US11244745B2 (en) 2010-01-22 2022-02-08 Deka Products Limited Partnership Computer-implemented method, system, and apparatus for electronic patient care
US10242159B2 (en) 2010-01-22 2019-03-26 Deka Products Limited Partnership System and apparatus for electronic patient care
US10453157B2 (en) 2010-01-22 2019-10-22 Deka Products Limited Partnership System, method, and apparatus for electronic patient care
US11881307B2 (en) 2012-05-24 2024-01-23 Deka Products Limited Partnership System, method, and apparatus for electronic patient care
US11164672B2 (en) 2010-01-22 2021-11-02 Deka Products Limited Partnership System and apparatus for electronic patient care
US11210611B2 (en) 2011-12-21 2021-12-28 Deka Products Limited Partnership System, method, and apparatus for electronic patient care
US10911515B2 (en) 2012-05-24 2021-02-02 Deka Products Limited Partnership System, method, and apparatus for electronic patient care
US20110313789A1 (en) 2010-01-22 2011-12-22 Deka Products Limited Partnership Electronic patient monitoring system
US8849857B2 (en) * 2010-12-17 2014-09-30 International Business Machines Corporation Techniques for performing data loss prevention
US8650640B2 (en) * 2011-02-24 2014-02-11 International Business Machines Corporation Using a declaration of security requirements to determine whether to permit application operations
US8656465B1 (en) * 2011-05-09 2014-02-18 Google Inc. Userspace permissions service
US10445528B2 (en) * 2011-09-07 2019-10-15 Microsoft Technology Licensing, Llc Content handling for applications
US9223976B2 (en) * 2011-09-08 2015-12-29 Microsoft Technology Licensing, Llc Content inspection
US9047476B2 (en) * 2011-11-07 2015-06-02 At&T Intellectual Property I, L.P. Browser-based secure desktop applications for open computing platforms
US9100235B2 (en) 2011-11-07 2015-08-04 At&T Intellectual Property I, L.P. Secure desktop applications for an open computing platform
KR101900047B1 (ko) * 2012-03-12 2018-09-18 삼성전자주식회사 애플리케이션이 필요로 하는 권한을 진단하는 방법 및 장치
US8726386B1 (en) * 2012-03-16 2014-05-13 Symantec Corporation Systems and methods for detecting malware
US8671282B2 (en) * 2012-03-24 2014-03-11 Mach 1 Development, Inc. Digital data authentication and security system
EP2677380A1 (en) * 2012-06-21 2013-12-25 Siemens Aktiengesellschaft Method for controlling a manufacturing execution system (MES)
JP6047021B2 (ja) * 2013-01-23 2016-12-21 キヤノン株式会社 撮影装置及びその制御方法、プログラム
US9515832B2 (en) 2013-06-24 2016-12-06 Microsoft Technology Licensing, Llc Process authentication and resource permissions
EP3001293A4 (en) * 2013-12-30 2016-08-31 Huawei Device Co Ltd METHOD AND DEVICE FOR MANAGING RIGHTS
US9852294B1 (en) 2014-06-24 2017-12-26 Symantec Corporation Systems and methods for detecting suspicious applications based on how entry-point functions are triggered
KR102337990B1 (ko) * 2014-09-18 2021-12-13 삼성전자주식회사 권한 설정 토큰을 이용하는 전자 장치
US10360135B2 (en) 2016-03-31 2019-07-23 Microsoft Technology Licensing, Llc Privilege test and monitoring
US9928365B1 (en) * 2016-10-31 2018-03-27 International Business Machines Corporation Automated mechanism to obtain detailed forensic analysis of file access
US10346625B2 (en) * 2016-10-31 2019-07-09 International Business Machines Corporation Automated mechanism to analyze elevated authority usage and capability
US9830469B1 (en) * 2016-10-31 2017-11-28 International Business Machines Corporation Automated mechanism to secure customer data
JP6328290B2 (ja) * 2017-04-04 2018-05-23 Kddi株式会社 端末、アクセス制限方法およびプログラム
US10650156B2 (en) 2017-04-26 2020-05-12 International Business Machines Corporation Environmental security controls to prevent unauthorized access to files, programs, and objects
US11443067B2 (en) * 2018-01-31 2022-09-13 Salesforce.Com, Inc. Restricting access and edit permissions of metadata
JP6783812B2 (ja) * 2018-03-13 2020-11-11 株式会社東芝 情報処理装置、情報処理方法およびプログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0549104B1 (en) * 1991-12-20 1998-05-06 International Computers Limited Program attribute control in a computer system
JP4145365B2 (ja) * 1994-08-03 2008-09-03 株式会社野村総合研究所 ファイルアクセス制御装置
US5978484A (en) 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
US5825877A (en) * 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
US5958050A (en) 1996-09-24 1999-09-28 Electric Communities Trusted delegation system
US5915085A (en) 1997-02-28 1999-06-22 International Business Machines Corporation Multiple resource or security contexts in a multithreaded application
US6044466A (en) 1997-11-25 2000-03-28 International Business Machines Corp. Flexible and dynamic derivation of permissions
US6044467A (en) 1997-12-11 2000-03-28 Sun Microsystems, Inc. Secure class resolution, loading and definition
US6125447A (en) 1997-12-11 2000-09-26 Sun Microsystems, Inc. Protection domains to provide security in a computer system
US6473800B1 (en) * 1998-07-15 2002-10-29 Microsoft Corporation Declarative permission requests in a computer system
US6321334B1 (en) * 1998-07-15 2001-11-20 Microsoft Corporation Administering permissions associated with a security zone in a computer system security model
US6526513B1 (en) * 1999-08-03 2003-02-25 International Business Machines Corporation Architecture for dynamic permissions in java
US6981281B1 (en) * 2000-06-21 2005-12-27 Microsoft Corporation Filtering a permission set using permission requests associated with a code assembly

Also Published As

Publication number Publication date
WO2001098876A3 (en) 2003-01-23
WO2001098876A2 (en) 2001-12-27
JP2004501467A (ja) 2004-01-15
DE60127557T2 (de) 2007-12-27
DE60127557D1 (de) 2007-05-10
AU2001266590A1 (en) 2002-01-02
EP1299790A2 (en) 2003-04-09
US20060070112A1 (en) 2006-03-30
ATE358293T1 (de) 2007-04-15
US20060037082A1 (en) 2006-02-16
US7251834B2 (en) 2007-07-31
EP1299790B1 (en) 2007-03-28
US7310822B2 (en) 2007-12-18
JP4718753B2 (ja) 2011-07-06
US6981281B1 (en) 2005-12-27

Similar Documents

Publication Publication Date Title
ES2284654T3 (es) Filtrado de un conjunto de autorizaciones que usa solicitudes de autorizacion asociadas con un conjunto de codigo.
US7669238B2 (en) Evidence-based application security
US6457130B2 (en) File access control in a multi-protocol file server
US7783616B2 (en) System and method for managing objects and resources with access rights embedded in nodes within a hierarchical tree structure
EP1309906B1 (en) Evidence-based security policy manager
US6138238A (en) Stack-based access control using code and executor identifiers
US7131143B1 (en) Evaluating initially untrusted evidence in an evidence-based security policy manager
Krohn et al. Information flow control for standard OS abstractions
Mayer et al. SELinux by example: using security enhanced Linux
US20020184521A1 (en) Authorizing a requesting entity to operate upon data structures
US20090205018A1 (en) Method and system for the specification and enforcement of arbitrary attribute-based access control policies
Seitz et al. Policy administration control and delegation using xacml and delegent
Delessy et al. Patterns for access control in distributed systems
Anderson Java™ access control mechanisms
Halfmann et al. Embedding security policies into a distributed computing environment
Ilioudis et al. Security Model for XML Data.
Kechar et al. An access control system architecture for xml data warehouse using xacml
CN114139127A (zh) 一种计算机系统的权限管理方法
Clark A Linux-based approach to low-cost support of access control policies
Ge et al. Secure database development and the Clark-Wilson security model
Tari et al. Dynamic, Flow Control-Based Information Management for Web Services
Levin et al. Execution policies research and implementation