跳到主要内容
ecdsa.com

Shamir 秘密共享

Adi Shamir 于1979年提出的方案,用随机多项式把秘密拆分为 n 个份额,其中任意 k 个份额即可重建秘密,而任意 k − 1 个份额不会泄露任何信息。
其他写法Shamir's secret sharingSSSsecret splittingm-of-n

秘密是有限域上一个 k − 1 次随机多项式的常数项;每个份额是该多项式在一个互不相同的非零点上的取值,对任意 k 个份额做拉格朗日插值即可恢复常数项。实现通常在 GF(2⁸) 中逐字节运算,因此每个份额的长度等于秘密长度再加一个索引。其安全性是信息论意义上的:少于 k 个份额不会给出任何信息,无论算力有多强。

原始的 Shamir 方案不提供完整性:一个损坏或恶意的份额会在不报错的情况下重建出错误的秘密,因此实用方案会附加秘密的校验和或摘要,或者采用可验证秘密共享(Feldman、Pedersen)。它还要求在拆分和重建时,完整的秘密在某一时刻集中于一处;门限签名从不重建密钥,从而避免了这一点。

用途包括 HSM 和 CA 的密钥仪式(m-of-n 操作员卡)、根密钥和恢复密钥的备份、SLIP-39 钱包备份,以及 HashiCorp Vault 的解封密钥。Shamir 秘密共享工具可以在浏览器本地拆分和合并秘密。

标准与参考资料

全部术语