GPG - Sicheren Schlüssel erstellen und Ordner verschlüsseln
GPG maximal hart: Schlüssel erstellen & kompletten Ordner sicher verschlüsseln (mit Erklärungen)
0) Vorbereiten & Umgebung schützen – warum überhaupt?
Eine aktuelle GnuPG-Version bringt neue Sicherheitsfeatures (z. B. AEAD/OCB). GPG_TTY
sorgt für saubere Passphrase-Prompts. umask 077
und strikte Rechte verhindern, dass Konfigs/Backups aus Versehen für andere lesbar sind.
# Version prüfen (2.4+ ideal):
gpg --version
# Terminal-Integration:
export GPG_TTY=$(tty)
# Verzeichnis und Rechte:
umask 077
mkdir -p ~/.gnupg && chmod 700 ~/.gnupg
1) Sehr starken OpenPGP-Schlüssel anlegen
ECC/Curve25519 liefert heute eine hervorragende Kombination aus Sicherheit, Geschwindigkeit und Kompatibilität: du erhältst einen Ed25519-Signierschlüssel plus X25519-(cv25519)-Verschlüsselungs-Subkey. Das ist „state of the art“ für die meisten Anwendungsfälle.
gpg --expert --full-generate-key
# Im Dialog:
# Typ: (9) ECC und ECC → Kurve: Curve25519
# Ablaufdatum: z.B. 2y (verlängerbar)
# Name/E-Mail setzen
# sehr starke Passphrase vergeben
1.1) Fingerprint & Notfall: Widerrufszertifikat
Der Fingerprint identifiziert deinen Schlüssel zweifelsfrei. Ein Widerrufszertifikat ist deine „Notbremse“, falls der private Schlüssel verloren/kompromittiert ist.
gpg --list-keys
gpg --fingerprint "Dein Name"
gpg --output revoke.asc --gen-revoke "Dein Name"
3) Einen kompletten Ordner verschlüsseln – Dateinamen & Struktur verbergen
Ein simples „alle Dateien einzeln verschlüsseln“ leakt Dateinamen und Ordnerstruktur. Besser: zuerst deterministisch zu tar
bündeln (glättet Metadaten), dann gpg
drüber. Ergebnis: .tar.gpg
– sauber, dicht, auditierbar.
3.0) Pipeline: tar → gpg (maximale Härte)
# Variablen
ORDNER="mein_geheimer_ordner"
EMPFAENGER="Dein Name <you@example.com>" # oder: 40-stelliger Fingerprint
OUT="mein_geheimer_ordner.tar.gpg"
# Deterministisch packen & sofort verschlüsseln (mit AEAD/OCB):
tar --sort=name \
--mtime='UTC 1970-01-01' \
--owner=0 --group=0 --numeric-owner \
-C "$(dirname "$ORDNER")" -cf - "$(basename "$ORDNER")" \
| gpg --encrypt \
--recipient "$EMPFAENGER" \
--cipher-algo AES256 \
--force-ocb \
--output "$OUT"
# Kompatibilitätsmodus (ohne OCB):
# ... | gpg --encrypt --recipient "$EMPFAENGER" --cipher-algo AES256 -o "$OUT"
3.1) Alternative „aus einem Guss“: gpgtar
gpgtar
kapselt Archivieren + Verschlüsseln in einem Tool – komfortabel und sicher, Dateinamen bleiben verborgen.
# Erstellen:
gpgtar --encrypt --recipient "$EMPFAENGER" --output geheim.gpg "$ORDNER"
# Entpacken:
gpgtar --decrypt --output entpackt geheim.gpg
3.2) Erfolg prüfen (ohne zu entschlüsseln)
Zur Kontrolle, welche Paket-/Algo-Infos tatsächlich drinstecken (nützlich für Audits):
gpg --list-packets "$OUT" | sed -n '1,40p'
3.3) Originaldaten entfernen – HDD vs. SSD
Auf klassischen HDDs kann shred
sinnvoll sein. Auf SSDs/Copy-on-Write-FS (btrfs, zfs) sind Überschriften nicht zuverlässig – setze dort lieber auf Voll-Disk-Verschlüsselung (LUKS) und sichere Löschprozesse auf Geräteebene.
shred -vzun 3 -r -- "$ORDNER" # ACHTUNG: für SSDs ungeeignet!
blkdiscard
je nach Hardware/Setup.4) Entschlüsseln & auspacken – bewusst zweistufig
Erst entschlüsseln (fragt nach Passphrase/Token), dann das Tar entpacken – so bleibt der Ablauf transparent und nachvollziehbar.
gpg --output ordner.tar --decrypt mein_geheimer_ordner.tar.gpg
tar -xf ordner.tar
5) Schlüssel sichern & Vertrauen setzen – was braucht’s wirklich?
Teile deinen öffentlichen Schlüssel, sichere den privaten offline, und setze die Vertrauensstufe bewusst, damit dein System Signaturen korrekt bewertet.
# Public Key exportieren:
gpg --armor --export "$EMPFAENGER" > publickey.asc
# Private Keys sichern (offline aufbewahren!):
gpg --armor --export-secret-keys "$EMPFAENGER" > privatekey-backup.asc
# Vertrauen setzen (optional):
gpg --edit-key "$EMPFAENGER"
gpg> trust # 5 = ultimate
gpg> save
6) Zusätzliche Härtung – wann lohnt sich der Extra-Aufwand?
- Hardware-Token (YubiKey/Smartcard): Private Keys aufs Token verschieben – Schlüsselmaterial verlässt den Rechner nie. Ideal, wenn Geräte geteilt werden oder du „Defense in Depth“ willst.
- Primärschlüssel offline, Subkeys produktiv: Primärschlüssel nur als „Root of Trust“ offline lagern, mit Subkeys signieren/verschlüsseln – einfachere Rotation.
- Passphrase-Qualität: 6–8+ Diceware-Wörter oder 20–30+ zufällige Zeichen aus Passwort-Manager; regelmäßig rotieren.
- Key-Präferenzen am Key selbst setzen & verteilen: Damit Sender automatisch starke Verfahren wählen (siehe
gpg --edit-key → setpref
).
7) Troubleshooting (kurz & praxisnah)
- OCB wird nicht verwendet? Prüfe
gpg --version
(2.4+) und ob du--force-ocb
gesetzt hast; bei Fremd-Stacks bleibt OCB evtl. unverständlich – dann ohne OCB arbeiten. - Entschlüsseln ist langsam mit „hidden recipients“? Das ist normal: alle eigenen Keys werden probiert. Für Backups ok, für E-Mail eher abwägen.
- Tar meckert über Zeiten/Owner? Stelle sicher, dass du GNU tar nutzt und die Optionen wie oben gesetzt sind.
8) Schnellreferenz
# Schlüssel (Curve25519):
gpg --expert --full-generate-key
# Ordner → deterministisches Tar → GPG (mit OCB):
tar --sort=name --mtime='UTC 1970-01-01' --owner=0 --group=0 --numeric-owner \
-C "$(dirname "$ORDNER")" -cf - "$(basename "$ORDNER")" \
| gpg --encrypt --recipient "$EMPFAENGER" --cipher-algo AES256 --force-ocb -o "$OUT"
# Entschlüsseln:
gpg -o ordner.tar -d "$OUT" && tar -xf ordner.tar
# gpgtar-Variante:
gpgtar --encrypt -r "$EMPFAENGER" -o geheim.gpg "$ORDNER"
gpgtar --decrypt -o entpackt geheim.gpg
Kompatibilitätsnotiz: Für alte Gegenstellen ohne --force-ocb
arbeiten. Für lokale Backups und moderne GnuPG-Umgebungen OCB beibehalten.
No Comments