Brevet FR3136079A1 — publié le 20231201

Méthode pour la gestion d’une zone de données sensible en mémoire FLASH La présente description concerne un procédé comprenant : la modification ou suppression d’une ou plusieurs valeurs de donnée d’une mémoire non volatile(104), l’une ou plusieurs valeurs de donnée étant stockées dans un premier secteur (120, 122) de la mémoire, le premier secteur étant désigné comme secteur courant par une ou plusieurs valeurs de sélection (SLT1, SLT2) stockées dans la mémoire non volatile, la modification ou suppression comprenant : - l’écriture d’une ou plusieurs valeurs de donnée dans un deuxième secteur (122, 120) de la mémoire non volatile, le deuxième secteur étant désigné comme secteur alternatif par l’une ou plusieurs valeurs de sélection. Figure pour l'abrégé : Fig. 1 Méthode pour la gestion d’une zone de données sensible en mémoire FLASH La présente description concerne de façon générale le domaine des mémoires de type FLASH. Une mémoire non volatile programmable, telle qu'une mémoire électriquement programmable effaçable (EEPROM), permet de stocker certaines données, telles que des clefs de chiffrement ou des paramètres de configuration, dans des dispositifs électroniques même lorsque les dispositifs électroniques sont hors tension. Cependant, compte tenu de la technologie utilisée pour mettre en œuvre une EEPROM, celle-ci ne peut généralement pas être intégrée sur puce. Les implémentations externes (hors puce) d'EEPROM entraînent alors une augmentation de la surface, de la consommation d'énergie et des coûts. Une mémoire de type FLASH peut quant à elle, être implémentée sur puce. Cependant, la mémoire FLASH a certaines contraintes d'accès. Par exemple, contrairement à une EEPROM, il n'est pas possible d'écraser ou de modifier individuellement des valeurs de données d’une mémoire FLASH. Par conséquent, il existe des problèmes techniques liés à l'utilisation d'une mémoire FLASH sur puce pour mettre en œuvre un stockage en mémoire similaire à celui offert par une EEPROM. Il existe un besoin d’améliorer l’accès et la manipulation de données sensibles d'une mémoire FLASH. Un mode de réalisation pallie tout ou partie des inconvénients des mémoires FLASH connus. Un mode de réalisation prévoit un procédé comprenant : la modification ou suppression d’une ou plusieurs valeurs de donnée d’une mémoire non volatile, l’une ou plusieurs valeurs de donnée étant stockées dans un premier secteur de la mémoire, le premier secteur étant désigné comme secteur courant par une ou plusieurs valeurs de sélection stockées dans la mémoire non volatile, la modification ou suppression comprenant : - l’écriture d’une ou plusieurs valeurs de donnée dans un deuxième secteur de la mémoire non volatile, le deuxième secteur étant désigné comme secteur alternatif par l’une ou plusieurs valeurs de sélection. Selon un mode de réalisation, la modification ou suppression comprend la modification d’une première valeur de donnée stockée dans un premier emplacement, en association avec une première adresse, du premier secteur de la mémoire, et l’écriture de l’une ou plusieurs valeurs de donnée dans le deuxième secteur comprend : - l’écriture d’une deuxième valeur de donnée dans un premier emplacement du deuxième secteur de la mémoire non volatile, le premier emplacement du deuxième secteur étant désigné au moins en partie par la première adresse. Selon un mode de réalisation, l’une ou plusieurs valeurs de sélection comprend une première valeur de sélection stockée dans le premier secteur. Selon un mode de réalisation, l’une ou plusieurs valeurs de sélection comprend en outre une deuxième valeur de sélection stockée dans le deuxième secteur. Selon un mode de réalisation, le procédé ci-dessus comprend, suite à une mise sous tension de la mémoire non volatile : - la lecture des première et deuxième valeurs de sélection ; - la détermination, sur la base des première et deuxième valeurs de sélection, du secteur désigné comme alternatif ; et - si au moins une valeur de donnée est contenue dans le secteur désigné comme secteur alternatif, la réinitialisation du secteur alternatif. Selon un mode de réalisation, la modification ou suppression comprend une suppression d’ autres premières valeurs de données, et le premier secteur comprend une première plage d’adresses comprenant les autres premières valeurs de données associées à une première valeur de niveau ainsi qu’une deuxième plage d’adresses comprenant des deuxièmes valeurs de données associées à une deuxième valeur de niveau, la deuxième valeur de niveau étant strictement supérieure à la première valeur de niveau et dans lequel la suppression comprend : - la génération de la deuxième valeur de niveau par un compteur monotone ; - l’écriture des deuxièmes valeurs de données en association avec la première valeur de comptage dans le deuxième secteur ; - l’écriture d’une deuxième valeur de sélection (SLT2) dans le deuxième secteur, rendant le premier secteur alternatif et le deuxième secteur courant ; et - la réinitialisation du premier secteur. Selon un mode de réalisation, le procédé ci-dessus comprend en outre : - l’écriture d’une deuxième valeur de sélection dans le deuxième secteur, rendant le premier secteur alternatif et le deuxième secteur courant ; et - la réinitialisation du premier secteur. Selon un mode de réalisation, le procédé ci-dessus comprend en outre, avant l’écriture de la deuxième valeur de sélection dans le deuxième secteur : - l’écriture d’une ou plusieurs autres valeurs de donnée, stockées dans le premier secteur, dans le deuxième secteur. Selon un mode de réalisation, le procédé ci-dessus comprend en outre, suite à l’écriture desdites une ou plusieurs autres valeurs de donnée dans le deuxième secteur, la modification ou suppression d’une ou plusieurs des valeurs stockées dans le deuxième secteur et, l’écriture d’une troisième valeur de sélection, différente des première et deuxième valeurs de sélection, dans le premier secteur, rendant le premier secteur courant et le deuxième secteur alternatif. Selon un mode de réalisation, chacune des première, deuxième et troisième valeurs de sélection ont au moins les valeurs de deux bits différentes des autres valeurs de sélection. Selon un mode de réalisation, le procédé ci-dessus comprend en outre : - la lecture de l’état d’un bit stocké dans un registre ; et -l’écriture d’une ou plusieurs valeurs de données dans le secteur courant lorsque le bit est dans un premier état, ou l’écriture de l’une ou plusieurs valeurs de données dans le secteur alternatif lorsque le bit est dans un deuxième état. Selon un mode de réalisation, la mémoire non volatile (104) est une mémoire de type FLASH. Un mode de réalisation prévoit un dispositif comprenant : - une mémoire non volatile comprenant une ou plusieurs valeurs de donnée, stockées dans un premier secteur de la mémoire, la mémoire comprenant en outre un deuxième secteur ainsi qu’une ou plusieurs valeurs de sélection désignant le premier secteur comme secteur courant et désignant le deuxième secteur comme secteur alternatif ; et - un contrôleur d’accès configuré pour modifier ou supprimer l’une ou plusieurs valeurs de données en écrivant une ou plusieurs autres valeurs de donnée dans le deuxième secteur de la mémoire non volatile. Selon un mode de réalisation, le contrôleur d’accès est configuré pour modifier une première valeur de donnée stockée dans un premier emplacement du premier secteur de la mémoire, en association avec une première adresse, est modifié en écrivant une deuxième valeur de donnée dans un premier emplacement du deuxième secteur de la mémoire non volatile, le premier emplacement du deuxième secteur étant désigné au moins en partie par la première adresse. Selon un mode de réalisation, le dispositif ci-dessus comprend en outre un compteur monotone configuré pour générer une valeur de niveau, et dans lequel le premier secteur comprend une première plage d’adresses comprenant des autres premières valeurs de données associées à une première valeur de niveau, ainsi qu’une deuxième plage d’adresses comprenant des deuxièmes valeurs de donnée associées à une deuxième valeur de niveau, la deuxième valeur de niveau étant strictement supérieure à la première valeur de niveau, le contrôleur d’accès étant configuré pour supprimer l’une ou plusieurs autres premières valeurs de données, la suppression comprenant : - l’écriture des deuxièmes valeurs de données en association avec la première valeur de comptage dans le deuxième secteur ; - l’écriture d’une deuxième valeur de sélection, rendant le premier secteur alternatif et le deuxième secteur courant ; et - la réinitialisation du premier secteur. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la représente, de façon très schématique et sous forme de blocs, un dispositif électronique selon un mode de réalisation de la présente description ; la illustre, de façon schématique et sous forme de blocs, le contenu d’une mémoire FLASH du dispositif électronique de la selon un mode de réalisation de la présente description ; la est un organigramme représentant des opérations d’un procédé d’écriture dans une mémoire FLASH selon un exemple de réalisation de la présente description ; la illustre de manière schématique le contenu des secteurs d’une mémoire FLASH lors de la réalisation d’un procédé de modification d’une donnée ; la est un organigramme représentant des opérations d’un procédé d’échange de secteur selon un exemple de réalisation de la présente description ; la illustre de manière schématique le contenu des secteurs de la mémoire FLASH lors de la réalisation d’un procédé de suppression d’une ou plusieurs données ; la est un organigramme représentant des opérations d’un procédé d’échange de secteur selon un exemple de réalisation de la présente description ; la illustre, de façon schématique et sous forme de blocs, un exemple de réalisation d’une mémoire FLASH selon un mode de réalisation de la présente description ; la illustre, de façon schématique, une fonction de contrôle d’accès à une mémoire FLASH selon un mode de réalisation de la présente description ; et la est un organigramme représentant des opérations suite à la mise sous tension de la mémoire FLASH selon un exemple de réalisation de la présente description. Procédé comprenant : la modification ou suppression d’une ou plusieurs valeurs de donnée d’une mémoire non volatile (104), l’une ou plusieurs valeurs de donnée étant stockées dans un premier secteur (120, 122) de la mémoire, le premier secteur étant désigné comme secteur courant par une ou plusieurs valeurs de sélection (SLT1, SLT2) stockées dans la mémoire non volatile, la modification ou suppression comprenant : - l’écriture d’une ou plusieurs valeurs de donnée dans un deuxième secteur (122, 120) de la mémoire non volatile, le deuxième secteur étant désigné comme secteur alternatif par l’une ou plusieurs valeurs de sélection. Procédé selon l’une quelconque des revendications 1, dans lequel la modification ou suppression comprend la modification d’une première valeur de donnée (KEY K) stockée dans un premier emplacement (400), en association avec une première adresse, du premier secteur (120) de la mémoire, et l’écriture de l’une ou plusieurs valeurs de donnée dans le deuxième secteur (122) comprend : - l’écriture d’une deuxième valeur de donnée dans un premier emplacement (402) du deuxième secteur de la mémoire non volatile, le premier emplacement du deuxième secteur étant désigné au moins en partie par la première adresse. Procédé selon la revendication 1 ou 2, dans lequel l’une ou plusieurs valeurs de sélection (SLT1, SLT2) comprend une première valeur de sélection (SLT1) stockée dans le premier secteur (120). Procédé selon la revendication 3 dans lequel, l’une ou plusieurs valeurs de sélection (SLT1, SLT2) comprend en outre une deuxième valeur de sélection (SLT2) stockée dans le deuxième secteur (122). Procédé selon la revendication 4, comprenant, suite à une mise sous tension de la mémoire non volatile (104) : - la lecture des première et deuxième valeurs de sélection (SLT1, SLT2) ; - la détermination, sur la base des première et deuxième valeurs de sélection, du secteur (120, 122) désigné comme alternatif ; et - si au moins une valeur de donnée est contenue dans le secteur désigné comme secteur alternatif, la réinitialisation du secteur alternatif. Procédé selon l’une quelconque des revendications 1 à 5, dans lequel la modification ou suppression comprend une suppression d’ autres premières valeurs de données (KEY K+1, KEY N), et le premier secteur (120) comprend une première plage d’adresses (604, 800, 801,802) comprenant les autres premières valeurs de données associées à une première valeur de niveau (TIL) ainsi qu’une deuxième plage d’adresses (602, 801, 802, 803, 804) comprenant des deuxièmes valeurs de données (KEY 0, KEY K) associées à une deuxième valeur de niveau, la deuxième valeur de niveau étant strictement supérieure à la première valeur de niveau et dans lequel la suppression comprend : - la génération de la deuxième valeur de niveau par un compteur monotone (110) ; - l’écriture des deuxièmes valeurs de données en association avec la première valeur de comptage dans le deuxième secteur (122) ; - l’écriture d’une deuxième valeur de sélection (SLT2) dans le deuxième secteur, rendant le premier secteur alternatif et le deuxième secteur courant ; et - la réinitialisation du premier secteur. Procédé selon la revendication 1 ou 2, comprenant en outre : - l’écriture d’une deuxième valeur de sélection (SLT2) dans le deuxième secteur (122), rendant le premier secteur (120) alternatif et le deuxième secteur courant ; et - la réinitialisation du premier secteur. Procédé selon la revendication 6 ou 7, comprenant en outre, avant l’écriture de la deuxième valeur de sélection (SLT2) dans le deuxième secteur (122) : - l’écriture d’une ou plusieurs autres valeurs de donnée (KEY 0, KEY K-1, KEY K, KEY K+1, KEY N), stockées dans le premier secteur (120), dans le deuxième secteur. Procédé selon l’une quelconque des revendications 1 à 8, comprenant en outre, suite à l’écriture desdites une ou plusieurs autres valeurs de donnée (KEY 0, KEY K-1, KEY K, KEY K+1, KEY N) dans le deuxième secteur (122), la modification ou suppression d’une ou plusieurs des valeurs stockées dans le deuxième secteur et, l’écriture d’une troisième valeur de sélection, différente des première et deuxième valeurs de sélection (SLT1, SLT2), dans le premier secteur (120), rendant le premier secteur courant et le deuxième secteur alternatif. Procédé selon la revendication 9, dans lequel chacune des première, deuxième et troisième valeurs de sélection ont au moins les valeurs de deux bits différentes des autres valeurs de sélection. Procédé selon l’une quelconque des revendications 1 à 10, comprenant en outre : - la lecture de l’état d’un bit stocké dans un registre (116) ; et -l’écriture d’une ou plusieurs valeurs de données dans le secteur courant (120, 122) lorsque le bit est dans un premier état, ou l’écriture de l’une ou plusieurs valeurs de données dans le secteur alternatif (122, 120) lorsque le bit est dans un deuxième état. Procédé selon l’une quelconque des revendications 1 à 11, dans lequel la mémoire non volatile (104) est une mémoire de type FLASH. Dispositif comprenant : - une mémoire non volatile (100) comprenant une ou plusieurs valeurs de donnée, stockées dans un premier secteur (120, 122) de la mémoire, la mémoire comprenant en outre un deuxième secteur (122, 120) ainsi qu’une ou plusieurs valeurs de sélection (SLT1, SLT2) désignant le premier secteur comme secteur courant et désignant le deuxième secteur comme secteur alternatif ; et - un contrôleur d’accès (106) configuré pour modifier ou supprimer l’une ou plusieurs valeurs de données en écrivant une ou plusieurs autres valeurs de donnée dans le deuxième secteur de la mémoire non volatile. Dispositif selon la revendication 13 dans lequel le contrôleur d’accès (106) est configuré pour modifier une première valeur de donnée (KEY K) stockée dans un premier emplacement (400) du premier secteur de la mémoire, en association avec une première adresse, est modifié en écrivant une deuxième valeur de donnée dans un premier emplacement (402) du deuxième secteur de la mémoire non volatile, le premier emplacement du deuxième secteur étant désigné au moins en partie par la première adresse. Dispositif selon la revendication 13 ou 14, comprenant en outre un compteur monotone (110) configuré pour générer une valeur de niveau (TIL), et dans lequel le premier secteur (120 122) comprend une première plage d’adresses (604, 800, 801, 802) comprenant des autres premières valeurs de données associées à une première valeur de niveau, ainsi qu’une deuxième plage d’adresses comprenant des deuxièmes valeurs de donnée (602, 801, 802, 803, 804) associées à une deuxième valeur de niveau, la deuxième valeur de niveau étant strictement supérieure à la première valeur de niveau, le contrôleur d’accès (106) étant configuré pour supprimer l’une ou plusieurs autres premières valeurs de données, la suppression comprenant : - l’écriture des deuxièmes valeurs de données en association avec la première valeur de comptage dans le deuxième secteur (122, 120) ; - l’écriture d’une deuxième valeur de sélection (SLT2, SLT1), rendant le premier secteur alternatif et le deuxième secteur courant ; et - la réinitialisation du premier secteur.