Auf dieser Seite ist beschrieben, wie man prüft, ob der Schlüssel von einem nicht manipulierten Knoppix erzeugt wurde.
SHA-1-Hash der CD / Imagedatei bestimmen
Dabei hat man leider schon ganz am Anfang mit einem Henne-Ei-Problem zu kämpfen: Wie bestimmt man sicher (in dem kryptotypisch leicht paranoiden Sinn) den Hashwert einer Datei? Indem man ein sicheres System dafür verwendet. Wo aber bekommt man das her? Denn man will ja gerade das Knoppix als sicheres System verwenden... Ein praktikabler Ansatz ist, diese Prüfung auf mehreren Systemen vorzunehmen, das ist nämlich sowohl unter Linux als auch unter Windows möglich. Unter Linux gibt es das Programm sha1sum
, das man auf die Imagedatei (die, wenn man sie auf mehreren Systemen testen will, idealerweise auf einem Readonly-Medium liegt...) oder das block device (meist /dev/sr0) loslassen kann. Unter Windows und Linux gleichermaßen funktioniert gpg: gpg --print-md SHA1 /pfad/zur/datei
. Vermutlich gibt es auch spezialisierte SHA-1-Programme für Windows. Wie man unter Windows die CD als solche (also analog zum block-device-Zugriff unter Linux) testen kann, weiß ich nicht (Info an mich). Möglicherweise bieten Brennprogramme diese Möglichkeit.
Hashdatei und Signaturdatei besorgen
Wenn man Knoppix runterlädt, werden einem u.a. diese Dateien angeboten:
KNOPPIX_V7.0.4CD-2012-08-20-DE.iso
KNOPPIX_V7.0.4CD-2012-08-20-DE.iso.sha1
KNOPPIX_V7.0.4CD-2012-08-20-DE.iso.sha1.asc
Die erste ist das ca. 700 MiB große Image, die anderen sind nur einige Dutzend Byte groß und enthalten den SHA-1-Hash bzw. den SHA-1-Hash mit einer Klartextsignatur (für die kryptografische Prüfung ist nur *.sha1.asc relevant, nicht aber *.sha1):
a7f3c041aef834d387139545b6becaabdb5f6a9d
Der erste Schritt ist nun der Abgleich des selber ermittelten Hashwerts der CD / Imagedatei mit dem aus dieser Datei. Wenn die nicht identisch sind, braucht man gar nicht erst weiterzumachen. Unter Linux kann man den Hashwert besser lesbar machen, indem man ihn in dieses Kommando hineinfüttert:
echo a7f3c041aef834d387139545b6becaabdb5f6a9d | awk '{hash=toupper($1); gsub("....","& ",hash); print hash;}'
A7F3 C041 AEF8 34D3 8713 9545 B6BE CAAB DB5F 6A9D
Signatur prüfen: die Erste
Die Gültigkeit der Signatur prüft man mit diesem Kommando (geht natürlich auch mit GUI):
gpg --verify KNOPPIX_V7.0.4CD-2012-08-20-DE.iso.sha1.asc
Wenn man den Knoppix-Signaturschlüssel noch nicht importiert hat, passiert dann folgendes:
start cmd: # gpg --verify KNOPPIX_V7.0.4CD-2012-08-20-DE.iso.sha1.asc gpg: Signatur vom Mi 22 Aug 2012 09:59:46 CEST gpg: mittels DSA-Schlüssel 0x57E37087 gpg: Signatur kann nicht geprüft werden: Kein öffentlicher Schlüssel
Damit ist klar: Man braucht den Schlüssel mit der ID 0x57E37087. Und den bekommt man so:
Knoppix-Schlüssel besorgen
start cmd: # gpg --search-keys 0x57E37087 gpg: suche nach "0x57E37087" auf hkp-Server eu.pool.sks-keyservers.net (1) Klaus Knopper <info@knopper.net> Klaus Knopper <knopper@knopper.net> Klaus Knopper <knoppix@knopper.net> 1024 bit DSA key 0x57E37087, erzeugt: 2000-05-06 Keys 1-1 of 1 for "0x57E37087". Eingabe von Nummern, Nächste (N) oder Abbrechen (Q) > 1 gpg: fordere Schlüssel 0x57E37087 von hkp-Server eu.pool.sks-keyservers.net an gpg: Schlüssel 0x57E37087: Öffentlicher Schlüssel "Klaus Knopper <knopper@knopper.net>" importiert gpg: Anzahl insgesamt bearbeiteter Schlüssel: 1 gpg: importiert: 1
oder per gpg --recv-keys 0x57E37087
Heise-Schlüssel besorgen
Aber woher weiß man nun, dass dieser Schlüssel korrekt ist? Da kommt Heise ins Spiel: Man nehme sich eine c’t und schlage das Impressum auf. Im Abschnitt c’t-Krypto-Kampagne findet man zwei Schlüssel. Importiert werden muss 0xB3B2A12C:
start cmd: # gpg --recv-keys 0xB3B2A12C gpg: fordere Schlüssel 0xB3B2A12C von hkp-Server eu.pool.sks-keyservers.net an gpg: Schlüssel 0xB3B2A12C: Öffentlicher Schlüssel "ct magazine CERTIFICATE <pgpCA@ct.heise.de>" importiert gpg: Anzahl insgesamt bearbeiteter Schlüssel: 1 gpg: importiert: 1
Heise-Schlüssel verifizieren
Dann wird der Fingerprint des importierten Schlüssels mit dem im Heft abgedruckten (das lässt sich so schlecht fälschen) verglichen:
start cmd: # gpg --fingerprint 0xB3B2A12C pub 1024D/0xB3B2A12C 1999-05-11 Schl.-Fingerabdruck = 19ED 6E14 58EB A451 C5E8 0871 DBD2 45FC B3B2 A12C uid [ unbek.] ct magazine CERTIFICATE <pgpCA@ct.heise.de> sub 1024g/0xB3330DDE 1999-05-11
...und zertifizieren
Glücklich und zufrieden darüber, dass alles so ist, wie es sein sollte, zertifiziert man dann den Heise-Schlüssel:
gpg --local-user lsign --lsign 0xB3B2A12C
(lsign
ist der Kommentar des lokalen Zertifizierungsschlüssels)
Zertifizierungsvertrauen festlegen
Dann muss man noch das Zertifizierungsvertrauen des Heise-Schlüssels auf vollständig setzen:
gpg --edit-key 0xB3B2A12C trust
Signatur prüfen: die Zweite
Und schon wird die Signatur ohne jedes Gemecker verifiziert:
start cmd: # gpg --verify KNOPPIX_V7.0.4CD-2012-08-20-DE.iso.sha1.asc gpg: Signatur vom Mi 22 Aug 2012 09:59:46 CEST gpg: mittels DSA-Schlüssel 0x57E37087 gpg: Korrekte Signatur von "Klaus Knopper <knopper@knopper.net>" gpg: alias "Klaus Knopper <info@knopper.net>" gpg: alias "Klaus Knopper <knoppix@knopper.net>"
Das sagt uns natürlich herzlich wenig darüber
wie sicher die Debian-Leute beim Zusammenstellen ihrer Distribution gearbeitet haben
wie fehlerfrei die Debian-Komponenten sind
wie sicher die Knoppix-Macher sich ihr Basis-Debian besorgen
wie sicher die Server der Debian- und Knoppix-Leute sind, auf denen sie die Software während der Erstellung der Distribution lagern
wie sicher der Signaturschlüssel von Klaus Knopper ist. Ist das etwa sein Alltagsschlüssel? :-S