秘密共享问题
理解直接拆分秘密为何不安全
秘密共享问题 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
问题
您有一个必须长期保存、能在紧急情况下访问,却绝不能被任何单个人员攻破的主密钥。应如何存储它?将完整密钥交给多个人,意味着其中任何一人都可能滥用它。只保留一份副本则会形成单点故障。
简单拆分并不安全
将一个 128 位密钥拆分成两个 64 位半段,分别交给两个人,看似巧妙却并不安全:每个半段都会将暴力破解成本从 2^128 降低到 2^64。攻击者一旦攻破其中一人,就能获得 64 位的破解优势。
理想属性
一个恰当的秘密共享方案必须具备以下属性:(1) 阈值:任意 k-of-n 份额都能重构秘密。(2) 安全性:任意 k-1 份额都不会泄露关于秘密的任何信息。(3) 完美性:不需要任何计算假设。
现实动机
比特币钱包、HSM 主密钥、证书颁发机构私钥、核武器发射密码以及加密货币交易所冷钱包都需要阈值访问。单个密钥丢失 = 灾难性后果。被一名内部人员攻破 = 同样是灾难性后果。
基于 XOR 的 2-of-2 共享
要在两方之间共享秘密 S:生成随机值 R。将 share1=R 交给参与方 1,将 share2=S XOR R 交给参与方 2。重构时:share1 XOR share2 = R XOR (S XOR R) = S。任一份额单独看都完全随机,不会泄露关于 S 的任何信息。
XOR 共享的局限性
XOR 共享可以完美实现 2-of-2,但无法推广到 k-of-n 阈值方案。您无法创建一种 3-of-5 方案,使任意 3 个份额都能重构秘密,同时任意 2 个份额都不会泄露任何信息。多项式插值可以解决这个问题。
信息论安全
完美保密意味着少于 k 个份额时,这些份额与秘密之间不包含任何互信息。这比计算安全更强——即使计算能力无限的攻击者,也无法从 k-1 个份额中获知任何信息。
实际应用
AWS CloudHSM 使用 M-of-N 法定人数身份验证。PGP 密钥托管会拆分主密钥。加密货币托管服务商(Fireblocks、BitGo)使用 MPC 或 Shamir 共享来保护热钱包密钥。证书颁发机构的离线密钥使用 5-of-7 仪式。
仪式设计
密钥仪式是生成并拆分主密钥的正式审计流程。例如:7 名密钥持有人在安全房间内,每人获得一个包含一份额的硬件令牌。全程录像,有两名审计员在场,并记录每一步。
阈值与多重签名
秘密共享会重构完整秘密(风险在于重构时存在单点);多重签名则分散签名过程:每方独立签名,然后合并这些签名。阈值签名(TSS)是将秘密共享应用于签名操作本身。
现代替代方案
安全多方计算(MPC)完全省去了重构步骤——各方使用自己的份额共同计算,而不会泄露秘密。阈值 ECDSA 和阈值 BLS 已部署在生产环境的托管系统中。
快速检查
在 2-of-2 XOR 秘密共享方案中,攻击者需要多少份额才能获知秘密?
回顾
简单拆分密钥并不安全。恰当的秘密共享需要具备完美保密性的阈值访问。XOR 可以处理 2-of-2;多项式插值可以处理 k-of-n。下一步:Shamir 秘密共享的数学原理。
常见问题解答
「秘密共享问题」课时是免费的吗?
是的 — 「秘密共享问题」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「秘密共享问题」这节课中我会学到什么?
理解直接拆分秘密为何不安全 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「秘密共享问题」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。