Inhalt
- GPG u. E-Mail unter Linux praktisch nutzen (portable)Autoren: Ricky Anywhere, Resistance,
Programme, GnuPG, Texte & Dateien ver- und entschlüsseln
Bei Fragen oder Problemen besuchen Sie unser Hilfe-Forum
GPG, GnuPG unter Linux
Verschlüsselung (Texte und Dateien) u. eMail-Verwaltung mit
portablen Anwendungen.Portabel um im System mölichst keine Spuren zu hinterlassen und um Mobil zu sein. Wenn Sie mit sensiblen Daten arbeiten sollte sich alles folgende in einem verschlüsselten Volume abspielen. Ihre Daten und Anwendungen sind so sicher vor unbefugtem Zugriff.
Wenn Sie GnuPG portabel nutzen möchten hier einige Download-Links
- gpg4usb (portables GnuPG-Frontend, Win & Linux)
- PPGP (portabel PGP tool, javabasierend, private JRE inkl., open source, Win & Linux)
Installation von GPG in Linux
GnuPG sollte bei den meisten Distributionen bereits standardmäßig
installiert werden. Ist dies nicht der Fall, erfolgt die Installation
unter Debian oder Ubuntu am einfachsten über einen Paketmanager (z.B.
synaptic). Der Name des zu installierenden Pakets lautet: gnupg
Für sonstige Linux-Distributionen sollte man ebenfalls zuerst mit
den bereitgestellten Paketmanagern der Distributionen versuchen, GnuPG
zu installieren. Ist die Software dort nicht verfügbar, sollte man
direkt auf der Projekt-Homepage von GnuPG
in der Download-Sektion nachschauen. Falls kein vorkompiliertes Paket
für eine Distribution verfügbar sein sollte, muss "zur Not" der
Quellcode heruntergeladen und kompiliert werden.
Einführung in die Kommandozeilen-Bedienung
Dieses Kapitel soll einen Überblick über die wichtigsten Befehle zu GnuPG zeigen. Es wird gezeigt, wie Schlüssel generiert, Dateien ver- und entschlüsselt sowie signiert und Signaturen geprüft werden. Das Kapitel ist keinesfalls abschliessend. Alle Befehle zu erklären, würde auch den Rahmen dieses Tutorials sprengen. Wer an weiterführenden Infomationen interessiert ist, dürfte im Web (Links siehe oben) bzw. auf der Manual-Page von GPG fündig werden.
Die gezeigten Befehle und Programmausgaben entsprechen denen
gängiger Linux-Varianten. Dies spiegelt sich vor allem in den
Verzeichnisnamen (z.B. /home/user) wieder. Die Befehle sollten jedoch
auch in der Windowsversion funktionieren, nur muss man sich bei den
Verzeichnisnamen an die Windowskonventionen (z.B. C:\Dokumente und
Einstellungen\User\...) halten.
Schlüsselgenerierung (etwas ausführlicher)
Wir fangen damit an, ein eigenes Schlüsselpaar (d.h. PUBLIC + SECRET KEY) zu generieren, damit andere Leute an uns verschlüsselte Nachrichten schicken und wir eigene Nachrichten signieren können. Der Befehl zur Schlüsselgenerierung lautet:
gpg --gen-key
GPG grüßt mit folgender Meldung:
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
gpg: directory `/home/user/.gnupg' created
gpg: new configuration file `/home/user/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/user/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/home/user/.gnupg/secring.gpg' created
gpg: keyring `/home/user/.gnupg/pubring.gpg' created
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
GPG hat also zuerst unter dem Homeverzeichnis ein Unterverzeichnis .gnupg
erstellt, in dem alle Daten wie das eigene Schlüsselpaar sowie die
importieren öffentlichen Schlüssel anderer verwaltet werden. Weiterhin
fragt GPG nach Art des zu generierenden Schlüsselpaars. Wir drücken
einfach Return, um mit der Standardvorgabe (RSA and RSA) fortzufahren.
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Für die empfohlene Schlüssellänge kann der Defaultwert übernommen werden (2048bit). Je grösser der Schlüssel ist, umso schwieriger ist es für Dritte (u.a. Hacker und Geheimdienste), Nachrichten zu knacken, aber um so länger dauert auch die Schlüsselgenerierung.
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)
Es wird nun die Eingabe nach der Gültigkeitsdauer des Schlüssels erwartet. Wir begnügen uns vorerst mit 2 Wochen, da es sich um einen Testschlüssel handelt.
Key expires at Tue 24 Jan 2025 15:28:18 CET
Is this correct? (y/N)
Das Verfallsdatum bestätigen wir mit 'y'. Anschliessend erwartet GPG von uns die Angabe von Namen und email-Adresse
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <[email protected]>"
Real name:
Wollen wir diesen Schlüssel zur anonymen Kommunikation benutzen wollen, geben wir hier natürlich einen Fake-Namen ein:
Jim Knopf
Email-Adresse und Comment-Abfragen können einfach mit Enter übersprungen werden. Wenn man aber bereits ein anonym erstellten email-Account besitzt und diesen zur anonymen Kommunikation inkl. Verschlüsselung benutzen möchte, kann man dessen Adresse gleich eintippen. Dann funktioniert bei den Mailpartnern die Verschlüsselung von Emails mit gängigen Mailclients noch reibungsloser.
Anschliessend bittet GPG uns um eine Bestätigung der eingegebenen Daten. Wir bestätigen mit 'O' und Enter. Nun muss eine Passphrase (bzw. "Mantra") eingegeben werden, ein Passwort, dass abgefragt wird, wann immer der geheime Schlüssel (secret key) zur Verwendung kommt, also beim Signieren einer zu versendenden Nachricht oder zum Entschlüsseln einer empfangenen Nachricht. Die Passphrase sollte wie jedes Passwort nicht zu kurz sein und keine einfach zu erratenden Begriffe enthalten.
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Der Prozess der Schlüsselgenerierung nimmt je nach vorgegebener Schlüssellänge entsprechend viel Zeit in Anspruch und kann bei grossen Schlüsseln schon mal ein paar Minuten dauern. Die Generierungszeit kann durch "Entropie"-Eintrag, also beispielsweise ein paar zufälligen Mausbewegungen etc. etwas verkürzt werden.
Sofern alles gut gegangen ist, beglückt uns GPG mit einer entsprechenden Meldung:
gpg: /home/user/.gnupg/trustdb.gpg: trustdb created
gpg: key 75E71F6D marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 2048R/5D2DABA5 2025-01-05
Key fingerprint = 23D7 AE20 3B67 BCD7 2380 31C3 E3DD 0513 75E7 1F6D
uid Jim Knopf
sub 2048R/7127C6C4 2025-01-05
Der Befehl
gpg --list-keys
zeigt nun alle im persönlichen Schlüsselring vorhandenen öffentliche Schlüssel an.
user@host:/media/truecrypt1/anondat/gpg$ gpg --list-keys
/home/user/.gnupg/pubring.gpg
------------------------------
pub 2048R/5D2DABA5 2025-01-05
uid Jim Knopf
sub 2048R/7127C6C4 2025-01-05
Mit dem Befehl
gpg --list-secret-keys
erscheinen sämtliche private Schlüssel.
/home/user/.gnupg/secring.gpg
------------------------------
sec 2048R/5D2DABA5 2025-01-05
uid Jim Knopf
ssb 2048R/7127C6C4 2025-01-05
Dies ist der soeben generierte geheime Schlüssel.
Praktische GnuPG-Tests mit dem Email-Robot Adele
Die Benutzung von GnuPG und entsprechender Front-Ends testet man am idealerweise mit anderen Mailpartnern. Das macht am meisten Spass und man lernt am besten die Stärken und Schwächen der jeweiligen Tools kennen. Sofern keine gleichgesinnten Mailpartner zur Verfügung stehen, kann man sich zum Ausprobieren von GnuPG auch mit Email-Robots behelfen.
So soll aus Demonstrationszwecken auch in diesem Abschnitt der Email-Robot Adele vom GNU Privacy Projekt als Mailpartner herhalten. Eine kurze Beschreibung dazu befindet sich auch am Ende des GnuPG-Artikels des Ubuntu-Wikis (http://wiki.ubuntuusers.de/gnupg).
Dem Email-Robot müssen wir als erstes unseren Public Key zukommen lassen. Hierfür müssen wir diesen zunächst aus unserem öffentlichen Schlüsselbund exportieren.
gpg --armor --output jim_knopf_keyfile.asc --export 75E71F6D
Die Option --armor
gibt an, das wir eine Ausgabe als
ASCII-File wünschen, dass sich im Ggs. zu dem standardmäßig erzeugten
Binär-Format problemlos in das Textfenster eines Email-Programms bzw.
Web-Interfaces einfügen und übertragen lässt.
Der kryptische Wert hinter der Option --export
entspricht der Schlüssel-ID unseres eigenen öffentlichen Schlüssels.
Alternativ könnte man auch den Namen oder Teile davon angeben, um den
gewünschten Schlüssel auszuwählen. Vergisst man diese Angabe, würden
sämtliche Schlüssel des öffentlichen Schlüsselbundes exportiert werden.
Damit würde der Empfänger des Schlüssels auch unsere übrigen
Mailpartner kennen (--> Profilerstellung).
Nun können wir eine Email an Adele schicken ([email protected]), in deren Textfeld wir den Inhalt der soeben erstellten Schlüsseldatei (jim_knopf_keyfile.asc) einfügen, oder die ganze Datei als Anhang einfügen. Als Betreff geben wir ein:
mein öffentlicher Schlüssel
Nach einigen Minuten erhalten wir als Antwort eine Nachricht, die mit unserem öffentlichen Schlüssel verschlüsselt wurde. Nachdem wir sie als Textdatei (z.B. nachricht_von_adele.txt.asc) abgespeichert haben, können wir sie mit folgendem Befehl entschlüsseln:
gpg --output adele_keyfile.asc --decrypt nachricht_von_adele.txt.asc
Das Entschlüsseln erfordert die Eingabe der Passphrase, da für diese Aktion unser geheimer Schlüssel benötigt wird. Die entschlüsselte Nachricht landet in der Datei adele_keyfile.asc und enthält (wie der Name bereits andeutet) den öffentlichen Schlüssel von Adele.
Wir importieren Adele's Schlüssel mit
gpg --import adele_keyfile.asc
Unser öffentlicher Schlüsselbund enthält nun 2 Schlüssel, unseren eigenen und den von Adele. Jetzt können wir eine beliebige Nachricht für Adele erstellen und sie mit
gpg --armor --output nachricht_an_adele.txt.asc --encrypt nachricht_an_adele.txt
verschlüsseln, wobei die Datei nach --encrypt
als Eingabedatei verwendet wird und das Ergebnis der Verschlüsselung in der Datei nachricht_an_adele.txt.asc
landet. Nachdem diese Nachricht an Adele geschickt wurde, sollte als
Antwort die Ausgangsbotschaft als Klartext kommen, was zeigt, dass
Adele unsere Nachricht erfolgreich entschlüsseln konnte.
Kurze Befehlsübersicht
Die wichtigsten Befehle, die z.T. im vorigen Abschnitt angesprochen
wurden, werden hier in einer Übersicht dargestellt. Die Optionen
erscheinen i.d.R. in ihrer Langform (z.B. --encrypt
statt -e
). Wer die Kurzform verwenden möchte, wird in den Man-Pages rasch fündig.
Schlüsselpaar erzeugen
gpg --gen-key
Es können auch mehrere Schlüsselpaare erzeugt werden.
Öffentlichen Schlüssel exportieren
gpg [--armor] --output Schlüsseldatei --export User-ID
Ohne Angabe einer UID wird der ganze öffentliche Schlüsselbund
exportiert. Wenn man sich nicht sicher ist, ob auch der richtige
Schlüssel exportiert wurde, kann man sich die in einer Schlüsseldatei
befindlichen Schlüssel mit Hilfe des folgenden Befehls anzeigen lassen.
Inhalt einer Schlüsseldatei anzeigen
gpg --throw-keyids < Schlüsseldatei
Dieser Befehl ist auch für heruntergeladene Schlüsseldateien nützlich, wo man sich erst einmal deren Inhalt anschauen kann, ohne gleich den/die Schlüssel im eigenen Schlüsselbund aufzunehmen.
Schlüssel importieren
gpg --import Schlüsseldatei
Schlüssel des eigenen Schlüsselbundes anzeigen lassen
gpg --list-keys
Verschlüsseln
Das Kommando zum Verschlüsseln lautet:
gpg --output Ausgabedatei --recipient UID --encrypt Eingabedatei
UID steht
für die Schlüssel-ID des Empfängers. Wird die Option --recipient
weggelassen, bittet GnuPG nach Abfrage der passphrase um Eingabe des
Empfängers. Es können auch mehrere Empfänger angegeben werden.
Entschlüsseln
Das Kommando zum Entschlüsseln lautet:
gpg --output Ausgabedatei --decrypt Eingabedatei
Dateien signieren
Um eine Text-Datei zu signieren bietet sich am besten folgender Befehl an:
gpg --output Ausgabedatei --clearsign Datei
Damit wird der in der Eingabedatei befindliche Text in die Ausgabedatei kopiert und die Signatur am Ende angefügt. Der Text bleibt damit ohne Probleme lesbar.
Signatur prüfen
gpg --verify Datei
Konnte die Signatur verifiziert werden kommt als Antwort GOOD SIGNATURE ...
. Dafür muss der öffentliche Schlüssel des Absenders der signierten Botschaft natürlich importiert sein.
Selbst bei positiver Prüfung kommt aber mitunter noch der Hinweis, dass
die Authentizität des Schlüssel selbst noch nicht gesichert ist (GOOD UNTRUSTET SIGNATURE ...
).
Ist man sich einigermaßen sicher, dass der importierte Schlüssel auch
wirklich vom Absender stammt (und nicht etwa von einem
Man-In-The-Middle), kann man den Schlüssel lokal signieren. Dann
entfällt bei zukünftigen Verifikationen auch der Hinweis auf die
ungesicherte Authentizität des Schlüssels.
Verschlüsseln + Signieren
Verschlüsseln und Signieren können auch in einem Befehl kombiniert werden.
gpg --armor --output Ausgabedatei --encrypt --sign Eingabedatei
Beim Entschlüsseln (mittels --decrypt
-Option) wird automatisch die Signatur geprüft und das Ergebnis angezeigt.
Grafische Front Ends zur Schlüsselverwaltung
Seahorse (nicht portable)
Seahorse ist ein Front-End für den Gnome-Desktop. Es bietet alle nötigen Funktionen Key-Managment (inkl. der Möglichkeit, Foto-IDs hinzuzufügen), Dateiver- und entschlüsselung sowie Dateisignierung und -verifikation. Seahorse wird meistens mit dem Gnome-Desktop installiert. Ansonsten kann es über einen Paketmanager installiert werden.
Die Funktionen zur Dateiver- und entschlüsselung, zur Signierung und Verifikation sind im Nautilus-Dateimanager integriert und lassen sich über das Kontextmenü aufrufen, sobald man mit der rechten Maustaste auf eine Datei klickt.
Für das Key-Management kann Seahorse über das Startmenü oder in der Shell über das Kommando
seahorse
geöffnet werden.
Seahorse ist recht komfortabel. Allerdings kann es nicht portabel genutzt werden. Die Umgebungsvariable GNUPGHOME
,
mit der ein alternatives Verzeichnis für die Schlüsselringe gesetzt
werden kann (z.B. auf einem USB-Stick), wird leider nur beim direkten
Aufruf von Seahorse (also nur beim Key-Management) beachtet. Beim
Aufruf der übrigen Funktionen zur Verschlüsselung und Signierung wird
wegen der Integration in Nautilus wieder auf das Standardverzeichnis ~/.gnupg
zurückgegriffen.
gpg4usb (portable)
Dieses ca. 15MB große Tool enthält sowohl ein grafisches Frontend als
auch das zugrunde liegende GnuPG. gpg4usb bringt sowohl Binaries für
Linux als auch für Windows mit. Alle Schlüssel und Einstellungen werden
in einem Unterordner von gpg4usb gespeichert (gpg4usb/keydb
).
Damit ist dieses Tool komplett portabel nutzbar. Das Frontend bietet
neben der Schlüsselverwaltung einen Editor an, der das Ergebnis der
Ver- und Entschlüsselung bzw. Signierung sofort anzeigt. Dies ist vor
allem nützlich bei Verwendung von Web-Interfaces von Mailprovidern, da
so der verschlüsselte Text direkt in das Text-Fensters des
Web-Interfaces kopiert werden kann, ohne ihn erst als Datei
abzuspeichern.
Link zur Projektseite: gpg4usb.cpunk.de
E-Mail Clients
Unter Linux nutzbare Clients die GnuPG verschlüsselung unterstützen kommen z.B. Mozilla Thunderbird, Slypheed in Frage.Informationen zu den Programmen finden Sie in der GnuPG Anleitung für Windows.
Hinweise zum Schutz der Anonymität
Neben der reinen Verschlüsselung und Signierung von Nachrichten
müssen einige anonymitätsspezfische Besonderheiten beachtet werden. So
speichert bei einer Standard-Installaton GnuPG alle Konfigurationsdaten
und Schlüsselbunde im .gnupg/
-Ordner
des persönlichen Home-Verzeichnisses. Sofern keine besonderen
Massnahmen ergriffen werden, ist auch dieses Unterverzeichnis und damit
alle gespeicherten Schlüssel für jeden einsehbar, der physikalischen
Zugriff auf den Rechner erhält.
Eine Lösung hierfür wäre die Grundverschlüsselung der Festplatte oder die Verwendung von TrueCrypt-Container für das eigene Home-Verzeichnis
Andererseits möchte man GnuPG evtl. für mehr als nur eine anonyme "Zweitidentität" verwenden. Auf diese Weise kann verhindert werden, dass die Mailpartner oder gar Dritte auf die anderen Bekanntschaften bzw. Interessen des Nutzers schliessen können.
Hierfür gibt es zwei Möglichkeiten. Zum einen können mit GnuPG mit dem obigen Befehl gpg --gen-key
problemlos mehrere Schlüsselpaare inkl. Namen, Email-Adresse und
Kommetar erstellt werden. Für jedes Schlüsselpaar sollte natürlich ein
neuer Name verwendet werden, der nicht auf die anderen Identitäten
schliessen lässt. Die neugenerierten öffentlichen Schlüssel können dann
exportiert und an die jeweiligen Gesprächspartner geschickt werden.
Für die Verschlüsselung von ausgehenden Nachrichten spielt es keine
Rolle, wie viele Schlüsselpaare generiert wurden, da hierfür nur der
öffentliche Schlüssel des Adressaten verwendet wird. Bei dem Empfang
verschlüsselter Nachrichten, wählt GnuPG zur Dechriffrierung den passen
geheimen Schlüssel automatisch aus. Nur beim Signieren von eigenen
Nachrichten muss man aufpassen, das der passende geheime Schlüssel
verwendet wird. Die Auswahl geschieht über die Option --default-key
bzw. --local-user
, also z.B.
gpg --default-key 75E71F6D --clearsign dokument.txt
Lässt man die Option weg (und ist in der Konfigurationsdatei gpg.conf im .gnupg-Ordner nichts anderes angegeben), verwendet GnuPG für solche Aktionen standardmässig den ersten (und damit evtl. falschen) Schlüssel im geheimen Schlüsselbund.
Ein etwas eleganterer Ansatz besteht darin, gleich mehrere komplette .gnupg-Ordner getrennt vorzuhalten, die den verschiedenen Fake-Identitäten entsprechen. Solche .gnupg-Ordner sollten praktischerweise in verschlüsselten Volumes gespeichert werden (z.B. TrueCrypt-Containern), die je nach Bedarf geöffnet werden. Damit GnuPG diese Verzeichnisse auch benutzt (und nicht /home/user/.gnupg/), muss die Umgebungsvariable GNUPGHOME auf dieses Verzeichnis gesetzt werden:
GNUPGHOME=/truecrypt-ordner1/.gnupg
EXPORT GNUPGHOME
Alternativ dazu kann ansonsten auch bei jedem gpg-Befehl mit der Option --homedir
der Ort des zu verwendenden .gnupg/-Verzeichnisses angegeben werden, also z.B.:
gpg --homedir /truecrypt-ordner1/.gnupg --list-keys
Bei Verwendung portabler Software, um z.B. im Internet-Cafe per USB-Stick die Email-Verschlüsselung nutzen zu können, gilt es außerdem zu beachten, dass das Gastsystem prinzipell auch die Schlüsselbunddateien unbermerkt auslesen bzw. kopieren könnte. Je nachdem, an welche Spyware man gerät, könnte auch die Passphrase mit aufgezeichnet werden und damit wäre dann der geheime Schlüssel komplett ausspioniert.
Dies gilt erst recht natürlich für die Dateien bzw. Texte, die ver- und entschlüsselt werden und bei Vorhandensein entsprechender Tools auf dem Gastrechner vom Admin mitgelesen werden können. Wirklich sensible Sachen sollten also lieber nur zu Hause ver- und entschlüsselt werden.
Zurück zur GnuPG Übersicht
Sitemap