钱包基础设施与安全模型
行业背景
钱包系统通常依赖一种或多种基础密码学方法来保护私钥。了解这些方式有助于理解本文档所述的安全模型。
Shamir's Secret Sharing (SSS)
SSS 将私钥拆分为多份份额,需要达到最低门槛才能重建原始密钥。它提供完美保密性——低于门槛的任意数量份额都不会泄露关于密钥的任何信息。SSS 成熟、工具链完善且速度快(签名 20–40 ms)。代价是私钥必须完全重组才能签名,在重组瞬间形成单点故障。
Threshold Signature Schemes (TSS)
TSS(通常称为 MPC)允许多方共同生成签名,而无需重组私钥。这消除了 SSS 的重组风险。代价是成熟度——首个高效的两方 ECDSA 协议直到 2017 年才出现——以及性能:每次签名都涉及网络往返,可能带来数秒级延迟。
Trusted Execution Environments (TEE)
TEE 在硬件 enclave 内执行密码学运算,确保密钥材料永不暴露且仅运行授权代码。客户端可通过 attestations 验证运算。TEE 扩展性好,且避免 TSS 的往返延迟,但其安全性依赖 enclave 完整性,历史上曾易受侧信道攻击。
WebAuthn PRF 扩展
WebAuthn PRF(Pseudo-Random Function)扩展从用户的 passkey 硬件——Apple 设备上的 Secure Enclave、Windows 上的 TPM、Android 上的 Titan chip——派生确定性密钥。该密钥绑定设备与用户的生物识别或 PIN,在认证过程中于设备上计算,且永不传输。它使一类钱包设计成为可能:密钥材料可用服务器从未见过的密钥加密。
三方密钥保护
概述
本系统中的私钥从不以完整形式存储——不在用户设备上,不在我们的服务器上,不在任何地方。相反,密钥材料通过 3-of-3 secret sharing 方案在三个独立方之间进行密码学拆分。三方必须协作才能重建密钥。少于三方在数学上不会泄露关于私钥的任何信息。
这是一种混合模型:将基于 passkey 的客户端加密(PRF-as-KEK)、secret sharing 与隔离的服务器端 enclave 结合为单一架构。由此得到的构造与 Shamir's Secret Sharing 具有相同的信息论安全保证——低于门槛的任意子集都无法获得关于密钥的信息——同时将一份份额绑定到用户的物理 authenticator 硬件,使仅服务器端被攻破无法重建密钥。
这是所有现代设备(iOS、macOS、Android 与 Windows 上的主流浏览器)的默认安全模型。
三方
第一方 — 用户的 Authenticator
用户的 passkey 硬件计算与设备及用户生物识别或 PIN 绑定的确定性密钥。该输出称为 PRF output,在认证过程中于设备上生成,不会传输到任何地方。不存储。不记录。仅在签名操作期间存在于内存中。
该密钥是用户参与密钥重建的贡献。没有它,另外两方无法单独生成可用的私钥。
第二方 — API
API 存储用户密钥材料的加密副本。该副本使用用户的 PRF 派生密钥加密,而 API 从未见过该密钥。API 控制访问——仅向出示由用户已注册 passkey 签名的有效 WebAuthn assertion 的请求释放该加密载荷。但 API 本身无法解密该载荷。
API 充当经认证的交付机制,而非密钥托管方。
第三方 — Crypto Enclave
独立于 API 运行、拥有自身加密密钥与基础设施的隔离系统持有服务器端密钥份额。该份额在静态存储时使用仅 enclave 知晓的密钥加密。enclave 仅在请求通过 assertion 验证后释放解密后的份额,且仅用于在最终签名步骤中与用户份额合并。
enclave 永远看不到用户的 PRF output、用户的密钥份额或组装后的私钥。
安全属性
无单点故障
| 场景 | 后果 |
|---|---|
| 用户设备被盗 | 攻击者无法复现生物识别/PIN;无法获得 PRF output |
| API 完全被攻破 | 攻击者仅获得用其从未见过的密钥加密的密文 |
| Enclave 完全被攻破 | 攻击者获得密钥的一份份额;另一份不在任何被攻破的系统上 |
| API 与 Enclave 同时被攻破 | 攻击者获得加密用户载荷与服务器份额——但仍无法在物理 authenticator 提供 PRF output 的情况下解密用户载荷 |
最后一项是关键。即使全部服务器端基础设施被完全攻破,仍不足以重建私钥。用户的 authenticator 是任何服务器端入侵都无法绕过的密码学关卡。
信息论安全
混合模型继承与 Shamir's Secret Sharing 相同类别的安全保证:密钥拆分不仅是计算安全性——而是信息论安全。持有三方中任意两方材料的攻击者,即使拥有无限计算能力,也无法获得关于私钥的信息。仅凭两方数据,无论时间与多少硬件,都不存在能推导出密钥的算法。这与 one-time pad 提供的保证相同。
非托管设计
我们同时运营 API 与 enclave。尽管如此,我们无法单方面访问用户资金。用户的 PRF output 是缺失的一环——它在用户硬件内生成且永不传输。我们无法访问资金并非政策或服务条款承诺——而是不受内部访问控制、监管压力或基础设施被攻破影响的数学约束。
交易如何签名
所有签名均在用户设备上进行。私钥从未在任何服务器上组装。
- 用户在应用中批准交易。设备通过生物识别或 PIN 认证用户。
- 设备在本地计算硬件绑定的 PRF 密钥。该密钥永不离开设备。
- 应用从 API 获取加密用户载荷,从 enclave 获取服务器份额。二者单独均不可用。
- 在用户设备上的内存中:硬件密钥解密用户载荷,得到用户密钥份额。两份份额合并为完整私钥。
- 私钥对交易签名——完全在设备上完成。
- 私钥立即从内存清除。不缓存、不持久化、不记录。
完整私钥仅存在毫秒级,仅存在于用户设备上,且仅在签名期间。任何服务器都看不到它。
私钥导出
若用户选择导出私钥——例如迁移到其他钱包——同样原则适用。密钥完全在用户设备上重建并交付。 服务器提供加密份额,但解密与组装在本地完成。导出过程中私钥不会经过任何服务器,也不会对任何服务器可见。
Passkey 同步与跨设备访问
现代平台——Apple 上的 iCloud Keychain、Android 上的 Google Password Manager——会在用户设备间同步 passkey。用于密钥重建的硬件绑定密钥属于同步的 passkey 材料的一部分,意味着同一 PRF output 可在用户同步组内的任意设备上复现。这跨设备保持三方安全模型:任意同步设备均可参与签名,无需服务器端架构变更。
用户会获知 passkey 是否已同步到其云账户,从而始终了解钱包的可恢复性。
PRF 支持在 iOS 18+、macOS Sequoia 15.4+、Android 14+ 与 YubiKey 5 系列上可用。不支持 PRF 的平台使用服务器端签名回退。
与传统钱包安全对比
| 模型 | 私钥位置 | 谁能访问资金 |
|---|---|---|
| 标准自托管(助记词) | 由用户保存 | 持有助记词的任何人 |
| 交易所 / 热钱包托管 | 由运营方保存 | 运营方(以及攻破运营方的任何人) |
| 硬件钱包 | 保存在设备上 | 持有物理设备 + PIN 的任何人 |
| 本系统 | 从不完整存储 | 需要用户实时 authenticator 与服务器基础设施同时参与 |
摘要
本混合模型——结合基于 PRF 的客户端加密、secret sharing 与隔离 enclave——将信任分布于三个真正独立的方,使任意两方子集无法重建私钥,并与 Shamir's Secret Sharing 具有相同的信息论安全保证。用户生物识别绑定的硬件密钥是整个系统的密码学锚点。无论服务器端基础设施被攻破到何种程度,没有用户的物理参与都无法产生有效签名。