Procedimiento de preservación de la seguridad de una ramificación condicional, soporte de informaciones, programa y sistema asegurado para ese procedimiento.
Procedimiento de preservación de la seguridad de una ramificación condicional contra ataques por inyección deerror,
autorizando esta ramificación condicional la ejecución de un tratamiento específico sobre un dato D si unaexpresión booleana entre uno o varios operandos se verifica y, si no, prohibiendo la ejecución de este tratamientoespecífico sobre el dato D, comprendiendo este procedimiento la ejecución de la ramificación condicional con laayuda de la sucesión siguiente de operaciones:
Tipo: Patente Internacional (Tratado de Cooperación de Patentes). Resumen de patente/invención. Número de Solicitud: PCT/EP2008/066568.
Solicitante: VIACCESS.
Nacionalidad solicitante: Francia.
Dirección: LES COLLINES DE L'ARCHE TOUR OPÉRA C 92057 PARIS LA DÉFENSE FRANCIA.
Inventor/es: LEPORINI,David, GADACHA,Haythem.
Fecha de Publicación: .
Clasificación Internacional de Patentes:
- G06F21/00 FISICA. › G06 CALCULO; CONTEO. › G06F PROCESAMIENTO ELECTRICO DE DATOS DIGITALES (sistemas de computadores basados en modelos de cálculo específicos G06N). › Disposiciones de seguridad para la protección de computadores, sus componentes, programas o datos contra actividades no autorizadas.
- G06F21/02
- G06F21/24
PDF original: ES-2385070_T3.pdf
Fragmento de la descripción:
Procedimiento de preservación de la seguridad de una ramificación condicional, soporte de informaciones, programa y sistema asegurado para ese procedimiento La invención se refiere a un procedimiento de preservación de la seguridad de una ramificación condicional contra ataques por inyección de errores así como a un soporte de informaciones y un sistema asegurado contra tales ataques.
Por ramificación condicional, se designa una instrucción que autoriza la ejecución de un tratamiento específico sobre los datos D únicamente si una expresión booleana entre uno o varios operandos se verifica y que, si no, prohíbe la ejecución del tratamiento específico sobre los datos D. En los lenguajes de programación de alto nivel, esta instrucción se escribe frecuentemente en la forma siguiente: “si [expresión booleana] entonces [tratamiento específico de D] si no [tratamiento por omisión]”. En casos particulares, no hay tratamiento por omisión de manera que la cláusula “si no” se puede omitir. En todo caso, se encuentran numerosas ramificaciones condicionales en instrucciones que no se escriben necesariamente en la forma “si… entonces… si no…”. Por ejemplo, una instrucción “conmutar” se descompone en varias ramificaciones condicionales aunque no aparece ninguna instrucción del tipo “si… entonces… si no…” en la escritura en lenguaje de alto nivel. Más precisamente, en lenguaje de alto nivel, una instrucción conmutar se puede escribir como sigue:
conmutar (V) [ caso Vc: tratamiento específico 1, caso V’c: tratamiento específico 2 omisión: ruptura
25 ]
Se designa por la locución “expresión booleana” una expresión que, cuando se evalúa, devuelve o bien el valor “verdadero” o bien el valor “falso”. Se dice de una expresión booleana que se verifica si el resultado es igual a “verdadero”, y que no se verifica si el resultado es igual a “falso”. El resultado de la evaluación de la expresión booleana es por tanto un booleano, es decir un valor verificable con ayuda de un único bit de información.
Se define un dato booleano como un dato cuyo valor es o bien igual a “verdadero” o bien igual a “falso”. El valor de un dato booleano es por tanto codificable sistemáticamente con la ayuda de un único bit de información. A la inversa, un dato no booleano es un dato que puede tomar estrictamente más de dos valores diferentes. Un dato no booleano no es codificable por tanto sistemáticamente con la ayuda de un único bit de información.
Una ramificación condicional se asocia por tanto a una expresión booleana que comprende uno o varios operandos. Por ejemplo, la expresión booleana puede ser:
- una expresión de igualdad que devuelve el valor “verdadero” si los operandos son iguales y el valor “falso” en el caso contrario,
- una expresión de desigualdad que devuelve el valor “verdadero” si los operandos son valores diferentes y el valor
“falso” en el caso contrario, 45
- una expresión de superioridad que devuelve el valor “verdadero” si el primer operando es superior al segundo y el valor “falso” en el caso contrario,
- una expresión de inferioridad que devuelve el valor “verdadero” si el primer operando es inferior al segundo y el valor “falso” en el caso contrario.
Por último, en el presente documento, se designa igualmente por la expresión “codificado” o “codificación” toda operación que pretenda convertir en ininteligible un dato para un tercero que no disponga de las informaciones necesarias para reconstruir el dato de origen. Típicamente, las codificaciones complejas es decir aquellas que 55 utilizan una cantidad importante de recursos informáticos, utilizan un algoritmo de codificación parametrizado por una clave de codificación. En el caso de un algoritmo simétrico, la clave de codificación se utiliza igualmente para la decodificación. En el caso de un algoritmo asimétrico, la clave de decodificación es distinta a la clave utilizada para la codificación. El algoritmo de codificación es o bien público o bien secreto. La clave de codificación es siempre secreta cuando se trata de un algoritmo de codificación simétrico y al menos una de las claves, denominada privada, es secreta cuando se trata de un algoritmo de codificación asimétrico. Para un algoritmo de codificación dado, cuanto más larga sea la clave de codificación más elevada será la seguridad. Por ejemplo, las claves se codifican al menos con 32 bits y preferiblemente con más de 128 bits para el algoritmo simétrico AES (Advanced Encr y ption Standard) o más de 1024 bits para un algoritmo asimétrico RSA (Rivest, Shamir & Adleman) . Existen también unas codificaciones simples, es decir que necesitan menos recursos informáticos para ser ejecutadas. Un ejemplo de 65 codificación simple es el enmascaramiento de un dato. En el enmascaramiento consiste por ejemplo en combinar el dato a enmascarar con un número aleatorio conservado secreto.
Un ataque por inyección de errores, conocido igualmente bajo la expresión inglesa de “fault attack”, consiste en obligar a un procesador a no ejecutar o ejecutar mal unas instrucciones. Por ejemplo, para ello, las condiciones medioambientales del procesador se perturban voluntariamente. Por ejemplo, se somete al procesador a bruscos incrementos de temperatura o se modifica la señal de alimentación eléctrica o la señal de reloj. Es posible también exponer al procesador a unos impulsos láser, unas emisiones electromagnéticas o unas radiaciones de partículas radiactivas.
Los errores que se provocan de ese modo durante la ejecución de un programa implican unas modificaciones, principalmente aleatorias, de los bits de datos o de los saltos de instrucción. Por ejemplo, estos errores pueden provocar una modificación de la dirección pasada como argumento a una institución de salto o una modificación de la instrucción de salto en sí.
Las ramificaciones condicionales son muy particularmente vulnerables a este tipo de ataques. En efecto, un ataque por inyección de errores, puede permitir activar la ejecución de un tratamiento específico independientemente de la evaluación de la expresión booleana asociada a la “ramificación condicional”. Estas ramificaciones son por tanto más susceptibles de ser atacadas por este tipo de método cuando se sitúan o realizan en el interior de una rutina de seguridad decisional como por ejemplo la verificación de una firma numérica, la verificación de un MAC (Message Authentification Code) o un control de coherencia por medio de unas funciones de codificación.
Se han propuesto ya diferentes soluciones para preservar la seguridad de una ramificación contra los ataques por inyección de errores. Estas soluciones utilizan esencialmente la redundancia de las instrucciones para hacer más difícil la no ejecución de una ramificación condicional en un programa. La solicitud de patente WO 2007/006 887 describe un ejemplo de una solución así.
El estado de la técnica se divulga igualmente en el documento siguiente
- lan Logan, Frank O’Hara, “The complete Timex TS1000/Sinclair ZX81 ROM disassembly”, publicado por Leighton
Buzzard Melbourne House, copyright 1982, ISBN 08616111136 que muestra desde la dirección 03D5 el código SBC 30 HL, BC seguido de ADD ML, BC.
La implementación de estas soluciones continúa no obstante siendo difícil principalmente porque requiere frecuentemente una organización particular de la memoria del procesador La invención trata de solucionar este inconveniente proponiendo un procedimiento de preservación de la seguridad de una ramificación condicional contra los ataques por inyección de errores más fácil de implementar.
Tiene por tanto por objetivo un procedimiento de acuerdo con la reivindicación 1.
En el procedimiento anterior, la ramificación condicional se sustituye por una sucesión de operaciones a) y b) para si la expresión booleana se verifica o no: esto viene por tanto a sustituir a las dos ramificaciones (la ramificación seguida si la expresión booleana da el resultado “verdadero” y la ramificación seguida si la expresión booleana da el resultado “falso”) y la ramificación condicional implementada en la forma de un “si… entonces… si no…”... [Seguir leyendo]
Reivindicaciones:
1. Procedimiento de preservación de la seguridad de una ramificación condicional contra ataques por inyección de error, autorizando esta ramificación condicional la ejecución de un tratamiento específico sobre un dato D si una expresión booleana entre uno o varios operandos se verifica y, si no, prohibiendo la ejecución de este tratamiento específico sobre el dato D, comprendiendo este procedimiento la ejecución de la ramificación condicional con la ayuda de la sucesión siguiente de operaciones:
a) el cálculo (36, 48, 50; 84, 88, 90) , con la ayuda de un procesador de seguridad, de un dato D’ a partir del dato D y de los operandos de la expresión booleana de manera que el dato D’ sea idéntico al dato D si y solamente si la expresión booleana se verifica y que el dato D’ tenga un valor distinto, denominado no válido, si la expresión booleana no se verifica, estando codificado el dato D’ sobre varios bits, y b) la utilización (56; 92) del dato D’ el lugar del dato D durante toda la ejecución del tratamiento específico; 15 caracterizado porque el cálculo del dato D’ comprende:
c) la transformación (36; 88) , con la ayuda de una función invertible, del dato D para producir un dato diferente D* a partir del que no es posible reconstruir el dato D sin alguna otra información, d) la construcción (50; 90) del dato D’ a partir del dato D* y de los operandos utilizados para evaluar la expresión booleana de manera que el dato D’ sea idéntico al dato D si y solamente si la expresión booleana se verifica y que el dato D’ tenga un valor distinto, denominado no válido, si la expresión booleana no se verifica.
2. Procedimiento de acuerdo con la reivindicación 1, en el que:
- el procedimiento comprende la combinación (48) de los operandos utilizados para evaluar la expresión booleana de manera que se obtenga un resultado R no booleano que tenga un valor X si y solamente si la expresión booleana se verifica, estando codificado el resultado R sobre varios bits,
- la operación c) es una operación de codificación (36) del dato D utilizando un algoritmo de codificación y el valor X como la clave de codificación para obtener el dato D* y
- durante la operación d) , el dato D* se decodifica (50) utilizando un algoritmo de decodificación y el resultado R 35 como la clave de decodificación para construir el dato D’.
3. Procedimiento de acuerdo con la reivindicación 2, en el que el valor X es función del dato D.
4. Procedimiento de acuerdo con la reivindicación 1, en el que la operación c) es una operación de enmascarado
(88) del dato D con la ayuda de un número aleatorio.
5. Procedimiento de acuerdo con una cualquiera de las reivindicaciones precedentes, en el que el procedimiento comprende:
45. antes del cálculo del dato D’, la adición (34) al dato D de bits suplementarios de acuerdo con una sintaxis conocida para tener un dato D con una sintaxis identificable,
- el cálculo del dato D’ a partir del dato D con una sintaxis identificable,
- antes de la ejecución del tratamiento específico o durante su ejecución, la verificación (52) de la sintaxis del dato D’ parar detectar la implementación de un ataque por inyección de errores.
6. Procedimiento de acuerdo con una cualquiera de las reivindicaciones precedentes, en el que la expresión booleana es una expresión de igualdad entre varios operandos. 55
7. Soporte del registro de informaciones, caracterizado porque este soporte comprende unas instrucciones para la ejecución de las operaciones a) , b) y d) de un procedimiento de preservación de la seguridad de acuerdo con una cualquiera de las reivindicaciones precedentes, cuando estas instrucciones se ejecutan por un calculador electrónico.
8. Programa de ordenador, caracterizado porque este programa comprende unas instrucciones para la ejecución de las operaciones a) , b) y d) de un procedimiento de preservación de la seguridad de acuerdo con una cualquiera de las reivindicaciones 1 a 6, cuando estas instrucciones se ejecutan por un calculador electrónico.
65 9. Sistema asegurado contra ataques a una ramificación condicional por inyección de errores, autorizando esta ramificación condicional la ejecución de un tratamiento específico sobre un dato D si una expresión booleana entre uno o varios operandos se verifica y, si no, prohibiendo la ejecución de este tratamiento específico sobre el dato D, comprendiendo este sistema:
- unos medios de cálculo con la ayuda de un procesador de seguridad de un dato D’ a partir del dato D y de los
operandos de la expresión booleana de manera que el dato D’ sea idéntico al dato D si y solamente si la expresión booleana se verifica y que el dato D’ tenga un valor distinto, denominado no válido, si la expresión booleana no se verifica, estando codificado el dato D’ sobre varios bits, y
- un módulo (20) adecuado para ejecutar el tratamiento específico sobre el dato D’ el lugar del dato D cada vez que 10 el tratamiento específico deba ser ejecutado;
caracterizado porque:
- el sistema comprende un módulo (10) de codificación adecuado para transformar, con la ayuda de una función
invertible, del dato D para producir un dato diferente D* a partir del que no es posible reconstruir el dato D sin alguna otra información,
- los medios de cálculo son adecuados para construir el dato D’ a partir del dato D* y de los operandos utilizados para evaluar la expresión booleana de manera que el dato D’ sea idéntico al dato D si y solamente si la expresión
booleana se verifica, y que el dato D’ tenga un valor distinto, denominado no válido, si la expresión booleana no se verifica.
10. Sistema de acuerdo con la reivindicación 9, en el que el procesador de seguridad es adecuado para ejecutar al menos una operación de cálculo del dato D’.
Patentes similares o relacionadas:
Funcionamiento de red de frecuencia única (SFN) para mejoras de cobertura de comunicaciones de tipo máquina (MTC), del 17 de Junio de 2020, de QUALCOMM INCORPORATED: Un procedimiento para comunicaciones de tipo máquina, MTC, inalámbricas realizado por un dispositivo remoto caracterizado por: detectar […]
Método y aparato de procesamiento de servicio, del 3 de Junio de 2020, de Advanced New Technologies Co., Ltd: Un método para el procesamiento de servicios, el método que comprende: después de recibir una solicitud de procesamiento de servicios de un usuario, […]
Dispositivo de a bordo para un vehículo, del 20 de Mayo de 2020, de AUTOSTRADE TECH S.p.A: Dispositivo de a bordo (100, 100', 100") para un vehículo, siendo adecuado dicho dispositivo de a bordo (100, 100', 100") para su uso en un sistema […]
Método para detectar software clonado, del 29 de Abril de 2020, de NAGRAVISION S.A.: Método para detectar un software clonado para ser usado en una unidad de usuario cliente que se comunica con un servidor para solicitar un servicio enviando una solicitud […]
Dispositivo multimedia y procedimiento de transmisión de datos por un dispositivo multimedia, del 18 de Marzo de 2020, de FM Marketing GmbH: Un dispositivo multimedia con un control remoto , que comprende: - un primer microprocesador , - un primer dispositivo de hardware para identificar el control […]
Proceso para asegurar la comunicación de un archivo digital a través de una red de comunicación, del 26 de Febrero de 2020, de AMADEUS S.A.S.: Proceso para comunicar un archivo digital (D1) desde un servidor a un Sistema de Manejo de Información (IHS), comprendiendo el IHS un conjunto […]
Método y aparato para proporcionar entorno virtual personalizado, del 15 de Enero de 2020, de Beijing Xiaomi Mobile Software Co., Ltd: Un método realizado por una plataforma de servicios para proporcionar acceso a una comunidad de servicios que comprende: comparar la información de identificación […]
Procedimiento y dispositivo para controlar la pantalla de seguridad en un dispositivo electrónico, del 28 de Agosto de 2019, de SAMSUNG ELECTRONICS CO., LTD.: Un dispositivo electrónico que comprende: un módulo de representación; una primera memoria que tiene datos de representación almacenados en […]