热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

山石岩读丨一文读懂区块链安全:区块链会带来哪些冲击?

山石岩读丨一文读懂区块链安全:区块链会带来哪些冲击?

 

通过上期《山石岩读》,我们了解了区块链是什么,以及在加密货币应用领域中区块链应用程序的三个可能的通用用例。区块链在带来更多可能的同时,也必然带来巨大的冲击。这些冲击将会给我们带来怎样的影响呢?

 

三、区块链技术带来的冲击

 

衡量区块链潜在影响的一个方法是考虑该技术的完整性可扩展性,当然,还有其它安全性和隐私方面的影响。

 

1.完整性

 

公共和私有区块链环境对完整性的影响是不同的。公共区块链网络存在于一个“无许可”的环境中,任何人都可以使用适当的软件在网络上执行交易。此外,网络不受中间机构控制,并且其参与者,包括执行交易的用户和验证交易的节点都不受信任,因此,用户和节点身份依赖于用户/节点的公共地址,而身份验证则是使用相应的私钥完成的。时间戳交易数据在节点之间共享,以确保实现网络的并发控制。为了验证交易的有效性,每个节点都积极检查其交易数据集合,为需要处理的交易数据创建一个新区块,并将该区块呈现给对等节点。

 

网络从那些能提供最快的响应时间最高质量的新区块,且能满足一组预先确定的验证规则的节点中选择和奖励胜出的节点(例如,那些融合有效区块到每个节点账目的永久交易节点)来发布区块。满足最快的响应时间和最高的质量要求统称为工作(量)验证(PoW),于是这种共识模型对网络来说,通过消耗计算资源(如计算机硬件、电力)来确保了完整性。PoW提供了强大的完整性保证,并能容忍一定程度的攻击,它迫使攻击者至少获得网络中51%的算力,才能影响到整个网络,这就是所谓的“51%攻击”。然而,实际上这种类型的攻击需要至少75%的节点才能奏效。除了身份验证机制和不可篡改的账目之外,公共环境和私有环境的区块链之间几乎再没有相似之处了。

 

私有区块链网络在私有的、受许可的环境中运行,通常使用指定的网络操作员,且操作员和其他参与者彼此都认识。私有区块链的运行成本更高,并且在使用投票方案做出决策时并不奖励节点,而是通常采用“拜占庭式容错”(BFT)共识模型,在这种模型中,一组节点同意一个交易区块的有效性。BFT提供了更大程度的对恶意节点数量的容忍度,即最多33%的节点是恶意的,而PoW却只能容忍25%的恶意节点。私有区块链还对节点的隐私和交易数据的访问进行了更严格的控制,消除了与PoW相关的算力和环境方面的影响。这种机制对于为参与者(如买方/消费者和供应商/网络提供者)提供交易隐私是必要的。例如,使用相同网络的买方可能从多个供应商处获得相同的产品,这些供应商根据买方和供应商之间唯一协商的数量和其他无形条件确定不同的单价(当然,对其他供应商来说是保密的)。此外,供应商可以选择自己作为买方,在同一网络上使用自己的定价体系和其他无形条件转售产品,而不是自己为买方生产产品。

 

区块链的完整性等同于信任的程度。PoW需要交易数据来证明交易历史,并将这种程度的信任绑定到计算资源的花费上。消耗的资源和可查的交易越多,就越值得信任,相应地,区块链的完整性也就越高。通过用BFT替换PoW,节点不会为提交无效区块承担任何实际后果,这使它们更可能以牺牲可用性为代价产生出不一致的结果。因此,在必须保持高度交易完整性的场景中,BFT可能就是不可接受的了。对去中心化的削弱也影响了私有区块链的完整性。节点仍然必须为提供处理交易的基础设施而得到补偿,这种补偿通常来自于网络运营商所提供的法定货币。由于这种支付没有使用网络的通用令牌,网络的完整性可能就会因无需考虑提交无效区块的后果而受到影响。当可用的节点数量较少时,网络操作员对网络的影响力就会增大,这就要求参与者们更加信任网络。

 

所有这些因素都可能影响网络的可用性,并产生欺诈或第三方干扰,从而可能催生出审查机制。账目的一致性也会受到所处环境的影响。经过验证的交易通过使用交易的哈希值和前一区块头部的哈希值,以追加的方式在时间顺序的基础上聚合成区块,并被合并到账目中。因此,将当前区块链接到以前各区块的机制,使更改先前交易的任何尝试都变得极其困难,并且可以防止在交易被接受为有效后再对它们进行篡改。任何没有历史记录记载的交易都被认为是不存在的。

 

然而,如果交易记录有错误,这些错误可能是基础设施问题智能合约编程错误所造成的,该如何纠正这些错误呢?对于公共区块链来说这是无法做到的,错误的交易不能被纠正,只能被普遍接受。在重要的应用场景中,主要的变更是通过主要代码更新(例如,一个硬分支)来完成的,这包括对所有受影响的交易进行全面的账目更新,以解决所发现的问题。硬分支违背了账目一致性的总体原则,并且经常在区块链团体内引起争议。在加密货币领域,对于硬分支的争论导致了竞争解决方案的诞生,比如以太坊和比特币。相比之下,在私有区块链中纠正交易错误则在本质上并非难事,因为这种设计允许网络运营商作为一个隐含的受信中间权威机构来纠正这种错误。

 

2.可扩展性

 

当前区块链技术的一个已知限制是其有限的吞吐量,这个指标是以每秒处理的交易数来度量的。平均来说,比特币每秒可处理7笔交易,而以太坊每秒可处理15笔交易,瑞波币(Ripple)每秒能处理1500笔交易,是目前最快的主要加密货币。相比之下,Visa网络每秒能处理大约24000笔交易,较低的交易处理率通常会导致单个交易确认的等待时间更长。并且,由于可能出现事务回滚,因此交易的最终结果会更少,从而产生更高的交易费用。

 

应对可扩展性问题的解决方案包括:增大区块、把签名与交易数据分离、“分片”交易和链下交易等。增大区块会增加操作节点的成本,减少节点的数量,更易导致产生较强大的集中实体。区块大小的在公共区块链上比较难更改,需要硬分支,且常常受到用户社区的质疑。“分片”可以有效地将区块链分割成更小的块,这些块具有自己独立的状态片段和交易历史,这使得在所有“分片”中处理的交易总吞吐量比在单一主区块链中完成所有工作高很多。链下交易允许在主网络之外处理交易,之后再将其添加到主网络中。但链下交易也违反了去中心化原则,因为执行此类任务的节点必须获得显式信任。虽然这些技术在解决可扩展性问题方面很有前途,但它们最多只能被认为是实验性的。

 

四、安全与隐私

 

安全和隐私的角度来看,区块链技术由于其组件的复杂性且尚处于初级发展阶段而没有被很好地理解。网络体系结构的设计和访问控制是降低网络内部威胁的关键。为了加强区块链技术的安全性,首先应要求正确连接的节点数达到最小化,且这些节点应是被指定和授权参与到联盟中的或在私有区块链共识过程中形成的。这个最小化的数量应足够大,以满足网络完整性保护需求。由于公共区块链易受到前文提到的“51%攻击”,所以应确保网络拥有足够的在地理上分散的节点数,以防止来自任何单一实体、某个特定国家或世界上特定地区的串谋行为。私钥证明了所有权和被分配的执行某些交易的权利,因此,安全性取决于对私钥的选择和保护。例如,比特币的安全模型依赖于一个由1到1077之间的整数组成的私钥。虽然这数字看起来并不多,但实际上,**空间基本上是无限的了。由于私钥包含许多数字,因此使用“钱包导入格式” (WIF)可以将私钥简化为一系列字符和数字。大多数区块链钱包可以生成一系列字符作为备份,考虑到它们的重要性,在存储或传输私钥或保护备份字符时要格外小心。大多数软件钱包提供对用户友好的PIN码、密码或口令来加/解密存储的私钥,并将加密的钱包保存在用户电脑的主硬盘上。然而,钱包的PIN码、密码或口令的**空间必须足够大,以防止被rainbow表反向**,特别是在哈希算法(例如SHA256)的弱点已知的情况下。

 

由于大多数区块链技术都是开源的,可用的文档可能不是最新的,所以特定区块链平台所提供的正式培训也可能是有限的,这就导致大多数开发人员通过反复试验进行自学,所以很可能会犯重大错误,进而写出bug较多的代码。这种情况使得智能合约成为区块链安全性最重要的弱点来源之一

 

明白了区块链技术带来的冲击,那区块链创建和管理有哪些安全问题?区块链是否已经准备好迎接黄金发展期?

 

欲知更多区块链知识,请关注下期《山石岩读》。


推荐阅读
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 如何使用代理服务器进行网页抓取?
    本文介绍了如何使用代理服务器进行网页抓取,并探讨了数据驱动对竞争优势的重要性。通过网页抓取,企业可以快速获取并分析大量与需求相关的数据,从而制定营销战略。同时,网页抓取还可以帮助电子商务公司在竞争对手的网站上下载数百页的有用数据,提高销售增长和毛利率。 ... [详细]
  • Harmony 与 Game Space 达成合作,在 Shard1 上扩展 Web3 游戏
    旧金山20 ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
  • 寻求更强大的身份和访问管理(IAM)平台的企业正在转向云,并接受身份即服务(IDaaS)的灵活性。要为IAM选择正确的场外解决方案,业务管理人员和IT专业人员必须在实施之前评估安全 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • 区块链为什么是不可篡改的
    不可篡改是区块链最为重要的特性和应用之一。其是由区块链本身的结构、共识机制、网络拓扑和加 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
萤之光
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有