Trying to get some feedback on this authentication/encryption protocol
- From: Christoffer Lerno <christoffer.lerno@xxxxxxxxx>
- Date: Sun, 20 Feb 2011 16:02:30 -0800 (PST)
I posted a question regarding a protocol I'm considering for an online
game. I've had some feedback, but not enough to feel decided if I
should use it or dismiss it. I hope I can get more feedback here.
My apologies if this is a bit long:
= Participants =
- Login Server, with user registry. Shares a secret symmetric key (K)
with each of the Game Servers.
- 1 or more Game Servers, shares a secret symmetric key with the Login
= Registration =
1. Client sends a registration request using HTTPS to the login server
with some login information.
2. Login server registers user and returns a unique (but random) Login
Server login token (T) in the response.
= Login to Login Server =
1. Client sends T using HTTPS to the login server.
2. The login server generates a random session key (S) and a timestamp
3. The login server encrypts user-id + Ts + S + nonce with the
symmetric key shared with the game server (E), it also creates a
digest (D) from user-id + timestamp + S.
4. The login server sends S + Ts + D + E + IP to game server to the
client as the response.
Note: There is some caching, so repeated requests within a certain
time will yield the same (E) from the server.
= Login to Game Server =
1. The client creates a random number R and encrypts it using S (C),
it also creates a digest of R (Dr)
2. The client sends E + D + C + Dr to the game server.
3. The Game Server decrypts E using K
4. The Game Server verifies that a digest of the decrypted data
5. The Game Server checks Ts (we can assume the time of the servers
are well synchronized)
6. The Game Server decrypts C to R, then creates a digest and test
that against Dr
7. The Game Server performs similar steps as the client in (1),
creating C2 and Dr2.
8. The Game Server sends C2 + Dr2 to the client.
9. The client verifies that the decrypted C2 and Dr2 matches.
10. Encrypted communication starts using S.
Note: If Ts indicates that the session is expired in step 5, the
client is sent a response indicating it should connect to the login
server for new login credentials.
Are there any obvious issues/weaknesses with this protocol?
- Prev by Date: Re: It Has to be Contextual Randomness.
- Next by Date: Re: It Has to be Contextual Randomness.
- Previous by thread: Socket Algorithm Description
- Next by thread: Re: Trying to get some feedback on this authentication/encryption protocol