Brevet FR2809201A1 — publié le 20011123

L'invention concerne de façon générale un procédé et un dispositif pour sécuriser des contenus en données, stockés dans une mémoire non volatile. Plus spécifique- ment, la présente invention concerne un procédé et un dispositif pour empêcher toute modification, révision ou accès non autorisé à des contenus en données, stockés dans une mémoire flash, par un brouillage des adresses et des données, de manière que ces données, non correctement récupérées, soient sans utilité. Comme représenté sur la figure 1, une unité à micro-contrôleur (MCU) est un composant clé dans une structure d'ordinateur, comprenant une mémoire flash 10 pour stocker des programmes exécutables. Les systèmes actuels de cryptage et de décryptage n'offrent aucune protection aux contenus de données stockés dans la mémoire flash 10. Par conséquent, un individu familier des techniques de cryptage et de décryptage peut aisément lire et accéder à des données ayant été stockées dans la mémoire flash 10. Par exemple, un programme exécutable, contenant de l'information telle qu'un mot de passe ou un identifiant de l'utilisateur, peut aisément être l'objet d'un accès et publié, une fois stocké dans la mémoire flash 10. En plus, un individu utilisant un logiciel spé- cial (par exemple, SOFT IN CIRCUIT EMULATOR ou SOFT ICE) peut aisément modifier un programme d'ordinateur, comme en accédant à l'information stockée dans la mémoire flash 10, sans avoir à connaître le mot de passe de l'utilisateur, en effectuant de cette manière un vol d'information et en violant la sécurité. A titre d'exemple, les compagnies de téléphones cel- lulaires incorporent de façon générale des données confi- dentielles et propriétaires importantes, concernant les fonctions et les capacités de divers téléphones cellulai- res, dans des programmes exécutables, par utilisation de DSP. Cependant, ces données importantes ne peuvent être protégées de façon sûre contre tout accès non autorisé, lorsqu'elles sont stockées dans la mémoire flash. De manière correspondante, la mémoire flash pose sans aucun doute un sérieux risque de sécurité concernant la protec- tion des données importantes. Une manière de résoudre les problèmes discutés ci-dessus est illustrée sur la figure 2, qui combine une MCU et une mémoire flash en un circuit intégré (IC) 20. De cette manière, la mémoire flash peut uniquement faire l'objet d'un accès interne par un bus de données intégré, de façon à empêcher tout décodage et accès non autorisé et toute révision. Cependant, ceci n'est pas une façon idéale de résoudre les problèmes évoqués ci-dessus, du fait que les coûts de fabrication sont significativement augmentés, en partie du fait que la mémoire flash et la MCU sont fabriquées par des processus différents. En tant que telle, la présente invention tire avan- tage du fait que la lecture et l'écriture de la mémoire flash se font généralement durant le chargement du pro- gramme ou le lancement de la machine, ce qui ne se pro- duit pas fréquemment. Par conséquent, par utilisation d'un minimum de logique et de conception spéciale, la présente invention est en mesure de protéger les contenus en données stockés dans la mémoire flash. Tel que décrit antérieurement, le but de l'invention est de fournir un procédé et un dispositif permettant de sécuriser des contenus en données stockés dans une mémoire non volatile. En particulier, les programmes exé- cutables sont dimensionnés et traités sous la forme de données à base de blocs et par brouillage et accès aléa- toire, l'ordre et la position des contenus en données sont modifiés et l'on forme une nouvelle combinaison. Etant donné que les contenus en données d'origine ne peu- vent être récupérés sans inverser le processus d'origine, les contenus en données se trouvant dans une mémoire flash sont protégés, sans impliquer de coûts de fabrica- tion élevés. La présente invention va être comprise plus aisément à la lecture de la description ci-après de la conception de l'architecture et de l'algorithme, faite à l'aide des dessins annexés, dans lesquels: la figure 1 est un schéma à blocs d'un système d'ordi- nateur selon un premier mode de réalisation de la présente invention; la figure 2 est un schéma à blocs représentant une MCU et une mémoire flash dans un circuit inté- gré IC; la figure 3 est un diagramme de structure système de la présente invention; la figure 4 est un diagramme détaillé de la micropuce à mémoire de la figure 3; la figure 5 est un diagramme en tableau, illustrant l'opération de rotation; la figure 6 est un ordinogramme illustrant l'opération d'écriture; la figure 7 est un ordinogramme illustrant l'opération de lecture; la figure 8 est un schéma à blocs d'un deuxième mode de réalisation de la présente invention; et la figure 9 illustre l'opération de rotation représen- tée sur la figure 8A. Les numéros de référence utilisés sur les figures sont explicités cidessous: mémoire flash 20 circuit intégré IC puce de sécurité à mémoire de données 31 générateur de brouillage d'adresse 32 générateur de nombres aléatoires 33 décodeur 34 tampon clé micropuce 41 registre 42 PROM 43 générateur de nombres aléatoires. Comme représenté sur la figure 3, afin de lire et d'écrire des données depuis et sur une mémoire flash 10, en se basant sur une instruction venant de la MCU, une puce de sécurité à mémoire de données 30 est utilisée pour traiter et récupérer les données s'y trouvant. Plus spécifiquement, la figure 4 représente la structure interne de la puce de sécurité à mémoire de données 30, comprenant: (1) un brouilleur d'adresse 31 effectuant une rotation sur un programme à base de blocs et générant une nouvelle adresse pour le stockage et l'écriture de données, sur la mémoire flash, en se basant sur la nou- velle adresse; (2) le générateur de nombres aléatoi- res 32 pour générer une séquence aléatoire utilisée comme base pour la lecture de données depuis la mémoire flash; et (3) un décodeur 33 pour le filtrage de données lues selon la séquence aléatoire, et pour inverser le pro- gramme à base de blocs, de manière que les données d'ori- gine puissent être récupérées et exécutées par la MCU. Les opérations d'écriture et de lecture, dirigées de la MCU à la mémoire flash, sont explicitées ci-dessous. [Opération de lecture] - elle peut être considérée comme un codage de données: Par l'intermédiaire d'un logiciel, un programme exé- cutable est converti en un programme à base de blocs, de format 8 x 8 bits et soumis à une rotation. Le programme à base de blocs soumis à une rotation, qui est stocké à l'adresse d'origine, se voit ensuite allouer une nouvelle adresse, générée par le brouilleur d'adresse 31. Par souci de simplicité, un programme à base de blocs de for- mat 4 x 4 bits est utilisé ci-dessous à titre d'illustra- tion. Sur la figure 5, la table à gauche contient les don- nées d'origine. En particulier, les données 0011 se trou- vent à l'adresse 80h; les données 1011 à l'adresse 81h, les données 1100 à l'adresse 82h et les données 1010 à l'adresse 83h. La table à droite contient les données, telles qu'elles apparaissent après avoir effectué le pro- cessus de rotation (par exemple, une rotation à 90 degrés vers la droite), dans lequel les données 1110 correspon- dent à la nouvelle adresse 80'h; les données 0100 cor- respondent à la nouvelle adresse 81'h; les données 1011 correspondent à la nouvelle adresse 82'h; et les don- nées 0011 correspondent à la nouvelle adresse 83'h. Cependant, en comparant les deux programmes exécutables à format 4 x 4 bits, il est évident que les données se trouvant, par exemple, dans la dernière colonne du tableau, du côté droit, correspondent aux données d'ori- gine stockées à l'adresse 80h du tableau, du côté gauche. Il est évident que les données, ayant été brouillées et se trouvant à la nouvelle adresse, sont différentes des données d'origine. Cependant, une tentative d'accès illé- gitime aux contenus en données stockées dans la mémoire flash n'aura pas connaissance du fait que les données ont été modifiées et, par conséquence, obtiendrait des don- nées brouillées, différentes des données d'origine. Les étapes que l'on trouve dans l'ordinogramme de la figure 6 sont, les suivantes: étape a - partitionnement d'un programme exécutable en données à base de blocs; étape b - rotation des données à base de blocs, dans le but de brouiller les adresses de données d'origine et de former de nouvelles adres- ses de données; étape c - affectation de nouvelles adresses de don- nées aux données à base de blocs, soumises à la rotation; et étape d stockage des données à base de blocs ayant été soumises à la rotation, par utilisation des nouvelles adresses, dans la mémoire flash 10. [Opération de lecture] - elle peut être considérée comme décodage de données: Un générateur de nombres aléatoires 32 est utilisé pour générer une séquence de nombres aléatoires, de manière que les données à base de blocs, soumises à une opération de rotation, puissent être récupérées à partir de la mémoire flash 10, selon la séquence aléatoire et être temporairement stockées dans un tampon (par exemple SRAM). L'espace de séquence aléatoire va comprendre les plages d'adresses de lecture requises, plus un certain espace d'adresse d'accès fictif. Etant donné que les don- nées récupérées contiennent les données d'origine, ainsi que des données fictives, elles doivent être filtrées pour éliminer les données fictives. En utilisant un déco- deur 33, les données fictives et les adresses correspon- dantes sont effacées. En effectuant une rotation inverse sur les données filtrées, les données et les adresses d'origine peuvent être obtenues de manière que le pro- gramme exécutable puisse être exécuté par la MCU ou le DSP. En résultat, il serait difficile de déchiffrer les données reçues de façon aléatoire, spécialement si des données fictives y sont incorporées. Les étapes que l'on trouve dans l'ordinogramme de la figure 7, sont les suivantes: étape a - génération d'une séquence de nombres aléa- toires, par utilisation d'un générateur de nombres aléatoires 32; étape b - récupération de données par la mémoire flash, en se basant sur la séquence de nom- bres aléatoires venant de l'étape a et stockage des données récupérées dans un tam- pon; étape c - filtrage des données récupérées stockées dans le tampon 34, pour éliminer les données fictives; et étape d - rotation inverse sur les données filtrées, pour découvrir les adresses d'origine et récupérer les données d'origine. En outre, dans l'opération de lecture, une clé 35, située dans la puce de sécurité à mémoire de données 30, est utilisée pour réfléchir une séquence de mappage d'adresses particulière, de manière que des données uti- les puissent être distinguées de données inutiles. La clé 35 peut, en variante, être stockée dans une carte à mémoire. [Deuxième mode de réalisation] Du fait de l'incrémentation linéaire des adresses du programme, une manière simple d'empêcher tout accès non autorisé consiste à commuter chaque adresse réelle avec une adresse aléatoire, de manière à former une série d'adresses aléatoires dans la micropuce 40. Comme représenté sur la figure 8, un programme venant de la MCU est stocké dans le registre 41 de la micropuce 40, en des unités à format d'OCTET. Dans la micropuce 40 se trouve également une mémoire à lecture seule programmable (PROM) 42 ou une petite mémoire flash. Comme décrit ci-dessus, il est difficile et coûteux d'in- corporer une grande mémoire flash 10 dans la puce 40. Cependant, il est beaucoup plus simple de fabriquer une petite PROM 42. Les codes aléatoires venant du générateur de nombres aléatoires 43 peuvent être écrits dans la PROM 42 pour créer une table de conver- sion (non représentée), permettant de contrôler les échanges d'adresses correspondantes. Les données corres- pondant aux adresses originelles sont récupérées, soumi- ses à une rotation, puis stockées dans la mémoire flash 10. En résultat, les données, récupérées de manière non autorisée, seraient sans utilité et la mémoire flash est sécurisée contre un accès ou une modification non autorisé(e). En plus, du fait du générateur de nombres aléatoires 43, la table de conversion que l'on a dans chaque micropuce 40 est différente. De manière correspon- dante, les données d'origine se trouvant dans la mémoire flash peuvent être masquées de différentes manières. En outre, les données d'origine peuvent également être complémentées avant la commutation, afin d'augmenter le niveau de cryptage. Une illustration (4 x 4 bits) est représentée sur la figure 9. A3 à AO désignent des adresses originelles, m3 à mO désignent les adresses aléatoires. La flèche illus- trée sur la figure 9 désigne la relation intervenant entre ces deux types d'adresses. A3, A2, Ai et AO correspondent respectivement à 0011, 0010, 0001 et 0000. Par utilisation des adresses originelles pour des calculs complémentaires, alors m3 = A2, m2 = AO, ml = A3, mO = A1, de telle sorte que m3 = 0110, m2 = 0010, ml = 0111 et mO = 0011, qui sont les nouvelles adresses dans la mémoire flash 10. Une telle opération dissuaderait tout accès non autorisé aux données. Durant la récupération des données, la table de con- version stockée dans la PROM 42 est utilisée pour récupé- rer les données d'origine. De plus, même si les données stockées dans la mémoire flash 10 sont lues d'abord par un ordinateur, après qu'il ait été d'abord mis en service, les données sont lues ensuite de façon séquentielle. En tant que telle, une manière permettant d'augmenter la difficulté par cryptage est d'utiliser le générateur de nombres aléatoires 43 en fonctionnement en lecture, pour intro- duire des données (fictives) non nécessaires dans les données récupérées, de manière à provoquer une lecture fausse, afin de contribuer encore à empêcher tout accès non autorisé aux données. Comme décrit ci-dessus, la présente invention four- nit un procédé et un dispositif permettant de sécuriser des contenus en données stockés dans une mémoire non volatile. Par utilisation du concept de brouillage d'adresse et de séquence aléatoire, une nouvelle combi- naison d'adresses de données peut être formée. En résul- tat, les données d'origine peuvent être récupérées sans disposer du procédé de récupération indiqué ci-dessus. En réalité, la présente invention fournit une manière nou- velle et efficace de résoudre le problème de l'art anté- rieur de sécurité des données dans la mémoire flash. Il est évident que la spécification et les exemples sont à considérer à titre uniquement explicatif. D'autres modes de réalisation de la présente invention vont être évidents à l'homme de l'art, à la lecture de la descrip- tion et par mise en oeuvre de la présente invention décrite ici, le vrai champ de la présente invention étant délimité par les revendications annexées. REVENDICATIONS 1. Procédé de sécurisation de contenus en données stockés dans une mémoire non volatile, caractérisé par le fait qu'il comprend les étapes consistant à: écrire des données à partitionner en données origi- nelles à base de blocs, les soumettre également à une opération de rotation et les affecter à de nouvelles adresses de données, dans la mémoire non volatile (10); et récupérer des données originelles et fictives pla- cées dans la mémoire non volatile (10), en se basant sur une séquence de nombres aléatoires générés depuis un générateur de nombres aléatoires (32), incluant une opé- ration de filtrage et de rotation inverse. 2. Procédé selon la revendication 1,, caractérisé par le fait que l'étape d'écriture comprend les étapes consistant à: partitionner, avec le programme exécutable, en for- mant des données à base de blocs; soumettre à une rotation les données à base de blocs pour brouiller les adresses de données d'origine et for- mer de nouvelles adresses de données; affecter les données à base de blocs, situées aux adresses de données d'origine, à de nouvelles adresses de données stocker dans la mémoire flash (10) les données à base de blocs après qu'elles aient été soumises à l'opé- ration de rotation, en se basant sur les nouvelles adres- ses de données. 3. Procédé selon la revendication 2,, caractérisé par le fait que les données à base de blocs sont de for- mat 8 x 8 bits. 4. Procédé selon la revendication 1, caractérisé par le fait que l'étape de récupération comprend les éta- pes consistant à: générer une séquence de nombres aléatoires, par uti- lisation d'un générateur de nombres aléatoires (32); récupérer des données dans la mémoire flash (10) en se basant sur la séquence de nombres aléatoires et stocker les données récupérées dans un tampon (34); soumettre les données récupérées, stockées dans le tampon (34), à une opération de filtrage pour éliminer les données fictives; et faire subir une opération de rotation inverse aux données après qu'elles aient été filtrées, pour récupérer les données à base de blocs d'origine. 5. Dispositif de sécurisation des contenus en don- nées stockés dans une mémoire non volatile, sous la forme d'une puce de sécurité (30), intercalée entre une unité à micro-contrôleur (ou DSP) et une mémoire flash (10), caractérisé par le fait qu'il comprend: un brouilleur d'adresse (31), pour partitionner les données à base de blocs d'origine, effectuer une opéra- tion de rotation sur les données à base de blocs et for- mer de nouvelles adresses de données; un générateur de nombres aléatoires (32), pour géné- rer une séquence de nombres aléatoires utilisée à titre de base pour la récupération des teneurs en données à partir de la mémoire flash (10); et un décodeur (33), pour éliminer par filtrage les données fictives et récupérer les données à base de blocs d'origine et les adresses à utiliser par l'unité à micro-contrôleur (ou DSP), par exécution d'une opéra- tion de rotation inverse. 6. Dispositif selon la revendication 5, caracté- risé par le fait que la puce de sécurité (30) comprend une clé (35) unique, permettant de réfléchir une séquence de mappage d'adresse particulière, de manière qu'on puisse avec elle supprimer des données fictives par une opération de filtrage. 7. Procédé de sécurisation de contenus en données stockés dans un dispositif mémoire, tel qu'une mémoire à lecture seule programmable (PROM) (42) et une mémoire flash (10) de petite capacité, caractérisé par le fait qu'il comprend les étapes consistant à: générer une table de conversion, par des codes aléatoires venant d'un générateur de nombres aléatoi- res (43), pour contrôler les échanges d'adresse; récupérer les données correspondant aux adresses d'origine; effectuer une opération de rotation sur les données récupérées; et stocker dans le dispositif à mémoire les données, après qu'elles aient été soumises à l'opération de rota- tion. 8. Procédé selon la revendication 7, caractérisé par le fait que les adresses d'origine sont complémentées avant de procéder aux changements d'adresses. 9. Procédé selon la revendication 8, caractérisé par le fait que, dans l'opération de lecture, le généra- teur de nombres aléatoires (43) introduit des données fictives dans les données récupérées, de manière à provo- quer une lecture fausse de celles-ci, afin de dissuader de tout accès non autorisé aux données.