« 微软鼠标也不咋地嘛 | 返回首页 | 在 Lua 中管理 C 对象 »

让游戏用户安全的登陆

我曾多次在 Blog 上讨论过增强游戏客户端的登陆安全问题。这个问题仅靠软件手段之所以难以从根本上解决,是因为现在国内的网络安全环境实在是太差,我们无法确保用户的机器上没有木马。

游戏客户端面临的问题更加严重。受经济利益趋势,几乎所有的热门游戏都有无数针对性木马泛滥。用户很难保证他每天运行的游戏客户端有没有被恶意程序修改过。(修改不仅包括直接对硬盘上的客户端程序做永久性修改,还包括使用内存黑客程序动态修改运行时代码)

我们几乎做不到让 client 程序自检,确保自己没被动过手脚。

周末又一次想到这个问题时,突然想到,其实最不容易被伪造的 client 软件其实就是最容易被动手脚的浏览器。虽然像 IE 这样存在很多安全问题的浏览器,会被无缘无故的插上诸多恶意插件。但不可否认,木马想骗过浏览器截取到其中的特定传输内容还是颇不容易的:大多数恶意插件都会很快被检查出来。毕竟这个是现在反木马病毒软件全力去做的事情。而且想伪造一个浏览器上的登陆过程比伪造一个游戏 Client 的登陆过程技术上要困难的多。

如果我们让游戏登陆时,启动浏览器,用 https 协议连接登陆服务器去通过身份认证。然后用服务器返回的 session key 来启动游戏 client 进入游戏。这个登陆过程可能更加安全。(由于 SSL 的技术保障,这个过程也可以防止 ARP 欺骗导致的密码把监听)

为了增加安全性,我们还可以让用户先在服务器注册一个只有他自己知道的特征字符串。在登陆的时候让服务器回显,确保看到的页面的确是官方服务器。(这个看起来有点画蛇添足,因为 SSL 本身也可以保证这一点,不过还是一定程度的防止木马在本地浏览器上捣鬼)

另外,为了防止已通过身份认证后,从浏览器启动游戏 client 时,session key 被中途截获而用户不知情。浏览器登陆窗口应该由游戏 client 确信自己已经进入游戏后再自动关闭。一旦本地游戏 client 拿到 session key 却没有顺利进入游戏,则向用户报警。

自然,session key 中应该包含用户的 IP 地址和时间信息,尽量防止木马利用。

以上方案自然也不是万全之策,不过是一个值得考虑的方案。

Comments

我们学校学生公寓上外网用的WEB认证就是通过HTTPS来加密的.我也通过抓包分析正常过程,然后用PYTHON来模拟浏览器登陆过程,可是最后服务器总是能够认出我不是WEB方式登陆的.纳闷,请问你是否知道原因.

韩国版的跑跑卡丁车游戏不就是必须在官方网站登陆来启动客户端的么

没有什么好办法,多加几把锁,开第一把锁,返回给你一些关于你的一些信息,看看它对不对,对再开下一把,不对不开了,

这样的问题只发生在游戏中我们做WEB应用,明明使用了SESSION或者表单进行验证但是本身系统设计上的缺限制还是会让木马听到这些信息的,特别是基于DLL的木马,这样的问题想了很久都没解决老是被投诉,而且我又刚毕业,这样的问题我们的老师也没折只好帮客户装杀毒软件,

既然信用卡可以钓鱼

你这一样可以钓鱼

site key,不是有现在有图形识别技术么,一样可以偷

或者,如果玩家间的交易每次确认太麻烦的话,可以针对重要物品进行手机绑定

如果把登录弄得太复杂,会影响用户的体验(我就是太烦《魔兽世界》那个转来转去的秘宝才去掉它的)。况且,每次玩游戏都必须输入密码,做的再好,因为每次都必须输入,还是容易让人找到弱点的。
我觉得:用户为什么怕被盗号?
一怕被盗装备。
二怕被盗游戏币。
三怕被删号。
那么在这三个操作上做文章就好了。
我的想法是:
一、对于针对系统的交易(游戏里的商店)不做限制,但如果被盗号后,通过客服申请,可以还原成被盗前的状态。
二、删号时,需要通过手机或电话语音确认。
三、玩家间的交易,双方需要通过手机或电话确认。

如果不想被“木马”偷窥密码, 那唯一的方法就是不在client输入密码。

直接手机发短信来登陆如何(现在手机很普及)?
要不发个email来登陆。

HTTPS代理是通过CONNECT实现的,因此代理服务器实际上无法得到明文信息,传输密钥协商仍然是在IE和最终的服务器之间进行。

HTTPS是安全的,中间人做服务器证书会引起IE弹出警告框,因为冒充的服务器证书并不是信任的CA签发的。

指定一个https代理服务器,就没什么秘密了

我知道曾经有游戏这么使用过,但是性能非常不好,webservice,https这类并发处理能力很一般,通常高峰时间晚上7点到22点之间游戏的并发登陆数很有可能超过webservice,https的处理能力,造成玩家登陆困难。

安全性是不错,不过好多用户的浏览器都是最频繁出问题的应用程序.

我们公司的游戏也是用类似的方法做的,把登录认证这部分做成webservice,通过https来访问。

有木马在,就像有人站在你身后看着你输入密码登陆,只能靠一次性密码(一次一密)对付。

高丽棒子的绝大部分游戏都这么做的吧。

https并不安全,中间人可以impersonate服务器证书的。你说的那个特征字符串回显给用户的做法在美国已经是网上银行的标准做法了,称作site key,一般不仅有一个特征字符串还有一幅特征图片,如果用户看到的不是他之前选择的图片和输入的特征字符串那么就应该怀疑访问的网站被冒名顶替了。

Post a comment

非这个主题相关的留言请到:留言本