Método de implementación de un procesador para garantizar la integridad de un software.

Método de implementación de un procesador para garantizar la integridad de un software en una memoria deprograma,

dicho software comprendiendo una pluralidad de instrucciones cifradas, una instruccióncomprendiendo al menos un opcode, dicho método usando una clave de instrucción inicializada ycomprendiendo los etapas siguientes de:

- lectura de una instrucción corriente cifrada,

- uso de la clave de instrucción para descifrar al menos parte de la instrucción corriente cifrada,

- actualización de la clave de instrucción usando un cálculo basado en un resumen del valor corriente de laclave de instrucción y un resumen de la instrucción corriente, de tal modo que la siguiente instrucción cifrada aleer se puede descifrar con la clave de instrucción actualizada,

- ejecución de la instrucción corriente.

Tipo: Patente Europea. Resumen de patente/invención. Número de Solicitud: E09166439.

Solicitante: NAGRAVISION S.A..

Nacionalidad solicitante: Suiza.

Dirección: Route de Genève 22-24 1033 Cheseaux-sur-Lausanne.

Inventor/es: KUDELSKI,HENRI, MACCHETTI,MARCO.

Fecha de Publicación: .

Clasificación Internacional de Patentes:

  • G06F21/22

PDF original: ES-2390796_T3.pdf

 

Método de implementación de un procesador para garantizar la integridad de un software.

Fragmento de la descripción:

Método de implementación de un procesador para garantizar la integridad de un software

INTRODUCCIÓN

La presente invención se refiere al campo de protección de software y más particularmente a un dispositivo y a un medio de protección de un software, destinados a garantizar la integridad de una unidad de software.

ESTADO DE LA TÉCNICA

En el campo del tratamiento seguro de datos, se debe proveer un entorno inviolable al interior del cual el tratamiento se puede desarrollar de forma segura. Un primer enfoque para luchar contra el problema de seguridad de aplicaciones se centraba en el esfuerzo por hacer que el hardware en el que se alojaba el software fuera lo más seguro posible. La noción de protección contra manipulaciones significaba entonces que dicho hardware era difícil de abrir o que una vez abierto, se destruiría el chip sobre el cual residía el software seguro. No obstante, se ha comprobado actualmente que de forma general las técnicas de software que permiten obtener una seguridad de aplicación ofrecen más flexibilidad y costes inferiores y de hecho en la mayoría de los casos en los que una buena seguridad de aplicación implica la garantía de que una unidad de software no ha sido manipulada, se utiliza una combinación de enfoques de software y de hardware.

Un sistema típico sobre el que funciona una aplicación comprende generalmente una unidad de procesamiento, una pluralidad de periféricos y una memoria. En la mayoría de los casos en los que se requiere seguridad, se utilizan esquemas de cifrado. En tales esquemas, la información que se debe proteger, es decir los datos a tratar o un código ejecutable, es cifrada. El cifrado se realiza normalmente dentro de un módulo de seguridad que forma parte del sistema. El módulo de seguridad se puede instalar de varias maneras, por ejemplo en una tarjeta de microprocesador, una tarjeta inteligente o en cualquier módulo electrónico en forma de etiqueta de identificación o de clave. Estos módulos son generalmente portátiles y amovibles del receptor y se diseñan para ser inviolables. La forma más comúnmente usada tiene contactos eléctricos, pero también existen versiones sin contacto de tipo ISO 14443.

Otra implementación del módulo de seguridad existe en la que este último es soldado directamente dentro del receptor, una variación de esto siendo un circuito en un enchufe o un conector tal como un módulo SIM. Otra implementación más consiste en integrar el módulo de seguridad en un chip que tenga otra función, por ejemplo en un módulo de desaleatorización o en un módulo de microprocesador de un decodificador. El módulo de seguridad también se puede instalar en el software.

A pesar del uso de módulos de seguridad y de técnicas de cifrado avanzadas en los sistemas modernos actuales de tratamiento seguro, tales sistemas siguen siendo vulnerables a los intentos de violación de la seguridad. Las técnicas utilizadas para violar la seguridad de tales sistemas incluyen por ejemplo, la ingeniería inversa del hardware implicado o el análisis estático o dinámico del software usado allí y la manipulación consecuente con dicho software. Se hace referencia con análisis estático a alguna forma de desensamblaje o de descompilación de código no aplicable. Se hace referencia con análisis dinámico a un análisis llevado a cabo durante el uso del código, es decir mediante la observación de ciertas señales durante el uso del software. Tales análisis pueden conducir a la manipulación fraudulenta mediante la cual se modifica el software, por ejemplo, mediante un ataque por interferencia de rama donde un salto incondicional se introduce en lugar de un salto condicional de manera a forzar la ejecución de una rama cuando las condiciones actuales no prescriben dicha ejecución. Típicamente, tal ataque forzaría una programa a evitar una fase de autentificación como un número de serie o un control de contraseña por ejemplo.

En un documento titulado "Resistencia frente a manipulaciones fraudulentas para la Protección de un Software", presentado en 2005 en una tesis para la obtención de un Master en Ciencias, Ping Wang describe una técnica de cifrado por bloque múltiple, donde una programa de software se divide en varios bloques independientes según el flujo del programa. Cada bloque del programa es cifrado después, y cada bloque posee una clave de cifrado diferente. La clave de cifrado para cada bloque es el valor hash del bloque precedente según el flujo del programa. Esta técnica funciona en programas que tienen una estructura en forma de árbol donde los bloques se disponen de forma jerárquica con un bloque conduciendo a otro. En esta técnica, el primer bloque a ejecutar debe estar en lenguaje claro. Un código para llamar a la rutina de descifrado se dispone al interior de cada uno de los bloques y un controlador de programa para implementar el control de integridad dinámica se añade al final del programa. Si un adversario intenta cambiar una parte del programa, entonces el valor hash para el bloque que contiene la parte cambiada del programa será diferente y así el bloque siguiente no será descifrado correctamente y el programa no funcionará.

Este esquema presenta en consecuencia la desventaja de que cada bloque debe ser leído dos veces. Otra desventaja es que el cifrado se efectúa en un bloque por base de bloque en vez de una instrucción por base de instrucción, con una clave de descifrado válida para un bloque entero. Esto significa que el descubrimiento de una clave vuelve vulnerable un bloque entero de software. El tamaño más pequeño del bloque se determina por el bloque más pequeño que incluye enteramente un bucle, ya que en este diseño, por definición, un bloque debe contener un bucle completo. Aunque se pudiera reducir un programa a una sola instrucción por bloque en caso de no tener ningún bucle, la sobrecarga resultante de la implementación del método produciría un resultado final difícil de manipular en términos de tamaño y de velocidad de ejecución. Además, se puede imaginar un ataque eventual donde se aplique una modificación a un bloque y un cambio correspondiente se aplique al controlador de programa para compensar la modificación de modo que éste calcule el valor hash apropiado con respecto a la modificación aplicada al bloque preservando así la integridad percibida del programa.

El documento EP-0908810-A2 divulga un procesador seguro con una memoria externa usando un encadenamiento de bloques y un reordenamiento de bloques donde la información de autentificación es XORed con el último bloque de datos en claro (por ejemplo la información de programa) y se descifra opcionalmente para producir un valor de verificación, con el fin de permitir la verificación de la integridad de cada bloque.

La presente invención permite que el código ejecutable exista en formato cifrado, donde el cifrado se efectúa en una instrucción por una base de instrucción y no requiere que las instrucciones sean leídas dos veces. El esquema se puede realizar completamente en el hardware con la ventaja inherente de que las claves de cifrado no aparecen nunca en un sitio donde puedan ser vulnerables y interceptadas. No hay sobrecarga de software y por lo tanto la velocidad de ejecución aumenta de forma importante. En la técnica anterior, la clave de cifrado para el siguiente bloque depende sólo del contenido de un bloque precedente. En la presente invención la clave de cifrado puede depender de una acumulación de varios valores de claves de cifrado precedentes. Por ejemplo, la clave de descifrado de la próxima instrucción se puede basar en la instrucción actual combinada con una acumulación de las claves para las dos instrucciones precedentes.

BREVE RESUMEN DE LA INVENCIÓN

La presente invención tiene como objetivo resolver el problema de la seguridad causado por el análisis de software y la modificación fraudulenta subsecuente de dicho software, mientras que se minimiza la sobrecarga con el fin de realizar la solución y que ésta se vuelva flexible y se pueda aplicar a sistemas que usan un software de muchos tipos de estructura diferentes. Esto se consigue mediante el uso de un método implementado por un procesador para asegurar la integridad de un software en una memoria de programa, dicho software comprendiendo una pluralidad de instrucciones cifradas, una instrucción comprendiendo al menos un opcode, dicho método usando una clave de instrucción inicializada y comprendiendo las siguientes fases de:

- lectura de una instrucción corriente cifrada,

- uso... [Seguir leyendo]

 


Reivindicaciones:

1. Método de implementación de un procesador para garantizar la integridad de un software en una memoria de programa, dicho software comprendiendo una pluralidad de instrucciones cifradas, una instrucción comprendiendo al menos un opcode, dicho método usando una clave de instrucción inicializada y comprendiendo los etapas siguientes de:

- lectura de una instrucción corriente cifrada,

- uso de la clave de instrucción para descifrar al menos parte de la instrucción corriente cifrada,

- actualización de la clave de instrucción usando un cálculo basado en un resumen del valor corriente de la clave de instrucción y un resumen de la instrucción corriente, de tal modo que la siguiente instrucción cifrada a leer se puede descifrar con la clave de instrucción actualizada,

- ejecución de la instrucción corriente.

2. Método según la reivindicación 1, donde una primera instrucción en la memoria de programa no está cifrada.

3. Método según la reivindicación 1 o 2, donde la instrucción corriente comprende también una marca de autentificación, dicha marca de autentificación siendo usada para autenticar dicha instrucción antes de la ejecución.

4. Método según cualquiera de las reivindicaciones 1 a 3, donde una modificación se aplica a la clave de instrucción, dicha modificación permitiendo el descifrado de la siguiente instrucción cifrada por medio de dicha clave de instrucción modificada para proporcionar una instrucción ejecutable.

5. Método según la reivindicación 4, donde la instrucción corriente comprende además un valor de modificación que se debe utilizar para realizar la modificación, dicho valor de modificación siendo extraído del valor de instrucción y actuando sobre la fase de actualización mientras que se determina la siguiente clave de cifrado.

6. Método según cualquiera de las reivindicaciones 1 a 5, donde cualquiera o todos los procesos de descifrado de una instrucción cifrada, de actualización de la clave de instrucción, de autenticación de la instrucción corriente o de la ejecución de la instrucción corriente se realizan dentro de un módulo de seguridad.

7. Método según cualquiera de las reivindicaciones 1 a 6, donde dicho resumen es un resultado de una función aplicada a toda o a una parte de dicha instrucción corriente, dicha función siendo seleccionada en el grupo que consiste en una función lógica, función aritmética, función criptográfica o función unidireccional.

8. Método según cualquiera de las reivindicaciones 1 a 7, donde la actualización de la clave de instrucción se basa posteriormente en un valor de modificación, dicho valor de modificación siendo usado para otorgar a la clave de instrucción un valor conocido.

9. Método según cualquiera de las reivindicaciones 1 a 8, donde se utiliza una clave maestra para inicializar la clave de instrucción.

10. Dispositivo comprendiendo un contador de programa (PC) y una memoria de programa (PMEM) para memorizar un programa cifrado, dicho programa cifrado comprendiendo una pluralidad de instrucciones cifradas (INST') , dichas instrucciones comprendiendo al menos un opcode, dicho dispositivo comprendiendo además un módulo de descifrado (DECR) y una unidad de tratamiento de datos (SCPU) , dicho dispositivo teniendo acceso a una clave de instrucción inicializada (KI) , donde dicho dispositivo se caracteriza por el hecho de comprender también medios para actualizar recursivamente la clave de instrucción (KI) en base a toda o a una parte de dicha clave de instrucción y un resumen de al menos una instrucción ejecutada previamente.

11. Dispositivo según la reivindicación 10, donde los medios para actualizar recursivamente la clave de instrucción se realizan en el hardware.

12. Dispositivo según cualquiera de las reivindicaciones 10 u 11, donde la actualización de la clave de instrucción se basa también en un valor de modificación, dicho valor de modificación siendo utilizado para otorgar a la clave de instrucción un valor conocido.


 

Patentes similares o relacionadas:

Imagen de 'Ejecución controlada de un programa por un soporte portátil de…'Ejecución controlada de un programa por un soporte portátil de datos, del 19 de Julio de 2013, de GIESECKE & DEVRIENT GMBH: Un procedimiento para la ejecucion controlada de un programa por un soporte portatil de datos quecomprende una memoria de programas, un nixie° […]

Herramienta informática de gestión de documentos numéricos, del 24 de Abril de 2013, de INRIA INSTITUT NATIONAL DE RECHERCHE EN INFORMATIQUE ET EN AUTOMATIQUE: Dispositivo informático de gestión de documentos, que comprende una memoria para almacenar contenidos de documentos, que tienen referencias de temporalidad, […]

Imagen de 'PROYECCIÓN DE FIABILIDAD DESDE UN ENTORNO DE CONFIANZA A UN ENTORNO…'PROYECCIÓN DE FIABILIDAD DESDE UN ENTORNO DE CONFIANZA A UN ENTORNO SIN CONFIANZA, del 13 de Marzo de 2012, de MICROSOFT CORPORATION: Un sistema adaptado para ejecutar sistemas operativos plurales en un único procesador, comprendiendo el sistema: un entorno operativo sin confianza que comprende […]

INICIO DE SESIÓN EN APLICACIONES DE SOPORTE LÓGICO QUE TIENEN CARACTERÍSTICAS DE SUGURIDAD, del 5 de Marzo de 2012, de MICROSOFT CORPORATION: Un procedimiento de inicio de sesión en una aplicación de soporte lógico, en el que la aplicación de soporte lógico tiene una o más características de seguridad, que […]

Imagen de 'OFUSCACION DE LOS RASTROS DE EJECUCION DE UN CODIGO DE PROGRAMA…'OFUSCACION DE LOS RASTROS DE EJECUCION DE UN CODIGO DE PROGRAMA DE ORDENADOR, del 28 de Mayo de 2010, de TELEFONAKTIEBOLAGET LM ERICSSON (PUBL): Un método implementado por ordenador de generación de código de programa de ordenador protegido contra la manipulación, el método que comprende: - obtener una representación […]

Imagen de 'UNIDAD DE CONTROL'UNIDAD DE CONTROL, del 1 de Julio de 2008, de GIESECKE & DEVRIENT GMBH SECARTIS AG: Unidad de mando , dotada de un microprocesador, con una memoria programable, con una caja y con, como mínimo, una línea de datos que sale […]

Imagen de 'PROTECCION DE SISTEMAS DE ORDENADORES'PROTECCION DE SISTEMAS DE ORDENADORES, del 1 de Mayo de 2008, de QINETIQ LIMITED: Un sistema de ordenadores para recibir datos que entran desde una fuente externa , estando dispuesto el sistema de ordenadores para proporcionar […]

Imagen de 'PROCEDIMIENTO DE UTILIZACION DE PROGRAMAS INFORMATICOS Y SISTEMA…'PROCEDIMIENTO DE UTILIZACION DE PROGRAMAS INFORMATICOS Y SISTEMA INFORMATICO PARA SU APLICACION, del 1 de Mayo de 2008, de GEMPLUS: Procedimiento asegurado de utilización de un programa informático en un microordenador que consiste en introducir un soporte de memorización electrónico amovible […]

Utilizamos cookies para mejorar nuestros servicios y mostrarle publicidad relevante. Si continua navegando, consideramos que acepta su uso. Puede obtener más información aquí. .