Eu tenho várias subchaves para assinatura e criptografia. Aqui está a minha lista de chaves públicas e privadas.
jeremy@localhost ~
$ gpg -k
/home/jeremy/.gnupg/pubring.gpg
-------------------------------
pub 4096R/35E40FA7 2015-04-14
uid keybase.io/jeremytwfortune <[email protected]>
uid Jeremy Fortune <[email protected]>
uid Jeremy Fortune <[email protected]>
sub 2048R/73671EAD 2015-04-14 [expires: 2023-04-12]
sub 2048R/0690427C 2015-04-14 [expires: 2023-04-12]
sub 4096R/AEE9FB5F 2015-12-06 [expires: 2025-12-03]
sub 4096R/757D1A1D 2015-12-06 [expires: 2025-12-03]
sub 2112R/9B5BAC36 2015-12-06 [expires: 2025-12-03]
sub 4096R/5A8F548A 2015-12-06 [expires: 2025-12-03]
jeremy@localhost ~
$ gpg -K
/home/jeremy/.gnupg/secring.gpg
-------------------------------
sec 4096R/35E40FA7 2015-04-14
uid keybase.io/jeremytwfortune <[email protected]>
ssb 2048R/73671EAD 2015-04-14
ssb 2048R/0690427C 2015-04-14
Quando eu criptografo uma mensagem para mim, a mais nova chave de criptografia (9b5bac36) é usada. Isso parece bom, já que é uma subchave, mas quando descriptografar, o gpg ainda está apenas procurando exatamente essa chave privada. Nem sequer tenta usar o 0690427c.
jeremy@localhost ~
$ echo -e "\nAn encrypted message." | gpg -vver 35e40fa7 | gpg -vvd
gpg: using subkey 9B5BAC36 instead of primary key 35E40FA7
gpg: using PGP trust model
gpg: key 35E40FA7: accepted as trusted key
gpg: checking the trustdb
gpg: 1 keys cached (11 signatures)
gpg: 1 keys processed (0 validity counts cleared)
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: This key belongs to us
gpg: reading from '[stdin]'
gpg: writing to stdout
gpg: RSA/AES256 encrypted for: "9B5BAC36 keybase.io/jeremytwfortune <[email protected]>"
:pubkey enc packet: version 3, algo 1, keyid 743409AA9B5BAC36
data: [2111 bits]
gpg: public key is 9B5BAC36
:encrypted data packet:
length: 76
mdc_method: 2
gpg: using subkey 9B5BAC36 instead of primary key 35E40FA7
gpg: encrypted with 2112-bit RSA key, ID 9B5BAC36, created 2015-12-06
"keybase.io/jeremytwfortune <[email protected]>"
gpg: decryption failed: secret key not available
Quando revogo as chaves de criptografia mais recentes, tudo funciona conforme o esperado.
jeremy@localhost ~
$ gpg -k
/home/jeremy/.gnupg/pubring.gpg
-------------------------------
pub 4096R/35E40FA7 2015-04-14
uid keybase.io/jeremytwfortune <[email protected]>
uid Jeremy Fortune <[email protected]>
uid Jeremy Fortune <[email protected]>
sub 2048R/73671EAD 2015-04-14 [expires: 2023-04-12]
sub 2048R/0690427C 2015-04-14 [expires: 2023-04-12]
sub 4096R/AEE9FB5F 2015-12-06 [expires: 2025-12-03]
sub 4096R/5A8F548A 2015-12-06 [expires: 2025-12-03]
jeremy@localhost ~
$ echo -e "\nAn encrypted message." | gpg -vver 35e40fa7 | gpg -vvd
gpg: using subkey 0690427C instead of primary key 35E40FA7
gpg: using PGP trust model
gpg: key 35E40FA7: accepted as trusted key
gpg: This key belongs to us
gpg: reading from '[stdin]'
gpg: writing to stdout
gpg: RSA/AES256 encrypted for: "0690427C keybase.io/jeremytwfortune <[email protected]>"
:pubkey enc packet: version 3, algo 1, keyid 60A3F13E0690427C
data: [2045 bits]
gpg: public key is 0690427C
gpg: no secret subkey for public subkey AEE9FB5F - ignoring
gpg: no secret subkey for public subkey 5A8F548A - ignoring
gpg: using subkey 0690427C instead of primary key 35E40FA7
You need a passphrase to unlock the secret key for
user: "keybase.io/jeremytwfortune <[email protected]>"
gpg: using subkey 0690427C instead of primary key 35E40FA7
2048-bit RSA key, ID 0690427C, created 2015-04-14 (main key ID 35E40FA7)
gpg: gpg-agent is not available in this session
gpg: public key encrypted data: good DEK
:encrypted data packet:
length: 76
mdc_method: 2
gpg: encrypted with 2048-bit RSA key, ID 0690427C, created 2015-04-14
"keybase.io/jeremytwfortune <[email protected]>"
gpg: AES256 encrypted data
:compressed packet: algo=1
:literal data packet:
mode b (62), created 1458172973, name="",
raw data: 23 bytes
gpg: original file name=''
An encrypted message.
gpg: decryption okay
Mas, claro, isso é porque agora ele está criptografando com o 0690427c. Posso realmente ter apenas uma subchave de criptografia? Se não, eu tenho que manter todas as subchaves secretas em cada máquina?