Nếu bạn là người không quan tâm đến bảo mật, miệng suốt ngày ra rả tài khoản này có gì đâu mà lấy thì tốt nhất đừng đọc bài viết này. Còn nếu bạn chưa từng nghe về bảo mật hai lớp hay muốn tài khoản của mình an toàn và tiện lợi hơn rất nhiều thì bài viết này dành cho bạn, nó là về khóa bảo mật, một phương thức bảo mật nâng cao từng được yêu cầu rất nhiều ở các tập đoàn lớn và dần mở rộng ra hơn cho người dùng cá nhân.
Mục đích chính của bài này là nói về khóa bảo mật, việc sử dụng nó và các lưu ý. Nhưng trước hết, bạn phải hiểu sơ qua một chút về bảo mật đã.
- Cơ bản về bảo mật hai lớp
- Khóa bảo mật là gì, giá trị của nó, FIDO và FIDO2
- Lựa chọn và sử dụng khóa bảo mật như thế nào, những lưu ý (lý thuyết tổng quan thôi nhé, mình đang không còn key nào ở cạnh, nhưng Google hỗ trợ dùng chính điện thoại của bạn làm khóa bảo mật đấy, mình nghĩ nhiều bạn dùng thử rồi mà không biết)
1. Bảo mật hai lớp
Bạn có nhớ ngày xưa chúng ta đăng nhập vào gmail thế nào không? Cứ gõ tên đăng nhập và mật khẩu vào trình duyệt là được, chẳng cần phức tạp gì, đơn giản và dễ hiểu. Nhưng chính cái sự đơn giản đó dẫn đến một hậu quả nặng nề: nếu chẳng may mật khẩu bị lộ (do nhìn trộm, do máy bị cài trojan, do keylog…) thì coi như tài khoản của chúng ta mất sạch toàn bộ, vì kẻ gian đăng nhập vào tài khoản của bạn cũng nhanh và dễ như bạn đăng nhập vậy. Trang web hay dịch vụ đó có biết là ai đang đăng nhập đâu, nó chỉ cần đơn giản biết là đúng mật khẩu, đúng username là cho vào thôi.
Để khắc phục nhược điểm đó, người ta phải tạo ra một cơ chế xác thực bổ sung gọi là bảo mật hai lớp. Nếu như lớp đầu tiên là dùng mật khẩu, loại bỏ được tới 80-90% kẻ gian thì thì lớp bảo vệ thứ 2 là một mã ngẫu nhiên được gửi đến điện thoại của chúng ta thông qua tin nhắn, email hay cuộc gọi… sẽ giúp loại bỏ hầu hết các trường hợp còn lại. Nếu chẳng may lộ mật khẩu, kẻ gian vẫn không thể truy cập vào tài khoản do họ không có lớp mật mã thứ hai.
Mời các bạn xem hình mô tả đơn giản dưới đây để hiểu sơ qua về ưu và nhược điểm của các phương thức bảo mật hai lớp. Về cơ bản là mỗi phương thức sẽ có ưu và nhược điểm khác nhau, mà trên thực tế các dịch vụ cũng ít khi phụ thuộc vào một cơ chế xác thực duy nhất, ví dụ như chỉ hỗ trợ tin nhắn hay hỗ trợ cuộc gọi không mà còn kèm theo cả email hay các ứng dụng tạo mã. Cá biệt với một số ứng dụng liên quan đến tiền như Binance thì bạn phải nhập mật khẩu gửi qua tin nhắn, qua email, qua bộ tạo mã cùng lúc nếu muốn chuyển tiền đi.
Sơ bộ về xác thực hai lớp là như thế, nhưng bạn biết rồi đấy, web là một nền tảng mở, rồi các nhà sản xuất phần cứng như máy tính hay điện thoại lại có thể đưa ra các tiêu chuẩn khác nhau. Thế thì làm sao mà hệ thống của Microsoft có thể tương đồng với hệ thống của Google được đúng không? Chẳng lẽ các nhà lập trình web phải xây dựng riêng một hệ thống xác thực hai lớp cho Google và một hệ thống khác cho Microsoft, rồi còn cả Apple, Facebook… Và không lẽ người dùng sẽ phải sử dụng các ứng dụng Google khác nhau, Facebook khác nhau…để tạo mã đăng nhập?
Đó chính là lý do dẫn đến sự ra đời của các tiêu chuẩn khác nhau, để mà kể ra thì nó rất nhiều, nhưng các bạn cũng không cần quan tâm luôn. Chúng ta đã giải quyết được bài toán đó rồi, và …….. một bước mới là các tiêu chuẩn W3C cho phép đăng nhập mà không cần mật khẩu.
Khóa bảo mật:
Viết cả trang A4 giờ mới đến phần chính, là khóa bảo mật. Như các bạn thấy trong hình trên thì khóa bảo mật là một trong những phương thức xác thực hai lớp, nhưng nó khác hoàn toàn với các phương thức ở trên, là nó không sản sinh ra các mã mà chúng ta nhập vào nữa.
Về tác dụng của khóa bảo mật, có thể hình dung các ngữ cảnh sau:
- Bạn đăng nhập vào tài khoản Apple trên chính điện thoại của mình. Kỳ lạ thay, sao tin nhắn SMS mãi không tới mà mạng lỗi làm sao đó không thể xác nhận trên các MacBook được. Vậy làm sao để đăng nhập? Việc này thường xuyên xảy ra với các dịch vụ nhỏ.
- Bạn cần đăng nhập vào một máy tính lạ để làm việc nhưng điện thoại đang hết pin
- Bạn bị giựt điện thoại, cần đăng nhập tài khoản để khóa hết lại nhưng làm sao vượt qua bước xác thực hai lớp để khóa và gỡ điện thoại cũ ra khỏi tài khoản
- Bạn cần đăng nhập vào tài khoản Microsoft trên một máy tính mượn tạm của khách sạn để làm việc (kết nối LAN qua dây Ethernet), rất tiếc là khu vực đó không có sóng Wi-Fi, cũng chẳng có mạng di động. Vậy làm sao để đăng nhập?
- Cũng với một quán Internet Cafe hay quán game, nhưng lần này là giữa thành phố lớn, mạng đầy đủ. Bạn đăng nhập vào, và thông tin mật khẩu, tài khoản bị kẻ xấu ghi lại bằng keylog hoặc trojan trên máy. Bạn tự tin là mình có bảo mật hai lớp nên không sao đúng không, nhưng đừng lạc quan thái quá như vậy. Họ đã có email và mật khẩu của bạn, có thể dò ra rất nhiều thông tin khác, đặc biệt là với những ai dùng chung mật khẩu. Và xác thực hai lớp qua email/tin nhắn cũng có thể bị hack từ xa đấy.
- Để giảm bớt sự nguy hiểm khi đăng nhập trên một máy tính lạ, bạn có chắc thường xuyên dùng chế độ ẩn danh và xóa toàn bộ các thông tin sau khi dùng xong?
Nếu bạn sợ hãi các hoàn cảnh trên thì khóa bảo mật là thứ giúp chúng ta xử lý được các vấn đề đó, đặc biệt là nó vẫn có thể sử dụng song song với các phương thức nhắn tin sms, tạo mã bảo mật truyền thống. Khi này, để log in vào một thiết bị lạ chúng ta sẽ không cần chờ hay nhập mã bảo mật nữa, chỉ đơn giản cắm khóa vào là xong.
Nguyên tắc hoạt động của khóa bảo mật cơ bản là thế này:
- Người dùng đăng ký khoa bảo mật với hệ thống xác thực (có thể là máy tính, có thể là các dịch vụ như Google, Apple, Microsoft…), từ đó hệ thống sẽ tạo ra một cặp khóa public lưu trên máy chủ và khóa private lưu trên khóa bảo mật. Đúng như tên gọi của nó, khóa private không bao giờ được chia sẻ với bất cứ ai, chỉ nằm trên khóa bảo mật mà thôi.
- Khi người dùng đăng nhập, hệ thống xác thực sẽ gửi yêu cầu đến khóa, “bắt” nó chứng minh đang lưu trữ khóa private của người dùng
- Khi này, người dùng sẽ phải nhập mã pin hoặc vân tay để mở khóa private. Mã private sau đó sẽ được xác nhận với mã public. Nếu đúng, hệ thống cho phép đăng nhập vào tài khoản.
Như vậy, bạn có thể thấy kể cả khi mất khóa bảo mật thì kẻ gian vẫn không thể đăng nhập tài khoản của chúng ta được vì họ phải biết thêm cả mã PIN hoặc giả được vân tay nữa. Vấn đề ở đây là mã PIN đó được lưu trữ trực tiếp trên khóa, nó không truyền sang máy tính hay gửi qua Internet, do đó nó hoàn toàn bảo mật và an toàn hơn rất nhiều. Chính vì vậy mà các chuyên gia khuyên chúng ta có thể sử dụng cùng lúc 2-3 khóa bảo mật, một cái ở nhà, một cái ở công ty và một cái mang theo mình.
Lựa chọn khóa bảo mật ra sao
Trên thực tế có 3 vấn đề bạn cần quan tâm khi chọn mua khóa bảo mật: 1. bạn chọn hình thức khóa bảo mật nào, 2. bạn muốn đăng nhập trên thiết bị gì và 3. khóa xác thực đó hỗ trợ FIDO hay FIDO2?
Đầu tiên, câu hỏi số 1. Chọn khóa bảo mật nào. Câu hỏi này thực chất là để cho vui, cung cấp cho bạn cái nhìn toàn cảnh về thị trường thôi. Chúng ta sẽ có các khóa bảo mật như hình dưới của YubiKey hay các nhà sản xuất tương tự, một thiết bị kết hợp như đồng hồ thông minh/điện thoại hay các thẻ thông minh.
Hình trên là dải sản phẩm của YubiKey, một trong những công ty đầu ngành chuyên sản xuất khóa bảo mật. Bạn thấy là nó trải dài từ các thiết bị USB A cắm máy tính rút ra rút vào mang đi khắp nơi cho đến cục nhỏ xíu gần như cắm chết vào một cổng USB C trên máy tính, loại này rất được ưa chuộng ở các tập đoàn lớn cấp máy cho nhân viên.
Trên thực tế, không chỉ có các thiết bị dưới dạng USB đóng vai trò là một khóa bảo mật mà chúng ta còn có thể sử dụng các thiết bị khác, chẳng hạn như chính điện thoại mà bạn đang dùng hay tương lai có thể là các đồng hồ thông minh. Chính FIDO cũng đã có hướng dẫn chi tiết cho việc này, hay chúng ta từng cho Vsmart Aris/Aris Pro là hai điện thoại đầu tiên hỗ trợ xác thực không mật khẩu FIDO2. Nhưng nói vậy cho đủ thông tin thôi chứ Vsmart chết rồi còn đâu…
Do vậy, trả lời câu hỏi 1 rất đơn giản: hầu hết chúng ta chỉ có thể chọn thiết bị nhỏ gọn theo người giống như các khóa bảo mật YubiKey hay Google Titan, các lựa chọn khác gần như không có tính khả thi hoặc rất hiếm.
Câu hỏi 2, bạn muốn sử dụng với thiết bị nào?
Như đã nói, khóa bảo mật có thể sử dụng đa mục đích, bạn phải dựa vào thiết bị đang sử dụng để lựa chọn tương ứng. Lấy ví dụ, bạn muốn đăng nhập trên cả điện thoại, máy tính thì tốt nhất là nên mua một khóa có cổng USB C, tích hợp NFC để sử dụng được cả hai. Tuy vậy, loại này thường sẽ lớn hơn và dài hơn, dễ thất lạc hơn loại nhỏ xíu gắn chết vào máy tính.
Cả iPhone và Android đều hỗ trợ khóa bảo mật qua cổng Lightning/USB C hoặc NFC nên bạn không cần quá lo lắng về điều này. Thậm chí ngay cả YubiKey 5C nano, loại siêu nhỏ gắn máy tính cũng tương thích với iPhone qua adapter USB C sang Lightning, hay các khóa YubiKey Edge từ 2015 hay Neo từ 2012 đều vẫn chạy tốt, miễn là có cổng kết nối tương ứng.
Câu hỏi 3, mua khóa cũ có FIDO cho rẻ hay mua các đời mới hơn có FIDO2
FIDO có 3 giao thức:
- U2F (Universal 2nd Factor): giao thức bảo mật hai lớp, chính là cái chúng ta nói ở đầu bài
- UAF (Universal Authentication Framework): giao thức giúp đăng nhập không cần mật khẩu trên các thiết bị di động. Bạn có thể tham khảo bài viết này về U2F và UAF
- FIDO2 và WebAuthn (W3C Web Authentication): bao gồm TÍNH NĂNG của cả hai giao thức trên (tính năng thôi nhé, không phải là sao chép của U2F và UAF rồi gom lại đâu). FIDO2 tương thích ngược với U2F, nên khóa bảo mật nào hỗ trợ FIDO2 thì cũng hỗ trợ U2F.
FIDO2 buộc phải sử dụng cặp mã hóa public-private theo chuẩn RSA, sử dụng các bộ xác thực trên chính thiết bị (ví dụ như TPM trên máy tính hay Secure Element trên điện thoại), hoặc sử dụng các phần cứng bên ngoài như USB, thẻ thông minh như đã nói ở trên, hay thâm chí là SIM điện thoại của chúng ta.
Ở góc độ người dùng, FIDO2 và WebAuthn mang lại khả năng đăng nhập không cần mật khẩu thật sự, loại bỏ cả bước nhập mật khẩu lớp đầu lẫn lớp 2 với các dịch vụ được hỗ trợ. Do đó, với các khóa FIDO2 thì chúng ta đã lười còn lười hơn nữa😁 Và ai đã an toàn thì càng an toàn hơn nữa. Các bạn chẳng bao giờ cần phải nhập mật khẩu để bị lộ ở bất cứ nơi đâu. Cứ gắn khóa vào, chạm vân tay là xong, tất cả đã sẵn sàng. Kể cả máy chủ Google có bị hack thì hacker cũng chẳng biết bạn là ai.
Tất nhiên sự tiện lợi đi kèm với tiền, nếu như các khóa FIDO đời đầu như Google Titan hay YubiKey có giá chỉ 20-30$ thì các khóa FIDO2 có thể lên đến 70-90$ tùy loại.
Làm sao để sử dụng:
Như đã nói trong phần Nguyên tắc hoạt động của khóa bảo mật cơ bản, bạn phải đăng nhập vào tài khoản của chúng ta. Nó sẽ luôn nằm chung trong các phần bảo mật hai lớp.
Với Facebook, thì truy cập hoặc vào Settings>Security & login> Use two-factor authentication>edit>setup security key
Với Google thì truy cập vào đây hoặc vào Manage my account>Security>2-step verification>Security Key. Bản chất Google có cho sử dụng điện thoại iOS và Android làm Security Key đấy, bạn có thể thử, nhưng chỉ dùng với Edge và Chrome thôi.
Bạn nào dùng iCloud, Microsoft, Dropbox, Binance… và các dịch vụ khác có thể thử tương tự nhé.
Bài viết rất hay và đầy đủ thông tin, cảm ơn bạn rất nhiều. Mình đã mua 2 cái Yubikey này để làm khóa bảo mật cho tài khoản icloud, Google và một số site.