Newsticker

Bitcoin.org fürchtet Angriff – so prüfen Sie die Installationsdateien des Clients

Binary Business, Foto von Michael Coghlan via flickr.com. Lizenz: Creative Commons

Bitcoin.org hat vergangene Woche eine Warnung veröffentlicht, dass anlässlich des Releases von Bitcoin Core 0.13 ein Angriff zu befürchten ist. Usern wird empfohlen, die Hashes der Dateien zu prüfen, bevor man sie installiert. Wir erklären, wie man das macht. Es ist gar nicht so kompliziert, wie es sich anhört.

Man kann den Autoren von Bitcoin.org nicht vorwerfen, dass es ihnen am Sinn fürs Dramatische mangelt. In der jüngst erschienenen Warnung schreiben sie:

Bitcoin.org hat Gründe, anzunehmen, dass die Binaries des kommenden Bitcoin Core releases möglicherweise Ziel eines von einem Staat finanzierten Angriffs sein werden. Als Webseite hat Bitcoin.org nicht die technischen Ressourcen, um zu garantieren, dass wir uns gegen einen Angriff dieses Kalibers verteidigen können. Wir bitten daher die Bitcoin Community, besonders die chinesische Community, äußerst vorsichtig zu sein beim Download von Binaries von unserer Webseite.

Ist der chinesische Staat drauf und dran, bitcoin.org anzugreifen? Oder die NSA? Bevor man nun in Alarmismus verfällt, sollte man sich klar machen, dass es lediglich eine einzige Person ist – ein Admin der Seite namens ‘Cobra’ – die diese Warnung herausgegeben hat. Es gibt von anderer Seite keinerlei Bestätigung oder Hinweis, dass ein Angriff dieser Größenordnung bevorsteht.

Allerdings ist der Rat, den Cobra gibt, durchaus wichtig und sollte auch dann beherzigt werden, wenn kein Angriff eines Staates zu befürchten ist: Man soll die Hashes der Dateien prüfen, und auch die Signaturen, die beweisen sollen, dass die Hashes authentisch sind. Wenn Sie jetzt nur Kauderwelsch verstehen, macht das nichts. Dazu schreibe ich ja diesen Artikel.

Kurz gesagt: Sie sollen sich kryptographisch vergewissern, dass sie die richtigen Dateien und keine Malware heruntergeladen habe. Wie das nun funktioniert, erkäre ich im folgenden. Es ist verblüffend einfach.

Wie man die Hashes von Dateien verifiziert

Zunächst ist der Vorgang relativ simpel: Diejenigen, die eine Software schreiben und Dateien bilden, ermitteln ein kryptographisches Extrakt der Datei. Dazu drehen sie die Datei quasi durch einen kryptographischen Fleischwolf, etwa SHA 256, der am Ende einen zufällig erscheinenden Zeichenkettensalat produziert. Das ist so ähnlich, als würde ich jeden Buchstaben mit seinem Nachfolger im Alphabet vertauschen, nur komplexer. Für die Bitcoin-Versionen hat Maintainer Wladimir van der Laan die Hashes der Installationsdateien dokumentiert:

abf0e7336621250702d7a55487c85b8de33c07a30fbc3ecf7f56c97007fcb4ce  bitcoin-0.12.1-linux32.tar.gz
54aca14b7512801ab78cc93f8576e1b66364a890e8017e8a187e4bf0209fd28c  bitcoin-0.12.1-linux64.tar.gz
91d14dcb9b88ca845df450ceb94250bb5c9a0d514d8ca0c55eb480d0ac77ef32  bitcoin-0.12.1-osx64.tar.gz
e1bc86d24dd978d64b511ada68be31057c20789fb9a6a86c40043a32bf77cb05  bitcoin-0.12.1-osx.dmg
08fc3b6c05c39fb975bba1f6dd49992df46511790ce8dc67398208af9565e199  bitcoin-0.12.1.tar.gz
fba73e4825a6421ce6cc1e48b67ff5f2847ae1b520d26272e69f7f25de4f36d1  bitcoin-0.12.1-win32-setup.exe
148fb438a32f1706a366a7825bbc5e770e5f9a20e5694f724a443275976a0791  bitcoin-0.12.1-win32.zip
c6e06f90e41c36c9a447f065952869e2d7d571ab34b86d061ae19ec25b2799d4  bitcoin-0.12.1-win64-setup.exe
d8e1ab9ff65b79c130ec6af8e36626310ffdaf6aacb7a40cfb76e7a63bdfcfd5  bitcoin-0.12.1-win64.zip

Sobald man nun irgendein Detail an der Datei ändert, wird sich auch der SHA-256-Extrakt ändern. Indem man also selbst die Datei durch einen SHA 256 Fleischwolf dreht, das Extrakt ermittelt und dieses dann mit dem von den Entwicklern bekanntgegebenen Extrakt vergleicht, kann man prüfen, ob die Software unverändert geblieben ist.

Dies ist beispielsweise wichtig, wenn ein Man-in-the-middle-Angriff droht. Dies bedeutet, dass sich jemand zwischen euch und die Internetseite stellt und die Daten manipuliert. Beispielsweise könnte ein Angreifer die Bitcoin-Dateien so manipulieren, dass sie euch Bitcoins stehlen. Daher empfiehlt es sich bei allen sicherheitsrelevanten Anwendungen, das Extrakt der Entwickler mit dem zu vergleichen, das ihr selbst ermittelt.

Es ist nicht wirklich schwierig. Man braucht dazu eine Software wie GnuPG, GPG oder PGP. Für Windows könnt ihr sie etwa auf gpg4win.de herunterladen, für Linux müsst ihr einfach per “sudo apt-get install pgp” PGP installieren. Jedes dieser Programme hat eine Datei namens ” sha256sum.exe”. Über die Kommandozeile (bei Windows mit cmd starten) gebt ihr nun ein “sha256sum ‘zu prüfende Datei’, also etwa den Befehl

sha256sum.exe "c:\bitcoin\bitcoin-0.12.1-win64-setup.exe"

Anschließend wird euch euer Programm eine Zeichenkette aussprucken – den SHA 256 Extrakt der Installationsdatei. Diesen vergleich ihr mit den Angaben der Entwickler. Wenn es übereinstimmt, ist alles gut, wenn nicht, dürft ihr euch dazu gratulieren, so vorsichtig zu sein. Denn dann ist etwas faul im Busch.

Seid ihr soweit mitgekommen?

Wir sind nämlich noch nicht ganz durch. Wie fast immer in der Kryptographie gibt es ein “Aber, was wäre wenn …”. Es gibt immer eine Hintertüre, und es gibt immer Gründe, paranoid zu sein.

Also: Was wäre wenn jemand die Webseite, auf der die Hash-Extrakte stehen, gehackt und nicht nur die Dateien, sondern auch den Extrakt manipuliert hat? Dann bringt doch jede Prüfung nichts, oder?

Ja. Wenn sowohl Datei als auch Extrakt gefälscht sind, braucht man weitere Sicherheitsmaßnahmen. Daher hat Core Maintainer Wladimir van der Laan an die Liste der Hashes der Dateien seine Signatur angehängt.

Wie man Signaturen prüft

Signaturen sind das Gegenstück zur Verschlüsselung in der asymmetrischen Kryptographie. Während man beispielsweise mit PGP den öffentlichen Schlüssel des Empfängers einer Nachricht benutzen kann, um die Nachricht so zu verschlüsseln, dass sie nur der Empfänger lesen kann, dienen Signaturen dazu, sicherzustellen, dass eine Nachricht tatsächlich von dem ist, von dem sie sein soll.

Dafür erstellt man mit dem privaten Schlüssel eine Art Extrakt der Nachricht und hängt diesen als Signatur an die Nachricht an. Dieses Extrakt kann von jedem, der den öffentlichen Schlüssel kennt, verifiziert, aber nur von dem, der den privaten Schlüssel hat, erzeugt werden. Bitcoin-Transaktionen werden auf genau diese Weise signiert.

Core Maintainer Wladimir van der Laan hat die Textdatei, in der er die Hashes für die Installationsdateien festhält, mit seinem privaten PGP-Schlüssel signiert. Dies sieht nun so aus:

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQIcBAEBCAAGBQJXEIwgAAoJEJDIAZ42wulkXNcP/Re0iawPi8muiq6J36ZUZKws
KL2nwjCImj91on8wGoTUir1IytuIafA4JMHslos2Ak3za2UKAEZrEfx0dXm/FVql
AgRneYLYedMQ8127UkSho4rxuwjB3h2gR/FGPpPT0PmbNTWOFsKtV1V9zwsCeA9Q
br/ly2BfZHWsS1tpSK5ukP5W0q+Ii2fO4pcfaAsS2y/gc5kyj5hTiKQivwBVXoVA
cyH1splq1foM5BYwOuT/cUKGrpA8fWo7+xOaEhhFBlW0oJaSXcNSK9mVTSI/dQ/2
lINXcWBtotnH6/evS35pAIOe4PHg/URhXNT/Sdfwts4YL5nMtF+SPBrJWadPvx3C
qdSDZKMuM0cDjVg1F4rjoWAxyshWNKKU2J+qkNUBZ1LbpVyDR3Gl4LFwRjaw0wyZ
n6zHonPCtp33ErhsaY0GryHV1pKvL1h6uyDNWHbYpKny4F+TvbyQ6XNVHrx1IAn5
+9UMPB3Q962/8hrRqK95Cs6AJ/D1Wdw9rwEqOC48waDzttYCVknn4L6rGECDdRM4
6pbWNTf3m9lzThWjiuEdNnPoNuKoBD9/UHWW/WRHjT6tbcGqstoyRKTsi8jjmwnC
9g4xWRsTdqYIAL4PBv32T+QYW/YcyRNTT97t/M0aukXxxxjCObehWVmBXVeNn0/9
lvvCgGgSJXtJHxzqcJ2I
=a2/6
-----END PGP SIGNATURE-----

Jeder, den Wladimir van der Laans öffentlichen Schlüssel kennt, kann nun prüfen, ob 1. die Hashes wirklich von Wladimir geschrieben worden sind und ob sie 2. seitdem unverändert geblieben sind. Auch das Prüfen an sich ist nicht schwer. Dazu muss man zunächst den öffentlichen PGP-Schlüssel von Wladimir van der Laan herunterladen (z. B. bei Bitcoin.org) und anschließend in den Schlüsselbund aufnehmen. Dies geht durch den Befehl “gpg –import ‘Ort\Dateinahme'”. Also:

gpg --import "laanwj-releases.asc"

Wenn man beides hat – PGP-Schlüssel und Textdatei – kann man mit PGP prüfen, ob es zusammenpasst. Dazu muss man wieder in die Eingabeaufforderung gehen und, bei Windows, in den PGP-Ordner. Dann gibt man ein “gpg –verify ‘Dateiname'”, also, im Falle von Bitcoin,

gpg --verify "SHA256SUMS.asc"

Anschließend erklärt einem das Programm, ob der Schlüssel korrekt ist.

Eine Alternative zu diesem Vorgehen ist es, Bitcoin-Schlüssel zu verwenden. Es ist mit den meisten Bitcoin-Wallets möglich, Nachrichten mit dem privaten Schlüssel zu signieren, und zu verifizieren, ob die Signatur von Nachrichten korrekt ist. Die Entwickler von Bitcoin-Unlimited benutzen dieses System. Sie haben die Hashes der Installationsdateien auf der Webseite bitcoinunlimited.info veröffentlicht, diese mit ihre privaten Adressen signiert und dazu die korrespondierende Adresse veröffentlicht. Das sieht etwa so aus:

By: Andrew Stone (1zerg12nRXZ41Pw4tfCTqgtdiJx6D1We3)
Signature:
G1W1Uq8QagCARx0eK895+5ZBQzwFqpQmRVOP+yPNDkCuAh8yC9BUxp59BtIP0ieHZvZBeHpvdkvepAC4YOkgwu4=

Man muss nun im Bitcoin Client die Option “Nachricht verifizieren” anwählen, dann die Nachricht (die Liste mit den Hashes), die Adresse und die Signatur eingeben. Anschließend stellt der Client fest, ob die Signatur korrekt ist.

Das war es aber nun, oder?

Nein, leider noch nicht ganz. Wir müssen, wie schon gesagt, paranoid sein. Und eine Falltüre ist noch übrig geblieben: Woher wissen wir, dass der Schlüssel von Wladimir van der Laan oder die Adressen von den Bitcoin-Unlimited-Entwicklern korrekt sind? Wenn man mal die Webseiten gehackt hat, wäre es doch leicht möglich, auch die Adressen und den öffentlchen Schlüssel zu manipulieren, oder?

Ja, wäre es. Ein guter Angreifer könnte einen auch nach dieser ganzen Prozedur noch austricksen. Was macht man also? Man überprüft die öffentlichen Schlüssel durch mehrere Quellen.

Wie man Fingerprints prüft

Die Korrektheit eines PGP-Schlüssels kann man durch den Abgleich des Fingerprints feststellen. Der Fingerprint ist so etwas wie ein Fingerabdruck eines PGP-Schlüssels. Der Fingerprint von Wladimir van der Laans PGP-Schlüssel ist laut Bitcoin.org 01EA 5486 DE18 A882 D4C2 6845 90C8 019E 36C2 E964. Dies bestätigt Wladimir in einer Mail in der Bitcoin-Dev-Mailing-List. Wenn man nun im PGP/GPG-Ordner eingibt

gpg --fingerprint

zeigt das Programm die Fingerabdrücke aller Schlüssel im Schlüsselbund. So kann man die Fingerabdrücke des Schlüssels von Wladimir van der Laan vergleichen. Sofern sie übereinstimmen, ist alles in Ordnung und man hat den richtigen Schlüssel.

Bei Bitcoin-Unlimited funktioniert es wieder ein wenig anders. Hier haben die Entwickler ihre öffentlichen Bitcoin-Adressen im Forum bitco.in verifiziert. So hat man eine zweite Quelle, um zu vergleichen.

Aber was wäre, wenn … wenn der Hacker, der einen Man-in-the-middle-Angriff auf mich macht, alle Webseiten spiegelt, auf denen ich die Fingerabdrücke oder Adressen prüfen kann, und mir dann falsche Abdrücke / Adressen vorgaukelt? In dem Fall würde selbst das Gegenprüfen nichts helfen. Das einzige, was hier hilft, ist die Schlüssel rechtzeitig zu importieren und die Adressen der Entwickler zu speichern. Am besten von mehreren Systemen / IP-Adressen / Orten aus.

Viel Spaß und Erfolg beim Prüfen der Binaries – und mit Dank an Axiom, der im Coinforum erklärt, wie man Dateien und Signaturen prüft.

Über Christoph Bergmann (2561 Artikel)
Das Bitcoinblog wird von Bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder ---

2 Kommentare zu Bitcoin.org fürchtet Angriff – so prüfen Sie die Installationsdateien des Clients

  1. Wer ist denn dieser “Cobra”? Keiner kennt ihn, er ist nicht nur anonym, nur Leute wie Greg Maxwell wissen etwas mit ihm anzufangen.

    Immerhin ist diese Warnung berechtigt. Man sollte Bitcoin Core nicht von Version 0.11 updaten.

  2. Cooler Artikel. Hat mir geholfen etwas hinter diese FIngerrint und Hashsummen zu steigen. Danke. Übrigens alternativ oder zusätzlich zum herunterladen eines PGP Programms könnte man sowas, wie http://hash.online-convert.com/sha256-generator nutzen

Kommentar verfassen

%d Bloggern gefällt das: