Categories

HowTo: Digitale Signaturen mit GPG

No Gravatar

Oftmals, leider aber immer noch zu wenig, werden Dateien im Netz mit einer digitalen Signatur signiert. Was und wem diese Signatur etwas bringt widmet sich dieser Artikel.

Schon in frühen Zeitaltern hatte das Oberhaupt einer Organisation sein persönliches Wachssiegel. Diese dienten zur Beurkundung der Abstammung eines Schriftstückes. Die Authentizität einer Information sollte somit bestätigt werden.

Nicht ganz so Stilecht widmet sich das Gnu Privacy Guard Projekt als OpenSource Software dieser Anforderung.

Wo benötigen wir in der heutigen Zeit digitale Signaturen?

Das bekannteste Beispiel dürfte wohl die Kommunikation per E-Mail sein, bei der wir gerne wissen möchten ob die Information auch wirklich vom angegebenen Absender stammt oder ob der Kontext auf dem Transportweg verändert worden ist. Ein weiterer Fall sind allerdings auch Dateidownloads, zum Beispiel einer Software die wir gerne einsetzen möchten.

Um sicherzustellen das die gewünschte Software eines Anbieters nicht unwillentlich verändert worden ist, bietet GPG eine Verfahrensweise um Dateien mit einer digitalen Signatur zu versehen. Somit hat der Endbenutzer die Möglichkeit zu kontrollieren ob er das erhält was der Hersteller vorgesehen hat.

Eine solche Signatur lässt sich grundsätzlich für jede Datei egal ob Binär oder ASCII erstellen.

GPG kennt zum signieren drei verschiedene Wege.

Standard

Mittels:

gpg --sign <filename>

wird die angegebene Datei digital signiert und direkt in die binäre Signatur Datei kopiert. Inhalte werden hierbei direkt komprimiert.

Vorteil: Man erlangt eine einzelne Datei die sowohl Kontext als auch Signatur enthält.
Nachteil: Der Anwender ist hiermit gezwungen GPG zu verwenden um an den Kontext zu kommen.

Klartext Signaturen

Dieser Art Signaturen werden häufig im Usenet oder bei der E-Mail Kommunikation verwendet. Hierbei wird der ursprüngliche Text in eine ASCII Hülle verpackt.
So wird zum Beispiel mit dem Befehl ‘gpg –clearsign <filename>’ aus:

Hallo Welt,

dies ist eine GPG signierte Nachricht.

Gruß
DerVerfasser

Folgende text.txt.asc erzeugt:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hallo Welt,

dies ist eine GPG signierte Nachricht.

Gruß
DerVerfasser

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEARECAAYFAktB9McACgkQlI0PwfxLQjno1QCfXZP1pAUT/8Smrpsxlcx/VZBB
Wy4Ani27iRQESObFBI6jhG+a2NZOpLv/
=gl8q
-----END PGP SIGNATURE-----

Vorteil: Solange der signierte Kontext Klartext ist, kann man den Text einer Nachricht noch immer lesen, auch ohne Signaturprüfung.

Nachteil: Wessen E-Mail / News Client nicht direkt die PGP Header für die Nachricht und die Signatur kontrolliert wird mit diesem Text Overhead genervt.

Getrennte Signaturen

Für fast jeden Fall der GPG Signaturen bietet sich die Option der abgetrennten Signaturen. Hierbei bleibt die Originaldatei erhalten und man erhält eine Extra Datei die lediglich die Signatur dieser Datei beinhaltet. Verändert man die Datei wird die dazugehörige Signatur jedoch ungültig – genau das was wir erwarten.

Mittels:

gpg –detach-sign <filename>

erstellen wir eine solche Signatur.

check_sig.sh.sig check_sig.sh

Überprüfen der Signatur

Nachdem wir nun wissen, wie man mittels GPG Digitale Signaturen erstellt, möchte man ja nun auch erhaltene Signaturen auf Ihre Gültigkeit prüfen.

Alle Signaturen lassen sich mit dem Schalter “–verify” überprüfen.

Variante 1 – Signiert und Komprimiert. Standardverhalten bei “gpg –sign”:

gpg --verify check_sig.sh.gpg
gpg: Signatur am Mo 04 Jan 2010 14:56:49 CET mit DSA Schlüssel, ID FC4B4239, erfolgt
gpg: Korrekte Unterschrift von 'Hendrik Baecker <andurin@process-zero.de>'

Möchten wir jedoch auch an den Signierten Inhalt kommen:

gpg --decrypt check_sig.sh.gpg

Eine schnelle Änderung an der komprimierten Datei hat einen Kompressionsfehler zur Folge. Ohne es genauer Nachgestellt zu haben vermute ich die Checksumme des Kompressionsverfahrens kompromittiert zu haben. Theoretisch ist es möglich die Prüfsumme der Komprimierung zu unterlaufen, ob anschließend GPG anhand der nicht mehr passenden Signatur das entpacken verweigert kann ich aktuell nicht sagen.

Variante 2 – Klartext Signatur:

Verwenden wir den oben bereits gezeigten Testtext und lassen ebenfalls wieder das verify laufen:

gpg --verify <ENTER>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hallo Welt,

dies ist eine GPG signierte Nachricht.

Gruß
DerVerfasser

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEARECAAYFAktB9McACgkQlI0PwfxLQjno1QCfXZP1pAUT/8Smrpsxlcx/VZBB
Wy4Ani27iRQESObFBI6jhG+a2NZOpLv/
=gl8q
-----END PGP SIGNATURE-----

Erhalten wir erneut eine positive Rückmeldung von GPG:

gpg: Signatur am Mo 04 Jan 2010 15:01:43 CET mit DSA Schlüssel, ID FC4B4239, erfolgt
gpg: Korrekte Unterschrift von 'Hendrik Baecker <andurin@process-zero.de>'

Variante 3 – GPG mit abgetrennter Signaturdatei

Bei dieser weit verbreitenden Variante erhält der Benutzer die Signatur nebst Nutzdatei, die Signaturdatei hält dabei meist die Endung “.sig”.

Mittels “gpg –verify <filename>.sig <filename>” kann nun der Benutzer die Überprüfung vornehmen.

gpg --verify check_sig.sh.sig check_sig.sh
gpg: Signatur am Mo 04 Jan 2010 15:12:54 CET mit DSA Schlüssel, ID FC4B4239, erfolgt
gpg: Korrekte Unterschrift von 'Hendrik Baecker <andurin@process-zero.de>'

Fazit:

Wer sicher sein möchte, dass er die Inhalte erhalten hat, die der Absender vorgesehen hat sollte auf Digitale Signaturen zurückgreifen. Von der anderen Seite betrachtet zieht diese Form der Sicherheit nur dann an, wenn auch die Anbieter von Informationen ihre Werke entsprechend signieren.

Zahlreiche grafische Oberflächen, sowohl für Windows, MacOS und verschiedene andere *nix Derivate machen einem das Leben mit GPG einfacher als man glauben möchte.

Was bisher verschwiegen wurde ist die Tatsache, dass es bei GPG zunächst einmal keine zentrale Beglaubigungsinstanz gibt. Ein jeder GPG Nutzer kann sich selbst GPG Schlüssel erstellen und somit auch vorgeben jemand anderes zu sein.
Dieser Identitätskrise wird alsbald in einem eigenen Artikel behandelt.

No related posts.

Related posts brought to you by Yet Another Related Posts Plugin.

2 comments to HowTo: Digitale Signaturen mit GPG

  • Joerg

    —–BEGIN PGP MESSAGE—–
    Version: GnuPG v1.4.9 (Darwin)
    Comment: Use GnuPG with Firefox : http://getfiregpg.org (Version: 0.7.10)

    hQIOA6bw1zw+jgKLEAf+LuQ7bOodPiDlwdl25AVOwHJRkb7hYx8NRnrhycACD7Gp
    t9DeGn8gzk88v6UQMv2WRg3nLRhx8iyC2drHTng+N1LtAiqwqnzNqD79FsnY8yyS
    +MpAaqgvnXBXMlgE2qjXq9oIVFmowqQUhU0tCjIHGm+nvy1qjVAeXydtslf3lHd0
    VB7eCmuy3F6IuDAceepx+rIjYRpdvqgl14eTb5JtzTLWqv+vqTguY7EqOa2b27Sc
    seIyIJQuA+Sl5C9mr8KgMhHynSX/hHtxi4Vo0NCSOazSap/dzSB01QpXA4H+dHfl
    YfaoiHkEJtB8fjgl0o1hm11T4B84raHAStrGx0AcmQgAk/0L90imxlcr28xZ3e2/
    K58wNJ3X/GiqryoSdzcJk5/elaO6YIbG2/2s1ODRfg291ZBoYdyCpBPyElFOocvL
    SIyvDPdr3V4ij5KjoDaGQrUgTACRS7p43z7dTI7/28j/l4j0VYdk6Bhz8g5jKsOd
    McJV23Pq3KXsqweRxTj210d7vopPuXpt674+4xPZDJyiQnJ2MtWL69s9I4TUTKW0
    Am/yEx2rTLmcawTfmFWMx0lEttnmJ55kJR2RT9cZpSbMlmmfuwkmlZ+7IDM12iCT
    S8EDnQGPSpxI4DSFWKUC3/oxsLoT7R4V/TqOdgJcaXzw/EyXDaBf+PPAF3IO7eqC
    DtLA7gEm+TXRPbTjW8XxFDI2QHwh8pm8MBYKTs2758LjVzi/PJ0Z9oYzur6LfSrm
    ZczXN35mIzws6r6Ktgbx3kDwbaapi2yBwulMlU1xNk2w7fCJG20o/Hb+/Bv3Zlmi
    DjTeW6hUyRCxnAndAchBQwPevnVsJoUiuIMaqLl/e2uGGntT2/T8LwBLZXgL1jP9
    5VtwON2AZWLosVQW539kcEHdSs3Kd3EpN67oq6SYSdhwBS1uJGIisThhbsOzCuWB
    JW/sI9Btadkcwceb47v3vPqVOcbUxn97uL6nfvY2We59jydCR03qdwee4M6IlsIx
    A8kAofMsO9atMeLfcglGsumTCFrJtgBfMQWPFYFio+/eB2+5mScI9qyYE4FOHuPM
    tDoMWd+uU119bD4bjOhfmD4Aj+nAjKL7luMPbtkYV1/DsEBVsXpLlzSZ6FIulZDb
    AuQZDKt0ZrgTgFiTZe9HnZEmzzdokiRoB7fEOLVwgwcMWOjR1GatJm56yJKypbNi
    EfIeRc6p/O+A/HYb+3VMG2ZiZeXuwOUUDvgSEvRGz4P8YaWyPFtJidpx2ZRm0xdR
    GK8=
    =AyW7
    —–END PGP MESSAGE—–

    • Hallo Jörg,

      irgendwie hast du mich schon auf diese Idee gebracht. War aber auch mal längst überfällig den zwei-tausendsten Blogartikel über GPG zu schreiben.

      Hendrik