ES2894890T3 - Verificación de secuencias - Google Patents

Verificación de secuencias Download PDF

Info

Publication number
ES2894890T3
ES2894890T3 ES17748467T ES17748467T ES2894890T3 ES 2894890 T3 ES2894890 T3 ES 2894890T3 ES 17748467 T ES17748467 T ES 17748467T ES 17748467 T ES17748467 T ES 17748467T ES 2894890 T3 ES2894890 T3 ES 2894890T3
Authority
ES
Spain
Prior art keywords
main processor
sequence
instructions
verification
result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES17748467T
Other languages
English (en)
Inventor
Marco Macchetti
Nicolas Fischer
Jerome Perrine
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nagravision SARL
Original Assignee
Nagravision SA
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 Nagravision SA filed Critical Nagravision SA
Application granted granted Critical
Publication of ES2894890T3 publication Critical patent/ES2894890T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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
    • 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/72Protecting 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 cryptographic circuits
    • 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
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist

Abstract

Un método para monitorear la ejecución en un entorno de ejecución de una operación que comprende una secuencia de instrucciones, el método que comprende: instrucciones de monitoreo enviadas en secuencia desde un procesador principal a uno o más procesadores auxiliares para ejecutar la operación; verificar la secuencia de instrucciones usando información de verificación, y dependiendo del resultado de la verificación: - habilitar la salida del enteorno de ejecución de un resultado de la operación en respuesta a una verificación exitosa de la secuencia; o - generar una señal de fallo de verificación en respuesta a una verificación fallida de la secuencia.

Description

DESCRIPCIÓN
Verificación de secuencias
Campo técnico
La presente divulgación se refiere a la verificación de una secuencia de instrucciones enviadas desde un procesador principal a uno o más procesadores auxiliares, en particular, aunque no exclusivamente, a uno o más procesadores criptográficos que implementan aceleración de hardware para operaciones criptográficas.
Antecedentes
Los entornos de procesamiento seguro pueden comprender varios procesadores, normalmente un procesador principal para procesar una operación general y varios procesadores auxiliares que implementan operaciones repetidas como parte de la operación principal en el hardware para acelerar el procesamiento. Normalmente, la operación puede ser una operación criptográfica y los procesadores auxiliares pueden ser procesadores criptográficos que implementan operaciones criptográficas elementales. La implementación de algunas de las operaciones generales en hardware mejora no solo la velocidad de procesamiento sino también la seguridad, ya que es más difícil manipular el hardware que el software. Para beneficiarse de una seguridad mejorada, es necesario que las operaciones implementadas por hardware sean instruidas por el procesador principal en su totalidad y en la secuencia prevista. De lo contrario, se podría manipular el resultado de la operación general. Esto es particularmente pertinente en configuraciones en las que el código de software implementado por el procesador principal se proporciona desde fuera del entorno seguro, por ejemplo, se carga desde una memoria flash u otra memoria de microprograma fuera del entorno de procesamiento seguro durante el arranque o el tiempo de ejecución.
Estados Unidos 7 168 065 se refiere al campo de la seguridad de programas informáticos, y más en particular a un método y dispositivo para detectar pasos inaceptables en la ejecución de un programa informático, donde este último puede estar en un lenguaje de bajo o alto nivel.
El documento WO9914881 se refiere generalmente a una plataforma de comunicación segura en un circuito integrado, y más particularmente se refiere a un procesador de señal digital (DSP) con características de seguridad de cifrado integradas,
El documento US 2006/265570 A1 se relaciona con el monitoreo de la integridad de la ejecución de una secuencia de instrucciones dentro de un coprocesador. La salida de un coprocesador puede deshabilitarse hasta que se verifique una secuencia dentro de un coprocesador.
Breve descripción de los dibujos
Las realizaciones específicas se describen a modo de ejemplo y se describen con referencia a los dibujos adjuntos, en los que:
La Figura 1 ilustra un dispositivo informático con un entorno de ejecución aislado que comprende varios componentes de hardware: un procesador principal, procesadores auxiliares y un módulo de seguimiento;
La Figura 2 ilustra un método implementado por el módulo de seguimiento para rastrear y verificar una secuencia de instrucciones enviadas por el procesador principal a los procesadores auxiliares;
La Figura 3 ilustra una variante del método ilustrado en la Figura 2;
La Figura 4 ilustra una implementación detallada de un dispositivo informático como se ilustra en la Figura 1;
La Figura 5 ilustra una máquina de estado finita que especifica modos del módulo de seguimiento, por ejemplo de la implementación ilustrada en la Figura 4; y
La Figura 6 ilustra un método de preparación de información de verificación para código de software, para su uso por el módulo de seguimiento.
Descripción detallada de los dibujos
En resumen, en algunos aspectos de la divulgación, se proporciona un método para monitorear la ejecución en un entorno de ejecución de una operación que comprende una secuencia de instrucciones. Las instrucciones enviadas en la secuencia desde un procesador principal a uno o más procesadores auxiliares, por ejemplo procesadores criptográficos, para ejecutar la operación se monitorean y la secuencia de instrucciones se verifica usando información de verificación. El método comprende al menos uno, o ambos, de:
• habilitar la salida del entorno de ejecución de un resultado de la operación en respuesta a una verificación exitosa de la secuencia; y
• generar una señal de falla de verificación en respuesta a una verificación fallida de la secuencia.
De manera ventajosa, al condicionar la capacidad de generar un resultado a que se apruebe la verificación de secuencia, o al generar una señal de falla que pueda ser utilizada por el entorno de ejecución o en cualquier otro lugar del dispositivo para mitigar los efectos de un intento de manipulación, la seguridad de la operación aumenta, incluso en circunstancias en las que no se puede ejercer un control total sobre el código utilizado por el procesador principal para implementar la operación.
En algunas realizaciones, el método comprende actualizar un estado con cada instrucción en la secuencia y verificar el estado usando la información de verificación. La verificación del estado puede comprender comparar un valor del estado o una función hash o criptográfica unidireccional del valor del estado con la información de verificación. Actualizar el estado puede comprender recibir las instrucciones a medida que se envían desde el procesador principal a uno o más procesadores auxiliares y actualizar el estado a medida que se reciben las instrucciones, por ejemplo, añadiendo un hash de la instrucción al estado. Para mayor seguridad, la información de verificación se puede proporcionar al entorno de ejecución en forma cifrada, preferiblemente usando cifrado asimétrico. El entorno de ejecución puede ser parte de un dispositivo informático y el código puede almacenarse en el dispositivo informático junto con la información de verificación fuera del entorno de ejecución. El método de verificación de secuencia divulgado facilita el almacenamiento del código fuera del entorno seguro, por ejemplo, donde se puede actualizar fácilmente como parte de una actualización de microprograma, al tiempo que garantiza una medida de integridad al imponer una secuencia prevista de instrucciones a los procesadores auxiliares.
En algunas realizaciones, el método comprende recibir una solicitud para habilitar la salida del resultado de la operación y verificar la secuencia en respuesta a la recepción de la solicitud. La solicitud puede recibirse del procesador principal, por ejemplo, y puede comprender la información de verificación. Por ejemplo, habilitar la salida del resultado puede comprender habilitar el acceso, en particular el acceso de escritura, por parte del procesador principal a una memoria de interfaz, accesible desde fuera del entorno, para generar un resultado de la operación. Por tanto, el método, en efecto, puede implementar un cortafuegos, alrededor del entorno de ejecución, donde el acceso es controlado controlando el acceso a la memoria de la interfaz. Por supuesto, alternativa o adicionalmente, se puede controlar el acceso, en particular el acceso de lectura, a la memoria de la interfaz desde fuera del entorno. El método puede comprender inhabilitar la comunicación entre el procesador principal y el uno o más procesadores auxiliares cuando se habilita la salida del resultado por el procesador. De esta manera, la manipulación se hace más difícil, ya que no es posible ningún procesamiento (al menos utilizando los procesadores auxiliares) mientras el procesador principal puede generar datos.
En algunos aspectos de la divulgación, se proporciona un dispositivo informático que comprende un entorno aislado. El entorno aislado comprende un procesador principal configurado para ejecutar una operación, uno o más procesadores auxiliares, una interfaz, por ejemplo, una memoria intermedia de interfaz y un módulo de seguimiento. El uno o más procesadores auxiliares, por ejemplo los procesadores criptográficos, están configurados para recibir instrucciones del procesador principal, ejecutar las instrucciones y devolver las respuestas respectivas al procesador principal. La ejecución de la operación comprende que el procesador principal envíe las instrucciones en una secuencia y reciba las respectivas respuestas. La interfaz se interconecta entre el entorno aislado y el resto del dispositivo informático para recibir un resultado de la operación del procesador principal y hacerlo accesible desde fuera del entorno aislado. El módulo de seguimiento está configurado para monitorear las instrucciones enviadas desde el procesador principal a uno o más procesadores auxiliares y para verificar una secuencia de instrucciones usando información de verificación. En respuesta a la verificación, el módulo de seguimiento realiza al menos uno, o ambos, de:
• habilitar el acceso, por ejemplo, acceso de escritura, al búfer de interfaz en respuesta a una verificación exitosa de la secuencia para habilitar la salida del resultado; y
• generar una señal de falla de verificación en respuesta a una verificación fallida de la secuencia.
Se entenderá que las consideraciones y ventajas anteriores se aplican igualmente a estos aspectos. El dispositivo informático puede tener uno o más procesadores principales y/o auxiliares adicionales, implementando un entorno de Sistema Operativo Enriquecido y/o un Entorno de Ejecución Confiable con procesadores compartidos o respectivos fuera del entorno aislado e interactuando con el entorno aislado a través de la memoria intermedia de la interfaz. En algunas realizaciones, el módulo de seguimiento está configurado para implementar métodos como se describió anteriormente.
Otros aspectos de la divulgación se extienden a una lista de red, opcionalmente almacenada en uno o más medios legibles por ordenador, que comprende una especificación de elementos de circuito y su interconexión para implementar un entorno aislado como se describió anteriormente y a un dispositivo informático que comprende medios para implementar métodos como se describió anteriormente. Los aspectos divulgados son aplicables a muchos tipos de dispositivos informáticos, en particular, aunque no exclusivamente, a decodificadores u otros dispositivos receptores de contenido, tales como televisores inteligentes, y encuentran una aplicación particular en la gestión de derechos digitales y aplicaciones de acceso condicional donde la seguridad de las operaciones criptográficas que protegen el contenido necesitan asegurarse.
En otro aspecto más, se proporciona un método de preparación de código para su ejecución por un procesador principal para implementar una operación en un método como se describió anteriormente. El método de preparación de código comprende derivar información de verificación de una secuencia de instrucciones en el código para uno o más procesadores auxiliares e incluir la información de verificación con el código, por ejemplo, como parte de una instrucción de salida o como datos incluidos con el código, o como un elemento de datos separado distribuido junto con el código o por separado para una combinación posterior. La información de verificación puede incluirse con el código en forma cifrada, por ejemplo usando cifrado asimétrico.
Algunas realizaciones específicas se describen ahora a modo de ejemplo para ilustrar la divulgación con referencia a los dibujos adjuntos.
Específicamente, con referencia a la Figura 1, un dispositivo informático 100 comprende un entorno de ejecución aislado 110, aislado del resto del dispositivo informático 100, que puede comunicarse con el resto del dispositivo informático 100 por medio de una interfaz 120, por ejemplo un memoria intermedia de entrada y salida que proporciona acceso de lectura y/o escritura desde el interior del entorno aislado 110 y acceso de lectura y/o escritura desde fuera del entorno 110 para permitir que el entorno 110 se comunique con el resto del dispositivo 100. El entorno 110 comprende un procesador principal 130 y una pluralidad de procesadores auxiliares 140, por ejemplo, procesadores criptográficos auxiliares para la aceleración de hardware criptográfico. El procesador principal 130 está configurado para ejecutar código de software que implementa una operación, por ejemplo, una operación criptográfica. El código de software incluye instrucciones para ser ejecutadas por los procesadores auxiliares 140 y, mientras ejecuta el código de software, el procesador principal 130 envía instrucciones a los procesadores auxiliares 140 y recibe resultados intermedios en forma de respuestas de los procesadores auxiliares 140 para producir un resultado general de la operación implementada por el código de software.
El código de software puede almacenarse dentro del entorno 110, por ejemplo, después de haber sido cargado en una memoria adecuada en el entorno 110 en el momento de arranque del dispositivo 100 o en el tiempo de ejecución del código de software. Alternativamente, el código de software puede almacenarse fuera del entorno 110 y ser leído por el procesador principal 130 a través de la interfaz 120 o de otro modo; o el procesador principal 130 puede recibir instrucciones una por una o en bloques a través de la interfaz 120, transmitidas por un procesador fuera del entorno 110.
Un módulo de seguimiento 150 monitorea las comunicaciones entre el procesador principal 130 y los procesadores auxiliares 140, por ejemplo, monitorea las instrucciones enviadas por el procesador principal 130 a los procesadores auxiliares 140. Por ejemplo, el procesador principal 130 puede enviar instrucciones a los procesadores auxiliares 140 a través de un bus de datos común (típicamente aislado del exterior del entorno 110) y el módulo de seguimiento 150 puede escuchar las señales que viajan en el bus de datos. Alternativamente, el módulo de seguimiento puede proporcionar, o controlar, un módulo de acceso al bus del procesador principal 130 y las comunicaciones pueden enrutarse desde el procesador principal 130 a los procesadores auxiliares 140 a través del módulo de acceso al bus.
El módulo de seguimiento 150 monitorea las instrucciones enviadas por el procesador principal 130 a los procesadores auxiliares 140 y verifica la secuencia de instrucciones, como se describe en detalle a continuación, por ejemplo, manteniendo un estado interno representativo de la secuencia de instrucciones y comparando la etapa interna con información de verificación correspondiente a la secuencia correcta. Por ejemplo, la información de verificación puede proporcionarse al entorno aislado 110 y, por tanto, al módulo de seguimiento 150 junto con el código de software y puede cifrarse, por ejemplo, utilizando cifrado asimétrico, para mayor seguridad. Comparando el estado interno con la información de verificación, el módulo de seguimiento 150 puede determinar si se ha ejecutado la secuencia correcta de instrucciones y tomar acciones tales como habilitar la salida del resultado general o generar una alarma dependiendo del resultado de la verificación.
Entonces, en detalle, volviendo a la Figura 2, se describe ahora un método para monitorear la secuencia. El módulo de seguimiento 150 monitorea los mensajes enviados desde el procesador principal 130 a los procesadores auxiliares 140 en el paso 210. En el paso 220, el módulo de seguimiento 150 comprueba si el mensaje es una instrucción para que uno de los procesadores auxiliares 140 lleve a cabo la instrucción y devuelva un resultado y, si es así, actualiza un estado interno en el paso 230. El estado puede actualizarse mediante un cálculo basado en el estado actual y la instrucción actual, o una función unidireccional de resumen, hash o criptográfica de la instrucción actual. Un ejemplo de una función unidireccional adecuada es cualquier función de la familia SHA. El cálculo puede agregar el valor de la instrucción o la función unidireccional de resumen/hash/criptográfica al estado (adición), para concatenar el valor de la instrucción o la función unidireccional de resumen/hash/criptográfica al estado, etc.
Posteriormente, en el paso 240, el módulo de seguimiento 150 comprueba si el mensaje era una solicitud al módulo de seguimiento para verificar el estado. El mensaje en cuestión puede contener tanto una instrucción para los procesadores auxiliares 140 como una solicitud de verificación, en cuyo caso el paso 240 sigue al paso 230, o la solicitud de verificación puede estar separada de cualquier instrucción enviada por el procesador principal 130 a los procesadores auxiliares 140 y por tanto, sigue al paso 220 directamente. Por ejemplo, la solicitud puede ser una solicitud del procesador principal 130 al módulo de seguimiento 150 para habilitar la salida de un resultado general de la operación implementada por el código de software, por ejemplo, como se describe con más detalle a continuación.
Si el mensaje comprende una solicitud de verificación, el módulo de seguimiento verifica el estado interno en el paso 250; de lo contrario, el proceso vuelve al paso 210 y el módulo de seguimiento continúa monitoreando los mensajes. Verificar el estado en el paso 250 puede comprender comparar el valor del estado con un valor esperado del estado proporcionado por la información de verificación. Por ejemplo, el estado, o una función del estado, puede compararse con la información de verificación, o una función correspondiente de la información de verificación, según sea el caso. Para garantizar que la información de verificación no sea alterada, es posible que la entidad que prepara el código de software y la información de verificación la haya cifrado, como se describe con más detalle a continuación. En este caso, la información de verificación se descifra primero en el paso 250 o antes. Por ejemplo, la información de verificación que puede haber sido cifrada era una clave privada de un algoritmo de cifrado asimétrico y la clave pública correspondiente se usa en el paso 250 o antes para descifrar la información de verificación. La información de verificación puede usarse para verificar el estado verificando una coincidencia entre la identidad del estado y la información de verificación (o una función del estado y/o la información de verificación), o por cualquier otro medio de comparación adecuado.
En el paso 260, el módulo de seguimiento comprueba si el estado se ha verificado o no. Si se ha verificado el estado, la salida de un resultado general de la operación se habilita en el paso 270 y el módulo de seguimiento se restablece en el paso 280 para continuar monitoreando los mensajes en el paso 210. Esto es particularmente aplicable a las realizaciones en las que la solicitud de verificación se recibe con una solicitud para generar un resultado general de la operación. Se entenderá que, cuando se habilita la salida de un resultado global, esta se deshabilitó previamente, por ejemplo, en respuesta a una operación previa que se ha completado, un tiempo de espera, un arranque, etc., o como se describe a continuación. En otras realizaciones, por ejemplo, cuando se recibe una solicitud de verificación con cada uno o una instrucción para los procesadores auxiliares 140, la acción sobre la verificación positiva puede diferir, por ejemplo, permitir que el procesador en cuestión procese la instrucción o devuelva un resultado al procesador principal 130.
Si la verificación es negativa como se determina en el paso 260, se genera una excepción en el paso 290, generando una señal de falla de verificación que se puede usar como una señal de alarma en otra parte del dispositivo, por ejemplo, para provocar un apagado del dispositivo o alertar a un tercero. La señal de fallo de verificación puede usarse, alternativa o adicionalmente, para evitar un procesamiento adicional en el entorno aislado 110, por ejemplo, borrando los datos almacenados en la memoria dinámica en el entorno aislado 110, bloqueando la interfaz 120, etc. Si bien algunas realizaciones incluyen los pasos 270 y 290, otras realizaciones solo implementan uno de esos pasos.
Con referencia a la Figura 3, en algunas realizaciones, se añaden pasos adicionales al proceso para aumentar aún más la seguridad. Se dan pasos similares en la Figura 3 y los mismos números de referencia que en la Figura 2 y se han descrito anteriormente. Se inserta un paso 310 después del paso 220 mencionado anteriormente, comprobando si el módulo de seguimiento 150 se encuentra actualmente en un modo inactivo, por ejemplo, como se describe con más detalle a continuación. En el modo inactivo del módulo de seguimiento, el acceso por parte del procesador principal a la interfaz 120 y por tanto la salida de un resultado general de la operación no está deshabilitado y el procesador principal 130 puede acceder libremente a la interfaz 120 para leer y escribir datos. Sin embargo, en el modo inactivo del módulo de seguimiento 140, el acceso del procesador principal 130 a los procesadores auxiliares 140 para la ejecución de instrucciones está deshabilitado, asegurando así que no se puedan ejecutar y generar operaciones criptográficas sin una verificación adecuada.
Si en el paso 310 se determina que el módulo de seguimiento 150 está inactivo cuando se recibe un mensaje que comprende una instrucción (ver paso 220), se ingresa un modo diferente en el paso 320 permitiendo el procesamiento de instrucciones desde el procesador principal 130 por los procesadores auxiliares 140 y deshabilitando la salida del resultado general, por ejemplo, deshabilitando el acceso de escritura por parte del procesador principal, directa o indirectamente, a la interfaz 120, en el paso 320. Si la determinación en el paso 310 es que el módulo de seguimiento no está inactivo, es decir, la ejecución del código ya está rastreada/una secuencia de instrucciones monitoreada, el proceso procede como anteriormente en el paso 230. Adicionalmente, además de los pasos 310 y 320 añadidos, el paso 280, restableciendo el módulo de seguimiento 150, se modifica para devolver el módulo de seguimiento 150 al modo inactivo y deshabilitar el procesamiento una vez que se ha habilitado la salida en el paso 270. De esta manera, el procesamiento y la salida se deshabilita en cualquier momento y solo la secuencia correcta de instrucciones durante el procesamiento permite la salida posterior de un resultado.
Con referencia a la Figura 4, en algunas realizaciones, el dispositivo informático 100 comprende un conjunto de chips de entorno de ejecución confiable (TEE) 410 que comprende un procesador principal TEE 420, una interfaz de entrada/salida 430 y una memoria de acceso aleatorio estático (SRAM) 440. El procesador principal TEE 130 está en comunicación con la SRAM 440 y una memoria dinámica de acceso aleatorio (DRAM) 450 fuera del conjunto de chips 410 en el dispositivo informático 100. El resto del dispositivo informático 100 fuera del conjunto de chips 410 está en comunicación con el conjunto de chips 410 a través de la interfaz 430, por ejemplo interconectando un sistema operativo rico del dispositivo informático 100 con el TEE del conjunto de chips 410. El entorno aislado 110 se proporciona como parte del conjunto de chips 410 para implementar un módulo criptográfico para operaciones criptográficas. El procesador principal de TEE 420 puede acceder al entorno 110 de ejecución aislado escribiendo y leyendo desde la interfaz 120, en particular para solicitar la ejecución de operaciones criptográficas y obtener un resultado correspondiente del entorno de ejecución aislado 110.
Ahora se describe una realización específica del entorno de ejecución aislado 110, ya sea implementada junto con el conjunto de chips TEE 410 o como parte del dispositivo informático 100. El procesador principal 130 está en comunicación con una SRAM 460 para proporcionar memoria de trabajo para el entorno de ejecución aislado 110. Se apreciará que cualquier otra forma de memoria de trabajo, en combinación con almacenamiento no volátil, dentro o fuera del entorno de ejecución aislado 110, puede usarse en su lugar o adicionalmente. El módulo de seguimiento 150 controla un conmutador de salida 470 en una conexión de escritura entre el procesador principal 130 y la interfaz 120, de modo que el módulo de seguimiento 150 pueda controlar el acceso de escritura del procesador principal 130 a la interfaz 120. Se apreciará que el conmutador 470 puede adoptar muchas formas y puede implementar una función de conmutador lógico sin ser un conmutador físico, por ejemplo, acortando la conexión de escritura a tierra, bajo o alto voltaje para inhabilitar el acceso de escritura a la interfaz 120. En algunas realizaciones, el conmutador 470 puede implementarse como un transistor conectado adecuadamente. En algunas realizaciones, el procesador principal 130 puede retener el acceso de lectura a la interfaz 120 independientemente de si el acceso de escritura está habilitado o no.
El uno o más procesadores auxiliares 140, por ejemplo uno o más procesadores criptográficos o núcleos criptográficos, están en algunas realizaciones en comunicación con el procesador principal 130 a través de un bus de datos 480 y el módulo de seguimiento 150 está acoplado a un conmutador de bus de datos 490, que puede configurarse de manera similar al conmutador de salida 470. El conmutador de bus de datos 490 está configurado para, bajo el control del módulo de seguimiento 150, controlar el acceso del procesador principal 130 a los procesadores auxiliares 140, habilitando o deshabilitando el acceso según se requiera. En otras realizaciones, el módulo de seguimiento controla el acceso de otras formas, por ejemplo, proporcionando un controlador de bus que permite al procesador principal comunicarse a través del bus de datos 480 y/o configurando las ubicaciones de memoria de la interfaz 120 en un valor fijo de cero o uno utilizando compuertas AND y/o NOT debidamente conectadas.
Con referencia a la Figura 5, en algunas realizaciones, el módulo de seguimiento 150 implementa una pluralidad de modos operativos, como sigue:
• Inactivo (INACTIVO, 510): mensajes de monitoreo en el bus de datos 480; acceso de escritura por parte del procesador principal 130 a la interfaz 120 habilitada; acceso por parte del procesador principal 130 a los procesadores auxiliares 140 inhabilitados; estado de reinicio.
• Comando (CMD, 520): monitorear mensajes en el bus de datos 480; acceso de escritura por parte del procesador principal 130 a la interfaz 120 inhabilitada; acceso del procesador principal 130 a los procesadores auxiliares 140 habilitados.
• Actualización (UPD, 530): actualizar el estado usando un cálculo del estado actual y la instrucción actual para uno o más procesadores auxiliares, como se describió anteriormente.
• Verificación (CHK, 540): Verificar el estado usando la información de verificación como se describió anteriormente.
• Alarma (ALRM, 550): Generar una señal de verificación de fallas, como se describió anteriormente; acceso de escritura por parte del procesador principal 130 a la interfaz 120 inhabilitada; acceso del procesador principal 130 a los procesadores auxiliares 140 inhabilitados.
El módulo de seguimiento 150 está inicialmente en INACTIVO y pasa a CMD si se detecta una instrucción desde el procesador principal 130 a un procesador auxiliar 140 en el bus de datos 280. El módulo de seguimiento 150 pasa inmediatamente de CMD a UPD para actualizar el estado y vuelve a CMD una vez completada la actualización para el monitoreo para obtener más instrucciones. La detección de cada instrucción adicional hace que el módulo de seguimiento 150 vuelva a pasar a CMD. El módulo de seguimiento 150 pasa de CMD a CHK en respuesta a recibir información de verificación (por ejemplo, junto con una solicitud de salida), por ejemplo a través del bus de datos 280, y verifica el estado usando la información de verificación. Si se pasa la verificación, el módulo de seguimiento pasa a INACTIVO, permitiendo la salida de un resultado por el procesador principal 130 y esperando que se envíen más instrucciones a los procesadores auxiliares 140. Si la verificación falla, el módulo de seguimiento pasa a ALRM y genera una señal de falla de verificación, como se describió anteriormente, por ejemplo, deshabilitando también las comunicaciones del procesador principal 130 con la interfaz 120 y los procesadores auxiliares 140. Por ejemplo, el módulo de seguimiento 150 puede permanecer en ALRM, una vez que se ingresa ALRM, hasta que se reinicia el módulo de seguimiento y/o se reinicia el dispositivo 100.
En algunas realizaciones, el entorno de ejecución aislado 110 se implementa en silicio, por ejemplo, como parte de un conjunto de chips TEE como se ilustra en la Figura 4. Los elementos del circuito, y sus interconexiones, que implementan los diversos componentes del entorno de ejecución aislado 110 (ya sea de forma aislada o junto con todos los del conjunto de chips) están codificados en algunas realizaciones en una lista de red, que puede almacenarse en uno o más medios legibles por ordenador y proporcionarse a un fabricante de chips para implementar el entorno aislado 110 en silicio / integrarlo con otras áreas del conjunto de chips. El conjunto de chips puede ser parte de un circuito integrado de aplicación específica (ASIC) integrado como uno de varios circuitos integrados en el dispositivo 100, y puede ser parte de un sistema en chip o red en chip, etc.
Con referencia a la Figura 6, un método de preparación de código de software para su ejecución por un procesador principal que permite la verificación de secuencia como se describió anteriormente comprende un paso 610 de analizar el código para identificar una secuencia de instrucciones para procesadores auxiliares y un paso 620 de derivar una información de verificación en forma de un estado predicho mediante la actualización de un estado inicial con las instrucciones identificadas una por una en secuencia como se describió anteriormente. El estado predicho (o una función del mismo) corresponde al estado en el módulo de seguimiento 150 cuando se monitorean las instrucciones en la secuencia proporcionada en el código. La información de verificación puede cifrarse, por ejemplo, utilizando cifrado asimétrico, en un paso opcional 630 e incluirse con el código de software en el paso 640. Por ejemplo, la información de verificación puede incluirse con una instrucción en el código que solicita al módulo de seguimiento 150 que habilite la salida de un resultado de la operación o en una sección de datos del código o en archivos de datos separados. En el paso 650, que puede ser realizado por un tercero, el código de software y la información de verificación se distribuyen al dispositivo 100, por ejemplo, se incluyen en una memoria estática durante la fabricación o se cargan en una memoria persistente, por ejemplo, una memoria flash, del dispositivo 100 durante o después de la fabricación, por ejemplo, como parte de una actualización de microprograma, por ejemplo, una actualización de software por aire en el caso de un decodificador.
Si la información de verificación está cifrada, una clave de descifrado, por ejemplo una clave pública si el cifrado es asimétrico, se distribuye por separado del código de software. La clave de descifrado puede, por ejemplo, estar codificada de forma fija en una lista de red del entorno de ejecución aislado 110, o puede estar instalada en el mismo en el momento de la fabricación o en el primer arranque. La clave de descifrado puede, en algunas realizaciones, almacenarse para que pueda actualizarse de vez en cuando.
Por ejemplo, el entorno de ejecución puede aislarse de un dispositivo en el que está implementado y comunicarse con el resto del dispositivo a través de una o más interfaces dedicadas. De esta manera, en particular si la monitoreo se implementa en hardware, la integridad del cálculo en el entorno de ejecución aislado puede garantizarse con mayor seguridad.
La actualización del estado puede comprender agregar la instrucción o un hash de la instrucción al estado o combinar el estado con la instrucción o el hash de la instrucción con cualquier otra operación adecuada además o en lugar de la adición. Verificar el estado usando información de verificación puede comprender comparar un valor del estado con el valor de la información de verificación, por ejemplo comparando los valores de las funciones respectivas del estado y la información de verificación. Una o ambas funciones pueden ser una multiplicación por unidad y las funciones pueden ser iguales o diferentes, siempre que se puedan comparar los valores respectivos. Ejemplos de posibles funciones son funciones hash o funciones criptográficas unidireccionales. Por supuesto, son igualmente posibles otras formas de definir y actualizar el estado, por ejemplo, concatenando cada instrucción, o un hash de cada instrucción, a cualquier instrucción o hash anterior, dando un estado cuyo tamaño variará con la longitud de la secuencia. De manera más general, la actualización del estado comprende un cálculo que usa el estado actual y la instrucción actual, o una función hash / resumen / función de la instrucción actual, para calcular el siguiente estado.
Actualizar el estado puede comprender almacenar las instrucciones y actualizar y verificar el estado más adelante, por ejemplo cuando se recibe una solicitud de salida, o verificar la secuencia puede comprender comparar la secuencia de instrucciones o una función hash o criptográfica unidireccional de la misma con la información de verificación. La secuencia puede ser la secuencia total de instrucciones necesarias para implementar la operación o solo un subconjunto. Por ejemplo, la verificación puede ocurrir después de que se reciba cada instrucción para la secuencia hasta esa instrucción (con la información de verificación correspondiente). En este caso, es posible que la verificación positiva no dé como resultado la habilitación de la salida hasta que se haya verificado la última instrucción de la secuencia.
Se entenderá que, en las realizaciones que habilitan la salida / acceso en respuesta a una verificación exitosa, antes de habilitar la salida / acceso, la salida / acceso está deshabilitada. En particular, el acceso se puede habilitar / deshabilitar de varias formas, por ejemplo, conectando una señal de control de acceso a cada bit de la memoria de la interfaz, o a cada bit de salida de la memoria de la interfaz si la interfaz es bidireccional, con las respectivas compuertas AND y estableciendo la señal de control de acceso en CERO para deshabilitar el acceso y en UNO para habilitar el acceso. Se observará que el procesador principal puede intentar escribir en la interfaz en el estado deshabilitado, pero esto no afectará el valor de los bits de la memoria de la interfaz. Por supuesto, el acceso se puede habilitar o deshabilitar de otras formas, por ejemplo, accionando un conmutador para abrir o cerrar una conexión entre el procesador principal y la memoria de la interfaz. Se entenderá que la salida también se puede deshabilitar deshabilitando el acceso a la memoria de la interfaz desde fuera del entorno.
La señal de falla de verificación puede activar una alarma que alerta a un dispositivo en el que se implementa el método o al usuario de un dispositivo sobre la falla de verificación. Además, o en su lugar, la señal de falla de verificación puede deshabilitar cierta funcionalidad, por ejemplo deshabilitar la salida del resultado en realizaciones donde la salida no se deshabilita durante el procesamiento, eliminar el resultado y/o cualquier resultado intermedio de la memoria, evitar el procesamiento de instrucciones por parte de los procesadores auxiliares. etc.
Se entenderá que antes de deshabilitar la comunicación, se habilita la comunicación. La comunicación puede habilitarse / deshabilitarse de varias formas. Por ejemplo, el procesador principal puede estar conectado a los procesadores auxiliares a través de un conmutador que se acciona para abrir y cerrar una conexión entre el procesador principal y uno o más procesadores auxiliares, por ejemplo, un conmutador en una línea que conecta el procesador principal a un bus al que están conectados uno o más procesadores auxiliares, una puerta que mantiene el bus a un valor fijo, etc. Alternativamente, se puede conectar una señal de control de acceso al procesador auxiliar para interrumpir la entrada y/o salida de los procesadores auxiliares, por ejemplo con las respectivas puertas AND y estableciendo la señal de control de acceso en CERO para deshabilitar el acceso y en UNO para habilitar el acceso. Se observará que el procesador principal puede intentar leer o escribir en los procesadores auxiliares en el estado deshabilitado pero no recibirá ninguna respuesta, por lo que la comunicación está en efecto deshabilitada.
Por supuesto, la información de verificación se almacena junto con el código de forma clara o cifrada, según sea el caso.
Se entenderá que las consideraciones anteriores con respecto a la habilitación del acceso, las señales de verificación, las actualizaciones de estado, etc., se aplican igualmente a las realizaciones del dispositivo.
Además, se entenderá que, por supuesto, el dispositivo informático puede tener uno o más procesadores principales y/o auxiliares adicionales, implementando un entorno de sistema operativo enriquecido y/o un entorno de ejecución confiable con procesadores compartidos o respectivos fuera del entorno aislado y que interactúan con el entorno aislado a través de la interfaz. La interfaz puede comprender una memoria de interfaz o una memoria intermedia, cuyo acceso está controlado por el módulo de seguimiento, por ejemplo, como se describió anteriormente.
Se han descrito anteriormente realizaciones de un dispositivo informático. El dispositivo informático, por ejemplo, un decodificador u otro dispositivo de consumo de medios, puede estar conectado (por ejemplo, en red) a otras máquinas en una red de área local (LAN), una intranet, una extranet o Internet. El dispositivo informático puede funcionar en la capacidad de un servidor o una máquina cliente en un entorno de red cliente-servidor, o como una máquina de pares en un entorno de red de interpares (o distribuida). El dispositivo informático puede ser un ordenador personal (PC), una tableta, un decodificador (STB), un Asistente Digital Personal (PDA), un teléfono celular, un dispositivo web, un servidor, un enrutador de red, un conmutador o puente, o cualquier máquina capaz de ejecutar un conjunto de instrucciones (secuenciales o de otro tipo) que especifiquen las acciones que debe realizar esa máquina. Además, aunque solo se ilustra un único dispositivo informático, el término "dispositivo informático" también se considerará para incluir cualquier conjunto de máquinas (por ejemplo, ordenadores) que ejecutan individual o conjuntamente un conjunto (o varios conjuntos) de instrucciones para ejecutar cualquiera o más de las metodologías analizadas en la presente descripción.
Además de los componentes ilustrados, el dispositivo informático puede tener uno o más procesadores además de los descritos anteriormente, una memoria principal (por ejemplo, memoria de solo lectura (ROM), memoria flash, memoria dinámica de acceso aleatorio (DRAM) tal como DRAM síncrona (SDRAM) o Rambus DRAM (RDRAM), etc.), una memoria estática (por ejemplo, memoria flash, memoria estática de acceso aleatorio (SRAM), etc.) y una memoria secundaria (por ejemplo, un dispositivo de almacenamiento de datos XX18), que se comunican entre sí a través de un bus.
El dispositivo informático puede incluir además un dispositivo de interfaz de red. El dispositivo informático también puede incluir una unidad de visualización de video (por ejemplo, una pantalla de cristal líquido (LCD) o un tubo de rayos catódicos (CRT)), un dispositivo de entrada alfanumérico (por ejemplo, un teclado o pantalla táctil), un dispositivo de control del cursor (por ejemplo, un mouse o pantalla táctil) y un dispositivo de audio (por ejemplo, un altavoz).
Los diversos métodos descritos anteriormente pueden implementarse mediante un programa informático. El programa informático puede incluir un código informático dispuesto para ordenar a un ordenador para que realice las funciones de uno o más de los diversos métodos descritos anteriormente. El programa informático y/o el código para realizar tales métodos pueden proporcionarse a un aparato, tal como un ordenador, en uno o más medios legibles por ordenador o, más generalmente, un producto de programa informático. Los medios legibles por ordenador pueden ser transitorios o no transitorios. El uno o más medios legibles por ordenador podrían ser, por ejemplo, un sistema electrónico, magnético, óptico, electromagnético, infrarrojo o semiconductor, o un medio de propagación para la transmisión de datos, por ejemplo para descargar el código a través de Internet. Alternativamente, uno o más medios legibles por ordenador podrían tomar la forma de uno o más medios físicos legibles por ordenador, tales como semiconductores o memoria de estado sólido, cinta magnética, un disquete de ordenador extraíble, una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), un disco magnético rígido y un disco óptico, tal como un CD-ROM, CD-R/W o DVD.
Un "componente de hardware" es un componente físico tangible (por ejemplo, no transitorio) (por ejemplo, un conjunto de uno o más procesadores) capaz de realizar ciertas operaciones y puede configurarse o disponerse de una determinada manera física. Un componente de hardware puede incluir circuitos o lógica dedicados que están configurados permanentemente para realizar ciertas operaciones. Un componente de hardware puede ser o incluir un procesador de propósito especial, tal como una matriz de puertas programables en campo (FPGA) o un ASIC. Un componente de hardware también puede incluir lógica programable o circuitos que están configurados temporalmente por software para realizar ciertas operaciones.
En consecuencia, debe entenderse que la frase "componente de hardware" abarca una entidad tangible que puede estar construida físicamente, configurada permanentemente (por ejemplo, cableada) o configurada temporalmente (por ejemplo, programada) para operar de cierta manera o para realizar ciertas operaciones descritas en la presente memoria.
A menos que se indique específicamente lo contrario, como es evidente a partir del siguiente análisis, se aprecia que a lo largo de la descripción, los análisis utilizan términos tales como "recibir", "determinar", "comparar", "habilitar", "mantener", "identificar", "calcular", "verificar", "habilitar", "prevenir" o similares, que se refieren a las acciones y procesos de un procesador de ordenador, sistema o dispositivo informático electrónico similar, que manipula y transforma datos representados como cantidades físicas (electrónicas) dentro de registros y memorias en otros datos representados de manera similar como cantidades físicas dentro de las memorias o registros u otros dispositivos de almacenamiento, transmisión o visualización de información.
Debe entenderse que la presente divulgación pretende ser ilustrativa y no restrictiva. Muchas otras implementaciones resultarán evidentes para los expertos en la técnica al leer y comprender la divulgación. Aunque la presente divulgación se ha descrito con referencia a implementaciones de ejemplo específicas, se reconocerá que la divulgación no se limita a las implementaciones descritas, sino que se pueden llevar a la práctica con modificaciones y alteraciones dentro del alcance de las reivindicaciones adjuntas. Por consiguiente, la memoria descriptiva y los dibujos deben considerarse en un sentido ilustrativo más que en un sentido restrictivo. Por lo tanto, el alcance de la divulgación debe determinarse con referencia a las reivindicaciones adjuntas, junto con el alcance completo de los equivalentes a los que hacen referencia tales reivindicaciones.

Claims (13)

REIVINDICACIONES
1. Un método para monitorear la ejecución en un entorno de ejecución de una operación que comprende una secuencia de instrucciones, el método que comprende:
instrucciones de monitoreo enviadas en secuencia desde un procesador principal a uno o más procesadores auxiliares para ejecutar la operación;
verificar la secuencia de instrucciones usando información de verificación, y dependiendo del resultado de la verificación:
- habilitar la salida del enteorno de ejecución de un resultado de la operación en respuesta a una verificación exitosa de la secuencia; o
- generar una señal de fallo de verificación en respuesta a una verificación fallida de la secuencia.
2. Un método según la reivindicación 1, que comprende actualizar un estado con cada instrucción en la secuencia, en donde verificar la secuencia comprende verificar el estado usando la información de verificación.
3. Un método según la reivindicación 2, en donde verificar el estado comprende comparar el estado con la información de verificación.
4. Un método según la reivindicación 2 o 3, en donde actualizar el estado comprende recibir las instrucciones a medida que se envían desde el procesador principal a uno o más procesadores auxiliares y actualizar el estado a medida que se reciben las instrucciones.
5. Un método según cualquier reivindicación anterior, que comprende recibir una solicitud para permitir la salida del resultado de la operación y verificar la secuencia en respuesta a la recepción de la solicitud.
6. Un método según la reivindicación 5, en donde la solicitud se recibe del procesador principal.
7. Un método según la reivindicación 5 o 6, en donde la solicitud comprende la información de verificación.
8. Un método según cualquier reivindicación anterior, en donde habilitar la salida del resultado comprende habilitar el acceso por parte del procesador principal para acceder a una memoria de interfaz accesible desde fuera del entorno para generar un resultado de la operación.
9. Un método según cualquier reivindicación anterior, el método que comprende deshabilitar la comunicación entre el procesador principal y el uno o más procesadores auxiliares cuando se habilita la salida por el procesador del resultado.
10. Un método según cualquier reivindicación anterior, en donde la información de verificación se almacena junto con el código para su ejecución por el procesador principal para ejecutar la operación.
11. Un dispositivo informático que comprende un entorno aislado, el entorno aislado que comprende:
un procesador principal configurado para ejecutar una operación;
uno o más procesadores auxiliares configurados para recibir instrucciones del procesador principal, ejecutar las instrucciones y devolver las respuestas respectivas al procesador principal, en donde ejecutar la operación comprende que el procesador principal envíe las instrucciones y reciba las respuestas respectivas;
una interfaz de interconexión entre el entorno aislado y el resto del dispositivo informático para recibir un resultado de la operación desde el procesador principal y hacerlo accesible desde fuera del entorno aislado; y
un módulo de seguimiento configurado para:
monitorear las instrucciones enviadas desde el procesador principal a uno o más procesadores auxiliares;
verificar una secuencia de las instrucciones utilizando la información de verificación, y dependiendo del resultado de la verificación:
- permitir el acceso a la interfaz en respuesta a una verificación exitosa de la secuencia para permitir la salida del resultado; o
- generar una señal de falla de verificación en respuesta a una verificación fallida de la secuencia.
12. Un dispositivo según la reivindicación 11, en donde el módulo de seguimiento está configurado para implementar un método según cualquiera de los puntos 2 a 9.
13. Un dispositivo según la reivindicación 11 o 12, en donde el dispositivo informático comprende una memoria de código para almacenar, junto con la información de verificación, un código para su ejecución por parte del procesador principal para implementar la operación, en donde la memoria de código está fuera del entorno aislado.
ES17748467T 2016-08-04 2017-08-02 Verificación de secuencias Active ES2894890T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP16182872.8A EP3279826A1 (en) 2016-08-04 2016-08-04 Sequence verification
PCT/EP2017/069578 WO2018024797A1 (en) 2016-08-04 2017-08-02 Sequence verification

Publications (1)

Publication Number Publication Date
ES2894890T3 true ES2894890T3 (es) 2022-02-16

Family

ID=56681964

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17748467T Active ES2894890T3 (es) 2016-08-04 2017-08-02 Verificación de secuencias

Country Status (7)

Country Link
US (1) US11314518B2 (es)
EP (2) EP3279826A1 (es)
KR (1) KR102422351B1 (es)
CN (1) CN109891425B (es)
DK (1) DK3494509T3 (es)
ES (1) ES2894890T3 (es)
WO (1) WO2018024797A1 (es)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210357220A1 (en) * 2018-07-31 2021-11-18 Hewlett-Packard Development Company, L.P. Executing instructions
US11269637B2 (en) * 2020-07-23 2022-03-08 Hewlett Packard Enterprise Development Lp Validating machine-readable instructions using an iterative validation process
US11698969B1 (en) * 2021-06-25 2023-07-11 Amazon Technologies, Inc. Boot security of integrated circuit device

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0889088A1 (en) 1997-07-01 1999-01-07 Du Pont De Nemours International S.A. Polyolefin compositions
WO1999014881A2 (en) * 1997-09-16 1999-03-25 Information Resource Engineering, Inc. Cryptographic co-processor
FR2790844B1 (fr) * 1999-03-09 2001-05-25 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
DE10061997A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
DE602004031719D1 (de) * 2004-07-01 2011-04-21 Texas Instruments Inc Verfahren und System zur Überprüfung der Ausführung einer Eingabesequenz eines sicheren Modus
US20060059369A1 (en) * 2004-09-10 2006-03-16 International Business Machines Corporation Circuit chip for cryptographic processing having a secure interface to an external memory
US7739517B2 (en) * 2005-03-31 2010-06-15 Intel Corporation Hardware-based authentication of a software program
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
US9177153B1 (en) * 2005-10-07 2015-11-03 Carnegie Mellon University Verifying integrity and guaranteeing execution of code on untrusted computer platform
CN101196965A (zh) * 2006-12-07 2008-06-11 上海安创信息科技有限公司 防攻击高级加密标准的加密芯片的算法
EP2262259A1 (en) * 2009-06-08 2010-12-15 Nagravision S.A. Method for monitoring execution of data processing program instructions in a security module
US8904189B1 (en) * 2010-07-15 2014-12-02 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
CN103888254B (zh) * 2012-12-21 2017-05-31 阿里巴巴集团控股有限公司 一种网络验证信息的方法和装置
CN103279700A (zh) * 2013-06-08 2013-09-04 北京时代奥视数码技术有限公司 液晶监视器的固件版本验证方法和液晶监视器
KR101584221B1 (ko) * 2013-10-18 2016-01-19 삼성전자주식회사 Crum 칩 및 이를 포함하는 소모품 유닛을 검증하는 화상형성장치와 그 방법
US10783250B2 (en) * 2014-07-24 2020-09-22 Nuvoton Technology Corporation Secured master-mediated transactions between slave devices using bus monitoring

Also Published As

Publication number Publication date
WO2018024797A1 (en) 2018-02-08
DK3494509T3 (da) 2021-10-25
CN109891425A (zh) 2019-06-14
US20190187994A1 (en) 2019-06-20
EP3494509B1 (en) 2021-09-29
US11314518B2 (en) 2022-04-26
CN109891425B (zh) 2022-11-15
EP3494509A1 (en) 2019-06-12
KR102422351B1 (ko) 2022-07-19
EP3279826A1 (en) 2018-02-07
KR20190038609A (ko) 2019-04-08

Similar Documents

Publication Publication Date Title
US9842212B2 (en) System and method for a renewable secure boot
Sun et al. OAT: Attesting operation integrity of embedded devices
US11843705B2 (en) Dynamic certificate management as part of a distributed authentication system
US11809544B2 (en) Remote attestation for multi-core processor
US9094190B2 (en) Method of managing key for secure storage of data and apparatus therefor
ES2938771T3 (es) Verificación de integridad de hardware
US8438658B2 (en) Providing sealed storage in a data processing device
US20160028728A1 (en) Implementing access control by system-on-chip
BR112019010368B1 (pt) Método para processar uma solicitação de serviço e dispositivo para processar uma solicitação de serviço
KR20170095161A (ko) 시큐어 시스템 온 칩
ES2894890T3 (es) Verificación de secuencias
US20160188874A1 (en) System and method for secure code entry point control
JP2017504267A (ja) セキュアブート中のキー抽出
EP3646224B1 (en) Secure key storage for multi-core processor
TWI742442B (zh) 受保護系統及其保護方法
TWI801468B (zh) 用於保護電子裝置之安全性之設備、方法及系統以及相關的微控制器
US20230134324A1 (en) Managing storage of secrets in memories of baseboard management controllers
US20240111909A1 (en) Governing responses to resets responsive to tampering activity detection
US20240111862A1 (en) Detecting and responding to environmental condition-induced security attacks on semiconductor packages
TW202240591A (zh) 唯讀記憶體(rom)安全性
TW202240406A (zh) 唯讀記憶體(rom)安全性
CN117807644A (zh) 响应于篡改活动检测而管控对复位的响应