Philipp의 답변은 완벽하지만, 로그인 서버와 게임 서버 사이에 연결이 필요하지 않은 약간 다른 방법이 있습니다. 이러한 연결이 어려운 경우에 유용합니다.
- 사용자가 로그인 서버에서 성공적으로 인증되면 위와 같이 게임 서버 주소와 로그인 토큰이 전송됩니다. 그러나이 토큰은 로그인 서버에서의 시간과 해당 번호의 해시 및 사용자 이름, IP 주소, 게임 서버의 IP 주소 또는 ID 및 본인 만 알고있는 비밀 키의 두 부분으로 구성됩니다.
- 클라이언트는이 토큰을 보내 제공된 게임 서버에 로그인을 시도합니다. 서버는 로그인 토큰의 정보와 자체 IP 주소 / ID 및 비밀 키를 기반으로 이전과 동일한 해시를 형성합니다. 이 해시가 토큰의 해시와 일치하면 플레이어가 올바르게 인증 된 것입니다. 그런 다음 날짜가 너무 오래된 지 확인하십시오 (예 : 1 분 이상).
이것은 다음과 같은 이유로 작동합니다.
- 날짜가 만료되어 복사 및 재사용 할 수 없습니다.
- 비밀 키를 모르면 새로 로그인하지 않고는 구성 할 수 없습니다.
- 다른 사람이 (예 : 패킷 스니퍼를 사용하여) 쉽게 가로 채지 못하고 원래 IP 주소가이를 구성하는 데 사용되므로 사용할 수 없습니다.
- 사용자 이름이 해시의 일부를 구성하기 때문에 다른 계정에 사용할 수 없습니다.
- 서버의 ID / IP 주소가 해시의 일부를 구성하므로 다른 게임 서버에서 동시 로그인에 사용할 수 없습니다.
간단히 말해 해시는 발신자가 로그인 토큰을 위조하는 것이 거의 불가능하므로 토큰의 정보를 신뢰할 수 있습니다.
보안 지향 해싱과 마찬가지로 사람들이 bcrypt, PBKDF2 및 scrypt를 좋아하는 것처럼 보일 수있는 최고의 해시 기능을 사용하고 비밀 키의 길이가 너무 길어 무차별 복제가 실용적이지 않도록하십시오.