GPG - Sicheren Schlüssel erstellen und Ordner verschlüsseln
GPG maximal hart: Schlüssel erstellen & kompletten Ordner sicher verschlüsseln
Warum diese Variante? Wir setzen auf ECC/Curve25519 (Ed25519/X25519), bevorzugen AES-256 und SHA-512, nutzen, wo möglich, AEAD/OCB (authentifizierte Verschlüsselung) und verstecken Dateinamen, indem wir erst archivieren und dann verschlüsseln. Das ergibt ein robustes Setup mit wenig Angriffsfläche.
0) Vorbereitungen & Umgebung härten
# Moderne GnuPG-Version sicherstellen (2.2+ gut, 2.4+ besser):
gpg --version
# Terminal-Integration, damit die Passphrase-Abfrage sauber ist:
export GPG_TTY=$(tty)
# Schreibrechte streng:
umask 077
mkdir -p ~/.gnupg && chmod 700 ~/.gnupg
Side Fact: umask 077 sorgt dafür, dass neu erzeugte Dateien/Backups standardmäßig nur für dich lesbar sind.
1) Sehr starken OpenPGP-Schlüssel erzeugen (ECC/Curve25519)
Nun musst du folgenden Befehl eingeben: Wir nutzen den Experten-Dialog, wählen „ECC und ECC“ und dann Curve25519. Das erzeugt einen Ed25519-Signierschlüssel plus X25519-(cv25519)-Verschlüsselungs-Subkey – kurz, schnell, sehr stark.
gpg --expert --full-generate-key
# Im Dialog:
# Typ: (9) ECC und ECC → Kurve: Curve25519
# Ablaufdatum: z.B. 2y (später verlängerbar)
# Name/E-Mail setzen
# lange, zufällige Passphrase vergeben
Side Fact: Diese Wahl ist Best-Practice; sie liefert moderne Sicherheit mit kleinen Schlüsseln und ist breit unterstützt.
1.1) Fingerprint notieren & Revocation vorbereiten
# Schlüssel sichten:
gpg --list-keys
gpg --fingerprint "Dein Name"
# Sofort ein Widerrufszertifikat erzeugen (offline aufbewahren!):
gpg --output revoke.asc --gen-revoke "Dein Name"
Side Fact: Das Widerrufszertifikat ist deine Notbremse, falls du den privaten Schlüssel verlierst oder kompromittiert siehst.
2) GPG-Konfiguration hart setzen (Algorithmen & Leaks minimieren)
Jetzt trägst du starke Defaults ein – sinngemäß unser „--verysecure“, denn einen echten Schalter mit diesem Namen gibt es nicht; wir kombinieren geprüfte Optionen, die GnuPG die sichersten Verfahren wählen lassen.
# ~/.gnupg/gpg.conf (neu anlegen, falls nicht vorhanden)
# -- bevorzugte Ciphers/Hashes (wir priorisieren AES-256 & SHA-512):
personal-cipher-preferences AES256 AES192 AES
personal-digest-preferences SHA512 SHA384 SHA256
cert-digest-algo SHA512
# Ausgehende ASCII-Armor-Banner minimieren:
no-emit-version
no-comments
# Optional: Empfänger-IDs verbergen (Anonymisierung der Empfänger):
# Achtung: kann Decrypt bei vielen Schlüsseln etwas verlangsamen.
throw-keyids
# Optional (wenn keine Alt-Clients beteiligt): AEAD/OCB erzwingen.
# Kann die Integrität zusätzlich absichern; siehe Kompatibilitätshinweis weiter unten.
# (Alternativ direkt auf der CLI: --force-ocb )
# Ende gpg.conf
Side Fact: throw-keyids bzw. --hidden-recipient versteckt die Ziel-Key-IDs im Ciphertext, was gegen Traffic-Analyse hilft; no-emit-version spart banale Fingerprinting-Infos ein.
2.1) Agent-Caching abstellen (höchste lokale Disziplin)
# ~/.gnupg/gpg-agent.conf
no-allow-external-cache
default-cache-ttl 0
max-cache-ttl 0
pinentry-timeout 0
# Ende gpg-agent.conf
# Agent neu laden:
gpgconf --reload gpg-agent
Hinweis: Ohne Cache ist es lästig, aber am sichersten – jede Nutzung verlangt die Passphrase erneut.
3) Ordner so verschlüsseln, dass Dateinamen verborgen bleiben
Nun musst du folgenden Befehl eingeben: Wir packen den Ordner deterministisch in ein Tar-Archiv und verschlüsseln den Datenstrom direkt – Dateinamen verschwinden, Metadaten werden geglättet, und du bekommst eine
.tar.gpg
-Datei.# Variablen
ORDNER="mein_geheimer_ordner"
EMPFAENGER="Dein Name <you@example.com>" # oder: 40-stelliger Fingerprint
OUT="mein_geheimer_ordner.tar.gpg"
# Maximale Härte (mit AEAD/OCB, GnuPG 2.3/2.4+):
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 (falls AEAD/OCB bei Gegenstellen Probleme macht):
# identisch, nur ohne --force-ocb
Side Fact: tar → gpg schützt nicht nur die Inhalte, sondern auch Struktur und Dateinamen; --force-ocb aktiviert eine moderne AEAD-Betriebsart, die Integrität und Authentizität des Datenstroms pro Chunk absichert.
3.1) Optional: Empfänger verschleiern & Banner weglassen
# Anonymisierte Empfänger (versteckt deine/n Key-ID):
# ... | gpg --encrypt -R "$EMPFAENGER" --cipher-algo AES256 --force-ocb -o "$OUT"
# oder global via gpg.conf (throw-keyids/no-emit-version), s. Abschnitt 2.
3.2) Erfolg prüfen (ohne zu entschlüsseln)
gpg --list-packets "$OUT" | sed -n '1,30p'
# Du siehst Paket-/Algo-Infos und (falls nicht versteckt) Empfänger-IDs.
3.3) Klartext beseitigen (vorsichtig, SSD!)
# Auf klassischen HDDs:
shred -vzun 3 -r -- "$ORDNER"
# Auf SSDs ist shred nicht zuverlässig → besser Vollverschlüsselung (LUKS) einsetzen.
Wichtig: Auf SSD/CoW-FS (btrfs, zfs) taugt shred nicht; sichere dich durch Voll-Disk-Verschlüsselung ab und lagere Geheimnisse nur dort.
4) Entschlüsseln & auspacken – bewusst zweistufig
gpg --output ordner.tar --decrypt mein_geheimer_ordner.tar.gpg
tar -xf ordner.tar
Side Fact: GPG ist immer hybrid: Ein Zufallssitzungsschlüssel (z. B. AES-256) verschlüsselt die Daten; dieser wird asymmetrisch für deinen Public Key verpackt.
5) Alternative mit Bordmittel: gpgtar
(kompakt & sicher)
Nun musst du folgenden Befehl eingeben: Wenn du es gern in einem Werkzeug hast, erledigt
gpgtar
das Archivieren + Verschlüsseln in einem Rutsch.# Erzeugt direkt ein verschlüsseltes Archiv (Dateinamen verborgen):
gpgtar --encrypt --recipient "$EMPFAENGER" --output geheim.gpg "$ORDNER"
# Entschlüsseln & auspacken:
gpgtar --decrypt --output entpackt "$PWD/geheim.gpg"
Side Fact:
gpgtar
ist praktisch ein „gpg-isiertes“ tar
und nutzt intern die gleichen OpenPGP-Mechanismen.6) Zusätzliche Härtungsschritte (wenn „maximal“ wirklich maximal sein soll)
- Hardware-Token (YubiKey/Smartcard): Private Keys aufs Token migrieren, sodass das Schlüsselmaterial den Rechner nie verlässt. Nutze
gpg --card-edit
/gpg-card
. - Primärschlüssel offline halten: Mit Subkeys arbeiten, Primärschlüssel nur offline (z. B. in einem Safe-USB).
- Passphrase-Qualität: Lange Diceware-Phrasen (6–8+ Wörter) oder 20–30+ Zufallszeichen aus einem Passwort-Manager.
- Key-Rotation & Ablauf: Ablaufdatum setzen (1–2 Jahre) und regelmäßig verlängern/rotieren; Widerrufszertifikat prüfen.
- Kein unnötiges Armor-Gebimmel: ASCII-Armor nur, wenn du Inhalte per Textkanal überträgst; sonst binär lassen.
7) Schnellreferenz (kopieren, anpassen, fertig)
# Schlüssel erstellen (interaktiv, Curve25519):
gpg --expert --full-generate-key
# Ordner → deterministisches Tar → GPG (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 -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: Falls eine Gegenstelle mit sehr alten OpenPGP-Stacks Probleme hat, entferne --force-ocb
(dann klassisches MDC statt AEAD). Für lokale Backups bleib bei OCB.