Os blocos de chave privada PGP “contêm” a chave pública também?

13

Percebi que, se eu importar minha chave privada PGP blindada em ASCII para um chaveiro GnuPG vazio (excluindo ~/.gnupganteriormente), o chaveiro conterá as chaves pública e privada. Além disso, o bloco de chave privada blindada em ASCII tem o dobro do tamanho da minha contraparte de chave pública, o que me leva a acreditar que o bloco de chave privada contém as chaves privada e pública, enquanto o bloco de chave pública contém apenas o último.

Desde que criei minha chave, até agora, fiz backup de minhas chaves com um arquivo contendo meu bloco de chave privada exportado e outro com meu bloco de chave pública exportado. Meu backup de bloqueio de chave pública é redundante e, portanto, estou seguro apenas mantendo o arquivo de chave privada?

Eu uso este comando para criar o arquivo de chave privada:

gpg --export-secret-keys -a > private

e este comando para criar o arquivo de chave pública:

gpg --export -a > public
Delan Azabani
fonte
1
Para alguém responder sua pergunta, você precisará adicionar os comandos que você usa para exportar suas chaves. A resposta provavelmente está nisso. Mas o que você ganharia se não exportasse a chave pública? Eu diria que deixe na sua rotina de backup, não custa nada e, para todos os fins, em que você precisa apenas da chave pública, ela já está disponível.
Bram
Obrigado Bram; Eu editei a pergunta para maior clareza. E sim, salvar ~ 3 KB não tem nenhum benefício real, estou apenas curioso.
Delan Azabani

Respostas:

15

Sim, os pacotes "chave secreta" e "subchave secreta" do OpenPGP contêm parâmetros públicos e privados. Você pode verificar isso usando o pgpdump para examinar a chave exportada:

$ gpg - grawity da chave secreta da exportação | pgpdump
Antigo: pacote de chaves secretas (tag 5) (1854 bytes)
    Ver 4 - novo
    Hora de criação da chave pública - Sáb 31 de outubro 14:54:03 EET 2009
    Alg de pub - RSA Criptografar ou assinar (pub 1)
    RSA n (4096 bits) - ...
    RSA e (17 bits) - ...
    Sym alg - CAST5 (sym 3)
    Cadeia de caracteres com chave iterada e salgada (s2k 3):
        Alg de hash - SHA1 (hash 2)
        Sal - 12 24 0f e1 5b 7e e2 46 
        Contagem - 65536 (contagem codificada 96)
    IV - 91 a3 44 71 47 87 a4 ba 
    RSA criptografado d
    RSA criptografado p
    RSA criptografado q
    RSA criptografado u
    Hash SHA1 criptografado

Isso é verdade para a maioria dos sistemas de chaves assimétricas, não apenas para o OpenPGP.

user1686
fonte
Não acho que isso seja verdade para os blocos RSA PUBLIC KEY e RSA SECRET KEY codificados por PEM.
vy32
2
@ vy32: Essas não são chaves OpenPGP, por isso é irrelevante. Mas, ainda é verdade para aqueles também. (Note como openssl genrsasaídas apenas o bloco de "private", de modo que o bloco pública pode ser derivada a partir dele.) Você pode examiná-los a si mesmo: openssl genrsa 512 | openssl asn1parse -i. Ou verifique o Apêndice A da RFC 3447, que mostra claramente o módulo & publicExponent na estrutura RSAPrivateKey.
user1686