Come avere una passphrase diversa per una sottochiave gpg?


16

Devo automatizzare un processo di distribuzione e lo strumento firmerà automaticamente gli artefatti di rilascio. Il mio portachiavi ha una chiave primaria che uso solo per la creazione di sottochiavi e due sottochiavi. Una sottochiave per la firma e una per la crittografia.

Attualmente esiste una frase singola per tutte le chiavi. Non voglio specificare questa passphrase in un file di configurazione poiché rischierebbe anche la chiave primaria.

Quindi ho pensato di impostare una passphrase diversa per la sottochiave facendo:

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

Ma questo ha cambiato la passphrase anche per altre chiavi.

Come posso impostare una passphrase separata per i singoli tasti?

Risposte:


14

Non è possibile impostare singole passphrase per le sottochiavi con GnuPG. Ma c'è una soluzione alternativa, che in questo caso sembra persino una buona idea:

  1. Esporta la sottochiave di scelta (nell'esempio, la sottochiave ha un ID 0xDEADBEEF). Non dimenticare il punto esclamativo, si assicura che GnuPG funzioni effettivamente con la sottochiave stessa e non con la chiave primaria a cui appartiene!

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

    La sottochiave avrà la chiave primaria pubblica e un "key-stub" primario privato, ma non la chiave primaria privata stessa.

  2. Importa la sottochiave in un'altra home directory di GnuPG. L'esempio prevede che ci si trovi nella directory principale del progetto e che ci sia una cartella etcper cose come questo portachiavi.

    gpg --homedir ./etc/gnupg --import subkeys.pgp
    
  3. Modifica la passphrase della sottochiave separata.

    gpg --homedir ./etc/gnupg --edit-key 0xDEADBEEF
    
  4. Invece di usare il tuo portachiavi "normale", fai sempre riferimento alla directory GnuPG separata come menzionato sopra.

In alternativa, potresti prendere in considerazione l'idea di creare una chiave di progetto che firmi con la tua chiave. Ciò potrebbe avere il vantaggio che anche altri collaboratori / utenti potrebbero firmare la chiave (e quindi certificare che questa è davvero la chiave utilizzata per il progetto), e consegnare il progetto potrebbe essere più semplice nel caso in cui qualcun altro subentrerà nella manutenzione.


1
Questo non funziona con GnuPG 2.2.4. Non riesce a dire "Hai bisogno della chiave segreta per farlo." Molto triste: '(
steinybot

Quindi ho bisogno di usare chiavi gpg senza password per la firma automatica dei repository?
SuperSandro2000,

No, puoi anche pre-memorizzare nella cache la passphrase utilizzando gpg-agent. Dai un'occhiata gpg-preset-passphrase.
Jens Erat,

5

Un archivio di posta gnupg.org molto obsoleto (2013) spiega una soluzione scomoda per la creazione di una password separata per una sottochiave .
Implica che il vincolo non rientra nella struttura dei dati del set di chiavi (ovvero il raggruppamento di sottochiavi master) ma solo nell'interfaccia del software per la costruzione e la modifica del set di chiavi.

Una citazione dal riferimento:

Ciao,

è possibile avere una chiave master e più sottochiavi con le sottochiavi che hanno una passphrase diversa (ad es. più corta) rispetto alla chiave principale?

Quello che probabilmente stai cercando è una chiave principale offline (vedi sottochiavi --export-secret-). Ma la risposta è: si. gpg-agent non si preoccupa della connessione delle chiavi. Ti chiede anche la stessa passphrase più volte (per diversi componenti della stessa chiave).

Ma GnuPG non supporta questo direttamente.

1) Esporta la chiave segreta (--export-secret-keys senza --armor)

2) modificare la passphrase

3) Esporta di nuovo (ovviamente in un altro file)

4) Usa gpgsplit su entrambi i file (in directory diverse). Il risultato è simile al seguente:

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

5) Ora mescoli i componenti dei due gruppi: mkdir combinato mv a / 000001 * a / 000002 * a / 000003 * combinato / mv b / 000004 * b / 000005 * combinato / cd combinato / cat *> different_passphrases.gpg

6) Cancella la chiave dalla secessione: --delete-secret-key

7) Importa quello nuovo: gpg --import different_passphrases.gpg

Hauke ​​Laging

Non ho confermato personalmente questa operazione, ma sto solo segnalando ciò che ho letto.

La mancanza di specifiche e discussioni nella documentazione di GnuPG su questo importante argomento è deludente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.