没有一台机器持有完整私钥:ICP 的 Chain-key 阈值密码学 图 1
没有一台机器持有完整私钥:ICP 的 Chain-key 阈值密码学 · 图 1

多数公链的签名钥匙握在每个节点自己手里,而互联网计算机(Internet Computer,简称 ICP)把钥匙的设计反了过来:任何一个节点都不单独持有完整的私钥,钥匙以秘密碎片的形式散布在整个子网的节点之间,签名靠节点协作完成,完整私钥从始至终不在任何一处存在。官方文档把这整套东西称为 Chain-key 密码学,并称其是整个协议的地基。本文按 ICP 官方文档拆解这套阈值密码学的构成、它能解锁的四类能力,以及信任边界落在哪里。

两半拼成的钥匙体系

官方文档把 Chain-key 密码学拆成两个协议的组合。第一半是分布式密钥生成:子网的节点共同生成一把密码学密钥的秘密碎片,协议保证完整密钥在任何单一位置都从未存在过,它只以碎片的集合形式”活”在节点群里。第二半是阈值签名:要签一条消息,持有碎片的节点必须彼此协调、分布式地拼出签名,而协调过程本身不需要、也不允许重建私钥。每个子网对外表现为一个与该阈值方案绑定的公钥。文档还强调一个工程细节:系统会周期性做密钥再分片(key resharing),让碎片在不同节点组合间轮换,节点进出与故障恢复不要求重发整把钥匙。

光球环绕中央空腔组网、碎片协同聚合的阈值密钥抽象示意

一把钥匙能签什么

阈值签名的第一层用途是链自身的效率:响应签名让客户端不必同步整条链就能验证节点返回内容的真伪,这是文档列出的”认证响应”能力;阈值 BLS 方案的签名具有唯一性——同一消息同一密钥只存在一个有效签名——协议借这个性质给智能合约(canister)供给不可预测、无偏的随机数。第二层用途是跨链:既然可以协作签 ECDSA 与 Schnorr 签名,合约就能直接给比特币、以太坊上的交易签名。官方文档把这条路线叫链密钥签名:每个 canister 通过派生路径控制若干公钥,可以用 ecdsa_public_key 取公开钥、用 sign_with_ecdsa 请求签名,但任何合约都拿不到私钥本身,因为它不存在于任何单点。文档同时提醒,阈值 ECDSA 比阈值 BLS 难做得多,ICP 采用的是能在异步网络下工作、允许三分之一节点宕机或作恶仍能出签名的协议设计。

ckBTC 与信任账本

把上面两条合起来,就得到 ICP 最具辨识度的资产形态:链密钥代币。以 ckBTC 为例,锁定在比特币网络上那部分资产的支出权,由一个 canister 通过阈值签名机制控制——它持有一把比特币意义上的私钥,却没有任何一台服务器存着这把私钥的完整形态。官方文档据此主张这是”最强的集成方式”:安全性假设只剩 ICP 与被集成的那条链两条,中间不再多出管理密钥或密钥碎片的第三方。读这句话时要把边界看清:省掉的是”额外托管方”,省不掉的是对子网诚实节点多数与阈值协议正确性的依赖——子网节点是大选美出来的委员会,委员会被攻破等于钥匙被攻破。用户核验 ckBTC 类资产时,对应的检查项是背靠的 ICP 子网与其密钥类型,而不是某个运营主体的公告。

与其他方案的坐标

放回行业语境:多签委员会桥把 N 把完整钥匙放在 N 台机器上,阈值方案把一把钥匙切成 N 份碎片放在同样 N 台机器上——前者攻破一扇门即可提款,后者通常要攻破门内的多数才能拼出签名,这正是文档”单个(甚至大部分)副本被攻陷也偷不走密钥”表述的由来。但两者信任对象相同:都是那组节点,差别在攻击需要穿透的比例。轻客户端桥则把信任换给被验证链的共识,代价是每笔验证都要下载和校验更多数据。三种形态没有绝对优劣,Chain-key 的赌注是把信任压缩进一个持续轮换、无需人工掌钥匙的节点委员会。

本文只作机制解释,密钥参数与阈值比例以官方文档为准;不构成任何投资建议。