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:
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