OpenSSH menambahkan dukungan untuk otentikasi dua faktor universal

Ke basis kode OpenSSH ditambahkan dukungan eksperimental untuk otentikasi dua faktor menggunakan perangkat yang mendukung protokol U2F, dikembangkan oleh aliansi Fido. U2F memungkinkan pembuatan token perangkat keras berbiaya rendah untuk memverifikasi keberadaan fisik pengguna, berinteraksi dengan mereka melalui USB, Bluetooth, atau NFC. Perangkat tersebut dipromosikan sebagai alat otentikasi dua faktor di situs web, sudah didukung oleh browser utama dan diproduksi oleh berbagai produsen, termasuk Yubico, Feitian, Thetis, dan Kensington.

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 libfido2, yang menyediakan alat untuk berkomunikasi dengan token melalui USB (protokol FIDO U2F/CTAP 1 dan FIDO 2.0/CTAP 2 didukung). Perpustakaan perantara libsk-libfido2 disiapkan oleh pengembang OpenSSH termasuk ke dalam inti libfido2, serta pengemudi tersembunyi untuk OpenBSD.

Untuk mengaktifkan U2F, Anda dapat menggunakan potongan basis kode baru dari gudang OpenSSH dan cabang perpustakaan HEAD libfido2, yang sudah menyertakan lapisan yang diperlukan untuk OpenSSH.
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

Tambah komentar