- 外文资料译文:
区块链系统安全性调查
摘要
区块链技术自问世以来,就展现出广阔的应用前景。 从最初的加密货币到现在的智能合约,区块链已经应用到很多领域。 虽然对区块链的安全和隐私问题有一些研究,但对区块链系统的安全性缺乏系统的考察。 在本文中,我们对区块链的安全威胁进行了系统研究,并通过检查流行的区块链系统来调查相应的真实攻击。 我们还回顾了区块链的安全增强解决方案,这些解决方案可用于各种区块链系统的开发,并提出一些未来的方向来推动该领域的研究工作。
关键字 区块链,信息安全,加密货币,智能合约
- 引言
自 2009 年比特币问世以来,其底层技术区块链显示出广阔的应用前景,引起了学术界和工业界的广泛关注。作为第一个加密货币,比特币被评为 2015 年表现最好的货币 [1] 和 2016 年表现最好的商品 [2],并在 2017 年 5 月每天有超过 30 万笔确认交易 [3]。随着时间的推移,区块链技术已被应用到许多领域,包括医学[4-6]、经济学[7-9]、物联网[10-12]、软件工程[13-15]等。引入图灵完备的编程语言,使用户能够开发在区块链上运行的智能合约,标志着区块链 2.0 时代的开始。借助区块链的去中心化共识机制,智能合约允许互不信任的用户完成数据交换或交易,而不需要任何第三方的信任授权。以太坊现在(2017 年 5 月)是支持智能合约的最广泛使用的区块链,已经有 317,506 个智能合约,每天发生超过 75,000 笔交易 [16]。
由于区块链是 FinTech(金融科技)行业的核心技术之一,用户对其安全性非常关注。最近报告了一些安全漏洞和攻击。Loi等人发现现有的 19,366 个以太坊合约中有 8,833 个易受攻击 [17]。请注意,具有安全漏洞的智能合约可能会导致财务损失。例如,2016 年 6 月,犯罪分子利用递归调用漏洞攻击了智能合约 DAO [18],并窃取了约 6000 万美元。再举一个例子,2014 年 3 月,犯罪分子利用比特币的交易可变性攻击最大的比特币交易平台 MtGox。攻击导致了 MtGox 的崩溃,价值 4.5 亿美元的比特币被盗 [19]。
尽管最近有一些关于区块链安全性的研究,但都没有对区块链系统的风险、相应的真实攻击和安全性增强进行系统的检查。与我们最接近的研究工作是 [20],它只关注以太坊智能合约,而不是流行的区块链系统。从安全编程的角度来看,他们的工作分析了以太坊智能合约的安全漏洞,并提供了可能导致漏洞的常见编程陷阱的分类[20]。尽管 [20] 中列出了一系列针对智能合约的相关攻击,但缺乏对安全增强的讨论。本文从更全面的角度关注区块链的安全性。本文的主要贡献如下:
- 据我们所知,我们对流行的区块链系统的安全风险进行了首次系统检查。
- 我们调查了从 2009 年至今(2017 年 5 月)对流行区块链系统的真实攻击,并分析了这些案例中利用的漏洞。
- 我们总结了提高区块链安全性的实际学术成果,并提出了该领域的一些未来方向。
本文的其余部分安排如下。 第 2 节介绍了区块链系统中使用的主要技术。 第 3 节系统地检查了区块链的安全风险,第 4 节调查了对区块链系统的真实攻击。 在第 5 节总结了区块链的安全增强功能后,我们在第 6 节提出了一些未来方向。最后,第 7 节总结了本文。
- 区块链技术概述
本节介绍区块链中采用的主要技术。我们首先介绍区块链中使用的基本信任机制(即共识机制),然后解释节点之间的同步过程。之后,我们介绍了区块链的两个发展阶段。
-
- 共识机制
作为一个去中心化的系统,区块链系统不需要第三方信任的权威。相反,为了保证数据和交易的可靠性和一致性,区块链采用了去中心化的共识机制。 在现有的区块链系统中,主要有四种共识机制[21]:PoW(Proof of Work)、PoS(Proof of Stake)、PBFT(Practical Byzantine Fault Tolerance)和DPoS(Delegated Proof of Stake)。其他共识机制,如 PoB(带宽证明)[22]、PoET(流逝时间证明)[23]、PoA(权威证明)[24]等,也用于一些区块链系统中。两个最流行的区块链系统(即比特币和以太坊)使用 PoW 机制。 以太坊也加入了 PoA 机制(即 Kovan 公测链 [25]),其他一些加密货币也使用 PoS 机制,如 PeerCoin、ShadowCash 等。
PoW 机制使用谜题的解决方案来证明数据的可信度。谜题通常是一个计算困难但易于验证的问题。当一个节点创建一个块时,它必须广播到其他节点,从而达到共识的目的,如图1所示。
图 1. PoW 共识机制
在不同的区块链系统中,区块结构可能在细节上有所不同。通常在比特币中,每个块都包含 PrevHash、nonce 和 Tx [26]。其中 PrevHash 表示最后生成的区块的哈希值,Tx 表示该区块中包含的交易。nonce 的值是通过解决 PoW 谜题获得的。一个正确的随机数应该满足方程式中所示的哈希值。 (1) 小于一个目标值,可以调整它来调整 PoW 谜题的难度。
SHA256(PrevHash || Tx1 || Tx2 || . . . || nonce) lt; 目标值 (1)
PoS 机制使用加密货币的所有权证明来证明数据的可信度。在基于 PoS 的区块链中,在创建区块或交易的过程中,用户需要支付一定数量的加密货币。如果创建的区块或交易最终可以被验证成功,加密货币将作为奖励返还给原始节点。否则会被罚款。在 PoW 机制中,需要大量的计算,造成计算能力的浪费。相反,PoS 机制可以大大减少计算量,从而提高整个区块链系统的吞吐量。
-
- 块传播和同步
在区块链中,每个全节点都存储着所有区块的信息。 作为建立区块链共识和信任的基础,区块传播机制可以分为以下几类[27]、[28]、[29]:
-
- 基于广告的传播。这种传播机制起源于比特币。当节点 A 接收到一个区块的信息时,A 将向其连接的节点发送一条 inv 消息(比特币中的一种消息类型)。当节点 B 接收到来自 A 的 inv 消息时,它将执行以下操作:如果节点 B 已经有了这个区块的信息,它就什么也不做。如果节点 B 没有信息,它会回复节点 A。当节点 A 收到节点 B 的回复消息时,节点 A 会将这个区块的完整信息发送给节点 B。
- 区块头传播。这种传播机制是对基于广告的传播机制的改进。在区块头传播机制中,节点 B 会向节点 A 发送 区块头消息(比特币中的一种消息类型),当节点 A 收到一个区块的信息时,会直接将区块头信息发送给节点 B。与广告相比基于传播机制,节点A不需要发送inv消息,从而加速了区块传播。
- 主动推送传播。在主动推送机制中,一个区块被挖出后,矿工会直接将该区块广播给其他节点。在这种传播机制中,没有 inv 消息和区块头消息。与前两种传播机制相比,主动推送机制可以进一步提高区块传播的速度。
- 中继网络传播。这种传播机制是对主动推送机制的改进。在这种机制下,所有矿工共享一个交易池。每笔交易都替换为一个全局ID,这将大大减少广播的块大小,从而进一步降低网络负载,提高传播速度.
- 推送/广告混合传播。这种混合传播机制用于以太坊。我们假设节点 A 有 n 个连接的对等点。在这种机制下,节点 A 会直接将区块推送给 n 个对等节点。对于其他 nn 个连接的对等点,节点 A 将向它们通告块哈希。
图 2. 节点之间的块同步过程。
不同的区块链系统可能使用不同的块同步过程。在以太坊中,节点 A 可以向节点 B 请求块同步,但总体难度更大。 具体流程如下(如图2所示)[27]、[28]、[29]:
- 节点 A 向节点 B 请求最新区块的头部,这个动作是通过发送 GetBlockHeaders 消息来实现的。 节点 B 将向节点 A 回复一个 BlockHeaders 消息,其中包含 A 请求的块头。
- 节点A请求MaxHeaderFetch区块从节点B寻找共同祖先。MaxHeaderFetch的默认值为256,但节点B发送给A的区块头数可以小于该值。
- 如果A经过以上两步还没有找到共同祖先,节点A会继续发送GetBlockHeaders消息,每次请求一个区块头。 此外,A 重复二进制搜索以在其本地区块链中找到共同祖先。
- 节点A发现共同祖先后,A向共同祖先请求区块同步。 在这个过程中,A 每次请求都会请求 MaxHeaderFetch 块,但是从 B 发送到 A 的实际节点数可能小于这个值。
图 3. 查询比特币交易历史。
图 4. 用比特币支付。
图 5. 用比特币收款。
-
- 技术开发
从第一个区块链系统比特币诞生以来,区块链技术经历了区块链1.0和区块链2.0两个发展阶段。
在区块链 1.0 阶段,区块链技术主要用于加密货币。除了比特币,还有很多其他类型的加密货币,比如莱特币、狗狗币等等。目前有超过 700 种加密货币,它们的总市值超过 260 亿美元 [30]。加密货币的技术栈可以分为两层:底层去中心化账本层和协议层[31]。加密货币客户端,如比特币钱包[32],运行在协议层进行交易,如图3、图4、图5所示。与传统货币相比,加密货币具有以下特点和优势[33]
(1)不可逆、可追溯。使用加密货币进行转账和支付操作是不可逆的。一旦行为完成,就不可能撤回。此外,所有用户行为都是可追溯的,这些行为都永久保存在区块链中。
(2) 去中心化和匿名。加密货币的整个结构没有第三方组织参与,也没有像银行那样的中央管理。此外,所有用户行为都是匿名的。因此,根据交易信息,我们无法获取用户的真实身份
(3) 安全且无需许可。加密货币的安全性由公钥密码学和区块链共识机制保证,犯罪分子难以破解。此外,使用加密货币无需申请任何权限或许可。用户可以通过相关客户端简单地使用加密货币
(4) 快速和全球化。使用加密货币只需几分钟即可完成交易。由于加密货币主要基于公共链,因此世界上任何人都可以使用它们。因此,用户的地理位置对交易速度影响不大。
表 1. 支持智能合约的区块链系统统计(截至 2017 年 5 月)
在区块链 2.0 阶段,引入了智能合约,开发者可以通过智能合约创建各种应用。智能合约可以被认为是一个轻量级的 dAPP(去中心化应用程序)。以太坊是区块链 2.0 的典型系统。每个以太坊节点都运行一个执行智能合约的 EVM(以太坊虚拟机)。除以太坊外,其他几个区块链系统也支持智能合约,其信息列于表 1 [34]。在以太坊中,开发者可以使用多种编程语言来开发智能合约,例如 Solidity(推荐语言)、Serpent 和 LLL。由于这些语言是图灵完备的,智能合约可以实现丰富的功能。图 6 展示了智能合约的开发、部署和交互过程。每个部署的智能合约对应一个唯一的地址,用户可以通过该地址通过不同客户端(例如 Parity、Geth 等)的交易与智能合约进行交互。由于智能合约可以通过消息相互调用,开发者可以基于可用的智能合约开发更多功能丰富的dAPP。与传统应用程序相比,dAPP具有以下特点和优势[35]:
(1) 自治。dAPP是在智能合约的基础上开发的,智能合约在区块链上部署和运行。 因此,dAPP 可以自主运行,无需任何第三方的协助和参与
(2) 稳定。 智能合约的字节码存储在区块链的状态树中。 每个全节点保存所有区块和 stateDB 的信息,包括智能合约的字节码。 因此,某些节点的故障不会影响其运行。 这种机制保证了dAPP 可以稳定运行
(3) 可追溯。由于智能合约的调用信息以交易的形式存储在区块链中,因此dAPP的所有行为都被记录和可追溯
(4) 安全。公钥密码学和区块链共识机制可以保证
剩余内容已隐藏,支付完成后下载完整资料
英语原文共 13 页,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[596246],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。