OpenSSH bổ sung hỗ trợ cho xác thực hai yếu tố phổ quát

Đến cơ sở mã OpenSSH thêm hỗ trợ thử nghiệm xác thực hai yếu tố bằng các thiết bị hỗ trợ giao thức U2F, được phát triển bởi liên minh FIDO. U2F cho phép tạo mã thông báo phần cứng chi phí thấp để xác minh sự hiện diện vật lý của người dùng, tương tác với họ qua USB, Bluetooth hoặc NFC. Những thiết bị như vậy được quảng bá như một phương tiện xác thực hai yếu tố trên các trang web, đã được các trình duyệt lớn hỗ trợ và được sản xuất bởi nhiều nhà sản xuất khác nhau, bao gồm Yubico, Feitian, Thetis và Kensington.

Để tương tác với các thiết bị xác nhận sự hiện diện của người dùng, một loại khóa mới đã được thêm vào OpenSSH "[email được bảo vệ]” (“ecdsa-sk”), sử dụng thuật toán chữ ký số ECDSA (Thuật toán chữ ký số đường cong Elliptic) với đường cong elip NIST P-256 và hàm băm SHA-256. Các quy trình tương tác với mã thông báo được đặt trong thư viện trung gian, được tải theo cách tương tự như thư viện để hỗ trợ PKCS#11 và là trình bao bọc ở đầu thư viện ham muốn tình dục2, cung cấp các công cụ để giao tiếp với mã thông báo qua USB (giao thức FIDO U2F/CTAP 1 và FIDO 2.0/CTAP 2 được hỗ trợ). Thư viện trung gian libsk-libfido2 do các nhà phát triển OpenSSH chuẩn bị bao gồm vào libfido2 cốt lõi, cũng như Trình điều khiển HID cho OpenBSD.

Để bật U2F, bạn có thể sử dụng một đoạn mã mới từ kho OpenSSH và nhánh HEAD của thư viện ham muốn tình dục2, đã bao gồm lớp cần thiết cho OpenSSH.
Libfido2 hỗ trợ OpenBSD, Linux, macOS và Windows.

Để xác thực và tạo khóa, bạn cần đặt biến môi trường SSH_SK_PROVIDER, chỉ ra trong đó đường dẫn đến libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so) hoặc xác định thư viện thông qua SecurityKeyProvider cài đặt, sau đó chạy “ssh-keygen -t ecdsa-sk" hoặc, nếu các khóa đã được tạo và định cấu hình, hãy kết nối với máy chủ bằng "ssh". Khi bạn chạy ssh-keygen, cặp khóa được tạo sẽ được lưu trong “~/.ssh/id_ecdsa_sk” và có thể được sử dụng tương tự như các khóa khác.

Khóa chung (id_ecdsa_sk.pub) phải được sao chép vào máy chủ trong tệp ủy quyền. Về phía máy chủ, chỉ có chữ ký số được xác minh và việc tương tác với mã thông báo được thực hiện ở phía máy khách (bạn không cần cài đặt libsk-libfido2 trên máy chủ nhưng máy chủ phải hỗ trợ loại khóa “ecdsa-sk”) . Khóa riêng được tạo (id_ecdsa_sk) về cơ bản là một tay cầm khóa, tạo thành khóa thực chỉ khi kết hợp với chuỗi bí mật được lưu trữ ở phía mã thông báo U2F.

Nếu khóa id_ecdsa_sk rơi vào tay kẻ tấn công, để vượt qua xác thực, hắn cũng sẽ cần có quyền truy cập vào mã thông báo phần cứng, nếu không có mã thông báo riêng được lưu trong tệp id_ecdsa_sk sẽ vô dụng. Ngoài ra, theo mặc định, khi thực hiện bất kỳ thao tác nào bằng khóa (cả trong quá trình tạo và trong khi xác thực), cần phải có xác nhận cục bộ về sự hiện diện vật lý của người dùng, chẳng hạn như đề xuất chạm vào cảm biến trên mã thông báo, điều này gây khó khăn cho việc thực hiện các cuộc tấn công từ xa vào các hệ thống có mã thông báo được kết nối. Là một tuyến phòng thủ khác, mật khẩu cũng có thể được chỉ định trong giai đoạn khởi động của ssh-keygen để truy cập vào tệp khóa.

Khóa U2F có thể được thêm vào ssh-agent thông qua "ssh-add ~/.ssh/id_ecdsa_sk", nhưng ssh-agent phải được xây dựng với sự hỗ trợ cho khóa "ecdsa-sk", phải có lớp libsk-libfido2 và tác nhân phải đang chạy trên hệ thống mà mã thông báo được kết nối.
Loại khóa mới “ecdsa-sk” đã được thêm vào do định dạng của khóa ecdsa OpenSSH khác với định dạng U2F cho chữ ký số ECDSA khi có các trường bổ sung.

Nguồn: opennet.ru

Thêm một lời nhận xét