FR 3138256 A1 20240126 FR 2207432 A 20220720 L’invention concerne un procédé (KEM) de transport d’un secret résistant aux attaques par ordinateur quantique. Un tel procédé de transport (KEM) conforme à l’invention consiste en des procédés respectivement de génération de paramètres généraux, de génération de clés secrètes et publiques, d’encapsulation et de décapsulation dudit secret à transporter. Un tel procédé de transport de secret est agencé pour être mis en œuvre par un système informatique (1) comportant une pluralité de dispositifs électroniques (10-1, 10-2, 10-g) cherchant à établir un canal de communication sécurisé exploitant ledit secret transporté pour établir une clé de session. L’invention concerne en outre un tel système informatique (1) et tout programme informatique dont les instructions de programme, une fois inscrites dans des mémoires (14) de la pluralité de dispositifs électroniques du système (1), provoquent la mise en œuvre d’un procédé (KEM) de transport d’un secret selon l’invention. Figure à publier avec l’abrégé : Fig 1 PROCEDE D’ECHANGE D’UN SECRET RESISTANT AUX ATTAQUES PAR ORDINATEUR QUANTIQUE, SYSTEME INFORMATIQUE ET PROGRAMME D'ORDINATEUR ASSOCIES L'invention se rapporte au domaine de la cryptologie. Plus précisément, l'invention concerne des procédés de transport d’un secret résistants aux attaques par ordinateur quantique, de tels procédés consistant en des procédés de génération de paramètres, de génération de clés, d’encapsulation (chiffrement) de clés et de décapsulation (déchiffrement) de clés chiffrées. L’invention concerne en outre tout système informatique comportant une pluralité de dispositifs électroniques comportant chacun une unité centrale de traitement commandant par des signaux une mémoire, ainsi qu'une unité d'entrée et une unité de sortie, mettant en œuvre l'un quelconque desdits procédés de génération de paramètres, de génération de clés, d’encapsulation (chiffrement) de clés et de décapsulation (déchiffrement) de clés chiffrées. L’un des domaines d’application préféré d’une telle invention concernent les communications sécurisées entre des dispositifs électroniques d’un tel système informatique, ces derniers exploitant une clé ou plus généralement un secret échangé via un canal de communication non sécurisé et résistant aux attaques par ordinateur quantique grâce à la mise en œuvre desdits procédés de génération de paramètres, de génération de clés, d’encapsulation (chiffrement) de clés et de décapsulation (déchiffrement) de clés chiffrées par ledit système informatique. La description claire de l’invention nécessite l’introduction des notations ainsi que le rappel des notions connues à l’homme de l’art suivantes : la « cryptographie à clé publique » ; la « cryptographie post-quantique » ; le « problème du sac-à-dos (également désigné par l’acronyme SàD) » ; le recours à l’algorithme « LLL » afin de répartir l’information ; les « mécanismes d'encapsulation de clé » également désignés par l’acronyme « KEM ». A moins qu’il ne soit spécifié autrement, des lettres minuscules portant une flèche désignent des vecteurs. Par exemple désigne un vecteur de éléments . Les opérations scalaires sur des vecteurs doivent être interprétées comme agissant sur les composantes des vecteurs. Par exemple, les éléments du vecteur sont définis par la relation alors que les éléments de sont pour . Le produit scalaire usuel sera noté . L’opérateur « impliquant des vecteurs de dimension supérieure à 1 sera noté }, où est un vecteur à coordonnées et est un vecteur à coordonnées ayant chacune coordonnées, à savoir : } où } . Ainsi : D’autres notations usuelles et utiles utilisées dans le présent document sont données dans la table suivante : Notation Signification Identité mathématique Définition de relation Assignation d’une valeur à une variable Assigner à une valeur prise aléatoirement dans l’ensemble Toute fonction à sens unique (non spécifiée) Toute fonction de hachage cryptographique (non spécifiée) Générateur pseudo-aléatoire initialisé avec une graine égale à Complexité en temps de la fonction Complexité ignorant des facteurs logarithmiques L’ensemble des entiers naturels L’ensemble des entiers Anneau des entiers modulo 0 L’ensemble des nombres premiers de taille bits La concaténation des nombres binaires et . Ou exclusif des nombres binaires et . L'invention appartient à la catégorie des procédés cryptographiques asymétriques dits également « procédés cryptographiques à clé publique ». Il s'agit d'algorithmes et de protocoles permettant une communication sécurisée entre l'entité qui chiffre le message, dit expéditeur et généralement désigné par la référence dans le présent document et, l'entité qui le déchiffre, dit destinataire et généralement désigné par la référence dans le présent document. Initialement et ne partagent pas de clé secrète commune. La cryptographie asymétrique définit deux clés : une clé publique connue de tous et une clé privée gardée confidentielle par le destinataire . L'algorithme de chiffrement est supposé accessible à tous les expéditeurs potentiels souhaitant communiquer avec le destinataire . L'algorithme de déchiffrement est également supposé accessible à tous et public. Un programme informatique dont les instructions de programme provoquent la mise en œuvre des algorithmes et par tout ordinateur ou dispositif électronique agencé pour enregistrer ledit programme informatique dans une mémoire, peut être publié sans crainte pour la sécurité de ladite communication. Ainsi, toute entité souhaitant envoyer un message de manière chiffrée à un destinataire déterminé peut utiliser la clé publique du destinataire afin de créer un chiffré à l'intention de . Seul sera capable de déchiffrer . Dans un algorithme de chiffrement à clé publique, l’expéditeur chiffre le message à l’aide dudit algorithme de chiffrement pour obtenir un chiffré , à l’aide de ladite clé publique dudit destinataire . Réciproquement, le destinataire du message , déchiffre le chiffré en appliquant ledit algorithme de déchiffrement . Ce dernier est tel que où est la clé secrète liée à la clé publique détenue par ledit destinataire . Lesdites clés publique et secrète sont générées à l’aide d’un algorithme probabiliste dit « algorithme de génération de paramètres » et d’un algorithme probabiliste dit « algorithme de génération de clés » dont il sera question par la suite. Parfois, et tel est le cas dans la présente invention, les algorithmes de génération de paramètres et de génération de clés sont fusionnés en un seul algorithme. Ainsi, l’identité fondamentale du chiffrement asymétrique est . Par exemple, un algorithme de chiffrement à clé publique célèbre est l’algorithme dit RSA décrit dans le brevet américain U.S. 4,405,829 et dans la publication associée R. L. Rivest, A. Shamir, et L. M. Adleman, « A Method for Obtaining Digital Signatures and Public-key CryptoSystems », Communications of the ACM, volume 21, n° 2, pages 120 à 126, 1978. On connaît également des algorithmes utilisant des courbes elliptiques (par exemple tels que le divulgue l'article N. Koblitz, « Elliptic-Curve Cryptosystems », Mathematics of Computation, volume n° 48, pages 203 à 209, 1987, ou l'article de V. Miller intitulé « Use of Elliptic Curves in Cryptography », CRYPTO 85, 1985) ou encore l’échange de clés Diffie-Hellman décrit dans le brevet américain U.S. 4,200,770. Ces algorithmes ont l'inconvénient de nécessiter des calculs modulaires très lourds mais ils ont surtout l’inconvénient de ne pas résister aux attaques menées à l'aide d'un équipement d'un nouveau type : les ordinateurs quantiques. L'informatique quantique a émergé au début des années 1980. Plutôt que de se cantonner aux limites des circuits électroniques et de l'électricité, l'informatique quantique fonctionne selon les principes de la physique quantique, raison pour laquelle elle s'avère capable de traiter si efficacement des problèmes mathématiques très complexes. Elle pourrait un jour réaliser des exploits dont l'informatique classique se révèle tout bonnement incapable. L'évolution des ordinateurs quantiques s'est montrée lente, mais les choses s'accélèrent désormais grâce aux efforts d’académiques et d’industriels visant à normaliser des procédés de chiffrement résistant aux attaques quantiques. La plupart des techniques de chiffrement à clé publique actuelles repose sur des algorithmes qui intègrent des problèmes difficiles issus de la théorie des nombres, comme la factorisation ou le calcul du logarithme discret. Conçu en 1976, le chiffrement RSA précédemment évoqué constitue le précurseur de presque tous les schémas de chiffrement modernes, selon lequel chaque destinataire dispose d'une clé publique et d'une clé privée . Pour envoyer un message confidentiel à ce destinataire , les données dudit message sont codées sous la forme d'un grand nombre entier et brouillées à l'aide de la clé publique correspondante à la clé privée détenue par ledit destinataire à qui l'expéditeur souhaite communiquer ledit message , pour former un chiffré . Le destinataire qui reçoit ledit chiffré peut ensuite déchiffrer ce dernier grâce à sa clé privée . Dans le chiffrement RSA, la clé publique se présente sous la forme d'un grand nombre composite , et d’un exposant , souvent égal à trois. La clé privée se caractérise par les facteurs premiers de . Grâce à des algorithmes spécifiques connus de l'homme de l'art (comme par exemple, l'algorithme de Schor décrit dans le document P.W. Schor (1994). « Algorithms for quantum computation: discrete logarithms and factoring ». Proceedings 35th Annual Symposium on Foundations of Computer Science. IEEE Comput. Soc. Press: pp. 124–134), un ordinateur quantique disposant de suffisamment de -bits (« bits quantiques ») pourrait factoriser des grands nombres. Dans le cadre du chiffrement RSA, un adversaire possédant un ordinateur quantique pourrait partir d'une clé publique , factoriser afin d'obtenir la clé privée et ainsi lire le contenu de n'importe quel chiffré . Cette capacité à factoriser les nombres anéantit pratiquement l'intégralité de la cryptographie moderne. Les répercussions liées à cet outil d'attaque se révèlent considérables, car dans le contexte de l’Internet, la sécurité omniprésente dans nos façons de communiquer et de partager les informations en ligne repose sur le chiffrement à clé publique. Ainsi, si un adversaire parvenait à disposer d'un ordinateur quantique, il pourrait théoriquement engendrer un chaos total. Il serait à même de créer des certificats de chiffrement et de se faire passer pour une banque afin de voler des fonds, perturber la technologie des crypto-monnaies, s'introduire dans les portefeuilles numériques, ainsi qu'espionner des communications confidentielles et les déchiffrer. Un algorithme de chiffrement capable de résister à un adversaire muni d’un ordinateur quantique appartient à la catégorie des « algorithmes post-quantiques ». Ainsi, un objectif important de la présente invention est d'offrir un procédé de chiffrement post-quantique qui résiste aux attaques menées à l'aide d'ordinateurs quantiques. Il est intellectuellement séduisant de baser un algorithme de cryptographie à clé publique sur le problème dit « du sac à dos » ci-après désigné par l’acronyme SàD. En effet, ce problème est réputé très difficile à résoudre. Il fait partie de la classe des problèmes les plus difficiles à résoudre avec un ordinateur : les problèmes NP-complets. Schématiquement un tel problème revient virtuellement à choisir des objets parmi une pluralité d’objets de poids éventuellement distincts pour emplir un sac à dos de sorte que ce dernier soit d’un poids déterminé une fois chargé. Sous sa forme la plus basique dite « décisionnelle », le problème du SàD consiste à dire si un entier-cible peut être exprimé comme la somme d'un sous-ensemble d'un ensemble d’entiers donné . En d'autres termes, étant données comme entrées un ensemble d'entiers positifs et une cible , le problème du SàD décisionnel consiste à dire s’il existe ou non une séquence de bits satisfaisant Malgré son apparente simplicité, le problème décisionnel du SàD est NP-complet comme expliqué dans le document M. R. Garey et D. S. Johnson, « Computers and Intractability: A Guide to the Theory of NP-Completeness » , W. H. Freeman,1979, ISBN 0-7167-1044-7. Cette propriété rend le problème du SàD particulièrement intéressant pour les constructions cryptographiques. Effectivement, l'art antérieur en cryptographie utilisa le SàD à des telles fins. Le problème du SàD existe également dans une version dite « calculatoire » qui consiste non seulement à dire s’il existe une séquence de bits mais également à la retrouver (découvrir) explicitement. Historiquement, Merkle et Hellman, proposèrent (cf. M. R. Garey et D. S. Johnson, « Computers and Intractability: A Guide to the Theory of NP-Completeness », W. H. Freeman,1979, ISBN 0-7167-1044-7) l'un des premiers cryptosystèmes basés sur le problème du SàD calculatoire. Plusieurs autres cryptosystèmes à base de SàD furent proposés durant des décennies mais, malheureusement, de très nombreux de ces cryptosystèmes furent cassés, comme expliqué dans le document A.M. Odlyzko, « The rise and fall of knapsack cryptosystems », Cryptology and computational number theory, vol. 42, pp. 75-88, 1990. En effet, alors que des instances aléatoires du problème du SàD sont difficiles à résoudre, la nécessité de pouvoir déchiffrer (c’est-à-dire, à inverser le procédé de sommation) force les concepteurs à introduire dans les SàDs ainsi utilisés des structures mathématiques spécifique. C'est l'introduction de ces structures spécifiques, qui différencie les SàDs cryptographiques de SàDs aléatoires, qui permit, in fine , de les casser. Un paramètre très important permettant de contrôler la difficulté de résoudre une instance de SàD est sa densité. La densité est définie comme le ratio entre et la taille du plus grand des . Plus précisément, peut être noté . Lorsque , il existe des algorithmes rapides, dits « en temps polynomial », permettant de résoudre le SàD, voir le document M.J. Coster, A. Joux, B.A. LaMacchia, A.M. Odlyzko, C-P. Schnorr et J. Stern, « Improved Low-Density Subset Sum Algorithms, Computational Complexity » , vol. 2, pp. 111-128,1992. En particulier des instances aléatoires de SàD peuvent être reformulées comme un problème d'approximation du vecteur le plus court dans un réseau comme le stipulent les documents de J. C. Lagarias et A.M. Odlyzko, « Solving Low-Density Subset Sum Problems », J. ACM, vol. 32, n° 1, pp. 229-246, 1985 » et de A.M. Frieze, « On the Lagarias-Odlyzko Algorithm for the Subset Sum Problem », SIAM J. Comput., vol. 15, n° 2, pp. 536--539, 1986. Lorsque la densité est faible ( , comme expliqué dans le document de M.J. Coster, A. Joux, B.A. LaMacchia, A.M. Odlyzko, C-P. Schnorr et J. Stern, « Improved Low-Density Subset Sum Algorithms, Computational Complexity », vol. 2, pp. 111-128,1992), des algorithmes efficaces trouvant de tels vecteurs courts existent. Ces algorithmes permettent alors de résoudre le SàD, comme expliqué dans différents documents parmi lesquels : V. Lyubashevsky, « The Parity Problem in the Presence of Noise, Decoding Random Linear Codes, and the Subset Sum Problem, Approximation, Randomization and Combinatorial Optimization, Algorithms and Techniques » , 8th International Workshop on Approximation Algorithms for Combinatorial Optimization Problems, APPROX 2005 and 9th International Workshop on Randomization and Computation, RANDOM 2005, Berkeley, CA, USA, August 22-24, 2005, Proceedings, pp. 378-389, 2005 ; Y. Desmedt, « Knapsack Cryptographic Schemes », Encyclopedia of Cryptography and Security, 2nd Ed, pp. 695-704, 2011 ; E.F. Brickell, « Solving Low Density Knapsacks » , Advances in Cryptology, Proceedings of CRYPTO'83, Santa Barbara, California, USA, August 21-24, 1983, pp. 25-37, 1983. Dans la mesure où des densités supérieures à 1 ne garantissent pas qu'il existe une solution unique au problème du SàD, la plage des densités utilisable pour la construction de SàDs à la fois inversibles et à haute densité se trouve dans l'intervalle des valeurs relativement réduit (cf. R. Impagliazzo et M. Naor, « Efficient Cryptographic Schemes Provably as Secure as Subset Sum », J. Cryptology, vol. 9, n° 4, pp. 199-216, 1996). Cet intervalle ne laisse que peu de latitude à la conception de cryptosystèmes mais présente un avantage du point de vue de la sécurité car les seuls algorithmes permettant de résoudre des SàDs dans cet intervalle sont de complexité exponentielle (comme expliqué dans les documents suivants N. Howgrave-Graham et A. Joux, « New Generic Algorithms for Hard Knapsacks », Advances in Cryptology - EUROCRYPT 2010, 29th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Monaco / French Riviera, May 30 - June 3, 2010. Proceedings, pp. 235-256, 2010 ou encore A. Becker, J-S. Coron et A. Joux, « Improved Generic Algorithms for Hard Knapsacks », Advances in Cryptology - EUROCRYPT 2011 - 30th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Tallinn, Estonia, May 15-19, 2011. Proceedings, pp. 364-385, 2011) requérant un temps d’exécution qui croît en . L’invention a justement pour objet de proposer un nouveau procédé à base de tels SàDs denses. Enfin, les cryptosystèmes post-quantiques à base de réseaux tels que ceux décrits dans les documents cités ci-après, reposent également sur la difficulté de la résolution de SàDs. Nous pouvons mentionner les documents suivants décrivant de tels procédés de chiffrement : M. Ajtai et C. Dwork, « A Public-Key Cryptosystem with Worst-Case/Average-Case Equivalence », Proceedings of the Twenty-Ninth Annual ACM Symposium on the Theory of Computing, El Paso, Texas, USA, May 4-6, 1997, pp. 284-293, 1997 ; O. Regev, « On lattices, learning with errors, random linear codes, and cryptography », J. ACM, vol. 56, n° 6, pp. 34:1-34:40, 2009 ; O. Regev, « New lattice-based cryptographic constructions », J. ACM, vol. 51, n°. 6, pp. 899-942, 2004 ; Ch. Peikert, « Public-key cryptosystems from the worst-case shortest vector problem: extended abstract », Proceedings of the 41st Annual {ACM} Symposium on Theory of Computing, STOC 2009, Bethesda, MD, USA, May 31 - June 2, 2009, pp. 333-342, 2009. V. Lyubashevsky, A. Palacio et G. Segev, « Public-Key Cryptographic Primitives Provably as Secure as Subset Sum », Theory of Cryptography, 7th Theory of Cryptography Conference, TCC 2010, Zurich, Switzerland, February 9-11, 2010. Proceedings, pp. 382-400, 2010. Un procédé permettant de répartir l’information dans une équation modulaire est l’algorithme dit « LLL », publié par A.K. Lenstra, HW. Lenstra, et L. Lovász, (1982) « Factoring polynomials with rational coefficients » - Mathematische Annalen. 261 (4): 515–534. Soient une collection de inconnues entières. Soit un module et soient . Considérons l’équation de SàD . Il est connu à l’homme de l’art que ledit algorithme LLL permet de retrouver dès lors que ). En particulier, l’algorithme LLL peut être adapté afin de fournir toute répartition inégale de tailles entre les dès lors que la taille de est égale à la somme des tailles des . Une analyse théorique détaillée de l’algorithme LLL et de la manière dont LLL peut être mis à profit afin d’effectuer une telle répartition de l’information est donnée dans le document de Ph.Q. Nguyen et J. Stern, « The Two Faces of Lattices in Cryptology », Cryptography and Lattices, International Conference, CaLC 2001, Providence, RI, USA, March 29-30, 2001, Revised Papers, pp. 146-180, 2001 » et au chapitre 13 du document de A. Joux, « Algorithmic cryptanalysis », 2009, CRC Press, dans le contexte des SàDs généralisés. Un exemple typique de l’emploi de cette technique de répartition de l’information dans un contexte de cryptanalyse peut être trouvé dans le document de M. Beunardeau, A. Connolly, R. Géraud et D. Naccache, « On the Hardness of the Mersenne Low Hamming Ratio Assumption », Cryptology ePrint Archive, Report 2017/522, 2017, https://ia.cr/2017/522. Par exemple, il est possible de répartir l’information dans l’équation modulaire en retrouvant une solution où l’une des inconnues est de taille bits et l’autre de taille bits comme l’illustre le script suivant en langage Mathematica (logiciel de calcul formel édité par Wolfram Research) requérant de répartir l’information selon un ratio 20%-80%. LLL := Function[{n, A, B, q}, Take[LatticeReduce[{{ n^2 , 1, 0, 0, 0, 1 }, { n^2 A, 0, 1, 0, 0, Floor[n/2^(2 q)]}, { n^3, 0, 0, 0, 0, 0}, { n^2 B, 0, 0, n^2 , 1, 0}}][[4]], {2, 3}]]; {n, A, B} = {1022237686736673601670114674799, 1132435774382335446239287364640, 1138052122014831676258469648193}; Print[{{y, x} = LLL[n, A, B, 20], Mod[y + A x + B, n] == 0, N[Log[2, Abs[{x, y, n}]]]}] Ce script imprime effectivement : {{-314929374373641319630381,822627},True,{19.6499,78.0594,99.6896}} En cryptologie, un mécanisme d'encapsulation de clé ou KEM (acronyme anglo-saxon de « Key Encapsulation Mechanism », parfois également appelé « transport de clé ») est un protocole permettant de transmettre de manière sûre une clé de session au destinataire au moyen d'un canal non sécurisé. L'encapsulation d’une telle clé est l'une des composantes d'un schéma de cryptographie hybride, l'autre étant l'encapsulation de données (au moyen de la clé ainsi transmise). L'encapsulation sert la même fonction qu'un protocole de transport de clés, à la différence près que la clé est ici entièrement générée par l'expéditeur , ce qui permet entre autres de commencer à transmettre les données chiffrées à directement avec la clé encapsulée . Parmi les mécanismes d'encapsulation standardisés par la norme ISO/IEC 18033-26, connue à l’homme de l’art, on compte RSA-OAEP et RSA-KEM. En règle générale, le mécanisme d'encapsulation de clé consiste à chiffrer une clé aléatoire par un deuxième dispositif électronique d’un système informatique, au moyen d'une clé publique dédiée à un premier dispositif électronique destinataire . Le chiffré est transmis audit premier dispositif électronique , ce dernier se chargeant de déchiffrer ledit chiffré au moyen de sa clé privée . L’expéditeur et le destinataire possèdent alors un même secret partagé , permettant une communication sécurisée. Ainsi, tout chiffrement à clé publique donne immédiatement un mécanisme d'encapsulation de clé et inversement. En pratique, il est également nécessaire de protéger la clé encapsulée contre des manipulations, par exemple en lui adjoignant une redondance ou un code d'authentification. Nous considérons le scenario suivant dans lequel un expéditeur génère une clé encapsulée et l’envoie à un destinataire . Un KEM se traduit par quatre processus successifs, respectivement de (1) génération de paramètres généraux, (2) de génération des clés secrète et publique du destinataire , cette dernière étant publiée, (3) d’encapsulation puis de transmission par l’expéditeur (à partir desdits paramètres généraux par et de la clé publique pk du destinataire de la clé ainsi encapsulée à l’attention du destinataire , et (4) de décapsulation ou de récupération de cette dernière par ledit destinataire . Ces quatre processus successifs, qui seront décrits ultérieurement sous la forme des procédés 110, 120, 130 et 140 en lien avec les figures 2 à 5, mettent respectivement en œuvre quatre algorithmes que nous pouvons désigner par les termes , , , , comme l’indique la notation et consistent en la séquence d’étapes suivante : le destinataire génère par exemple des paramètres généraux, notés , nécessaires à l’opération du KEM, comme le résume la relation ; ledit destinataire génère une clé privée et une clé publique publiée, comme le résume la relation ; de son côté, l’expéditeur utilise et pour produire une clé qu’il conserve confidentielle et un chiffré encapsulant ladite clé secrète à transmettre au destinataire , comme le résume la relation ; à l’issue de cette étape, le chiffré est adressé au destinataire ; ledit destinataire réceptionne le chiffré et récupère la clé encapsulée dans ce dernier, comme le résume la relation en mettant en œuvre l’algorithme de décapsulation ; si ladite étape de décapsulation n’a pas réussi, l’algorithme retourne éventuellement un message « erreur » A la fin de cette séquence, et partagent la même clé de session secrète . Parmi les nombreux avantages apportés par la présente invention, nous pouvons mentionner que : l'information que chercherait à tirer tout éventuel attaquant à partir de la clé publique est réduite autant que possible. En effet, l'invention garde caché le module modulo lequel les calculs de SàD sont effectués. Ce faisant, il est raisonnablement conjecturé que l’invention préserve le cryptosystème proposé des attaques à base de réseau qui ciblent les SàD modulaires ; un KEM selon l’invention résiste aux attaques quantiques car ledit KEM ne repose ni sur le problème de la factorisation, ni sur le problème du logarithme discret, tous deux vulnérables aux attaques quantiques ; un KEM selon l’invention est particulièrement optimisé et performant puisque les algorithmes mis en œuvre dans la cadre de l’invention nécessitent peu d’opérations pour mémoriser et exécuter les algorithmes et alliant ainsi hautes performances d’exécution et préservation des capacité de stockage des équipements mettant en œuvre le KEM ; de plus, le nombre d’instructions du code nécessaire à la réalisation de l’invention de manière logicielle ou le nombre de portes logiques nécessaires à la réalisation de l’invention de manière matérielle est très faible ; la mémoire vive nécessaire à l’exécution desdits algorithmes et est également faible au regard de l’art antérieur préservant ainsi également les ressources desdits équipements mettant en œuvre un KEM selon l’invention ; la bande passante nécessaires aux échanges entre équipements mettant en œuvre un KEM selon l’invention est considérablement augmentée au regard de l’art antérieur, puisque pour échanger de manière sécurisée une clé de bits, un KEM selon l’invention requiert une transmission maximale de bits, là où les algorithmes classiques requièrent , augmentant ainsi encore les performances dudit KEM selon l’invention par rapport à l’art antérieur ; il convient de noter qu’un KEM selon l’un des modes de réalisation de l’invention permet la transmission de bits de clé au lieu de , où, typiquement . selon des modes de réalisation préférés, l’invention prévoit également de pouvoir compresser la clé publique et/ou la clé privée , de sorte que soient préservées davantage encore les ressources matérielles nécessaires à la mise en œuvre d’un tel KEM. Du point de vue théorique et pratique, un grand avantage de l’invention réside dans le fait que le paramètre (dont il sera question plus tard) reste secret. Ainsi, un adversaire ne fait pas face à un problème de SàD modulaire mais à un problème de SàD sur les entiers, ce qui est bien plus difficile. A cette fin, l’invention prévoit tout d’abord un procédé de transport d’un secret résistant aux attaques par ordinateur quantique, ledit procédé étant mis en œuvre par un système informatique comportant un premier et un deuxième dispositifs électroniques, lesdits premier et deuxième dispositifs électroniques comportant chacun une unité de traitement coopérant avec une mémoire de données et des moyens de communication avec le monde extérieur, ledit premier dispositif électronique étant conçu pour recevoir et exploiter le secret préalablement produit et encapsulé par ledit deuxième dispositif électronique , ledit procédé de transport comportant : une étape de génération et de publication de paramètres généraux dudit procédé de transport mise en œuvre par le premier dispositif électronique ; une étape de génération d’un couple de clés secrète et publique, ainsi que de publication de ladite clé publique produite, ladite étape étant mise en œuvre par le premier dispositif électronique , ledit couple de clés secrète et publique étant produit à partir desdits paramètres généraux et à partir d’une première donnée aléatoire produite par un générateur de nombres aléatoires dudit premier dispositif électronique ; une étape d’encapsulation du secret sous la forme d’un chiffré et de transmission de ce dernier, ladite étape étant mise en œuvre par ledit deuxième dispositif électronique à partir desdits paramètres généraux , de la clé publique dudit premier dispositif électronique et d’une deuxième donnée aléatoire produite par le générateur de nombres aléatoires dudit deuxième dispositif électronique ; une étape de décapsulation dudit secret mise en œuvre par ledit premier dispositif électronique à partir dudit chiffré , desdits paramètres généraux et du couple de clés secrète et publique d’ores et déjà produit par le premier dispositif électronique . Pour résister à une attaque par ordinateur quantique, ladite deuxième donnée aléatoire sert à dériver un vecteur de entiers et en ce que l’étape d’encapsulation du secret sous la forme d’un chiffré et de transmission de ce dernier consiste à mettre en œuvre deux sommes ayant des mêmes indexes , le chiffré consistant en une première somme telle que et le secret consistant en une seconde somme, dite « somme miroir » telle que , ladite première somme étant calculée dans une première structure algébrique, ladite seconde somme étant calculée dans une deuxième structure algébrique et les vecteurs et étant extraits de la clé publique dudit premier dispositif électronique . L’invention prévoit différentes variantes selon lesquelles : lesdites première et deuxième structures algébriques sont l’anneau des entiers ; lesdites première et deuxième structures algébriques sont des corps finis ; ladite première structure algébrique est l’anneau des entiers et ladite seconde structure algébrique est un corps fini ; ladite première structure algébrique est un corps fini et ladite seconde structure algébrique est l’anneau des entiers . Selon un premier mode de réalisation d’un KEM conforme à l’invention sûr contre les attaques à clair choisi (CPA-sûr) : l'étape de génération et de publication de paramètres généraux consiste en la détermination d’un entier tel que , étant un paramètre de sécurité, étant défini par la paire ; l’étape de génération d’un couple de clés secrète et publique, ainsi que de publication de ladite clé publique produite consiste à : utiliser la première donnée aléatoire afin de dériver les paramètres suivants : un entier de bits ; un entier premier de bits ; des entiers et tels que ; un vecteur de entiers positifs dont la somme est bornée par ; produire la clé secrète ; produire la clé publique , les vecteurs et étant définis par les deux relations et . l’étape d’encapsulation du secret consiste à utiliser la deuxième donnée aléatoire afin de produire un vecteur de entiers à partir duquel sont calculés le chiffré et la clé ; l’étape de décapsulation du secret consiste à recouvrer la clé telle que où . Selon ce premier mode de réalisation, le vecteur peut être produit par la séquence d’opérations suivantes : ; tant que ledit vecteur ne contient pas éléments distincts faire : ; selon le critère , pour ; et pour . Selon un deuxième mode de réalisation, pour renforcer encore la robustesse d’un KEM selon l’invention, la composante de la clé publique peut ne pas être exposée au deuxième dispositif électronique . Pour cela : l'étape de génération et de publication de paramètres généraux consiste en la détermination d’un entier tel que , étant un paramètre de sécurité, étant défini par la paire ; l’étape de génération d’un couple de clés secrète et publique, ainsi que de publication de ladite clé publique produite consiste à : utiliser la première donnée aléatoire afin de dériver les paramètres suivants : un entier de bits ; un entier premier de bits ; des entiers et tels que ; un vecteur de entiers positifs dont la somme est bornée par et tels que ; produire la clé secrète ; produire la clé publique , les vecteurs et étant définis par les deux relations et ; l’étape d’encapsulation du secret consiste à utiliser la deuxième donnée aléatoire afin de produire un vecteur de entiers à partir duquel sont calculés le chiffré et la clé ; l’étape de décapsulation du secret consiste à recouvrer la clé telle que où . Pour réduire les tailles des clés , un procédé conforme à l’invention peut être adapté de sorte que : l'étape de génération et de publication de paramètres généraux consiste en la détermination d’un entier tel que , étant un paramètre de sécurité, étant défini par la paire ; l’étape de génération d’un couple de clés secrète et publique, ainsi que de publication de ladite clé publique produite consiste à : utiliser la première donnée aléatoire afin de produire deux graines ; produire la clé secrète où , et sont dérivés de manière déterministe de ; produire la clé publique où : le vecteur est dérivé de manière déterministe de ; est un nombre premier de bits dérivé de manière déterministe de ; le vecteur et le vecteur étant produits par le procédé suivant : ; pour faire : tant que rafraîchir ; ; compresser la clé pk en , ; l’étape d’encapsulation du secret , consiste à : décompresser , en dérivant de la graine_pk le vecteur puis former ; générer à partir de la deuxième donnée aléatoire, un vecteur de entiers à partir duquel sont calculés le chiffré et la clé ; l’étape de décapsulation du secret consiste à recouvrer les données à partir de puis à recouvrer (141) la clé telle que où . Selon un mode de réalisation avantageux, peut être premier ou tel que . Pour optimiser la bande passante nécessaire à la mise en œuvre d’un procédé conforme à l’invention, et transmettre des clés plus longues, le procédé conforme à l’invention peut être adapté de sorte que : l'étape de génération et de publication de paramètres généraux consiste en la détermination d’un entier tel que , étant un paramètre de sécurité et d’un entier non nul, lesdits paramètres généraux étant le triplet ; l’étape (120) de génération d’un couple de clés secrète et publique, ainsi que de publication de ladite clé publique consiste à produire, à partir de la première donnée aléatoire, les données suivantes : un entier de bits ; un vecteur avec ; un vecteur ; une matrice aléatoire inversible de dimension dont les éléments sont pris aléatoirement dans ; une clé secrète ; une clé publique , les vecteurs et étant produits tels que : vérifie la condition et ; où ; l’étape d’encapsulation du secret consiste à utiliser la deuxième donnée aléatoire afin de produire un vecteur de entiers à partir duquel sont calculés le chiffré et la clé } ; l’étape de décapsulation du secret consiste à recouvrer (141) la clé telle que où . Selon un mode de réalisation avantageux, peut être inférieur ou égal à 4. De la même manière, un mode de réalisation avantageux peut consister en ce que puisse être tel que . Pour une sécurité supplémentaire, les étapes d’encapsulation et de décapsulation du secret , respectivement , peuvent comporter l’application d'une fonction à sens unique audit secret (respectivement ) pour produire un deuxième secret (respectivement utilisé effectivement au lieu de (respectivement ) par une application mettant en œuvre le KEM, c’est-à-des fins cryptographiques. En effet, une telle protection supplémentaire détruit d’éventuelles propriétés algébriques restant dans (respectivement ). Selon un deuxième objet, l’invention concerne un produit programme d’ordinateur comportant une ou plusieurs instructions de programme exécutables par l’unité de traitement d’un ordinateur, lesdites instructions de programme étant chargeables dans une mémoire dudit ordinateur et dont l’exécution par ladite unité de traitement provoque la mise en œuvre d’un procédé de transport d’un secret résistant aux attaques par ordinateur quantique selon l’invention. Selon un troisième objet, l’invention concerne un support de mémorisation lisible par un ordinateur comportant les instructions d’un tel produit programme d’ordinateur. Selon un quatrième objet, l’invention concerne un système informatique comportant une pluralité de dispositifs électroniques comprenant chacun une unité de traitement et une mémoire, ladite mémoire de chacun desdits dispositifs électroniques comprenant les instructions de programme d’un produit programme d’ordinateur conforme à l’invention. D’autres caractéristiques et avantages apparaîtront plus clairement à la lecture de la description qui suit et à l'examen des figures qui l'accompagnent parmi lesquelles : illustre un exemple d’un système informatique comportant une pluralité de dispositifs électroniques mettant en œuvre un procédé de transport de clé conforme à l’invention ; illustre un exemple d’un procédé fonctionnel de production de paramètres généraux d’un procédé de transport de clé conforme à l’invention ; illustre un exemple d’un procédé fonctionnel de génération de clés publique et privée mis en œuvre par tout dispositif électronique d’un système informatique conforme à l’invention ; illustre un exemple d’un procédé fonctionnel d’encapsulation de clé de session mis en œuvre par tout dispositif électronique d’un système informatique conforme à l’invention souhaitant partager ladite clé de session avec un autre dispositif électronique dudit système informatique ; illustre un exemple d’un procédé fonctionnel de décapsulation de clé de session mis en œuvre par tout dispositif électronique d’un système informatique conforme à l’invention destinataire d’une clé de session encapsulée par autre dispositif électronique dudit système informatique. Il est habituel de définir les notions de sécurité suivantes pour des KEMs : un est « correct » si , En particulier, un KEM est « parfaitement correct » si ; un est sûr contre les attaques à clair choisi (CPA-sûr) si pour tout algorithme distingueur s’exécutant en un temps polynomial, étant donnés {par, }, l’avantage de distinguer ( ) de ( ), où et où est choisi de manière uniforme et indépendante de , est négligeable ; Un est sûr contre les attaques à chiffré choisi (CCA-sûr) si pour tout algorithme distingueur s’exécutant en un temps polynomial et ayant accès à un oracle de décapsulation et à , l’avantage de distinguer ( ) de ( ) où et où est choisi de manière uniforme et indépendante de est négligeable, tant que le distingueur se contraint à ne jamais demander à l’oracle de déchiffrer . Selon des caractéristiques particulières, on pourra réaliser l'un quelconque des dispositifs de génération de paramètres, de génération de clés, d’encapsulation (chiffrement) de clés et de décapsulation (déchiffrement) de clés chiffrées succinctement exposés ci-dessus dans le contexte d'un circuit électronique. Un tel circuit électronique pourra, par exemple, être constitué par un microprocesseur, par un circuit programmé (également parfois nommé FPGA pour « Field Programmable Gate Array ») ou par une puce à logique câblée (également parfois nommée ASIC pour « Application Specific Integrated Circuit »). L'invention vise également un moyen de stockage de données inamovible, ou partiellement ou totalement amovible, comportant des instructions de code de programme informatique pour l'exécution des étapes de l'un quelconque des procédés de génération de paramètres, de génération de clés, d’encapsulation (chiffrement) de clés et de décapsulation (déchiffrement) de clés chiffrées, conformes à l’invention. L'invention vise également un programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur comportant les instructions de programme qui, lorsqu’elles sont exécutées, par l’ordinateur ou le microprocesseur, elles provoquent la mise en œuvre d’un KEM conforme à l’invention. Ce programme d'ordinateur est remarquable en ce qu'il comprend des instructions pour l'exécution des étapes de l'un quelconque des procédés de génération de paramètres, de génération de clés, d’encapsulation (chiffrement) de clés et de décapsulation (déchiffrement) de clés chiffrées exposés ci-dessus, lorsqu'il est exécuté sur un ordinateur ou dans un microprocesseur. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée ci-dessous de modes de réalisation particuliers, donnés à titre d'exemples non limitatifs. Nous allons illustrer à présent le concept de construction d'un système de KEM conforme à l'invention. Autrement dit, nous allons montrer comment construire l'algorithme qui sera utilisé pour traiter un bloc de données selon l’invention. On notera que le choix des fonctions ou valeurs numériques dans les exemples inclus vise essentiellement la simplicité de l'exposé, et ne prétend pas refléter des valeurs avantageuses sur le plan d'une mise en œuvre pratique de l'invention. Comme indiqué ci-dessus, la présente invention concerne également un système informatique comportant une pluralité de dispositifs électroniques communicants mettant en œuvre l'un quelconque des procédés de génération de paramètres, de génération de clés, d’encapsulation (chiffrement) de clés et de décapsulation (déchiffrement) de clés chiffrées décrits ci-dessus. Comme l’indique la , ce système informatique 1 comporte une pluralité de dispositifs électroniques 10-1,10-2,…,10-g. De manière classique chaque dispositif électronique consiste en une instance d’un dispositif électronique 10 comportant une unité centrale de traitement 11 commandant par des signaux acheminés par un bus de communication symbolisé sur la par des doubles flèches en traits simples, des éléments électroniques dont une mémoire de données 12 et une mémoire de programmes 14, lesdites mémoires 12 et 14 pouvant ne former qu’une seule et même entité physique. Un tel dispositif électronique 10 peut comporter un générateur de nombres aléatoires 13, ce dernier pouvant éventuellement former une seule et même entité physique avec ladite unité de traitement 11. On entend par « mémoire » toute mémoire informatique qu’elle soit volatile ou non. Une mémoire non volatile est une mémoire informatique dont la technologie conserve ses données en l’absence d’une alimentation en énergie électrique. Elle peut contenir des données résultant de saisies, de calculs, de mesures et/ou des instructions de programmes. Les principales mémoires non volatiles actuellement disponibles sont inscriptibles électriquement telles que la technologie EPROM (« Erasable Programmable Read-Only Memory », selon une terminologie anglo-saxonne) ou encore inscriptibles et effaçables électriquement telles que les technologies EEPROM (« Electrically-Erasable Programmable Read-Only Memory », selon une terminologie anglo-saxonne), flash, SSD (« Solid-State Drive », selon une terminologie anglo-saxonne), etc. Les mémoires non volatiles se distinguent des mémoires dites « volatiles » dont les données sont perdues en l’absence d’une alimentation électrique. Les principales mémoires volatiles actuellement disponibles exploitent les technologies RAM (« Random Access Memory » selon une terminologie anglo-saxonne ou encore nommée « mémoire vive »), DRAM (mémoire vive dynamique, nécessitant une réactualisation régulière), SRAM (mémoire vive statique nécessitant une telle réactualisation lors d’une sous-alimentation électrique), DPRAM ou VRAM (particulièrement adaptées à la vidéo), etc. Un dispositif électronique 10 comporte en outre des moyens de communication 15 avec le monde extérieur sous la forme d’une unité d'entrée et une unité de sortie. Lesdits moyens de communication 15 coopèrent avec l’unité de traitement 11 et assurent une communication de proximité sans fil ou filaire avec tout autre dispositif électronique dudit système informatique 1. Pour fonctionner, c’est-à-dire pour que l’unité de traitement 11 mette en œuvre un procédé conforme à l’invention, un dispositif électronique 10 comporte généralement une source d’énergie électrique 16 sous la forme d’une ou plusieurs batteries par exemple. Une telle source d’énergie électrique 16 peut être interne ou externe audit dispositif électronique 10. L’unité de traitement 11 peut également comporter des moyens de pilotage 17 d'une interface homme-machine d’entrée et/ou de sortie 20. Dans tout le document, on entend par « interface homme-machine de sortie », tout dispositif, employé seul ou en combinaison, permettant de sortir ou délivrer une représentation graphique, haptique, sonore ou, plus généralement, perceptible par l'humain. Une telle interface homme-machine de sortie peut consister de manière non exhaustive en un ou plusieurs écrans, haut-parleurs ou autres moyens alternatifs adaptés. On entend par « interface homme-machine d’entrée », un clavier informatique, un dispositif de pointage, un écran tactile, un microphone ou, plus généralement, toute interface agencée pour traduire une gestuelle ou une consigne émise par un humain en données de commande ou de paramétrage. Avantageusement, les interfaces homme-machine d'entrée et de sortie peuvent ne constituer qu'une seule et même entité physique. Un tel système informatique 1 peut être adapté en chargeant dans la mémoire de programmes 14 de chaque dispositif électronique 10-1,10-2,…,10-g un programme d'ordinateur P comportant des instructions pour provoquer, lors de leurs exécutions, la mise en œuvre d’un procédé de génération de paramètres, de génération de clés, d’encapsulation et/ou de décapsulation selon l'invention. Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme interprétée, partiellement ou entièrement compilée, ou dans n'importe quelle autre forme souhaitable. Comme indiqué précédemment, pour pouvoir échanger un secret via un canal de communication non sécurisé et résistant aux attaques par un ordinateur quantique, l’un des dispositifs électroniques du système informatique 1 décrit en lien avec la figure 1, par exemple le dispositif électronique 10-1, met en œuvre un procédé 110 de génération de paramètres via l’exécution d’un algorithme évoqué précédemment. Le dispositif électronique 10-1 pourra être le futur destinataire d’un secret qui lui sera communiqué par un dispositif électronique émetteur dudit système informatique 1, tel que le dispositif électronique 10-2, ou bien consister en n’importe quel autre dispositif électronique 10-2,…,10-g) dudit système 1. La figure 2 décrit ainsi un organigramme fonctionnel d’un tel procédé 110 mis en œuvre par un dispositif électronique d’un système informatique 1, tel que le dispositif électronique 10-1 destinataire d’un secret. Un tel procédé 110 prend en entrée un paramètre de sécurité et comporte une étape 112 de génération des paramètres nécessaires à la mise d’un œuvre d’un KEM conforme à l’invention. Un tel procédé peut comporter une étape préalable 111 de production d’une première donnée aléatoire ou pseudo-aléatoire par le générateur de nombres aléatoires ou pseudo-aléatoires 13, tout ou partie desdits paramètres pouvant être produits à partir de ladite première donnée aléatoire ou pseudo-aléatoire . Ledit procédé 110 peut comporter une étape 113 pour provoquer l’émission, par les moyens de communication 15, d’un message MPAR à destination de tout ou partie des dispositifs électroniques 10-2,…,10-g du système informatique 1 véhiculant lesdits paramètres . A réception d’un tel message MPAR, lesdits dispositifs électroniques 10-2,…,10-g enregistrent les valeurs desdits paramètres dans leurs mémoires de données 12 respectives. La figure 3 décrit un organigramme fonctionnel d’un procédé 120 de génération de clés mis en œuvre par tout dispositif électronique d’un système informatique 1, tel que le dispositif électronique 10-1 destinataire d’un secret, via l’exécution d’un algorithme évoqué précédemment. Un tel procédé 120 comporte une étape 121 de production d’une deuxième donnée aléatoire ou pseudo-aléatoire par le générateur de nombres aléatoires ou pseudo-aléatoires 13 et une étape 122 de génération des clés à l’aide de ladite deuxième donnée aléatoire ou pseudo-aléatoire . Ledit procédé 120 comporte alors une étape 123 d’enregistrement dans la mémoire de données 12 du dispositif électronique , 10-1, mettant en œuvre ledit procédé 120, des valeurs desdites clés . Ledit procédé 120 comporte en outre une étape 124 pour provoquer l’émission d’un message pour provoquer l’émission d’un message MPK à destination de tout ou partie des dispositifs électroniques 10-2,…,10-g du système informatique 1, ledit message MPK véhiculant ladite clé publique . A réception d’un tel message, lesdits dispositifs électroniques 10-2,…,10-g enregistrent la valeur de ladite clé publique dans leurs mémoires de données 12 respectives, avantageusement dans une structure de données associant ces dernières à des identifiants ID1, …, IDg caractérisant les dispositifs électroniques ayant publié leurs clés. L’invention prévoit, lorsque les procédés 110 et 120 sont mis en œuvre consécutivement par un même dispositif électronique dudit système informatique 1, que les paramètres qui ont été produits à l’étape 112 du procédé 110 puissent être véhiculés conjointement avec la clé publique par le message MPK dont l’émission par les moyens de communication 15, est provoquée par l’étape 124 du procédé 120. La figure 4 décrit un organigramme fonctionnel d’un procédé 130 d’encapsulation d’un secret mis en œuvre par un dispositif électronique d’un système informatique 1, tel que le dispositif électronique , 10-2, via l’exécution d’un algorithme évoqué précédemment. Un tel dispositif électronique , 10-2 peut souhaiter adresser ledit secret sous la forme d’un chiffré à destination du seul dispositif électronique , 10-1 ayant mis en œuvre le procédé 120 tel que décrit précédemment en lien avec la . Un procédé 130 comporte une étape 131 de production d’une troisième donnée aléatoire ou pseudo-aléatoire par le générateur de nombres aléatoires ou pseudo-aléatoires 13 et une étape 133 de génération d’un chiffré d’un secret que l’on souhaite produire et ainsi encapsuler pour être communiqué de manière sécurisée, à l’aide de ladite troisième donnée aléatoire ou pseudo-aléatoire , des paramètres et de la clé publique du dispositif électronique destinataire , 10-1 dudit chiffré. Pour cela, ledit procédé 130 comporte une étape 132, préalable à l’étape 133, de lecture de la mémoire de données 12 pour connaître la valeur de ladite clé publique dudit destinataire , 10-1. Ledit procédé 130 comporte alors une étape 134 de déclenchement de l’émission d’un message véhiculant ledit chiffré à destination du dispositif électronique , 10-1 du système informatique 1 véhiculant ledit chiffré. En l’espèce, selon l’exemple illustré par la figure 1, un tel procédé 130 peut être mis en œuvre par le dispositif électronique 10-2 agissant comme expéditeur dudit chiffré à l’attention du dispositif électronique , 10-1 désigné par la sélection 132 de la clé publique de ce dernier comme seul destinataire dudit chiffré et apte à pouvoir le déchiffrer comme nous allons l’étudier en lien avec la . Ladite figure 5 décrit ainsi un organigramme fonctionnel d’un procédé 140 de déchiffrement du chiffré ou de décapsulation d’un secret mis en œuvre par un dispositif électronique d’un système informatique 1, tel que le dispositif électronique , 10-1, via l’exécution d’un algorithme évoqué précédemment. Un tel procédé 140 est mis en œuvre en réponse à la réception d’un message véhiculant un chiffré produit par un dispositif électronique tiers selon un procédé d’encapsulation ou de chiffrement 130 décrit précédemment en lien avec la . Un tel procédé 140 comporte une première étape 141 de lecture dans la mémoire de données 12 des valeurs respectives de la clé publique et de la clé secrète préalablement produites à l’étape 122 d’un procédé 120 d’ores-et-déjà décrit en lien avec la figure 3. Lesdites clés publique et secrète étant propres au dispositif électronique destinataire , 10-1 du chiffré , lesdites clés sont respectivement notées et sur la figure 5. Ladite étape 141, utilise également les paramètres , transmis aux étapes 112 et/ou 123. Une telle étape 141 consiste en outre à lire dans ladite mémoire de données 12 les valeurs des paramètres préalablement produits par un procédé de génération de paramètres tel que le procédé 110, d’ores et déjà décrit en lien avec la figure 2 et mis en œuvre par le présent dispositif électronique , 10-1 ou par un dispositif électronique tiers. Un procédé 140 comporte également une étape 142 de production dudit secret que l’on souhaite tirer du chiffré réceptionné. Une telle étape 142 de décapsulation est réalisée à partir dudit chiffré , des paramètres et des clés publique et secrète du dispositif électronique réceptionnaire (10-1) dudit chiffré . En l’espèce, selon l’exemple illustré par la figure 1, un tel procédé 140 peut être mis en œuvre par le dispositif électronique 10-1 agissant comme destinataire dudit chiffré adressé par le dispositif électronique 10-2 agissant comme expéditeur . La totalité des cryptosystèmes à base de SàD se pose comme but de retrouver le vecteur dans la formule ou dans une formule équivalente modulo un certain module. Le concept inventif général dévie de cette architecture en introduisant au moins deux SàDs notés : et . Ici, et agissent comme un SàD couplé à un « SàD mirroir ». L’expéditeur (10-2) génère au hasard et calcule au moins deux sommes et où pour une certaine fonction dont les paramètres sont inconnus de lui. Lesdites deux sommes étant et . La somme sert de secret partagé. La somme est le chiffré véhiculant . On notera que, contrairement aux KEM à SàD classiques, ici ce n’est pas mais bien qui est transférée. Le destinataire (10-1) applique à un procédé tel que . On notera également que différents peuvent résulter en un même et que dans la pratique tel est effectivement le cas. Ainsi nous voyons que le cœur de l’invention réside en la mise au point de fonctions et ayant la propriété requise plus haut. Décrivons quelques exemples de tels procédés pouvant être combinés entre eux. Selon un premier exemple dit « calculs modulaires » et noté , si l’on pose alors, sous réserve du respect d’une condition de taille sur les et/ou sous réserve de divulguer , la fonction consiste à réduire modulo et diviser le résultat par modulo . L’ajout d’une constante, à savoir , permet, si le poids de Hamming de est un paramètre fixé, d’ajouter plus de variabilité dans . La soustraction de deux tels éliminera et annulera son effet mais si une telle opération est combinée et emboîtée dans les briques suivantes, son effet se trouvera préservé. On notera également que rien n’empêche d’emboîter plusieurs calculs modulaires, modulo différents les uns dans les autres. Par exemple posons . Ainsi, . Ceci permet, par soustraction de modulo et par division par modulo de « dépiler » la quantité . On voit alors que, si l’on a termes dans une telle addition, le choix permet de retrouver la quantité dans Z. Une soustraction de la constante modulo et une division modulaire par donnera la somme + modulo ou la somme dans si la somme des ne dépasse pas . Il est évident à l’homme de l’art que différents étages peuvent ainsi être emboîtés. Selon un deuxième exemple dit « Concaténation avec un aléa » et noté , prenons où les sont des nombres aléatoires, et la notation désigne une suite de bits égaux à 0. En ajoutant au maximum tels on obtiendra la quantité ce qui permet de couper la partie haute du nombre et retrouver la somme des . Examinons un troisième exemple dit « Couper et permuter » et noté . On note également que les peuvent être découpés en deux ou plus trains de bits de taille égale ou inégale, par exemple . Ces trains de bits peuvent être permutés selon une permutation connue de (le dispositif électronique 10-1 en figure 1) mais pas de (le dispositif électronique 10-2 en figure 1). Dans l’exemple illustratif donné ici, on peut par exemple prendre ce qui revient à inverser les poids hauts et les poids bas de la quantité (en prenant garde à réserver entre et un « tampon » de bits égaux à 0 destinés à absorber la retenue de l’addition). En ajoutant au maximum tels on obtiendra la quantité : . Cette quantité peut être facilement découpée et « remise dans le bon ordre » afin de former la quantité Enfin, examinons un quatrième exemple dit « Combinaisons linéaires à clé interne » et noté . Prenons où les sont des nombres aléatoires. En ajoutant au maximum tels on obtiendra la quantité . Ce qui permet de couper la partie haute du nombre et retrouver la somme des : . Notons que des constantes confidentielles et , peuvent venir agrémenter la relation : la rendant ainsi encore plus complexe. Toutes ces méthodes pour construire les sont associables entre elles et peuvent donner lieu à une multitude de fonctions , de manière évidente à l’homme de l’art. La définition de fait partie de la clé privée de (par exemple, le dispositif électronique 10-1 en figure 1). Cette définition pouvant être encodée sous la forme d’un nombre binaire noté vu comme une extension de décrivant le paramétrage et la composition de différentes transformées aboutissant à l’encodage de dans Les pouvant, à titre non limitatif, être choisies parmi les transformées que nous venons de voir. Dans la suite, des fonctions particulières seront choisies à titre illustratif et non limitatif. Décrivons un premier mode de réalisation d’un KEM conforme à l’invention au travers d’un des agencements respectifs des procédés 110, 120, 130 et 140 évoqués précédemment en lie avec les figures 2 à 5. Ce premier mode est dit est sûr contre les attaques à clair choisi (CPA-sûr), nous le nommerons KEM CPA . Selon ce premier mode de réalisation d’un KEM conforme à l’invention, les paramètres produits par un procédé de génération de paramètres 110 consiste simplement à fixer les tailles des clés utilisées par les procédés de génération des clés 120, d’encapsulation 130 et de décapsulation 140 mis en œuvre dans un système informatique tel que le système 1 selon la figure 1. Plus précisément, lesdits paramètres consistent en un entier choisi ou prédéterminé de sorte que , étant un paramètre de sécurité. Selon un mode de réalisation préférée, sera choisi de telle manière que . Les valeurs particulièrement avantageuses pour le paramètre sont 128, 192 et 256. Les valeurs de qui leur correspondent étant respectivement 440, 664, 880. Afin de faciliter la mise en œuvre informatique ou matérielle nous recommandons de prendre la valeur approximée à l’octet le plus proche. Le procédé 120 de génération des clés publique et secrète , peut se résumer par la formule . Ce procédé 120 mis en œuvre par tout dispositif électronique 10-1 à 10-g dudit système informatique 1, comporte une étape 121 de production d’une donnée aléatoire ou pseudo-aléatoire par le générateur de nombres aléatoires ou pseudo-aléatoires 13. Une telle donnée aléatoire ou pseudo-aléatoire permet de dériver les éléments Ainsi, à titre d’exemple de réalisation, une telle étape 121 consiste en les opérations suivantes : ; ; . L’étape 122 de production du couple de clés secrète et publique peut consister en la mise en œuvre des opérations suivantes : ; ; ; . L’étape 121 a été décrite avec premier de bits. En variante, pourrait être choisi tel que de sorte que soit inversible. Par ailleurs, l’opération exprimée ci-dessus, peut être réalisée par la mise en œuvre d’une routine « » consistant avantageusement en une version simplifiée de l’algorithme de Kraemer divulgué par N.A. Smith, et R.W. Tromble, « Sampling uniformly from the unit simplex », Johns Hopkins University, Tech. Rep, vol. 29, 2004. Une telle routine peut ainsi consister en initialisant tout d’abord le vecteur de sorte que . Puis, ladite routine consiste à mettre en œuvre les opérations suivantes : ; tant que ledit vecteur ne contient pas éléments distincts faire : ; selon le critère , pour ; et pour . A titre d’exemple illustratif, un tel procédé 120 ( ) pourrait être exprimé en langage Mathematica comme suit : AlgGenCPA := Function[{n, k}, {p, q} = RandomPrime[2^#] & /@ {n, k}; {d, \[Mu]} = RandomInteger[#-1] & /@ {p, q}; w = RandSumVec[p, n]; v = Mod[PowerMod[d, -1, p] w, p]; s = Mod[\[Mu] w, q]; {{p, d, \[Mu]}, {q, v, s}}] ; La routine « RandSumVec » pourrait quant à elle être exprimée en langage Mathematica comme suit : RandSumVec := Function[{p, n}, w = {}; While[Length[w] != n, r = Sort[Table[RandomInteger[p-1], {i, 1, n}]]; w = Prepend[Table[r[[i]] - r[[i - 1]], {i, 2, n}], r[[1]]]]; w] ; Selon ce premier mode de réalisation d’un KEM CPA conforme à l’invention, un procédé 130 d’encapsulation d’un secret - que l’on peut résumer par la formulation - mis en œuvre par tout dispositif électronique d’un système informatique 1, tel que le dispositif électronique , 10-2, comporte une étape 131 de production d’une donnée aléatoire ou pseudo-aléatoire par le générateur de nombres aléatoires ou pseudo-aléatoires 13. Une telle donnée permet la dérivation d’un vecteur de bits aléatoires tels que . Puisque la clé publique (lue à l’étape 132) du dispositif électronique destinataire du secret encapsulé sous la forme d’un chiffré s’exprime sous la forme (cf. l’étape 122 de génération des clés du procédé 110 précédemment décrit), l’étape 133 de génération dudit chiffré et du secret est telle que et . A titre d’exemple illustratif, un tel procédé 130 ( ) pourrait être exprimé en langage Mathematica comme suit : EncapCPA := Function[{n, k, pk}, {q, v, s} = pk; m = Table[RandomInteger[1], {i, 1, n}]; {Ch = m . v, K = Mod[m . s, q]}]; Selon ce premier mode de réalisation d’un KEM CPA conforme à l’invention, le procédé 140 de déchiffrement ou de décapsulation d’un secret , à partir duquel une clé de session pourra être créée – procédé 140 que l’on peut résumer par la formulation - mis en œuvre par tout dispositif électronique d’un système informatique 1, tel que le dispositif électronique ,10-1 en réponse à la réception d’un message véhiculant un chiffré produit par un dispositif électronique tiers dudit système informatique 1 selon un procédé d’encapsulation ou de chiffrement 130 décrit précédemment, comporte une première étape 141 de lecture dans la mémoire de données 12 des valeurs respectives de la clé publique et de la clé secrète préalablement produites à l’étape 122 du procédé de génération des clés 120 d’ores et déjà décrit en lien avec la figure 3, ainsi que des paramètres par consistant en les entiers et tels que, avantageusement . L’étape 142 dudit procédé 140 consistant en le recouvrement dudit secret que l’on souhaite tirer du chiffré réceptionné consiste en les opérations sachant que . A titre d’exemple illustratif, un tel procédé 140 ( ) pourrait être exprimé en langage Mathematica comme suit : DecapCPA := Function[{n, k, sk, pk, Ch}, {q, v, s} = pk; {p, d, \[Mu]} = sk; b = Mod[Ch d, p]; K = Mod[b \[Mu], q]]; Il est facile de vérifier que ce KEM CPA (consistant en les procédés 110, 120, 130 et 140 décrits ci-avant) selon ce premier mode de réalisation conforme à l’invention est parfaitement correct. En effet, il suffit de vérifier que . A cette fin, développons la définition de tel que . Il est maintenant possible de vérifier que Ainsi, il s’avère que , ce qui permet d’obtenir la valeur . Ceci permet de compléter la vérification A titre d’exemple illustratif, une telle vérification de correction pourrait être exprimée en langage Mathematica comme suit : n = 500 ; k = Floor[n*0.291] ; {sk, pk} = AlgGenCPA[n, k] ; {Ch, K} = EncapCPA[n, k, pk] ; Print[K == DecapCPA[n, k, sk, pk, Ch]] ;K = Mod[b \[Mu], q]]; Ce premier mode de réalisation d’un KEM conforme à l’invention est sûr contre les attaques à clair choisi (CPA-sûr). Les performances du procédé ainsi obtenu sont les suivantes : la taille de la clé privée est bits, la taille de la clé publique est bits, le chiffré a pour taille bits et la clé partagée entre (10-1) et (10-2) est de taille bits. La réalisation de l’invention présente l’avantage d’être réalisable à l’aide d’opérations arithmétiques très classiques. Par exemple, la multiplication modulaire peut s’effectuer à l’aide de l’algorithme de Montgomery (décrit dans la publication P.L. Montgomery, « Modular multiplication without trial division », Mathematics of computation, vol. 44, n° 170, pp. 519-521, 1985.) et/ou inclure les constantes précalculées tel que décrit dans la publication D. Naccache, D. M'raïhi et D. Raphaeli, (1995). « Can Montgomery parasites be avoided? A design methodology based on key and cryptosystem modifications ». Designs, Codes, and Cryptography, 5(1), pp. 73-80. Avantageusement, on pourrait également sans risque pour la sécurité, utiliser un module dont la forme facilite l’arithmétique modulaire ou encore effectuer l’addition des entiers très rapidement et en parallèle à l’aide de la stratégie de représentation d’entiers par résidus dits RNS (« Residue Number System »), par exemple, telle décrite dans la publication D. Naccache, D. M'Raïhi, W. Wolfowicz et A. di Porto, « Are Crypto-Accelerators Really Inevitable? 20 Bit Zero-Knowledge in Less than a Second on Simple 8-bit Microcontrollers », Advances in Cryptology - {EUROCRYPT} '95, International Conference on the Theory and Application of Cryptographic Techniques, Saint-Malo, France, May 21-25, 1995, Proceeding, Lecture Notes in Computer Science, vol. 921, pp. 404-409, Springer, 1995. De plus, afin de renforcer davantage la sécurité de l’invention il est proposé le mode de réalisation suivant : Selon ce mode de réalisation particulièrement avantageux d’un KEM conforme à invention, les algorithmes et , c’est-à-dire les procédés 130 et 140 précédemment évoqués, ne retournent pas directement mais plutôt , étant une fonction à sens unique. Une application utilisant la clé, par exemple un client de courriel chiffrant et déchiffrant les courriels échangés par des utilisateurs, peut alors se servir de comme clé de chiffrement finale. L’idée derrière cette protection supplémentaire est de détruire les propriétés algébriques restantes de par la fonction à sens unique . L’invention prévoit également d’adapter un tel KEM pour qu’il soit sûr contre les attaques à chiffré choisi (CCA-sûr) ; nous le nommerons KEM CCA . Selon ce deuxième exemple de mise en œuvre, est appliquée une transformée classique telle que celle divulguée dans le document A.W. Dent, ed. K.G. Paterson, « A Designer's Guide to KEMs », Cryptography and Coding, 9th IMA International Conference, Cirencester, UK, December 16-18, 2003, Proceedings, Lecture Notes in Computer Science, vol. 2898, pp. 133-151, Springer, 2003 ou, alternativement, celle proposée dans le document E. Fujisaki et T. Okamoto, « How to Enhance the Security of Public-Key Encryption at Minimum Cost », Public Key Cryptography, Second International Workshop on Practice and Theory in Public Key Cryptography, PKC '99, Kamakura, Japan, March 1-3, 1999, Proceedings, pp. 53-68, 1999. Les étapes 110 et 120 ( ) pour produire respectivement les paramètres généraux et le couple de clés secrète et publique telles qu’évoquées en lien avec le précédent mode de réalisation sont inchangées. En d’autres mots . En revanche, les étapes d’encapsulation 130 et de décapsulation 140 sont adaptées. A ce titre, le générateur de nombres aléatoires 13 des dispositifs électroniques d’un système informatique conforme à l’invention, tel que le système 1 selon la , sont agencés pour mettre en œuvre un procédé dit « à graine » PRNG pour générer de manière pseudo-aléatoire les aléas nécessaires pour la mise en œuvre du procédé 130 d’encapsulation de clé de session. Un tel procédé dit « à graine » peut être tiré par exemple du document de D.J. Bernstein, « The ChaCha family of stream ciphers », https://cr.yp.to/chacha.html, 2008 ou encore du document de J. O'Connor, J.-Ph. Aumasson, S. Neves et Z. Wilcox-O'Hearn, « BLAKE3: one function, fast everywhere », 2021, https://blake.io. A titre d’exemple, le procédé 130 tel que décrit en lien avec la figure 4 - que l’on peut résumer sous la formulation - peut consister en celui ( ) d’ores et déjà décrit en lien avec le premier mode, exception faite que l’étape 131 de production d’une donnée pseudo-aléatoire consiste en outre à initialiser . L’étape 133 consiste à produire non pas directement le chiffré qui sera in fin e transmis mais une composante de celui-ci telle que . Ladite étape 133 consiste en outre à produire une deuxième composante dudit chiffré . A l’issue de la mise en œuvre du procédé 130 la future clé de session partagée est et le chiffré transmis est . A titre d’exemple illustratif, un tel procédé 130 ( ) pourrait être exprimé en langage Mathematica comme suit : EncapCCA := Function[{n, k, pk, graine}, {q, v, s} = pk; m = Table[IntegerDigits[Hash[{graine, i}], 2][[1]], {i, 1, n}]; K = Mod[m . s, q]; {{m . v, BitXor[K, graine]}, K}]; Un procédé 140 de décapsulation du secret – que l’on peut résumer par la formulation - peut alors consister à partir dudit chiffré à mettre en œuvre une étape 142, telle que décrite en lien avec le premier mode de réalisation à partir des paramètres généraux , de la clé secrète , de la clé publique et de la composante de recouvrer la valeur du secret par un simple appel à . Ladite étape 142 est alors adaptée pour calculer et ainsi recouvrer le nombre aléatoire . Selon ce mode de réalisation une telle étape 142 doit comporter un test pour vérifier la cohérence de par la mise en œuvre d’un traitement 133 identique à celui mis œuvre par le dispositif émetteur du chiffré , le résultat de ce traitement devant correspondre à l’ensemble constitué par la composante et la clé . Dans la négative, la valeur de n’est pas confirmée et/ou une erreur est générée. A titre d’exemple illustratif, un tel procédé 140 ( ) pourrait être exprimé en langage Mathematica comme suit : DecapCCA := Function[{n, k, sk, pk, Ch}, K = DecapCPA[n, k, sk, pk, Ch[[1]]]; graine = BitXor[K, Ch[[2]]]; If[EncapCCA[n, k, pk, graine] == {Ch, K}, graine, "Erreur"]] ; Ce qui permet une exécution telle que: n = 100; k = Floor[n*0.291]; {sk, pk} = AlgGenCPA[n, k]; graine = RandomInteger[2^k]; {Ch, K} = EncapCCA[n, k, pk, graine]; Print[DecapCCA[n, k, sk, pk, Ch] == graine] ; Les performances du procédé ainsi obtenu sont les suivantes : la taille de la clé privée est bits, la taille de la clé publique est bits, le chiffré a pour taille bits et la clé partagée entre , 10-1 et , 10-2 est de taille bits. Par ailleurs, une pratique commune en cryptographie consiste à diminuer l’espace mémoire nécessaire à la sauvegarde de données et à la sauvegarde de paramètres, notés ici , en les « générant à la volée ». Une telle génération à la volée nécessite que les données générées à la volée n’aient pas de propriétés mathématiques particulières. Par exemple, dans le cas où les sont publiques les peuvent être par exemple, des morceaux successifs de bits, prélevés par sur une constante telle que . Il est également commun de définir dans un tel cas , où la « constante » (possiblement publique) apparaissant dans est une valeur numérique permettant de personnaliser les . Lorsque les données sont des données confidentielles (typiquement des clés privées), il est habituel d’avoir recours à une fonction à sens unique à clé utilisée ainsi : où « » est une donnée confidentielle. Dans le cadre de l’invention, nous noterons génériquement de telles constructions par . De tels procédés permettent la génération d’éléments d’une manière qui requiert beaucoup moins de mémoire que celle nécessaire à la sauvegarde littérale des . Ainsi, ce procédé permet un décroissement considérable de la taille des données ainsi générées. A ce titre, l’invention prévoit un troisième mode de réalisation pour réduire la taille des clés secrète et publique produites à l’étape 120 d’un KEM conforme à l’invention, nous le nommerons . Selon ce troisième mode de réalisation, les étapes d’encapsulation 130 ( ) et de décapsulation 140 ( ) telles qu’évoquées en lien avec le premier mode de réalisation peuvent demeurer inchangées. L’effet de ce mode de réalisation sur la taille de la clé est drastique : si les graines utilisées sont chacune de bits, pour et la taille de tombe à bits alors que la taille de est réduite à k’' . Dans la pratique on prendra . L’étape 120 de production des clés secrète et publique mise en œuvre par le premier dispositif électronique , 10-1 – que l’on peut résumer par la formulation consiste à : générer une deuxième donnée aléatoire par le générateur de nombres aléatoires 13 et dériver de ladite deuxième donnée aléatoire deux graines ; on notera qu’il s’agit ici de la description la plus générale puisque pourrait ne pas être issue de l’aléa mais représenter une constante fixe telle que ou être dérivé de la donnée ; produire la clé secrète où , et étant dérivés de manière déterministe de ; produire la clé publique où le vecteur est dérivé de manière déterministe de ; est un nombre premier de bits dérivé de manière déterministe de ; les vecteurs et étant produits selon le procédé suivant : ; pour faire : tant que , rafraîchir ; la clé compressible est . Il est recommandé d’éviter de prendre pour la plus petite valeur telle que car un tel choix engendrerait une fuite d’information : à savoir que les valeurs inférieures à ne sont pas solutions de cette inégalité. Ainsi, il est recommandé de prendre un dans l’intervalle , ou, pour une sécurité encore plus renforcée dans un intervalle pour . Pour le choix le procédé pourrait échouer avec une probabilité définie ainsi : est négligeable car avec la plus petite valeur de recommandée pour l’usage de la présente invention, à savoir , on obtient et donc . Ainsi, nous sommes assurés de trouver un bon vecteur permettant de représenter à l’aide de bits au lieu de bits. A titre d’exemple illustratif, un tel procédé pourrait être exprimé en langage Mathematica comme suit : CompAlgGenCPA := Function[{n, k}, {grainePK, graineSK} = RandomInteger[2^#] & /@ {k, k}; q = Mod[Hash[{grainePK, 0}], 2^k]; While[Not[PrimeQ[q]], q--]; p = Mod[Hash[{graineSK, 0}], 2^n]; While[Not[PrimeQ[p]], p--]; d = Mod[Hash[{graineSK, 1}], p]; \[Mu] = Mod[Hash[{graineSK, 2}], q]; v = Table[Mod[Hash[{grainePK, i}], 2^n], {i, 1, n}]; z = Table[RandomInteger[n^2], {i, 1, n}]; For[i = 1, i While[Mod[(v[[i]] + z[[i]]) d, p] >= Floor[p/n], z[[i]] = RandomInteger[n^2]]; i++]; s = Mod[\[Mu] Mod[(v + z) d, p], q]; {{p, d, \[Mu]}, {q, v + z, s}}]; L’exécution d’un tel code imprimera effectivement « vrai » : n = 100; k = Floor[n*0.291]; {sk, pk} = CompAlgGenCPA[n, k] ; {Ch, K} = EncapCPA[n, k, pk] ; Print[K == DecapCPA[n, k, sk, pk, Ch]] Ce code est donné à titre illustratif car la fonction de hachage du logiciel Mathematica retourne un haché de taille limitée, ainsi, l’exemple illustratif cessera de fonctionner pour des grandes valeurs de . Par souci de simplicité, l’exemple génère des clés compressibles et non compressées. Une clé compressible étant une clé pouvant être aisément compressée. On notera également qu’au lieu d’utiliser une recherche exhaustive, il est possible d’avoir recours à l’algorithme LLL afin de répartir l’information modulaire et résoudre l’équation pour les inconnues sous les contraintes et . Il s’agit d’une méthode alternative de compression de la clé publique dont la mise en œuvre sera évidente à l’homme de l’art. Ce procédé s’étendant aisément pour . Les formules d’expansion de , évidentes à l’homme de l’art, sont : Les fonctions dérivent les paramètres de . Les formules d’expansion de sont plus délicates techniquement : où l’algorithme auxiliaire requiert l’explication suivante : Nous commençons par dériver de (qui est publique par exemple, l’identité de (10-1)). Il est également possible d’utiliser pour une constante commune à tous les utilisateurs telle que ou générer à partir de la donnée . Cependant, ce faisant, nous rencontrons un problème : si la valeur arbitraire de est utilisée en lieu et place de , les rétro-calculés vont être de taille pleine, i.e. potentiellement supérieures à et ne vont donc pas satisfaire la contrainte Afin de contourner cette difficulté, nous allons utiliser , à la place des originaux, en introduisant des courts facteurs correctifs , tels que : Ainsi nous pouvons nous assurer que pour tout , , en absorbant l’entropie manquante dans . La clé publique compressée , sera donc composée ainsi : . Un quatrième mode de réalisation confère une amélioration notable de la bande passante du procédé inventif. Il consiste en une généralisation à plusieurs vecteurs à la fois. L’algorithme résultant sera noté où la lettre « m » ajoutée avant le nom de l’algorithme est l’acronyme du mot « multiple ». A cette fin, un nouveau paramètre entier est introduit dans la description. Lorsque l’algorithme devient identique à Il est clair à l’homme de l’art que la même transformée permettant de transformer et permet de transformer en un algorithme de niveau CCA. En mode CPA, ce mode de réalisation a pour caractéristiques une clé privée de taille bits, une clé publique de taille , une clé échangée de taille bits et un chiffré de taille bits. Pour cela, la présente invention fait appel à une matrice carrée de dimensions . Une telle matrice doit avoir un déterminant non-nul. La manière évidente de générer de telles matrices consiste à les choisir au hasard jusqu’à ce qu’une matrice à déterminant non-nul soit obtenue. Puisque dans la présente invention, la dimension de la matrice est très faible (typiquement ) un tel procédé s’avère acceptable, adapté et efficace. A titre d’exemple illustratif, un tel procédé de génération de matrices pourrait être exprimé en langage Mathematica comme suit : GenM := Function[{t, q}, While[M = RandomInteger[q - 1, {t, t}]; Mod[Det[M], q] == 0]; M]; Un exemple d’implémentation d’un tel quatrième mode de réalisation peut être décrit de manière algorithmique par les opérations suivantes, relatives à la production 120 ( ) du couple des clés , consistant à générer : ; avec ; ; une matrice inversible de dimension d’éléments de ; tels que et ; ; ; ; . Des techniques permettant produire le vecteur , sont décrites ultérieurement dans le présent document. Le procédé d’encapsulation 130 ( ) du secret selon ce quatrième mode de réalisation diffère de en ce que ledit secret consiste en bits. Ainsi, pour une clé publique , } où a été généré aléatoirement et le chiffré est . Le procédé de décapsulation 140 ( ) du secret prend en entrée une clé publique , une clé secrète et un chiffré . L’étape 142 dudit procédé 140 calcule où . Afin de clarifier le fonctionnement de nous allons expliquer pourquoi est parfaitement correct. Nous souhaitons vérifier que : . A cette fin, nous allons développer l’expression et vérifier que, ce faisant, nous obtenons bien : Il reste donc à démontrer que : Ces opérations sont correctes grâce à la contrainte imposée sur permettant aux valeurs de retomber dans . En lien avec le procédé 120 ( ) produisant le couple des clés , examinons différentes réalisations possibles pour produire . Ainsi, il importe de décrire la manière dont ladite composante de la clé publique peut être générée. A la différence du premier mode de réalisation d’un KEM conforme à l’invention ( ), lorsque , doit être trouvé durant la génération des clés. Quand , la valeur de est dédite de , or dans le cas de , l’élément doit être déterminé avant le calcul de . Le souci induit par cette modification dans l’ordre des opérations est que maintenant les sont intrinsèquement non-aléatoires étant donnée les contraintes additionnelles qui leurs sont simultanément imposées. Ainsi, il est important de contrer cet effet adverse et garantir que les ont une entropie élevée. Évidemment, un choix de élevé rendra la génération des plus lente. Un premier exemple de réalisation de la production du vecteur noté peut être décrit d’une manière algorithmique par la table suivante : 1 2 mod 3 4 5 Pour allant de à 6 || ouverture pour 7 8 9 10 Tant que tel que 11 { ouverture tant-que 12 Si alors 13 { || ouverture si 14 15 16 } || fermeture si 17 Pour allant de à 18 { || ouverture pour 19 Si 20 } || fermeture pour 21 } || fermeture tant-que 22 || fermeture pour 23 Retourner le vecteur A titre d’exemple illustratif, un tel procédé pourrait être exprimé en langage Mathematica comme suit : GenV := Function[{t, n, p, d}, \[Alpha] = Table[Floor[p[[i]]/n], {i, 1, t}]; \[Epsilon] = PowerMod[d[[1]], -1, p[[1]]]; e = u = Range[2, t]; v = Table[0, {i, 1, n}]; h = Table[Mod[d[[i + 1]] \[Epsilon], p[[i + 1]]], {i, 1, t - 1}]; \[Beta] = Table[Mod[h[[i]] - d[[i + 1]] p[[1]], p[[i + 1]]], {i, 1, t - 1}]; Do[w1 = RandomInteger[{1, \[Alpha][[1]]}]; v[[i]] = Mod[w1 \[Epsilon], p[[1]]]; u = Mod[v[[i]] d[[#]], p[[#]]] & /@ e; While[Or @@ ((u[[# - 1]] > \[Alpha][[#]]) & /@ e), If[(v[[i]] += \[Epsilon]) >= p[[1]], u += \[Beta]; v[[i]] -= p[[1]], u += h]; Do[If[u[[j]] >= p[[j + 1]], u[[j]] -= p[[j + 1]]], {j, t - 1}]], {i, n}]; v]; L’exécution d’un tel code imprimera effectivement « vrai » : {n,t}={40,3}; p = Table[RandomPrime[2^n], {i, 1, t}]; d = Table[RandomInteger[{1, p[[i]] - 1}], {i, 1, t}]; GenV[t, n, p, d]; And @@ Flatten[Table[Mod[v[[i]] d[[j]],p[[j]]] Ce qui permet de tester l’ensemble des étapes de l’algorithme ainsi : mAlgGenCPA := Function[{n, k, t}, q = RandomPrime[2^k]; p = {}; While[Length[p] != t, p = Union[Table[RandomPrime[2^n], {i, 1, t}]]]; d = Table[RandomInteger[{1, p[[i]]-1}], {i, 1, t}]; M = GenM[t, q]; v = GenV[t, n, p, d]; w = Table[Mod[v d[[i]], p[[i]]], {i, 1, t}]; s = Mod[M . w, q]; {{p, d, M}, {q, v, s}}]; mEncapCPA := Function[{n, k, t, pk}, {q, v, s} = pk; m = Table[RandomInteger[1], {i, 1, n}]; {Ch = m . v, K = Table[Mod[m . s[[i]], q], {i, 1, t}]}]; mDecapCPA := Function[{n, k, t, sk, pk, Ch}, q = pk[[1]]; {p, d, M} = sk; b = Mod[Ch d, p]; K = Mod[ M . b , q]]; L’exécution d’un tel code imprimera effectivement « vrai » : {n, t} = {200, 3}; k = Floor[n*0.291]; {sk, pk} = mAlgGenCPA[n, k, t]; {ch, clé} = mEncapCPA[n, k, t, pk]; mDecapCPA[n, k, t, sk, pk, ch] == clé On notera que cette procédure de recherche de clés est facilement parallélisable et peut tirer avantage de processeurs pour accélérer la recherche d’un facteur . En effet, chaque peut être confié à un processeur séparé et généré indépendamment des autres. Cette remarque s’applique également à la procédure décrite dans le deuxième exemple de réalisation de la production de qui suit. Selon un deuxième mode de réalisation de la production de , la recherche exhaustive peut être considérablement abaissée en enchaînant plusieurs étapes illustrées ci-après. Puisque ce mode de réalisation permet le respect de la contrainte de taille sur quatre éléments, on pourra aussi avantageusement utiliser cette variante pour générer des clés n’exposant pas la donnée (ce mode de réalisation sera décrit ultérieurement) pour , réunissant ainsi à la fois la sécurité accrue de la variante n’exposant pas et la bande passante accrue de la variante . Pour ce faire, on débute par une génération classique de premiers avec . On tire : . On commence par garantir la condition modulo par construction, en prenant un aléatoire tel que , on rétro-calcule puis on détermine . On retire aléatoirement jusqu’à obtenir un . On peut remarquer que si l’on augmente de quelques unités , cela n’abimera pas les conditions de taille sur et du fait du choix judicieux de . En effet : implique . Ainsi, il est possible d’augmenter de quelques unités jusqu’à trouver un tel que . On remarque que les deux recherches exhaustives faites précédemment ne se multiplient pas mais s’ajoutent. Afin de satisfaire la contrainte également sur , les calculs précédents sont répétés fois (pour un certain paramètre ) et on constituera une base de données BD contenant les différentes valeurs de ainsi obtenues notées . Le calcul se termine en combinant les valeurs dans BD par sommation jusqu’à trouver une paire telle que est satisfait . Ce calcul peut se terminer de trois manières : on trouve un tel que (solution de type 1, rare) ; on trouve une paire telle que est satisfait (solution de type 2, plus commune du fait du paradoxe des anniversaires) ; on trouve une paire telle que est satisfait (solution de type 3, moins commune que les solutions de type 2) où, de plus, dans lorsque les quantités dont prises modulo tous les pour . Ceci est nécessaire afin de permettre une soustraction dans le bon ordre des opérandes dans permettant de raccourcir . Si l’itération sur n’a pas suffi, il faut continuer à itérer pour une valeur plus large de . Il importe de noter que même si cette procédure doit être répétée pour chaque coordonnée du vecteur , la base BD peut être recyclée d’une coordonnée à l’autre : une fois une solution trouvée pour une coordonnée donnée, cette solution et/ou ses composantes peut/peuvent être ôtée(s) (effacée(s)) de BD et la base résultante peut servir pour initier la recherche de la coordonnée suivante de , sans avoir à recalculer BD de novo . Il suffit alors de continuer à enrichir BD. A titre d’exemple illustratif, un tel procédé permettant la de générer une coordonnée du vecteur de pourrait être exprimé en langage Mathematica comme suit : {k, L, w, DB} = {100, 100, {0, 0, 0, 0}, {}}; n = Floor[k/0.291]; p = RandomPrime[2^n] & /@ w; d = RandomInteger[#] & /@ {Floor[p[[1]]/(n^3)], Floor[p[[2]]/(n^3)], p[[3]] - 1, p[[4]] - 1}; u = PowerMod[d[[1]], -1, p[[1]]]; For[i = 1, i While[w[[1]] = RandomInteger[Floor[p[[1]]/(2 n)]]; v = Mod[w[[1]]*u, p[[1]]]; w[[2]] = Mod[v d[[2]], p[[2]]]; w[[2]] > p[[2]]/(2 n)] ; w[[3]] = Mod[d[[3]]*v, p[[3]]]; While[w[[3]] > p[[3]]/(2 n), v++; w[[3]] = Mod[d[[3]]*v, p[[3]]]]; AppendTo[DB, {w[[4]] = Mod[d[[4]]*v, p[[4]]], v}]; i++]; For[i = 1, i If[DB[[i, 1]] v = DB[[i, 2]]; e = Table[Mod[d[[i]]*v, p[[i]]] Print["solution de type 1 trouvée et testée: ", e]; i = L]; i++]; For[i = 1, i For[j = i + 1, j If[Mod[DB[[i, 1]] + DB[[j, 1]], p[[4]]] v = DB[[i, 2]] + DB[[j, 2]]; e = Table[Mod[d[[i]]*v, p[[i]]] Print["solution de type 2 trouvée et testée: ", e]; i = j = L]; j++]; i++]; Quelle que soit la solution retenue pour mettre en œuvre ce quatrième mode de réalisation d’un KEM conforme à l’invention, le choix de est primordial. On notera que le paramètre ne peut être trop grand. Un argument intuitif à une telle limitation inhérente est que si l’on génère une clé de plus de bits, son entropie sera de toutes les manières bornée (car il existera toujours une attaque meilleure consistant à essayer toutes les valeurs possibles de par une recherche exhaustive). Cela édicte une première contrainte qui est . Etant donné que doit être entier, on propose de prendre soit ou . Si est choisi, la clé résultante devra être hachée vers bits avant usage. Notons qu’il serait approprié d’éviter car les valeurs choisies pour et seraient toutes telles que Ainsi, pour , la génération des clés est immédiate pour tout mode de réalisation exposant la composante dans la clé publique . Elle l’est également pour tout mode de réalisation, décrit ultérieurement, n’exposant pas ladite composante dans la clé publique . Pour , la génération des clés est immédiate pour tout mode de réalisation exposant la composante dans la clé publique . Elle demeure rapide pour tout mode de réalisation, décrit ultérieurement, n’exposant pas ladite composante dans la clé publique . La taille de est suffisante pour la majorité des applications pratiques. Pour , la génération des clés est facile pour tout mode de réalisation exposant la composante dans la clé publique . La taille de devient toutefois grande et excède ce qui est habituellement requis pour des applications pratiques. Pour , la génération des clés reste raisonnable pour tout mode de réalisation exposant la composante dans la clé publique . Toutefois, la taille de est maximisée et le ratio entre l’entropie de K et le nombre d’opérations effectuées commence à baisser. Il est donc recommandé de prendre , ou ou (qui sont particulièrement intéressants) selon les besoins applicatifs et réserver le choix à des applications nécessitant des clés aussi longues que possible. Il semble qu’il n’existe pas d’utilité apparente à utiliser . Comme évoqué précédemment, l’invention prévoit un cinquième mode de réalisation pour lequel la composante de la clé publique n’est pas exposée et ainsi renforcer encore la robustesse d’un KEM selon l’invention. Selon un cinquième mode de réalisation d’un KEM conforme à l’invention, que nous nommerons , il est possible d’omettre la composante de la clé publique . Selon une première technique pour mettre en œuvre un tel , devient l’une des composantes de la clé secrète , lesdites clés étant produites dans le cadre d’un procédé 120 adapté en conséquence que nous nommerons pour le différencier de l’algorithme d’ores et déjà décrit en lien avec le . A l’instar de ce dernier, les paramètres consistent en un entier choisi ou prédéterminé de sorte que , étant un paramètre de sécurité fourni par l’utilisateur. Selon un mode de réalisation préférée, sera choisi de telle manière que . Le procédé 120 de génération des clés publique et secrète , est un procédé que l’on peut résumer par la formule , ce dernier étant mis en œuvre par tout dispositif électronique 10-1 à 10-g dudit système informatique 1, comporte une étape 121 de production d’une deuxième donnée aléatoire ou pseudo-aléatoire par le générateur de nombres aléatoires ou pseudo-aléatoires 13. Une telle deuxième donnée aléatoire ou pseudo-aléatoire permet de dériver un ensemble de entiers positifs que nous noterons . L’invention prévoit que la somme desdits entiers soit bornée par un paramètre , avantageusement premier. Ainsi, à titre d’exemple de réalisation une telle étape 121 consiste en les opérations suivantes : ; ; . La formule doit s’interpréter comme suit : tout d’abord ledit système informatique 1 calcule les nombres , une fois les obtenus, les sont sommés comme des entiers sans que la somme qui en résulte soit réduite modulo . L’étape 121 a été décrite avec premier de bits. En variante, pourrait être choisi tel que de sorte que soit inversible. Par ailleurs, l’opération et tel que exprimée ci-dessus, peut être réalisée par la mise en œuvre d’une sous-routine nommée qui peut être décrite de manière algorithmique par la table suivante : 1 2 Tant que ne contient pas éléments distincts faire : 3 4 5 c’est à dire, 6 7 Pour allant de à : 8 { 9 10 } 7 Pour allant de à : 8 { 9 Tant que faire 10 } 11 } 12 Retourner le vecteur A titre d’exemple illustratif, un tel procédé générant le vecteur de pourrait être exprimé en langage Mathematica comme suit : qLessRandSumVec := Function[{p, n, q, \[Mu]}, w = {}; While[Length[w] != n, r = Sort[Table[RandomInteger[p-1], {i, 1, n}]]; w = Prepend[Table[r[[i]] - r[[i - 1]], {i, 2, n}], r[[1]]]]; For[i = 1, i q/n, w[[i]]++]; i++]; w]; Le procédé 120, noté comporte dès lors une étape 122 de production du couple de clés secrète et publique peut consister en la mise en œuvre des opérations suivantes : ; ; ; . A titre d’exemple illustratif, un tel procédé (120) pourrait être exprimé en langage Mathematica comme suit : qLessAlgGenCPA := Function[{n, k}, {p, q} = RandomPrime[2^#] & /@ {n, k}; {d, \[Mu]} = RandomInteger[#-1] & /@ {p, q}; w = qLessRandSumVec[p, n, q, \[Mu]]; v = Mod[PowerMod[d, -1, p] w, p]; s = Mod[\[Mu] w, q]; {{q, p, d, \[Mu]}, {v, s}}]; Selon ce mode de réalisation d’un n’exposant pas dans la clé publique , un procédé 130 de chiffrement ou d’encapsulation d’un secret - que l’on peut résumer par la formulation - mis en œuvre par tout dispositif électronique d’un système informatique 1, tel que le dispositif électronique (10-2), comporte une étape 131 de production d’une donnée aléatoire ou pseudo-aléatoire par le générateur de nombres aléatoires ou pseudo-aléatoires 13. Une telle donnée permettant de dériver un vecteur de entiers tels que . Puisque la clé publique (lue à l’étape 132) du dispositif électronique destinataire du secret encapsulé sous la forme d’un chiffré s’exprime sous la forme (cf. l’étape 122 de génération des clés du procédé 110 précédemment décrit), l’étape 133 de génération dudit chiffré et du secret est telle que et . On notera que ni le calcul de ni le calcul de ne font appel à des réductions modulaires. A titre d’exemple illustratif, un tel procédé (130) pourrait être exprimé en langage Mathematica comme suit : qLessEncapCPA := Function[{n, k, pk}, {v, s} = pk; m = Table[RandomInteger[1], {i, 1, n}]; {Ch = m . v, K = m . s}]; Selon ce mode de réalisation conforme à l’invention, le procédé 140 de déchiffrement ou de décapsulation d’un secret , en l’espèce une clé de session – procédé 140 que l’on peut résumer par la formulation - mis en œuvre par tout dispositif électronique d’un système informatique 1, tel que le dispositif électronique (10-1), en réponse à la réception d’un message véhiculant un chiffré produit par un dispositif électronique tiers dudit système informatique 1 selon un procédé d’encapsulation ou de chiffrement 130 décrit précédemment, comporte une première étape 141 de lecture dans la mémoire de données 12 la valeur de la clé secrète préalablement produite à l’étape 122 du procédé de génération des clés 120 d’ores et déjà décrit en lien avec la figure 3, ainsi que des paramètres par consistant en les entiers et tels que, avantageusement . L’étape 142 dudit procédé 140 consistant en le recouvrement dudit secret que l’on souhaite tirer du chiffré réceptionné consiste en les opérations sachant que . A titre d’exemple illustratif, un tel procédé (140) permettant le vecteur de pourrait être exprimé en langage Mathematica comme suit : qLessDecapCPA := Function[{n, k, sk, pk, Ch}; {q, p, d, \[Mu]} = sk; b = Mod[Ch d, p]; K = Mod[b \[Mu], q]]; L’exécution d’un tel code imprimera effectivement « vrai » : n = 550; k = Floor[n*0.291]; {sk, pk} = qLessAlgGenCPA[n, k]; {Ch, K} = qLessEncapCPA[n, k, pk]; Print[K == qLessDecapCPA[n, k, sk, pk, Ch]]; En variante, l’invention prévoit une deuxième technique aboutissant à un KEM n’exposant pas , cette variante étant notée . Par exemple, au lieu d’effectuer une recherche exhaustive sur les , il a d’ores et déjà été précisé qu’il est possible d’exploiter l’algorithme LLL dans l’algorithme pour résoudre l’équation pour les inconnues sous les contraintes et . Cette équation admet en moyenne solutions du fait que . Il suffit alors d’effectuer une recherche exhaustive dans cet espace de solutions jusqu’à identifier une solution telle que . Il en découle que le dispositif électronique émetteur (10-2) n’a plus besoin de calculer modulo et reste inconnu de l’adversaire. L’invention prévoit une troisième technique pour ne pas exposer à l’adversaire, cette variante étant notée . Si la compression de la clé publique n’est pas requise, le procédé 120 de génération de clés peut être modifié en générant . Puis, à l’aide de LLL, résoudre pour des petits s (typiquement ) et . Cette équation admet en moyenne solutions du fait que . Une fois la résolution terminée, il est possible de définir . Puisque maintenant il n’est pas nécessaire de fournir dans . Puisque maintenant il n’est pas non plus nécessaire de fournir dans et l’adversaire ne peut utiliser à des fins d’attaque. L’invention prévoit une quatrième technique pour ne pas exposer à l’adversaire, cette variante étant notée . En effet, il est également possible d’omettre dans le calcul du secret par , 10-2 et donner un chiffré potentiellement négatif. Dans ce mode de réalisation pour encapsuler un secret , le dispositif électronique ,10-2 procède en deux étapes : le vecteur est choisi dans d’une manière telle que soit un entier positif inférieur à . A cette fin, il est seulement nécessaire de fournir une borne sur et non . Une fois calculé, le chiffré correspondant est calculé dans , résultant éventuellement en un nombre signé dont le signe fait partie du chiffré . La procédure de décapsulation est invariante. Pour produire de sorte que soit un entier positif inférieur à , selon un premier sous-mode de réalisation de , le dispositif électronique , 10-2 divise les bits de en trois parties : une moitié est choisie égale à zéro, un quart est choisi égal à 1 et un quart est choisi égal à . Une borne inférieure sur est donnée au dispositif électronique , 10-2 afin que ce dernier puisse choisir un assortiment de clés tel que est positif et inférieur à . Selon un second sous-mode de réalisation de , il est possible de prendre puis, une fois la somme connue, (10-2) l’on divise par l’un des (par exemple ), calcule la quantité , vérifie que et ensuite corrige le chiffré en soustrayant à . Selon un troisième sous-mode de réalisation de , il est possible de prendre puis, une fois la somme connue, (10-2) soustrait à une combinaison linéaire de notée calcule la quantité , vérifie que et ensuite (10-2) corrige le chiffré en soustrayant un « facteur miroir » à . L’invention prévoit une cinquième technique pour ne pas exposer à l’adversaire, cette variante étant notée . Ce procédé utilise la recherche exhaustive permettant de retrouver le petit tel que ajouté à la clé décapsulée donne la clé encapsulée calculée dans les entiers. Cette égalité étant confirmée par une redondance de la clé, notée et ajoutée au chiffré. A titre d’exemple illustratif, un tel procédé pourrait être exprimé en langage Mathematica comme suit : qLess5AlgGenCPA := Function[{n, k}, {p, q} = RandomPrime[2^#] & /@ {n, k}; {d, \[Mu]} = RandomInteger[#-1] & /@ {p, q}; w = RandSumVec[p, n]; v = Mod[PowerMod[d, -1, p] w, p]; s = Mod[\[Mu] w, q]; {{q, p, d, \[Mu]}, {v, s}}]; qLess5EncapCPA := Function[{n, k, pk}, {v, s} = pk; m = Table[RandomInteger[1], {i, 1, n}]; {Ch = m . v, K = m . s, h = Hash[K]}]; qLess5DecapCPA := Function[{n, k, sk, pk, Ch, h}, {v, s} = pk; {q, p, d, \[Mu]} = sk; b = Mod[Ch d, p]; K = Mod[b \[Mu], q]; i = 0; While[Hash[K + q*i] != h, i++]; K + q*i]; L’exécution d’un tel code imprimera effectivement « vrai » : n = 2000; k = Floor[n*0.291]; {sk, pk} = qLess5AlgGenCPA[n, k]; q = sk[[1]]; {Ch, K, h} = qLess5EncapCPA[n, k, pk]; Print[K == qLess5DecapCPA[n, k, sk, pk, Ch, h]]; Ce procédé peut également être généralisé au cas de manière évidente. Enfin, l’invention prévoit une sixième technique pour ne pas exposer à l’adversaire, cette variante étant notée . En effet, il est également possible d’omettre dans le calcul de du secret par , 10-2 et procéder de la manière suivante, illustrée ci-après avec le paramètre Lors de l’encapsulation, calculer dans en effectuant une simple somme sur les entiers. Une fois reçu par , 10-1, ce dernier peut retrouver . Pour aider le dispositif électronique , 10-1 à retrouver dans , le dispositif électronique ,10-2 envoie, avec , les bits les plus significatifs de notés ici . Ainsi . Connaissant et , le dispositif électronique , 10-1 peut aisément calculer . A titre d’exemple illustratif, un tel procédé pourrait être exprimé en langage Mathematica comme suit, où on notera l’importance de générer des modules q d’exactement bits : RandSumVec := Function[{p, n}, w = {}; While[Length[w] != n, r = Sort[Table[RandomInteger[p - 1], {i, 1, n}]]; w = Prepend[Table[r[[i]] - r[[i - 1]], {i, 2, n}], r[[1]]]]; w]; qLess6AlgGenCPA := Function[{n, k}, {p, q} = RandomPrime[{2^(# - 1), 2^#}] & /@ {n, k}; {d, \[Mu]} = RandomInteger[#] & /@ {p, q}; w = RandSumVec[p, n]; v = Mod[PowerMod[d, -1, p] w, p]; s = Mod[\[Mu] w, q]; {{p, d, \[Mu]}, {q, v, s}}]; qLess6EncapCPA := Function[{n, k, pk}, {q, v, s} = pk; m = Table[RandomInteger[1], {i, 1, n}]; {Ch = m . v, K = m . s, H = (K - Mod[K, 2^(k - 1)])/2^(k - 1)}]; qLess6DecapCPA := Function[{n, k, sk, pk, Ch, H}, {q, v, s} = pk; {p, d, \[Mu]} = sk; b = Mod[Ch d, p]; K = H 2^(k - 1) + Mod[b \[Mu] - H 2^(k - 1), q]]; L’exécution d’un tel code imprimera effectivement « vrai » : n = 500; k = Floor[n*0.291]; {sk, pk} = qLess6AlgGenCPA[n, k]; {Ch, K, H} = qLess6EncapCPA[n, k, pk]; K == qLess6DecapCPA[n, k, sk, pk, Ch, H] Par ailleurs, étant donnée la structure algébrique simple de l’invention, il est possible de la généraliser à une variété d’anneaux, de groupes et de corps finis. De telles généralisations (traductions d’une structure algébrique vers une autre), évidentes à l’homme de l’art sont fréquemment le cas en cryptologie, comme en témoignent les références suivantes : M. van Dijk, C. Gentry, S. Halevi et V. Vaikuntanathan, « Fully Homomorphic Encryption over the Integers », Advances in Cryptology - EUROCRYPT 2010, 29th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Monaco / French Riviera, May 30 - June 3, 2010. Proceedings, Lecture Notes in Computer Science, vol. 6110, pp. 24-43, Springer, 201 ; J.H. Cheon et D. Stehlé, « Fully Homomorphic Encryption over the Integers Revisited », Advances in Cryptology -- EUROCRYPT 2015, 2015, Springer Berlin Heidelberg, pp. 513—536 ; D. Aggarwal, A. Joux, A. Prakash et M. Santha, « A New Public-Key Cryptosystem via Mersenne Numbers », Advances in Cryptology - CRYPTO 2018 - 38th Annual International Cryptology Conference, Santa Barbara, CA, USA, August 19-23, 2018, Proceedings, Part III, Lecture Notes in Computer Science, vol. 10993, pp. 459-482, Springer, 2018 ; J.S. Coron, T. Lepoint et M. Tibouchi, « New Multilinear Maps Over the Integers », Advances in Cryptology - CRYPTO 2015 - 35th Annual Cryptology Conference, Santa Barbara, CA, USA, August 16-20, 2015, Proceedings, Part I, Lecture Notes in Computer Science, vol. 9215, pp. 267-286, Springer, 2015 ; K. Jarvis et M. Nevins, « ETRU: NTRU over the Eisenstein integers », Des. Codes Cryptogr., vol. 74, n° 1, pp. 219-242, 2015 ; A. Joux, « Fully homomorphic encryption modulo Fermat numbers », Cryptology ePrint Archive, Report 2019/187, 2019, https://ia.cr/2019/187. De manière similaire, le procédé inventif pourrait être généralisé à des non binaires. Les algorithmes présentés dans la présente invention seraient alors basés sur le problème du SàD borné (« Bounded Knapsack Problem », cf. H. Kellerer, U. Pferschy et D. Pisinger, « The Bounded Knapsack Problem », Knapsack Problems, 2004, Springer Berlin Heidelberg, Berlin, Heidelberg, pp. 185-209). Une telle généralisation entraîne une modification de la taille des et donc un nouvel équilibrage des paramètres et des niveaux de sécurité, comme il est évident à l’homme de l’art. L’invention a été décrite au travers d’un exemple illustré par la figure 1 selon lequel un deuxième dispositif électronique , 10-2 souhaite partager la valeur d’un second secret , que nous pouvons référencer , avec un unique premier dispositif électronique , 10-1 pour exploiter ledit secret et produire une clé de session. Pour cela, ledit secret , est encapsulé (procédé 130) à partir de la clé publique du destinataire , 10-1 (produite par un procédé 120) sous la forme d’un chiffré . Ledit destinataire , 10-1 recouvre la valeur dudit secret par la mise en œuvre d’un procédé de décapsulation (procédé 140) dudit chiffré . L’invention prévoit en outre que les procédés 130 et 140 puissent être mis en œuvre successivement dans des directions opposées par les deux dispositifs électroniques , 10-2 et , 10-1. Ainsi, à son tour le premier dispositif électronique , 10-1, agissant comme partage la valeur d’un secret , que nous pouvons référencer , avec l’unique deuxième dispositif électronique , 10-2 agissant comme pour exploiter ledit secret et produire une clé de session. Ledit secret , est encapsulé (procédé 130) sous la forme d’un chiffré à partir de la clé publique , du destinataire , 10-2. Ledit destinataire , 10-2 recouvre la valeur dudit secret par la mise en œuvre d’un procédé de décapsulation (procédé 140) dudit chiffré . L’invention prévoit alors que la future clé de session exploitée par les deux dispositif électroniques , 10-2 et , 10-1 puisse résulter d’une combinaison des secrets et ainsi échangés de manière sécurisée. A titre d’exemples non limitatifs, ladite clé de session peut résulter de la mise en œuvre par les deux dispositifs électroniques , 10-2 et , 10-1 d’un ou-exclusif ou d’une fonction de hachage appliqué auxdits secrets et . Enfin, il importe de noter que les différents procédés et modes de réalisation peuvent être combinés entre eux afin d’offrir de nombreuses options de mise en œuvre évidente à l’homme de l’art. A titre d’exemple non limitatif, le procédé suivant, noté fournit à la fois une compression des clés publiques telle que celle fournie par et une extension à telle que celle fournie par . Puisque les procédés et sont évidents à l’homme de l’art nous allons nous attacher à expliquer comment compresser le couple dans le cas L’étape de génération d’un couple de clés secrète et publique, notée , correspondant à , ainsi que de publication de ladite clé publique produite consiste à : générer une deuxième donnée aléatoire par un générateur de nombres aléatoires 13 du premier dispositif électronique , 10-1 accomplissant ladite étape, ladite deuxième donnée aléatoire et en dériver , la est publique et la est gardée secrète ; produire la clé secrète compressible où , et sont dérivés de manière déterministe de ; produire la clé publique compressible où : est un premier de bits dérivé de manière déterministe de ; est dérivé de manière déterministe de ; est initialisé aléatoirement ; est produit ainsi : pour , tant que rafraîchir ; ; ; ; ; . Il est aisé de voir que pk peut être compressée en ce qui permet un gain de mémoire considérable. Procédé de transport (100) d’un secret résistant aux attaques par ordinateur quantique, ledit procédé étant mis en œuvre par un système informatique (10) comportant un premier (10-1) et un deuxième (10-2) dispositifs électroniques, lesdits premier et deuxième dispositifs électroniques comportant chacun une unité de traitement (11) coopérant avec une mémoire de données (12) et des moyens de communication (15) avec le monde extérieur, ledit premier dispositif électronique (10-1) étant conçu pour recevoir et exploiter le secret préalablement produit et encapsulé par ledit deuxième dispositif électronique (10-2), ledit procédé de transport (100) comportant : une étape (110) de génération et de publication de paramètres généraux dudit procédé de transport (100) mise en œuvre par le premier dispositif électronique (10-1) ; une étape (120) de génération d’un couple de clés secrète et publique, ainsi que de publication de ladite clé publique produite, ladite étape (120) étant mise en œuvre par le premier dispositif électronique (10-1), ledit couple de clés secrète et publique étant produit à partir desdits paramètres généraux et à partir d’une première donnée aléatoire ( ) produite par un générateur de nombres aléatoires (13) dudit premier dispositif électronique (10-1) ; une étape (130) d’encapsulation du secret sous la forme d’un chiffré et de transmission de ce dernier, ladite étape (130) étant mise en œuvre par ledit deuxième dispositif électronique (10-2) à partir desdits paramètres généraux , de la clé publique dudit premier dispositif électronique (10-1) et d’une deuxième donnée aléatoire ( ) produite par le générateur de nombres aléatoires (13) dudit deuxième dispositif électronique (10-2) ; une étape (140) de décapsulation dudit secret mise en œuvre par ledit premier dispositif électronique (10-1) à partir dudit chiffré , desdits paramètres généraux et du couple de clés secrète et publique d’ores et déjà produit (120) par le premier dispositif électronique (10-1) ; ledit procédé de transport (100) étant caractérisé en ce que ladite deuxième donnée aléatoire ( ) sert à dériver un vecteur de entiers et en ce que l’étape (130) d’encapsulation du secret sous la forme d’un chiffré et de transmission de ce dernier consiste à mettre en œuvre deux sommes ayant des mêmes indexes , le chiffré consistant en une première somme telle que et le secret consistant en une seconde somme, dite « somme miroir » telle que , ladite première somme étant calculée dans une première structure algébrique, ladite seconde somme étant calculée dans une deuxième structure algébrique et les vecteurs et étant extraits de la clé publique dudit premier dispositif électronique (10-1). Procédé (100) selon la revendication 1 pour lequel lesdites première et deuxième structures algébriques sont l’anneau des entiers . Procédé (100) selon la revendication 1 pour lequel lesdites première et deuxième structures algébriques sont des corps finis. Procédé (100) selon la revendication 1 pour lequel ladite première structure algébrique est l’anneau des entiers et ladite seconde structure algébrique est un corps fini. Procédé (100) selon la revendication 1 pour lequel ladite première structure algébrique est un corps fini et ladite seconde structure algébrique est l’anneau des entiers . Procédé (100) selon la revendication 4 pour lequel : l'étape (110) de génération et de publication de paramètres généraux consiste en la détermination d’un entier tel que , étant un paramètre de sécurité, étant défini par la paire ; l’étape (120) de génération d’un couple de clés secrète et publique, ainsi que de publication de ladite clé publique produite consiste à : utiliser la première donnée aléatoire ( ) afin de dériver les paramètres suivants : un entier de bits ; un entier premier de bits ; des entiers et tels que ; un vecteur de entiers positifs dont la somme est bornée par ; produire la clé secrète ; produire la clé publique , les vecteurs et étant définis par les deux relations et ; l’étape (130) d’encapsulation du secret consiste à utiliser la deuxième donnée aléatoire ( ) afin de produire un vecteur de entiers à partir duquel sont calculés le chiffré et la clé ; l’étape (140) de décapsulation du secret consiste à recouvrer (141) la clé telle que où . Procédé selon la revendication précédente pour lequel le vecteur est produit par la séquence d’opérations suivantes : ; tant que ledit vecteur ne contient pas éléments distincts faire : ; selon le critère , pour ; et pour . Procédé (100) selon la revendication 2, pour lequel : l'étape (110) de génération et de publication de paramètres généraux consiste en la détermination d’un entier tel que , étant un paramètre de sécurité, étant défini par la paire ; l’étape (120) de génération d’un couple de clés secrète et publique, ainsi que de publication de ladite clé publique produite consiste à : utiliser la première donnée aléatoire ( ) afin de dériver les paramètres suivants : un entier de bits ; un entier premier de bits ; des entiers et tels que ; un vecteur de entiers positifs dont la somme est bornée par et tels que ; produire la clé secrète ; produire la clé publique , les vecteurs et étant définis par les deux relations et ; l’étape (130) d’encapsulation du secret consiste à utiliser la deuxième donnée aléatoire ( ) afin de produire un vecteur de entiers à partir duquel sont calculés le chiffré et la clé ; l’étape (140) de décapsulation du secret consiste à recouvrer (141) la clé telle que où . Procédé (100) selon la revendication 4, pour lequel : l'étape (110) de génération et de publication de paramètres généraux consiste en la détermination d’un entier tel que , étant un paramètre de sécurité, étant défini par la paire ; l’étape (120) de génération d’un couple de clés secrète et publique, ainsi que de publication de ladite clé publique produite consiste à : utiliser la première donnée aléatoire ( ) afin de produire deux graines ; produire la clé secrète où , et sont dérivés de manière déterministe de ; produire la clé publique où : le vecteur est dérivé de manière déterministe de ; est un nombre premier de bits dérivé de manière déterministe de ; le vecteur et le vecteur étant produits par le procédé suivant : ; pour faire : tant que rafraîchir ; ; compresser la clé pk en , ; l’étape (130) d’encapsulation du secret , consiste à : décompresser , en dérivant de la graine_pk le vecteur puis former ; générer à partir de la deuxième donnée aléatoire (MM), un vecteur de entiers à partir duquel sont calculés le chiffré et la clé ; l’étape (140) de décapsulation du secret consiste à recouvrer les données à partir de puis à recouvrer (141) la clé telle que où . Procédé (100) selon l’une quelconque des revendications 6 à 9, pour lequel est premier ou tel que . Procédé (100) selon la revendication 4 pour lequel : l'étape (110) de génération et de publication de paramètres généraux consiste en la détermination d’un entier tel que , étant un paramètre de sécurité et d’un entier non nul, lesdits paramètres généraux étant le triplet ; l’étape (120) de génération d’un couple de clés secrète et publique, ainsi que de publication de ladite clé publique consiste à produire, à partir de la première donnée aléatoire ( ), les données suivantes : un entier de bits ; un vecteur avec ; un vecteur ; une matrice aléatoire inversible de dimension dont les éléments sont pris aléatoirement dans ; une clé secrète ; une clé publique , les vecteurs et étant produits tels que : vérifie la condition et ; où ; l’étape (130) d’encapsulation du secret consiste à utiliser la deuxième donnée aléatoire (MM) afin de produire un vecteur de entiers à partir duquel sont calculés le chiffré et la clé } ; l’étape (140) de décapsulation du secret consiste à recouvrer (141) la clé telle que où . Procédé selon la revendication précédente pour lequel est inférieur ou égal à 4. Procédé (100) selon l’une quelconque des revendications 6 à 12, pour lequel est tel que . Procédé (100) selon l’une quelconque des revendications 1 à 10, pour lequel les étapes (130) d’encapsulation et de décapsulation du secret comporte l’application d'une fonction à sens unique audit secret pour produire un deuxième secret destiné à être exploité à des fins cryptographiques. Procédé (100) selon la revendication 11 ou 12, pour lequel l’étape (130) d’encapsulation du secret comporte l’application d'une fonction à sens unique audit secret pour produire un deuxième secret destiné à être exploité à des fins cryptographiques. Produit programme d’ordinateur comportant une ou plusieurs instructions (P) de programme exécutables par l’unité de traitement (11) d’un ordinateur, lesdites instructions de programme (P) étant chargeables dans une mémoire (14) dudit ordinateur et dont l’exécution par ladite unité de traitement (11) provoque la mise en œuvre d’un procédé (100) selon l’une quelconque des revendications précédentes. Support de mémorisation lisible par un ordinateur comportant les instructions d’un produit programme d’ordinateur selon la revendication précédente. Système informatique (1) comportant une pluralité de dispositifs électroniques (10-1, 10-2, 10-g) comprenant chacun une unité de traitement (11) et une mémoire (14), ladite mémoire (14) de chacun desdits dispositifs électroniques (10-1, 10-2, 10-g) comprenant les instructions (P) de programme d’un produit programme d’ordinateur selon la revendication 16.