So verschlüsseln und entschlüsseln Sie Dateien mit GPG unter Linux

Schützen Sie Ihre sensiblen Daten mit dem Linux-Befehl gpg. Nutzen Sie eine hochmoderne Verschlüsselung, um Ihre privaten Informationen zu sichern. Wir zeigen Ihnen, wie Sie mit gpg Schlüssel verwalten, Dateien verschlüsseln und entschlüsseln können.

Der Gnu Privacy Guard (GPG) ermöglicht es Ihnen, Dateien sicher zu verschlüsseln, sodass nur der autorisierte Empfänger diese wieder entschlüsseln kann. Im Detail implementiert GPG den OpenPGP-Standard. Es baut auf einem Programm namens Pretty Good Privacy (PGP) auf, welches 1991 von Phil Zimmermann entwickelt wurde.

Das Prinzip von GPG basiert auf der Verwendung von zwei Verschlüsselungsschlüsseln für jede Person. Jeder Nutzer besitzt einen privaten und einen öffentlichen Schlüssel. Der öffentliche Schlüssel kann Daten entschlüsseln, die mit dem zugehörigen privaten Schlüssel verschlüsselt wurden.

Um eine Datei sicher zu versenden, verschlüsseln Sie diese mit Ihrem privaten Schlüssel sowie mit dem öffentlichen Schlüssel des Empfängers. Für die Entschlüsselung benötigt der Empfänger seinen privaten Schlüssel und Ihren öffentlichen Schlüssel.

Hieraus ergibt sich, dass öffentliche Schlüssel geteilt werden müssen. Sie brauchen den öffentlichen Schlüssel des Empfängers, um die Datei zu verschlüsseln, und der Empfänger benötigt Ihren öffentlichen Schlüssel, um sie zu entschlüsseln. Es ist unbedenklich, Ihre öffentlichen Schlüssel öffentlich zu machen. Tatsächlich existieren für diesen Zweck spezielle Public-Key-Server. Private Schlüssel hingegen müssen streng geheim gehalten werden. Ihr öffentlicher Schlüssel darf publik sein, aber Ihr privater Schlüssel muss sicher und vor unbefugtem Zugriff geschützt aufbewahrt werden.

Die Einrichtung von GPG erfordert einige Schritte mehr als die eigentliche Nutzung. Glücklicherweise ist die Konfiguration meist nur einmal erforderlich.

Erstellung Ihrer Schlüssel

Der Befehl gpg ist in allen gängigen Linux-Distributionen vorinstalliert, wie beispielsweise Ubuntu, Fedora und Manjaro.

Die Verwendung von GPG ist nicht auf E-Mails beschränkt. Sie können auch Dateien verschlüsseln und diese zum Download bereitstellen oder auf physischem Wege weitergeben. Dennoch müssen Sie die generierten Schlüssel einer E-Mail-Adresse zuordnen. Wählen Sie hierfür die gewünschte E-Mail-Adresse aus.

Hier ist der Befehl zur Erstellung Ihrer Schlüssel. Die Option --full-generate-key initiiert eine interaktive Sitzung in Ihrem Terminalfenster, in der Ihre Schlüssel generiert werden. Sie werden aufgefordert, eine Passphrase einzugeben. Diese Passphrase sollten Sie sich unbedingt merken. Eine Kombination aus drei oder vier einfachen Wörtern, verbunden durch Satzzeichen, ist ein guter und robuster Ansatz für Passwörter und Passphrasen.

gpg --full-generate-key

Sie werden aufgefordert, einen Verschlüsselungstyp aus einem Menü auszuwählen. Wenn es keinen triftigen Grund für eine andere Wahl gibt, geben Sie 1 ein und drücken Sie die Eingabetaste.

Anschließend müssen Sie die Bitlänge für die Verschlüsselungsschlüssel wählen. Akzeptieren Sie den Standardwert, indem Sie die Eingabetaste drücken.

Sie müssen nun die Gültigkeitsdauer des Schlüssels angeben. Wenn Sie das System testen, wählen Sie eine kurze Gültigkeit, z.B. 5 für fünf Tage. Für einen dauerhaften Schlüssel wählen Sie eine längere Dauer, z.B. 1 year für ein Jahr. Der Schlüssel ist dann 12 Monate gültig und muss danach erneuert werden. Bestätigen Sie Ihre Auswahl mit Y.

Nun müssen Sie Ihren Namen und Ihre E-Mail-Adresse eingeben. Optional können Sie noch einen Kommentar hinzufügen.

Sie werden aufgefordert, Ihre Passphrase einzugeben. Diese benötigen Sie jedes Mal, wenn Sie mit Ihren Schlüsseln arbeiten, daher ist es wichtig, dass Sie diese nicht vergessen.

Klicken Sie auf die Schaltfläche „OK“, nachdem Sie Ihre Passphrase eingegeben haben. Dieses Fenster wird Ihnen bei der Arbeit mit gpg öfter begegnen. Merken Sie sich daher Ihre Passphrase gut.

Die Schlüsselgenerierung erfolgt und Sie kehren zur Kommandozeile zurück.

Erstellung eines Widerrufszertifikats

Wenn Ihr privater Schlüssel in fremde Hände gerät, müssen Sie die alten Schlüssel von Ihrer Identität trennen und neue erstellen. Hierfür benötigen Sie ein Widerrufszertifikat. Wir erstellen dies jetzt und bewahren es an einem sicheren Ort auf.

Der Option --output muss der Dateiname für das zu erstellende Zertifikat folgen. Die Option --gen-revoke veranlasst gpg, ein Widerrufszertifikat zu erstellen. Sie müssen die E-Mail-Adresse angeben, die Sie beim Generieren der Schlüssel verwendet haben.

gpg --output ~/revocation.crt --gen-revoke [email protected]

Sie werden aufgefordert, die Erstellung des Zertifikats zu bestätigen. Drücken Sie Y und die Eingabetaste. Sie werden nach dem Grund für die Erstellung des Zertifikats gefragt. Da wir dies präventiv tun, wissen wir den genauen Grund nicht. Wählen Sie 1 als plausiblen Grund und drücken Sie die Eingabetaste.

Sie können optional eine Beschreibung hinzufügen. Beenden Sie die Eingabe der Beschreibung mit zweimaligem Drücken der Eingabetaste.

Sie werden aufgefordert, Ihre Einstellungen zu bestätigen. Drücken Sie Y und die Eingabetaste.

Das Zertifikat wird generiert. Sie erhalten eine Meldung, die die Notwendigkeit der sicheren Aufbewahrung des Zertifikats betont.

In diesem Zusammenhang wird eine Person namens Mallory erwähnt. In Diskussionen über Kryptographie werden häufig Bob und Alice als die beiden Kommunikationspartner verwendet. Es gibt aber noch weitere Figuren. Eve ist eine Lauscherin, Mallory ist ein böswilliger Angreifer. Wichtig ist, dass Sie das Zertifikat sicher aufbewahren.

Wir entziehen dem Zertifikat nun alle Rechte, außer denen unseres Nutzers.

chmod 600 ~/revocation.crt

Überprüfen wir mit ls, welche Rechte die Datei nun besitzt:

ls -l

Das ist ideal. Außer dem Dateibesitzer – uns – kann niemand etwas mit dem Zertifikat anfangen.

Importieren eines öffentlichen Schlüssels

Um eine Nachricht zu verschlüsseln, die eine andere Person entschlüsseln kann, benötigen Sie deren öffentlichen Schlüssel.

Wenn Ihnen der Schlüssel als Datei zur Verfügung gestellt wurde, können Sie ihn mit dem folgenden Befehl importieren. In diesem Beispiel heißt die Schlüsseldatei „mary-geek.key“.

gpg --import mary-geek.key

Der Schlüssel wird importiert und der Name sowie die E-Mail-Adresse, die mit diesem Schlüssel verknüpft sind, werden angezeigt. Diese Angaben sollten natürlich mit der Person übereinstimmen, von der Sie den Schlüssel erhalten haben.

Es ist auch möglich, dass die Person, von der Sie einen Schlüssel benötigen, diesen auf einen öffentlichen Schlüsselserver hochgeladen hat. Diese Server speichern die öffentlichen Schlüssel von Personen weltweit. Die Server synchronisieren sich regelmäßig, sodass die Schlüssel universell verfügbar sind.

Der öffentliche Schlüsselserver des MIT ist ein beliebter Server, der regelmäßig synchronisiert wird. Die Suche dort sollte in der Regel erfolgreich sein. Wenn ein Schlüssel erst kürzlich hochgeladen wurde, kann es einige Tage dauern, bis er angezeigt wird.

Der Option --keyserver muss der Name des zu durchsuchenden Schlüsselservers folgen. Der Option --search-keys muss entweder der Name der gesuchten Person oder deren E-Mail-Adresse folgen. Hier verwenden wir die E-Mail-Adresse:

gpg --keyserver pgp.mit.edu --search-keys [email protected]

Es wird eine Liste der gefundenen Übereinstimmungen angezeigt, die nummeriert sind. Um einen Eintrag zu importieren, geben Sie die entsprechende Nummer ein und bestätigen Sie mit der Eingabetaste. In diesem Fall gibt es nur eine Übereinstimmung, also geben wir 1 ein und drücken die Eingabetaste.

Der Schlüssel wird importiert und wir sehen den Namen und die E-Mail-Adresse, die mit diesem Schlüssel verknüpft sind.

Verifizierung und Signierung eines Schlüssels

Wenn Ihnen eine Person, die Sie kennen, eine öffentliche Schlüsseldatei gegeben hat, können Sie davon ausgehen, dass sie dieser Person gehört. Wenn Sie den Schlüssel von einem öffentlichen Schlüsselserver heruntergeladen haben, sollten Sie möglicherweise verifizieren, ob der Schlüssel tatsächlich der Person gehört, für die er bestimmt ist.

Die Option --fingerprint veranlasst gpg, eine kurze Folge von zehn Gruppen mit je vier hexadezimalen Zeichen zu erstellen. Sie können die Person bitten, Ihnen den Fingerabdruck ihres Schlüssels mitzuteilen.

Anschließend können Sie mit der Option --fingerprint denselben Fingerabdruck generieren und vergleichen. Wenn die beiden übereinstimmen, wissen Sie, dass der Schlüssel der entsprechenden Person gehört.

gpg --fingerprint [email protected]

Der Fingerabdruck wird generiert.

Wenn Sie sich sicher sind, dass der Schlüssel echt ist und der Person gehört, der er zugeordnet sein soll, können Sie den Schlüssel signieren.

Auch ohne Signatur können Sie den Schlüssel zum Ver- und Entschlüsseln von Nachrichten von und an die Person nutzen. Allerdings wird gpg Sie jedes Mal fragen, ob Sie fortfahren möchten, da der Schlüssel nicht signiert ist. Wir verwenden die Option --sign-key und geben die E-Mail-Adresse der Person an, damit gpg weiß, welcher Schlüssel zu signieren ist.

gpg --sign-key [email protected]

Sie sehen Informationen zum Schlüssel und zur Person und werden aufgefordert zu bestätigen, dass Sie den Schlüssel signieren möchten. Drücken Sie Y und die Eingabetaste, um den Schlüssel zu signieren.

So teilen Sie Ihren öffentlichen Schlüssel

Um Ihren Schlüssel als Datei weiterzugeben, müssen Sie ihn aus Ihrem lokalen gpg-Schlüsselspeicher exportieren. Hierfür verwenden wir die Option --export, gefolgt von der E-Mail-Adresse, mit der Sie den Schlüssel generiert haben. Der Option --output muss der Name der Datei folgen, in die der Schlüssel exportiert werden soll. Die Option --armor weist gpg an, eine ASCII-Ausgabe anstelle einer Binärdatei zu erstellen.

gpg --output ~/dave-geek.key --armor --export [email protected]

Werfen wir mit less einen Blick in die Schlüsseldatei:

less dave-geek.key

Der Schlüssel wird in seiner ganzen Pracht angezeigt:

Sie können Ihren öffentlichen Schlüssel auch über einen öffentlichen Schlüsselserver teilen. Die Option --send-keys sendet den Schlüssel an den Schlüsselserver. Der Option --keyserver muss die Webadresse des öffentlichen Schlüsselservers folgen. Um anzugeben, welcher Schlüssel gesendet werden soll, muss der Fingerabdruck des Schlüssels in der Kommandozeile bereitgestellt werden. Beachten Sie, dass zwischen den Gruppen von vier Zeichen keine Leerzeichen stehen.

(Den Fingerabdruck Ihres Schlüssels können Sie mit der Option --fingerprint anzeigen lassen.)

gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4

Sie erhalten eine Bestätigung, dass der Schlüssel gesendet wurde.

Dateien verschlüsseln

Endlich können wir eine Datei verschlüsseln und an Mary senden. Die Datei heißt Raven.txt.

Die Option --encrypt weist gpg an, die Datei zu verschlüsseln, und die Option --sign weist gpg an, die Datei mit Ihren Daten zu signieren. Die Option --armor weist gpg an, eine ASCII-Datei zu erstellen. Der Option -r (Empfänger) muss die E-Mail-Adresse der Person folgen, an die Sie die Datei senden möchten.

gpg --encrypt --sign --armor -r [email protected]

Die Datei wird mit demselben Namen wie das Original erstellt, jedoch mit dem Suffix „.asc“ versehen. Werfen wir einen Blick hinein.

less Raven.txt.asc

Die Datei ist völlig unlesbar und kann nur von jemandem entschlüsselt werden, der Ihren öffentlichen Schlüssel und Marys privaten Schlüssel besitzt. Die einzige Person, die beides hat, sollte Mary sein.

Wir können die Datei nun an Mary senden, in der Gewissheit, dass sie niemand anderes entschlüsseln kann.

Dateien entschlüsseln

Mary hat eine Antwort geschickt. Diese befindet sich in einer verschlüsselten Datei namens coded.asc. Wir können sie mit der Option --decrypt sehr einfach entschlüsseln. Die Ausgabe leiten wir in eine andere Datei namens plain.txt um.

Beachten Sie, dass wir gpg nicht mitzuteilen brauchen, von wem die Datei stammt. gpg kann dies aus dem verschlüsselten Inhalt der Datei ableiten.

gpg --decrypt coded.asc > plain.txt

Sehen wir uns die Datei plain.txt an:

less plain.txt

Die Datei wurde erfolgreich entschlüsselt.

Aktualisieren Ihrer Schlüssel

In regelmäßigen Abständen können Sie gpg auffordern, die vorhandenen Schlüssel mit einem öffentlichen Schlüsselserver zu vergleichen und alle geänderten Schlüssel zu aktualisieren. Sie können dies alle paar Monate oder nach Erhalt eines Schlüssels von einem neuen Kontakt durchführen.

Die Option --refresh-keys veranlasst gpg, die Prüfung durchzuführen. Der Option --keyserver muss der Schlüsselserver Ihrer Wahl folgen. Da die Schlüssel zwischen den öffentlichen Servern synchronisiert werden, ist es unerheblich, welchen Server Sie auswählen.

gpg --keyserver pgp.mit.edu --refresh-keys

gpg antwortet mit einer Liste der überprüften Schlüssel und informiert Sie, ob sich welche geändert oder aktualisiert haben.

Datenschutz ist ein wichtiges Thema

Datenschutz ist heutzutage ein allgegenwärtiges Thema. Egal aus welchen Gründen Sie Ihre Daten schützen möchten, gpg bietet eine einfache Möglichkeit, Ihre Dateien und Kommunikation mit einer sehr starken Verschlüsselung zu sichern.

Es gibt weitere Anwendungsmöglichkeiten für gpg. Es gibt ein Plugin für Thunderbird namens Enigmail. Dieses integriert sich direkt in Ihre gpg-Konfiguration, sodass Sie E-Mail-Nachrichten direkt aus Thunderbird verschlüsseln können.