Grundlagen
intro$Name: $$Id: $$Revision: 1.2.2.9 $$Source: $intro
Dieses Kapitel führt in die wesentlichen Funktionen des GNU Privacy
Guard ein. Hier lernen Sie, wie man Schlüsselpaare erzeugt, Schlüssel
austauscht und überprüft, Dokumente verschlüsselt, entschlüsselt und
durch digitale Unterschriften authentifiziert.
Wie bereits in Kapitel concepts erwähnt, bedient sich
[gnupg] eines Public-Key-Verfahrens, um eine sichere Kommunikation zu
gewährleisten. In einem solchen System hat jeder Benutzer ein
Schlüsselpaar, bestehend aus einem geheimen Schlüssel und einem
öffentlichen Schlüssel. Der geheime Schlüssel darf unter keinen
Umständen jemand anderem zugänglich sein. Den öffentlichen Schlüssel
sollte man für jeden, mit dem man kommunizieren möchte, zugänglich
machen.
[gnupg] benutzt ein erweitertes Schema, bei dem jeder Benutzer
jeweils ein primäres Schlüsselpaar hat und optional weitere
untergeordnete Schlüsselpaare haben kann. Das primäre und das
untergeordnete Schlüsselpaar werden gebündelt, um die
Schlüsselverwaltung zu erleichtern; das Bündel kann vereinfacht
als ein Schlüsselpaar betrachtet werden.
Erzeugen eines neuen Schlüsselpaares
Damit Sie GnuPG zum Verschlüsseln, Entschlüsseln oder Signieren
einsetzen können, benötigen Sie ein Schlüsselpaar, das aus einem
geheimen und einem öffentlichen Schlüssel besteht.
Mit der Kommandozeilen-Option
--gen-key
können Sie ein neues primäres Schlüsselpaar erzeugen:
gpg --gen-key
Mit [gnupg] können Sie verschiedene Typen von Schlüsselpaaren
erzeugen, doch muß der primäre Schlüssel Unterschriften liefern
können. Es gibt daher nur drei Optionen. Option 1 erzeugt wirklich
zwei Schlüsselpaare, nämlich ein DSA-Schlüsselpaar, das nur zum Unterschreiben
geeignet ist, und außerdem noch ein untergeordnetes ElGamal-Schlüsselpaar für
die Verschlüsselung. Option 2 erzeugt nur das DSA-Schlüsselpaar.
Option 4
[footnote]Mit der Option 3 läßt sich ein
ElGamal-Schlüsselpaar erzeugen, mit dem Sie keine Unterschriften
leisten können.[/footnote]
erzeugt ein einzelnes
ElGamal-Schlüsselpaar, das sowohl zum Unterzeichnen als auch zum
Verschlüsseln verwendbar ist. In allen Fällen ist es möglich, später
noch weitere Unterschlüssel für die Verschlüsselung und Unterzeichnung
hinzuzufügen. In der Regel sollten Sie hier die Standardoption
auswählen.
Als nächstes wählen Sie die Schlüsselgröße. Bei einem
DSA-Schlüssel muß diese zwischen 512 und 1024 Bits liegen, ein
ElGamal-Schlüssel dagegen kann - zumindest theoretisch - eine beliebige
Größe haben. Der [gnupg] erfordert es allerdings, daß die Schlüssel
nicht kleiner als 768 Bits sind. Wenn Option 1 mit einer
Schlüsselgröße von mehr als 1024 Bit gewählt wurde, hat der ElGamal-Schlüssel
die verlangte Größe, doch der DSA-Schlüssel wird maximal 1024 Bits
haben.
Je größer der Schlüssel ist, desto sicherer ist er gegen
Brute-Force-Angriffe, doch sollte für die meisten Zwecke die
Standard-Schlüsselgröße ausreichend sein, da es einfacher wäre, die
Verschlüsselung zu umgehen, als sie zu knacken. Außerdem wird mit
zunehmender Schlüsselgröße die Ver- und Entschlüsselung langsamer, und
auch die Unterschrift wird länger. Einmal festgelegt, kann die
Schlüsselgröße nicht nachträglich geändert werden.
Schließlich müssen Sie noch ein Verfallsdatum wählen.
Wenn Option 1 gewählt wurde, gilt dieses Verfallsdatum sowohl
für die ElGamal- als auch die DSA-Schlüsselpaare.
Für die meisten Fälle reicht ein Schlüssel ohne Verfallsdatum
völlig aus. Allerdings sollte man das Verfallsdatum immer sorgfältig
auswählen; denn, obwohl es sich auch noch nachträglich ändern läßt,
kann es umständlich sein, das geänderte Verfallsdatum allen Ihren
Kommunikationspartnern mitzuteilen.
Im nächsten Schritt müssen Sie eine Benutzer-ID
(Benutzer-Kennung) angeben. Das dient dazu, den soeben erzeugten
Schlüssel einer realen Person zuzuordnen.
Es wird zunächst nur eine Benutzer-ID erzeugt, doch können Sie
später weitere Benutzer-IDs hinzufügen, wenn Sie den Schlüssel in
verschiedenen Situationen benutzen wollen, also beispielsweise bei der Arbeit
in Ihrer Firma oder für Ihre politische Arbeit.
Die Benutzer-ID sollten Sie mit aller Sorgfalt wählen,
da Sie sie später nicht mehr ändern können.
Damit Ihr geheimer Schlüssel nicht von anderen mißbraucht werden
kann, wird er von GnuPG mit einem symmetrischen Verfahren
verschlüsselt. Dazu geben Sie ein sogenanntes [ldquo]Mantra[rdquo]
(einen Paßwort-Satz) ein, das Sie wiederum jedesmal benötigen, wenn
Sie auf Ihren geheimen Schlüssel zugreifen.
Die Länge des Mantra ist theoretisch unbegrenzt. Sie sollten es
mit Sorgfalt auswählen. Unter dem Gesichtspunkt der Sicherheit
ist das Mantra einer der schwächsten Punkte im [gnupg] (wie auch in
anderen Verschlüsselungssystemen mit öffentlichen Schlüsseln), da es
Ihr einziger Schutz ist, falls jemand in den Besitz Ihres privaten
Schlüssels kommt.
Man sollte für das Mantra keine Wörter aus einem Wörterbuch oder Lexikon
nehmen und nicht nur die Buchstaben des Alphabets, sondern auch
Sonderzeichen verwenden. Je länger das Mantra ist, desto sicherer
ist es, aber andererseits sollten Sie sich das Mantra
auch gut merken können; nichts ist fataler als das Mantra auf einem
Zettel oder in einer Datei zu notieren. Ein gut gewähltes Mantra ist
entscheidend für Ihre Datensicherheit.
Es ist beispielsweise keine gute Idee, einen bekannten Ausspruch oder
ein Zitat einer bekannten Persönlichkeit als Mantra zu nehmen. Das
würde die Chance erhöhen, das Mantra zu erraten: ein Angreifer könnte
einfach den Computer eine Zitatenliste durchprobieren lassen. Am
besten denkt man sich einen unsinnigen Satz wie z.B: [ldquo]Die Currywurst
schmeckt nach Zimt und Zucker[rdquo] oder [ldquo]Helmut Kohl ist bekanntermaßen
Vegetarier[rdquo] aus. Ihrer Phantasie sind hierbei keine Grenzen
gesetzt. Wenn Sie auch noch ein paar Rechtschreibfehler und
Sonderzeichen einbauen, ist ein Wörterbuchangriff praktisch unmöglich:
[ldquo]Dat Körriwurst schmöckt nach #imt und #ucker[rdquo]. Benutzen Sie
auch auf keinen Fall eines der soeben aufgeführten Beispiele!!.
Erzeugen einer Widerrufurkunde
Nach dem Erzeugen Ihres Schlüsselpaars sollten Sie sofort mit der
Option --gen-revoke
eine Widerrufurkunde für Ihre Schlüssel erzeugen.
Wenn Sie Ihr Mantra vergessen oder wenn Ihr privater Schlüssel
kompromittiert oder verloren gegangen ist, können Sie mit dieser
Widerrufurkunde andere davon in Kenntnis setzen, daß der
dazugehörige öffentliche Schlüssel nicht mehr benutzt werden sollte. Ein
zurückgerufener öffentlicher Schlüssel kann noch benutzt werden, um
Unterschriften zu prüfen, die Sie vor dem Widerruf
abgegeben haben, er kann jedoch nicht benutzt werden, um künftige
Mitteilungen an Sie zu verschlüsseln. Vorausgesetzt, Sie haben noch
Zugang zu Ihrem widerrufenen geheimen Schlüssel, so können Sie
selbstverständlich noch Daten entschlüsseln, die vor dem Widerruf für
Sie verschlüsselt worden sind.
gpg --output revoke.asc --gen-revoke mykey
wobei mykey entweder die Schlüssel-ID Ihres
ersten Schlüsselpaares oder irgendein Teil einer dazugehörigen Benutzer-ID ist.
Die erzeugte Widerrufurkunde wird in die Datei
revoke.asc, bzw., wenn man die Option
--output wegläßt, auf
die Standard-Ausgabe geschrieben. Da die Widerrufurkunde kurz ist, ist
es kein Problem, eine ausgedruckte Kopie der Widerrufurkunde irgendwo
sicher aufzubewahren, z.B. in Ihrem Bankschließfach. Die
Widerrufurkunde sollten Sie aber auf keinen Fall an Stellen
aufbewahren, zu denen andere Personen Zugang haben, da im Prinzip jeder
die Widerrufurkunde veröffentlichen und so den entsprechenden
Schlüssel nutzlos machen könnte.
Austauschen von Schlüsseln
Um mit anderen zu kommunizieren, müssen Sie untereinander Ihre
öffentlichen Schlüssel austauschen. Zum Auflisten der Schlüssel
in Ihrem öffentlichen Schlüsselbund verwenden Sie die
Befehlszeilen-Option
--list-keys.
gpg --list-keys
Exportieren eines öffentlichen Schlüssels
Um jemandem Ihren öffentlichen Schlüssel zu schicken, müssen Sie
diesen zunächst exportieren. Hierzu benutzt man die Kommandozeilen-Option
--export.
Zur Indentifikation des zu exportierenden öffentlichen Schlüssels dient
entweder die Schlüssel-ID oder irgendein Teil der Benutzer-ID.
gpg --output alice.gpg --export alice@cyb.org
Der Schlüssel wird in einem binären Format exportiert, doch kann dies
unerwünscht sein, wenn Sie den Schlüssel per E-Mail verschicken oder auf
einer WWW-Seite veröffentlichen wollen. GnuPG unterstützt daher
die Kommandozeilen-Option --armor
[footnote]Viele
Kommandozeilen-Optionen, die häufig benutzt werden, können auch in
einer Konfigurationsdatei definiert
werden.[/footnote]
die bewirkt, daß der Output im ASCII-Format
ausgegeben wird. (Im Allgemeinen kann jeder Output von GnuPG -
beispielsweise Schlüssel, verschlüsselte Dokumente oder Unterschriften
- im ASCII-Format dargestellt werden, indem man die
--armor-Option hinzufügt.)
gpg --armor --export alice@cyb.org
Importieren eines öffentlichen Schlüssels
Ein öffentlicher Schlüssel kann zu Ihrem öffentlichen Schlüsselbund
hinzugefügt werden, und zwar mit folgender Option:
--importgpg --import blake.gpggpg --list-keys
Wenn ein Schlüssel einmal importiert ist, sollte er auf Authentizität
überprüft werden. [gnupg] arbeitet mit einem wirksamen und flexiblen
Vertrauensmodell, bei dem Sie nicht jeden Schlüssel persönlich zu
authentifizieren brauchen, den Sie importieren. Einige Schlüssel
können dies jedoch erfordern. Ein Schlüssel wird dadurch
authentifiziert, daß Sie den Fingerabdruck des Schlüssels überpüfen
und dann den Schlüssel unterschreiben, um seine Gültigkeit zu
bestätigen. Der Fingerabdruck eines Schlüssels kann schnell mit der
Befehlszeilen-Option
--fingerprint
geprüft werden, um aber den Schlüssel zu bestätigen, müssen Sie ihn
editieren.
gpg --edit-key blake@cyb.orgfpr
Um den Fingerabdruck zu überprüfen, müssen Sie den Eigentümer des
Schlüssels kontaktieren und die Fingerabdrücke vergleichen. Sie können
persönlich oder per Telefon mit ihm sprechen oder auf beliebigem
anderen Wege kommunizieren, solange nur garantiert ist, daß es sich um
den rechtmäßigen Eigentümer handelt. Stimmen beide Fingerabdrücke
überein, dann können Sie sicher sein, daß Sie eine echte Kopie des
öffentlichen Schlüssels haben.
Nach dem Prüfen des Fingerabdrucks können Sie den Schlüssel
unterschreiben, um ihn zu authentifizieren. Da die Schlüsselüberprüfung
ein Schwachpunkt in der Kryptographie mit öffentlichem Schlüssel ist,
sollten Sie äußerste Sorgfalt walten lassen und
den Fingerabdruck eines Schlüssels immer
gemeinsam mit dem Eigentümer prüfen, bevor Sie den Schlüssel
unterschreiben.
sign
Sie können sich jederzeit vergewissern, welche Unterschrift Sie
hinzugefügt haben. Jede Benutzer-ID auf dem Schlüssel hat dann sowohl
eine oder mehrere Eigenbeglaubigungen als auch eine Unterschrift von
jedem Benutzer, der den Schlüssel authentifiziert hat.
check
Ver- und Entschlüsseln von Dokumenten
Der öffentliche und der geheime Schlüssel haben jeweils eine spezifische
Aufgabe beim Ver- und Entschlüsseln von Dokumenten. Das Public-Key-Verfahren
kann man sich wie einen offenen Safe vorstellen. Wenn jemand
ein Dokument unter Benutzung eines öffentlichen Schlüssels
verschlüsselt, wird dieses Dokument in den Safe gelegt, der Safe
geschlossen und das Kombinationsschloß mehrmals verdreht. Der
entsprechende geheime Schlüssel ist die Kombination, mit der man den
Safe wieder öffnen und das Dokument wieder herausholen kann. Mit
anderen Worten, es kann nur die Person, die den geheimen Schlüssel
hat, auf ein Dokument zugreifen, das unter Benutzung des dazugehörigen
öffentlichen Schlüssels verschlüsselt worden ist.
Das Verfahren für das Ver- und Entschlüsseln von Dokumenten ist bei
diesem Modell einfach: eine Nachricht an Alice verschlüsseln
Sie unter Verwendung von Alices öffentlichem Schlüssel, und diese
entschlüsselt sie mit ihrem geheimen Schlüssel. Umgekehrt geht es
genauso: Alice verschlüsselt eine Nachricht an Sie mit Ihrem
öffentlichen Schlüssel, welche Sie dann mit Ihrem geheimen Schlüssel
entschlüsseln können.
Um ein Dokument zu verschlüsseln, benutzt man die Option
--encrypt.
Dazu müssen Sie die öffentlichen Schlüssel der vorgesehenen Empfänger
haben. Sollten Sie auf der Kommandozeile den Namen der zu
verschlüsselnden Datei nicht angeben, werden die zu verschlüsselnden
Daten von der Standard-Eingabe gelesen. Das verschlüsselte Resultat
wird auf die Standard-Ausgabe oder in die Datei, die durch die Option
--output spezifiziert ist, geschrieben. Das Dokument
wird darüberhinaus auch noch komprimiert.
gpg --output doc.gpg --encrypt --recipient blake@cyb.org doc
Mit der Option --recipient
wird der öffentliche Schlüssel spezifiziert, mit dem das
Dokument verschlüsselt werden soll. Entschlüsseln läßt sich das so
verschlüsselte Dokument jedoch nur von jemandem mit dem dazugehörigen
geheimen Schlüssel. Das bedeutet konsequenterweise aber auch, daß Sie
selbst ein so verschlüsseltes Dokument nur wieder entschlüsseln
können, wenn Sie Ihren eigenen öffentlichen Schlüssel in die
Empfängerliste aufgenommen haben.
Zum Entschlüsseln einer Nachricht wird die Option
--decrypt benutzt.
Sie benötigen dazu den geheimen Schlüssel, für den die Nachricht
verschlüsselt wurde und das Mantra, mit dem der geheime Schlüssel
geschützt ist.
gpg --output doc --decrypt doc.gpg
Mit GnuPG können Sie aber auch ohne Anwendung eines
Public-Key-Verfahrens Dokumente
verschlüsseln und stattdessen ein symmetrisches Verfahren benutzen. Der
Schlüssel für die symmetrische Verschlüsselung wird aus einem
Paßwort - besser noch, einem Paßwort-Satz -
generiert, das auf gar keinen Fall dem Mantra zum
Schutz Ihres privaten Schlüssels entsprechen sollte. Je länger das
gewählte Paßwort ist, desto sicherer ist der Schlüssel. Wenn Sie
diesen symmetrischen Schlüssel an jemanden weitergeben, sollten Sie
dazu einen sicheren Weg wählen. Ein Dokument läßt sich so durch
Benutzung der Option--symmetricverschlüsseln.
gpg --output doc.gpg --symmetric doc
Symmetrische Verfahren empfehlen sich beispielsweise, wenn Sie die
verschlüsselten Daten nicht weiter geben möchten, das Problem der
Paßwortübergabe also entfällt. Ein mögliches Anwendungsbeispiel wäre,
daß Sie alte E-Mails oder alte Datensätze aus Ihrer Umsatzstatisk auf
ihrer Festplatte oder einer CDROM archivieren und vor fremden
Zugriffen schützen möchten. Oder Sie können auch ganze Verzeichnisse
oder Festplatten verschlüsseln.
Digitale Signaturen
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 [eg] 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.
gpg --output doc.sig --sign doc
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.
gpg --output doc --decrypt doc.sig
Dokumente mit Klartextsignatur
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.
gpg --clearsign doc
GnuPG markiert dann im Klartext den Anfang des signierten Dokuments und hängt am Ende einen Block mit der eigentlichen OpenPGP-Signatur an.
Abgetrennte Signatur
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.
gpg --output doc.sig --detach-sig doc
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.
gpg --verify doc.sig doc