Brevet FR3154208A1 — publié le 20250418

Procédé de preuve à divulgation nulle niable (100), mis en œuvre par un système informatique (10) comportant un premier (10-1), un deuxième (10-2) dispositifs électroniques, lesdits deux dispositifs électroniques comportant chacun une unité de traitement (11) coopérant avec une mémoire de données (12) et de moyens de communication (15) avec le monde extérieur, le procédé (100) comprenant une phase (110) de génération et de publication de paramètres généraux et de clés publiques et privées d’un protocole de preuve à divulgation nulle et une phase (120) de vérification de la connaissance de sk par le premier dispositif électronique (10-1). [Fig 1] Titre de l'invention PROCEDE ET DISPOSITIF DE DIVULGATION NULLE NIABLE L'invention se rapporte au domaine de la cryptologie. Plus précisément, l'invention concerne des procédés de preuve à divulgation nulle. 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 (1) de génération de paramètres et de génération de clés, (2) de protocole de preuve niable de connaissance de secret. L’un des domaines d’application préféré d’une telle invention concerne les communications sécurisées entre des dispositifs électroniques d’un tel 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 notamment le concept de « preuve à divulgation nulle » (« PDNs ») et en particulier les -protocoles qui sont une classe particulière de PDNs. Le protocole Fiat-Shamir sera utilisé de manière non limitative comme exemple afin d’illustrer l’invention. 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 Une fonction de hachage cryptographique Anneau des entiers modulo 0 La concaténation des nombres binaires et . Résultat du « ou exclusif » entre les chaînes binaires et LES PROTOCOLES DE PREUVE A DIVULGATION NULLE L'invention appartient à la catégorie large des procédés cryptographiques asymétriques dits également « procédés cryptographiques à clé publique ». Il s'agit notamment de protocoles, dites « protocole de preuve à divulgation nulle » (« PDNs ») permettant une communication dans lesquels une entité, dite « le prouveur », désignée par la référence (10-1), prouve la connaissance d’un secret à une entité (10-2) dite « le vérifieur » qui vérifie la connaissance du secret par (10-1). Lesdites entités (10-2) et (10-1) ne partagent aucune clé privée commune a priori . Une méthode pour construire des PDNs utilise ce qu'on appelle des -protocoles (ainsi nommés en raison de la communication en trois échanges qui fait penser à la lettre grecque Sigma). -protocoles est un protocole interactif entre un prouveur et un vérifieur mettant en jeu trois échanges : L’ engagement (ou le « gage ») qui est un premier message envoyé par le prouveur au vérifieur ; Le défi , qui est une question envoyée par le vérifieur ; La réponse , qui est le dernier message envoyé par le prouveur. permet de répondre à la question par rapport à l’engagement . De multiples preuves sans divulgation de connaissances reposent sur cette construction, par exemple les protocoles de Fiat-Shamir, de Schnorr, ou de Guillou-Quisquater dont il sera question plus tard. La compréhension de l’art antérieur et de l’invention requiert le rappel de la notion de « fonction d’engagement » (on trouve également le terme français de « de mise en gage » pour désigner cette notion). En cryptologie, l’engagement est un processus qui permet à une personne de « mettre en gage » une valeur (ou un énoncé) tout en la maintenant cachée aux autres, avec la possibilité de révéler cette valeur plus tard en prouvant que c'est bien la valeur qui avait été mise en gage. L’engagement est conçu de telle sorte que la personne est liée à la valeur mise en gage. En pratique, la mise en gage se fait en calculant une valeur de mise en gage à partir de la valeur que l'on veut cacher et en communiquant cette valeur de mise en gage à un destinataire. Par la suite, lorsque la valeur originellement cachée sera communiquée au destinataire, celui-ci pourra vérifier que la valeur qui lui a été révélée est bien la valeur qui a servi à calculer la valeur de mise en gage. Plus formellement, la mise en gage transforme une valeur en une paire de telle que : 1) ne révèle aucune information sur , mais que, 2) ensemble, et permettent de révéler , et que 3) il est impossible de trouver tel que révèle . Dans la pratique, dans de nombreux scénarios, il est possible simplement de communiquer à titre d’engagement un haché car le fait de révéler permet ultérieurement à tout un chacun de recalculer . Cette pratique souffre toutefois d’une faiblesse : si l’entropie de est faible un attaquant pourrait retrouver par recherche exhaustive à partir de . Par exemple, si est un mot du français usuel, une recherche exhaustive portant sur les 32000 mots du français usuel révèlera . Afin de protéger contre une telle attaque il est habituel de s’engager sur où est un aléa de grande taille (par exemple 160 bits) puis de révéler, lors de l’ouverture de l’engagement, les données et . Les engagements utilisés dans la présente invention sont supposés implicitement utiliser cette mise en œuvre évidente à l’homme de l’art. Nous noterons de manière générique (sans mentionner l’aléa dont l’usage est implicite) un engagement sur un message . La vérification de sera notée de manière générique (toujours sans mentionner l’aléa dont l’usage est implicite). La procédure retourne un booléen selon que l’ouverture ait réussi ou pas. La cryptographie asymétrique définit deux clés : une clé publique connue de tous, notamment de (10-2) et une clé privée gardée confidentielle par le prouveur (10-1). Cette propriété est également vraie pour les PDNs. Un PDN comporte deux phases : un algorithme de génération de clés et de paramètres et le protocole d’identification . L’algorithme de génération de clés et de paramètres permet audit prouveur (10-1) de générer les clés et et les paramètres nécessaires au fonctionnement du PDN (ces paramètres étant par la suite notés « »). est supposé accessible à tous et public. La phase permet audit prouveur (10-1) de prouver la connaissance du secret . est également supposé accessible à tous et public. Un programme informatique dont les instructions de programme provoquent la mise en œuvre des algorithmes et peut être mis en œuvre par tout ordinateur ou dispositif électronique agencé pour enregistrer ledit programme informatique dans une mémoire. Les programmes encodant les algorithmes , et peuvent être publiés sans crainte aucune pour la sécurité de ladite communication. Ainsi, l’entité prouveur (10-1) peut prouver sa connaissance de à toute entité vérifieur (10-2). Le vérifieur (10-2) utilise la clé publique du prouveur (10-1) afin s’assurer de la connaissance de par (10-1) et ce d’une manière ne permettant pas à (10-2) d’apprendre aucune information sur . Seul le prouveur (10-1) sera capable de prouver la connaissance de par rapport à la clé publique . Dans un PDN le prouveur (10-1) fait appel à un aléa SS lors de sa participation au protocole . Le vérifieur (10-2) fait également appel à un aléa SS’ lors de sa participation au protocole . Afin de ne pas alourdir les notations nous ne notons pas le fait implicite que le prouveur (10-1) et le vérifier (10-2) ont accès à et utilisent la donnée lors de leurs interactions. De même, nous supposons que le tirage d’aléas PP nécessaires à la production de par est un détail interne de l’algorithmes et est ainsi implicitement inclue dans la notation . Lesdites clés publique et privée sont générées à l’aide d’un algorithme probabiliste Gen 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. Souvent, les algorithmes de génération de paramètres et de génération de clés sont fusionnés en un seul algorithme. Dans le cadre de la présente invention la séparation de en deux phases n’a aucune pertinence, ainsi, pour la clarté de l’exposé les deux phases seront par la suite fusionnées en un seul algorithme noté . Par exemple, un PDN célèbre est l’algorithme dit Fiat-Shamir décrit dans le brevet américain U.S. US4748668A par A. Fiat et A. Shamir, intitulé « Method, apparatus and article for identification and signature » et dans l’article publié par U. Feige, A. Fiat et A. Shamir et intitulé « Zero-knowledge proofs of identity », Journal of Cryptology,‎ 1988 et dans l’article publié par A. Fiat et A. Shamir intitulé « How To Prove Yourself: Practical Solutions to Identification and Signature Problems », Crypto 1986,‎ 1986. Un second exemple de PDN est l’algorithme de Guillou-Quisquater décrit dans le brevet américain U.S. 7680271B2 par L. Guillou et J.-J. Quisquater intitulé « Zero-knowledge proof cryptography methods and devices » publié par L. Guillou et J.-J. Quisquater, dans l’article intitulé « A Practical Zero-Knowledge Protocol Fitted to Security Microprocessor Minimizing Both Transmission and Memory », Eurocrypt,‎ 1988. Un troisième exemple de PDN est l’algorithme de Schnorr, décrit dans le brevet américain U.S. 4995082A par C.-P. Schnorr intitulé « Method for identifying subscribers and for generating and verifying electronic signatures in a data exchange system » publié par C.-P. Schnorr, dans l’article intitulé « Efficient Identification and Signature for Smart Cards », Theory and Application of Cryptology, Springer,‎ 1989. La plupart des PDNs actuels 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 1987, le protocole Fiat-Shamir précédemment évoqué constitue le précurseur de presque tous les PDNs modernes. Selon le PDN de Fiat-Shamir chaque prouveur (10-1) dispose d'une clé publique et d'une clé privée . Le nombre est le produit de deux grand nombres premiers. La clé privée est définie par la relation et se dérive des facteurs premiers de . Les aléas servant à générer ces paramètres et clés sont fournis pas PP. Lors de la phase , pour prouver sa connaissance de , (10-1) génère à partir de SS un aléa et envois à (10-2) un engagement . (10-2) réplique avec un défi aléatoire composé de chiffres en base (en d’autres termes ). est généré à partir de SS’. (10-1) réplique avec la réponse Le vérifieur (10-2) vérifie la connaissance du secret par (10-1) grâce au test . En effet, si les (10-1) et (10-2) suivent les spécifications on a : . L’ensemble des données intervenant dans ces calculs se présentent sous la forme de grands nombres. Souvent la valeur prise pour est 2 mais d’autres valeurs entières de peuvent être utilisées. La PDN de Fiat-Shamir donne lieu à de nombreuses variantes et optimisations connues à l’homme de l’art. Ces variantes permettent notamment de diminuer la taille de ou des ou de réduire en répétant le protocole fois afin d’attendre un niveau de sécurité de . Le niveau de sécurité exprime la probabilité qu’une entité ne connaissant pas puis quand-même passer le protocole et convaincre (10-2) qu’elle détient . La plupart des PDNs repose sur un protocole d’échange similaire à trois passes consistant à échanger successivement les données entre les parties. La définition de ces varie en fonction du problème difficile sous-jacent à la sécurité du PDN mais le schéma de communication à trois passes reste le même. Comme mentionné auparavant, cette famille de PDNs est usuellement désignée par le terme générique « -protocoles ». Il existe des PDNs à plus de trois passes mais les techniques décrites dans la présente invention s’étendent de manière triviale et évidente à ces protocoles également. L’ALGORITHME DE SIGNATURE RSA Par exemple, un algorithme signature numérique 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. La plupart des techniques de signature numérique 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, la signature RSA précédemment évoquée constitue le précurseur de presque tous les schémas de signature modernes, selon lequel chaque signataire (10-1) dispose d'une clé publique et d'une clé privée . Le nombre est le produit de deux grand nombres premiers. Pour signer un message de la part de ce signataire (10-1), les données dudit message sont codées sous la forme d'un grand nombre entier et mélangés mathématiquement à l'aide de la clé privée correspondante à la clé publique appartenant audit signataire (10-1) ce mélange s’effectue par la relation . Le vérifieur (10-2) qui reçoit ledit message et sa signature peut ensuite vérifier la signature grâce à la clé publique . Cette vérification s’effectue en comparant à la valeur . Dans la signature RSA, la clé publique se présente donc sous la forme d'un grand nombre composite , et d’un exposant , souvent égal à trois. La clé privée , égale à l’inverse modulaire de modulo , se dérive des facteurs premiers de . INCONVENIENTS DE L’ETAT DE L’ART Les -protocoles présentent un inconvénient majeur : si (10-2) se comporte de manière malhonnête, il peut garder une trace de son interaction avec (10-1) et ainsi ne plus permettre à (10-1) de nier l’interaction. Une telle niabilité est particulièrement désirable dans de nombreux scénarios. Considérons par exemple le lecteur de carte de médecin (10-2) interagissant avec la carte sans contact (10-1) d'un patient permettant d'obtenir une prescription anonyme de méthadone (la méthadone est un substitut de la drogue héroïne). Le titulaire de la carte a le droit d'obtenir de la méthadone, cependant, pour des raisons de confidentialité médicale, il ne veut laisser aucune preuve de l’interaction avec le médecin (10-2) et pouvoir nier de telles interactions dans le futur. Un PDN répond, à première vue, parfaitement à ce besoin : le médecin (10-2) obtient l'assurance que le patient (10-1) a droit aux soins alors que le patient (10-1) ne laisse aucune trace après la consultation. Notons que la carte remise au patient n'a pas besoin d'être anonyme : elle pourrait identifier le patient visuellement ou électroniquement (par exemple avec un code PIN, une photo ou une empreinte digitale) mais ne laisse aucune trace auprès du docteur. Malheureusement, un médecin souhaitant collecter une preuve de l’interaction avec la carte du patient, pourrait le faire si est suffisamment long. Pour ce faire, il lui suffit de prendre une fonction de hachage quelconque et en dériver une fonction de hachage artificiellement ralentie . Pour ralentir la fonction , le médecin pourrait par exemple, itérer sur son entrée fois, pour une valeur de suffisamment large. En d’autres termes . Le temps de calcul de se trouve ainsi ralenti par un facteur . Lors du PDN, le patient-prouveur (10-1) envois . Le docteur-vérifieur (10-2) peut alors dériver le défi à partir de , par exemple en puisant les chiffres constituant dans . La réponse produite par (10-1) ne serait alors niable car elle démontre la participation du prouveur (10-1) au PDN. La raison de cette faille est la probabilité qu'un (10-2) investissant une charge de travail puisse faussement prétendre que (10-1) a participé à la session (alors que (10-1) ne l'a pas fait). Un calcul évident à l’homme de l’art démontre que cette probabilité vaut . Comme application numérique, soit et . Un (10-2) souhaitant faussement prétendre, avec une probabilité de succès de que (10-1) a participé à une session devrait exécuter opérations de hachage. Comme cet effort est irréalisable, cela lie clairement le (10-1) à la trace du PDN. Avec et . Un (10-2) souhaitant faussement prétendre, avec une probabilité de succès de , que (10-1) a participé à une session devrait exécuter opérations de hachage qui, encore une fois, est un effort démesuré lient clairement (10-1) à la trace du PDN. Si est large (par exemple ) il n’est même plus besoin de ralentir . En effet - dans cette configuration on obtient une certitude de que (10-1) a participé dans le PDN. DESCRIPTION DE L’INVENTION L’invention répond aux inconvénients soulevés par l’état de la technique qui viennent d’être exposées. Afin d’adopter une notation concise et claire, nous notons : Notation Signification Les paramètres système de PDN La clé publique dudit prouveur (10-1) La clé privée dudit prouveur (10-1) Un aléa généré par ledit prouveur (10-1) Un engagement généré par ledit prouveur (10-1) Un défi généré par ledit vérifieur (10-2) La réponse au défi générée par ledit prouveur (10-1) Notation Signification Le prouveur But de (10-1) : prouvr à (10-2) qu’il connait sk. Le vérifieur But de (10-2) : vérifier que (10-1) connait sk. L’invention définit par ailleurs un paramètre niveau de sécurité . Ce paramètre sera, typiquement dans la plage . Nous considérons le scenario inventif suivant nommé PDNN (pour « Preuve à divulgation nulle niable ») dans lequel un prouveur (10-1) prouve sa connaissance d’un secret à un vérifieur (10-2). Un PDNN comporte deux processus successifs, respectivement : (1) le processus de génération de paramètre généraux et de génération des clés privée et publique du prouveur (10-1), cette dernière étant publiée. Ce processus est identique au processus de l’art antérieur. (2) le processus de preuve de connaissance de par le prouveur (10-1) à l’attention du vérifieur (10-2). Ce processus diffère di processus de l’art antérieur. Ces deux processus successifs, qui seront décrits ultérieurement sous la forme des procédés 110, 120, en lien avec les figures 2 et 3, mettent respectivement en œuvre deux algorithmes précédemment désignés par les termes et . Ces algorithmes consistent en la séquence d’étapes suivante : : Ledit prouveur (10-1) fixe le niveau de sécurité , génère des paramètres généraux, notés , nécessaires à l’opération du PDNN. Puis ledit prouveur (10-1) génère une clé privée gardée confidentielle et une clé publique publiée, comme le résume la relation ; Ledit vérifieur (10-2) reçoit et enregistre les données nécessaires à l’opération du PDNN; Comme expliqué auparavant, ce processus ne diffère en rien d’un procédé de génération de clés et de paramètres standard d’un PDN classique. : Ledit prouveur (10-1), souhaitant prouver sa connaissance du secret commence par requérir de la part de (10-2) un engagement sur le défi que (10-2) souhaite utiliser plus tard. Le vérifieur (10-2) génère un défi aléatoire , calcule un engagement et communique au prouveur (10-1). C’est seulement après avoir reçu que le prouveur (10-1) génère son propre engagement du -protocole (noté ) et envois au vérifieur (10-2). Le vérifieur (10-2) révèle au prouveur le défi . Le prouveur (10-1) vérifie l’engagement par le procédé et conditionne la poursuite des échanges par la réussite de l’algorithme . Si l’étape précédente n’a pas provoqué une interruption du PDNN le prouveur (10-1) réplique par la réponse que le vérifieur (10-2) vérifie afin d’accepter (ou pas) prouveur (10-1). Ainsi il apparait que le procédé PDNN diffère d’un PDN en deux caractéristiques essentielles : 1. Un engagement en début du protocole par le vérifieur (10-2) sur le défi qui sera utilisé plus tard. 2. Une vérification en milieu du protocole par le prouveur (10-1) de l’exactitude de l’engagement du vérifieur (10-2) sur le défi et le conditionnement de l’envoi de la réponse par l’exactitude de l’engagement du vérifieur (10-2) sur le défi . Dans le cas spécifique du Fiat-Shamir, ce protocole devient : La génération des clés dans le cas d’un PDNN Fiat-Shamir est identique au Fiat-Shamir classique, ainsi nous n’allons pas la détailler de nouveau. Lors de la phase : (10-2) génère à partir de SS’ un défi aléatoire composé de chiffres en base (en d’autres termes ). (10-2) prépare un engagement sur noté et communique au prouveur (10-1). (10-1) génère à partir de SS un aléa et communique à (10-2) un engagement . (10-2) réplique avec (10-1) vérifie la cohérence entre et . Si n’est pas un engagement valide sur , (10-1) interrompt le protocole. Si est un engagement valide sur , (10-1) communique à (10-2) la réponse (10-2) vérifie la connaissance du secret par (10-1) grâce au test . Parmi les nombreux avantages apportés par la présente invention, nous pouvons mentionner que : Le vérifieur (10-2) acquiert la certitude que (10-1) dispose bien du secret mais ne peut collecter aucune preuve de son interaction avec (10-1); Un PDNN 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 deux algorithmes alliant ainsi hautes performances d’exécution et préservation des capacité de stockage des équipements mettant en œuvre le PDNN. 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 sont très faibles ; La mémoire vive nécessaire à l’exécution desdits algorithmes constituant PDNN est également faible au regard de l’art antérieur préservant ainsi les ressources desdits équipements mettant en œuvre un PDNN selon l’invention ; La bande passante nécessaires aux échanges entre équipements mettant en œuvre un PDNN selon l’invention est également faible. Enfin, le mode de réalisation du PDNN proposé dans la présente invention font que le PDNN est parfaitement compatible avec les PDNs standards et s’ajoute comme une couche haute par-dessus ces derniers. Dans le cas spécifique du RSA, ce protocole devient : : Ledit prouveur (10-1) génère une clé publique RSA publiée et une clé privée RSA gardée confidentielle, comme le résume la relation ; Ledit vérifieur (10-2) reçoit et enregistre la donnée nécessaires à la vérification de signatures générées par (10-1); Comme expliqué auparavant, ce processus ne diffère en rien d’un procédé de génération de clés et de paramètres standard d’un PDN classique. Lors de la phase : (10-2) génère à partir de SS’ un défi aléatoire . (10-2) prépare un engagement sur noté et communique au prouveur (10-1). (10-1) génère à partir de SS un aléa et communique à (10-2) un engagement . (10-2) réplique avec (10-1) vérifie la cohérence entre et . Si n’est pas un engagement valide sur , (10-1) interrompt le protocole. Si est un engagement valide sur , (10-1) communique à (10-2) la réponse }. (10-2) vérifie la connaissance du secret par (10-1) grâce au test . Evidemment l’ou exclusif (opérateur ) peut être remplacé par une variété d’autres fonctions permettant de combiner et . Du point de vue théorique et pratique un grand avantage de l’invention réside dans le fait que contrairement à une preuve à divulgation nulle classique dans laquelle (si est large ou si un ralentissement artificiel du hachage a lieu) le vérifieur (10-2) peut collecter une preuve d’interaction. Avec le PDNN cette menace disparait. A cette fin, l’invention prévoit tout d’abord un procédé de PDNN, ledit procédé étant mis en œuvre par un système informatique comportant des 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 de moyens de communication avec le monde extérieur, ledit premier dispositif électronique (10-1) étant conçu pour prouver qu’il contient un secret audit deuxième dispositif électronique, (10-2) ledit procédé de PDNN (100) comportant : Une étape de génération et de publication de paramètres généraux et de génération d’un couple de clés privée et publique, ainsi que de publication de ladite clé publique et de la donnée . Cette étape est mise en œuvre par ledit premier dispositif électronique (10-1) ; Lesdits paramètres généraux et ladite clé publique étant éventuellement produits à partir d’une donnée aléatoire produite par un générateur de nombres aléatoires (13) dudit premier dispositif électronique (10-1) ; Une étape de signature consistant en les étapes suivantes: Ledit prouveur (10-1), souhaitant prouver sa connaissance du secret commence par requérir de la part de (10-2) un engagement sur le défi que (10-2) souhaite utiliser plus tard. Le vérifieur génère un défi aléatoire , calcule un engagement et communique au prouveur (10-1). C’est seulement après avoir reçu que le prouveur (10-1) génère son propre engagement du -protocole (noté ) et envois au vérifieur (10-2). Le vérifieur (10-2) révèle au prouveur (10-1) le défi . Le prouveur (10-1) vérifie l’engagement par le procédé et conditionne la poursuite des échanges par la réussite de l’algorithme . Si l’étape précédente n’a pas provoqué une interruption du PDNN le prouveur (10-1) réplique par que le vérifieur (10-2) vérifie. MODE DE REALISATION Selon le mode de réalisation d’un PDNN conforme à l’invention : L’algorithme de génération et de publication de paramètres généraux , est strictement conforme à celui du PDN sous-jacent choisi (par exemple Fiat-Shamir) ; Dans ce mode de réalisation cette sous-étape fera usage des données aléatoires du dispositif (10-1). Cette sous-étape comprend également (pour le dispositif (10-1)) la génération d’un couple de clés privée et publique. L’algorithme de preuve de connaissance du secret sk comporte les étapes suivantes : Ledit prouveur (10-1), souhaitant prouver sa connaissance du secret commence par requérir de la part de (10-2) un engagement sur le défi que (10-2) souhaite utiliser plus tard. Le vérifieur génère un défi aléatoire , calcule un engagement et communique au prouveur (10-1). C’est seulement après avoir reçu que le prouveur (10-1) génère son propre engagement du -protocole (noté ) et envois au vérifieur (10-2). Le vérifieur (10-2) révèle au prouveur (10-1) le défi . Le prouveur (10-1) vérifie l’engagement par le procédé et conditionne la poursuite des échanges par la réussite de l’algorithme . Si l’étape précédente n’a pas provoqué une interruption du PDNN le prouveur (10-1) réplique par que le vérifieur (10-2) vérifie. Avantageusement on prendra typiquement pour une valeur comprise entre 10 et 80 bits. Le niveau de sécurité étant alors de . Selon un second 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 troisiè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 : FIG. 1 illustre un exemple d’un système informatique comportant une pluralité de dispositifs électroniques mettant en œuvre un procédé de PDNN conforme à l’invention ; FIG. 2 illustre un exemple d’un procédé fonctionnel de production de paramètres généraux et 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 ; FIG. 3 illustre un exemple d’un procédé fonctionnel de preuve de connaissance d’une clé privée mis en œuvre par tout dispositif électronique d’un système informatique conforme à l’invention ; Selon des caractéristiques particulières, on pourra réaliser l'un quelconque des précédés (1) de génération de paramètres et de génération de clés, (2) de preuve de connaissance de secret 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é (dit FPGA « Field Programmable Gate Array ») ou par une puce à logique câblée (dite ASIC « 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 (1) de génération de paramètres et de génération de clés, (2) de preuve de connaissance de secret , 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 PDNN 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 (1) de génération de paramètres et de génération de clés, (2) de preuve de connaissance de secret , 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 PDNN conforme à l'invention. Autrement dit, nous allons montrer comment construire l’algorithme PDNN qui sera utilisé pour prouver la connaissance d’un secret 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 (1) de génération de paramètres et de génération de clés, (2) de preuve de connaissance de secret , décrits ci-dessus. Comme l’indique la FIG. 1 , ce système informatique 1 comporte une pluralité de dispositifs électroniques dont seuls deux sont représentés à des fins de clarté : 10-1 (le prouveur) et 10-2 (le vérifieur). 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 FIG. 1 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, d'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 un programme d'ordinateur comportant des instructions pour provoquer, lors de leurs exécutions, la mise en œuvre d’un procédé (1) de génération de paramètres et de génération de clés, (2) de preuve de connaissance de secret , 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 prouver la connaissance d’un secret via le canal de communication entre lesdits dispositifs, 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 et de clés via l’exécution d’un algorithme évoqué précédemment. Le dispositif (10-1) pourra être le futur prouveur (10-1) dudit système informatique 1 ou bien consister en n’importe quel autre dispositif électronique 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). Décrivons le mode de réalisation d’un PDNN conforme à l’invention au travers d’un des agencements respectifs des procédés 110, 120 évoqués précédemment en lien avec les figures 2 et 3. Un tel procédé 110 comporte une étape 112 de génération des paramètres et des clés publiques et privées et nécessaires à la mise d’un œuvre d’un PDNN conforme à l’invention. Un tel procédé peut comporter une étape préalable 111 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, tout ou partie desdits paramètres pouvant être produits à partir de ladite 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 MPK à destination d’un ou plusieurs dispositifs électroniques 10-2 du système informatique 1. Le message MPK véhiculant lesdits paramètres et ladite clé publique . A réception d’un tel message MPK, lesdits dispositifs électroniques 10-2 enregistrent les valeurs desdits paramètres dans leurs mémoires de données 12 respectives. Avantageusement les données appartenant aux différents prouveurs sont enregistrées par les dispositifs 10-2 dans une structure de données associant ces dernières à des identifiants caractérisant les dispositifs électroniques ayant publié leurs paramètres et clés. Ledit dispositif électronique 10-1 enregistre la clé privée dans sa propre mémoire. La figure 3 décrit un organigramme fonctionnel d’un procédé 120 de PDNN mis en œuvre par tout couple de dispositifs électroniques d’un système informatique 1, tel que le dispositif électronique (10-1) et le dispositif électronique (10-2), via l’exécution de l’algorithme évoqué précédemment. Un tel procédé 120 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 du dispositif électronique (10-2) de laquelle est dérivé le défi qui sera utilisé par la suite. Le procédé comporte également une étape 122 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 du dispositif électronique (10-1) de laquelle est dérivé l’engagement qui sera utilisé par la suite. Ledit procédé 120 comporte également une étape 123 pour provoquer l’émission d’un message MME par (10-2) à destination du dispositif (10-1). Ledit message MME contenant l’engagement de (10-2) sur noté . MME est donc envoyé par le dispositif (10-2) au dispositif (10-1). Ledit procédé 120 comporte également une étape 124 d’enregistrement, dans la mémoire de données 12 du dispositif électronique (10-1) mettant en œuvre ledit procédé 120, de la valeur extraite du message MME. Ledit procédé 120 comporte également une étape 125 pour provoquer l’émission d’un message MMX par (10-1) à destination dispositif (10-2). Ledit message MMX véhiculant une valeur . étant la valeur de l’engagement du prouveur dans le protocole sous-jacent. MMX est donc envoyé par le dispositif (10-1) au dispositif (10-2). Ledit procédé 120 comporte également une étape 126 pour provoquer l’émission d’un message MMC par (10-2) à destination dispositif (10-1). Ledit message MMC véhiculant ladite valeur . étant la valeur du défi lancé par le vérifieur dans un protocole sous-jacent. MMC est donc envoyé par le dispositif (10-2) au dispositif (10-1). Ledit procédé 120 comporte également une étape 127 pour provoquer par le dispositif (10-1) que l’engagement présent déjà dans la mémoire du dispositif (10-1) est correct par rapport audit défi extrait de MMC. Si ne corresponds pas à l’engagement , ledispositif (10-1) arrête le protocole. Si corresponds à l’engagement , le dispositif (10-1) procède à l’étape 128. Ledit procédé 120 comporte également une étape 128 pour provoquer l’émission d’un message MMY par (10-1) à destination dispositif (10-2). Ledit message MMY véhiculant une valeur . étant la valeur de la réponse du prouveur dans le protocole sous-jacent. MMY est donc envoyé par le dispositif (10-1) au dispositif (10-2). Ledit procédé 120 comporte enfin une étape 129 pour provoquer la vérification par le dispositif (10-2) de la cohérence desdites données selon les règles du protocole sous-jacent. Si la relation de vérification liant les données échoue (selon les règles du protocole sous-jacent), le dispositif (10-2) rejette le dispositif (10-1). Si la relation de vérification liant les données réussit (selon les règles du protocole sous-jacent), le dispositif (10-2) accepte le dispositif (10-1). L’invention a été décrite au travers d’un exemple illustré par la FIG. 1 selon lequel un premier dispositif électronique (10-1) prouve la connaissance d’un secret à un deuxième dispositif électronique (10-2) et ce sans que ledit deuxième dispositif électronique (10-2) puisse extraire et conserver une trace de son interaction avec le premier dispositif électronique (10-1). Procédé de preuve à divulgation nulle niable (100), ledit procédé étant mis en œuvre par un système informatique (10) comportant un premier (10-1), un deuxième (10-2) dispositifs électroniques, lesdits deux dispositifs électroniques comportant chacun une unité de traitement (11) coopérant avec une mémoire de données (12) et de moyens de communication (15) avec le monde extérieur. Ledit premier dispositif électronique (10-1) étant conçu pour prouver une connaissance d’un secret au deuxième dispositif électronique (10-2). Ledit deuxième dispositif étant conçu pour vérifier la connaissance du secret par le dispositif (10-1). Ledit procédé de preuve à divulgation nulle niable (100) comportant : une phase (110) de génération et de publication de paramètres généraux et de clés publiques et privées d’un protocole de preuve à divulgation nulle. La génération de étant mise en œuvre par le premier dispositif électronique (10-1); Lesdits paramètres généraux et clés de signature publique et privée étant produits à 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 phase (120) de vérification de la connaissance de sk par le premier dispositif électronique (10-1) comportant les étapes suivantes : 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 du dispositif électronique (10-2) de laquelle est dérivé le défi d’un protocole sous-jacent. une étape 122 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 du dispositif électronique (10-1) de laquelle est dérivé l’engagement dudit protocole sous-jacent. Une étape 123 pour provoquer l’émission d’un message MME par (10-2) à destination du dispositif (10-1). Ledit message MME contenant un engagement de (10-2) sur noté . MME est donc envoyé par le dispositif (10-2) au dispositif (10-1). une étape 124 d’enregistrement, dans la mémoire de données 12 du dispositif électronique (10-1) mettant en œuvre ledit procédé 120, de la valeur extraite du message MME. une étape 125 pour provoquer l’émission d’un message MMX par (10-1) à destination dispositif (10-2). Ledit message MMX véhiculant une valeur . étant la valeur de l’engagement du prouveur dans ledit protocole sous-jacent. MMX est donc envoyé par le dispositif (10-1) au dispositif (10-2). une étape 126 pour provoquer l’émission d’un message MMC par (10-2) à destination dispositif (10-1). Ledit message MMC véhiculant ladite valeur . . MMC est donc envoyé par le dispositif (10-2) au dispositif (10-1). une étape 127 pour provoquer par le dispositif (10-1) que l’engagement présent déjà dans la mémoire du dispositif (10-1) est correct par rapport audit défi extrait de MMC. Si ne corresponds pas à l’engagement , ledispositif (10-1) arrête le protocole. Si corresponds à l’engagement , le dispositif (10-1) procède à l’étape 128. une étape 128 pour provoquer l’émission d’un message MMY par (10-1) à destination dispositif (10-2). Ledit message MMY véhiculant une valeur . étant la valeur de la réponse du prouveur dans le protocole sous-jacent. MMY est donc envoyé par le dispositif (10-1) au dispositif (10-2). une étape 129 pour provoquer la vérification par le dispositif (10-2) de la cohérence desdites données selon les règles du protocole sous-jacent. Si la relation de vérification liant les données échoue (selon les règles du protocole sous-jacent), le dispositif (10-2) rejette le dispositif (10-1). Si la relation de vérification liant les données réussit (selon les règles du protocole sous-jacent), le dispositif (10-2) accepte le dispositif (10-1). Procédé (100) selon la revendication 1 où ledit protocole sous-jacent est le protocole de Fiat-Shamir] Procédé (100) selon la revendication 1 où ledit protocole sous-jacent est le protocole de Guillou-Quisqauter] Procédé (100) selon la revendication 1 où ledit protocole sous-jacent est le protocole de Schnorr] Procédé (100) selon la revendication 1 où ledit protocole sous-jacent est le protocole de Schnorr mis en œuvre sur une courbe elliptique. Procédé (100) selon la revendication 1 où ledit protocole sous-jacent est le protocole est remplacé par une signature RSA] Procédé (100) selon l’une quelconque des revendications 1 à 6, pour lequel la taille du défi a une valeur comprise entre 10 et 160. Produit programme d’ordinateur comportant une ou plusieurs instructions ( ) de programme exécutable par l’unité de traitement (11) d’un ordinateur, lesdites instructions de programme ( ) é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 au moins deux dispositifs électroniques (10-1,10-2) 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) comprenant les instructions ( ) de programme d’un produit programme d’ordinateur selon la revendication précédente.