动态口令从专用硬件迁移到手机 App,算法完全不变,仍是 HOTP/TOTP,但密钥的存储介质从专用安全芯片变成了一台通用智能手机。这一篇量化这次介质迁移到底换来了多大的攻击面,以及为什么金融机构的两类场景对这次迁移的态度并不一样。
这是《金融机构的双因素认证》系列的第四篇。上一篇讲了硬件 OTP 令牌,强调它的核心优势是密钥全程不经过任何用户个人设备。这一篇讲的手机动态口令 App,算法和上一篇完全一样(TOTP),但打破了这条边界,密钥第一次被存到了用户的个人设备上。
这一篇量化这次介质迁移换来了什么、失去了什么,并给出两种场景下截然不同的态度:一个能容忍,另一个则基本不能。
手机动态口令 App(如各类身份验证器应用)本质上是把上一篇讲的 TOTP 算法搬到了手机上运行:同样的共享密钥 ,同样的时间窗口截断哈希运算,用户打开 App 就能看到一个每 30 秒刷新一次的六位数字。
唯一的变量是:密钥 现在存在哪里。硬件令牌把 焊死在一枚专用安全芯片里,物理上不可读出;手机 App 把 存在手机操作系统提供的存储空间里:可能是 App 私有目录下的一个文件,也可能是操作系统提供的安全存储(如 iOS 的 Keychain、Android 的 Keystore(Chen 注:iOS 的 Keychain 是系统提供的加密存储服务,用于保存密码、密钥等敏感数据;在支持 Secure Enclave 的设备上,密钥可以被限制为仅能在 Secure Enclave 内使用,不会以明文形式进入应用进程内存。Android 的 Keystore 机制类似,可将密钥的生成与加密运算委托给 TEE(Trusted Execution Environment)或更高等级的 StrongBox 硬件模块。二者都比普通的 App 私有存储多一层硬件级隔离,但具体保护强度仍取决于设备本身是否配备、是否启用了这些硬件模块。))。这个存储空间的安全边界,取决于整台手机操作系统和硬件的安全性,而不再是一枚专用芯片的物理隔离。
密钥托管介质从专用硬件变成通用手机,意味着手机上发生的任何安全问题,理论上都可能波及到这份密钥:
需要澄清一个容易被混淆的地方:手机 App 动态口令的攻击面确实比硬件令牌大,但它依然远强于第 2 篇讲的短信验证码,原因是它没有把认证强度的上限交给外部电信运营商。
即便手机被恶意软件入侵,攻击者要拿到动态口令,仍然需要攻破手机操作系统或 App 的存储隔离机制,这比补卡攻击(拿到目标的身份信息、冒充给运营商打个电话)门槛要高得多。手机 App 动态口令是一个介于短信验证码和硬件令牌之间的中间态方案。
内部落地系统:如果机构统一发放办公手机,并对这些手机做了充分的设备管理(MDM,Mobile Device Management,如强制加密、禁止安装未知来源应用、远程擦除能力),手机 App 动态口令的攻击面可以被显著收窄,接近硬件令牌的强度。但如果允许 BYOD(Chen 注:BYOD(Bring Your Own Device):员工使用个人设备接入机构系统的模式,与机构统一发放设备相对。BYOD 能降低设备采购成本、提升员工使用体验,但机构对设备的安全管控力大幅降低。设备上装了什么软件、系统版本是否及时更新、是否被 root/jailbreak,机构往往无法完全掌握。)(员工用自己的手机装认证 App),机构对设备安全状态的控制力就大幅下降,设备是否 root、是否装了恶意软件,机构完全无法验证。这个差异直接决定了手机 App 动态口令在内部落地系统里是否可行。
专线托管端系统:这类场景通常倾向继续使用硬件 Token,而不是转向手机 App。原因有两点:一是专线场景往往涉及更高价值的操作(清算、交易),风险容忍度更低;二是设备的信任主体更复杂(可能是机构自己的手机,也可能是托管方要求的专用设备),手机 App 动态口令引入的「这台手机安全吗」这个新变量,在信任链已经跨越两个主体的场景里,会让风险评估变得更复杂。托管方往往更愿意直接发放和管理硬件令牌,把这个变量从等式里去掉。
按第 1 篇的三级尺,手机 App 动态口令的定位不是固定的,而是随管控力浮动:
这与短信验证码(固定 L1,不随任何机构自身管控措施浮动,因为强度天花板在外部运营商手里)和硬件令牌(固定 L2,因为密钥从不接触用户个人设备)都不一样,手机 App 动态口令是三种方案里唯一一个「强度取决于机构管理措施是否到位」的方案。
手机动态口令把 HOTP/TOTP 这套成熟的算法,从专用硬件搬到了通用手机上,换来的是发放和使用上的便利,代价是密钥托管介质的安全边界从「专用芯片、物理隔离」变成了「整台手机操作系统的健康状态」。这个代价在内部落地系统里可以通过设备管控措施部分抵消,在专线托管端系统里则往往被判定为不值得承担的额外风险。
下一篇进入系列里密码学含量最高的一篇:数字证书与硬件密钥。私钥不出硬件的设计思路,会把这一篇反复强调的「密钥托管介质」问题,推到一个新的高度。