Skip to main content

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: StelleOhne sicher,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 Administratorrechtefolgenden besitzt.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.