Aktualisiert am: 08.11.2024

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 - GnuPG grafische Oberfläche

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.
gpg4usb - GnuPG Linux portable
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
Anonym, Sicher, Anonymität, Sicherheit, Internet, email, chatten, Homepage, Webseite, Domain