Projet de clé privée Bitcoin DIY


C’est un projet amusant qui vous aidera à mieux comprendre les clés Bitcoin. Vous aurez besoin d’un crayon, de papier, de quelque chose pour générer une sortie aléatoire en binaire (comme une pièce de monnaie) et d’un ordinateur. Le but ici est de vous faire faire quelque chose qui vous aidera à apprendre beaucoup, au lieu de simplement lire sur la théorie pure. Et ce sera assez facile pour que vous puissiez simplement vous lancer et suivre.

Préambule important

Entraînez-vous d’abord avec ce guide.

Un ordinateur isolé ne doit pas avoir la capacité de se connecter à Internet. Il ne suffit pas de désactiver temporairement votre connexion wifi sur un ordinateur ordinaire si vous êtes sérieux au sujet de la sécurité ; des pirates intelligents existent et peuvent extraire vos clés privées même si vous êtes temporairement déconnecté d’Internet. À la fin, je vous expliquerai ce qu’il faut faire ensuite si vous souhaitez utiliser cette méthode pour fabriquer vos vraies clés.

Projet de clé privée Bitcoin DIY

Bon, commençons le projet…

Étape #1 – Créez un grand nombre binaire aléatoire

vous obtiendrez un caractère aléatoire suffisant.

C’est la procédure (une des nombreuses manières).

  • Prenez environ quatre dés (par exemple d’un vieux jeu de société qui traîne)
  • Considérez les nombres 1, 2 ou 3 comme une sortie de zéro tandis que 4, 5 ou 6 seront une sortie de un. De cette façon, vous obtiendrez une sortie binaire (uniquement des zéros et des uns dans le résultat final) avec des dés (par exemple, lancez un 3, enregistrez un zéro ; lancez un 6, enregistrez un un)
  • décidée à l’avance, est importante pour maintenir l’aléatoire). S’il s’agit d’un appel proche qui est plus à gauche ou à droite, lancez à nouveau

  • Faites 23 lignes de 11 chiffres. La 24e ligne n’aura besoin que de trois chiffres. Pour chaque ligne, regroupez les chiffres en groupes de 4-4-3 (voir image ci-dessous) pour faciliter la lecture et le calcul. Gardez vos colonnes verticales alignées autant que possible et laissez un espace entre chaque ligne pour les calculs manuels. Tout cela aura un sens plus tard

Comme cet exemple :

Il y a 256 chiffres binaires ici – 23 ensembles complets de 11 chiffres, la 24e rangée n’ayant besoin que de trois chiffres.

Mais la réponse à 256 divisé par 11 n’est pas un nombre entier ; il est 23h27.27 mots dans notre graine.

tout se divise bien en 24 ensembles de 11, ce qui donne une graine mnémonique de 24 mots. Comme vous le verrez plus tard, ces huit derniers éléments supplémentaires auront leur propre rôle important à jouer.

Une note sur l’aléatoire :

Vous pouvez créer ces 256 bits de données aléatoires comme vous le souhaitez, à condition qu’elles soient réellement aléatoires. Si ce n’est pas aléatoire, quelqu’un pourrait être en mesure de reproduire les données. Ils seraient alors en mesure de recréer votre clé privée et pourraient prendre tous vos bitcoins. Par exemple, si vous faites 256 bits de zéros (clairement pas aléatoires), alors quelqu’un pourra deviner votre clé privée. En voici la preuve : j’ai généré une clé privée à partir de ce terrible hasard de zéros et j’ai trouvé le portefeuille existant de quelqu’un. S’il n’avait pas déjà été vidé, j’aurais pu voler les fonds.

Ils savaient clairement ce qu’ils faisaient parce que c’était une petite quantité et ils n’y ont pas laissé de pièces pendant longtemps. C’était peut-être une démonstration, qui sait. Mais d’autres personnes ont créé des clés privées non aléatoires qui étaient devinables et ont par conséquent perdu leur bitcoin. Mais ne vous inquiétez pas, si vous créez une clé privée vraiment aléatoire, quelqu’un devrait répéter exactement vos lancers de dés binaires ou vos lancers de pièces et, grâce aux mathématiques exponentielles, cela ne se produira pas pendant la vie de l’univers.

Étape 2 – Calculer la somme de contrôle

Ces huit derniers chiffres manquants doivent être calculés pour former ce qu’on appelle la « somme de contrôle ».

Qu’est-ce qu’une somme de contrôle. Il est utile que l’ordinateur vous avertisse que vous avez fait une faute de frappe dans votre clé privée Bitcoin !

Pour calculer la somme de contrôle, vous aurez besoin d’un ordinateur Linux ou Mac. Si vous avez Windows 10, vous pouvez installer l’application Ubuntu (une version de Linux) à partir du Microsoft Store. Recherchez simplement « Ubuntu » et installez-le. Vous utiliserez le terminal Ubuntu pour exécuter les commandes qui suivent. L’application est une session temporaire ; aucun fichier n’est stocké sur l’application Ubuntu. Cela signifie que vous obtiendrez une session propre à chaque fois que vous l’exécuterez.

Les utilisateurs de Windows doivent faire cette solution de contournement et c’est une nuisance. J’ai essayé d’autres solutions de contournement, mais j’ai rencontré divers problèmes.

Maintenant que vous avez un terminal sur votre machine Mac, Linux ou Windows 10, tapez la commande ci-dessous. Remplacez mes chiffres binaires par vos propres chiffres binaires aléatoires (notez que tout cela devrait être une très longue ligne, même si la façon dont elle est affichée ici peut sembler différente)

shasum -a 256 -0

Cela peut être difficile à interpréter si vous n’êtes pas habitué à la ligne de commande. Je vais l’épeler : tapez « echo » puis un espace, puis votre série de zéros et de uns sans espaces, puis un espace, puis le symbole « pipe » (généralement sous le sur la plupart des claviers), puis un espace, puis la commande « shasum », un espace, un tiret « a », un espace, « 256 », un espace, un autre tiret et enfin le chiffre zéro. Puis frappe.

« ) prend cette sortie et la transmet à la commande à droite du symbole du tuyau (il « transmet » les données du côté gauche vers le côté droit  ! ). Le destinataire de votre flux binaire est la commande de hachage « shasum ». « -a » est une option pour spécifier l’algorithme à utiliser. « 256 » représente SHA-256 – célèbre dans le monde Bitcoin – qui est notre choix pour « -a ». Enfin, « -0 » est une option pour dire que l’entrée doit être interprétée comme des données binaires, et non comme des données de texte normal (alias ASCII).

Lorsque j’exécute cette commande, mon hachage résultant s’affiche sous la commande. C’est la ligne qui commence par « b184 » :

dans ce cas, « b » et « 1 ». Ce sont des nombres hexadécimaux. En hexadécimal, au lieu d’afficher des chiffres de 0 à 9, on compte jusqu’à 15 en utilisant des lettres de l’alphabet pour représenter des nombres supérieurs à neuf :

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f

Semblable à la façon dont les cartes à jouer comptent de 1 à 13 en utilisant leurs propres substitutions  :

As, 2, 3, 4, 5, 6, 7, 8, 9, 10, Valet, Dame, Roi

Vous pouvez le faire en vous référant au tableau ci-dessous :

11 en binaire à quatre chiffres est 1011. 1 en binaire à quatre chiffres est 0001. (circuits Instructables)

à 11 et 1, et enfin à 1011 et 0001.

Ajoutez-les à la 24e ligne pour compléter le dernier ensemble de 11 chiffres binaires. Vous avez maintenant 264 chiffres au total (voir comment la 24ème ligne est complétée dans le diagramme plus bas)

Étape 3 – Conversion binaire en décimal

Chacun des groupes de 11 chiffres binaires doit être converti en un nombre décimal.

Vous pouvez les entrer dans une calculatrice en ligne de binaire à décimal, mais uniquement pour ce portefeuille d’entraînement. Pour votre vrai portefeuille, je vais vous montrer comment le faire manuellement.

zéro »). C’est en fait « 4 » en décimal. Alors 101=5, 110=6, 111=7, 1000=8, 1001=9 et ainsi de suite.

Avec onze chiffres binaires, le plus petit nombre possible est zéro (00000000000) et le plus grand est 2047 (11111111111).

Vous pouvez le faire manuellement ou les convertir à partir de la ligne de commande sous Linux, Mac ou l’application Ubuntu.

Pour le numéro 10101111001, vous devez taper  :

echo « $((2#10101111001)) »

Vous obtiendrez une sortie de « 1401 ». Changez simplement le 10101010101 pour qu’il corresponde à chaque groupe de onze chiffres et calculez son nombre décimal équivalent.

Faire cette conversion uniquement à la main est plus difficile, mais possible.

En haut de la page, écrivez cette séquence exacte de nombres de droite à gauche, verticalement en ligne avec les chiffres binaires ci-dessous  : « 1024 » au-dessus de la première colonne de chiffres binaires. Puis « 512 » sur la colonne suivante. Puis « 256 ». Et ainsi de suite, en réduisant de moitié le nombre à chaque fois jusqu’à ce que vous vous retrouviez avec un « 1 » au-dessus de la dernière (onzième) colonne de vos chiffres binaires.

Maintenant, regardez votre première rangée de chiffres binaires. Partout où il y a un « 1 », vous ajoutez le nombre décimal qui se trouve directement au-dessus et l’enregistrez en dessous du chiffre binaire. Lorsqu’il y a un « 0 », vous ignorez le nombre ci-dessus. Comme ça :

Dans cet exemple, il y a un « 1 » sous la colonne 1024, la colonne 256, le 64, le 32, le 16, le 8 et le 1.

Additionnez les nombres décimaux pour obtenir le total  :

Répétez maintenant ce processus pour les 24 lignes  :

Vous aurez maintenant 24 nombres décimaux compris entre 0 et 2047.

Étape 3 – Recherchez les mots BIP 39

Le protocole BIP 39 (Bitcoin Improvement Proposal Number 39) spécifie 2048 mots différents, classés par ordre alphabétique. Lorsque cette liste est lue par code, chaque mot peut être identifié par sa position ordonnée dans la liste. Les nombres que vous venez de calculer sont utilisés pour rechercher le mot correspondant. Par exemple, la première ligne a donné le numéro 1401 qui correspond au mot « qualité » dans la liste de mots BIP 39 ordonnée.

Zéro est la plus petite valeur possible que vous puissiez calculer pour une ligne (à partir du binaire 00000000000). Dans ce cas, vous sélectionneriez « abandonner », le premier mot de la liste.

Le plus grand nombre possible est 2047 (à partir de 11111111111). Le mot correct pour cela serait « zoo », le dernier mot de la liste. C’est le mot numéro 2047.

Il y a un problème à prendre en compte : les ordinateurs comptent les éléments à partir de 0. Ainsi, le cinquième élément d’une liste est le numéro 4 de l’ordinateur.

Cette confusion supplémentaire est regrettable. La spécification officielle des mots BIP 39 est sur GitHub mais la liste de mots est affichée avec des numéros de ligne commençant par un au lieu de zéro. Ainsi, alors que « résumé » est le huitième mot et est répertorié sur la ligne numéro 8, son équivalent numérique réel BIP 39 est 7.

Ma première ligne de 11 chiffres binaires totalise 1401 en décimal. Donc sur la liste dans Github, je dois trouver le mot à la ligne 1402 (1401 + 1). Ce mot est « qualité ». Continuez à rechercher chaque décimale – en prenant soin d’ajouter un 1 supplémentaire à votre résultat calculé pour correspondre à la numérotation des lignes de Github – et trouvez le mot pour chacune des 24 lignes.

Bravo si vous êtes arrivé jusqu’ici ! Vous avez maintenant une graine mnémonique Bitcoin valide de 24 mots. Vous devriez maintenant le jeter – à moins que vous n’utilisiez l’approche entièrement manuelle, vous ne pouvez pas les utiliser pour votre bitcoin car ils n’ont pas été créés dans un environnement sûr !

En fait, avant de les jeter, vous pouvez entrer les mots dans un portefeuille matériel ou un portefeuille logiciel et voir s’ils sont rejetés. S’il est rejeté, vous avez fait une erreur quelque part, ce qui est très facile à faire avec cette approche manuelle. S’il y a une erreur quelque part, la somme de contrôle ne correspondra pas et tous les portefeuilles signaleront immédiatement une erreur.

Pour vos vraies clés

Vous avez vraiment besoin de générer des clés sur un ordinateur à espace libre.

Vous pouvez apprendre à construire un ordinateur à espace d’air Raspberry Pi Zero bon marché à 10 $ ici, en acheter un prêt à l’emploi ou si vous avez de l’argent supplémentaire, vous pouvez construire un ordinateur de bureau personnalisé sans aucun composant wifi ou Bluetooth. L’option Raspberry Pi est très bon marché mais l’ordinateur est très lent, alors soyez prévenu. C’est excellent si vous voulez avoir de nombreuses clés distribuées dans une configuration multi-signature.

Vous avez entendu parler de FUD sur les ordinateurs à espace d’air ? Voir quelques anti-FUD ici dans le Q&R numéro 23.

En plus de la génération sécurisée des clés, vous devez considérer le stockage et la duplication ou la distribution.

Pour réduire considérablement votre risque d’attaque ou de perte, le niveau supérieur consiste à découvrir les portefeuilles multi-signatures – quelque chose que j’enseigne dans mon programme de mentorat.

Si vous êtes dans la phase de stockage de clé à signature unique (la plupart des gens le sont), vous devriez vraiment conserver votre graine dans un périphérique matériel. La plupart des gens laissent le portefeuille matériel (HWW) créer leur clé et ne vérifient jamais cette clé sur un ordinateur à espace d’air. C’est bien pour la plupart des gens. Mais si vous êtes paranoïaque, vous devez vérifier que la clé produit la clé publique et les adresses que vous attendez.

Et maintenant que vous savez comment créer votre propre clé en toute sécurité (l’approche totalement manuelle et hors ligne décrite ci-dessus), vous n’avez plus besoin de faire confiance au HWW pour générer une bonne clé. Vous créez d’abord une nouvelle clé vous-même, puis au lieu de créer un nouveau portefeuille sur le périphérique matériel, vous « restaurez » un portefeuille à la place et entrez vos mots nouvellement calculés dans l’appareil. Les mots sont alors « verrouillés » dans le HWW et protégés par votre code PIN.

Le périphérique matériel est ainsi un coffre-fort numérique pour votre clé privée.

Le code dans le HWW utilise des fonctions mathématiques pour calculer votre clé publique étendue à partir de la clé privée, puis de nombreuses clés publiques individuelles sont mathématiquement dérivées de la clé publique étendue. Et puis chacun de ceux-ci peut être utilisé pour calculer une collection d’adresses apparemment infinies. Tout est en aval de la clé privée. Vous pouvez entrer votre clé privée dans un autre appareil et produire de manière fiable (mathématiquement) exactement la même collection de clés publiques et d’adresses. Plus de détails à ce sujet ici.

Le but de dire cela est que vous compreniez que c’est comme si le bitcoin était stocké sur les 24 mots que vous avez créés – pas le portefeuille matériel. Et vous devriez très, très soigneusement sauvegarder ces mots et les protéger des voleurs et des catastrophes naturelles. Si vous faites des copies et que vous les stockez à différents endroits, un incendie à un endroit ne vous fera pas perdre tous vos bitcoins, car vous en aurez une copie ailleurs.

Héritage

Une fois que vous avez vos clés que vous avez générées sur un ordinateur à vide et que vous les avez sauvegardées de manière très sécurisée, il est temps de réfléchir à la manière de les transmettre à vos héritiers.

Il existe des tiers de confiance qui peuvent détenir vos clés ou vous pouvez développer un plan d’une manière sans confiance – mon option préférée. Je suis heureux d’aider les personnes qui en ont besoin.

Bon Bitcoining.

Ceci est un article invité par Arman le Parman. Les opinions exprimées sont entièrement les leurs et ne reflètent pas nécessairement celles de BTC Inc ou de Bitcoin Magazine.