a
a
Weather:
city not found
HomeBitcoinAh merde, j’ai perdu mon portefeuille Ethereum | par Eric Olszewski

Ah merde, j’ai perdu mon portefeuille Ethereum | par Eric Olszewski

Récupération pour les portefeuilles Ethereum

Avez-vous déjà laissé votre carte de crédit dans un restaurant ou un bar? Aucun problème! Vous pouvez généralement appeler l’entreprise le lendemain et récupérer votre carte auprès d’eux. Même dans le cas d’une carte complètement perdue, vous pouvez appeler la société émettrice, lui demander de fermer la carte perdue et vous en envoyer une nouvelle par la poste – facile!

Avez-vous déjà perdu votre portefeuille Ethereum? Une histoire différente, non?

À ce stade, si vous LSi vous sortez de votre portefeuille Ethereum, vous n’avez pas de chance. Cela est dû au fait qu’il n’y a pas de «continuité d’identité» dans l’espace blockchain. Cela signifie, en effet, qu’une fois que vous perdez quelque chose, il est parti … pour toujours. Et c’est la nature de la décentralisation, les individus sont 100% responsables et responsables de leur propre sécurité sans aucune sorte d’assurance ou de filet de sécurité.

Bien sûr, de nombreuses pièces / jetons ont été retirés de la circulation pour cette raison. En fait, sur les 21 millions de bitcoins qui existeront un jour, entre 2,8 et 4 millions (14 à 20% de l’offre totale) ont déjà été perdus. Et avec la récente hausse des prix de l’année dernière, nous avons vu de plus en plus d’histoires de personnes jetant accidentellement leurs portefeuilles Bitcoin qui ont fait surface.

Il faut se demander combien de ces histoires sont crédibles …

On peut faire mieux. Ici, je vais décrire certaines des méthodes cryptographiquement valides pour la récupération de portefeuille dans la cryptosphère. Mais avant d’entrer dans le vif du sujet, je souhaite vous expliquer ce qu’est exactement un portefeuille Ethereum.

Attention: cette section contient du jargon technique.

Chiffrement à clé publique

Sous le capot, Ethereum s’appuie sur la cryptographie à clé publique pour les garanties de sécurité qu’il offre à ses utilisateurs. Il s’agit d’un système qui repose sur une paire de clés (appelée clé privée et clé publique) qui peut être comparée à un nom d’utilisateur (clé publique) et un mot de passe (clé privée). La clé publique est dérivée de la clé privée via certaines fonctions spécifiées par chaque protocole. En termes d’équation de base, nous pouvons la penser comme suit.

pk = f (sk)

Où pk est la clé publique, sk est la clé privée (clé secrète) et f est une fonction.

Clés privées

Dans Ethereum, les clés privées sont simplement 64 caractères hexadécimaux (64 caractères de 0 à 9 et AF, ci-dessous). Cela signifie qu’il y a 16 clés privées que nous pouvons créer, ou à peu près autant qu’il y a de clés privées atomes dans tout l’univers.

Ainsi, lorsque vous en choisissez un au hasard, vous pouvez être sûr que personne d’autre (même avec toute la puissance de calcul dont nous disposons aujourd’hui) ne pourra le deviner sans le voir. En fait, voici quelques calculs simples pour vous donner une idée de la durée de tout le réseau bitcoin (avec un taux de hachage de pointe récent de 50 billions de hachages sha256 par seconde).

16⁶⁴ / 5e13 / 3600/24 ​​/ 365,25 = 7,3384598e55 ans

Ce qui va bien au-delà de la vie de l’univers entier, cela devrait donc fournir une bonne garantie que votre clé privée sera difficile à reproduire!

Clés publiques

Pour dériver la clé publique, Ethereum utilise la cryptographie à courbe elliptique, qui permet à quelqu’un de représenter graphiquement un type spécial de fonction, puis d’obtenir un point le long de celle-ci (cela se fait généralement en multipliant la clé privée par un point générateur mis à). Prenons un exemple simple:

Imaginez avoir la fonction:

f (x) = x + 3

Nous choisissons un point aléatoire g (notre point générateur) sur cette fonction que nous multiplierons avec notre clé privée:

g = 2,5432

Nous pouvons utiliser l’équation de la section des clés privées pour dériver notre clé publique. Nous prendrons une clé privée (sk) égale à 2 (précédée de 63 0) et l’utiliserons pour accéder à notre clé publique:

sk = 00000000 … 000000000000000000000000000000002

pk = f (g * sk)

pk = 2 * 2,5432 + 3

pk = 8,0864

Remarque: ce n’est pas précis à 100% et a pour objectif principal de démontrer l’idée. Pour plus d’informations sur la cryptographie à courbe elliptique, consultez ceci article.

Portefeuille Ethereum

La fonction F ce que nous avons présenté ci-dessus serait généralement représenté par une courbe elliptique. Il existe de nombreux types de courbes elliptiques qui sont nommées et connues dans le monde: celle qui a été utilisée par Bitcoin (et plus tard Ethereum) est connue sous le nom de Secp256k1. C’est la fonction qui nous permet de dériver des clés publiques à partir de clés privées.

Maintenant, dans Ethereum, il y a un peu de travail supplémentaire à faire après la génération de la clé privée et quelques règles à suivre – je n’irai pas trop loin dans tout cela, mais l’essentiel ici est que votre clé privée ne le soit pas il doit commencer par « 00 » pour devenir un portefeuille Ethereum valide. En ce qui concerne les calculs supplémentaires utilisés pour passer d’une clé publique à une « adresse » Ethereum, les étapes suivantes se produisent:

  • Une fonction de hachage appelée Keccack-256 est appliquée à la clé publique
  • Les 20 derniers octets de ce hachage sont pris puis précédés de « 0x »

Pour plus d’informations sur la façon dont ces portefeuilles adressés Ethereum sont générés, consultez cet article de StackExchange.

Maintenant que nous avons une compréhension claire de ce qu’est un portefeuille, revenons au traitement du cas d’un portefeuille perdu ou compromis.

Nous avons « oublié le mot de passe » avec les sites Internet, alors pourquoi ne pouvons-nous pas l’avoir avec des portefeuilles? Eh bien, c’est parce que lorsque vous réinitialisez votre mot de passe sur un site Web, vous demandez à certaines entreprises de modifier votre compte pour vous, ce qui montre qu’elles ont un contrôle total sur votre compte. Mais cela ne peut pas être appliqué aux portefeuilles blockchain, car les utilisateurs doivent gérer leur propre sécurité, les laissant sans filet de sécurité. Alors, que pouvons-nous faire pour fournir des fonctionnalités similaires?

Clés de récupération

Prenons un exemple moderne de quelque chose qui permet aux utilisateurs de se sauver s’ils sont tous en difficulté: les codes de vérification de sauvegarde. Si vous avez déjà utilisé l’authentification à deux facteurs avec votre compte Gmail, vous la connaissez peut-être. Si vous perdez vos téléphones ou ne pouvez pas obtenir les codes par SMS, appel vocal ou Google Authenticator, vous pouvez utiliser les codes de secours pour vous connecter.

Nous pouvons accomplir le même type de fonctionnalité avec ce que l’on appelle un «  portefeuille proxy  » – il s’agit d’un contrat intelligent qui agit comme un portefeuille multisig (un contrat qui contient des fonds mais nécessite l’approbation d’une ou plusieurs parties pour les distribuer). Dans notre cas, ce portefeuille multisig n’aura qu’un seul compte, mais il aura un compte de récupération spécifié au moment de la création.

Remarque: par souci de familiarité, nous appellerons les adresses de portefeuille les «comptes»

Lorsque le premier compte est perdu ou compromis, le deuxième compte peut appeler une fonction sur le multisig avec un nouveau compte de récupération spécifié où le premier compte sera supprimé, le deuxième compte deviendra le nouveau signataire du multisig et le nouveau compte de récupération sera utilisé au lieu de l’ancien compte de récupération. Ce serait quelque chose comme ce qui suit:

Alice crée un nouveau contrat multi-signature et spécifie un compte de récupération.

À ce stade, Alice peut utiliser le fichier sendEth fonction d’envoyer de l’éther depuis son portefeuille multisig. Alors, utilisez ce contrat pour envoyer Ether jusqu’au jour où il perd son compte … mais ce n’est pas grave! Alice retourne simplement au compte de récupération qu’elle a spécifié et appelle le récupérer le compte fonction où il spécifie un nouveau compte de récupération.

Alice utilise son compte de récupération pour mettre à jour le compte principal et spécifier un nouveau compte de récupération.

Cela mettra à jour son contrat de portefeuille pour supprimer l’ancien compte principal et faire de son compte de récupération le nouveau compte principal. Lorsqu’elle appelle cette fonction, Alice spécifie également un nouveau compte de récupération.

En résumé, les clés de récupération permettent aux utilisateurs de récupérer d’un portefeuille Ethereum perdu ou compromis sans avoir à dépendre d’une entreprise de confiance ou d’un tiers.

Récupération sociale

Désormais, si vous ne vous faites pas confiance pour conserver vos informations de récupération en lieu sûr, vous pouvez obtenir ces informations auprès de vos amis, de votre famille ou de toute personne de confiance. Une méthode populaire pour ce faire dans la communauté est connue sous le nom de partage secret de Shamir.

Lorsque vous créez un compte de récupération, vous pouvez effectivement diviser le compte en un groupe d’éléments et les distribuer à un groupe de personnes. Lorsque vous avez besoin de récupérer, accédez à un seuil spécifié de ces personnes (Ex: 3/10) et vous pouvez ensuite combiner ces pièces pour récupérer votre portefeuille d’origine.

J’ai trouvé ton portefeuille, Jerry

Alors, que signifie exactement obtenir un seuil de pièces de vos amis pour recréer votre compte de récupération? C’est en fait difficile à décrire avec précision sans les mathématiques pour le soutenir, mais nous le prouverons avec des couleurs. La raison pour laquelle je choisis les couleurs est que le processus de mélange des couleurs ressemble étroitement aux propriétés d’une fonction unidirectionnelle. Cela signifie que je peux mélanger le rouge et le jaune pour obtenir de l’orange, mais je ne peux pas commencer par l’orange et le séparer pour obtenir le rouge et le jaune, donc le processus est à sens unique.

Imaginez que votre compte de récupération est alors représenté par la couleur orange et que vous savez que cette orange est exactement 50% rouge et 50% jaune (et vous savez à 100% pourquoi vous avez créé le compte de récupération – en les demandant couleurs dans le processus). Avec ces rouges et ces jaunes, gardez le jaune et distribuez le rouge à trois amis. Maintenant, si vous avez toujours voulu vous souvenir de ce qu’était votre compte de récupération, il vous suffit d’obtenir le rouge d’un de vos amis et le tour est joué – vous avez votre compte de récupération orange!

Pour ceux qui souhaitent connaître et comprendre le processus d’exécution de cela mathématiquement et avec du code, je vous exhorte à lire sur le partage secret de Shamir.

À ce jour, de nombreuses crypto-monnaies sont sorties de la circulation en raison de la perte ou de la compromission de portefeuilles de crypto-monnaie. En exploitant les soi-disant «portefeuilles proxy», nous fournissons un mécanisme de récupération pour les comptes Ethereum perdus. Ces portefeuilles agissent comme un portefeuille avec un compte principal et un compte de récupération spécifié au moment de la création. Lorsque le compte principal est compromis ou perdu, le compte de récupération peut être utilisé comme nouveau compte principal (invalidation de l’ancien) et pour spécifier un nouveau compte de récupération (en mode round robin).

Les comptes de récupération peuvent être détenus par l’utilisateur ou répartis sur plusieurs parties au sein d’un groupe d’individus de confiance. Les entreprises qui créent des produits qui suivent ce type de précédent offriront une expérience utilisateur améliorée à leurs clients, aidant à empêcher que davantage d’Ether ne soit verrouillé dans des comptes où les informations d’identification ne peuvent pas être récupérées.

Si vous avez des projets qui exploitent des portefeuilles proxy, j’aimerais voir votre mise en œuvre et comment vous abordez les choses. Et s’il y a quelque chose que je peux améliorer à ce sujet, n’hésitez pas à me le faire savoir dans la section commentaires, ici. Enfin, si vous avez gagné quelque chose grâce à cet article, Je ne suis qu’un noob des médias sociaux et j’apprécierais que vous partagiez cela avec votre réseau.

Trouvez-moi sur Twitter ou GitHub!


https://medium.com/@eolszewski/ah-sh-t-i-lost-my-ethereum-wallet-321574e6ed79

No comments

leave a comment