ES2326398B1 - Metodo para autorizar la ejecucion de codigo. - Google Patents

Metodo para autorizar la ejecucion de codigo. Download PDF

Info

Publication number
ES2326398B1
ES2326398B1 ES200500450A ES200500450A ES2326398B1 ES 2326398 B1 ES2326398 B1 ES 2326398B1 ES 200500450 A ES200500450 A ES 200500450A ES 200500450 A ES200500450 A ES 200500450A ES 2326398 B1 ES2326398 B1 ES 2326398B1
Authority
ES
Spain
Prior art keywords
execution
code
protected
service
application
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.)
Active
Application number
ES200500450A
Other languages
English (en)
Other versions
ES2326398A1 (es
Inventor
Bruce E. Johnson
Seth M. Demsey
William Michael Zintel
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 Technology Licensing LLC
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
Publication of ES2326398A1 publication Critical patent/ES2326398A1/es
Application granted granted Critical
Publication of ES2326398B1 publication Critical patent/ES2326398B1/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16LPIPES; JOINTS OR FITTINGS FOR PIPES; SUPPORTS FOR PIPES, CABLES OR PROTECTIVE TUBING; MEANS FOR THERMAL INSULATION IN GENERAL
    • F16L55/00Devices or appurtenances for use in, or in connection with, pipes or pipe systems
    • F16L55/26Pigs or moles, i.e. devices movable in a pipe or conduit with or without self-contained propulsion means
    • F16L55/28Constructional aspects
    • F16L55/30Constructional aspects of the propulsion means, e.g. towed by cables
    • F16L55/32Constructional aspects of the propulsion means, e.g. towed by cables being self-contained
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • B25J19/021Optical sensing devices
    • B25J19/023Optical sensing devices including video camera means
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J5/00Manipulators mounted on wheels or on carriages
    • B25J5/007Manipulators mounted on wheels or on carriages mounted on wheels
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16LPIPES; JOINTS OR FITTINGS FOR PIPES; SUPPORTS FOR PIPES, CABLES OR PROTECTIVE TUBING; MEANS FOR THERMAL INSULATION IN GENERAL
    • F16L2101/00Uses or applications of pigs or moles
    • F16L2101/30Inspecting, measuring or testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2135Metering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Robotics (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Método para autorizar la ejecución de código y para medir la ejecución de código en tiempo de ejecución. De acuerdo con una implementación, se recibe una llamada que solicita la ejecución de un servicio protegido. Como respuesta, se solicita el permiso para la ejecución. Se analiza la solicitud de permiso. La concesión del permiso se basa en el análisis.

Description

Método para autorizar la ejecución de código.
Campo técnico
La presente invención se refiere generalmente a la ejecución o realización medida de código.
Antecedentes
La gestión de los derechos digitales se ha venido centrando de manera generalizada en la protección del "contenido", tal como música, películas cinematográficas y otro material basado en datos objeto de derechos de propiedad. En particular, se han realizado investigaciones orientadas a diversas estrategias de cifrado que podrían emplearse para proteger dicho material de la copia y de otros usos que violan los acuerdos de licencia entre los proveedores de contenidos y los consumidores de los contenidos.
El código de software o programación ejecutable ha seguido tradicionalmente un modelo diferente en el cual un consumidor realiza una compra de programación (ya sea "empaquetada de forma comprimida", ya sea descargada), instala la programación en un sistema informático y da su conformidad a un acuerdo de licencia. En esta instancia, los sistemas y métodos convencionales permiten al consumidor ejecutar cualquier parte del código contenido en la adquisición de programación hasta cualquier grado que se desee (compatible con el acuerdo de licencia, que, típicamente, prescribe el número de máquinas en el que se puede instalar la programación).
El modelo de licencia actual para programación ejecutable que se describe en lo anterior proporciona al consumidor una elección de "todo o nada" a la hora de tomar una decisión de compra de una programación -es decir, aceptar la totalidad del coste y del beneficio, o bien renunciar al coste y al beneficio. De esta forma, el análisis de la compra típicamente implica una decisión por lo que respecta a si el usuario prevé sobrepasar un nivel umbral de utilización. En caso de que sea así, se realiza una compra; si no, no se realiza ninguna compra. En algunas situaciones, este modelo puede resultar insatisfactorio para los productores de programación, ya que se pierden ventas en el caso de que los consumidores declinen realizar comprar al prever que su uso de un producto de programación será bajo. Este modelo resulta similarmente insatisfactorio para los consumidores, puesto que pueden estimar de forma inexacta su necesidad de un producto de programación. Tal error de cálculo puede resultar, bien en una compra infrautilizada, o bien en necesidades no satisfechas que eran mayores de lo previsto. Es más, incluso cuando el consumidor estima correctamente que el uso será pequeño y renuncia a la compra, se produce insatisfacción debido a que los consumidores no han visto satisfechas sus necesidades de productos de programación.
En consecuencia, existe la necesidad de técnicas alternativas para el funcionamiento bajo licencia de código de software o programación.
Sumario
Se describen sistemas y métodos par medir la realización o ejecución de código durante el tiempo de ejecución. De acuerdo con una implementación, se recibe una llamada que solicita la ejecución de un servicio protegido. Como respuesta, se solicita permiso para la ejecución. Se analiza la petición de permiso. La concesión del permiso se basa en el análisis.
Breve descripción de los dibujos
La descripción detallada se expone en relación con los dibujos que se acompañan. En los dibujos, el dígito o dígitos más a la izquierda de un número de referencia identifican la figura en la que él número de referencia aparece por primera vez. El uso de los mismos números de referencia en diferentes figuras indica elementos similares o idénticos.
La Figura 1 ilustra un ejemplo de un dispositivo de ejecución de código, dentro del cual se muestran una aplicación a modo de ejemplo o librería de aplicación, una pluralidad de servicios protegidos y un dispositivo de medición.
La Figura 2 ilustra un segundo ejemplo de un dispositivo de ejecución de código, en el cual una estructura compuesta separa el dispositivo de ejecución de código del dispositivo de medición.
La Figura 3 es un diagrama de flujo que describe una implementación a modo de ejemplo de la ejecución de código medida, el cual muestra, en particular, un método para medir la ejecución de servicios protegidos.
La Figura 4 es un dispositivo de ejecución de código, proporcionado a modo de ejemplo y en el cual puede implementarse la ejecución medida de código.
Descripción detallada Consideraciones generales
La siguiente explicación está dirigida a sistemas y métodos que miden la ejecución de código. Dichos sistemas y métodos pueden adaptarse a cualquier dispositivo de ejecución de código, tal como sistemas informáticos, teléfonos celulares y muchos otros. De acuerdo con una implementación, se configura una aplicación -o una pluralidad de aplicaciones organizadas como una librería- para que realice llamadas para solicitar el funcionamiento de uno o más servicios protegidos, que pueden estar configurados también como una librería. Los servicios protegidos pueden representar código ejecutable cuyo funcionamiento y capacidades operativas se desea controlar, tal como por razones relativas a la facturación, a la concesión de licencias de programación, a la seguridad, a la protección de los niños, o por otras razones. Como puede controlarse de manera independiente la ejecución de cada servicio protegido, la concesión de licencia sobre el código ejecutable puede hacerse "granular", es decir, pueden concederse licencias sobre pequeños bloques funcionales de código ejecutable, con lo que se proporciona una alternativa a la concesión de licencias sobre bloques más grandes de código. Esto puede procurar una valiosa herramienta de ventas para su uso por parte de los vendedores, ya que dicha herramienta permitirá a los consumidores obtener una licencia únicamente sobre el código que desean utilizar.
Al ser llamado por parte de una aplicación, un servicio protegido apela al dispositivo de medición para llevar a cabo un análisis que determine si la aplicación que llamó al servicio protegido tiene permiso para hacerlo. El permiso está, típicamente, gobernado por un contrato de servicios, que se evalúa a la vista de los datos de medida. Por ejemplo, el contrato de servicios puede permitir un cierto número de llamadas por parte de la aplicación al servicio protegido, quizá como una función del tiempo. En este caso, existirá un historial de las llamadas previas al servicio protegido, y quizá de los instantes de las llamadas previas, contenido en los datos de medida. El análisis del contrato de servicios y de los datos de medida por parte del dispositivo de medición da lugar a la determinación del permiso o el rechazo de la petición de la aplicación para la ejecución del servicio protegido. El servicio protegido se ejecuta entonces si se le permite, y devuelve un resultado a la aplicación.
\vskip1.000000\baselineskip
Ejemplo de aparato
La Figura 1 ilustra un ejemplo de un dispositivo 100 de ejecución de código, el cual puede ser un sistema informático, un teléfono celular, una PDA, un dispositivo de entretenimiento (por ejemplo, una caja de equipo superior, una caja de cables, un reproductor de audio digital, un DVD, etc.) u otro dispositivo capaz de ejecutar programación. Una aplicación 102, o una librería de aplicaciones 102(1) a 102(N), se ha configurado para llevarse a cabo o ejecutarse en el dispositivo 100. La aplicación o aplicaciones pueden ser cualquier tipo de programación. Ejemplos de aplicaciones posibles incluyen programación de productividad de oficina configurada para ejecutarse en una estación de trabajo, o una estación de intercambio de mensajes de texto, configurada para ejecutarse en un teléfono celular. Un ejemplo de librería de aplicaciones 102(1) a 102(N) puede incluir, por ejemplo, una pluralidad de bloques funcionales asociados con un programa más grande, tal como una instalación de productividad de oficina.
La aplicación o aplicaciones (102) está(n) configurada(s) para efectuar llamadas a uno o más servicios protegidos 106(1) a 106(J). Los servicios protegidos están "protegidos" por cuanto que están sometidos a ejecución de código medida, como se desarrollará más exhaustivamente más adelante. Los servicios protegidos son rutinas de programación ejecutables que pueden ser configuradas para casi cualquier propósito. Por ejemplo, en el caso de que el dispositivo 100 de ejecución de código sea un teléfono celular, los servicios protegidos pueden soportar características cuyo funcionamiento ha de ser medido. En tal entorno, los servicios protegidos pueden soportar características tales como el envío de un mensaje de texto, la facilitación de los ajustes para remitir una llamada, u otras capacidades operativas para las que se desea una ejecución medida. En un ejemplo alternativo en el que el dispositivo 100 de ejecución de código es una estación de trabajo, los servicios protegidos pueden soportar características mejoradas de una instalación de productividad de oficina cuyo funcionamiento se ha de medir. En tal entorno, los servicios protegidos pueden soportar características que pueden utilizarse frecuentemente o no. Por ejemplo, los servicios protegidos pueden soportar características tales como la creación de archivos PDF, el funcionamiento de un dispositivo comprobador de deletreo extranjero u otras capacidades operativas para las que se desea una ejecución medida.
Cada servicio protegido 106 está configurado para que, al ser llamado por una aplicación 102, llame a un dispositivo de medición 108. El dispositivo de medición 108 realiza una determinación relativa a si la aplicación o el solicitante inmediato (que puede ser situado, por ejemplo, en una pila) tiene permiso para ejecutar el servicio protegido 106. La llamada desde el servicio protegido 106 al dispositivo de medición 108 se realiza típicamente utilizando una capa de transmisión segura 110. La capa de transmisión segura 110 puede utilizar una criptografía robusta, un enchufe seguro o cualquier estrategia convencional o de nuevo desarrollo para una comunicación segura.
Nótese que, en una implementación, las aplicaciones 102 y los servicios protegidos 106 pueden ser ubicados en una única zona de tiempo de ejecución. De manera alternativa, las aplicaciones 102 y los servicios protegidos 106 pueden ejecutarse en zonas de tiempo de ejecución independientes 103 y 105, respectivamente, de tal manera que la memoria ubicada en cada zona de tiempo de ejecución está confinada o limitada por 104. Análogamente, en el caso de que el dispositivo de medición 108 pueda hacerse funcionar en una zona de tiempo de ejecución independiente 107, dentro de la memoria limitad por 112, o bien en una máquina o dispositivo independiente, el dispositivo de medición 108 puede, en algunas implementaciones, ser hecho funcionar en la misma zona de tiempo de ejecución que la o las aplicaciones 102 y/o lo(s) servicio(s) protegido(s) 106.
En la Figura 1 se observan las estructuras contenidas en un dispositivo de medición típico 108. Un dispositivo de refuerzo 114 está configurado para comunicarse de una forma segura con un servicio protegido 106 que fue llamado por parte de una aplicación 102 a la hora de pedir permiso para su ejecución. El dispositivo de refuerzo 114 está configurado adicionalmente para comunicarse con un almacenamiento seguro de datos de medida 116 y con uno o más contratos de servicios 118(1)-118(K).
El almacenamiento seguro de datos de medida 116 está configurado de modo que contenga datos relevantes con respecto al uso de uno o más servicios protegidos. Por ejemplo, los datos de medida 116 pueden incluir información sobre el número total de veces que se ha llamado a cualquier servicio protegido, las aplicaciones que han realizado cada llamada y los instantes de la llamada. Dichos datos serán de utilidad, por ejemplo, en el caso de que el dispositivo 100 de ejecución de código sea un teléfono celular, y cuando el servicio protegido 106 en cuestión pueda ser configurado para proporcionar servicios de intercambio de mensajes de texto. En este ejemplo, los datos de medida 116 pueden incluir información relativa al número e instantes de los mensajes de texto pasados. Esta información será de utilidad en muchas circunstancias a la hora de determinar si pueden permitirse ejecuciones adicionales de un servicio protegido 106.
Pueden incluirse uno o más contratos de servicios 118(1) 118(K) dentro del dispositivo de medición 108. Un contrato de servicios 118 incluye reglas que gobiernan el uso de uno o más servicios protegidos 106. Por ejemplo, las reglas contenidas en el contrato de servicios 118 pueden indicar un número máximo de veces que es posible ejecutar un servicio protegido 106, o bien un número máximo de veces que dicho servicio puede ser ejecutado dentro de un cierto periodo de tiempo. De manera alternativa, las reglas contenidas en el contrato de servicios 118 pueden imponer una fecha a partir de la cual ya no se permite la ejecución del servicio protegido. Como se comprenderá fácilmente por parte del lector, puede haber reglas en cualquier número y de cualquier tipo contenidas en el contrato de servicios.
Pueden existir uno o múltiples contratos de servicios 118, dependiendo de la aplicación práctica. En una implementación en la que el dispositivo de medición 108 esté configurado dentro de un teléfono celular, puede existir un único contrato de servicios 118 que gobierne uno o más servicios protegidos. En otra implementación en la que el dispositivo de medición 108 está configurado para uso con una computadora, pueden existir múltiples contratos de servicios 118(1)-118(K) con el fin de proporcionar reglas que gobiernen la ejecución de un conjunto más completo de servicios protegidos 106(1)-106(J).
La Figura 1 puede interpretarse con o sin una o más de las zonas de tiempo de ejecución 103, 105, 107, limitadas o confinadas por 104, 112. En una realización, uno o más elementos de entre la aplicación 102, el servicio protegido 106 y el dispositivo de medición 108 pueden funcionar en entornos de tiempo de ejecución independientes, tal como mediante el uso de zonas de memoria 103, 105, 107 que estén protegidas. En una realización alternativa, pueden combinarse o fusionarse uno o más entornos de tiempo de ejecución protegidos 103 105, 107. Además, cierta parte o la totalidad de la programación 102, 106 y 108 puede formar parte de un entorno de código gestionado y estar contenida en su interior. Un ejemplo de un entorno de código gestionado lo constituyen las tecnologías de programación .NET de la Microsoft Corporation.
El dispositivo 100 de ejecución de código de la Figura 1 puede ser monolítico, tal como se muestra, y contener, por lo tanto, el dispositivo de medición 108. De manera alternativa, el dispositivo de ejecución de código puede ser compuesto, como se observa en la Figura 2. En la implementación de la Figura 2, un dispositivo 200 de ejecución de código se encuentra en comunicación con un dispositivo 202 ubicado a distancia, que contiene un dispositivo de medición 108. En este ejemplo, la comunicación entre el dispositivo 200 de ejecución de código y el dispositivo de medición 108 puede realizarse a través de la Internet o mediante otros sistemas y métodos, según se desee.
Ejemplos de métodos
La Figura 3 es un diagrama de flujo que ilustra un procedimiento 300 proporcionado a modo de ejemplo y destinado a medir la ejecución de servicios protegidos. Los elementos del procedimiento ilustrado pueden ser llevados a cabo por cualesquiera medios apropiados, que incluyen, por ejemplo, bloques lógicos de soporte físico o hardware sobre un ASIC, o mediante la ejecución de instrucciones legibles por parte de un procesador y definidas sobre un medio legible por el procesador.
Un "medio legible por el procesador", tal como se emplea aquí, puede ser cualquier medio que pueda contener, almacenar, comunicar, propagar o transportar instrucciones para su uso o ejecución por parte de un procesador. Un medio legible por el procesador puede ser, sin limitación, un sistema, aparato, dispositivo o medio de propagación electrónico, magnético, óptico, electromagnético, infrarrojo o semiconductor. Ejemplos más específicos de un medio legible por el procesador incluyen, entre otros, una conexión eléctrica que tiene uno o más cables, un disquete informático portátil, una memoria de acceso aleatorio (RAM -"Random Access Memory"), una memoria de sólo lectura (ROM -"Read-Only Memory"), una memoria de sólo lectura programable y borrable (EPROM -"Erasable Programmable Read-Only Memory"- o memoria de borrado por bloques -"Flash memory"), una fibra óptica, un disco compacto susceptible de reinscribir en él (CD-RW -"Rewritable Compact Disc"), y una memoria de sólo lectura de disco compacto portátil (CDROM -"Compact Disc Read-Only Memory").
Haciendo referencia de nuevo a la Figura 3, el procedimiento 300 puede ser implementado en muchos entornos informáticos diferentes, pero se explicará con propósitos de exposición con respecto al dispositivo 100 de ejecución de código que se muestra en la Figura 1. En el bloque 302, una aplicación 102 determina que existe la necesidad de una capacidad operativa contenida dentro de uno o más servicios protegidos 106. En consecuencia, la aplicación efectúa una llamada solicitando la ejecución del servicio protegido, que es recibida por un servicio protegido 106.
En el bloque 304, se abre típicamente una conexión segura o canal de comunicación entre el servicio protegido 106 y el dispositivo de medición 108. Como ya se ha expuesto, el dispositivo de medición 108 puede estar contenido en el mismo dispositivo 100 de ejecución de código que el servicio protegido 106. De manera alternativa, el dispositivo de medición puede estar situado en posición distante. Si éste es el caso, el canal de comunicación segura puede establecerse a través de la Internet o de otra red.
En el bloque 306, se envía un mensaje desde el servicio protegido al dispositivo de medición. En el caso de que se haya abierto una conexión o canal seguro en el bloque 304, no se requiere típicamente el cifrado. Sin embargo, si no se disponía de una conexión o canal seguro, el mensaje es típicamente cifrado, tal como por la aplicación del método de cifrado Pretty Good Privacy® u otros métodos de cifrado. En el bloque 308, el mensaje que solicita permiso para ejecutar un servicio protegido es recibido por el dispositivo de medición.
En el bloque 310, el permiso para utilizar el servicio protegido se determina por parte de un dispositivo de medición 108 basándose en un análisis de un contrato de servicios 118 y en datos obtenidos de un almacenamiento seguro de datos de medida 116. El contrato de servicios contiene una o más reglas que gobiernan el funcionamiento del servicio protegido 106. Ejemplos de reglas incluyen restricciones del uso del servicio protegido más de un número de veces establecido, o del uso del servicio protegido pasada una cierta fecha Puede contemplarse, de manera similar, una amplia variedad de reglas.
A la hora de tomar la decisión de permitir o rechazar el uso del servicio protegido, el dispositivo de medición 108 accede típicamente al almacenamiento seguro de los datos de medida 116, el cual proporciona información sobre cuáles de las reglas contenidas en el contrato de servicios 118 pueden ser aplicadas. En el bloque 312, los datos de medida 116 son actualizados de manera que reflejen la llamada realizada por el servicio protegido. Por ejemplo, en el caso de que las reglas contenidas en el contrato de servicios 118 especifiquen un número permisible de ejecuciones del servicio protegido, los datos de medida 116 se actualizan de modo que reflejen una ejecución aditiva del servicio protegido.
En el bloque 314, en el caso de que el análisis por parte del dispositivo de medición indique que se concede apropiadamente el permiso para ejecutar el servicio protegido, se emite un código de admisión por parte del dispositivo de medición; alternativamente, puede emitirse un código de rechazo. En consecuencia, se ejecuta el servicio protegido 106 (bloque 316). En el bloque 318, el servicio protegido es entonces capaz de devolver resultados de su funcionamiento a la aplicación 102 que efectúa la llamada.
De manera alternativa, en el caso de que el análisis por parte del dispositivo de medición dé lugar al rechazo del uso del servicio protegido, se dirige el servicio protegido de manera que devuelva una notificación de fallo en la ejecución de la aplicación 102 que efectúa la llamada (bloque 320).
Si bien se han descrito uno o más métodos por medio de diagramas de flujo y de texto asociado a los bloques de los diagramas de flujo, ha de comprenderse que los bloques no han de ser llevados a cabo necesariamente en el orden en que han sido presentados, y que un orden alternativo puede dar como resultado ventajas similares. Además, los métodos no son excluyentes y pueden llevarse a cabo solos o en combinación unos con otros.
Ejemplo de dispositivo de ejecución de código
La Figura 4 es un ejemplo de un sistema 100 de ejecución de código en el que puede implementarse la ejecución de código medida. Cualquier tipo de dispositivo de ejecución de código puede utilizar la ejecución de código medida; sin embargo, para los propósitos del ejemplo de la Figura 4, el sistema 100 de ejecución de código ha sido configurado como una estación de trabajo informática en la que puede medirse la ejecución de código.
El sistema 100 de ejecución de código incluye un sistema de computación de propósito general, en la forma de una computadora 402. Los componentes de la computadora 402 pueden incluir, si bien no están limitados a éstos, uno o más procesadores o unidades de procesamiento 404, una memoria 406 del sistema y un bus 408 del sistema, que acopla varios componentes del sistema, incluyendo el acoplamiento del procesador 404 a la memoria 406 del sistema. El bus 408 del sistema representa una o más de cualesquiera de entre diversos tipos de estructuras de bus, incluyendo un bus de memoria o controlador de memoria, un bus periférico, un bus de Interconexión de Componentes Periféricos (PCI -"Peripheral Component Interconnect"), una puerta o acceso de gráficos acelerado o de alta velocidad, así como un bus de procesador o local que utiliza cualquiera de una variedad de arquitecturas de bus.
La computadora 402 incluye típicamente una variedad de medios legibles por la computadora. Dichos medios pueden ser cualquier medio disponible que sea accesible por parte de la computadora 402, e incluyen medios tanto volátiles como no volátiles, así como medios extraíbles y no extraíbles. La memoria 406 del sistema incluye medios legibles por la computadora, en la forma de memoria volátil, tal como una memoria de acceso aleatorio (RAM) 410, y/o de memoria no volátil, tal como una memoria de sólo lectura (ROM) 412. Un sistema de entrada/salida básico (BIOS -"Basic Input Output System") 414, que contiene las rutinas básicas que ayudan a transferir información entre elementos contenidos en la computadora 402, tal como durante su arranque, se encuentra almacenado en la ROM 412. La RAM 410 típicamente contiene módulos de datos y/o de programa que son inmediatamente accesibles por la unidad de procesamiento 404 y/o hechos funcionar en ese instante en la misma.
La computadora 402 puede también incluir otros medios de almacenamiento informáticos extraíbles / no extraíbles y volátiles / no volátiles. A modo de ejemplo, la Figura 4 ilustra un dispositivo 416 de accionamiento de disco duro, destinado a leer en un medio magnético no extraíble y no volátil (no mostrado), y a inscribir en el mismo, un dispositivo 418 de accionamiento de disco magnético, destinado a leer en un disco magnético extraíble y no volátil 420 (por ejemplo un disco flexible ("floppy disk")), y a inscribir en el mismo, así como un dispositivo 422 de accionamiento de disco óptico, destinado a leer en un disco óptico extraíble y no volátil 424, tal como un CD-ROM, DVD-ROM u otro medio óptico, y/o a inscribir en el mismo. El dispositivo 416 de accionamiento de disco duro, el dispositivo 418 de accionamiento de disco magnético y el dispositivo 422 de accionamiento de disco óptico se encuentran conectados, cada uno de ellos, al bus 408 del sistema por una o más interfaces 425 de medios de datos. De manera alternativa, el dispositivo 416 de accionamiento de disco duro, el dispositivo 418 de accionamiento de disco magnético y el dispositivo 422 de accionamiento de disco óptico pueden ser conectados al bus 408 del sistema por una interfaz SCSI (no mostrada).
Los dispositivos de accionamiento de disco, así como sus medios legibles por la computadora asociados, proporcionan un almacenamiento no volátil de instrucciones legibles por la computadora, estructuras de datos, módulos de programa y otros datos para la computadora 402. Aunque el ejemplo ilustra un disco duro 416, un disco magnético extraíble 420 y un disco óptico extraíble 424, ha de apreciarse que pueden utilizarse también para implementar el sistema y el entorno informáticos que se proporcionan a modo de ejemplo, otros tipos de medios legibles por computadora y que puedan almacenar datos que sean accesibles por parte de una computadora, tales como cintas magnéticas u otros dispositivos de almacenamiento magnético, tarjetas de memoria de borrado por bloques, CD-ROM, discos versátiles digitales (DVD) u otro almacenamiento óptico, memorias de acceso aleatorio (RAM), memorias de sólo lectura (ROM), memorias de sólo lectura programables y borrables eléctricamente (EEPROM - "Electrically Erasable Programmable Read-Only Memory") y similares.
Es posible almacenar cualquier número de módulos de programa en el disco duro 416, en el disco magnético 420, en el disco óptico 424, en la ROM 412 y/o en la RAM 410, incluyendo, a modo de ejemplo, un sistema operativo 426, uno o más programas de aplicación 428, otros módulos de programa 430, así como datos de programa 432. Cada uno de dichos sistema operativo 426, uno o más programas de aplicación 428, otros módulos de programa 430, así como datos de programa 432 (o alguna combinación de los mismos) puede incluir una realización de un esquema de almacenamiento en memoria caché para información de acceso a la red del usuario.
La computadora 402 puede incluir una variedad de medios legibles por computadora/procesador, identificados como medios de comunicación. Los medios de comunicación incorporan típicamente instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos contenidos en una señal de datos modulada tal como una onda portadora u otro mecanismo de transporte, e incluyen cualquier medio de suministro de información. La expresión "señal de datos modulada" significa una señal que tiene una o más de sus características ajustadas o cambiadas de tal manera que codifican información en la señal. A modo de ejemplo, y no como limitación, el medio de comunicación incluye medios de cable tales como una red de cables o una conexión directa por cable, así como medios sin cables o inalámbricos, tales como el acústico, la RF (radiofrecuencia), el infrarrojo y otros medios inalámbricos. Las combinaciones de cualesquiera de los anteriores están también incluidas en el ámbito de los medios legibles por computadora.
Un usuario puede introducir órdenes e información en el sistema informático 402 a través de dispositivos de entrada tales como un teclado 434 y un dispositivo de puntero 436 (por ejemplo, un "ratón"). Otros dispositivos de entrada 438 (no mostrados específicamente) pueden incluir un micrófono, un mando en forma de mango, una consola de juegos, una antena parabólica de satélite, una puerta en serie, un escáner y/o similares. Estos y otros dispositivos de entrada se conectan a la unidad de procesamiento 404 a través de interfaces de entrada/salida 440 que están acopladas al bus 408 del sistema, pero pueden conectarse por otras interfaces y estructuras de bus, tales como una puerta en paralelo, una puerta de juegos o un bus en serie universal (USB -"Universal Serial Bus").
Puede conectarse también una pantalla de monitor 442 u otro tipo de dispositivo de presentación visual al bus 408 del sistema a través de una interfaz, tal como un adaptador de vídeo 444. Además de la pantalla de monitor 442, otros dispositivos periféricos de salida pueden incluir componentes tales como altavoces (no mostrados) y una impresora 446, que pueden conectarse a la computadora 402 a través las interfaces de entrada/salida 440.
La computadora 402 puede funcionar en un entorno de red mediante el uso de conexiones lógicas a una o más computadoras distantes, tales como un dispositivo de computación a distancia 448. A modo de ejemplo, el dispositivo de computación a distancia 448 puede ser una computadora personal, una computadora portátil, un servidor, un dispositivo de encaminamiento ("router"), una computadora de red, un dispositivo de jerarquía uniforme u otro nodo de red común, y similares El dispositivo de computación a distancia 448 se ilustra en la forma de una computadora portátil que puede incluir muchos de los elementos y características que se describen aquí en relación con el sistema informático 402, o todos ellos.
Las conexiones lógicas entre la computadora 402 y la computadora distante 448 se ilustran como una red de área local (LAN - "Local Area Network") 450 y una red de área extensa general (WAN - "Wide Area Network") 452. Dichos entornos de red son habituales en oficinas, redes informáticas del ámbito de las empresas, intranets y la Internet. Cuando se implementa en un entorno de red LAN, la computadora 402 se conecta a una red local 450 por medio de una interfaz o adaptador de red 454. Cuando se implementa en un entorno de red WAN, la computadora 402 incluye típicamente un módem 456 u otros medios para establecer comunicaciones a través de la red extensa 452. El módem 456, que puede ser interno o externo a la computadora 402, puede conectarse al bus 408 del sistema a través de las interfaces de entrada/salida 440 ó de otros mecanismos apropiados. Ha de apreciarse que las conexiones de red que se ilustran se proporcionan a modo de ejemplo y que es posible emplear otros medios para establecer enlace(s) de comunicación entre las computadoras 402 y 448.
En un entorno provisto de red, tal como el que se ilustra con el entorno informático 400, pueden almacenarse en un dispositivo de almacenamiento de memoria distante módulos de programa descritos respecto a la computadora 402, o bien porciones de los mismos. A modo de ejemplo, los programas de aplicación distantes 458 residen en un dispositivo de memoria de la computadora distante 448. Por propósitos de ilustración, los programas de aplicación y otros componentes de programa ejecutables, tales como el sistema operativo, se ilustran aquí como bloques discretos, si bien se reconoce que dichos programas y componentes se ubican en varios instantes en diferentes componentes de almacenamiento del sistema informático 402, y son ejecutados por el procesador o procesadores de datos de la computadora.
Conclusión
Si bien la invención se ha descrito en un lenguaje específico de características estructurales y/o actuaciones metodológicas, ha de comprenderse que la invención definida en las reivindicaciones que se acompañan no está necesariamente limitada a las características o actuaciones específicas descritas. En lugar de ello, las características y actuaciones específicas se describen como ejemplos de formas de implementación de la invención reivindicada.

Claims (29)

1. Un método para autorizar la ejecución de código en un dispositivo de ejecución de código, que comprende:
un servicio protegido llamado recibe una llamada solicitando la ejecución de un servicio protegido dentro de una zona de tiempo de ejecución desde una aplicación llamante instalada en el dispositivo de ejecución de código;
solicitud de un permiso para la ejecución a un dispositivo de medición, por parte del servicio protegido llamado;
análisis de la solicitud de permiso y concesión del permiso, por parte del dispositivo de medición, basado en un perfil almacenado en forma de contrato comprendiendo el número de llamadas realizadas por la aplicación llamante en una zona de tiempo de ejecución;
análisis de la petición basándose en el perfil almacenado y datos de medida como entradas del dispositivo de medición;
actualización de los datos de medida para reflejar el análisis;
ejecución del servicio protegido llamado, en el caso de que el permiso se ha dado;
devolución de los resultados de la ejecución a la aplicación llamante; y
devolución de una notificación del fallo en la ejecución del servicio protegido a una aplicación que inició la llamada, en el caso de inexistencia de permiso.
2. El método de acuerdo con la reivindicación 1, en el cual el dispositivo de medición realiza el análisis dentro de una segunda zona de tiempo de ejecución, independiente de la primera zona de tiempo de ejecución.
3. El método de acuerdo con la reivindicación 2, en el cual las primera y segunda zonas de tiempo de ejecución residen en diferentes particiones de la memoria del dispositivo de ejecución de código.
4. El método de acuerdo con la reivindicación 2, en el cual la primera zona de tiempo de ejecución está situada en un primer dispositivo de computación, y la segunda zona de tiempo de ejecución está situada en un segundo dispositivo de computación.
5. El método de acuerdo con la reivindicación 1, en el cual solicitar el permiso comprende abrir una conexión segura entre el servicio protegido llamado y el dispositivo de medición configurado para llevar a cabo el análisis.
6. El método de acuerdo con la reivindicación 1, en el cual solicitar el permiso comprende enviar un mensaje cifrado desde el servicio protegido ubicado en la primera zona de tiempo de ejecución, a un dispositivo de medición contenido en la segunda zona de tiempo de ejecución.
7. Un medio legible por un procesador, que comprende instrucciones ejecutables por el procesador para autorizar la ejecución de un código, comprendiendo las instrucciones ejecutables por el procesador de instrucciones para:
un servicio protegido llamado recibe una llamada solicitando la ejecución de un servicio protegido dentro de una zona de tiempo de ejecución desde una aplicación llamante instalada en el dispositivo de ejecución de código;
servicio protegido llamado solicita un permiso para la ejecución a un dispositivo de medición;
dispositivo de medición analiza la solicitud de permiso y concede el permiso basado en un perfil almacenado en forma de contrato comprendiendo el número de llamadas realizadas por la aplicación llamante en una zona de tiempo de ejecución;
dispositivo de medición analiza la petición basándose en el perfil almacenado y datos de medida como entradas del mismo;
actualización de los datos de medida para reflejar el análisis;
ejecución del servicio protegido llamado, en el caso de que el permiso se ha dado;
devolución de los resultados de la ejecución a la aplicación llamante; y
devolución de una notificación del fallo en la ejecución del servicio protegido a una aplicación que inició la llamada, en el caso de inexistencia de permiso.
\newpage
8. El medio legible por procesador, de acuerdo con la reivindicación 7, en el cual el dispositivo de medición opera dentro de una zona de tiempo de ejecución que es independiente de una zona de tiempo de ejecución dentro de la cual opera el servicio protegido.
9. El medio legible por procesador, de acuerdo con la reivindicación 7, en el cual solicitar autorización comprende instrucciones para abrir una conexión segura entre el servicio protegido y el dispositivo de medición.
10. El medio legible por procesador, de acuerdo con la reivindicación 7, en el cual la medición de la ejecución de código se lleva a cabo en un entorno de código gestionado.
11. El medio legible por procesador, de acuerdo con la reivindicación 7, que comprende instrucciones adicionales para proteger las comunicaciones entre el servicio protegido y el dispositivo de medición con criptografía.
12. Un entorno de código gestionado, que comprende:
una aplicación configurada para consumir servicios procedentes de una librería de servicios protegidos;
un servicio protegido, situado dentro de la librería de servicios protegidos y configurado para recibir una solicitud desde la aplicación para su ejecución; y
un dispositivo de medición, configurado para devolver un código de admisión o un código de rechazo de la solicitud, basándose en reglas que gobiernan el funcionamiento del servicio protegido.
13. El entorno de código gestionado, de acuerdo con la reivindicación 12, en el cual el servicio protegido y el dispositivo de medición operan dentro de diferentes zonas de tiempo de ejecución.
14. El entorno de código gestionado, de acuerdo con la reivindicación 12, en el cual el dispositivo de medición comprende:
un dispositivo de refuerzo, configurado para una comunicación segura con el servicio protegido;
un contrato de servicios, configurado para suministrar las reglas que gobiernan el funcionamiento del servicio protegido al dispositivo de refuerzo; y
un almacenamiento seguro de datos de medida, configurado para suministrar datos históricos que reflejan el funcionamiento pasado del servicio protegido y de la aplicación, al dispositivo de refuerzo.
15. El entorno de código gestionado, de acuerdo con la reivindicación 12, en el cual el dispositivo de medición comprende:
un contrato de servicios, que contiene las reglas que gobiernan el funcionamiento del servicio protegido;
un almacenamiento seguro de datos de medición; y
un dispositivo de refuerzo, configurado para devolver el código de admisión o el código de rechazo, al:
analizar el contrato de servicios utilizando la identidad de la aplicación, la identidad del servicio protegido y los datos procedentes del almacenamiento seguro de datos de medida, como entradas para el análisis; y
actualizar el almacenamiento seguro de datos de medida de manera que refleje el análisis.
16. Un dispositivo de ejecución de código para autorizar la ejecución de código, comprendiendo el dispositivo de ejecución de código:
una aplicación llamante llama a un servicio protegido llamado;
el servicio protegido llamado llama a un dispositivo de medición; y
el dispositivo de medición analiza un contrato con el fin de determinar si se ha de permitir o prohibir el uso del servicio protegido por parte de la aplicación.
17. El dispositivo de ejecución de código de acuerdo con la reivindicación 16, que comprende adicionalmente, en el caso de que se haya determinado que la admisión es lo apropiado:
el servicio protegido llamado ejecuta la capacidad operativa solicitada por la aplicación llamante; y
el servicio protegido llamado devuelve los resultados de la ejecución a la aplicación a la aplicación llamante.
18. El dispositivo de ejecución de código de acuerdo con la reivindicación 16, que comprende adicionalmente, en el caso de que se determine que el rechazo es lo apropiado, medios para devolver una notificación del rechazo a la aplicación llamante.
19. El dispositivo de ejecución de código de acuerdo con la reivindicación 16, en el cual los medios para analizar el contrato comprenden:
medios para analizar el contrato utilizando la identidad de la aplicación llamante, la identidad del servicio protegido llamado, premisas/requisitos contenidas en el contrato, así como los datos procedentes de un almacenamiento seguro de datos de medida, como entradas para el análisis; y
medios para actualizar el almacenamiento seguro de datos de medida con el fin de reflejar el análisis.
20. El dispositivo de ejecución de código de acuerdo con la reivindicación 16, en el cual los medios para llamar al dispositivo de medición comprenden:
medios para abrir una conexión segura entre el servicio protegido llamado y el dispositivo de medición; y
medios para hacer funcionar el servicio protegido llamado y el dispositivo de medición dentro de distintas zonas de tiempo de ejecución.
21. El dispositivo de ejecución de código de acuerdo con la reivindicación 16, en el cual la medición se lleva a cabo en un entorno de código gestionado.
22. El dispositivo de ejecución de código de acuerdo con la reivindicación 16, que comprende:
una primera y una segunda zonas de tiempo de ejecución con un canal de comunicación segura entre ellas;
un servicio protegido, configurado para recibir una solicitud desde una aplicación para la ejecución del servicio protegido dentro de la primera zona de tiempo de ejecución; y
un dispositivo de medición, configurado para recibir la solicitud y operar dentro de la segunda zona de tiempo de ejecución, y para devolver un código de admisión o un código de rechazo en respuesta a la solicitud, al aplicar reglas a los datos de medida.
23. El dispositivo de ejecución de código de acuerdo con la reivindicación 22, en el cual el dispositivo de medición comprende:
un dispositivo de refuerzo, configurado para una comunicación segura con el servicio protegido;
un contrato de servicios, configurado para suministrar las reglas que gobiernan el funcionamiento del servicio protegido, al dispositivo de refuerzo; y
un almacenamiento seguro, dentro del cual están contenidos los datos de medida, de tal manera que el almacenamiento seguro está configurado para suministrar al dispositivo de refuerzo datos históricos que reflejan el funcionamiento pasado del servicio protegido.
24. El dispositivo de ejecución de código de acuerdo con la reivindicación 22, en el cual el dispositivo de medición está configurado para:
utilizar la identidad del servicio protegido y los datos procedentes de un almacenamiento seguro de datos de medida, como entrada para un análisis que proporciona un retorno del código de admisión o del código de rechazo; y
actualizar el almacenamiento seguro de datos de medida de manera que refleje el análisis.
25. El dispositivo de ejecución de código de acuerdo con la reivindicación 22, en el cual el dispositivo de ejecución de código es un teléfono celular.
26. El dispositivo de ejecución de código de acuerdo con la reivindicación 22, en el cual el dispositivo de ejecución de código está configurado para utilizarse dentro de un entorno de código gestionado.
27. El dispositivo de ejecución de código de acuerdo con la reivindicación 22, en el que el dispositivo de ejecución de código es un dispositivo compuesto, y en el cual el servicio protegido está contenido en una primera porción del dispositivo compuesto, y el dispositivo de medición está contenido en una segunda porción del dispositivo compuesto, y en el cual la primera porción del dispositivo compuesto está situada en posición alejada con respecto a la segunda porción del dispositivo compuesto.
\newpage
28. El dispositivo de ejecución de código de acuerdo con la reivindicación 22, que comprende adicionalmente una librería de servicios protegidos, dentro de la cual está contenido el servicio protegido.
29. El dispositivo de ejecución de código de acuerdo con la reivindicación 22, que comprende adicionalmente una librería de aplicaciones dentro de la cual está contenida la aplicación.
ES200500450A 2004-03-01 2005-02-28 Metodo para autorizar la ejecucion de codigo. Active ES2326398B1 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/791,208 2004-03-01
US10/791,208 US7500108B2 (en) 2004-03-01 2004-03-01 Metered execution of code

Publications (2)

Publication Number Publication Date
ES2326398A1 ES2326398A1 (es) 2009-10-08
ES2326398B1 true ES2326398B1 (es) 2010-07-14

Family

ID=34750583

Family Applications (1)

Application Number Title Priority Date Filing Date
ES200500450A Active ES2326398B1 (es) 2004-03-01 2005-02-28 Metodo para autorizar la ejecucion de codigo.

Country Status (6)

Country Link
US (1) US7500108B2 (es)
EP (1) EP1571526A1 (es)
JP (2) JP2005259126A (es)
KR (1) KR20060043336A (es)
CN (1) CN1664742B (es)
ES (1) ES2326398B1 (es)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1745343B1 (en) 2004-04-19 2017-06-07 Lumension Security S.A. A generic framework for runtime interception and execution control of interpreted languages
JP4440825B2 (ja) * 2005-05-17 2010-03-24 株式会社バンダイナムコゲームス ゲームプログラム記録媒体
US8214296B2 (en) * 2006-02-14 2012-07-03 Microsoft Corporation Disaggregated secure execution environment
EP1901190A1 (en) 2006-09-15 2008-03-19 Sony DADC Austria AG Method and system for managing access to add-on data files
KR101107946B1 (ko) * 2006-11-02 2012-01-25 인터내셔널 비지네스 머신즈 코포레이션 동적으로 최적화된 라이선스 사용으로 소프트웨어 제품의 사용을 계량하기 위한 방법, 시스템 및 컴퓨터 프로그램
US20080192918A1 (en) * 2007-02-08 2008-08-14 Dlb Finance & Consultancy B.V. Method and system for establishing a telephone connection
US20080250250A1 (en) * 2007-04-04 2008-10-09 Microsoft Corporation Method and Apparatus for Using USB Flash Devices and Other Portable Storage as a Means to Access Prepaid Computing
US20090158403A1 (en) * 2007-12-14 2009-06-18 Dirk Leonard Benschop Method and system for permitting or denying service
US8239921B2 (en) 2008-01-03 2012-08-07 Dlb Finance & Consultancy B.V. System and method of retrieving a service contact identifier
US8463921B2 (en) * 2008-01-17 2013-06-11 Scipioo Holding B.V. Method and system for controlling a computer application program
WO2009105702A2 (en) * 2008-02-22 2009-08-27 Etchegoyen Craig S License auditing for distributed applications
US9355224B1 (en) * 2008-05-16 2016-05-31 Kaspersky Lab, Zao System and method for dynamic adjustment of expiration date for authorization key for antivirus products
US8190673B2 (en) * 2008-07-30 2012-05-29 Microsoft Corporation Enforcement of object permissions in enterprise resource planning software
EP2338244B1 (en) * 2008-09-12 2021-06-16 Assa Abloy Ab Use of a secure element for writing to and reading from machine readable credentials
WO2010105260A1 (en) * 2009-03-13 2010-09-16 Assa Abloy Ab Transfer device for sensitive material such as a cryptographic key
US8474026B2 (en) * 2009-03-13 2013-06-25 Assa Abloy Ab Realization of access control conditions as boolean expressions in credential authentications
US9032058B2 (en) * 2009-03-13 2015-05-12 Assa Abloy Ab Use of SNMP for management of small footprint devices
US20100235900A1 (en) * 2009-03-13 2010-09-16 Assa Abloy Ab Efficient two-factor authentication
US8806190B1 (en) 2010-04-19 2014-08-12 Amaani Munshi Method of transmission of encrypted documents from an email application
JP5812250B2 (ja) * 2011-03-30 2015-11-11 Toto株式会社 衛生洗浄装置
KR101624606B1 (ko) * 2015-08-19 2016-05-27 숭실대학교 산학협력단 원격 코드 실행을 이용한 실행 무결성 검증 시스템 및 그 방법
US11630137B2 (en) * 2020-06-29 2023-04-18 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Reliable hardware metering

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4953209A (en) 1988-10-31 1990-08-28 International Business Machines Corp. Self-verifying receipt and acceptance system for electronically delivered data objects
US4941175A (en) 1989-02-24 1990-07-10 International Business Machines Corporation Tamper-resistant method for authorizing access to data between a host and a predetermined number of attached workstations
JPH0799497B2 (ja) 1990-12-14 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション ソフトウェアの使用を管理するための装置及び方法
US5940504A (en) * 1991-07-01 1999-08-17 Infologic Software, Inc. Licensing management system and method in which datagrams including an address of a licensee and indicative of use of a licensed product are sent from the licensee's site
WO1993011480A1 (en) 1991-11-27 1993-06-10 Intergraph Corporation System and method for network license administration
US5319705A (en) 1992-10-21 1994-06-07 International Business Machines Corporation Method and system for multimedia access control enablement
US5450593A (en) 1992-12-18 1995-09-12 International Business Machines Corp. Method and system for controlling access to objects in a data processing system based on temporal constraints
JPH07230380A (ja) 1994-02-15 1995-08-29 Internatl Business Mach Corp <Ibm> 適用業務プログラムの利用管理方法およびシステム
US5598470A (en) 1994-04-25 1997-01-28 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: Method and apparatus for utilizing a decryption block
US5564038A (en) 1994-05-20 1996-10-08 International Business Machines Corporation Method and apparatus for providing a trial period for a software license product using a date stamp and designated test period
US5652868A (en) 1994-09-27 1997-07-29 International Business Machines Corporation Data processor having BIOS decryption of emulated media images
US5638443A (en) 1994-11-23 1997-06-10 Xerox Corporation System for controlling the distribution and use of composite digital works
EP0717337B1 (en) 1994-12-13 2001-08-01 International Business Machines Corporation Method and system for the secured distribution of programs
US5673317A (en) 1995-03-22 1997-09-30 Ora Electronics, Inc. System and method for preventing unauthorized programming of wireless network access devices
US5758068A (en) 1995-09-19 1998-05-26 International Business Machines Corporation Method and apparatus for software license management
US5757914A (en) * 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
US5692047A (en) 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
US5752041A (en) 1995-12-15 1998-05-12 International Business Machines Corporation Method and system for licensing program management within a distributed data processing system
AU1690597A (en) * 1996-01-11 1997-08-01 Mitre Corporation, The System for controlling access and distribution of digital property
US5790664A (en) * 1996-02-26 1998-08-04 Network Engineering Software, Inc. Automated system for management of licensed software
JP3617882B2 (ja) 1996-03-08 2005-02-09 株式会社東芝 セキュリティ装置及びセキュリティ実現方法
US6138238A (en) * 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
JP3937475B2 (ja) 1996-06-14 2007-06-27 キヤノン株式会社 アクセス制御システムおよびその方法
US5754763A (en) 1996-10-01 1998-05-19 International Business Machines Corporation Software auditing mechanism for a distributed computer enterprise environment
US5925127A (en) * 1997-04-09 1999-07-20 Microsoft Corporation Method and system for monitoring the use of rented software
US6112192A (en) 1997-05-09 2000-08-29 International Business Machines Corp. Method for providing individually customized content in a network
US6078909A (en) 1997-11-19 2000-06-20 International Business Machines Corporation Method and apparatus for licensing computer programs using a DSA signature
US6141754A (en) 1997-11-28 2000-10-31 International Business Machines Corporation Integrated method and system for controlling information access and distribution
US6253370B1 (en) 1997-12-01 2001-06-26 Compaq Computer Corporation Method and apparatus for annotating a computer program to facilitate subsequent processing of the program
US6134659A (en) 1998-01-07 2000-10-17 Sprong; Katherine A. Controlled usage software
US6202207B1 (en) 1998-01-28 2001-03-13 International Business Machines Corporation Method and a mechanism for synchronized updating of interoperating software
GB2333864B (en) 1998-01-28 2003-05-07 Ibm Distribution of software updates via a computer network
US6289461B1 (en) 1998-06-09 2001-09-11 Placeware, Inc. Bi-directional process-to-process byte stream protocol
US6611812B2 (en) 1998-08-13 2003-08-26 International Business Machines Corporation Secure electronic content distribution on CDS and DVDs
US6226618B1 (en) 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
JP2002189590A (ja) * 1998-12-28 2002-07-05 Hiroyuki Ueno ソフトウェアライセンス発行制御装置
US6463538B1 (en) 1998-12-30 2002-10-08 Rainbow Technologies, Inc. Method of software protection using a random code generator
GB2346989A (en) 1999-02-19 2000-08-23 Ibm Software licence management system uses clustered licence servers
US6587947B1 (en) 1999-04-01 2003-07-01 Intel Corporation System and method for verification of off-chip processor code
US6594761B1 (en) * 1999-06-09 2003-07-15 Cloakware Corporation Tamper resistant software encoding
EP1109099A1 (en) 1999-12-17 2001-06-20 Alcatel Using secured calls in object-oriented software applications
US20010034839A1 (en) 1999-12-24 2001-10-25 Guenter Karjoth Method and apparatus for secure transmission of data and applications
DE10002203B4 (de) 2000-01-19 2009-12-10 Robert Bosch Gmbh Verfahren zum Schutz eines Mikrorechner-Systems gegen Manipulation von in einer Speicheranordnung des Mikrorechner-Systems gespeicherten Daten
JP2001229123A (ja) * 2000-02-17 2001-08-24 Fujitsu Ltd サービス提供装置および記録媒体
US20010047477A1 (en) 2000-03-20 2001-11-29 Hiang-Swee Chiang Transparent user and session management for web applications
JP4186381B2 (ja) 2000-05-10 2008-11-26 日本電気株式会社 プログラムを格納する記録媒体及びその実行方法
US7171693B2 (en) 2000-05-12 2007-01-30 Xtreamlok Pty Ltd Information security method and system
GB2381625C (en) 2000-07-18 2008-12-12 Bitarts Ltd Digital data protection arrangement
JP2002132818A (ja) 2000-10-26 2002-05-10 Seiko Epson Corp サービス提供システム、サービス提供端末、クライアント端末及び記憶媒体
WO2002065285A1 (en) 2001-02-14 2002-08-22 Invicta Networks, Inc. Systems and methods for creating a code inspection system
DE10108107A1 (de) 2001-02-21 2002-08-29 Philips Corp Intellectual Pty Schaltungsanordnung sowie Verfahren zum Erkennen einer Zugriffsverletzung bei einer Mikrokontrolleranordnung
US20020144124A1 (en) 2001-03-12 2002-10-03 Remer Eric B. Method and apparatus to monitor use of a program
US7376971B2 (en) 2001-10-30 2008-05-20 International Business Machines Corporation Computer implemented method and system for controlling use of digitally encoded products
US20030084325A1 (en) 2001-11-01 2003-05-01 International Business Machines Corporation Method and apparatus for implementing permission based access control through permission type inheritance
US8387111B2 (en) 2001-11-01 2013-02-26 International Business Machines Corporation Type independent permission based access control
US20030135741A1 (en) * 2001-12-04 2003-07-17 Applied Logical Systems, Llc Almost independent logically integrated license enforcement framework
US20030200267A1 (en) 2002-04-22 2003-10-23 Garrigues James F. Email management system
US7086088B2 (en) 2002-05-15 2006-08-01 Nokia, Inc. Preventing stack buffer overflow attacks
US7203833B1 (en) * 2002-12-23 2007-04-10 Microsoft Corporation History based rights computation for managed code

Also Published As

Publication number Publication date
KR20060043336A (ko) 2006-05-15
EP1571526A1 (en) 2005-09-07
ES2326398A1 (es) 2009-10-08
US20050193213A1 (en) 2005-09-01
CN1664742A (zh) 2005-09-07
CN1664742B (zh) 2012-02-01
US7500108B2 (en) 2009-03-03
JP2005259126A (ja) 2005-09-22
JP2012150829A (ja) 2012-08-09

Similar Documents

Publication Publication Date Title
ES2326398B1 (es) Metodo para autorizar la ejecucion de codigo.
US11341281B2 (en) Providing differential privacy in an untrusted environment
JP7388803B2 (ja) セキュア・ゲストのセキュア鍵をハードウェア・セキュリティ・モジュールに結びつけること
US20200026826A1 (en) Tiered code obfuscation in a development environment
Arfaoui et al. Trusted execution environments: A look under the hood
JP7308002B2 (ja) ハイブリッド・クラウドkmsソリューションにおけるhsmの自己破壊方法、システム、プログラム
US11194922B2 (en) Protecting study participant data for aggregate analysis
EP3935536B1 (en) Secure execution guest owner controls for secure interface control
US20180309738A1 (en) Data access levels
US11150926B2 (en) Native code generation for cloud services
US9887842B2 (en) Binding software application bundles to a physical execution medium
US11489830B2 (en) Source authentication of website content
US10671325B2 (en) Selective secure deletion of data in distributed systems and cloud
US11410023B2 (en) Lexicographic deep reinforcement learning using state constraints and conditional policies
WO2023241879A1 (en) Protecting sensitive data dump information
US11120140B2 (en) Secure operations on encrypted data
US20200151303A1 (en) Digital rights management
US11288396B2 (en) Data security through physical separation of data
JP7482909B2 (ja) プロセッサ加速型の検証可能なコンピューティングを提供する方法、システム及びコンピュータ・プログラム
US20230394163A1 (en) Data cluster management

Legal Events

Date Code Title Description
EC2A Search report published

Date of ref document: 20091008

Kind code of ref document: A1

FG2A Definitive protection

Ref document number: 2326398B1

Country of ref document: ES

PC2A Transfer of patent

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC.

Effective date: 20150709