gpg está intentando firmar con una subclave de firma antigua que ya no tengo

3

Obtuve una nueva tarjeta inteligente (yubikey neo) y generé una nueva clave de firma en ella. así que ahora mi clave pública menciona tanto la antigua como la nueva:

pub   rsa3072/B50A93EA 2015-08-13 [expires: 2018-08-12]
uid         [ unknown] Arthur Ulfeldt <[email protected]>
sub   rsa2048/6EE4E07A 2015-08-13 [expires: 2018-08-12]
sub   rsa2048/BC4C4B6C 2015-08-13 [expires: 2018-08-12] # <-- new key
sub   rsa2048/67E40B89 2015-08-13 [expires: 2018-08-12]
sub   rsa2048/91FF2F99 2015-08-16 [expires: 2018-08-15] # <-- old key
sub   rsa2048/3157DA5D 2015-08-16 [expires: 2018-08-15]

y gpg-K muestra cuáles tengo las claves privadas para:

sec#  rsa3072/B50A93EA 2015-08-13 [expires: 2018-08-12]
uid         [ unknown] Arthur Ulfeldt <[email protected]>
ssb>  rsa2048/6EE4E07A 2015-08-13 [expires: 2018-08-12]
ssb>  rsa2048/BC4C4B6C 2015-08-13 [expires: 2018-08-12]  # <-- new key
ssb>  rsa2048/67E40B89 2015-08-13 [expires: 2018-08-12]
ssb#  rsa2048/91FF2F99 2015-08-16 [expires: 2018-08-15]  # <-- old key
ssb#  rsa2048/3157DA5D 2015-08-16 [expires: 2018-08-15]

ejecutando gpg --clearsign -u B50A93EA --status-fd 1 --debug-all imprime esto:

....
gpg: DBG: chan_5 -> KEYINFO F5B5D673F6FFFA999162D7F2F4F91750FF756F2F
gpg: DBG: chan_5 <- ERR 67108891 Not found <GPG Agent>
gpg: DBG: md debug: can't open dbgmd-00001.clearsign
...
gpg: DBG: chan_5 -> SETKEYDESC Please+enter+the+passphrase+to+unlock+the+OpenPGP+secret+key:%0A%22Arthur+Ulfeldt+<[email protected]>%22%0A2048-bit+RSA+key,+ID+91FF2F99,%0Acreated+2015-08-16+(main+key+ID+B50A93EA).%0A
gpg: DBG: chan_5 <- OK
gpg: DBG: chan_5 -> SETHASH 8 5B6489E68D...A9780A91BB6526C
gpg: DBG: chan_5 <- OK
gpg: DBG: chan_5 -> PKSIGN
gpg: DBG: chan_5 <- ERR 67108881 No secret key <GPG Agent>
gpg: signing failed: No secret key

que parece que está usando la subclave 91FF2F99 para intentar firmar con.

gpg --card-info muestra las claves correctas en la tarjeta.

¿Cómo puedo verificar que está intentando firmar con la clave antigua?

¿hay alguna forma de hacer que use la clave disponible en la tarjeta inteligente que está conectada en este momento?

PS: Estoy usando gpg (GnuPG) 2.1.7

    
pregunta Arthur Ulfeldt 27.08.2015 - 02:52
fuente

2 respuestas

2

Tuve problemas similares, solo específicos de Enigmail después de actualizar a GnuPG2.1 en Debian a través de dist-upgrade (usuario de Sid).

No pude enviar correos electrónicos que tenía la intención de firmar. Enigmail informó:

  

Error: error de comando de cifrado '

La depuración de GnuPG produjo varios errores:

ERR 67109139 Unknown IPC command <GPG Agent>
ERR 67108949 No pinentry <GPG Agent>
command 'PKSIGN' failed: No secret key

Después de un poco de lectura (también la respuesta de Jens Erat), resulta que enigmail / gpg-agent seleccionaron la subclave de firma con la fecha de creación más reciente.

Para aclarar, originalmente creé claves GnuPG siguiendo una guía de Debian para desarrolladores, que recomendaba crear subclaves para cada máquina diferente. Sin embargo, eliminé esa práctica casi de inmediato por varios motivos y eliminé la subclave de firma en cuestión.

Ambas subclaves; cuanto más viejo conservaba y más nuevo creía haber eliminado, se mostraba cuando ejecutaba gpg --list-keys xxxxx en la terminal.

Otro indicio para mí fue 'No hay un bit de clave secreta', de hecho no había ninguna subclave secreta para la subclave de firma pública que estaba siendo seleccionada, tal vez solo eliminé esa - no estoy seguro.

Así que eliminé la subclave de firma pública que Enigmail seguía intentando usar:

gpg --edit-key xxxxx
$ key 2
$ delkey

Mágicamente podría enviar correos electrónicos firmados nuevamente.

No estoy seguro si la actualización de GnuPG recargó las claves antiguas, si de alguna manera no eliminé la clave correcta anteriormente o si la restauré, o si Enigmail simplemente está funcionando de manera diferente con GnuPG 2.1 (o incluso de manera diferente en la última versión de Enigmail actualización para Icedove).

    
respondido por el Rik 15.10.2015 - 08:16
fuente
1

Parece que hay cierta confusión sobre las claves de firma "nuevas" y "antiguas", ya que la que usted describe como "nueva" se generó tres días antes que la "antigua". Además, la lista de claves proporcionada indica que la clave "antigua" es la clave de la tarjeta (como para el hash # en la línea de subclave). Entonces, GnuPG está haciendo lo que se espera que haga aquí: use la subclave más reciente disponible para realizar una operación. La subclave de la tarjeta se considera disponible, ya que puede ponerla a disposición.

No hay manera de decirle a GnuPG que use automáticamente la clave de la tarjeta si la tarjeta está enchufada a su computadora, y de lo contrario recurra a otra clave. Podría crear algún tipo de envoltorio, que pruebe la tarjeta y luego elija la subclave de su elección, lo cual es posible agregando ! después de la identificación de la clave, por ejemplo, usando -u BC4C4B6C! para la clave de firma sin tarjeta.

    
respondido por el Jens Erat 05.09.2015 - 13:54
fuente

Lea otras preguntas en las etiquetas