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.

Was ist PGP bzw. GPG?

PGP steht für "Pretty Good Privacy" und ist eine Methode zur asymmetrischen Verschlüsselung von Daten, die dazu dient, die Privatsphäre von Nutzern zu schützen. PGP wird häufig zum Verschlüsseln von E-Mails und anderen elektronischen Nachrichten verwendet, um sicherzustellen, dass sie nur von dem Absender und dem Empfänger gelesen werden können. "GPG" steht für "Gnu Privacy Guard". Es war das ursprüngliche urheberrechtlich geschützte Freeware-Programm; GPG ist die Neufassung von PGP.

Die Funktionsweise von PGP basiert auf dem Konzept des "öffentlichen Schlüssels", bei dem jeder Nutzer einen öffentlichen und einen privaten Schlüssel besitzt – ein Schlüsselpaar. Der öffentliche Schlüssel kann von jedem genutzt werden, um Nachrichten an den Nutzer zu verschlüsseln, während der private Schlüssel nur vom Nutzer selbst genutzt werden kann, um Nachrichten zu entschlüsseln und zu signieren.

Wenn ein Nutzer eine Nachricht verschlüsseln möchte, benötigt er den öffentlichen Schlüssel des Empfängers. Anschließend wird die verschlüsselte Nachricht an den Empfänger gesendet. Der Empfänger kann dann seinen privaten Schlüssel verwenden, um die Nachricht zu entschlüsseln und zu lesen.

Um eine Nachricht mit PGP zu signieren, muss der Absender zunächst seine private Schlüssel verwenden, um eine digitale Signatur für die Nachricht zu erstellen. Diese digitale Signatur dient als Beweis dafür, dass die Nachricht tatsächlich vom Absender stammt und nicht von jemand anderem manipuliert wurde. Wenn der Empfänger die Nachricht erhält, kann er die digitale Signatur mit dem öffentlichen Schlüssel des Absenders verifizieren, um sicherzustellen, dass die Nachricht tatsächlich vom angegebenen Absender stammt.

Das PGP-System bietet ein hohes Maß an Sicherheit, da es sehr schwierig ist, die Nachrichten ohne den privaten Schlüssel des Empfängers zu entschlüsseln. Auf diese Weise kann PGP dazu beitragen, die Privatsphäre von Nutzern zu schützen und sicherzustellen, dass ihre Nachrichten nur von den gewünschten Empfängern gelesen werden können. Zusätzlich zum privaten Schlüssel sollte dieser mit einem Kennwort geschützt werden, um die Sicherheit noch einmal zu erhöhen.

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.

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.

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:

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

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

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

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.

Bei Fragen oder Anregungen freue ich mich natürlich über eure Kommentare.

Kategorie: Security

Tags: , ,

0 Kommentare

1.827 Aufrufe

Über mich

Ich bin Janis (aka. EurenikZ), 24 Jahre alt und komme aus der Nähe von 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.

1994 Aufrufe

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten.

Durchschnittliche Bewertung 4 / 5. Anzahl Bewertungen: 1

Bisher keine Bewertungen. Sei der Erste, der diesen Beitrag bewertet!

Es tut mir Leid, dass der Beitrag für dich nicht hilfreich war!

Wie kann ich diesen Beitrag verbessern?

Hinterlasse einen Kommentar

  • Die Zwei-Faktor-Authentifizierung schützt deine Accounts vor Hackern und Unbefugten. Wie du 2FA bei deiner Nextcloud aktivierst und für einen Benutzer einrichtest, zeige ich dir in diesem Beitrag. Was ist 2FA? Das Bundesamt für Sicherheit in der Informationstechnik (BSI) empfiehlt ausdrücklich[...]

    13.09.2023 14:08

    114
  • Die Sicherheit der Nextcloud ist von entscheidender Bedeutung, da sie wichtige und sensible Daten enthalten kann. Eine effektive Methode, um deine Cloud vor potenziellen Sicherheitsbedrohungen zu schützen, ist die Kombination mit Fail2ban. Fail2ban ist eine bewährte Software zur Intrusion Detection[...]

    10.09.2023 12:49

    110
  • Die Zwei-Faktor-Authentifizierung schützt den WordPress-Account deiner Website vor Hackern und Unbefugten. Wie du 2FA unter WordPress einrichtest, zeige ich dir hier. Was ist 2FA? Das Bundesamt für Sicherheit in der Informationstechnik (BSI) empfiehlt ausdrücklich die Verwendung einer Zwei-Faktor-Authentisierung. Eine Zwei-Faktor-Authentifizierung[...]

    05.04.2023 20:55

    134
  • Die Zwei-Faktor-Authentifizierung schützt deine Accounts vor Hackern und Unbefugten. Wie du 2FA bei deiner Nextcloud aktivierst und für einen Benutzer einrichtest, zeige ich dir in diesem Beitrag. Was ist 2FA? Das Bundesamt für Sicherheit in der Informationstechnik (BSI) empfiehlt ausdrücklich[...]

    13.09.2023 14:08

    114
  • Die Sicherheit der Nextcloud ist von entscheidender Bedeutung, da sie wichtige und sensible Daten enthalten kann. Eine effektive Methode, um deine Cloud vor potenziellen Sicherheitsbedrohungen zu schützen, ist die Kombination mit Fail2ban. Fail2ban ist eine bewährte Software zur Intrusion Detection[...]

    10.09.2023 12:49

    110