Wie kann ich eine andere Passphrase für einen gpg-Unterschlüssel festlegen?

16

Ich muss einen Bereitstellungsprozess automatisieren, und das Tool signiert die Release-Artefakte automatisch. Mein Schlüsselbund hat einen Primärschlüssel, den ich nur zum Erstellen von Unterschlüsseln verwende, und zwei Unterschlüssel. Ein Unterschlüssel zum Signieren und einer zum Verschlüsseln.

Derzeit gibt es eine einzige Passphrase für alle Schlüssel. Ich möchte diese Passphrase nicht in einer Konfigurationsdatei angeben, da dies auch den Primärschlüssel gefährden würde.

Also dachte ich, ich würde eine andere Passphrase für den Unterschlüssel festlegen, indem ich Folgendes mache:

$ gpg --edit-key [subkey-id]
gpg> passwd
gpg> save

Dies änderte jedoch auch die Passphrase für andere Schlüssel.

Wie kann ich eine separate Passphrase für einzelne Schlüssel festlegen?

Kshitiz Sharma
quelle

Antworten:

14

Das Einrichten einzelner Passphrasen für Unterschlüssel ist mit GnuPG nicht möglich. Es gibt jedoch eine Problemumgehung, die in diesem Fall sogar nach einer guten Übungsidee aussieht:

  1. Exportieren Sie den gewünschten Unterschlüssel (im Beispiel hat der Unterschlüssel die ID 0xDEADBEEF). Vergessen Sie nicht das Ausrufezeichen, es stellt sicher, dass GnuPG tatsächlich mit dem Unterschlüssel selbst und nicht mit dem Primärschlüssel, zu dem es gehört, funktioniert!

    gpg --export-secret-subkeys 0xDEADBEEF! >subkeys.pgp
    

    An den Unterschlüssel werden der öffentliche Primärschlüssel und ein privater Primärschlüssel-Stub angehängt, nicht jedoch der private Primärschlüssel.

  2. Importieren Sie den Unterschlüssel in ein anderes GnuPG-Ausgangsverzeichnis. Das Beispiel geht davon aus, dass Sie sich in Ihrem Projektstammverzeichnis befinden und dort einen Ordner etcfür Dinge wie diesen Schlüsselbund haben.

    gpg --homedir ./etc/gnupg --import subkeys.pgp
    
  3. Ändern Sie die Passphrase des getrennten Unterschlüssels.

    gpg --homedir ./etc/gnupg --edit-key 0xDEADBEEF
    
  4. Anstatt Ihren "normalen" Schlüsselbund zu verwenden, beziehen Sie sich immer auf das separate GnuPG-Verzeichnis, wie oben erwähnt.

Alternativ können Sie einen Projektschlüssel erstellen, den Sie mit Ihrem eigenen Schlüssel signieren. Dies kann den Vorteil haben, dass auch andere Mitwirkende / Benutzer den Schlüssel signieren können (und somit bestätigen, dass dies tatsächlich der für das Projekt verwendete Schlüssel ist), und die Übergabe des Projekts ist möglicherweise einfacher, falls jemand anderes die Wartung übernimmt.

Jens Erat
quelle
1
Dies funktioniert nicht mit GnuPG 2.2.4. "Benötigen Sie den geheimen Schlüssel, um dies zu tun." Sehr traurig: '(
Steinybot
Also muss ich passwortlose GPG-Schlüssel für die automatische Reposignatur verwenden?
SuperSandro2000
Nein, Sie können die Passphrase auch mit vorab zwischenspeichern gpg-agent. Schau es dir an gpg-preset-passphrase.
Jens Erat
5

In einem sehr veralteten (2013) Mail-Archiv von gnupg.org wird eine umständliche Problemumgehung für die Erstellung eines separaten Kennworts für einen Unterschlüssel erläutert .
Dies impliziert, dass sich die Einschränkung nicht innerhalb der Datenstruktur des Schlüsselsatzes (dh der Hauptunterschlüsselgruppierung) befindet, sondern nur in der Softwareschnittstelle zum Erstellen und Ändern des Schlüsselsatzes.

Ein Zitat aus der Referenz:

Hallo,

Ist es möglich, einen Hauptschlüssel und mehrere Unterschlüssel zu haben, deren Unterschlüssel eine andere (z. B. kürzere) Passphrase haben als der Hauptschlüssel?

Was Sie wahrscheinlich suchen, ist ein Offline-Hauptschlüssel (siehe --export-secret- Unterschlüssel). Aber die Antwort lautet: Ja. gpg-agent kümmert sich nicht um die Verbindung von Schlüsseln. Sie werden sogar mehrmals nach derselben Passphrase gefragt (für verschiedene Komponenten desselben Schlüssels).

GnuPG unterstützt dies jedoch nicht direkt.

1) Exportiere den geheimen Schlüssel (--export-secret-keys without --armor)

2) Ändern Sie die Passphrase

3) Wieder exportieren (natürlich in eine andere Datei)

4) Verwenden Sie gpgsplit für beide Dateien (in verschiedenen Verzeichnissen). Das Ergebnis sieht so aus:

000001-005.secret_key 000002-013.user_id 000003-002.sig 000004-007.secret_subkey 000005-002.sig

5) Nun mischen Sie die Komponenten der beiden Gruppen: mkdir kombiniert mv a / 000001 * a / 000002 * a / 000003 * kombiniert / mv b / 000004 * b / 000005 * kombiniert / cd kombiniert / cat *> different_passphrases.gpg

6) Löschen Sie den Schlüssel aus dem Secring: --delete-secret-key

7) Importieren Sie die neue: gpg --import different_passphrases.gpg

Hauke ​​Laging

Ich habe diesen Vorgang nicht persönlich bestätigt - ich berichte nur, was ich gelesen habe.

Das Fehlen von Spezifikationen und Diskussionen in der GnuPG-Dokumentation zu diesem wichtigen Thema ist enttäuschend.

Craig Hicks
quelle