你用过网易的将军令嘛?它底层实现账号保护的原理相当简单粗暴

不知道大家见没见过这个设备,不大,大概是一个打火机的大小。

这玩意儿在当年那个年代,可谓是保护账号安全的一大神器,当初玩儿梦幻西游、大话西游等等游戏的人几乎是人手一个。

当然,那个年代盗号也确实猖獗~

将军令硬件

将军令这个硬件本身是不联网的,而是通过加密算法和服务端同步计算实现的校验。

设备本身出场固化在主板上一颗加密芯片,这上面有一个种子密钥。

其次里面有一个高精度的 RTC 实时时钟,以纽扣电池供电,每 60s 刷新一次。

另外就是一个数显屏幕,显示 6 位动态口令。

实现原理

公式简化:动态口令 = HMAC-SHA1(共享密钥 K,时间计数器 T) → 截取 6 位数字

硬件设备本身带一个加密算法,当将军令设备绑定你的账号以后,设备唯一密钥 K 同步存入网易服务器账号数据库。

现在开始登陆,将军令和服务同时开始计算动态口令,因为使用的算法和当前时间都绝对一致,所以计算出来的结果也是相同的。

这时候只需要判断你输入的动态口令和服务端生成的是否一致即可。

底层实现

1. 计算时间计数器 T

取当前 Unix 时间戳,除以 60 秒向下取整,得到 T;同一分钟内 T 固定,所以 60 秒密码不变。

2. HMAC-SHA1 哈希运算

用设备内置密钥 K + 计数器 T 做加密哈希,输出 20 字节固定哈希串。

3. 数字截断转换

按 TOTP 标准规则偏移截取 4 字节,转为十进制,只保留最后 6 位,就是屏幕显示的动态密码。

虽然是高精度时钟,但是为了防止可能存在的误差。

这里服务器不只校验当前 T,同时校验前后各 1 个时间窗口(上一分钟、下一分钟)的密码,所以轻微时差不会直接失效。

几乎绝对安全

1. 一次性短时有效

口令仅 60 秒有效,且单次登录使用后服务器会标记作废。

就算木马截图窃取,窗口过期立刻失效,无法复用。

2. 密钥物理隔离防窃取

密钥烧录在硬件安全芯片内,无法通过拆解、读取内存导出。

盗号木马只能偷电脑里的静态密码,拿不到密钥,算不出动态码。

3. 三重登录校验

登录必须同时满足:账号正确 + 静态密码正确 + 实时动态口令正确。

哪怕账号密码全盘泄露,没有实体令牌依然无法登录游戏,完美对抗当时主流的盗号木马、键盘记录器等。

当然,这玩意也没办法保证 100% 的绝对安全。

动态口令本身不绑定网站域名,一串 6 位数字可以在任何网易登录页面通用。

骗子做高仿钓鱼网站,诱导你输入账号、静态密码、将军令 6 位动态码;攻击者同步把三组信息转发到真正网易服务器,60 秒窗口内直接登录盗号。

或者是破解安全芯片,以及攻击网易服务器直接拖库。(这几乎是不可能的)

其实当初将军令被盗号绝大多数都是主动泄露动态口令导致的。

总结

将军令这个设备虽然不能保证绝对的安全,但是在 2000 年 ~ 2015 年那个网游盗号泛滥时代,通过这么一个小小的设备大幅度提高了盗号成本。

彻底解决仅泄露账号密码就能盗号的传统木马盗号,这种离线生成密码的方式,网络抓包也无法逆向算出密钥。

穷举 6 位数字概率极低,服务器错误密码锁定防暴力破解。

现在的手机将军令基本上沿用了这一方案,至今仍然保护着各位的账号安全。

相关推荐
yi01114 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
灯澜忆梦16 小时前
【面向对象编程C++】| 基础语法
java·c++·算法
小蒋观天下17 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
Evand J17 小时前
【电机滤波例程5】渐消因子自适应扩展卡尔曼滤波(EKF),MATLAB。PMSM负载突变下的状态估计。附下载链接
算法·matlab
H.莓飛17 小时前
【数据结构】二叉树_OJ题
linux·开发语言·数据结构·算法
好想像大佬一样能够ak所有18 小时前
Leetcode35.搜索插入位置
数据结构·算法·leetcode
aqiu11111118 小时前
【C++算法打怪专栏】LeetCode 165. 比较版本号(双指针与字符串流法)
c++·算法·leetcode
黄金龙PLUS18 小时前
如何基于置换算法来设计对称加密算法
算法·网络安全·密码学·哈希算法·同态加密
不会就选b18 小时前
算法日常・每日刷题--<动态规划>14
算法
赛博守夜人18 小时前
跨境业务与出海合规之九:海外买量投放与营销虚假流量(Ad Fraud):跨国机房群控与归因欺诈识别算法
算法·安全