Brevet FR3066847A1 — publié le 20181130

B16183 - 17-R0-0315 1 PROTECTION D'UN GENERATEURALEATOIRE Domaine La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits intégrés générant des nombres aléatoires ou non déterministes. Exposé de l'art antérieur Dans de nombreux circuits électroniques, on utilise des générateurs dits de nombres aléatoires ou non déterministes. De tels nombres aléatoires sont utilisés dans de nombreuses applications mettant en oeuvre des algorithmes de chiffrement, d'authentification, de calcul de signature, et plus généralement des algorithmes manipulant des données, dites secrètes, c'est-à-dire dont on souhaite réserver l'accès à certains utilisateurs ou circuits. Lorsque des nombres aléatoires sont utilisés dans ces applications, on souhaite généralement que les nombres soient non déterministes et qu'ils aient par ailleurs une répartition statistiquement uniforme. De nombreuses méthodes, dites attaques, existent pour tenter de découvrir ou pirater des données secrètes manipulées par ces calculs. Par exemple, des attaques dites par canaux cachés, exploitent des informations indirectes telles que la consommation du circuit (attaques SPA, DPA), son rayonnement, etc. L'interprétation de ces informations renseigne le pirate sur la 3066847 B16183 - 17-R0-0315 2 donnée secrète. D'autres attaques, dites par injection de fautes interviennent directement sur certaines étapes du calcul. Les nombres aléatoires peuvent alors être utilisés pour masquer des traitements algorithmiques et faire en sorte notamment 5 que la reproduction d'un même traitement se traduise par un comportement différent du circuit électronique qui l'exécute, ce qui rend plus difficile l'interprétation des résultats d'une attaque. Ils peuvent également directement représenter la donnée confidentielle qui est alors directement protégée par le caractère 10 non-déterministe et par le caractère uniforme du tirage du nombre aléatoire. Toutefois, certaines attaques, dites déterministes, se focalisent sur les générateurs de nombres aléatoires pour en rompre le caractère non déterministe et, plus précisément, pour 15 rendre le ou les nombres générés déterministes. En effet, à partir du moment où le nombre devient déterministe, l'aléa qu'il introduit sur le calcul disparait et les autres attaques peuvent prospérer. Résumé 20 Un mode de réalisation pallie tout ou partie des inconvénients des générateurs de nombres aléatoires usuels. Un mode de réalisation propose une solution pour détecter une attaque déterministe. Ainsi, un mode de réalisation prévoit un procédé de 25 détection d'une attaque d'injection d'un nombre déterministe sur un signal de sortie d'un générateur de nombres aléatoires, comportant les étapes suivantes: forcer une source de bruit du générateur à fournir un signal donné ; et 30 considérer la présence d'une attaque si le signal prélevé en sortie du générateur ne correspond pas à un résultat attendu. Selon un mode de réalisation, le procédé comporte une étape de comparaison du signal fourni en sortie du générateur par 35 rapport à un résultat attendu. 3066847 B16183 - 17-R0-0315 3 Selon un mode de réalisation, ledit signal donné est un flux de bits. Selon un mode de réalisation, le générateur comporte un analyseur statistique d'un caractère non conforme du signal fourni 5 par la source de bruit, qui est désactivé pendant lesdites étapes. Selon un mode de réalisation, le générateur comporte un analyseur statistique d'un caractère non conforme du signal fourni par la source de bruit, ledit signal donné étant choisi pour satisfaire à une analyse statistique effectuée par ledit 10 analyseur. Selon un mode de réalisation, lesdites étapes sont effectuées périodiquement. Selon un mode de réalisation, lesdites étapes sont effectuées de façon non périodique. 15 Selon un mode de réalisation, lesdites étapes sont effectuées au démarrage du générateur. Selon un mode de réalisation, lesdites étapes sont effectuées avant chaque génération de nombre aléatoire. Un mode de réalisation prévoit un générateur de nombres 20 aléatoires, comportant un module adapté à la mise en oeuvre du procédé de détection d'une attaque d'injection d'un nombre déterministe. Un mode de réalisation prévoit un circuit électronique comportant un générateur de nombres aléatoires. 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 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 exemple de circuit électronique du type auquel s'appliquent les modes de réalisation décrits ; la figure 2 illustre, de façon très schématique sous forme de blocs, un exemple d'attaque déterministe sur un signal 35 produit par un générateur de nombres aléatoires ; 3066847 B16183 - 17-R0-0315 4 la figure 3 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d'un procédé de détection d'une attaque déterministe ; et la figure 4 représente, de façon très schématique et 5 sous forme de blocs, un autre mode de réalisation d'un procédé de détection d'une attaque déterministe. 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 10 les éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et seront détaillés. En particulier, l'exploitation faite des nombres générés n'a pas été détaillée, les modes de réalisation décrits étant compatibles avec les applications habituelles exploitant des nombres aléatoires. De 15 plus, la génération des signaux de commande requérant la génération du nombre aléatoire n'a pas non plus été détaillée, les modes de réalisation décrits étant, là encore, compatibles avec les circuits électroniques usuels de commande de générateurs de nombres aléatoires. 20 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ément intermédiaire autre que des conducteurs, et lorsque l'on fait référence à deux éléments reliés entre eux, cela signifie que ces deux éléments peuvent être directement 25 reliés (connectés) ou reliés par l'intermédiaire d'un ou plusieurs autres éléments. Dans la description qui suit, lorsqu'on fait référence aux termes "approximativement", "environ" et, "de l'ordre de", cela signifie à 10% près, de préférence à 5% près. 30 La figure 1 représente, de façon très schématique, un circuit électronique 1 du type auquel s'appliquent les modes de réalisation qui vont être décrits. Le circuit 1 comporte : 3066847 B16183 - 17-R0-0315 5 une unité de calcul 11 (UC), par exemple une machine d'états, un microprocesseur, un circuit logique programmable, etc. ; une ou plusieurs zones 13 (MEM) de stockage volatile 5 et/ou non volatile pour stocker tout ou partie des données et des clés ; un ou plusieurs bus 15 de données, d'adresses et/ou de commandes entre les différents éléments internes au circuit 1 et une interface d'entrée-sortie 17 (I/O) de communication avec 10 l'extérieur du circuit 1. Le circuit 1 peut inclure divers autres circuits en fonction de l'application, symbolisés en figure 1 par un bloc 19 (FCT). En outre, dans les applications visées par la présente 15 description, le circuit 1 comporte au moins un générateur 2 de nombres aléatoires (RBG). La constitution interne du générateur aléatoire n'est pas modifiée par les modes de réalisation qui vont être décrits. Par conséquent, le générateur en soi peut prendre n'importe quelle forme usuelle (source de bruit, lignes à retard 20 rebouclées, etc.). On a déjà proposé des méthodes basées sur l'exécution de tests statistiques sur le caractère d'uniformité des nombres fournis par le générateur. De telles méthodes permettent de contrer une catégorie d'attaques, dites d'introduction d'un biais, 25 perpétrées sur des générateurs aléatoires. Ces attaques consistent à fausser la source de bruit afin que les nombres générés soient plus déterministes. En effet, avec des tests statistiques sur le flux de bits fourni en sortie de la source de bruit, on peut alors détecter l'attaque. A titre d'exemple, si une source de bruit est 30 faussée afin que le générateur ne produise que des suites de 0, des suites de 1, ou des suites de couples 10, une contremesure par analyse statistique le détecte. Toutefois, si l'attaque est une attaque déterministe faussant le flux de sortie de la source de bruit en respectant 3066847 B16183 - 17-R0-0315 6 une distribution statistique, les contremesures par analyse statistique s'avèrent inefficaces. Pour simplifier, dans la description qui suit, on prendra pour exemple un générateur aléatoire fournissant un flux 5 de bits série. Toutefois, tout ce qui va être décrit par la suite d'applique plus généralement à tous signaux non déterministes fournis par un ou plusieurs générateurs de nombres aléatoires qu'ils soient série ou parallèle et quel que soit le codage éventuellement opéré en sortie du générateur. 10 La figure 2 illustre, de façon très schématique sous forme de blocs, un exemple d'attaque déterministe sur un signal produit par un générateur 2 de nombres aléatoires. Le générateur 2 est basé sur une source de bruit 22 (RNS) fournissant un flux de bits. La sortie de la source 22 est 15 soumise à une vérification du caractère statistiquement uniformément réparti du flux de bits généré. Typiquement, le flux de bits est prélevé par un analyseur 3 (STAT TEST) qui a pour rôle de vérifier que la distribution des bits dans le signal généré respecte un caractère équiprobable (uniformément répartis) sur un 20 nombre donné d'échantillons et qu'il ne s'agit pas d'une reproduction de séquences de bits (par exemple des suites de 10, de 101100, etc.). Si le test est réussi, c'est-à-dire que le signal est conforme, l'analyseur 3 valide (signal OK) la fourniture du flux de bits en sortie du générateur 2, c'est-à- 25 dire au reste de l'application. Cette validation est symbolisée en figure 2 par la fermeture d'un interrupteur 4 mais peut prendre différentes formes usuelles de fourniture du résultat d'une détection d'attaque (génération d'un signal d'erreur, réinitialisation du circuit, etc.). 30 Toutefois, une attaque déterministe consiste à remplacer le flux de bits de sortie de la source de bruit 22 par une suite de bits déterministe, mais qui respecte les caractéristiques statistiques d'être non uniformément réparti (non équiprobable) et de ne pas représenter une séquence qui se répète. Par exemple, une source déterministe 5 (DETERM SOURCE)injecte ce flux de bits 3066847 B16183 - 17-R0-0315 7 entre la sortie de la source 22 et l'analyseur 3. En fait, il peut s'agir du même moyen d'attaque que les attaques faussant le caractère uniforme. La différence provient du fait qu'un flux déterministe, respectant une distribution statistiquement 5 aléatoire sur un échantillon, est introduit dans le système. De telles attaques ne sont pas détectables par l'analyseur 3, dès que le nombre introduit en remplacement du flux de bits fourni par la source 22 respecte le caractère d'être statistiquement aléatoire sur les échantillons examinés par l'analyseur 3. Par 10 exemple, si l'on force la sortie de la source 22 pour fournir les décimales du nombre pi, le nombre devient déterministe mais est statistiquement aléatoire sur les quantités de bits analysées par l'analyseur 3. D'autres flux de bits peuvent servir à des attaques déterministes et ne pas être détectés par les analyseurs usuels. 15 Par exemple, il suffirait de mémoriser un flux de bits non perturbé, validé par l'analyseur 3, et de le rejouer (l'injecter entre la sortie de la source 22 et l'analyseur 3). La figure 3 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d'un procédé de 20 détection d'une attaque déterministe. On retrouve la chaîne de traitement d'un générateur usuel, c'est-à-dire la source de bruit 22 dont la sortie est interceptée par un analyseur statistique 3 du caractère non uniformément réparti du flux de bits généré et un interrupteur 4 25 (ou tout autre élément de validation) du flux fourni par le générateur 2 au reste du circuit électronique. Selon ce mode de réalisation, on introduit une contremesure supplémentaire (bloc 6, NEGAT TEST) qui consiste à introduire un biais (signal B) dans la source de bruit 22, de 30 façon à forcer le générateur 2 à fournir un flux de bits statistiquement déterministe. Le plus simple est, par exemple, de forcer la source à ne fournir que des 1 ou que des 0. On pourrait même prévoir d'intercepter le signal de sortie de la source 22 pour forcer ce signal, mais on doit alors veiller à ce que cela 35 soit effectué en amont de toute injection possible d'un nombre 3066847 B16183 - 17-R0-0315 8 par attaque déterministe (bloc 5). Ainsi, on préfère intervenir sur la source de bruit 22 et la fausser à la manière d'une attaque par biais. Le résultat de l'analyseur statistique 3 est envoyé sur le bloc de contremesure 6 qui vérifie que, lorsqu'il injecte 5 un biais dans la source de bruit 22, celui-ci est bien détecté par l'analyseur 3. S'il est détecté, c'est-à-dire si l'analyseur détecte que le signal n'est pas conforme, cela signifie que le générateur est fiable et le bloc 6 supprime le biais pour permettre d'utiliser le flux de sortie non déterministe généré par le 10 générateur 2. En fait, la vérification porte d'une part sur le fait que le générateur est bien celui qui reçoit le biais, et non une autre installation sur le chemin électrique, et d'autre part que les organes de test statistique détectent bien un biais. En présence d'une attaque déterministe (bloc 5), le 15 signal de sortie de la source 22 est remplacé par l'attaquant par le flux déterministe. Par conséquent, le biais introduit par le bloc 6 lors d'un test de contremesure est sans effet. Il en découle que le signal de détection de l'analyseur 3 n'identifie pas la présence du biais. Le bloc 6 de contremesure interprète cette 20 absence de détection comme la présence d'une attaque et génère un signal d'erreur ERROR (ou tout autre mesure adaptée en fonction de l'application pour réagir à la détection d'une attaque). On prend en fait le contrepied de l'utilisation habituelle de ce détecteur pour interpréter une absence de 25 détection d'une attaque par celui-ci comme signifiant la présence d'une attaque. Le test de contremesure 6 est effectué, par exemple, périodiquement ou à des instants déterminés par l'application, par exemple, au démarrage du générateur ou à chaque demande de 30 fourniture d'un nombre aléatoire par l'application, etc. La figure 4 représente, de façon très schématique et sous forme de blocs, un autre mode de réalisation d'un procédé de détection d'une attaque déterministe. On retrouve ici encore la chaîne de traitement d'un 35 générateur usuel, c'est-à-dire une source de bruit 22 dont la 3066847 B16183 - 17-R0-0315 9 sortie est interceptée par un analyseur statistique 3 du caractère non déterministe du flux de bits généré et un interrupteur 4 (ou tout autre élément de validation) du flux fourni au reste du circuit électronique. 5 Selon le mode de réalisation de la figure 4, le bloc de contremesure 6' introduit un test déterministe (DETERM TEST) qui consiste à forcer (signal F) la source de bruit 22 à fournir un train de bits déterminé pendant un temps donné. A l'inverse du cas de la figure 3, le train de bits généré ne doit pas déclencher 10 l'analyseur statistique 3, c'est-à-dire qu'il doit respecter le caractère statistiquement uniforme. En variante, on désactive l'analyseur 3 pendant le test déterministe et, dans ce cas, il importe peu que le train de bits soit ou non statistiquement déterministe. Le signal de sortie du générateur 2, fourni par 15 l'interrupteur 4 est intercepté par le bloc 6'. Le bloc 6' vérifie alors que le flux de bits de sortie correspond bien à celui qu'il attend. Dans la négative, cela signifie que l'on est en présence d'une attaque déterministe (signal ERROR). Ainsi, on considère qu'on est en présence d'une attaque déterministe si le bloc 6' ne 20 retrouve pas le résultat (déterministe) qu'il attend. On pourra prévoir différents tests déterministes, c'est-à-dire forcer le générateur 2 à fournir un flux de bits donné, lui introduire un biais dont on connait à l'avance la conséquence sur le signal de sortie, etc. 25 Comme pour le mode de réalisation de la figure 3, le test est effectué périodiquement ou non à des instants adaptés en fonction de l'application. Un avantage des modes de réalisation décrits est qu'ils préservent le fonctionnement d'un analyseur de détection de biais. 30 Divers modes de réalisation ont été décrits, diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, le choix des instants de déclenchement du test 6 ou 6' peut varier d'une application à une autre. En outre, la mise en oeuvre pratique, par des techniques matérielles, logicielles 35 ou combinées, des modes de réalisation qui ont été décrits est à 3066847 B16183 - 17-R0-0315 10 la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus. REVENDICATIONS1. Procédé de détection d'une attaque d'injection d'un nombre déterministe sur un signal de sortie d'un générateur (2) de nombres aléatoires, comportant les étapes suivantes: forcer une source de bruit (22) du générateur à fournir 5 un signal donné ; et considérer la présence d'une attaque si le signal prélevé en sortie du générateur ne correspond pas à un résultat attendu. 2. Procédé selon la revendication 1 comportant une 10 étape de comparaison du signal fourni en sortie du générateur par rapport à un résultat attendu. 3. Procédé selon la revendication 1 ou 2, dans lequel ledit signal donné est un flux de bits. 4. Procédé selon l'une quelconque des revendications 1 15 à 3, dans lequel le générateur (2) comporte un analyseur statistique (3) d'un caractère non conforme du signal fourni par la source de bruit (22), qui est désactivé pendant lesdites étapes. 5. Procédé selon l'une quelconque des revendications 1 20 à 3, dans lequel le générateur (2) comporte un analyseur statistique (3) d'un caractère non conforme du signal fourni par la source de bruit (22), ledit signal donné étant choisi pour satisfaire à une analyse statistique effectuée par ledit analyseur. 25 6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel lesdites étapes sont effectuées périodiquement. 7. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel lesdites étapes sont effectuées de façon non périodique. 30 8. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel lesdites étapes sont effectuées au démarrage du générateur. 3066847 B16183 - 17-R0-0315 12 9. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel lesdites étapes sont effectuées avant chaque génération de nombre aléatoire. 10. Générateur de nombres aléatoires, comportant un 5 module (6') adapté à la mise en oeuvre du procédé selon l'une quelconque des revendications 1 à 9. 11. Circuit électronique comportant un générateur selon la revendication 10.