Skip to main content

GPG - Sicheren Schlüssel erstellen und Ordner verschlüsseln

GPG

2) maximalGPG-Konfiguration hart: Schlüssel erstellen & kompletten Ordner sicher verschlüsseln

Warum diese Variante? Wirhart setzen auf– was, warum, wann?

In diesem Schritt definieren wir, ECC/Curve25519welche Algorithmen GnuPG bevorzugt (Ed25519/X25519)ohne dir exotische Kommandos zuzumuten), bevorzugenwelche AES-256Metadaten wir weglassen, und SHA-512wie, nutzenwir Empfängerinformationen verschleiern können. Das Ziel ist, dass GnuPG bei jeder Verschlüsselung automatisch die robustesten Verfahren auswähltwound zwar so, dass du im Alltag nichts vergisst.

2.0) Grundidee: „Präferenzen“ vs. „erzwingen“
  • Präferenzen (gpg.conf, personal-*) sagen: „Wennglichglich, nimm diese starken Verfahren zuerst.“ Das ist kompatibel und alltagstauglich.
  • Erzwingen (z. B. --cipher-algo AES256) überstimmt allesAEAD/OCB (authentifizierte Verschlüsselung) und verstecken Dateinamen via Archivierung. So minimierst du Angriffsfläche und Metadaten-Leaks.

0) Vorbereitungen & Umgebung härten

# Moderne GnuPG-Version sicherstellen (2.2+ gut, 2.4+/2.5+ 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 nurnützlich für dicheigene lesbarBackups, sind.
aber

1)kann Sehrdie starkenZusammenarbeit OpenPGP-Schlüsselmit erzeugensehr (ECC/Curve25519)

alten Gegenstellen bremsen.
Nun musst du folgenden BefehlSchritt eingeben:machen: Öffne oder erstelle gpg --expert --full-generate-key~/.gnupg/gpg.conf → im Dialog „ECC und ECC“trage wählenFolgendes und dann Curve25519. Ergebnis: Ed25519-Signierschlüssel + X25519-(cv25519)-Verschlüsselungs-Subkey – kompakt, 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 und breit unterstützt.
1.1) Fingerprint notieren & Widerruf vorbereiten
gpg --list-keys
gpg --fingerprint "Dein Name"

# Widerrufszertifikat (offline aufbewahren!):
gpg --output revoke.asc --gen-revoke "Dein Name"
Side Fact: Das Widerrufszertifikat ist deine Notbremse bei Verlust/Kompromittierung.

2) GPG-Konfiguration hart setzen (Algorithmen & Leaks minimieren)

Jetzt trägst du starke Defaults ein – sinngemäß unser „--verysecure“ (den Schalter gibt es nicht); wir kombinieren geprüfte Optionen für maximale Sicherheit.ein.
# ~/.gnupg/gpg.confStarke, moderne Defaults bevorzugen (Vertraulichkeit + Integrität)
personal-cipher-preferences AES256 AES192 AES
personal-digest-preferences SHA512 SHA384 SHA256
cert-digest-algo SHA512

# Kleine Metadaten-Fußabdrücke in ASCII-Armor:
no-emit-version
no-comments

# Optional:(Optional) Empfänger-IDs im Ciphertext verbergen (Anonymisierung):Traffic-Analyse erschweren)
throw-keyids
#
Optional:
Warum?
  • AES-256 bietet sehr starke Vertraulichkeit; SHA-512 hält Signaturen & S2K-Ableitungen robust.
  • no-emit-version/no-comments entfernen triviale „Banner“ aus ASCII-Armor (rein kosmetisch, aber gut gegen überflüssige Fingerprints).
  • throw-keyids bewirkt, dass im Ciphertext nicht steht, für welchen Key er gedacht ist; der Empfänger probiert dann seine Keys durch – etwas langsamer, dafür weniger verräterisch.
2.1) Authenticated Encryption (AEAD/OCB) verständlich

GnuPG unterstützt moderne AEAD-Modi (insb. OCB), bei denen Daten gleichzeitig verschlüsselt und authentifiziert werden; Manipulationen fallen dadurch strikt auf. Für eigene Backups oder Workflows, die du ausschließlich mit aktueller GnuPG-Version verarbeitest, kannst du AEAD gezielt bevorzugen.

Optional, wenn du nur mit modernen GnuPGs arbeitest: AEAD/OCB erzwingenerzwingen.
(moderne,
# authentifizierteBeim Verschlüsselung):sseln:
#gpg via--encrypt CLI:-r "$EMPFAENGER" --cipher-algo AES256 --force-ocb (Alias-o out.gpg --force-aead, aberin.dat
--force-ocb# ist(In aktuellSkripten/Backups bevorzugt)sehr sinnvoll. Für Austausch mit Alt-Clients ggf. weglassen.)
SideWann Fact:nicht? Für Empfänger mit throw-keyidsanderen/ OpenPGP-Implementierungen (ältere Apps, Mobil-Clients) kann OCB/AHEAD noch haken. Für maximalen Datenaustausch lässt du --hidden-recipientforce-ocb verstecktweg; diefür Ziel-Key-IDs;eigene no-emit-versionLangzeit-Backups spartist trivialees Fingerprinting-Infos ein.top.
2.1)2) Agent-CachingEmpfänger abstellenverschleiern – wann es sinnvoll ist

In manchen Situationen möchtest du vermeiden, dass im Ciphertext steht, für wen er gedacht ist (streng,z. B. bei Upload in geteilte Zonen). Das ist kein Allheilmittel gegen Traffic-Analyse, aber sicher)eine nützliche Erschwernis.

# Einmalig in gpg.conf: throw-keyids (s. oben)  ODER pro Aufruf:
gpg --encrypt --hidden-recipient "$EMPFAENGER" -o out.gpg -- in.dat
# Nachteil: Entschlüsseln kann minimal länger dauern (alle eigenen Keys werden probiert).
2.3) Agent-Verhalten härten (Passphrase-Caching)

Der gpg-agent puffert Passphrasen standardmäßig kurzzeitig, um dich nicht bei jeder Aktion zu nerven. Wenn „maximal sicher“ wichtiger als Bequemlichkeit ist, schalte das Caching ab.

Nun musst du folgenden Schritt machen: Öffne oder erstelle ~/.gnupg/gpg-agent.conf und setze:
no-allow-external-cache
default-cache-ttl 0
max-cache-ttl 0
pinentry-timeout 0
# AgentÄnderungen laden:
gpgconf --reload gpg-agent
Warum? Ohne Cache brauchst du die Passphrase häufiger, aber ein fremder Benutzer auf demselben System oder Malware kann sie nicht „abgreifen“, solange sie nicht im Speicher gehalten wird.
2.4) „S2K“ (String-to-Key) gezielt hochdrehen – wozu das gut ist

S2K ist der Prozess, der aus deiner Passphrase einen Schlüssel ableitet, um deine privaten Schlüsseldateien zu schützen (und bei symmetrischer Verschlüsselung die Daten). Moderne GnuPG-Versionen kalibrieren die Iterationszahl automatisch (~100 ms). Wenn du auf einer starken Maschine bewusst mehr Rechenzeit investieren willst, kannst du den Zielwert erhöhen.

Optional (fortgeschritten, sinnvoll für starke Hosts):
# In ~/.gnupg/gpg-agent.conf z. B. 500 ms Zielzeit:
s2k-calibration 500

# Alternativ: feste Iterationen (statt Zeitbasierung):
# s2k-count 33554432   # Beispiel (~33 Mio). Teste die Performance!

# Danach neu laden:
gpgconf --reload gpg-agent

# Kontrollblick:
gpg-connect-agent 'GETINFO s2k_time' /bye
gpg-connect-agent 'GETINFO s2k_count' /bye
Hinweis:Wichtig: OhneZu Cachehohe istWerte eskönnen lästiger,auf aberschwächeren jede Nutzung erfordert die Passphrase.

3) Ordner verschlüsseln & Dateinamen verbergenGeräten (deterministischesz. TarB. Laptop GPG)

auf
NunAkku) musstnerven. duRichte folgendendich Befehlnach eingeben:deinem Wir packen deterministisch, glätten MetadatenNutzungsszenario und verschlüsseln den Datenstrom direkt – Ergebnis: .tar.gpg.teste.
2.5) Wie überprüfe ich, was tatsächlich verwendet wurde?
  • # 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.4+/2.5+): tar --sort=name \ --mtime='UTC 1970-01-01' \ --owner=0 --group=0 --numeric-owner \ -C "$(dirname "$ORDNER")" -cf - "$(basename "$ORDNER")" \ | gpg --encryptversion \zeigt, --recipientwelche "$EMPFAENGER"Algorithmen \deine --cipher-algoGnuPG-Installation AES256 \ --force-ocb \ --output "$OUT" # Kompatibilitätsmodusunterstützt (falls AEAD/OCB bei Gegenstellen Probleme macht): # identisch, nur ohne --force-ocb
Side Fact: tar → gpg schützt Struktur & Dateinamen; --force-ocb aktiviert moderneCiphers, AEAD-SicherungModi, derHashes). Integrität.
3.1) Optional: Empfänger verschleiern & Banner weglassen
  • # Anonymisierte Empfänger: # ... | gpg --encryptlist-options -R "$EMPFAENGER"show-pref-verbose --cipher-algolist-keys AES256zeigt --force-ocb -o "$OUT" # oder global via gpg.confKey-Präferenzen (throw-keyids/no-emit-version)
  • was
    3.2)andere Erfolgnutzen, prüfenwenn (ohnesie zudir entschlüsseln)
    schreiben).
  • gpg --list-packets "$OUT"datei.gpg |zeigt sedPaket-Details -nzu '1,30p'
  • einer konkret erzeugten Datei (nützlich fürs Audit).
    3.3)2.6) KlartextWann beseitigenreicht „Präferenzen setzen“ – und wann „erzwingen“?
    • Team-Kommunikation, E-Mail, Austausch mit Dritten: Präferenzen in gpg.conf + saubere Schlüssel-Präferenzen genügen (mitkompatibel, Bedachtrobust).
    • Eigene Backups, Archivierung, Offline-Tresore: Du darfst erzwingen (--cipher-algo AES256, optional --force-ocb), weil du die Entschlüsselungsumgebung kontrollierst.
    2.7) Bonus: Schlüssel-Präferenzen auf SSD)dem Key selbst aktualisieren
    #

    Deine HDD: shred -vzun 3 -r -- "$ORDNER" # SSD/CoW-FSSchlüsselkarte (btrfs,zfs):der shredPublic-Key) unzuverlässigenthält → Vollverschlüsselung (LUKS) nutzen.

    Wichtig: Auf SSDs sichert Voll-Disk-VerschlüsselungPräferenzen, die Persistenz-Resteandere bessersehen, alswenn Datei-Shredding.
    sie

    4)dir Entschlüsselnverschlüsseln. &Aktualisiere auspacken

    sie einmalig und verteile den aktualisierten Public-Key, damit Sender automatisch starke Verfahren wählen.

    gpg --outputedit-key ordner.tar<Fingerprint-oder-UID>
    --decryptgpg> mein_geheimer_ordner.tar.showpref
    gpg> tarsetpref -xfSHA512 ordner.tarSHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed
    gpg> save
    
    Side Fact:Warum? Hybrid:So Zufalls-Session-Keyteilst (AES-256)du verschlüsseltder dieWelt Daten;mit: dieser„Bitte wirdnimm fürstarke deinenHashes/Cipher Publiczuerst“. KeyGnuPG verpackt.
    verhandelt

    5) Alternative: gpgtar (Archivieren +beim Verschlüsseln inden einem)

    Schnitt
    Nunaus musstSender- und Empfänger-Präferenzen – mit dieser Reihenfolge landest du folgendenfast Befehlimmer eingeben: gpgtar erledigt beides in einem Schritt.
    # Direkt verschlüsseltes Archiv (Dateinamen verborgen):
    gpgtar --encrypt --recipient "$EMPFAENGER" --output geheim.gpg "$ORDNER"
    
    # Entschlüsseln & auspacken:
    gpgtar --decrypt --output entpackt "$PWD/geheim.gpg"

    6) Zusätzliche Härtung (wenn „maximal“ wirklich maximal sein soll)

    • Hardware-Token (YubiKey/Smartcard): Private Keys aufs Token; Schlüsselmaterial verlässt niebei den Rechner.
    • starken
    • PrimärschlüsselVarianten.
    offline: Mit Subkeys arbeiten; Primärschlüssel nur offline sichern.
  • Passphrase-Qualität: 6–8+ Diceware-Wörter oder 20–30+ zufällige Zeichen aus einem Passwort-Manager.
  • Key-Rotation & Ablauf: Ablauf setzen (1–2 Jahre) und regelmäßig verlängern/rotieren; Widerrufszertifikat testen.
  • ASCII-Armor nur bei Bedarf: Für Binär-Workflows Armor weglassen.
  • 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: Wenn eine Gegenstelle sehr alt ist, --force-ocb weglassen (klassisches MDC statt AEAD). Für lokale Backups bleib bei OCB.