subclave de cifrado GPG en problema de varias tarjetas inteligentes

10

¿Hay alguna forma de decirle a GPG que, si necesita descifrar algo, puede encontrar la clave de cifrado privada en una de las dos tarjetas inteligentes?

Mi configuración (simplificada) es la siguiente:

  • Se generó una clave maestra sin conexión con una subclave de cifrado.
  • Transfirió la subclave de cifrado a Yubikey 1.
  • En Yubikey 1, se generaron las subclaves auth y sign.
  • Transfirió la subclave de cifrado a Yubikey 2.
  • En Yubikey 2, se generan las subclaves de autenticación y firma.

Así que me quedo con:

gpg2 --list-keys
/Users/scott/.gnupg/pubring.gpg
-------------------------------
pub   3072R/600955C7 2016-09-09
uid       [ultimate] Scott Cariss 
uid       [ultimate] Scott Cariss (msn.com) 
uid       [ultimate] Scott Cariss (bigfish.co.uk)
uid       [ultimate] [jpeg image of size 12378]
sub   2048R/6FE6415F 2016-09-09
sub   2048R/D6DBBCAC 2016-09-09
sub   2048R/01A208C9 2016-09-09
sub   2048R/8D2A1368 2016-10-23
sub   2048R/65B08C5B 2016-10-23

Mi subclave de cifrado se comparte entre las tarjetas inteligentes y tiene claves de autenticación y firma individuales en cada tarjeta inteligente.

Pero cuando descifro algo, siempre va a la primera tarjeta inteligente y no encuentra la clave de cifrado en la otra tarjeta inteligente. La entrada gpg-agent / pin solo me pedirá que inserte la tarjeta inteligente correcta.

ACTUALIZACIÓN (Solución alternativa)

Como ya se ha respondido, no es algo que GPG admita, pero he encontrado una solución que funciona para mí.

En Mac OS XI use enlace para detectar la llegada de una de mis tarjetas inteligentes (yubikeys) y hacer que ejecute un script :

#!/bin/bash
{
    killall -9 ssh-agent gpg-agent
    for keystub in $(/usr/local/MacGPG2/bin/gpg2 --with-keygrip --list-secret-keys {{EMAIL ADDRESS}} | grep Keygrip | awk '{print $3}'); do rm /Users/{{USERNAME}}/.gnupg/private-keys-v1.d/$keystub.key; done;
    /usr/local/MacGPG2/bin/gpg2 --card-status
    eval $(/usr/local/MacGPG2/bin/gpgconf --launch gpg-agent)
    ssh-add -l
} &> /Users/{{USERNAME}}/bin/gpg-card-change-log.txt

exit 0

Como todas las claves secretas se mantienen fuera de línea, no hay ningún problema en eliminarlas y luego ejecutar --card-status , lo que trae los apéndices de la clave secreta de la tarjeta inteligente actualmente conectada.

    
pregunta Brady 23.03.2017 - 15:31
fuente

1 respuesta

8

Supongo que tendrás mala suerte, y esto no es compatible con GnuPG. Al usar tarjetas inteligentes OpenPGP, se guarda un dummy de clave secreta en su llavero, que contiene una referencia a la tarjeta inteligente en la que está almacenado. El subpaquete de clave secreta tiene este aspecto cuando se muestra a través de gpg --list-packets :

:secret sub key packet:
        version 4, algo 1, created 1358985314, expires 0
        pkey[0]: [2048 bits]
        pkey[1]: [17 bits]
        gnu-divert-to-card S2K, algo: 0, simple checksum, hash: 0
        serial-number:  01 23 45 67 89 ab cd ef 01 23 45 67 89 ab cd ef
        keyid: 9FF7E53ACB4BD3EE

Mirando el código , no me parece más que un número de serie sería compatible.

    
respondido por el Jens Erat 24.03.2017 - 19:23
fuente

Lea otras preguntas en las etiquetas