ES2326398B1 - Metodo para autorizar la ejecucion de codigo. - Google Patents
Metodo para autorizar la ejecucion de codigo. Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000004458 analytical method Methods 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims abstract description 3
- 238000005259 measurement Methods 0.000 claims description 27
- 230000015654 memory Effects 0.000 claims description 25
- 238000004891 communication Methods 0.000 claims description 12
- 239000002131 composite material Substances 0.000 claims description 5
- 238000013500 data storage Methods 0.000 claims description 4
- 238000013475 authorization Methods 0.000 claims 1
- 150000001875 compounds Chemical class 0.000 claims 1
- 238000005192 partition Methods 0.000 claims 1
- 230000002787 reinforcement Effects 0.000 claims 1
- 230000003287 optical effect Effects 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F16—ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
- F16L—PIPES; JOINTS OR FITTINGS FOR PIPES; SUPPORTS FOR PIPES, CABLES OR PROTECTIVE TUBING; MEANS FOR THERMAL INSULATION IN GENERAL
- F16L55/00—Devices or appurtenances for use in, or in connection with, pipes or pipe systems
- F16L55/26—Pigs or moles, i.e. devices movable in a pipe or conduit with or without self-contained propulsion means
- F16L55/28—Constructional aspects
- F16L55/30—Constructional aspects of the propulsion means, e.g. towed by cables
- F16L55/32—Constructional aspects of the propulsion means, e.g. towed by cables being self-contained
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J19/00—Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
- B25J19/02—Sensing devices
- B25J19/021—Optical sensing devices
- B25J19/023—Optical sensing devices including video camera means
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J5/00—Manipulators mounted on wheels or on carriages
- B25J5/007—Manipulators mounted on wheels or on carriages mounted on wheels
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F16—ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
- F16L—PIPES; JOINTS OR FITTINGS FOR PIPES; SUPPORTS FOR PIPES, CABLES OR PROTECTIVE TUBING; MEANS FOR THERMAL INSULATION IN GENERAL
- F16L2101/00—Uses or applications of pigs or moles
- F16L2101/30—Inspecting, measuring or testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2135—Metering
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.
La presente invención se refiere generalmente a
la ejecución o realización medida de código.
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.
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.
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.
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
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.
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.
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.
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.
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)
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)
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 |
-
2004
- 2004-03-01 US US10/791,208 patent/US7500108B2/en active Active
-
2005
- 2005-02-22 JP JP2005045646A patent/JP2005259126A/ja active Pending
- 2005-02-25 EP EP05101437A patent/EP1571526A1/en not_active Ceased
- 2005-02-28 ES ES200500450A patent/ES2326398B1/es active Active
- 2005-02-28 CN CN2005100531213A patent/CN1664742B/zh not_active Expired - Fee Related
- 2005-03-02 KR KR1020050017353A patent/KR20060043336A/ko not_active Application Discontinuation
-
2012
- 2012-03-19 JP JP2012062454A patent/JP2012150829A/ja active Pending
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 |