¿Cómo especificar la clave privada al descifrar un archivo usando GnuPG?

22

Estoy tratando de descifrar un archivo con GnuPG, pero cuando uso el siguiente comando:

gpg --decrypt filename.gpg

Me sale el siguiente mensaje:

gpg: encrypted with RSA key, ID 3662FD5E
gpg: decryption failed: No secret key

Ya tengo la clave privada con la que se cifró el archivo, pero no estoy seguro de cómo puedo especificarlo. ¿Hay alguna opción que pueda incluir al descifrar para apuntar a esta clave?

Crista23
fuente
1
¿Qué gpg --list-secret-keys 0x3662FD5Eimprime?
Jonas Schäfer
No lo hace ¿Hay alguna forma de agregarlo?
¿Cómo obtuvo la clave privada?
Jonas Schäfer
¿Qué representa realmente esta identificación?
Nishant

Respuestas:

17

Ya tengo la clave privada con la que se cifró el archivo, pero no estoy seguro de cómo puedo especificarlo.

Entiendo esto como "Tengo un archivo que contiene la clave privada, pero no sé cómo decirle a GnuPG que lo use".

GnuPG requiere que las claves (tanto públicas como privadas) se almacenen en el llavero GnuPG. Esto es tan fácil como

gpg --import [keyfile]

Luego, debería poder descifrar el archivo exactamente de la manera que ya lo intentó.

Jens Erat
fuente
55
Entonces, ¿es gpg lo suficientemente inteligente como para saber qué clave descifrar una vez que haya importado varias claves?
RollRoll
Si. Por lo general, incluso se hace referencia a la clave en el archivo cifrado, si no, GnuPG prueba todas las claves.
Jens Erat
Uso GnuPG mediante programación y tengo un llavero con cientos de claves privadas y el mensaje puede estar encriptado con docenas de ellas. Parece un poco derrochador que solo los pruebe a todos (en realidad, trata de desbloquearlos a todos usando la frase de contraseña dada y toma el primero que funciona).
jlh
2
GnuPG solo los prueba a todos si la parte emisora ​​ocultó la clave. Parece que su caso de uso no fue uno de los objetivos de diseño de GnuPG. Si conoce la clave privada correcta aunque no esté almacenada en el archivo cifrado, considere administrar diferentes directorios / llaves de inicio de GnuPG con una sola clave privada.
Jens Erat
Sí, parece que mi caso de uso no es adecuado para gpg. Para completar, aquí hay una observación más detallada: mis ID de destinatario no están ocultos (sin usar -R), por lo que gpg sabe cuál de las quizás una docena de teclas debería probar, no tiene que probar todo el llavero. Sin embargo, gpg no sabe para qué clave proporcioné la frase de contraseña, por lo que debe probar esas docenas de claves, lo que ralentiza considerablemente las cosas.
jlh
6
bash-4.2$ gpg --import b_secret.key
gpg: key 23E7859B: already in secret keyring
gpg: Total number processed: 1
gpg:       secret keys read: 1
gpg:  secret keys unchanged: 1
bash-4.2$ gpg --decrypt b_txt.asc
gpg: key 23E7859B: secret key without public key - skipped
gpg: encrypted with RSA key, ID 04702E37
gpg: decryption failed: secret key not available
anshul
fuente
3
Bienvenido a SuperUser, su sugerencia ya está en otra respuesta. Deberías votar esa respuesta en lugar de hacer una nueva. Aún no tienes suficiente reputación para hacer eso, espera hasta que lo hagas.
Vlastimil Ovčáčík
2

No necesita declarar expresamente la clave secreta en el comando de descifrado gpg. Si el keypair- tanto Pública Y keys- privada como estados Jens están presentes en el anillo de claves en el host en el que está descifrado, GPG determinará automagicamente la clave secreta requerida para el descifrado y presentan un desafío contraseña.

SIN EMBARGO si desea probar todas las claves (no almacenadas en caché) ( tal vez esté probando un archivo encriptado con varias claves ), el uso del interruptor --try-all-secretsrecorrerá todas las claves secretas en su llavero probándolas a su vez. es decir:

gpg -d --try-all-secrets test-gpg.txt.asc

HTH- Terrence

F1Linux
fuente