Quais as chaves gpg exportadas e o que está nos keyrings?

3

Eu tenho feito o meu caminho através do que está na internet sobre gpg ultimamente. E devo dizer que é muito confuso.

Particularmente, a parte de importação / exportação. Quando você gera uma chave, basicamente obtém 4 chaves por padrão. Quais são as maneiras possíveis de exportar as chaves (apenas uma chave, várias chaves de uma só vez)? Quais são as maneiras possíveis de excluir chaves (o mesmo)? Além disso, não tenho certeza, se eu interpretar gpg --list-keys , gpg --list-secret-keys resultados corretamente. Por exemplo, pareço exportar apenas uma chave (subchave, gpg --export SUB_ID! ), mas ao importar também recebo a chave primária.

    
por x-yuri 05.06.2015 / 19:37

1 resposta

2

O que eu consegui descobrir. Me corrija se eu estiver errado.

Existem chaves públicas e privadas, elas vão em pares. Existem chaves primárias e cada chave primária pode ter uma ou mais subchaves. Por padrão, quando você gera uma chave, você obtém quatro chaves ( (1) RSA and RSA (default) ). Um par de chaves para assinatura e certificação (chaves primárias) e um par de chaves para criptografia (subchaves). Além disso, existem dois chaveiros, para chaves privadas e públicas.

E agora para a parte complicada. Eu estava experimentando com importação / exportação de chaves. Para isso criei uma chave com 2 subchaves. Então eu o exportei de diferentes maneiras:

$ gpg --export PRI_ID > ~/_/export-1
$ gpg --export PRI_ID! > ~/_/export-2
$ gpg --export SUB_ID_1! > ~/_/export-3
$ gpg --export SUB_ID_2! > ~/_/export-4
$ gpg --export-secret-keys PRI_ID > ~/_/export-secret-keys-1
$ gpg --export-secret-keys PRI_ID! > ~/_/export-secret-keys-2
$ gpg --export-secret-keys SUB_ID_1! > ~/_/export-secret-keys-3
$ gpg --export-secret-keys SUB_ID_2! > ~/_/export-secret-keys-4
$ gpg --export-secret-subkeys PRI_ID > ~/_/export-secret-subkeys-1
$ gpg --export-secret-subkeys PRI_ID! > ~/_/export-secret-subkeys-2
$ gpg --export-secret-subkeys SUB_ID_1! > ~/_/export-secret-subkeys-3
$ gpg --export-secret-subkeys SUB_ID_2! > ~/_/export-secret-subkeys-4

E comecei a exportar chaves e veja o que acontece:

$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-1; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-2; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-3; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-4; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-keys-1; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-keys-2; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-keys-3; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-keys-4; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-subkeys-1; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-subkeys-2; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-subkeys-3; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-subkeys-4; gpg -k; gpg -K

Aqui estão minhas conclusões, que contradizem um pouco o que está nas páginas de manual:

'gpg --export PRI_ID' exports all public keys (3 keys)
'gpg --export PRI_ID!' exports primary public key (1 key)
'gpg --export SUB_ID!' exports public primary key and public subkey (2 keys)
'gpg --export-secret-keys PRI_ID' exports all 3 keypairs (6 keys)
'gpg --export-secret-keys PRI_ID!' exports primary keypair (2 key)
'gpg --export-secret-keys SUB_ID!' exports primary keypair and subkey keypair (4 keys)

gpg --export-secret-subkeys é como gpg --export-secret-keys , mas não exporta chave primária privada (ou torna inútil, como dizem, sec# ). Geralmente, PRI_ID , SUB_ID s são intercambiáveis, a menos que você coloque um ponto de exclamação atrás deles. Mas para --delete-key , --delete-secret-key eles são intercambiáveis mesmo com a tecla de exclamação.

UPD De acordo com gpg --list-packets , parece estar errado e não há contradição com as man pages. --export-secret-keys deve estar exportando chaves secretas depois de tudo. É só que uma chave pública pode ser inferida de uma chave privada.

No entanto, ainda resta uma coisa. Que tipo de conexão entre chaves primárias e subchaves? Por que quando eu exporto uma subchave, também obtenho a chave primária?

UPD Ah, e cada par de chaves compartilha um e o mesmo id.

    
por 05.06.2015 / 19:37

Tags