Tìm hiểu cách Yahoo! Nhật Bản xây dựng một hệ thống thông tin nhận dạng không cần mật khẩu.
Người bán trên Yahoo! JAPAN là một trong những công ty truyền thông lớn nhất tại Nhật Bản, cung cấp các dịch vụ như tìm kiếm, tin tức, thương mại điện tử và email. Hơn 50 triệu người dùng đăng nhập vào Yahoo! Dịch vụ tại JAPAN mỗi tháng.
Trong những năm qua, đã có nhiều cuộc tấn công vào tài khoản người dùng và các vấn đề khiến tài khoản bị mất quyền truy cập. Hầu hết các vấn đề này liên quan đến việc sử dụng mật khẩu để xác thực.
Với những tiến bộ gần đây trong công nghệ xác thực, Yahoo! JAPAN đã quyết định chuyển từ phương thức xác thực dựa trên mật khẩu sang phương thức xác thực không cần mật khẩu.
Tại sao lại không dùng mật khẩu?
Do Yahoo! JAPAN cung cấp dịch vụ thương mại điện tử và các dịch vụ liên quan đến tiền bạc. Do đó, người dùng có nguy cơ bị thiệt hại đáng kể trong trường hợp truy cập trái phép hoặc mất tài khoản.
Các cuộc tấn công phổ biến nhất liên quan đến mật khẩu là tấn công danh sách mật khẩu và các thủ đoạn lừa đảo. Một trong những lý do khiến các cuộc tấn công danh sách mật khẩu phổ biến và hiệu quả là thói quen của nhiều người sử dụng cùng một mật khẩu cho nhiều ứng dụng và trang web.
Những số liệu sau đây là kết quả từ một cuộc khảo sát do Yahoo! NHẬT BẢN.
50 %
sử dụng cùng một mã nhận dạng và mật khẩu trên 6 trang web trở lên
60 %
Sử dụng cùng một mật khẩu cho nhiều trang web
70 %
sử dụng mật khẩu làm cách chính để đăng nhập
Người dùng thường quên mật khẩu của mình, việc này chiếm phần lớn các câu hỏi liên quan đến mật khẩu. Ngoài ra, còn có các thắc mắc từ những người dùng đã quên mã đăng nhập ngoài mật khẩu. Lúc cao điểm, những câu hỏi này chiếm hơn 1/3 tổng số câu hỏi liên quan đến tài khoản.
Bằng cách không dùng mật khẩu, Yahoo! JAPAN hướng đến không chỉ cải thiện tính bảo mật mà còn cả khả năng hữu dụng mà không đặt thêm gánh nặng cho người dùng.
Từ góc độ bảo mật, việc loại bỏ mật khẩu khỏi quy trình xác thực người dùng sẽ giúp giảm thiệt hại từ các cuộc tấn công dựa trên danh sách và từ góc độ khả năng hữu dụng, việc cung cấp một phương thức xác thực không dựa vào việc ghi nhớ mật khẩu sẽ ngăn chặn trường hợp người dùng không thể đăng nhập vì họ quên mật khẩu.
Người bán trên Yahoo! Sáng kiến không dùng mật khẩu của JAPAN
Người bán trên Yahoo! JAPAN đang triển khai một số bước để thúc đẩy phương thức xác thực không cần mật khẩu. Có thể chia thành 3 danh mục như sau:
- Cung cấp một phương thức xác thực thay thế đối với mật khẩu.
- Đang huỷ kích hoạt mật khẩu.
- Đăng ký tài khoản không sử dụng mật khẩu.
Hai sáng kiến đầu tiên nhắm đến người dùng hiện tại, trong khi tính năng đăng ký không cần mật khẩu nhắm đến người dùng mới.
1. Cung cấp một phương thức xác thực thay thế đối với mật khẩu
Người bán trên Yahoo! JAPAN cung cấp các lựa chọn thay thế sau cho mật khẩu.
Ngoài ra, chúng tôi cũng cung cấp các phương thức xác thực như xác thực email, mật khẩu kết hợp với OTP qua SMS (mật khẩu một lần) và mật khẩu kết hợp với OTP qua email.
Xác thực qua SMS
Xác thực qua SMS là hệ thống cho phép người dùng đã đăng ký nhận mã xác thực gồm 6 chữ số thông qua SMS. Sau khi nhận được tin nhắn SMS, người dùng có thể nhập mã xác thực vào ứng dụng hoặc trang web.
![](https://web.dev/static/case-studies/yahoo-japan-identity/image/h08m9uzVJg9uNzM3LE5k.jpg?authuser=5&hl=vi)
Từ lâu, Apple đã cho phép iOS đọc tin nhắn SMS và đề xuất mã xác thực từ nội dung văn bản. Gần đây, bạn có thể sử dụng các đề xuất bằng cách chỉ định "mã một lần" trong thuộc tính autocomplete
của phần tử đầu vào. Chrome trên Android, Windows và Mac có thể mang lại trải nghiệm tương tự bằng cách sử dụng API WebOTP.
Ví dụ:
<form>
<input type="text" id="code" autocomplete="one-time-code"/>
<button type="submit">sign in</button>
</form>
if ('OTPCredential' in window) {
const input = document.getElementById('code');
if (!input) return;
const ac = new AbortController();
const form = input.closest('form');
if (form) {
form.addEventListener('submit', e => {
ac.abort();
});
}
navigator.credentials.get({
otp: { transport:['sms'] },
signal: ac.signal
}).then(otp => {
input.value = otp.code;
}).catch(err => {
console.log(err);
});
}
Cả hai phương thức này đều được thiết kế để ngăn chặn hành vi lừa đảo bằng cách đưa miền vào nội dung SMS và chỉ cung cấp nội dung đề xuất cho miền đã chỉ định.
Để biết thêm thông tin về API WebOTP và autocomplete="one-time-code"
, hãy xem các phương pháp hay nhất về biểu mẫu OTP qua SMS.
![](https://web.dev/static/case-studies/yahoo-japan-identity/image/Szaf3C0hfjLNkTWAVf9B.png?authuser=5&hl=vi)
FIDO với WebAuthn
FIDO với WebAuthn sử dụng trình xác thực phần cứng để tạo cặp thuật toán mật mã khoá công khai và chứng minh quyền sở hữu. Khi điện thoại thông minh được dùng làm trình xác thực, điện thoại đó có thể được kết hợp với phương thức xác thực bằng sinh trắc học (chẳng hạn như cảm biến vân tay hoặc công nghệ nhận dạng khuôn mặt) để thực hiện quy trình xác thực 2 yếu tố chỉ gồm một bước. Trong trường hợp này, chỉ chữ ký và chỉ báo thành công từ quá trình xác thực bằng sinh trắc học mới được gửi đến máy chủ, do đó sẽ không có nguy cơ bị đánh cắp dữ liệu sinh trắc học.
Sơ đồ dưới đây minh hoạ cấu hình của máy chủ-ứng dụng cho FIDO. Trình xác thực ứng dụng xác thực người dùng bằng dữ liệu sinh trắc học và ký kết quả bằng tiêu chuẩn mã hoá khoá công khai. Khoá riêng tư dùng để tạo chữ ký được lưu trữ an toàn trong một TEE (Môi trường thực thi đáng tin cậy) hoặc vị trí tương tự. Nhà cung cấp dịch vụ sử dụng FIDO được gọi là RP (bên tin cậy).
![](https://web.dev/static/case-studies/yahoo-japan-identity/image/PkFYWnOZABjPu7Zc7rXN.png?authuser=5&hl=vi)
Sau khi người dùng thực hiện quy trình xác thực (thường là bằng việc quét sinh trắc học hoặc mã PIN), trình xác thực sẽ sử dụng một khoá riêng tư để gửi tín hiệu xác minh đã ký đến trình duyệt. Sau đó, trình duyệt sẽ chia sẻ tín hiệu đó với trang web của bên bị hạn chế.
Sau đó, trang web của RP sẽ gửi tín hiệu xác minh đã ký đến máy chủ của RP. Máy chủ này sẽ xác minh chữ ký dựa trên khoá công khai để hoàn tất quá trình xác thực.
Để biết thêm thông tin, hãy đọc hướng dẫn xác thực của Liên minh FIDO.
Người bán trên Yahoo! JAPAN hỗ trợ FIDO trên Android (ứng dụng di động và web), iOS (ứng dụng di động và web), Windows (Edge, Chrome, Firefox) và macOS (Safari, Chrome). Là một dịch vụ dành cho người tiêu dùng, FIDO có thể được sử dụng trên hầu hết mọi thiết bị. Vì vậy, đây là một lựa chọn phù hợp để thúc đẩy phương thức xác thực không cần mật khẩu.
![](https://web.dev/static/case-studies/yahoo-japan-identity/image/iq0dODcbp3WcPUGTwHkl.png?authuser=5&hl=vi)
Người bán trên Yahoo! JAPAN khuyến nghị người dùng đăng ký FIDO bằng WebAuthn nếu họ chưa được xác thực thông qua các phương thức khác. Khi cần đăng nhập bằng cùng một thiết bị, người dùng có thể nhanh chóng xác thực bằng cảm biến sinh trắc học.
Người dùng phải thiết lập tính năng xác thực FIDO với tất cả các thiết bị mà họ sử dụng để đăng nhập vào Yahoo! NHẬT BẢN.
Để thúc đẩy phương thức xác thực không cần mật khẩu và chú ý đến những người dùng sắp không dùng mật khẩu nữa, chúng tôi cung cấp nhiều phương thức xác thực. Tức là mỗi người dùng có thể có chế độ cài đặt phương thức xác thực riêng và phương thức xác thực mà họ có thể sử dụng có thể khác nhau tuỳ theo trình duyệt. Chúng tôi tin rằng sẽ mang lại trải nghiệm tốt hơn nếu người dùng đăng nhập bằng cùng một phương thức xác thực mỗi lần.
Để đáp ứng các yêu cầu này, bạn cần theo dõi các phương thức xác thực trước đó và liên kết thông tin này với ứng dụng khách bằng cách lưu trữ thông tin đó dưới dạng cookie, v.v. Sau đó, chúng tôi có thể phân tích cách sử dụng các trình duyệt và ứng dụng để xác thực. Người dùng sẽ được yêu cầu cung cấp hình thức xác thực phù hợp dựa trên chế độ cài đặt của người dùng, các phương thức xác thực trước đó được sử dụng và mức độ xác thực tối thiểu bắt buộc.
2. Huỷ kích hoạt mật khẩu
Người bán trên Yahoo! JAPAN yêu cầu người dùng thiết lập một phương thức xác thực thay thế rồi vô hiệu hoá mật khẩu để không sử dụng được. Ngoài việc thiết lập phương thức xác thực thay thế, việc tắt tính năng xác thực mật khẩu (do đó khiến không thể đăng nhập chỉ bằng mật khẩu) giúp bảo vệ người dùng khỏi các cuộc tấn công dựa trên danh sách.
Chúng tôi đã thực hiện các bước sau để khuyến khích người dùng vô hiệu hoá mật khẩu của họ.
- Quảng bá các phương thức xác thực thay thế khi người dùng đặt lại mật khẩu.
- Khuyến khích người dùng thiết lập các phương thức xác thực dễ sử dụng (chẳng hạn như FIDO) và tắt mật khẩu trong các tình huống cần xác thực thường xuyên.
- Nhắc người dùng vô hiệu hoá mật khẩu trước khi sử dụng các dịch vụ có mức độ rủi ro cao, chẳng hạn như thanh toán qua nền tảng thương mại điện tử.
Nếu người dùng quên mật khẩu, họ có thể tiến hành quy trình khôi phục tài khoản. Trước đây, vấn đề này liên quan đến việc đặt lại mật khẩu. Giờ đây, người dùng có thể chọn thiết lập một phương thức xác thực khác và họ nên làm như vậy.
3. Đăng ký tài khoản không sử dụng mật khẩu
Người dùng mới có thể tạo tài khoản Yahoo! không cần mật khẩu Tài khoản JAPAN. Trước tiên, người dùng phải đăng ký bằng phương thức xác thực qua SMS. Sau khi họ đăng nhập, người dùng sẽ được khuyến khích thiết lập tính năng xác thực FIDO.
Vì FIDO là chế độ cài đặt theo từng thiết bị, nên bạn có thể gặp khó khăn khi khôi phục tài khoản nếu thiết bị không hoạt động. Do đó, chúng tôi yêu cầu người dùng duy trì đăng ký số điện thoại, ngay cả sau khi họ đã thiết lập phương thức xác thực bổ sung.
Những thách thức chính đối với hoạt động xác thực không cần mật khẩu
Mật khẩu dựa vào bộ nhớ của con người và độc lập với thiết bị. Mặt khác, các phương thức xác thực được triển khai cho đến nay trong sáng kiến không dùng mật khẩu của chúng tôi lại phụ thuộc vào thiết bị. Điều này đặt ra một số thách thức.
Khi bạn sử dụng nhiều thiết bị, sẽ có một số vấn đề liên quan đến khả năng hữu dụng:
- Khi sử dụng phương thức xác thực qua tin nhắn SMS để đăng nhập trên máy tính, người dùng phải kiểm tra điện thoại di động của mình để tìm các tin nhắn SMS được gửi đến. Điều này có thể bất tiện vì người dùng phải có sẵn điện thoại của mình và dễ dàng truy cập bất cứ lúc nào.
- Với FIDO, đặc biệt là với trình xác thực nền tảng, người dùng có nhiều thiết bị sẽ không thể xác thực trên các thiết bị chưa đăng ký. Bạn phải hoàn tất quy trình đăng ký cho từng thiết bị mà trẻ định sử dụng.
Phương thức xác thực FIDO được liên kết với các thiết bị cụ thể do đó yêu cầu các thiết bị đó phải luôn thuộc quyền sở hữu và hoạt động của người dùng.
- Nếu hợp đồng dịch vụ bị huỷ, bạn sẽ không thể gửi tin nhắn SMS đến số điện thoại đã đăng ký được nữa.
- FIDO lưu trữ khoá riêng tư trên một thiết bị cụ thể. Nếu bạn mất thiết bị, các khoá đó sẽ không sử dụng được.
Người bán trên Yahoo! JAPAN đang áp dụng nhiều biện pháp để giải quyết những vấn đề này.
Giải pháp quan trọng nhất là khuyến khích người dùng thiết lập nhiều phương thức xác thực. Điều này cung cấp quyền truy cập thay thế vào tài khoản khi thiết bị bị mất. Vì khoá FIDO phụ thuộc vào thiết bị, bạn cũng nên đăng ký khoá riêng tư FIDO trên nhiều thiết bị.
Ngoài ra, người dùng có thể sử dụng API WebOTP để truyền mã xác minh qua SMS từ điện thoại Android sang Chrome trên máy tính.
Chúng tôi tin rằng việc giải quyết những vấn đề này sẽ càng trở nên quan trọng hơn khi quy trình xác thực không cần mật khẩu ngày càng lan rộng.
Quảng bá phương pháp xác thực không sử dụng mật khẩu
Người bán trên Yahoo! JAPAN đã triển khai những sáng kiến không dùng mật khẩu này từ năm 2015. Quá trình này bắt đầu từ việc thu được chứng chỉ máy chủ FIDO vào tháng 5 năm 2015, sau đó là việc xác thực qua SMS, tính năng huỷ kích hoạt mật khẩu và hỗ trợ FIDO cho từng thiết bị.
Hiện nay, hơn 30 triệu người dùng hoạt động hằng tháng đã vô hiệu hoá mật khẩu và sử dụng các phương thức xác thực không phải bằng mật khẩu. Người bán trên Yahoo! JAPAN hỗ trợ FIDO cho FIDO bắt đầu bằng Chrome trên Android và hiện đã có hơn 10 triệu người dùng thiết lập phương thức xác thực FIDO.
Nhờ có Yahoo! Theo sáng kiến của JAPAN, tỷ lệ phần trăm câu hỏi liên quan đến mã đăng nhập hoặc mật khẩu bị quên đã giảm 25% so với cùng kỳ, đồng thời chúng tôi cũng xác nhận được rằng hoạt động truy cập trái phép đã giảm do số lượng tài khoản không có mật khẩu tăng lên.
Vì FIDO rất dễ thiết lập nên có tỷ lệ chuyển đổi đặc biệt cao. Trên thực tế, Yahoo! JAPAN thấy rằng FIDO có tỷ lệ chuyển đổi (CVR) cao hơn so với phương thức xác thực qua SMS.
25 %
Giảm số lượng yêu cầu về thông tin đăng nhập bị quên
74 %
Người dùng xác thực thành công với FIDO
65 %
Xác minh thành công qua SMS
FIDO có tỷ lệ thành công cao hơn so với phương thức xác thực qua SMS, cũng như thời gian xác thực trung bình và trung bình nhanh hơn. Đối với mật khẩu, một số nhóm có thời gian xác thực ngắn và chúng tôi nghi ngờ rằng điều này là do autocomplete="current-password"
của trình duyệt.
![Biểu đồ so sánh thời gian xác thực mật khẩu, SMS và FIDO.](https://web.dev/static/case-studies/yahoo-japan-identity/image/graph-comparison-authent-4d76bf7a092f7.png?authuser=5&hl=vi)
Khó khăn lớn nhất khi cung cấp tài khoản không cần mật khẩu không phải là việc bổ sung các phương thức xác thực, mà là việc phổ biến việc sử dụng trình xác thực. Nếu trải nghiệm sử dụng dịch vụ không dùng mật khẩu không thân thiện với người dùng, thì quá trình chuyển đổi sẽ không dễ dàng.
Chúng tôi tin rằng để cải thiện khả năng bảo mật, trước tiên, chúng tôi phải cải thiện khả năng hữu dụng. Vì vậy, mỗi dịch vụ sẽ phải có những điểm cải tiến riêng.
Kết luận
Việc xác thực mật khẩu tiềm ẩn nhiều rủi ro về bảo mật và cũng gây ra nhiều thách thức về khả năng hữu dụng. Hiện nay, các công nghệ hỗ trợ xác thực không cần mật khẩu (chẳng hạn như API WebOTP và FIDO) đã được cung cấp rộng rãi hơn. Đã đến lúc bắt đầu hướng tới phương pháp xác thực không cần mật khẩu.
Tại Yahoo! NHẬT BẢN, việc áp dụng phương pháp này đã có tác dụng rõ ràng đối với cả khả năng hữu dụng và tính bảo mật. Tuy nhiên, nhiều người dùng vẫn đang sử dụng mật khẩu, vì vậy, chúng tôi sẽ tiếp tục khuyến khích thêm nhiều người dùng chuyển sang các phương thức xác thực không cần mật khẩu. Chúng tôi cũng sẽ tiếp tục cải thiện các sản phẩm của mình để tối ưu hoá trải nghiệm người dùng cho các phương thức xác thực không cần mật khẩu.
Ảnh của olieman.eth trên Unsplash