区块链,比特币背后的分布式账本技术,日后可能会被证明比它支持的货币更有价值,但这种价值必须建立在安全的基础上。当我们开始将该技术付诸实践时,一定要确保我们设置的初始条件不会在日后导致安全问题。要理解区块链技术中固有的安全风险,了解公有区块链和私有区块链之间的区别很重要。
比特币依赖于公有区块链,一个允许任何人读写事务的事务记录系统。任何人都可以聚合和发布事务,只要他们可以努力解开加密。节点网络确认先前已验证的事务记录,其验证新事务的过程被称为共识协议。在比特币系统中,因为没有用户被隐式信任来验证交易,所有用户遵循通过提交软件和硬件资源,解决密码谜题来验证交易的算法。
这种分散和相对自由的访问导致了一些意想不到的后果:因为任何人都可以读写交易,比特币交易促进了黑市交易活动的繁荣。由于共识协议需要能源消耗,大多数用户选择在廉价电力的国家运营,导致了网络集中化和串通的可能性,并且使得网络容易受到电力补贴政策变化的影响。这两种趋势都导致人们对私有区块链的兴趣增加。
私有区块链主要用于金融领域,他们的运营商能够控制管理员角色权限,比如谁可以读取已验证交易的分类帐,谁可以提交交易,谁可以验证。私有区块链可应用于多领域市场,尤以多方希望同时参与,但又无法完全相互信任的场景居多。例如,支持土地和有形资产登记,私人商业交易和私人股本分配的私人区块链系统都在测试中。随着这些系统的发展,它们也可能会遇到意想不到的后果,其中一些将对系统的安全及其管理或存储的资产产生影响。在软件和产品开发中,考虑到早期的安全性可以缓解对产品进行根本性改变的难度,以解决后续的安全漏洞。
区块链安全始于网络架构
在建立私有区块链时第一个要考虑的因素是系统的网络架构。区块链在分类帐,已验证交易列表,通过通信并且通信需要写入和认可新的交易这几方面达成共识。此通信发生在节点之间,每个节点维护分类帐的副本并且通知其他节点新的信息:新提交或新验证的交易。私有区块链运营商可以控制用户权限,决定谁可以操作节点,以及这些节点是如何连接的;具有更多连接的节点可以更快地接收信息。同样,节点可能需要维持特定数量的连接才被认为是活动的。限制信息传输或传输不正确信息的节点必须可识别和可规避,以保持系统的完整性。基础商品交易的私有区块链可以在网络中向已建立的贸易伙伴授予更多中心位置,并且可能需要新节点作为安全措施来维持与中央节点的连接,以确保其如预期那样运行。
在建立网络架构中的另一个安全问题是如何处理非通信或间歇性活动节点。节点可能由于无害的原因离线,但是网络必须被结构化以在没有离线节点的情况下起作用(以获得对先前验证的事务共识并且正确地验证新事务),并且如果返回,必须能够快速地将这些节点恢复。
公有与私有区块链中的共识协议和访问权限
用于获得共识(通过解决问题来验证交易)的过程被有意设计为需要一段时间,目前约10分钟。交易被完全验证大约需要一到两个小时。这种延迟正是系统的脆弱性所在,因为最初被验证的交易可能稍后会失去该状态,并且对于使用基于比特币的系统来进行快节奏交易(例如金融交易)时,这是一个重大障碍。
相比之下,在私有区块链中,运营商可以选择仅允许某些节点执行验证过程,并且这些可信方将负责将新验证的事务传送到网络的其余部分。
公有与私有区块链中的事务可逆性和资产安全
区块链交易可用于存储数据,比特币交易的主要动机是比特币本身的交换;该货币的汇率在其短暂的生命周期内会有波动,但在过去两年中增加了五倍以上的价值。每次比特币交易都有与正在交换的比特币相关联的唯一文本字符串,类似地,区块链系统记录交易中涉及的资产或股份的所有权。在比特币系统中,通过使用与支付相关联的私钥(由被设计为提供随机和唯一输出算法产生的长数字)来证明所有权,尽管这些密钥就像数据一样,可能被盗或丢失。
因此,私有区块链运营商必须决定如何解决和识别凭证丢失的问题,特别是对于管理实物资产的系统。即使没有人能证明一桶石油的所有权,桶也需要在某个特定的地方。比特币目前没有为那些丢失私钥的人提供追索权;类似地,被盗的比特币几乎不可能恢复,因为使用被盗密钥提交的事务对于验证节点而言似乎不能与合法事务区分开。
私有区块链所有者必须决定是否以及在什么情况下撤消已验证的交易,特别是如果该交易可能被视为盗窃。事务逆转可能破坏系统的公平性和公正性,但是由于系统允许漏洞被利用可能会损失大量的用户。最近的DAO(分散自治组织)案例说明了这种情况,该组织是一个基于代码的风险资本基金,设计用于基于公有区块链平台的以太坊。运行DAO的代码中的安全漏洞导致了财务损失,需要以太坊的开发人员更改Ethereum协议本身,即使DAO的漏洞不是以太坊协议的错误。作出这些改变的决定是有争议的,但也提醒了公有和私有区块链开发商,未来他们可能会面临类似的状况。
私有区块链的优势是更快的事务验证和网络通信,修复错误和逆转事务的能力,以及限制访问和减少外部攻击的能力。那些致力于维护公有区块链系统(比如比特币)的开发者仍然依赖于个人用户采取他们提出的建议,而私有区块链的运营商可以选择单方面部署一些改变,即便用户不同意。
虽然在公有区块链上建立金融市场或其他基础设施的风险可能会让新手望而却步,但私有区块链提供了对参与者行为和交易验证过程一定程度的控制。需要快速事务的系统使用私有区块链,事务反转的可能性和事务验证的中央控制将更好,而受益于广泛参与,透明度和第三方验证的公司将会在公有区块链上蓬勃发展。