智能卡、USB Key、HSM……这些方案背后是同一个密码学思想:非对称密钥,且私钥永远不离开硬件。这一篇讲清楚这个思想为什么能从根本上解决前几篇反复出现的「密钥托管介质」问题,以及国密算法 SM2/SM3/SM4 在国内合规场景下扮演的角色。
这是《金融机构的双因素认证》系列的第五篇,也是系列里密码学含量最高的一篇。前几篇反复出现同一个问题:密钥托管在哪,就决定了认证强度的上限。短信验证码托管在电信运营商手里(第 2 篇),手机 App 托管在用户个人设备上(第 4 篇)。
智能卡、USB Key、HSM(Chen 注:HSM(Hardware Security Module,硬件安全模块):专用硬件设备,用于生成、存储和管理密钥,并在设备内部完成加解密、签名等密码学运算,私钥永远不会以明文形式离开设备边界。广泛用于金融、CA(证书颁发机构)、政企场景。) 这类方案,用一个更彻底的设计思路解决了这个问题:私钥从生成的那一刻起就没有离开过硬件,也永远不会离开。这一篇讲清楚这个思想背后的非对称密钥原理,以及国密算法在国内合规场景下的角色。
前几篇讲的 HOTP/TOTP 都是对称密钥方案:服务器和令牌两边持有同一份密钥 ,认证时双方各自用这份密钥算出同一个结果。对称密钥的固有问题是:这份密钥必须在某个时刻从一方传到另一方(第 3 篇讲的种子分发),传输和存储的每一环都是潜在的泄露点。
非对称密钥(Chen 注:非对称密钥(asymmetric key)密码学,也叫公钥密码学(public-key cryptography),由 Diffie、Hellman、Rivest、Shamir、Adleman 等人在 1970 年代奠基。核心是一对数学上相关但计算上不可互相推导的密钥:公钥(public key)可以公开,私钥(private key)必须保密,公钥加密的内容只能用对应私钥解密,私钥签名的内容任何人用公钥都能验证。)换了一个思路:生成一对密钥,公钥可以公开给任何人(包括认证服务器),私钥永远只有持有者一个人知道,从不传输、从不共享。认证的过程变成一次「挑战应答」:
服务器发一个随机挑战值 (防止重放攻击),持有者用私钥对这个挑战签名得到 ,服务器用公钥验证这个签名是否确实由对应的私钥生成。整个过程中,私钥本身从未被传输过,服务器验证的不是「你告诉我的秘密对不对」,而是「你能不能证明你拥有那个只有你才有的私钥」。
上面用公式描述了协议的数学结构,下面用时序图描述它在硬件上的落地形态:(Chen 注:上面的公式和下面的图,说的是同一套流程,但侧重点不同:公式强调的是每一步在数学上算了什么(签名函数 Sign 用了哪些输入、验证函数 Verify 判断的是什么等式),是协议的数学定义;图 1 强调的是这套协议落到 USB Key/智能卡这类硬件时,私钥全程不离开硬件这个物理约束,这是公式本身看不出来的,公式里 $K_{\text{priv}}, c$ 不关心 $K_{\text{priv}}$ 存在哪。)USB Key(也称 UKey)和智能卡是这套原理最常见的两种硬件形态。二者原理相同,区别主要是接口和使用方式:USB Key 插入电脑 USB 口使用,智能卡需要配合读卡器。核心设计都是:
即便攻击者物理拿到了这枚 USB Key,没有 PIN 码也无法使用它签名;即便攻击者知道 PIN 码但没有拿到硬件,也无法伪造签名,因为私钥这个「秘密」从未以任何形式存在于硬件之外。这正是它相比手机 App 动态口令(第 4 篇)的根本优势:手机 App 的密钥仍然是「存在于某处、有可能被读出」的数据,而 USB Key 的私钥被设计成永远不可能被读出。
前面讲的是用户侧的私钥硬件,机构自己(作为认证服务器、CA、或需要管理大量密钥的系统)同样需要一个「私钥不出硬件」的方案,这就是 HSM 的角色。
HSM 是专用的硬件设备(可以是插在服务器上的卡,也可以是独立的网络设备),承担几类核心职能:
国内合规场景下,涉及密码学的系统常被要求使用国密算法(Chen 注:国密算法是国家密码管理局(现国家密码管理局,隶属中央办公厅)主导制定的一系列密码学算法标准,是国内信息系统密码合规的重要组成部分,尤其在金融、政务、关基设施领域应用广泛。)而非国际通用的算法(如 RSA、AES、SHA-256)。本篇涉及的三种国密算法各自对应一类密码学运算:
USB Key、智能卡、HSM 这类硬件产品面向国内金融机构销售时,通常都会提供国密算法版本,芯片内置的安全协处理器直接支持 SM2 签名运算,私钥生成、存储、运算的流程与前面讲的国际算法版本完全一致,只是底层的数学运算换成了国密标准。
内部落地系统:机构通常自建 CA(Chen 注:CA(Certificate Authority,证书颁发机构):负责签发和管理数字证书的机构或系统。自建 CA 意味着机构自己充当信任根,为内部用户和系统签发证书;相对的是使用第三方公共 CA(如面向公网服务的商业 CA)。),作为整个证书体系的信任根。员工的 USB Key/智能卡由机构自己的 CA 签发证书,机构自己的 HSM 保护根密钥和签发流程。这条信任链完全在机构自己的控制范围内,从密钥生成、证书签发到吊销,机构都有完全的可见性和控制力。
专线托管端系统:证书体系可能由托管方运营,也可能是机构证书体系和托管方系统之间建立信任互认关系(机构的证书被托管方系统识别和信任,反之亦然)。信任链因此变长,机构自己签发的证书要被另一个机构的系统信任,中间可能涉及交叉签名、信任链嵌套(Chen 注:交叉签名(cross-signing):两个 CA 互相为对方的证书签名,让各自签发的证书能被对方体系信任,常见于两条独立信任链需要互认时。信任链嵌套:一条证书链里插入多级中间 CA(比如 A 的中间 CA 证书由 B 的 CA 签发),验证时要沿着更长的路径逐级验证到各自的根,而不是直接到一个共同的根。)等更复杂的证书管理机制。谁来承担证书吊销、有效期管理的责任,需要在合作协议里明确划分。
按第 1 篇的三级尺,USB Key/智能卡+PIN 码的组合,以及基于 HSM 托管私钥的证书认证,都属于 L3(强化级):真正的双因素(持有硬件+知道PIN),且因素本身基于硬件加密实现,私钥不出硬件,这正是 L3 的定义门槛。
这是本系列目前讲到的方案里强度最高的一档,代价是实现和运维成本也最高:需要建设或采购 CA 体系、需要给每个用户发放和管理硬件设备、证书的生命周期管理(签发、更新、吊销)本身就是一套复杂的系统工程。
非对称密钥认证的核心思想是私钥不传输、不共享,甚至从设计上就不可能被导出,从根本上解决了前几篇反复出现的「密钥托管介质是否可信」的问题。USB Key/智能卡把这套思想落地到用户侧,HSM 把它落地到机构侧,国密算法则是国内合规场景下这套思想的具体算法实现。
下一篇转向一类完全不同的因素:生物识别。它不再讨论「密钥存在哪」,而是讨论「匹配这件事发生在哪」,这个问题会带来一套新的信任边界判断方式。