温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
交易
记录
特征
自私
检测
方案
王贺立
2023 年 4 月 Chinese Journal of Network and Information Security April 2023 第 9 卷第 2 期 网络与信息安全学报 Vol.9 No.2 基于交易记录特征的自私挖矿检测方案 王贺立,闫巧(深圳大学计算机与软件学院,广东 深圳 518060)摘 要:自私挖矿攻击是一种挖矿策略,存在基于工作量证明(PoW,proof of work)机制的区块链中。自私矿工通过延迟区块广播的时机来截取其他矿工的挖矿奖励,以此获得比正常情况下更多的收益。这种攻击对工作量证明机制的激励相容性造成了破坏。近年来,自私挖矿这一攻击行为被研究者从许多角度进行了研究和分析。然而这一挖矿策略利用了工作量证明机制区块链在网络延迟方面存在的缺陷,使得采用这一挖矿策略的矿工在行为上与正常挖矿行为没有明显的区别,导致当前缺少可以有效检测出自私挖矿行为的方案。因此,提出了一种自私挖矿的检测方案,该检测方案创新性地利用了区块链中区块的高度和区块中的交易记录特征,可以做到对网络中的自私挖矿行为进行实时检测,有一定的实用价值。所提检测方案为生成的新区块定义了一个状态值,这个状态值与区块中包含的交易数量、支付给矿工的交易费用等数据有关。根据这些特征值间的数学关系,可以判断出该区块是否来自自私矿工。通过仿真实验测试了攻击者在不同算力下,该检测方案的检测情况。结果表明,所提检测方案在判断区块是否来自自私挖矿时,有86.02%以上的检测准确率,可以有效地对自私挖矿产生的区块进行检测。关键词:区块链;自私挖矿;网络安全;比特币 中图分类号:TP391 文献标志码:A DOI:10.11959/j.issn.2096109x.2023025 Selfish mining detection scheme based on the characters of transactions WANG Heli,YAN Qiao College of Computer Science and Software Engineering,Shenzhen University,Shenzhen 518060,China Abstract:Selfish mining is an attack strategy in Proof-of-Work based blockchains,where attackers withhold their mined blocks to intercept the awards of other honest miners,resulting in higher profitability.This attack undermines the incentive compatibility of Proof-of-Work.Although there are various studies from researchers in recent years,there is no effective detection scheme as the vulnerability of blockchain in propagation delay makes it challenging to 收稿日期:20220731;修回日期:20221203 通信作者:闫巧, 基金项目:国家自然科学基金(61976142);深圳市科技计划项目(JCYJ20210324093609025)Foundation Items:The National Natural Science Foundation of China(61976142),Shenzhen Science and Technology Plan Project(JCYJ20210324093609025)引用格式:王贺立,闫巧.基于交易记录特征的自私挖矿检测方案J.网络与信息安全学报,2023,9(2):104-114.Citation Format:WANG H L,YAN Q.Selfish mining detection scheme based on the characters of transactionsJ.ChineseJournal of Network and Information Security,2023,9(2):104-114.第 2 期 王贺立等:基于交易记录特征的自私挖矿检测方案 105 distinguish the attackers from honest miners.A scheme for selfish mining detection was introduced.In this scheme,a state value was assigned to the new block based on transaction amount and the transaction fee of the block.By analyzing the relationship between state value and transaction characteristics,we can determine if the block was mined by a selfish miner.The scheme is verified by an experiment with an accuracy of 86.02%.Keywords:blockchain,selfish mining,network security,bitcoin 0 引言 工作量证明(PoW,proof of work)机制这种共识协议是激励相容的。激励相容是一个博弈论中的概念。若一个机制是激励相容的,则说明当所有的参与者在按照机制诚实地公开任何被要求的信息时,所有人都能趋向效用最大化,即矿工的期望收益与其所拥有的算力成正比。在这样的前提下,大的矿池不会为矿工带来收益上的优势,矿工没有动力相互联合起来形成一个更大的矿池。因此,一个正常规模的矿池对系统来说是无害的,因为矿池不会自发地扩大。对于被广泛使用的 PoW 共识机制的区块链来说,其安全性会受到来自拥有高算力比例的矿池或矿工的威胁。在最理想的情况下,当矿工或矿池拥有的算力在全区块链网络算力中的占比为 时,该矿工或矿池获得的区块奖励在全区块链网络中的占比也为。但是,现有的研究指出,自私矿工可以通过自私挖矿攻击1的方式获得额外的挖矿收益。在自私挖矿攻击中,自私矿工会在区块链中主动制造和维护一条属于自己的分叉链,并根据公链长度和自己私链长度等因素选择性地延迟发布区块。由于 PoW 机制尚未对这种恶意延迟发布的区块进行检测,当自私矿工发布的私链长度大于公链长度时,自私矿工便能利用这一缺陷截取到其他正常矿工的区块收益。1 相关研究 近年来,自私挖矿这一攻击行为已经被研究者从多个角度进行了研究和分析。与广为人知的日食攻击2相似,自私挖矿也需要让自身的算力在整个网络中的占比达到某个阈值才可以营利。这个阈值在 Eyal 和 Sirer 最初提出的自私挖矿策略中是 33%1,之后,随着关于营利阈值和策略研究的进行,这一阈值下降到了 25%左右3-6。目前也有关于自私挖矿过程分析的研究7-9,但关于防御和检测自私挖矿的研究却相对较少。在自私挖矿的检测和防御相关的研究中,Heilman等10提出了被称为“新区块优先”的防御性策略,这种策略可以将自私挖矿营利的算力要求从25%提高到 32%。这种策略需要在区块中单独写入一个被称为“不可伪造时间戳”的字段,矿工可以根据这个字段轻松判断出一个区块是否被恶意延迟广播,然后选择接受那些具有较新时间戳的区块。这个策略虽然可以很好地防御自私挖矿,但劣势在于需要额外增加一个“不可伪造时间戳”的管理单位,同时矿工在接收到区块信息时需要做额外的验证工作,这两个劣势对于区块链系统来说是不可接受的,因此这一策略虽然提高了自私矿工的挖矿成本,但并不能从根本上解决问题,而且不能防御时间戳修改的情况。Solat等11提出了“零区块”策略来防御自私挖矿,这个策略基于一个简单思路:每个矿工在挖到新区块后,必须在规定的时间内将其广播出去,否则不会被接受。这个策略虽然在技术上是有效的,但在实际应用中很难被矿工所接受。Chicarino等12提出了一种启发式的方案,根据区块链网络的分叉率13采用机器学习的方式来检测自私挖矿攻击,这种方案在自私矿工拥有较低算力占比时拥有极高的准确率,但随着自私矿工的算力占比上升,检测的准确率则随之下降。此外,这种方法不能被实时应用于区块链网络,缺乏实用性。为了弥补这些不足,本文提出了一种基于区块交易记录特征的自私挖矿攻击检测方法,使用这种方法,可以有效地检测出来自自私矿工的区块,检测准确率达到 86.02%以上。2 检测方案 2.1 自私挖矿原理 在文献1中,Eyal 和 Sirer 描述了自私挖矿106 网络与信息安全学报 第 9 卷 的最原始过程。自私矿工首先会从公链上分叉并维护一条与公链相对应的“私链”(简单来说,自私矿工接下来总是在这一条私链上进行挖矿,并将挖出的区块暂时不公开),然后根据自私挖矿策略来决定该区块的公开时机。初始状态下,公链和私链是完全相同的链,所有矿工开始在各自的链上挖矿。随后,诚实矿工若先挖到一个区块,诚实矿工会将这个区块立即广播,那么自私矿工收到这一消息后,根据领先区块的数量和使用的策略,选择是否公开自己的私链;但是若自私矿工先挖到区块,这个区块则不会被立即广播公开,它会被其加入自私矿工的私链。若诚实矿工接下来挖到一个新的区块,此时公链的高度或者长度则追上了自私矿工的私链,那么自私矿工会选择立即公布自己的私链,企图让网络选择这一私链作为公链。假设自私矿工的算力占全网算力的比例为,诚实矿工的算力比例则为 1-,进一步假设当区块链网络同时存在两个广播中的区块消息时,诚实矿工中会选择并接受自私矿工区块的矿工比例为,根据这一场景,图 1 给出了存在自私挖矿时,自私矿工领先区块数量的马尔可夫状态转移过程。图中的状态表示自私矿工私链领先公链的区块的数量,而当私链和公链的长度相同时,这一状态根据转移前的状态又分为状态0s和状态0s,对应的马尔可夫状态转移过程如下。图 1 领先区块数量的马尔可夫链过程 Figure 1 The Markov chain process for the amount of leading blocks 1)0s:此时为初始状态,自私矿工在自己私链上挖矿,诚实矿工在公链上挖矿,此时自私矿工的私链和区块链网络公链的长度相同,即自私矿工领先于诚实矿工的区块数量为 0。若自私矿工挖到一个区块,则马尔可夫状态转移到状态1s(即领先公链 1 个区块),这一转移概率与算力比值相同,为1-,更新后系统状态保持不变。2)1s:这一状态表示自私矿工的私链的长度领先公链 1 个区块。若自私矿工选择不公开私链,并又挖到一个新区块,则状态会被转移为到状态2s(即领先公链 2 个区块),这一转移概率同样为;若此时诚实矿工挖到了 1 个区块,则自私矿工的状态会回到状态0s,概率为1-。3)0s:这一状态表示自私矿工的私链长度从领先于公链 1 个区块转变为不领先的状态。当自私矿工的私链领先公链的区块数量为1个时,自私矿工在私链上挖矿,诚实矿工在公链挖矿。若诚实矿工挖到 1 个新区块并广播,自私矿工在接收到这一区块广播的消息后,会立即广播其私链上的区块,此时区块链网络中会同时存在两个长度相同的链,区块链网络需要根据全网其他节点对这两条链的确认情况选择其中一条。接下来会出现 3 种情况:自私矿工挖到下一个区块,私链会被接受为公链,自私矿工获得这两个区块的区块奖励,私链长度与公链相同,自私矿工的状态回到0s,这一概率为;部分诚实矿工在自私矿工的私链上挖矿,然后挖到 1个新区块,那么自私矿工和这部分矿工获得了这1 个区块的奖励,