Novo diretório .gnupg: Importar chaves secretas antigas para nova instalação

7

Eu reinstalei meu sistema operacional (Ubuntu 16.04) e tenho um diretório antigo .gnupg contendo:

gpg-agent.conf  
gpg-agent-info-<hostname> 
gpg.conf  
private-keys-v1.d  
pubring.gpg  
secring.gpg  
S.gpg-agent  
trustdb.gpg

Gostaria de importar meu antigo público & chaves privadas no novo gnupg. (Eu não copiei simplesmente o diretório .gnupg para a nova instalação, porque entendo que o novo gnupg2 tem algumas diferenças no formato do banco de dados que fazem parte das novas opções de criptografia do EC.)

Os itens a seguir funcionaram para as chaves públicas, mas falharam nas chaves secretas:

gpg --export --keyring=~/.gnupg.old/pubring.gpg | gpg --import
gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg | gpg --import

O último respondeu com:

gpg: can't open '~/.gnupg/secring.gpg'  <== New Secret Keyring
gpg: WARNING: nothing exported
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

Observe que não está abrindo meu novo anel secreto . Dá o mesmo erro ao tentar exportar para um arquivo:

gpg --export-secret-keys --keyring=~/.gnupg.old/secring.gpg > secret.asc

gpg: can't open '~/.gnupg/secring.gpg'  <== New Secret Keyring
gpg: WARNING: nothing exported

Como minha chave secreta removeu a parte privada da chave mestra, também tentei o mesmo, com --export-secret-subkeys , mas a resposta foi a mesma. Colocar minha ID de chave (endereço de e-mail) após a exportação também não funciona. Eu posso, por outro lado, listar as chaves:

gpg --list-keys --keyring=~/.gnupg.old/secring.gpg

gpg: Oops; key lost!
node 0x1e7ee00 01/00 type=secret-key
node 0x1e9cbd0 00/00 type=user-id  "Me <[email protected]>" ....
node 0x1e99dd0 00/00 type=signature  class=13 keyid=XXXXXXXX ts=1383637282
node 0x1e9c510 00/00 type=secret-subkey
node 0x1eaa210 00/00 type=signature  class=18 keyid=XXXXXXXX ts=1449138073
node 0x1eaf1f0 00/00 type=secret-subkey
node 0x1eaf580 00/00 type=signature  class=18 keyid=XXXXXXXX ts=138363647

(Estou assumindo que "Key lost" se refere à chave mestra secreta). Alguém pode me orientar como resolver isso?

Com a ajuda de @Jens (abaixo), os seguintes trabalhos:

gpg --no-default-keyring --secret-keyring=~/.gnupg.old/secring.gpg --export-secret-keys | gpg --import
    
por Diagon 26.06.2016 / 14:54

1 resposta

6

Primeiro de tudo, você está fazendo uma espécie de "não operacional". gpg ainda é GnuPG 1.4.20 no Ubuntu 16.04, enquanto gpg2 deu um salto do GnuPG 2.0.28 para 2.1.11. Então, enquanto o GnuPG 2.1 fez algumas mudanças nos formatos de arquivo (novo keystore format "keybox" / .kbx e mesclando o chaveiro secreto no público), ele ainda é compatível e fará a fusão do chaveiro secreto na primeira invocação do% código%. O formato do chaveiro permanece o antigo, a menos que você o converta manualmente . O formato antigo é totalmente suportado, o novo formato oferece apenas melhorias de desempenho. O caminho de migração proposto para o novo formato de keybox está convertendo dentro do diretório antigo do GnuPG ao invés de mover para um completamente novo:

To convert an existing pubring.gpg file to the keybox format, you first backup the ownertrust values, then rename the file to (for example) publickeys, so it won’t be recognized by any GnuPG version, then run import, and finally restore the ownertrust values:

$ cd ~/.gnupg
$ gpg --export-ownertrust >otrust.lst
$ mv pubring.gpg publickeys
$ gpg2 --import-options import-local-sigs --import publickeys
$ gpg2 --import-ownertrust otrust.lst

You may then rename the publickeys file back so that it can be used by older GnuPG versions. Remember that in this case you have two independent copies of the public keys. The ownertrust values are kept by all gpg versions in the file trustdb.gpg but the above precautions need to be taken to keep them over an import.

Considerando a mensagem de erro que você postou, parece que algumas permissões no novo diretório inicial gpg2 ou no chaveiro secreto ~/.gnupg são insuficientes para criar a chave. Isso geralmente acontece se o GnuPG foi invocado do usuário root por acidente.

A mensagem de ~/.gnupg/secring.gpg não é uma saída normal, mas parece ser uma mensagem de erro. Para imprimir um chaveiro arbitrário, use as opções --list-keys e --no-default-keyring e --secret-keyring commdn (e geralmente sempre opções precedem os comandos para o GnuPG):

gpg --no-default-keyring --secret-keyring=secring.gpg --list-secret-keys
    
por 26.06.2016 / 15:31