Brevet FR3153673A1 — publié le 20250404

L’invention concerne un circuit numérique (10) pour calculer un produit scalaire entre deux vecteurs et . Le circuit numérique comporte un multiplieur (11), un accumulateur (12) comportant au moins un additionneur (13) et un registre (14), ainsi qu’un circuit de contrôle (15) de l’accumulateur. A un coup d’horloge d’indice , le multiplieur est configuré pour calculer le résultat de la multiplication , et l’accumulateur est configuré pour additionner avec la valeur courante du registre. Le résultat de l’addition est ensuite mémorisé dans le registre. Le circuit de contrôle est configuré pour contrôler l’accumulateur de sorte à effectuer l’addition de façon approximative pour au moins une addition parmi les additions du calcul du produit scalaire. Le circuit numérique est notamment destiné à être utilisé dans un dispositif électronique mettant en œuvre un algorithme cryptographique basé sur une technologie d’ « apprentissage avec erreurs » (LWE). Figure pour l’abrégé : Fig. 1 Circuit numérique de calcul approximatif pour des applications de cryptographie post-quantique Domaine de l’invention La présente invention appartient au domaine des circuits numériques de calcul approximatif pour des applications de cryptographie, et plus particulièrement pour des applications de cryptographie post-quantique. Etat de la technique La cryptographie post-quantique concerne les algorithmes de chiffrement pouvant résister à des attaques mathématiques utilisant un ordinateur quantique. A la différence d’un ordinateur classique qui travaille sur des données binaires, un ordinateur quantique travaille sur des qubits dont l’état quantique peut posséder une valeur quantique comportant plusieurs possibilités simultanées. Le calcul quantique se prête particulièrement bien aux problèmes dont la complexité de calcul réside dans la combinatoire. On trouve notamment ces problèmes dans la cryptographie. Les grandes capacités de factorisation d’un calculateur quantique permettraient ainsi de casser mathématiquement de nombreux systèmes cryptographiques conventionnels, notamment des méthodes de chiffrement asymétriques basées sur l’algorithme RSA. L’ « apprentissage avec erreurs », ou LWE (acronyme anglais de « Learning With Errors ») est un problème calculatoire supposé difficile qui est à la base de nombreux algorithmes de chiffrement récents utilisés en cryptographie post-quantique. Une implémentation conventionnelle d’une primitive cryptographique basée sur LWE consiste à générer des erreurs qui suivent une distribution d’erreur prédéterminée, et à ajouter ces erreurs dans des calculs exacts. La génération d’erreurs avec un générateur de nombres aléatoires (ou pseudo-aléatoires) matériel (TRNG pour « True Random Number Generator », ou PRNG pour « Pseudo-Random Number Generator ») entraine cependant des problèmes de performances. Le document « When Bad News Become Good News – Towards Usable Instances of Learning With Physical Errors », D. BELLIZIA et al., IACR Transactions on Cryptographic Hardware and Embedded Systems, pp. 1-24, Aug. 2022, divulgue un circuit numérique pour calculer un produit scalaire de deux vecteurs. Ce circuit peut servir de brique de base pour implémenter un algorithme de type LWE. Dans l’architecture proposée, chaque vecteur comporte 128 nombres codés chacun sur 8 bits. Le circuit numérique comporte un multiplieur parallèle capable de calculer 128 multiplications en parallèle, ainsi que sept étages d’additionneurs parallèles. Les additionneurs des différents étages effectuent chacun en parallèle un nombre d’additions respectivement égal à 64, 32, 16, 8, 4, 2 puis 1. Des registres à décalage (bascules flip-flop) sont intercalés entre deux étages d’additionneurs pour introduire une erreur dans l’échantillonnage du bit de poids faible du résultat de deux des additions. L’architecture proposée est particulièrement complexe et elle présente un encombrement assez important. Dans un autre domaine, pour les circuits numériques de calcul intensif utilisés dans des applications présentant une certaine résilience aux erreurs (par exemple pour l’implémentation de réseaux de neurones pour le traitement d’image), il est connu d’introduire des simplifications dans le circuit numérique afin d’optimiser sa consommation énergétique et/ou son encombrement au détriment de la précision du calcul. On parle alors de « calcul approximatif » (« approximate computing » dans la littérature anglo-saxonne). Le circuit numérique est alors synthétisé spécifiquement pour faire des calculs avec une certaine probabilité d’erreur. Il n’y a alors généralement pas moyen de contrôler dynamiquement la probabilité d’erreur introduite dans les calculs par le circuit numérique. La présente invention a pour objectif de remédier à tout ou partie des inconvénients de l’art antérieur, notamment ceux exposés ci-avant. A cet effet, et selon un premier aspect, il est proposé par la présente invention, un circuit numérique pour calculer un produit scalaire entre deux vecteurs de dimension , étant un nombre entier au moins égal à deux. Les deux vecteurs sont notés respectivement et . Le circuit numérique comporte un multiplieur, un accumulateur comportant au moins un additionneur et un registre, ainsi qu’un circuit de contrôle de l’accumulateur. Le circuit numérique est configuré pour être cadencé par une horloge, et à un coup d’horloge d’indice , étant un nombre entier variant entre 0 et : le multiplieur est configuré pour calculer un résultat d’une multiplication des composantes d’indice des deux vecteurs, l’accumulateur est configuré pour additionner le résultat de la multiplication avec une valeur courante du registre, et pour mémoriser un résultat de l’addition dans le registre ; le circuit de contrôle est configuré pour contrôler l’accumulateur de sorte à effectuer l’addition de façon approximative, c’est-à-dire avec un niveau prédéterminé de probabilité que le résultat de l’addition comporte une erreur, pour au moins une addition parmi les additions du calcul du produit scalaire. Ce circuit numérique est particulièrement bien adapté pour servir d’accélérateur matériel pour une primitive cryptographique basée sur un algorithme d’ « apprentissage avec erreurs » (LWE). Le calcul de produit scalaire est en effet à la base de ce type d’algorithme. Le circuit de contrôle permet d’injecter une erreur pour une ou plusieurs additions du calcul du produit scalaire. Cela permet d’implémenter un algorithme de type LWE sans avoir à utiliser de générateur matériel de nombres aléatoires (ou pseudo-aléatoires) (TRNG ou PRNG), tout en gardant une architecture particulièrement simple et compacte. Notamment, et contrairement à la solution présentée dans l’art antérieur, il n’y a pas besoin de cascader plusieurs étages d’additionneurs et il n’y a pas besoin d’ajouter de banc de registres. La solution proposée présente une architecture compacte, avec un encombrement réduit (faible surface occupée par le circuit) et une consommation énergétique relativement faible. L’architecture proposée confère de la flexibilité sur le niveau de probabilité d’erreur souhaité pour le calcul du produit scalaire. Il est par exemple possible de modifier dynamiquement, via le circuit de contrôle, le nombre d’additions devant être exécutées de façon approximative dans le but de modifier la distribution d’erreur. L’architecture proposée permet en outre d’ajouter de l’entropie dans la distribution d’erreur obtenue, notamment en jouant sur le choix de l’addition ou des additions devant être exécutées de façon approximative dans le calcul du produit scalaire. Dans des modes particuliers de réalisation, l’invention peut comporter en outre l’une ou plusieurs des caractéristiques suivantes, prises isolément ou selon toutes les combinaisons techniquement possibles. Dans des modes particuliers de réalisation : l’accumulateur comporte un unique additionneur implémenté selon la technologie « silicium sur isolant totalement déserté », FDSOI ; une région prédéterminée de l’additionneur regroupe des transistors FDSOI formant des portes logiques qui contrôlent un nombre prédéterminé de bits de poids faible du résultat de l’addition, étant un nombre entier au moins égal à un ; ladite région prédéterminée est connectée à une source de tension permettant d’appliquer une tension de grille arrière aux transistors FDSOI de la région, la valeur de la tension de grille arrière pouvant être contrôlée dynamiquement par le circuit de contrôle, le circuit de contrôle est configuré pour appliquer par défaut une valeur de référence de tension de grille arrière, et pour appliquer une valeur spécifique de tension de grille arrière, différente de la valeur de référence, uniquement pendant l’exécution de ladite au moins une addition devant être effectuée de façon approximative. De telles dispositions correspondent à une architecture particulièrement compacte (circuit numérique avec un unique additionneur) avec un niveau de flexibilité accru sur la distribution d’erreur pouvant être obtenue. Il est en effet possible de modifier dynamiquement la distribution d’erreur en fonction de la valeur de la tension de grille arrière appliquée. La tension de grille arrière permet de faire varier la tension de seuil des transistors FDSOI. Une tension de seuil plus élevée entraine une augmentation du temps de propagation des portes logiques implémentés par les transistors, et par conséquent une perte de précision dans les calculs. La prédétermination de la région concernée (qui dépend du nombre de bits de poids faible que l’on souhaite être impactés par le calcul approximatif) participe également à la définition de la distribution d’erreur. Dans des modes particuliers de réalisation, le circuit de contrôle est configuré pour déterminer dynamiquement la valeur spécifique de tension de grille arrière à appliquer en fonction d’un niveau de probabilité d’erreur souhaité pour le calcul du produit scalaire. Dans des modes particuliers de réalisation, les transistors FDSOI sont agencés en structures CMOS comportant chacune un transistor NMOS sur un puits P et un transistor PMOS sur un puits N. Cela correspond à un circuit numérique avec des composants CMOS de structure traditionnelle (« Regular Well » en anglais) optimisés pour une polarisation inverse de grille arrière (« Reverse Body Bias » ou RBB dans la littérature anglo-saxonne). Dans une telle configuration, la polarisation inverse de grille arrière (RBB) est appliquée pour augmenter la tension de seuil du transistor. Le transistor est alors de type RVT (acronyme anglais de « Regular Voltage Threshold », en français « tension de seuil régulière »). Dans des modes particuliers de réalisation : l’accumulateur comporte un additionneur exact synthétisé spécifiquement pour calculer une addition de façon exacte, un additionneur approximatif synthétisé spécifiquement pour calculer une addition avec le niveau prédéterminé de probabilité d’erreur, et un multiplexeur ; pour chaque addition exécutée à un coup d’horloge d’indice , le multiplexeur est configuré par le circuit de contrôle pour sélectionner l’additionneur à utiliser parmi l’additionneur exact et l’additionneur approximatif. Cette architecture ne nécessite pas de source de tension dynamique, mais elle nécessite deux additionneurs et un multiplexeur. Dans des modes particuliers de réalisation, ladite au moins une addition devant être exécutée de façon approximative, parmi les additions du calcul du produit scalaire, est différente à chaque nouveau calcul de produit scalaire. Dans des modes particuliers de réalisation, ladite au moins une addition devant être exécutée de façon approximative dans le calcul du produit scalaire est choisie aléatoirement. Dans des modes particuliers de réalisation, le nombre d’additions devant être exécutées de façon approximative dans le calcul du produit scalaire est contrôlé dynamiquement par le circuit de contrôle en fonction d’un niveau de probabilité d’erreur souhaité pour le calcul du produit scalaire. Selon un deuxième aspect, il est proposé par la présente invention, un dispositif électronique mettant en œuvre un algorithme cryptographique basé sur une technologie d’ « apprentissage avec erreurs » (LWE). Le dispositif comporte au moins un circuit numérique selon l’un quelconque des modes de réalisation précédents. Présentation des figures L’invention sera mieux comprise à la lecture de la description suivante, donnée à titre d’exemple nullement limitatif, et faite en se référant aux figures 1 à 7 qui représentent : FIG. 1 une représentation schématique générique d’un circuit numérique selon l’invention, pour le calcul d’un produit scalaire entre deux vecteurs, FIG. 2 une représentation schématique d’un premier mode particulier de réalisation du circuit numérique illustré à la FIG. 1 , FIG. 3 une représentation schématique d’un deuxième mode particulier de réalisation du circuit numérique illustré à la FIG. 1 , FIG. 4 une représentation schématique d’un transistor FDSOI, FIG. 5 une représentation schématique d’une structure CMOS FDSOI optimisée pour le mode RBB, FIG. 6 une représentation schématique d’un additionneur 8-bit, avec l’identification d’une région particulière de l’additionneur qui impacte le bit de poids le plus faible du résultat de l’addition, FIG. 7 un graphique illustrant la possibilité de contrôler le niveau de probabilité d’erreur de l’additionneur en fonction de la tension de grille arrière appliquée. Dans ces figures, des références identiques d’une figure à une autre désignent des éléments identiques ou analogues. Pour des raisons de clarté, les éléments représentés ne sont pas nécessairement à une même échelle, sauf mention contraire. Description détaillée de l’invention La figure 1 représente schématiquement un circuit numérique 10 selon l’invention. Le circuit numérique 10 est configuré pour calculer un produit scalaire entre deux vecteurs de dimension , étant un nombre entier au moins égal à deux. Dans l’exemple illustré sur la figure 1, les deux vecteurs sont notés respectivement et . Les composantes et de ces deux vecteurs, étant un nombre entier variant entre 0 et , correspondent par exemple chacune à un nombre entier codé sur bits, étant un nombre entier au moins égal à un. Le circuit numérique 10 est configuré pour calculer le produit scalaire des deux vecteurs : Répéter cette opération pour vecteurs différents, en faisant varier l’indice entre 0 et , revient alors à calculer le produit matriciel suivant : Comme on le verra par la suite, au lieu de calculer cette opération de façon exacte, le circuit numérique 10 est configuré pour calculer cette opération de façon approximative, c’est-à-dire de telle sorte que le résultat obtenu soit entaché d’une erreur présentant une distribution prédéterminée : Chaque élément correspond à une erreur selon une distribution d’erreur prédéterminée. Un tel calcul est à la base des primitives cryptographiques fondées sur l’apprentissage avec erreurs (LWE). Le circuit numérique 10 est donc particulièrement bien adapté pour être utilisé comme accélérateur matériel pour implémenter ce type de primitives cryptographiques. Tel qu’illustré sur la FIG. 1 , le circuit numérique 10 comporte un multiplieur 11, un accumulateur 12 et un circuit de contrôle 15 de l’accumulateur 12. L’accumulateur 12 comporte au moins un additionneur 13 et un registre 14. Le circuit numérique 10 est configuré pour être cadencé par une horloge. Dans la suite, on s’intéresse au calcul du produit scalaire décrit à la formule [Math.1], pour un indice donné. Le registre 14 est initialisé à zéro au début du calcul du produit scalaire. A un coup d’horloge d’indice , le multiplieur 11 est configuré pour calculer un résultat d’une multiplication des composantes d’indice des deux vecteurs, et l’accumulateur 12 est configuré pour additionner le résultat de la multiplication avec une valeur courante du registre 14. Le résultat de l’addition est ensuite mémorisé dans le registre 14. Le résultat du calcul du produit scalaire décrit à la formule [Math.1] correspond alors à la valeur prise par le registre 14 après coups d’horloge correspondant à la variation de l’indice de 0 à . Le résultat du calcul matriciel décrit par la formule [Math.2] peut quant à lui être obtenu au bout de coups d’horloge. La particularité du circuit numérique 10 selon l’invention est que le circuit de contrôle 15 permet de contrôler dynamiquement l’accumulateur 12 pour effectuer l’opération d’addition soit de façon exacte (ce qui est illustré par le symbole « + » dans les figures) soit de façon approximative (ce qui est illustré par le symbole « ~+ » dans les figures). Effectuer l’addition de façon approximative revient à effectuer l’addition avec un niveau prédéterminé de probabilité que le résultat de l’addition comporte une erreur. Plus particulièrement, le circuit de contrôle 15 est configuré pour contrôler l’accumulateur 12 de sorte à effectuer l’addition de façon approximative pour au moins une addition parmi les additions du calcul du produit scalaire (c’est-à-dire pour au moins un coup d’horloge parmi les coups d’horloge permettant le calcul du produit scalaire). Le coup d’horloge d’indice déclenche les deux opérations susmentionnées (le calcul du résultat de la multiplication , et l’addition du résultat de la multiplication avec la valeur courante du registre 14). Il convient toutefois de noter qu’il n’est pas essentiel que les coups d’horloge d’indice permettant le calcul du produit scalaire soient consécutifs. Autrement dit, il n’est pas indispensable que ces deux opérations soit effectuées pendant un unique coup d’horloge. Rien n’empêcherait par exemple d’effectuer la multiplication et l’addition sur deux coups d’horloge successifs et (au lieu de les effectuer sur un seul coup d’horloge ). Procéder ainsi ne constitue qu’une variante de l’invention. La FIG. 1 représente de façon générique un circuit numérique 10 selon l’invention. Le circuit numérique 10 peut être réalisé selon différents modes particuliers de réalisation. La FIG. 2 représente schématiquement un premier mode particulier de réalisation du circuit numérique 10 illustré à la FIG. 1 . Dans ce premier mode de réalisation, l’accumulateur 12 comporte à la fois un additionneur exact 18 et un additionneur approximatif 19. L’additionneur exact 18 est configuré spécifiquement pour calculer une addition de façon exacte. L’additionneur approximatif 19 est quant à lui configuré spécifiquement pour calculer une addition avec un niveau prédéterminé de probabilité d’erreur. L’additionneur exact 18 correspond à un additionneur classique. Lors de la conception du circuit numérique 10, l’additionneur exact 18 est synthétisé spécifiquement pour calculer une addition de façon exacte. Autrement dit, la netlist de l’additionneur exact 18 est optimisée pour s’assurer que le résultat d’une addition effectuée par l’additionneur exact 18 présente une probabilité d’erreur nulle ou négligeable dans des conditions normales d’utilisation du circuit numérique 10. Lors de la conception du circuit numérique 10, l’additionneur approximatif 19 est quant à lui synthétisé spécifiquement pour calculer une addition avec un niveau prédéterminé de probabilité d’erreur. Autrement dit, la netlist de l’additionneur approximatif 19 est modifiée pour s’assurer que le résultat d’une addition effectuée par l’additionneur approximatif 19 présente le niveau de probabilité d’erreur souhaité. L’additionneur 19 est ainsi approximé selon une approche « statique » (à la conception du circuit numérique 10). Différentes microarchitectures peuvent être envisagées pour concevoir l’additionneur approximatif 19. A titre d’exemple, la librairie « EvoApproxLib LITE » propose un grand nombre de circuits d’additionneurs approximatifs associés à différents niveaux de probabilité d’erreur. L’accumulateur 12 comporte en outre un multiplexeur 20. Pour chaque addition exécutée à un coup d’horloge d’indice , le multiplexeur 20 est configuré par le circuit de contrôle 15 pour sélectionner l’additionneur à utiliser parmi l’additionneur exact 18 et l’additionneur approximatif 19. Avec de telles dispositions, le circuit de contrôle 15 est configuré pour contrôler l’accumulateur 12 de sorte à effectuer l’addition de façon approximative pour au moins une addition parmi les additions du calcul du produit scalaire (c’est-à-dire pour au moins un coup d’horloge parmi les coups d’horloge permettant le calcul du produit scalaire). De façon avantageuse, il est possible de contrôler dynamiquement, via le circuit de contrôle 15, le nombre d’additions devant être exécutées de façon approximative dans le calcul du produit scalaire. Autrement dit, il est possible de contrôler dynamiquement le nombre de coups d’horloge (parmi les coups d’horloge permettant de calculer le produit scalaire) correspondant à des additions devant être exécutées de façon approximative. De telles dispositions confèrent une certaine flexibilité sur le niveau de probabilité d’erreur souhaité pour le calcul du produit scalaire. En effet, plus le nombre d’additions exécutées de façon approximative est grand, et plus le niveau de probabilité d’erreur pour le calcul du produit scalaire est important. Il est par exemple possible de déterminer de façon empirique différents niveaux de probabilité d’erreur pour le calcul du produit scalaire en fonction de différentes valeurs du nombre d’additions exécutées de façon approximative au cours du calcul du produit scalaire. Il est alors ensuite possible de configurer le circuit de contrôle 15 pour déterminer le nombre d’additions devant être exécutées de façon approximative en fonction d’un niveau de probabilité d’erreur souhaité pour le calcul du produit scalaire. Il est également envisageable de contrôler dynamiquement, via le circuit de contrôle 15, quelles additions doivent être effectuées de façon approximative dans le calcul du produit scalaire. Autrement dit, il est envisageable de déterminer un nombre compris entre 1 et et des entiers différents , …, avec pour tout indice compris entre 0 et , de telle sorte que le multiplexeur 20 soit configuré par le circuit de contrôle 15 pour sélectionner l’additionneur approximatif 19 sur les coups d’horloge d’indice , et pour sélectionner l’additionneur exact 18 sur les autres coups d’horloge. De telles dispositions permettent d’ajouter de l’entropie dans la distribution d’erreur obtenue. En particulier, il est envisageable de changer l’addition ou les additions exécutées de façon approximative à chaque nouveau calcul de produit scalaire (autrement dit, il est envisageable de faire varier l’ensemble des entiers à chaque nouveau calcul de produit scalaire). Cet ajout d’entropie est particulièrement intéressant dans les applications de cryptographie. Il est également envisageable de configurer le circuit de contrôle 15 pour sélectionner de façon aléatoire les additions devant être effectuées de façon approximative dans le calcul du produit scalaire. La FIG. 3 représente schématiquement un deuxième mode particulier de réalisation du circuit numérique 10 illustré à la FIG. 1 . Dans ce deuxième mode de réalisation, l’accumulateur 12 comporte un unique additionneur 16 implémenté selon la technologie de fabrication de composants électroniques « silicium sur isolant totalement déserté » ou FDSOI (acronyme anglais pour « Fully Depleted Silicium On Insulator »). La technologie FDSOI est connue pour surmonter certaines limitations de la technologie « CMOS sur substrat massif » (ou « CMOS bulk » en anglais, CMOS est l’acronyme anglais de « Complementary Metal-Oxyde Semiconductor »). En particulier, la technologie FDSOI offre de meilleures performances (notamment en termes de temps de transition et de fiabilité) et une consommation énergétique réduite par rapport à la technologie « CMOS bulk » (notamment, les transistors FDSOI peuvent opérer à des tensions plus faibles). La FIG. 4 représente schématiquement un transistor 30 FDSOI. Tel qu’illustré sur la FIG. 4 , le transistor FDSOI comporte un substrat 36 en silicium sur lequel est placé une couche 34 d’oxyde de silicium isolant ultra-mince. Le transistor 30 FDSOI comporte également, au-dessus de la couche 34 d’oxyde de silicium isolant, une source 31, un drain 32 et une grille 33. Une fine couche de silicium située au-dessus de la couche d’oxyde de silicium isolant forme un canal 35 homogène sous la grille 33. Comme la couche du canal 35 est très fine, aucun dopage du canal n’est nécessaire (c’est la raison pour laquelle on parle de transistor « totalement déserté »). Tel qu’illustré sur la FIG. 4 , le transistor 30 FDSOI peut également comporter des tranchées isolantes 37. Une caractéristique du transistor 30 FDSOI est que ses performances peuvent être modifiées en appliquant une tension V BB au niveau du substrat 36 formant sa face arrière. On parle alors de « polarisation de face arrière » ou de « polarisation de grille arrière ». La tension V BB est appelée « tension de grille arrière » (« back-gate voltage » en anglais) ou « polarisation de substrat » (« body bias voltage » en anglais). Cette polarisation du substrat 36 permet de faire varier la tension de seuil du transistor 30. La variation de la tension de seuil du transistor entraine un changement des performances du transistor en termes de rapidité, fiabilité et consommation énergétique. Comme on le verra plus en détail par la suite, on distingue les transistors de type « Regular Well » et les transistors de type « Flip Well ». Un transistor de type « Regular Well » est basé sur une structure CMOS avec un caisson P sous le NMOS et un caisson N sous le PMOS, et il est optimisé pour le mode RBB (« Reverse Body Bias ») qui permet de privilégier des tensions de seuil élevées (transistor de type RVT). Un transistor de type « Flip Well » est basé sur une structure CMOS avec un caisson N sous le NMOS et un caisson P sous le PMOS), et il est optimisé pour le mode FBB (« Forward Body Bias ») qui permet de privilégier des tensions de seuil basses (transistor de type LVT, pour « Low Voltage Threshold »). La tension de seuil des transistors RVT est plus haute que celle des transistors LVT. La polarisation du substrat 36 crée une « grille arrière » enfouie sous le canal 35. Le transistor agit alors comme un transistor à double grille. Cette caractéristique permet d'appliquer des tensions différentes à la grille 33 supérieure et à la grille arrière. Cette polarisation du substrat 36 est dénommée « body bias » en anglais. En appliquant cette polarisation selon des règles connues de l’homme de l’art (respect des conditions de polarisation entre le caisson N et le caisson P), on augmente la tension de seuil d’un transistor RVT (mode RBB), et on baisse la tension de seuil d’un transistor LVT (mode FBB). La couche 34 d’oxyde de silicium isolant limite les fuites de courant dans le substrat 36, c’est la raison pour laquelle il est possible d’appliquer au substrat 36 du transistor 30 FDSOI une tension de grille arrière relativement élevée (cela n’est pas le cas avec la technologie « bulk »). Lors de la conception du circuit numérique 10, et tel qu’illustré sur la figure 6, une région 21 particulière de l’additionneur est prédéterminée. Cette région 21 prédéterminée regroupe des transistors 30 FDSOI formant des portes logiques qui contrôlent un nombre prédéterminé de bits de poids faible du résultat de l’addition, étant un nombre entier au moins égal à un. Dans l’exemple illustré sur la figure 6, on considère un additionneur 8-bits (autrement dit l’additionneur 16 est configuré pour additionner un nombre codé sur huit bits avec un autre nombre codé sur huit bits, et pour fournir le résultat sous la forme d’un nombre codé sur huit bits également), et le nombre est égal à un (autrement dit, seul le bit de poids le plus faible du résultat est impacté par la région 21 prédéterminée). Tel qu’illustré sur la FIG. 6 , la région 21 prédéterminée est connectée à une source de tension 17 permettant d’appliquer une tension de grille arrière aux transistors 30 FDSOI de la région 21. La valeur V BB de la tension de grille arrière peut être contrôlée dynamiquement par le circuit de contrôle 15. Les autres transistors qui implémentent l’additionneur 16 et qui ne font pas partie de la région 21 prédéterminée sont soumis à une tension de référence V REF . Tel qu’illustré sur la FIG. 3 , le circuit de contrôle 15 est configuré pour contrôler la valeur de tension de gille arrière appliquée à la région 21 prédéterminée. Plus particulièrement, le circuit de contrôle 15 est configuré pour appliquer par défaut la valeur de référence de tension de grille arrière V REF , et pour appliquer une valeur spécifique de tension de grille arrière V BB , différente de la valeur de référence (V REF ≠ V BB ), uniquement pendant l’exécution de l’addition ou des additions devant être effectuées de façon approximative. Le type de transistor (« Regular Well », « Flip Well ») et la valeur spécifique de tension de grille arrière V BB peuvent être choisis de telle sorte que la tension de seuil des transistors 30 FDSOI de la région 21 prédéterminée est plus élevée avec une tension de grille arrière égale à V BB qu’avec tension de grille arrière égale à V REF . Avec de telles dispositions, le fait d’appliquer la valeur spécifique V BB de tension de grille arrière entraîne une dégradation des performances des transistors 30 FDSOI de la région 21 prédéterminée. Ainsi, pour les cycles d’horloge où la valeur spécifique V BB de tension de grille arrière est appliquée, l’additionneur 16 se comporte comme un additionneur approximatif. En revanche, pour les cycles d’horloge où la valeur de référence V REF de tension de grille arrière est appliquée, l’additionneur 16 se comporte comme un additionneur exact. On peut considérer par exemple que V REF est à 0V. Il existe deux façons d’appliquer une polarisation au substrat 36 : le mode dit de « polarisation avant » (FBB, de l’acronyme anglais « Forward Body Bias ») et le mode dit de « polarisation inversé » (RBB, de l’acronyme anglais « Reverse Body Bias »). De façon générale, pour un transistor NMOS, si V BB est positif, cela correspond à une « polarisation avant » (FBB), et donc à une amélioration des performances du transistor. En revanche si V BB est négatif, cela correspond à une « polarisation inverse » (RBB), et donc à une dégradation des performances du transistor. Pour un transistor de type PMOS, c’est l’inverse : si V BB est positif, cela correspond à une « polarisation inverse » (RBB), et si V BB est négatif cela correspond à une « polarisation avant » (FBB). Une structure CMOS comporte à la fois un transistor NMOS et un transistor PMOS. Une structure CMOS en technologie FDSOI peut être optimisée pour l’un ou pour l’autre des modes FBB et RBB. Dans la présente invention, il est avantageux que les transistors 30 FDSOI soient agencés en structures CMOS optimisées pour le mode RBB. La FIG. 5 représente schématiquement une structure CMOS FDSOI optimisée pour le mode RBB. La structure CMOS comporte un transistor 30a FDSOI de type NMOS sur un puits P et un transistor 30b FDSOI de type PMOS sur un puits N. Ainsi, dans la structure CMOS illustré à la FIG. 5 , le substrat 36a du transistor 30a NMOS est de type P (on parle alors de « puits » de type P ou de « caisson » de type P). La source 31a et le drain 32a sont en revanche de type N. Le substrat 36b du transistor 30b PMOS est de type N (on parle alors de « puits » de type N ou de « caisson » de type N). La source 31b et le drain 32b sont en revanche de type P. Cela correspond à un circuit dit « traditionnel » (« Regular Well » dans la littérature anglo-saxonne) optimisé pour le mode RBB, c’est-à-dire permettant de privilégier des tensions de seuil élevées (RVT ou HVT). Il convient de noter toutefois que rien n’empêcherait d’utiliser des structures CMOS avec un NMOS sur puits N et un PMOS sur puits P (circuit nommé « Flip Well » dans la littérature anglo-saxonne). Un tel circuit est toutefois généralement optimisé pour le mode FBB, c’est-à-dire pour privilégier des tensions de seuil basses (LVT). Le deuxième mode de réalisation décrit en référence à la FIG. 3 correspond à une architecture particulièrement compacte (puisqu’elle comporte un unique additionneur). En outre, ce deuxième mode de réalisation offre un niveau de flexibilité accru sur la distribution d’erreur pouvant être obtenue. Il est en effet possible de configurer le circuit de contrôle 15 pour déterminer dynamiquement la valeur de tension de grille arrière à appliquer en fonction d’un niveau de probabilité d’erreur souhaité pour le calcul du produit scalaire. La tension de grille arrière permet de faire varier la tension de seuil des transistors 30 FDSOI de la région 21. Une tension de seuil plus élevée entraine une augmentation du temps de propagation des portes logiques implémentés par ces transistors, et par conséquent une perte de précision dans les calculs. Le graphique présenté à la FIG. 7 illustre la possibilité de contrôler le niveau de probabilité d’erreur en fonction de la tension de grille arrière V BB appliquée par la source de tension 17 dynamique. Ce graphique représente le niveau de probabilité d’erreur (valeur comprise entre 0 et 1), en fonction de la tension de grille arrière V BB (en Volt), dans le cas où un seul bit de poids faible du résultat de l’addition est impacté. On peut observer sur ce graphique que le niveau de probabilité d’erreur augmente avec la tension de grille arrière et tend vers une valeur limite de 0,5. Les mesures présentées dans le graphique de la FIG. 7 ont été obtenues sur un circuit numérique 10 similaire à celui décrit ci-avant en référence à la FIG. 3 . Le choix du nombre de bits de poids faible que l’on souhaite être impactés par le calcul approximatif, et donc indirectement la détermination de la région 21, participent également à la définition de la distribution d’erreur. Cet aspect est toutefois statique puisqu’il est défini à la conception du circuit numérique 10, et ne peut plus être changé par la suite. Ce qui a été mentionné précédemment pour le premier mode de réalisation au sujet de la possibilité de configurer le circuit de contrôle 15 pour contrôler dynamiquement quelles additions doivent être effectuées de façon approximative dans le calcul du produit scalaire s’applique également au deuxième mode de réalisation. La description ci-avant illustre clairement que, par ses différentes caractéristiques et leurs avantages, la présente invention atteint les objectifs fixés. En particulier, le circuit numérique 10 selon l’invention permet d’implémenter une primitive cryptographique pour un algorithme de type LWE, sans avoir à utiliser de composant matériel de type TRNG ou PRNG, et tout en gardant une architecture particulièrement simple, compacte et peu gourmande en consommation énergétique. La solution proposée offre en outre une bonne flexibilité et une bonne précision sur la probabilité d’erreur pouvant être obtenue pour le calcul du produit scalaire, ainsi que la possibilité d’introduire de l’entropie dans la distribution d’erreur obtenue. L’invention a été décrite notamment pour une application en cryptographie post-quantique. Rien n’exclut cependant d’envisager d’utiliser le circuit numérique 10 selon l’invention pour d’autres applications, afin notamment de réduire la consommation énergétique du système. Par exemple, le circuit numérique 10 peut être utilisé dans d’autres applications nécessitant des accélérateurs de calcul vectoriel, dans la mesure où ces applications sont résilientes à un certain degré d’approximation (par exemple pour implémenter des réseaux de neurones, notamment dans le cadre du traitement d’images). Le circuit numérique 10 selon l’invention offre alors une bonne flexibilité dans la mise en œuvre d’un compromis entre précision de calcul et consommation énergétique. Circuit numérique (10) pour calculer un produit scalaire entre deux vecteurs de dimension , étant un nombre entier au moins égal à deux, les deux vecteurs étant notés respectivement et ; le circuit numérique (10) comporte un multiplieur (11), un accumulateur (12) comportant au moins un additionneur (13) et un registre (14), ainsi qu’un circuit de contrôle (15) de l’accumulateur (12) ; le circuit numérique (10) est configuré pour être cadencé par une horloge, et à un coup d’horloge d’indice , étant un nombre entier variant entre 0 et : le multiplieur (11) est configuré pour calculer un résultat d’une multiplication des composantes d’indice des deux vecteurs, l’accumulateur (12) est configuré pour additionner le résultat de la multiplication avec une valeur courante du registre (14), et pour mémoriser un résultat de l’addition dans le registre (14) ; le circuit de contrôle (15) est configuré pour contrôler l’accumulateur (12) de sorte à effectuer l’addition de façon approximative, c’est-à-dire avec un niveau prédéterminé de probabilité que le résultat de l’addition comporte une erreur, pour au moins une addition parmi les additions du calcul du produit scalaire. Circuit numérique (10) selon la revendication 1, dans lequel : l’accumulateur (12) comporte un unique additionneur (16) implémenté selon la technologie « silicium sur isolant totalement déserté », FDSOI ; une région (21) prédéterminée de l’additionneur (16) regroupe des transistors (30) FDSOI formant des portes logiques qui contrôlent un nombre prédéterminé de bits de poids faible du résultat de l’addition, étant un nombre entier au moins égal à un ; ladite région (21) prédéterminée est connectée à une source de tension (17) permettant d’appliquer une tension de grille arrière aux transistors FDSOI de la région (21), la valeur de la tension de grille arrière pouvant être contrôlée dynamiquement par le circuit de contrôle (15), le circuit de contrôle (15) est configuré pour appliquer par défaut une valeur de référence de tension de grille arrière, et pour appliquer une valeur spécifique de tension de grille arrière, différente de la valeur de référence, uniquement pendant l’exécution de ladite au moins une addition devant être effectuée de façon approximative. Circuit numérique (10) selon la revendication 2 dans lequel le circuit de contrôle (15) est configuré pour déterminer dynamiquement la valeur spécifique de tension de grille arrière à appliquer en fonction d’un niveau de probabilité d’erreur souhaité pour le calcul du produit scalaire. Circuit numérique (10) selon l’une quelconque des revendications 2 ou 3 dans lequel les transistors (30) FDSOI sont agencés en structures CMOS comportant chacune un transistor (30a) NMOS sur un puits P et un transistor (30b) PMOS sur un puits N. Circuit numérique (10) selon la revendication 1, dans lequel : l’accumulateur (12) comporte un additionneur exact (18) synthétisé spécifiquement pour calculer une addition de façon exacte, un additionneur approximatif (19) synthétisé spécifiquement pour calculer une addition avec le niveau prédéterminé de probabilité d’erreur, et un multiplexeur (20) ; pour chaque addition exécutée à un coup d’horloge d’indice , le multiplexeur (20) est configuré par le circuit de contrôle (15) pour sélectionner l’additionneur à utiliser parmi l’additionneur exact (18) et l’additionneur approximatif (19). Circuit numérique (10) selon l’une quelconque des revendications 1 à 5 dans lequel ladite au moins une addition devant être exécutée de façon approximative, parmi les additions du calcul du produit scalaire, est différente à chaque nouveau calcul de produit scalaire. Circuit numérique (10) selon l’une quelconque des revendications 1 à 6 dans lequel ladite au moins une addition devant être exécutée de façon approximative dans le calcul du produit scalaire est choisie aléatoirement. Circuit numérique (10) selon l’une quelconque des revendications 1 à 7 dans lequel le nombre d’additions devant être exécutées de façon approximative dans le calcul du produit scalaire est contrôlé dynamiquement par le circuit de contrôle (15) en fonction d’un niveau de probabilité d’erreur souhaité pour le calcul du produit scalaire. Dispositif électronique mettant en œuvre un algorithme cryptographique basé sur une technologie d’ « apprentissage avec erreurs », LWE, ledit dispositif étant caractérisé en ce qu’il comporte au moins un circuit numérique (10) selon l’une quelconque des revendications 1 à 8.