FR2818772A1 - Procede de securisation d'un operateur logique ou mathematique implante dans un module electronique a microprocesseur, ainsi que le module electronique et le systeme embarque associes - Google Patents
Procede de securisation d'un operateur logique ou mathematique implante dans un module electronique a microprocesseur, ainsi que le module electronique et le systeme embarque associes Download PDFInfo
- Publication number
- FR2818772A1 FR2818772A1 FR0016723A FR0016723A FR2818772A1 FR 2818772 A1 FR2818772 A1 FR 2818772A1 FR 0016723 A FR0016723 A FR 0016723A FR 0016723 A FR0016723 A FR 0016723A FR 2818772 A1 FR2818772 A1 FR 2818772A1
- Authority
- FR
- France
- Prior art keywords
- operator
- sep
- sequence
- execution
- electronic module
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/75—Protecting 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 by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting 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 by inhibiting the analysis of circuitry or operation with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/77—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
- G07F7/0806—Details of the card
- G07F7/0833—Card having specific functional components
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Le procédé de sécurisation d'un opérateur logique ou mathématique, en l'espèce l'opérateur XOR, utilisable dans l'exécution d'un programme dans un module électronique à microprocesseur est caractérisé en ce que l'exécution de l'opérateur XOR est remplacée par l'exécution (CAL-XORSEC (i) ) d'une séquence Si d'opérations ayant pour résultat final un résultat identique au résultat de la fonction XOR. La séquence d'opérations Si, en l'espèce composée d'opérations élémentaires à base de AND (ou ET), OR (ou OU) et NOT (ou NON), est choisie à chaque appel de l'opérateur XOR parmi un ensemble de huit séquences équivalentes (S1 à S8) après détermination (CAL-NDO) d'un numéro d'ordre NDO = i en fonction de paramètres du programme et/ ou d'un paramètre aléatoire R fourni par un générateur de nombres pseudo-aléatoires (24).
Description
<Desc/Clms Page number 1>
PROCEDE DE SECURISATION D'UN OPERATEUR LOGIQUE OU
MATHEMATIQUE IMPLANTE DANS UN MODULE ELECTRONIQUE A
MICROPROCESSEUR, AINSI QUE LE MODULE ELECTRONIQUE ET LE
SYSTEME EMBARQUE ASSOCIES La présente invention concerne la sécurisation des systèmes embarqués comportant un ou plusieurs modules électroniques incorporant au moins un microprocesseur, une mémoire de type ROM contenant au moins un programme à exécuter et des moyens d'entrée/sortie pour communiquer avec l'extérieur. Certains modules comportent également d'autres circuits accessoires tels des mémoires RAM, EEPROM pour des applications plus élaborées et sont également connus sont le nom de microcontrôleurs.
MATHEMATIQUE IMPLANTE DANS UN MODULE ELECTRONIQUE A
MICROPROCESSEUR, AINSI QUE LE MODULE ELECTRONIQUE ET LE
SYSTEME EMBARQUE ASSOCIES La présente invention concerne la sécurisation des systèmes embarqués comportant un ou plusieurs modules électroniques incorporant au moins un microprocesseur, une mémoire de type ROM contenant au moins un programme à exécuter et des moyens d'entrée/sortie pour communiquer avec l'extérieur. Certains modules comportent également d'autres circuits accessoires tels des mémoires RAM, EEPROM pour des applications plus élaborées et sont également connus sont le nom de microcontrôleurs.
De tels modules sont réalisés le plus souvent sous la forme d'un microcircuit électronique intégré monolithique, ou puce. Ces modules peuvent être utilisés d'une part comme tels une fois protégés physiquement et montés par exemple sur un objet portatif type carte à puce, carte à microcircuit ou analogue utilisable dans divers domaines, notamment le domaine des cartes bancaires et/ou commerciales, la radiotéléphonie mobile, la télévision à péage, la santé et les transports, et d'autre part dans d'autres systèmes embarqués allant par exemple de systèmes relativement simples, tels que des capteurs et des interrupteurs, vers des systèmes plus complexes tels des contrôleurs industriels, des multicommutateurs et autres sous-ensembles et appareils contrôlés électroniquement jusqu'aux systèmes industriels complets contrôlés électroniquement.
La multiplication des applications dans la vie courante des cartes à puce et autres systèmes embarqués et la généralisation de leur utilisation dans certains
<Desc/Clms Page number 2>
domaines, comme celui des cartes bancaires, des cartes santé ou de la télévision à péage a rendu nécessaire l'introduction de procédures sécuritaires, par exemple des procédures cryptographiques et/ou des procédures de brouillage de données, par exemple les données transitant sur le bus interne du microcontrôleur. Ces procédures sécuritaires concernent notamment l'authentification de l'utilisateur, l'authentification de la transaction et de sa validité, le maintien de la confidentialité des données, le cryptage/décryptage des données.
Si l'utilisation frauduleuse des cartes à puce n'est pas un phénomène nouveau, l'accroissement du volume et de la valeur des transactions sur carte à puce a amené les fraudeurs à utiliser des méthodes et des moyens de plus en plus sophistiqués. En particulier des attaques par rayonnements brefs et ciblés sur la puce ont pour conséquence de modifier les données et/ou les codes transitant de la ROM vers le microprocesseur sur le bus interne avec pour résultat l'inexécution ou l'exécution irrégulière de certaines parties du code, par exemple l'exécution d'instructions inopérantes en lieu et place d'une ou plusieurs opérations sécuritaires.
Il s'avère que le repérage précis de la position d'une opération donnée sensible (par exemple relevant du cryptage et/ou du décryptage) dans un programme encodé dans une mémoire ROM permet de mieux cibler l'attaque et d'accroître de façon significative le pouvoir de nuisance de cette dernière. Pour procéder à cette localisation, les fraudeurs utilisent la méthode dite SPA (en anglais Simple Power Analysis) qui consiste à relever la consommation de courant en certains points du microcontrôleur. La méthode SPA peut être complétée par la méthode DPA (en anglais Differential Power Analysis) basée sur l'analyse comparative des signaux. De ce point
<Desc/Clms Page number 3>
de vue il arrive que l'exécution de certaines opérations programmées (telle que l'opération XOR [OU exclusif] fréquemment utilisée en cryptage/ décryptage) révèle une signature suffisamment caractéristique pour permettre l'identification de l'opération en cause et par suite sa localisation dans le programme.
La présente invention a pour but de sécuriser certaines opérations vulnérables dans un programme, notamment les opérateurs logiques ou mathématiques ou des circuits fonctionnels analogues en rendant leurs identifications plus difficiles, voire beaucoup plus difficiles.
A cette fin l'invention propose un procédé de sécurisation d'un opérateur logique ou mathématique ou d'un circuit fonctionnel analogue utilisable dans l'exécution d'un programme dans un module électronique comprenant un microprocesseur et une mémoire, le procédé étant caractérisé en ce que l'exécution dudit opérateur par le microprocesseur est remplacée par l'exécution d'une séquence d'opérations de remplacement ayant pour résultat final un résultat identique au résultat de la fonction dudit opérateur, ledit résultat étant mémorisé dans la mémoire.
Ainsi la signature très caractéristique d'un opérateur complexe, tel que l'opérateur XOR, est remplacée par le signal d'une séquence d'opérations souvent moins complexes, mais pas nécessairement, par exemple d'une séquence d'opérations élémentaires de signatures voisines ou identiques peu caractérisées, l'identification de l'opérateur étant ainsi rendue plus difficile.
Selon un mode de mise en oeuvre préférentiel du procédé selon l'invention la séquence d'opérations de remplacement est choisie à chaque appel de l'opérateur à
<Desc/Clms Page number 4>
protéger parmi un ensemble de séquences équivalentes. Ainsi la difficulté de l'identification est encore accrue par les multiples changements de la séquence d'opérations remplaçante de l'opérateur à protéger au cours de l'exécution d'un même programme. Avantageusement l'ensemble des séquences comporte au moins quatre séquences équivalentes et de préférence huit séquences équivalentes, ce qui rend encore plus difficile l'identification de la séquence en tant que l'opérateur recherché par les fraudeurs.
Selon une première variante de l'invention le numéro d'ordre dans son ensemble de la séquence choisie est déterminé en fonction de certains paramètres du programme en cours d'exécution et/ou d'un paramètre aléatoire obtenu avantageusement à partir d'un générateur de nombres pseudo-aléatoires. Ce mécanisme de brouillage des séquences s'avère très efficace lorsque l'opérateur à sécuriser est répété plusieurs fois dans un programme comme par exemple l'opérateur XOR dans un traitement de cryptage/ décryptage.
Selon une seconde variante de l'invention (non exclusive de la première variante) les séquences d'opérations d'un même ensemble présentent toutes la même durée d'exécution. Avantageusement certaines séquences comportent au moins une instruction non-opérative destinée à introduire un temps de retard dans l'exécution des séquences concernées. En particulier l'instruction non-opérative est choisie parmi des instructions nonopératives vis à vis du microprocesseur ou parmi des instructions normalement opératives mais rendues sans effet par leurs positions dans la séquence d'opérations.
Ce mécanisme d'uniformisation des durées d'exécution des séquences rend leurs distinctions les unes par rapport aux autres encore plus difficiles.
<Desc/Clms Page number 5>
Selon une première application du procédé selon l'invention, l'opérateur à sécuriser est un opérateur logique, à titre d'exemple non limitatif l'opérateur logique XOR (ou OU exclusif). Avantageusement au moins une séquence d'opérations de remplacement est composée à partir d'opérateurs logiques élémentaires. Par exemple au moins une séquence d'opérations est composée à partir des opérateurs logiques élémentaires AND (ou ET), OR (ou OU) et NOT (ou NON).
L'invention concerne également, en ce qui a trait à la sécurisation de l'opérateur XOR, les ensembles de séquences d'opérations de remplacement SI à S8 et S'1 à S'8données ci-dessous : SI = (x OR y) AND NOT (x AND y) S2 = (x OR y) AND (NOT x OR NOT y) S3 = NOT (NOT x AND NOT y) AND NOT (x AND y) S4 = NOT (NOT x AND NOT y) AND (NOT x OR NOT y) S5 = NOT(NOT(x OR y) OR (x AND y) ) S6 = NOT ((NOT x AND NOT y) OR (x AND y)) S7 = NOT ((NOT x AND NOT y) OR NOT (NOT x OR NOT y)) S8 = NOT (NOT (x OR y) OR NOT (NOT x OR NOT y)) et avec des séquences d'opérations de remplacement de même durée d'exécution : S'1 = (x OR NOP y OR y) AND NOP NOT (x AND NOP y AND y) S'2 = (x OR y NOP OR y) AND NOP (NOT x OR NOP NOT y) S'3 = NOT (NOT x AND NOP NOT y) AND NOT (x AND y AND y) S'4 = NOT (NOT x AND NOP NOT y) AND (NOT x OR NOT y) S'5 = NOT(NOT(x NOP OR y OR y) OR (x NOP AND y AND y)) S'6 = NOT ((NOT x AND NOT y NOP) OR (x AND y NOP AND y)) S'7 = NOT ((NOT x AND NOT y) OR NOT (NOT x OR NOT y)) S'8= NOT (NOT (x OR y OR y) OR NOT (NOT x OR NOT y)) dans lesquelles l'instruction NOP correspond à une instruction non-opérative vis à vis du microprocesseur.
<Desc/Clms Page number 6>
Selon d'autres applications du procédé selon l'invention, l'opérateur à sécuriser est un opérateur mathématique tel qu'un demi-additionneur, un additionneur, un soustracteur ou un multiplicateur, ou un circuit fonctionnel analogue à un opérateur logique ou mathématique, tel qu'un circuit combinatoire, notamment un multiplexeur et/ou un démultiplexeur, un codeur et/ou un décodeur, un générateur et/ou détecteur de parité ou un comparateur.
En particulier selon une seconde application du procédé selon l'invention, l'opérateur est l'opérateur mathématique de la multiplication par deux obtenue par décalage à gauche d'un bit avec mise à zéro du bit de poids faible, la notation en C ANSI de cet opérateur s'écrivant (x 1).
L'invention concerne également, en ce qui a trait à la sécurisation de l'opérateur (x 1), les séquences de remplacement S''l à S''4 équivalentes suivantes : S''1 = (x ADD x) S''2 = (x AND FOh) ADD x ADD (x AND OFh) S''3 = (NOT ((NOT x) ADD (NOT x))) SUB 1 S''4 = (y ADD x) SUB (y SUB x), dans lesquelles l'opérateur ADD est l'opérateur d'addition standard sur un octet, l'instruction SUB est l'opérateur de soustraction standard sur un octet et le suffixe h indique une valeur hexadécimale.
L'invention concerne également un module électronique à opérateur sécurisé et comportant au moins un microprocesseur et une mémoire, la mémoire stockant un programme à exécuter comportant au moins un opérateur logique ou mathématique ou un circuit fonctionnel analogue à sécuriser, le module étant caractérisé en ce qu'il comporte des moyens pour remplacer l'exécution de l'opérateur au moyen du microprocesseur par l'exécution
<Desc/Clms Page number 7>
d'une séquence d'opérations ayant pour résultat final un résultat identique au résultat de la fonction de l'opérateur, ledit résultat étant mémorisé dans la mémoire.
Avantageusement le module électronique selon l'invention comporte des moyens de sélection de la séquence d'opérations à chaque appel de l'opérateur parmi un ensemble de séquences équivalentes. Selon une variante très intéressante le module comporte des moyens de traitement informatique pour déterminer le numéro d'ordre dans l'ensemble de la séquence choisie en fonction de certains paramètres du programme en cours d'exécution et/ou d'un paramètre aléatoire généré par un générateur de nombres pseudo-aléatoires.
L'invention concerne également un module électronique à opérateur sécurisé et comportant au moins un microprocesseur et un programme à exécuter comportant au moins un opérateur logique ou mathématique ou un circuit analogue à sécuriser, caractérisé en ce qu'il comporte les moyens matériels et/ou logiciels pour mettre en oeuvre le procédé selon l'invention présenté ci-avant.
L'invention concerne également un système embarqué ou une carte à microcircuit comportant un module électronique à opérateur sécurisé tel que défini ci-avant dans ses différentes variantes.
D'autres buts, avantages et caractéristiques de l'invention apparaîtront à la lecture de la description qui va suivre de la mise en oeuvre du procédé selon l'invention appliqué à la sécurisation de l'opérateur XOR et d'un mode de réalisation d'un module électronique à microprocesseur selon l'invention donnés à titre
<Desc/Clms Page number 8>
d'exemple non limitatif en référence aux dessins ciannexés dans lesquels: la figure 1 montre une représentation schématique d'un mode de réalisation d'un module électronique à microprocesseur et à opérateur XOR sécurisé selon l'invention ; et - la figure 2 montre une représentation schématique de l'exécution équivalente de l'opérateur XOR mettant en oeuvre le procédé selon l'invention dans le module de la figure 1.
Le module électronique monolithique 10 à microprocesseur illustré à la figure 1 selon la présente invention et décrit à titre d'exemple non limitatif comporte d'une façon générale un microprocesseur ou unité centrale CPU 11 relié de façon bidirectionnelle par un bus interne 12 à une mémoire vive RAM 14, une mémoire morte ROM 16, une mémoire EEPROM 18 et une interface entrée/sortie I/O 20.
Le module 10 comporte également un minuteur TIMER 22 à réarmement automatique (en variante optionnelle) et un générateur de nombres pseudo-aléatoires GNPA 24 reliés au bus interne 12.
Sont implantés en ROM 16 des programmes d'applications proprement dits tels que par exemple des applications de transactions sur carte bancaire ou des applications de transactions sur carte santé qui pour des raisons de confidentialité et de sécurité comportent des sousprogrammes de cryptage/décryptage, d'authentification d'opérateur ou de validation de transaction dans lesquels l'opérateur XOR est fréquemment présent notamment pour réaliser des comparaisons octet par octet.
En ce qui concerne l'exécution de l'opérateur XOR, cet opérateur très communément utilisé fait en général partie
<Desc/Clms Page number 9>
du jeu d'instructions arithmétiques à deux opérandes (OP1 et OP2) de l'unité centrale CPU ou microprocesseur 11.
Dans le mode de réalisation ici décrit les moyens de mise en oeuvre du procédé de sécurisation de l'opérateur XOR sont principalement logiciels sous la forme d'une routine de calcul de XOR sécurisé (ou routine XORSEC) présentée schématiquement à la figure 2. Ainsi à chaque appel de l'instruction XOR (OP1, OP2) le programme est dérouté avec les deux opérandes OP1 et OP2 vers la routine XORSEC qui sera exécutée en lieu et place de l'instruction XOR, étant entendu que l'exécution de la routine XORSEC réalise une fonction équivalente à celle de l'instruction XOR d'origine.
Selon la caractéristique principale de l'invention l'exécution de l'instruction XOR est remplacée dans la routine XORSEC par l'exécution d'une séquence d'opérations, en l'espèce mais non nécessairement des opérations d'un degré de complexité inférieur comme par exemple des opérations élémentaires, ayant pour résultat final un résultat identique au résultat de la fonction de l'opérateur XOR (condition aisément vérifiée entre autres par des tables de vérité à sorties identiques).
A titre d'exemples non limitatifs un jeu de huit séquences SI à S8 équivalentes à l'instruction XOR est donné ci-dessous : S1 = (x OR y) AND NOT (x AND y) S2 = (x OR y) AND (NOT x OR NOT y) S3 = NOT (NOT x AND NOT y) AND NOT (x AND y) S4 = NOT (NOT x AND NOT y) AND (NOT x OR NOT y) S5 = NOT(NOT(x OR y) OR (x AND y)) S6 = NOT ((NOT x AND NOT y) OR (x AND y)) S7 = NOT ((NOT x AND NOT y) OR NOT (NOT x OR NOT y))
<Desc/Clms Page number 10>
S8 = NOT (NOT (x OR y) OR NOT (NOT x OR NOT y)) On remarquera que toutes ces séquences SI à S8 sont basées sur l'utilisation d'au moins deux des trois instructions logiques élémentaires AND (ou ET), NOT (ou NON) et OR (ou OU) et présentent la même sortie de table de vérité que pour l'instruction XOR.
En utilisant la présentation classique des tables de vérité à deux entrées x, y et une sortie s, on peut écrire pour les opérateurs XOR, AND et OR et pour la séquence S5 (choisie à titre d'exemple non limitatif) les quatre tables de vérités suivantes:
<tb>
<tb> XOR <SEP> AND <SEP> OR
<tb> x <SEP> y <SEP> s(XOR) <SEP> x <SEP> y <SEP> s(AND) <SEP> x <SEP> y <SEP> s(OR)
<tb> 000 <SEP> 000 <SEP> 0 <SEP> 0 <SEP> 0 <SEP>
<tb> 0 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 1 <SEP>
<tb> 101 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 101
<tb> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP>
<tb>
et pour S5 = NOT(NOT(x OR y) OR (x AND y)) avec A = (x OR y), B= NOT A, C= (x AND y) D = (NOT(x OR y) OR (x AND y) = B OR C, et s(S5) - E = NOT D
<tb> XOR <SEP> AND <SEP> OR
<tb> x <SEP> y <SEP> s(XOR) <SEP> x <SEP> y <SEP> s(AND) <SEP> x <SEP> y <SEP> s(OR)
<tb> 000 <SEP> 000 <SEP> 0 <SEP> 0 <SEP> 0 <SEP>
<tb> 0 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 1 <SEP>
<tb> 101 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 101
<tb> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP>
<tb>
et pour S5 = NOT(NOT(x OR y) OR (x AND y)) avec A = (x OR y), B= NOT A, C= (x AND y) D = (NOT(x OR y) OR (x AND y) = B OR C, et s(S5) - E = NOT D
<tb>
<tb> x <SEP> y <SEP> A <SEP> B <SEP> C <SEP> D <SEP> E
<tb> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 0 <SEP>
<tb> 0 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP>
<tb> 1 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP>
<tb> 1 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 0 <SEP>
<tb>
On vérifie ainsi que s(S5) - E est identique à s(XOR).
<tb> x <SEP> y <SEP> A <SEP> B <SEP> C <SEP> D <SEP> E
<tb> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 0 <SEP>
<tb> 0 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP>
<tb> 1 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP>
<tb> 1 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 0 <SEP>
<tb>
On vérifie ainsi que s(S5) - E est identique à s(XOR).
On remarquera que la séquence S5 choisie d'office pour remplacer l'opérateur XOR se compose de cinq opérations élémentaires dont la signature sera très différente de
<Desc/Clms Page number 11>
l'opérateur XOR. On réalise ainsi la variante la plus simple de mise en oeuvre du procédé selon l'invention.
Selon une caractéristique optionnelle de l'invention, mais très avantageuse, utilisée dans le mode de réalisation ici décrit la séquence d'opérations de remplacement est déterminée à chaque appel de l'opérateur XOR parmi l'ensemble de séquences équivalentes, en l'espèce l'ensemble ES constitué par les huit séquences SI à S8 données ci-dessus. Ainsi la difficulté de l'identification de l'opérateur XOR est encore accrue par les multiples changements de la séquence d'opérations remplaçante de l'opérateur XOR au cours de l'exécution du programme, les séquences SI à S8 susceptibles d'être utilisées présentant toutes des signatures différentes.
Selon une autre caractéristique optionnelle de l'invention, mais également très avantageuse, utilisée dans le mode de réalisation ici décrit, le numéro d'ordre NDO = i (i allant de 1 à 8) dans son ensemble (Si à S8) de la séquence Si choisie pour être exécutée est déterminé en fonction de certains paramètres du programme en cours d'exécution et/ou d'un paramètre aléatoire.
Avantageusement ledit paramètre aléatoire est obtenu à partir d'un générateur de nombres pseudo-aléatoires. Ce mécanisme de brouillage des séquences rendant aléatoire la séquence effectivement choisie pour remplacer l'opérateur XOR à chaque appel s'avère très efficace, surtout dans un traitement de cryptage/décryptage lorsque l'opérateur XOR est appelé plusieurs fois dans le programme.
Ainsi telle qu'illustrée à la figure 2 la routine XORSEC comporte quatre phases de traitement principales, à savoir dans l'ordre d'exécution :
<Desc/Clms Page number 12>
- une phase d'entrée ou d'initialisation IN-XORSEC, avec notamment la mémorisation des valeurs compteur de programme, et des opérandes OP1 et OP2, - une phase CAL-NDO de détermination par le calcul du numéro d'ordre NDO = i (i allant de 1 à 8) de la séquence d'opérations Si à exécuter en remplacement de l'instruction XOR avec branchement vers la sous-routine CAL-XORSEC(i) correspondante et présente dans l'ensemble CAL-XORSEC des huit sous-routines CAL-XORSEC(l) à CALXORSEC(8), - une phase CAL-XORSEC(i) d'exécution de la sous-routine CAL-XORSEC (i) par calcul logique avec les opérandes OP1 et OP2 de la séquence d'opérations Si sélectionnée par la phase CAL~NDO, - une phase OUT-XORSEC de retour au programme principal pour reprise de son exécution et transfert des résultats de la phase CAL-XORSEC(i) équivalant au calcul d'un XOR entre les deux opérandes OP1 et OP2.
On notera que pour la phase CAL-NDO, le générateur GNPA aléatoire 24 fournit sur demande un octet aléatoire R utilisé comme paramètre de calcul seul ou avec d'autres paramètres extraits des valeurs des opérandes OP1 et OP2, le calcul ayant pour résultat final un octet F (R). cet octet on extrait en utilisant par exemple une opération du type NOD = i = F (R) 07h les trois bits de poids faible pour obtenir la valeur binaire de NOD = i (de 000 à 111 soit OOh à 07h), numéro d'ordre de la séquence Si à exécuter. Il est à noter que la valeur du numéro d'ordre est une donnée sensible de l'algorithme considéré.
Pour terminer, la routine XORSEC présente une autre variante encore améliorée en ce qui concerne la difficulté d'identification dans laquelle l'ensemble des séquences de remplacement est constitué de séquences de même durée d'exécution (et de ce fait plus difficile à
<Desc/Clms Page number 13>
distinguer). Pour ce faire certaines séquences comportent au moins une instruction non-opérative destinée à introduire un temps de retard dans l'exécution des séquences concernées. En particulier l'instruction nonopérative est choisie parmi des instructions nonopératives vis à vis du microprocesseur ou parmi des instructions normalement opératives mais rendues sans effet par leurs positions dans la séquence d'opérations.
Si l'on considère que les opérations élémentaires AND, OR et NOT ont des durées d'exécution sensiblement égales (par exemple 4 temps de cycle de l'horloge de l'unité centrale CPU 11), comme pour l'opération blanche nonopérative NOP, l'ensemble ES des séquences Si à S8 est modifié en un nouvel ensemble de séquences uniformisées à 9 opérations ES' s'écrivant à titre d'exemple non limitatif comme il suit (et dans lequel les opérations ajoutées apparaissent en gras) : S'1 = (x OR NOP y OR y) AND NOP NOT (x AND NOP y AND y) S'2= (x OR y NOP OR y) AND NOP (NOT x OR NOP NOT y) S'3 = NOT (NOT x AND NOP NOT y) AND NOT (x AND y AND y) S'4 = NOT (NOT x AND NOP NOT y) AND (NOT x OR NOT y) S'5 = NOT(NOT(x NOP OR y OR y) OR (x NOP AND y AND y) ) S'6 = NOT ((NOT x AND NOT y NOP) OR (x AND y NOP AND y)) S'7 = NOT ((NOT x AND NOT y) OR NOT (NOT x OR NOT y)) S'8 = NOT (NOT (x OR y OR y) OR NOT (NOT x OR NOT y)) Par exemple, pour la séquence S'5: S'5 = NOT ( NOT ( x NOP OR y OR y ) OR ( x NOP AND y AND y ) ) avec x'= x NOP, A = (x' OR y), A'= A OR y , B= NOT A', C= (x' AND y), C' = C AND y, D = B OR C' et s(S'5) - E = NOT D On peut écrire la table vérité de la séquence S'5 qui vérifie également s(S'5) = s(XOR)
<Desc/Clms Page number 14>
<tb>
<tb> S'5
<tb> x <SEP> y <SEP> x' <SEP> A <SEP> A' <SEP> B <SEP> C <SEP> C' <SEP> D <SEP> E <SEP>
<tb> 0 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 0 <SEP>
<tb> 0 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 000 <SEP> 0 <SEP> 1 <SEP>
<tb> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP>
<tb> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 0 <SEP>
<tb>
On remarquera que pour des séquences à neuf opérations élémentaires le temps machine reste très raisonnable.
<tb> S'5
<tb> x <SEP> y <SEP> x' <SEP> A <SEP> A' <SEP> B <SEP> C <SEP> C' <SEP> D <SEP> E <SEP>
<tb> 0 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 0 <SEP>
<tb> 0 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 000 <SEP> 0 <SEP> 1 <SEP>
<tb> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP>
<tb> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 0 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 0 <SEP>
<tb>
On remarquera que pour des séquences à neuf opérations élémentaires le temps machine reste très raisonnable.
L'invention n'est pas limitée à son application à la sécurisation d'opérateurs logiques mais est également applicable à la sécurisation d'opérateurs mathématiques tels que les demi-additionneurs, les additionneurs, les soustracteurs et les multiplicateurs ou de circuits fonctionnels analogues aux opérateurs logiques ou mathématiques, tels des circuits combinatoires, notamment des multiplexeurs et/ou des démultiplexeurs, des codeurs et/ou des décodeurs, des générateurs et/ou des détecteurs de parité ou des comparateurs.
Par exemple selon une autre application du procédé selon l'invention l'opérateur à sécuriser est l'opérateur mathématique de la multiplication par deux obtenue par décalage à gauche d'un bit avec mise à zéro du bit de poids faible. En notation C ANSI, cet opérateur est également désigné (x 1).
Ainsi à chaque appel de l'opérateur (x 1), son exécution sera remplacée par l'exécution d'une séquence d'opérations choisie parmi les séquences équivalentes suivantes: S''1 = (x ADD x) S''2 = (x AND FOh) ADD x ADD (x AND OFh) S''3= (NOT ((NOT x) ADD (NOT x))) SUB 1 S''4 = (y ADD x) SUB (y SUB x),
<Desc/Clms Page number 15>
dans lesquelles l'opérateur ADD est l'opérateur d'addition standard sur un octet, l'instruction SUB est l'opérateur de soustraction standard sur un octet et le suffixe h indique une valeur hexadécimale. D'une façon générale, le choix de la séquence équivalente S''i et sa mise en oeuvre sont réalisés de façon analogue, parfois identique, à ce qui a été décrit en détails ciavant pour l'opérateur XOR.
On notera également que sans sortir du cadre de l'invention, la carte à puce accueillant le module électronique à opérateur sécurisé selon l'invention peut être remplacée par tout autre système embarqué.
Claims (10)
- REVENDICATIONS : 1. Procédé de sécurisation d'un opérateur logique ou mathématique ou d'un circuit fonctionnel analogue utilisable dans l'exécution d'un programme dans un module électronique (10) comprenant un microprocesseur (11) et une mémoire (14,16,18), le procédé étant caractérisé en ce que l'exécution dudit opérateur par le microprocesseur est remplacée par l'exécution d'une séquence (Si) d'opérations de remplacement ayant pour résultat final un résultat identique au résultat de la fonction dudit opérateur, ledit résultat étant mémorisé dans la mémoire.
- 2. Procédé selon la revendication 1 caractérisé en ce que ladite séquence d'opérations de remplacement est choisie à chaque appel dudit opérateur parmi un ensemble de séquences équivalentes.
- 3. Procédé selon la revendication 2 caractérisé en ce que le numéro d'ordre dans ledit ensemble de la séquence choisie est déterminé en fonction de certains paramètres du programme en cours d'exécution et/ou d'un paramètre aléatoire obtenu à partir d'un générateur de nombres pseudo-aléatoires (24).
- 4. Procédé selon la revendication 2 caractérisé en ce que certaines séquences comportent au moins une instruction non-opérative destinée à introduire un temps de retard dans l'exécution des séquences concernées, ladite instruction non-opérative étant choisie parmi des instructions non-opératives vis à vis du microprocesseur (11) ou parmi des instructions normalement opératives mais rendues sans effet par leurs positions dans la séquence d'opérations.<Desc/Clms Page number 17>
- 5. Procédé selon la revendication 2 caractérisé en ce qu'au moins une séquence d'opérations de remplacement est composée à partir d'opérateurs logiques élémentaires.
- 6. Procédé selon la revendication 5 caractérisé en ce qu'au moins une séquence d'opérations de remplacement est composée à partir des opérateurs logiques élémentaires AND ou ET, OR ou OU et NOT ou NON.
- 7. Module électronique (10) comportant au moins un microprocesseur (11) et une mémoire (14,16,18), la mémoire stockant un programme à exécuter comportant au moins un opérateur logique ou mathématique ou un circuit fonctionnel analogue à sécuriser, le module étant caractérisé en ce qu'il comporte des moyens pour remplacer l'exécution dudit opérateur au moyen du microprocesseur par l'exécution d'une séquence (Si) d'opérations ayant pour résultat final un résultat identique au résultat de la fonction dudit opérateur, ledit résultat étant mémorisé dans la mémoire.
- 8. Module électronique (10) selon la revendication 7 caractérisé en ce qu'il comporte des moyens de sélection de ladite séquence d'opérations à chaque appel dudit opérateur parmi un ensemble de séquences équivalentes.
- 9. Module électronique (10) selon la revendication 8 caractérisé en ce qu'il comporte des moyens de traitement informatique pour déterminer le numéro d'ordre dans ledit ensemble de la séquence choisie en fonction de certains paramètres du programme en cours d'exécution et/ou d'un paramètre aléatoire généré par un générateur de nombres pseudo-aléatoires (24).
- 10. Système embarqué caractérisé en qu'il comporte un module électronique (10) selon la revendication 7.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0016723A FR2818772A1 (fr) | 2000-12-21 | 2000-12-21 | Procede de securisation d'un operateur logique ou mathematique implante dans un module electronique a microprocesseur, ainsi que le module electronique et le systeme embarque associes |
EP01989651A EP1346271A1 (fr) | 2000-12-21 | 2001-12-20 | Procede de securisation d'un operateur logique ou mathematique dans un module electronique a microprocesseur |
US10/471,323 US9323955B2 (en) | 2000-12-21 | 2001-12-20 | Method for protecting a logic or mathematical operator installed in an electronic module with a microprocessor as well as the associated embedded electronic module and the system |
AU2002228116A AU2002228116A1 (en) | 2000-12-21 | 2001-12-20 | Method for making secure a logical or mathematical operator in a microprocessor-based electronic module |
CNB018221947A CN100470438C (zh) | 2000-12-21 | 2001-12-20 | 具有微处理器的电子模块中逻辑或数学操作符的保护方法 |
MXPA03005710A MXPA03005710A (es) | 2000-12-21 | 2001-12-20 | Procedimiento de proteccion de un operador logico o matematico implantado en un modulo electrico con microprocesador, asi como el modulo electronico y el sistema de a bordo relacionados. |
PCT/FR2001/004124 WO2002050641A1 (fr) | 2000-12-21 | 2001-12-20 | Procede de securisation d'un operateur logique ou mathematique dans un module electronique a microprocesseur |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0016723A FR2818772A1 (fr) | 2000-12-21 | 2000-12-21 | Procede de securisation d'un operateur logique ou mathematique implante dans un module electronique a microprocesseur, ainsi que le module electronique et le systeme embarque associes |
Publications (1)
Publication Number | Publication Date |
---|---|
FR2818772A1 true FR2818772A1 (fr) | 2002-06-28 |
Family
ID=8857968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0016723A Pending FR2818772A1 (fr) | 2000-12-21 | 2000-12-21 | Procede de securisation d'un operateur logique ou mathematique implante dans un module electronique a microprocesseur, ainsi que le module electronique et le systeme embarque associes |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP1346271A1 (fr) |
CN (1) | CN100470438C (fr) |
AU (1) | AU2002228116A1 (fr) |
FR (1) | FR2818772A1 (fr) |
MX (1) | MXPA03005710A (fr) |
WO (1) | WO2002050641A1 (fr) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10310781A1 (de) * | 2003-03-12 | 2004-09-30 | Infineon Technologies Ag | Verfahren zum Betreiben eines Mikroprozessors und eine Mikroprozessoranordnung |
EP1986122A1 (fr) | 2007-04-23 | 2008-10-29 | Stmicroelectronics Sa | Unite de traitement securisee |
CN102298653B (zh) * | 2010-06-25 | 2015-07-22 | 北京国电智深控制技术有限公司 | 一种配置算法执行顺序号的方法及装置 |
FR2969787B1 (fr) * | 2010-12-24 | 2013-01-18 | Morpho | Protection des applets |
ITTO20111229A1 (it) * | 2011-12-29 | 2013-06-30 | Milano Politecnico | Procedimento e sistema per proteggere dispositivi elettronici, relativo prodotto informatico |
US10142099B2 (en) | 2013-01-11 | 2018-11-27 | Qualcomm Incorporated | Method and apparatus for a computable, large, variable and secure substitution box |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4932053A (en) * | 1988-11-10 | 1990-06-05 | Sgs-Thomson Microelectronics, S.A. | Safety device against the unauthorized detection of protected data |
US5493240A (en) * | 1995-03-01 | 1996-02-20 | International Business Machines Corporation | Static combinatorial logic circuits for reversible computation |
WO1997033217A1 (fr) * | 1996-03-07 | 1997-09-12 | Bull Cp8 | Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre |
WO2000042511A1 (fr) * | 1999-01-11 | 2000-07-20 | Certicom Corp. | Procede et appareil permettant de minimiser des attaques massives de type differentiel sur des processeurs |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2266754Y (zh) * | 1996-05-07 | 1997-11-05 | 路丹阳 | 一种指纹信息防伪信用卡 |
FI104937B (fi) * | 1997-01-27 | 2000-04-28 | Sonera Oyj | Tilaajaidentiteettimoduuli, matkaviestin ja menetelmä älykorttitoiminteen suorittamiseksi |
US5991415A (en) * | 1997-05-12 | 1999-11-23 | Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science | Method and apparatus for protecting public key schemes from timing and fault attacks |
WO1999001815A1 (fr) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Techniques d'obscurcissement pour augmenter la securite de logiciels |
FR2800478B1 (fr) * | 1999-10-28 | 2001-11-30 | Bull Cp8 | Procede de securisation d'un ensemble electronique de cryptographie a base d'exponentiation modulaire contre les attaques par analyse physique |
-
2000
- 2000-12-21 FR FR0016723A patent/FR2818772A1/fr active Pending
-
2001
- 2001-12-20 WO PCT/FR2001/004124 patent/WO2002050641A1/fr active Application Filing
- 2001-12-20 MX MXPA03005710A patent/MXPA03005710A/es not_active Application Discontinuation
- 2001-12-20 AU AU2002228116A patent/AU2002228116A1/en not_active Abandoned
- 2001-12-20 CN CNB018221947A patent/CN100470438C/zh not_active Expired - Lifetime
- 2001-12-20 EP EP01989651A patent/EP1346271A1/fr not_active Ceased
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4932053A (en) * | 1988-11-10 | 1990-06-05 | Sgs-Thomson Microelectronics, S.A. | Safety device against the unauthorized detection of protected data |
US5493240A (en) * | 1995-03-01 | 1996-02-20 | International Business Machines Corporation | Static combinatorial logic circuits for reversible computation |
WO1997033217A1 (fr) * | 1996-03-07 | 1997-09-12 | Bull Cp8 | Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre |
WO2000042511A1 (fr) * | 1999-01-11 | 2000-07-20 | Certicom Corp. | Procede et appareil permettant de minimiser des attaques massives de type differentiel sur des processeurs |
Also Published As
Publication number | Publication date |
---|---|
MXPA03005710A (es) | 2004-11-12 |
CN1488091A (zh) | 2004-04-07 |
CN100470438C (zh) | 2009-03-18 |
EP1346271A1 (fr) | 2003-09-24 |
WO2002050641A1 (fr) | 2002-06-27 |
AU2002228116A1 (en) | 2002-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2008217416B2 (en) | Authentication device and method | |
EP1234284A1 (fr) | Procede de securisation de la phase de pre-initialisation d'un systeme embarque a puce electronique, notamment d'une carte a puce, et systeme embarque mettant en oeuvre le procede | |
EP2302552A1 (fr) | Procédé d'éxecution d'un algorithme de protection d'un dispositif électronique par masquage affiné et dispositif associé | |
FR2952735A1 (fr) | Procede et dispositif de detection d'attaques par injection de fautes | |
EP1421473B1 (fr) | Procédé de calcul universel appliqué à des points d'une courbe elliptique | |
WO2012085482A1 (fr) | Protection des applets contre les analyses par canaux caches | |
FR2818772A1 (fr) | Procede de securisation d'un operateur logique ou mathematique implante dans un module electronique a microprocesseur, ainsi que le module electronique et le systeme embarque associes | |
FR2840421A1 (fr) | Systemes informatiques tels que des cartes a puce ayant des architectures de memoire capables de proteger une information de securite, et procedes d'utilisation de ceux-ci | |
CA2732444A1 (fr) | Circuit integre protege contre une analyse par canal auxiliaire horizontale | |
EP1745366A1 (fr) | Procede de protection d"un ensemble cryptographique par masquage homographique | |
EP1715410B1 (fr) | Protection d'un calcul effectué par un circuit intégré | |
WO2004046017A2 (fr) | Procede de division entiere securise contre les attaques a canaux caches | |
WO2007104706A1 (fr) | Procede de securisation d'un calcul d'une exponentiation ou d'une multiplication par un scalaire dans un dispositif electronique | |
EP2038798B1 (fr) | Protection d'un programme interprete par une machine virtuelle | |
EP2336931B1 (fr) | Procédé de vérification de signature | |
EP3283968A1 (fr) | Procede de partage d'une memoire entre au moins deux entites fonctionnelles | |
CA2988357A1 (fr) | Procede de chiffrement, procede de chiffrement, dispositifs et programmes correspondants | |
FR2804225A1 (fr) | Algorithme d'exponentiation modulaire dans un composant electrique mettant en oeuvre un algorithme de chiffrement a cle publique | |
EP1399807B1 (fr) | Brouillage d'un calcul mettant en oeuvre une fonction modulaire | |
EP1530753A2 (fr) | Procede de calcul universel applique a des points d'une courbe elliptique | |
FR2741973A1 (fr) | Procede de production d'un parametre jo associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery | |
FR2831739A1 (fr) | Procede de mise en oeuvre securisee d'un module fonctionnel, dans un composant electronique et composant correspondant | |
WO2002099624A1 (fr) | Procede de securisation d'un calcul d'exponentiation dans un dispositif electronique | |
FR2823327A1 (fr) | Dispositif destine a realiser des calculs d'exponentiation securisee et utilisation d'un tel dispositif | |
FR3105490A1 (fr) | Procede de traitement cryptographique de donnees et entite electronique associes |