GPG unter Linux (Ubuntu 20.04 LTE)

GPG unter Linux (Ubuntu 20.04 LTE)

Installation

apt install -y gpg

Es gibt zwei Typen von Verschlüsselung: Symmetrisch und asymmetrisch. GPG unterstützt beide mit verschiedenen Algorithmen für jede Methode. Die bekanntesten sind AES für symmetrisch und RSA für asymmetrisch. ECDSA beginnt jedoch langsam, RSA zu ersetzen.

Symmetrisch

Symmetrisch verschlüsseln

Für die Symmetrische Verschlüsselung benötigt man ein Passwort (Passphrase), das beide Parteien (Sender und Empfänger) besitzen.

Symmetrisch verschlüsselte Dateien können von jedem, der die Passphrase besitzt, entschlüsselt werden. Kein bestimmter Empfänger. Die Passphrase kann mit vielen Personen geteilt werden. Dies kann nützlich sein, um Dateien nur lokal mit einer einfachen Passphrase zu verschlüsseln oder um ein Dokument zu verschlüsseln, bevor Sie es an jemanden senden. Sie müssen allerdings einen anderen Kanal finden, um ihnen die Passphrase zu senden, wenn sie nicht schon vorher ausgetauscht wurde.

Es gibt zwei Formate für die Ausgabe: binär und Text. Die binäre Version nimmt weniger Platz ein, aber die Text-Version ist etwas einfacher zu handhaben und kann über Textmittel transportiert werden, z. B. in eine E-Mail eingefügt werden. Beide entschlüsseln auf die gleiche Weise.

Wenn Du eine Datei message.txt hast kannst Du diese einfach verschlüsseln:

gpg --symmetric message.txt
# Fordert Sie zur Eingabe einer Passphrase auf und
# erzeugt eine binär verschlüsselte Datei message.txt.gpg

mittels --armor wird die Datei in ein Text-Format verschlüsselt. Mittels --cipher-algo AES256 kann man den Verschlüsselungsalgorithmus wählen. (Per gpg --version findet man die möglichen Algorithmen heraus.)

Symmetrisch entschlüsseln

Bei der Option --decrypt wird automatisch festgestellt, ob die Datei symmetrisch oder ob sie asymmetrisch verschlüsselt wurde. Im Falle der symmetrisch verschlüsselten Datei wird nach der Passphrase gefragt. In folgendem Beispiel wird die Datei message.txt.gpg entschlüsselt und in die Datei decrypted.txt gespeichert:

gpg --decrypt message.txt.gpg > decrypted.txt

Asymmetrisch

Beim Konzept der asymmetrischen Verschlüsselung benötigst Du nicht nur eine Passphrase sondern Du hast einen Privaten (private key) und einen Öffentlichen Schlüssel (public key). Den public key musst Du Deinen Kommunikationspartnern mitteilen. Dies passiert bei PGP mittels Key Servern auf denen Du deinen Public key speicherst, damit jeder auf ihn zugreifen kann. Ein Public Key ist IMMER einer konkreten E-Mail Adresse zugewiesen. Somit benötigst Du mehrere Schlüsselpaare (public und private key) wenn Du von mehreren E-Mail Adressen aus kommunizieren willst.

Schlüsselmanagement

Auflisten der asymmetrischen Schlüssel

Folgendes Kommando zeigt alle deine Private Keys sind noch keine vorhanden ist das Ergebnis leer

gpg --list-secret-keys

Erzeuge Dein Schlüsselpaar

Mit folgendem Kommando erzeugst Du ein Schlüsselpaar (Du musst nur noch Deinen Namen und die zum Schlüssel gehörige E-Mail Adresse eingeben):

gpg --gen-key

Das Ergebnis sieht dann etwa so aus:

public and secret key created and signed.
pub   rsa3072 2021-02-16 [SC] [expires: 2023-02-14]

      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid                      Herwart Wermescher (private) vorname.nachname@meinedomain.com
sub   rsa3072 2021-02-16 [E] [expires: 2023-02-14]

Die 40-stellige Buchstaben-Ziffern-Zeichenfolge (hier mit XXXXXXXXXX ) ist dabei der Hash-Wert, den Du in weiterer Folge benutzen musst um den Schlüssel zu manipulieren.

Mittels gpg --full-generate-key bist Du noch flexibler in der Erstellung des Schlüsselpaares, musst jedoch noch weitere Fragen beantworten.

Nun kannst Du diesen Schlüssel oder einen anderen Schlüssel als Standard für den aktuellen Benutzer auf deinem System setzen, indem Du Folgendes am Ende der ~/.bashrc Datei einfügst:

export GPGKEY=XXXXXXXX

Exportiere Deinen privaten Schlüssel

Es macht Sinn, wenn Sie Ihren privaten Schlüssel exportieren möchten, um ihn irgendwo zu sichern. Sie sollten ihn im Text-Format exportieren (um ihn e.g. auf Papier auszudrucken oder aufzuschreiben).

Geben Sie Ihren privaten Schlüssel jedoch niemals an andere Personen weiter.

gpg --export-secret-keys --armor XXXXXXXXXX > ./my-priv-gpg-key.asc

Pushe Deinen Public Key auf einen Key Server

Normalerweise möchtest Du Deinen öffentlichen Schlüssel irgendwo veröffentlichen, damit ihn jeder finden und verwenden kann. (Um Dateien zu Verschlüsseln, die Du als einziger entschlüsseln kannst. Oder um von Dir signierte Nachrichten zu überprüfen. Oder um Code in das zentrale Maven-Repository zu pushen – diesen musst Du mit deinem Private Key signieren, der einen Public Key im MIT Public Key Server hat.)

gpg --keyserver hkps://pgp.mit.edu --send-keys XXXXXXXXXX

Du kannst auf diesem Key Server auch nach public Keys suchen:

https://pgp.mit.edu/

Lösche einen Schlüssel

Sie können einen privaten Schlüssel mit dem folgenden Befehl aus dem lokalen Speicher löschen:

# Private keys
gpg --delete-secret-keys XXXXXXXXXX

Es kann notwendig sein auch Öffentliche Schlüssel (von Kommunikationspartnern) aus dem lokalen Speicher zu löschen:

# Public keys
gpg --delete-keys XXXXXXXXXX

Schlüssel importieren

Wenn Du dich auf einem neuen Computer, einem anderen Betriebssystem, einer anderen virtuellen Maschine oder einer Neuinstallation befinden und Deinen Private Key aus einem Backup importieren müsst verwende folgenden Befehl:

# Egal ob binär oder Text. Egal ob private key oder public key
gpg --import ./my-priv-gpg-key.asc

Dabei wird vor allem

  • ein Private Key importiert, wenn Du ein Backup wiederherstellst
  • ein Public Key importiert, um Du eine private Nachricht an eine andere Person senden willst, oder eine Signatur von ihr überprüfen willst.

Um einen Schlüssel direkt vom KeyServer zu importieren verwende folgenden Befehl:

gpg --keyserver pgp.mit.edu  --recv XXXXXXXXXX

Hinterlassen Sie einen Kommentar