ES2201038T3 - Mecanismo de enumeracion secuencial para asegurar la integridad del orden de ejecucion de aplicaciones de tarjetas interdependientes. - Google Patents

Mecanismo de enumeracion secuencial para asegurar la integridad del orden de ejecucion de aplicaciones de tarjetas interdependientes.

Info

Publication number
ES2201038T3
ES2201038T3 ES01938842T ES01938842T ES2201038T3 ES 2201038 T3 ES2201038 T3 ES 2201038T3 ES 01938842 T ES01938842 T ES 01938842T ES 01938842 T ES01938842 T ES 01938842T ES 2201038 T3 ES2201038 T3 ES 2201038T3
Authority
ES
Spain
Prior art keywords
code
applet
computer
data
devices
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES01938842T
Other languages
English (en)
Inventor
Ulf Carlsen
Hakon Hammerstad
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.)
Sospita AS
Original Assignee
Sospita AS
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 Sospita AS filed Critical Sospita AS
Application granted granted Critical
Publication of ES2201038T3 publication Critical patent/ES2201038T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • 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
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems

Abstract

Procedimiento de ejecución de código de un programa informático en un entorno informático multiprocesador, incluyendo el código informático: (i) una primera parte que ha de ejecutarse en un ordenador (100) y (ii) una segunda parte, incluyendo esta segunda parte varios bloques de código diferentes, en por lo menos algunos de los bloques que tengan datos de secuencia asociados, comprendiendo el procedimiento: (a) la ejecución de la segunda parte del código en uno o más dispositivos externos resistentes a manipulación indebida (200), que están en comunicación con el ordenador (100) y (b)si existen datos de secuencia en el bloque actual del código que se va a ejecutar en uno o más de los dispositivos resistentes a manipulación indebida, se utilizan los datos de secuencia para determinar si la ejecución del bloque de código es admisible o debe ser inhibido.

Description

Mecanismo de enumeración secuencial para asegurar la integridad del orden de ejecución de aplicaciones de tarjetas interdependientes.
Antecedentes y resumen de la invención
La presente invención se refiere a un mecanismo para la protección del orden de ejecución correcto de aplicaciones de programas informáticos interpendientes (o en interrelación). En particular, la presente invención se refiere a la protección de licencia de programas informáticos para la ejecución protegida y a su debido tiempo de aplicaciones informáticas a través del uso de dispositivos externos resistentes a manipulación indebida, tales como tarjetas inteligentes, testigos de USB u otras formas de entornos resistentes a manipulación indebida. La presente invención encuentra, asimismo, sus aplicaciones en cualquier ámbito tradicional de aplicación de seguridad de tarjetas inteligentes, tales como pago electrónico, gestión de derechos digitales (DRM), protección multimedia, autenticación, biometría, infraestructura de clave pública (PKI), sistemas de encriptación, como una parte integrada de sistemas operativos seguros de usos especiales para dispositivos externos resistentes a manipulación indebida y otros similares. La presente invención se refiere a la solicitud internacional nº PCT/NO96/00171, que designa los Estados Unidos. Esta patente describe un sistema para la protección de la licencia de programas informáticos mediante la ejecución parcial de una aplicación informática en un dispositivo externo resistente a manipulación indebida.
En entornos informáticos multiprocesos, tales como, por ejemplo, los proporcionados por un entorno de doble procesador que consiste en un ordenador central principal (no acreditado) y un dispositivo resistente a manipulación indebida (acreditado) externo, tal como una tarjeta inteligente u otro testigo operativo, las aplicaciones informáticas residentes en el ordenador central suelen necesitar la realización de más de una llamada de función a aplicaciones residentes en el dispositivo externo. Las aplicaciones informáticas que se ejecutan en dispositivos externos, según aquí se describen, son también referidas como subprogramas (applets). En términos generales, la ruta de ejecución de una aplicación informática, bien sea una aplicación de ordenador principal, bien sea un applet en dispositivo externo/tarjeta inteligente, es crítica para el funcionamiento correcto de la aplicación. Es importante que la ruta de ejecución no sea objeto de manipulación indebida.
Como un ejemplo no sistemático, una aplicación que convierte la temperatura en grados Celsius (ºC) en una temperatura en grados Fahrenheit (ºF) necesitaría ejecutar la ecuación F=9/5*C+32. La multiplicación de los grados Celsius por 9/5 debe efectuarse antes de la adición de 32. Según la técnica anterior, el orden de ejecución correcto queda asegurado permitiendo que su función se ejecute, en su integridad, en un entorno a prueba de manipulación indebida, como un subprograma applet, permitiendo solamente una entrada de llamada de función desde la aplicación del ordenador principal al applet. Puesto que el applet reside en la tarjeta inteligente resistente a manipulación indebida, no podrá ser objeto de dicha manipulación y habida cuenta que el applet sólo tiene un punto de entrada, no hay ninguna manera de que la operación de adición pueda realizarse antes de la operación de multiplicación. La atomicidad funcional, la integridad y el orden de ejecución correcto se aseguran de esta manera.
Si la función F=9*C/5+32, no obstante, tuviera que dividirse en tres applets, según se ilustra en la figura 1, applet 1 como i=9*C, applet 2 como i=i/5 y applet 3 como F=i+32, cada una con un punto de entrada separado, entonces, según la técnica anterior, ningún mecanismo permite al dispositivo externo descubrir e impedir a un intruso modificar la aplicación del ordenador principal invirtiendo las llamadas de función de applets hacia el dispositivo externo, por ejemplo, llamando applet 3 antes de applet 1 o eliminando una o varias llamadas, para romper así la integridad de la aplicación compuesta de la tarjeta inteligente.
La Figura 2 ilustra un entorno en el que el intruso ha eliminado la llamada a applet 2, lo que hace que el dispositivo externo retorne a un resultado corrupto. Por ello, un dispositivo a prueba de manipulación indebida no basta, en general, para mantener el orden de ejecución correcto y la integridad global de los applets.
Un primer objeto de la presente invención es proporcionar un mecanismo de protección de la integridad que permita que una aplicación de tarjeta inteligente se divida en más de una subaplicación de una forma segura, haciendo cumplir el orden de ejecución correcto y la integridad de las aplicaciones así como permitir en el entorno de ejecución del dispositivo externo descubrir cualquier intento para procesar los applets en un orden o en una forma de carácter ilegal. Esta facilidad operativa abre nuevas posibilidades tecnológicas. Un segundo objeto de la presente invención es facilitar, a los efectos de protección de la licencia de programas informáticos y otros entornos de aplicación anteriormente indicados, la selección de componentes de aplicaciones de programas informáticos que sean adecuados y no adecuados para la ejecución de un dispositivo resistente a manipulación indebida, de una manera no limitada, proporcionando con ello una herramienta eficiente y de fácil uso para optimización de la seguridad y prestaciones de la aplicación informática.
La presente invención se describe esencialmente en la reivindicación 1. En las reivindicaciones subordinadas se especifican otras realizaciones preferidas.
Breve descripción de los dibujos
El resumen precedente, así como la descripción detallada de las realizaciones preferidas de la invención, se entenderán mejor cuando se interpreten conjuntamente con los planos adjuntos. A los efectos de ilustrar la invención, se ilustra en los dibujos una realización que es la actualmente preferida. Deberá quedar entendido, sin embargo, que la invención no se limita a las disposiciones e instrumentalidades precisas ilustradas. En los dibujos:
la Figura 1 es un diagrama de bloques esquemático de un entorno informático multiprocesador de la técnica anterior para ejecutar una parte de código en un dispositivo externo;
la Figura 2 ilustra cómo puede realizarse un ataque informático sobre el entorno de la Fig. 1;
la Figura 3 ilustra un diagrama de bloques esquemático de un entorno informático multiprocesador de la técnica anterior para ejecutar una parte de código en un dispositivo externo según una primera realización de la presente invención y
la Figura 4 ilustra un diagrama de bloques esquemático de un entorno informático multiprocesador de la técnica anterior para ejecutar una parte de código en un dispositivo externo, según una segunda realización de la presente invención y
la Figura 5 ilustra cómo la presente invención proporciona una solución general para controlar múltiples rutas de ejecución de applets alternativas.
Descripción detallada de la invención
En la presente invención se usa una determinada terminología por comodidad solamente y no ha de tomarse como una limitación sobre la presente invención. En los dibujos, las mismas letras de referencia se usan para designar los mismos elementos a través de todas las figuras.
La presente invención vincula los datos de secuencias de procesos de applets (por ejemplo, números de secuencia u otros identificadores, tales como números aleatorios o valores de tiempos discretos) junto con el código applet real, haciendo así que los applets se ejecuten en una secuencia correcta determinada por los datos de la secuencia. Cada applet debe tener una identidad única. Para cada applet, los datos de secuencia contienen información sobre el conjunto de los applets predecesores permitidos para ejecutarse antes del applet actual y el conjunto de applets sucesores permitidos para ejecutarse después del applet actual. Los conjuntos de predecesores y sucesores pueden estar vacíos o contener uno o varios elementos (identidades de applets) o pueden contener comodines que definen un grupo concreto de applets. En resumen, para cada applet, los datos de secuencia identifican el conjunto de applets que preceden y suceden al applet actual y la información de secuenciamiento necesita estar inherentemente unida al código de applet real.
El código predecesor y sucesor especial * se utiliza como comodín. Un código predecesor * indica que, desde el punto de vista del applet actual, cualquier otro applet puede ejecutarse con anterioridad. Por ejemplo, en la Figura 3, el predecesor del applet 1 se especifica como *, lo que implica que el applet 1 no pone limitación alguna a qué applet, si la hay, fuera ejecutado de antemano. applet 2, por el contrario, establece concretamente que su sucesor será applet 3. Dicho de otro modo, incluso si applet 1 permite que applet 2 sea su predecesor, entonces applet 2 no permite que applet 1 sea su sucesor. Dicho de otro modo, la ejecución de un applet sólo tiene lugar si se cumplen, a la vez, las condiciones de su predecesor y sucesor.
Pueden crearse otros tipos de comodines distintos a *, que describan limitaciones diferentes sobre los applets o diferentes subconjuntos de applets.
Aquí se describen dos realizaciones principales de la presente invención. En la primera realización, ilustrada en la Figura 3, el identificador de applet, la información de predecesor/sucesor y el código de applet se almacenan en el dispositivo externo, fuera del alcance de la manipulación indebida por un intruso. En una segunda realización, ilustrada en la figura 4, el identificador de applet y la información de predecesor/sucesor se vincula en el código de applet real, que luego se protege para su integridad y/o confidencialidad por medio de técnicas de encriptación estándar.
La figura 3 ilustra el seguimiento del dispositivo externo y datos de secuencia en el ejemplo establecido anteriormente. En esta figura, los datos de secuencia de predecesor y sucesor se utilizan y son objeto de seguimiento para ilustrar el concepto de la invención. Por ejemplo, el applet encriptado 1 en la aplicación informática del ordenador principal no tiene ningún predecesor concreto, pero tiene a applet 2 como su legítimo sucesor y applet 3 tiene a applet 2 como su único predecesor, pero ningún sucesor concreto.
Haciendo referencia al seguimiento del dispositivo externo en el momento t1 (que corresponde al estado de memoria t1 en la memoria 222 de la figura 3), el applet 1 ha sido ejecutado y applet 1 fue el último en ejecutarse; en el momento t2 (que corresponde al estado de memoria 2 en la memoria 222), los applets 1 y 2 han sido ejecutados y applet 2 fue el último bloque en ejecutarse y en el momento t3 (que corresponde al estado de memoria 3 en la memoria 222), los applets 1, 2 y 3 se han ejecutado y applet 3 fue el último bloque en ejecutarse.
Los datos de predecesor y sucesor se comprueban de nuevo con respecto a los datos objeto de seguimiento por el dispositivo externo 200 antes de que pueda ejecutarse el código de bloque. Por ejemplo, antes de que se ejecute el applet 2, el dispositivo externo 200 busca los predecesores legítimos de applet 2 en la memoria 224 de la Figura 3, es decir, applet 1 y luego comprueba si applet 1 fue realmente el último ejecutado en el estado anterior t1 en la memoria 222. El dispositivo externo 200 comprueba luego si el applet 2 actual es un sucesor legítimo de applet 1 buscando la información del sucesor en el estado anterior t1 en la memoria 222. En caso afirmativo, se ejecuta applet 2. En caso contrario, applet 2 no puede ejecutarse.
Vamos a considerar de nuevo el ataque establecido en la Figura 2 a la vista de la presente invención y la realización según la figura 3. Si un adversario sustituye la llamada a applet 2 por una llamada a applet 3, el dispositivo externo 200 no ejecutará applet 3 debido a que el sucesor para applet 1, según la memoria 224, solamente puede ser applet 2 y también porque el predecesor de applet 3, según la misma memoria 224, es applet 2 y no contiene applet 1 como estado t1 de la memoria 222.
La figura 4 ilustra una segunda realización de la presente invención. En este caso, los datos de secuenciamiento encriptados 1221, 1222 y 1223 están incorporados en cada applet separado, aliviando de carga a la memoria 224 de la Figura 3. Durante la ejecución, el dispositivo externo 200 recibe applets desde el programa informático del ordenador principal 122. Por cada applet recibido, el dispositivo externo 200 verifica que este applet sigue una ruta de ejecución válida según la información almacenada en la memoria de seguimiento de ejecución de applets 222. Por ejemplo, cuando el dispositivo externo 200 recibe el applet 2, el applet es, en primer lugar, encriptado, luego el dispositivo externo 200 busca los predecesores legítimos de applet 2, en el cuerpo 1222 de applets, que resulta ser applet 1 y entonces comprueba si el applet 1 realmente fue el último ejecutado en el estado anterior t1 en la memoria 222. El dispositivo externo 200 comprueba luego si el applet 2 actual es un sucesor legítimo de applet 1 buscando la información del sucesor en el estado t1 anterior en la memoria 222. En caso afirmativo, se ejecuta applet 2. En caso contrario, applet 2 no podrá ejecutarse.
A continuación se considera de nuevo el ataque ilustrado en la figura 2 a efectos de la presente invención y la realización según la figura 4. Si un adversario sustituye la llamada a applet 2 por una llamada a applet 3, el dispositivo externo 200 no ejecutará applet 3 debido a que el sucesor para applet 1, de acuerdo con la memoria 224, solamente puede ser applet 2 y también debido a que el predecesor de applet 3, según la misma memoria 224, es applet 2 y no contiene a applet 1 como el estado t1 de la memoria 222.
Las realizaciones ilustradas en las figuras 3 y 4 tienen cada una sus ventajas. La figura 3 permite el almacenamiento de la información de los applets y de sus predecesores y sucesores asociados en la memoria 224 dentro del dispositivo externo 200. Esto reduce la comunicación entre el ordenador principal 100 y el dispositivo externo 200. Durante el tiempo de ejecución, solamente el identificador de applet y los parámetros de E/S asociados se transfieren entre la aplicación del ordenador principal 122 y el dispositivo externo 200. Por el contrario, almacenar applets encriptados en la memoria del ordenador principal 110 y permitir que sean descargados al dispositivo externo 200, durante el tiempo de ejecución, reduce el uso de memoria en el dispositivo externo 200. Estos procedimientos pueden combinarse.
Los applets 1, 2 y 3 de las figuras 3 y 4 se ejecutan en orden estrictamente secuencial. Cada applet tiene exactamente un predecesor y exactamente un sucesor. En aplicaciones de programas informáticos, se trata de un caso especial y no una norma general. La técnica anterior mantiene una solución a este caso especial: Procedimientos de encriptación estándar enseñan procedimientos de encadenamiento de encriptaciones, tales como, por ejemplo, Cipher Block Chaining (CBC), definido en la Publicación 81 de las Normas Federales sobre Procesos de la Información, DES Modes of Operation, diciembre de 1980 (FIPS PUB 81), donde un bloque cifrado está enlazado de forma criptográfica al anterior. Utilizando CBC, no es posible desencriptar y, para los fines aquí descritos, ejecutar applet i+1 sin haber desencriptado y ejecutado primero applet 1. Asimismo, para algunos bloques encriptados i+1, los mecanismos de encadenamiento criptográfico no ofrecen solución al problema de tener dos bloques diferentes i e i' que ambos proporcionan una descripción correcta del bloque i+1.
La figura 5 ilustra que la presente invención proporciona una solución general para controlar múltiples rutas de ejecución de applets alternativas, superando así la limitación de los mecanismos de encadenamiento criptográfico y otras técnicas anteriores. En la Figura 5, el applet 4 tiene dos posibles predecesores, los applets 2 y 3. Esto se refleja en la entrada para applet 4 en la memoria 224, que informa al dispositivo externo que ambos applets 2 y 3 son predecesores legítimos de applet 4.
La presente invención se generalizar, de forma trivial, para manipular múltiples dispositivos externos resistentes a manipulación indebida. Desde el punto de vista de una aplicación informática del ordenador principal, tiene la capacidad de ejecutar llamadas a applets en varios dispositivos externos (diferentes). Análogamente, desde el punto de vista de un dispositivo externo, cualquier número de aplicaciones de diferentes ordenadores centrales (e incluso de otros dispositivos externos) puede efectuar llamadas a los applets dentro del dispositivo externo actual, sin interferir con el mecanismo de seguridad aquí descrito.
La presente invención puede también extenderse para permitir que cualquier applet particular se ejecute en más de un dispositivo externo. En este entorno, el dispositivo externo actualmente encargado de determinar si un applet, cuya ejecución está permitida, necesita buscar la traza de ejecución pertinente de los applets precedentes, incluyendo un mecanismo para mantener la integridad de esta información, con el fin de determinar si el applet actual tiene, o no, el derecho a ejecutarse.
Pueden efectuarse cambios en las realizaciones anteriormente descritas sin apartarse de su amplio concepto inventivo. La presente invención no se limita así a las realizaciones reveladas, sino que está concebida para cubrir las modificaciones dentro del ámbito de las reivindicaciones de la presente invención.

Claims (17)

1. Procedimiento de ejecución de código de un programa informático en un entorno informático multiprocesador, incluyendo el código informático (i) una primera parte que ha de ejecutarse en un ordenador (100) y (ii) una segunda parte, incluyendo esta segunda parte varios bloques de código diferentes, en por lo menos algunos de los bloques que tengan datos de secuencia asociados, comprendiendo el procedimiento:
(a) la ejecución de la segunda parte del código en uno o más dispositivos externos resistentes a manipulación indebida (200), que están en comunicación con el ordenador (100) y
(b) si existen datos de secuencia en el bloque actual del código que se va a ejecutar en uno o más de los dispositivos resistentes a manipulación indebida, se utilizan los datos de secuencia para determinar si la ejecución del bloque de código es admisible o debe ser inhibido.
2. Procedimiento según la reivindicación 1, en el que los bloques de código, que tengan datos de secuencia asociados, incluyen cada uno (i) un ID de
applet, (ii) datos predecesores que indican uno o más bloques concretos de código que deben haberse ejecutado inmediatamente antes del bloque de código que tiene los datos de secuencia que le están asociados, (iii) datos sucesores que indican uno o más bloques concretos de código que deben ejecutarse inmediatamente después del bloque de código que tiene datos que le están asociados y (iv) el código de applet.
3. Procedimiento según la reivindicación 2, en el que el identificador de applet, los datos de secuencia y el código de applet se almacenan (224) en el dispositivo resistente a manipulación indebida.
4. Procedimiento según la reivindicación 2 en el que el identificador de applet y los datos de secuencia están vinculados en el código de applet (1221-1223) y la segunda parte del código que contiene el identificador de applet, los datos de secuencia y el código de applet son objeto de encriptación.
5. Procedimiento según la reivindicación 1 en el que la segunda parte del código está encriptado, incluyendo, además, el procedimiento:
(c) desencriptar la segunda parte del código en uno o más dispositivos resistentes a la manipulación indebida (200).
6. Procedimiento según la reivindicación 1, que incluye además:
(a) mantener un registro, en uno o más dispositivos resistentes a manipulación indebida (200), de datos con respecto a qué bloques de código de la segunda parte han sido allí ejecutados, en el que el paso (b) comprende además la comparación de cualesquiera datos de secuencia en el bloque actual de código que se va a ejecutar con los datos objeto de registro para determinar si la ejecución del bloque de código es admisible o debe inhibirse.
7. Procedimiento según la reivindicación 1, en el que la diversidad de bloques diferentes de código se entremezclan dentro de la primera parte del código.
8. Procedimiento según la reivindicación 1, que comprende además:
(a) el ordenador (100) que envía la segunda parte del código a uno o más de los dispositivos resistentes a la manipulación indebida (200) para su ejecución en esos dispositivos, recibiendo el ordenador (100) la información sobre el estado anterior de uno o más de los dispositivos resistentes a manipulación indebida (200), después de la ejecución satisfactoria de la segunda parte del código.
9. Procedimiento según la reivindicación 1, en el que uno o más de los dispositivos resistentes a manipulación indebida (200) son tarjetas inteligentes.
10. Procedimiento según la reivindicación 1, en el que uno o más de los dispositivos resistentes a manipulación indebida (200) son los denominados testigos de USB.
11. Procedimiento según la reivindicación 1, en el que uno o más de los dispositivos resistentes a manipulación indebida (200) son tarjetas PCMCIA (Asociación Internacional de fabricantes de Tarjetas de Memoria para Ordenadores Personales).
12. Procedimiento según la reivindicación 1, en el que uno o más de los dispositivos resistentes a manipulación indebida (200) son microcontroladores integrados en el ordenador (100).
13. Procedimiento según la reivindicación 1 en el que los bloques de código son applets.
14. Procedimiento según la reivindicación 1, en el que los datos de secuencia son datos comodines indicando que cualquier bloque de código puede ejecutarse inmediatamente antes del bloque que tiene los datos comodines que le están asociados o que ningún bloque de código necesita ejecutarse inmediatamente antes del bloque de código que tiene los datos comodines asociados.
15. Procedimiento según la reivindicación 1, en el que la segunda parte del código está almacenada en el ordenador (100) y es descargada a uno o más de los dispositivos resistentes a manipulación indebida (200) antes de su ejecución.
16. Procedimiento según la reivindicación 1, en el que la segunda parte de código es almacenada en uno o más de los dispositivos resistentes a manipulación indebida (200) y recibe instrucciones para ejecutarse a la recepción de órdenes procedentes de la primera parte de código.
17. Procedimiento según la reivindicación 1, en el que el código informático es parte de un programa informático de aplicación.
ES01938842T 2001-05-11 2001-05-11 Mecanismo de enumeracion secuencial para asegurar la integridad del orden de ejecucion de aplicaciones de tarjetas interdependientes. Expired - Lifetime ES2201038T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/NO2001/000201 WO2002093365A1 (en) 2001-05-11 2001-05-11 Sequence numbering mechanism to ensure execution order integrity of inter-dependent smart card applications

Publications (1)

Publication Number Publication Date
ES2201038T3 true ES2201038T3 (es) 2004-03-16

Family

ID=19904215

Family Applications (1)

Application Number Title Priority Date Filing Date
ES01938842T Expired - Lifetime ES2201038T3 (es) 2001-05-11 2001-05-11 Mecanismo de enumeracion secuencial para asegurar la integridad del orden de ejecucion de aplicaciones de tarjetas interdependientes.

Country Status (10)

Country Link
US (1) US6490720B1 (es)
EP (1) EP1305708B1 (es)
AT (1) ATE242892T1 (es)
CA (1) CA2446489A1 (es)
DE (1) DE60100363T2 (es)
DK (1) DK1305708T3 (es)
ES (1) ES2201038T3 (es)
NO (1) NO20034816L (es)
PT (1) PT1305708E (es)
WO (1) WO2002093365A1 (es)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2255814A1 (es) * 2004-05-31 2006-07-01 Administracion De La Comunidad Autonoma De Euskadi Dispositivo de establecimiento, ejecucion y obtencion del resultado de la ejecucion de una tarea.

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6845498B1 (en) * 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
US6938244B1 (en) 1999-05-11 2005-08-30 Microsoft Corp. Interlaced protocol for smart card application development
US6912528B2 (en) * 2000-01-18 2005-06-28 Gregg S. Homer Rechargeable media distribution and play system
US7272228B2 (en) * 2003-06-12 2007-09-18 International Business Machines Corporation System and method for securing code and ensuring proper execution using state-based encryption
DE10340411B4 (de) * 2003-09-02 2005-10-13 Infineon Technologies Ag Vorrichtung und Verfahren zur sicheren Ausführung eines Programms
US7730318B2 (en) * 2003-10-24 2010-06-01 Microsoft Corporation Integration of high-assurance features into an application through application factoring
US7426752B2 (en) * 2004-01-05 2008-09-16 International Business Machines Corporation System and method for order-preserving encryption for numeric data
US20050204405A1 (en) * 2004-03-04 2005-09-15 Brian Wormington Method and system for digital rights management
EP2112612A3 (en) * 2004-04-26 2011-08-03 Google, Inc. Method of verifying license compliance for a web application
EP1698958A1 (fr) * 2005-02-25 2006-09-06 Axalto SA Procédé de sécurisation de l'ecriture en mémoire contre des attaques par rayonnement ou autres
EP2296108B1 (en) 2006-06-15 2012-11-14 Kabushiki Kaisha Toshiba Portable electronic device and control method thereof
US20080133419A1 (en) * 2006-12-05 2008-06-05 Brian Wormington Secure financial transaction system and method
KR101224717B1 (ko) * 2008-12-26 2013-01-21 에스케이플래닛 주식회사 소프트웨어 라이센스 보호 방법과 그를 위한 시스템, 서버,단말기 및 컴퓨터로 읽을 수 있는 기록매체
US9934377B2 (en) 2015-11-20 2018-04-03 Atmel Corporation Input/output parameter selection

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558176A (en) 1982-09-20 1985-12-10 Arnold Mark G Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
CA1322422C (en) * 1988-07-18 1993-09-21 James P. Emmond Single-keyed indexed file for tp queue repository
JP3290280B2 (ja) * 1994-01-13 2002-06-10 株式会社東芝 情報処理装置
FR2723652B1 (fr) 1994-08-11 1996-09-13 Cegelec Procede pour ordonnancer des taches successives
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5651068A (en) 1995-03-08 1997-07-22 Hewlett-Packard Company International cryptography framework
NO302388B1 (no) 1995-07-13 1998-02-23 Sigurd Sigbjoernsen Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse
US5825877A (en) 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
US5841869A (en) 1996-08-23 1998-11-24 Cheyenne Property Trust Method and apparatus for trusted processing
US5917913A (en) 1996-12-04 1999-06-29 Wang; Ynjiun Paul Portable electronic authorization devices and methods therefor
US5933640A (en) * 1997-02-26 1999-08-03 Digital Equipment Corporation Method for analyzing and presenting test execution flows of programs
US6126328A (en) 1997-02-28 2000-10-03 Oracle Corporation Controlled execution of partitioned code
GB2328042B (en) 1997-07-26 2002-10-09 Ibm Smartcard transaction processing
US6117185A (en) * 1997-09-24 2000-09-12 International Business Machines Corporation Skip list data storage during compilation
US6061449A (en) 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US6038646A (en) 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
US6205465B1 (en) * 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6223287B1 (en) * 1998-07-24 2001-04-24 International Business Machines Corporation Method for establishing a secured communication channel over the internet
FR2792431B1 (fr) * 1999-04-19 2001-07-13 Canon Kk Dispositif et procede pour filtrer et/ou delivrer des paquets de donnees entrants a des applications clientes dans des architectures de communication a acces direct au reseau

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2255814A1 (es) * 2004-05-31 2006-07-01 Administracion De La Comunidad Autonoma De Euskadi Dispositivo de establecimiento, ejecucion y obtencion del resultado de la ejecucion de una tarea.

Also Published As

Publication number Publication date
DE60100363D1 (de) 2003-07-17
EP1305708B1 (en) 2003-06-11
US6490720B1 (en) 2002-12-03
ATE242892T1 (de) 2003-06-15
DK1305708T3 (da) 2003-07-14
PT1305708E (pt) 2003-10-31
EP1305708A1 (en) 2003-05-02
CA2446489A1 (en) 2002-11-21
NO20034816L (no) 2004-03-10
DE60100363T2 (de) 2004-05-06
WO2002093365A1 (en) 2002-11-21
NO20034816D0 (no) 2003-10-28

Similar Documents

Publication Publication Date Title
ES2201038T3 (es) Mecanismo de enumeracion secuencial para asegurar la integridad del orden de ejecucion de aplicaciones de tarjetas interdependientes.
JP5114617B2 (ja) 秘密鍵を保護する、セキュア端末、プログラム、および方法
US8190917B2 (en) System and method for securely saving and restoring a context of a secure program loader
KR101136163B1 (ko) 보안 모듈 컴포넌트
CN100578473C (zh) 嵌入式系统和增加嵌入式系统安全性的方法
JP3880933B2 (ja) 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
US8239963B2 (en) Method of protecting a password from unauthorized access and data processing unit
US7945789B2 (en) System and method for securely restoring a program context from a shared memory
US8095802B2 (en) System and method for securely saving a program context to a shared memory
CN101681410A (zh) 用于控制安全环境中的处理器执行的设备
CN106650456B (zh) 电子电路的安全启动方法以及电子设备
US20100205459A1 (en) Method and system for protecting against access to a machine code of a device
US9563754B2 (en) Method of generating a structure and corresponding structure
US20170046280A1 (en) Data processing device and method for protecting a data processing device against attacks
US7353403B2 (en) Computer systems such as smart cards having memory architectures that can protect security information, and methods of using same
JP2006293516A (ja) バスアクセス制御装置
EP1295200A2 (en) Data processing method and device for protected execution of instructions
US20090300339A1 (en) Lsi for ic card
JP2009111650A (ja) 携帯記憶媒体
JP2013097524A (ja) Icチップ、データ保護方法、データ保護プログラム、icカード及び記録媒体
JP2003196628A (ja) マスクプログラムromを製造する方法及び装置、並びに対応するコンピュータプログラム及びコンピュータ読み取り可能記憶媒体
US10459848B2 (en) Method for optimising memory writing in a device
JP2003036424A (ja) マルチアプリケーションicカード
JP2008033549A (ja) 携帯可能電子装置、icカードおよび携帯可能電子装置の重要データ隠匿方法
Heinkel Chip Card & Security