staging.inyokaproject.org

Verifizierung einer herunter geladenen Datei (z.B von github)?

Status: Ungelöst | Ubuntu-Version: Kubuntu 24.04 (Noble Numbat)
Antworten |

amibobo

Avatar von amibobo

Anmeldungsdatum:
20. April 2013

Beiträge: 59

Hallo Forum,

ich habe eine allgemeine Frage, an dem konkreten Beispiel: yt-dlp (https://github.com/yt-dlp/yt-dlp)

Vor dort habe ich die Datei "yt-dlp", sowie die Signaturdateien "SHA2-512SUMS", "SHA2-512SUMS.sig", "SHA2-256SUMS" und "SHA2-256SUMS.sig" herunter geladen.

Die Anleitung auf der Webseite sagt zur Thematik:

The public key that can be used to verify the GPG signatures is available here Example usage:

curl -L https://github.com/yt-dlp/yt-dlp/raw/master/public.key | gpg --import
gpg --verify SHA2-256SUMS.sig SHA2-256SUMS
gpg --verify SHA2-512SUMS.sig SHA2-512SUMS

Die drei Befehlszeilen wurden erfolgreich ausgeführt, einzig bei den "gpg --verify ..." gab es jeweils den Hinweis:

gpg: Korrekte Signatur von "Simon Sawicki (yt-dlp signing key) <contact@grub4k.xyz>" [unbekannt]
gpg: WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!
gpg:          Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.

Die angegebene Webseite grub4k.xyz ist per ping erreichbar, aber nicht über den Browser, sodass ich mir von dort keine "echte" GPG-Datei herunter laden konnte.

Soweit scheint alles ok.

Leider fand ich zum nächsten Schritt keine Infos auf der Webseite mehr. ChatGPT meinte, die eigentliche Überprüfung der Datei erfolgt via:

./SHA2-256SUMS ./yt-dlp

(man befindet sich in der Konsole bereits im entsprechenden Verzeichnis)

Hier erhalte ich jetzt in der Konsole Rückmeldungen, welche auf Problme hinweisen, aber ich weiß nicht, warum und wie ich das beheben kann?

./SHA2-256SUMS: Zeile 1: 8d8151368376c4d2f6dd6993d893be09334c06b7e6fa1e7e07bc3c4fbef848b3: Befehl nicht gefunden
./SHA2-256SUMS: Zeile 2: fdf3856b6392e9b96637229294993dae2331f2565fcdfc8cccada74927dc31bb: Befehl nicht gefunden
./SHA2-256SUMS: Zeile 3: 8435749b6159104f06b31952d3edc2f90f2c72b0d2927fb899333621d58ca7a2: Befehl nicht gefunden
./SHA2-256SUMS: Zeile 4: d196567670d6eca337e28244985e922c452f71f8aacc3024cac62ebb0e977080: Befehl nicht gefunden
./SHA2-256SUMS: Zeile 5: 2a291228eace03d6c8db1f92dca2abff797142de85b03c8aba30c2330df3afe7: Befehl nicht gefunden
./SHA2-256SUMS: Zeile 6: c91e868ea3c60e296ee07927c6c3dfa6eb8739106754aa99d6fac6492866731f: Befehl nicht gefunden
./SHA2-256SUMS: Zeile 7: 8265ca802d67202b660752198fb0284aa5a115c5c9c518951964c853747a5219: Befehl nicht gefunden
./SHA2-256SUMS: Zeile 8: eb66d81e9e959fcc1c2c9ff6df98530ec0b5afd0594b06a6fdab7967759841d8: Befehl nicht gefunden
./SHA2-256SUMS: Zeile 9: 0466c6e320e486917f309bf19dbeac3cbefd84bd5bde72a8199c8ace655267a6: Befehl nicht gefunden
./SHA2-256SUMS: Zeile 10: 9c01396d9f3bb210e5b61a095020be2c80418568fa86b602526b8e3cb37a270d: Befehl nicht gefunden
./SHA2-256SUMS: Zeile 11: 00b4818228bce3c5e0cc551a1dc36cda9b44003b1630cc14f3447afa5c3a0005: Befehl nicht gefunden
./SHA2-256SUMS: Zeile 12: 06fd338f7e1c179b7d6ccd4212ab3f2f1861ea9c5f5cd9d7ef0c1254eaf69a27: Befehl nicht gefunden

Daher die allgemeine Frage, und konkret für diesen Fall, wie man aus dem Netz (z.B. github) herunter geladene Dateien auf deren Integrität prüft?

Gibt es eine Master-Signatur, z.B. via github oder mozilla, mit der man die "Echtzeit" der Entwicklersignatur prüfen kann?

Viele Grüße

HarryD

Anmeldungsdatum:
14. Juni 2006

Beiträge: 2818

amibobo schrieb:

ChatGPT meinte, die eigentliche Überprüfung der Datei erfolgt via:

./SHA2-256SUMS ./yt-dlp

ChatGPT erzählt Unsinn. Versuch mal

shasum -c SHA2-256SUMS

san04

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1269

amibobo schrieb:

Daher die allgemeine Frage, und konkret für diesen Fall, wie man aus dem Netz (z.B. github) herunter geladene Dateien auf deren Integrität prüft?

Das hast du vorbildlich getan.

gpg: Korrekte Signatur von "Simon Sawicki (yt-dlp signing key) <contact@grub4k.xyz>" [unbekannt]

Das ist der Nachweis, dass die Datei mit dem Schlüssel unterschrieben wurde, den du vorher mit curl heruntergeladen hast.

Dieser Schlüssel hat in deinem persönlichen Schlüsselbund erstmal unbekanntes Vertrauen, worauf gpg hinweist.

gpg: WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!
gpg:          Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.

Viel mehr kann GPG an dieser Stelle nicht für dich tun und deine weiteren Handlungsoptionen sind jetzt beschränkt:

  • Du willst wissen, ob die Software wirklich von Simon Sawicki stammt (es könnte sich ja auch einfach jemand für ihn ausgeben), also fährst du hin, triffst ihn persönlich, ihr gleicht eure Fingerprints ab, dann sagst du deinem GPG, dass du dem Schlüssel wirklich vollständig vertraust und signierst ihn womöglich noch mit deinem eigenen Schlüssel. Dann meckert GPG nicht mehr.

Im Vergleich dazu mal ein Key, der hohes Vertrauen genießt und zahlreich unterschrieben ist: https://keyserver.ubuntu.com/pks/lookup?op=vindex&fingerprint=on&exact=on&search=0xE240B57E2C4630BA768E2F26FC1B547C8D8172C8

Prinzipiell ist aber gut, dass der Key zumindest auf einem Keyserver liegt. (Wenn jemand die Webseite gekapert hätte, dort die manipulierte Software und den bösen Key hinterlegt hätte, hätte er ihn womöglich nicht auch noch auf einen Keyserver hochgeladen). Außderm lädst du die Software ja auch immerhin aus einem großen Projekt von Github runter und nicht von einer dubiosen unbekannten Internetseite.

Gibt es eine Master-Signatur, z.B. via github oder mozilla, mit der man die "Echtzeit" der Entwicklersignatur prüfen kann?

Nein, es gibt bei GPG gerade genau keine zentrale und allmächtige Zertifizierungsinstanz, da es auf dem GnuPG/Web of Trust basiert. In den ersten Absätzen des Artikels wird die Idee dahinter kurz beschrieben.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

san04 schrieb:

[…]

Alles richtig, aber in Bezug auf das Thema dieser Diskussion eine Anmerkung:

gpg: Korrekte Signatur von "Simon Sawicki (yt-dlp signing key) <contact@grub4k.xyz>" [unbekannt]

Das ist der Nachweis, dass die Datei mit dem Schlüssel unterschrieben wurde, den du vorher mit curl heruntergeladen hast.

Die Datei ist in diesem Fall die Datei SHA2-512SUMS mit der Prüfsumme für die eigentlich gewünschte Datei yt-dlp.

Nach dem Test mit gpg weiß man nun, das die Prüfsumme von jemandem stammt, der sich „Simon Sawicki“ nennt, weil jemand, der dessen GnuPG-Schlüssel besitzt, die Prüfsummendatei unterschrieben hat. Über die Datei yt-dlp sagt das aber gar nichts aus. Diese könnte von jemand ganz anderes stammen oder beim Download verändert worden sein.

Um weiterzukommen, muss man nun die verifizierte Prüfsumme aus der Datei SHA2-512SUMS auf Übereinstimmung mit der selbst ermittelten Prüfsumme der Datei yt-dlp, die man nun selbst besitzt, vergleichen:

Die Prüfsumme ermittelt man mit:

sha512sum yt-dlp 

Wenn diese Prüfsumme nicht mit der aus der Datei SHA2-512SUMS übereinstimmt, wirft man am besten die Datei yt-dlp sofort weg.

san04

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1269

Da hast du natürlich vollkommen Recht, den Schritt habe ich vergessen (vermutlich weil oft direkt die Prüfsumme für die jeweilige Datei angegeben wird).

Die Prüfsummendatei ist signiert, man muss aber die Prüfsumme aus der Prüfsummendatei nochmal mit der tatsächlichen Prüfsumme der Datei abgleichen.

amibobo

(Themenstarter)
Avatar von amibobo

Anmeldungsdatum:
20. April 2013

Beiträge: 59

Viele Dank für Eure Hinweise und Ergänzungen.

100%ig habe ich es noch nicht verstanden.

Mit dem Befehl

sha512sum yt-dlp
ad1820b89c953b4c0f121a6ad4c9f2c8f5db8f68168c83e3734d3217cceae1e80e3a361221083b631f01020fef23aeb60618d3849966416db1b25d645bed164a  yt-dlp

bzw mit

sha256sum yt-dlp 
8d8151368376c4d2f6dd6993d893be09334c06b7e6fa1e7e07bc3c4fbef848b3  yt-dlp

erhalte ich Prüfsummen. Diese Prüfsummen vergleiche ich mit den Prüfsummen in den Dateien SHA2-512SUMS bzw. SHA2-256SUMS Stimmen diese überein, dann sind zumindest die Dateien von github zusammengehörig.

Ob diese aber tatsächlich vom Entwickler stammen, oder verfälscht wurden, kann ich nur prüfen, wenn ich die Glaubwürdigkeit des gpg-Schlüssels verifiziere, was praktisch nur persönlich sicher möglich wäre und voraussetzt, dass der Entwickler so bekannt ist, dass ich ihn erkenne?

Das haben bei dem umfangreich unterschriebenen Schlüssel wohl mehrere gemacht, bei dem konkreten Projekt wohl bisher nur 1 Person. Da es aber auf github noch nicht gesperrt wurde, dürfte die Software zumindest keine Schadsoftware sein.

san04

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1269

Nicht ganz, amibobo schrieb:

...
sha256sum yt-dlp 
8d8151368376c4d2f6dd6993d893be09334c06b7e6fa1e7e07bc3c4fbef848b3  yt-dlp

erhalte ich Prüfsummen. Diese Prüfsummen vergleiche ich mit den Prüfsummen in den Dateien SHA2-512SUMS bzw. SHA2-256SUMS

ist soweit korrekt.

Jetzt könnte aber jemand die SHA2-256SUMS mainpuliert haben und dort die Prüfsumme der manipulierten yt-dlp-Datei eingetragen haben.

Um das auszuschließen ist diese Datei mit mittels gpg signiert, so weißt du, dass der Ersteller eben diesen Public-Key hat.

Um jetzt 100%ige Sicherheit zu haben, müsstest du überprüfen ob der Public-Key jetzt von der Person stammt, von der er stammen soll. Da wird es eben schwierig...

Antworten |