Ich installiere cmake von der Website cmake.org und sie stellen zwei Dateien bereit, von denen ich glaube, dass sie dazu dienen, den Quellcode-Download cmake-3.11.0-rc3.tar.gz zu überprüfen
Auf derselben Seite haben sie Links zum Herunterladen einer cmake-3.11.0-rc3-SHA-256.txt Datei und eine cmake-3.11.0-rc3-SHA-256.txt.asc Datei
Was ich nicht verstehe ist:
- Wie stellt eine ASC-Datei aus derselben Quelle (cmake.org) die Integrität des Quellcodes sicher? Wenn der von der Seite angebotene Quellcode kompromittiert wurde, könnte der Angreifer dann nicht auch die asc-Datei kompromittieren?
-
Brauche ich keinen öffentlichen Schlüssel, um den Quellcode-Download wirklich zu verifizieren? Und ich dachte, die ASC-Datei sollte der öffentliche Schlüssel sein. Wenn ich jedoch versuche, die ASC-Datei mit
zu importierengpg --import cmake-3.11.0-rc3-SHA-256.txt.asc
Ich erhalte die Fehlermeldung „Keine gültigen OpenPGP-Daten gefunden“
Akzeptierte Antwort:
Werfen Sie einen Blick in die .asc
Datei, werden Sie sehen, dass sie mit:
-----BEGIN PGP SIGNATURE-----
Das ist also eine PGP Signatur . Das bedeutet, dass einige Inhalte mit einem bestimmten PGP-Schlüssel signiert werden.
1) Der Inhalt
Der Inhalt ist dem Namen nach die Datei .txt
, es ist die Liste der Dateien, die der herunterzuladenden Software entsprechen, und jede Datei hat ihren entsprechenden Hash.
2) Die Unterschrift
Wenn Sie gpg
starten für beide Dateien, hier ist das Ergebnis:
$ gpg --verify cmake-3.11.0-rc3-SHA-256.txt.asc cmake-3.11.0-rc3-SHA-256.txt
gpg: Signature made Fri Mar 9 10:29:10 2018 EST
gpg: using RSA key 2D2CEF1034921684
gpg: Can't check signature: No public key
Wie funktioniert das alles? Sie sollten den Schlüssel 2D2CEF1034921684
haben in Ihrem lokalen Schlüsselbund. Wie bekommen Sie es, und was noch wichtiger ist, stellen Sie sicher, dass Sie das richtige bekommen? (Die ID allein reicht nicht aus). Hier findet das Web-of-Trust-Modell von OpenPGP statt. Es wäre zu lang, hier näher darauf einzugehen, aber kurz gesagt, im Idealfall erhalten Sie Zugriff auf die Schlüssel außerhalb des Bandes und Sie haben Mittel, um sie zu authentifizieren ... oder um einen anderen Schlüssel von jemandem zu authentifizieren, von dem Sie wissen, dass er selbst den anderen Schlüssel authentifiziert hat. Und/oder Sie finden es online an einem oder mehreren Orten, gesichert durch HTTPS (mit einem Zertifikat und einer CA, denen Sie vertrauen) und idealerweise mit DNSSEC.
Wenn Sie den öffentlichen Schlüssel haben und darauf vertrauen, dass er gut und nicht gefälscht ist (und dass er normalerweise den Softwareentwicklern des Tools entspricht, das Sie herunterladen möchten), zeigt Ihnen der obige Befehl, dass die Datei .txt
Dateien wurden nicht manipuliert. Und dies gibt Ihnen wiederum den Hash aller Archivdateien, sodass Sie ihn herunterladen und den Hash-Algorithmus (SHA256, wie im Dateinamen geschrieben) erneut ausführen und mit dem in der Datei gespeicherten Wert vergleichen können.
Wenn jemand den Server kompromittiert und einige Archive geändert hätte, könnte er, wie Sie selbst sagen, auch die .txt
ändern Datei mit den neuen Hashes, so dass Sie glauben können, dass die Dateien übereinstimmen.
Dieser Drittanbieter wäre jedoch nicht in der Lage, die richtige .asc
zu generieren Datei mit der PGP-Signatur (nach gpg --verify
Sie würden eine Fehlermeldung wegen ungültiger Signatur erhalten), denn dazu müsste er Zugriff auf den privaten Schlüssel haben, der angeblich ordnungsgemäß gesichert und ohnehin nicht auf dem Webserver gespeichert ist.
Und wenn doch, generiert er ihn mit einem anderen Schlüssel Sie werden es sehen, weil Sie diesem unbekannten Schlüssel nicht vertrauen werden.
Aber natürlich bricht das ganze Modell zusammen, wenn der Schlüssel selbst kompromittiert wird.