“多重签名怎么会失败?为什么人们损失钱款?我认为多重签名技术是安全的。”透过Bitfinex黑 客攻击事件,能够很明显地发现人们并未真正了解比特币多重签名的特征。多重签名技术仿佛存在些许混乱,使得人们还不了解它本质上能做些什么或阻止什么。本 文旨在澄清一些最常见的误解,解释多重签名是如何运行的,以及为什么政策控制不能替代组织安全,你能做些什么来保护你自己?
多重签名技术是工具。就像任何其他工具一样,它可以用来实现多个不同的结果。该工具可用来分散或减少关键妥协或损失所带来的风险,作为备份冗余,它还能够创建共同账户使得各方都能在同一池中进行花费,另外它也能够起到组织中职责分离的作用。
多重签名技术不是安全计划。它可以是一个经过精心设计的安全计划的一个强大的组成部分,但它也只是一个部分而已。简单地说,“多重签名”对如何实施和应用该技术,以及能够达成什么样的目标的探索是毫无意义的。因为多重签名并不是安全咒语,如果它是,那反而会容易得多。
为了了解多重签名能做些什么,不能做些什么,我们需要对它的工作原理做一些了解。如果你不是一个技术人员,那也不要担心,这不是为他们写的,这是为每个人写的。
创建一个多重签名地址。你只需要多于一个的公钥就能创造一个多重签名地址。让我们来看一个例子,Alice,Bob和 Charlie都是当地比特币交易所的组织者。他们都想筹集资金来支持交易所的运营但又不想让某个人单独控制资金。因此他们使用CoPay软件建立了一个多重签名地址,这就让他们拥有了一个3分之2配置,意思是若要进行交易,必须经过他们三个人中的其中两人的授权。在这个实例中,可能的签名组合可以是A & B,B & C,A & C。
在幕后到底发生了什么?他们的软件会完成两件事:第一是生成一个脚本来说明需要多少签名以及和私钥对应的公钥是否能被授权,另外它也会生成一个和脚 本对应的散列,它是从数字3开始的,这就是比特币地址。脚本通常被称为“赎回脚本”,因为包含从多重签名地址中要求赎回或花费的款项。
你能够用赎回脚本作为一组永久性的,不可改变的访问控制。这些有限的访问控制可以被嵌入到比特币地址本身。这意味着当资金被发送到相应的地址时,只 有满足赎回脚本的条件才可以移动资金。在创建地址时就已经设置了规则,并且这些规则永远不会更改。这些规则从字面上讲,也是地址本身的一部分。这是多重签 名之所以强大的原因之一,这也就是为什么许多人认为它比传统的单签名比特币地址更安全。当多重签名作为一个整体的安全计划的一部分,它需要多方人员和设备 的参与才能够批准交易,这可以对挪用公款,失误,损失,欺诈,单点故障等事故起到额外的保护作用。
但请注意多重签名也有一些事情无法做到。
多重签名没有支出限制,你可以通过正确的签署及交易撤回所有资金。
多重签名没有时间限制,你可以经过正确签署立即撤回资金。
多重签名没有交易量限制:你每分钟都可以创建成千上万笔交易。
多重签名没有通知;当资金被消费时你不会收到电子邮件及文本通知。
政策控制并不是如今的多重签名技术的固有部分。在这一点上,你可能会感到困惑,因为许多钱包提供这种类型的附加服务。他们的广告标榜他们拥有额外的 安全措施和额外的控制方案。不太明确的是这些服务是由公司软件和内部政策实施的,而不是比特币协议。这是非常重要的一点,因为上述事故是可以绕过这些控制 的,并且相关的限制也能够被改变。虽然比特币的脚本语言在不断发展,基于协议的策略控件,例如lock-time也能够被利用了,然而它们还没有被广泛实 施。
外送:今天的政策管制并不像它们看起来的那样安全。事实上 ,他们仅仅是作为控制政策变化的安全系统而已。不幸的是,这比大多数人所认为的更不安全。
有时基于策略控制,密钥持有者会自动签订协议。许多多重签名钱包(但不是全部)基于政策控制包含了自动交易签约作为他们钱包的特征。在这些实施行为 当中,钱包公司控制着用于创建多重签名地址的钥匙。该密钥和它的相关签名功能是由公司编写的软件控制的,该软件通常被称为oracle 或 signing oracle。在创建地址时,除了公钥,钱包公司还收集用户定义的策略控件。例如,一个用户可能设置了一个每日最大限额为1000美元的交易。这时相应的 地址就能够被创建并且signing oracle也会设置签名参数。
签名过程通常看起来是这样的——用户创建交易(例如500美元),进行签名,然后把它发送至钱包供应商进行确认。Oracle会看到该交易行为,然 后检查政策控制(这里500美元少于1000美元),连署签名后将该交易广播至比特币网络。快速,方便,高效。那么它安全吗?也许安全,也许不安全。或许 它比实际上更为安全。
安全取决于很多因素——并不只是签署一个交易需要多少密钥确认的问题。它取决于政策控制的过程:谁能改变消费限额?时间限制?文本通知?他们何时能 作出改变?他们改变之后如果没有交易能被确认是否会存在一段冷却期?这也取决于公司的内部安全:谁有 oracle或签名密钥的访问权?这些东西是否存在备份以及谁有权利访问备份文件?谁编写了 oracle软件以及该软件是否开放了源代码?这些都只是多重签名不能解决的一些安全问题的实例。多重签名意味着创建地址需要多个密钥。然而这并未表明安 全目的就能够达到,通过多重签名来保证资金安全还远远不够。
安全不能外包。作为一个行业,我们需要阻止混乱的外包以及安全密钥的外包。将签名密钥和过程控制权交给第三方并不能保护您自己或您的客户免受盗窃。我们需要选择安全标准,如CCSS和年度安全审计。最重要的是,我们需要把重点放在了解风险方面,并需要准确地向用户解释。
最后,永远记住:“不是你的密钥,就不属于你的钱。”
附注:1.如果你正在阅读这篇文章,我会假设你明白比特币的基本知识。比特币是位于公钥密码体制下的。详见https://en.wikipedia.org/wiki/Public-key_cryptography.
从技术上讲,这种特性叫做 P2SH或pay-to-script-hash,而不是多重签名。然而P2SH最常见的一种实施方案是实现多重签名。长期的多重签名技术已成为实施P2SH的广泛应用手段.
声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。