[go: up one dir, main page]

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 PDF

Info

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
Application number
FR0016723A
Other languages
English (en)
Inventor
Abraham Brolh
Patrice Hameau
Nicolas Giraud
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.)
Bull CP8 SA
Original Assignee
Bull CP8 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 Bull CP8 SA filed Critical Bull CP8 SA
Priority to FR0016723A priority Critical patent/FR2818772A1/fr
Priority to EP01989651A priority patent/EP1346271A1/fr
Priority to US10/471,323 priority patent/US9323955B2/en
Priority to AU2002228116A priority patent/AU2002228116A1/en
Priority to CNB018221947A priority patent/CN100470438C/zh
Priority to MXPA03005710A priority patent/MXPA03005710A/es
Priority to PCT/FR2001/004124 priority patent/WO2002050641A1/fr
Publication of FR2818772A1 publication Critical patent/FR2818772A1/fr
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms 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
    • 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/75Protecting 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/755Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms 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/0806Details of the card
    • G07F7/0833Card 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.
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:
Figure img00100001
<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
Figure img00100002
<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).
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>
Figure img00140001
<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.
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)

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 10. Système embarqué caractérisé en qu'il comporte un module électronique (10) selon la revendication 7.
FR0016723A 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 Pending FR2818772A1 (fr)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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&#39;un systeme embarque a puce electronique, notamment d&#39;une carte a puce, et systeme embarque mettant en oeuvre le procede
EP2302552A1 (fr) Procédé d&#39;éxecution d&#39;un algorithme de protection d&#39;un dispositif électronique par masquage affiné et dispositif associé
FR2952735A1 (fr) Procede et dispositif de detection d&#39;attaques par injection de fautes
EP1421473B1 (fr) Procédé de calcul universel appliqué à des points d&#39;une courbe elliptique
WO2012085482A1 (fr) Protection des applets contre les analyses par canaux caches
FR2818772A1 (fr) Procede de securisation d&#39;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&#39;utilisation de ceux-ci
CA2732444A1 (fr) Circuit integre protege contre une analyse par canal auxiliaire horizontale
EP1745366A1 (fr) Procede de protection d&#34;un ensemble cryptographique par masquage homographique
EP1715410B1 (fr) Protection d&#39;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&#39;un calcul d&#39;une exponentiation ou d&#39;une multiplication par un scalaire dans un dispositif electronique
EP2038798B1 (fr) Protection d&#39;un programme interprete par une machine virtuelle
EP2336931B1 (fr) Procédé de vérification de signature
EP3283968A1 (fr) Procede de partage d&#39;une memoire entre au moins deux entites fonctionnelles
CA2988357A1 (fr) Procede de chiffrement, procede de chiffrement, dispositifs et programmes correspondants
FR2804225A1 (fr) Algorithme d&#39;exponentiation modulaire dans un composant electrique mettant en oeuvre un algorithme de chiffrement a cle publique
EP1399807B1 (fr) Brouillage d&#39;un calcul mettant en oeuvre une fonction modulaire
EP1530753A2 (fr) Procede de calcul universel applique a des points d&#39;une courbe elliptique
FR2741973A1 (fr) Procede de production d&#39;un parametre jo associe a la mise en oeuvre d&#39;operation modulaire selon la methode de montgomery
FR2831739A1 (fr) Procede de mise en oeuvre securisee d&#39;un module fonctionnel, dans un composant electronique et composant correspondant
WO2002099624A1 (fr) Procede de securisation d&#39;un calcul d&#39;exponentiation dans un dispositif electronique
FR2823327A1 (fr) Dispositif destine a realiser des calculs d&#39;exponentiation securisee et utilisation d&#39;un tel dispositif
FR3105490A1 (fr) Procede de traitement cryptographique de donnees et entite electronique associes