20.7 Verschlüsseln mit GPG
GnuPG oder GPG (Gnu Privacy Guard, englisch für GNU-Wächter der Privatsphäre) ist ein freies Kryptographie-System, d. h., es dient zum Ver- und Entschlüsseln von Daten sowie zum Erzeugen und Prüfen elektronischer Signaturen.
SGnuPG hat sich zum Ziel gesetzt, einer möglichst großen Benutzergruppe die Verwendung von kryptographischen Methoden zur vertraulichen Übermittlung von elektronischen Daten zu ermöglichen. GnuPG unterstützt dazu folgende Funktionen:
- Verschlüsselung von Daten (z. B. E-Mails), um vertrauliche Informationen an einen oder mehrere Empfänger zu übermitteln, die nur von den Empfängern wieder entschlüsselt werden können.
- Erzeugung einer Signatur über die versendeten Daten, um deren Authentizität und Integrität zu gewährleisten.
Beide Funktionen können kombiniert werden. In der Regel wird dabei zuerst die Signatur gebildet und an die Daten angehängt. Dieses Paket wiederum wird dann an die Empfänger verschlüsselt.
Sie werden im Folgenden lernen, wie Sie mit einfachen Mitteln beliebige Dateien und E-Mails ver- und entschlüsseln können.
20.7.1 Verschlüsselung einzelner Dateien
Um einzelne Dateien zu verschlüsseln, genügt die Installation von GnuPG. Sie benötigen hierzu die Pakete
- gnupg
- gnupg-doc (optional, enthält die Dokumentation)
Wenn Sie die Dokumentation mitinstallieren, können Sie diese mit dem Browser unter der Adresse
file:///usr/share/doc/gnupg-doc/ \ GNU_Privacy_Handbook/de/html/book1.htm
lesen.
Die Verschlüsselung selbst findet im Terminal statt. Ein einfaches Kommando wie
user$ gpg -c DATEINAME
genügt, um die Datei DATEINAME zu verschlüsseln. Hierbei werden Sie nach einem Passwort gefragt. Dieses Passwort können Sie nun beliebig wählen. Die Hauptsache ist, dass Sie es nicht vergessen. Zur Vermeidung von Tippfehlern müssen Sie das Passwort zweimal eingeben. Mit
user$ gpg --decrypt DATEINAME.gpg > Datei
oder
user$ gpg -d DATEINAME.gpg > Datei
packt man die Datei wieder aus. Sie können hierbei einen beliebigen Dateinamen generieren (> Datei). Auf die eben beschriebene Weise lassen sich mit vertretbarem Aufwand einzelne Dateien ver- und entschlüsseln. Alles, was Sie hierzu brauchen, ist ein persönliches Passwort. Das Verschlüsseln von E-Mails ist im Vergleich dazu schon ein wenig komplizierter, aber auch dies ist mit Hilfe von geeigneten Programmen leicht zu bewerkstelligen. Wir werden uns damit im nächsten Abschnitt beschäftigen.
20.7.2 E-Mails verschlüsseln mit GnuPG
Sie haben bereits in Abschnitt 13.1.2 die Verschlüsselung von E-Mails mit Programmen wie dem Mozilla Thunderbird kennengelernt. Leider haben die graphischen Programme den Nachteil, dass sie teilweise Informationen vor dem Benutzer, also vor Ihnen, verstecken. Wir werden nun etwas tiefer in die Materie einsteigen und mächtig Gebrauch von der Konsole machen.
Schlüsselpaar erzeugen
Damit Sie Ihre Mails signieren/verschlüsseln können, benötigen Sie zunächst ein eigenes Schlüsselpaar. Ein Schlüsselpaar besteht aus einem privaten und einem öffentlichen Schlüssel. Der private ist nur für Sie und der öffentliche ist, wie der Name bereits vermuten lässt, zum Veröffentlichen gedacht.
- Mit Ihrem privatem Schlüssel können Sie Ihre Mails signieren.
- Besitzt der Empfänger der signierten Mail Ihren öffentlichen Schlüssel, kann er diese Signatur verifizieren und somit die Echtheit des Absenders sicherstellen.
- Um eine Mail verschlüsseln zu können, benötigen Sie den öffentlichen Schlüssel des Empfängers. Mit diesem wird die Mail verschlüsselt und kann dann nur vom Empfänger mit Hilfe seines privaten Schlüssels und der dazugehörigen Passphrase entschlüsselt werden.
Den Schlüssel können Sie im Terminal mit dem Befehl
user$ gpg --gen-key
erzeugen. Sie werden nun gefragt, welche Art von Schlüssel Sie generieren möchten:
Please select what kind of key you want: (1) DSA and ElGamal (default) (2) DSA (sign only) (4) RSA (sign only) Your selection?
Wählen Sie hier bitte die (1).
About to generate a new ELG-E keypair. minimum keysize is 768 bits default keysize is 1024 bits highest suggested keysize is 2048 bits What keysize do you want? (1024) 1024 Requested keysize is 1024 bits
Daraufhin werden Sie nach der Schlüsselstärke gefragt. Hier sollten 1024 bit ausreichend sein. Anschließend muss man auswählen, wie lange der Schlüssel gültig sein soll:
Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0)
Nun brauchen Sie nur Ihren Namen und Ihre E-Mail Adresse anzugeben, für die Ihr Schlüsselpaar gelten soll:
You need a User-ID to identify your key; the software constructs the user id from Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Real name: Vorname Nachname Email address: <IhreMailAdresse@domain> Comment: optional
Zu guter Letzt werden Sie gefragt, ob Ihre Angaben okay sind und Sie werden um ein Passwort gebeten. Dieses können Sie beliebig wählen, nur vergessen dürfen Sie es nicht. Dieses Passwort brauchen Sie später, um Mails signieren und entschlüsseln zu können. Es sollte nicht leicht zu erraten sein und mindestens acht Stellen besitzen.
Nun liegt Ihr Schlüssel im Verzeichnis ~/.gnupg als secring.gpg. Der Befehl
user$ gpg --list-secret-keys
zeigt Ihnen Informationen des Schlüssels in der Konsole an. Wichtig ist hierbei Ihre Key-ID, die sich hinter der »Schlüsselstärke« befindet. Es ist ein achtstelliger Hex-Code.
20.7.3 Wichtige GPG-Befehle
Folgende Übersicht erläutert die elementaren Befehle rund um GPG.
efehl | Was er bewirkt |
gpg –search-keys »Vorname Nachname« | Die Suche nach Schlüsseln |
gpg –keyserver subkeys.pgp.net –send-key | Der Schlüssel wird zum Server geschickt. |
gpg –refresh-keys pgp.mit.edu ******** | Man hat an einer Keysigningparty teilgenommen und den Fingerprint untereinander ausgetauscht und der Schlüssel wurde von jemandem signiert. Nun muss der eigene Schlüssel wieder heruntergeladen werden. |
gpg –recv-keys subkeys.gpg.net –recv-keys ******** | Einen fremden Schlüssel herunterladen |
gpg –list-sigs DDE93F54 | Anzeige der Signatur eines Keys |
gpg –clearsign -a test.txt | Signieren eines Textes |