Brevet FR3118268A1 — publié le 20220624

Mémoire sécurisée La présente description concerne une mémoire (40) comprenant des cellules mémoire (14) agencées en rangées et en colonnes, au moins une ligne de bits (20, 22), pour chaque colonne, reliée aux cellules mémoire de la colonne, et un circuit de lecture/écriture (24), reliés aux lignes de bits, configuré pour recevoir, pour chaque colonne, une donnée binaire (Di) à mémoriser dans l'une des cellules mémoire de la colonne, le circuit de lecture/écriture comprenant, pour chaque colonne, un verrou (46) configuré pour stocker un bit d'une clé, et un circuit de cryptage configuré pour crypter la donnée binaire reçue avec le bit de la clé pour fournir une donnée binaire crypté, le circuit de lecture/écriture étant configuré pour commander la ligne de bits pour mémoriser la donnée binaire cryptée. Figure pour l'abrégé : Fig. 4 Mémoire sécurisée La présente description concerne de façon générale les mémoires de circuits électroniques, et notamment les procédés et systèmes de protection des mémoires contre des attaques. Les données stockées dans une mémoire peuvent comprendre des données sensibles dont on souhaite empêcher un accès non autorisé. Il est connu de crypter les données stockées dans une mémoire en utilisant une clé pour empêcher l'accès à ces données. Il faut toutefois que la clé ne soit elle-même pas accessible. 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 partielle et schématique, un exemple d'une mémoire vive ; la représente des chronogrammes de signaux de la mémoire de la pendant une opération d'écriture ; la représente des chronogrammes de signaux de la mémoire de la pendant une opération de lecture ; la représente, de façon partielle et schématique, un mode de réalisation d'une mémoire vive sécurisée ; la représente des chronogrammes de signaux de la mémoire de la pendant un mode de réalisation d'un procédé de génération d'une clé ; la représente des chronogrammes de signaux de la mémoire de la pendant un autre mode de réalisation d'un procédé de génération d'une clé ; la représente, de façon partielle et schématique, un autre mode de réalisation d'une mémoire vive ; la représente, de façon partielle et schématique, un autre mode de réalisation d'une mémoire vive ; la représente, de façon partielle et schématique, un autre mode de réalisation d'une mémoire vive ; la représente des chronogrammes de signaux de la mémoire de la pendant une opération de lecture d'une clé ; la représente des schémas électriques d'un mode de réalisation d'un circuit de mémorisation ; la représente un schéma électrique d'une partie d'un mode de réalisation de la mémoire de la ; la représente un schéma électrique d'un mode de réalisation d'une cellule mémoire pour le stockage d'un bit de la clé ; la représente un schéma électrique d'une autre partie d'un mode de réalisation de la mémoire de la ; la représente un schéma électrique d'une autre partie d'un mode de réalisation de la mémoire de la ; la représente un schéma électrique d'une partie d'un mode de réalisation de la mémoire de la ; la représente un schéma électrique d'une autre partie d'un mode de réalisation de la mémoire de la ; la représente un schéma électrique d'une autre partie d'un mode de réalisation de la mémoire de la ; la représente un schéma électrique d'une autre partie d'un mode de réalisation de la mémoire de la ; la représente une variante du schéma électrique de la ; la représente des chronogrammes de signaux du circuit de la ou 20 ; la représente un schéma électrique d'une autre partie d'un mode de réalisation de la mémoire de la ; et la représente un schéma électrique d'une autre partie d'un mode de réalisation de la mémoire de la . Mémoire (40 ; 50 ; 55 ; 60) comprenant des cellules mémoire (14) agencées en rangées et en colonnes, au moins une ligne de bits (20, 22), pour chaque colonne, reliée aux cellules mémoire de la colonne, et un circuit de lecture/écriture (24), relié aux lignes de bits, configuré pour recevoir, pour chaque colonne, une donnée binaire (Di) à mémoriser dans l'une des cellules mémoire de la colonne, le circuit de lecture/écriture comprenant, pour chaque colonne, un verrou (46) configuré pour stocker un bit (key) d'une clé, et un circuit de cryptage configuré pour crypter la donnée binaire reçue avec le bit de la clé pour fournir une donnée binaire crypté (DD), le circuit de lecture/écriture étant configuré pour commander la ligne de bits pour mémoriser la donnée binaire cryptée. Mémoire selon la revendication 1, dans lequel le circuit de lecture/écriture (24) comprend, pour chaque colonne, un circuit de détection du niveau de la ligne de bits (20, 22) configuré pour fournir une donnée binaire lue qui dépend dudit niveau, dans lequel, pour chaque colonne, une opération de lecture d'une donnée binaire cryptée stockée dans l'une des cellules mémoire (14) de la colonne comprend successivement une étape de sélection de la cellule mémoire, et une étape de lecture par le circuit de détection du niveau de la ligne de bits après l'écoulement d'une première durée, le circuit de lecture/écriture étant configuré, pour au moins l'une des colonnes, pour stocker un bit (key) de la clé dans le verrou (46) associé à la colonne, le bit de la clé correspondant à la donnée binaire fournie par le circuit de détection après l'écoulement d'une deuxième durée inférieure à la première durée. Mémoire selon la revendication 1, dans lequel le circuit de lecture/écriture (24) est configuré, pour au moins l'une des colonnes, pour stocker un bit (key) de la clé dans le verrou (46) associé à la colonne à la mise sous tension de la mémoire, le bit de la clé correspondant à la donnée binaire stockée dans l'une des cellules mémoire (14) de la colonne à la mise sous tension de la mémoire. Mémoire selon l'une quelconque des revendications 1 à 3, dans lequel le circuit de lecture/écriture (24) est configuré, pour chaque colonne, sur requête, pour décrypter la donnée cryptée stockée dans l'une des cellules mémoire (14) de la colonne et fournir la donnée binaire décryptée. Mémoire selon l'une quelconque des revendications 1 à 4, dans lequel le circuit de lecture/écriture (24) est configuré, pour chaque colonne, sur requête, pour fournir directement la donnée binaire cryptée stockée dans l'une des cellules mémoire (14) de la colonne. Mémoire selon l'une quelconque des revendications 1 à 5, dans lequel le circuit de lecture/écriture (24) est configuré, pour chaque colonne, pour fournir, sur requête, le bit de la clé stockée dans le verrou (46) associé à la colonne. Mémoire selon l'une quelconque des revendications 1 à 6, dans lequel chaque colonne comprend des sous-colonnes de cellules mémoire (14), dans lequel, lors d'une opération d'écriture, la donnée binaire reçue pour chaque colonne est cryptée et la donnée binaire cryptée est mémorisée dans la cellule mémoire de seule l'une des sous-colonnes. Mémoire selon la revendication 6, dans lequel, lors d'une opération d'écriture, l'un du bit (key) de la clé et de l'inverse (bkey) du bit de la clé est utilisé pour crypter la donnée binaire reçue lorsque la sous-colonne est de rang impair et l'autre du bit de la clé et de l'inverse du bit de la clé est utilisé pour crypter la donnée binaire reçue lorsque la sous-colonne est de rang pair. Mémoire selon la revendication 6, dans lequel le circuit de lecture/écriture (24) comprend, pour chaque colonne, un verrou supplémentaire (46) configuré pour stocker un bit (key) d'une clé supplémentaire, dans lequel, lors d'une opération d'écriture, l'un du bit de la clé et du bit de la clé supplémentaire est utilisé pour crypter la donnée binaire reçue lorsque la sous-colonne est de rang impair et l'autre du bit de la clé et du bit de la clé supplémentaire est utilisé pour crypter la donnée binaire reçue lorsque la sous-colonne est de rang pair. Mémoire selon la revendication 6, dans lequel les rangées de cellules mémoire sont réparties en premières rangées et en deuxièmes rangées, dans lequel le circuit de lecture/écriture (24) comprend, pour chaque colonne, un verrou supplémentaire (46) configuré pour stocker un bit (key) d'une clé supplémentaire, dans lequel, lors d'une opération d'écriture, l'un du bit de la clé, du bit de la clé supplémentaire, de l'inverse du bit de la clé, et de l'inverse du bit de la clé supplémentaire est utilisé pour crypter la donnée binaire reçue lorsque la sous-colonne est de rang impair et la rangée sélectionnée est l'une des premières rangées, un autre du bit de la clé, du bit de la clé supplémentaire, de l'inverse du bit de la clé, et de l'inverse du bit de la clé supplémentaire est utilisé pour crypter la donnée binaire reçue lorsque la sous-colonne est de rang pair et la rangée sélectionnée est l'une des premières rangées, encore un autre du bit de la clé, du bit de la clé supplémentaire, de l'inverse du bit de la clé, et de l'inverse du bit de la clé supplémentaire est utilisé pour crypter la donnée binaire reçue lorsque la sous-colonne est de rang impair et la rangée sélectionnée est l'une des deuxièmes rangées, et encore un autre du bit de la clé, du bit de la clé supplémentaire, de l'inverse du bit de la clé, et de l'inverse du bit de la clé supplémentaire est utilisé pour crypter la donnée binaire reçue lorsque la sous-colonne est de rang pair et la rangée sélectionnée est l'une des deuxièmes rangées. Mémoire selon l'une quelconque des revendications 1 à 10, dans lequel chaque verrou (46) comprend un premier inverseur à trois états (INVT1), un inverseur (INV1) en série avec le premier inverseur à trois états, et un deuxième inverseur à trois états (INVT2) en antiparallèle avec l'inverseur. Procédé de stockage de données dans une mémoire (40 ; 50 ; 55 ; 60) comprenant des cellules mémoire (14) agencées en rangées et en colonnes, au moins une ligne de bits (20, 22), pour chaque colonne, reliée aux cellules mémoire de la colonne, et un circuit de lecture/écriture (24) relié aux lignes de bits, recevant, pour chaque colonne, une donnée binaire (Di) à mémoriser dans l'une des cellules mémoire de la colonne, le circuit de lecture/écriture comprenant, pour chaque colonne, un verrou (46) stockant un bit (key) d'une clé, et un circuit de cryptage de la donnée binaire reçue avec le bit de la clé fournissant une donnée binaire crypté (DD), la ligne de bits étant commandée pour mémoriser la donnée binaire cryptée.