export-secret-key después de que Yubikey esté enchufado

10

Tengo un Yubikey Neo y estoy ejecutando GPGTools (GnuPG / MacGPG2 2.0.28) en OS X (10.11.2). He generado una clave maestra con habilidades SC y claves de firma y cifrado separadas que he movido a Yubikey a través del comando keytocard . Estos se realizan en una computadora fuera de línea separada.

En mi computadora del día a día, solo he importado mi clave pública. Cuando inserto mi Yubikey y ejecuto gpg --card-status , como se esperaba, muestra dos subclaves secretas. Sin embargo, una vez que se elimina el Yubikey, puedo ejecutar gpg --list-secret-keys y mostrará mis subclaves secretas de firma y cifrado. Además, puedo gpg --export-secret-key y también reimportarlos, aunque estas claves secretas no pueden realizar ninguna firma ni descifrar ningún archivo (nuevamente, con el Yubikey eliminado de la computadora). Este es un comportamiento muy extraño, ya que parece que la computadora está leyendo claves privadas de Yubikey y almacenándolas localmente (aunque estas claves privadas no son válidas).

Pasos para reproducir:

  1. Comience con un llavero GPG vacío, verifique con gpg --list-keys .
  2. Inserte Yubikey con subclaves, verifique estas subclaves con gpg --card-status .
  3. Eliminar el Yubikey.
  4. Ejecute gpg --list-secret-key y aparecerán las subclaves de Yubikey.
  5. También puede ejecutar gpg --armor --export-secret-key <key> y se imprimirá una clave privada (esta clave privada no parece poder realizar ninguna acción).

¿Estoy malinterpretando alguna información?

    
pregunta Andrew Henderson 15.12.2015 - 09:58
fuente

1 respuesta

12

Una vez que las claves privadas están en el Yubikey, no son exportables. Lo que puede exportar son la clave secreta stubs , que prácticamente solo dicen que esta clave está en una tarjeta inteligente. Eran el método principal para hacer que la llave funcionara en una computadora diferente (con la tarjeta inteligente), pero en estos días, ya que hay suficiente información almacenada sobre la clave, todo lo que necesita es usar --card-status para obtener el mismo resguardo. desde la clave de hardware, e importe la clave pública.

Puede intentar ver qué información se encuentra en el talón exportado con

% gpg --list-packets --verbose <exported-stub.bin

# off=1796 ctb=9d tag=7 hlen=3 plen=294
:secret sub key packet:
    version 4, algo 1, created NNNNNNNNN, expires 0
    pkey[0]: [2048 bits]
    pkey[1]: [17 bits]
    gnu-divert-to-card S2K, algo: 0, simple checksum, hash: 0
    serial-number:  <ELIDED>
    keyid: <KEYID>
# off=2093 ctb=89 tag=2 hlen=3 plen=293
:signature packet: algo 1, keyid <KEYID>
    version 4, created NNNNNNNNNN, md5len 0, sigclass 0x18
    digest algo 8, begin of digest 7c 79
    hashed subpkt 2 len 4 (sig created <YYYY-MM-DD>)
    hashed subpkt 27 len 1 (key flags: 20)
    hashed subpkt 9 len 4 (key expires after <TIME>)
    subpkt 16 len 8 (issuer key ID <KEYID>)
    data: [2048 bits]

Si bien parece que el "subpaquete de clave secreta" tiene una pkey , pero la entrada gnu-diver-to-card significa que no hay una clave secreta presente. La firma es la firma de la clave, que es para garantizar que pueda verificarse con la clave pública, y no contiene la clave privada.

Otro indicio de que todo está seguro de que gpg no solicita una frase de contraseña para exportar claves secretas en este caso.

Actualización: confirmó a través de la fuente que pkey de hecho se refiere a la clave pública, no a la clave privada, se denominan skey dentro de gnupg. Un paquete que contiene la frase protegida con contraseña se vería así:

off=557 ctb=9c tag=7 hlen=2 plen=134
:secret sub key packet:
    version 4, algo 22, created NNNNNNNNNN, expires 0
    pkey[0]: [80 bits] ed25519 (1.3.6.1.4.1.11591.15.1)
    pkey[1]: [263 bits]
    iter+salt S2K, algo: 7, SHA1 protection, hash: 2, salt: HHHHHHHHHHHHHHHH
    protect count: NNNNNNN (NNN)
    protect IV:  <IV>
 >> skey[2]: [v4 protected] <<
    keyid: <KEYID>

En conclusión, la clave privada es segura, el contenido criptográfico no se exporta de la manera que se muestra arriba cuando se usa una tarjeta inteligente como la Yubikey.

    
respondido por el chexum 15.12.2015 - 11:23
fuente

Lea otras preguntas en las etiquetas