BIP38 - Unterschätzter Verschlüsselungsstandard?

Hi Leute,

Ich beschäftige mich jetzt schon seit einigen Tagen damit, welche Möglichkeiten zum Verschlüsseln der Private Keys durch BIP38 entstehen.

Kurze Erklärung von BIP38:
Es definiert einen Standard zum Verschlüsseln der Private Keys, mithilfe einer frei wählbaren Passphrase. Zudem soll das verwendete Verschlüsselungsverfahren (Scrypt) einen Brute-Force-Angriff erschweren, indem die Verschlüsselung möglichst aufwendig ist (lange dauert). bips/bip-0038.mediawiki at master · bitcoin/bips · GitHub

Die Verbreitung scheint nicht sehr weit fortgeschritten zu sein, obwohl das BIP bereits seit 2012 existiert. Dennoch unterstützen einige der bekannten Plattformen, zum Erstellen von Bitcoin-Adressen, diesen Standard. Zum Beispiel bitaddress.org

Meiner Meinung nach vereinfacht dieser Standard das sichere Aufbewahren der sensiblen Private Keys enorm. Eventuell könnte dadurch das Verwahren der Keys sogar Mainstream-fähig werden. Die Herausforderung besteht lediglich darin, den (durch den Standard) verschlüsselten Private Key und die verwendete Passphrase voneinander getrennt aufzubewahren. Gerät eines von beiden in die falschen Finger, kann damit trotzdem nichts angefangen werden, solange die Person nicht beides besitzt.

Was haltet ihr davon, meint ihr das ist ein unterschätztes BIP oder bewege ich mich eurer Meinung nach in die falsche Richtung, wenn es um die sichere Verwahrung der Schlüssel geht?

Ist das nicht ein Widerspruch? Das Aufbewahren wird doch erschwert, weil jetzt zwei Dinge aufzubewahren sind.

Nicht unbedingt. Es geht ja um das sichere Aufbewahren der Schlüssel. Dies verlangt immer eine besonders gut durchdachte und dadurch auch weniger komfortable Herangehensweise. Man muss also einen Trade Off zwischen Sicherheit und Komfort eingehen.

Will man die Schlüssel unverschlüsselt aufbewahren, könnte man sich zum Beispiel einen brandfesten und diebstahlsicheren Safe anschaffen. Aber so etwas stellt nicht für jeden eine attraktive Lösung dar.

Mithilfe von BIP38 ergeben sich weitere - vielleicht sogar komfortablere - Lösungen für die Aufbewahrungsproblematik.

So wie ich das sehe, könnte man die verwendete Passphrase in einem sicheren Passwort Manager abspeichern. Damit müsste man sich dann auch wieder nur noch um das Aufbewahren einer Sache (Private Key) kümmern.

So könnte man theoretisch beliebigen (sogar fremden) Leuten den Schlüssel ohne bedenken geben. Was zur Absicherung (Backup) ein üblicher Gedanke ist. Auch das (unterwegs) Verlieren von Kopien ist weniger kritisch.

Das ist nur möglich, weil man mit der verschlüsselten Version des Private Keys (ohne Passphrase) nichts anfangen kann.

Wenn man tatsächlich ganze Private Keys oder den Seed für HD Wallets sichern wollte, könnte man diese natürlich verschlüsselt speichern, müsste dafür aber dann das Passwort irgendwo offline sichern (z.B. Papier).

  1. Dadurch wird aber sehr wahrscheinlich die Sicherheit verringert, außer du verwendest ein langes Passwort mit Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen. Dann hättest du aber auch gleich den Private Key sicher können.

  2. Bei einer verschlüsselten Speicherung biete sich eher ein Passwortmanager oder eine Software Wallet an. Dort brauchst du für alle möglichen Keys nur ein sicheres Master Passwort. Die Verschlüsselung dort ist dann z.B. AES-256.
    Zur Härtung ggü. Brute Force verwenden die meisten Passwortmanager heutzutage, vielleicht auch die SW Wallets, schon Key Derivation Functions. Nur nicht Scrypt, sondern PBKDF2.

  3. Bei dieser Lösung fällt die einfache Möglichkeit zur Verwendung einer Hardware Wallet weg, da keine dieser Wallets eine Scrypt Verschlüsselung einzelner Keys anbietet.

Stattdessen haben sich mit BIP32 und BIP39 HD Wallets durchgesetzt, wo ausgehend von 24 Wörtern alle Keys für alle Accounts und Coins abgeleitet werden können. Die 24 Wörter sind also eine Art standardisiertes Master Passwort für alle Kryptowährungen, was du auf einer HW Wallet sichern und verwenden kannst. Diese Wallets verwenden wiederum PBKDF2 statt Scrypt um von diesem „Master Passwort“ die Keys abzuleiten.

Die 24 Wörter wiederum sind offline einfacher zu sichern, da sie eine gewisse Fehlertoleranz mitbringen.

Ich weiß nicht ob das BIP38 zeitlich gesehen abgeschlossen wurde, bevor die BIP39 Idee verfolgt wurde. Vor dem BIP39 musste man noch den komplexen Seed sichern, von dem ausgehend alle Keys abgeleitet wurden. Meiner Meinung nach hat sich das BIP38 dann mit dem BIP39 erledigt.

Edit: Sorry für die vielen Edits!

3 „Gefällt mir“

Das verwirrt mich etwas. Eine starke Passphrase sollte selbstverständlich sein. Und wenn man nur den Private Key unverschlüsselt aufbewahrt, ist dieser durch Diebstahl gefährdet.

Sofern man dies möglichst gut vom Internet trennt, wären diese Lösungen tatsächlich sinnvolle Alternativen. Jedoch fehlen hier die Standards im Bitcoin Universum. Standards sind sinnvoll, um miteinander kompatible Drittanbieterlösungen entwickeln zu können.

Die nicht sehr weit verbreitete Unterstützung von BIP38 habe ich ja bereits erwähnt. Würde diese weiter voranschreiten, würden HW wahrscheinlich auch BIP38 implementieren.

Wenn ich das richtig verstehe, befassen sich BIP32 und 39 lediglich mit der (möglichst komfortablen) Verwaltung von mehreren Private Keys. Das Thema der Sicherheit (zum Beispiel vor Diebstahl) wird nicht behandelt.

Die 24 Wörter als Master Passwort zu betrachten halte ich für unpassend. Wer Zugang zu den 24 Wörtern hat, hat Zugriff auf die Bitcoins.

Hardware Wallets als alternative Aufbewahrung zu nennen, ist natürlich naheliegend. Vermutlich stellen diese auch das heutige Maß der Sicherheit und Komfort dar. Jedoch ist doch das geniale an Bitcoin dass der Zutritt in das Bitcoin Ökosystem mit rudimentärsten Mitteln möglich ist. Das beste Beispiel dafür sind Paper Wallets. Einen einfacheren Weg, in das Bitcoin System, gibt es nicht. Meiner Meinung nach bilden HW eine weitere Ebene - man könnte fast sagen Second Layer - solcher rudimentären Techniken. Deswegen finde ich einen Ansatz wie BIP38 sinnvoll. Dies ermöglicht Sicherheit auf niedrigster Ebene.

Man sollte auch berücksichtigen, dass Bitcoin unterschiedlich verwendet wird. Wenn man eine Bitcoin Adresse aktiv für Transaktionen verwendet, ist der Komfort sehr wichtig. Verwendet man eine Adresse zum Hodln, ist die Sicherheit wichtiger als der Komfort. Für Ersteres würde ich ganz klar eine HW empfehlen. Für Zweiteres kann man auf den Komfort einer HW verzichten, sofern das Vorteile in der Sicherheit mit sich bringt. Zudem muss auch der Inhalt einer HW vor Schaden abgesichert werden. Diese Backups sollten wiederum auch möglichst sicher sein.

Ich habe jetzt schon mehrere Diskussionen über den sicheren Umgang mit den Private Keys verfolgt. Zum Beispiel wird hier im Forum gerade darüber diskutiert wie man die Schlüssel sicher in ein anderes Land trägt oder ob es sinnvoll ist die eigentlichen 24 Wörter unter mehreren willkürlichen Wörtern zu verschleiern. Diese Themen sind sehr interessant und zeigen wie wertvoll solche Standards wie BIP38 sind.

2 „Gefällt mir“

Eine Passphrase hat in Regel eine geringere Entropie. Bei den 24 Wörtern haben wir 256 Bit. Eine sichere Passphrase sollte mindestens 65 Bit Entropie aufweisen. In jedem Fall wirst Du wahrscheinlich Sicherheit einbüßen. Deshalb wendet @skyrmion ein, dass man dann auch gleich den Private Key sichern könnte.

Wer Zugang zum Masterpasswort hat, hat Zugang zu all Deinen Accounts. Finde die Analogie ehrlich gesagt passend.

Eine Paper Wallet sicher aufzusetzen (offline), setzt Wissen - über Rudimentäres hinaus - voraus.

2 „Gefällt mir“

Du kannst entweder den Private Key auf Papier sichern („Paper Wallet“), oder den Private Key verschlüsseln und die Passphrase auf Papier sichern.

Beide wären gleichermaßen durch Diebstahl gefährdet.

Zum Verschlüsseln des Private Keys kannst du natürlich genauso einen Offline PC verwenden, wie zur Erzeugung der Paper Wallet, also auch kein Unterschied.

Einen vermeintlichen Unterschied gäbe es in der kryptographischen Sicherheit. Aber das direkte Bruteforcen eines komplexen Private Keys ist am Ende wahrscheinlich auch nicht schwieriger, als das Bruteforcen einer weniger komplexen Passphrase plus Key Derivation Function.

Also hast du wahrscheinlich recht. Kein großer Unterschied, außer die verschlüsselte Datei in einem Fall (siehe Absatz unten). Wäre irgendwie auch sehr seltsam, wenn die BIP Ersteller und Reviewer nicht mehr auf dem Kasten hätten als Laien wie ich.

Eine Software Wallet macht im Endeffekt nichts anderes. Passphrase plus PBKDF2 schützen den verschlüsselten Seed.

Aber du hast recht, das ist zwischen den Wallets nicht standardisiert. Ansonsten könnte man eine Passphrase für alle SW Wallets verwenden.

Ok.

Du hast teilweise recht. Der Vergleich hinkt, ist aber teilweise schon gerechtfertigt.

Einmal hast du 24 Wörter, die du offline sicherst (Papier, HW Wallet), und von denen ausgehend du alle Keys erhältst.

Das andere Mal hast du eine Passphrase, die du offline sichern musst, und von der ausgehend du alle Keys erhältst. Einziger, aber natürlich relevanter Unterschied ist, dass du hier noch die verschlüsselte Datei benötigst.

PBKDF2 und Scrypt bieten in beiden Fällen Brute Force Schutz.

Selbst wenn man die optionale BIP39 Passphrase mitverwendet, gibt es den Unterschied, dass du in einem Fall noch die Datei benötigst.

Diesen Komfort hast du mit jeder SW Wallet, aber nicht standardisiert, das stimmt.

Alles in allem ein interessantes Thema, was sich in meinen Augen durch das heutige System von HW Wallets plus BIP32/BIP39 erledigt hat.
Durch die komfortablen HW Wallets schenkt man sich im Endeffekt die komplexe Verschlüsselung; eine einfache gibt es noch durch die PIN.
Paper Wallets bieten eine ähnlichen Ansatz, sind aber kompliziert und unkomfortabel.

EDIT (Sorry, ja schon wieder…):

Ich bin mir nicht sicher ob es ein Vorteil oder Nachteil ist, dass du beim BIP38 noch die verschlüsselte Datei mit dem Key benötigst. (falls ich das überhaupt richtig verstanden habe)

Mit deinen 24 Wörtern kommst du, egal unter welchen Umständen, egal wo auf der Welt, an deine Coins. Wenn ich immer noch die BIP38 Datei benötigen würde, wäre das unter diesem Aspekt ein Nachteil.

Und wenn die 24 Wörter alleine schon sicher genug gegen Brute Force sind, brauche ich keinen zweiten Sicherheitsfaktor wie eine verschlüsselte Datei.

Die offline Sicherung sollte man auch bei 24 Wörtern so gestalten, dass der Diebstahl eines einzelnen Papiers nicht zum Verlust der Coins führt.

2 „Gefällt mir“

Ich wollte auf folgendes hinaus, was gerne übersehen wird: Mit dem Passwort erhöht sich die Anzahl der aufzubewahrenden Geheimnisse auf zwei. Es gibt zahlreiche Verfahren, bei denen das der Fall ist:

  • 2 of 2 multisig
  • Shamir Secrets
  • poor man’s Shamir
  • seed XOR
  • 25th word
  • oder eben ein BIP38 Passwort

Diesen Verfahren ist gemein, dass sie aus (mindestens) zwei Geheimnissen bestehen. Sie haben unterschiedliche Eigenschaften bzgl. ihrer Aufbewahrungsmöglichkeiten, Abstreitbarkeit, Angriffsvektoren, Verlustrisiken, etc.

Mein Punkt ist: Die Anzahl der notwendigen Geheimnisse um die Coins auszugeben hat sich erhöht. Dessen muss man sich bewusst sein. Meiner Meinung nach sollte die Auswahl der Verfahren von den Eigenschaften der Faktoren geleitet sein.

Du hast dir offensichtlich viele Gedanken zu BIP38 und der Aufbewahrung des Passworts gemacht. Ich schreibe das deshalb vor allem für andere Mitleser. Ich persönlich würde mich nicht auf einen Passwortmanager verlassen wollen. Meine Geheimnisse dürfen nicht digital sein, sie müssen menschenlesbar sein, das Verfahren muss standardisiert sein, usw.

Das muss jeder für sich entscheiden. Ich will hier nur die bewusste Entscheidung dringend empfehlen.