Ke basis kode OpenSSH
Untuk berinteraksi dengan perangkat yang mengonfirmasi keberadaan pengguna, jenis kunci baru telah ditambahkan ke OpenSSH "[email dilindungi]” (“ecdsa-sk”), yang menggunakan algoritma tanda tangan digital ECDSA (Elliptic Curve Digital Signature Algorithm) dengan kurva elips NIST P-256 dan hash SHA-256. Prosedur untuk berinteraksi dengan token ditempatkan di perpustakaan perantara, yang dimuat dengan cara yang mirip dengan perpustakaan untuk dukungan PKCS#11 dan merupakan pembungkus di atas perpustakaan
Untuk mengaktifkan U2F, Anda dapat menggunakan potongan basis kode baru dari
Libfido2 mendukung OpenBSD, Linux, macOS dan Windows.
Untuk mengautentikasi dan menghasilkan kunci, Anda perlu mengatur variabel lingkungan SSH_SK_PROVIDER, yang menunjukkan di dalamnya jalur ke libsk-libfido2.so (ekspor SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), atau menentukan perpustakaan melalui SecurityKeyProvider pengaturan, lalu jalankan “ssh- keygen -t ecdsa-sk" atau, jika kunci telah dibuat dan dikonfigurasi, sambungkan ke server menggunakan "ssh". Saat Anda menjalankan ssh-keygen, pasangan kunci yang dihasilkan akan disimpan di “~/.ssh/id_ecdsa_sk” dan dapat digunakan serupa dengan kunci lainnya.
Kunci publik (id_ecdsa_sk.pub) harus disalin ke server dalam file otor_keys. Di sisi server, hanya tanda tangan digital yang diverifikasi, dan interaksi dengan token dilakukan di sisi klien (Anda tidak perlu menginstal libsk-libfido2 di server, tetapi server harus mendukung jenis kunci “ecdsa-sk”) . Kunci pribadi yang dihasilkan (id_ecdsa_sk) pada dasarnya adalah pegangan kunci, membentuk kunci nyata hanya jika dikombinasikan dengan urutan rahasia yang disimpan di sisi token U2F.
Jika kunci id_ecdsa_sk jatuh ke tangan penyerang, untuk melewati otentikasi ia juga perlu mendapatkan akses ke token perangkat keras, yang tanpanya kunci pribadi yang disimpan dalam file id_ecdsa_sk tidak akan berguna. Selain itu, secara default, saat melakukan operasi apa pun dengan kunci (baik selama pembuatan dan selama otentikasi), konfirmasi lokal atas kehadiran fisik pengguna diperlukan, misalnya, diusulkan untuk menyentuh sensor pada token, sehingga menyulitkan untuk melakukannya. melakukan serangan jarak jauh pada sistem dengan token yang terhubung. Sebagai garis pertahanan lainnya, kata sandi juga dapat ditentukan selama fase startup ssh-keygen untuk mengakses file kunci.
Kunci U2F dapat ditambahkan ke ssh-agent melalui "ssh-add ~/.ssh/id_ecdsa_sk", tetapi ssh-agent harus dibuat dengan dukungan untuk kunci "ecdsa-sk", lapisan libsk-libfido2 harus ada dan agen harus berjalan di sistem yang terhubung dengan token.
Jenis kunci baru “ecdsa-sk” telah ditambahkan karena format kunci ecdsa OpenSSH berbeda dari format U2F untuk tanda tangan digital ECDSA dengan adanya kolom tambahan.
Sumber: opennet.ru