Dateien unter Linux verschlüsseln – Asymmetrische Verschlüsselung mit GPG :: ITv4.de
Dateien unter Linux verschlüsseln – Asymmetrische Verschlüsselung mit GPG

GPG ist eine kostenlose, weit verbreitete Verschlüsselungssoftware zum Ver- und Entschlüsseln von Dateien. In diesem Beitrag erkläre ich kurz und einfach, wie man mithilfe eines Public-Keys und dem Private-Key Dateien ver- und entschlüsseln kann. Darauf folgen noch weitere nützliche Befehle.

Wie funktioniert die asymmetrische Verschlüsselung?

Bei der asymmetrischen Verschlüsselung gibt es einen Private Key und einen bzw. mehrere Public Keys. Ich erkläre eine Verschlüsselung einmal kurz anhand von Person A, welche eine Datei für Person B verschlüsseln möchte.

Person B stellt Person A einen Public Key zur Verfügung, damit diese eine Datei sicher (also verschlüsselt) an sie übertragen kann. Dieser Schlüssel ist öffentlich und es macht auch nichts, wenn ein Dritter an diesen gelangt. Diesen Key kann man sich als offenes Schloss vorstellen. Person A verschlüsselt nun für Person B mit diesem Key die Datei, das Schloss wird geschlossen.

Person B empfängt diese Datei nun. Da sie den Private Key besitzt, kann sie diese Datei entschlüsseln, also das Schloss mit dem Schlüssel öffnen. Niemand sonst kann das Schloss öffnen.

Anders herum läuft es ab, wenn Person B eine Datei verschicken möchte und Person A sichergehen soll, dass diese Datei wirklich von Person B stammt. Dann muss Person B die Datei signieren. Dies macht sie mit ihrem eigenen Private Key – denn den hat ja nur Person B. Person A muss im Besitz ihres Public Keys sein, um die Signatur zu überprüfen. Zusätzlich kann Person B die Datei aber auch noch mit dem Public Key von Person A verschlüsseln, sofern der Schlüssel vorliegt. Dann ist die Datei für Person A verschlüsselt und signiert von Person B.

GPG installieren

Zum Installieren von GPG unter Debian oder Ubuntu muss lediglich folgender Befehl in der Shell ausgeführt werden, außerdem wird das notwendige Paket dirmngr mit installiert:

sudo apt-get install gnupg2 dirmngr

Public- und Private-Key generieren

Zunächst müssen für die asymmetrische Verschlüsselung ein Public-Key und ein Private-Key generiert werden. Der Public-Key ist, wie der Name schon sagt, öffentlich. Jeder kann ihn haben, er ist kein Geheimnis, denn er dient lediglich zum Verschlüsseln. Zum Entschlüsseln werden dann der Private-Key sowie das hinterlegte Passwort benötigt. Dieser muss sorgfältig aufbewahrt werden und darf nicht an die Öffentlichkeit. Mit ihm lassen sich alle verschlüsselten Daten entschlüsseln.

Mit folgendem Befehl generierst du deine Keys:

gpg --full-generate-key

Gib zunächst eine 1 ein, um die Auswahl RSA and RSA zu wählen.

Für die höchste Sicherheit sollen die Schlüssel 4096 Bits groß sein. Desto größer, desto sicherer. Ein "Upgrade" ist später nicht mehr möglich.

Der Einfachheit halber sollen die Schlüssel nicht ablaufen, daher nun 0 eingeben und noch mit Y bestätigen. Soll deiner nur für einen bestimmten Zeitraum gültig sein, solltest du bedenken, dass nach Ablauf das Verschlüsseln mit diesem Key nicht mehr möglich ist. Das Entschlüsseln funktioniert weiterhin. Der Schlüssel muss in diesem Falle manuell verlängert und wieder verteilt werden, was mit Aufwand verbunden ist.

Jetzt noch einen Namen für den Key, deine E-Mail-Adresse und optional eine Bemerkung eingeben. Ich verwende encrypter. Bestätige die Eingaben anschließend mit o.

Screenshot

Vergib nun ein Passwort, welches für alle Verschlüsselungen mit diesem Key verwendet werden soll. Dieses darf nicht zu einfach sein, da das Programm sonst die Eingabe verweigert.

Screenshot

Das Generieren kann einige Minuten dauern, es erscheint auch kein Fortschrittsbalken oder Ähnliches. Das ist ganz normal, nicht wundern. Um den Prozess zu beschleunigen, kann man in einer weiteren Shell einige rechenintensive Befehle ausführen, wie beispielsweise diesen:

dd if=/dev/sda of=/dev/zero

Ist der Vorgang abgeschlossen, erscheint diese Art von Ergebnis:

Screenshot

Jetzt wird der Public-Key exportiert:

gpg --export --armor encrypter > encrypterPublicKey.asc

Dieser Key wird nun an die Personen verschickt, die Dateien für dich verschlüsseln und übertragen möchten.

Public-Key Empfänger: Schlüssel importieren

Der Empfänger deines Public-Keys importiert nun deinen öffentlichen Schlüssel:

gpg --import encrypterPublicKey.asc

Screenshot

Public-Key vertrauen

Der importe Schlüssel sollte nun noch als vertrautlich gekennzeichnet werden, um keine Warnhinweise von GPG zu erhalten. Du solltest dir dabei sicher sein, dass dieser Schlüssel auch wirklich von der richtigen Person stammt.

gpg --edit-key encrypter

In der Shell von GPG gibst du nun

trust

ein und drückst die 5 und daraufhin y. Beende die Shell anschließend mit

quit

Screenshot

Datei verschlüsseln

Mit folgendem Befehl können du, und auch die Besitzer von deinem Public-Key, Dateien verschlüsseln. Ich verschlüssele in diesem Beispiel eine einfache .txt-Datei.

Beim ersten Verschlüsseln prüft GPG noch die Datenbank der vertrauenswürdigen Schlüssel, von nun an erscheint keinerlei Meldung, nachdem der Befehl erfolgreich ausgeführt wurde.

gpg -e -r encrypter Datei.txt

Datei entschlüsseln

Du als Besitzer vom Private-Key kannst die Datei nun mit folgendem Befehl entschlüsseln. Zum Entschlüsseln der Datei ist dein für den Schlüssel festgelegtes Passwort notwendig. Diese Abfrage erscheint nicht jedes Mal, da das Passwort für einige Zeit zwischengespeichert wird.

gpg -d -o Datei.txt Datei.txt.gpg

Screenshot

Datei verschlüsseln & signieren

Wie kann der Empfänger eigentlich sicher sein, dass auch wirklich der erwartete Sender die Datei verschlüsselt hat? Richtig, gar nicht.

Damit der Empfänger sicherstellen kann, dass auch wirklich der richtige Sender die Datei verschlüsselt hat, kann der Verschlüsseler die Datei noch zusätzlich signieren. Das Funktioniert dann genau umgekehrt: Mit dem Private-Key wird signiert und mit dem Public-Key wird die Signatur überprüft.

Für die Verwendung mit GPG wird einfach das sign-Parameter in den Befehl mit eingefügt.

Der Verschlüsseler muss das Passwort von seinem Private-Key eingeben, sofern er nur einen Private-Key im KeyRing hat:

gpg -e -r encrypter --sign Datei.txt

Hat er mehrere Private-Keys und möchte mit einem bestimmten signieren, muss folgender Befehl abgesetzt werden und dabei die E-Mail-Adresse abgeändert werden:

gpg -e -r encrypter --sign --default-key mail@example.com Datei.txt

Zum Entschlüsseln wird der übliche Befehl verwendet, hier ändert sich nichts:

gpg -d -o Datei.txt.gpg

Nach dem Entschlüsselungsvorgang wird nun eine Information über denjenigen angezeigt, der die Datei verschlüsselt hat.

Wurde die Datei von einer unbekannten Person verschlüsselt, dessen Public-Key du nicht besitzt, würde folgende Meldung erscheinen:

gpg: encrypted with 4096-bit RSA key, ID XXXXXXXXXXXXXXXX, created 2020-03-09
      "encrypter <test@eurenikz.de>"
gpg: Signature made So 08 Mär 2020 19:53:20 CET
gpg:                using RSA key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
gpg: Can't check signature: public key not found

Für den Fall, dass du den Public-Key besitzt, diesem aber noch nicht vertraut hast, erscheint folgende Ausgabe:

gpg: encrypted with 4096-bit RSA key, ID XXXXXXXXXXXXXXXX, created 2020-03-09
       "encrypter <test@eurenikz.de>"
gpg: Signature made So 08 Mär 2020 19:58:51 CET
gpg:                using RSA key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
gpg: Good signature from "DerSender <sender@example.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX  XXXX XXXX XXXX XXXX XXXX

Der Public-Key wurde erkannt, aber ihm wurde noch nicht vertraut. Zum Sicherstellen, ob der Schlüssel auch wirklich vom Sender stammt, können beide Parteien beispielsweise in der Ausgabe von gpg --list-keys den RSA-Schlüssel (Fingerprint) vergleichen. Das ist die 40-stellige Zeichenfolge über der E-Mail-Adresse.

Wurde dem Schlüssel nun vertraut, erscheint folgende Erfolgs-Meldung beim Entschlüsseln:

gpg: encrypted with 4096-bit RSA key, ID XXXXXXXXXXXXXXXX, created 2020-03-09
      "encrypter <test@eurenikz.de>"
gpg: Signature made So 08 Mär 2020 20:01:03 CET
gpg:                using RSA key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
gpg: Good signature from "DerSender <sender@example.com>" [ultimate]

Public-Key zum Schlüsselserver hochladen

Damit Andere deinen Public-Key ganz einfach importieren können, ohne dass du diesen verschicken musst, kannst du ihn auch ganz einfach zu einem öffentlichen Schlüsselserver hochladen. Ich verwende in diesem Beispiel den Schlüsselserver keys.openpgp.org. Der RSA KEY ist die die 40-stellige Zeichenfolge über der E-Mail-Adresse vom Schlüssel aus der Ausgabe von gpg --list-keys.

gpg --send-keys --keyserver keys.openpgp.org RSA KEY

Public-Key vom Schlüsselserver herunterladen

Sehr praktisch sind sogenannte Schlüsselserver. Dort werden Public-Keys gesammelt und können von Clients einfach abgerufen werden. Lädst du deinen Public-Key zu einem dieser Server hoch, kann nun jede beliebige Person, welche etwas für dich verschlüsseln möchte, diesen Key herunterladen und damit für dich verschlüsseln, ohne dich zuerst um Zusendung des Keys zu bitten.

gpg --keyserver keys.openpgp.org --search-keys mail@example.com

Alle Funde werden nacheinander angezeigt, beginnend mit Fund Nummer 1. Dies ist in der Regel der richtige Schlüssel, daher wird er mit der Eingabe von 1 importiert.

Sofern man sicher ich, dass der Schlüssel der richtige Person gehört, wird ihm jetzt noch vertraut. Wie das geht, habe ich zuvor bereits erklärt.

Alle Schlüssel aus dem KeyRing ausgeben

Den sogenannten KeyRing kann man sich als Schlüsselbund vorstellen, an dem alle deine Public- und Private-Keys hängen. Sie sind in deinem System gespeichert.

Mit folgendem Befehl kannst du dir alle in deinem System hinterlegten Public-Keys ausgeben lassen. Das sind alle, die du jemals generiert oder importiert hast:

gpg --list-keys

Und mit folgendem Befehl die Private-Keys:

gpg --list-secret-keys

Schlüssel aus dem KeyRing löschen

Verwende folgenden Befehl, um einen Public-Key aus deinem KeyRing zu löschen. Beachte jedoch, dass dies nicht möglich ist, wenn du noch den dazugehörigen Private-Key besitzt.

gpg --delete-key encrypter

Mit folgendem löschst du einen Private-Key:

gpg --delete-secret-key encrypter

Public-Key exportieren

Einen Public-Key kannst du mit diesem Befehl exportieren:

gpg --export encrypter > encrypterPublicKey.asc

Private-Key exportieren und importieren

Einen Private-Key kannst du mit diesem Befehl exportieren:

gpg --export-secret-keys encrypter > encrypterPrivateKey.asc

... Und so importieren:

gpg --import encrypterPrivateKey.asc

Denke immer daran, einem importieren Key entsprechend zu vertrauen. Wie das geht, habe ich ja bereits weiter oben erklärt.


Zuletzt aktualisiert
Drucken
War dieser Artikel hilfreich?
1
Hinterlasse einen Kommentar

Hast du Fragen, Probleme oder Anregungen? Hier kannst du öffentliches Feedback geben, anderen helfen und selbst um Hilfe bitten.

Folgende BBCodes sind erlaubt: [B], [I], [U], [CODE] und [MARK].

Die mit * markierten Felder sind Pflichtfelder. Möchtest du über neue Antworten auf deinen Kommentar informiert werden, kannst du deine E-Mail-Adresse hinterlegen. Diese wird nicht veröffentlicht.

Janis Mades
Janis Mades

Ich bin Janis (aka. EurenikZ), 23 Jahre alt und komme aus Frankfurt am Main. Ich habe eine abgeschlossene IHK-Ausbildung zum Fachinformatiker für Systemintegration und arbeite als Junior IT-Administrator in einem IT-Systemhaus. Neben meinem IT-Blog beschäftige ich mich viel mit diversen IT-Themen und meinen Webseiten sowie Telegram Bots und biete IT-Dienstleistungen an.

Themen
Melde dich für den Newsletter an

Mit dem kostenlosen Newsletter wirst du gelegentlich über die neuesten Tipps & Tricks per E-Mail informiert!

Ich verwende Cookies 🍪

Du kannst deine Zustimmung jederzeit widerrufen.

Verarbeitungszwecke

Ich setze Cookies ein, um meinen Blog stetig für dich zu verbessern und meine für dich kostenlosen Inhalte zu finanzieren. Dabei ist es möglich, dass Daten außerhalb des EWR verarbeitet, Nutzungsprofile gebildet und mit Daten von anderen Webseiten angereichert werden.

Indem du auf "Zustimmen und weiter" klickst, stimmst du diesen Datenverarbeitungen freiwillig zu. Mehr Informationen findest du in der Datenschutzerklärung. Dort kannst du auch jederzeit deine Entscheidung zu Cookies widerrufen.

Ich übernehme keinerlei Haftung auf die Richtigkeit meiner Beiträge und daraus folgenden Schäden.

Oder

Melde dich mit deinem EZ-Account an und besuche alle meine Webseiten werbefrei und ohne Tracking. Der EZ-Account ist kostenlos.



Impressum