Como ter uma frase secreta diferente para uma subchave gpg?

16

Preciso automatizar um processo de implantação e a ferramenta assinará os artefatos da liberação automaticamente. Meu conjunto de chaves possui uma chave primária que eu uso apenas para criar subchaves e duas subchaves. Uma subchave para assinatura e outra para criptografia.

Atualmente, existe uma frase secreta única para todas as chaves. Não quero especificar essa frase secreta em um arquivo de configuração, pois isso também arriscaria a chave primária.

Então, pensei em definir uma senha diferente para a subchave, fazendo o seguinte:

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

Mas isso também mudou a senha para outras chaves.

Como definir uma frase secreta separada para chaves individuais?

Kshitiz Sharma
fonte

Respostas:

14

A configuração de senhas individuais para subchaves não é possível com o GnuPG. Mas há uma solução alternativa, que até parece uma boa ideia de prática neste caso:

  1. Exporte a subchave de escolha (no exemplo, a subchave possui ID 0xDEADBEEF). Não se esqueça do ponto de exclamação, ele garante que o GnuPG realmente funcione com a subchave e não com a chave primária a que pertence!

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

    A subchave terá a chave primária pública e um "stub de chave" primário primário anexado, mas não a própria chave primária privada.

  2. Importe a subchave para outro diretório pessoal do GnuPG. O exemplo espera que você esteja no diretório raiz do projeto e tenha uma pasta etcpara itens como este chaveiro.

    gpg --homedir ./etc/gnupg --import subkeys.pgp
    
  3. Altere a senha da subchave separada.

    gpg --homedir ./etc/gnupg --edit-key 0xDEADBEEF
    
  4. Em vez de usar seu chaveiro "normal", sempre consulte o diretório GnuPG separado, como mencionado acima.

Como alternativa, considere criar uma chave de projeto que assine com sua própria chave. Isso pode ter a vantagem de que outros colaboradores / usuários também possam assinar a chave (e, assim, certificar que essa é realmente a chave usada para o projeto), e entregar o projeto pode ser mais fácil caso outra pessoa assuma a manutenção.

Jens Erat
fonte
1
Isso não funciona com o GnuPG 2.2.4. Ele falha ao dizer "Precisa da chave secreta para fazer isso". Muito triste: '(
steinybot 08/10/19
Então, preciso usar chaves gpg sem senha para assinatura automática de repositório?
precisa saber é o seguinte
Não, você também pode pré-armazenar em cache a senha usando gpg-agent. Dê uma olhada gpg-preset-passphrase.
Jens Erat
5

Um arquivo de mensagens do gnupg.org muito desatualizado (2013) explica uma solução alternativa embaraçosa para criar uma senha separada para uma subchave .
Isso implica que a restrição não está na estrutura de dados do conjunto de chaves (ou seja, no agrupamento de subchaves principais), mas apenas na interface do software para construir e modificar o conjunto de chaves.

Uma citação da referência:

Oi,

é possível ter uma chave mestra e várias subchaves com as subchaves com uma frase secreta diferente (por exemplo, mais curta) do que a chave mestra?

O que você provavelmente está procurando é uma chave principal offline (consulte --export-secret-subkeys). Mas a resposta é: sim. O gpg-agent não se importa com a conexão de chaves. Ele solicita a mesma senha várias vezes (para diferentes componentes da mesma chave).

Mas o GnuPG não suporta isso diretamente.

1) Exporte a chave secreta (--export-secret-keys without --armor)

2) altere a senha

3) Exportar novamente (para um arquivo diferente, é claro)

4) Use gpgsplit nos dois arquivos (em diretórios diferentes). O resultado fica assim:

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

5) Agora você mistura os componentes dos dois grupos: mkdir combinado mv a / 000001 * a / 000002 * a / 000003 * combinado / mv b / 000004 * b / 000005 * combinado / cd combinado / gato *> different_passphrases.gpg

6) Exclua a chave da secring: --delete-secret-key

7) Importe o novo: gpg --import different_passphrases.gpg

Hauke ​​Laging

Não confirmei pessoalmente esta operação - apenas relatei o que li.

A falta de especificação e discussão na documentação do GnuPG sobre esse tópico importante é decepcionante.

Craig Hicks
fonte