让游戏用户安全的登陆
我曾多次在 Blog 上讨论过增强游戏客户端的登陆安全问题。这个问题仅靠软件手段之所以难以从根本上解决,是因为现在国内的网络安全环境实在是太差,我们无法确保用户的机器上没有木马。
游戏客户端面临的问题更加严重。受经济利益趋势,几乎所有的热门游戏都有无数针对性木马泛滥。用户很难保证他每天运行的游戏客户端有没有被恶意程序修改过。(修改不仅包括直接对硬盘上的客户端程序做永久性修改,还包括使用内存黑客程序动态修改运行时代码)
我们几乎做不到让 client 程序自检,确保自己没被动过手脚。
周末又一次想到这个问题时,突然想到,其实最不容易被伪造的 client 软件其实就是最容易被动手脚的浏览器。虽然像 IE 这样存在很多安全问题的浏览器,会被无缘无故的插上诸多恶意插件。但不可否认,木马想骗过浏览器截取到其中的特定传输内容还是颇不容易的:大多数恶意插件都会很快被检查出来。毕竟这个是现在反木马病毒软件全力去做的事情。而且想伪造一个浏览器上的登陆过程比伪造一个游戏 Client 的登陆过程技术上要困难的多。
如果我们让游戏登陆时,启动浏览器,用 https 协议连接登陆服务器去通过身份认证。然后用服务器返回的 session key 来启动游戏 client 进入游戏。这个登陆过程可能更加安全。(由于 SSL 的技术保障,这个过程也可以防止 ARP 欺骗导致的密码把监听)
为了增加安全性,我们还可以让用户先在服务器注册一个只有他自己知道的特征字符串。在登陆的时候让服务器回显,确保看到的页面的确是官方服务器。(这个看起来有点画蛇添足,因为 SSL 本身也可以保证这一点,不过还是一定程度的防止木马在本地浏览器上捣鬼)
另外,为了防止已通过身份认证后,从浏览器启动游戏 client 时,session key 被中途截获而用户不知情。浏览器登陆窗口应该由游戏 client 确信自己已经进入游戏后再自动关闭。一旦本地游戏 client 拿到 session key 却没有顺利进入游戏,则向用户报警。
自然,session key 中应该包含用户的 IP 地址和时间信息,尽量防止木马利用。
以上方案自然也不是万全之策,不过是一个值得考虑的方案。
Comments
Posted by: 风再起时 | (17) October 29, 2007 02:15 PM
Posted by: Anonymous | (16) October 26, 2007 11:09 PM
Posted by: Anonymous | (15) October 19, 2007 10:33 PM
Posted by: 末日天才 | (14) October 15, 2007 07:36 PM
Posted by: 12 | (13) October 15, 2007 02:44 PM
Posted by: 不空 | (12) October 15, 2007 01:42 PM
Posted by: 不空 | (11) October 15, 2007 01:38 PM
Posted by: david | (10) October 15, 2007 11:37 AM
Posted by: ConeZXY | (9) October 15, 2007 10:36 AM
Posted by: ConeZXY | (8) October 15, 2007 10:34 AM
Posted by: yayv | (7) October 15, 2007 09:59 AM
Posted by: std::string | (6) October 15, 2007 09:30 AM
Posted by: tigerdx8 | (5) October 15, 2007 09:30 AM
Posted by: DD | (4) October 15, 2007 09:18 AM
Posted by: 金庆 | (3) October 15, 2007 09:08 AM
Posted by: Anonymous | (2) October 15, 2007 07:10 AM
Posted by: Wesley | (1) October 15, 2007 04:27 AM