OpenSSH kod bazasına iki faktorlu kimlik doğrulama desteği deneysel olarak, protokolü destekleyen cihazlar kullanılarak sağlanmaktadır. protokolunu dəstəkləyən cihazlarla istifadəsi imkanı oldu. . U2F, istifadəçinin fiziki mövcudluğunu təsdiq etmək üçün ucuz avadanlıq tokenləri yaratmağa imkan tanıyır, bunlarla USB, Bluetooth və ya NFC vasitəsilə əlaqə qurulur. Belə cihazlar iki faktorlu autentifikasiya üçün vasitə kimi irəliləyir, əsas brauzerlər tərəfindən dəstəklənir və Yubico, Feitian, Thetis və Kensington daxil olmaqla müxtəlif istehsalçılar tərəfindən istehsal olunur.
Kullanıcı varlığını doğrulayan cihazlarla etkileşim için OpenSSH'ye "sk-ecdsa-sha2-nistp256@openssh.com" ("ecdsa-sk") adında yeni bir anahtar türü eklenmiştir. Bu anahtar, NIST P-256 eliptik eğrisi ve SHA-256 hash'ini kullanan ECDSA (Eliptik Eğri Dijital İmza Algoritması) dijital imza algoritmasını içerir. Token'lerle etkileşim prosedürleri, PKCS#11 destek kütüphanesiyle benzer bir şekilde yüklenen bir ara kütüphaneye taşınmıştır ve bu kütüphane bir sarmalayıcıdır. kitabxanasının üzərindən USB ilə tokenlərlə əlaqə üçün vasitə təmin edir (FIDO U2F/CTAP 1 və FIDO 2.0/CTAP 2 protokollarını dəstəkləyir). OpenSSH-in hazırladığı müvəqqəti libsk-libfido2 kitabxanası libfido2-nin əsas tərkib hissəsidir, eyni zamanda OpenBSD üçün.
U2F'yi etkinleştirmek için kod tabanının güncel kesitini kullanabilirsiniz. OpenSSH ve kütüphanenin HEAD dalı , gerekli OpenSSH ara katmanını da içermektedir.
Libfido2, OpenBSD, Linux, macOS ve Windows üzerinde çalışmayı desteklemektedir.
Kimlik doğrulama ve anahtar oluşturma için SSH_SK_PROVIDER ortam değişkenini ayarlamak gerekmektedir; bu değişkenin içine libsk-libfido2.so dosyasının yolunu belirtmelisiniz (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), veya SecurityKeyProvider ayarı aracılığıyla kütüphaneyi tanımlamalısınız, ardından "ssh-keygen -t ecdsa-sk" komutunu çalıştırabilir veya anahtarlar zaten oluşturulmuş ve ayarlanmışsa, "ssh" ile sunucuya bağlanabilirsiniz. ssh-keygen çalıştırıldığında oluşturulan anahtar çiftinin kaydı "~/.ssh/id_ecdsa_sk" dosyasında yapılacak ve diğer anahtarlar gibi kullanılabilecektir.
Açık anahtar (id_ecdsa_sk.pub) sunucuya authorized_keys dosyasına kopyalanmalıdır. Sunucu tarafında sadece dijital imza kontrol edilirken, token'larla etkileşim istemci tarafında gerçekleştirilir (sunucuya libsk-libfido2 yüklenmesi gerekmez, ancak sunucu "ecdsa-sk" anahtar türünü desteklemelidir). Oluşturulan özel anahtar (id_ecdsa_sk) aslında, U2F token'i üzerinde saklanan gizli bir dizilimle bir araya gelmediği sürece gerçek anahtarı oluşturmayan bir anahtar tanımlayıcısıdır.
Əgər id_ecdsa_sk açarı bir hücumçunun əlinə keçərsə, autentifikasiya üçün ona həmçinin avadanlıq tokeninə giriş əldə etmək lazımdır, çünki id_ecdsa_sk faylında saxlanılmış özəl açar yoxdur. Bundan əlavə, açarlarla hər hansı bir əməliyyat (nəsil zamanı və ya autentifikasiya zamanı) yerinə yetirilərkən, istifadəçinin fiziki varlığını təsdiq etmək tələb edilir, məsələn, tokenin sensoruna toxunmaq təklif olunur ki, bu da token qoşulmuş sistemlərdə uzaqdan hücumları çətinləşdirir. ssh-keygen əməliyyatı zamanı daha bir müdafiə tədbiri olaraq, açar faylına giriş üçün parolu təyin etmək mümkündür.
U2F açarı ssh-agent-ə «ssh-add ~/ .ssh/ id_ecdsa_sk» vasitəsilə əlavə edilə bilər, lakin ssh-agent «ecdsa-sk» açarlarına dəstək ilə tərtib edilməlidir, libsk-libfido2 interfeysi olmalı və agent tokenin qoşulduğu sistemdə işləməlidir.
Yeni «ecdsa-sk» açar tipi əlavə olunub, çünki OpenSSH-nin ecdsa-açar formatı U2F üçün ECDSA rəqəmsal imzaları formatından fərqlidir; burada əlavə sahələr mövcuddur.
Mənbə: opennet.ru
