比特币安全原则

比特币的核心原则是去中心化,这一点对其安全性非常重要。在诸如传统银行或支付网络等中心化的模型中,安全依赖于访问控制和审查,这可以把“坏蛋”挡在系统之外。与之相比,在一个类似比特币的去中心化系统中,维护系统安全的责任及控制权都交给了用户。因为比特币网络的安全是基于工作量证明,而不是访问控制,因此网络可以是开放的,数据流量本身也不需要进行加密。

在传统的支付网络——比如信用卡系统中,支付是开放式的,因为交易本身包含了用户的私人身份信息(信用卡账号)。第一次刷卡完成后,任何能访问卡信息的人都可以一次又一次地从账户中“取”资金,向用户收费。因此,支付网络必须对端到端的通信进行加密,确保监听者或中间环节无法在支付数据传输或存储的过程中截获交易信息。如果一个坏人获得了访问系统的权限,他就可以截获当前的交易信息和支付令牌,这些信息可以用于伪造交易。更糟糕的是,一旦客户信息泄露,客户的个人身份信息就会暴露在盗窃者的眼皮底下。客户这时必须立即采取措施,以防失窃账户被盗窃者用于欺诈行为。

比特币则完全不同。一个比特币交易仅仅授权向特定接收者发送特定价值的比特币,交易无法伪造也不能修改。这个过程不会泄露任何个人信息,比如当事人身份等,也无法用于授权其他支付交易。因此,比特币支付网络不需要进行加密,也不需防范窃听。实际上,你可以在诸如不安全的WiFi或者蓝牙等开放的公共网络上传播比特币交易信息,而比特币交易的安全性并不会因此而降低。

比特币的去中心化安全模型将大量权力交到了用户手中。伴随着权力而来的是维护密钥安全的责任。对大多数用户而言,做到这一点并不容易,特别是在诸如联网的智能手机或笔记本电脑等通用用途的计算设备上。虽然比特币的去中心化模型防止了类似信用卡那样大量用户信息泄露的风险,但还是有很多比特币用户因无法保证其密钥安全,导致账户被黑客盗取。

开发安全的比特币系统

对比特币开发者来说,最重要的原则就是去中心化。开发者大都了解中心化的安全模型,也希望将这些模型应用到比特币应用程序中,但最终都是无功而返。

比特币的安全依赖于密钥的去中心化控制和矿工们独立的交易验证。如果想充分利用比特币的安全特性,就必须确保不会脱离比特币的安全模型。简单地说就是:不要让用户失去对密钥的控制权,不要让交易脱离区块链。

举例来说,很多早期的比特币交易系统将所有用户的资金集中在一个存储私钥的“热”钱包软件内,而钱包数据则存储在单一的服务器上。这样一种设计,剥夺了用户的控制权,并将代表控制权的密钥集中存储在一台服务器上。很多类似的系统都被黑客攻击过,给客户带来了灾难性的损失。

另外一个常见的错误行为是进行“离链”交易,试图利用这种方式降低交易费用或提高交易处理效率。“离链”系统会在其内部的中心化账本中记录交易信息,仅仅不定期地与比特币区块链进行同步。这种做法再次将去中心化的比特币安全机制,替换为专有的中心化方式。当交易离开区块链时,未做好安全防范措施的中心化账本可能会在不知不觉间就被篡改,并导致资金被转移、占用。

除非你打算投入大量财力、物力到运营安全上,比如进行多重的访问控制、严格的事后审计(正如传统银行所做的那样),想将资金从比特币的去中心化安全场景中剥离出来,都必须慎之又慎。实际上,即使你有足够的资金和条件去创建一个强大的安全模型,这种设计也仅仅是复制了一个脆弱的、账户易受窃取的传统金融网络,深受贪污和挪用的困扰。要想充分利用比特币特有的去中心化安全模型,你必须抵御中心化架构带来的诱惑,虽然这种架构令人感到熟悉,但它终将摧毁比特币的安全性。

信任根

传统安全架构是基于一种被称作信任根(root of trust)的概念,它是用作系统或应用安全基础的可信核心。安全架构围绕着信任根开发,如同一系列同心圆,或者层层包裹的洋葱,围绕着中心逐层向外扩展。每一层都建立在更加可信的内层之上,方法包括访问控制、数字签名、加密,以及其他安全手段。软件系统愈加复杂,其隐含bug(漏洞)的可能性也愈高,安全威胁也随之增多。结果就是系统越复杂,安全越难确保。信任根的概念就是保证大多数信任被置于系统复杂度最低的部分,也是系统中安全风险最小的部分,更复杂的软件则在其上构建。这种安全架构可以在不同规模的系统中重复使用,首先在单一系统的硬件层建立一个信任根,然后不断向上扩展信任根,先是操作系统,然后是更高层的系统服务,最终形成了一个个围绕着信任根、信任递减的同心圆。

比特币的安全架构与之不同。在比特币中,共识系统创建了一个可信的并且完全去中心化的公共账本。一个得到正确验证的区块链使用创世区块作为信任根,创建了一条一直延伸到当前区块的信任链。比特币系统可以也必须使用区块链作为它们的信任根。当设计一个复杂的、需要在多个系统上提供服务的比特币应用时,你需要非常仔细地去审查其安全架构,以弄清信任放置在何处。最终,唯一需要明确信任的是一条完整验证过的区块链。如果应用程序显性或隐性地依赖于除了区块链之外的任何东西,就需要引起关注,因为这可能就是系统最脆弱之处。一个评估应用安全架构的好方法是单独考量每个组件,设想该组件被完全攻破并被入侵者控制的场景。依次取出应用程序的每个组件,评估它被破坏时对整体安全造成的影响。

如果你的应用程序在该组件被破坏时不再安全,那就说明你不该将信任放置在这个组件中。一个没有漏洞的比特币应用程序应该只受限于比特币的共识机制,也就是说,其信任根是基于比特币系统安全架构最坚固的部分。

大量被黑客攻击的比特币交易的例子说明了这一点的重要性,因为这些系统的安全架构和设计连最基本的检测都无法通过。这些中心化的实现方式将信任置于比特币区块链之外的组件上,比如热钱包、中心化的账本数据库、脆弱的加密密钥,以及类似的其他方案。

868区块链学习网为您整理《比特币安全原则》仅供参考。