GnuPG
GnuPG ist ein Kryptografieprogramm zur Signierung, Verschlüsselung und Entschlüsselung von Daten. Die Möglichkeiten GPGs belaufen sich unter anderem auf Verschlüsselung und Signierung von E-Mails, Chats und Dateien.
Installation
Das Programm ist als
gnupg
in core
verfügbar, und kann von dort
mittels Pacman
installiert werden.
Funktionsweise
GnuPG funktioniert mit Hilfe eines Schlüsselpaares, bestehend aus einem privaten Schlüssel, der nicht veröffentlicht wird, und einem öffentlichen Schlüssel, der an die Kommunikationspartner weitergegeben wird. Daten werden mit dem öffentlichen Schlüssel verschlüsselt, und können nur vom Besitzer des privaten Schlüssels wieder entschlüsselt werden (asymmetrische Verschlüsselung).
Erzeugen eines Schlüsselpaares
Zum Verwenden muss man erstmalig ein Schlüsselpaar erzeugen.
gpg --gen-key
Es müssen dann einige Daten angegeben werden. Man sollte hier, wenn man einen „offiziellen“ Schlüssel erstellen will, seine richtigen Daten angeben. Wenn man anonym bleiben will, kann man hier selbstvertändlich beliebige Fantasiedaten angeben.
pub 1024D/77421F4F 2000-06-25 Vorname Nachname (Kommentar) <user@example.org> Key fingerprint = CB84 AD4C 2195 FFAD ACA0 471B 468F 3FF9 0781 DF4A sub 1024g/C596B611 2000-06-25
Die Schlüssel-ID ist 77421F4F. Dies ist die hexadezimale Kennung des Schlüssels. Diese sollte bei der Eingabe in Programme immer mit „0x“ eingeleitet werden.
Verbreitung der Schlüssel
Schlüssel können auf sogenannte Schlüsselserver geladen werden. Dort ist es anderen möglich diese Schlüssel beispielsweise anhand der E-Mailadresse oder auch der Schlüssel-ID zu finden und herunterzuladen.
Um den Schlüssel hoch- oder herunter zuladen benutzt man „gpg“ mit entsprechenden Parametern
gpg --send-keys 0x77421F4F gpg --recv-keys 0xDED070DE
Es wird der im Generierungsbeispiel erstellte Schlüssel auf einen Schlüsselserver geladen, danach wird ein anderer Schlüssel von einem Schlüsselserver heruntergeladen.
Man muss hier jedoch jeweils mittels des parameters „--keyserver“ noch explizit einen zu verwendenen Schlüsselserver angeben. Will man dies nicht, muss man den zu verwendenen Schlüsselserver in die GnuPG-Konfigurationsdatei „~/.gnupg/gpg.conf“ schreiben
keyserver wwwkeys.de.pgp.net
Hier wird der Schlüsselserver „wwwkeys.de.pgp.net“ verwendet.
Das praktische an der Schlüsselserver-Methode ist, dass man den Key direkt importiert. Der Nachteil ist natürlich, dass man in aller Regel nicht immer die KeyID parat hat. Dafür ist eine Suchfunktion über einen Browser erreichbar. Hier kann man sich die Keys als Klartext anzeigen und herunterladen. Um einen heruntergeladenen Key nun noch zu importieren, ist ein:
$ gpg --import KeyFile
erforderlich. Wobei „KeyFile“ den über den Browser heruntergeladenen, öffentlichen Schlüssel beinhalten muss.
Dateisignaturen
Mittels GnuPG können auch Dateien signiert werden. So kann man sehr einfach einen Dateiaustausch betreiben, und der Empfänger kann sich sicher sein, von wem die Datei kommt.
gpg --armor --detach-sign Dateiname
Hiermit wird die Datei „Dateiname“ signiert. Es wird eine Datei „Dateiname.asc“ erstellt, in der sich die Signatur befindet. Möchte man die Signatur an das Dateiende hängen, ist dies ebenfalls möglich.
gpg --clearsign -a Dateiname
Dieses Vorgehen ist allerdings nur bei Klartextdateien zu empfehlen, weil Binärdateien danach aller Regel nach solange unbrauchbar sind, bis die Signatur wieder entfernt wird.
gpg --verify Dateiname.asc Dateiname
Hiermit wird die Datei „Dateiname“ anhand der Signaturdatei „Dateiname.asc“ verifiziert. Die Angabe der Datei, die verifiziert werden soll, ist nur erforderlich, sofern die .asc-Datei nicht denselben Namen hat, wie die signierte Datei. In dem konkreten Beispiel ist es also eigentlich nicht erforderlich.
Dateiverschlüsselung
Dateien können nicht nur signiert, sondern auch verschlüsselt werden.
gpg --encrypt -a --recipient KeyId Dateiname
Als „KeyId“ muss die Schlüssel-ID desjenigen angegeben werden, der die Datei „Dateiname“ später mit seinem privaten Schlüssel entschlüsseln soll. Entschlüsselt werden Dateien wie folgt:
gpg --decrypt --output Dateiname Dateiname.asc
Ungültigkeitsvorbehalt
Dieser Schlüssel ist, wenn nicht anders definiert, unbegrenzt lange gültig. Um einen Schlüssel vor Ablauf der Gültigkeitsdauer für ungültig erklären zu können, muss ein Widerrufszertifikat, der „Revoke Key“, erstellt werden.
gpg --gen-revoke 0x77421F4F > revokeKey
Im Beispiel wird das Widerrufszertifikat für den oben generierten Schlüssel erstellt. Hat man den Schlüssel beispielsweise auf einen Schlüsselserver geladen, kann man ihn in diesem Fall im Allgemeinen nicht direkt wieder löschen. Hier kommt das Widerrufszertifikat zum tragen.
gpg --keyserver wwwkeys.de.pgp.net --recv-keys 0x77421F4F gpg --import revokeKey gpg --keyserver wwwkeys.de.pgp.net --send-keys 0x77421F4F
Hiermit wird der Schlüssel zuerst vom Schlüsselserver heruntergeladen, dann der Revoke-Key importiert, und der Schlüssel wieder auf den Schlüsselserver geladen. Dadurch, dass die Schlüsselserver sich untereinander oft synchronisieren, dauert es nur einige Minuten, und der Key ist auf allen Servern als ungültig vermerkt.
Eine andere Möglichkeit ist, die Ablaufdaten möglichst zeitnah zu setzen, sodass die Keys automatisch ungültig werden. Dies resultiert zwar darin, dass man häufiger einen neuen Schlüssel erstellen muss, man läuft aber nicht Gefahr, dass ein längst nicht mehr verwendeter Schlüssel noch als gültig geführt wird.
GPG-Passworteingabe ohne GTK
Möchte man eine bequeme Passwort-Eingabe via terminal und nicht via GTK-Fenster so bietet sich an in die gpg-agent.conf folgende Zeile einzufügen. Danach öffnet sich statt GTK ncurses:
pinentry-program /usr/bin/pinentry-curses
Siehe auch
- Grundlagen der Verschlüsselung in Netzwerken
- GPA – Grafische Schlüsselverwaltung