freeX: GnuPG für mehr Sicherheit
|
GNU Privacy Guard
| |
Mit der steigenden Verbreitung und Akzeptanz von elektronischen Medien bei der Archivierung und beim Datenaustausch wächst gleichzeitig auch der Bedarf nach starker Verschlüsselung und digitalen Unterschriften. Aufgrund der zunehmenden Überwachung durch staatliche Organisationen wird es zudem immer wichtiger, starke Verschlüsselung für die private und geschäftliche Korrespondenz zu verwenden, wenn man ungestört sein möchte. GnuPG bietet dazu die Grundlage durch die Umsetzung eines allgemein akzeptierten Standards für Verschlüsselung und die Möglichkeit, sensible Daten in öffentlichen und offenen Datennetzen zu verschicken.
|
|
1. Symmetrische Verschlüsselung |
Wichtige Dateien, die möglicherweise Paßwörter oder Kontoverbindungen enthalten, möchte man nicht immer im Klartext auf Festplatten oder anderen Datenträgern speichern. Insbesondere dann, wenn der Computer direkt oder indirekt ans weltweite Internet angeschlossen ist, muß man sich Gedanken über vertrauliche Daten machen. Es wird wird zwar nicht oft in Rechner eingebrochen, doch jeder Einbruch ist einer zuviel und der Schaden ist meistens nicht abschätzbar.
Wer Dokumente erstellt und im Internet zur Verfügung stellt, z.B. Gutachten oder Sicherheits-Hinweise, kommt irgendwann in die Lage, sie unterschreiben zu müssen, um so ihre Echtheit zu bestätigen. Ein Dokument darf manchmal nachträglich nicht mehr geändert werden bzw. anhand der Unterschrift müßte in einem solchen Fall sichtbar werden, daß Dokument und Unterschrift nicht mehr zueinander passen.
Die benutzten Algorithmen müssen zudem soweit frei und standardisiert sein, daß die zugehörigen Programme auf mehreren Betriebssystemen laufen. Verständlicherweise kann nicht davon ausgegangen werden, daß alle interessierten Personen das eine oder andere Unix-ähnliche System verwenden oder ein System aus Redmond. PGP und GnuPG bieten dieses und implementieren verschiedene Algorithmen für die Ver- und Entschlüsselung sowie Erzeugung und Überprüfung von digitalen Signaturen. Beide Programme sind nicht nur im Unix-Sektor zu finden, sondern stehen auch auf vielen anderen Betriebssystemen zur Verfügung.
GnuPG ist darüberhinaus Freie Software. Mit Unterstützung des Bundesministeriums für Wirtschaft und Technologie wurde eine grafische Oberfläche für das sonst kommandozeilengesteuerte Programm entwickelt. Der GNU Privacy Assistant (GPA) steht ebenfalls für mehrere Betriebssysteme zur Verfügung und bietet eine einfache Schnittstelle zu dieser Technologie. Dieser Artikel beschreibt die Grundlagen für den Umgang mit GnuPG. Nach dessen Lektüre sollte es kein Problem sein, GPA oder eines der weiteren Frontends anstelle der Kommandozeile zu verwenden.
Symmetrische Verschlüsselung
Diese Art der Verschlüsselung wurde bis vor mehreren Jahren fast durchgehend eingesetzt. Heutzutage ist sie jedoch in vielen Bereichen durch Asymmetrische oder Hybride Verschlüsselungsverfahren ersetzt worden. Bei der Symmetrischen Verschlüsselung werden zum Ver- und Entschlüsseln die gleichen digitalen Schlüssel verwendet. Daher müssen alle Personen im Besitz des gleichen digitalen Schlüssels sein, die an der Ver- und Entschlüsselung beteiligt sind. Diese Technik wurde bereits von der De-/Chiffriermaschine Enigma verwendet, was kürzlich publikumswirksam in Szene gesetzt wurde.
Für die Schlüsselverwaltung bedeutet dieses, daß für jede Gruppe, mit der man verschlüsselte Dokumente austauschen möchte, ein neuer Schlüssel über einen sicheren Kanal ausgehandelt und gespeichert werden muß. Jede Person, die es schafft, beim Aushandeln des Schlüssels diesen zu lesen, kann später die gesamte Kommunikation abhören.
Abbildung 1: Symmetrische Verschlüsselung
Der Nachteil dieses Verfahrens liegt somit darin, daß der Schlüssel unbedingt geheimgehalten, jedoch den Kommunikationspartnern zugänglich gemacht werden muß. Zudem muß für jede Personengruppe ein neuer Schlüssel ausgehandelt werden. Symmetrische Verschlüsselungsverfahren werden daher auch als Secret-Key-Verfahren bezeichnet. Aufgrund dieser Schwächen wurden andere Möglichkeiten gesucht.
Asymmetrische Verschlüsselung
Anders sieht es hingegen bei Asymmetrischen Verschlüsselungsverfahren aus. Hier besteht der Schlüssel immer aus zwei Teilen, einem öffentlichen, der zur Verschlüsselung benötigt wird, und einem zweiten, privaten, mit dem das Dokument entschlüsselt wird. Wegen der Aufteilung der Schlüsel wird diese Verfahren auch als Public-Key-Verfahren bezeichnet.
Wie die Bezeichnungen der Schlüssel bereits suggerieren, ist der öffentliche Schlüssel für die Öffentlichkeit bestimmt und darf jedem bekannt sein. Er sollte für jede interessierte Person leicht zugreifbar abgelegt werden. Der private Schlüssel hingegen muß weiterhin geheimgehalten werden. Das Problem des sicheren Kanals für den Austausch der Schlüssel existiert bei diesem Verfahren nicht mehr, da dem Kommunikationspartner nur der öffentliche Schlüssel zugänglich gemacht werden muß und das in der Öffentlichkeit geschehen darf bzw. soll.
Abbildung 2: Asymmetrische Verschlüsselung
Bezüglich ihrer Benutzung und Sicherheit werden solche Public-Key-Verfahren erheblich besser eingestuft. Allerdings ist der Rechenaufwand höher als bei Symmetrischen Verfahren, weswegen bei zeitkritischen Anwendungen (z.B. SSH-Verschlüsselung) Mischformen (Hybride Verfahren) mit Hilfe von sogenannten Session-Keys Einsatz finden.
Das hier vorgestellte Programm GnuPG unterstützt Asymmetrische Verschlüsselungsverfharen, weshalb es im GNU/Linux- und Unix-Bereich recht weit verbreitet ist. Wenn es vernünftig in das verwendete Mail-Programm integriert ist, lassen sich mit geringem Aufwand verschlüsselte Nachrichten verschicken und lesen. Mehr dazu im Artikel "Sichere Post mit Mutt". Doch zuerst die Grundlagen.
Digitale Signaturen
Mit steigender Vernetzung wird es immer wichtiger, daß Dokumente nicht nur auf Papier sondern auch digital unterschrieben werden können. Eine digitale Signatur muß wie eine tatächliche Unterschrift eindeutig einer Person zugeordnet werden können. Erst wenn die Authentizität der Unterschrift jederzeit überprüft werden kann, macht es Sinn, daß eine Person ein Dokument digital unterschreibt und zurückschickt bzw. im Internet veröffentlicht.
Eine digitale Signatur kann dabei am ehesten mit einem Siegel verglichen werden, der einen Umschlag versiegelt und somit die Echtheit des innenliegenden Dokuments bestätigt. Bei der digitalen Signatur kann der Umschlag entfallen, so daß das Dokument jederzeit gelesen werden kann, während dessen Echtheit ebenfalls jederzeit überprüft werden kann. Wird das Dokument in irgendeiner Weise modifiziert, paßt die Signatur nicht mehr und jeder funktionierende Test wird einen Fehler ausgeben.
GNU Privacy Guard
Das Programm »gpg« ersetzt das früher meistens verwendete Programm PGP vollständig und implementiert den Standard OpenPGP (RFC 2440), den derzeitigen de-facto-Standard im Internet, der ebenfalls von aktuellen Versionen von PGP unterstützt wird. Die Entwicklung wurde zudem vom Bundesministerium für Wirtschaft und Technologie gefördert.
GnuPG (GNU Privacy Guard) unterstützt die Verwaltung von Schlüsseln, das Ver- und Entschlüsseln sowie Signieren von Dokumenten. Es steht nicht nur für Unix-artige Systeme wie GNU/Linux oder FreeBSD zur Verfügung, sondern läuft auch auf proprietären Systemen wie Windows. Dort ist die Einbindung in bestehende Mail-Programme jedoch nicht so einfach, da der Quellcode nicht eingesehen werden kann und Schnittstellen kaum dokumentiert sind.
Im folgenden werden kurz die wichtigsten Funktionen von GnuPG beschrieben. Das Programm unterstützt jedoch erheblich mehr als die hier beschriebenen. Dem Leser seien daher als weiterführende Lektüre das GNU Privacy Handbook sowie die Manpage zu »gpg« ans Herz gelegt.
|
Das Paket ist in vielen GNU/Linux-Distributionen unter dem Namen »gpg« oder »gnupg« enthalten. Sollte es wider Erwarten nicht als fertiges Paket für das verwendete System bereitliegen, wird der Quellcode von ftp.gnupg.org geholt und selbst compiliert. Um in einem solchen Fall »gpg« in »/usr/local/bin« zu installieren wird nach dem Standard-Kochrezept vorgegangen:
Um die Authentizität des Pakets zu überprüfen bzw. zu gewährleisten, daß es genau das Paket ist, was die Autoren auf dem Server abgelegt haben, sollten Sie zudem die MD5-Checksumme des Tar-Archivs mit der auf der Homepage angegebenen überprüfen. Die Checksumme berechnen Sie mit dem Befehl »md5sum gnupg-1.0.6.tar.gz«. | |
| GnuPG selbst compilieren | |
Bevor es losgehen kann, muß das Verzeichnis »~/.gnupg« manuell erstellt werden. Das geschieht mit dem Befehl »mkdir ~/.gnupg« oder durch Aufruf des Programms »gpg«, das nur dieses Verzeichnis beim ersten Aufruf selbst anlegt und die Konfigurationsdatei »options« mit Voreinstellungen erzeugt. Mehr ist mit dem ersten Aufruf allerdings nicht möglich.
Anschließend wird mit dem Befehl
gpg --gen-key
ein eigenes Schlüsselpaar erzeugt. Wählen Sie die Voreinstellung DSA und ElGamal bei der Frage nach den zu verwendenden Algorithmen. Bei der Schlüssellänge sollten Sie ruhig 2048 statt 1024 Bits angeben. Die Sicherheit hängt von der Güte (und Länge) des Schlüssels ab.
Je größer die Länge des Schlüssels ist, desto länger dauert es, den Schlüssel zu erraten und damit zu knacken. Auch bei heutigen Rechnern dauert es noch recht lange, einen 1024 Bit langen Schlüssel systematisch zu erraten, doch mit steigender Arbeitsgeschwindigkeit der Prozessoren, billigeren Rechnern und Systemen, die sich leichter zusammenschalten lassen, und neueren Verfahren für die Faktorisierung von Zahlen, stellen sie bald kein ernstzunehmendes Hindernis mehr dar.
Als nächstes werden Sie von GnuPG gefragt, ob und wann der Schlüssel ablaufen soll. Für private Schlüsselpaar möchte man meistens einen Schlüssel haben, der immer gültig ist. Bei Schlüsseln, die für automatisch generierte Signaturen oder für Firmen verwendet werden, bietet es sich an, die Schlüssel nach einiger Zeit (z.B. 1 Jahr) auslaufen zu lassen und dann ein neues Paar zu erstellen.
Nachdem Sie Ihren Namen und Ihre E-Mail-Adresse eingegeben und die Angaben bestätigt haben, erstellt GnuPG ein neues Schlüsselpaar für Sie und speichert es im oben angelegten Verzeichnis. Wenn Sie dort nachsehen, finden sie dort zwei neue Dateien: »pubring.gpg« und »secring.gpg«. In diesen Dateien werden die öffentlichen und die privaten Schlüssel gespeichert, jeweils in einer eigenen Datei.
Revocation-Certificate
Für den Fall, daß Ihr privater Schlüssel jemandem in die Hände fällt oder jemand unerlaubt Zugang zu Ihrem Rechner erlangt hat, oder falls Sie das Mantra (bzw. Paßwort) vergessen haben, mit dem der private Schlüssel geschützt ist, oder Ihnen der private Schlüssel abhanden gekommen ist, sollten Sie ein besonderes Zertifikat erzeugen, mit dem Sie den Schlüssel jederzeit für ungültig erklären können. Das geschieht mit dem folgenden Befehl:
gpg --gen-revoke mail-adresse
Dieses Zertifikat sollte auf Diskette oder CD kopiert und ausgedruckt werden. Diese sollten anschließend an einem sicheren Ort aufbewahrt werden, damit sie selbst nach einem Plattencrash den Schlüssel noch für ungültig erklären können. Schlimmstenfalls müssen Sie das Zertifikat Zeichen für Zeichen abtippen.
Schlüssel weitergeben
Von nun an können Sie Dokumente ver- und entschlüsseln sowie signieren und digitale Unterschriften überprüfen. Bevor Sie jedoch ein verschlüsseltes Dokument entschlüsseln und lesen können, muß es jemand für Sie verschlüsseln. Da es sich um ein Public-Key-Verfahren handelt, wird mit Ihrem öffentlichen Schlüssel verschlüsselt, dieser muß daher bekannt sein.
Der Schlüssel muß zumindest den Kommunikationspartnern zugänglich gemacht werden. Die binäre Datei »pubring.gpg« zu verschicken, ist nur mäßig sinnvoll, denn nach einiger Zeit enthält sie mehr als nur den eigenen Schlüssel, sondern viele weitere öffentliche Schlüssel anderer Personen. GnuPG sieht daher eine Möglichkeit vor, einzelne Schlüssel zu exportieren, so daß sie anschließend verschickt oder zum Download bereitgelegt werden können.
Normalerweise wird eine Textdatei mit dem Schlüssel erzeugt, die per Mail verschickt wird. Diese wird mit dem folgenden Befehl erzeugt:
gpg -a --export mail-adresse> keyfile
Ohne »-a« würde GnuPG eine Binärdatei erzeugen. Die so erzeugte Datei wird dem Kommunikationspartner geschickt, der den Schlüssel in sein System einbindet und den zu versendenden Text damit verschlüsselt.
Schlüssel hinzufügen
Auf der anderen Seite wird der Schlüsel nicht exportiert sondern importiert und in das lokale Schlüsselbund (engl. "key ring") aufgenommen. Sie haben natürlich von Ihrem Partner wie oben beschrieben eine Datei mit seinem öffentlichen Schlüssel empfangen, damit auch Sie Texte verschlüsseln können, die Sie verschicken möchten. Wenn der Schlüssel bereits als Datei vorliegt, importieren Sie ihn einfach mit diesem Befehl:
gpg --import datei
Keyserver
Auf diese Weise ist es jedoch relativ aufwendig, den eigenen öffentlichen Schlüssel unter das Volk zu bringen. So müßte immer noch jedem Kommunikationspartner separat der öffentliche Schlüssel zugeschickt werden. Das kann man jedoch auch einfacher haben. Für die Verwaltung von öffentlichen Schlüsseln werden seit mehreren Jahren spezielle Server (sogenannte Keyserver) betrieben, die Schlüssel annehmen und wieder herausgeben, sowie eine Suche nach Adressen und Schlüsseln erlauben. Sie sind untereinander vernetzt und synchronisieren ihre Schlüsselmengen sogar gegenseitig.
GnuPG kann öffentliche Schlüssel selbst von einem Keyserver herunterladen und sie auch selbst hochladen. Dazu dient der Parameter »--keyserver server« sowie die Befehle »--send-key key« und »--recv-key key«. Um einen passenden Keyserver herauszufinden, schlägt die Dokumentation folgenden Befehl vor:
host -l pgp.net | grep wwwkeys
Für Deutschland kann z.B. der vom DFN-CERT betriebene Rechner wwwkeys.de.pgp.net verwendet werden. Um einen Schlüssel vom Server herunterzuladen, wird dessen Key-ID benötigt, das ist eine 8-stellige Hexadezimalzahl. Sie wird angezeigt, wenn GnuPG den Schlüssel benötigt, jedoch nicht findet. Für den umgekehrten Weg, um den eigenen Schlüssel auf den Server zu kopieren, wird die Key-ID ebenfalls benötigt. Sie wird jedoch leicht mit dem Befehl
gpg --list-keys
herausgefunden. Die ID wird nach der Länge des Schlüsels angezeigt. Ihr muß jedoch bei der weiteren Verwendung »0x« vorangestellt werden. Um einen Schlüssel vom Server herunterzuladen, wird
gpg --keyserver wwwkeys.de.pgp.net --recv-key 0xDEADBEAF
und zum Hochladen
gpg --keyserver wwwkeys.de.pgp.net --send-key 0xDEADBEAF
verwendet.
Vertrauensnetzwerk
Digitale Schlüssel können jetzt aufgenommen und verschickt werden. Doch wer garantiert, daß der Schlüssel auch tatsächlich zu der Person gehört, dessen Name auf dem Schlüssel angegeben ist? Wer kann mir garantieren, daß die Mail, die den Schlüssel enthielt von genau dieser Person stammt und sich nicht jemand anderes als diese Person ausgegeben hat, um vertrauliche Informationen zu erhalten?
Wenn man den Partner persönlich getroffen und den Schlüssel ausgetauscht hat, kann man sich relativ sicher sein. Wenn er sich jedoch in einem anderen Land befindet und daher ein persönliches Treffen kaum möglich ist, wird es problematisch. Das ist üblicherweise bei der Entwicklung Freier Software der Fall: die verschiedenen Entwickler oder Helfer befinden sich in verschiedenen Kontinenten, ohne Chance sich in absehbarer Zeit persönlich zu treffen.
Außerhalb von Rechnern ist eine reine Unterschrift ohne weiteres auch nicht viel wert. Bei einer Kontoeröffnung wird normalerweise direkt vor Ort unterschrieben und die Unterschrift wird mit der auf dem Personalausweis verglichen. Für verschiedene Verträge muß die Unterschrift notariell beglaubigt und somit erneut mit der auf dem Personalausweis verglichen werden. Es gibt also im normalen Leben mehrere Zertifizierungs-Einrichtungen.
Abbildung 3: Ein kleines Vertrauensnetzwerk
Im digitalen Zeitalter sieht es nicht anders aus, eine Zertifizierungs-Einrichtung (engl. "certification authority", CA) kann einen digitalen Schlüssel (mit dem auch digital unterschrieben werden kann) bestätigen. Meistens jedoch verläßt man sich auf Bekannte, die sowohl die Person getroffen als auch den Schlüssel unterschrieben haben.
Auf diese Weise entsteht ein ganz besonderes Netzwerk an Vertrauensbekundungen. Je mehr Personen jemand getroffen hat, die anschließend die Authentizität eines Schlüssels bestätigt haben, desto größer ist die Wahrscheinlichkeit, daß so ein Weg von einem selbst zu dieser Person gefunden werden kann, oder daß sich eine allgemein vertrauenswürdige Person darunter befindet.
Das aus diesen Verpflechtungen entstandene Netz wird "Web of Trust" (Vertrauensnetzwerk) genannt. Vereinfacht kann man es so beschreiben: Anna kennt Felix und bestätigt das auf dem Schlüssel, Torsten kennt Anna und bestätigt auch das. Jeder der nun Torsten kennt und ihm vertraut und den Leuten vertraut, die er kennt, kann relativ sicher sein, daß der Schlüssel von Felix auch zu Felix gehört.
Die Signaturen auf den Schlüsseln lassen sich zudem leicht überprüfen, denn zum Verifizieren werden lediglich die öffentlichen Schlüssel benötigt, die sich auf den bereits erwähnten Keyservern befinden. GnuPG kann alle Unterschriften anzeigen, die einen Schlüssel unterschrieben haben. Wenn die Schlüssel selbst ebenfalls vorhanden sind, schreibt GnuPG sogar den Namen des Besitzers daneben. Der Befehl dazu lautet
gpg --list-sigs mail-adresse
Schlüssel signieren
Wer hin und wieder Texte oder Mails signieren möchte, sollte auch dafür sorgen, daß sein eigener Schlüssel vertrauenswürdig ist und ihn im weltweiten Web of Trust plazieren. Vertrauenswürdig ist er jedoch nur dann, wenn nachvollzogen werden kann, daß er zu der jeweiligen Person gehört. Dazu werden die oben angesprochenen Unterschriften auf dem Schlüssel benötigt. Meistens unterschreiben beide Personen, die sich gegenseitig überprüft haben, den Schlüssel der jeweils anderen Person. Das geschieht mit
gpg --sign-key keyid
bzw.
gpg --edit-key keyid
Bevor Sie jedoch den Schlüssel tatsächlich signieren können, werden Sie gefragt, ob der Fingerabdruck (engl. "fingerprint") des Schlüssels paßt. Den müssen Sie unbedingt überprüfen. Diesen sollten Sie ausgedruckt von den Leuten erhalten haben, dessen Schlüssel Sie unterschreiben. Wenn Sie den Schlüssel nicht anhand des Fingerprints verifizieren können, unterschreiben Sie ihn nicht.
Den signierten Schlüssel schicken Sie dem Besitzer per Mail oder laden ihn auf den nächsten Keyserver. Viele Leute bevorzugen es übrigens, daß ihnen der unterschriebene Schlüssel persönlich per Mail geschickt wird und er nicht automatisch auf Keyserver hochgeladen wird.
Wenn jemand anderes Ihren Schlüssel unterschreiben soll, geben Sie ihm den Fingerabdruck und weisen sich ihm gegenüber aus. Den Fingerabdruck erzeugt GnuPG selbst:
gpg --fingerprint mail-adresse
Diesen drucken Sie am besten auf Papier aus und nehmen ihn auf die Veranstaltungen mit, auf denen Schlüssel signiert werden (LUG-Treffen, CeBIT, LinuxTag, Systems etc.)
Die Signaturen unter einem öffentlichen Schlüssel können Sie sich natürlich auch anzeigen lassen. Für diesen Zweck ist der Parameter »--list-sigs key« vorgesehen. Wenn kein spezieller Schlüssel angegeben wird, listet GnuPG alle Signaturen zu allen Schlüsseln auf, die sich im Schlüsselbund befinden.
Dateien Ver- und Entschlüsseln
Zum Verschlüsseln wird der Parameter »-e« verwendet. Wenn eine Textdatei erzeugt werden soll, muß zusätzlich »-a« angegeben werden (siehe oben). Beide Optionen dürfen auch zusammengesetzt werden, so daß man »-ea« erhält. Der Schlüssel, mit dem Verschlüsselt werden soll, wird mit »-r key« angegeben. Als letzten Parameter erwartet GnuPG den Namen der Datei, die verschlüsselt werden soll. Zusammen ergibt das z.B. folgendende Kommandozeile:
gpg -ea -r joey datei
GnuPG legt dann die Datei »datei.gpg« an, wenn es keine Textdatei sein soll, bzw. »datei.asc«, wenn »-a« angegeben wurde. Bei dieser Befehlszeile wird angenommen, daß es nur einen einzigen Schlüssel gibt, der die Zeichenkette »joey« enthält. Gegebenenfalls muß stattdessen die gesamte Mail-Adresse oder die Key-ID angegeben werden.
Eine so verschlüsselte Datei kann nur noch vom Empfänger entschlüsselt werden. Wenn versucht wird, die Datei mit
gpg datei.asc
zu entschlüsseln, kommentiert GnuPG das mit dem Hinweis, welcher Schlüssel zum Dekodieren benötigt wird. Falls dieser jedoch vorhanden ist, fragt GnuPG nach dem Mantra, um den privaten Schlüssel zu lesen, und packt die Datei aus.
GnuPG wartet noch mit einer besonderen Eigenschaft auf. Das Programm kann "on-the-fly" verschlüsseln, ohne daß mit temporären Dateien gearbeitet werden muß. Was von der Standardeingabe gelesen wird, wird auf der Standardausgabe verschlüsselt ausgegeben. Wer möchte, probiert es mit der folgenden Kommandozeile aus:
echo "Geheimer Text" | gpg -ea -r joey
Der Parameter »-r« darf übrigens mehrfach angegeben werden, was dann sinnvoll ist, wenn mehrere Personen in der Lage sein sollen, den geheimen Text zu lesen. In dem Fall wird der Text einfach mehrfach verschlüsselt zu einem Block zusammengesetzt.
Wenn die so verschickten Dokumente archiviert werden, ist es unter Umständen sinnvoll, sie zusätzlich mit dem eigenen Schlüssel zu verschlüsseln, damit man später nachvollziehen kann, was man denn damals herumgeschickt hat. Für einen solchen Fall hat GnuPG auch schon vorgesorgt, denn mit dem Parameter »--encrypt-to key« kann ein weiterer Schlüssel angegeben werden, mit dem ebenfalls verschlüsselt wird.
Wenn es gewünscht wird, daß alle verschlüsselten Dokumente zusätzlich mit dem eigenen Schlüssel verschlüsselt werden, wird dieses direkt in der Konfigurationsdatei eingetragen. Sie müssen lediglich die Key-ID Ihres eigenen Schlüssels herausfinden (s.o.) und in der Datei »~/.gnupg/options« als Parameter hinter das Schlüsselwort »encrypt-to« schreiben, ungefähr so:
encrypt-to 0xDEADBEAF
Signieren von Dokumenten
Um die Echtheit von Dokumenten zu gewährleisten, werden sie mit dem eigenen privaten Schlüssel unterschrieben. Die Überprüfung findet anschließend mit dem öffentlichen Schlüssel statt. So kann nur eine Person tatsächlich signieren, die Signatur jedoch von beliebigen Personen überprüft werden, die Zugang zum öffentlichen Schlüssel haben. Ein weiterer Grund, den eigenen öffentlichen Schlüssel auf Schlüssel-Servern zu deponieren.
Signiert wird mit dem Parameter »-s«, der wie bisher auch mit »-a« kombiniert werden kann, um haltbare ASCII-Unterschriften zu erhalten. Als weiterer Parameter wird die Datei angegeben, dessen Echtheit mit der Unterschrift bestätigt werden soll. GnuPG hängt anschließend an den Dateinamen ».gpg« oder ».asc« an, abhängig davon, ob eine ASCII-Unterschrift erzeugt werden soll oder nicht. Vor dem tatsächlichen Unterschreiben muß das Mantra eingegeben werden, mit dem der private Schlüssel gesichert ist.
Wie schon beim Verschlüsseln, unterstützt GnuPG beim Signieren auch Eingaben, die von der Standardeingabe gelesen werden. In dem Fall wird ebenfalls auf die Standardausgabe geschrieben.
Bei dieser Methode enthält die Signatur zusätzlich das eigentliche Dokument. Das ist dann sinnvoll, wenn nur die neu erzeugte Datei weiterverarbeitet wird. Der ursprüngliche Inhalt ist jedoch nicht mehr im Klartext vorhanden und kann nur mit GnuPG selbst wieder extrahiert werden. Dazu wird einfach »gpg datei.asc« aufgerufen. GnuPG überprüft die Signatur und packt die enthaltene Datei aus, wenn sie nicht bereits existiert.
Wenn das nicht gewünscht wird, kann auch eine einfache Signatur erzeugt werden, die nur die Unterschrift enthält. Das geschieht mit dem Parameter »-b« bzw. »--detach-sign«, der wiederum mit »-a« kombiniert werden kann. In diesem Fall müssen unbedingt beide Dateien zusammen veröffentlicht werden.
Oftmals wird es jedoch gewünscht, daß nur eine einzige Textdatei verwendet wird und der ursprüngliche Text weiterhin im Klartext zu lesen ist. Das läßt sich mit den bisherigen Parametern nicht erreichen, jedoch bietet GnuPG dafür »--clearsign«. Eine Solche Datei könnte z.B. per Mail verschickt und automatisch überprüft werden. So werden z.B. Sicherheitsgutachten von Debian oder anderen Distributionen veröffentlicht.
Überprüfen von Signaturen
Für das Überprüfen von digitalen Signaturen stellt GnuPG den Befehl »--verify« zur Verfügung. Dieser überprüft nur die Korrektheit der Schlüssel auf einer Datei und packt den Inhalt nicht aus. Ob die Unterschrift paßt oder nicht, wird auf der Standardausgabe geschrieben. Wenn die Signatur zum Text und zum Schlüssel passen, schreibt GnuPG »Good signature from«, was leicht weiterverarbeitet werden kann.
Wenn die Datei gleichzeitig ausgepackt und als separate Datei gespeichert werden soll, wird der Parameter »--verify« weggelassen. GnuPG berichtet auch dann weiterhin, ob die Signatur paßt oder nicht.
Resources
- GnuPG-Homepage
- The GNU Privacy Handbook
- The GNU Privacy Assistant
- Frontends für GnuPG
- Ver- und Entschlüsselung mit der Enigma
- Sicherheitskonzepte beim Elektronischen Bezahlen, Alexander Lauert
- Sichere Mails mit GnuPG, Marcus Brinkmann, freeX 3/2001, S. 28ff.
- RFC 2440, OpenPGP Message Format
- Circuits for Integer Factorization, Daniel J. Bernstein
- Graphing the Debian Keyring Web of Trust