FR 3058813 A1 20180518 FR 1661108 A 20161116 B15338 - 16-ZV2-0434 1 STOCKAGE DANS UNE MEMOIRE NON VOLATILE Domaine La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits exploitant une mémoire non volatile. La présente description vise plus particulièrement la gestion du stockage d'information (données et programmes) dans une mémoire non volatile, plus particulièrement dans une mémoire flash. Exposé de l'art antérieur Des circuits intégrés peuvent comprendre des circuits 10 ou des informations (dites secrètes) qui sont considérés comme sensibles au vu de la sécurité des données qu'ils traitent, comme des clés d'authentification, des signatures, etc., ou des algorithmes qu'ils utilisent, comme des algorithmes de chiffrement ou de déchiffrement. De telles informations ne doivent pas être 15 communiquées ni être détectables par des tiers ou par des circuits non autorisés. En particulier, on doit s'assurer que l'emplacement de ces informations dans une mémoire non volatile ne puisse pas être détecté. Les techniques d'analyse du fonctionnement d'un circuit 20 intégré sont de plus en plus performantes et les pirates (hackers) bénéficient de techniques d'analyses de plus ou plus poussées. En particulier, les attaques par canaux cachés (analyse de la 3058813 B15338 - 16-ZV2-0434 2 consommation du circuit, de son rayonnement électromagnétique, etc.) sont de plus en plus performantes. Résumé 5 Il existe un besoin d'améliorer la protection des informations secrètes manipulées par un circuit électronique. Il existe également un besoin qui soit plus particulièrement adapté aux mémoires flash qui présentent des contraintes particulières en termes de différence de granularité 10 d'écriture, de lecture et d'effacement. Un mode de réalisation pallie tout ou partie des inconvénients des techniques connues de protection des informations manipulées par un circuit intégré. Un mode de réalisation prévoit plus particulièrement une 15 solution adaptée aux mémoires flash. Ainsi, un mode de réalisation prévoit un procédé de brouillage d'adresses dans une mémoire non volatile, organisée en pages, dans lequel : la mémoire présente une granularité d'écriture de mots 20 comportant un ou plusieurs octets ; la mémoire comporte une granularité d'effacement de blocs comportant une ou plusieurs pages de plusieurs mots chacune ; et des adresses logiques sont converties en adresses 25 physiques en respectant les conditions suivantes : les adresses de données sont brouillées en respectant la structure des pages ; les adresses de code sont brouillées en respectant la structure des mots. 30 Selon un mode de réalisation, les adresses de code et de données sont en outre brouillées en respectant la structure des blocs. Selon un mode de réalisation, des fonctions de brouillage d'adresses font intervenir des mots représentatifs de 35 clés, identiques ou différentes pour toutes les fonctions. 3058813 B15338 - 16-ZV2-0434 3 Selon un mode de réalisation, le brouillage des adresses modifie les bits les plus significatifs représentatifs de l'adresse sans modifier les bits représentatifs de l'adresse du mot dans la page. 5 Selon un mode de réalisation, une fonction de brouillage des adresses de données modifie les bits les moins significatifs représentatifs de l'adresse sans modifier les bits représentatifs de l'adresse de page. Selon un mode de réalisation, les blocs sont regroupés 10 en groupes de blocs. Selon un mode de réalisation, une fonction de brouillage des adresses de code modifie les bits les moins significatifs représentatifs de l'adresse sans modifier l'adresse des bits représentatifs de l'adresse du groupe de blocs. 15 Un mode de réalisation prévoit également un circuit électronique, comportant : une unité de traitement ; au moins une mémoire non volatile ; et un circuit de brouillage d'adresses entre l'unité de 20 traitement et la mémoire non volatile, adapté à mettre en oeuvre le procédé décrit. Brève description des dessins Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de 25 réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d'un circuit électronique du type auquel s'appliquent, à titre d'exemple, les 30 modes de réalisation décrits ; la figure 2 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d'un circuit mémoire équipé d'un circuit de brouillage d'adresses ; 3058813 B15338 - 16-ZV2-0434 4 la figure 3 illustre, de façon très schématique, l'organisation de la mémoire en termes d'espace logique et d'espace physique ; la figure 4 représente, de façon très schématique et 5 sous forme de blocs, un mode de réalisation d'un circuit de brouillage d'adresses ; la figure 5 représente un exemple de réalisation de la fonction de brouillage d'adresses de code ; la figure 6 représente un exemple de réalisation d'une 10 fonction de la figure 5 de traitement d'adresses de code ; la figure 7 représente un exemple de réalisation d'une fonction de brouillage d'adresses de données ; et la figure 8 représente un exemple de réalisation d'une fonction de brouillage d'adresses. 15 Description détaillée De mêmes éléments ont été désignés par de mêmes références aux différentes figures. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation qui vont être décrits 20 ont été représentés et seront détaillés. La figure 1 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d'un circuit électronique 1 du type auquel s'appliquent, à titre d'exemple, les modes de réalisation qui vont être décrits. 25 Le circuit 1 comporte : une ou plusieurs unités de traitement 11 (PU), par exemple une machine d'états, un microprocesseur, un circuit logique programmable, etc. ; une ou plusieurs zones 12 (RAM) de stockage volatile, 30 par exemple de type mémoire RAM ou registres, pour stocker temporairement des informations (instructions, adresses, données) pendant les traitements ; une ou plusieurs zones 13 (NVM) de stockage non volatile (par exemple de type flash) pour stocker des informations de façon 35 durable et en particulier quand le circuit n'est pas alimenté ; 3058813 B15338 - 16-ZV2-0434 5 un ou plusieurs bus 14 de données, d'adresses et/ou de commandes entre les différents éléments internes au circuit 1 ; et une ou plusieurs interfaces d'entrée-sortie 15 (I/O) de 5 communication, par exemple de type bus série, avec l'extérieur du circuit 1. Le cas échéant, le circuit 1 intègre également un circuit de communication sans contact (CLF - ContactLess Front-end), de type communication en champ proche (Near Field Communication - NFC). Par ailleurs, le circuit 1 peut intégrer d'autres fonctions selon l'application, par exemple, un crypto-processeur, d'autres interfaces, d'autres mémoires, etc., symbolisées par un bloc 16 (FCT) en figure 1. Le circuit 1 ou une partie de celui-ci incluant au moins une mémoire non volatile, des éléments de mémoire volatile et une unité d'exécution sont considérés comme sécurisés, c'est-à-dire que l'unité d'exécution peut extraire et stocker des informations dans la ou les mémoires de façon sécurisée et manipuler ces informations également de façon sécurisée. Par contre, on doit s'assurer que les informations stockées dans la mémoire non volatile ne puissent pas être exploitées par un circuit ou une unité d'exécution non sécurisé. Les modes de réalisation décrits prévoient d'organiser le stockage des informations dans la mémoire non volatile de façon 25 particulière afin d'empêcher que les accès à la mémoire ne soient détectables par des attaques par canaux cachés. Selon un mode de réalisation préféré, on prévoit également d'empêcher qu'une lecture de ces informations par un circuit ou une unité non autorisée soit exploitable. 30 On décrira par la suite des exemples plus particulièrement appliqués à une mémoire flash. Toutefois, tous ces modes de réalisation s'appliquent plus généralement à toute mémoire non volatile. Le stockage dans une mémoire non volatile fait appel à 35 une interface ou décodeur d'adresses chargé de convertir des 3058813 B15338 - 16-ZV2-0434 6 adresses logiques en adresses physiques. De façon simplifiée, les adresses logiques correspondent aux adresses exploitées par l'unité de traitement et les adresses physiques localisent l'emplacement physique des informations dans la mémoire. 5 Selon les modes de réalisation décrits, on prévoit de brouiller (scramble) les données et le code dans la mémoire de façon particulière pour rendre inexploitable des informations lues dans la mémoire par un circuit ou une unité ne possédant pas la règle d'organisation du stockage. 10 La figure 2 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d'une mémoire 2 équipée d'un circuit de brouillage d'adresses. La mémoire 2 comporte un plan mémoire 22 (MEM ARRAY) formé d'un réseau matriciel de cellules mémoire et un décodeur 15 d'adresses 24 (DECOD) chargé de décoder des adresses logiques L-ADD reçues d'un bus d'adresses 26 en adresses physiques pour orienter des informations INF reçues sur un bus 28 (écriture) ou fournir des informations INF lues sur ce bus 28 (lecture). On désigne habituellement le bus 28 "bus de données", ces données 20 représentant le contenu stocké dans la mémoire. Toutefois, les modes de réalisation décrits différenciant, parmi ces données stockées, le code ou instructions (le ou les programmes et algorithmes à exécuter) et les données proprement dites ou variables, on désigne arbitrairement le bus 28 "bus d'informations" pour le distinguer du bus d'adresses. Dans le mode de réalisation représenté en figure 2, un circuit 3 de brouillage d'adresses (SCR UNIT) intercepte les adresses logiques L-ADD afin de les brouiller avant de fournir des adresses brouillées S-ADD au décodeur d'adresses 24 qui convertit ces adresses brouillées S-ADD en adresses physiques. Ainsi, le décodeur 24 ne convertit pas directement les adresses logiques L-ADD mais des adresses (logiques) brouillées ou mélangées. Par conséquent, une lecture d'informations dans la mémoire à partir d'adresses logiques L-ADD directement décodées par le décodeur 24, sans passer par la loi de brouillage de l'unité 3058813 B15338 - 16-ZV2-0434 7 3, fournit des informations inexploitables car ne correspondant pas aux informations attendues. La figure 3 illustre, de façon très schématique, l'organisation de la mémoire 2 en termes d'espace logique et 5 d'espace physique. La mémoire logique LOG, c'est-à-dire l'espace mémoire logique en termes d'adresses, est divisée en deux régions I et II de tailles identiques ou différentes destinées à contenir respectivement du code ou instructions CODE (le ou les programmes 10 et algorithmes à exécuter) et des données proprement dites DATA. Les données sont supposées évoluer, c'est-à-dire changer de valeur tandis que le code est censé être fixe, à l'exception de mises à jour du code lui-même. Les données correspondent par exemple à des variables, des valeurs, des valeurs d'adresses, des opérandes, 15 etc. Selon un mode de réalisation, on découpe la mémoire physique ou plan mémoire 22 (son adressage physique) en plusieurs blocs B d'une ou plusieurs pages, chaque page étant découpée en mots W d'un ou plusieurs octets. Le mot correspond à la granularité 20 d'adressage physique pour écriture ou lecture des informations (données ou code) dans la mémoire. Le bloc B correspond à la granularité d'adressage physique pour effacement des informations dans la mémoire. En pratique, pour une mémoire flash, la granularité d'écriture et de lecture est l'octet et la granularité 25 d'effacement est la page. Toutefois, pour optimiser l'adressage on peut regrouper, au niveau de l'adressage physique, plusieurs octets (un mot) pour l'écriture ou la lecture et plusieurs pages (un bloc) pour l'effacement. On prévoit de brouiller de façon différente les adresses 30 de code et les adresses de données. On tire ici profit du fait que le code est fixe, ce qui signifie qu'il n'a besoin d'être accédé qu'en lecture alors que les données sont variables et doivent donc pouvoir être écrites et également effacées. Ainsi, on prévoit de brouiller les adresses avec une granularité au 35 niveau du mot pour le code et au niveau du bloc (ou en variante 3058813 B15338 - 16-ZV2-0434 8 de la page) pour les données. Toutes les adresses de code et de données sont par ailleurs brouillées en respectant la structure de bloc. La figure 4 représente, de façon très schématique et 5 sous forme de blocs, un mode de réalisation du circuit 3 de brouillage d'adresses. Selon ce mode de réalisation, le circuit 3 comporte deux unités ou fonctions 31 et 32 de brouillage d'adresses respectivement recevant les adresses logiques de code et les 10 adresses logiques de données sans changer les adresses de région (I ou II). Fonctionnellement, le bus d'adresses 26 recevant les adresses logiques L-ADD (par exemple de l'unité de traitement 11) peut être envoyé sur un multiplexeur 33, un vers deux, chargé d'aiguiller les adresses vers l'une ou l'autre des unités 31 et 15 32. L'unité 31 (W-ADD SCR) brouille les adresses en respectant la structure des mots W, définissant la granularité la plus faible entre lecture et écriture dans la mémoire. L'unité 32 (P-ADD SCR) brouille les adresses en respectant la structure des pages P (en variante, des blocs) définissant la granularité d'effacement dans 20 la mémoire. Le multiplexeur 33 est commandé par un signal C/D sur un bit identifiant la région logique I ou II, donc s'il s'agit d'une donnée ou de code. En variante, le multiplexeur 33 est omis et le bus d'adresse 26 est directement relié aux entrées d'adresses des unités 31 et 32. 25 Dans le mode de réalisation représenté, on mélange également les blocs, c'est-à-dire que les positions des blocs sont mélangées indépendamment du fait qu'ils contiennent des données ou du code. Fonctionnellement, un multiplexeur 34, deux vers un, reçoit les adresses brouillées par les unités 31 et 32 et les 30 envoie sur une unité 35 (B-ADD SCR) de brouillages des adresses au niveau bloc, c'est-à-dire mélangeant la position des blocs dans l'espace de stockage. L'unité 35 fournit l'adresse brouillée SD au décodeur 24 (figure 2). Le multiplexeur 34 est commandé par le signal C/D. 3058813 B15338 - 16-ZV2-0434 9 Dans un mode de réalisation simplifié, les adresses brouillées, fournies par le multiplexeur 34, sont fournies directement au décodeur d'adresses 24, c'est-à-dire que les blocs de données restent dans le même ordre et seuls l'ordre des pages 5 dans chaque bloc est modifié, tandis que les positions des mots de code sont mélangées à l'intérieur de chaque bloc. En supposant les adresses logiques croissantes dans l'espace logique, le signal C/D peut par exemple provenir d'une comparaison de l'adresse logique L-ADD par rapport à un seuil 10 représentant la première adresse de la région II. Les traitements opérés respectent la taille des adresses, par exemple de k bits. La loi de brouillage mise en oeuvre par chaque unité 31, 32 ou 35 peut être identique ou différente pour chaque unité. Les 15 lois de brouillage peuvent être prédéfinies, c'est-à-dire figées ou dépendre de clés de brouillage, respectivement KW, KP ou KB, identiques ou différentes les unes des autres. L'utilisation de clés de brouillage permet, par exemple, d'individualiser le brouillage d'un circuit à un autre. 20 Les figures 5 à 8 représentent des exemples de réalisation des fonctions 31, 32 et 35 de brouillage d'adresses. On suppose de façon arbitraire que les trois premiers bits d'adresses (les moins significatifs - lsb) identifient les octets dans un mot. Par exemple, en considérant des mots de code 25 ou d'instruction de 64 bits, soit 8 octets, les trois bits de poids faibles de l'adresse identifient l'octet dans le mot et les k-3 bits d'adresse restants identifient donc le mot. On suppose également que toutes les fonctions de brouillage exploitent une même clé key représentant les clés KB, 30 KW et KP. La figure 5 représente un exemple de réalisation de la fonction 31 de brouillage d'adresses de code. Les k-3 bits les plus significatifs msb de l'adresse L-ADD sont envoyés sur une fonction Al de brouillage du bloc 35 tandis que les 3 bits les moins significatifs traversent l'unité 3058813 B15338 - 16-ZV2-0434 10 31 sans être modifiés. La fonction Al reçoit la clé key, par exemple sur 16 bits afin de brouiller les k-3 bits les plus significatifs. Ainsi, les mots du code ayant des adresses successives dans la mémoire logique se retrouvent brouillés 5 (répartis) dans plusieurs pages mémoire, de préférence en étant envoyés dans des blocs différents. Le brouillage s'applique sur les k-3 bits de poids forts. On a donc un brouillage de mots de 2^3=8 octets (64 bits). Le brouillage respecte la structure des mots, qui est la plus petite unité de lecture pour la mémoire. 10 Selon une variante de réalisation, on souhaite également se protéger contre des lectures non autorisées par un circuit externe, on prévoit de mélanger également les octets dans chaque mot. Pour cela, on ajoute un bloc recevant les trois bits de poids faible en entrée et fournissant trois bits brouillés en sortie. 15 On peut, par exemple, utilisé, comme clé de brouillage des octets la clé key et les k-3 bits d'adresse de poids fort. Ainsi, les k-3 bits d'adresse sont également brouillés, le bit le plus significatif représentant le mot W. La figure 6 représente un exemple de réalisation de la 20 fonction Al de la figure 5 de traitement des k-3 bits (L-ADD[3:k]) de l'adresse L-ADD. On suppose que l'on prend en compte des groupes de blocs ou macro blocs. Par exemple, dans une mémoire de 2^k octets, il y a 2^r groupes de taille 2^s octets chacune. Dans k bits, les r 25 bits les plus significatifs identifient le groupe et les s bits suivants (compris entre k-r et k-r-3) identifient l'octet dans la région. On note que la taille de la mémoire n'est pas nécessairement une puissance de deux. Par exemple, on peut avoir 30 R REVENDICATIONS1. Procédé de brouillage d'adresses dans une mémoire non volatile (2), organisée en pages (P), dans lequel : la mémoire présente une granularité d'écriture de mots (W) comportant un ou plusieurs octets ; la mémoire (2) comporte une granularité d'effacement de blocs (B) comportant une ou plusieurs pages (P) de plusieurs mots chacune ; et des adresses logiques (L-ADD) sont converties en adresses physiques en respectant les conditions suivantes : les adresses de données sont brouillées (32) en respectant la structure des pages ; et les adresses de code sont brouillées (31) en respectant la structure des mots. 2. Procédé selon la revendication 1, dans lequel les 15 adresses de code et de données sont en outre brouillées (35) en respectant la structure des blocs (B). 3. Procédé selon la revendication 1 ou 2, dans lequel des fonctions (31, 32, 35) de brouillage d'adresses font intervenir des mots représentatifs de clés, identiques ou 20 différentes pour toutes les fonctions. 4. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel le brouillage des adresses modifie les bits les plus significatifs (k-3 ; k-2) représentatifs de l'adresse sans modifier les bits représentatifs de l'adresse du mot dans la page. 25 5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel une fonction (32) de brouillage des adresses de données modifie les bits les moins significatifs (n) représentatifs de l'adresse sans modifier les bits (n) représentatifs de l'adresse de page. 30 6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel les blocs sont regroupés en groupes de blocs. 7. Procédé selon la revendication 6, dans lequel une fonction (31) de brouillage des adresses de code modifie les bits les moins significatifs (k-r) représentatifs de l'adresse sans 3058813 B15338 - 16-ZV2-0434 modifier l'adresse les bits (r) représentatifs de l'adresse du groupe de blocs. 8. Circuit électronique (1), comportant : une unité de traitement (11) ; 5 au moins une mémoire non volatile (13) ; et un circuit (3) de brouillage d'adresses entre l'unité de traitement et la mémoire non volatile, adapté à mettre en oeuvre le procédé selon l'une quelconque des revendications 1 à 7.