《精通比特币》解读 第十一章 - 比特币安全

比特币安全是具有挑战性的,因为比特币不像银行账户的余额那样是一个对价值的抽象参考,比特币非常像数字现金或黄金。你可能听过这样的说法:“占有是法律的十分之九”(Possession is nine-tenths of the law,即占有某物的情况下更易于维持所有权,可以参考:怎么利用区块链:从资产周期中获得答案)。 在比特币中,占有是法律的十分之十(即利用区块链可以百分百的证明所有权归属)。

拥有解锁比特币的钥匙相当于拥有现金或一大块贵金属。你可以把它丢了,放错地方,被偷走,或者不小心把错误的金额给别人。在每一种情况下,用户都没有追索权(recourse),就好像他们在公共人行道上丢了现金一样。

然而,比特币具有现金、黄金和银行账户的不具有的能力。一个包含你的密钥的比特币钱包,可以像任何文件一样备份。它可以存储在多个副本中,甚至打印在纸上以进行硬拷贝备份。你不能“备份”现金、黄金或银行账户。比特币不同于以前的任何东西,因此我们需要用一种新颖的方式(novel way)来思考比特币的安全性。

11.1 安全准则(Security Principles)
比特币的核心准则是去中心化,这一点对安全性具有重要意义。在中心化的模式下,例如传统的银行或支付网络,需要依赖于访问控制和审查制度(vetting)将不良行为者拒之门外。相比之下,比特币这样的去中心化系统则将责任和控制权都移交给了用户。由于网络的安全性是基于工作量证明而非访问控制,比特币网络可以对所有人开放,也无需对比特币传输进行加密。

在一个传统的支付网络中,例如信用卡系统,支付是终端开放式的,因为它包含了用户的个人标识(信用卡号)。在初次支付后,任何能使用该标识的人都可以从所有者那里反复“提取”资金。因此,该支付网络必须采取端对端加密的方式,以确保没有窃听者(eavesdroppers)或中间人可以在资金流通或存储过程中将交易数据截获。如果不良行为者获得该系统的访问权,他将能破获当前的交易和能创建新交易的支付令牌。更糟的是,当客户数据被泄露时,顾客的个人身份信息将被盗窃者们一览无余,这时必须立即采取措施,以防失窃帐户(compromised accounts)被盗窃者用于欺诈。

比特币则截然不同,一笔比特币交易只授权向指定接收方发送一个指定的数额,并且不能被伪造(forged)或修改。它不会透露任何个人信息,例如当事人的身份,也不能用于授权额外的支付。因此,比特币支付网络并不需要加密或防窃听保护。事实上,你可以在任何公开渠道上广播比特币交易,例如在不安全的WIFI或蓝牙网络上,这对安全性没有任何影响。

比特币的去中心化安全模型很大程度上将权力移交到用户手上,随之而来的是用户们保管好密钥私密性的责任。这对于大多数用户来说并非一件易事,特别是在诸如连着互联网的智能手机或笔记本电脑的通用设备上(general-purpose computing devices)。虽然比特币的去中心化模型避免了常见的信用卡盗用等情况,但很多用户由于无法充分安全的保管好密钥从而被黑客攻击。

11.1.1 比特币系统安全开发(Developing Bitcoin Systems Securely)
对于比特币开发者而言最重要的是去中心化原则。大多数开发者对中心化的安全模型很熟悉,并可能试图将这些中心化的模型运用到比特币应用中去,这将导致灾难性的后果(disastrous results)。

比特币的安全性依赖于密钥的去中心化控制和矿工各自独立地进行交易验证。如果你想利用好比特币的安全性,你需要确保自己处于比特币的安全模型中。简而言之,不要将密钥控制权从用户手中拿走,不要在区块链下进行交易。

例如,许多早期的比特币交易所将所有用户的资金集中在一个包含着私钥的“热钱包”里,该钱包存放在单个服务器上。这样的设计夺取了用户的掌控权,并将密钥的控制权集中在了单个系统里。很多这样的系统都被黑客攻破了,并给客户带来灾难性后果。

另一个常见的错误是在区块链下进行交易,妄图减少交易费或加速交易处理速度。一个“链下”系统将交易记录在一个内部的中心化账本上,然后偶尔将它们同步到比特币区块链中。这种做法,再一次,用专制和集中的方式取代去中心化的比特币安全模型。当交易处于链下时,保护不当的中心化账本可能会不知不觉被篡改、被转移、被消耗。

除非你是准备大力投资运营安全,使用多层访问控制,加强审计(像传统的银行那样),否则在将资金从比特币的去中心化安全环境中抽离出来之前,你需要慎重考虑。即使你有足够的资金和纪律去实现一个可靠的安全模型,这样的设计也仅仅是复制了一个脆弱的传统金融网络模型,仍会被账户盗窃、腐败贪污和挪用公款困扰。要想充分利用比特币特有的去中心化安全模型,你必须避免由于中心化架构比较熟悉而受到诱惑,因为它最终将摧毁比特币的安全性。

11.1.2 信任根(The Root of Trust)

传统的安全体系基于一个称为信任根(ROOT OF TRUST)的概念,它是一个信任核心,用于整体系统或应用程序的安全基础。安全体系像一系列同心圆一样围绕着信任根进行开发,像层层包裹的洋葱一样,信任从中心向外延伸。通过使用访问控制,数字签名,加密和其他安全原语,每一层都构建于更可信的内层之上。随着软件系统变得越来越复杂,它们更可能出现bug,使他们更容易遭受安全威胁。其结果是,软件系统变得越复杂,就越难维护安全性。信任根的概念确保绝大多数的信任被置于系统中最不复杂的部分,因此该系统的这部分也相对坚固,而更复杂的软件则在它之上构建。这样的安全体系以不同的规模不断重复出现,首先信任根建立于单个系统的硬件内,然后将该信任根通过操作系统扩展到更高级别的系统服务, 最后逐次扩散到信任逐渐缩小的信任同心圆上的很多服务器上。

比特币的安全体系与这不同。在比特币里,共识系统创建了一个可信的完全去中心化的公开账本,一个正确验证过的区块链使用创世区块作为信任根,建立一条连接到当前区块的可信任链。比特币系统可以使用区块链作为它们的信任根。在设计一个由多个不同系统上的服务构成的复杂比特币应用时,你应该仔细分析安全体系结构,以弄清它的信任放置在哪。最终, 唯一可确信无疑的是一条完全有效的区块链。如果你的应用程序明确地或含蓄地信赖于区块链以外的东西,就该引起重视, 因为它可能会引入漏洞。一个不错的方法评估你的应用程序的安全体系结构是去单独考量每个组件,设想该组件被完全攻破并被恶意者掌控的场景。依次取出应用程序的每个组件,并评估它被攻破时对整体安全的影响。如果你的应用程序的组件被攻破后将不再安全,那就说明你已经将信任放置在这些组件中错误的地方。一个没有漏洞的比特币应用程序应该只会遭受比特币共识机制的攻击,这意味着它的信任根是基于比特币安全体系结构的最强大的部分。

大量被黑客攻击的比特币交易所的例子都印证(underscore)了这一点,他们的安全体系结构和设计甚至无法通过基本的临时审查(casual scrutiny)。这种中心化的实现方式将信任置于比特币区块链之外的诸多组件之上,例如热钱包,中心化的账本数据库,易受攻击的加密密钥,以及许多类似的方案。

11.2 用户最佳安全实践(User Security Best Practices)

人类使用物理的安全控制已经有数千年之久。相比之下,我们的数字化安全经验还不满50年。现代通用的操作系统并不是十分安全,也不特别适合用来存储数字货币。我们的电脑通过一直连接的互联网长时间暴露在外界的威胁中。它们运行着成千上万的不同作者的软件组件,这些软件往往可以不受约束地访问用户的文件。你电脑上安装的众多软件中只要有一个恶意软件,就可能会威胁到你的键盘和文件,窃取存储在你钱包里的所有比特币。使计算机无病毒和无木马的计算机维护水平已经超过了几乎所有人的技术水平,只有极少部分用户能做到。

尽管信息安全经过了数十年的研究和发展,数字资产仍然会遭受强劲敌手的攻击。纵使是像金融服务公司,情报机构或国防承包商这样拥有高度防护和限制的系统,也经常会被攻破(breached)。比特币创造了具有内在价值的数字资产,它可以被窃取,并立即转移给其他人而无法撤回。这让黑客有了强烈的作案动机。至今为止,黑客都不得不在攻破他们后更换身份信息或帐户口令——例如信用卡或银行账户,以套现。尽管掩饰和洗白这部分财务信息的难度不小,但窃贼的数量不断升级(ever-escalating )。而比特币使这个问题加剧了,因为它不需要掩饰或洗白,它是数字资产具有的内在价值。

幸运的是,比特币创建了提高计算机安全的激励机制。如前所述,计算机受威胁的风险是模糊的,间接的,而比特币让这些风险变得明确清晰。在电脑上保存比特币让用户注意到他们需要提高计算机的安全性,结果便是使得比特币和其它数字货币得以扩散和广泛采用,我们已经看到在黑客技术和安全解决方案双方的提升。简单来说,黑客现在有着一个非常诱人的目标,而用户也有明确的激励去保卫自己。

在过去的三年里,随着比特币不断被接纳,一个直接的结果是,我们已经看到信息安全领域取得了巨大创新(tremendous innovation),例如硬件加密(hardware encryption),密钥存储(key storage)和硬件钱包(hardware wallets),多重签名技术(multisignature technology),和数字托管(digital escrow)。在下面的章节中,我们将分析各种实际用户安全中的最佳实践经验。

11.2.1 比特币物理存储(Physical Bitcoin Storage)
相比数字信息的安全,大多数用户对物理安全更容易接受,一个非常有效保护比特币的方法是,将它们转换为物理形式。 比特币密钥不过是串长数字而已。这意味着它们可以以物理形式存储起来,如打印在纸上或蚀刻成金属硬币上。这样保护密钥就变成了简单地保护印着比特币密钥的物理实体。一组打印在纸上的比特币密钥被称为“纸钱包”,有许多可以用来创建它们的免费工具。我个人将绝大部分(99%以上)的比特币存储在纸钱包上,并按照BIP-38加密,复制了多份并锁在保险箱里。将比特币离线保存的方法被称为冷存储(cold storage),它是最有效的安全技术之一。冷存储系统是在一个离线系统(一个从来没有连接到互联网的系统)上生成密钥,并离线存储在纸上或者数字媒介上,如USB记忆卡(USB memory stick)。

11.2.2 硬件钱包(Hardware Wallets)
从长远来看,比特币安全将越来越多地以硬件防篡改钱包的形式出现。与智能手机或台式电脑不同,一个比特币硬件钱包只有一个目的,安全地存储比特币。硬件钱包没有常用软件的威胁,并且只提供了有限的接口,从而可以给非专业用户提供近乎万无一失的(foolproof)安全等级。我预期将看到硬件钱包成为比特币储存的主要方式(predominant method)。硬件钱包的例子,可以查看TREZOR

11.2.3 平衡风险(Balancing Risk)
虽然大多数用户都非常关注比特币防盗,其实还有一个更大的风险存在。数据文件丢失的情况一直以来都有发生。如果这些数据文件包含比特币,损失将会更令人痛苦。为了保护好比特币钱包,用户必须非常注意不要做的太离谱,以至于搞丢比特币。在2011年7月,一个著名的比特币认知教育项目损失了近7,000个比特币。为了防止被盗窃,其拥有者曾采取了一系列复杂的操作去加密备份。结果他们不慎丢失了加密的密钥,使得备份变得毫无价值,白白失去了一大笔财富。就像把钱埋藏在沙漠里,如果你保护比特币的方式太过了,你可能再也找不回它了。

11.2.4 分散风险(Diversifying Risk)
你会将你的全部资本净值(entire net worth)换成现金放在钱包里么?大多数人会认为这非常不明智(reckless),但比特币用户经常会将所有的比特币放在一个钱包里。用户应该将风险分散到多个并且不同类型的比特币钱包。审慎的(prudent)用户应该只留一小部分,或许低于5%,的比特币在一个在线的或者手机钱包(mobile wallet),就像零用钱(pocket change)一样,其余的部分应该采用不同存储机制分散开来,诸如电脑钱包和离线钱包(cold storage,冷存储)。

11.2.5 多重签名管理(Multisig and Governance)
当一个公司或个人持有大量比特币时,他们应该考虑采用多重签名的比特币地址。多重签名比特币地址需要多个签名才能支付,从而保证资金的安全。多重签名的密钥应存储在多个不同的地方,并由不同的人掌控。打个比方,在企业环境中,密钥应该独立生成并由若干公司管理人员持有,以确保没有任何一个人可以独自占有资金。多重签名的地址也可以提供冗余,例如一个人持有多个密钥,并将它们分别存储在不同的地方。

11.2.6 存活能力(Survivability)
一个经常被忽视的(overlooked)非常重要的安全考虑因素是可用性,尤其是在密钥持有者丧失行为能力或死亡的情况下。比特币的用户被告知应该使用复杂的密码,并确保他们的密钥安全且私密,不与任何人分享。不幸的是,这种做法使得在用户无法解锁时,用户的家人几乎无法恢复该财产。事实上,大多数情况下,比特币用户的家人可能完全不知道这笔比特币资金的存在。

如果你有很多的比特币,你应该考虑与一个值得信赖的亲属或律师分享访问密钥的细节。一个更复杂的比特币恢复计划,可以通过设置多重签名,并通过专门的“数字资产执行者”律师做好遗产规划(estate planning)。

11.3 总结
比特币是一项全新的,前所未有的(unprecedented),复杂的技术。随着时间的推移,我们将开发出更好的,更容易被非专业人士使用的安全工具和实践方法。而现在,比特币用户可以使用许多这里所讨论的技巧,享受安全而无困扰的(trouble-free)比特币体验。

猜你喜欢

转载自blog.csdn.net/yzpbright/article/details/81097210