GPG - Sicheren Schlüssel erstellen und Ordner verschlüsseln
GPG2) maximalGPG-Konfiguration hart: Schlüssel erstellen & kompletten Ordner sicher verschlüsseln
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ählt – wound zwar so, dass du im Alltag nichts vergisst.
2.0) Grundidee: „Präferenzen“ vs. „erzwingen“
- Präferenzen (gpg.conf, personal-*) sagen: „Wenn mö
glichglich, nimm diese starken Verfahren zuerst.“ Das ist kompatibel und alltagstauglich. - Erzwingen (z. B. --cipher-algo AES256) überstimmt alles –
AEAD/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
1)kann Sehrdie starkenZusammenarbeit OpenPGP-Schlüsselmit erzeugensehr (ECC/Curve25519)
alten Gegenstellen bremsen.
gpg --expert --full-generate-key~/.gnupg/gpg.conf
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
1.1) Fingerprint notieren & Widerruf vorbereiten
gpg --list-keys
gpg --fingerprint "Dein Name"
# Widerrufszertifikat (offline aufbewahren!):
gpg --output revoke.asc --gen-revoke "Dein Name"
2) GPG-Konfiguration hart setzen (Algorithmen & Leaks minimieren)
# ~/.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
#
- 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.
# 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.)
--hidden-recipient
force-ocb 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.
~/.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
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.
# 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
3) Ordner verschlüsseln & Dateinamen verbergenGeräten (deterministischesz. TarB. →Laptop GPG)
auf .tar.gpg
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-InstallationAES256 \ --force-ocb \ --output "$OUT" # Kompatibilitätsmodusunterstützt (falls AEAD/OCB bei Gegenstellen Probleme macht): # identisch, nur ohne --force-ocbSide Fact:tar → gpgschützt Struktur & Dateinamen;--force-ocbaktiviert 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-keysAES256zeigt--force-ocb -o "$OUT" # oder global via gpg.confKey-Präferenzen (throw-keyids/no-emit-version)was
schreiben).3.2)andereErfolgnutzen,prüfenwenn(ohnesiezudirentschlüsseln)
gpg --list-packets "$OUT"datei.gpg
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.
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
5) Alternative: gpgtar
(Archivieren +beim Verschlüsseln inden einem)
Schnitt gpgtar
# 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 denRechner.starken PrimärschlüsselVarianten.
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
--force-ocb