FR 2536880 A1 19840601 FR 8220051 A 19821130 --> MICROPROCESSEUR CONÇU NOTAMMENT POUR EXECUTER LES ALGORITHMES DE CALCUL D'UN SYSTEME DE CHIFFREMENT A CLE PUBLIQUE. L'invention concerne généralement une nouvelle structure de microprocesseur, et a plus particulièrement pour obje un microprocesseur conçu notamment pour exécuter les algorithmes de calcul d'un système de chiffrement à clé publique. Avant de développer la structure du microprocesseur conforme à l'invention, il est utile de rappeler les trois grandes familles de microprocesseurs actuellement disponibles sur le marché : 1. Les microprocesseurs en tranches ("bit slice microprocessors" en langue anglaise) . Ces microprocesseurs sont essentiellement constitués par des unités de traitement microprogrammables qui sont juxtaposables de façon à obtenir une longueur de mot donnée. 2. Les microprocesseurs universels ("General Purpose Microprocessors" en langue anglaise) . Ces microprocesseurs sont essentiellement constitués d'une unité de traitement programmable qui interface directement avec le milieu " extérieur par l'intermédiaire de trois bus : un bus d'adresse, un bus de donnée et un bus de commande. Ces bus externes sont utilisés pour connecter les mémoires et les organes d'entrée-sortie. Leur réalisation nécéssite au moins deux structures monolithiques distinctes, l'une assurant la fonction calcul et l'autre assurant la fonction de mémorisation, ces deux structures étant reliées entre elles par des connexions externes. 3. Les microprocesseurs monilithiques ("One chip microprocessors" en langue anglaise) sont de véritables --> micro-ordihateurs réalisés sur un même substrat de silicium. Ils renferment donc sur une même puce au moins : une unité de traitement, une mémoire et un dispositif d'entrée-sortie. Les mémoires qui sont associées ou intégrées à ces microprocesseurs sont essentiellement du type RAM et/ou ROM et/ou PROM et/ou EPROM et/ou EEPROM. Pour une application déterminée, le choix d'un microprocesseur fait donc également intervenir le choix du type de mémoire intégrée ou à associer au microprocesseur. En effet, dans de nombreuses applications, il est important de pouvoir conserver les informations enregistrées à la mise hors tension de la mémoire. Cela conduit tout naturellement à l'emploi de mémoires non inscriptibles et non effaçables du type ROM. Cependant, des informations relatives à un programme ou à des données inscrites dans une telle mémoire ne pourront par nature même de la mémoire, être modifiées. Pour pallier cet inconvénient, il suffit d'utiliser une mémoire inscriptible non volatile du type PROM dont le contenu peu être modifié ou une mémoire reprogrammable du type EPROM ou EEPROM dont le contenu peut- non seulement être modifié, mais également être effacé soit par action de rayons ultra-violets (EPROM), soit électriquement (EEPROM) . II est évident que l'utilisation d'une mémoire du type programmable PROM, EPROM ou EEPROM permet d'augmenter les possibilités d'un microprocesseu surtout si l'on donne tout son sens au mot programmable. En effet, ce type de mémoire a normalemen débouché sur des microprocesseurs programmables. --> Mettre un microprocesseur en mode programmation signifie que la structure interne de 1 * unité de traitement va se modifier de façon telle que les bus d'accès, d'adresse et de donnée soient disponibles depuis l'extérieur par l'intermédiaire de liaisons spécialisées. Il est important de noter qu'il est nécessaire d'arrêter le microprocesseur pour permettre la programmation de sa mémoire. Cette programmation revient à écrire une instruction ou une donnée dans la mémoire et toutes les opérations nécessaires à cette écriture sont exécutées à l ' in iative et sous le contrôle exclusif du milieu extérieur. On est ensuite passé à un type de programmation plus évolué, à savoir l ' auto-programmation qui se traduit par la possibilité donnée au microprocesseur de pouvoir luimême écrire ou modifier le contenu de sa propre mémoire sans interrompre l'exécution d'un programme et sans aucune intervention du milieu extérieur. Toutefois, un microprocesseur classique n'est, pas autoprogra mable. En effet, le compteur- ordinal qui assure l'adressage de la mémoire ne peut à la fois pointer sur une première adresse de la mémoire dont le contenu est à modifier et pointer sur une deuxième adresse de la même mémoire pour mettre en oeuvre une séquence d'écriture dans la zone mémoire située à la première adresse. Un microprocesseur programmable est décrit dans le brevet français n" 2 461 301 . . . Un autre élément important d'un microprocesseur est son unité de traitement qui se compose généralement d-'une unité arithmétique et logique, d'un registre temporaire et d'un accumulateur. Tous ces éléments permettent d'exécuter les opérations logiques classiques. Dans certains cas, l'unité de traitement comprend également des circuits de -->multiplication qui sont le plus souvent réalisés sous forme câblée ou microprogrammée à l'extérieur de l'unité de traitement du microprocesseur. Les applications basées sur l'utilisation de microprocesseurs sont très diversifiées et le choix d 'un microprocesseur passe par l'examen des caractéristiques évoquées ci-dessus e fonction des spécificités des. applications envisagées. Parmi toutes les applications possibles, il va être retenu ci-dessόus essentiellement celles qui font intervenir des informations confidentielles et/ou secrètes qu'il faut savoir protéger en toute sécurité. Ces informations traitées en . local ou transmises à distance doivent être stockées dans une zone protégée de mémoire généralement du type PROM, EPROM ou EEPROM. Pour assurer leur protection, il faut interdire leur lecture et/ou leur modification depuis ' l'extérieur par des personnes non habilitées. Ces interdictions sont gérées par un programme enregistré dans la mémoire du microprocesseur et elles sont traduites par des dispositifs que le microprocesseur est à même, sous la commande du programme, de maintenir verrouillés ou de déverrouiller temporairement pour interdire ou non l'accès à une zone protégée de la mémoire en fonction des données présentées aux entrées du microprocesseur. Si pour une application de ce type, on utilise un microprocesseur universel classique (Uni é de traitement et mémoire physiquement séparés), il n'est pas possible de garantir une sécurité totale pour des informations. confidentielles et/ou secrètes enregistrées dans une zone protégée de la mémoire. En effet, bien que ces informations soient effectivement protégées au cours du -->déroulement du programme, elles deviennent cependant accessibles lorsque le microprocesseur est au repos . La mémoire étant physiquement distincte du microprocesseur, il est possible de l'isoler et de la lire entièrement en utilisant des aiguilles de test correctement positionnées sur les plots d'entrée-sortie de la mémoire. Par contre, un microprocesseur monolithique peut permettre d'interdire l'accès à des informations confidentielles et/ou secrètes dès l'instant où le microprocesseur et sa mémoire son associés sur une même puce. Cet avantage découle de la structure physique d'un tel microprocesseur où les plots d'entrée-sortie de la mémoire ne sont pas apparents . Dans certaines applications, il est important que le microprocesseur puisse se souvenir de certains événements qui se son produits au cours du déroulement d'un programme. A titre d'exemple, on peut supposer qu'un fraudeur tente de percer le secret d'un système. Pour cela, le " fraudeur va être amené à présenter des informations' susceptibles de faire sauter les dispositifs de sécurité du système. Il es alors important que le microprocesseur soit â même d'enregistrer ces tentatives de fraude et de réagir pour éviter que le fraudeur ne puisse arriver à ses fins. Il suffit pour cela que le microprocesseur enregistre dans sa mémoire chaque tentative de fraude. Dès qu'un nombre prédéterminé de tentatives est atteint, le microprocesseur se met de luimême à l'état passif en ne prenant plus en compte toute nouvelle information présentée de l'extérieur. Il faut donc que le microprocesseur se souvienne et qu'il modifie de lui même son comportement. Cette possibilité lui est offerte s'il est auto-programmable. En conclusion, un microprocesseur monolithique autoprogrammable est le seul qui puisse agir et garder en -->toute sécurité des informations confidentielles et/ou secrètes enregistrées dans une zone protégée de sa mémoire . Une application plus particulière qui a motivé la structure du microprocesseur conforme à l'invention concerne notamment les systèmes de chiffrement à clé publique, car à l'heure actuelle auncun microprocesseur monolithique ne peut remplir à lui seul et en toute sécurité toutes les fonctions imposées par de telssystèmes de chiffrement. L'invention vise à pallier cette lacune et propose un microprocesseur à structure monolithique conçu notamment pour exécuter les algorithmes de calcul d'un système de chiffrement à clé publique composé d'une fonction publique et d'une fonction inverse secrète, du type comprenant au moins une mémoire morte programmable, une unité de traitement et un dispositif d" entrée-sortie, caractérisé en ce qu'il comprend une mémoire où est enregistré un algorithme correspondan à l'exécution de ladite fonction secrète, et en ce que ladite mémoire morte programmable contien les paramètres secrets de ladite fonction secrète nécéssaires à l'exécution dudit algorithme et inaccessibles de l'extérieur, ladite unité de traitement incluant des circuits de multiplication également nécessaires à l'exécution dudit algorithme. Un tel microprocesseur, s'il est en outre autoprogrammable, augmente encore la sécurité d'un système de chiffremen à clé publique tel que celui connu sous le nom RSA. Un tel microprocesseur peut avantageusement être monté dans un support portatif amovible tel qu'une carte de crédit. --> L'invention est exposée ci-après plus en détail à l'aide du dessin annexé illustran seulement un mode d'exécution du microprocesseur conforme à l'invention. Le microprocesseur (1) conforme à l'invention comprend une mémoire (M) qui, dans l'exemple représenté, se décompose en une mémoire (Ml) par exemple du type ROM et en une mémoire (M2) par exemple du type PROM, EPROM ou EEPROM. La. mémoire (M) est adressable par. deux registres (RAI, RA2) respectivement reliés à la mémoire (M) par deux bus. (bl, b2) . Le registre (RAI) peut servir de registre de stockage temporaire et de compteur ordinal pour assurer la progression des adresses de la mémoire (M) . Le registre (RA2) est utilisé comme registre d'adresse et contient l'adresse mémoire dont le contenu es a modifier. Le rôle de ces deux registres (RAI, RA2) peut être interverti. La mémoire (M) est également j.eliêe â deux registres de donnée (RDI, RD2) associés respectivemen aux deux registres d'adresse (RAI, RA2) . Une information, telle qu'une instruction de programme, ou une donnée, qui doit être lue dans la mémoire (M) et qui est adressée par le registre (RAI) voit son contenu transféré de la mémoire (M) dans le registre (RDI) . De même une information à écrire et dpnt le contenu est stocké dans le registre (RAI) est écrite a l'adresse de la mémoire (M) adressée par le registre (RDI) . La même dualité existe avec les registres (RA2 et RD2) . Les deux registres d'adresse (RAI, RA2) permettent l 'autoprogrammation du microprocesseur (1), la tension de programmation étant fournie à partir d'une bascule (P) . Les registres (RDI, RD2) sont respectivement reliés à la mémoire par deux bus (b3, b4) . Les quatres registres (RAI, --> RA2, RDI, RD2) sont reliés entre eux par l'intermédiaire d'an bus principal (B) . Le microprocesseur (1) comprend une unité de traitemen (T) constituée d'une unité arithmétique et logique (ALU) reliée par ses entrées à un registre accumulateur (AC) et à un registre de mémorisation temporaire (R) . Ces. eux registres (AC) et (R) sont reliés par leurs entrées au bus principal (B) . La . sortie de l'unité arithmétique et logique (ALU) est reliée au bus- (B) par 1 ° ntermédiaire d'un bus (b5) . L'unité de traitemen (T) comprend également des circuits de multiplication (MUL) , conçus de façon classique et reliés à l'unité arithmétique e logique (ALU) . Le microprocesseur comprend également une série de registres de travail (RTO, RT1„ ..., RTn) reliés au bus principal (B) et adressés par l'intermédiaire d'un, registre . d'adresse (RA3) . Le- bus principal (B) -est relié à un dispositif d'entrée-sortie (E/S) généralement constitué par des portes. L'ensemble des éléments constituant ce microprocesseur (1) est commandé par une unité de commande (UC) . Un tel microprocesseur (1) peut être avantageusement monté sur un suppor portatif amovible tel qu'une carte (C) . Le dispositif d'entrée-sortie (E/S) est alors relié à l'extérieur de la . carte par l'intermédiaire d'une interface (I) . Une telle carte (C) est alors connectable à un appareil (non représenté) dont le type est fonction de l 'application envisagée. A titre d'exemple, il va être donné ci-dessous l'utilisation d'un tel microprocesseur (1) dans un système de chiffrement à clé publique. --> Un système de chiffrement à clé publique se compose de deux fonctions inverses l'une de l'autre : une fonction publique traduite par algorithme qui prend en compte une clé publique et une fonction secrète traduite par un algorithme public ou secret qui prend en compte une clé secrète, fonction qui est l'inverse de la fonction publique précitée. Ces fonctions sont telles qu'en connaissant la fonction publique, il est pratiquement impossible d'en déduire la fonction inverse au sens de la complexité du calcul et du temps nécessaire à l'obtention du résultat. La plus connu des fonctions à clé publique est la fonction R.S.A. de Rivest, Shamir et Adleman. Cette fonction s'exprime sous la forme . C ≈ M® modulo n où - M est l'information à traiter, - n_ est; le produit d'au moins 2 nombres premiers élevés (p) et (q) , - e_ est un nombre entier premier avec (p-1) et (q-1) , - C est l'information chiffrée ou résultat. Le nombre (n) est par exemple de la forme ri = 2 4 + K, avec K compris entre 3 et 2 3 x-l . Le nombre (e) est par exemple choisi égal â 3 et les deux nombres premiers (p) et (q) sont congrus à 2 modulo 3. Dans l'exemple de la fonction R.S.A. ainsi donnée, la fonction publique consiste â élever au cube modulo (n) une information (M) à chiffrer, et la fonction secrète inverse consiste à extraire la racine cubique modulo- (n) de l'information chiffrée pour retrouver cette information en clair. La fonction inverse s'exprime donc sous la forme D = Cd modulo n --> La clé publique est constituée par un nombre composite (n) , tandis que les paramètres secrets de la fonction secrète sont constitués par les facteurs de (n) . Pour connaître la clé secrète à partir du nombre (n) * il fau factoriser ce nombre (n) . L'éxecution d'une telle fonction R.S.A. nécessite donc des circuits de multiplication qui, dans l'exemple illustré, sont intégrés dans l'unité de traitement (T) . , " . Le .microprocesseur conforme à l'invention. est particulièrement adapté pour exécuter la fonction inverse R.S.A. en toute sécurité. Pour cela, l'algorithme correspondant à cette fonction est enregistré soit dans la zone (Ml) , soit dans la zone (M2) de la mémoire (M) . Les paramètres secrets sont obligatoirement enregistrés dans la zone mémoire (M2) de la mémoire (M) et sont réellement inaccessibles de l'extérieur. Bien entendu, le microprocesseur (1) peut également exécuter l'algorithme correspondant à la fonction publique, cet algorithme étant par exemple enregistré dans la zone (Ml) de la mémoire (M) . La clé publique connue de tous n'a pas besoin d'être préenregistrêe et peut . être simplement introduite dans le microprocesseur (1) depuis l'extérieur. Le fait que le microprocesseur soit également autoprogrammable permet d'augmenter la sécurité du système, notamment en ce qui concerne la mémorisation des tentatives de fraude comme explicité précédemment. Il est possible également d'enregistrer plusieurs jeux de paramètres secrets et/ou de fonctions secrètes dans la zone mémoire protégée (M2) de la mémoire (M) . --> REVENDICATIONS 1. Microprocesseur à structure monolithique conçu notamment pour exécuter les algorithmes de calcul d'un système de chiffrement à clé publique composé d'une fonction publique et d'une fonction inverse secrète, du type comprenant au moins une mémoire morte programmable (M2) , une unité de traitement (T) et un dis osi f d 'entrée-sortie (E/S) , caractérisé en ce qu'il comprend une mémoire (Ml) ou est enregistré un algorithme correspondant à l'exécution de ladite fonction secrète, &t en ce que ladite mémoire morte programmable (M2) contient les paramètres secrets (S) de ladite fonction secrète nécéssaires à 1 ' éxecution dudit algorithme et inaccessibles depuis l'extérieur, ladite unité de traitement (T) incluant des circuits de multiplication (MUL) également nécessaires à l'exécution dudit algorithme . 2. Microprocesseur selon la revendication 1, caractérisé en ce que le microprocesseur (1) est autoprogrammable et comprend un premier registre d'adresse (RAI) pour l'adressage d'une information à modifier dans la mémoire (M2) et un deuxième registre (RA2) pour la progression d'adresse d'une séquence d'écriture autorisant l'écriture de l'information modifiée de la mémoire (M2) , ces deux registres étant respectivement associés à deux registres de donnée (RDI, RD2) . 3. Microprocesseur selon la revendication 1 ou 2, caractérisé en ce que la mémoire (Ml) précitée est une mémoire ROM. 4. Microprocesseur selon l'une des revendications précédentes, caractérisé en ce que la mémoire morte programmable (M2) précitée est du type EPROM ou EEPROM. 5. Microprocesseur selon l ' une des revendications précédentes , caractérisé en ce que son unité de traitement --> (T) comprend des .registres de travail supplémentaires pour stocker . les résultats intermédiaires au cours de l'exécution de l'algorithme précité-. 6. Microprocesseur selon l'une des- revendications précédentes, caractérisé en ce qu'il est monté sur un support portatif amovible (C) tel qu'une carte.