秘密是有限域上一个 k − 1 次随机多项式的常数项;每个份额是该多项式在一个互不相同的非零点上的取值,对任意 k 个份额做拉格朗日插值即可恢复常数项。实现通常在 GF(2⁸) 中逐字节运算,因此每个份额的长度等于秘密长度再加一个索引。其安全性是信息论意义上的:少于 k 个份额不会给出任何信息,无论算力有多强。
原始的 Shamir 方案不提供完整性:一个损坏或恶意的份额会在不报错的情况下重建出错误的秘密,因此实用方案会附加秘密的校验和或摘要,或者采用可验证秘密共享(Feldman、Pedersen)。它还要求在拆分和重建时,完整的秘密在某一时刻集中于一处;门限签名从不重建密钥,从而避免了这一点。
用途包括 HSM 和 CA 的密钥仪式(m-of-n 操作员卡)、根密钥和恢复密钥的备份、SLIP-39 钱包备份,以及 HashiCorp Vault 的解封密钥。Shamir 秘密共享工具可以在浏览器本地拆分和合并秘密。