Verschlüsselung GPG PGP Grundlagen
Dateien und E-Mails verschlüsseln mit GPG/PGP – Grundlagen
Was ist asymmetrische Verschlüsselung?
Asymmetrische Verschlüsselung (auch Public-Key-Kryptographie genannt) basiert auf zwei mathematisch verbundenen Schlüsseln: einem öffentlichen Schlüssel (Public Key) und einem privaten Schlüssel (Private Key). Der öffentliche Schlüssel kann beliebig verteilt werden – nur der private Schlüssel kann Nachrichten entschlüsseln, die mit dem öffentlichen Schlüssel verschlüsselt wurden. Dies macht sichere Kommunikation über unsichere Kanäle möglich.
GPG vs. PGP – Der Unterschied
PGP (Pretty Good Privacy) ist das ursprüngliche kommerzielle Verschlüsselungsprogramm von Symantec. GPG (GNU Privacy Guard) ist eine freie, offene und lizenzfreie Implementierung des OpenPGP-Standards. GPG ist der Branchenstandard unter Linux und bietet identische Funktionalität wie PGP. Beide verwenden das gleiche Dateiformat und Schlüsselsystem.
Wichtige Konzepte
Public Key und Private Key
- Public Key: Der öffentliche Schlüssel wird verteilt und darf jedem bekannt sein. Er verschlüsselt Daten, signiert Daten anderer Personen und prüft deren Signaturen.
- Private Key: Der private Schlüssel bleibt auf Ihrem Computer und ist mit einer Passphrase geschützt. Er entschlüsselt Ihr Postfach und signiert Ihre Nachrichten.
Key Fingerprint
Der Fingerprint ist ein 40-stelliger Hexadezimalwert (oder gekürzt: 16 Zeichen), der den öffentlichen Schlüssel eindeutig identifiziert. Beispiel: 1A2B 3C4D 5E6F 7A8B 9C0D 1E2F 3A4B 5C6D 7E8F 9A0B. Er dient zur Verifizierung, dass der Schlüssel authentisch ist.
Key Server
Key Server sind öffentliche Datenbanken, auf denen Sie Ihren öffentlichen Schlüssel speichern, damit andere ihn finden und importieren können. Populäre Server sind keys.openpgp.org und pgp.mit.edu.
GPG Installation und erste Schritte
Installation
Unter Debian/Ubuntu:
sudo apt update sudo apt install gnupg2
Unter RHEL/CentOS:
sudo yum install gnupg2
Überprüfen Sie die Installation:
gpg --version
Schlüsselpaar generieren
Ein neues Schlüsselpaar erstellen Sie mit:
gpg --gen-key
Sie werden interaktiv gefragt:
- Art des Schlüssels (Standard: RSA und RSA)
- Schlüssellänge (Standard: 3072 Bit, empfohlen: 4096 Bit für zusätzliche Sicherheit)
- Gültigkeitsdauer (Standard: unbegrenzt oder z.B. 2 Jahre)
- Name, E-Mail-Adresse und optionaler Kommentar
- Sichere Passphrase
Beispiel für ein modernes Schlüsselpaar mit ed25519:
gpg --full-generate-key # Wählen Sie: (11) ECC und ECC # Kurve: ed25519 # Gültig für: 0 (unbegrenzt) oder 3y (3 Jahre)
Schlüsselverwaltung
Schlüssel auflisten
Alle öffentlichen Schlüssel in Ihrer Keyring anzeigen:
gpg --list-keys
Alle privaten Schlüssel:
gpg --list-secret-keys
Mit Fingerprint:
gpg --list-keys --fingerprint
Öffentlichen Schlüssel exportieren
Um Ihren Schlüssel anderen zu geben oder zu verteilen:
gpg --export --armor 0x1A2B3C4D > mein-oeffentlicher-schluessel.asc
Oder spezifisch nach E-Mail:
gpg --export --armor max@beispiel.de > max-pubkey.asc
Ohne --armor wird binäres Format verwendet (weniger lesbar).
Öffentlichen Schlüssel importieren
Wenn Sie einen Schlüssel erhalten:
gpg --import max-pubkey.asc
Oder direkt von einem Key Server:
gpg --recv-keys 0x1A2B3C4D
Überprüfen Sie den Fingerprint des importierten Schlüssels:
gpg --fingerprint max@beispiel.de
Datei-Verschlüsselung
Datei verschlüsseln
Verschlüsseln Sie eine Datei mit dem öffentlichen Schlüssel des Empfängers:
gpg --encrypt --recipient 0x1A2B3C4D wichtig.pdf # Oder mit E-Mail: gpg --encrypt --recipient max@beispiel.de wichtig.pdf
Dies erstellt die Datei wichtig.pdf.gpg. Die Original-Datei bleibt unverändert.
Für mehrere Empfänger:
gpg --encrypt --recipient max@beispiel.de --recipient anna@beispiel.de dokument.txt
Datei entschlüsseln
Sie benötigen Ihren privaten Schlüssel und die Passphrase:
gpg --decrypt wichtig.pdf.gpg > wichtig.pdf # Oder: gpg --decrypt wichtig.pdf.gpg --output wichtig.pdf
Sie werden zur Eingabe Ihrer Passphrase aufgefordert.
Digitale Signaturen
Datei signieren
Eine Signatur beweist, dass Sie die Datei erstellt haben und sie seitdem nicht verändert wurde:
gpg --sign dokument.txt
Dies erstellt dokument.txt.gpg in binärem Format. Für ein lesbares Format mit integrierter Signatur:
gpg --clearsign dokument.txt
Dies erstellt dokument.txt.asc – die Original-Datei und die Signatur sind lesbar vermischt.
Signatur überprüfen
Die Signatur überprüfen:
gpg --verify dokument.txt.asc # Ausgabe: Good signature from "Max Mustermann"
Oder um die Datei zu extrahieren:
gpg --decrypt dokument.txt.asc > dokument.txt
Verschlüsseln und signieren kombinieren
Um Ihre Nachricht zu verschlüsseln UND zu signieren:
gpg --sign --encrypt --recipient max@beispiel.de geheim.txt
Dies stellt sicher, dass:
- Nur max@beispiel.de die Datei lesen kann (Verschlüsselung)
- max nachweisen kann, dass Sie die Datei erstellt haben (Signatur)
E-Mail-Verschlüsselung
E-Mail-Inhalt verschlüsseln
Bereiten Sie E-Mail-Inhalte vor:
gpg --encrypt --recipient anna@beispiel.de --armor --output email.asc << EOF Liebe Anna, das ist eine vertrauliche Nachricht. Viele Grüße MAX EOF
Die verschlüsselte Nachricht kopieren Sie dann in Ihr E-Mail-Programm.
Signierte E-Mail senden
Unterschreiben Sie Ihre E-Mail-Nachrichten:
echo "Vertrauliche Nachricht" | gpg --clearsign --armor
Schlüsselserver nutzen
Öffentlichen Schlüssel hochladen
Um Ihren Schlüssel auf einem Key Server zu veröffentlichen:
gpg --send-keys --keyserver keys.openpgp.org 0x1A2B3C4D
Beliebte Keyserver:
- keys.openpgp.org (modern, mit Verifizierung)
- pgp.mit.edu (traditionell, zuverlässig)
- keys.gnupg.net (bewährt)
Schlüssel vom Server abrufen
gpg --recv-keys --keyserver keys.openpgp.org 0x1A2B3C4D
Schlüssel-Vertrauen und Signatur
Trust-Level setzen
Wie sehr vertrauen Sie einem Schlüssel? Setzen Sie das Trust-Level:
gpg --edit-key 0x1A2B3C4D # Dann interaktiv: gpg> trust # Wählen Sie 3 (vollständiges Vertrauen)
Trust-Level:
- 1 = Unbekannt (unknown)
- 2 = Nicht vertraut (don't trust)
- 3 = Teilweise vertraut (marginal trust)
- 4 = Vollständig vertraut (full trust)
- 5 = Absolut vertraut (ultimate trust)
Schlüssel signieren (Key Signing)
Um Ihrem Vertrauen Nachdruck zu verleihen, signieren Sie andere Schlüssel:
gpg --sign-key 0x1A2B3C4D # Bestätigen Sie Ihre Aktion mit 'y'
Dies weist andere Benutzer darauf hin, dass Sie den Schlüssel verifiziert haben.
Symmetrische Verschlüsselung (Passphrase)
Sie können auch ohne Schlüsselpaar mit nur einer Passphrase verschlüsseln:
gpg --symmetric geheim.txt
Dies erstellt geheim.txt.gpg und fordert zur Eingabe einer Passphrase auf. Zum Entschlüsseln:
gpg --decrypt geheim.txt.gpg
Praktisch, wenn Sender und Empfänger sich vorher auf eine Passphrase geeinigt haben – aber weniger sicher als asymmetrische Verschlüsselung.
Wichtige Dateien und Verzeichnisse
| Pfad/Datei | Funktion |
|---|---|
~/.gnupg/ |
Haupt-Konfigurationsverzeichnis für GPG |
~/.gnupg/pubring.gpg |
Ihre öffentlichen Schlüssel und die importierter Schlüssel |
~/.gnupg/secring.gpg |
Ihre privaten Schlüssel (streng geheim!) |
~/.gnupg/gpg.conf |
Konfigurationsdatei für GPG-Einstellungen |
gpg --export-secret-keys --armor 0x1A2B3C4D > secret-key-backup.asc und speichern Sie ihn an einem sicheren, separaten Ort. Verlust bedeutet: Sie können alte Nachrichten nicht mehr entschlüsseln.Praktische Workflow-Beispiele
Beispiel 1: Datei an Anna senden
gpg --encrypt --recipient anna@beispiel.de --armor budget.xlsx > budget.xlsx.asc # Senden Sie budget.xlsx.asc über E-Mail
Beispiel 2: Konfigurationsdatei signieren
gpg --clearsign /etc/myapp/config.conf # Erzeugt config.conf.asc # Andere können die Signatur überprüfen: gpg --verify config.conf.asc
Beispiel 3: Batch-Verschlüsselung mehrerer Dateien
for file in *.pdf; do gpg --encrypt --recipient max@beispiel.de "$file" done
Häufige Fehler und Lösungen
„gpg: decryption failed: No secret key" – Sie haben keinen privaten Schlüssel für die Datei. Sie können sie nicht entschlüsseln.
„gpg: no default secret key" – Setzen Sie Ihren Standard-Schlüssel in ~/.gnupg/gpg.conf: default-key 0x1A2B3C4D
„Bad passphrase" – Sie haben die falsche Passphrase eingegeben. Versuchen Sie es erneut.
Zusammenfassung
GPG/PGP bietet sichere Verschlüsselung und digitale Signaturen für Dateien und E-Mails. Die Grundlagen sind:
- Generieren Sie ein Schlüsselpaar (öffentlich + privat)
- Teilen Sie Ihren öffentlichen Schlüssel
- Importieren Sie Schlüssel anderer
- Verschlüsseln Sie Daten mit öffentlichen Schlüsseln
- Entschlüsseln Sie mit Ihrem privaten Schlüssel
- Signieren Sie wichtige Dateien