PGP Tool

Lernen · 6 Min. Lesezeit

OpenPGP-Unterschlüssel erklärt — separate Schlüssel für Signieren, Verschlüsseln und Authentifizieren

Moderne OpenPGP-Schlüssel sind nicht ein Schlüssel, sondern ein Primärschlüssel plus Unterschlüssel. Hier ist, was jeder Unterschlüssel tut, warum die Trennung wichtig ist und wie man sie erzeugt.

Ein moderner OpenPGP-"Schlüssel" ist eigentlich ein kleines Bündel: ein Primärschlüssel plus ein oder mehrere Unterschlüssel. Der Primärschlüssel signiert und zertifiziert. Unterschlüssel erledigen die tägliche Arbeit des Verschlüsselns und Signierens. Diese Trennung ist eine der wenigen unbestreitbar guten operativen Praktiken in PGP.

Warum Unterschlüssel existieren

Der Primärschlüssel trägt deine Identität. Sein Fingerabdruck ist das, was andere verifizieren, was du veröffentlichst, was Menschen bei Key-Signing-Partys signieren, was mit deiner User-ID verknüpft ist. Den Primärschlüssel zu rotieren bedeutet, das gesamte angesammelte Vertrauen zu verlieren — jede darauf gesetzte Signatur, jede veröffentlichte Referenz, jede Visitenkarte.

Du möchtest auch einen Schlüssel auf Geräten verwenden, auf denen er möglicherweise exponiert ist: Nachrichten auf deinem Laptop verschlüsseln, E-Mails auf deinem Telefon signieren. Wenn diese täglichen Schlüssel der Primärschlüssel sind, verbrennt ein einziges kompromittiertes Gerät die gesamte Identität.

Unterschlüssel lösen beide Probleme. Der Primärschlüssel bleibt kalt (offline, air-gapped oder nur zum Zertifizieren verwendet). Unterschlüssel kommen auf die täglichen Geräte. Wenn ein Unterschlüssel kompromittiert wird, widerrufst du nur diesen Unterschlüssel, der Primärschlüssel signiert einen neuen Ersatz, und deine Identität geht ohne Verlust des angesammelten Vertrauens weiter.

Die drei Unterschlüssel-Rollen

  • Sign (S) — erzeugt Signaturen auf Nachrichten, Dateien, Commits, Paket-Releases. Der am häufigsten verwendete Unterschlüssel für viele Menschen.
  • Encrypt (E) — empfängt verschlüsselte Nachrichten. Wenn jemand an dich verschlüsselt, wählt sein Werkzeug deinen Verschlüsselungs-Unterschlüssel aus dem öffentlichen Schlüsselbündel.
  • Authenticate (A) — wird als SSH-Schlüssel verwendet (über gpg-agent), für Client-TLS-Auth oder andere "Identität gegenüber einem Server beweisen"-Workflows. Optional.

Jede Rolle kann mehrere Unterschlüssel haben (z. B. einen aktuellen + einen für Backup) und jeder kann einen anderen Algorithmus haben (RSA-4096 zum Signieren, Curve25519 zum Verschlüsseln usw.). Unterschlüssel können auch eigene Ablaufdaten haben, unabhängig vom Primärschlüssel.

Standardverhalten

Wenn du einen Schlüssel mit den meisten modernen Werkzeugen erzeugst — GPG, OpenPGP.js, diese App — erhältst du automatisch einen Primärschlüssel + einen Verschlüsselungs-Unterschlüssel + (je nach Werkzeug) einen Signier-Unterschlüssel. Die hier verfügbaren Verschlüsselungs- und Signierwerkzeuge verwenden den Primärschlüssel zum Signieren, weil das Bündel standardmäßig einen einzelnen signierfähigen Unterschlüssel liefert; die vollständige Split-Rollen-Generierung ist häufiger von der Kommandozeile aus.

Für einen Gelegenheitsbenutzer ist der Standard in Ordnung. Für langfristige operative Hygiene willst du das Vier-Unterschlüssel-Setup: kalter Primärschlüssel (nur Zertifizieren), Online-Signier-Unterschlüssel, Online-Verschlüsselungs-Unterschlüssel, optionaler Authentifizierungs-Unterschlüssel.

Praktischer Workflow mit GPG

Einmalig mit dem Offline-Primärschlüssel-Muster einrichten:

gpg --quick-generate-key "Alice <[email protected]>" ed25519 cert never
gpg --edit-key [email protected]
  > addkey   # add a sign subkey
  > addkey   # add an encrypt subkey
  > addkey   # add an auth subkey
  > save

Dann exportiere den privaten Primärschlüssel auf einen USB-Stick, bewahre ihn offline auf, und entferne ihn aus deinem täglichen Schlüsselbund mit gpg --delete-secret-keys (die Unterschlüssel bleiben; das ist das GPG-spezifische "Stub"-Muster). Tägliche Signierungsoperationen laufen jetzt nur von Unterschlüsseln — der Primärschlüssel wird nur benötigt, wenn du einen anderen Unterschlüssel hinzufügst oder widerrufst, was selten sein sollte.

Einen Unterschlüssel rotieren

  • Stecke den Offline-Primärschlüssel ein.
  • gpg --edit-key [email protected], führe addkey aus, um einen frischen Unterschlüssel der entsprechenden Rolle zu erstellen.
  • Optional revkey den alten Unterschlüssel, um ihn zu rotieren (oder lass ihn einfach ablaufen).
  • gpg --send-keys, um den aktualisierten öffentlichen Schlüssel zu veröffentlichen. Empfänger werden den neuen Unterschlüssel beim nächsten Refresh abrufen.

Ihre bestehenden Nachrichten, die für den alten Unterschlüssel verschlüsselt wurden, entschlüsseln weiterhin mit dem alten Unterschlüssel, den du für den Archivzugriff behältst. Neue Nachrichten verwenden automatisch den neuen Unterschlüssel.