GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie stellt die Bereitstellung einer ASC-Datei sicher, dass ich den beabsichtigten Quellcode herunterlade?

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:

  1. 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?
  2. 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 importieren
    gpg --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:

beginnt
 -----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.

Verwandte:Was bringt es, eine neue Zeile am Ende einer Datei hinzuzufügen?

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.


Linux
  1. Wie funktioniert das Sticky Bit?

  2. Liest Tail die ganze Datei?

  3. Linux – Wie überprüft man die Verzeichnisstrukturinformationen einer Unix/Linux-Datei?

  4. Wie funktioniert der Tee-Befehl?

  5. Woher weiß der Befehl Xdg-open, welche Anwendung zum Öffnen einer Datei verwendet werden soll?

So beheben Sie den Fehler – ModSecurity:Zugriff verweigert mit Code 44 [Apache]

Wie füge ich am Ende einer Datei einen Zeilenumbruch hinzu?

Wie leitet man die Ausgabe von system() in eine Datei um?

Wie kann ich eine einzelne Datei RSYNC?

Wie funktioniert der ps-Befehl?

Wie funktioniert die Loopback-Schnittstelle?