Ich habe den klassischen Satz von Unterschlüsseln für Authentifizierung, Signatur und Verschlüsselung mit erstellt gpg
und sie dann auf eine Smartcard [Ledger Nano S] verschoben. Das schien problemlos zu funktionieren, da ich die drei Unterschlüssel sehen kann:
$ 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
Wie ich dort gelandet bin
Allgemeine Information:
$ gpg --version
gpg (GnuPG) 2.2.27
libgcrypt 1.8.8
Generieren Sie Unterschlüssel für Verschlüsselung, Signatur und Authentifizierung:
$ 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
Unterschlüssel prüfen:
$ 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]
Verschieben Sie die Unterschlüssel in einen neuen Smartcard-Steckplatz ( /!\
achten Sie darauf, den Hauptschlüssel nicht zu überschreiben):
$ 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
Das Problem, das ich jetzt habe
Die Fingerabdrücke stimmen mit dem überein, was der Schlüsselbund sieht, aber aus einem Grund, den ich nicht verstehe, ist der Verschlüsselungsschlüssel-Stub nicht vorhanden und der private Unterschlüssel ist immer noch im Computer-Schlüsselbund vorhanden. Beim Entschlüsseln wird immer noch nach der Passphrase statt der Smartcard-PIN gefragt:
```
$ 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
```
Was ich bisher versucht habe
Ich habe versucht, den privaten Schlüssel zu entfernen, kann den Stub jedoch nicht zwingen, sich selbst zu erstellen:
ssb# cv25519/78B9F3F67D9B47DC created: 2022-06-03 expires: never
Beim Starten im Debug wird mir ein falscher Tastengriff für die Taste angezeigt (nach dem Löschen wird immer derselbe erstellt):
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
Bestätigt mit:
$ 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 - - - - -
- Ich habe versucht, einen neuen Unterschlüssel für die Verschlüsselung mit derselben Kurve neu zu erstellen, und das
keytocard
Verhalten ist immer noch gleich: Es wird ohne Fehler beendet, aber der Schlüssel (neuer Griff unten) wird nicht verschoben:
$ gpg-connect-agent 'keyinfo --list' /bye | grep 5CF6DF65EF080B01F774BCC7F8063814CE5DAEF6
S KEYINFO 5CF6DF65EF080B01F774BCC7F8063814CE5DAEF6 D - - - P - - -
Antwort1
Ok, die Verwendung einer anderen Kurve funktioniert:
$ 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]
Ich denke, ich muss dies dem Kartenanbieter melden.