MXPA01009056A - Procedimiento de supervision del desarrollo de un programa. - Google Patents

Procedimiento de supervision del desarrollo de un programa.

Info

Publication number
MXPA01009056A
MXPA01009056A MXPA01009056A MXPA01009056A MXPA01009056A MX PA01009056 A MXPA01009056 A MX PA01009056A MX PA01009056 A MXPA01009056 A MX PA01009056A MX PA01009056 A MXPA01009056 A MX PA01009056A MX PA01009056 A MXPA01009056 A MX PA01009056A
Authority
MX
Mexico
Prior art keywords
instructions
program
instruction
analysis
value
Prior art date
Application number
MXPA01009056A
Other languages
English (en)
Inventor
Ludovic Rousseau
Original Assignee
Gemplus Card Int
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 Gemplus Card Int filed Critical Gemplus Card Int
Publication of MXPA01009056A publication Critical patent/MXPA01009056A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)
  • Storage Device Security (AREA)
  • Flow Control (AREA)

Abstract

Una supervision del desarrollo de la ejecucion de una serie de instrucciones (Ins.1-Inst.n) de un programa informatico es obtenida analizando la secuencia de instrucciones transmitidas hacia el procesador (4) destinado a ejecutar el programa supervisado, y verificando el resultado de este analisis con referencia a los datos de referencia (Vref) registrados con dicho programa. Los datos de referencia pueden comprenden un valor (Vref) preestablecido de manera para corresponder al resultado del analisis realizado al momento de la supervision, solamente si todas las instrucciones (Ins-1-Inst.-n) de la secuencia de instrucciones han sido efectivamente analizadas al momento del desarrollo del programa. La invencion se refiere igualmente a un dispositivo de supervision de la ejecucion del programa, a un dispositivo de ejecucion del programa y a un dispositivo de programacion que funciona sobre los principios de supervision anteriormente indicados.

Description

PROCEDIMIENTO DE SUPERVISIÓN DEL DESARROLLO DE ÜN PROGRAMA DESCRIPCIÓN DE LA INVENCIÓN La presente invención se refiere al dominio de la seguridad de los programas informáticos, y más particularmente a un procedimiento y a un dispositivo de detección de un desarrollo inadmisible en la ejecución de un programa informático, pudiendo estar éste en un lenguaje de bajo nivel o de alto nivel. En un programa de lenguaje de bajo nivel, los comandos son formulados de acuerdo a una estructura muy parecida a aquella de las instrucciones efectivamente ejecutadas por la parte procesadora del ordenador. El programa necesita solamente ser recopilado antes de poder ser ejecutado. Los lenguajes de bajo nivel, conocidos bajo la denominación de código máquina, son utilizados principalmente para la programación de los microprocesadores o de microcontroladores . Los microcontroladores son procesadores que no pueden ejecutar más que un número reducido de instrucciones específicas. Estos son utilizados principalmente para equipar tarjetas de microcircuitos (tarjetas bancarias, telefónicas, de acceso a servicios, etc.) y para pilotear aparatos industriales o domésticos. En un programa de lenguaje de alto nivel, los comandos tienen una estructura más parecida al lenguaje natural, pero por el contrario más alejado de aquél utilizado por el procesador. Los comandos escritos en tales lenguajes deben primeramente ser interpretados, es decir convertidos a comandos de código máquina, antes de poder ser enseguida puestos bajo la forma de instrucciones con miras a su ejecución por el procesador . De este modo, todo programa informático da lugar a una serie de instrucciones adaptadas al procesador, microprocesador o microcontrolador al cual está destinado. De manera clásica, las instrucciones de un programa son ejecutadas por un procesador de acuerdo a una secuencia regulada por un contador de instrucciones, como será brevemente descrito por referencia en la Figura 1. Las instrucciones recopiladas de un programa son cargadas en bloques de instrucciones sucesivas InsT.l, Inst.2, Inst .3 , ..., Inst.n (donde n es un número entero) bajo la forma de códigos o de microcódigos en un registro de instrucciones 2. Cada instrucción es identificada por una dirección específica en este registro 2. En el ejemplo, se designan las direcciones de las instrucciones Inst.l, Inst.2, Inst.3, ...Inst.n respectivamente, Ad.l, Ad.2, Ad.3, ..., Ad.n. Las instrucciones son leídas del registro de instrucciones 2 y cargadas sucesivamente en el procesador 4 para ser ejecutadas bajo el comando de un contador de instrucciones 6 , el mismo controlado por el procesador 4. Para este fin, el contador de instrucciones 6 incluye un señalador de direcciones 8 que designa la dirección Ad.l, Ad.n del registro 2 a partir del cual debe ser leída la instrucción a cargar en el procesador 4 durante la ejecución de una secuencia de instrucciones. La posición del señalador 8 frente a las direcciones del registro de instrucciones 2 evoluciona por lo tanto inmediatamente después de la ejecución de las instrucciones. En el ejemplo representado en la Figura 1, las instrucciones Inst.l, Inst.2, Inst.3,..., Inst.n en el registro 2 deben ser ejecutadas sucesivamente de la primera instrucción Inst .1 a la enésima instrucción Inst.n, es decir de manera lineal. De este modo, el señalador 8 del contador de instrucciones 6 designa inicialmente la dirección Ad.l del registro 2, y los datos 10-1 de la instrucción correspondiente Inst.l son cargados en el procesador 4. Cuando el procesador 4 ordena al contador de instrucciones 6 proporcionar la próxima instrucción (en este caso Inst.2), éste incrementa la posición del señalador 8 de una unidad de evolución de dirección, con el fin de designar la dirección Ad.2. Este proceso se repite y es terminado cuando el señalador designa la dirección Ad.n con el fin de cargar los datos 10-n de la última instrucción Inst.n (punteados) . Una serie de instrucciones ejecutadas de manera lineal no incluye los "saltos" que escapan de la programación secuencial del señalador 8 frente a las direcciones sucesivas. Este es el caso, por ejemplo, con una secuencia de instrucciones de microondas como: Ida t txa muí bset 3. t sta n Dicho de otro modo, esta secuencia se ejecutará de manera lineal, el contador de instrucciones 6 es incrementado de una unidad de evolución de dirección al momento del paso de una instrucción a la otra.
No obstante, es común que la ejecución de un programa necesite los saltos hacia las instrucciones fuera de la secuencia lineal de las instrucciones, tal como ésta se presenta en el registro 2. Tales saltos pueden resultar de una instrucción de carga de datos situados en una dirección fuera de la secuencia, o de una instrucción, denominada de ramificación, de ejecución condicional del comando siguiente. Una instrucción que provoca un salto necesita, al nivel del contador de instrucciones 6, determinar la dirección en el registro 2 de la próxima instrucción que sigue este salto y colocar el señalador 8 en esta dirección con el fin de que la instrucción o el dato que se encuentra sea cargado en el procesador . A manera de ejemplo, la secuencia: Ida t txa bra etiqueta; salto muí bset 3,t sta n etiqueta rts provocará la carga de un nuevo valor en el contador de instrucciones 6 en el sitio del código correspondiente al comentario "salto" .
El hecho de poder efectuar de este modo bajo el comando las saltos hacia las direcciones fuera de una serie de secuencias de direcciones, puede desafortunadamente dar lugar a un desarrollo inadmisible del programa. Un desarrollo inadmisible de este tipo, del _ programa, puede resultar de una disfunción accidental del dispositivo programado. Pero éste puede también provenir de una acción malintencionada que considera apartar el funcionamiento del dispositivo programado de su función deseada. Por ejemplo, en el caso de una tarjeta de microcircuito, las modificaciones de programación del microcontrolador por la creación de la modificación de saltos y/o de ramificaciones puede permitir cargar datos erróneos (aumento de crédito autorizado con una tarjeta bancaria o telefónica, falsa autorización del acceso a ciertos servicios, etc.) o recuperar datos confidenciales almacenados en la memoria (código de acceso, informaciones personales concernientes al titular de la tarjeta, etc.) . En efecto, incluso cuando los programas son registrados de manera fija sobre un microcircuito semiconductor, es posible con las técnicas actuales de sondeo y de prueba de los componentes, para crear contactos de sondeo sobre la superficie de una tarjeta de microcircuito (o incluso en las capas básicas de ésta) con ayuda de estaciones de trabajo para la focalización de los haces de iones (también conocidos bajo el nombre anglosajón de "Focus Ion Beams", o "FIBs") . Una vez creados, estos puntos de sondeo permiten el depósito de puntos de sondeo con la ayuda de estaciones especializadas (también conocidas bajo el nombre anglosajón de "probé stations" (estaciones sonda) ) que permite la lectura en forma continua de un bitio (y el seguimiento de su evolución en el curso del tiempo) o una modificación externa de su valor. En particular, el depósito de contacto sobre el registro del contador de instrucciones 6 permite cargar de manera externa el valor del registro en el curso de ejecución y provocar una ramificación no prevista por el creador del programa. Como se explicó anteriormente, un salto de este tipo puede tener, por supuesto, consecuencias nefastas sobre la seguridad del aplicante y llegar, por ejemplo, a la divulgación de datos secretos efectuando cálculos incompletos . Existen igualmente maneras más rudimentarias, pero menos seguras, de provocar tales disfunciones en el desarrollo del programa. Un ejemplo se da en un artículo titulado "Tamper-resistance, a cautionary note" por R. Anderson. Otra técnica consiste en explotar las fallas de cálculo provocadas deliberadamente con el fin de extraer de una tarjeta de microcircuito datos tales como las claves secretas. Esta técnica es escrita e el artículo titulado "On the Importance of Checking Computations" de Boneh; DeMillo et Lípton; Bellcore Report, publicado el 31 de octubre de 1996. Por supuesto, el mismo fenómeno puede igualmente producirse cuando el programa atacado es interpretado en lugar de ser recopilado. De este modo, una aplicación en el lenguaje Java o Basic puede ser apartado de su uso legítimo si el atacante llega, por ejemplo, a provocar un cambio en el señalador del programa del interprete indicando la instrucción actual a interpretar. Ahora bien, los temas informáticos actuales no son específicamente concebidos con el fin de prohibir las ramificaciones no controladas en el interior de un código. Por el contrario, los lenguajes de ensamblaje han sido específicamente concebidos con el fin de permitir al programador el máximo de libertad. A manera de ejemplo, en el lenguaje C, es posible saltar al interior del código de una función utilizando la ejecución indicada por el señalador.
En vista de estos problemas de desarrollo del programa de manera inadmisible, ya sea que sean por causa de una disfunción intempestiva o voluntaria de desviar el programa de su utilización prevista, la invención propone un procedimiento de supervisión del desarrollo de la ejecución de una serie de instrucciones de un programa informático, consistente en analizar la secuencia de instrucciones transmitidas hacia el procesador destinado a ejecutar el programa supervisado, y en verificar el resultado de este análisis con los datos de referencia registrados con dicho programa. De este modo, la presente invención permite verificar que todas las instrucciones comprendidas en el conjunto de instrucciones consideradas sean bien transmitidas hacia el procesador con miras a su ejecución. Hay que suponer que si tal es el caso, las instrucciones leídas de este modo habrán sido también ejecutadas. Los datos de referencia pueden ser por ejemplo un valor pre-establecido de manera para corresponder al resultado del análisis realizado al momento del procedimiento de supervisión solamente si todas las instrucciones de la secuencia de instrucciones han sido efectivamente analizadas al momento del desarrollo del programa . De preferencia, la etapa de análisis comprende las sub-etapas de extracción de un dato de cada instrucción transmitido hacia el procesador y de cálculo predeterminado sobre cada dato extraído de este modo, y la etapa de verificación incluye la comparación del resultado del análisis con los datos de referencia. Ventajosamente, la etapa de verificación es efectuada por una comparación cableada de un valor contenido en un registro asociado a los medios de supervisión con el valor de referencia, pudiendo ser éste inscrito en el programa de manera cableada, fija (por ejemplo en una memoria fija tipo ROM) una vez para todos al momento del enmascaramiento del código que constituye el programa supervisado. De preferencia, la verificación es provocada por una instrucción colocada en un sitio predeterminado en el programa, conteniendo esta instrucción los datos de referencia anteriormente indicados. Ventajosamente, cuando las instrucciones del conjunto de instrucciones" a supervisar se presentan bajo la forma de un valor, hexadecimal o decimal, se trata de estas instrucciones en calidad de simples valores numéricos al momento del análisis anteriormente citado . El procedimiento global de supervisión de la ejecución de una secuencia de instrucciones de un programa informático puede así comprender las siguientes etapas. al momento de la preparación del programa; incorporar, al menos en un sitio predeterminado de una secuencia de instrucciones del programa, un valor de referencia establecido de acuerdo a una regla dada aplicada sobre los datos identificables en cada instrucción a supervisar, y - al momento de la ejecución de la parte del programa a supervisar; obtener dichos datos identificables en cada instrucción ejecutada; aplicar la regla dada sobre los datos identificables así obtenidos, para establecer un valer de verificación, y verificar que este valor de verificación corresponda efectivamente al valor de referencia registrado con el programa.
En una modalidad de realización preferida de la invención, se prevé interrumpir el desarrollo del programa cuando es detectado que el valor de verificación no corresponde al valor de referencia. Esta interrupción puede estar acompañada de una acción de invalidación para el uso futuro del dispositivo, que comprende los programas informáticos supervisados si la no correspondencia entre el valor de verificación y el valor de referencia es detectada un número predeterminado de veces . Ventajosamente, el conjunto de instrucciones a supervisar no incluye los saltos en su desarrollo previsto, de tal suerte que se llega a que todas las instrucciones que éste incluye sean ejecutadas en todos los casos de figura considerados. Cuando el programa o la porción del programa a supervisar prevé al menos un salto, es posible aplicar el procedimiento de supervisión separadamente sobre los conjuntos de instrucciones que no incluyen saltos. En el caso de una instrucción que da lugar al menos a un salto dependiente de los datos manipulados, es decir una ramificación condicional, se puede poner en operación el procedimiento de supervisión separadamente para un conjunto de instrucciones desprovisto de saltos y que precede el salto, y para al menos un conjunto de instrucciones desprovisto de saltos que sucede a este salto. En este caso, se puede considerar que para un conjunto de instrucciones que preceden un salto, se integra a este conjunto la instrucción que comprende el salto (esta instrucción es normalmente la última antes de una ramificación) para fines del análisis con miras a obtener el valor de verificación de este conjunto de instrucciones, y se verifica así el buen desarrollo de este conjunto de instrucciones antes de ejecutar las ejecuciones del salto. Ventajosamente, se borra el valor de verificación obtenido al momento de uno precedente puesto en operación del procedimiento en cada nueva puesta en operación del procedimiento. Esta disposición permite administrar fácilmente la supervisión de diferentes conjuntos de instrucciones de un programa, tales como aquellos separados por los saltos. Esta permite principalmente poner en operación el procedimiento con las mismas condiciones iniciales del cálculo del valor de verificación para los diferentes conjuntos separados de los saltos. En cada nueva puesta en operación del procedimiento, el valor de verificación puede ser efectuado por una simple puesta a cero. Este valor puede igualmente ser reemplazado por otro valor inicial predeterminado. Estas operaciones de puesta a cero o de inicialización pueden ser activadas por el programa protegido mismo. Ventajosamente, el valor de verificación es obtenido en tanto que el último valor de una serie de valores que se hace evolucionar sucesivamente con el análisis de cada una de las instrucciones consideradas del conjunto de instrucciones. Este procedimiento permite contener un estado interno de desarrollo del procedimiento de supervisión y seguir su evolución. De preferencia, la modalidad de análisis que permite esta evolución del valor de verificación consiste en calcular, para cada instrucción considerada que sucede a una instrucción precedente, el resultado de una operación a la vez sobre un valor extraído de la instrucción considerada, y el resultado obtenido por la misma operación efectuada sobre esta instrucción precedente. Para el cálculo leído en una primera instrucción a verificar, se puede aplicar una operación a la vez sobre el dato extraído de esta primera instrucción y un valor predeterminado (que puede corresponder entonces al valor de reinicialización o de puesta a cero anteriormente indicado) , haciendo éste las veces de valor "semilla" en ausencia del resultado de la operación precedente. De esta manera, es posible obtener el valor de verificación correcto utilizando un algoritmo recursivo aplicable de la misma manera para los datos extraídos de cada una de las instrucciones consideradas. Lo que es más, la operación del cálculo puede ser elegida fácilmente de manera para que un valor de verificación correcto sea obtenido solamente si por una parte solamente los datos de todas las instrucciones han sido considerados luego del cálculo, y por otra parte éstos han sido considerados en el orden previsto. La operación de cálculo puede consistir en aplicar una función de recorte, de acuerdo a una técnica conocida en el mismo dominio de codificación de los datos, tal como la función de recorte SHA-1 establecida por la norma federal de recorte. Se puede realizar en este caso la evolución interna anteriormente indicada del desarrollo del procedimiento de supervisión partiendo criptográficamente el conjunto de códigos de operación (considerados en calidad de valores numéricos) y de direcciones ejecutadas desde la última inicialización efectuada. En una variante, es posible hacer evolucionar el valor de verificación efectuando un cálculo de redundancia no necesariamente criptográfico sobre el conjunto de los códigos de operación y de las direcciones ejecutadas desde la última inicialización efectuada. A manera de ejemplo, se pueden utilizar los algoritmos del tipo CRC (verificación redundancia cíclica (cyclic redundancy check, en inglés) . Es posible con la invención obtener el valor de comparación por el cálculo de los valores intermediarios a medida que los datos comprendidos en las instrucciones respectivas son obtenidos en el curso de la ejecución de éstas. Con este procedimiento, no es necesario salvaguardar cada valor extraído de las instrucciones del conjunto de instrucciones considerado. En efecto, a la terminación de un cálculo del valor intermediario, solo cuenta este valor intermediario para calcular el próximo valor intermediario (o el valor último que corresponde al valor de verificación) , y el dato que ha permitido engendrar ya no se toma en consideración. Esta disposición permite economizar el espacio de memoria al nivel de los medios de puesta en operación de la invención. En una variante, es posible salvaguardar cada dato comprendido en las instrucciones del conjunto de instrucciones consideradas a medida que éstas son ejecutadas, y no efectuar el cálculo del valor de verificación solamente al momento necesario, por ejemplo al momento de la etapa de verificación. La invención se refiere también a un dispositivo de supervisión del desarrollo de la ejecución de una serie de instrucciones de un programa informático, caracterizado porque incluye los medios para analizar la secuencia de instrucciones transmitidas hacia el procesador, destinado a ejecutar el programa supervisado y los medios para verificar el resultado de este análisis con los datos de referencia registrados con dicho programa. El dispositivo de supervisión conforme a la presente invención incluye ventajosamente un registro que permite registrar los resultados intermediarios en el cálculo del valor de verificación. Este registro puede ser adaptado para no retener solamente el último resultado intermediario en curso. Este puede ser previsto para permitir el registro de un valor predeterminado o una puesta a cero bajo el comando de programa en curso de ejecución. De esta manera, el programa puede ordenar una condición inicial al nivel del contenido del registro en cada nueva puesta en operación del procedimiento de supervisión, e interviniendo éste por ejemplo después de un salto en el programa. El dispositivo de supervisión puede estar integrado en un dispositivo de ejecución del programa a supervisar, o en un dispositivo programado que contiene el programa a supervisar. La invención se refiere igualmente a un dispositivo de ejecución del programa, por ejemplo un ordenador, un aparato con microprocesador o a un microcontrolador tal como un lector de tarjeta de microcircuito o de programa registrado sobre una tarjeta de formato PCMCIA, destina a ejecutar una serie de instrucciones de un programa informático, caracterizado porque incluye los medios para analizar la secuencia de instrucciones transmitidas para la ejecución, y los medios para verificar que el resultado de este análisis corresponda con los datos de referencia registrados con el programa. La invención se refiere también a un dispositivo programado destinado a funcionar con el dispositivo de ejecución del programa anteriormente indicado, y que incluye una serie de instrucciones, caracterizado porque comprende además los datos de referencia pre-establecidos , en función de los datos contenidos en las instrucciones, y destinados a permitir una verificación de la secuencia de instrucciones analizadas por el dispositivo de ejecución del programa anteriormente indicado. El dispositivo programado, por ejemplo una tarjeta de microcircuito o un órgano de control del mecanismo, tal como un sistema de frenado ABS, puede integrar el programa a supervisar en una memoria fija del tipo ROM. Los datos de referencia son ventajosamente registrados bajo la forma de uno o varios valores precableados, fijos en la memoria, una vez para todos al momento del enmascaramiento del código. La presente invención se refiere también a un dispositivo de programación de un dispositivo de ejecución de un programa destinado a funcionar en asociación con el dispositivo programa anteriormente indicado, caracterizado porque éste comprende los medios para inscribir, en al menos un sitio predeterminado de una secuencia de instrucciones del programa, un valor de referencia calculado de acuerdo a un modo preestablecido a partir de los datos contenidos en cada instrucción, de un conjunto de instrucciones donde se desea supervisar la ejecución. Finalmente, la invención se refiere también a una máquina virtual o interprete, que interpreta un código crítico, caracterizado porque pone en operación el procedimiento de supervisión anteriormente indicado para la ejecución de este código crítico. Los dispositivos anteriormente indicados de supervisión, de ejecución del programa, o de programación o incluso los dispositivos equipados de tales programas pueden ser equipados de todos los medios necesarios para realizar los diferentes aspectos opcionales posibles del procedimiento de supervisión anteriormente indicado. A manera de ejemplo, se puede considerar en una aplicación ligada a una tarjeta de microcircuito, agregar a un microprocesador que ejecuta un programa, un componente material adicional que sirve de unidad de supervisión. El papel de esta unidad es el de supervisar que los saltos no previstos por el creador del programa no puedan tener lugar en el curso de la ejecución. En este ejemplo, la unidad de supervisión podrá estar compuesta de registros donde el contenido constituye en todo momento el estado interno de la unidad de supervisión. Una entrada especifica de la unidad de supervisión permite su puesta a cero (RAZ) , típicamente borrando el contenido de la unidad de supervisión. Esta función puede ser activada en todo momento por el programa ejecutado y puede, por ejemplo, realizarse por la adición de un nuevo código de operación en el ensamblador (por ejemplo "clr us") o manipulando un bitio dado en la memoria del componente protegido (por ejemplo; setb 3, service) . En este ejemplo de aplicación, la unidad de supervisión compara su estado interno con una cadena dada proporcionada por el programa protegido. Esto puede ser por ejemplo realizado recopilando en el interior de la unidad de supervisión (con la ayuda de un bucle "ida-sta") el valor al cual el programa desea comparar el estado interno. Una vez que termina el recopiado del valor, la unidad de supervisión lo compara a su estado interno y adopta el comportamiento siguiente si el estado de la unidad de supervisión es igual al valor presentado por el programa protegido, toma la ejecución normalmente, si no la ejecución del programa es detenida (forzando al usuario a realizar una puesta a cero de la tarjeta) , eventualmente ratificando previamente un contador de falsas ejecuciones en una memoria no volátil del tipo EPROM que tiene por efecto el bloqueo definitivo de la tarjeta si su valor sobrepasa un límite razonable Ipj 4) . La unidad de supervisión puede guardar de manera permanente un recorte criptográfico de los códigos de instrucciones y las direcciones ejecutadas desde su última puesta a cero. El mecanismo de supervisión puede ser adaptado para la interpretación del código en una máquina virtual (de "byte código" Java, por ejemplo) . El recopilador puede calcular el valor de recorte de una porción del byte código, integrarlo en un atributo de una estructura conocida bajo el término anglosajón "class file" (archivo de clase) producido, y agregar al byte código generado de los códigos conocidos bajo el término anglosajón de "opcodes" suplementarios que corresponde a la puesta a cero de la unidad de supervisión y al llamado de la función de verificación. La máquina virtual hará las veces de unidad de supervisión y cuando ésta encuentre el opcode de verificación, verificará el valor de recorte actual con relación al valor de recorte teórico contenido en el archivo de clase. La invención será comprendida mejor y las ventajas y características surgirán más claramente a la lectura de la descripción siguiente de una modalidad de realización preferida, dada puramente a manera de ejemplo, por referencia a los dibujos anexos en los cuales : la Figura 1, ya presentada, es un esquema de bloques simplificado que va a explicar el papel de un contador de instrucciones en el desarrollo de la ejecución de un programa, - la Figura 2 es un esquema de bloque simplificado de un dispositivo de ejecución del programa, que va a explicar el principio de funcionamiento de una unidad de supervisión de acuerdo a una primera modalidad de realización de la invención, - la Figura 3 es un organigrama del procedimiento de supervisión de acuerdo a la invención, la Figura 4 es un organigrama de una variante del procedimiento de supervisión de acuerdo a la invención; - la Figura 5 es un esquema de bloques simplificado de un dispositivo de ejecución del programa que va a explicar el principio del funcionamiento de una unidad de supervisión de acuerdo a una segunda modalidad de realización de la invención, - la Figura 6 es un organigrama del procedimiento de supervisión de acuerdo a la invención, adaptado a la segunda modalidad de realización, y la Figura 7 representa de manera esquemática los conjuntos de instrucciones de un programa con ramificación que contiene además las instrucciones específicas al procedimiento de supervisión. El principio de la invención será explicado por referencia al esquema de la Figura 1, que lleva las mismas referencias, y no serán descritos nuevamente para fines de concisión. La Figura 2 representa los elementos de base de un dispositivo de ejecución del programa 20 en el sentido largo. Se puede tratar de un ordenador destinado a ejecutar un programa en un lenguaje de alto nivel, de un microprocesador o de un microcontrolador, funcionando estos últimos a partir de programas de lenguaje de bajo nivel. , A manera de ejemplo, el dispositivo de ejecución 20 puede ser un lector de tarjetas de microcircuito destinado a administrar las transacciones bancarias, telefónicas, o de otros servicios. El programa a verificar está pues contenido materialmente en la tarjeta de microcircuito. Con el fin de concretar la descripción siguiente, se supondrá que el dispositivo de ejecución del programa 20 está basado en un procesador 4 del tipo microcontrolador . El procesador 4 ejecuta una porción del programa almacenado en un registro de instrucciones 2 bajo la forma de microcódigos . La parte operacional de esta porción del programa comprende una secuencia de n instrucciones (donde n es un número entero superior a 1) designadas respectivamente Inst.l, Inst.2, Inst .3 , ..., Inst.n. Los microcódigos que constituyen las instrucciones se presentan bajo la forma de valores numéricos, que pueden ser decimales o hexadecimales . Un valor de ese tipo puede de este modo ser considerado de dos formas distintas, cada una portadora de un dato, primeramente como la instrucción que ésta representa para el procesador (en cuyo caso éste será designado "valor código") y en segundo lugar en calidad de simple valor numérico susceptible al tratamiento aritmético (en cuyo caso éste será designado "valor numérico" Vinst . ) . Por ejemplo, la primera instrucción Inst .1 es igual a 40. Esta cifra es un código que corresponde a una instrucción reconocida por el procesador, pero posee la misma estructura binaria que el valor numérico 40. Alguna de las instrucciones Inst.l, Inst.2, Inst.3, ... , Inst.n ordena un salto hacia otra instrucción fuera de la secuencia lineal de ejecución de las instrucciones. De este modo, el desarrollo normal y previsto de esta porción del programa requiere obligatoriamente la ejecución de cada una de las instrucciones en sucesión, comenzando por la instrucción Inst.l y terminando con la instrucción Inst.n. De tal suerte, el contador de instrucciones 6 (ya descrito) coloca su señalador 8 sucesivamente en la dirección de cada una de las instrucciones Inst.l a Inst.n en el registro de instrucción 2 inmediatamente después que éstas deben ser cargadas en el procesador 4. De acuerdo a la presente invención, el dispositivo de ejecución del programa 20 incluye una unidad de supervisión 22 que permite verificar que cada una de las instrucciones Inst .1 a Inst.n haya sido bien cargada hacia el procesador 4 con miras a su ejecución. Esta está funcionalmente unida entre el registro de instrucciones 2 y el procesador 4. De este modo, todas las instrucciones leídas del registro de instrucciones 2 transitan a través de la unidad de supervisión 22 antes de llegar al procesador 4. En este ejemplo, la unidad de supervisión 22 es descrita como integrada al dispositivo de ejecución del programa 20. No obstante, la unidad de supervisión 22 puede siempre también ser integrada con el dispositivo que incluye el programa a supervisar, estando por ejemplo incorporada en una tarjeta de microcircuito donde el programa que ésta contiene en la memoria es para supervisar, sin que esto cambie los principios que serán descritos más adelante. Como se explicará de manera más detallada más adelante, la unidad de supervisión 22 incluye un registro 24 destinado a almacenar provisionalmente un dato comprendido entre una instrucción Inst.l, Inst.2, Inst.3,..., Inst.n y un calculador 26 destinado a ejecutar una operación sobre este dato. La puesta en operación de la unidad de supervisión demanda la unión de dos nuevas instrucciones a las n instrucciones Inst.l, Inst.2, Inst.3,..., Inst.n del programa: una primera instrucción de supervisión Inst .0 colocada antes de la primera instrucción Inst .1 del programa y una segunda instrucción de supervisión Inst.n+1 colocada enseguida de la última instrucción Inst.n del programa. Luego del desarrollo de la ejecución de las n instrucciones del programa, el contador de instrucciones 6 es inicialmente comandado para colocar su señalador 8 en la dirección de la primera instrucción de supervisión Inst . 0. Esta instrucción ordena a la unidad de supervisión inicializar un valor de recorte VH contenida en su registro 24. En el ejemplo, la instrucción Inst.O ordena simplemente al registro 24 poner el valor VH=0. Esto no es transmitido hacia el procesador 4. Enseguida, el dispositivo de ejecución del programa 20 pasa una fase de ejecución de instrucciones 5 Inst.l, Inst.2, Inst.3,..., Inst.n del programa propiamente dicho. Cada instrucción leída a partir del registro de instrucciones 2 es transmitido en primer lugar a la unidad de supervisión 22 donde ésta es considerada como valor numérico. 10 El valor numérico de cada instrucción es • sometido por el calculador 26 a un algoritmo de recorte, tal como el recorte SHA-1 precisado por la norma federal de recorte. El resultado VHi de la operación de recorte ligada a una instrucción Inst . i 15 (donde i es un número entero de 1 a n) es inscrito en el registro 24. Este valor VHi será de base para la operación de recorte con la instrucción siguiente Inst . i+1. El • resultado del recorte VHi+1 obtenido de este modo para 20 la instrucción Inst.i+1 es luego inscrito en lugar del resultado del recorte VHi obtenido anteriormente. Este procedimiento es proseguido por cada una de las instrucciones Inst.l, Inst.2, Inst .3 , ... , Inst.n que transitan por la unidad de supervisión 22.
Cuando la última instrucción Inst.n es ejecutada, la segunda instrucción de supervisión Inst. n+1 es cargada en la unidad de supervisión 22. Esta instrucción incluye dos componentes. Un valor de referencia Vref y un comando u orden, destinado al calculador 26, de comparación de este valor de referencia Vref con el valor del último resultado de recorte inscrito en el registro 24. Este último valor corresponde pues al resultado de recorte VHn obtenido a partir del valor numérico de la instrucción Inst . n (igual a 36 en la figura) y del resultado de recorte VHn-1 obtenido para la instrucción Inst.n-1 precedente. De este modo, en respuesta a la segunda instrucción de supervisión Inst.n+1 el calculador 26 compara el valor VHn en el registro 22 con el valor de referencia Vref especificado en esta instrucción de supervisión. El valor de referencia Vref es determinado luego de la preparación del programa registrado con el fin de corresponder al valor alcanzado VHn para el resultado de recorte sucesivo de los valores de instrucciones Inst.l, Inst.2, Inst.3,..., Inst.n. Este valor Vref puede ser calculado de antemano utilizando en el mismo procedimiento de recorte sucesivo de las instrucciones Inst.l, Inst.2, Inst .3 , ... , Inst.n, que es utilizado por la unidad de supervisión 22. De preferencia, el valor Vref es cableado en una memoria fija con el fin de no poder ser modificada por un acto de mala intención. Si la unidad de supervisión 22 constata, ejecutando la instrucción de supervisión Inst.n+1, que existe identidad entre los valores Vref y VHn anteriormente indicados, se concluye que todas las instrucciones Inst.l, Inst.2, Inst .3 , ... , Inst.n han sido bien transmitidos hacia el procesador 4 con miras a su ejecución. Si por el contrario, la unidad de supervisión 22 constata que no existe identidad entre los valores Vref y VHn, se concluye que o bien todas las instrucciones Inst.l, Inst.2, Inst.3,..., Inst.n no han sido recibidas y transmitidas por la unidad de supervisión, o bien que éstas no han estado en el orden secuencial previsto. En este caso, se puede prever una acción que considera alertar al usuario o al titular del programa, o impedir que el programa prosiga. En el ejemplo, una acción de este tipo es transmitida de la unidad de supervisión 22 hacia el procesador 4 bajo la forma de un comando u orden de interrupción del programa Int .
El procedimiento de supervisión tal como se realiza por los medios de la Figura 2 será ahora descrito por referencia al organigrama representado en la Figura 3. Se supone que el programa o la parte del programa a supervisar a sido preparado correctamente para el procedimiento de supervisión por la incorporación de la primera y segunda instrucciones de supervisión respectivamente al comienzo y al final. En el estado inicial, la unidad de supervisión 22 es colocada sobre una rutina de comienzo de supervisión 30, donde la primera etapa 32 está a la espera de la primera instrucción de supervisión (Ins .0) . Cuando la primera instrucción de supervisión Inst .0 es recibida, la unidad de supervisión 22 efectúa una etapa 34 de inicialización (por puesta a cero) de un portador de instrucciones y de registro 24. La puesta a cero del registro 24 es una manera de colocar un valor "semilla" en este registro para desencadenar una secuencia de operaciones de recorte, como se explicará más adelante. Estas operaciones pueden ser ordenadas directamente por la primera instrucción de supervisión o ser simplemente desencadenadas por esta a partir de una rutina asociada a la unidad de supervisión 22.
En este primer caso, la puesta a cero puede realizarse por la adición de un nuevo código de operación en el ensamblador (por ejemplo "clr us"), o manipulando un bitio dado en la memoria del dispositivo de ejecución del programa 20. Una orden de este tipo puede ser "setb 3, service". Después de la etapa de inicialización, la unidad de supervisión 22 incrementa el contador de instrucciones de una unidad (colocando entonces este contador a n=l) (etapa 36) . Enseguida, la primera instrucción Inst . 1 del programa o de la parte del programa bajo supervisión es leída del registro de instrucciones 2 (etapa 38) . Como se explica anteriormente, esta instrucción es considerada por la unidad de supervisión 22 puramente en calidad de valor numérico que permite las operaciones aritméticas. En el ejemplo de la Figura 2, este valor es de 40. El valor numérico de esta primera instrucción Inst. 1 es entonces sometido a una operación de recorte con el valor contenido en el registro 24 (etapa 40) .
En el caso de la primera instrucción, este último valor es el valor de inicialización, es decir 0. La operación de recorte, bien conocida por sí misma, consiste aquí en hacer actuar sobre el valor de instrucción n considerado, un operador matemático f(VHn-l, Vinst.n), donde VHn-1 es el resultado de una operación de recorte precedente (o el valor de inicialización en el caso de la primera instrucción) registrado en el registro 24 y Vinst.n es el valor numérico de la instrucción n considerada. El resultado VHn de esta operación de recorte es enseguida registrado en el registro 24 en lugar del resultado VHn-1 precedente (etapa 42) . Se nota que este procedimiento de reactualización del contenido del registro en cada operación de recorte, permite guardar de manera permanente un recorte criptográfico de los códigos de instrucciones y de las direcciones ejecutadas desde la última inicialización. Al final de esta operación de recorte, la instrucción es transmitida hacia el procesador 4 con miras a su ejecución (etapa 44) . Enseguida, la unidad de supervisión 22 determina si el programa o la parte del programa a supervisar contiene otra instrucción a ejecutar (etapa 46) . Siendo este el caso, el procedimiento efectúa un reciclamiento Bl hacia la etapa 36 de incremento de n a n+1. El valor de la próxima instrucción (Inst. 2) será entonces leído del registro de instrucciones 2 y sometido a la operación de recorte de la misma manera que para la instrucción Inst .1. Solamente el recorte se efectúa esta vez con una parte del valor numérico de la instrucción Inst.2 y el resultado obtenido luego de la operación del recorte precedente, es decir el valor VH1 (n aquí es igual a 2) que está entonces en el registro 24. Las etapas 42 a 46 del procedimiento se efectúan de la misma manera que para la primera instrucción. De tal suerte, el conjunto de las etapas 36 a 46 es proseguido en circuito para cada instrucción Inst.l, Inst.2, Inst.3,..., Inst.n leído del registro de instrucciones 2 , con el recorte que se opera, para una instrucción Inst . i (donde i es un número entero de 1 a n) con el valor VHni-1 en el registro 24 y el valor Vinst . i . Una vez que todas las instrucciones Inst.l, Inst.2, Inst.3,..., Inst.n han sido tratados de este modo por la unidad de supervisión 22, ésta recibe la segunda instrucción de supervisión Inst.n+1, siguiendo ésta la última instrucción Inst. n del programa o la parte del programa supervisado. Esta segunda instrucción de supervisión ordena a la unidad de supervisión 22 extraer el valor de referencia Vref del programa (etapa 48) y comparar el contenido del registro 24 a este valor Vref (etapa 50) . Este comando u orden puede ser realizado con ayuda de un bucle o circuito "ida-sta" . Se recuerda que, por ejecución de los bucles o circuitos sucesivos de las etapas 36 a 46, el valor contenido en el registro 24 en esta etapa es el resultado VHn del recorte realizado con el resultado VHn-1, del recorte precedente, y del valor numérico de la instrucción n (igual a 36 en el ejemplo de la Figura 2) . El valor de referencia Vref ha sido previamente determinado al momento de la preparación del programa conociendo las operaciones de recorte, con el fin de que sean iguales a lo que la unidad de supervisión deberá hacer en cuanto al valor VHn, si todas las instrucciones Inst.l, Inst.2, Inst .3 , ... , Inst.n han sido transferidas también hacia el procesador 4. De este modo, el resultado de la comparación permite controlar el buen desarrollo de las instrucciones Inst . 1, Inst. 2, Inst . 3,..., Inst.n: si VHn igual Vref (etapa 52), se supone que todas las instrucciones han sido efectivamente transferidas hacia el procesador 4. La operación de supervisión es pues terminada en lo que concierne al programa o la porción del programa que contiene las instrucciones Inst.l, Inst.2, Inst.3,..., Inst.n. El procedimiento de supervisión regresa entonces a la fase de comienzo 30 en espera de una nueva primera instrucción de supervisión. Si por el contrario la etapa de comparación 50 hace aparecer que no existe identidad entre los valores comparados (VHn?Vref) , se supone que todas las instrucciones Inst.l, Inst.2, Inst .3 , ... , Inst.n no han sido transferidas hacia el procesador 4, o no han sido transferidas en un buen orden (etapa 54) . En efecto, el resultado de una sucesión de operaciones de recorte depende del orden en el cual éstas han sido efectuadas. En este caso, la unidad de supervisión 22 ordena una acción (etapa 56) , tal que la interrupción del programa y/o el registro debido al hecho de que el programa no es desarrollado correctamente. Una variante del procedimiento de supervisión anteriormente indicado será ahora descrito con referencia al organigrama de la figura 4. De acuerdo a esta variante, en lugar de efectuar una operación de recorte al momento de la recepción de cada nueva instrucción por la unidad de supervisión 22, se realiza el conjunto de las operaciones de recorte solamente después de la recepción de la segunda instrucción de supervisión. En el organigrama de la figura 4, las etapas que son idénticas a aquellas anteriormente descritas por referencia en la figura 3 llevan las mismas referencias y no serán descritas nuevamente para fines de concisión. El procedimiento de supervisión se desarrolla como para el caso precedente en lo que concierne a las etapas 30 a 38 (figuras 3 y 4) . Después de lá etapa 38 de lectura del valor de instrucción Vins.n del registro de instrucciones 2, la unidad de supervisión 22 procede al registro de este valor (etapa 39) . Este registro puede efectuarse en un registro interno del calculador 26, en una sección dedicada del registro 24, en una memoria específica (no representada) de la unidad de supervisión 22, o incluso en una memoria exterior a la unidad de supervisión 22, desde luego que ésta sea accesible por la misma. Enseguida, la unidad de supervisión 22 procede a las etapas 44 y 46 anteriormente descritas. Se nota que la etapa 39 de registro de los valores Vinst.n está en el bucle o circuito Bl que une la etapa 46 a la etapa 36 de incremento de n por una unidad, de tal suerte que cada uno de los valores Vinst.n es así registrado hasta la detección de la segunda instrucción de supervisión en la etapa 46.
Cuando esta segunda instrucción aparece, la unidad de supervisión 22 lee el valor de referencia Vréf (etapa 48) y efectúa en la etapa 49 el recorte según el mismo algoritmo que para las etapas precedentemente descritas 40 y 42 de la figura 3, basándose sobre el conjunto de los valores Vinst. previamente registrado. El valor final del recorte de VHn es entonces el mismo que en el caso del procedimiento de la figura 3. Se notará que es posible intervenir el orden en las etapas 48 y 49. Las etapas de comparación 50 y aquellas que siguen son idénticas a aquellas de la figura 3. La figura 5 es un esquema de bloques simplificado de la unidad de supervisión 22 de acuerdo a una segunda modalidad de realización de la invención. Su integración en el dispositivo de ejecución del programa 20 es la misma que la primera modalidad de realización descrita por referencia a las figuras 2 y 3 en lo que concierne a su funcionamiento con el contador de instrucciones 6, en el registro de instrucciones 2 y el procesador 4, y no será repetido para fines de concisión . La unidad de supervisión 22 de acuerdo a la segunda modalidad de realización se distingue de aquella de la primera modalidad de realización esencialmente por el hecho de que éste incluye además una memoria 60 que registra el número de veces que la ejecución de una serie de instrucciones Inst .1-Inst .n no se desarrolla correctamente de acuerdo a los criterios explicados por referencia a las figuras 3 y 4. En el ejemplo, la memoria 60 es materializada bajo la forma de la memoria fija (no volátil) con contenido borrable eléctricamente (como es conocido comúnmente por la denominación anglo-sajona EEPROM) . La memoria 60 está conectada funcionalmente al calculador 26 de manera para que éste registre un valor de conteo VC incrementado de una unidad en cada acto de una ejecución incorrecta en la serie supervisada de instrucciones. Este valor de conteo VC permite de este modo detectar el número de desarrollos incorrectos de la serie de instrucciones y actuar en consecuencia, por ejemplo invalidando toda futura utilización del dispositivo que contiene el programa (por ejemplo una tarjeta de microcircuito) si este número cruza un valor de umbral . El organigrama de la figura 6 da un ejemplo de utilización del valor de conteo VC para controlar el dispositivo de la ejecución del programa. Este ejemplo incluye el conjunto de etapas 30 a 54 del organigrama de la figura 3 o las etapas análogas de la figura 4. Cuando la unidad de supervisión 22 detecta en la etapa 54 una ejecución no prevista de las instrucciones Inst .1-Inst-n, seguida de la etapa de comparación 52, la unidad de cálculo 26 incrementa el valor del conteo VC en la memoria 60, inicialmente igual a 0, por una unidad (etapa 62) . Enseguida, ésta verifica si el valor de conteo VC incrementado así ha alcanzado un valor de umbral VCumbral predeterminado (etapa 64) . Este valor de umbral VCumbral corresponde al número de veces que se admite que la ejecución no prevista de las instrucciones Inst .1-Inst . n puede sobrevenir en el dispositivo programado antes de tomar las medidas definitivas para enfrentar una falla tal. A manera de ejemplo, en el contexto de una tarjeta de microcircuito, se puede admitir un número moderado de tales deficiencias (por ejemplo 3 ó 4) a beneficio de la duda que podría tratarse de una avería momentánea relacionada al lector (dispositivo de ejecución del programa 20) , pero que más allá de este número, se debe considerar que la tarjeta ha sido alterada, ya sea accidentalmente, o bien por mala intención. En este caso de puesta en operación, se puede también prever el inscribir el valor VC en el dispositivo programado (tarjeta) con el fin de guardar una historia de estas ejecuciones fallidas, ligadas físicamente al dispositivo del programa. Si el valor de conteo VC es inferior al umbral VCumbral, la unidad de supervisión 22 establece el comando de interrupción Int. tal como se describe anteriormente con un simple mensaje de alerta destinado al usuario y/o al sistema de exploración (etapa 66) y lo transmite al procesador 4 (etapa 68) . Por el contrario, si el valor de conteo VC alcanza el valor de umbral Vcumbral, la unidad de supervisión 22 establece entonces el comando de interrupción Int., tal como se describe anteriormente con el fin de prohibir toda utilización futura del dispositivo programado que contiene las instrucciones ejecutadas de manera no prevista (etapa 70) y la transmite la procesador (etapa 68) . En este caso, no será posible reutilizar este dispositivo solamente más que después de haber re-programado la memoria 60. En el caso donde esta memoria 60 está bajo la forma de EEPROM u otra memoria no volátil, una re-programación de este tipo es muy difícil de realizar de manera indirecta . Se notará que el comando Int . de interrupción de programa combinado de una transmisión de mensajes de alerta o de comando de invalidación de uso futuro, puede ser ejecutado ya sea a nivel del procesador o bien a nivel de unidad de supervisión 22. Se describirá ahora con referencia a la figura 7 cómo la unidad de supervisión 22 de acuerdo a la presente invención puede ser puesta en operación para la supervisión de un programa que prevé saltos o ramificaciones . En el ejemplo de la figura 7, el dispositivo de ejecución del programa 20 incluye en el registro de instrucciones 2 un programa o una parte de programa destinado al procesador 4, constituido de tres conjuntos de instrucciones: un primer conjunto de instrucciones Inst.EIl-1 a Inst.Eil-j (donde j es un número entero >1) , donde la última instrucción EIl-j es un código que comanda la ramificación condicional hacia uno o el otro de los otros dos conjuntos que siguen, un segundo conjunto de instrucciones Inst.EI2-l a Inst.EI2-k (donde k es un número entero >1) ; la ejecución de la primera instrucción Inst.EI2-l de este conjunto sucede a la ejecución de la instrucción de ramificación condicional EIl-j si la primera de las dos condiciones poseídas por ésta es satisfecha; y un tercer conjunto de instrucciones Inst.EI3-l a Inst.EI3-l (donde 1 es un número entero >1) ; la ejecución de la primera instrucción Inst.E13-l de este conjunto sucede a la ejecución de la instrucción de ramificación condicional EIl-j si la segunda de las dos condiciones poseídas por ésta es satisfecha . Los tres conjuntos de instrucciones EI1, EI2 y EI3 no incluyen saltos en el interior de su secuencia de instrucciones. (En el caso del primer conjunto de instrucciones, el salto condicional para la instrucción EIl-j es al final de la secuencia) . De este modo, para cada uno de los tres conjuntos de instrucciones, todas las instrucciones son previstas para ser ejecutadas secuencialmente a partir de la primera. Al momento de la preparación, del programa, se agrega en la cabeza y en la cola de cada conjunto de instrucciones EI1, EI2 y EI3 respectivamente, la primera instrucción de supervisión y la segunda instrucción de supervisión descritas anteriormente con referencia a las figuras 2 a 6. La supervisión del programa o de la parte del programa compuesta por los conjuntos EI1, EI2 y EI3 procede luego como sigue.
La unidad de supervisión 22 se coloca primeramente en fase desde el comienzo de la supervisión (etapa 30, figura 3). El desarrollo comienza por la ejecución del primer conjunto de instrucciones EI1. La primera instrucción de supervisión colocada en la cabeza o parte superior de este conjunto será primeramente cargada en la unidad de supervisión 22. En respuesta a esta instrucción, la unidad de supervisión inicializa su contador de instrucciones y su registro 24 de valor de recorte VH (etapa 34, figura 3) y procede a la rutina de recorte para cada instrucción Inst.EIl-1 a Inst.EIl-j del primer conjunto de instrucciones de acuerdo a las etapas 36 a 46 de la figura 3. La última instrucción EIl-j del conjunto que comanda la ramificación es de este modo igualmente sometida al recorte por la unidad de supervisión 22 antes de ser transmitida al procesador 4. La instrucción siguiente es la segunda instrucción de supervisión (etapa 46, figura 3) en la cola del primer conjunto de instrucciones EI1, que provoca la fase de comparación entre el último valor de recorte registrado en el registro 24 con el valor de referencia Vref asociado a esta segunda instrucción.
Si se detecta en la etapa 50 de comparación (figura 3) que el último valor de recorte registrado de este modo no corresponde al valor de referencia Vref, la unidad de supervisión 22 procede a las etapas de interrupción del programa 54 y 56 (figuras 3 ó 4) ó 54 a 70 (figura 6) . De preferencia, se prevé que esta interrupción se produzca antes incluso que el programa haya ejecutado la ramificación condicional. Esto puede ser realizado por ejemplo, asociando a la instrucción de salto con una instrucción de espera de validación que vienen de la unidad de supervisión, empleando las técnicas de programación conocidas. Si se detecta en la etapa 50 (figura 2) de comparación que el último valor de recorte registrado de este modo corresponde efectivamente al valor de referencia Vref, la unidad de supervisión autoriza la ejecución de la ramificación condicional determinada por la última instrucción EIl-j del conjunto. El programa prosigue luego hacia uno u otro del segundo o tercer conjuntos de instrucciones, de conformidad a las condiciones de ramificación poseídas por esta última instrucción. Se supone en el ejemplo que el salto condicional provoca la ramificación hacia el tercer conjunto de instrucciones a ejecutar. En este caso, el contador de instrucciones 6 hace pasar el señalador de instrucciones 8 directamente de la segunda instrucción de supervisión en la cola del primer conjunto de instrucciones EI1, a la primera instrucción de supervisión en la cabeza del tercer conjunto de instrucciones EI3. La unidad de supervisión ejecutará esta nueva primera instrucción re-inicializando el contador de instrucciones y el registro 24. El procedimiento de supervisión para este tercer conjunto de instrucciones es proseguido pues exactamente de la misma manera que para el primer conjunto de instrucciones. De este modo, la unidad de supervisión 22 procederá al recorte sucesivo de cada uno de las instrucciones leídas de este conjunto, comenzando el reporte con el mismo valor "semilla" (que corresponde aquí a cero) que para el primer conjunto. La segunda instrucción de supervisión permite esta vez cubrir un desarrollo no previsto en la ejecución localizada al nivel de este tercer conjunto de instrucciones y proceder al mismo tipo de acción en la etapa 56. Se comprenderá que la explicación dada para el caso de una ramificación hacia el tercer conjunto se aplica de manera rigurosamente análoga en el caso de una ramificación hacia el segundo conjunto de instrucciones luego de la ejecución de la instrucción de ramificación del primer conjunto de instrucciones. Es posible permitir en la unidad de supervisión 22 compatibilizar no solamente el número de desarrollos no previstos en un programa que incluye saltos, sino igualmente los conjuntos de instrucciones independientemente supervisados en los cuales éstos se producen. De este modo, la unidad de supervisión 22 de acuerdo a la segunda modalidad de realización (figura 5) puede registrar en su memoria 60 el conjunto de instrucciones relacionadas por cada interrupción constatada. Es también posible establecer los criterios de invalidación de uso futuro del programa, en función de los conjuntos de instrucciones en los cuales se realizan las interrupciones. Por supuesto, se entenderá que la unidad de supervisión 22 puede ser ya sea materializada separadamente del procesador 4 o integrada funcionalmente a éste último. Finalmente, es claro que todos los aspectos de la invención descritos en términos de procedimiento pueden ser fácilmente comprendidos en términos de medios materiales de su puesta en operación, y viceversa. De igual modo, se comprenderá que la invención descrita cubre igualmente todas las transposiciones evidentes de una modalidad de realización o su variante a otra.

Claims (1)

  1. REIVINDICACIONES 1. Procedimiento de supervisión del desarrollo de la ejecución de una serie lineal de instrucciones de un programa informático, que consiste en analizar la secuencia de instrucciones transmitidas hacia el procesador destinado a ejecutar el programa supervisado, y en verificar el resultado de este análisis por referencia a los datos de referencia registrados con el programa, caracterizado porque los datos de referencia comprenden un valor preestablecido de manera para corresponder al resultado del análisis realizado al momento de procedimiento de supervisión, solamente si todas las instrucciones de la secuencia de instrucciones han sido efectivamente analizadas al momento del desarrollo del programa y porque dicho análisis de la secuencia de instrucciones comprende la extracción de un dato de cada instrucción transmitida hacia el procesador, y un cálculo predeterminado sobre cada dato así extraído, y porque la verificación comprende una comparación del resultado del análisis con los datos de referencia. 2. El procedimiento de conformidad con la reivindicación 1, caracterizado porque la verificación del resultado del análisis es provocada por una instrucción colocada en un sitio predeterminado en el programa a supervisar, conteniendo esta instrucción los datos de referencia relativos a un conjunto de instrucciones donde la ejecución correcta va a ser supervisada . 3. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 2, caracterizado porque cuando las instrucciones del conjunto de instrucciones a supervisar se presenta bajo la forma de un valor, por ejemplo de código registrado bajo la forma hexadecimal o decimal, se efectúa dicho análisis de instrucciones considerando éstas en calidad de valor numérico. . El procedimiento de conformidad con la reivindicación 1, que comprende las etapas que consisten en: al momento de la incorporación al programa a supervisar; incorporar, en al menos un sitio predeterminado de una secuencia de instrucciones del programa, un valor de referencia establecido según una regla predeterminada aplicada sobre los datos identificables en cada instrucción a supervisar; y al momento de la ejecución del programa a supervisar; obtener los datos identificables en cada instrucción recibida con miras a su ejecución; aplicar la regla predeterminada sobre los datos identificables obtenidos así, para establecer un valor de verificación, y verificar que este valor de verificación corresponda efectivamente al valor de referencia registrado con el programa. 5. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 4, caracterizado porque comprende además una etapa de interrupción del desarrollo del programa supervisado, si el análisis revela que el programa supervisado no se desarrolla de la manera prevista. 6. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 5, caracterizado porque comprende además una etapa de invalidación para el uso futuro del dispositivo que comprende el programa supervisado, si dicho análisis revela un número predeterminado de veces que el programa supervisado no es desarrollado de la manera prevista. 7. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 5, caracterizado porque el conjunto de instrucciones a supervisar no incluye saltos en su desarrollo previsto. 8. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 5, caracterizado porque cuando el programa o la porción de programas a supervisar prevé al menos un salto, se aplica el procedimiento de supervisión separadamente sobre los conjuntos de instrucciones de este programa que no incluyen saltos entre dos instrucciones sucesivas. 9. El procedimiento de conformidad con la reivindicación 8, caracterizado porque cuando el programa a supervisar incluye una instrucción que da lugar a un salto dependiente de los datos manipulados, se pone en operación el procedimiento de supervisión separadamente para un conjunto de instrucciones que precede el salto, y para al menos un conjunto de instrucciones que sucede al salto. 10. El procedimiento de conformidad con la reivindicación 9, caracterizado porque para un conjunto de instrucciones que prevén un salto, se integra a este conjunto la instrucción que comanda este salto para fines de análisis apuntando a obtener el valor de verificación de este conjunto de instrucciones, y se verifica también el buen desarrollo de este conjunto de instrucciones antes de ejecutar la instrucción del salto . 11. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 10, caracterizado porque se reinicializa el análisis antes de cada nueva supervisión de una secuencia o de un conjunto de instrucciones a supervisar. 12. El procedimiento de conformidad con la reivindicación 11, caracterizado porque la reinicialización del análisis en cada nueva supervisión consisten en borrar o reemplazar un valor de verificación obtenido al momento de un análisis precedente . 13. El procedimiento de conformidad con la reivindicación 11 ó 12, caracterizado porque la reinicialización del análisis de supervisión es comandada por el programa protegido mismo. 14. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 13, caracterizado porque el análisis produce un valor de verificación obtenido en calidad de último valor de una serie de valores que se hace evolucionar sucesivamente con el análisis de cada una de las instrucciones aproximadamente analizadas del conjunto de instrucciones, que permiten así contener un estado interno de desarrollo del procedimiento de supervisión y seguir su evolución. 15. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 14, caracterizado porque el análisis consiste en calcular, para cada instrucción considerada que sucede a una instrucción precedente, el resultado de una operación a la vez sobre un valor obtenido de la instrucción considerada y el resultado obtenido por la misma operación efectuada sobre la instrucción precedente. 16. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 15, caracterizado porque el análisis consiste en aplicar de una manera recursiva una función de recorte sobre los valores obtenidos de cada instrucción supervisada, partiendo de una última inicialización efectuada. 17. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 15, caracterizado porque el análisis consiste en hacer evolucionar un valor de verificación efectuando un cálculo de redundancia no necesariamente criptográfico sobre el conjunto de los códigos de operación y de las direcciones ejecutadas desde la última inicialización efectuada . 18. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 17, caracterizado porque el análisis consiste en obtener un valor de comparación mediante el cálculo de los valores intermediarios sucesivos inmediatamente después que se obtienen los datos de las instrucciones respectivas que sirven para este cálculo durante la ejecución de estas instrucciones . 19. El procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 17, caracterizado porque el análisis comprende una etapa de salvaguarda de cada dato necesario para la verificación, obtenida a partir de las instrucciones del conjunto de instrucciones a supervisar inmediatamente después de que éstas son ejecutadas, y no efectuar un cálculo del valor de verificación a partir de estos datos sino solamente en el momento necesario, una vez que todos los datos necesarios han sido obtenidos. 20. El dispositivo de supervisión del desarrollo de la ejecución de una serie de instrucciones de un programa informático que pone en operación el procedimiento de supervisión de conformidad con cualquiera de las reivindicaciones 1 a 19, caracterizado porque comprende los medios para analizar la secuencia de instrucciones transmitidas hacia el procesador destinado a ejecutar el programa supervisado, y los medios para verificar el resultado de este análisis por referencia a los datos de referencia registrados con dicho programa. 21. El dispositivo de conformidad con la reivindicación 20, adaptado para poner en operación el procedimiento de supervisión de conformidad con cualquiera de las reivindicaciones 1 a 19, caracterizado porque incluye un registro que permite registrar los resultados intermediarios en un cálculo en cadena efectuado por el medio de análisis, para obtener un valor de verificación. 22. El dispositivo de conformidad con la reivindicación 21, caracterizado porque comprende los medios para permitir el registro de un valor predeterminado o una puesta a cero del registro bajo la orden de una instrucción transmitida al momento de la ejecución de un programa a supervisar, por ejemplo en ocasión de un salto en el programa. 23. El dispositivo de conformidad con cualquiera de las reivindicaciones 20 a 22, caracterizado porque comprende un medio de contabilización del número de desarrollos no previstos del programa supervisado, tal como es determinado por el medio de análisis, y los medios para invalidar la utilización futura del programa a supervisar si este número alcanza un umbral predeterminado. 24. El dispositivo de conformidad con cualquiera de las reivindicaciones 20 a 23, caracterizado porque éste está integrado en un dispositivo programado, tal como una tarjeta de microcircuito, que contiene el programa a supervisar. 25. El dispositivo de conformidad con cualquiera de las reivindicaciones 20 a 23, caracterizado porque éste está integrado en un dispositivo de ejecución de programa. 26. El dispositivo de ejecución de programa, destinado a ejecutar una serie de instrucciones de un programa informático, caracterizado porque incluye los medios para analizar la secuencia de instrucciones transmitidas para la ejecución, y los medios para verificar el resultado de este análisis por referencia a los datos de referencia registrados con el programa a supervisar, de conformidad con cualquiera de las reivindicaciones 20 a 23. 27. El dispositivo de ejecución de programa de conformidad con la reivindicación 26, adaptado para poner en operación el procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 21. 28. El dispositivo programado que incluye una serie de instrucciones registradas, caracterizado porque incluye además una memoria fija que contiene los datos de referencia preestablecidos en función de los datos contenidos en las instrucciones, y destinados a permitir una verificación de la secuencia de las instrucciones analizadas de conformidad con cualquiera de las reivindicaciones 1 a 21, el dispositivo está destinado a cooperar con un dispositivo de supervisión de conformidad con cualquiera de las reivindicaciones 20 a 27. 29. El dispositivo de conformidad con la reivindicación 28, caracterizado porque se presenta bajo la forma de una tarjeta de microcircuito. 30. El dispositivo de conformidad con la reivindicación 30 ó 31, caracterizado porque los datos de referencia son registrados bajo la forma del o de los valores precableados fijados en la memoria. 3L. El dispositivo de programación de un dispositivo destinado a ser programado de conformidad con cualquiera de las reivindicaciones 28 a 30, caracterizado porque comprende los medios para inscribir en al menos un sitio predeterminado de una secuencia de instrucciones de programa un valor de referencia, calculado según un modo preestablecido a partir de los datos comprendidos en cada instrucción de un conjunto de instrucciones donde se desea supervisar la ejecución. 32. La máquina virtual o interprete que interpreta un código crítico, caracterizado porque pone en operación el procedimiento de conformidad con cualquiera de las reivindicaciones 1 a 19 para la ejecución de este código crítico.
MXPA01009056A 1999-03-09 2000-01-24 Procedimiento de supervision del desarrollo de un programa. MXPA01009056A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR9902924A FR2790844B1 (fr) 1999-03-09 1999-03-09 Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
PCT/FR2000/000150 WO2000054155A1 (fr) 1999-03-09 2000-01-24 Procede de surveillance du deroulement d'un programme

Publications (1)

Publication Number Publication Date
MXPA01009056A true MXPA01009056A (es) 2002-04-24

Family

ID=9542995

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA01009056A MXPA01009056A (es) 1999-03-09 2000-01-24 Procedimiento de supervision del desarrollo de un programa.

Country Status (10)

Country Link
US (1) US7168065B1 (es)
EP (1) EP1161725B1 (es)
JP (1) JP4172745B2 (es)
CN (1) CN1350675A (es)
AT (1) ATE232616T1 (es)
AU (1) AU3058900A (es)
DE (1) DE60001393T2 (es)
FR (1) FR2790844B1 (es)
MX (1) MXPA01009056A (es)
WO (1) WO2000054155A1 (es)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10148157B4 (de) * 2001-09-28 2006-05-18 Infineon Technologies Ag Programmgesteuerte Einheit
DE10156394A1 (de) 2001-11-16 2003-06-12 Giesecke & Devrient Gmbh Kontrollierte Programmausführung durch einen tragbaren Datenträger
US20030149887A1 (en) * 2002-02-01 2003-08-07 Satyendra Yadav Application-specific network intrusion detection
US7533412B2 (en) 2002-04-23 2009-05-12 Stmicroelectronics S.A. Processor secured against traps
FR2841015A1 (fr) * 2002-06-18 2003-12-19 St Microelectronics Sa Controle d'execution d'un programme
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
EP1460546A1 (fr) * 2003-03-18 2004-09-22 SCHLUMBERGER Systèmes Procédé de sécurisation de l'exécution d'un programme dans un ensemble électronique contre les attaques par introduction d'erreurs
DE10340411B4 (de) 2003-09-02 2005-10-13 Infineon Technologies Ag Vorrichtung und Verfahren zur sicheren Ausführung eines Programms
US7424709B2 (en) * 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
EP1538509A1 (fr) * 2003-12-04 2005-06-08 Axalto S.A. Procédé de sécurisation de l'éxécution d'un programme contre des attaques par rayonnement
JP4282472B2 (ja) * 2003-12-26 2009-06-24 株式会社東芝 マイクロプロセッサ
FR2864655B1 (fr) * 2003-12-31 2006-03-24 Trusted Logic Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution
DE102004007614A1 (de) * 2004-02-17 2005-09-01 Giesecke & Devrient Gmbh Datenträger mit Ablaufdiagnosespeicher
US7584386B2 (en) 2004-04-21 2009-09-01 Stmicroelectronics Sa Microprocessor comprising error detection means protected against an attack by error injection
WO2006009081A1 (ja) * 2004-07-16 2006-01-26 Matsushita Electric Industrial Co., Ltd. アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法
US20060047955A1 (en) * 2004-08-30 2006-03-02 Axalto Inc. Application code integrity check during virtual machine runtime
US8364792B2 (en) * 2005-03-09 2013-01-29 Vudu, Inc. Method and system for distributing restricted media to consumers
US7873947B1 (en) * 2005-03-17 2011-01-18 Arun Lakhotia Phylogeny generation
FR2883998A1 (fr) * 2005-04-05 2006-10-06 St Microelectronics Sa Coprocesseur securise comprenant un circuit de detection d'un evenement
FR2884000A1 (fr) 2005-04-05 2006-10-06 St Microelectronics Sa Coprocesseur securise comprenant des moyens pour empecher l'acces a un organe du coprocesseur
EP1717704A3 (fr) * 2005-04-20 2011-07-20 St Microelectronics S.A. Protection du déroulement d'un programme exécuté par un circuit intégré
FR2886027A1 (fr) * 2005-05-20 2006-11-24 Proton World Internatinal Nv Detection d'erreur de sequencement dans l'execution d'un programme
EP1894101A1 (de) * 2005-06-23 2008-03-05 Bayerische Motorenwerke Aktiengesellschaft Verfahren und vorrichtung zum überwachen eines unerlaubten speicherzugriffs einer rechenvorrichtung, insbesondere in einem kraftfahrzeug
FR2895814A1 (fr) * 2006-01-04 2007-07-06 Gemplus Sa Procede de securisation de l'execution d'un programme d'ordinateur
US7900060B2 (en) * 2006-02-17 2011-03-01 Vudu, Inc. Method and system for securing a disk key
US8239686B1 (en) * 2006-04-27 2012-08-07 Vudu, Inc. Method and system for protecting against the execution of unauthorized software
DE102006021494A1 (de) * 2006-05-09 2007-11-15 Giesecke & Devrient Gmbh Verfahren und Vorrichtung zur Erkennung nichteindeutiger Hashwerte
US7587663B2 (en) * 2006-05-22 2009-09-08 Intel Corporation Fault detection using redundant virtual machines
JP2009540395A (ja) * 2006-06-15 2009-11-19 株式会社東芝 携帯可能電子装置およびその制御方法
EP1870829B1 (en) 2006-06-23 2014-12-03 Microsoft Corporation Securing software by enforcing data flow integrity
DE102006037810A1 (de) 2006-08-11 2008-02-14 Giesecke & Devrient Gmbh Sichere Programmcodeausführung
EP1923789A1 (fr) * 2006-11-16 2008-05-21 Nagracard S.A. Procédé de contrôle de l'exécution d'un programme par un microcontrôleur
US7644322B2 (en) * 2006-11-21 2010-01-05 Atmel Corporation Hardware flow control monitor
DE102006057297A1 (de) * 2006-12-05 2008-06-12 Giesecke & Devrient Gmbh Verfahren zur Überwachung des Ablaufs eines Programms
US8429623B2 (en) * 2007-01-16 2013-04-23 Oracle America Inc. Processing engine for enabling a set of code intended for a first platform to be executed on a second platform
FR2915007A1 (fr) * 2007-04-12 2008-10-17 St Microelectronics Sa Protection de l'execution d'un programme
EP2043017A1 (fr) * 2007-04-12 2009-04-01 Gemplus Procédé d'exécution sécurisée d'une application
EP2186037B1 (en) * 2007-07-05 2018-10-03 Nxp B.V. Microprocessor in a security-sensitive system
DE102007038763A1 (de) 2007-08-16 2009-02-19 Siemens Ag Verfahren und Vorrichtung zur Sicherung eines Programms gegen eine Kontrollflussmanipulation und gegen einen fehlerhaften Programmablauf
JP4661854B2 (ja) * 2007-11-09 2011-03-30 株式会社デンソー 検査システム及びプログラム
JP5060372B2 (ja) 2008-04-10 2012-10-31 ルネサスエレクトロニクス株式会社 データ処理装置
CN101299849B (zh) * 2008-04-25 2010-05-12 中兴通讯股份有限公司 一种WiMAX终端及其启动方法
WO2009144531A1 (en) * 2008-05-27 2009-12-03 Freescale Semiconductor, Inc. Semiconductor device and method for validating a state thereof
JP5200664B2 (ja) * 2008-05-28 2013-06-05 大日本印刷株式会社 メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム
JP5200686B2 (ja) * 2008-06-18 2013-06-05 大日本印刷株式会社 情報処理装置、正常処理判別方法、及び情報処理プログラム
EP2262259A1 (en) 2009-06-08 2010-12-15 Nagravision S.A. Method for monitoring execution of data processing program instructions in a security module
FR2958764B1 (fr) * 2010-04-07 2013-01-25 Proton World Int Nv Compteur d'evenements dans un systeme adapte au langage javacard
CN102053927B (zh) * 2010-12-29 2013-11-27 北京握奇数据系统有限公司 攻击监控方法及具有攻击监控功能的装置
FR2970357B1 (fr) * 2011-01-07 2013-01-11 Oridao Dispositif et procede de tracage
US20120179898A1 (en) * 2011-01-10 2012-07-12 Apple Inc. System and method for enforcing software security through cpu statistics gathered using hardware features
US8725644B2 (en) * 2011-01-28 2014-05-13 The Active Network, Inc. Secure online transaction processing
DE102011005209B4 (de) 2011-03-07 2016-06-23 Infineon Technologies Ag Programmanweisungsgesteuerte Instruktionsflusskontrolle
DE102011006000B4 (de) * 2011-03-23 2015-01-15 Infineon Technologies Ag Signaturaktualisierung durch Codetransformation
FR2977342A1 (fr) 2011-06-30 2013-01-04 Proton World Int Nv Verification d'integrite d'un programme execute par un circuit electronique
CN103718182B (zh) * 2011-08-09 2016-11-23 飞思卡尔半导体公司 电子器件和计算机程序产品
US8417609B2 (en) * 2011-08-19 2013-04-09 Bank Of America Corporation Methods and systems for modeling deposits' data
CN103455445A (zh) * 2012-05-31 2013-12-18 上海华虹集成电路有限责任公司 智能卡系统抵抗故障攻击的方法
US8745594B1 (en) * 2013-05-10 2014-06-03 Technobasics Software Inc. Program flow specification language and system
CN103383566B (zh) * 2013-06-24 2015-10-28 奇瑞汽车股份有限公司 一种程序流监控方法
US9323920B2 (en) * 2013-10-23 2016-04-26 Infineon Technologies Ag Data processing arrangement and method for ensuring the integrity of the execution of a computer program
TWI712915B (zh) * 2014-06-12 2020-12-11 美商密碼研究公司 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體
JP6318976B2 (ja) * 2014-08-22 2018-05-09 富士通株式会社 デバッグ回路、デバッガ装置、半導体装置及びデバッグ方法
FR3035240B1 (fr) * 2015-04-15 2018-04-06 Rambus Inc. Procede de securisation de l'execution d'un programme
EP3091437A1 (en) 2015-05-08 2016-11-09 Robert Bosch Gmbh Method and apparatus for monitoring a control flow of a computer program
CN109076011B (zh) 2016-04-19 2021-05-07 三菱电机株式会社 中继装置
US10552413B2 (en) * 2016-05-09 2020-02-04 Sap Se Database workload capture and replay
CN105955115A (zh) * 2016-05-10 2016-09-21 重庆长安汽车股份有限公司 一种汽车整车控制器的程序流监控方法和装置
GB2550903B (en) * 2016-05-27 2019-06-12 Arm Ip Ltd Context data control
US10298702B2 (en) 2016-07-05 2019-05-21 Sap Se Parallelized replay of captured database workload
EP3279826A1 (en) 2016-08-04 2018-02-07 Nagravision SA Sequence verification
US11467565B2 (en) * 2017-01-25 2022-10-11 Mitsubishi Electric Corporation Attack/abnormality detection device, attack/abnormality detection method, and attack/abnormality detection program
US10592528B2 (en) 2017-02-27 2020-03-17 Sap Se Workload capture and replay for replicated database systems
CN107194258B (zh) * 2017-04-06 2019-10-01 珠海格力电器股份有限公司 监测代码漏洞的方法、装置及电子设备、存储介质
US10345801B2 (en) * 2017-08-21 2019-07-09 Honeywell International Inc. Ensuring a correct program sequence in a dual-processor architecture
US10698892B2 (en) 2018-04-10 2020-06-30 Sap Se Order-independent multi-record hash generation and data filtering
CN108646708B (zh) * 2018-05-02 2020-05-22 阳光电源股份有限公司 一种程序流监控方法及系统
WO2020027815A1 (en) * 2018-07-31 2020-02-06 Hewlett-Packard Development Company, L.P. Executing instructions
US11138085B2 (en) 2018-10-09 2021-10-05 Argo AI, LLC Execution sequence integrity monitoring system
US11144375B2 (en) 2018-10-09 2021-10-12 Argo AI, LLC Execution sequence integrity parameter monitoring system
CN111427723B (zh) * 2020-03-19 2023-05-30 阳光电源股份有限公司 基于AutoSAR的程序流监控方法及应用装置
US11709752B2 (en) 2020-04-02 2023-07-25 Sap Se Pause and resume in database system workload capture and replay
US11615012B2 (en) 2020-04-03 2023-03-28 Sap Se Preprocessing in database system workload capture and replay
EP4281892A2 (en) * 2021-04-06 2023-11-29 Google LLC Secure cryptographic coprocessor

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4266272A (en) * 1978-10-12 1981-05-05 International Business Machines Corporation Transient microcode block check word generation control circuitry
DE2855865C3 (de) * 1978-12-22 1981-11-19 Ibm Deutschland Gmbh, 7000 Stuttgart Verfahren und Einrichtung für eine elektronische Datenverarbeitungsanlage zur Prüfung der aus einer Instruktion abgeleiteten Steuersignale
PL168163B1 (pl) * 1991-01-18 1996-01-31 Thomson Multimedia Sa Sposób kontroli dostepu i/lub identyfikacji PL PL
US5347581A (en) * 1993-09-15 1994-09-13 Gemplus Developpement Verification process for a communication system
AU1690597A (en) * 1996-01-11 1997-08-01 Mitre Corporation, The System for controlling access and distribution of digital property
US6065108A (en) * 1996-01-24 2000-05-16 Sun Microsystems Inc Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same
DE69738810D1 (de) * 1996-01-24 2008-08-14 Sun Microsystems Inc Befehlsfalten in einem stapelspeicherprozessor
EP0976050B1 (en) * 1996-01-24 2002-06-12 Sun Microsystems, Inc. Processor with array access bounds checking
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
AU7957998A (en) * 1997-06-09 1999-01-25 Intertrust, Incorporated Obfuscation techniques for enhancing software security
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US6321337B1 (en) * 1997-09-09 2001-11-20 Sanctum Ltd. Method and system for protecting operations of trusted internal networks
US5983348A (en) * 1997-09-10 1999-11-09 Trend Micro Incorporated Computer network malicious code scanner
US5991414A (en) * 1997-09-12 1999-11-23 International Business Machines Corporation Method and apparatus for the secure distributed storage and retrieval of information
US6279123B1 (en) * 1997-09-15 2001-08-21 Lucent Technologies, Inc. System for viewing and monitoring embedded processor operation
US6023764A (en) * 1997-10-20 2000-02-08 International Business Machines Corporation Method and apparatus for providing security certificate management for Java Applets
FR2776410B1 (fr) * 1998-03-20 2002-11-15 Gemplus Card Int Dispositifs pour masquer les operations effectuees dans une carte a microprocesseur
US6092120A (en) * 1998-06-26 2000-07-18 Sun Microsystems, Inc. Method and apparatus for timely delivery of a byte code and serialized objects stream
US6418420B1 (en) * 1998-06-30 2002-07-09 Sun Microsystems, Inc. Distributed budgeting and accounting system with secure token device access
US6581206B2 (en) * 1999-11-12 2003-06-17 Sun Microsystems, Inc. Computer program language subset validation
US6402028B1 (en) * 1999-04-06 2002-06-11 Visa International Service Association Integrated production of smart cards
US6859533B1 (en) * 1999-04-06 2005-02-22 Contentguard Holdings, Inc. System and method for transferring the right to decode messages in a symmetric encoding scheme
US6615264B1 (en) * 1999-04-09 2003-09-02 Sun Microsystems, Inc. Method and apparatus for remotely administered authentication and access control
US6546546B1 (en) * 1999-05-19 2003-04-08 International Business Machines Corporation Integrating operating systems and run-time systems
US6327700B1 (en) * 1999-06-08 2001-12-04 Appliant Corporation Method and system for identifying instrumentation targets in computer programs related to logical transactions
WO2001009690A1 (en) * 1999-07-29 2001-02-08 The Foxboro Company Methods and apparatus for object-based process control
FR2804234B1 (fr) * 2000-01-24 2003-05-09 Gemplus Card Int Procede de protection contre le vol de la valeur d'authentification pour cartes a puce(s) multi-applications, cartes a puce(s) mettant en oeuvre le procede et terminaux susceptibles de recevoir lesdites cartes
US6557168B1 (en) * 2000-02-25 2003-04-29 Sun Microsystems, Inc. System and method for minimizing inter-application interference among static synchronized methods
US6507904B1 (en) * 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
CA2305249A1 (en) * 2000-04-14 2001-10-14 Branko Sarcanin Virtual safe
US6951018B2 (en) * 2000-05-30 2005-09-27 Sun Microsystems, Inc. Method and apparatus for efficiently tracking monitors
FR2809892B1 (fr) * 2000-05-31 2002-09-06 Gemplus Card Int Procede de protection contre la modification frauduleuse de donnees envoyees a un support electronique securise
FR2810481B1 (fr) * 2000-06-20 2003-04-04 Gemplus Card Int Controle d'acces a un moyen de traitement de donnees
US6862684B1 (en) * 2000-07-28 2005-03-01 Sun Microsystems, Inc. Method and apparatus for securely providing billable multicast data
CA2315449A1 (en) * 2000-08-10 2002-02-10 Ibm Canada Limited-Ibm Canada Limitee Generation of runtime execution traces of applications and associated problem determination
FR2814557B1 (fr) * 2000-09-27 2002-12-27 Gemplus Card Int Protection contre l'exploitation abusive d'une instruction dans une memoire

Also Published As

Publication number Publication date
FR2790844B1 (fr) 2001-05-25
US7168065B1 (en) 2007-01-23
AU3058900A (en) 2000-09-28
CN1350675A (zh) 2002-05-22
EP1161725A1 (fr) 2001-12-12
EP1161725B1 (fr) 2003-02-12
JP2002539523A (ja) 2002-11-19
FR2790844A1 (fr) 2000-09-15
WO2000054155A1 (fr) 2000-09-14
DE60001393D1 (de) 2003-03-20
JP4172745B2 (ja) 2008-10-29
DE60001393T2 (de) 2003-12-11
ATE232616T1 (de) 2003-02-15

Similar Documents

Publication Publication Date Title
MXPA01009056A (es) Procedimiento de supervision del desarrollo de un programa.
US7882396B2 (en) Method for controlling program execution integrity by verifying execution trace prints
CN106796634B (zh) 用于硬件流控制的代码指针验证
EP2958044B1 (en) A computer implemented method and a system for controlling dynamically the execution of a code
KR101256149B1 (ko) 프로그램 카운터 인코딩을 이용한 간접 함수 호출 보호 방법 및 보호 장치
CN100594509C (zh) 软件保护方法
EP2519908B1 (en) Jcvm bytecode execution protection against fault attacks
EP2364481B1 (en) Method for securing java bytecode.
US7496738B2 (en) Method of automatic control of the execution of a program by a microprocessor
CN102959556A (zh) 用于确保软件完整性的处理器实现的方法
CN109101815A (zh) 一种恶意软件检测方法及相关设备
CN110232262A (zh) 一种安卓应用的加固方法和系统
US20170109546A1 (en) Securing of the loading of data into a nonvolatile memory of a secure element
RU2603545C2 (ru) Защита апплетов от анализа скрытых каналов
CN102681838A (zh) 由虚拟机执行的中间编程代码的安全化的方法、计算机程序和装置
Bouffard et al. Reversing the operating system of a Java based smart card
JP2004503860A (ja) データ処理方法及び保護された命令の実行のための装置
US8763138B2 (en) Method and device for security loading a memory and an associated memory
US8239833B2 (en) Statistical control of the integrity of a program
US20060265578A1 (en) Detection of a sequencing error in the execution of a program
US20060149942A1 (en) Microcontroller and assigned method for processing the programming of the micro-con- troller
KR100562090B1 (ko) 마이크로회로 카드, 특히 비접촉형 카드에서 다수의 비휘발성 메모리 위치를 불가분적으로 수정하는 방법
CN115203652B (zh) 一种基于源混淆的ios端安全加密控制方法
CN102637152B (zh) 具有处理单元和信息存储装置的设备
CN112184212A (zh) 控制用于ic卡的小应用程序运行的方法