« 泊松分布 | 返回首页 | 洗牌 »

独立的游戏用户登陆认证

网易的所有产品都使用网易通行证系统做用户身份认证,包括游戏产品。

这是降低新产品用户门槛的好方法。几乎所有的网络服务提供商都弄了个自己的统一用户认证系统,网易通行证也是干的这挡子事,内部我们把这套系统简称为 URS。公司在 URS 系统上投入了很多人力和资源,但是其表现总是跟不上我们的需求。我个人从 03 年开始就不断的在提一些安全方面的改进建议。但是由于这些系统涉及面太广,想做出些实质性的改变举步维艰。

不断的写建议书,不断的参与北京 URS 部门的技术会议,让我充分理解了他们的困难,和其中许多非技术难点的难处。

但是,国内糟糕的网络安全环境,日益严重的游戏帐号失窃问题,让我不得不时常关注这方面的问题。最近,又想了个改进方案,希望可以有所改善安全问题。

缘起:

我们办公室最近搬入了一个新部门。没想到第一天我们就发现了 ARP 欺骗。不得不说 Windows 在这方面防护意识实在是太差了,装 Windows 的电脑一个上午都没发现这个问题。好在我们有几台 Freebsd 的桌面在用。很快的就发现了 console 上的警告,网关的 Mac 地址被更换了。

事故只持续了三四个小时,被木马感染的机器迅速被定位,果然是新部门同事进入带来的新机器被感染。我们也立刻让所有同事修改了在事发的那个上午用过的任何网络服务的密码。

这件事情再次警示我们,在今天的网络环境中,只保证自己的机器干净还是不足够安全的。

我们游戏目前的用户认证方案:

如果用户不选择额外的安全产品:例如 将军令电话密保 等等这些的话,我们对最常规的键盘密码的网络数据通讯所做的保护极其有限。

在游戏中,仅仅只是用私有加密算法对通讯做了加密。除去本身机器中木马的危险之外,只能防止最基本的网络数据监听。即,监听网络包的窃贼不能简单的查看数据流而得到用户输入的密码罢了。

但是,理论上,任何人只要得到所有的数据流,就有获取用户密码的可能性。他唯一缺少的只是私有的加密算法而已。而加密算法可以通过对 client 程序的逆向工程得到。

并非我们的技术人员知道这样做是极不安全的。只是,游戏系统跟 URS 有千丝万缕的联系。我们不能放弃 URS 而做一个独立的用户认证系统;而 URS 系统由于种种原因,一直没能增加我们需要的更安全的基于挑战策略的更为安全的认证方案。

ps. 关于用户认证的安全性讨论,可见云风以前的一篇旧文:多服务器的用户身份认证方案

曾经不只一次的提过,游戏系统应该适当的和 URS 分离。URS 在降低新用户门槛方面有巨大的作用。但是,它带来更多的木桶短板效应。很多只是基于网页的服务,无法做到更高的安全级,极为容易丢失密码。为了安全起见,我们又同时向用户宣传,不要在论坛等地方使用和游戏帐号相同的通行证。这还真是莫大的讽刺啊。

将军令等安全系统的加入,并鼓励用户使用,从另一方面又提高了用户门槛。而且这些安全产品,被一个个或是拍脑子,或是精心策划,或是作为应急方案想出来,不断的加入 URS ,形成了极大的历史负担。更重要的是,大多数并没有遭遇帐号失窃的用户,并不会采取额外的保护措施,他们钟情的依旧是最为便捷的键盘密码。

我曾经百般取笑过早年的一些诸如帐号安全码等临时安全方案,后来都理解了。这是一个复杂的问题,没有理想的解决方案的。

OK 。我现在知道我们不可能放弃 URS 独立做一套全新的密码认证系统,那么做一些改动怎样?

  1. 游戏新注册用户可以直接用通行证帐号密码,注册游戏新帐号。

  2. 注册游戏帐号后,强制要求修改密码(必须和通行证不同)。

  3. 玩家游戏密码丢失后,可以在通行证里申请重置,但 48 小时后生效。48 小时期间,一旦玩家正常登陆游戏,重置指令自动撤消,并在游戏中通知用户。

  4. 任何通行证密码的修改,都通知游戏用户(注:不需要修改 URS 的实现)。游戏服务器将 cache 通行证密码,在玩家登陆时自动重新验证。如果通行证密码被修改,玩家必须重新在游戏中核对通行证的身份(依旧需要正确输入游戏密码),才能再次进入游戏。

  5. 游戏中每次登陆都通告用户最近几次的登陆时间/IP列表。以及暴力猜测密码企图的尝试记录。强制用户在密码不安全的时候修改密码。

这样的改进方案重点在于,不在已有的 URS 系统上做任何修改,也不必增加新的接口;但游戏用户采用独立的认证系统。游戏认证系统必须和 URS 系统同时工作,用户才能够登陆游戏。但是 URS 系统验证不由最终用户主动操作。最用户体验方面,不增加任何用户负担。

对于游戏系统,两套系统相互牵制,用时间做为中间缓冲。

游戏帐户本质上依旧归属 URS 帐户,帐户冲值记费等依旧划归 URS 管辖。

Comments

分析的很有见地。。。
没用的姐姐,很多时候木马并不可怕,可怕的就是人性本身的弱点,很多时候并不是木马写的好,或着我们的蠕虫免杀做的多少,或者扩散端多秒,而是我们使用的忽略一中规则就是疏忽,呵呵,比方很多人看到U盘就往机器上插,看到ZIP就解压,呵呵,问题就产生了
“对于游戏系统,两套系统相互牵制,用时间做为中间缓冲。” PS:不管多少套系统牵制,始终没有把这些“关键性输入”脱离电脑之外去操作,都避免不了存在安全隐患的,因为电脑本身就是感染源。我觉得“相互牵制”应该立足在电脑之外。呵呵
工行那个,没办法的办法啊。
交换机上面要设置静态 ARP 啊
to楼下:这样对用户体验大有影响啊
工商银行卡网上交易,每次交易的时候可以发个1次性密码到手机,操作完就失效,觉得这个比较安全啊。
感觉此篇云风有些欲言又止,是不是涉及到一些机密了?呵呵

Post a comment

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