传统数字签名的死穴是:私钥必须在某个时刻完整地"出现"在某台机器上,那一刻就是泄露风险点。MPC(安全多方计算)门限签名把私钥拆成多个分片,分散在不同参与方手里,签名时通过协议协作算出合法签名,但完整私钥从始至终从不在任何一台机器上重组出现。这就是为什么 MPC 能让"私钥泄露"这件事在原理上不再成立。
📚 本文属于专题:强身份与无密码认证
传统私钥签名的根本问题
无论私钥存在文件、数据库还是内存里,签名运算的那一刻,完整私钥必须被加载进来参与计算。攻击者只要在这一刻拿到内存、拿到文件、拿到备份,私钥就泄露了,之后可以无限次伪造签名。硬件密码机(HSM)能把私钥锁在硬件里缓解这个问题,但也带来单点、成本和部署灵活性的约束。
MPC 门限签名是什么
MPC(Secure Multi-Party Computation,安全多方计算)让多个参与方在各自只持有一部分秘密的前提下,共同算出一个结果,而不泄露各自的输入。用在签名上,就是门限签名(Threshold Signature):
- 私钥在生成阶段就被拆成 n 个分片,分发给 n 个参与方(如手机、服务端、密码服务),没有任何一方持有完整私钥。
- 签名时,达到门限数量(如 2-of-3)的参与方各自用自己的分片做本地计算,交换中间结果,最终拼出一个标准合法的签名。
- 验证方用普通公钥验签即可,完全不需要知道签名是 MPC 产生的——对外兼容标准 SM2/ECDSA。
私钥为什么"从不出现"
关键在于:整个签名协议里,参与方之间交换的是经过密码学处理的中间值,而不是私钥分片本身;完整私钥在数学上从未被任何一方计算或重组出来。攻击者即使攻破其中一方,拿到的也只是一个分片,低于门限数量的分片无法伪造任何签名、也无法推出私钥。
这和"把私钥加密后分开存"有本质区别:加密分存最终还是要在某处解密重组出完整私钥。MPC 是私钥从生成到使用全程都不存在完整形态,泄露风险从"难以发生"变成"原理上不成立"。
和硬件密码机是替代还是配合
| 维度 | HSM 硬件密码机 | MPC 门限签名 |
|---|---|---|
| 私钥形态 | 完整私钥锁在硬件内 | 私钥分片,无完整形态 |
| 单点风险 | 依赖硬件本身 | 分散,无单点 |
| 部署 | 需要硬件,跨地域较重 | 纯软件,易跨端跨地域 |
| 典型场景 | 集中式密钥服务 | 移动端、分布式签名、无密码认证 |
两者不是非此即彼。常见做法是用 HSM 守护服务端的密钥分片,用 MPC 把另一分片放在用户终端,兼得硬件级保护和"无完整私钥"的双重优势。
在无密码认证里的应用
MPC 是无密码可信认证的核心之一:用户的认证私钥分片留在本地设备,服务端持有另一分片,认证时双方协作完成 SM2 签名。配合生物特征本地处理、不上传服务器,既避免了口令泄露,也避免了"服务器一旦被攻破,所有用户私钥/生物模板被一锅端"的灾难。
什么时候适合用 MPC
- 适合:移动端/多端签名、需要跨地域分布式信任、要消除单点私钥、无密码认证、数字资产托管。
- 需权衡:MPC 协议有通信开销和工程复杂度,极低延迟的超高频签名场景要做性能评估;协议实现的正确性要求高,建议用经过验证的成熟方案而非自研。
结论
MPC 门限签名改变的是"私钥泄露"这个安全模型的前提:当完整私钥从不存在,针对私钥的攻击就失去了目标。它对外兼容标准签名、对内消除单点,特别适合移动端和分布式场景。想了解 MPC 如何落地到你们的认证或签名系统,欢迎查看无密码可信认证或联系工程团队。
