魔兽世界将军令工作原理猜想.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
魔兽世界将军令工作原理猜想

魔兽世界将军令工作原理猜想作者:吴沛儒日期:2011年12月2日 摘要:根据魔兽世界将军令工作模式猜测其工作原理。关键词:将军令,密码学,账户安全。前言:魔兽世界作为一款风靡全球的大型在线网络竞技游戏为人们所熟知,每天有数百万的玩家登录魔兽世界服务器,在线上或练级或交易。游戏时间,金币,装备,人物等级等等所有的东西都被一个帐号密码守护着似乎风险太大。为了让玩家们的账户更加安全,网易游戏公司推出了一个神奇的小守卫:将军令。正文:“将军令”是广州网易互动娱乐有限公司自主研发的、具有完全知识产权的高科技身份认证产品,专门用来保护网易通行证(游戏账号)、直销商账号的密码。“将军令”每隔一分钟产生一个全新的、不能重复使用的6位密码,用来保护游戏账号、账号的密码,俗称“动态密码”。使用“将军令”后,网易以“账号+密码+动态密码”的形式对游戏ID进行保护,大大提高了账号的安全性。“将军令”的实际工作流程很简单:即用户端(“将军令”本身)产生一个动态密码,然后将这个动态密码和服务器端进行匹配。若匹配成功,玩家就能成功登录帐号。由于用户端在出厂之后,与服务器端就再没有物理上直接的联系,因此,如何与服务器端保持逻辑上的同步是最大的问题,即如何保证用户端产生的动态密码与服务器端验证的动态密码是一个密码。很多人对此提出过自己的设想,而现在,这就是笔者将要讨论的,将军令工作原理的问题。为了更详细的了解将军令的工作原理,我拆掉一个将军令。由此知道了将军令的构造很其实简单:一块电池,一块芯片,一块显示屏,和一小块晶振时钟。晶振的作用大家应该知道,跟手表的作用差不多,是用来计时的。芯片用来处理数据信息。电池用以供电,同时显示屏用以显示运算结果,也就是我们看到的6位动态密码。经简单测试后,基本可以肯定将军令不向外发出信号,也不接受外来信号。也就是说,从它被生产好出场以后,不与服务器间产生通信。所以不可能是由服务器发送动态密码到将军令上,再由将军令显示出来。另外我注意到,将军令是一次性用品,它的使用期限为21个月,电用完之后不可以换一块电池继续使用。由此我猜测,制造商是为了保证客户端时间与服务器端时间同步才有此规定。同时,我们可以排除将军令中的芯片是用来存放有效动态密码存储设备,因为如果芯片是存储设备的话,完全没有必要规定电用完了就不能再用了。而且我们知道,不同的将军令在同一时间按出的动态密码是不同的,而且每一个出场的将军令上都有一个唯一标识的SN编号。这是也是它唯一被服务器记录到的信息。所以我们可以得出如下条件:1. 每分钟产生一个6位密码?2·不发射信号,也就是说它离场之后不与服务器联系。?3·唯一被记录的是SN号。?4·不同的将军令同时按出的动态密码是不同的。??5·不允许换电池,应该是为了保证与服务器时间同步。 ? ???推理得:?以时间(或以时间经过算法运算后得出的结果)为明文,SN号(或以SN号经过算法运算后得出的结果)为密钥,经过一个统一的算法后得出的密文,就是将军令显示出的那6个数字。?也就是说 ? 动态密码=函数(时间,SN号,其他)?其中,“其他”可能有也可能没有,也许还与绑定帐号的信息有关,这就不得而知了。?而那个等式中的函数可能是各种不同的加密算法,DES,RSA,IDEA,DSA等等。这些都是最近用的比较多的算法。?密码学的一个原则是“一切秘密寓于密钥之中”。算法可以公开。当加密完成后,可以将密文通过不安全渠道送给收信人,只有拥有解密密钥的收信人可以对密文进行解密即反变换得到明文,密钥的传递必须通过安全渠道。而SN码在正常情况下只有将军令的持有者才能知道。那么对于SN号是密钥,或者以SN号经过一个运算后作为密钥的猜想也是较可靠的。照这样说的话,将军令以时间为明文计算出密文(动态密码),那么至此我们还没有解决客户端(将军令)与服务端时间同步问题。我们不妨假设服务器端固定T0,引入因子△t,服务器端植入△t,△t为用户端时钟同服务器端时钟之差,即△t=T2-T1。这样,用户端(将军令)端的密码M=rand(T2X),服务器端密码M=rand[(T1+△t)X],这样,对于成千上万的用户端(将军令)在服务器端只要记录了△t,就可以了。这个△t,可以在将军令生产的时候植入服务器端予以记录。同步的问题可以这样解决,服务器端动态的调整△t。在开通将军令的时候,在提交序列号和动态密码的时候,服务器端计算M=rand[(T1+△t)X],并且在△t的基础上,计算出{...,△t-5×60,△t-4×60, △t-3×60, △t-2×60, △t-1×60, △t, △t+1×60, △t+2×60, △t+3×60, △t+4×60, △t+5×60,...}这个数列。具体数列长度根据需要来定,由于是随机6位数的函数,在这个数列中是不会出现重复的M的

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档