背景

前段时间回顾了一下小时候玩的梦幻西游,忽然想到了小时候玩游戏时的一个问题:为什么在我手中的将军令可以用于在线的网络游戏的登录验证?是因为十几块钱的玩意还能发送信号不成?带着这个疑问,我去研究了一下。

实体/电子密保卡

梦幻西游需要充值点卡,开始的时候只是单纯的去买点卡,直到有一天,发现点卡背后多出了一个密保卡,介绍里是说密保卡可以用于登录游戏或其他安全操作时的动态密码验证。

这种验证方式比较简单,就是每个序列号都随机生成一个矩阵,用户通过序列号绑定到自己邮箱账户后,登录时界面会随机出现三个坐标,将该坐标的值填入输入框就可以了。
实体密保卡这种验证方式虽说可以一定程度上的防止被盗号的风险,但毕竟实体密保卡矩阵就这么大,而且不会改变,如果被人多记录几次,实际就可以在复制出一份一样的密保卡了。

将军令

后来网易推出了将军令,其实就是简易版的银行U盾,和账号绑定上之后,每次登录游戏时需要输入将军令上的6位动态密码,由于将军令的密码生成不会通过网络传输,所以即使账号密码被盗,也登录不上游戏。

将军令以帐号+密码+动态密码的形式对游戏id进行保护众所周知,将军令每隔一分钟变化一次6位数密码,俗称动态密码。
由于用户端(将军令)在出厂之后,同服务器端就再没有物理上直接的联系,因而,如何与服务器端保持逻辑上的同步是最大的问题,即如何保证用户端产生的动态密码与服务器端验证的动态密码是一个密码?
猜测:用户端产生的动态密码是一个与时间有关的动态密码,即密码M与时间T之间存在着关系:M=rand(TX),rand()为随机函数,TX为随机函数的种子,X为另一因素,比如将军令的序列号等。
(1)X是一个服务器端已知的变量,出厂时就已经设定了,最大的可能是将军令的序列号、服务号或者序列号服务号所对应的一个因子,在生产将军令写入初始数据的时候,同时植入用户端和服务器端,由于每个将军令的序列号和服务号唯一,因而,拿不到将军令就无法知道X,也就无法知道动态密码M。
显然,只有因子X是不够的,M=rand(X),是产生了一个密码M,但显然无法动态变化,失去了意义。因而因子T不可缺少。

(2)分析下,植入T之后,服务器端的T1受服务器端时钟影响,用户端T2受用户端时钟影响,问题出现了,如何保证在运行一段时间以后,T1=T2?一个方法是采用高精密的材料,保证在3年的时间里T1=T2,明显成本巨大,以市场上30元左右的电子手表为例,要保证成千上万个电子手表3年内的误差不超过1分钟,可以说是天方夜谈。

(3)假设:服务器端固定T0,引入因子△t,服务器端植入△t,△t为用户端时钟同服务器端时钟之差,即△t=T2-T1。这样,用户端(将军令)端的密码M=rand(T2X),服务器端密码M=rand[(T1+△t)X],这样,对于成千上万的用户端(将军令)在服务器端只要记录了△t,就可以了。这个△t,可以在将军令生产的时候植入服务器端予以记录。

(4)同步的问题可以这样解决,服务器端动态的调整△t。在开通将军令的时候,在提交序列号和动态密码的时候,服务器端计算M=rand[(T1+△t)X],并且在△t的基础上,计算出…,△t-560,△t-460, △t-360, △t-260, △t-160, △t, △t+160, △t+260, △t+360, △t+460, △t+560,…这个数列。具体数列长度根据需要来定,由于是随机6位数的函数,在这个数列中是不会出现重复的M的。这样,就可以计算出△t附近前后相差n分钟所产生的密码M,只需要比对提交的动态密码与数列中的哪个值对应,就可以动态的调整△t。假设,动态密码与△t-260对应的密码相同,就可以调整△t=△t-260。这样,解决了用户端(将军令)从出厂到开通使用所产生的时间误差。这个n,根据实际需要制定,如果出厂1个月就差几个小时的话,那将军令的质量就忒差了。

(6)在确定了△t后,服务器端在每次验证的时候,只要算出M1=rand[(T1+△t-y)X],M=rand[(T1+△t)X],M2=rand[(T1+△t+y)X],就可以算出△t附近y秒的时间的密码M,就是允许将军令有y秒的时间误差。在具体使用中,有人已经测试证明将军令是有时间误差的。如果服务器端的M与将军令的M不一样,而是服务器端的M1与将军令的M一样,就可以实时的进行动态调整△t=△t-y了,实现将军令同服务器端时间上的同步。

从实体密保卡到动态口令令牌相关推荐

  1. 银行动态口令令牌工作原理简析

    RSA SecurID SID700是当前市面上流行使用的动态口令令牌. 种子文件 用户从银行获取的动态口令令牌卡,其内部存储着一份与银行服务器完全一致的种子文件(即图中钥匙所代表的seed),种子文 ...

  2. 银行的动态口令令牌是什么原理

    有网银的少年们一般都收到过银行给的这样一个令牌,俗称动态口令,在支付的时候输入自己的密码和动态口令上的动态密码,就能完成验证,银行就相信你不是坏人了,今天我们来简述一下这个动态口令令牌是个什么原理. ...

  3. C#毕业设计——基于C#+asp.net+SQL Server的动态口令认证网上选课系统设计与实现(毕业论文+程序源码)——网上选课系统

    基于C#+asp.net+SQL Server的动态口令认证网上选课系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+SQL Server的动态口令认证网上选课系统 ...

  4. ARM7 智能卡的动态口令终端研究与实现

    1 引言 目前动态口令主要有基于事件.时间和挑战码三种实现方式[1], 现有的动态口令终端主要有刮刮卡.令牌.智能卡与卡片阅读机相结合以及基于SIM 卡等.刮刮卡是一种塑料或者纸质卡片,除卡号外,每张 ...

  5. 模拟银行动态口令生成

    一.OTP算法 如今动态口令算法采用一次性口令算法,即 O T P OTP OTP(One-Time Password Algorithm), 银行使用的动态口令令牌使用的算法是 O T P OTP ...

  6. php 一次性动态口令,网站商务通开通动态口令功能

    网站商务通开通动态口令功能 过去一段时间发生过商务通数据被盗事件同时由于某些客户对资料保密不够好导致账号外泄,为此我们前面推出了商务通绑定MAC地址和商务通绑定IP地址等功能,这样即便您的账号外泄商务 ...

  7. 宁盾动态口令技术案例 - 运用动态令牌dKey T6加强ERP登录安全

    一.方案背景 ERP 系统就像企业的 " 黑匣子 " ,内部涵盖了应用企业最关键和最敏感的信息资源. ERP 的特点是大而全,使用者可以从中寻找出一个企业的组织架构.管理理念.客户 ...

  8. mysql 动态口令_RSA令牌动态口令生成原理

    RSA是一种国际上通用的非对称算法,主要是提供双因素认证功能.即把密码拆分成两部分,一部分是用户设置的固定密码,另外一部分来自每个用户发放的可显示数字的硬件.该硬件基于时间.设备号和种子数计算出一个动 ...

  9. 动态口令与数字证书简介

    1.动态口令 动态口令,又叫动态令牌.动态密码.20 世纪80 年代初,美国科学家LeslieLamport 针对静态口令认证的缺陷,首次提出了利用散列函数产生动态口令(OTP:One Time Pa ...

最新文章

  1. 成长必经的低谷已经来了么?
  2. python 迷宫边界,用python解决迷宫
  3. 以智能数据架构,挖掘增长金矿 1
  4. SQL Server 2005 重装时报:对性能监视器计数器注册表值执行系统配置检查失败
  5. python爬虫登陆网页版腾讯课堂
  6. Java持久性API(JPA)第7讲——实体生命周期及生命周期回调方法
  7. python多线程编程(5): 条件变量同步
  8. VS2010 C++下编译调试MongoDB源码 r2.2.2
  9. css动画执行保持forwards,css3动画如何在动作结束时保持该状态不变
  10. linux-文件的时间-四种时间类型
  11. PHP 解决session 死锁
  12. scratch 控制、侦测、数据和数字逻辑模块  教案
  13. MATLAB符号运算小技巧
  14. python3网络爬虫(堆糖网)
  15. ubuntu16.04/20.04 xfce4以及windows下面使用护眼软件redshift
  16. Linux运维职业困惑?给你史上最全互联网Linux工作规划!
  17. 为什么不吃米和面之后,体重掉得比较快?答案或许不是你想的那样
  18. git gc error: failed to run repack message
  19. Ubuntu下与openvpx相关的目录和文件
  20. Python3,掌握这20个小技巧,小菜鸡瞬间变成老码农~

热门文章

  1. 基于Transformers库的BERT模型:一个文本情感分类的实例解析
  2. 名词解释atm网络_电信技术名词解释:什么是ATM技术
  3. iphone之Info.plist的属性
  4. 浅谈快速开发平台:突破系统开发边界,赋能企业数字化!
  5. 办公软件使用学习笔记:excel第四节。excel美化表格(智能表格,美化套路)。图表数据动态显示,迷你图、条件格式、动态图表、
  6. 计算机考研代码854,哈工大计算机考研考纲854计算机基础
  7. 解决导出excel导出名字乱码
  8. java中几种常用的对象类型(po,vo,bo,dto)
  9. Mac系统中移动硬盘热拔(强制退出)后,在插上不显示移动硬盘的问题和解决办法
  10. 学习3dmax(三)