Brevet FR2808360A1 — publié le 20011102

PROCEDE DE CONTRE MESURE DANS UN MICROCIRCUIT, MICROCIRCUIT METTANT EN #UVRE LE PROCEDE CARTE A PUCE COMPORTANT LEDIT MICROCIRCUIT La présente invention concerne un procédé de contre-mesure dans un microcircuit. Elle concerne également un microcircuit mettant en oeuvre le procédé et les supports portables de type carte à puce comportant un tel microcircuit. On rappelle qu'un microcircuit pour dispositifs portables tels que les cartes à puce, a une architecture formée autour d'un processeur (ou microprocesseur) comprenant un contrôleur une unité arithmétique et logique (ALU) relié par un bus à des mémoires, dont une mémoire programme non volatile qui contient la ou les données sensibles (clés secrètes) algorithme de cryptographie par exemple. Le contrôleur gère les signaux entrées-sorties I/0 instructions, adresses, données) l'unité arithmétique et logique effectue des opérations arithmétiques sur les données sur commande du contrôleur. De tels microcircuits sont utilisés dans des cartes à puce pour certaines applications, par exemple des applications d'accès à certaines banques données, des applications bancaires, des applications de télé péage, par exemple pour la télévision, la distribution essence ou encore le passage de péages d'autoroutes. L'invention s'applique tout particulièrement à la securité des données sensibles dans des supports tels que les cartes à puce. Il s'agit de données secrètes manipulées par le processeur du microcircuit et susceptibles de transiter sur le bus reliant les mémoires à ce processeur. invention s'applique à la sécurité d'informations secrètes telles que le code secret de l'utilisateur d' carte à puce ou les clés électroniques utilisées dans des opérations de calcul cryptographique pour le chiffrement et ou l'authentification et ou la signature électronique de messages. invention s'applique notamment dans le cas de la mise ceuvre d'algorithmes de cryptographie à clé secrète ou d'algorithmes dits à clé publique. De tels algorithmes sont utilisés dans des applications où l'accès à des services ou à des données est sévèrement contrôlé. Parmi les algorithmes de cryptographie à clé secrète on peut citer l'algorithme DES (pour Data Encryption Standard dans la littérature anglo-saxonne). D'autres algorithmes à clé secrète existent, comme l'algorithme RC5 ou encore l'algorithme COMP128. Cette liste n'est bien sûr pas exhaustive. Parmi les algorithmes de cryptographie à cle publique on peut citer le RSA (Rivest Shamir Adelman), E1 Gamal, Schnorr, Fiat Shamir, ou DSA DSS. De manière générale et succincte, ces algorithmes ont pour but d'effectuer des calculs cryptographiques à partir d'un système hôte (serveur, distributeur bancaire, ...) et de la clé secrète ou de clés publiques et secrètes contenues dans la carte, et fournir en retour au système hôte un message chiffré de permettre une authentification du microcircuit ( de la carte), ou de signer des messages. Toute 1a sécurité de ces algorithmes de cryptographie repose sur le fait de savoir conserver secrètes les données qui doivent le rester. Dans le cas des algorithmes cryptographiques la ou les clés secrètes ne peuvent être déduites de la seule connaissance des informations échangées entre la carte et extérieur. Or il est apparu que des attaques externes, basées sur les consommations de courant une analyse differentielle de consommation en courant lorsque le processeur de cryptographie ou 1e processeur d'une carte à puce effectue des opérations de calcul entraînant la manipulation de données secrètes, de telles manipulations permettent à tiers mal intentionnés de trouver la clé secrète contenue dans cette carte en procédant à des attaques appelées attaques DPA, acronyme anglo-saxon pour Differential Power Analysis. Le principe de ces attaques DPA repose sur le fait que la consommation en courant du processeur exécutant des instructions varie selon la donnée manipulée. Notamment, quand une instruction exécutée par le processeur nécessite une manipulation d'une donnée bit par on a deux profils de courant différents selon que bit vaut "1" ou "0". Typiquement, si le processeur manipule un "0 ", on a à cet instant d'exécution une première amplitude du courant consommé et . le processeur manipule un "1", on a une deuxième amplitude du courant consommé, differente de la première. Ainsi l'attaque DPA exploite la différence du profil de consommation en courant dans carte pendant l'execution d'une instruction suivant la valeur du bit manipulé. D'une manière simplifiée, la conduite d'une attaque DPA consiste à identifier une ou des périodes particulières du déroulement de l'algorithme comprenant l'exécution d'au moins une instruction manipulant des données bit par bit; à relever un très grand nombre N de courbes de consommation en courant pendant cette ou ces periodes, une courbe par message différent sur lequel on applique l'algorithme; à prédire, pour chaque courbe, la valeur prise par un bit de la donnée pour une hypothèse sur une sous-clé, c'est à dire sur une partie au moins de la clé secrète, qui permet de faire la prédiction ; et à effectuer un tri des courbes selon la fonction de sélection booléenne correspondante : on obtient un premier paquet de courbes pour lesquelles la prédiction vaut "1" et un deuxième paquet de courbes pour lesquelles la prédiction vaut "0". En effectuant une analyse différentielle de la consommation moyenne en courant entre les deux paquets de courbes obtenus, on obtient un signal d'information DPA(t). l'hypothèse de sous-clé n'est pas juste, chaque paquet comprend en réalité autant de courbes correspondant à la manipulation d'un "1" que de courbes manipulant un "0". Les deux paquets sont donc équivalents en terme de consommation en courant et le signal d'information est sensiblement nul. si l'hypothèse de sous-clé est juste, un paquet comprend réellement les courbes correspondant à la manipulation d'un "0" et l'autre paquet comprend réellement les courbes correspondant à la manipulation d'un "0" . le signal d'information DPA(t) obtenu n'est pas nul , il comprend des pics de consommation correspondant la manipulation par le processeur du bit sur lequel on a basé le tri. Ces pics ont une amplitude correspondant à la différence de consommation par le processeur selon qu'il manipule un "1" ou un "0". Ainsi, de proche en proche, il est possible de découvrir tout ou partie de la clé secrète contenue dans un microcircuit. I1 existe de nombreux algorithmes pour l'exécution desquels le processeur ou une unité de calcul associée (cryptoprocesseur) doit effectuer à certains moments des manipulations de données bit par bit. C'est notamment le cas comme on l'a dit pour les algorithmes cryptographiques. En analysant la consommation de courant lors de l'exécution de ces manipulations bit par bit, '1 est possible de retrouver la valeur de certains bits au moins de la donnée manipulée. La connaissance de cette donnée peut fournir des informations sur des résultats intermédiaires obtenus lors de l'exécution de l'algorithme de cryptographie, qui à leur tour peuvent permettre de retrouver une partie au moins des bits de la clé secrète utilisée. Le déposant s'est aperçu qu'une telle attaque peut être menée à partir de l'observation des variations de consommation de courant liées aux transitions des valeurs binaires sur le du microcircuit. En effet le déposant a observé que le changement d'état entre deux bits de même poids d'une donnée à l'autre provoquait une consommation plus élevée que dans le cas où il n'y pas de changement d'état. Ainsi, les transitions laissent une signature pour les données qui circulent sur le bus. Cette situation est très préjudiciable bien entendu dans le cas où ces données sont des données secrètes. La présente invention pour but de résoudre ce problème. Elle a pour objet de protéger les données sur lesquelles on effectue des manipulations bit par bit, en leur appliquant une contre-mesure, c'est à dire un brouillage, en sorte que l'analyse de la consommation de courant lors des transitions d'une donnée à la suivante transitant sur le bus ne révèle aucune information sur ces données . le signal d'information DPA(t) sera toujours le même dans les attaques DPA. Telle que revendiquée, l'invention concerne un procédé de contre-mesure dans microcircuit comprenant un processeur apte à effectuer des opérations dont une consiste à manipuler au moins une donnée secrète, au moins une mémoire non volatile contenant la ou les données secrètes au moins une memoire de travail, lesdites mémoires étant reliées par bus audit processeur, principalement caractérisé en que le procédé comprend l'injection sur le bus de plusieurs données aléatoires entre des données issues d'opérations effectuées par le processeur. Selon une autre caractéristique, le procédé consiste à activer l'injection sur le de plusieurs données aléatoires pendant une période durant laquelle la ou les données secrètes sont manipulées, et à inhiber l'injection desdites données aléatoires en dehors de ces périodes. Selon une autre caractéristique, l'opération consistant à manipuler une donnée secrète est mise en ceuvre par un algorithme cryptographique. L'algorithme de cryptographie peut être un algorithme à clé secrète. Cet algorithme de cryptographie peut alternativement être un algorithme à clé publique. La donnée secrète peut être un code personnel d'identification. L'invention concerne également un microcircuit pour dispositif portable de type carte à puce, comprenant un processeur apte à effectuer des opérations dont une consiste à manipuler au moins une donnée secrète, au moins une mémoire non volatile comprenant la ou les données secrètes, au moins une mémoire de travail, reliées par un bus audit processeur, principalement caractérisé en ce qu'il comporte un générateur de donnees aléatoires, un multiplexeur comprenant une entree reliée à la sortie du générateur de données aléatoires laquelle est reliée au bus d'entrées-sorties du processeur pour injecter sur ce bus des- données aléatoires sur commande du processeur. Le générateur de données aléatoires est activé par un signal d'horloge de fréquence supérieure à celle du processeur. Le signal d'horloge peut être un multiple du signal d'horloge du processeur lequel peut être généré en interne (interne au processeur) ou provenir de l'extérieur (à partir des plages de contact de carte à puce dans laquelle est implanté le microcircuit . Le microcircuit comporte un circuit logique apte à fournir ledit signal d'horloge multiple du signal d'horloge du processeur. Dans le cas où le microcircuit possède plusieurs bus, les moyens pour injecter des données aléatoires sont réalisés par une macro-instruction. . L'invention concerne également une carte puce, comprenant un microcircuit tel qu'il vient d'être présenté. D'autres particularités et avantages de l'invention apparaîtront clairement à la lecture de la description faite ci-après et qui est donnée à titre d'exemple non limitatif et en regard des dessins annexes sur lesquels - la figure 1, représente une architecture simplifiée d'un microcircuit apte à mettre en aeuvre le procédé selon l'invention, - les figures 2A à 2G, représentent les signaux de fonctionnement du microcircuit, - la figure 3, représente un schéma détaillé d'implémentation d'un mode de réalisation du microcircuit selon l'invention. On a représenté sur la figure 1 un microcircuit simplifié, c'est à dire uniquement les éléments nécessaires à la compréhension de l'invention. Dans le cas d'une implantation dans une carte à puce, le microcircuit a l'architecture du micromodule de la carte c'est à dire qu'il comporte : une unité principale de traitement 1 (dénommée processeur) comprenant un contrôleur 11, un ou plusieurs bus 12 pour relier l'unité 1 à des mémoires associées composées d'au moins une mémoire de programmes Ml (non volatile de type ROM), au moins une mémoire de travail M2 (de type RAM), et au moins une mémoire de programme programmable électriquement M3 (de type EEPROM). Le microcircuit peut comporter en outre unité de calcul 2 (cryptoprocesseur) pour mettre en oeuvre des calculs d'exponentiations modulai comme est le cas par exemple dans le cas de l'exécution de algorithme cryptographique à clé publique (Rivest Shamir Adelman). Pour la mise #uvre du procédé de contre mesure selon l'invention, microcircuit schématisé sur cette figure 1 comporte outre un générateur de valeurs aléatoires 3 active par une horloge H et un multiplexeur 4 activé par un signal de commande C de sa sortie S. Le microcircuit comporte en outre un système 5 de gestion des informations circulant sur le bus B (de type multiplexeur à deux entrées el, e2- une sortie s) piloté par le contrôleur 11. Dans le cas d'une lecture dans une mémoire, le système 5 permet de relier directement unité arithmétique et logique 12 aux mémoires Ml, M3 ; dans le cas d'une écriture dans une mémoire la sortie du multiplexeur 4 va sur le bus B. Le contrôleur du microcircuit peut être associé à un opérateur cryptographique 2 comme déjà précisé et manipuler une ou plusieurs données secrètes. Pour simplifier, on va prendre le cas d'une seule donnée secrète manipulée (ce qui est le cas par exemple dans la mise en #uvre d'un algorithme à clé secrète ou d'un code PIN (Personal Identifier Code). Cette donnée est stockée de manière sécurisée dans la mémoire de programme non volatile M1 associée au processeur.ll. Lors de exécution d'une opération de cryptographie de vérification du code d'identification PIN), le processeur va procéder selon l'invention, à une ou des interruptions de manière à injecter des données aléatoires sur le bus 12 (bus sur lequel sont alors susceptibles de transiter les données secrètes). En effet au cours de l'exécution, lancée par le processeur, d'une instruction qui comporte par exemple, l'écriture d'une donnée secrète, cette dernière alors transiter sur le bus B pour aller en mémoire travail M2 en vue du traitement à effectuer avec cette donnée. Une suite de données va par conséquent transiter sur le bus B pour chaque opération exécutée, ces données sont des commandes et des données utiles au traitement effectué. Selon le procédé de l'invention, le processeur est apte à émettre interruption qui peut être déclenchée par le programme -même de manipulation des données secrètes occurrence le programme de cryptographie), ayant pour but d'interrompre l'exécution de l'instruction cours, de sauvegarder le contexte dans les registres de déclencher l'insertion de données aléatoires générées par le générateur 3) sur le bus B. Le signal interruption de l'exécution de l'instruction en cours peut être utilisé comme signal de commande C pour le multiplexeur 9. On a illustré sur les figures 2A à 2G les signaux de fonctionnement du microcircuit. Le signal d'horloge CLK du processeur est représenté à la figure 2A. La figure 2B illustre un exemple de signal d'horloge H pour piloter le générateur aléatoire 3. On choisit une fréquence d'horloge H supérieure l'horloge CLK du processeur de manière à ce plusieurs données aléatoires DA., DA,, puissent être 'ectées entre le moment de l'interruption de exécution d'une instruction et sa reprise. Ces données aléatoires sont ainsi injectées entre des données transmises par le bus B entre deux instants. Les données aléatoires ont pour de recharger ou de décharger aléatoirement le bus. L'insertion de plusieurs données permet d'obtenir le résultat escompté. choisit une horloge H plus rapide que horloge CLK processeur par exemple multiple cette dernière de manière à envoyer au moins deux données aléatoires. Les données, qu'il s'agisse de commandes ou de données à traiter, sont illustrées sur le graphe du bus figure 2C. La figure 2D illustre le déroulement de l'exécution d' instruction et son interruption à la réception du signal d'interruption. Cette interruption permet de génerer le signal de commande C de la sortie du multiplexeur, illustré sur la figure 2E. Le signal de commande d'écriture émis par le processeur est illustré sur la figure 2F. figure 2G illustre les données DA générees par le génerateur aléatoire 3. La figure 2E illustre un exemple de signal de commande C d'activation du multiplexeur 3. Selon l'exemple illustré, lorsque le signal C est ' 0, le multiplexeur délivre à sa sortie S le signal reçu sur son entrée E1, et lorsque le signal C est a 1, il délivre les données reçues sur son entrée E2, ce signal C est selon cet exemple à 1 en présence d'une interruption d'exécution d'instruction émise le processeur. L'entrée El du multiplexeur 4 correspond aux données de sortie du processeur (ALU). Les données reçues sur l'entrée E2 sont données émises par le générateur 3. On a représenté sur la figure 3, un exemple détaillé d'un mode de réalisation de l'invention. Dans le cas où le microcircuit est implanté dans une carte à puce il comporte en outre une interface 13 de communication avec l'extérieur représentée façon schématique sur cette figure. Cette interface comprend les plages de contact de la carte à puce destinées à recevoir le signal d'horloge CLK, les signaux de tension Vcc et Vss, un signal de remise à zéro Reset, et les signaux d'entrée sortie I/O. Elle comporte en outre une unité asynchrone de transmission. Dans la réalisation qui va être décrite l'horloge H est obtenue à partir d'un circuit logique 5 multiplieur du signal d'horloge CLK. Ce circuit 5 est composé par exemple de portes 51 en série introduisant un retard. retard peut être de T/4, (T étant la période de horloge CLK) et permet dans ce cas d'injecter au moins deux données aléatoires entre deux données transitant sur le bus. La commande C est générée par le processeur programmé à cet effet. Un circuit logique pourrait être prévu à effet. Dans le cas ou le microcircuit possède plusieurs bus, les fonctions qui viennent d'être décrites peuvent pas être réalisées par des circuits, mais par une macro-instruction prévue à cet effet. REVENDICATIONS 1. Procédé de contre-mesure dans un microcircuit comprenant un processeur apte à effectuer des opérations dont une consiste à manipuler au moins une donnée secrète, au moins une mémoire non volatile contenant la ou les données secrètes, au moins une mémoire de travail, lesdites mémoires étant reliées par un bus audit processeur, caractérisé en ce que le procédé comprend l'injection le bus de plusieurs données aléatoires entre données issues d'opérations effectuées par processeur, ces données aléatoires ayant pour but de recharger ou de décharger aléatoirement le bus. 2. Procédé de contre-mesure dans un microcircuit selon la revendication 1, caractérisé en ce que qu'il consiste à activer l'injection le bus de plusieurs données aléatoires pendant période durant laquelle la ou les données secrètes sont manipulées, et à inhiber l'injection desdites données aléatoires en dehors de ces périodes. 3. Procédé de contre-mesure selon la revendication 1 ou 2, caractérisé en ce que l'opération consistant à manipuler une donnée secrète est mise en #uvre par un algorithme cryptographique. 4. Procédé de contre-mesure selon la revendication 3, caractérisé en ce que l'algorithme de cryptographie est algorithme à clé secrète. . Procédé de contre-mesure selon la revendication 3, caractérisé en ce que l'algorithme de cryptographie est algorithme à clé publique. . Procédé de contre-mesure selon revendication 1 ou 2, caractérisé en ce que la donnée secrète est un code personnel d'identification. . Microcircuit pour dispositif portable de type carte à puce, comprenant un processeur apte à effectuer des opérations dont une consiste à manipuler au moins une donnée secrète, au moins une mémoi non volatile (Ml, M3) comprenant la ou les données secrètes, au moins une mémoire de travail (M2), reliees par un bus (B) audit processeur, caractérisé en qu'il comporte des moyens pour injecter sur ce des données aléatoires sur commande du processeur. Microcircuit pour dispositif portable selon la revendication 7, caractérisé en ce que les moyens pour injecter sur le bus des données aléatoires comportent un générateur de données aléatoires (3), un multiplexeur (4) comprenant une entrée (E2) reliée à la sortie du générateur de données aléatoires laquelle est reliée au bus (B) 9. Microcircuit pour dispositif portable selon revendication 8, caractérisé en ce que le générateur données aléatoires est activé par un signal d'horloge (H) de fréquence supérieure à celle du processeur. 10. Microcircuit pour dispositif portable selon la revendication 8 et 9, caractérisé en ce que le signal horloge (H) est un multiple du signal d'horloge (CLK) processeur. 11. Microcircuit pour dispositif portable selon l'une quelconque des revendications 8 à 10, caractérisé ce qu'il comporte un circuit logique (5) apte à fournir ledit signal d'horloge (H) multiple du signal horloge du processeur. 12. Microcircuit pour dispositif portable selon la revendication 7, caractérisé en ce que, dans le cas où le microcircuit possède plusieurs bus, les moyens pour injecter des données aléatoires sont réalisés par une macro-instruction. 13. Carte à puce, caractérisé en ce .qu'elle comporte un microcircuit selon l'une quelconque des revendications 7 à 12.