¿Los bloques de clave privada PGP "contienen" también la clave pública?

13

Me di cuenta de que si importo mi clave privada PGP blindada ASCII en un llavero GnuPG vacío (al eliminarlo de ~/.gnupgantemano), el llavero contiene las claves públicas y privadas. Además, el bloque de clave privada blindada ASCII es aproximadamente el doble del tamaño de mi contraparte de clave pública, lo que me lleva a creer que el bloque de clave privada contiene las claves privadas y públicas, mientras que el bloque de clave pública solo contiene la última.

Desde que creé mi clave, hasta ahora, he hecho una copia de seguridad de mis claves con un archivo que contiene mi bloque de clave privada exportado y otro con mi bloque de clave pública exportado. ¿Es redundante mi copia de seguridad de bloqueo de clave pública y, por lo tanto, estoy seguro solo manteniendo el archivo de clave privada?

Uso este comando para crear el archivo de clave privada:

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

y este comando para crear el archivo de clave pública:

gpg --export -a > public
Delan Azabani
fuente
1
Para que alguien responda su pregunta, necesitará agregar los comandos que usa para exportar sus claves. La respuesta está probablemente en eso. Pero, ¿qué ganaría al no exportar la clave pública? Yo diría que lo deje en su rutina de respaldo, no cuesta nada y para cada propósito donde solo necesita la clave pública, ya lo tiene disponible.
Bram
Gracias bram; He editado la pregunta para mayor claridad. Y sí, guardar ~ 3 KB no tiene ningún beneficio real, solo tengo curiosidad.
Delan Azabani

Respuestas:

15

Sí, los paquetes de "clave secreta" y "subclave secreta" de OpenPGP contienen parámetros públicos y privados. Puede verificar esto utilizando pgpdump para examinar la clave exportada:

$ gpg - Gravedad de clave secreta de exportación | pgpdump
Antiguo: Paquete de clave secreta (etiqueta 5) (1854 bytes)
    Ver 4 - nuevo
    Hora de creación de clave pública: sábado 31 de octubre 14:54:03 EET 2009
    Pub alg - RSA Encrypt o Sign (pub 1)
    RSA n (4096 bits) - ...
    RSA e (17 bits) - ...
    Sym alg - CAST5 (sym 3)
    Cadena a clave iterada y salada (s2k 3):
        Hash alg - SHA1 (hash 2)
        Sal - 12 24 0f e1 5b 7e e2 46 
        Cuenta - 65536 (cuenta codificada 96)
    IV - 91 a3 44 71 47 87 a4 ba 
    RSA encriptada d
    RSA cifrado p
    RSA cifrado q
    RSA cifrado u
    Hash SHA1 cifrado

Esto es cierto para la mayoría de los sistemas de claves asimétricas, no solo OpenPGP.

usuario1686
fuente
No creo que sea cierto para los bloques RSA PUBLIC KEY y RSA SECRET KEY codificados con PEM.
vy32
2
@ vy32: esas no son claves OpenPGP, por lo que es irrelevante. Pero, sigue siendo cierto para aquellos también. (Nota cómo openssl genrsasalidas sólo el bloque "privado", por lo que el bloque pública puede derivar de ella.) Se les puede examinarse a sí mismo: openssl genrsa 512 | openssl asn1parse -i. O consulte RFC 3447 Apéndice A, que muestra claramente el módulo y publicExponent en la estructura RSAPrivateKey.
user1686