Author: Arman the Parman | Übersetzt von: Simon Satoshi | Bitcoin Magazine 26.08.2021 | DIY bitcoin private key project
Dies ist ein spaßiges Projekt, das dir helfen wird, Bitcoin-Schlüssel besser zu verstehen. Du benötigst einen Bleistift, Papier, etwas, um eine zufällige Ausgabe in Binärform (wie z.B. eine Münze oder einen Würfel) zu erzeugen, und einen Computer. Der Zweck hier ist, dich dazu zu bringen, etwas zu tun, das dir hilft, viel zu lernen, anstatt nur reine Theorie zu lesen. Und es wird so einfach sein, dass du einfach eintauchen wirst und mitmachen kannst.
Wichtiges Vorwort
Verwende diesen Schlüssel nicht für deine Bitcoin. Übe zuerst mit dieser Anleitung.
Wenn du deinen echten Schlüssel erstellst – denjenigen, der echte Bitcoins enthält – musst du ihn auf einem Computer ohne jegliche Verbindung nach außen (Airgap) erstellen, wenn Sie diese Methode verwenden. Ein Air-Gap-Computer darf nicht in der Lage sein, sich mit dem Internet zu verbinden. Es reicht nicht aus, die WLAN-Verbindung auf einem normalen Computer vorübergehend auszuschalten, wenn du die Sicherheit ernst nehmen. Es gibt clevere Hacker, die deine privaten Schlüssel extrahieren können, selbst wenn du vorübergehend vom Internet getrennt sind. Am Ende werde ich erklären, was als nächstes zu tun ist, wenn du diese Methode verwenden möchtest, um deine echten geheimen und privaten Schlüssel zu erstellen.
Okay, fangen wir mit dem Projekt an…
Schritt 1 – Erstelle eine lange Binärzahl (0001010100011...)
Du kannst eine Münze 256 Mal werfen, aber es ist besser und schneller, Würfel zu verwenden. Sie können Würfel in Casino-Qualität kaufen, um einwandfrei zufällige Würfe zu gewährleisten. Aber es ist auch in Ordnung, einfach Geld zu sparen und einfach irgendwelche alten Würfel zu verwenden. Selbst wenn deine Würfel nicht perfekt sind und eine gewisse Neigung aufweisen, erreichst du so eine ausreichende Zufälligkeit, solange mehrere gleichzeitig verwenden.
Dies ist das Verfahren (eine von vielen Möglichkeiten) ...
- Nimm etwa vier Würfel (z. B. aus einem herumliegenden alten Brettspiel).
- Betrachte die Zahlen 1, 2 oder 3 als Ausgabe von Null, während 4, 5 oder 6 eine Ausgabe von Eins sind. Auf diese Weise ergibt sich eine binäre Ausgabe (nur Nullen und Einsen im Endergebnis) aus den Würfeln (z. B. eine 3 würfeln, eine Null notieren; eine 6 würfeln, eine Eins notieren).
- Rolle sie und lese von links nach rechts (Konsistenz, vorher festgelegt, ist wichtig, um die Zufälligkeit aufrechtzuerhalten). Wenn es knapp ist, was weiter links oder rechts ist, würfele einfach noch einmal.
- Erstelle 23 Zeilen mit 11 Ziffern. Die 24. Zeile benötigt nur drei Ziffern. Füge für jede Zeile Ziffern in Gruppen von 4-4-3 (siehe Abbildung unten), um das Lesen und Berechnen zu erleichtern. Halte deine vertikalen Spalten so weit wie möglich ordentlich ausgerichtet und lassen Sie zwischen den einzelnen Zeilen Platz für manuelle Berechnungen. Das wird später alles Sinn machen.
Wie dieses Beispiel:
Hier gibt es 256 Binärziffern – 23 vollständige Sätze von 11 Ziffern, wobei die 24. Reihe nur drei Ziffern benötigt.
Du wirst es später erkennen, aber verstehe vorerst, dass alle 11 Ziffern der Binärdatei in ein mnemonisches Seed-Wort übersetzt werden. Die insgesamt 256 zufälligen Binärziffern können wir durch 11 teilen, um die Anzahl der Wörter im Seed zu erhalten. Aber die Antwort auf 256 geteilt durch 11 ist keine ganze Zahl; es ist 23.27. Wir können nicht 23,27 Wörter in unserem Seed haben.
Wir brauchen acht weitere Bits, um genug zu haben, um unser 24. Wort zu bilden. Sobald wir insgesamt 264 Bits haben, lässt sich alles gut in 24 Sätze von 11 aufteilen, was einen mnemonischen Seed mit 24 Wörtern ergibt. Wie Sie später sehen werden, spielen diese letzten acht zusätzlichen Bits ihre eigene wichtige Rolle.
Hinweis zur Zufälligkeit:
Du kannst diese 256 Bits zufälliger Daten beliebig gestalten, solange sie tatsächlich zufällig sind. Wenn es nicht zufällig ist, kann jemand die Daten möglicherweise reproduzieren. Jemand wäre dann in der Lage, diesen privaten Schlüssel neu zu erstellen und derjenige könnte alle Bitcoin verschieben. Wenn Sie zum Beispiel 256 Bits aus Nullen machen (eindeutig nicht zufällig), dann kann jemand deinen privaten Schlüssel erraten. Hier ist der Beweis: Ich habe einen privaten Schlüssel aus dieser schrecklichen Zufälligkeit generiert und die vorhandene Brieftasche von jemandem gefunden. Wenn es nicht bereits geleert worden wäre, hätte ich das Geld stehlen können.
Sie wussten genau, was sie taten, denn es war ein kleiner Betrag und sie ließen keine Münzen lange dort. Vielleicht war es eine Demonstration, wer weiß. Aber andere Leute haben nicht zufällige private Schlüssel erstellt, die erraten werden konnten und infolgedessen ihre Bitcoin verloren haben. Aber keine Sorge, wenn du einen wirklich zufälligen privaten Schlüssel erstellst, müsste jemand deine binären Würfelwürfe oder Münzwürfe genau wiederholen, und dank der exponentiellen Mathematik wird das während der Existenz des Universums nicht passieren.
Schritt 2 - Berechne die Prüfsumme
Diese letzten fehlenden acht Ziffern müssen berechnet werden, um die sogenannte „Prüfsumme“ zu bilden.
Was ist eine Prüfsumme? Anhand einer Prüfsumme erkennen Computer, dass du einen Tippfehler gemacht haben, wenn du Dinge wie die Kreditkartennummer oder Bankkontonummer eingibst. Es ist eine nützliche Sache, wenn der Computer dich warnt, dass du einen Tippfehler in deinem privaten Bitcoin-Schlüssel gemacht hast!
Um die Prüfsumme zu berechnen, benötigst du einen Linux- oder Mac-Computer. Wenn Sie Windows 10 haben, können Sie die Ubuntu-App (eine Version von Linux) aus dem Microsoft Store installieren. Suche einfach nach "Ubuntu" und installiere es. Du verwendest das Ubuntu-Terminal, um die folgenden Befehle auszuführen. Die App ist eine temporäre Sitzung; In der Ubuntu-App werden keine Dateien gespeichert. Dies bedeutet, dass du bei jeder Ausführung eine saubere Sitzung erhalten.
Windows-Benutzer müssen diese Problemumgehung durchführen und es ist lästig. Ich habe andere Problemumgehungen ausprobiert, bin aber auf verschiedene Probleme gestoßen.
Nachdem du nun ein Terminal auf deinem Mac-, Linux- oder Windows 10-Computer gestartet hast, gebe den folgenden Befehl ein. Ersetze meine Binärziffern durch deine eigenen zufälligen Binärziffern (beachten Sie, dass dies alles eine sehr lange Zeile sein sollte, auch wenn die Art und Weise, wie sie hier angezeigt wird, anders aussehen kann)
echo
1010111100111000000011110110001111010111101001010010001011001111011110100011000010
100011111100100010100011110001110101000110011111110000101000110001010111010001010
011111110101001010011110110110110000001101111010011000001110101101001000010001000
010000100111 | shasum -a 256 -0
Es kann schwierig sein, das zu interpretieren, wenn du nicht an die Befehlszeile gewöhnt sind. Ich werde es buchstabieren: Gebe „echo“ ein, dann ein Leerzeichen, dann deine Reihe von Nullen und Einsen ohne Leerzeichen, dann ein Leerzeichen, dann das „Pipe“-Symbol (normalerweise unter der <Entf>-Taste auf den meisten Tastaturen, im deutschen Layout neben der Shift-Taste bei </>/ |), dann ein Leerzeichen, dann der Befehl "shasum", ein Leerzeichen, Bindestrich "a", ein Leerzeichen, "256", ein Leerzeichen, ein weiterer Bindestrich und dann die Ziffer Null. Drücken Sie dann <Eingabe>.
Erläuterung des Codes: Der "echo"-Befehl wiederholt einfach alles, was du als nächstes eingibst. Das Pipe-Symbol („|“) nimmt diese Ausgabe und übergibt sie an den Befehl rechts vom Pipe-Symbol (es „leitet“ die Daten von links nach rechts!). Der Empfänger deines Bitstroms ist der Hash-Befehl „shasum“. "-a" ist eine Option, um anzugeben, welcher Algorithmus verwendet werden soll. „256“ steht für SHA-256 – berühmt in der Bitcoin-Welt – was unsere Wahl für „-a“ ist. Schließlich ist "-0" eine Option, um anzugeben, dass die Eingabe als Binärdaten und nicht als reguläre Textdaten (auch als ASCII-Daten bezeichnet) interpretiert werden soll.
Wenn ich diesen Befehl ausführe, wird mein resultierender Hash unter dem Befehl angezeigt. Es ist die Zeile, die mit „b184“ beginnt:
Jetzt können wir mit der Berechnung der Prüfsumme beginnen. Wir nehmen die ersten beiden Ziffern der Hash-Ausgabe, in diesem Fall „b“ und „1“. Dies sind Hexadezimalzahlen. Im Hexadezimalsystem zählen wir, anstatt Ziffern von 0 bis 9 anzuzeigen, bis 15, indem wir Buchstaben des Alphabets verwenden, um Zahlen größer als neun darzustellen:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f
Ähnlich wie Spielkarten mit ihren eigenen Substitutionen von 1 bis 13 zählen:
Ass, 2, 3, 4, 5, 6, 7, 8, 9, 10, Bube, Dame, König
In meinem Hash steht also meine erste Ziffer „b“ für 11. Und „1“ im Hexadezimalformat ist dasselbe wie eine „1“, mit der wir es gewohnt sind zu arbeiten.
Jetzt wandeln wir diese ersten beiden Zahlen in ihre vierstellige binäre Darstellung um. Du kannst dies tun, indem Sie sich auf die folgende Tabelle beziehen:
Also gingen wir von b und 1 zu 11 und 1 und schließlich zu 1011 und 0001.
Diese vierstelligen Zahlen sind die Prüfsumme, die wir unseren Bits hinzufügen, um unser 24. Wort zu vervollständigen!
Füge dies zur 24. Zeile hinzu, um den letzten Satz von 11 Binärziffern zu vervollständigen. Du hast jetzt insgesamt 264 Ziffern (schau wie die 24. Zeile im Diagramm weiter unten vervollständigt wird)
Schritt 3 - Konvertieren von Binär in Dezimal
Jede der Gruppen von 11 Binärziffern muss in eine Dezimalzahl umgewandelt werden.
Du kannst sie in einen Online-Binär-zu-Dezimal-Rechner eingeben, aber nur für dieses Übungs-Wallet. Für deine echte Brieftasche/Wallet zeige ich dir, wie du es manuell schaffst.
Ein bisschen über das Binärsystem. In einem binären Zahlensystem gibt es nur 0 und 1. Die anderen bekannten Ziffern (2,3,4,5,6,7,8,9) existieren nicht. Wenn wir also aufwärts zählen, beginnen wir mit 0, dann 1, aber die nächste Zahl ist ungewöhnlich. Es ist keine „2“ vorhanden. Die nächstgrößere Zahl nach 1 ist also „10“. Lesen Sie es nicht als „zehn“, sondern als „eins, null“. Im Binärformat steht "10" für die "2", an die Sie gewöhnt sind. Die nächste Zahl nach 10 (binär) ist „11“ („eins, eins“, nicht „elf“!). Das entspricht dezimal „3“. Für die nächste Zahl ist „12“ nicht möglich, weil es keine „2“-Ziffer in Binär gibt; Die nächstgrößte Zahl, die wir nur mit Nullen und Einsen darstellen können, ist „100“ („eins, null, null“). Das ist eigentlich „4“ in Dezimalschreibweise. Dann 101=5, 110=6, 111=7, 1000=8, 1001=9 und so weiter.
Bei elf Binärziffern ist die kleinste mögliche Zahl Null (00000000000) und die größte 2047 (11111111111).
Wir nehmen jede dieser elf Binärziffern auf unserer Seite (jede Zeile) und wandeln sie in Dezimalzahlen um. Sie können dies manuell tun oder sie über die Befehlszeile in Linux, Mac oder der Ubuntu-App konvertieren.
Für die Nummer 10101111001 würden Sie Folgendes eingeben:
echo "$((2#10101111001))"
Du erhältst eine Ausgabe von „1401“. Ändern Sie einfach 10101010101 so, dass es mit jeder Gruppe von elf Ziffern übereinstimmt, und berechnen Sie die entsprechende Dezimalzahl.
Diese Konvertierung nur von Hand durchzuführen ist schwieriger, aber möglich.
Schreiben Sie oben auf der Seite genau diese Zahlenfolge von rechts nach links, vertikal in einer Linie mit den Binärziffern unten: „1024“ über der ersten Spalte mit Binärziffern. Dann „512“ über der nächsten Spalte. Dann „256“. Und so weiter und weiter, halbiere die Zahl jedes Mal, bis du am Ende eine „1“ über der letzten (elften) Spalte deiner Binärziffern hast.
Betrachte nun die erste Reihe von Binärziffern. Überall dort, wo eine „1“ steht, addierst du die Dezimalzahl, die direkt darüber steht, und notierst sie unter der Binärziffer. Wo eine „0“ steht, ignorieren Sie die obige Zahl. So was:
In diesem Beispiel gibt es eine „1“ unter der Spalte 1024, der Spalte 256, der 64, der 32, der 16, der 8 und der 1.
Addieren Sie die Dezimalzahlen, um die Summe zu erhalten:
Wiederholen Sie diesen Vorgang nun für alle 24 Zeilen:
Du hast jetzt 24 Dezimalzahlen, die zwischen 0 und 2047 liegen.
Schritt 4 - Schlage die BIP-39 Wörter nach
Das BIP 39-Protokoll (Bitcoin Improvement Proposal number 39) spezifiziert 2048 verschiedene Wörter, aufgelistet in alphabetischer Reihenfolge. Wenn diese Liste per Code eingelesen wird, kann jedes Wort durch seine geordnete Position in der Liste identifiziert werden. Die Zahlen, die du gerade berechnet hast, werden verwendet, um das entsprechende Wort nachzuschlagen. Beispielsweise ergab die erste Zeile die Zahl 1401, was dem Wort „Quality“ in der geordneten BIP 39-Wortliste entspricht.
Null ist der kleinstmögliche Wert, den Sie für eine Zeile berechnen könnten (von binär 00000000000). In diesem Fall würden Sie „abandon“ auswählen, das erste Wort in der Liste.
Die größtmögliche Zahl ist 2047 (von 11111111111). Das richtige Wort dafür wäre „zoo“, das letzte Wort auf der Liste. Das ist Wort Nummer 2047.
Es gibt einen verwirrenden Kniff, auf den du achten musst: Computer zählen Elemente beginnend bei 0. Das fünfte Element in einer Liste ist also die Nummer 4 des Computers.
Diese zusätzliche Verwirrung ist bedauerlich. Die offizielle Spezifikation der BIP 39-Wörter befindet sich auf GitHub, aber die Wortliste wird mit Zeilennummern angezeigt, die mit eins statt mit null beginnen. Während also „abstrakt“ das achte Wort ist und in Zeile 8 aufgeführt ist, ist das tatsächliche numerische Äquivalent von BIP-39 eine 7.
Meine erste Zeile mit 11 Binärziffern ergibt dezimal 1401. Auf der Liste in Github muss ich also das Wort in Zeile 1402 (1401 + 1) finden. Dieses Wort ist „quality“. Fahren Sie fort, jede Dezimalstelle nachzuschlagen – achte darauf, deinem berechneten Ergebnis eine zusätzliche 1 hinzuzufügen, um mit der Zeilennummerierung von Github übereinzustimmen – und finden Sie das Wort für jede der 24 Zeilen.
Gut gemacht, wenn du es so weit geschafft haben! Du hast jetzt einen gültigen 24-Wörter-Bitcoin-Mnemonik-Seed. Du solltest ihn jetzt auf direkte löschen – es sei denn, du hast den vollständig manuellen Ansatz verwendet, du kannst ansonsten diesen privaten Schlüssel nicht für deine Bitcoin verwenden, da sie nicht in einer sicheren Umgebung erstellt wurden!
Bevor du den Seed wegwirfst, könntest du die Wörter tatsächlich in eine Hardware- oder Software-Wallet eingeben und sehen, ob sie akzeptiert werden. Wenn der Seed abgelehnt wird, hast du irgendwo einen Fehler gemacht, was mit diesem manuellen Ansatz sehr einfach passieren kann. Wenn irgendwo ein Fehler auftritt, stimmt die Prüfsumme nicht überein und alle Wallets signalisieren sofort einen Fehler.
Für deine echten privaten Schlüssel
Du musst die Schlüsselgenerierung wirklich auf einem Air-Gap-Computer durchführen.
Sie können hier lernen, wie man einen billigen Raspberry Pi Zero Air-Gap-Computer für 10 US-Dollar baut , einen fertigen kaufen oder, wenn Sie zusätzliches Geld haben, einen benutzerdefinierten Desktop-Computer ohne WLAN- oder Bluetooth-Komponenten bauen kann. Die Raspberry Pi-Option ist sehr billig, aber der Computer ist sehr langsam, seien Sie also gewarnt. Es ist hervorragend, wenn Sie viele verteilte Schlüssel in einem Multisignatur-Setup haben möchten.
Haben Sie etwas FUD über Air-Gap-Computer gehört? Siehe etwas Anti-FUD hier in Q&A Nummer 23.
Neben der sicheren Generierung von Schlüsseln müssen Sie an die Speicherung und Vervielfältigung bzw. Weitergabe denken.
Um Ihr Risiko eines Angriffs oder Verlusts drastisch zu reduzieren, lernen Sie als nächstes mehr über Multisignatur-Wallets – etwas, das ich in meinem Mentorenprogramm lehre.
Wenn Sie sich in der Single-Signature-Key-Phase der Speicherung befinden (die meisten Leute sind es), dann solltest du deinen Seed wirklich in einem Hardwaregerät aufbewahren. Die meisten Leute lassen die Hardware Wallet (HWW) ihren Schlüssel erstellen und verifizieren diesen Schlüssel nie auf einem Air-Gap-Computer. Das ist für die meisten Menschen in Ordnung. Aber wenn Sie paranoid sind, sollten Sie überprüfen, ob der Schlüssel den erwarteten öffentlichen Schlüssel und die erwarteten Adressen erzeugt.
Und jetzt, da Sie wissen, wie du deinen eigenen Schlüssel sicher erstellen (der oben beschriebene vollständig manuelle Offline-Ansatz), müssen Sie nicht darauf vertrauen, dass HWW einen guten Schlüssel generiert. Sie erstellen zunächst selbst einen neuen Schlüssel und erstellen dann anstelle einer neuen Brieftasche auf dem Hardwaregerät eine Brieftasche "wiederherstellen" und gebe deine neu berechneten Wörter in das Gerät ein. Die Wörter sind dann im HWW „gesperrt“ und durch deine PIN geschützt.
Das Hardwaregerät ist somit ein digitaler Tresor für deine privaten Schlüssel.
Du solltest niemals nur eine Kopie deines privaten Schlüssels haben. Wenn du ihn verlierst, verlierst du alle Bitcoin, die durch den darin enthaltenen Schlüssel gespeichert sind. Technisch gesehen befinden sich keine Bitcoins im Gerät; Sie sind auf der Blockchain. Die Hardware-Wallet ist, wie gesagt, ein digitaler Safe für deine privaten Schlüssel, der durch die gerade erstellten Wörter repräsentiert wird. Um dies ein wenig besser zu verstehen, lesen Sie diesen Artikel.
Der Code innerhalb des HWW verwendet mathematische Funktionen, um deine erweiterten öffentlichen Schlüssel aus dem privaten Schlüssel zu berechnen, und dann werden viele einzelne öffentliche Schlüssel mathematisch aus dem erweiterten öffentlichen Schlüssel abgeleitet. Und dann kann jede davon verwendet werden, um eine Sammlung von scheinbar unendlichen Adressen zu berechnen. Alles ist dem privaten Schlüssel nachgelagert. Du kannst deinen privaten Schlüssel in ein anderes Gerät eingeben und zuverlässig (mathematisch) genau dieselbe Sammlung öffentlicher Schlüssel und Adressen erzeugen. Mehr Details dazu hier.
Der Punkt, um dies zu sagen, ist, dass du zu schätzen weißt, dass es so ist, als ob die Bitcoins in den 24 Wörtern gespeichert sind, die du erstellt hast – nicht in der Hardware-Wallet. Und du solltest diese Worte sehr, sehr sorgfältig sichern und sie vor Dieben und Naturkatastrophen schützen. Wenn du Kopien erstellst und an verschiedenen Orten aufbewahrst, führt ein Feuer an einem Ort nicht dazu, dass du alle deine Bitcoin verlierst, da du an einem anderen Ort eine Kopie hast.
Vererben
Sobald du deine Schlüssel hast, die du auf einem Air-Gap-Computer generiert hast, und du sie sehr umsichtig gesichert hast, ist es an der Zeit, darüber nachzudenken, wie du sie an deine möglichen Erben weitergeben könntest.
Es gibt vertrauenswürdige Dritte, die deine Schlüssel halten können, oder du könntest auf vertrauenswürdige Weise einen Plan entwickeln – meine bevorzugte Option. Menschen, die dies benötigen, stehe ich gerne zur Seite.
Viel Spaß beim Bitcoinen.
Sinautoshi
#Bitcoin only - #GetOnZero - united we fix the money (supply to 21M BTC)
Related Posts
Rabbit fragt #17
Aug 28, 2024
Der Bitcoiner in der Midlife-Crisis
Jun 14, 2024
Rabbit fragt...#16...Was ist eine Hardware Wallet?
May 26, 2024