Eine digitale Unterschrift oder Signatur ist am ehesten mit einem Siegel zu vergleichen. Mit dem Siegel wird die Integrität eines Dokumentes bestätigt, das sich in einem Umschlag befindet, und ermöglicht, daß sich eine nachträgliche Manipulation feststellen läßt. Wenn das Dokument nachfolgend in irgendeiner Weise verändert wird, ergibt die Prüfung der Signatur ein negatives Ergebnis. Außerdem ermöglicht die Signatur eine zweifelsfreie Zuordnung des Absenders. Eine digitale Unterschrift kann so demselben Zweck wie eine handgeschriebene Unterschrift dienen mit dem zusätzlichen Vorteil, eine Handhabe gegen Verfälschung zu bieten. Die GnuPG-Quelltextdistribution ist z.B. so unterschrieben, daß die Benutzer nachprüfen können, daß der Quelltext nachträglich nicht verändert worden ist und auch wirklich vom GnuPG-Team stammt.
Die rechtliche Verbindlichkeit von digitalen Unterschriften ist von Land zu Land verschieden. In Deutschland ist das Signaturgesetz augenblicklich einer Novellierung unterworfen. Weitere Informationen und Quellenverweise finden Sie in Kapitel 4.
Bei der Erzeugung und Prüfung von Unterschriften benutzt man das öffentlich/geheime Schlüsselpaar anders als bei der Ver- und Entschlüsselung. Die Unterschrift wird hier mit dem geheimen Schlüssel des Unterzeichnenden erzeugt und dann jeweils mit dem entsprechenden öffentlichen Schlüssel geprüft. So würde beispielsweise Alice ihren geheimen Schlüssel benutzen, um ihren letzten Beitrag für eine Zeitschrift zu signieren. Der Redakteur, der Alices Artikel bearbeitet, benutzt dann ihren öffentlichen Schlüssel, um die Unterschrift zu prüfen und so sicherzustellen, daß der Beitrag wirklich von Alice selbst stammt und auch nicht nachträglich verändert worden ist.
Als Konsequenz aus der Verwendung digitaler Signaturen ergibt sich, daß sich kaum abstreiten läßt, daß man eine digitale Unterschrift geleistet hat, da dies ja bedeuten würde, daß der geheime Schlüssel kompromittiert wurde.
Die Kommandozeilen-Option --sign wird zum Erzeugen einer digitalen Unterschrift verwendet. Mit der Option --output legen Sie fest, in welche Datei das signierte Dokument geschrieben wird.
alice$ gpg --output doc.sig --sign doc Sie benötigen ein Mantra, um den geheimen Schlüssel zu entsperren. Benutzer: ``Alice (Rechtsanwältin) <[email protected]>'' 1024-bit DSA Schlüssel, 1024D/FB5797A9, erzeugt 2000-06-06 Geben Sie das Mantra ein:Das Dokument wird vor dem Unterschreiben komprimiert und die Ausgabe erfolgt im binären Format.
Haben Sie ein unterschriebenes Dokument erhalten, können Sie die Unterschrift prüfen, und zwar optional ohne oder mit Entnahme des unterschriebenen Originaldokumentes. Zur bloßen Überprüfung der Unterschrift benutzen Sie die Option --verify. Wenn Sie außerdem das unterzeichnete Dokument entnehmen wollen, verwenden Sie die Option --decrypt.
blake$ gpg --output doc --decrypt doc.sig gpg: Unterschrift vom Die 06 Jun 2000 17:19:52 CEST, DSA Schlüssel ID FB5797A9 gpg: Korrekte Unterschrift von ``Alice (Rechtsanwältin) <[email protected]>''
In Fällen, in denen es unerwünscht ist, das Dokument beim Unterschreiben zu komprimieren, benutzt man die Option --clearsign. Das bewirkt, daß eine in ASCII dargestellte Signatur das Dokument wie ein Briefumschlag umgibt, das Dokument an sich aber nicht verändert wird. Der Vorteil dieses Verfahrens ist, daß der Empfänger das Dokument auch ohne Prüfung der Signatur lesen kann.
alice$ gpg --clearsign doc Sie benötigen ein Mantra, um den geheimen Schlüssel zu entsperren. Benutzer: ``Alice (Rechtsanwältin) <[email protected]>'' 1024-Bit DSA Schlüssel, ID FB5797A9, erzeugt 2000-06-06 Geben Sie das Mantra ein:
GnuPG markiert dann im Klartext den Anfang des signierten Dokuments und hängt am Ende einen Block mit der eigentlichen OpenPGP-Signatur an.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hier steht irgend ein von GnuPG signierter Text [...] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.1 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE5Pf40WyoKbftXl6kRAsWJAJ4hj7FzPX8M9MWZav9u6yjbHXWGKwCfSiKA wTaJ/lfY1ETv3R/uJrtGTbI= =BDOH -----END PGP SIGNATURE-----
Der Nachteil bei signierten Dokumenten ist, daß der Empfänger das Originaldokument aus der unterschriebenen Version erst wiederherstellen muß bzw. bei einem im Klartext unterschriebenen Dokument dieses gegebenenfalls noch editieren muß. Deshalb gibt es als Drittes noch die Möglichkeit, Dokumente mit abgetrennter Unterschrift zu signieren. Dazu verwendet man die Option --detach-sig. Die Signatur wird dann in einer separaten Datei abgelegt. Das eigentliche Dokument bleibt unverändert.
alice$ gpg --output doc.sig --detach-sig doc Sie benötigen ein Mantra, um den geheimen Schlüssel zu entsperren. Benutzer: ``Alice (Rechtsanwältin) <[email protected]>'' 1024-Bit DSA Schlüssel, ID FB5797A9, erzeugt 2000-06-06 Geben Sie das Mantra ein:
Um die Signatur zu prüfen, benötigen Sie sowohl das eigentliche Dokument als auch die abgetrennte Unterschrift. Die Option --verify kann zum Prüfen der Signatur benutzt werden.
blake$ gpg --verify doc.sig doc gpg: Unterschrift vom Die 06 Jun 2000 17:34:43 CEST, DSA Schlüssel ID FB5797A9 gpg: Korrekte Unterschrift von ``Alice (Rechtsanwältin) <[email protected]>''