Wie kann man den Bitcoin-Client sicher herunterladen?

Was ist das richtige Verfahren, um den offiziellen Bitcoin-Client herunterzuladen und zu validieren, dass er von den Entwicklern signiert und nicht von einem Man-in-the-Middle mit Malware infiziert wurde?

Mir ist gerade nach dem Upgrade des Clients auf 0.3.24 aufgefallen, dass ich keine Überprüfungsschritte unternehme. <paranoia>Es könnte jetzt Trojaner in meinem System geben, und ich würde es nicht einmal merken!</paranoia>
siehe ähnlichen Thread hier: bitcointalk.org/index.php?topic=49889 Howto verify bitcoin archiveauthenticity

Antworten (7)

Jeff Garzik signiert jede Veröffentlichung mit seinem GPG-Schlüssel (auch hier ). Veröffentlichungsankündigungen (wie diese hier ) finden Sie auf der Bitcoin-Entwicklungsliste von SourceForge.net .

Um die Signatur auf einer Version zu überprüfen, rufen Sie den Schlüssel über den obigen Link ab. Erhalten Sie die Release-Ankündigung über den obigen Link. Holen Sie sich den Download von einer beliebigen Quelle. Zeigen Sie dann mit GPG auf die Veröffentlichungsankündigung (oder den Signaturblock daraus, einschließlich der BEGIN- und END-Zeilen). GPG fragt Sie, welche Datei Sie überprüfen möchten, wählen Sie eine der im Signaturzertifikat aufgeführten aus. Es wird Ihnen dann mitteilen, ob die Veröffentlichung mit der von Jeff Garzik signierten Veröffentlichung identisch ist.

und wenn Sie schon dabei sind ... Sie sollten auch einige Schritte unternehmen, um zu überprüfen, ob der gpg-Schlüssel tatsächlich dem gehört, zu dem er zu gehören scheint. /jeder/ kann einen Schlüssel mit "jeff garzik" in der UID erstellen.
@nanotube: Guter Punkt. Der Fingerabdruck des Freigabeschlüssels ist 60B0 0235 B335 5D84 BF2A 4E35 DA1D C20F 2DBF 0CA8.
und vorausgesetzt, wir können uns alle darauf verlassen, dass Sie überprüft haben, ob dieser Schlüssel tatsächlich Jeff gehört, bevor Sie diesen Fingerabdruck posten ... das ist ein guter erster Schritt :) Wir sollten uns wahrscheinlich bemühen, das GPG-Vertrauensnetz zwischen den Kernentwicklern und zu verbessern der Rest der Gemeinde.
Ich kann diesen Kommentar nicht mehr bearbeiten. Wenn es falsch ist, würde man hoffen, dass es jemand sagt. Du musst mir also eigentlich nicht vertrauen. (Außerdem würde ich, wenn das falsch wäre, öffentlich für falsche Informationen bürgen, da ich weiß, dass sie sicherheitsrelevant sind. Ich würde eine gute Schande verdienen.)

Anleitung für Linux:

Sie müssen die folgenden Dateien haben:

  1. Laden Sie die Datei herunter, die Sie überprüfen möchten:

    wget -c https://bitcoin.org/bin/bitcoin-core-0.13.2/bitcoin-0.13.2-x86_64-linux-gnu.tar.gz
    
  2. Laden Sie die Hash-Summen enthaltende Datei herunter:

    wget -c https://bitcoin.org/bin/bitcoin-core-0.13.2/SHA256SUMS.asc
    
  3. Laden Sie den Release-Signaturschlüssel herunter:

    wget -c https://bitcoin.org/laanwj-releases.asc
    

Sie überprüfen die Datei wie folgt:

  1. Der Signaturschlüssel muss importiert werden:

    gpg --import laanwj-releases.asc
    
  2. Überprüfen Sie die Signatur der Hashsummendatei:

    gpg --verify-files SHA256SUMS.asc laanwj-releases.asc
    

    Es sollte sagen:

    Gute Signatur von "Wladimir J. van der Laan.

    Jetzt wissen wir also, dass die Hashsummendatei mit dem bereitgestellten Schlüssel signiert ist, dem wir vertrauen.

  3. Überprüfen Sie abschließend die gewünschte Datei:

     gpg --verify-files bitcoin-0.12.1-linux64.tar.gz SHA256SUMS.asc
    

    Es sollte sagen:

    Gute Signatur von „Wladimir J. van der Laan (Bitcoin Core Binary Release Signing Key)“

    Jetzt wissen wir also, dass die tarierte Datei mit dem bereitgestellten Schlüssel signiert ist, dem wir vertrauen.

  4. Überprüfen Sie, ob die Hash-Summe übereinstimmt:

     sha256sum --ignore-missing -c SHA256SUMS.asc
    

    Es sollte sagen:

    bitcoin-0.13.2-x86_64-linux-gnu.tar.gz: OK

Ich wollte dies positiv bewerten, weil es die beste Antwort zu sein scheint, aber wenn ich die Schritte durchgehe, finde ich Folgendes: Für Version 0.12.1 sind die verlinkten "Release-Signaturen" bitcoin.org/bin/bitcoin-core-0.12.1/ SHA256SUMS.asc , Sie verlinken jedoch auf eine laanwj-releases.ascDatei, und diese Datei befindet sich in einem Link mit dem Titel v0.11.0+, nicht 0.12.1. Bedeutet das +Zeichen hier „oder später“? Wie in "0.11.0 oder höher"?
@knocte Ja, es bedeutet "oder später".
Schritt 4 erzeugt: sha256sum: WARNUNG: 20 Zeilen sind falsch formatiert sha256sum: SHA256SUMS.asc: Es wurde keine Datei verifiziert

Ich würde dieses Skript aus dem Repository von bitcoin-core holen und dann die Zeile auskommentieren, in der es die clean_upFunktion am Ende aufruft. Wenn Sie es dann aufrufen, lädt es nicht nur die Binärdateien in /tmp/bitcoin/ herunter, es überprüft auch die Hashes.

  1. Besuchen Sie http://sourceforge.net/projects/bitcoin/files/Bitcoin/
  2. Wählen Sie den neuesten Versionsordner.
  3. Laden Sie eine der SHA...SUMS-Dateien herunter und untersuchen Sie sie in Ihrem bevorzugten Texteditor.
  4. Laden Sie die gewünschte Installationsdatei herunter.
  5. Wenn Sie nicht wissen, wie Sie Ihren Computer dazu bringen, Ihnen die Prüfsumme einer Datei mitzuteilen, müssen Sie das herausfinden. Vergleichen Sie die Prüfsumme mit der in der Datei. Wenn sie übereinstimmen, dann haben Sie eine wichtige Sache festgestellt: Die Datei, die Sie heruntergeladen haben, ist die gleiche wie die Datei, die von demjenigen verwendet wird, der diese Prüfsumme erstellt hat.

Jetzt wollen Sie wissen, ob Sie dieser Person vertrauen können. Er hat ein Konto bei Sourceforge und hat Ihnen eine Datei zur Verfügung gestellt, und Sie haben diese Datei jetzt, und was Sie in Schritt 5 bewiesen haben, ist, dass Sie dieselbe Datei erhalten haben, die er zur Verfügung gestellt hat, im Gegensatz zu einer Fälschung von jemandem aus dem Internet zwischen Ihnen und Sourceforge.

Ich habe das gerade mit Version 0.7.1 gemacht, und diese Person ist Gavin Andresen. Ich habe Kleopatra für Windows, also habe ich auf dem pgp.mit.edu-Zertifikatsserver nach „Gavin Andresen“ gesucht und ein Zertifikat für ihn mit „(CODE SIGNING KEY)“ im Namen gefunden. Ich habe es in Kleopatra importiert und dann überprüft, ob die Prüfsummendatei, die ich in Schritt 3 heruntergeladen habe, von der Person signiert wurde, die diesen Schlüssel erstellt hat (Jeder kann einen Schlüssel erstellen und vorgeben, Gavin zu sein).

Aber seien wir paranoid...

Ich könnte immer noch fehlerhaften Code haben, weil ich möglicherweise das Zertifikat eines Betrügers heruntergeladen und meine Verbindung für den Download gekapert habe. Also habe ich „Gavin Andresen Certificate Fingerprint“ (ohne Anführungszeichen) gegoogelt und eine Seite unter https://bitcointalk.org/index.php?action=printpage;topic=69355.0 gefunden , die den Fingerabdruck von „Gavin“s Zertifikat anzeigt, und es passt. Mit all diesen Informationen gehe ich davon aus, dass es mir gut geht. Wenn nicht, müsste ich mir die Quelle besorgen und sie untersuchen, wie Evil Spork erklärte.

Hier ist eine einfache Anleitung zur Authentifizierung von Bitcoin-qt auf GNU/Linux-Systemen (wie Trisquel, Fedora, Ubuntu, Debian usw.):

  1. Öffnen Sie ein Terminal
  2. Laden Sie den PGP-Schlüssel der Kernentwickler herunter ( https://bitcoin.org/en/development )

(Gavin Andresen)

  1. Importieren Sie den Kernentwickler-PGP-Schlüssel mit GPG:

gpg --import gavinandresen.asc

  1. Klicken Sie auf der Seite https://bitcoin.org/en/download auf die Datei „Linux (tgz)“, um sie herunterzuladen.

  2. Klicken Sie auf der Bitcoin-Downloadseite auf den Link „Release-Signaturen überprüfen“, um die Signatur herunterzuladen.

  3. Authentifizieren Sie, dass die Dateifreigabe vom Kernentwickler kompiliert wurde:

gpg --verify SHA256SUMS.asc

Die wichtigste Zeile, um sicherzustellen, dass Sie sehen, ist:

gpg: Gute Signatur von "Gavin Andresen (CODE SIGNING KEY) "

Eine zweite Zeile, die Sie sehen werden, ist:

gpg: WARNUNG: Dieser Schlüssel ist nicht mit einer vertrauenswürdigen Signatur zertifiziert!

Diese Zeile bedeutet, dass Sie nicht wissen, ob Sie der importierten Signatur vertrauen können. Ohne den Kernentwickler Gavin Andresen persönlich zu treffen oder zumindest seinen öffentlichen Schlüssel von jemandem zu erhalten, dem Sie vertrauen und der ihn getroffen hat, werden Sie dem Download niemals wirklich vertrauen können. Sie können sich jedoch zumindest darauf verlassen, dass alle zukünftigen Releases zumindest von derselben Person kompiliert werden. Wenn Sie "Gute Signatur" nicht sehen, wissen Sie, dass Sie ein Problem haben.

Wenn Sie schon dabei sind, möchten Sie vielleicht die Schlüssel anderer Kernentwickler importieren, nur für den Fall. Es kann sein, dass irgendwann ein anderer Core-Entwickler unterschreibt. Sie haben mehr Vertrauen, dass er von einer vertrauenswürdigen Partei stammt, als wenn Sie den Schlüssel zum Zeitpunkt des Downloads importieren müssen.

Wenn Sie es wirklich sicher haben möchten, gehen Sie im Allgemeinen zur offiziellen Quelle, laden Sie sie herunter, überprüfen Sie den Code und kompilieren Sie ihn dann selbst.

Andernfalls vergleichen Sie es einfach mit dem md5-Hash oder dem sha-Hash.

Ich möchte, dass die Antwort auf diese Frage so formuliert wird, dass technisch nicht versierte Benutzer dies tun können.
Wenn Sie in Windows verwenden, installieren Sie Summer Properties . Es fügt dem Dateieigenschaftenfenster eine Prüfsummenregisterkarte hinzu. Laden Sie also den Client herunter, klicken Sie mit der rechten Maustaste auf Eigenschaften und überprüfen Sie, ob der sha1-Hash derselbe ist. Natürlich muss Ihr System auch frei von Viren/Spyware sein, sonst ist das nutzlos...
Ein technisch versierter Benutzer wird im Allgemeinen nicht in der Lage sein, ein Programm einfach zu überprüfen. Es gibt Tools dafür, aber sie sind nicht in Windows integriert. Summer Properties ist natürlich ein Beispiel. Fahren Sie fort und bearbeiten Sie meine Antwort nach Belieben, aber ich habe die Software nicht verwendet, daher kann ich nicht wirklich dafür oder dagegen stimmen.
Die "offizielle Quelle" ist GitHub? Ich sehe, dass die "offizielle" Distributionsseite Sourceforge kein SSL verwendet.
Von bitcoin.org gelange ich zu SourceForge, das eine Seite mit einem signierten SHA1 enthält. Mit Summer Properties kann ich also sha1 überprüfen, aber ich muss auch überprüfen, ob es richtig signiert ist (ein Angreifer kann auch sha1 fälschen). Wie überprüfe ich also die PGP-Signatur? Vs welcher Schlüssel?
pgp signing hinterlässt unten einen komplexen Hash, den Sie testen können, um zu „beweisen“, dass das Dokument mit einem vertrauenswürdigen Schlüssel signiert wurde. Im Wesentlichen kann der private Schlüssel öffentlich signieren und der öffentliche Schlüssel kann privat signieren. Wenn Sie also mit Ihrem privaten Schlüssel signieren, kann jeder, der Ihren öffentlichen Schlüssel kennt, überprüfen, ob dieser wirklich von Ihnen stammt ... Aber in erster Linie Sie müssen den öffentlichen Schlüssel des Erstellers haben. was wieder zum gleichen Problem führt.
-1 Dies ist eine Nichtantwort. Niemand, nicht einmal ein Entwickler, soll die gesamten Quellen eines Programms für jede Veröffentlichung untersuchen und auf magische Weise jeden möglichen Exploit erkennen müssen.
Es gibt keine andere Möglichkeit, um sicherzustellen, dass ein Code-Bit nicht bösartig ist, als ihn selbst zu überprüfen. :P also kaum eine Nicht-Antwort, nur weit mehr als die meisten Leute bereit sind zu tun.
Aber was ist, wenn jemand Ihren Compiler kompromittiert hat? ;-)
dann hast du es einfach vermasselt :P

F: Wie kann man den Bitcoin-Client sicher herunterladen?

A: https://github.com/bitcoin/bitcoin/downloads

Es sei denn, das SSL-Zertifikat von github ist kompromittiert ;-)
@nmat : oder wenn irgendeine öffentliche Stammzertifizierungsstelle kompromittiert ist
Github-Downloads gehen auch nicht über https. Obwohl der Downloadbereich https ist, kommt es, sobald Sie auf eine einzelne Datei klicken, um sie herunterzuladen, von cloud.github.com - kein https in Sicht. Für die vorliegende Frage ist es jedenfalls irrelevant, da https Sie nicht vor Serverkompromittierungen schützt. Sie sollten wirklich nur die gpg-Sig überprüfen.
veralteter Link jetzt