FR 3096798 A1 20201204 FR 1905583 A 20190527 Description Titre de l'invention : Dispositif de mémorisation Domaine technique [0001] La présente description concerne de façon générale les dispositifs de mémorisation et plus particulièrement les dispositifs comprenant une mémoire à exécution seule. Technique antérieure [0002] Il existe des mémoires de plusieurs types, chacune plus ou moins accessible par un utilisateur. Par exemple, les mémoires mortes (read-only) sont des mémoires non volatiles dans lesquelles il n'est pas possible d'écrire. Il existe des mémoires dans lesquelles un utilisateur peut écrire et lire. H existe aussi des mémoires à exécution seule (execute-only), configurécs, par exemple par le fabriquant, pour qu'un utilisateur ne puisse qu'exécuter les instructions qui sont stockées dans ces mémoires, et non les lire ou les écrire. [0003] Les mémoires à exécution seule peuvent par exemple permettre de stocker des logiciels confidentiels. Résumé de l'invention [0004] Un mode de réalisation pallie tout ou partie des inconvénients des dispositifs de mé- morisation connus. [0005] Un mode de réalisation prévoit un dispositif de mémorisation comprenant un élément de mémorisation à exécution seule, l'élément de mémorisation comprenant une pluralité d'emplacements stockant chacun une instruction, dans lequel une donnée à stocker est divisée en plusieurs portions, chaque portion complétant un des emplacements. 100061 Un mode de réalisation prévoit un procédé de mémorisation d'une donnée dans un élément de mémorisation à exécution seule, l'élément de mémorisation comprenant une pluralité d'emplacements stockant chacun une instruction, le procédé comprenant la division de la donnée en plusieurs portions, et la mémorisation de chaque portion en complétant un emplacement. 100071 Selon un mode de réalisation, les emplacements ont une même taille. 100081 Selon un mode de réalisation, la taille de chaque portion est strictement inférieure à la taille des emplacements. 100091 Selon un mode de réalisation, les portions de la donnée n'ont pas d'impact sur les résultats de l'exécution des instructions. 100101 Selon un mode de réalisation, au moins certains des emplacements comprenant les portions de la donnée comprennent des instructions invalides. 100111 Selon un mode de réalisation, chaque emplacement comprenant une portion de la 2 donnée comprend des bits inutilisés par l'instruction stockée dans l'emplacement complété par une portion de la donnée. [0012] Selon un mode de réalisation, les emplacements comprenant les portions de la donnée sont des emplacements successifs de l'élément de mémorisation. [0013] Selon un mode de réalisation, les emplacements successifs sont précédés d'au moins un emplacement comprenant une instruction invalide. [0014] Selon un mode de réalisation, les portions de la donnée ne sont pas situées sur les bits de poids fort des emplacements. [0015] Selon un mode de réalisation, un circuit est configuré pour pouvoir lire et écrire dans l'élément de mémorisation à exécution seule. [0016] Selon un mode de réalisation, la donnée correspond à une information non accessible à un utilisateur. Brève description des dessins [0017] 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 la figure jointe : [0018] [fig.1] la figure 1 représente schématiquement un mode de réalisation d'un dispositif de mémorisation. Description des modes de réalisation [0019] De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. 100201 Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. En particulier, les différents circuits pouvant avoir accès à la mémoire ne sont pas décrits, la mémoire pouvant être associée à tout type de circuit usuel. 100211 Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés ou couplés entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés ou couplés par l'intermédiaire d'un ou plusieurs autres éléments. 100221 Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. 3 [0023] Sauf précision contraire, les expressions "environ", "approximativement", "sen- siblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près. [0024] La figure 1 représente schématiquement un mode de réalisation d'un dispositif de mé- morisation 100. [0025] Le dispositif de mémorisation 100 comprend une mémoire MEM 102 non volatile. La mémoire 102 est par exemple une mémoire de type Flash. [0026] Le dispositif de mémorisation 100 comprend un élément de mémorisation à exécution seule. Par élément de mémorisation, on entend une mémoire ou une partie de mémoire. [0027] Plus particulièrement, dans l'exemple de la figure 1, la mémoire 102 comprend au moins une partie à exécution seule 104. Par mémoire ou partie d'une mémoire à exécution seule, on entend une mémoire, ou une partie d'une mémoire, comprenant des informations, ou instructions, ne pouvant qu'être exécutées, et ne pouvant pas être lues ou écrites par les utilisateurs du dispositif. La partie 104 comprend par exemple les codes de logiciels confidentiels ou des bibliothèques de données, programmés et stockés dans la mémoire par le fabriquant. [0028] Le seul moyen pour un utilisateur de modifier une mémoire ou une partie d'une mémoire à exécution seule serait d'effacer entièrement cette mémoire ou partie de mémoire pour retirer les restrictions. L'utilisateur n'aurait cependant pas accès aux données stockées dans cette mémoire ou partie de mémoire qui auraient alors été effacées. [0029] La mémoire peut comprendre au moins une autre partie 106, n'étant par exemple pas à exécution seule. La partie 106 est par exemple accessible aux utilisateurs. La partie 106 est par exemple une mémoire morte (read-only), c'est-à-dire une partie dans laquelle il est possible de lire des informations, et d'exécuter des instructions, mais pas d'écrire. Alternativement, la partie 106 peut être une partie dans laquelle il est possible pour un utilisateur de lire, d'écrire et d'exécuter des informations ou des instructions. [0030] La partie 106 comprend par exemple des logiciels 108 (APPLICATION) pouvant lire et/ou écrire et/ou exécuter les informations stockées dans la partie 106. Les logiciels 108 peuvent exécuter les instructions stockées dans la partie 104. Les logiciels 108 ne peuvent cependant pas lire ou écrire dans la partie 104. Ainsi, il n'est pas possible pour un utilisateur d'obtenir les informations contenues dans la partie 104. [0031] La mémoire 102, et en particulier la partie 104, comprend des emplacements 1 1 1 dans lesquels peuvent être stockées des informations, par exemple des instructions et des codes opérationnels. De préférence, tous les emplacements 111 de la partie 104 ont une même taille. De préférence, tous les emplacements de la mémoire 102 ont une même taille. La taille des emplacements est par exemple égale à 16 ou 32 bits. [0032] Le dispositif 100 comprend un circuit 110 (SECRET ENGINE). Le circuit 110 est configuré pour pouvoir lire et écrire dans la partie 104. [0033] Le circuit 110 n'est pas accessible et, de préférence, n'est pas visible, par les uti- lisateurs. Le circuit 110 n'est pas accessible et, de préférence, n'est pas visible, par les logiciels 108 compris dans la partie 106 de la mémoire. Les logiciels 108 ne peuvent donc pas commander le circuit 110. Les logiciels 108 ne peuvent donc pas utiliser le circuit 110 pour lire ou écrire dans la partie 104 et pour avoir accès aux logiciels confidentiels stockés dans la partie 104 de la mémoire 102. [0034] Le circuit 110 est par exemple uniquement accessible par le fabriquant. Par exemple, le circuit 110 reçoit des mises à jour logiciel de la part du fabricant. [0035] La partie 104 peut comprendre au moins une donnée secrète ou confidentielle, c'est-à-dire qui ne doit pas être accessible aux utilisateurs ou aux logiciels 108, mais doit pouvoir être accessible au circuit 110. La donnée est par exemple une clé de cryptage, ou un mot de passe. Il s'agit d'une valeur sous forme binaire. [0036] On pourrait choisir de stocker la donnée secrète dans un des emplacements 111 qui ne comprendrait alors que cette donnée. La donnée serait alors stockée comme s'il s'agissait d'une instruction. La donnée serait alors accessible par le circuit 110 en lisant cet emplacement. Cependant, il serait alors possible pour un utilisateur d'exécuter la donnée comme une instruction et de déterminer quel est la valeur de la donnée à partir de l'impact de l'exécution de la donnée sur le dispositif. [0037] Par exemple, on considère que la donnée est la valeur hexadécimale Ox1C58. Cette valeur, lorsqu'elle est exécutée peut correspondre à l'instruction "ADD RO RI #1", c'est-à-dire l'instruction qui entraîne la somme des valeurs stockées dans des registres RO et RI et stocke la valeur obtenue par la somme dans le registre RO. Il serait alors possible, en observant l'état du dispositif et en particulier l'état des registres, de déterminer quelle instruction a été exécutée. Il serait donc ensuite possible, à partir de la donnée sous forme d'instruction, de déterminer quelle est la valeur de la donnée confidentielle sous forme binaire. [0038] Une telle manière de stocker la donnée secrète n'est donc pas sécurisée et ne permet pas de garder la donnée confidentielle. [0039] Dans un mode de réalisation d'un procédé de mémorisation d'une donnée, la donnée secrète est divisée en portions 114, chacune de ces portions 114 étant située dans un emplacement 112, parmi les emplacements 1 1 1 de la partie 104 de la mémoire 102. Les emplacements 112 sont donc des emplacements 1 1 1 comprenant une portion de la donnée. Chaque emplacement 112 comprend une instruction. Chacune des portions 114 complète au moins partiellement un des emplacements 112 comprenant une instruction. [0040] Lorsqu'on parle d'un premier emplacement situé avant, ou devant, un deuxième em- placement, cela signifie que le premier emplacement à une adresse de valeur inférieure. [0041] De préférence, toutes les portions 114 de la donnée ont une même taille, par exemple 4 bits. [0042] Chaque instruction stockée dans un emplacement 112 est située de préférence sur les bits de poids fort de l'emplacement. [0043] Les instructions stockées dans les emplacements 112 complétés au moins par- tiellement par une des portions 114 de la donnée sont telles que la présence de la portion de la donnée secrète n'a pas d'impact sur le résultat de l'exécution de l'instruction. [0044] Chaque emplacement 112 dans lequel est stockée une portion 114 de la donnée est de préférence un emplacement ayant des bits inutilisés par l'instruction ou des bits dont le changement n'entraîne pas un résultat différent à l'exécution de l'instruction. [0045] Par exemple, si la taille de l'emplacement 112 est 16 bits, et si la taille de l'instruction est 12 bits, les 4 bits restants, par exemple les bits de poids faible, peuvent comprendre une des portions 114 de la donnée. [0046] Ainsi, la portion 114 peut compléter tous les bits inutilisés de l'emplacement 112. [0047] Alternativement, la portion peut ne compléter qu'une partie des bits inutilisés. [0048] Par exemple, si la taille de l'emplacement 112 est 16 bits, et si la taille de l'instruction est 8 bits, l'emplacement comprend 8 bits inutilisés, par exemple les bits de poids faible. Ainsi, si la portion 114 de la donnée confidentielle comprend 4 bits, cette portion peut être située sur n'importe lesquels des 8 bits inutilisés de l'emplacement 112. [0049] Chaque portion 114 de la donnée est de préférence située sur des bits successifs de l'emplacement 112 correspondant. Le circuit 110 est autorisé à lire directement les emplacements 112. [0050] Les instructions associées à une portion 114 de la donnée sont de préférence des ins- tructions invalides. Par instruction invalide, on entend une instruction qui a un impact sur le système tel que, par exemple, prévenir l'utilisateur de la présence d'une erreur et/ ou arrêter l'exécution d'une suite d'instructions. Toutefois, la portion 114 est quant à elle valide et n'a pas d'impact. Le résultat d'une instruction invalide est le même quel que soit le contenu de l'emplacement après les bits de l'instruction invalide et quel que soit le contenu de l'emplacement suivant l'emplacement comprenant l'instruction invalide. [0051] Des exemples d'instructions invalides ou de code opérationnels invalides com- prennent, sous forme hexadécimale : OxF87y, y représentant des bits dont la valeur n'a pas d'impact sur les résultats instruction. D'autres exemples concernent les codes OxF8Fy, OxF97y et OxF9Fy. En pratique, il s'agit d'instructions de 32 bits (par exemple OxF87yXXXX) mais on ne peut utiliser les 16 derniers bits pour stocker la donnée secrète car un attaquant pourrait n'exécuter que ces 16 derniers bits. 6 [0052] Chaque portion 114 de la donnée peut être située sur les bits de poids faible de l'emplacement 112 ou sur des bits internes, c'est-à-dire des bits ne comprenant pas le bit de poids fort et le bit de poids faible. L'instruction stockée dans un des emplacements 112 est située sur les bits de poids fort. [0053] De préférence, les emplacements 112 dans lesquels sont situées les portions 114 de la donnée sont des emplacements successifs de la mémoire. [0054] Dc préférence, chaque emplacement 112 comprenant une portion 114 est précédé : [0055] d'au moins un emplacement 112 comprenant une autre portion 114 de la donnée, ou [0056] d'au moins un emplacement 116 ne comprenant pas de portion 114 de la donnée. [0057] Les emplacements 116 comprennent une instruction qui a le même résultat lorsqu'elle est exécutée quels que soient les bits de poids faibles non utilisés, et quel que soit le contenu de l'emplacement suivant. Plus précisément, si un circuit exécute le contenu de plusieurs emplacements pour une même instruction invalide, en commençant par l'emplacement comprenant l'instruction invalide, le résultat sera le même quel que soit le contenu du ou des autres emplacements. [0058] Dc préférence, les instructions stockées dans les emplacements 116 sont des ins- tructions invalides. [0059] Lorsqu'un emplacement 112 est précédé d'au moins un emplacement 116, le nombre d'emplacements 116 dépend des possibilités de lecture des circuits pouvant exécuter des instructions de la partie 104. Plus précisément, le nombre d'emplacements 116 situés avant les emplacements 112 successifs dépend du nombre de bits pouvant être exécutés lors de l'exécution d'une instruction. [0060] On considère dans les exemples suivants qu'un emplacement comprend x bits, par exemple x = 16. [0061] Si les circuits etlou logiciels accessibles par l'utilisateur, par exemple les logiciels situés dans la partie 106, ne peuvent exécuter qu'un emplacement à la fois, c'est-à-dire peuvent exécuter des instructions ayant au maximum x bits, on peut choisir de ne pas ajouter d'emplacement 116 directement devant les emplacements 112. [0062] Si les circuits etlou logiciels accessibles par l'utilisateur, par exemple les logiciels situés dans la partie 106, peuvent exécuter deux emplacements à la fois, c'est-à-dire peuvent exécuter des instructions ayant au maximum 2x bits, on peut choisir d'ajouter au moins un emplacement 116 directement devant les emplacements 112. [0063] De manière plus générale, si les circuits etlou logiciels accessibles par l'utilisateur, par exemple les logiciels situés dans la partie 106, peuvent exécuter n emplacements à la fois, n étant un nombre entier supérieur ou égal à 1, c'est-à-dire peuvent exécuter des instructions ayant au maximum nx bits, on peut choisir d'ajouter au moins n-1 emplacements 116 directement devant les emplacements 112. [0064] On pourrait choisir de ne pas placer d'emplacements 116 avant des emplacements 7 112. [0065] Cependant, dans le cas où les circuits et/ou logiciels accessibles par l'utilisateur, par exemple les logiciels situés dans la partie 106, peuvent exécuter deux emplacements à la fois, si l'emplacement 111 précédant un emplacement 112 comprend une instruction pour laquelle les bits suivants, en particulier les bits de la portion de la donnée de l'emplacement 112 suivant, ont un impact, il serait alors possible de déterminer au moins partiellement la donnée de la manière décrite précédemment. [0066] On peut choisir, par exemple, de ne pas ajouter d'emplacement 116 si la ou les portions 114 pouvant être connues de cette manière ne sont pas suffisantes pour connaître la donnée entière ou pour être problématiques. [0067] Divers modes de réalisation et variantes ont été décrits. L'homme de l'art comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d'autres variantes apparaitront à l'homme de l'art. [0068] Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus. 8 [Revendication 1] [Revendication 7] [Revendication 8] [Revendication 9] [Revendication 10] [Revendication 11] [Revendication 12] REVENDICATIONSDispositif de mémorisation comprenant un élément de mémorisation à exécution seule (104), l'élément de mémorisation comprenant une pluralité d'emplacements (III, 112, 116) stockant chacun une instruction, dans lequel une donnée à stocker est divisée en plusieurs portions (114), chaque portion (114) complétant un des emplacements (112). Dispositif selon la revendication 1, dans lequel les emplacements (1 1 1, 112, 116) ont une même taille. Dispositif selon la revendication 2, dans lequel la taille de chaque portion (114) est strictement inférieure à la taille des emplacements (111, 112, 116). Dispositif selon rune quelconque des revendications 1 à 3, dans lequel les portions (114) de la donnée n'ont pas d'impact sur les résultats de l'exécution des instructions. Dispositif selon rune quelconque des revendications 1 à 4, dans lequel au moins certains des emplacements (112) comprenant les poilions (114) de la donnée comprennent des instructions invalides. Dispositif selon rune quelconque des revendications 1 à 5, dans lequel chaque emplacement (112) comprenant une portion de la donnée (114) comprend des bits inutilisés par l'instruction stockée dans l'emplacement (112) complété par une portion (114) de la donnée. Dispositif selon rune quelconque des revendications 1 à 6, dans lequel les emplacements (112) comprenant les portions de la donnée sont des emplacements successifs de l'élément de mémorisation (104). Dispositif selon à la revendication 7, dans lequel les emplacements (112) successifs sont précédés d'au moins un emplacement (116) comprenant une instruction invalide. Dispositif selon rune quelconque des revendications 1 à 8, dans lequel les portions (114) de la donnée ne sont pas situées sur les bits de poids fort des emplacements (112). Dispositif selon l'une quelconque des revendications 1 à 9, dans lequel un circuit (110) est configuré pour pouvoir lire et écrire dans l'élément de mémorisation à exécution seule. Dispositif selon l'une quelconque des revendications 1, à 10, dans lequel la donnée correspond à une information non accessible à un utilisateur. Procédé de mémorisation d'une donnée dans un dispositif selon l'une [Revendication 2] [Revendication 3] [Revendication 4] [Revendication 5] [Revendication 6] 9 [Revendication 13] quelconque des revendications 1 à 11. Procédé de mémorisation d'une donnée dans un élément de mémorisation à exécution seule (104), l'élément de mémorisation comprenant une pluralité d'emplacements (111, 112, 116) stockant chacun une instruction, le procédé comprenant la division de la donnée en plusieurs portions (114), et la mémorisation de chaque portion en complétant un emplacement (112).