Les portefeuilles sont des outils essentiels qui permettent aux utilisateurs de gérer leurs comptes blockchain, de stocker en toute sécurité leurs actifs et de signer des transactions pour apporter des modifications à l'état de la blockchain.
Dans ce post, nous couvrirons ce qu'est un portefeuille, comment les portefeuilles sont fabriqués, et comment ils utilisent la cryptographie à courbe elliptique pour générer et sécuriser des paires de clés privées-publiques, dériver des phrases de démarrage, et faciliter des interactions sécurisées avec la blockchain.
Chaque compte sur la blockchain est composé d'une paire de clés cryptographiques ; un ensemble de 2 clés qui sont liées l'une à l'autre. Dans le contexte des blockchains, ce type de compte est généralement appelé un compte possédé par un tiers (EOA), et se compose d'une clé publique et d'une clé privée :
Clé publique : L'adresse de votre portefeuille. Elle peut être partagée avec n'importe qui, et d'autres personnes (ou contrats intelligents) peuvent l'utiliser pour vous envoyer des cryptomonnaies.- Clé privée : La “clé de signature” que vous utilisez pour signer des messages ou des transactions. Toute personne ayant accès à la clé privée a un contrôle total sur les fonds du portefeuille.Cette paire de clés a une fonction puissante appelée une fonction de porte dérobée ; ce qui signifie que c'est:
Facile de comprendre la clé publique si vous avez la clé privée (A→B).- Impossible de trouver la clé privée si vous avez la clé publique (B→A).
Les portefeuilles fournissent un moyen de savoir quelles messages ou transactions un portefeuille a accepté ; puisque la clé publique de l'expéditeur de la transaction peut être récupérée à partir de la signature de la transaction. C'est essentiel pour empêcher les transactions fausses / malveillantes d'être acceptées sur la blockchain.
Par exemple, Jarrod pourrait soumettre une transaction affirmant qu'Abril lui a envoyé 5 ETH même si elle n'a jamais accepté cette transaction. Cependant, comme la blockchain vérifie la signature de chaque transaction, elle rejettera rapidement la transaction car l'adresse récupérée à partir de la signature ne correspond pas à l'« expéditeur » de la transaction (c'est-à-dire Abril).
Les blockchains comme Ethereum utilisent ECDSA (Elliptic Curve Digital Signature Algorithm) pour vérifier si la clé publique récupérée à partir de la signature de la transaction correspond à la clé publique de la personne qui a envoyé la transaction au réseau.
Ensuite, nous plongerons dans la façon dont une clé publique est dérivée à l'aide d'une courbe elliptique et d'une clé privée. Mais avant cela, nous répondrons à quelques autres questions que vous pourriez avoir sur les portefeuilles, telles que:
Cela permet aux utilisateurs de se souvenir d'un seul ensemble de mots pour accéder à tous leurs comptes ; chacun avec une paire de clés publique-privée individuelle. Un nombre quelconque de nouvelles clés privées peut être dérivé d'une seule phrase semence en utilisant une fonction de dérivation de clé spécifique (KDF).
Donc, commençons par expliquer comment les phrases de récupération sont générées via une entropie aléatoire et comment les clés privées peuvent être dérivées d'une phrase de récupération, avant de revenir enfin sur la façon dont les clés publiques sont dérivées des clés privées.
Pour ce faire, un nombre aléatoire est généré à l’aide de CSPRNG (Cryptographically secure pseudorandom number generator), ce que vous pouvez faire dans votre navigateur :
Ce nombre aléatoire est appelé entropie. Cette entropie est utilisée pour créer l'ensemble de mots formant une phrase semence. Dans notre cas, 128 bits correspondent à 12 mots, mais il est également possible d'utiliser d'autres longueurs, telles que :
Donc, maintenant, nous avons 128 bits d'entropie + 4 bits de somme de contrôle, pour un total de 132 bits. Ensuite, les 132 bits sont convertis en binaire ; plus précisément, ils sont divisés en morceaux de 11 bits.
Nous avons maintenant un ensemble de 12 nombres binaires, chacun d'entre eux étant de 11 bits de longueur. Indication: nous avons 12 nombres et notre phrase de départ sera composée de 12 mots !
Rappelez-vous que nous avons 2048 mots dans notre liste et que 2048 a été choisi parce que 2048 est 2^11, puisqu'il y a 2048 nombres binaires différents possibles que vous pouvez faire avec 11 bits.
Maintenant, il suffit de convertir ces nombres binaires en mots de notre liste de mots. Cela est effectué en utilisant le nombre binaire comme index pour chercher un mot dans la liste de mots. Par exemple, si le nombre binaire est 10, nous utilisons le 9ème mot dans la liste (puisque nous commençons à l'index 0), par exemple:

En générant une valeur d'entropie aléatoire, en la divisant en morceaux binaires et en utilisant ces valeurs binaires comme index pour chercher des mots dans une liste de mots, nous aboutissons à une phrase de graine aléatoire.
Imaginez que nous oublions l'étape de génération aléatoire de 128 bits et que nous sélectionnions simplement manuellement 12 mots dans la liste. Chaque fois que nous choisissons un mot, nous sélectionnons une option parmi un pool de 2048 mots.
Ainsi, nous pouvons dire que pour que quelqu'un d'autre devine également cette même séquence de mots, il doit deviner correctement le même mot que nous avec une chance de 1/2048, 12 fois d'affilée. En ce moment, vous vous dites probablement : "ok, ça ne semble pas si difficile...", n'est-ce pas*?*" Mais, jouons ceci :
Imaginez que vous commenciez à deviner dès maintenant, en utilisant un ordinateur incroyablement puissant qui peut deviner 1 billion de phrases de départ par seconde. Il faudrait à cette machine 159 billions d'années pour deviner une phrase de départ. Ou, (selon ce que vous croyez), environ 11 000 fois plus longtemps que l'âge actuel de l'univers.
Les phrases de graine de 24 mots sont-elles meilleures que les phrases de 12 mots?
Certains portefeuilles optent pour 128 bits (12 mots), mais les portefeuilles plus modernes vous demandent de mémoriser 24 mots pour votre phrase de graine! Ce qui est, encore une fois, ridiculement grand.


La valeur de hachage de 64 octets générée peut être utilisée pour générer des comptes en utilisant une logique qui provient d'autres normes Bitcoin ; à savoir BIP-32 et éventuellement, une extension de BIP-32, BIP-44.

Tout d’abord, le hachage est divisé en deux moitiés, chacune d’une taille de 32 octets :
La spécification de cette courbe elliptique comprend un point de base, G, qui est utilisé comme point de départ pour créer d'autres points sur la courbe. À partir de ce point de départ, nous « nous déplaçons » autour de la courbe un certain nombre de fois (déterminé par notre clé privée), d'une manière spécifique. Le point sur la courbe où nous nous retrouvons lorsque nous arrêtons ce processus sera notre clé publique.
La façon dont nous "nous déplaçons" sur la courbe s'appelle la multiplication scalaire. Lorsque nous travaillons avec des courbes elliptiques, un scalaire fait référence à un nombre utilisé pour mettre à l'échelle un point sur la courbe. Nous prenons le point de base G et appliquons le nombre scalaire pour atteindre un nouveau point sur la courbe en "étirant" ce point.
Le nombre scalaire que nous appliquons au point de base est notre clé privée; en clair, nous prenons notre point de départ G, et le multiplions scalairement par notre clé privée pour atteindre notre clé publique.

En réalité, étant donné que la courbe est définie sur le corps premier ℤp, elle ressemble davantage à un tas de points dispersés… mais possède toujours les mêmes propriétés de la courbe elliptique.
À la fin de ce processus de multiplication scalaire (en rebondissant autour du nombre de ), nous aboutirons à un nouveau point sur la courbe, qui est notre clé publique. Vous pouvez imaginer que ce processus ressemble à ceci :

Les portefeuilles sont un composant essentiel des blockchains qui utilisent la cryptographie à courbes elliptiques pour permettre aux utilisateurs de soumettre des transactions et de signer des messages depuis leurs comptes.
Cependant, certaines blockchains comme Abstract prennent également en charge de nouveaux types de portefeuilles, appelés comptes de contrats intelligents, qui offrent plus de fonctionnalités et permettent une sécurité renforcée, des mécanismes de récupération, etc.
Clause de non-responsabilité: Les points de vue et opinions exprimés dans cet article sont uniquement ceux de l'auteur et ne constituent aucun conseil en investissement.
Les traductions de l’article dans d’autres langues sont effectuées par l’équipe de Gate Learn. Sauf mention contraire, il est interdit de copier, de distribuer ou de plagier les articles traduits.





