Mặc dù câu trả lời của Philipp là hoàn toàn tốt, nhưng có một cách hơi khác không yêu cầu kết nối giữa máy chủ đăng nhập và máy chủ trò chơi, rất hữu ích nếu kết nối như vậy khó khăn.
- Khi người dùng xác thực thành công trên máy chủ đăng nhập, họ sẽ được gửi một địa chỉ máy chủ trò chơi và mã thông báo đăng nhập như trên. Tuy nhiên, mã thông báo này bao gồm 2 phần: thời gian trên máy chủ đăng nhập và hàm băm của số đó cộng với tên người dùng, địa chỉ IP của họ, địa chỉ IP hoặc ID của máy chủ trò chơi và khóa bí mật mà chỉ bạn biết.
- Máy khách cố gắng đăng nhập vào máy chủ trò chơi được cung cấp bằng cách gửi mã thông báo này. Máy chủ hình thành hàm băm giống như trước đây, dựa trên thông tin trong mã thông báo đăng nhập cộng với địa chỉ IP / ID riêng và khóa bí mật. Nếu hàm băm này khớp với mã trong mã thông báo, bạn sẽ biết trình phát được xác thực đúng. Sau đó kiểm tra ngày không quá cũ (ví dụ: hơn 1 phút).
Điều này hoạt động vì:
- Nó không thể được sao chép và sử dụng lại vì ngày sẽ hết hạn.
- Nó không thể được xây dựng mà không có thông tin đăng nhập mới mà không biết khóa bí mật.
- Nó không thể dễ dàng bị chặn bởi người khác (ví dụ: với trình thám thính gói) và được sử dụng vì địa chỉ IP ban đầu được sử dụng để xây dựng nó.
- Nó không thể được sử dụng cho một tài khoản khác vì tên người dùng tạo thành một phần của hàm băm.
- Nó không thể được sử dụng để đăng nhập đồng thời trên các máy chủ trò chơi khác nhau vì địa chỉ ID / IP của máy chủ tạo thành một phần của hàm băm.
Hoặc nói một cách đơn giản hơn, hàm băm đảm bảo rằng người gửi gần như không thể giả mạo mã thông báo đăng nhập của họ và vì vậy thông tin trong mã thông báo có thể được tin cậy.
Như với bất kỳ băm định hướng bảo mật nào, hãy sử dụng hàm băm tốt nhất bạn có thể nhận được - tại thời điểm mọi người dường như thích bcrypt, PBKDF2 và mã hóa - và đảm bảo khóa bí mật của bạn rất dài để việc tái tạo lực lượng vũ phu trở nên kém thực tế.