面向哲思的编程与架构
笔记哲思阅读动态搜索RSS 订阅
切换到深色模式
搜索
RSS 订阅
切换到深色模式
© 2026 Vic Chen. All rights reserved.CC BY-NC-ND 4.0
← 笔记
金融机构的双因素认证(三):硬件口令仍是主力

金融机构的双因素认证(三):硬件口令仍是主力

2026年7月21日3,0759分钟

硬件 OTP 令牌和口令卡,在互联网圈子里常被当成「过时」的方案,但金融机构的核心系统里它至今仍是主力。原因不是保守,而是它的密钥生成和存储方式完全不依赖任何外部通道。这正是上一篇短信验证码最大的短板。这一篇讲清楚 HOTP/TOTP 的原理、种子分发这个真正的运维难点,以及为什么「过时论」站不住脚。


目录
  • TL;DR
  • 1. 原理:HOTP 与 TOTP
  • 2. 口令卡:一种更古老、更朴素的变体
  • 3. 种子分发:真正的运维难点
  • 4. 两种场景对比:种子分发渠道的差异
  • 5. 反驳「硬件 Token 过时论」
  • 6. 强度尺定位
  • 7. 小结
目录
  • TL;DR
  • 1. 原理:HOTP 与 TOTP
  • 2. 口令卡:一种更古老、更朴素的变体
  • 3. 种子分发:真正的运维难点
  • 4. 两种场景对比:种子分发渠道的差异
  • 5. 反驳「硬件 Token 过时论」
  • 6. 强度尺定位
  • 7. 小结
目录
  1. TL;DR
  2. 1. 原理:HOTP 与 TOTP
  3. 2. 口令卡:一种更古老、更朴素的变体
  4. 3. 种子分发:真正的运维难点
  5. 4. 两种场景对比:种子分发渠道的差异
  6. 5. 反驳「硬件 Token 过时论」
  7. 6. 强度尺定位
  8. 7. 小结
安全身份认证金融科技
相关文章
  • 01
    金融机构的双因素认证(二):仍被质疑的短信方案2026/07
  • 02
    金融机构的双因素认证(一):一把强度尺2026/07
  • 03
    高频交易系统核心构建技术的探索与实践(一)2023/09
← 上一篇金融机构的双因素认证(二):仍被质疑的短信方案

评论

© 2026 Vic Chen · 面向哲思的编程与架构CC BY-NC-ND 4.0

TL;DR

这是《金融机构的双因素认证》系列的第三篇。上一篇讲了短信验证码的核心问题:认证强度的上限被一个机构自己完全无法控制的外部流程(电信运营商的核实环节)钳制住了。

硬件动态口令令牌(Token)和口令卡,解决的正是这个问题:密钥从生成到使用的整个过程,都不经过任何外部通道。这一篇讲清楚它的原理(HOTP/TOTP)、种子分发这个真正的运维难点,再解释为什么「硬件 Token 过时论」在金融场景里站不住脚。


1. 原理:HOTP 与 TOTP

硬件动态口令的核心思想很朴素:服务器和令牌各拿着同一份共享密钥(种子,seed),双方各自独立算出同一个动态数字,只要两边算出来的一致,就证明拿着令牌的人确实持有那份密钥。

HOTP(Chen 注:HOTP(HMAC-based One-Time Password)由 IETF RFC 4226 定义,2005 年发布。核心是用 HMAC(Hash-based Message Authentication Code,基于哈希的消息认证码)对一个计数器值做哈希运算,取哈希结果的一部分截断成人能读的数字串。) 用一个计数器(counter)作为变化的输入:

HOTP=Truncate(HMAC-SHA1(K,C))\text{HOTP} = \text{Truncate}\big(\text{HMAC-SHA1}(K, C)\big)HOTP=Truncate(HMAC-SHA1(K,C))

KKK 是共享密钥,CCC 是计数器值。令牌每生成一次动态码,计数器加 1;服务器每验证一次成功,计数器也跟着加 1。因为哈希函数的性质,CCC 变化一点,输出的哈希值就完全不同,从哈希结果反推出 KKK 在计算上不可行。

TOTP(Chen 注:TOTP(Time-based One-Time Password)由 IETF RFC 6238 定义,2011 年发布,是 HOTP 的变体。) 把计数器换成了时间:

TOTP=HOTP(K,⌊T−T0Tx⌋)\text{TOTP} = \text{HOTP}\Big(K, \Big\lfloor \frac{T - T_0}{T_x} \Big\rfloor\Big)TOTP=HOTP(K,⌊Tx​T−T

TTT 是当前 Unix 时间戳,T0T_0T0​ 通常是 0,TxT_xTx​ 是时间窗口长度(常见 30 秒或 60 秒)。令牌不需要和服务器保持通信来同步计数器,只要双方的时钟大致同步,落在同一个时间窗口内,就能算出同一个动态码。这也是为什么市面上大多数硬件 Token 和手机 App(下一篇讲)用的都是 TOTP,而不是 HOTP,前者不需要额外的同步机制(Chen 注:HOTP 的计数器只在实际发生一次动作时才前进,令牌侧和服务器侧各自独立递增,一旦某次没有完整走完验证流程(比如用户按了令牌但没提交),两边就会错位,且不会自动纠正。为此服务器通常要维护一个向前查看窗口(look-ahead window),多试几个后续计数器值来重新对齐。TOTP 用时钟代替计数器,时钟本身连续流逝、双方天然同步,不需要这套专门的重同步机制。)。

图1:TOTP 的双端独立计算
ℹ
HOTP/TOTP 的安全性完全建立在共享密钥 KKK 的保密性上。只要 KKK 只有令牌和服务器两方知道,攻击者就无法伪造动态码。这和短信验证码的信任模型形成鲜明对比:短信验证码信任的是「验证码只能到达那个手机号」,而 HOTP/TOTP 信任的是「只有令牌和服务器知道 KKK」,前者依赖外部电信网络,后者只依赖密钥本身没有泄露。

2. 口令卡:一种更古老、更朴素的变体

口令卡(也叫矩阵卡、挑战应答卡)是硬件动态口令的一种更早期形式,原理甚至不需要密码学哈希函数:卡片上印着一个坐标矩阵,每个坐标对应一个数字。认证时,服务器随机给出几个坐标(如「A3、C7、E2」),用户在卡片上查出对应位置的数字并输入。

图2:口令卡的挑战应答流程

口令卡本质上是一份预先分发的一次性密码本(类似于一次性密码簿,one-time pad 思路的简化版),没有密钥推导算法,安全性完全依赖于卡片本身不被复制、不被拍照。它比 HOTP/TOTP 更朴素,但胜在实现和运维成本极低,不需要硬件芯片、不需要电池,一张塑料卡或纸卡就能用。国内一些银行早期的网银盾之外,也有用口令卡作为备用认证手段的先例。它的弱点也很直接:卡片一旦被拍照或复印,安全性荡然无存,而且坐标矩阵的组合数有限,理论上存在被逐步收集拼出全卡内容的风险(尤其挑战坐标重复出现时)。


3. 种子分发:真正的运维难点

HOTP/TOTP 的密码学部分并不复杂,真正的挑战在种子(共享密钥)怎么从生产环节安全地送到令牌和服务器两端,且中途不被任何第三方看到。

典型流程:

图3:硬件令牌的种子分发链路

这条链路上有几个关键的安全要求:

  • 厂商生产环节:种子必须在令牌生产时一次性写入硬件芯片内部,且不可被外部读出;厂商同时把种子的副本(通常加密)提供给采购方
  • 传输环节:种子文件在从厂商到机构的传输过程中必须加密,常见做法是厂商用机构提供的公钥加密种子文件,机构收到后用私钥解密导入
  • 导入环节:机构侧的种子导入通常要求进到 HSM(Chen 注:HSM(Hardware Security Module,硬件安全模块)是专用的加密硬件设备,密钥在其内部生成、存储和使用,且设计上不允许以明文形式导出。即使运维人员或应用程序拿到访问权限,也只能调用 HSM 内部的加密运算(如签名、解密),拿不到密钥本身。这是它和普通密钥库最大的区别。)(第 5 篇细讲)或专用密钥库,不能以明文形式落在普通数据库或文件系统里
  • 发放环节:令牌本身发给用户时,走的是线下或机构内网渠道,不经过任何公网传输
⚠
种子分发链路上的任何一个环节出问题,都可能导致整批令牌的安全性归零。历史上曾出现过厂商侧种子数据库被入侵、导致大量已发放令牌的安全性受影响的真实事件(典型案例是 RSA SecurID 在 2011 年遭遇的供应链攻击(Chen 注:2011 年 3 月,攻击者通过钓鱼邮件入侵 RSA(EMC 旗下)内部网络,窃取了 SecurID 令牌的种子数据库。此后洛克希德·马丁等使用 SecurID 的客户遭到攻击者利用克隆令牌尝试的入侵,RSA 最终为超过 3 万家客户更换了令牌。详见 [Wired 的完整报道](https://www.wired.com/story/the-full-story-of-the-stunning-rsa-hack-can-finally-be-told/) 和 [SecureWorks 的技术分析](https://www.secureworks.com/research/rsacompromise)。))。这提醒我们:硬件 Token 的安全性不只取决于算法本身,也取决于种子分发这条供应链的每一环是否可信。

4. 两种场景对比:种子分发渠道的差异

  • 内部落地系统:机构自己是最终使用方,种子分发链路完全在机构自己的控制范围内。常见做法是机构直接向令牌厂商采购,种子通过加密传输直接导入机构自己的认证服务器,令牌通过内部行政渠道(人事部门、IT部门线下发放)交到员工手上。整条链路除了厂商生产环节,其余都在机构自己的信任边界内,这与「内部落地系统信任边界完全在机构自己手里」的场景假设高度吻合。

  • 专线托管端系统:情况更复杂,因为使用令牌的一方(机构)和运行认证服务的一方(托管方)是不同的信任主体。常见模式是托管方统一采购和管理令牌,机构的用户使用的是托管方发放的令牌,种子分发链路的信任完全建立在托管方身上,机构自己无法验证种子分发环节的安全性,只能通过协议约束和审计要求(如要求托管方提供厂商资质证明、种子分发流程的合规审计报告)来管理这层风险。

✓
这个差异呼应第 1 篇的场景框架:专线托管端系统的合规责任由机构和托管方共担,种子分发正是这种「共担」的一个具体体现。机构自己做不了技术验证,只能靠协议和审计。

5. 反驳「硬件 Token 过时论」

互联网行业这些年确实在远离硬件 Token,转向手机 App(下一篇的主题)和 Passkey,理由是硬件设备携带不便、丢失后补发周期长、用户体验差。这些理由在面向海量个人用户的互联网场景下确实成立。

但金融机构的内部落地系统和专线托管端系统,前提假设完全不同:

  • 携带不便不是问题:员工每天在固定的工位使用固定的终端,一枚硬件令牌和门禁卡、工牌一样是日常携带物品,不存在「用户嫌麻烦就流失」的压力
  • 丢失补发周期不是问题:内部系统的用户规模是可控的(几百到几千人级别),补发流程可以走机构自己的内部行政渠道,不需要面向海量用户设计自助补发系统
  • 不依赖任何用户个人设备,恰恰是它的核心优势:硬件令牌的种子只存在于令牌硬件本身和机构的认证服务器之间,不经过用户的手机、不经过任何用户可能已经被入侵的个人设备,这正是下一篇要讲的手机动态口令面临的核心风险
ℹ
「过时」是一个针对特定场景(海量个人用户、体验优先)的判断,不是普适结论。评估一个方案是否过时,要看它是否还匹配当前场景的核心假设,而不是看它在别的场景里是否被替代。

6. 强度尺定位

按第 1 篇的三级尺,硬件 OTP 令牌属于 L2(标准级):真正的双因素(密码+持有令牌),因素本身(共享密钥+哈希算法)具备一定抗攻击能力,弱点集中在种子分发这个供应链环节,而不是算法本身或者传输通道。

口令卡的强度略低于 HOTP/TOTP 令牌,它没有密码学哈希函数的保护,纯粹依赖卡片本身的物理保密性,更接近 L1 和 L2 之间的过渡形态,更适合作为备用手段而非主力认证方式。


7. 小结

硬件动态口令令牌之所以在金融行业至今仍是主力,根本原因是它的信任链条不经过任何外部通道,不依赖电信运营商(对比上一篇的短信验证码),也不依赖用户的个人设备(对比下一篇的手机 App)。真正的安全风险集中在种子分发这条供应链上,而这条链路,内部落地系统能完全掌控,专线托管端系统则需要靠协议和审计去管理。

下一篇转向动态口令的软件化版本:手机 App。原理和 HOTP/TOTP 完全一样,但密钥的存储介质从专用硬件芯片变成了通用智能手机。这个介质的变化,会带来多大的强度损失?

0
​
​
⌋
)