zur Startseitezur "erste Hilfe"-Startseite

Integrität des Bootmediums

Auf dieser Seite ist beschrieben, wie man prüft, ob der Schlüssel von einem nicht manipulierten Knoppix erzeugt wurde.

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

  2. Hashdatei und Signaturdatei besorgen

    Wenn man Knoppix runterlädt, werden einem u.a. diese Dateien angeboten:

    1. KNOPPIX_V7.0.4CD-2012-08-20-DE.iso

    2. KNOPPIX_V7.0.4CD-2012-08-20-DE.iso.sha1

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

  3. 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:

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

  5. 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
  6. 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
  7. ...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)

  8. Zertifizierungsvertrauen festlegen

    Dann muss man noch das Zertifizierungsvertrauen des Heise-Schlüssels auf vollständig setzen:

    gpg --edit-key 0xB3B2A12C trust

  9. 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>"

advocatus diaboli

Das sagt uns natürlich herzlich wenig darüber