FR 3076422 A1 20190705 FR 1763393 A 20171229 METHODE D'ECHANGE DE CLES AUTHENTIFIE PAR CHAINE DE BLOCS DESCRIPTION DOMAINE TECHNIQUE La presente invention concerne de maniere generale la cryptographie et plus particulierement la generation d'un canal securise entre pairs au moyen d'une cle secrete. Elle concerne egalement la technique des chaines de blocs (blockchain). ETAT DE LA TECHNIQUE ANTERIEURE La generation d'un canal securise en dispositifs distants, egalement denommes dans la suite « pairs », suppose le partage d'une cle secrete entre ces dispositifs. Ce partage peut etre realise par une distribution manuelle des cies, prealablement a toute communication sur le canal, ou bien au moyen d'un protocole d'echange de cies de type Diffie-Hellmann utilisant un cryptosysterne asymetrique. On rappelle que, dans un protocole d'echange de cies de type Diffie-Hellman, chaque dispositif distant dispose d'un couple de cies asymetrique (cle privee, cle publique). La cle privee d'un dispositif emetteur est conservee secrete par ce dernier et nest en particulier jamais divulguee au dispositif destinataire. Elle sert a chiffrer ou signer des messages et a identifier le dispositif emetteur. En revanche, la cle publique est connue du dispositif destinataire et sert a dechiffrer des messages ou a verifier la signature du dispositif emetteur. Le but du protocole d'echange de cies est de permettre, a partir d'elements publics d'un cryptosysterne echanges sur un canal non securise, a chaque dispositif distant de calculer independamment une merne cle secrete qui servira a etablir un canal securise entre eux. Lorsque le cryptosysterne est base sur une courbe elliptique E (F q) definie sur un corps fini Fq et caracterise par les parametres de domaine (q,a,b,G,n,h) ou q est le nombre d'elements du corps, a,b sont les parametres de la courbe elliptique, G est un 11 point generateur, n est l'ordre de G dans le groupe additif E(F ), h= E(F) est le q n 2 cofacteur de G dans ce groupe, 1E(Fq)1 est l'ordre du groupe E(Fq). Chaque dispositif distant peut choisir une cle privee sk parmi les entiers [1,n -1], Ia cle publique correspondante etant donnee par les coordonnees du point Pk = sk.G . On rappelle que rechercher sk a partir de Pk revient a rechercher une solution au probleme ECLDP (Elliptic 5 Curve Discrete Logarithm Problem), actuellement impossible a resoudre dans un temps polynomial. Si Alice et Bob sont les deux pairs correspondant aux deux dispositifs distants, un protocole d'echange de cies de Diffie-Hellmann utilisant un cryptosysterne elliptique (protocole ECDH) peut etre decrit par les etapes suivantes : 10 Alice choisit un nombre entier a qui restera secret, calcule Ia cle publique ephernere, Pc, = a.G , et Ia transmet a Bob. De maniere similaire, Bob choisit un entier b qui restera secret, calcule Ia cle publique ephernere, Pb = b.G , et Ia transmet a Alice. A la reception de Pb, Alice calcule a.Pb=ab.G . 15 A Ia reception de Pa, Bob calcule b.Pb=ba.G . Alice et Bob partagent desormais un element secret consistant en un point de Ia courbe elliptique, ab.G . Ils peuvent par exemple appliquer une fonction de hachage, prealablement convenue entre eux, a l'une des coordonnees du point en question pour obtenir une cle de session symetrique avec laquelle ils chiffrent les donnees sur le canal. 20 Une limitation importante du protocole d'echange de cies ci-dessus est qu'il nest pas immun contre une attaque de type Man-In-the-Middle. En effet, un attaquant, Eve, peut s'interposer entre Alice et Bob, faire croire a Alice qu'elle echange avec Bob et a Bob qu'il echange avec Alice. En mettant en ceuvre le protocole decrit ci-dessus, Eve choisit un premier entier x et partage un premier element secret axG avec Alice, puis choisit un 25 second entier y et partage un second element secret byG avec Bob. Eve peut ainsi creer un premier canal securise avec Alice et un second canal securise avec Bob. Lorsqu'Alice croit transmettre des donnees de maniere securisee a Bob, elle les fournit en fait a Eve. Reciproquement, lorsque Bob croit transmettre des donnees de maniere securisee a Alice, it les transmet en fait egalement a Eve. 3 Une solution connue pour remedier a ce type d'attaque est d'identifier l'emetteur de chaque cle publique. Ainsi, Alice transmet a Bob non seulement sa cle publique ephernere Pc, = a.G mail aussi une signature numerique de Pa, signee avec sa cle privee (par exemple au moyen d'un algorithme ECDSA). Bob doit alors disposer de la cle publique 5 d'Alice pour verifier la signature en question. Si la verification est positive, cela signifie que la cle publique ephernere a bien ete ernise par Alice et non pas un tiers. Bien entendu, reciproquement, Bob transmet a Alice sa cle publique ephernere Pb = b .G accompagnee de la signature de Pb au moyen de la cle privee de Bob, et Alice procede a la verification de cette signature au moyen de la cle publique de Bob pour authentifier la provenance de la 10 cle publique ephernere. Cette solution nest toutefois que partiellement satisfaisante dans la mesure ou la transmission de la cle publique d'Alice a Bob (ou celle de Bob a Alice) sur un canal non securise est elle-merne susceptible de faire l'objet d'une attaque de type « Man-in-theMiddle ». Afin de lier la cle publique d'un emetteur avec son identite, on utilise un certificat 15 numerique (au format X.509 ou bien certificat implicite, par exemple) delivre par une autorite de certification. II en resulte que le protocole de Diffie-Hellman necessite la presence d'un tiers de confiance pour etre robuste aux attaques de type « Man-in-theMiddle). Afin d'eviter de recourir a un tiers de confiance et en particulier a une autorite de 20 certification centralisee, it a ete propose dans ('article de P. McCorry et al. intitule « Authenticated key exchange over Bitcoin », publie en 2015 dans Chen L., Matsuo S. (eds) Security Standardisation Research. Lecture Notes in Computer Science, vol 9497. Springer, de faire appel a une technique d'identification de pairs fondee sur les proprietes de la chaine de blocs Bitcoin. On rappelle qu'une chaine de blocs est un registre distribue et 25 securise de touter les transactions effectuees depuis le dernarrage de la chaine. Une introduction complete a la chaine de blocs Bitcoin pourra etre trouvee dans l'ouvrage de A.M. Antonopoulos intitule « Mastering Bitcoin » publie en 2015 aux editions O'Reilly. La Fig. 1 represente une methode d'echange de cies authentifie par une chaine de blocs tel que decrit dans ('article precite. 4 Prealablement a l'echange de cies, on suppose qu'Alice et Bob ont chacun genere de maniere independante une cle privee (notee a pour Alice et b pour Bob) et, a partir de la cle publique correspondante (P = aG pour Alice et Pb =bG pour Bob), par hachage, une adresse de portefeuille ephernere (notee @wallet_a Alice pour Alice et @wallet_b Bob 5 pour Bob). Les adresses epherneres ne seront utilisees dans le cadre des transactions supportant cet echange. Les portefeuilles respectifs de Bob et Alice sont egalement supposes etre credites de cryptomonnaie en quantite suffisante. Alice forme en 110 une transaction Ta et celle-ci est diffusee aux nceuds du reseau Bitcoin. Apres avoir ete validee, incorporee dans un bloc et confirmee par minage, celle-ci 10 fait partie du registre distribue (distributed ledger). De merne, Bob forme en 120 une transaction Tb et celle-ci est diffusee de proche en proche aux nceuds du reseau. De maniere generale, une transaction represente un transfert d'unites de cryptomonnaie d'une entrée (ou de plusieurs entrées) vers une sortie (ou vers plusieurs sorties). Une transaction est libellee en termer de UTXO (Unspent Transaction Output), 15 chaque UTXO representant un montant non depense par son proprietaire et etant verrouille par un script de verrouillage. Pour pouvoir depenser un UTXO, le proprietaire doit s'identifier en presentant a l'UTX0 des elements cryptographiques (generalement la cle publique et une signature generee a partir de la cle privee correspondante) sous la forme d'un script de deverrouillage. Si les elements presentes dans le script de 20 deverrouillage satisfont aux conditions specifiees dans le script de verrouillage, la transaction est validee. On notera que dans Bitcoin, le script de deverrouillage le plus communement utilise est Pay-to-Public-Key-Hash (P2PKH) et le script de verrouillage est scriptSig. La transaction T a formee par Alice comprend en entrée une reference a un UTXO 25 detenu a l'adresse de portefeuille @wallet_a Alice ainsi qu'un script de deverrouillage (represents par une cle sur la figure). Ce script de deverrouillage contient la cle publique ephernere d'Alice, Pa et une signature de cette cle publique (plus precisement de la transaction dans laquelle la cle publique Pa est substituee au script de deverrouillage, la 5 transaction etant ensuite doublement hachee) au moyen de la cle privee correspondante, a. La transaction Ta comprend en sortie I'adresse de portefeuille du destinataire (Bob), soit @wallet_b Bob ainsi qu'un script de verrouillage (represents par un cadenas sur 5 Ia figure) que Bob pourra deverrouiller en fournissant, via un script de deverrouillage, les elements cryptographiques (cle publique et signature) satisfaisant aux conditions fixees dans le script de verrouillage. Cette sortie de transaction cree un UTXO (@wallet_b Bobmontant) a l'adresse de portefeuille ephernere de Bob. On a egalement indique en sortie l'adresse de portefeuille ephernere d'Alice pour que celle-ci puisse recuperer dans son 10 portefeuille le solde de Ia transaction (creation d'un UTXO dans le portefeuille ephernere d'Alice). De la merne facon, la transaction Tb comprend en entrée une reference a un UTXO detenu a I'adresse de portefeuille @wallet_b Bob, ainsi qu'un script de deverrouillage contenant la cle publique ephernere de Bob, Pb, et une signature de cette cle publique au 15 moyen de la cle privee correspondante b . En sortie, la transaction Tb comprend en sortie I'adresse de portefeuille ephernere d'Alice @wallet_a Alice ainsi qu'un script de verrouillage (symbolise par un cadenas) qu'Alice pourra deverrouiller en fournissant les elements cryptographiques satisfaisant aux conditions fixees dans le script de verrouillage. Cette sortie cree un UTXO (@wallet_a Alice- 20 montant) a l'adresse de portefeuille ephernere d'Alice. Une deuxierne sortie est prevue pour recuperer le solde sous forme d'un UTXO a l'adresse de portefeuille ephernere de Bob. Les montants des UTXO @wallet_a Alice-montant et @wallet_b Bob-montant peuvent etre choisis egaux pour equilibrer l'echange. 25 Une foil que les transactions T a et Tb ont ete validees, enregistrees dans la chaine de blocs et confirmees par minage, Alice (resp. Bob) scanne le registre distribue a la recherche de la transaction ernise par Bob (resp. Alice). Alice recupere dans la partie entrée de Tb la cle publique ephernere Pb de Bob et, reciproquement, Bob recupere dans la partie 6 entrée de T a la cle publique ephernere Pa d'Alice. Alice calcule alors aPb = abG et Bob bPa = baG : Alice et Bob disposent par consequent de la cle secrete partagee abG . L'auditabilite du registre distribue permet a tour les utilisateurs (nceuds) de verifier que les cies publiques epherneres utilisees dans cet echange n'ont jamais ete 5 utilisees auparavant, que la cle publique P appartient bien a Alice (plus precisement est liee a l'adresse de portefeuille ephernere d'Alice) et que la cle publique Pb appartient bien a Bob (plus precisement est liee a l'adresse de portefeuille ephernere de Bob). Ainsi, l'echange de cies entre Alice et Bob peut etre authentifie par la chaine de blocs, sans intervention d'un tiers de confiance. 10 Toutefois, la generation systernatique d'adresses de portefeuilles epherneres a chaque echange de cies peut s'averer compliquee a gerer et couteuse en termer de ressources de calcul pour les dispositifs distants hebergeant ces portefeuilles. Un objet de la presente invention est par consequent de proposer une methode d'echange de cies entre pairs, authentifie par chaine de blocs et donc sans recours a un 15 tiers de confiance, et qui ne necessite pas la generation de portefeuilles epherneres. EXPOSE DE L'INVENTION La presente invention est definie par une methode d'echange de cies entre un premier utilisateur et un second utilisateur d'une chaine de blocs de transactions, chaque utilisateur disposant d'une adresse de portefeuille lui permettant d'emettre et de recevoir 20 des transactions, ladite methode comprenant les etapes suivantes : - le premier utilisateur genere une premiere cle privee ephernere (a) et une premiere cle publique ephernere (P) correspondante au moyen d'un cryptosysterne asymetrique ; - le premier utilisateur forme et emet une premiere transaction (TA) dont 25 l'entree se refere a un premier UTXO detenu a l'adresse de portefeuille du premier utilisateur et dont la sortie cree un second UTXO dans le portefeuille du second utilisateur, la sortie de la premiere transaction comprenant en outre un script d'enregistrement de la premiere cle publique ephernere ( Pa ) dans la chaine de blocs ; 7 - le second utilisateur scanne la chaine de blocs et accede a la premiere transaction, apres que celle-ci a ete confirmee par un minage du bloc qui la contient ; - le second utilisateur verifie a partir de l'entree de la premiere transaction que celle-ci a bien ete ernise par l'adresse du portefeuille du premier utilisateur et, dans 5 ('affirmative, lit sur la sortie de la premiere transaction la premiere cle publique ephernere (Pa); - le second utilisateur genere une seconde cle privee ephernere (b ) et seconde une cle publique ephernere (Pb) ) correspondante au moyen dudit cryptosysterne asymetrique ; 10 - le second utilisateur forme et emet une seconde transaction (TB) dont ('entree se refere a un troisierne UTXO detenu a l'adresse de portefeuille du second utilisateur et dont la sortie cree un quatrierne UTXO pointant vers le portefeuille du premier utilisateur, la sortie de la seconde transaction comprenant en outre un script d'enregistrement de la seconde cle publique ephernere dans la chaine de blocs ; 15 - le premier utilisateur scanne la chaine de blocs et accede a la seconde transaction, apres que celle-ci a ete confirmee par un minage du bloc qui la contient ; - le premier utilisateur verifie a partir de ('entree de la seconde transaction que celle-ci a bien ete ernise par l'adresse du portefeuille du second utilisateur et lit sur la sortie de la seconde transaction la seconde cle publique ephernere (Pb) ) ; 20 - le premier utilisateur calcule le produit de la premiere cle privee ephernere (a) avec la seconde cle publique ephernere (Pb) ) et le second utilisateur calcule (280) le produit de la seconde cle privee ephernere (b ) avec la premiere cle publique ephernere (Pa) pour generer une cle secrete commune (kab ). Avantageusement : 25 - la premiere transaction contient en entrée un script de deverrouillage comprenant la cle publique associee a l'adresse de portefeuille du premier utilisateur ainsi qu'une signature numerique de cette cle publique au moyen de la premiere cle privee ephernere ; 8 - la seconde transaction contient en entrée un script de deverrouillage comprenant la cle publique associee a l'adresse de portefeuille du second utilisateur ainsi qu'une signature de numerique de cette cle publique au moyen de la seconde cle privee éphernere. 5 Le cryptosysterne asymetrique est de preference un cryptosysterne sur courbe elliptique. La chaine de blocs est typiquement Bitcoin et le script d'enregistrement des premiere et seconde transactions contient une operation OP_RETURN, les premiere et seconde cies publiques epherneres etant stockees par le script d'enregistrement sous 10 forme compressee dans la chaine de blocs. Alternativement, les premiere et seconde transactions comprennent en sortie un second script d'enregistrement, le script d'enregistrement et le second script d'enregistrement contenant des operations OP_RETURN, les premiere et seconde cies publiques epherneres etant respectivement stockees par le script d'enregistrement et le 15 second script d'enregistrement sous forme complete dans la chaine de blocs. Les montants des premier et troisierne UTXO peuvent etre identiques. BREVE DESCRIPTION DES DESSINS D'autres caracteristiques et avantages de l'invention apparaitront a la lecture d'un mode de realisation preferentiel de l'invention, fait en reference aux figures jointer parmi 20 lesquelles : La Fig. 1, déjà decrite, represente de maniere schernatique un echange de cies entre pairs, authentifie par une chaine de blocs, selon une methode connue de l'etat de la technique ; La Fig. 2 represente de maniere schernatique un echange de cies entre pairs, 25 authentifie par une chaine de blocs, selon un mode de realisation de l'invention. EXPOSE DETAILLE DE MODES DE REALISATION PARTICULIERS Nous considerons tout d'abord une chaine de blocs de transactions de type Bitcoin, telle que decrite dans la partie introductive et envisagerons a nouveau un echange 9 de cies entre deux utilisateurs de la chaine de blocs, Alice et Bob. Comme nous le verrons par la suite, cet echange de cies peut etre generalise a un echange multilateral entre pairs. Chaque utilisateur est equipe d'un dispositif de communication embarquant un client blockchain, soit un client leger (par exemple pour un smartphone), soit un client complet 5 (le dispositif est alors un nceud « complet », it possede une copie complete du registre partage). Chaque utilisateur possede une adresse de portefeuille qui lui permet d'emettre et de recevoir des transactions et des messages. Prealablement a l'echange de cies, Alice et Bob echangent leurs adresses de portefeuilles par exemple sous forme numerique ou bien sous forme de QR code. L'adresse 10 du portefeuille d'Alice est notee @wallet_Alice et celle du portefeuille de Bob, @wallet_Bob. La Fig. 2 decrit schernatiquement un procede d'echange de cies selon un premier mode de realisation de ('invention. Dans une premiere etape, 210, un premier utilisateur (ou premier pair), Alice 15 genere une cle privee a et la cle publique correspondante, Pa = aG ou G est le point generateur d'un cryptosysteme sur courbe elliptique, par exemple le cryptosysterne sur la courbe de Koblitz secp256k1 utilise dans Bitcoin pour generer les adresses de portefeuilles. La cle Pc, est une cle publique ephernere dans la mesure ou elle ne servira que pour l'echange de cies entre Alice et Bob. 20 La cle privee peut etre generee de maniere aleatoire (portefeuille de cies dit non- deterministe) ou bien de maniere deterministe a partir d'un Berme (portefeuille de cies dit hierarchique deterministe) de maniere connue en soi. A l'etape 220, Alice forme une transaction TA comprenant en entrée une reference a un UTXO (enregistre dans la chaine de blocs et detenu a l'adresse de 25 portefeuille @wallet_Alice) ainsi qu'un script de deverrouillage (symbolise sur la figure par une cle). Ce script de deverrouillage contient la cle publique Pa correspondant a l'adresse de portefeuille @wallet_Alice d'Alice ainsi qu'une signature de la cle publique d'Alice (plus precisement de la transaction dans laquelle la cle publique Pc, est substituee au script de deverrouillage, la transaction etant ensuite doublement hachee) au moyen de sa cle privee. 10 Le script de deverrouillage permet a Alice de depenser les avoirs contenus dans l'UTX0 en question. Sur une premiere sortie, la transaction TA comprend l'adresse de portefeuille du destinataire (second utilisateur ou second pair), Bob, soit @wallet_Bob, le montant 5 convenu pour cette transaction, autrement dit le montant de l'UTX0 cree a cette adresse (@wallet_Bob-montant), le tout protégé par un script de verrouillage (cadenas represents sur la figure). Bob pourra deverrouiller l'UTX0 cree par cette sortie en presentant les elements cryptographiques requis par le script de verrouillage (la cle publique de Bob et sa signature) pour verifier son identite (plus precisement ('association entre l'adresse de 10 portefeuille @wallet_Bob et la cle publique). Optionnellement, sur une seconde sortie la transaction TA comprend en sortie l'adresse du portefeuille d'Alice pour recevoir le solde de la transaction, si le montant que possede Alice en entrée (figurant dans l'UTX0 a l'adresse du portefeuille d'Alice) est superieur au montant envoys a Bob (c'est-a-dire au montant figurant dans UTXO cree a 15 l'adresse du portefeuille de Bob). Sur une troisierne sortie, la transaction TA comprend au moins un script d'enregistrement de donnees dans la chaine de blocs, OP_RETURN . L'operateur OP_RETURN cree une entite « provably unspendable » qui nest pas stockee avec les UTXO. Contrairement a un UTXO, l'entite ainsi creee ne peut etre ensuite depensee au moyen 20 d'un script de deverrouillage. Dans la transaction TA, les donnees du script OP_RETURN correspondent a la cle publique ephernere Pc, sous forme compressee ou sous forme complete. Dans Bitcoin, ('operation OP_RETURN permet de stocker jusqu'a 40 octets dans la chaine de blocs. Une cle publique obtenue avec un cryptosysterne elliptique sur courbe secp256ll peut etre 25 stockee sous forme compressee sur 32 octets. Si l'on fait appel a un script OP_RETURN supplementaire, on pourra stocker jusqu'a 80 octets ce qui permettra de stocker la cle ephernere Pc, sous forme complete (64 octets). 11 Une fois la transaction TA validee, enregistree dans la chaine de bloc et confirmee, le montant convenu entre Alice et Bob, correspondant a l'UTX0 cree sur la premiere sortie de TA, est credite dans le portefeuille de Bob. Lorsque Bob recoit la confirmation de ce montant, il scanne en 230 le registre de 5 la chaine de blocs pour visualiser la transaction correspondante. Dans le cas de la chaine de blocs Bitcoin, il peut par exemple utiliser la commande blockchain.info ou block explorer pour visualiser la transaction. Apres avoir retrouve la transaction, Bob lit sur son entrée l'adresse du portefeuille d'Alice a l'origine de la transaction et la compare a l'adresse que lui avait fourni 10 prealablement Alice (par exemple au moyen d'un QR code). II peut ainsi s'assurer que ces adresses sont les memes. Bob lit ensuite sur la troisierne et, le cas echeant, la quatrierne sortie(s) de la transaction, la valeur de la cle publique ephernere I. A l'etape 240, Bob genere de son cote une cle privee b (par exemple a partir d'un germe) et la cle publique correspondante Pb = bG en utilisant le merne cryptosysterne sur 15 courbe elliptique que celui utilise par Alice. A l'etape 250, Bob forme une transaction TB de la merne fawn qu'Alice precedemment. Autrement dit, Bob fournit en entrée de la transaction, dans un script de deverrouillage (par exemple P2PKH dans Bitcoin), les elements cryptographiques (cle publique de Bob et signature par sa cle privee) necessaires au deverrouillage du script de 20 verrouillage verrouillant l'UTX0 en premiere sortie de la transaction. La premiere sortie de la transaction TB comprend l'adresse de portefeuille d'Alice, @wallet_Alice, le montant convenu reverse a Alice, le tout protégé par un script de verrouillage (P2PKH par exemple). Alice pourra deverrouiller l'UTX0 cree par cette sortie en presentant les elements cryptographiques requis par le script de verrouillage (la cle 25 publique de Bob et sa signature). Optionnellement, sur une seconde sortie, la transaction TB comprend en sortie l'adresse du portefeuille de Bob pour recevoir le solde de la transaction, si le montant que possede Bob en entrée est superieur au montant envoye a Alice. 12 Avantageusement, sur une troisierne sortie, la transaction TB comprend au moins un script d'enregistrement de donnees dans la chaine de blocs, OP_RETURN , ou les donnees correspondent a la cle publique ephernere Pb sous forme compressee ou sous forme complete. Comme déjà indique plus haut, le script OP_RETURN dans Bitcoin 5 permet de stocker 40 octets. Un script supplementaire d'enregistrement de donnees permet de stocker 80 octets et donc la cle Pb sous forme complete. Une fois la transaction TB validee, enregistree et confirmee, le montant convenu entre Alice et Bob, correspondant a l'UTX0 cree sur la premiere sortie de TB, est credite dans le portefeuille de Bob. 10 Lorsqu'Alice recoit la confirmation de ce montant, elle scanne en 260 le registre de la chaine de blocs pour visualiser la transaction correspondante (en utilisant par exemple la commande blockchain.info ou block explorer lorsque la chaine de blocs est Bitcoin). Lorsqu'Alice a retrouve la transaction, Alice lit sur son entrée l'adresse du 15 portefeuille de Bob a l'origine de la transaction et la compare a l'adresse que lui avait fourni prealablement Bob. Elle s'assure ainsi que ces adresses sont les memes. Alice lit ensuite, sur la troisierne et, le cas echeant, la quatrierne sortie(s) de la transaction, la valeur de la cle publique ephernere de Bob, I. A l'etape 280, Alice calcule, a partir de la cle publique ephernere de Bob, la cle 20 secrete aPb = abG . Bob fait de merne a partir de cle publique ephernere d'Alice et calcule bP, = baG . Ainsi, Alice et Bob partagent desormais une cle secrete kab = abG qu'ils peuvent utiliser pour securiser un canal de communication soit sur la chaine de blocs, soit sur un canal hors chaine de blocs. Cette cle partagee peut notamment permettre d'assurer la confidentialite de donnees ou etre utiliser a des fins d'authentification. 25 On notera que les montants @wallet_Bob-montant et @wallet_Alice-montant peuvent etre choisis egaux, de maniere a ce que le cout de l'echange soit nul ou tres faible (limite aux couts de transaction ou transaction fees destines au minage). L'homme du métier comprendra que l'echange de cies illustre en Fig. 2 ne necessite pas ('intervention d'un tiers de confiance. L'auditabilite du registre par les 13 utilisateurs de la chaine de blocs permet a chacun d'entre eux de verifier que les cies publiques epherneres utilisees lors de ce processus n'ont jamais servi auparavant, que la cle publique Pc, appartient bien a Alice (plus precisement est liee de maniere biunivoque a l'adresse de portefeuille d'Alice) et que la cle publique Pb appartient bien a Bob (plus 5 precisement est liee de maniere biunivoque a l'adresse de portefeuille de Bob). Du fait de cette auditabilite, l'echange de cies est protégé d'une attaque de type Man-In-the-Middle. Enfin, it est essentiel de noter qu'a la difference de l'art anterieur cite dans la partie introductive, l'echange de cies ne necessite pas de creer des portefeuilles epherneres mail se contente d'utiliser les portefeuilles existants d'Alice REVENDICATIONS1. Methode d'echange de cies entre un premier utilisateur et un second utilisateur d'une chaine de blocs de transactions, chaque utilisateur disposant d'une adresse de portefeuille lui permettant d'emettre et de recevoir des transactions, caracterisee en ce que : - le premier utilisateur genere (210) une premiere cle privee ephernere (a) et une premiere cle publique ephernere ( Pa ) correspondante au moyen d'un cryptosysterne asymetrique ; - le premier utilisateur forme et emet (220) une premiere transaction (T A) dont l'entree se refere a un premier UTXO detenu a l'adresse de portefeuille du premier utilisateur et dont la sortie cree un second UTXO dans le portefeuille du second utilisateur, la sortie de la premiere transaction comprenant en outre un script d'enregistrement de la premiere cle publique ephernere ( P, ) dans la chaine de blocs ; - le second utilisateur scanne (230) la chaine de blocs et accede a la premiere transaction, apres que celle-ci a ete confirmee par un minage du bloc qui la contient ; - le second utilisateur verifie a partir de l'entree de la premiere transaction que celle-ci a bien ete ernise par l'adresse du portefeuille du premier utilisateur et, dans ('affirmative, lit sur la sortie de la premiere transaction la premiere cle publique ephernere (Pa) ; - le second utilisateur genere (240) une seconde cle privee ephernere (b ) et une seconde cle publique ephernere ( Pb ) correspondante au moyen dudit cryptosysterne asymetrique ; - le second utilisateur forme et emet (250) une seconde transaction (TB) dont ('entree se refere a un troisierne UTXO detenu a l'adresse de portefeuille du second utilisateur et dont la sortie cree un quatrierne UTXO pointant vers le portefeuille du premier utilisateur, la sortie de la seconde transaction comprenant en outre un script d'enregistrement de la seconde cle publique ephernere dans la chaine de blocs ; 15 - le premier utilisateur scanne (270) la chaine de blocs et accede a la seconde transaction, apres que celle-ci a ete confirmee par un minage du bloc qui la contient ; - le premier utilisateur verifie a partir de l'entree de la seconde transaction que celle-ci a bien ete ernise par I'adresse du portefeuille du second utilisateur et lit sur la 5 sortie de Ia seconde transaction Ia seconde cle publique ephernere ( Pb ) ; - le premier utilisateur calcule (280) le produit de Ia premiere cle privee ephernere (a) avec Ia seconde cle publique ephernere ( Pb ) et le second utilisateur calcule (280) le produit de Ia seconde cle privee ephernere (b ) avec Ia premiere cle publique ephernere ( Pa ) pour generer une cle secrete commune (kab ). 10 2. Methode d'echange de cies selon la revendication 1, caracterisee en ce que : - la premiere transaction contient en entrée un script de deverrouillage comprenant la cle publique associee a I'adresse de portefeuille du premier utilisateur ainsi qu'une signature numerique de cette cle publique au moyen de la premiere cle privee 15 ephernere ; - la seconde transaction contient en entrée un script de deverrouillage comprenant la cle publique associee a I'adresse de portefeuille du second utilisateur ainsi qu'une signature de numerique de cette cle publique au moyen de la seconde cle privee éphernere. 20 3. Methode d'echange de cies selon la revendication 1 ou 2, caracterisee en ce que le cryptosysterne asymetrique est un cryptosysterne sur courbe elliptique. 4. Methode d'echange de cies selon la revendication 3, caracterisee en ce que la 25 chaine de blocs est Bitcoin et que le script d'enregistrement des premiere et seconde transactions contient une operation OP_RETURN, les premiere et seconde cies publiques epherneres etant stockees par le script d'enregistrement sous forme compressee dans la chaine de blocs. 16 5. Methode d'echange de cies selon la revendication 3, caracterisee en ce que la chaine de blocs est Bitcoin et que les premiere et seconde transactions comprennent en sortie un second script d'enregistrement, le script d'enregistrement et le second script d'enregistrement contenant des operations OP_RETURN, les premiere et seconde cies 5 publiques epherneres etant respectivement stockees par le script d'enregistrement et le second script d'enregistrement sous forme complete dans la chaine de blocs. 6. Methode d'echange de cies selon I'une des revendications precedentes, caracterisee en ce que les montants des premier et troisierne UTXO sont identiques. 10