FR 3075534 A1 20190621 FR 1762129 A 20171214 DISPOSITIF DE STOCKAGE DE CLES NUMERIQUES POUR SIGNER DES TRANSACTIONS SUR UNE CHAINE DE BLOCS DESCRIPTION DOMAINE TECHNIQUE La presente invention concerne de maniere generale les chaines de blocs et plus particulierement les dispositifs de stockage de cies cryptographiques permettant a un utilisateur de s'authentifier et de signer des transactions sur une chaine de blocs. ETAT DE LA TECHNIQUE ANTERIEURE Les chaines de blocs, au premier rang desquelles Bitcoin et Ethereum, ont pris un essor considerable ces dernieres annees. On rappelle qu'une chaine de blocs se compose d'une sequence de blocs chaines par un mecanisme cryptographique a intervalley de temps reguliers. Le chainage est obtenu en inserant le hash du bloc precedent dans le contenu du bloc courant. La chaine de blocs forme un registre qui est distribue et replique a tour les nceuds du reseau. Les utilisateurs peuvent interagir avec la chaine de blocs au moyen de clients legers pour effectuer c'est-a-dire pour former et signer des transactions qui, si elles sont validees, sont stockees dans un bloc de la chaine de blocs. Un exemple d'une telle transaction est le transfert d'un montant en cryptomonnaie a un tiers. Ces transactions sont verifiees puis validees par un mecanisme de consensus entre des nceuds, appeles mineurs, disposant d'une copie complete de la chaine, et entrant en competition pour construire des blocs selon le mecanisme cryptographique precite. Chaque transaction validee est stockee dans un bloc qui est diffuse a ('ensemble des nceuds du reseau. La realisation d'operations financieres, et de maniere generale de transactions via une chaine de blocs, necessite de disposer d'une adresse de portefeuille sur cette chaine (adresse bitcoin par exemple). Une telle adresse est generalement obtenue par hachage de la cle publique d'un couple de cies asymetriques (cle privee - cle publique). 2 Plus precisement, un utilisateur genere d'abord une cle privee qu'il devra tenir confidentielle et en deduit au moyen d'un chiffrement par un cryptosysterne asymetrique, en ('occurrence un cryptosysterne sur courbe elliptique ou ECC (Elliptic Curve Cryptogrpahy), la cle publique correspondante. Cette cle publique est ensuite 5 hachee par une fonction de hachage (Keccak, SHA-3 par exemple) pour fournir l'adresse de portefeuille en question. De maniere schernatique, une adresse de portefeuille sur une chaine de blocs peut etre consideree comme un numero de compte bancaire et la cle privee comme un mot de passe permettant de valider l'acces a ce compte. 10 Dans un chaine de blocs telle que Bitcoin, une transaction represente generalement un transfert d'un montant libelle en cryptomonnaie (satoshis ou bitcoins) d'une ou plusieurs adresses de portefeuille d'un emetteur vers une ou plusieurs adresses de portefeuilles de beneficiaires. Plus precisement, transaction consomme un ou plusieurs UTXO (Unspent Transaction Output), chaque UTXO representant un montant 15 non depense par son destinataire et etant verrouille a l'adresse de portefeuille de ce dernier par un script de verrouillage. Pour pouvoir depenser un UTXO, le proprietaire doit s'identifier en presentant a l'UTX0 des elements cryptographiques (generalement sa 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 deverrouillage 20 satisfont aux conditions specifiees dans le script de verrouillage, la transaction est consideree comme validee. La Fig. 1 illustre de maniere schernatique l'exemple d'un transfert d'un montant en cryptomonnaie entre deux utilisateurs d'une chaine de blocs, Alice et Bob. 25 Alice forme une transaction depuis son portefeuille dont l'adresse, @walletAlice, est liee a une cle publique cryptographique (plus precisement, @walletAlice est le hache de sa cle publique). On suppose que la transaction ne consomme qu'un seul UTXO du portefeuille d'Alice (de valeur fund ), dit UTXO d'entree. La transaction cree un UTXO, dit premier UTXO de sortie dans le portefeuille de Bob avec le montant du paiement envisage (de 3 valeur amount). De merne, la transaction cree un second UTXO de sortie dans le portefeuille d'Alice avec le solde (de valeur balance = fund - amount ). Pour effectuer le paiement (de la valeur amount), Alice forme une transaction, Ta , composee d'un segment d'entree et un segment de sortie. 5 Le segment d'entree de Tc, (denomme scriptSig dans Bitcoin) est un script chargé de deverrouiller le script de verrouillage (denomme scriptPubKey dans Bitcoin) figurant dans le segment de sortie de la transaction, Tom, ayant cree l'UTX0 d'entree. Le segment de sortie de Tc, comprend : - un premier script de verrouillage (scriptPubKey) qui verrouille la valeur amount 10 a l'adresse de portefeuille de Bob, @walletBob, verrou que Bob ne pourra deverrouiller qu'en presentant un script de deverrouillage (scriptSig) contenant une signature l'authentifiant ; - un second script de verrouillage (scriptPubKey) qui verrouille la valeur balance , associee a l'adresse de portefeuille d'Alice, @walletAlice, verrou qu'Alice ne 15 pourra deverrouiller qu'en presentant un script de deverrouillage (scriptSig) contenant une signature l'authentifiant ; Le script de deverrouillage, figurant dans le segment d'entree de Ta , est concatene au script de verrouillage correspondant, figurant dans le segment de sortie de T et le script resultant est execute. fisrl 20 L'execution du script resultant permet de verifier que les elements cryptographiques fournis par Alice sont bien legitimes, c'est-a-dire que l'adresse de portefeuille @walletAlice correspond bien a la cle publique d'Alice (verification par hachage) et qu'Alice est bien la detentrice de cette cle publique (verification au moyen de la signature). 25 Si la verification est positive, la transaction est validee et stockee dans un nouveau bloc de la chaine de blocs et ce bloc est mine. 4 La validation et le stockage de la transaction materialise de facto la creation du premier UTXO de sortie vers le portefeuille de Bob et du second UTXO de sortie dans le portefeuille d'Alice. Bob pourra alors a son tour depenser le montant amount en utilisant comme 5 UTXO d'entree le premier UTXO de sortie precedemment cree. Pour ce faire, il devra le deverrouiller en presentant ses propres elements cryptographiques (cle publique et signature). On comprend que la seule detention d'une cle privee permet de realiser des transactions sur la chaine de blocs a partir de l'adresse de portefeuille correspondante. En 10 d'autres termer, la cle privee constitue la seule preuve de propriete du portefeuille et sa perte interdira tout acces aux avoirs en cryptomonnaie (UTX0s) detenus dans ce portefeuille. De merne, si sa cle secrete lui est derobee par un tiers malveillant, l'utilisateur s'expose a ce que ('ensemble de ses avoirs soient depenses par ce tiers. Etant donne la criticite de la cle privee, il est generalement recommande de la 15 stocker generalement sous forme papier et non au format electronique dans la memoire d'un smartphone ou d'un ordinateur. En outre, la longueur de la cle privee rend quasi-impossible sa memorisation par l'utilisateur lui-merne et, quand bien merne reussirait-il a la memoriser, il serait particulierement fastidieux de la fournir a chaque transaction. Le stockage sous forme papier nest guere compatible avec une utilisation 20 nomade. En outre, un utilisateur peut posseder une multiplicite de cies privees et autant d'adresses de portefeuille correspondantes. Pour remedier a ce probleme, il a ete recemment commercialise des portefeuilles physiques (hardware wallets), essentiellement sous la forme de cies USB, dans lesquelles un utilisateur peut stocker ses cies privees ainsi que les cies publiques 25 correspondantes ou les adresses de portefeuille (obtenues par hachage de ces dernieres). Des exemples de tel portefeuille physique sont les dispositifs commercialises sous le nom de TrezorTM ou de « Ledger Nano S ». Ces cies USB sont generalement pourvues d'une interface simple (ecran LCD et quelques boutons) permettant a son proprietaire de la deverrouiller au moyen d'un code 30 PIN et de signer les transactions au moyen de la cle privee require. Les cies secretes sont 5 stockees dans un element securise, a l'abri des attaques physiques, qui ne peut etre accede qu'au moyen du code PIN. Ces cies USB permettent de stocker differentes cies et de signer des transactions sur une chaine de blocs sans recourir a un support papier. En revanche, elles ne sont pas totalement immunes contre des attaques physiques dans la 5 mesure ou les cies privees peuvent etre deduites de signaux captes soit par radiation electromagnetique soit encore via ('interface USB. Un objet de la presente invention est par consequent de proposer un dispositif de stockage de cies numeriques permettant a son proprietaire de s'authentifier et de signer des transactions sur une chaine de blocs, dans des conditions de securite 10 sensiblement accrues par rapport a celles de l'etat de la technique. EXPOSE DE L'INVENTION La presente invention est definie par un dispositif de stockage de cies numeriques pour signer des transactions sur une chaine de blocs, ledit dispositif comprenant un microphone, un haut-parleur, un processeur DSP possedant un element 15 securise destine a stocker au moins une cle secrete, le DSP comprenant en outre un codeur/decodeur utilisant un dictionnaire, S, dont les mots de code, stockes dans une memoire du DSP ou dans une memoire securisee seulement accessible par le DSP, representent des signaux ultrasonores aleatoires ou pseudo-aleatoires, le DSP ne communiquant avec l'exterieur du dispositif que par un canal acoustique, le DSP etant 20 adapte a decoder un message constitue de mots de S, recus d'un canal acoustique, via le microphone, a signer le message ainsi decode au moyen de ladite cle privee et a transmettre en reponse une signature dudit message sous la forme d'une reponse constituee de mots successifs de 5, sur ledit canal acoustique, via le haut-parleur. Avantageusement, le dispositif comprend une interface HMI au moyen de 25 laquelle un utilisateur peut saisir une cle privee ou une graine permettant de generer une succession de cies privees, ladite/lesdites cle(s) privee(s) etant stockee(s) dans ('element securise du processeur DSP. 6 Le processeur DSP utilise typiquement un cryptosysterne asymetrique sur courbe elliptique pour calculer une cle publique a partir de la cle privee saisie par l'utilisateur ou generee par le DSP a partir de ladite graine. Qui plus est, le processeur DSP est adapts a calculer un hache de ladite cle 5 publique au moyen d'une fonction de hachage afin d'obtenir une adresse de portefeuille sur une chaine de blocs. Le dispositif heberge avantageusement un module logiciel adapts a requerir du processeur DSP la transmission sur le canal acoustique de la cle publique et/ou de l'adresse de portefeuille sur le canal acoustique. 10 Selon un premier exemple de realisation, le dispositif est un smartphone, le processeur DSP etant implements dans un chip distinct du microprocesseur sur lequel tourne le systeme d'exploitation du smartphone. Selon un second exemple de realisation, le dispositif est une cle USB ne comportant pas de broches de connexion autres que des broches d'alimentation. 15 La presente invention concerne en outre une methode de paiement par un utilisateur a un tiers d'un montant en cryptomonnaie au moyen d'un dispositif de stockage de cies numeriques comme defini ci-dessus et d'un terminal hebergeant un second module logiciel, ledit terminal etant connects via Internet au reseau P2P mettant en ceuvre la chaine de blocs, caracterise en ce que ledit utilisateur saisit dans une fenetre 20 affiche par le second module logiciel, le montant du paiement et l'adresse de portefeuille du tiers, et que le second module logiciel forme une transaction comportant un segment d'entree et un segment de sortie, le segment d'entree comprenant au moins une reference a une transaction anterieure (T ) dont l'utilisateur est destinataire, un script de verrouillage de la transaction anterieure, le segment de sortie comprenant ledit 25 montant ainsi qu'un script de verrouillage dudit montant a l'adresse de portefeuille du tiers, le second module logiciel transmettant un premier message (M) comprenant la transaction ainsi formee au dispositif de stockage de cies numerique, et en cas de validation par l'utilisateur, le processeur DSP signe ledit message et renvoie la signature ainsi obtenue sous la forme d'un second message ( Sig ) audit terminal, les premier et 30 second messages etant transmis sur le canal acoustique sous forme codee au moyen de 7 mots de code du dictionnaire S, et le second module logiciel substituant dans ladite transaction le script de verrouillage de la transaction anterieure par un script de deverrouillage contenant la signature ainsi revue et la cle publique de l'utilisateur. La presente invention concerne enfin une methode de paiement par un 5 utilisateur a un tiers d'un montant en cryptomonnaie au moyen d'un dispositif de stockage de cies numeriques comme defini ci-dessus, realise sous la forme d'un ordinateur ou d'un smartphone, le dispositif hebergeant un second module logiciel (225), et etant connecte via Internet au reseau P2P mettant en ceuvre la chaine de blocs, selon laquelle ledit utilisateur saisit dans une fenetre affichee par le second module logiciel, le 10 montant du paiement et l'adresse de portefeuille du tiers, et que le second module logiciel forme une transaction comportant un segment d'entree et un segment de sortie, le segment d'entree comprenant au moins une reference a une transaction anterieure ( Tom) dont l'utilisateur est destinataire, un script de verrouillage de la transaction anterieure, le segment de sortie comprenant ledit montant ainsi qu'un script de 15 verrouillage dudit montant a l'adresse de portefeuille du tiers, le second module logiciel transmettant un premier message (M) comprenant la transaction ainsi formee au dispositif de stockage de cies numerique, et en cas de validation par l'utilisateur, le processeur DSP signe ledit message et renvoie la signature ainsi obtenue sous la forme d'un second message (Sig ) au dispositif, les premier et second messages etant transmis 20 sur le canal acoustique sous forme codee au moyen de mots de code du dictionnaire S, et le second module logiciel substituant dans ladite transaction le script de verrouillage de la transaction anterieure par un script de deverrouillage contenant la signature ainsi revue et la cle publique de l'utilisateur. Apres substitution, Ia transaction ( Tc, ) est avantageusement diffusee aux nceuds 25 du reseau P2P pour etre validee et incorporee dans un prochain bloc de Ia chaine de blocs. 8 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 lesquelles : 5 La Fig. 1, déjà decrite, represente de maniere schernatique le transfert d'un montant en cryptomonnaie entre deux utilisateurs d'une chaine de blocs ; La Fig. 2 represente de maniere schernatique un systerne utilisant un dispositif de stockage de cies numeriques selon un mode de realisation de l'invention ; La Fig. 3A represente de maniere schernatique un premier exemple 10 d'architecture du dispositif de stockage de cies du systerne de la Fig. 2 ; La Fig. 3B represente de maniere schernatique un premier exemple d'architecture du dispositif de stockage de cies du systerne de la Fig. 2 ; La Fig. 4A represente un chronogramme d'une operation de consultation de portefeuille au moyen du systerne de la Fig. 2 ; 15 La Fig. 4B represente un chronogramme d'une operation de paiement au moyen du systerne de la Fig. 2 ; La Fig. 5A represente de maniere schernatique un dispositif de stockage de cies numeriques selon une premiere variante d'implementation de l'invention ; La Fig. 5B represente de maniere schernatique un dispositif de stockage de cies 20 numeriques selon une seconde variante d'implementation de l'invention. EXPOSE DETAILLE DE MODES DE REALISATION PARTICULIERS L'idee de base de la presente invention est de prevoir un dispositif (ou portefeuille physique) de stockage de cies numeriques comprenant un haut-parleur, un microphone et un processeur de signal numerique DSP (Digital Signal Processor) avec un 25 element securise dans lequel sont stockes les couples de cies secretes et de cies publiques, le DSP ne communiquant avec l'exterieur du dispositif physique que par signaux ultrasonores aleatoires (ou pseudo-aleatoires) via ledit microphone et ledit hautparleur. 9 A cette fin, le DSP comprend un module de codage/decodage acoustique utilisant un dictionnaire de codage (codebook) S, dont les mots de code representent des signaux ultrasonores aleatoires ou pseudo-aleatoires stockes dans la memoire du DSP ou dans une memoire securisee du dispositif a laquelle seul le DSP a acces. Autrement dit, un 5 mot de code est une representation numerique d'un tel signal ultrasonore aleatoire ou pseudo-aleatoire, ce signal etant genere en convertissant le mot de code un signal analogique, en amplifiant ce signal analogique le cas echeant avant d'attaquer un transducteur. Le dispositif est adapts a emettre vers et a recevoir d'une application de 10 portefeuille (wallet application) des donnees cryptographiques, sous forme de mots dudit dictionnaire, via un canal acoustique entre ledit dispositif et le terminal hebergeant ('application de portefeuille. Ainsi, les donnees cryptographiques ne sont pas transmises via une interface USB ou Bluetooth comme dans l'art anterieur, avec les risques inherents d'interception 15 (eavesdropping) ou d'attaques physiques. L'utilisation de signaux ultrasonores a faible portee rend ces tentatives d'intrusion inoperantes. En outre, la transmission de donnees cryptographiques au moyen de signaux ultrasonores aleatoires ou pseudo-aleatoires augmente sensiblement la robustesse du canal a de teller attaques. 20 La Fig. 2 represente de maniere schernatique un systerne comprenant un dispositif de stockage de cies numeriques selon un mode de realisation de ('invention. Le dispositif (ou portefeuille physique) de stockage de cies numeriques a ete represents en 210 avec le DSP en 219, le microphone en 213 et le haut-parleur en 217. Le dispositif peut etre implements sous forme de smartphone comme illustre sur 25 la figure, ou sous forme d'une cle USB specifique pourvue d'une interface HMI simple (ecran LCD et boutons par exemple), voire sous forme de jeton d'authentification (boitier electronique specifique), voire encore sous la forme d'un ordinateur portable. Dans ce cas, le DSP 219 pourra etre celui déjà present par construction dans l'ordinateur portable. II est important de noter que lorsque le portefeuille physique de stockage est 30 implements sous la forme d'une cle USB specifique, celle-ci ne comprend que des 10 broches d'alimentation. Ainsi, la cle pourra etre enfichee dans un connecteur USB d'un ordinateur et etre ainsi alimentee sans que cet ordinateur puisse acceder aux donnees stockees dans le portefeuille physique. Outre le portefeuille physique, le systerne 200 comprend un terminal 5 (typiquement un ordinateur portable, PC), 220, relie a Internet et pouvant par consequent communiquer avec d'autres nceuds du reseau P2P (Peer to Peer) mettant en oeuvre la chaine de blocs. Dans la suite de la description, nous supposerons, sans perte de generalite, que la chaine de blocs est Bitcoin. 10 Le terminal de l'utilisateur, 220, heberge une application de portefeuille wallet _ app ), 225, telle qu'un client leger SPV (Simplified Payment Verification) conferant au terminal la fonction de nceud leger (lightweight node) et lui permettant de former et de verifier des transactions sur la chaine de blocs. Alternativement, dans le cas d'une utilisation non nomade, le terminal de l'utilisateur pourra heberger un client 15 complet, lui permettant d'avoir acces a une copie de ('ensemble du registre partage. L'application de portefeuille 225 comprend egalement un module de decodage utilisant le dictionnaire S lui permettant de decoder les signaux aleatoires/pseudoaleatoires reps du dispositif de stockage. Alternativement, le terminal pourra comprendre un DSP (non represents) effectuant un tel decodage sur requete de 20 l'application et retournant a celle-ci les messages ainsi decodes. Alternativement encore, le terminal pourra transmettre les signaux aleatoires/pseudo-aleatoires qu'il aura reps a un serveur de decodage dans le Cloud qui lui renverra alors les messages decodes. Ce dernier exemple de realisation est avantageux dans Ia mesure ou l'on pourra commuter le dictionnaire S de maniere adaptative dans le serveur de decodage et le dispositif de 2 5 stockage. Le dispositif de stockage de cies numeriques, 210, comprend un module logiciel, 215, dit module de controle de portefeuille ( walletctrl _app), ayant essentiellement pour fonction de generer une (ou des) paire(s) (cle privee, publique) et de signer des messages a l'aide de Ia cle privee ainsi generee, par exemple des transactions formees par 3 0 l'application de portefeuille. 11 Dans une premiere phase, le portefeuille physique de stockage de cies numeriques est initialise. Tout d'abord, le portefeuille physique pourra etre protégé a l'aide d'un mot de passe (code PIN), un lecteur d'empreintes digitales, un capteur d'iris ou tout autre 5 capteur d'authentification biornetrique. La saisie de mot de passe ou la saisie biornetrique a simplement pour objet de proteger l'acces au portefeuille physique. Dans le cas ou un mot de passe est utilise pour l'authentification, celui pourra etre saisi au moyen de ('interface HMI (ecran tactile par exemple) et valide par exemple en appuyant sur un bouton de validation ou en cliquant sur une icone de validation 10 affichee a l'ecran. En outre, la phase d'initialisation comprend la generation d'au moins une paire de cies (cle privee, cle publique) par un cryptosysterne sur courbe elliptique ou ECC, dont les parametres de domaine ont ete prealablement stockes dans le DSP. La cle privee pourra etre obtenue par exemple a partir d'une sequence de mots saisis ou selectionnes 15 au moyen de ('interface HMI. De preference, cette sequence est utilisee comme graine (seed) pour creer des generations successives de paires (cle privee - cle publique) d'un portefeuille hierarchique deterministe (HD wallet ou Hierarchical Deterministic Wallet), selon les standards BIP0032 et BIP044. Dans tour les cas, les cies privees/cles publiques n'apparaissent pas explicitement sur ('interface HMI mail sont generees au rein du DSP, 20 219, et stockees localement, les cies privees etant stockees dans ('element securise precite. Une fois la phase d'initialisation effectuee et ('application de portefeuille 225 lancee sur le terminal 220, it est possible de realiser sur la chaine de blocs des operations a l'aide du portefeuille en question. 25 L'operation la plus simple est la consultation du portefeuille, c'est-a-dire l'obtention de la liste des UTXO dont l'utilisateur, ou plus precisement l'adresse de son portefeuille, est destinataire. On rappelle que l'adresse de portefeuille est obtenue par un hachage de la cle publique de l'utilisateur. L'utilisateur peut bien entendu posseder plusieurs cies publiques 30 et plusieurs adresses de portefeuille correspondantes. Dans ce cas, les UTXO a destination 12 de chacune de ces adresses pourront etre stockes dans un repertoire distinct dans l'application wallet _ app . Si le portefeuille physique n'a stocke qu'une paire (cle privee, cle publique), l'utilisateur peut demander, via l'interface HMI du portefeuille physique, de transmettre 5 la cle publique, voire l'adresse de portefeuille correspondante, a l'application 225. Si le portefeuille physique a stocke en memoire une pluralite de cies publiques, l'utilisateur peut selectionner via l'interface HMI la cle publique ou l'adresse de portefeuille souhaitee et demander sa transmission a l'application 225. Dans les deux cas, le DSP transmet la cle publiquefladresse de portefeuille au 10 moyen de signaux ultrasonores aleatoires (ou pseudo-aleatoires) du dictionnaire S, sur le canal acoustique 250. Les mots de code de S (signaux ultrasonores aleatoires ou pseudoaleatoires) sont choisis de maniere a ce que la matrice de correlation de ces signaux, eventuellement fares par le filtre equivalent du canal acoustique, soit la plus proche possible d'une matrice diagonale. Autrement dit, les signaux ultrasonore aleatoires (ou 15 pseudo-aleatoires) sont choisis de maniere a ce que les valeurs des coefficients d'intercorrelation soient minimales et celles des coefficients d'autocorrelation soient maximales. La creation d'un tel dictionnaire S est detainee dans la demande francaise N° 16 55443 deposee le 13 juin 2016 dont le contenu est incorpore ici par reference. Ces signaux sont ernis par le haut-parleur (transducteur electro-acoustique par 20 exemple piezo-electrique), 217, du dispositif physique 210 et recus par un microphone (par exemple un transducteur piezo-electrique), 223, du terminal, pour etre fournis a l'application de portefeuille 225, soit directement dans le cas ou l'application de portefeuille se charge du decodage, soit apres decodage par le DSP residant dans le terminal, soit encore par decodage par un serveur de decodage comme indique plus haut. 25 Quelle que soit la variante de decodage, l'application de portefeuille peut ensuite lancer une requete sur la chaine de blocs pour rechercher les transactions (par exemple au moyen d'un block chain browser tel que block explorer ou une API telle que blockchain.info) a destination de cette adresse. Si la cle publique est transmise au terminal, l'application de portefeuille peut determiner par simple hachage l'adresse de 30 portefeuille correspondante et lancer la requete comme precedemment. La chaine est 13 alors scannee pour rechercher les transactions a destination de cette adresse. Dans tour les cas, les transactions dont Alice est destinataire sont affichees dans une fenetre de ('application 225. 5 La Fig. 3A represente un premier exemple d'architecture du dispositif de stockage de cies numeriques dans le systerne de la Fig. 2. Le systerne d'exploitation 212 (par exemple AndroIdTM) tourne sur le microprocesseur 211. De preference, le systerne d'exploitation ne communique au DSP qu'a travers le microprocesseur de maniere a renforcer la robustesse aux attaques. 10 Le microprocesseur recoit du DSP des messages numeriques sous forme de mots du dictionnaire S et les transfere au pilote du haut-parleur 217. Ces messages sont convertis en analogique, amplifies et les signaux resultants sont transformes en signaux ultrasonores correspondants par le haut-parleur 217 pour etre transmis sur le canal acoustique 250. 15 Reciproquement, le microprocesseur recoit du microphone 213 des signaux ultrasonores, prealablement convertis sous forme numerique, et les transmet au DSP, 219. On comprend ici que le microprocesseur joue un role transparent dans les echanges entre le DSP et l'exterieur du dispositif. 20 La Fig. 3B represente un second exemple d'architecture du dispositif de stockage de cies numeriques dans le systerne de la Fig. 2. Le DSP peut recevoir des messages de controle et, le cas echeant, retourner des messages de reponse au microprocesseur comme precedemment. En revanche, dans cet 25 exemple, le DSP recoit et transmet directement les signaux ultrasonores aleatoires/pseudo-aleatoires sans passer par l'intermediaire du microprocesseur. Dans un exemple de realisation particulier, le DSP, le haut-parleur et le microphone font partie d'une merne carte son. 14 La Fig. 4A recapitule de maniere schernatique les echanges au rein du systerne 200 lorsqu'Alice consulte son portefeuille. En 410, le portefeuille physique transmet la cle publique d'Alice pKa ou l'adresse de portefeuille @ walletAlice, via le canal acoustique, a l'application wallet _ app du terminal. 5 Plus precisement, la cle publique pKa est transmise sous la forme d'un signal ultrasonore aleatoire/pseudo-aleatoire cr(pKa) ou , designe ('operation de codage au moyen du dictionnaire S precite. Alternativement, l'adresse de portefeuille @ walletAlice sera transmise sous la forme d'un signal ultrasonore aleatoire/pseudo- aleatoire ci(@walletAlice). 10 Apres decodage de ce signal, l'application transmet une requete en 420 pour scanner dans la chaine de blocs les transactions dont @ walletAlice est destinataire. Apres avoir recupere ces transactions en 430, Alice peut lister les UTXO a son adresse (transactions dont @ walletAlice est destinataire dont la sortie est non depensee) pour les agreger eventuellement. 15 L'UTXO, voire les UTXO agreges dans le cas d'une agregation, pourra(ont) ainsi etre utilise(s) comme entree(s) d'une nouvelle transaction pour effectuer un paiement. A ('inverse, l'adresse @ walletAlice pourra etre communiquee sous la forme codee (:)-(@ walletAlice) via un canal acoustique a un tiers disposant d'un terminal 220 comme celui precedemment decrit, de maniere a ce qu'il puisse effectuer un paiement a 20 destination de l'adresse de portefeuille d'Alice. Ainsi, si Alice souhaite effectuer un paiement a Bob, elle ouvre son application de portefeuille, 225, sur le terminal 220 et remplit les parametres necessaires a la transaction. Elle selectionne dans son portefeuille l'UTX0 (voire les UTXO en cas d'agregation) 25 qu'elle souhaite utiliser pour le transfert, le montant a transferer et l'adresse de portefeuille du beneficiaire, @walletBob. Sans perte de generalite, on suppose dans la suite qu'un seul UTXO est selectionne. Cet UTXO est la sortie d'une transaction source Tfisr autrement dit la transaction T a cree cet UTXO. Tom, fi A" id 15 L'application de portefeuille forme alors une nouvelle transaction, Ira , par exemple au moyen d'un script P2PKH (Pay to Public Key Hash). Dans le segment d'entree de Tc, , l'application fournit d'abord la reference de I'UTXO selectionne, c'est-a-dire le hache de la transaction source, Tom, snit h(Tfund) . 5 Dans le segment de sortie de Tc, , l'application fournit ensuite le montant a transferer et un script de verrouillage verrouillant ce montant a I'adresse de portefeuille @walletBob. L'application 225 dolt ensuite fournir les elements cryptographiques pour deverrouiller le script de verrouillage qui protege I'UTXO d'entree de Tc, (UTXO a 10 destination de @walletAlice dans Ia transaction source Tfo,d ), a savoir sa cle publique et une signature au moyen de sa cle privee. Pour ce faire, le logiciel de portefeuille 225 demande au portefeuille physique 210 de signer Ia transaction en Iui transmettant un message, M, comprenant le hache de Ia transaction source, h(T ) le script de verrouillage (scriptPubKey) de Ia transaction 15 source Tom, le montant en cryptomonnaie et le script de verrouillage (scriptPubKey) verrouillant ledit montant a I'adresse de portefeuille @walletBob. Le message M est transmis au DSP via le canal acoustique, sous la forme (so/ ) obtenue par codage de M au moyen du dictionnaire S. Les signaux ultrasonores correspondants sont ernis par le haut-parleur 227 du terminal et recus par le microphone 20 213 du portefeuille physique 210. Le DSP transmet, via le microprocesseur a l'application walletctrl _ app I'adresse du destinataire du paiement ainsi que le montant. L'application demande alors a I'utilisateur de confirmer la transaction (en appuyant sur une icone de l'ecran tactile ou bouton). Si l'utilisateur la confirme avant ('expiration d'un time out , l'application 25 walletctrl _app en avertit le DSP qui signe alors le message M avec la cle privee (au moyen d'un algorithme de signature sur courbe elliptique ou ECDSA) et transmet la 16 signature obtenue, Sig , au terminal 220. La signature Sig est transmise sous une forme codee, o-(Sig), au moyen des signaux du dictionnaire S, via le canal acoustique La encore, le signal u(sig) peut etre decode par l'application de portefeuille, le DSP local ou un serveur de decodage distant. Apres decodage, l'application de 5 portefeuille 225 recupere la signature Sig et la concatene avec la cle publique d'Alice, plc pour former le script de deverrouillage (scriptSig). L'application wallet _ app fournit le hache de la transaction source, h(T ) et le script de deverrouillage pour former le segment d'entree de la transaction 1:, . L'application de portefeuille invite alors l'utilisateur a confirmer le paiement (par 10 exemple en cliquant sur une icone). Si le paiement est confirm& la transaction Tc, est diffusee aux nceuds du reseau P2P pour etre validee et incorporee dans un prochain bloc de la chaine. La Fig. 4B recapitule de maniere schernatique les echanges au rein du systerne 15 200 lorsqu'Alice effectue un paiement. A l'etape 450, apres que l'utilisateur ait saisi le montant du paiement et l'adresse de portefeuille du beneficiaire dans une fenetre de l'application de portefeuille, cette derniere construit un message, M, a partir du hache de la transaction source, h(T ) du script de verrouillage de la transaction source, du montant du paiement en 20 cryptomonnaie, ainsi que d'un script de verrouillage verrouillant le montant a l'adresse de portefeuille du beneficiaire, @walletBob. Le signal 6(M) obtenu par codage de M (au moyen du dictionnaire S) est transmis sur le canal acoustique au moyen des signaux ultrasonores aleatoires du dictionnaire S. 25 Apres decodage de 6(M) et recuperation du message M par le DSP, celui-ci transmet en 451 l'adresse de portefeuille du beneficiaire ainsi que le montant a l'application de contrOle walletctrl _ app . 17 La validation par l'utilisateur est transmise par walletctrl _ app au DSP en 452. Le DSP signe alors le message M a l'aide de sa cle privee (EDCSA), code la signature obtenue avec le dictionnaire S pour obtenir un signal o-(Sig) et transmet ce dernier au terminal 220, comme precedemment, via le canal acoustique. 5 Le signal 6(Sig) est decode au niveau du terminal 220 pour fournir la signature Sig . L'application de portefeuille wallet _app construit alors en 370 le script de deverrouillage a partir de la signature ainsi revue et de la cle publique d'Alice pour former le segment d'entree de la transaction. De meme, elle concatene le script de verrouillage 10 au montant pour former le segment de sortie de la transaction. Une foil le paiement valide par l'utilisateur sur la fenetre de l'application de portefeuille, celle-ci la diffuse en 480 aux autres nceuds du reseau P2P. Dans la description ci-dessus, nous avons suppose que la chaine de blocs etait 15 Bitcoin. Alternativement, elle peut etre une chaine blocs dans laquelle it est possible d'enregistrer et d'executer des contrats intelligents (smart contracts). Un exemple d'une telle chaine de blocs est Ethereum. On rappelle qu'un contrat intelligent est un programme qui peut etre execute par n'importe quel nceud du reseau P2P mettant en oeuvre la chaine de blocs. II peut notamment stocker des donnees, envoyer et recevoir 20 des paiements, executer des actions de maniere autonome et decentralisee comme un agent logiciel. Generalement, un contrat intelligent verifie si un certain nombre de conditions sont remplies et, dans ('affirmative, s'execute automatiquement pour fournir un resultat code dans le contrat. Le portefeuille physique de cies numeriques permet de la meme fawn de 25 s'authentifier comme une partie a un contrat intelligent et, par exemple, de donner son consentement. Pour ce faire, l'application de portefeuille (ou de compte selon la terminologie Ethereum) pourra former une transaction et le proprietaire pourra la signer au moyen du portefeuille physique, la transaction ainsi signee etant transmise au contrat intelligent stocke dans la chaine de blocs. 18 Enfin, dans la description precedente on a suppose que le terminal 220 etait distinct du dispositif de stockage de cies numeriques 210. Si ce dernier est un smartphone, celui-ci peut egalement faire office de terminal connects a Internet : le terminal est alors confondu avec le dispositif et les premier et second modules de logiciel 5 sont des modules d'une merne application (voire d'applications distinctes) du smartphone comme represents dans l'exemple de realisation de la Fig. 5A. Ils dialoguent alors via un canal acoustique local entre le haut-parleur 217 et le microphone 213. Inversement, le terminal peut incorporer le DSP 219 avec son element securise, les premier et second modules de logiciel faisant partie d'une merne application (voire 10 d'applications distinctes) du terminal, comme represents dans l'exemple de realisation de la Fig. 5B. Ces modules de logiciels dialoguent alors via un canal acoustique local entre le haut-parleur 217 et le microphone 213, comme dans le premier exemple d'implementation. Nous avons egalement suppose dans la description que le dispositif de stockage 15 de cles/le terminal disposait du merne dictionnaire de codage S pour remission et la reception de messages. Alternativement, on pourra utiliser deux dictionnaires de codage distincts, S et S' pour remission et la reception, le dictionnaire en emission de l'un etant le dictionnaire et reception de l'autre REVENDICATIONS1. Dispositif de stockage de cies numeriques pour signer des transactions sur une chaine de blocs, caracterise en ce qu'il comprend un microphone (213), un haut- parleur (217), un processeur DSP (219) possedant un element securise destine a stocker au moins une cle secrete, le DSP comprenant en outre un codeur/decodeur utilisant un dictionnaire, S, dont les mots de code, stockes dans une memoire du DSP ou dans une memoire securisee seulement accessible par le DSP, representent des signaux ultrasonores aleatoires ou pseudo-aleatoires, le DSP ne communiquant avec l'exterieur du dispositif que par un canal acoustique (250), le DSP etant adapte a decoder un message constitue de mots de 5, reps d'un canal acoustique, via le microphone (213), a signer le message ainsi decode au moyen de ladite cle privee et a transmettre en reponse une signature dudit message sous la forme d'une reponse constituee de mots successifs de S, sur ledit canal acoustique, via le haut-parleur (217). 2. Dispositif de stockage de cies numeriques selon la revendication 1, caracterise en ce que ledit dispositif comprend une interface HMI au moyen de laquelle un utilisateur peut saisir une cle privee ou une graine permettant de generer une succession de cies privees, ladite/lesdites cle(s) privee(s) etant stockee(s) dans ('element securise du processeur DSP. 3. Dispositif de stockage de cies numeriques selon la revendication 2, caracterise en ce que le processeur DSP utilise un cryptosysterne asymetrique sur courbe elliptique pour calculer une cle publique a partir de la cle privee saisie par l'utilisateur ou generee par le DSP a partir de ladite graine. 4. Dispositif de stockage de cies numeriques, selon la revendication 3, caracterise en ce que le processeur DSP est adapte a calculer un hache de ladite cle publique au moyen d'une fonction de hachage afin d'obtenir une adresse de portefeuille sur une chaine de blocs. 20 5. Dispositif de stockage de cies numeriques, selon la revendication 4, caracterise en ce que le dispositif heberge un module logiciel (215) adapts a requerir du processeur DSP la transmission sur le canal acoustique de la cle publique et/ou de 5 l'adresse de portefeuille sur le canal acoustique. 6. Dispositif de stockage de cies numeriques selon l'une des revendications precedentes caracterise en ce qu'il est realise sous forme de smartphone, le processeur 10 DSP etant implements dans un chip distinct du microprocesseur sur lequel tourne le systerne d'exploitation du smartphone. 7. Dispositif de stockage de cies numeriques selon l'une des revendications 1 a 5, caracterise en ce qu'il est realise sous forme d'une cle USB ne comportant pas de 15 broches de connexion autres que des broches d'alimentation. 8. Methode de paiement par un utilisateur a un tiers d'un montant en cryptomonnaie au moyen d'un dispositif de stockage de cies numeriques selon l'une des 20 revendications precedentes et d'un terminal (220) hebergeant un second module logiciel (225), ledit terminal etant connects via Internet au reseau P2P mettant en ceuvre la chaine de blocs, caracterisee en ce que ledit utilisateur saisit dans une fenetre affiche par le second module logiciel, le montant du paiement et l'adresse de portefeuille du tiers, et que le second module logiciel forme une transaction comportant un segment d'entree et 25 un segment de sortie, le segment d'entree comprenant au moins une reference a une transaction anterieure (T ) dont l'utilisateur est destinataire, un script de verrouillage de la transaction anterieure, le segment de sortie comprenant ledit montant ainsi qu'un script de verrouillage dudit montant a l'adresse de portefeuille du tiers, le second module logiciel transmettant (450) un premier message (M) comprenant la transaction ainsi 30 formee au dispositif de stockage de cies numerique, et en cas de validation par l'utilisateur (452), le processeur DSP signe ledit message et renvoie (460) la signature ainsi 21 obtenue sous la forme d'un second message (Sig ) audit terminal, les premier et second messages etant transmis sur le canal acoustique sous forme codee au moyen de mots de code du dictionnaire S, et le second module logiciel substituant dans ladite transaction le script de verrouillage de la transaction anterieure par un script de deverrouillage 5 contenant la signature ainsi revue et la cle publique de l'utilisateur. 9. Methode de paiement par un utilisateur a un tiers d'un montant en cryptomonnaie au moyen d'un dispositif de stockage de cies numeriques selon l'une des revendications 1 a 5, realise sous la forme d'un ordinateur ou d'un smartphone, le 10 dispositif hebergeant un second module logiciel (225), et etant connecte via Internet au reseau P2P mettant en ceuvre la chaine de blocs, caracterisee en ce que ledit utilisateur saisit dans une fenetre affichee par le second module logiciel, le montant du paiement et l'adresse de portefeuille du tiers, et que le second module logiciel forme une transaction comportant un segment d'entree et un segment de sortie, le segment d'entree 15 comprenant au moins une reference a une transaction anterieure (T ) dont l'utilisateur est destinataire, un script de verrouillage de la transaction anterieure, le segment de sortie comprenant ledit montant ainsi qu'un script de verrouillage dudit montant a l'adresse de portefeuille du tiers, le second module logiciel transmettant (450) un premier message (M) comprenant la transaction ainsi formee au dispositif de stockage de cies 20 numerique, et en cas de validation par l'utilisateur (452), le processeur DSP signe ledit message et renvoie (460) la signature ainsi obtenue sous la forme d'un second message ( Sig ) au dispositif, les premier et second messages etant transmis sur le canal acoustique (250) sous forme codee au moyen de mots de code du dictionnaire S, et le second module logiciel substituant dans ladite transaction le script de verrouillage de la 25 transaction anterieure par un script de deverrouillage contenant la signature ainsi revue et la cle publique de l'utilisateur. 22 10. Methode de paiement selon la revendication 8 ou 9, caracterisee en ce que, apres substitution, la transaction ( Ta ) est diffusee (480) aux nceuds du reseau P2P pour etre validee et incorporee dans un prochain bloc de la chaine de blocs. 5