关于“将军令”工作原理与算法思想的研究.docVIP

关于“将军令”工作原理与算法思想的研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于“将军令”工作原理与算法思想的研究.doc

  关于“将军令”工作原理与算法思想的研究   摘要:“将军令”是每隔1min产生一个全新的、不能重复使用的密码(6位),用来保护网易通行证(游戏账号)、直销商账号的密码。文章根据作者的研究,阐述了几种可行的“将军令”的工作原理与算法思想。   关键词:将军令;动态密码;原理;算法      “将军令”是广州网易互动娱乐有限公司自主研发的、具有完全知识产权的高科技身份认证产品,专门用来保护网易通行证(游戏账号)、直销商账号的密码。“将军令”是每隔1min(60s)产生一个全新的、不能重复使用的密码(6位),俗称“动态密码”。采用“将军令”后,网易以“账号+密码+动态密码”的形式对游戏ID进行保护,大大提高了账号的安全性。对于将军令的工作原理,很多人提出自己的设想,笔者也就自己的研究,进行如下阐述。 .L.编辑。   “将军令”的实际工作流程很简单:即用户端(“将军令”本身)产生一个动态密码,然后将这个动态密码和服务器端进行匹配。由于用户端在出厂之后,同服务器端就再没有物理上直接的联系,因而,如何与服务器端保持逻辑上的同步是最大的问题,即如何保证用户端产生的动态密码与服务器端验证的动态密码是一个密码。      1 第一种设想   在“将军令”内置微型芯片,里面保存大量“以6位数字为一组”的预定数组(6位数字动态码),每60s自动读取下一组新数组,数组的排列顺序无 规律 并无一相同,但全部已经预先存放好,利用循环模式,当读完最后一组数后便从头再开始读取第一组数组。主机服务器端也同样预先存放好同样的数组列,启用“将军令”时以序列号来识别该取用哪一条数组列。这种方法是一种最易实现的方法,但这也是一种最易被破解的方法,安全性较低。      2 第二种设想      这种设想是利用算法来实现动态密码的产生。   算法思想1:用户端在出厂时就植入一个算法,这个算法同样会被保存在服务器端。这个算法不一定要很复杂,比如f(x)=aX+b,X最好是一些独特的,各个“将军令”都不重复的数字,比如“将军令”的序列号等。a可以是一个固定的数字,而b可以是一个动态变化的数字,如第1次产生动态密码,b就为“1”;第2次产生动态密码,b就为“2”……   算法思想2:用户端产生的动态密码是一个与时间有关的动态密码,即密码M与时间T之间存在着关系:M=rand(TX),rand()为随机函数,TX为随机函数的种子,x为另一因素,比如“将军令”的序列号等。   这里,x是一个服务器端已知的变量,出厂时就已经设定了,最大的可能是“将军令”的序列号所对应的一个因子,在生产“将军令”写入初始数据的时候,同时被植入用户端和服务器端,由于每个“将军令”的序列号是唯一的,因而,拿不到“将军令”就无法知道x,也就无法知道动态密码M。   显然,只有因子X是不够的,M=rand(x)是可以产生一个密码M,但这个密码M显然无法动态变化,也就失去了意义,因而时间因子T也同样不可缺少。但是,引入时间因子T之后,又将产生一个问题:就是用户端和服务器端时间同步的问题。   时间同步的同题,笔者认为可以这样解决:服务器端固定T 0 ,引入因子△t,服务器端植入△t,△t为用户端时钟同服务器端时钟之差,即△t=T 3 -T 1 这样,用户端的密码M=rand(T 3 X),服务器端密码M=rand((T 1 +△t)X)。对于成千上万的用户端在服务器端只要记录了△t就可以了。这个△t,可以在“将军令”生产的时候植入服务器端予以记录。开通“将军令”后,在提交序列号和动态密码的时候,服务器端动态的调整△t,服务器端 计算 M=rand[(T 2 +△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的。这样,就可以计算出△t附近前后相差n分钟所产生的密码M,只需要比对提交的动态密码与数列中的哪个值对应,就可以动态的调整△t。假设,动态密码与△t-2*60对应的密码相同,就可以调整△t=△t-2*60。这样,解决了用户端从出厂到开通使用所产生的时间误差。这个n,根据实际需要制定。   在使用“将军令”的时候,采用同样的方法可以同步。在确定了At后,服务器端在每次验证的时候,只要算出M1=rand[(TI+△t-y)x],M=rand[(TI+At)X],M2=rand[(T)+△t+y)x],就可以算出At附近y秒的时间的密码M,就是允许“将军令”有y秒的时间误差。利用上面的算法来实现动态密码的产生显然要比

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档