Gửi lúc: 21/08/2018 17:52:03
Bookmark and Share

U2F – Phương thức xác thực 2 yếu tố chống phishing và MitM

Nhóm nghiên cứu và phát triển của Công ty cổ phần An ninh mạng Việt Nam (VSEC) chuyên nghiên cứu các công nghệ kỹ thuật về an toàn thông tin. Trong thời gian gần đây, nhóm đã nghiên cứu các khía cạnh về bảo mật và ứng dụng của phương thức xác thực bảo mật mới, trong đó có phương thức xác thực 2 yếu tố U2F, từ đó đưa ra sản phẩm U2F thương mại riêng sẽ được VSEC công bố trong thời gian tới. Với các cách thức tấn công người dùng ngày càng tinh vi, U2F sẽ giúp ích tích cực vào việc chống lại các rủi ro an toàn thông tin.

Untitled Document

Với sự phát triển mạnh mẽ của nền công nghiệp 4.0 cùng sự gia tăng nhanh chóng các cuộc tấn công an ninh mạng trong thời điểm hiện tại, việc bảo vệ thông tin cho người dùng cuối là vô cùng quan trọng bởi đây là nút thắt dễ bị tấn công nhất trong hệ thống. Theo góc nhìn của các chuyên gia VSEC, phương thức xác thực U2F có giao thức mã nguồn mở, với phần cứng dễ sử dụng, thiết kế nhỏ gọn, thông minh và hiện đang được hỗ trợ mặc định trên rất nhiều các trình duyệt. U2F là phương pháp xác thực 2 bước rất phù hợp trong lĩnh vực ngân hàng hoặc tổ chức chính phủ, đặc biệt là trong chính phủ điện tử.

Giới thiệu tổng quan về U2F

U2F (Universal 2nd Factor) là một chuẩn xác thực mở, được sử dụng để củng cố và đơn giản hóa phương thức xác thực 2 yếu tố bằng các thiết bị chuyên dụng. Các thiết bị này có khả năng lưu trữ khóa, nhờ đó có thể truy cập vào các thiết bị, dịch vụ một cách an toàn chỉ bằng một thiết bị xác thực duy nhất mà không yêu cầu cài đặt trình điều khiển hoặc phần mềm hỗ trợ nào trên hệ thống của người dùng đầu cuối.

Phương thức xác thực U2F được nghiên cứu và phát triển bởi nhóm an ninh Google và Yubico với sự hỗ trợ của nhà sản xuất bán dẫn NXP (Next eXPerience), có mục tiêu đưa mật mã khóa công khai đến với thị trường đại chúng. Hiện nay, thông số kỹ thuật của U2F được nắm giữ bởi tổ chức liên minh ngành công nghiệp xác thực mở FIDO Alliance (Fast IDentity Online Alliance). U2F đã được triển khai trên hàng trăm triệu thiết bị với ước tính khoảng 1,5 tỷ tài khoản người dùng đang sử dụng và trên nhiều dịch vụ có quy mô lớn như Gmail, Dropbox, GitHub, Salesforce.com, Chính phủ Anh cùng nhiều thành viên trong tổ chức FIDO Alliance. Hiện tại, U2F đã được tích hợp mặc định trên hầu hết các trình duyệt, bao gồm Chrome/Chromium, Opera và Mozilla Firefox.

Ưu điểm của U2F

Những đặc điểm nổi bật của U2F so với các giải pháp xác thực 2 yếu tố phổ biến khác trên thị trường như SMS OTP, Smart OTP, Google Authentication, hay RSA SecurID như sau:

An toàn: Công nghệ U2F nổi bật với khả năng phòng chống tấn công phishing mà bất kỳ các sản phẩm, giải pháp yêu cầu chép mã OTP đều không thực hiện được. Đây là một tiêu chuẩn mở, các doanh nghiệp đều có thể tự đánh giá và triển khai giải pháp này mà không cần đến bên thứ ba.

Dễ sử dụng: Để xác thực, người dùng chỉ cần nhấn vào một nút duy nhất trên thiết bị, trong khi các giải pháp khác yêu cầu người dùng phải sao chép hoặc nhập lại một mã số được sinh ra từ thiết bị sinh mã.

Tiêu chuẩn mở: Vì là tiêu chuẩn mở, nên các thiết bị U2F có thể sử dụng cho nhiều dịch vụ khác nhau, từ việc đăng nhập các trang thương mại điện tử, mạng mã hội, đến việc truy cập vào các hệ thống cá nhân riêng trong tổ chức chỉ với cùng một thiết bị. Các sản phẩm U2F có cách thức hoạt động như nhau, nên các doanh nghiệp triển khai tránh được tình trạng phụ thuộc vào một nhà sản xuất độc quyền. Đây là vấn đề thường gặp khi triển khai các giải pháp xác thực 2 yếu tố như RSA SecurID, vì khi đã triển khai rồi thì khó có thể chuyển sang nhà cung cấp giải pháp khác.

Giá cả hợp lý: Tùy thuộc vào yêu cầu của người dùng, các thiết bị U2F có giá dao động từ 10-50$.

Phương thức xác thực U2F

Phương thức xác thực U2F bao gồm 2 luồng là đăng ký (registration) và xác thực (authentication). Để xác thực, U2F sử dụng giao thức challenge – response được mở rộng với các chức năng chống tấn công phishing và MitM (Man-in-the-Middle), định danh theo dịch vụ, chống giả mạo thiết bị và chứng thực thiết bị theo thông tin của nhà cung cấp. Quá trình xác thực của U2F bao gồm 3 nhân tố: thiết bị (U2F Device), trình duyệt của người dùng (Browser, Client) và hệ thống xác thực phía dịch vụ (Server, Relying party – RP).

Giao thức challenge – response

Giao thức challenge – response là phương thức xác thực cơ bản của U2F, thông qua mật mã khóa công khai. Thiết bị U2F sinh ra cặp khóa bí mật và công khai cho mỗi ứng dụng. Thiết bị U2F lưu trữ khóa bí mật kpriv để tạo chữ ký (signature) và RP lưu trữ khóa công khai kpub tương ứng để giải mã chữ ký. Cặp khóa được sinh ra trong môi trường chống tác động từ bên ngoài (tamper-resistant) để đảm bảo khóa bí mật được bảo vệ.

Hình 1. Giao thức xác thực challenge – response

Chống tấn công phishing và MitM

Trình duyệt sẽ kiểm tra những thông tin về kết nối HTTP hiện tại của trình duyệt bao gồm đường dẫn URI và kênh truyền. Tất cả những thông tin này đã được ký bởi thiết bị U2F và được gửi tới RP. Nếu quá trình xác thực thông tin thành công thì yêu cầu đăng nhập của người dùng được chấp nhận và đảm bảo dịch vụ người dùng đang đăng nhập là chính xác và an toàn.

Phương thức này kiểm tra đường dẫn URI (origin) của dịch vụ để đảm bảo người dùng không bị tấn công phishing và kiểm tra ID của kênh truyền TLS (channel ID) để đảm bảo thông tin trên đường truyền được mã hóa, không bị đánh cắp hoặc chỉnh sửa, nhờ đó có khả năng chống lại được tấn công MitM.

Hình 2. Phương thức chống tấn công phishing và MitM

Lưu trữ khóa theo dịch vụ

Một thiết bị U2F có thể lưu trữ nhiều khóa cho nhiều tài khoản user khác nhau của cùng một dịch vụ, bởi thiết bị U2F lưu trữ các khóa theo hình thức phân tách theo dich vụ. Với mỗi lần đăng kí, thiết bị sẽ tạo ra một cặp khóa bao gồm khóa công khai và khóa bí mật, cùng một khóa điều khiển (handle) tương ứng với mỗi tài khoản user khác nhau trên cùng một dịch vụ (app id). Khóa điều khiển này được lưu trữ trên RP và sẽ được gửi lại thiết bị U2F trong quá trình xác thực.

Ví dụ, có 2 tài khoản user1 và user2 đăng kí cùng một thiết bị U2F. Khi tài khoản user1 yêu cầu xác thực, phía RP kiểm tra nếu trên thiết bị đó có khóa điều khiển của tài khoản user1 thì phiên đăng nhập đó được xác thực và chấp nhận. Ngoài ra, việc lưu trữ theo khóa điều khiển đảm bảo nếu có tác động từ phía bên ngoài thì kẻ tấn công cũng không thể biết được đâu là khóa của tài khoản user1 và user2.

Hình 3. Phân tách khóa theo dịch vụ

Phòng chống sao chép thiết bị

Thiết bị U2F có phân vùng chống các tác động từ bên ngoài, nên khóa bí mật kpriv là không thể tác động được từ bên ngoài. Để chống việc sao chép (cloning), thì thiết bị U2F được tích hợp thêm một bộ đếm xác thực (counter). Bộ đếm này sẽ tăng lên sau mỗi quá trình xác thực thành công. Số đếm sẽ được lưu và kiểm tra bởi RP.

Hình 4. Phòng chống sao chép thiết bị

Chứng thực thiết bị

Chứng thực thiết bị là thông tin bổ sung của thiết bị, giúp RP có khả năng xác thực các thuộc tính của thiết bị. Chứng thực này được gửi thêm trong quá trình đăng nhập qua một chứng chỉ chứng thực (attestation cert) được ký bởi nhà cung cấp thiết bị mà thiết bị gửi đến RP khi đăng ký, không ảnh hưởng tới quá trình xử lý của thiết bị.

 

Hình 5. Cung cấp chứng thực thiết bị

Cơ chế sinh khóa của thiết bị U2F

Thiết bị U2F sẽ tạo ra một cặp khóa đường cong Elliptic (ECC) mới tương ứng với dịch vụ mà người dùng đăng kí thiết bị. Mỗi một dịch vụ có một tên dịch vụ riêng, được lưu trữ trên thiết bị.

Ví dụ: example.org là tên dịch vụ sử dụng cho example.org; acme.com là tên dịch vụ sử dụng cho acme.com. Thiết bị có thể sử dụng để đăng nhập cho nhiều tài khoản trên cùng một dịch vụ bằng cách gán khóa điều khiển tương ứng theo tên dịch vụ.

Ví dụ, KeyHandle [0x21AE9B] là khóa điều khiển 1 cho example.org, KeyHandle [0xFBD308] là khóa điều khiển 2 cho example.org.

 

Hình 6. Cơ chế sinh khóa của thiết bị U2F

Khi người dùng đăng kí một thiết bị U2F với một dịch vụ mới, dịch vụ sẽ cung cấp một AppID (được mặc định gắn theo địa chỉ của dịch vụ, có khả năng chống phishing). Thiết bị U2F sẽ sinh ra một số Nonce ngẫu nhiên. Sau đó, thiết bị đưa AppID và mã Nonce này qua hàm băm HMAC-SHA256 (hàm một chiều), sử dụng khóa bí mật của thiết bị (device secret) được sinh ra trên chip tại thời điểm sản xuất làm khóa. Đầu ra của hàm băm trở thành khóa bí mật (private key) tương ứng với AppID, từ khóa bí mật sinh ra khóa công khai của dịch vụ. Mã Nonce và MAC (Message Authentication Code) tổng hợp lại tạo thành khóa điều khiển (key handle), dùng để xác thực cả thiết bị lẫn dịch vụ. MAC đảm bảo rằng thông tin không bị sửa đổi và thông tin xác thực thuộc về AppID đã được cấp. Trong thiết bị có duy nhất một bộ đếm (Random Number Generation - RNG) tăng lên sau mỗi lần xác thực, và đây là yếu tố duy nhất của thiết bị có sự thay đổi trong toàn bộ quá trình xác thực. Ngoài ra, vì lưu trữ tài khoản thông qua AppID và khóa điều khiển nên toàn bộ thông tin đăng nhập của người dùng là không lưu trữ trên thiết bị nên không thể bị lộ, đồng thời không thể reset được thiết bị.

Cách thức sử dụng thiết bị U2F để xác thực

Hình 7. Quá trình xác thực 2 yếu tố qua thiết bị U2F

Để xác thực qua thiết bị U2F, người dùng cần đăng nhập vào tài khoản sử dụng tên đăng nhập (username) và mật khẩu (password). Sau khi hệ thống dịch vụ kiểm tra mật khẩu là chính xác, hệ thống sẽ gửi challenge (trong đó có khóa điều khiển) tới thiết bị U2F. Tại đây, người dùng nhấn nút trên thiết bị để thiết bị U2F tiến hành quá trình tạo và gửi response. Hệ thống dịch vụ sẽ kiểm tra response bằng việc sử dụng khóa công khai của thiết bị. Nếu kiểm tra thành công, người dùng có thể đăng nhập vào tài khoản.

Ví dụ sau là các bước kích hoạt xác thực 2 yếu tố qua thiết bị U2F của ứng dụng Dropbox.com:

Bước 1: Người dùng nhập tên và mật khẩu vào trường đăng nhập của dịch vụ. Hệ thống dịch vụ sẽ kiểm tra tên và mật khẩu đó có chính xác hay không. Nếu chính xác, hệ thống sẽ gửi yêu cầu cắm thiết bị U2F vào máy để xác minh, thay vì sử dụng mã OTP hoặc nhập mã trên điện thoại như thông thường.

Hình 8. Thông báo yêu cầu kết nối thiết bị U2F để xác thực

Bước 2: Kết nối thiết bị U2F vào cổng USB với chiều có nút ấn hướng lên phía trên. Sau đó, chạm nhẹ hoặc nhấn vào nút trên thiết bị khi thiết bị thông báo tín hiệu.

Hình 9. Thiết bị U2F thông báo tín hiệu cho người dùng

Bước 3: Cuối cùng, hệ thống dịch vụ sẽ kiểm tra thông tin từ thiết bị gửi lên, nếu thành công thì quá trình đăng nhập được hoàn tất.

Tuấn Anh, VSEC