2011-04-07 21 views
63

Antecedentes: Mi jefe ha intentado exportar una clave ASC con partes públicas y privadas, pero cada vez que obtengo el archivo, la parte privada nunca se carga y se ha ganado t descifrar cualquier archivo.Cómo exportar clave ASC privada/secreta para descifrar archivos GPG en Windows

Hemos intentado exportar la clave ASC usando:

  • aplicación de Windows Kleopatra 2.1 (incluido en Gpg4win)
  • de Windows GNU aplicación Asistente de privacidad (incluido en Gpg4win)

     Error: "Decryption failed. Secret Key Not available." 
    

¿Cómo se exporta correctamente una clave asc secreta o privada para descifrar archivos gpg?

Respuesta

131

Puede exportar la clave privada con la command-line tool from GPG. Funciona en el shell de Windows. Utilice el siguiente comando:

gpg --export-secret-keys 

Una exportación normal con --export no incluirá las claves privadas, por lo tanto, usted tiene que utilizar --export-secret-keys.

Editar:

Para resumir la información dada en mis comentarios, este es el comando que permite exportar una clave específica con la 1234ABCD ID a la secret.asc archivo:

gpg --export-secret-keys -a 1234ABCD > secret.asc 

Puede encontrar la identificación que necesita con el siguiente comando. El ID es la segunda parte de la segunda columna:

gpg --list-keys 

Exportar sólo 1 llave secreta específica en lugar de todos ellos:

gpg --export-secret-keys keyIDNumber > exportedKeyFilename.asc 

keyIDNumber es el número de la ID tecla para la tecla deseada estás tratando de exportar

+3

@Brian: Esto arrojará la llave a la consola. Si desea almacenarlo en un archivo, puede redirigir el resultado a un nombre de archivo arbitrario ("gpg --export-secret-keys> secret.asc"). – Demento

+1

ok genial. ¡Lo agregué a tu respuesta! –

+2

¿qué significa -a? –

9

Creo que todavía no había importar la clave privada como dijo el mensaje de error, para importar la clave pública/privada de GnuPG:

gpg --import mypub_key 
gpg --allow-secret-key-import --import myprv_key 
+0

que estaba preguntando acerca de la exportación desde un ordenador eso funciona ... solo puedes importar la clave si está en un servidor local. –

+0

@Brian McCarthy: ¿Qué estás tratando de decir? – SIFE

+0

¿Realmente necesitamos importar la clave pública si la privada ya se importó? Según tengo entendido, se puede generar una clave pública a partir de un elemento privado. – farhany

6

este terminó trabajando para mí:

gpg -a --export-secret-keys > exportedKeyFilename.asc 

puede poner nombres a keyfilename.asc por cualquier nombre, siempre y cuando mantenga en la extensión .asc.
este comando copia todas las claves secretas en la computadora de un usuario en keyfilename.asc en el directorio de trabajo de donde se llamó al comando.

para exportar sólo 1 llave secreta específica en lugar de todos ellos:

gpg -a --export-secret-keys keyIDNumber > exportedKeyFilename.asc 

keyIDNumber es el número de la ID tecla para la tecla deseada que está intentando exportar.

+1

Puede enumerar todas las claves disponibles con "--list-keys". La segunda columna contendrá ID como "2048g/1234ABCD". Encuentre la clave deseada y exportela con "gpg --export-secret-keys 1234ABCD> secret.asc", por supuesto cambiando 1234ABCD con la ID correcta. También puede agregar el indicador "-a". Escribe la salida con caracteres ASCII, en caso de que la salida binaria esté causando problemas. – Demento

+0

@demento, gracias por los comentarios adicionales ... Agregaré que a la respuesta –

+2

usted todavía necesita -a si realmente quiere asc – RichieHH

24

Todas las respuestas anteriores son correctas, pero podrían faltar un paso fundamental, es necesario modificar la clave importada y "en última instancia, confía en" esa clave

gpg --edit-key (keyIDNumber) 
gpg> trust 

Please decide how far you trust this user to correctly verify other users' keys 
(by looking at passports, checking fingerprints from different sources, etc.) 

    1 = I don't know or won't say 
    2 = I do NOT trust 
    3 = I trust marginally 
    4 = I trust fully 
    5 = I trust ultimately 
    m = back to the main menu 

y seleccione 5 para permitir que la clave privada importada como una de las llaves

13

Véase el tratamiento de la nutria por Dark

http://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

que incluye un razonablemente seguro w ay para transferir claves. Puede poner esa recomendación en las secuencias de comandos del shell que se muestran a continuación para un uso repetido.

En primer lugar obtener la KEYID que desee de la lista mostrada por

$ gpg -K 

De la lista de notas resultantes del KEYID (los 8 hexadecimales siguientes seg) es necesario para la transferencia.

A continuación, envíe las comprobadas shell scpts "export_private_key" en la primera cuenta y genere su pubkey.gpg + keys.asc. A continuación, invoque en la segunda cuenta "import_private_key". Aquí se muestra su contenido con el gato (copiar el contenido & pegar):

$ cat export_private_key 
gpg -K 
echo "select private key" 
read KEYID 
gpg --output pubkey.gpg --export $KEYID 
echo REMEMBER THE COMING PASS-PHRASE 
gpg --output - --export-secret-key $KEYID | \ 
    cat pubkey.gpg - | \ 
    gpg --armor --output keys.asc --symmetric --cipher-algo AES256 
ls -l pubkey.gpg keys.asc 
#################### E X P O R T _ P R I V A T E _ K E Y ##################### 

Ahora tranfer por algún medio la "pubkey.gpg" (si es necesario) y el "keys.asc" privado a la segunda cuenta y envoke el programa que se muestra abajo.

$ cat import_private_key 
gpg --no-use-agent --output - keys.asc | gpg --import 
################### I M P O R T _ P R I V A T E _ K E Y ###################### 

En el espíritu de Otter "Y eso, debería ser, eso".

+0

Gracias por el guión para incluir tanto el clave pública y privada en un archivo protegido por contraseña. ¡Hace mi vida mucho mejor! – codekoala

2

Similar a la respuesta de @Wolfram J, aquí es un método para cifrar la clave privada with a passphrase:

gpg --output - --armor --export $KEYID | \ 
    gpg --output private_key.asc --armor --symmetric --cipher-algo AES256 

y un método correspondiente para descifrar:

gpg private_key.asc 
Cuestiones relacionadas