[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: FIDO-basierte SSH-Schluessel


On 2022-06-08, Marc Haber <mh+uugrn@xxxxxxxxxxxx> wrote:

>> Wenn du die FIDO-Unterstützung von deinem YubiKey nicht verkonfiguriert
>> hast, dann erzeugst du einfach einen Schlüssel
>> 
>> $ ssh-keygen -t ecdsa-sk        # auch ed25519-sk ab Firmware 5.2.3
>
> Gefährdet das meinen PIV-Key auf demselben Yubi-Key oder ist das ein
> anderer Key-Slot?

Das ist harmlos.

Erstens existieren laut Yubico zumindest für die 5er-Modelle getrennte
Slots:

| The YubiKey 5 Series provides applications for a wide variety of
| authentication options: FIDO2, OATH, OpenPGP, OTP, Smart Card,
| U2F. The applications are all separate from each other, with
| separate storage for keys and credentials.
https://docs.yubico.com/hardware/yubikey/yk-5/tech-manual/yk5-apps.html

Zweitens wird bei obiger Schlüsselerzeugung überhaupt kein Slot
belegt. Tatsächlich ist es üblich, dass FIDO-Geräte eine unbegrenzte(!)
Anzahl Schlüssel unterstützen.

Ich erklär's, aber man braucht das nicht zu wissen, um FIDO-basierte
SSH-Schlüssel sinnvoll anzuwenden.

Bei der Schlüsselerzeugung fallen nach FIDO-Abstraktion drei Teile
an:
1. Der private Schlüssel, der das Gerät nie verlässt.
2. Der öffentliche Schlüssel, den die Gegenseite bekommt.
3. Der Keyhandle, dessen Format frei ist, der aber dem Gerät
   für jede Authentisierung übermittelt werden muss, damit es den
   passenden privaten Schlüssel zuordnen kann.
   Bei Webauthn bekommt die Gegenseite den Keyhandle, bei SSH wird
   er im privaten SSH-Schlüssel gespeichert.

Eine gängige Implementierung ist nun, dass der zufällig erzeugte
private FIDO-Schlüssel mit einem gerätespezifischen Schlüssel
symmetrisch verschlüsselt ("wrapped") wird und dieses Chiffrat als
Keyhandle ausgegeben wird.

Yubico hat ein etwas anderes, aber gleichwertiges Verfahren:
https://www.yubico.com/blog/yubicos-u2f-key-wrapping/

Das FIDO-Gerät speichert also in Wirklichkeit gar nichts, sondern
bekommt mit dem Keyhandle jedes Mal alles Notwendige, um den privaten
Schlüssel herzuleiten.

FIDO2 hat zusätzlich Resident Keys eingeführt, wo der Keyhandle auf
dem Gerät gespeichert wird, worauf sich die Slotzahl bezieht. Kann
man mit OpenSSH auch erzeugen und benutzen, ist aber nicht von
allgemeinem Interesse.

-- 
Christian "naddy" Weisgerber                          naddy@xxxxxxxxxxxx

-- 
Unix User Group Rhein-Neckar e.V.       https://www.uugrn.org
Archiv und An-/Abmeldeinformationen     https://mail2.uugrn.org
Veranstaltungen https://fixme.uugrn.org https://stammtisch.uugrn.org

Follow-Ups:
Re: FIDO-basierte SSH-SchluesselRalph Mayer <rmayer@xxxxxxxxxxxxxxxx>
Re: FIDO-basierte SSH-SchluesselMarc Haber <mh+uugrn@xxxxxxxxxxxx>
Re: FIDO-basierte SSH-SchluesselChristian Weisgerber <naddy@xxxxxxxxxxxx>