基于登陆服务器的登陆链接方法及系统的制作方法_2

文档序号:8514617阅读:来源:国知局
密,获得令牌和随机字符串login_key,调用平台接口获得令牌代表的用户的详细信息 user_info ;
处理步骤,登陆服务器生成一串随机字符串key,再获取当前时间time ;用随机字符串internal_key作为密钥,使用对称加密算法加密user_info、key、time,获得secret ;用login_key作为密钥使用对称加密算法加密key、time,获得reply ;登录服务器将secret和reply发送给客户端;
在游戏服务器中执行如下步骤:
游戏服务器收到客户端发送的secret和login_message2后,使用internal_key解密 secret,获得 user_info 和 key 以及 time,用 key 解密 login_message2,判断 login_message2中解密得到的time是否和secret中的time相同,如果不同则登录失败,反之则成功;
其中,在登录消息login_message中包括令牌、客户端生成的一串随机字符串login_key,使用服务器的非对称加密算法的公钥加密令牌、随机字符串login_key ;
在该登陆链接方法中,客户端和游戏服务器所有的通信都使用随机字符串key作为密钥使用对称加密算法加密。
[0023]在游戏服务器还包括比较步骤,
在所述比较步骤中,游戏服务器从数据库中读取此用户上次成功登录的时间timeO,如果timeO大于或等于time,那么登录失败,反之则登录成功,并在数据库中将此用户上次成功登录时间设为time。
[0024]在该登陆链接方法中,游戏服务器还执行如下步骤:
判断步骤,游戏服务器接收客户端发送的消息序号sequence,判断当前消息序号sequence是否大于此条连接上一次发送的消息中的sequence,如果大于,则合法,不然则为非法消息。
[0025]客户端执行如下步骤:
生成加密步骤,客户端生成一串随机字符串l0gin_key,使用登陆服务器的非对称加密算法的公钥加密令牌、随机字符串login_key,获得加密后的登录消息login_message ;
发送步骤,客户端将登录消息login_message发送至服务器。
[0026]在客户端还包括执行如下步骤:
获取步骤,客户端使用自己生成加密步骤中生成的login_key解密reply,获得key和time,使用key作为密钥,使用对称加密算法算法加密time,获得login_message2,连接游戏服务器,发送secret和login_message20
[0027]本发明还公开了一种基于登陆服务器的登陆链接系统,在登陆服务器中包括: 接收模块,用于接收客户端发送的加密后的登录消息login_message ;
解密模块,登陆服务器收到登录消息loginjnessage后,使用非对称加密算法的私钥进行解密,获得令牌和随机字符串login_key,调用平台接口获得令牌代表的用户的详细信息 user_info ;
处理模块,登陆服务器生成一串随机字符串key,再获取当前时间time ;用随机字符串internal_key作为密钥,使用对称加密算法加密user_info、key、time,获得secret ;用login_key作为密钥使用对称加密算法加密key、time,获得reply ;登录服务器将secret和reply发送给客户端;
在游戏服务器中还包括:游戏服务器收到客户端发送的secret和login_message2后,使用 internal_key 解密 secret,获得user_info 和 key 以及 time,用 key 解密 login_message2,判断login_message2中解密得到的time是否和secret中的time相同,如果不同则登录失败,反之则成功;
其中,在登录消息login_message中包括令牌、客户端生成的一串随机字符串login_key,使用服务器的非对称加密算法的公钥加密令牌、随机字符串login_key ;
在该登陆链接方法中,客户端和游戏服务器所有的通信都使用随机字符串key作为密钥使用对称加密算法加密。
[0028]在游戏服务器还包括比较模块,
在所述比较模块中,游戏服务器从数据库中读取此用户上次成功登录的时间timeO,如果timeO大于或等于time,那么登录失败,反之则登录成功,并在数据库中将此用户上次成功登录时间设为time。
[0029]在该登陆链接系统中,游戏服务器还包括:
判断模块,游戏服务器接收客户端发送的消息序号sequence,判断当前消息序号sequence是否大于此条连接上一次发送的消息中的sequence,如果大于,则合法,不然则为非法消息。
[0030]客户端还包括:
生成加密模块,客户端生成一串随机字符串l0gin_key,使用登陆服务器的非对称加密算法的公钥加密令牌、随机字符串login_key,获得加密后的登录消息login_message ;
发送模块,客户端将登录消息login_message发送至服务器。
[0031]在客户端还包括:
获取步骤,客户端使用自己生成加密步骤中生成的login_key解密reply,获得key和time,使用key作为密钥,使用对称加密算法算法加密time,获得login_message2,连接游戏服务器,发送secret和login_message20
[0032]在本发明中,具体采用:
1.客户端生成一串随机字符串login_key,长度足够长(256位或更长),使用登录服务器的RSA公钥加密token + login_key (有id的话再加id),获得加密后的登录消息login_message,login_message只有登录服务器使用私钥才能解密,其他所有中间人都无法解密获得其中的token或login_key。
[0033]2.登录服务器收到login_message后,使用私钥解密,获得token和login_key (有id的话还有id).调用平台接口获得token代表的用户的详细信息user_info。
[0034]3.登录服务器生成一串随机字符串key,长度足够长(256位或更长),再获取当前时间time。
[0035]3.1.用 internal_key 作为密钥,使用 AES 算法加密 user_info+key+time,获得secret.因为internal_key只有登录服务器和游戏服务器才有,所以客户端和其他任何第三方都无法监听或篡改。
[0036]3.2.用login_key作为密钥使用AES算法加密key+time,获得reply.因为login_key只有客户端和登录服务器才有,其他第三方无法解密reply中的内容。
[0037]3.3.登录服务器将3.1中的secret和3.2中的r印Iy发送给客户端。
[0038]4.客户端使用自己在第I步中生成的login_key解密reply,获得key和time,使用key作为密钥,使用AES算法加密time,获得login_message2,连接游戏服务器,发送secret和login_message2,因为key只有登录服务器和客户端才有,所以其他第三方无法解密 login_message20
[0039]5.游戏服务器收到 secret 和 login_message2 后,使用 internal_key 解密secret,获得 user_info 和 key 以及 time ;用 key 解密 login_message2,检查 login_message2中解密得到的time是否和secret中的time相同,如果不同则登录失败,从自己数据库中读取此用户上次成功登录的时间timeO,如果timeO大于或等于time,此条消息很有可能是录制后重放发上来的消息,登录失败,反之则登录成功,并在数据库中讲此用户上次成功登录时间设为time ;即每一条login_message2只可能成功登录一次。
客户端和游戏服务器之后所有的通信都使用key作为密钥使用AES算法加密,没有第三方知道key,通信无法被监听和篡改;客户端也无法篡改网络消息,不然服务器无法正确解密出原始消息,且由于key是登录服务器为每个连接随机生成,客户端或者第三方都无法把其它连接中发送给游戏服务器的消息再发送给游戏服务器。
[0040]客户端之后每条发送给游戏服务器的未加密原始消息中都附带此条消息的序号sequence, sequence递增,加密后发送给游戏服务器;游戏服务器解密后检查消息中的sequence是否大于此条连接上一次发送的消息中的sequence,如果大于,则合法,不然则为非法消息,这样同一条连接中,客户端也无法录制并重发之前发送过的消息给游戏服务器。
[0041]客户端和所有服务器之间的通信都是加密的,所有第三方都无法获取其中的内容。
[0042]所有通信被监听并且重放的可能分析:
1.login_message被其他第三方录制并且再次发送给登录服务器:
登录服
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1