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

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

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

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

将军令硬件

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

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

其次里面有一个高精度的 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 位数字概率极低,服务器错误密码锁定防暴力破解。

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

相关推荐
Scott9999HH5 小时前
告别流量波动玄学!从法拉第电磁定律到底层 C/C++ 流量累积算法,深度解密工业级电磁流量计选型与开发
c语言·c++·算法
香辣牛肉饭6 小时前
【算法】动态规划 最长公共子序列(LCS)
经验分享·笔记·算法·动态规划
.徐十三.7 小时前
一篇文章看到最短路径——Dijkstra算法
算法
科学实验家8 小时前
二叉树的几道题
算法
abcy0712139 小时前
flink state实例
大数据·算法·flink
qizayaoshuap9 小时前
# [特殊字符] 密码生成器 — 鸿蒙ArkTS安全算法与密码强度评估系统
java·算法·安全·华为·harmonyos
良木林9 小时前
滑动窗口 - LeetCode hot 100
javascript·算法·leetcode·双指针·滑动窗口
2401_841495649 小时前
【数据结构】B*树
数据结构·c++·b树·算法·删除·插入·三分分裂