张翔
虚拟货币的“挖矿”是指通过计算机解决一定的数学问题来产生新的虚拟货币的行为。挖矿是区块链技术的重要组成部分,自虚拟货币诞生以来,挖矿的主要形式是工作量证明(PoW),即在比特币等许多虚拟货币区块链中,挖矿者(矿工)必须寻找一个特定的哈希值。这个过程是随机的,需要大量的计算,只有找到该值,矿工才有权将新的区块添加到区块链中,并获得一定数量的虚拟货币作为奖励。挖矿通常具有以下特点:
1.密集性:挖矿完成大量的无意义计算,通过解决复杂数学问题,奖励与设备性能、能耗通常成正比。
2.竞争性:矿工通过挖矿来竞争获得虚拟货币。一般是第一个成功解决问题的矿工获得奖励,即使通过矿池,这种机制也导致了大量无意义计算。
3.可靠性:挖矿有助于维护虚拟货币网络安全。矿工通过解决问题来验证交易并添加新的区块以确保网络的完整性和去中心化。
4.奖励机制:矿工获得新发行的虚拟货币作为奖励,这一般是参与挖矿的根本动机。
我国自2021年后,由发改委、网信办等十多家部委联合开展工作,对挖矿采取了严厉的管制,通过多种手段监管、防治各类挖矿活动,取得了优异的治理效果。教育行业中,高等院校因算力大且密集的突出特点,成为挖矿整治的重点对象。挖矿的危害包括但不限于:
1.能源消耗巨大:挖矿大量消耗能源,产生大量碳排放,违背绿色发展理念,影响碳中和国家战略。我国西部、北部等使用非可再生能源进行挖矿的企业曾出现扎堆现象,对能源供应和生态环境造成了负面影响。
2.扰乱金融秩序:虚拟货币没有政府信用支撑,炒作扰乱正常金融秩序,甚至成为洗钱、非法转移资产等违法犯罪活动的工具,也使区块链产业污名化,发展受限。
3.网络安全隐患:挖矿需要使用大量计算设备,巨大利益使得相关灰色产业发达,引发了数据泄露和病毒感染等安全问题,病毒和僵尸网络以利用终端进行挖矿为目的。同时其规模算力过于集中,也为正常的区块链带来了安全问题。
4.加剧市场竞争:挖矿竞争激烈,因其去中心化和匿名性,大量矿工采取不道德或非法的手段来获取更多的利益。虚拟货币价格走高的同时,硬件资源竞争加剧,高性能GPU等设备价格疯涨,影响电脑、游戏产业发展。
主动挖矿和被动挖矿的界定主要在于参与者的行为和动机方面有所不同。
主动挖矿,指在挖矿活动中,个人或组织有意识地积极参与挖矿活动。通过投资设备、能源和时间来进行PoW计算,创建新的区块,并验证交易以获得挖矿奖励。主动挖矿者一般出于经济动机,目标是赚取虚拟货币奖励和交易费用。典型代表是比特币、早期以太坊等PoW共识机制的虚拟货币。
被动挖矿的情况目前主要有两种:其一是指个人或组织不直接积极参与挖矿活动,而通过其他方式获得收益,例如权益证明(Proof of Stake,PoS)或委托权益证明(Delegated Proof of Stake,DPoS)等等,此类收益通常通过质押来获得,不用进行大量计算,例如以太坊2.0;其二是指硬件设备被人为操纵,被病毒、木马、网页脚本等手段控制后,被动地参与了PoW挖矿,这种情况硬件设备通常是网络安全问题的被害者。特别是浏览器挖矿,WEB服务器被入侵后植入挖矿脚本到页面中,致使访问者一旦访问该网页,设备就可能开始被动挖矿,危害范围较广。
过去数年,我国高压态势打击挖矿,相关企业大规模外迁,转向北美、俄罗斯、中亚,甚至中东、非洲、南美洲,国外对挖矿活动的监管宽松,相关研究动力匮乏,国内对挖矿检测的研究相对国外更具有持续性,力度更大。
目前对主动挖矿行为的检测技术分类未见统一标准。中国信息通信研究院安全研究所将检测技术分为:挖矿协议流量识别、威胁情报匹配、攻击链模型关联识别、基于AI的基因模型监测四类。国家计算机网络应急技术处理协调中心将检测识别技术分为三类:一是基于异常能耗与实地调查的方法;二是基于AI算法的网络流量检测方法;三是基于矿池IP流量的检测识别方法。也有研究认为有两条路线,一种是模型单机部署,另一种是网络中心结点部署模型。
本文通过整理近年来国内文献得出,主机端和流量端两个方向是最适用于描述检测的基本分类,并将主动挖矿的检测技术归纳分类如下图:
图1 主动挖矿检测
1.基于矿池协议:挖掘活动普遍需要与矿池连接,通信过程采用特殊的协议。目前比特币、门罗币等PoW虚拟货币使用了如Stratum、GetWork、GetBlockTemplate等协议。Stratum协议是当前最主要的矿机和矿池之间的通信协议,矿工通过该协议连接矿池、获取任务、获取挖矿任务,提交工作量。通过识别通信流量中的挖矿协议,可以找到明显的标识特征。国家计算机网络应急技术处理协调中心的研究提出了一种检测识别模型和多维度挖矿指纹特征提取方法,实现了挖矿自动检测识别。童瑞谦等人[1]提出的面向未知挖矿行为通信协议流量的自动化识别方法实现了99%的识别准确率。
2.基于流量特征:徐宁等人[2]提取挖矿流量在统计和时序方面的特征以及数据包特征参数进行建模,形成了检测模型。杨家海等人[3]提出了一种基于时间序列追踪的挖矿流量检测方法和装置,采集检测时间区间的原始流量数据集,以区块创建时间序列为基准,通过相似度计算生成检测结果。余文等人[4]提出了提取协议流,再分析挖矿通信协议封装的传输数据包,最终识别并定位出源主机的方法。近期的研究趋于结合AI,Caprolu等人提出了一种基于机器学习的框架,覆盖了矿池挖矿、单独挖矿以及活动节点,证明了流量特征对于挖矿检测的有效性[5]。
3.基于DNS:中国联通广东分公司提出了一种算法,基于DNS流量、AAA日志和威胁情报数据,自动识别挖矿行为和矿工。此类方法适合网络运营商或管理机构。
主动挖矿的大量计算活动会导致CPU或GPU使用率较高,能耗陡增,所以对计算设备的检测会从系统行为、程序文件特征、能耗表现等方面进行分析,主要包括:
1.基于特征签名:检测恶意软件的成熟方法,静态分析与特征库进行匹配从而识别出挖矿程序。近年来的研究将此类方法归为“传统手段”,作为其他新检测的参照物。
2.基于多种特征:傅建明等人[6]的研究从内在层级联系出发,提取多种静态特征,训练三层模型将这些特征分别嵌入向量化,利用分类器实现了挖矿恶意软件的检测。目前静态分析逐步趋向混合化。
3.基于API调用:挖矿在系统中难以避免调用,所以调用检测在研究中倍受青睐。Berecz等人[7]基于API序列选择与挖矿关联的API与动态链接库、文件属性作为特征,建立了机器学习检测模型。曹传博等人[8]提出了“挖矿软件行为多样期(Behavioral Diversity Period of Cryptominer,BDP)”的概念以及相应的挖矿恶意软件早期检测方法,并迅速改进为基于AECD词嵌入的挖矿恶意软件早期检测方法,以软件在运行初期所调用的一定长度的API序列为检测对象,实施对挖矿恶意软件的早期检测,取得了98.21%的Accuracy值检测效果。
4.基于系统负载:此类检测技术方法早先多见于被动挖矿的检测,如“cryptojacking”,多数以CPU和GPU的负载情况为数据依据。邢宝玉等人[9]通过监测GPU的第一调用信息和第二调用信息,判断加载进程是否为恶意挖矿行为。Gangwal等人[10]利用硬件性能计数器(HPC)结合机器学习手段提取明晰特征,通过决策模型实现了在不同处理器上的检测。
5.基于能源消耗:基于能耗的检测是依据挖矿活动大量消耗能源的活动特征,通过对能耗数据进行分析而得出检测结果的一种有效方式。早在2018年,基于机器学习与能耗的检测方法被提出,通过监控物联网设备的能耗来检测挖矿,并监控不同进程的能源消耗模式而将应用程序分类。2019年国际嵌入式计算与系统设计研讨会文献中,有学者比较研究了在嵌入式设备中的挖矿时的功耗、电源变化及其对整个系统的影响。
虚拟货币挖矿从高潮回落低潮,网络安全行业相关研究成果丰硕,我国作为曾经的虚拟货币算力大国,为响应政府严厉打击挖矿活动的政策法规,研究热度出现了逐年上升的现象。根据Hashrate Index最新发布的2023年第三季度比特币挖矿报告,当前的算力价格处于历史最低水平。互联网的检索数据也证实了挖矿热度逐渐退却的这一趋势。
从研究发展趋势看,融合多种方法是大势所趋。比如威胁情报与人工智能就是各个研究中常见的检测方法强化手段。本文所归纳的各种检测类型正在更多地以模块、环节的形式互相结合,特别是以深度学习为代表的多种算法。此外,也有研究者认为使用PoS共识替代PoW有助于减少其能源消耗,这体现了个别地区解决挖矿危害采取了堵不如疏的解决思路。本文大胆预测,挖矿检测相应的关注与研究也将在全球范围内逐步减少,但新检测方法的有效性和检出率将持续提高。