多重签名(Multisig)
比特币的存储和使用是通过我们说的ECDSA公私密钥对来实现。在比特币中,公钥是作为一个公共地址,而私钥才是可以授权比特币交易的权力之手。比特币持有者通过保密私钥来保护自己的账户安全。在比特币历史的大部分时间里,每个地址都是单个的私钥 — 可以这么说,单密钥地址(标准地址,以“1”开头)存储97%的比特币。
安全性
因为私钥丢失了不可恢复,所以如何保护私钥一直以来都是比特币圈子的大课题。目前有很多方法来保护私钥,比如:
- 存储在磁盘上,通过加密来保护
- 打印在纸上,放到保险柜里
- 硬件钱包
但是,任何物理介质都有可能出现故障,比如钱包文件被盗 ,加密被离线攻击,保险柜被偷了等等。随着比特币变得越来越有价值,现有的针对比特币钱包的恶意软件也层出不穷。如何能够降低单个密钥的风险,并不影响现有交易业务效率,这是虚拟货币圈子里面一直在研究的课题。
访问控制
对于企业来说,这更是一个难题。你可以想象如果企业有一个比特币账户,如何控制账户的访问?对于单密钥方案,必须要把私钥在IT部门内共享,而这对于企业来说,从安全性上来说,是不能被接受的。对于大型企业来说,拥抱比特币,意味着需要一个可靠地访问控制方案,而不是每次交易都依赖CEO来操作密钥。
解决方案:Multi-sig
2012年起,比特币的先驱们开始尝试一种新的地址叫做pay-to-script-hash(P2SH)。P2SH地址以“3”而不是“1”开头。P2SH地址的特点是支持多个私钥,也被称为多重签名。简单的说P2SH地址可以支持“M-of-N”交易,即对于总共N个密钥,只要其中获得其中M个私钥的签名,就可以进行交易。理论上M<=N,但N可以无限大。不过在实践中,区块链确实强制执行一些关于N的大小的限制,目前比较常用的是2-of-2或2-of-3。
举个例子,对于2-of-2,主要是面向安全性。可以理解为一个存款箱,必须要两个钥匙同时出现才能打开。如果一个密钥保存在电脑上,而另一个密钥保存在手机或硬件钱包上,单个系统被黑客攻击不会导致账户的失窃。而2-of-3则提供了redundancy,三个设备中任何一个设备的丢失,不会导致账户的丢失。 同时可以在一定程度上解决访问控制问题,对于一个三人持有的钱包,任何交易都要求至少2个人同意。
常见的几种M-of-N的钱包有

除了钱包,multisig还可以解决如下一些场景应用:
托管账户
Alice希望使用比特币,购买Bob的商品。他们都信任Chloe。于是他们创建了一个2-of-3的P2SH账户。Alice、Bob、Chloe各一把密钥。 如果交易顺利进行,Alice和Bob可以自行完成交易,而不需要引入Chloe。但是当出现争议的时候,Chloe可以裁决,并通过联合Alice或Bob来移动资金。在交易过程中,比特币处于一种锁定的状态,因为没有一个人可以转移资金
机构交易限制
一家公司希望建立一个比特币钱包可以被3个员工访问,但要求任何超过5000美元的交易需要两个人批准。 它可以创建一个2-of-2的P2SH钱包,三名员工持有一个密钥,而一个内部的policy service持有另一个密钥的地址。当三名员工中的一名希望交易时,他会用自己的密钥签名,要求policy service共同签名。Policy Service 通过审查支出额度来决定是否共同签名,或者要求其他两名员工之一进行二次批准。
对于policy service,本身并不是multisig的一部分, 而是由交易所或软件公司的软件来实施的,这意味着这些servcie并不是比特币协议的一部分,所以其安全性更多的取决于流程和政策控制:谁可以改变支出限额? 时间限制? 通知? 什么时候可以改变了吗? 在改变之后是否有冷却期? 谁有权访问policy-enforcement service?是谁写的代码,它是开源的吗?等等
保证金
用户希望在交易所进行交易,但不希望把比特币存到交易所钱包里面,因为他不完全信任他们的安全措施。 于是用户建立了一个2-of-2钱包,他和交易所共享一个密钥,一个独立的policy-enforcement service持有另一个密钥。用户将比特币存入该钱包,作为他在该交易所进行交易的保证金。而Policy-enforcement service的作用是确保用户和交易所都不可以单方面提取资金交易。
趋势
如上述场景所示,多重签名可以在很大程度上改进个人和组织在使用bitcoin和其他虚拟货币的过程中的安全问题,降低资金风险。预计随着时间的推移,大部分比特币都会转移到P2SH多重地址。
多重签名虽然有很多优点,但是它并不是万能的。对于它是什么,能解决什么问题,一直存在着误区。如果看看最近的Bitfinex hack事件,你就可以大概明白安全性上的挑战其实是一直存在的,所以:
Multisig是一个工具。 像所有的工具一样,它的效果取决于你如何使用它。如果你把一把锁安装在浴缸上,你不能指望这把锁解决你前门的安全问题。
Multisig本身不是安全的方案。 它可以是一个强大的精心设计的安全方案的组成部分,但它只是一个零件。 脱离背景、使用场景、目标,来谈论multisig是没有意义的。当multisig用作时作为整体安全计划的一部分,它可以提供额外的安全防护,比如防止贪污,错误,损失,欺诈,单一故障等隐患。但是,它没有支出限制, 你可以提取所有资金。没有时间限制,你可以立即提取资金。没有每日交易限制,你可以每分钟创建数千个交易。没有通知,你不会收到电子邮件或短信的通知。