新闻 资讯 金融 知识 财经 理财 科技 金融 经济 产品 系统 连接 科技 聚焦
首页 > 金融 > > 正文

区块链不可篡改、永远匿名?看美国 NIST怎么说

2018-11-29 22:10:10来源:网络

1、区块链不可篡改?错!

大多数关于区块链技术的出版物都将区块链这个账本描述为不可篡改的。不过,这样的描述并不完全正确。区块链具有数据防替换和防篡改的功能,这也是它们深得金融交易青睐的一个原因。但这并不意味着区块链是完全不可变的,因为在某些情况下区块链是可以被修改的。在本节中,我们将探讨不满足区块链账本不可变性这个说法的一些操作。

我们并不能说区块链是完全不修改的。对于一些区块链来说,最新生成的区块,或称区块链“尾部”的区块可能会被替换(被一个具有不同“尾部”区块的更长的替代区块链所替换,51%算力攻击也是这样的原理)。众所周知,当存在多个竞争区块链时,大多数区块链网络采取的策略都是将最长的区块链(即具有最多工作量的区块链)作为共识链。如果两条有着不同尾部区块的区块链互相竞争,更长的那一条将获得胜利。不过,这并不意味着未能成功加入共识链的区块(竞争失败区块链的尾部区块)中交易会丢失,它们可能已被加入到后续的区块中或者返回到矿工的交易池中。我们常说区块链上的交易需要等待之后几个区块的确认时间就是因为区块链尾部区块的弱不可变性。

对于公有区块链来说(permissionless blockchain),采用更长的替代区块链上的区块可能是51%算力攻击的结果。为此,攻击者只需获取足够的资源,在生成区块的速度上超过区块链网络其余矿工的总和(持有区块链网络超过51%的算力资源用于生成新的区块)。鉴于区块链网络的规模,这是一种成本十分高昂的攻击形式,可能只有国家行为才能做到。执行此类攻击的成本随着攻击者想要篡改区块的深度(后续区块的个数)的增加而增加,从技术层面上来说,执行这种攻击并不困难(因为执行这种攻击只需要以更快的速度重复正常的区块生成过程,只是要选择每笔交易的去留),就是成本高昂。

对于许可区块链(permissioned blockchain)来说,遭受这种攻击的可能大大降低。许可区块链中通常存在区块链的所有者或者是由区块链网络用户组成的联盟,他们拥有很大的权力,可以决定节点在区块链网络中的去留。由于他们可以轻易地删除区块链网络中不合作的节点,因此网络中所有节点都会联合起来公平地挖矿,不太可能形成竞争区块链。除此之外,许可区块链中的用户通常还会签署具有法律效应的合同,在其中规定不当行为要付出的代价和他人采取法律行动的权力。虽然这种控制对于防止不当行为很有用,但这也意味着如果区块链的所有者或联盟需要,他们可以通过合法手段替换区块链中的任意区块。

2、没有人能控制区块链?错!

区块链网络的治理需要应对一系列指导和控制区块链的规则、惯例和过程,其中一个常见的误解就是区块链网络是没有控制权和所有权的系统,所以人们经常说“没有人可以控制区块链!”。从严格意义上来说这种理解是错误的。许可区块链网络通常是由管理区块链的所有者或联盟组织和运行。公有区块链网络通常由区块链网络用户,挖矿节点和软件开发人员共同管理,各方都有一定程度的控制权,都可以影响区块链网络发展的方向。

软件开发人员构建区块链网络使用的区块链软件。由于大多数区块链软件都是开源的,用户可以检查源代码,独立编译出一个区块链网络,甚至还可以创建一个单独但兼容的软件来绕过开发人员发布的预编译软件。但是,并不是每个用户都有能力做到这一点,这意味着区块链软件的开发人员将在区块链网络治理中发挥重要角色。这些开发人员可能会为整个社区的利益行事,并对此负责。例如,2013年比特币开发团队更新了最受欢迎的比特币客户端,但其中引入了一个漏洞并造成了两条区块链竞争的局面。开发人员不得不面临保留新版本(但尚未被所有人采用)还是恢复旧版本的抉择,哪一种选择都会导致另一条区块链被丢弃,这意味着一些区块链网络用户的交易将变得无效。最终开发人员做出了选择,恢复了旧版本并成功控制了比特币区块链的运行。

虽说这个例子是一个无意造成的分叉,但是这也让我们意识到,开发人员可以通过故意更新区块链软件来篡改区块链协议或格式。而且只要有足够多的用户采用,就可以成功进行区块链的分叉。通常区块链软件更新带来的分叉会提前讨论分叉时的区块高度并与相关用户协调。对于公有区块链网络,相关用户通常是指挖矿节点。在软件更新分叉之前会有很长的讨论周期和采用周期,所有用户必须在指定的区块后切换到新区块链软件以继续在区块链上记录交易。

对于公有区块链网络,尽管开发人员具有很大的影响力,但用户可以通过拒绝安装区块链软件更新来抵制开发人员的篡改。挖矿节点对区块链网络用户拥有很大的控制权,因为他们创建和发布新的区块。虽说没有明令要求,但用户通常都会接受挖矿节点发布的区块。这样做带来了一个有趣的副作用,公有区块链网络基本上由挖矿节点统治,挖矿节点可能会通过强制用户接受他们可能不同意的篡改来更新区块链,而不接受篡改的另一部分用户则会被边缘化。

许可区块链网络由相关所有者或联盟的成员进行控制和治理。联盟可以规定谁能加入网络,从网络中删除用户,规范智能合同的编码指南等等。

总之,软件开发人员,挖矿节点和区块链网络用户都参与了区块链网络的治理。

3、一切都能上链?错!

区块链网络可以很好地处理数字化系统中存储的数据。然而,当数据需要与现实世界交互时就会出现一些问题(通常称为预言机问题(Oracle Problem))。区块链网络可以用来记录用户输入的数据以及来自现实世界中传感器输入的数据,但它缺少某种方法来确定输入数据是否正确反映了现实世界,就比如说传感器可能会出现故障并记录不准确的数据,用户可能会记录虚假的信息(故意的或无意的)。这些并不是区块链网络专有的问题,所有的数字化系统都面临这样的难题。但不幸的是,区块链网络是假名的,处理数字网络之外的误传数据是一个很严重的问题。

就比如说,如果使用加密货币购买现实世界中的商品,区块链网络除了依靠外部传感器输入和用户输入之外没有任何方式可以确定商品是否发货(即现实世界中的交易是否成功)。

许多项目都试图解决“预言机问题”并创建可靠的机制以获得准确、可信的外部数据。例如,“Oraclize”项目提供了一种机制,即获取Web API数据并将其转换为区块链可读的字节码/操作码。但在去中心化应用中,这样的机制被认为有中心化的倾向,将成为容易遭受攻击的单点故障。结果是,最近出现了像“Mineable Oracle Contract”这样受区块链技术启发,建立在现有的共识模型和经济激励之上,旨在找到解决预言机问题新途径的解决方案。

4、区块链无法被关闭?错!

传统的中心化系统会不断地创建和关闭,去中心化的区块链网络也与之类似。但是,也正因为区块链是去中心化的,所以有可能即使区块链网络“关闭”了,但它永远不会完全的关闭,并且可能会有一些区块链节点一直运行下去。

但一个废弃了的区块链不再适合做历史记录,因为区块链网络中已经没有了很多挖矿节点组成的“护城河”,恶意用户可以轻松地使用算力压制为数不多的几个挖矿节点重做并替换任意数量的区块。

5、区块链绝对安全?错!

区块链技术的使用并未消除那些需要精心设计并主动管理的固有网络安全风险。这些固有风险中很多这都涉及人的因素。因此,一个强大的网络安全程序对于保护区块链网络和网络中各参与方免受网络安全威胁至关重要,尤其是在区块链网络以及其中漏洞都为黑客所知的情况下。

现有的网络安全标准和指导高度依赖于确保相关系统接口安全或依赖于区块链网络。考虑到区块链技术的某些具体属性,现有的标准和指导提供了保护区块链网络免受网络攻击的坚实基础。

除了一般原则和限制之外,一些与区块链技术相关的特定网络安全标准已经存在多年并被各行各业广泛使用。例如,美国国家标准与技术研究院网络安全框架明确指出它“并非一刀切来管理网络安全风险的方法”,因为”每个组织都有各自的风险,不同的威胁,不同的漏洞,不同的风险承受能力,所以他们实施框架中条例的情况会有所不同”。根据这种说法,尽管此框架并非专门针对区块链技术而设计的,但其标准十分广泛且足以涵盖区块链技术,可以帮助机构制定政策和流程来识别和控制影响区块链技术的风险。

网络攻击

得益于防替换和防篡改设计,区块链技术被吹嘘为非常安全的,交易一旦被提交到区块链之后通常都不能再改变。但是,只有当交易被加入到新发布的区块中这种说法才成立。尚未包含在区块链已发布区块中的交易容易受到几种类型的攻击。对于那些具有交易时间戳的区块链网络,时间欺骗或调整订购服务用户的时间戳可能会对交易产生正面或负面的影响,使得时间和基于时间戳的通信成为黑客的攻击向量。区块链平台中以及在区块链平台上部署的智能合约中可能会出现拒绝服务攻击。

区块链网络及其应用程序不能免疫那些能够执行网络扫描和侦察,从而发现和利用漏洞执行零日漏洞攻击(zero-day attacks)的恶意行为者。那些匆匆忙忙部署的基于区块链的服务,新编写的应用程序(如智能合约)可能包含已知的和未知的漏洞和部署缺陷,在未来某一天可能会被黑客发现并通过网络攻击,就像当下黑客攻击网站或应用程序一样。

6、恶意用户无法搞掉区块链?错!

虽然区块链网络可以强制执行交易规则和规范,但它无法强制执行用户行为准则。这是公有区块链网络中一个很严重的问题,因为用户是假名的并且用户在现实生活中的身份和在区块链中的身份之间没有一对一的匹配。公有区块链网络通常会提供奖励(例如加密货币)以激励用户表现出诚实行为,但是,如果恶意行为能够获得更多奖励时有些人可能会铤而走险。对于恶意用户来说,其面临的最大问题是如何得到足够多的资源(如权益证明区块链中的权益,工作量证明区块链中的算力等等)来执行攻击。一旦这些恶意用户联合起来且拥有了足够的资源,可能会进行很多种恶意挖矿行为,包括:

忽略来自特定用户,节点甚至整个国家/地区的交易。

秘密创建一个篡改了的替代区块链,然后在替代区块链长度超过原区块链时提交给区块链网络。根据区块链协议,诚实节点将切换到具有更多工作量的替代区块链上,从而打破区块链网络防替换和防篡改的原则。

拒绝将新生成的区块发送给其他节点(因为这样可以在下一个区块的竞争中抢占先机),从根本上扰乱区块链信息的分发机制(如果区块链网络足够去中心化,这将不是问题)。

虽然恶意用户可能会扰乱区块链的秩序并在短期内造成伤害,但区块链网络可以执行硬分叉来与它们对抗。无论这些恶意用户带来了多大的损害,造成了多大的损失都可以恢复,具体取决于区块链网络的开发人员和用户(The DAO事件中经社区商讨回滚交易,恢复了所有被盗的以太坊)。

除了区块链网络的恶意用户之外,许可区块链网络的基础设施管理员也可能会有恶意行为。例如,基础设施管理员可能会(取决于具体的情况)接管区块的生成,去除某些用户的交易,重写区块链历史,双重支付,删除资源,重新路由网络流量以及阻止网络连接。

7、区块链上不需要信任?错!

区块链的另一个常见误解是,人们在听说区块链中没有“可信任的第三方”后推断区块链网络是“无需信任”的环境。虽说在公有区块链网络中没有可信任的第三方来认证交易(这种无需信任在许可区块链网络中并不明显,因为这些网络的管理员通过准许用户加入和授予用户许可来管理信任问题),区块链网络的运行中仍然需要很多的信任:

要信任使用到的密码学技术。例如,加密算法及其实现都可能会存在漏洞。

要信任智能合约准确和无错误的操作,而智能合约中可能会有无意留下的漏洞。

要信任软件开发人员构建的尽可能无错误的软件。

要信任区块链中大多数用户没有秘密串通。如果某个团队或个体拥有50%以上的区块生成能力,那么他可以摧毁这个公有区块链网络。但是好在,获得必要的算力要付出非常昂贵的代价。

对于那些没有运行完整节点的区块链网络用户,要信任所有节点都公平地接收和处理交易。

8、共识算法极其高效?错!

区块链技术带来了一个全球性的网络,在其中每笔交易都能得到验证,且区块链中的数据在众多用户之间保持同步。在那些使用工作量证明的区块链网络中,有许多挖矿节点消耗大量的处理时间,更重要的是,也消耗了大量的电力。工作量证明方法是一种“难以破解,易于验证”的高效共识解决方案,但美中不足的是,它通常需要消耗大量的资源。由于应用和信任模型的不同,许多许可区块链技术不使用资源密集型的共识解决方案,而是使用不同的方法来达成共识。

工作量证明共识模型是针对系统中用户之间几乎没有信任的情况而设计的,它确保挖矿节点无法操纵系统每次都解出哈希谜题,因而无法控制区块链和添加到区块链中的交易。然而,围绕工作量证明共识模型的一个主要问题就是它通过消耗资源来解决谜题,而且通常消耗的资源并不是微不足道的。例如,据估计当下比特币区块链网络每年消耗电力比肩爱尔兰整个国家。据推测,到2020年比特币区块链网络每年消耗的电力将超过整个丹麦。随着软件和硬件的不断改进,工作量证明解谜的过程将变得更加高效,也就是说可以减少挖矿使用的电力。然而,与此同时区块链网络的算力也会增长,解谜的难度也会增加。

每当创建新的完整节点时都会给区块链网络带来额外的资源压力,因为完整节点必须获取(通常是从其他节点处下载)大部分或全部区块链数据(目前比特币区块链的数据已经超过175GB并且还在不断增加)。这个过程会占用很多网络带宽。

9、挖矿可以有效激励矿工?错!

区块链一个潜在的限制是挖矿奖励不足的风险。日益激烈的竞争,日益增长的算力需要对矿池做出有显著意义的贡献,而加密货币市场高度不稳定的币价会产生某些加密货币的预期回报可能小于运行挖矿软件所需电力成本的风险,此时,其他高预期回报的加密货币可能更具吸引力。

加密货币无法持续和充分地奖励挖矿节点的风险将会引发加密货币发布区块和处理交易的延迟,这些延迟可能会降低用户对加密货币的信心,从而进一步降低其市场价值,因而加密货币对挖矿节点的吸引力也就越来越小,如此恶性循环,更糟糕的是,这种削弱的加密货币将承受更大的风险,具有大量资源的节点可能会恶意篡改区块链或对尝试提交交易的用户进行拒绝服务攻击。

10、区块链上永远匿名?错!

一些人听说区块链技术中整合了公钥基础设施之后就立即相信它从本质上支持身份认证。事实并非如此,因为私钥对与用户之间并没有一对一的匹配(用户可以有多个私钥),区块链地址和公钥之间也没有一对一的匹配(可以从单个公钥导出多个区块链地址)。

网络世界中通常使用数字签名验证身份,这可能导致区块链在身份管理的潜在应用中产生混乱。区块链上交易的签名验证过程将交易连接到私钥的所有者,但并没有提供将这些所有者与现实世界中身份相关联的工具。在某些情况下可以将私钥连接到现实世界中的身份,但这些连接是通过区块链之外的操作进行的,而不是由区块链自身执行的。例如,执法机构可以要求加密货币交易所提供连接交易与个人的记录。另一个例子是个人为了获取捐赠在其个人网站或社交媒体上发布自己的加密货币地址,这种操作也将地址连接到了现实世界中的身份。

虽说可以在某些需要去中心化账本组件的身份管理框架中使用区块链技术,但要记住典型的区块链网络并不是为独立的身份管理系统而设计的,比起部署区块链来还有很多保障数字身份安全的方法。

关键词: 区块链

热点