Naar de OpenSSH-codebase
Om te communiceren met apparaten die de aanwezigheid van de gebruiker bevestigen, is een nieuw type sleutels toegevoegd aan OpenSSH "[e-mail beveiligd]” (“ecdsa-sk”), dat gebruik maakt van het digitale handtekeningalgoritme ECDSA (Elliptic Curve Digital Signature Algorithm) met NIST P-256 elliptische curve en SHA-256 hash. Procedures voor interactie met tokens worden in een tussenliggende bibliotheek geplaatst, die op een vergelijkbare manier wordt geladen als de bibliotheek voor PKCS#11-ondersteuning en een wrapper bovenop de bibliotheek is
Om U2F in te schakelen, kunt u een nieuw deel van de codebase gebruiken
Libfido2 ondersteunt OpenBSD, Linux, macOS en Windows.
Om een sleutel te authenticeren en te genereren, moet u de omgevingsvariabele SSH_SK_PROVIDER instellen en daarin het pad naar libsk-libfido2.so aangeven (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), of de bibliotheek definiëren via de SecurityKeyProvider en voer vervolgens “ssh-keygen-t ecdsa-sk" uit of, als de sleutels al zijn gemaakt en geconfigureerd, maak verbinding met de server met behulp van "ssh". Wanneer u ssh-keygen uitvoert, wordt het gegenereerde sleutelpaar opgeslagen in “~/.ssh/id_ecdsa_sk” en kan het op dezelfde manier worden gebruikt als andere sleutels.
De openbare sleutel (id_ecdsa_sk.pub) moet naar de server worden gekopieerd in het bestand geautoriseerde_sleutels. Aan de serverzijde wordt alleen de digitale handtekening geverifieerd en wordt interactie met tokens uitgevoerd aan de clientzijde (u hoeft libsk-libfido2 niet op de server te installeren, maar de server moet het sleuteltype “ecdsa-sk” ondersteunen) . De gegenereerde privésleutel (id_ecdsa_sk) is in wezen een sleutelhandvat en vormt alleen een echte sleutel in combinatie met de geheime reeks die is opgeslagen op de U2F-tokenzijde.
Als de id_ecdsa_sk-sleutel in handen van een aanvaller valt, zal hij, om de authenticatie door te geven, ook toegang moeten krijgen tot het hardwaretoken, zonder welke de privésleutel die is opgeslagen in het id_ecdsa_sk-bestand nutteloos is. Bovendien is bij het uitvoeren van handelingen met sleutels (zowel tijdens het genereren als tijdens authenticatie) standaard lokale bevestiging van de fysieke aanwezigheid van de gebruiker vereist. Er wordt bijvoorbeeld voorgesteld om de sensor op het token aan te raken, wat het moeilijk maakt om aanvallen op afstand uitvoeren op systemen met een aangesloten token. Als extra verdedigingslinie kan tijdens de opstartfase van ssh-keygen ook een wachtwoord worden opgegeven om toegang te krijgen tot het sleutelbestand.
De U2F-sleutel kan aan ssh-agent worden toegevoegd via "ssh-add ~/.ssh/id_ecdsa_sk", maar ssh-agent moet worden gebouwd met ondersteuning voor "ecdsa-sk"-sleutels, de libsk-libfido2-laag moet aanwezig zijn en de agent moet draaien op het systeem waarmee het token is verbonden.
Er is een nieuw sleuteltype “ecdsa-sk” toegevoegd omdat het formaat van OpenSSH ecdsa-sleutels verschilt van het U2F-formaat voor digitale ECDSA-handtekeningen in de aanwezigheid van extra velden.
Bron: opennet.ru