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
Links
- 230000007246 mechanism Effects 0.000 title description 9
- 238000004891 communication Methods 0.000 claims abstract description 3
- 238000000034 method Methods 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004883 computer application Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Classifications
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- 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
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- 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
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/465—Distributed 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.
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.
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.
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.
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.
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)
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)
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)
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 |
-
2001
- 2001-05-11 ES ES01938842T patent/ES2201038T3/es not_active Expired - Lifetime
- 2001-05-11 CA CA002446489A patent/CA2446489A1/en not_active Abandoned
- 2001-05-11 DK DK01938842T patent/DK1305708T3/da active
- 2001-05-11 WO PCT/NO2001/000201 patent/WO2002093365A1/en active Application Filing
- 2001-05-11 AT AT01938842T patent/ATE242892T1/de not_active IP Right Cessation
- 2001-05-11 DE DE60100363T patent/DE60100363T2/de not_active Expired - Fee Related
- 2001-05-11 EP EP01938842A patent/EP1305708B1/en not_active Expired - Lifetime
- 2001-05-11 PT PT01938842T patent/PT1305708E/pt unknown
- 2001-06-26 US US09/891,490 patent/US6490720B1/en not_active Expired - Fee Related
-
2003
- 2003-10-28 NO NO20034816A patent/NO20034816L/no not_active Application Discontinuation
Cited By (1)
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 |