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

—–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