Brevet FR3160081A1 — publié le 20250912

Génération d'un vecteur uniformément aléatoire La présente description concerne un procédé de génération, adapté à être exécuté par un dispositif électronique, d’un premier vecteur uniformément aléatoire (Y) comprenant n premiers éléments (y 0 , …, y n-1 ), n étant un entier égal ou supérieur à deux, comprenant les étapes suivantes : - la génération d’un deuxième vecteur uniformément aléatoire (A) comprenant n deuxièmes éléments (a 0 , …, a n-1 ) ; - la génération de m troisièmes éléments (r), m étant un entier égal ou supérieur à un ; - la génération de m troisièmes vecteurs uniformément aléatoires (B), comprenant 1 troisièmes éléments et n-1 deuxièmes éléments, et ayant chacun des troisièmes éléments (b 0 , …, b n-1 ) différents des deuxièmes éléments à la même position dans le deuxième vecteur uniformément aléatoire (A) et les autres troisièmes vecteurs uniformément aléatoires (B) ; - le calcul desdits premiers éléments (y 0 , …, y n-1 ) en appliquant une fonction de démasquage auxdits deuxièmes éléments et auxdits m troisièmes éléments. Figure pour l'abrégé : Fig. 3 Génération d'un vecteur uniformément aléatoire La présente description concerne de façon générale les dispositifs et systèmes électroniques et, plus particulièrement, la sécurité de tels dispositifs et systèmes. La présente description concerne plus particulièrement des procédés cryptographiques et leur mise en œuvre. De nos jours, différentes techniques destinées à authentifier et/ou garantir l’intégrité de données secrètes et/ou sensibles sont utilisées. Parmi celles-ci, les signatures numériques sont constituées de l'application d'un ou de plusieurs algorithmes cryptographiques à des données, telles que des données sensibles. De nombreux algorithmes cryptographiques, et, plus particulièrement, de nombreux algorithmes cryptographiques asymétriques utilisent des données uniformément aléatoires. Dans certains cas, ces données sont générées de façon périodique, par exemple à chaque fois qu’un processus de signature de données est mis en œuvre. Il peut être nécessaire de sécuriser la génération de ces données uniformément aléatoires. Il est souhaitable de pouvoir améliorer au moins en partie certains aspects de la génération de données uniformément aléatoires. Il existe un besoin d’un procédé de génération plus robuste de données uniformément aléatoires et, plus particulièrement, d’un vecteur uniformément aléatoire. Il existe un besoin d’un procédé de génération de données uniformément aléatoires et, plus particulièrement, d’un vecteur uniformément aléatoire, qui sont sécurisés contre des attaques par injection d’une unique faute et des attaques par injection de plusieurs fautes. Il existe un besoin d’un dispositif électronique capable d’exécuter un tel procédé de génération. Un mode de réalisation pallie tout ou partie des inconvénients des procédés connus de génération de données uniformément aléatoires et, plus particulièrement, des procédés connus de génération d’un vecteur uniformément aléatoire. Un mode de réalisation prévoit un procédé de génération de données uniformément aléatoires et, plus particulièrement, d’un vecteur uniformément aléatoire. Un mode de réalisation prévoit un dispositif électronique capable d’exécuter un tel procédé de génération. Un mode de réalisation prévoit un procédé de génération, adapté à être exécuté par un dispositif électronique, d’un premier vecteur uniformément aléatoire comprenant n premiers éléments, n étant un entier égal ou supérieur à deux, chaque premier élément étant compris dans un ensemble fini T, comprenant les étapes suivantes : - la génération d’un deuxième vecteur uniformément aléatoire comprenant n deuxièmes éléments ; - la génération de m troisièmes éléments, m étant un entier égal ou supérieur à un ; - la génération de m troisièmes vecteurs uniformément aléatoires, ordonnés de zéro à m-1, dans lequel le troisième vecteur uniformément aléatoire de rang k, k étant un entier compris entre zéro et m-1, comprend k troisièmes éléments et n-k deuxièmes éléments, chaque troisième vecteur uniformément aléatoire ayant des troisièmes éléments différents des deuxièmes éléments à la même position que le deuxième vecteur uniformément aléatoire et que les autres troisièmes vecteurs uniformément aléatoires ; - le calcul desdits premiers en appliquant une fonction de démasquage auxdits deuxièmes éléments et auxdits m troisièmes éléments. Un autre mode de réalisation prévoit un dispositif électronique qui peut mettre en œuvre un procédé de génération d’un premier vecteur uniformément aléatoire comprenant n premiers éléments, n étant un entier égal ou supérieur à deux, chaque premier élément étant compris dans un ensemble fini T, comprenant les étapes suivantes : - la génération d’un deuxième vecteur uniformément aléatoire comprenant n deuxièmes éléments ; - la génération de m troisièmes éléments, m étant un entier égal ou supérieur à un ; - la génération de m troisièmes vecteurs uniformément aléatoires, ordonnés de zéro à m-1, dans lequel le troisième vecteur uniformément aléatoire de rang k, k étant un entier compris entre zéro et m-1, comprend k troisièmes éléments et n-k deuxièmes éléments, chaque troisième vecteur uniformément aléatoire ayant des troisièmes éléments différents des deuxièmes éléments à la même position que le deuxième vecteur uniformément aléatoire et que les autres troisièmes vecteurs uniformément aléatoires ; - le calcul desdits premiers éléments en appliquant une fonction de démasquage auxdits deuxièmes éléments et auxdits m troisièmes éléments. Selon un mode de réalisation, l’étape de génération dudit troisième vecteur uniformément aléatoire de rang k comprend les étapes suivantes : - l’utilisation des n premiers éléments ; - le décalage desdits n premiers éléments d’au moins k rangs ; - le remplacement d’au moins k éléments parmi les premiers éléments par k éléments parmi les troisièmes éléments. Selon un mode de réalisation, chaque premier, deuxième et troisième élément est choisi dans un ensemble fini. Selon un mode de réalisation, ledit premier vecteur est un vecteur d’engagement de l’algorithme Dilithium. Un autre mode de réalisation prévoit un procédé d’exécution d’un algorithme cryptographique comprenant ledit procédé de génération décrit précédemment. Selon un mode de réalisation, ledit algorithme cryptographique est un procédé de signature. Selon un mode de réalisation, ledit algorithme cryptographique est l’algorithme Dilithium. 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 FIG. 1 représente, schématiquement et sous forme de blocs, un mode de réalisation d’un dispositif électronique configuré pour exécuter les procédés des figures 3 et 5 ; la FIG. 2 représente, schématiquement et sous forme de blocs, une fonction de masquage et une fonction de démasquage ; la FIG. 3 représente, sous forme de blocs, un mode de réalisation d’un procédé de génération d’un vecteur uniformément aléatoire ; la FIG. 4 représente, sous forme de blocs, une attaque par injection de faute pendant le mode de réalisation de la FIG. 3 ; la FIG. 5 représente, sous forme de blocs, un autre mode de réalisation d’un procédé de génération d’un vecteur uniformément aléatoire ; et la FIG. 6 représente, sous forme de blocs, une attaque par injection de faute pendant le mode de réalisation de la FIG. 5 . 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. 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, des algorithmes cryptographiques utilisant les modes de réalisation décrits dans la suite ne sont pas détaillés dans la suite. Ces mises en œuvre seront évidentes à la personne du métier sur la base de la description qui suit. 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 (en anglais "coupled") entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. 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. Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près. Les modes de réalisation décrits précédemment concernent la génération de données uniformément aléatoires et, plus particulièrement, la génération d’un vecteur uniformément aléatoire. De tels données ou vecteur peuvent être utilisés pendant l’exécution d’un algorithme cryptographique, tel qu’un algorithme de signature. De plus, les modes de réalisation décrits précédemment concernent un procédé de génération et le dispositif électronique l’exécutant qui est résistant à des attaques par injection d’une unique faute ou de plusieurs fautes. Toutefois, les modes de réalisation décrits précédemment sont particulièrement adaptés à la génération de vecteurs uniformément aléatoires qui sont utilisés par un algorithme cryptographique tel qu’un quelconque algorithme de signature qui n’est pas déterministe, par exemple l’algorithme Dilithium, l’algorithme ECDSA ou l’algorithme qTESLA. La FIG. 1 représente, très schématiquement et sous forme de blocs, un dispositif électronique 100 qui peut mettre en œuvre le procédé de génération d’un vecteur uniformément aléatoire décrit en relation avec les figures 3 à 6. Le dispositif 100 est un dispositif électronique adapter pour traiter des données et, plus particulièrement, pour exécuter un algorithme utilisant des données uniformément aléatoires et pour générer de telles données uniformément aléatoires. Par exemple, le dispositif 100 peut exécuter un algorithme cryptographique. Le dispositif 100 comprend un processeur 101 (CPU) qui peut traiter des données. Selon un exemple, le dispositif 100 peut comprend une pluralité de processeurs, chacun adapté pour traiter différents types de données. Selon un exemple particulier, le dispositif 100 peut comprendre au moins un processeur qui est adapté pour exécuter un algorithme utilisant des données uniformément aléatoires et pour générer de telles données uniformément aléatoires. Le dispositif 100 comprend en outre une ou plusieurs mémoires 102 (MEM) dans lesquelles sont stockées des données, par exemple des données critiques. Selon un exemple, le dispositif 100 comprend une pluralité de types de mémoires, telle qu’une mémoire morte ROM, une mémoire vive RAM, une mémoire volatile et/ou une mémoire non-volatile. Selon un exemple particulier, le dispositif 100 peut comprendre une ou plusieurs mémoires qui sont approuvées par le processeur 101 et qui ont un accès sécurisé au processeur 101. Selon un mode de réalisation, le dispositif 100 comprend une ou plusieurs mémoires externes ou mémoires non approuvées qui n’ont pas un accès sécurisé au processeur 101. Le dispositif 100 comprend en outre un ou plusieurs éléments sécurisés 103 (SE) adaptés pour traiter des données critiques et/ou secrètes. L’élément sécurisé 103 peut comprendre son (ses) propre(s) processeur(s), sa ou ses propres mémoires, etc. Selon un exemple, les un ou plusieurs éléments sécurisés 103 peuvent exécuter un algorithme utilisant des données uniformément aléatoires et générer des données uniformément aléatoires. Le dispositif 100 comprend en outre et optionnellement un ou plusieurs circuits d’entrée/sortie 104 (I/O) permettant au dispositif 100 d’émettre et/ou de recevoir des données et/ou de l’énergie avec un ou plusieurs dispositifs électroniques externes. Le dispositif 100 comprend en outre un ou plusieurs circuits 105 (FCT1) et 106 (FCT2) mettant en œuvre une ou plusieurs fonctionnalités du dispositif 100. Selon un exemple, les circuits 105 et 106 peuvent comprendre des circuits de traitement de données spécifiques, tels que des circuits de génération de signature, ou des circuits permettant de mettre en œuvre des mesures, tels que des capteurs. Selon un exemple les circuits 105 et 106 peuvent exécuter un algorithme utilisant des données uniformément aléatoires et générer des données uniformément aléatoires. Le dispositif 100 comprend en outre un ou plusieurs bus de communication 107 permettant à tous les circuits du dispositif 100 de communiquer. En FIG. 1 , un seul bus 107 reliant le processeur 101, la ou les mémoires 102, l’élément sécurisé 103 et les circuits 104 à 106 est représenté, mais, en pratique, le dispositif 100 comprend une pluralité de bus de communication reliant ces différents éléments. La FIG. 2 comprend deux vues (A) et (B) représentant chacune, très schématiquement et sous forme de blocs, une fonction de masquage 201 et une fonction de démasquage 202, respectivement. La fonction de masquage 201 (MASK) prend au moins deux types d’entrée : des données X et l masques M 0 , …, M l-1 , l étant un entier supérieur ou égal à un (1), et fournit des données masquées MASK(X, M 0 , …, M l-1 ). Les données X, les masques M 0 , …, M l-1 et les données masquées MASK(X, M 0 , …, M l-1 ) sont d’une même nature, telle qu’un vecteur comprenant le même nombre d’éléments. La fonction de masquage 201 est conçue afin de fournir des données masquées MASK(X, M 0 , … M l-1 ) qui sont statistiquement indépendantes des données X et qui sont statistiquement indépendantes des masques M 0 , … M l-1 . La fonction de démasquage 202 (UNMASK) prend au moins deux types d’entrées : des données masquées Z et l masques M 0 , … M l-1 , et fournit des données démasquées UNMASK(Z, M 0 , … M l-1 ) sont de même nature, telle qu’un vecteur comprenant le même nombre d’éléments. La fonction de démasquage 202 est conçue de sorte que pour des masques fixés M 0 , … M l-1 la composition des fonctions de masquage et de démasquage agit comme la fonction d’identité. En d’autres termes, le démasquage de la valeur masquée (X, M 0 , … M l-1 ) avec les masques M 0 , … M l-1 restitue les données X. En outre, la fonction de démasquage 202 peut être utilisée pour générer des données uniformément aléatoires et, en particulier, un vecteur uniformément aléatoire. Dans cette description, on appelle donnée uniformément aléatoire une donnée obtenue grâce à un procédé sélectionnant un élément de l’ensemble de sorte que tout élément ait la même probabilité d’être obtenu. De plus, un vecteur uniformément uniforme est un vecteur obtenu grâce à un procédé qui sélectionne indépendamment ses éléments en tant que données uniformément aléatoires. Si les données masquées Z et/ou les masques M 0 , … M l-1 ont été démontrés comme étant uniformément aléatoires et sont indépendants les uns des autres, alors les données démasquées UNMASK(Z, M 0 , … M l-1 ) sont également uniformément aléatoires. Ainsi, choisir l+1 données uniformément aléatoires et leur appliquer la fonction de démasquage 202 est une façon de générer d’autres données uniformément aléatoires. Cette propriété est utilisée dans les modes de réalisation décrits en relation avec les figures 3 à 6. Le mécanisme de masquage est bien connu et des exemples pratiques de ce mécanisme sont le masquage booléen et le masquage arithmétique. D’autres types de mécanismes de masquage sont évidents pour la personne du métier. La FIG. 3 est un schéma-blocs représentant un premier mode de réalisation d’un procédé de génération 300 d’un vecteur uniformément aléatoire Y. Le vecteur uniformément aléatoire Y comprend n éléments y 0 , …, y n - 1 , chaque élément y 0 , …, y n - 1 provenant d’un ensemble fini T. n est un entier supérieur ou égal à deux. Ainsi, le vecteur Y peut être considéré comme un élément de l’ensemble fini T n . Selon un exemple, le vecteur Y peut être un vecteur d’engagement de l’algorithme Dilithium. A une première étape 301 (Gen A), un vecteur uniformément aléatoire A provenant de l’ensemble fini T n est généré. Le vecteur A comprend n éléments a 0 , …, a n - 1 . En d’autres termes, à l’étape 301, n éléments uniformément aléatoires a 0 , …, a n - 1 provenant de l’ensemble T sont générés et sont utilisés pour former le vecteur uniformément aléatoire A. Selon un mode de réalisation, les éléments a 0 , …, a n - 1 sont tous indépendants les uns des autres. A une étape 302 (Gen r), qui suit l’étape 301, un autre élément uniformément aléatoire r provenant de l’ensemble T est généré. Selon un mode de réalisation, l’élément r est indépendant de chaque élément a 0 , …, a n - 1 . A une étape 303 (Gen B), qui suit l’étape 302, un vecteur uniformément aléatoire B provenant de l’ensemble fini T n est construit en utilisant l’élément r et seulement n-1 éléments à partir des éléments a 0 , …, a n - 1 . Le vecteur B comprend n éléments b 0 , …, b n - 1 . Le vecteur B est obtenu en décalant les éléments a 0 , …, a n - 1 et en remplaçant un de ces éléments par un élément r. Selon un mode de réalisation, tous les éléments communs aux vecteurs A et B ont une place différente. Selon un mode de réalisation préféré, le vecteur B est obtenu en décalant la position des éléments a 0 , …, a n - 1 d’au moins un rang, puis en remplaçant un de ces éléments par l’élément r. Selon un exemple pratique, le vecteur B peut être donné par la formule mathématique suivante : . Dans ce cas, le vecteur B est obtenu en décalant la position des éléments a 0 , …, a n - 1 d’un rang, puis en remplaçant l’élément a n - 1 par l’élément r. Chaque élément b i du vecteur B est indépendant de l’élément a i du vecteur A. A une étape 304 (Y=UNMASK(A,B)), qui suit l’étape 303, le vecteur uniformément aléatoire Y est généré en utilisant les vecteurs A et B, et la fonction de démasquage 202 décrite en relation avec la FIG. 2 , dans lequel l est égal à un (1). Chaque élément y i du vecteur Y est donné par la formule mathématique suivante : . Les éléments a i et b i sont indépendants et uniformément aléatoires, l’élément y i est donc également uniformément aléatoire. Comme les éléments y 0 , …, y n - 1 sont indépendants et uniformément aléatoires, Y est un vecteur uniformément aléatoire. Un premier avantage de ce procédé de génération est que ce procédé est robuste vis-à-vis d’attaques par injection d’une faute unique. Cet avantage est décrit plus en détail en relation avec la FIG. 4 . Un deuxième avantage de ce procédé de génération est qu’il utilise la génération de seulement n+1 éléments uniformément aléatoires, en utilisant la fonction de démasquage 202. Une solution naïve sur la base de la fonction de démasquage 202 qui est robuste vis-à-vis d’une injection d’une faute unique demanderait 2*n éléments uniformément aléatoires. La FIG. 4 représente un schéma-blocs illustrant une attaque par injection de faute unique pendant le procédé de la génération de la FIG. 3 . Une attaque par injection d’une faute est une classe d’attaques physiques qui peut être menée contre un dispositif, tel que le dispositif 100 de la FIG. 1 , afin de modifier la façon dont le dispositif fonctionne. Ces types d’attaque sont essentiellement utilisés à des fins de nuire telles que l’extraction de données sensibles. Pendant une attaque par injection de faute unique, un individu peut modifier la valeur d’une donnée et, plus particulièrement, peut modifier la valeur de plusieurs bits constituant cette donnée. Pendant une attaque par injection de plusieurs fautes, un individu peut modifier la valeur de plusieurs données et, plus particulièrement, peut forcer la valeur de plusieurs bits constituant ces plusieurs données. S’agissant du procédé de génération 300 de la FIG. 3 , une attaque par injection de faute unique peut survenir pendant une quelconque étape du procédé. Autrement dit, une faute 401 (FAULT) peut être injectée à une quelconque étape du procédé 300. S’agissant du procédé de génération 300 de la FIG. 3 , une attaque par injection de faute unique peut modifier la valeur du vecteur A. Cela signifie qu’un élément a i du vecteur A a été remplacé par un autre élément t qui n’est pas uniformément aléatoire. Ainsi, le vecteur A est donné par la formule mathématique suivante : . Une telle faute peut être injectée à une quelconque étape du procédé 300. Lorsque cette faute est injectée avant 303, le vecteur B peut éventuellement être généré en utilisant l’élément t. Toutefois, comme cela a été indiqué précédemment, tous les éléments qui sont communs aux vecteurs A et B sont à des places différentes. Ainsi, chaque élément y 0 , …, y n - 1 du vecteur Y est donné par le résultat de l’application de la fonction de démasquage 202 à un élément uniformément aléatoire et à un autre élément indépendant qui n’est pas nécessairement uniformément aléatoire. Le vecteur Y comprend donc toujours uniquement des éléments uniformément aléatoires et indépendants. Selon l’exemple pratique du mode de réalisation préféré décrit précédemment, le vecteur B est donné par la formule mathématique suivante : . L’élément t est mis à la place de l’élément b i+1 du vecteur B. L’élément y i+1 est donné par le résultat de l’application de la fonction de démasquage 202 à l’élément b i+1 = t et l’élément uniformément aléatoire a_(i+1). Ainsi, l’élément y i+1 est également uniformément aléatoire et l’attaque par injection d’une unique faute n’a pas de résultat exploitable. Lorsqu’une attaque par injection d’une unique faute modifie la valeur du vecteur B, cela signifie que l’élément du vecteur B, c'est-à-dire l’élément r ou un élément du vecteur A utilisé pour générer le vecteur B a été remplacé par l’autre élément t qui n’est pas uniformément aléatoire. Selon l’exemple pratique du mode de réalisation préféré décrit précédemment, le vecteur B est donné par la formule mathématique suivante : . Dans ce cas, seul le vecteur B est impacté par l’injection de faute. Le vecteur A est toujours uniformément aléatoire. Ainsi, le vecteur Y est également uniformément aléatoire et l’attaque par injection d’une unique faute n’a pas de résultat exploitable. En outre, une faute pourrait être injectée pour modifier directement le vecteur Y, par exemple si elle est injectée pendant l’étape 304. Toutefois, la personne du métier sait qu’une telle attaque peut être évitée, par exemple en utilisant une quelconque opération de calcul sur le vecteur Y mise en œuvre de façon masquée en utilisant uniquement les vecteurs A et B. La FIG. 5 est un schéma-blocs qui représente un deuxième mode de réalisation d’un procédé de génération 500 du vecteur uniformément aléatoire Y. Le procédé de génération 500 est similaire au procédé de génération 300 décrit en détail en relation avec la FIG. 3 . Les éléments communs aux procédés 300 et 500 ne seront pas détaillés de nouveau dans la suite, seules leurs différences étant mises en avant. Comme cela a été indiqué précédemment, le vecteur uniformément aléatoire Y comprend n éléments y 0 , …, y n - 1 , chaque élément y 0 , …, y n - 1 provenant de l’élément fini T. A une étape initiale 501 (Gen A), le vecteur uniformément aléatoire A comprenant n éléments a 0 , …, a n - 1 est généré. Selon un mode de réalisation, les éléments a 0 , …, a n - 1 sont tous indépendants les uns des autres. A une étape initiale 502 (Gen r 0 , …, r m - 1 ), qui suit l’étape 501, m éléments uniformément aléatoires r 0 , …, r m - 1 provenant de l’ensemble T sont générés. m est un entier égal ou supérieur à un (1). Selon un mode de réalisation, les éléments r 0 , …, r m - 1 sont indépendants chacun les uns des autres et de chaque élément des éléments a 0 , …, a n - 1 . A une étape 503 (Gen B 0 , …, B m - 1 ), qui suit l’étape 502, m vecteurs uniformément aléatoires B 0 , …, B m - 1 provenant de l’ensemble fini T n sont construits en utilisant les éléments r 0 , …, r m - 1 et les éléments a 0 , …, a n - 1 . Chaque vecteur B k comprend n éléments b k,0 , …, b k, n - 1 , k étant un entier compris entre zéro et m-1. Plus particulièrement, le vecteur uniformément aléatoire B k de rang k comprend k éléments parmi les éléments r 0 , …, r m - 1 et n-k éléments parmi les éléments a 0 , …, a n - 1 , et chaque vecteur B 0 , …, B m - 1 a ses éléments disposés dans un ordre différent. Plus particulièrement, à chaque position, tous les éléments des vecteurs A, B 0 , …, B m - 1 sont différents. Ainsi, à chaque position, les éléments des vecteurs A, B 0 , …, B m - 1 sont uniformément aléatoires et indépendants les uns des autres. Selon un mode de réalisation préféré, le vecteur B k de rang k est obtenu en décalant la position des éléments a 0 , …, a n - k d’au moins k rangs, puis en remplaçant un de ces éléments de k éléments des éléments r 0 , …, r m - 1 . Selon un exemple pratique, le vecteur B k peut être donné par la formule mathématique suivante : . Dans ce cas, le vecteur B k est obtenu en décalant la position des éléments - a 0 , …, a n - 1 de k rangs, et en remplaçant l’élément a n-k à a n-1 par un élément r 0 , …, r k - 1 . A une étape 504 (Y=UNMASK(A, B 0 , …, B m - 1 )), qui suit l’étape 503, le vecteur uniformément aléatoire Y est généré en utilisant des vecteurs A et B 0 , …, B m - 1 et la fonction de démasquage 202 décrite en relation avec la FIG. 2 , dans laquelle l est égal à m. Ainsi, chaque élément y i est donné par la formule mathématique suivante : . Les éléments sont indépendants les uns des autres et uniformément aléatoires, ainsi l’élément y i est également uniformément aléatoire. Comme les éléments y 0 , …, y n - 1 sont indépendants et uniformément aléatoires, Y est un vecteur uniformément aléatoire. La FIG. 6 comprend trois vues (A), (B) et (C) qui représentent chacune un schéma-blocs représentant une attaque par injection de plusieurs fautes pendant le procédé de génération 500 de la FIG. 5 . Comme cela a été indiqué précédemment, des attaques par injection de fautes sont une classe d’attaques physiques qui peuvent être menées contre un dispositif. Pendant une attaque par injection de plusieurs fautes, un individu peut modifier la valeur de plusieurs données et, plus particulièrement, peut modifier la valeur de plusieurs bits constituant lesdites plusieurs données. On considère une attaque par injection de fautes dans laquelle m fautes sont injectées. S’agissant du procédé de génération 300, une attaque par injection de plusieurs fautes peut modifier la valeur du vecteur A A et/ou du vecteur B 0 , …, B m - 1 . Lorsqu’une attaque par injection de plusieurs fautes modifie seulement la valeur du vecteur A, cela signifie que m éléments a i du vecteur A ont été remplacés par m autres éléments t 0 , …, t m-1 qui ne sont pas uniformément aléatoires. De telles fautes peuvent être injectées à une quelconque étape du procédé 500. Lorsque cette faute est injectée avant 503, les vecteurs B 0 , …, B m - 1 peuvent éventuellement être générés en utilisant certains des m éléments t 0 , …, t m-1 . Toutefois, comme cela a été indiqué précédemment, tous les éléments qui sont communs aux vecteurs A et B 0 , …, B m - 1 ont une place différente. Ainsi, chaque élément y 0 , …, y n - 1 du vecteur Y est donné par le résultat de l’application de la fonction de démasquage 202 à un élément uniformément aléatoire et m autres éléments qui ne sont pas nécessairement uniformes. Ainsi, le vecteur Y comprend toujours uniquement des éléments uniformément aléatoires et indépendants. Selon un mode de réalisation préféré, lorsque m fautes sont injectées pendant le procédé de génération 500, au plus m éléments parmi r 0 , …, r k , a 0 , …, a n-1 des vecteurs B k sont modifiés. A chaque position, comme les (m+1) éléments des vecteurs A et B 0 , …, B m - 1 sont différents et choisis parmi r 0 , …, r k , a 0 , …, a n-1 , il doit y avoir au moins un élément qui n’est pas modifié par les fautes et est toujours uniformément aléatoire. Ainsi, chaque élément y 0 , …, y n - 1 du vecteur Y obtenu en résultat de l’application de la fonction de démasquage 202 à des éléments indépendants dont au moins un est uniformément aléatoire, est toujours uniformément aléatoire. Par conséquent, le vecteur Y qui comprend uniquement des éléments uniformément aléatoires est toujours uniformément aléatoire. Lorsqu’une attaque par injection de plusieurs fautes modifie seulement la valeur des vecteurs B 0 , …, B m - 1 , cela signifie que les éléments b 0i , …, b m - 1i des vecteurs B 0 , …, B m - 1 ont été remplacés par d’autres éléments t 0 , …, t m-1 qui ne sont pas uniformément aléatoires. Dans ce cas, seuls les vecteurs B 0 , …, B m - 1 sont impactés par l’injection de fautes. Le vecteur A est toujours uniformément aléatoire. Ainsi, le vecteur Y est toujours uniformément aléatoire et l’attaque par injection de plusieurs fautes n’a pas de résultat exploitable. Lorsqu’une attaque par injection de plusieurs fautes modifie directement la valeur du vecteur A et la valeur des vecteurs B 0 , …, B m - 1 , cela signifie que m éléments parmi les éléments a i du vecteur A et les éléments b 0i , …, b m - 1i des vecteurs B 0 , …, B m - 1 ont été remplacés par m autres éléments t 0 , …, t m-1 qui ne sont pas uniformément aléatoires. Toutefois, comme cela a été indiqué précédemment, à chaque position, comme les (m+1) éléments des vecteurs A, B 0 ,… B m-1 sont différents et choisis parmi r 0 , …, r k , a 0 , …, a n-1 , il doit y avoir au moins un élément qui n’est pas modifié par les fautes et est toujours uniformément aléatoire. Ainsi, chaque élément y0, …, yn-1 du vecteur Y obtenu en résultat de l’application de la fonction de démasquage 202 à des éléments indépendants dont au moins un est uniformément aléatoire, est toujours uniformément aléatoire. Par conséquent, le vecteur Y qui comprend uniquement des éléments uniformément aléatoires est toujours uniformément aléatoire. En outre, des fautes pourraient être injectées pour modifier directement un vecteur Y, par exemple, si elle est injectée pendant l’étape 504. Toutefois, la personne du métier sait qu’une telle attaque peut être évitée, par exemple en utilisant une quelconque opération de calcul sur le vecteur Y mise en œuvre d’une façon masquée en utilisant uniquement les vecteurs A et B 0 , …, B m - 1 . Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaîtront à la personne du métier. Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus. Procédé de génération, adapté à être exécuté par un dispositif électronique, d’un premier vecteur uniformément aléatoire (Y) comprenant n premiers éléments (y0, …, yn-1), n étant un entier égal ou supérieur à deux, chaque premier élément étant compris dans un ensemble fini T, comprenant les étapes suivantes : - la génération d’un deuxième vecteur uniformément aléatoire (A) comprenant n deuxièmes éléments (a0, …, an-1) ; - la génération de m troisièmes éléments (r ; r0, …, rm-1), m étant un entier égal ou supérieur à un ; - la génération de m troisièmes vecteurs uniformément aléatoires (B ; B0, …, Bm-1), ordonnés de zéro à m-1, dans lequel le troisième vecteur uniformément aléatoire (Bk) de rang k, k étant un entier compris entre zéro et m-1, comprend k troisièmes éléments et n-k deuxièmes éléments, chaque troisième vecteur uniformément aléatoire (B ; B0, …, Bm-1) ayant des troisièmes éléments (b0, …, bn-1 ; bi0, …, bin-1) différents des deuxièmes éléments à la même position dans le deuxième vecteur uniformément aléatoire (A) et les autres troisièmes vecteurs uniformément aléatoires (B ; B0, …, Bm-1) ; - le calcul desdits premiers éléments (y0, …, yn-1) en appliquant une fonction de démasquage auxdits deuxièmes éléments (a0, …, an-1) et auxdits m troisièmes éléments. (b0, …, bn-1 ; bi0, …, bin-1). Procédé selon la revendication 1, dans lequel l’étape de génération dudit troisième vecteur uniformément aléatoire (B ; Bk) de rang k comprend les étapes suivantes : - l’utilisation des n premiers éléments (a0, …, an-1) ; - le décalage desdits n premiers éléments d’au moins k rangs ; - le remplacement d’au moins k éléments parmi les premiers éléments par k éléments (a0, …, an-1) parmi les troisièmes éléments (r0, …, rm-1). Procédé selon la revendication 1 ou 2, dans lequel, chaque premier, deuxième et troisième élément est choisi dans un ensemble fini. Procédé selon l’une quelconque des revendications 1 à 3, dans lequel ledit premier vecteur est un vecteur d’engagement de l’algorithme Dilithium. Procédé d’exécution d’un algorithme cryptographique comprenant ledit procédé de génération selon l’une quelconque des revendications 1 à 4 Procédé selon la revendication 5, dans lequel ledit algorithme cryptographique est un procédé de signature. Procédé selon la revendication 5 ou 6, dans lequel ledit algorithme cryptographique est l’algorithme Dilithium. Dispositif électronique adapté à exécuter un procédé de génération d’un premier vecteur uniformément aléatoire (Y) comprenant n premiers éléments (y0, …, yn-1), n étant un entier égal ou supérieur à deux, chaque premier élément étant compris dans un ensemble fini T, comprenant les étapes suivantes : - la génération d’un deuxième vecteur uniformément aléatoire (A) comprenant n deuxièmes éléments (a0, …, an-1) ; - la génération de m troisièmes éléments (r ; r0, …, rm-1), m étant un entier égal ou supérieur à un ; - la génération de m troisièmes vecteurs uniformément aléatoires (B ; B0, …, Bm-1), ordonnés de zéro à m-1, dans lequel le troisième vecteur uniformément aléatoire (Bk) de rang k, k étant un entier compris entre zéro et m-1, comprend k troisièmes éléments et n-k deuxièmes éléments, chaque troisième vecteur uniformément aléatoire (B ; B0, …, Bm-1) ayant des troisièmes éléments (b0, …, bn-1 ; bi0, …, bin-1) différents des deuxièmes éléments à la même position dans le deuxième vecteur uniformément aléatoire (A) et les autres troisièmes vecteurs uniformément aléatoires (B ; B0, …, Bm-1) ; - le calcul desdits premiers éléments (y0, …, yn-1) en appliquant une fonction de démasquage auxdits deuxièmes éléments (a0, …, an-1) et auxdits m troisièmes éléments. (b0, …, bn-1 ; bi0, …, bin-1). Dispositif selon la revendication 8, dans lequel l’étape de génération dudit troisième vecteur uniformément aléatoire (B ; Bk) de rang k comprend les étapes suivantes : - l’utilisation des n premiers éléments (a0, …, an-1) ; - le décalage desdits n premiers éléments d’au moins k rangs ; - le remplacement d’au moins k éléments parmi les premiers éléments par k éléments (a0, …, an-1) parmi les troisièmes éléments (r0, …, rm-1). Dispositif selon la revendication 8 ou 9, dans lequel, chaque premier, deuxième et troisième élément est choisi dans un ensemble fini.