发布时间:2019年12月2日
Mike Belshe 文
本文由币信研究院原创编译,原文链接:
https://blog.bitgo.com/multi-sig-vs-mpc-which-is-more-secure-699ecefc8430
本文版权归原作者所有,仅代表作者本人观点,不代表币信或币信研究院的观点或立场。
本文约 2500 字,阅读全文需约 6 分钟。
由于其强大的安全性和强大的认证特性,我们在六年多的时间里一直在倡导使用多重签名钱包。但是,我们一直在评估新的加密技术进展,而在最近几个月中,一种被称为多方计算(multi-party computation,MPC)的新技术经常被引用。多方计算为沙米尔秘密共享(Shamir’s Secret Sharing,SSS)提供了一种的强大替代方案,一些钱包提供商认为,多方计算可能比多重签名技术更安全、更易于使用。在本文中,我们将描述多方计算及其与多重签名钱包安全性有何不同。我们认为,多方计算与多重签名技术结合使用时可以提供实用性,但是我们不认为目前这是一种明智的多重签名技术替代方法。
多方计算的背景
多方计算是一种相对较新的加密方法,可以将私钥分成多个部分。人们经常把它和一种叫做沙米尔秘密共享的技术相提并论,该技术自 20 世纪 70 年代后期开始出现,用于将单个私钥拆分为多个部分。两种技术之间的关键概念是,一个密钥对的私有部分可以被分为 N 个部分,因此,为了使用私钥创建签名,需要将这些部分中的 M 个放在一起。此类技术被称为 M-of-N,其中 N 个总部分中的 M 个部分保护底层数据。
和多重签名技术一样,沙米尔秘密共享和多方计算都可以帮助减轻两个关键风险:
- 盗窃
如果少于 M 个部分被盗或被黑客入侵,对手就不可能生成有效的签名
- 损失
在大多数情况下(M 小于 N),一部分无意损失可以通过备用部分来弥补。
与沙米尔秘密共享相比,多方计算具有一项重要优势。对于沙米尔秘密共享,在将其用于签名之前,需要先在单台机器上重新组装密钥的独立部分。这会在重新组装密钥的机器上产生一个单一故障点。相比之下,多方计算不需要在单台机器上重新组装各个部分。相反,每个部分都可以在单独的机器上用于数学函数,并且,只有在把 M 个部分应用于此数学函数之后,签名才有效。这使得每个部分都可以保持完全分离,并避免了单一故障点。
沙米尔秘密共享和多方计算的一个有趣的好处是,它们可以在区块链不知道利用了它们的情况下使用。这对某些尚不提供原生多重签名功能的区块链(例如门罗币)来说意义重大,因为多方计算签名可以在外部应用。
与多重签名的比较
从功能的角度来看,每个签名钱包使用 M-of-N 密钥的多重签名钱包类似于基于多方计算的钱包,后者将单签名钱包的 M-of-N 部分用作密钥。不同之处在于,多重签名钱包将使用由不同私钥生成的独特签名来保护钱包,而多方计算仅使用创建单个签名,而与参与的私钥部分的数量无关。
签名可追究性
基于多方计算的钱包引入了一个在多重签名钱包那里不存在的重大问题:可追究性(accountability)。对于多重签名的钱包,我们总是很清楚地使用了哪些私钥来签名交易。这很重要,因为我们通常会将单把私钥分配给特定个人,并且了解参与签名交易的人员至关重要。但是,使用基于多方计算的签名,我们无法区分使用了哪个密钥部分来签名交易。多方计算完成后,所有签名看起来都是相同的。
可追究性听起来似乎并不是一个巨大的缺点,但它在货币系统中至关重要,尤其是在考虑通常用于密钥各个部分的人员和存储类型的差异时:
- 人员
密钥可能存储在不同的人那里。如果密钥存储在公司高管(首席执行官、首席财务官、首席安全官等)那里,并且其中有 2 人合谋监守自盗,那么调查人员将如何知道谁是犯罪分子?当被问到谁签署了交易时,无辜的高管将如何为自己辩护?
- 地理
密钥可能存储在几个分开的位置。如果需要存储在 5 个位置的 3 把私钥,则取证的一个关键部分就是要知道哪些位置参与了交易。
- 多机构
安全密钥材料可以存储在几个分开的公司那里。如今,一种常见的做法是向独立公司的独立各方提供备份密钥。当可以明确标识备用密钥,正如多重签名安全性时,资金所有人就不会被备用持有者盗取资金。但是,如果多方计算取消了可追究性,则备份持有者将不愿意持有备份密钥,因为无法区分备份密钥持有者是否参与了欺诈交易。
同行评审
当今的许多多方计算实现者都在使用专有的实现和方法,都只有有限的公开评审或根本没有。正如施奈尔在《论安全》(https://www.schneier.com/blog/archives/2011/04/schneiers_law.html)中所说:“从最笨拙的业余爱好者到最好的密码学家,任何人都可以创建自己无法破解的算法。”不幸的是,许多加密算法从未在数学上被证明是有效的——相反,密码学家在接受算法可信且安全之前依赖于同行评审和足够的评审时间(以年或数十年为单位)。由于椭圆曲线数字签名算法(ECDSA)多方计算太新了,因此供应商不愿分享他们的算法、源代码和实现细节。当前的实现已经提交了许多专利申请,这可能进一步限制这些工具的使用。缺乏透明度以及限制访问这些算法的企图,使得我们无法验证其正确性或安全性,或预测可能的许可成本。
相比之下,多重签名技术是经过实践检验的。它采用了众所周知的、经过严格审查的算法,并具有多种实现方式。基于多重签名的钱包不承担额外的加密风险,它们使用的是在实践中经过最严格审查和了解的简单加密算法。
缺乏硬件安全模块(HSM)支持
同样,基于多方计算的签名的问题还在于缺乏支持该技术的工业级硬件安全模块(Hardware Security Modules,HSMs)。尽管硬件安全模块被金融机构用于保护私钥已有数十年,但当前的硬件安全模块并不支持全新的多方计算加密。安全专家早就认识到,必须通过硬件安全模块专门存储和访问密钥,才能维护基本安全性,多方计算也不例外。密钥或密钥的部分必须被安全地存储。如果多方计算实现者们不为其技术建立起定制化的硬件安全模块,我们可以说它的安全性低于单一密钥系统。
对冷存储和硬件安全模块需求的影响
多方计算的一些支持者提出,多方计算消除了对“冷存储”的需求,但事实并非如此。
“冷存储”仅指私钥离线存储的任何钱包。类似地,“热存储”指的是在线存储私钥的钱包。无论是一把还是三把私钥,无论是否使用多方计算,保护私钥的需求都完全相同。
事实是,黑客继续困扰着整个行业。Facebook 已被黑客入侵。Google 已被黑客入侵。美国政府屡遭黑客入侵。如果多方计算私钥部分在线存储,则它们与在线存储的任何其他数据一样容易遭受黑客和盗窃的风险。
结论
综上所述,当今数字钱包最强大的安全性仍然是多重签名钱包。通过将一把或多把私钥分成多个部分,多方计算可用于增强现有的多重签名方案。例如,如果利用三个人来保护一个 2-3 多重签名钱包,那么这三个用户中的每个人都可以使用多方计算细分其私钥,并将其多方计算密钥部分存储在独立的机器上。但是,完全依赖多方计算技术而没有多重签名保护,会降低安全保护并显著消除交易-时间的可追究性。
– The End –