Crear una copia de seguridad de Yubikey con claves PGP idénticas

8

Recientemente compré dos Yubikeys Neo que me gustaría usar principalmente para el cifrado y la autenticación mediante el uso de la función de tarjeta inteligente con GnuPG. He leído algunos consejos sobre el tema (especialmente aquí y aquí ) y logré generar y exportar al Yubikey un llavero con las 3 subclaves para firmar, encriptar y autenticar. Usando estos, pude encriptar un archivo usando mi clave pública que solo podía descifrar conectando el Yubikey. Genial.

Ahora quiero duplicar esta configuración en el otro Yubikey para que actúe como una copia de seguridad en caso de que pierda mi dispositivo principal. Dado que el comando "keytocard" de gpg elimina las claves locales, solo pude exportar las mismas claves al otro Yubikey al hacer y restaurar una copia de seguridad de mi directorio .gnupg (que no parece correcto), y aún así, cuando intento para descifrar mi archivo de prueba, gpg solicita específicamente la clave con un número de serie y no se descifra con la clave de respaldo.

¿Hay una manera de usar dos Yubikey diferentes como una copia de seguridad como esta? Si no, ¿cuál es la mejor manera de proceder para lograr esto? (es decir, mantener una clave de respaldo que puedo usar para descifrar mis archivos en caso de que pierda la clave principal).

    
pregunta Foaly 14.03.2018 - 17:43
fuente

4 respuestas

3

Después de muchas pruebas y errores, finalmente encontré la manera de lograrlo. Aquí hay una respuesta a mi propia pregunta en caso de que ayude a alguien:

El truco fue no intentar exportar las mismas subclaves a los dos Yubikeys (a gpg no le gusta eso) sino generar diferentes subclaves. En mi llavero tengo 6 subclaves: 3 para el Yubikey principal (Sign, Encrypt, Auth) y 3 para el Yubikey de respaldo. Exporté las claves privadas correspondientes a los Yubikey, que esta vez no necesitaban el truco para restaurar una copia de seguridad de .gnupg . Finalmente, cifro mis archivos usando ambas claves públicas, para poder descifrarlas con cualquiera de los dos Yubikeys:

gpg -e -r [keyid1]! -r [keyid2]! [file]

No olvide el signo de exclamación al final de cada ID de clave. De lo contrario, por alguna razón, gpg entenderá que para cada destinatario desea "alguna clave en el mismo anillo de claves" y seleccionará la misma clave dos veces de forma predeterminada.

Ahora gpg aceptará una clave privada para descifrar el archivo. En el caso de Yubikeys, le pedirá que conecte el primero y, si cancela, le pedirá el segundo, para que pueda usar cualquiera de los dos. Especifiqué la clave principal en el primer -r , por lo que gpg pregunta directamente por el Yubikey principal y no me molestará con la copia de seguridad. Para simplificar las cosas, asigné un alias al comando gpg completo con ambos keyids a yk_encrypt .

    
respondido por el Foaly 15.03.2018 - 19:46
fuente
3

En lugar de hacer una copia de seguridad de un directorio completo, puede exportar (crear una copia de seguridad de) la clave, por ejemplo,

gpg -a -o seckey.asc --export-secret-key ABCD1234

e importarlo de nuevo (después de pasar a la primera tarjeta) con

gpg --import seckey.asc

GPG solicita la tarjeta específica porque, después de mover la llave a la tarjeta, almacena un código auxiliar en su sistema, que vincula esa clave con esa tarjeta. Si elimina la clave de gpg (por ejemplo, gpg --delete-secret-and-public-key ABCD1234) y la referencia (Uno de potencialmente muchos en, por ejemplo,

C: \ users \ someUser \ AppData \ Roaming \ gnupg \ private-keys-v1.d o

/home/someUser/.gnupg/private-keys-v1.d

) luego puedes insertar la copia de seguridad de Yubikey y

gpg --card-status

para crear un código auxiliar que haga referencia a esa clave en el segundo Yubikey en lugar del primero.

Usted podría también simplemente mantener segura la clave exportada y usarla como su copia de seguridad, pero esa no fue la pregunta formulada.

    
respondido por el user8675309 26.03.2018 - 19:57
fuente
2

encontré esta propaganda que dice que hay un comando que puedes ejecutar que esencialmente le dirá a tu aplicación local de gpg que escanee la nueva tarjeta y la use en su lugar si las cosas se complican. por lo tanto, en el caso de usar una tarjeta de respaldo, no es el peor de los casos ejecutar un "init" para que funcione.

enlace

  

En ejecución

     

gpg-connect-agent "scd serialno" "learn --force" / bye

     

actualizará los apéndices de clave secreta para las claves PGP en el actual   llave insertada Por lo tanto, ejecutar después de la inserción de la clave hará que gpg   utilizar la clave actualmente insertada.

    
respondido por el MrTristan 13.08.2018 - 02:09
fuente
0

Es posible.

  1. Genera las claves localmente en tu llavero. No Yubikey todavía.
  2. Exportar las claves secretas (incluidas las principales y todas las subclaves). (Recuerde la contraseña que utilizó para cifrar sus claves, ya que el blob exportado se cifrará con ella)
  3. Una vez que haya exportado y almacenado las claves privadas en algún lugar seguro, introduzca cada tecla en el menú de teclas de edición.
  4. Elimine Yubikey 1, luego ingrese el menú de edición de la clave que acaba de mover.
  5. Use el comando grip para encontrar los Keygrips de cada clave.
  6. Encontrará un archivo .key para cada empuñadura en su carpeta ~/.gnupg/private-keys-v1.d/* ... elimínelos, teniendo cuidado de no eliminar nada más (no quiero borrar las claves privadas de los anillos no relacionados)
  7. gpg2 --import las claves privadas exportadas que hizo en el paso 2.
  8. Ahora tienes nuevamente las claves privadas en tu llavero local. Inserte yubikey 2 y repita el paso 3.
  9. Aquí está la parte difícil de explicar ... esos archivos de clave privada keygrip.key básicamente le dicen a gpg "esta clave privada está en Yubikey con el número de serie xxxxx", por lo que no puede simplemente intercambiar tarjetas y usar cualquiera o ... .tienes que ejecutar algunos comandos entre los intercambios ... lo cual está bien ya que probablemente no estarás intercambiando y solo quieres un segundo para una copia de seguridad ... pero 2 años después, cuando necesites tu copia de seguridad, puedes tropezar Porque te olvidaste de este pequeño problema. Una forma de hacerlo es eliminar todas las claves privadas a través del método de agarre de teclas que te mostré. Luego simplemente ejecute gpg2 --card-edit una vez y detectará y conectará automáticamente su tarjeta a las claves privadas de las claves de pub en su anillo de claves (eliminar los botones no eliminará las claves de pub) ... o ejecutar gpg-connect-agent "scd serialno" "learn --force" /bye como MrTristan sugirió reiniciar la tarjeta serie x información de relación de clave privada.

Una vez que haya ingresado una clave privada en el yubikey, no podrá obtenerla, por lo que para su cuenta ya fue demasiado tarde.

También, hay un gran problema con este método: ¿Cómo sabes que nadie está haciendo keylogging + robando la copia de seguridad de tu clave privada mientras lo estás haciendo ...

Aun así, este método es mejor que simplemente almacenar claves privadas en su disco. Como su superficie de ataque se reduce a la configuración inicial solo ... y en cualquier momento que necesite sacar su copia de seguridad.

    
respondido por el user3074620 18.10.2018 - 08:25
fuente

Lea otras preguntas en las etiquetas