El código auxiliar GPG para la subclave de cifrado no funciona

El código auxiliar GPG para la subclave de cifrado no funciona

Creé el conjunto clásico de subclaves de autenticación, firma y cifrado con gpg, luego los moví a una tarjeta inteligente [ledger nano S], que pareció funcionar bien, ya que puedo ver las tres subclaves:

$ gpg --card-status

  Serial number ....: 00000000
  Signature key ....: F34F 66B8 5D18 A8BC CDD4  C909 4705 D74B 9E2F EFFC
  Encryption key....: AD71 E2C1 2E41 C870 3192  D997 78B9 F3F6 7D9B 47DC
  Authentication key: D644 70D8 88AB BA93 F9F4  BFE0 2726 E1C4 E4DB E4C3

Cómo aterricé allí

Información general:

$ gpg --version
gpg (GnuPG) 2.2.27
libgcrypt 1.8.8

Generar subclaves de cifrado, firma y autenticación:

$ gpg --expert --edit-key Plup*
gpg> addkey
  type: ECC (sign only)
  curve: cv25519
  Please unlock the card

gpg> addkey
  type: ECC (encrypt only)
  curve: cv25519

gpg> addkey
  type: ECC (set your own capabilities)
  allowed actions: Authenticate
  curve: cv25519

gpg> save

Verificar subclaves:

$ gpg -K Plup*
sec>  ed25519 2022-06-03 [SC]
      394ED8F3BA05CF4E7866D54657EEBF4BCFF5BFCD
      Card serial no. = 2C97 11BFF50F
uid           [ultimate] Plup* <[email protected]>
ssb   ed25519 2022-06-03 [S]
ssb   cv25519 2022-06-03 [E]
ssb   ed25519 2022-06-03 [A]

Mueva las subclaves a una nueva ranura para tarjeta inteligente ( /!\asegúrese de no anular la clave maestra):

$ gpg --card-status
Reader ...........: Ledger Nano S [Nano S] (0001) 00 00
Serial number ....: 7AC3CFF8
Signature key ....: [none]

$ gpg --edit-key Plup*
gpg> key 1
gpg> keytocard
    Signature key
    Passphrase:
    Please entre the Admin PIN
    Number: 2C97 7AC3CFF8

gpg> key 1
gpg> key 2
gpg> keytocard
    Encryption key
    Passphrase:

gpg> key 2
gpg> key 3
gpg> keytocard
    Authentication key
    Passphrase:

gpg> save

El problema que tengo ahora

Las huellas digitales coinciden con lo que ve el llavero, pero por alguna razón que no entiendo, la clave de cifrado no está en su lugar y la subclave privada todavía está presente en el llavero de la computadora. Todavía solicita la frase de contraseña en lugar del PIN de la tarjeta inteligente al descifrar:

```
$ gpg --with-keygrip --with-subkey-fingerprints -K Plup*

  sec>  ed25519 2022-06-03 [SC]
        394ED8F3BA05CF4E7866D54657EEBF4BCFF5BFCD
        Keygrip = 27D911732841CDB06B3CDFA100DDE95DF420B92E
        Card serial no. = 2C97 11BFF50F
  uid           [ultimate] Plup* <[email protected]>
  ssb>  ed25519 2022-06-03 [S]
        F34F66B85D18A8BCCDD4C9094705D74B9E2FEFFC
        Card serial no. = 2C97 7AC3CFF8
        Keygrip = AF76C5E4B1DA101E0F3AFEDDDED6276C4D011261
  ssb   cv25519 2022-06-03 [E]
        AD71E2C12E41C8703192D99778B9F3F67D9B47DC
        Keygrip = E6D65814CBE230A21001F36BD2BC232E6B7251ED
  ssb>  ed25519 2022-06-03 [A]
        D64470D888ABBA93F9F4BFE02726E1C4E4DBE4C3
        Card serial no. = 2C97 7AC3CFF8
        Keygrip = 511C8CAAC3A7B8A2DAD4B3E6A512A7F160A02CD5
```

Lo que he probado hasta ahora

  • Intenté eliminar la clave privada y no puedo forzar que el código auxiliar se cree por sí solo:

    ssb#  cv25519/78B9F3F67D9B47DC  created: 2022-06-03  expires: never
    
  • Al iniciar la depuración me muestra una combinación de teclas incorrecta para la clave (sigue creando la misma después de la eliminación):

2022-06-06 12:47:44 gpg-agent[12064]           id: OPENPGP.2    (grip=C74F8FF13CB491D0C98497C6B77A49FCB156F7E5)
2022-06-06 12:47:44 gpg-agent[12064] DBG: chan_11 -> READKEY OPENPGP.2
2022-06-06 12:47:44 gpg-agent[12064] DBG: chan_11 <- [ 44 20 28 31 30 3a 70 75 62 6c 69 63 2d 6b 65 79 ...(91 byte(s) skipped) ]
2022-06-06 12:47:44 gpg-agent[12064] DBG: chan_11 <- OK
2022-06-06 12:47:44 gpg-agent[12064]           id: OPENPGP.2 - shadow key created

Confirmado con:

$ gpg-connect-agent 'keyinfo --list' /bye | grep D2760001240103032C977AC3CFF80000

  S KEYINFO 705790B1A7609806F633BCCB212784031E42017E T D2760001240103032C977AC3CFF80000 OPENPGP.1 - - - - -
  S KEYINFO AF76C5E4B1DA101E0F3AFEDDDED6276C4D011261 T D2760001240103032C977AC3CFF80000 OPENPGP.1 - - - - -
  S KEYINFO C74F8FF13CB491D0C98497C6B77A49FCB156F7E5 T D2760001240103032C977AC3CFF80000 OPENPGP.2 - - - - -
  S KEYINFO 511C8CAAC3A7B8A2DAD4B3E6A512A7F160A02CD5 T D2760001240103032C977AC3CFF80000 OPENPGP.3 - - - - -
  • Intenté recrear una nueva subclave de cifrado con la misma curva y keytocardtodavía se comporta igual: finaliza sin errores pero la clave (nuevo agarre a continuación) no se mueve:
$ gpg-connect-agent 'keyinfo --list' /bye | grep 5CF6DF65EF080B01F774BCC7F8063814CE5DAEF6
S KEYINFO 5CF6DF65EF080B01F774BCC7F8063814CE5DAEF6 D - - - P - - -

Respuesta1

Ok, usar una curva diferente funciona:

$ gpg -K plup*
sec>  ed25519 2022-06-03 [SC]
      394ED8F3BA05CF4E7866D54657EEBF4BCFF5BFCD
      Card serial no. = 2C97 11BFF50F
uid           [ultimate] Plup* <[email protected]>
ssb>  ed25519 2022-06-03 [S]
ssb>  ed25519 2022-06-03 [A]
ssb>  nistp256 2022-06-06 [E]

Supongo que tengo que informar de esto al proveedor de la tarjeta.

información relacionada