YubiKey - OpenPGP-Schlüssel auf den YubiKey exportieren
In diesem Beitrag werden die erstellen Sub Keys auf einen YubiKey übertragen.
- YubiKey - OpenPGP-Schlüssel auf den YubiKey exportieren
- Begrifflichkeiten
- Vorbereitung
- Admin PIN und PIN ändern
- Sub Keys auf YubiKey schreiben
- Ein zweiter Export auf einen anderen YubiKey ist nicht möglich
Achtung, nicht jeder YubiKey ist als Smart Card für OpenPGP geeignet. Ich verwende jeweils einen YubiKey 5C NFC und einen YubiKey 5Ci, die diese Funktion unterstützen.
Begrifflichkeiten
OpenPGP Smart Card ist ein externes Speichergerät, auf dem OpenPGP-Schlüssel sicher abgespeichert und zum Signieren, Verschlüsseln und Authentisieren genutzt werden können. (https://en.wikipedia.org/wiki/OpenPGP_card)
Deutsch 🇩🇪 | Englisch 🇬🇧 |
---|---|
Signaturnutzbarkeit (S) | sign capability (= S) |
Verschlüsselungsnutzbarkeit (V) | encrypt capability (= E) |
Authentisierungsnutzbarkeit (A) | authenticate capability (= A) |
- Der YubiKey ist ein Hardwaretoken, das je nach Version die Smart Card-Funktion unterstützt. Nicht jeder YubiKey ist eine OpenPGP Smart Card❗️
Vorbereitung
In diesem Schritt werden die Sub-Keys auf den YubiKey geschrieben. Der Master Key verbleibt sicher verwahrt im Schlüsselbund auf dem Client, also auf dem System wo die Schlüssel erstellt wurden
Nachdem der YubiKey am System angeschlossen ist, lassen sich die Informationen über den Hardwaretoken abfragen.
gpg --card-status
In der Ausgabe seht ihr, dass auf dem YubiKey noch keine Schlüssel hinterlegt worden sind.
Reader ...........:
Application ID ...:
Application type .: OpenPGP
Version ..........:
Manufacturer .....: Yubico
Serial number ....:
Name of cardholder: [not set]
Language prefs ...: [not set]
Salutation .......:
URL of public key : [not set]
Login data .......: [not set]
Signature PIN ....: not forced
Key attributes ...: rsa2048 rsa2048 rsa2048
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 0 3
Signature counter : 0
KDF setting ......: off
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
General key info..: [none]
Die Felder sind noch leer
Signature key ....: [none]
Encryption key....: [none]
Authentication key: [none]
Bevor wir mit dem Export der Sub-Keys auf den YubiKey beginnen, solltet ihr noch einen kurzen Blick auf die Zeile "PIN retry counter" werfen.
Die Werte zeigen an, wie oft ihr euren YubiKey PIN falsch eingeben dürft, bevor er gesperrt wird. Im Standard sind das 3 Versuche.
Note
Wird der YubiKey gesperrt, weil der AdminPIN falsch eingegeben wurde oder verloren ging, dann kann die Smart Card-Funktion des YubiKeys auf die Werkseinstellung zurückgesetzt werden.
👉Hilfreiche GPG-Befehle
Die Smart Card kann sowohl über grafische Tools des Schlüsselbundes als auch über die CLI editiert werden.
KDF Setting - Key Derived Format (KDF)
Key Derived Function (KDF) ermöglicht einen Hash des PINs zu speichern verhindert so, dass der PIN im Klartext weitergegeben wird.
Diese Funktion setzt eine relativ neue Version von GnuPG voraus und ist möglicherweise nicht mit anderen GPG-Clients (vor allem mobilen Clients) kompatibel.
❗Damit KDF auf einem YubiKey aktiviert werden kann, darf kein GPG-Schlüssel auf dem Hardwaretoken abgelegt sein, da sonst der folgende Fehler auftaucht
gpg: error for setup KDF: Conditions of use not satisfied
Um KDF zu aktivieren, ist der Key in den Admin-Modus zu setzen.
$ gpg2 --edit-card
gpg/card> admin
gpg/card> kdf-setup
- 🔗 https://developers.yubico.com/PGP/YubiKey_5.2.3_Enhancements_to_OpenPGP_3.4.html
- 🔗 https://docs.nitrokey.com/start/windows/setting-kdf-do.html
- 🔗 https://github.com/drduh/YubiKey-Guide/issues/226
Admin PIN und PIN ändern
Die Admin PIN und die PIN sind vor weiteren Anpassungen zu ändern.
gpg --card-edit
gpg/card> admin
Admin commands are allowed
gpg/card> passwd
gpg: OpenPGP card no. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx detected
1 - change PIN
2 - unblock PIN
3 - change Admin PIN
4 - set the Reset Code
Q - quit
Your selection?
Als Erstes wird die AdminPIN (3), im zweiten Schritt dann noch die normale PIN (1) geändert.
Die Standardpasswörter sind
Admin PIN
= 12345678PIN
= 123456
Sind PIN (1) und PUK (= Admin PIN 3) für den YubiKey aktiviert, kann es mit dem Export der Schlüssel losgehen.
Sub Keys auf YubiKey schreiben
Achtung
Die Keys lassen sich nur EINMAL auf einen YubiKey übertragen. Danach wird hinter dem jeweiligen Schlüssel ein >
angezeigt. Ein Export auf einen anderen Hardwaretoken ist NICHT mehr möglich.
Für einen Export auf einen anderen YubiKey oder Smart Card, sind alle Schlüssel (private und öffentliche Schlüssel) aus dem Schlüsselbund des Betriebssystems zu löschen und neu zu importieren. (👉 Hilfreiche GPG-Befehle zur Verwaltung von Schlüsselpaaren)
Jeder Sub-Key ist EINZELN auf den YubiKey zu exportieren.
Zur Erinnerung noch einmal die Gegenüberstellung der 🇩🇪 deutschen und 🇬🇧 englischen Begriffe.
Deutsch 🇩🇪 | Englisch 🇬🇧 |
---|---|
Signaturnutzbarkeit (S) | sign capability (= S) |
Verschlüsselungsnutzbarkeit (V) | encrypt capability (= E) |
Authentisierungsnutzbarkeit (A) | authenticate capability (= A) |
Der Export wird gestartet 🏁.
gpg --expert --edit-key XXX111222333444555
Der erste Sub-Key für die Verschlüsselungsnutzbarkeit = encrypt capability (E) wird übertragen.
gpg (GnuPG) 2.2.17; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Geheimer Unterschlüssel ist vorhanden.
pub rsa4096/XXX111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: C
Vertrauen: ultimativ Gültigkeit: ultimativ
ssb rsa4096/111222333444555666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: E
ssb rsa4096/YY111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: S
ssb rsa4096/AA999888777666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: A
[ ultimativ ] (1). benutzer <benutzer@e-mail.de>
gpg> key 1
pub rsa4096/XXX111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: C
Vertrauen: ultimativ Gültigkeit: ultimativ
ssb* rsa4096/111222333444555666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: E
ssb rsa4096/YY111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: S
ssb rsa4096/AA999888777666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: A
[ ultimativ ] (1). benutzer <benutzer@e-mail.de>
gpg> keytocard
Wählen Sie den Speicherort für den Schlüssel:
(2) Verschlüsselungs-Schlüssel
Ihre Auswahl? 2
gpg> save
Es wird zuerst nach der Passphrase des GPG-Schlüssels gefragt, dann nach der AdminPIN (= PUK) des YubiKeys. (Ggf. sind zur Bestätigung die Metall-Kontakte am Hardwaretoken zu drücken.)
Ein Blick auf den YubiKey zeigt dort den ersten erfolgreich übertragenen Schlüssel an:
gpg --card-status
Die verbleibenden Sub-Keys lassen sich nach dem gleichen Schema übertragen und in den richtigen Slot auf dem YubiKey schreiben.
gpg> key 2
pub rsa4096/XXX111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: C
Vertrauen: unbekannt Gültigkeit: unbekannt
ssb rsa4096/111222333444555666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: E
Kartennummer:0006 11182540
ssb* rsa4096/YY111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: S
ssb rsa4096/AA999888777666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: A
[ unbekannt ] (1). benutzer <benutzer@e-mail.de>
gpg> keytocard
Wählen Sie den Speicherort für den Schlüssel:
(1) Signatur-Schlüssel
(3) Authentisierungs-Schlüssel
Ihre Auswahl? 1
pub rsa4096/XXX111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: C
Vertrauen: unbekannt Gültigkeit: unbekannt
ssb rsa4096/111222333444555666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: E
Kartennummer:0006 11182540
ssb* rsa4096/YY111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: S
ssb rsa4096/AA999888777666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: A
[ unbekannt ] (1). benutzer <benutzer@e-mail.de>
gpg> save
Mit dem Befehl save
wird der Export gespeichert.
benutzer@computer:~$ gpg2 --expert --edit-key XXX111222333444555
gpg (GnuPG) 2.2.17; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Geheimer Unterschlüssel ist vorhanden.
pub rsa4096/XXX111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: C
Vertrauen: unbekannt Gültigkeit: unbekannt
ssb rsa4096/111222333444555666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: E
Kartennummer:0006 11182540
ssb rsa4096/YY111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: S
Kartennummer:0006 11182540
ssb rsa4096/AA999888777666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: A
[ unbekannt ] (1). benutzer <benutzer@e-mail.de>
gpg> key 3
pub rsa4096/XXX111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: C
Vertrauen: unbekannt Gültigkeit: unbekannt
ssb rsa4096/111222333444555666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: E
Kartennummer:0006 11182540
ssb rsa4096/YY111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: S
Kartennummer:0006 11182540
ssb* rsa4096/AA999888777666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: A
[ unbekannt ] (1). benutzer <benutzer@e-mail.de>
gpg> keytocard
Wählen Sie den Speicherort für den Schlüssel:
(3) Authentisierungs-Schlüssel
Ihre Auswahl? 3
pub rsa4096/XXX111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: C
Vertrauen: unbekannt Gültigkeit: unbekannt
ssb rsa4096/111222333444555666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: E
Kartennummer:0006 11182540
ssb rsa4096/YY111222333444555
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: S
Kartennummer:0006 11182540
ssb* rsa4096/AA999888777666
erzeugt: 2019-11-01 verfällt: 2023-10-31 Nutzung: A
[ unbekannt ] (1). benutzer <benutzer@e-mail.de>
gpg> save
Alle Sub-Key wurden damit auf den YubiKey übertragen. Die drei Slots auf dem YubiKey sollten nun alle belegt sein.
gpg --card-status
Der YubiKey ist fertig und kann nun verwendet werden.
Ein zweiter Export auf einen anderen YubiKey ist nicht möglich
Die privaten und öffentlichen Schlüssel befinden sich nach wie vor noch im Schlüsselbund auf dem Client. In der Übersicht hat sich jedoch ein kleines aber entscheidendes Detail geändert. Jeder exportierte Schlüssel wurde automatisch mit einem >
versehen.
gpg -K
Ein besonders Augenmerk ist auf das Zeichen >
hinter ssb
zu legen. Es zeigt an, dass der / die Subkeys bereits einmal Exportiert wurden.
benutzer@computer:~$ gpg2 --list-secret-keys
/home/user/.gnupg/pubring.kbx
-----------------------------
sec rsa4096 2019-11-01 [C]
XXX111222333444555
uid [ultimate] benutzer <benutzer@e-mail.de>
ssb> rsa4096 2019-11-01 [E] [expires: 2023-10-31]
ssb> rsa4096 2019-11-01 [S] [expires: 2023-10-31]
ssb> rsa4096 2019-11-01 [A] [expires: 2023-10-31]
Achtung
Die Keys lassen sich nur EINMAL auf einen YubiKey übertragen. Danach wird hinter dem jeweiligen Schlüssel ein >
angezeigt. Ein Export auf einen anderen Hardwaretoken ist NICHT mehr möglich.
Für einen Export auf einen anderen YubiKey oder Smart Card, sind alle Schlüssel (private und öffentliche Schlüssel) aus dem Schlüsselbund des Betriebssystems zu löschen und neu zu importieren. (👉 Hilfreiche GPG-Befehle zur Verwaltung von Schlüsselpaaren)
YubiKey Themenseite
Hier geht es zur 👉 YubiKey Themenseite, dort findest du noch mehr Beiträge rund um den YubiKey.
Note
Artikel überarbeitet: November 2023
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Follow Me❗️