Xác Thực Người Dùng Độc Lập Cho Trò Chơi
Tất cả các sản phẩm của NetEase, bao gồm cả các trò chơi, đều sử dụng hệ thống NetEase Pass (URS) để xác thực danh tính người dùng. Đây là một phương pháp hiệu quả để giảm thiểu rào cản cho người dùng mới khi tiếp cận các sản phẩm. Giống như nhiều nhà cung cấp dịch vụ mạng khác, NetEase cũng xây dựng hệ thống xác thực thống nhất của riêng mình, được gọi là URS. Công ty đã đầu tư rất nhiều nguồn lực vào hệ thống này, nhưng hiệu suất của nó luôn không theo kịp nhu cầu thực tế. Cá nhân tôi từ năm 2003 đã liên tục đề xuất các cải tiến về bảo mật, nhưng do hệ thống này ảnh hưởng quá rộng, việc thực hiện những thay đổi thực sự gặp rất nhiều khó khăn.
Việc viết đi viết lại các bản đề xuất và tham gia các cuộc họp kỹ thuật của bộ phận URS tại Bắc Kinh đã giúp tôi hiểu sâu sắc những thách thức của họ, đặc biệt là các vấn đề phi kỹ thuật phức tạp. Tuy nhiên, môi trường mạng nội địa kém an toàn cùng tình trạng trộm cắp tài khoản trò chơi ngày càng gia tăng khiến tôi không thể không quan tâm đến vấn đề này. Gần đây, tôi đã đề xuất một giải pháp cải tiến mới với hy vọng cải thiện tình hình.
Bối cảnh sự việc:
Văn phòng chúng tôi gần đây đón thêm một bộ phận mới chuyển đến. Không ngờ ngay ngày đầu tiên đã phát hiện tấn công ARP giả mạo. Phải nói rằng Windows gần như không có biện pháp phòng vệ nào, máy tính cài Windows không phát hiện sự cố trong suốt buổi sáng. May mắn thay, chúng tôi có vài máy tính dùng FreeBSD, nhanh chóng phát hiện cảnh báo trên console về việc địa chỉ MAC của cổng mạng đã bị thay đổi.
Sự cố chỉ kéo dài 3-4 giờ, máy tính nhiễm mã độc được xác định nhanh chóng – đúng là do máy tính mới mang vào từ đồng nghiệp bộ phận mới. Ngay lập tức, toàn bộ nhân viên được yêu cầu đổi mật khẩu các dịch vụ mạng đã sử dụng trong buổi sáng đó. Vụ việc này một lần nữa cảnh báo rằng: trong môi trường mạng hiện nay, chỉ bảo đảm an toàn cho thiết bị của mình là chưa đủ.
Hiện trạng hệ thống xác thực trò chơi:
Nếu người dùng không chọn các sản phẩm bảo mật bổ sung như “Tướng Lệnh” hay “Bảo Mật Điện Thoại”, việc bảo vệ dữ liệu mật khẩu truyền thống qua bàn phím gần như không tồn tại. Trong trò chơi, chúng tôi chỉ sử dụng thuật toán mã hóa riêng để bảo vệ dữ liệu truyền tải. Ngoài nguy cơ bị phần mềm độc hại trên máy tính, hệ thống này chỉ có thể ngăn chặn việc nghe lén dữ liệu mạng cơ bản – tức là kẻ trộm không thể trực tiếp xem luồng dữ liệu để biết mật khẩu người dùng nhập.
Tuy nhiên, về mặt lý thuyết, bất kỳ ai có được toàn bộ luồng dữ liệu đều có thể giải mã mật khẩu nếu nắm được thuật toán mã hóa. Mà thuật toán này hoàn toàn có thể bị phá giải thông qua việc đảo ngược chương trình client.
Các kỹ thuật viên của chúng tôi đều nhận thức rõ mức độ nguy hiểm này. Tuy nhiên, hệ thống trò chơi có mối liên hệ phức tạp với URS. Chúng tôi không thể từ bỏ URS để xây dựng hệ thống xác thực độc lập, trong khi URS vì nhiều lý do vẫn chưa thể triển khai cơ chế xác thực thách thức (challenge-response) an toàn hơn mà chúng tôi mong muốn.
(P/s: Về vấn đề bảo mật xác thực người dùng, độc giả có thể tham khảo bài viết cũ của Yun Feng: “Giải pháp xác thực đa máy chủ”).
Chúng tôi từng nhiều lần đề xuất nên tách biệt hệ thống trò chơi khỏi URS. Mặc dù URS rất hiệu quả trong việc thu hút người dùng mới, nhưng nó tạo ra hiệu ứng “thùng gỗ ván ngắn” – nhiều dịch vụ web chỉ đạt mức bảo mật tối thiểu, dễ bị đánh cắp mật khẩu. Điều trớ trêu là chúng tôi phải khuyến cáo người dùng không sử dụng cùng một tài khoản URS cho diễn đàn và trò chơi.
Việc tích hợp các hệ thống bảo mật như “Tướng Lệnh” dù nâng cao an toàn nhưng lại làm tăng rào cản người dùng. Những giải pháp này thường được đưa ra theo kiểu “điếc không sợ súng”, hoặc là giải pháp tình huống, dần dần tích tụ thành gánh nặng lịch sử cho URS. Quan trọng hơn, đa số người dùng chưa từng bị mất tài khoản vẫn trung thành với phương pháp nhập mật khẩu truyền thống vì sự tiện lợi.
Tôi từng chế nhạo các giải pháp an ninh tạm thời như “mã bảo vệ tài khoản” thời kỳ đầu, nhưng sau này đã hiểu ra – đây là một vấn đề phức tạp không có giải pháp lý tưởng.
Vậy chúng ta nên làm gì?
Tôi nhận ra không thể từ bỏ URS để xây dựng hệ thống xác thực hoàn toàn mới, nhưng có thể thực hiện các cải tiến sau:
- Tài khoản trò chơi mới có thể đăng ký trực tiếp bằng tài khoản/mật khẩu URS.
- Bắt buộc đổi mật khẩu sau khi tạo tài khoản trò chơi (phải khác với mật khẩu URS).
- Khôi phục mật khẩu trò chơi chỉ có hiệu lực sau 48 giờ kể từ khi yêu cầu. Nếu người chơi đăng nhập thành công trong khoảng thời gian này, lệnh khôi phục sẽ tự động hủy và hệ thống trò chơi sẽ thông báo.
- Thông báo thay đổi mật khẩu URS đến người chơi trò chơi (không cần sửa đổi URS). Máy chủ trò chơi sẽ lưu trữ mật khẩu URS trong bộ nhớ đệm, tự động xác thực lại khi người dùng đăng nhập. Nếu mật khẩu URS bị thay đổi, người chơi phải xác nhận danh tính URS trong trò chơi (vẫn cần nhập đúng mật khẩu trò chơi) để tiếp tục truy cập.
- Ghi nhận chi tiết đăng nhập bao gồm thời gian/IP gần nhất, lịch sử cố gắng đoán mật khẩu. Hệ thống sẽ yêu cầu đổi mật khẩu nếu phát hiện rủi ro bảo mật.
Giải pháp cải tiến này tập trung vào việc không thay đổi hệ thống URS hiện có, cũng không cần thêm giao diện mới. Thay vào đó, hệ thống trò chơi sẽ sử dụng hai lớp xác thực song song, kết hợp URS và hệ thống trò chơi. Người dùng không cần thực hiện thêm thao tác nào, đảm bảo trải nghiệm mượt mà.
Về bản chất, tài khoản trò chơi vẫn thuộc về URS, các giao dịch nạp tiền và thanh toán vẫn do URS quản lý. Tuy nhiên, sự ràng buộc lẫn nhau giữa hai hệ thống tạo ra cơ chế bảo vệ kép, sử dụng