联盟链环境下物联网轻量级网关研究

2023-12-30 05:26冯春波阿不都热衣木江阿白
计算机技术与发展 2023年12期
关键词:剪枝默克尔网关

冯春波,阿不都热衣木江·阿白,葛 翔,王 轶,程 力

(1.中国科学院 新疆理化技术研究所,新疆 乌鲁木齐 830011;2.中国科学院大学,北京 100049;3.新疆民族语音语言信息处理实验室,新疆 乌鲁木齐 830011;4.新疆维吾尔自治区信息中心,新疆 乌鲁木齐 830011;5.国网新疆电力公司营销服务中心(资金集约中心、计量中心),新疆 乌鲁木齐 830011;6.湖北大学,湖北 武汉 430000)

0 引 言

区块链(Blockchain)[1]是一种由多方共同维护的分布式账本技术,具有去中心化、不可篡改、可溯源等特性。区块链技术的去中心化特性与物联网的海量感知网络具有天然的耦合性[2-3],而基于密码学原理的不可篡改性和可溯源性则为物联网设备的身份认证、数据安全和可信存储提供了理论基础和全新的设计思路。

物联网网关是物联网中感知设备和上层应用连接的枢纽,同时也是物联网与区块链融合的关键设备,将区块链技术引入网关,可以增强物联网系统的安全性。然而,网关作为一种资源受限的物联网设备,一般不具备足够的计算和存储资源,无法支撑区块链节点功能的正常运行。其次,在网关中对感知设备进行可靠的身份认证,是保障物联网-区块链融合安全的重要基础。最后,作为一种数据汇集设备,网关运行时持续从感知设备获取感知数据,感知数据包含大量的正常感知数据与少量的异常感知数据。相较于正常感知数据,由于环境异常或设备本身异常而产生的异常感知数据对应用安全和设备安全更具价值。因此,如何在资源受限的物联网网关中,通过区块链技术保障设备接入和运行状态安全,仍是一个值得探究的重要问题。

针对以上问题,该文设计了一种基于联盟链的轻量级区块链-物联网网关原型。首先,基于联盟链的SPV[1](Simplified Payment Verification)架构搭建了轻量级的物联网-区块链网关原型框架,该框架仅存储本组织相关的交易数据;其次,基于感知设备的流量指纹与行为模式进行感知设备运行状态下的可信接入检测;再次,通过高效的机器学习算法识别关键异常感知数据并进行上链可信存储;最后,在资源受限网关的轻节点中对区块头中的默克尔树进行剪枝,进一步降低节点的存储空间需求并大幅度优化关联交易数据的链上验证时间性能。

1 相关工作

近年来,区块链技术的兴起为物联网安全研究开辟了新方向。区块链-物联网融合系统中,在融合架构方面,轻量级的融合架构是当前研究中需要解决的重要问题。B. Bünz等人[4]提出了基于NIPoPoWs(Non-Interactive Proofs of Proof-of-Work)的FlyClient,其只存储本地区块头数据。王思源等人[5]在其工作中引入SPV节点和超轻节点的概念,将权能令牌以交易的形式存储在区块链上,并且SPV节点只需存储区块头就能完成交易验证,而超轻节点只需维护一个令牌哈希值。H. Yahya等人[6]提出每个节点随机存储部分区块链数据,并通过鼓励相互验证提高数据可信性。上述工作对区块链节点进行的轻量化改进,在进行交易验证时需要向全节点请求数据,增加了网络中的通信开销。

在感知设备安全认证方面,S. Saha等人[7]提出了一种方案,即感知设备和网关之间相互认证,同时网关和边缘服务器之间也相互认证。边缘服务器从网关中提取传感数据并添加到区块链中,在该方案中,它能够将传感数据添加到区块链中,从而保证数据的安全性和可靠性,但是感知设备无法与区块链直接建立信任。S.C. Cha等人[8]提出为网关和每个新增设备分别创建智能合约,将两个智能合约绑定在一起,以实现设备在网关中的认证。沈海波等人[9]和F. Xu等人[10]则直接在网关中增加区块链相关功能模块。尽管这些方案都有一定的优点,但它们在智能合约、账本数据等区块链模块在资源受限的传统网关中应用所带来的压力问题方面考虑不足。

在融合框架的数据处理方面,张利华等人[11]针对电力物联网数据的数据存储提出了一种基于联盟链的解决方案。P. Kumar等人[12]面向智慧城市场景,通过区块链技术保证相关的隐私安全。G.S. Aujla等人[13]将区块链技术应用于室内健康监测,通过区块链技术进行数据的安全传输。T.H. Pranto等人[14]和M. Sultan等人[15]将区块链技术应用于农产品供应链场景中相关数据的安全存储。上述区块链在物联网中的应用多是将相关的数据全部存储在区块链中,这样物联网系统产生的高频感知数据占用了大量的存储资源。

2 基于联盟链的轻量级网关框架

该文提出了一种基于联盟链的轻量级网关框架,该框架主要由SPV模块、边缘计算模块和外部接口模块组成,如图1所示。

图1 轻量级网关原型框架

SPV模块是一个轻量级的联盟链节点,其中,数据同步功能同步与本组织相关的交易数据,以降低节点的存储压力。默克尔树剪枝功能对SPV节点区块头的默克尔树进行剪枝优化,进一步降低节点的存储空间需求,并大幅降低交易验证速度。本地存储以LevelDB[16]为载体将区块链数据存储在网关节点本地,数据服务为其他应用或设备提供交易查询、验证服务;边缘计算模块包括设备行为模式监测和感知数据异常检测两个核心功能,用于感知设备身份合法性判断和筛选出高价值的异常数据;外部接口模块用于支撑网关与IPFS(Inter Planetary File System)[17]、云服务器和区块链节点等系统或平台进行交互,从而实现分布式存储、大数据分析、智能合约等功能。

网关从感知设备采集感知数据,并从这些数据中提取感知设备的行为模式数据。网关主要处理这两类数据,其处理流程如图2所示。

图2 数据处理流程

网关对设备行为模式数据进行上链存储,并同步存储在网关的SPV模块,用于设备的可信接入认证。感知数据经过边缘计算模块中感知数据异常检测功能的处理之后分为正常感知数据和异常感知数据。对于正常感知数据在边缘侧进行聚合形成日志数据,定期存入链下扩展存储—IPFS中,而日志数据的哈希值存储到区块链上。对于异常感知数据,它们可能对应用的安全或设备的安全产生积极的意义,在边缘侧通过设备的运行状态判断异常产生的原因,然后将设备状态与感知数据一起进行数据上链。

3 轻量级网关核心功能

3.1 设备可信接入

设备可信接入既是保障物联网系统安全的重要手段,也是区块链中数据可信的基础。本团队前期研究工作通过基于感知设备流量指纹[18]的方式实现了设备的可信接入,但是缺少对感知设备在运行时行为合法性的监控。为此,该文进一步在网关中实时采集感知设备的行为模式,并通过JS散度(Jensen-Shannon Divergence)衡量感知设备当前的行为模式和链上存储到历史行为模式的差别,进而判断感知设备行为的合法性。这种基于JS散度对设备行为进行合法性判断的算法是一种具有敏捷性的轻量化身份认证算法,只需消耗较少的计算资源。

JS散度是对KL散度(Kullback-Leibler Divergence)缺少对称性的改进,可以更好地度量两个概率分布的相似程度。KL散度和JS散度的计算方法如公式:

(1)

(2)

公式中,P表示真实的概率分析,G表示预期的概率分布;DJS(P‖G)取值范围为[0,1],其取值越小表示两个分布越相似。

用D表示一个感知设备,T表示行为模式监测周期,p为判断阈值。通过设备的行为模式判断设备行为合法性的步骤为:

步骤1:初始化阶段,定期统计设备D向网关发送数据包的时间间隔,计算其均值和标准差,并使用得到的均值和标准差进行正态分布建模。记得到的正态分布的概率密度为f0(x)。

步骤2:设备正常运行时,持续计算网关接收到设备D数据包的时间间隔。然后,在每个周期结束计算当前周期网关接收到设备D发送的数据包时间间隔的均值和标准差,并将其进行正态分布建模,记其概率密度函数为ft(x)。

步骤3:从本地同步的区块数据中获取设备D在当前周期之前3个周期设备的行为模式,记设备D在上述3个周期中网关接收到设备D发送数据时间间隔的概率密度函数为f1(x),f2(x),f3(x)。

步骤4:将{ft(x),f0(x)},{ft(x),f1(x)},{ft(x),f2(x)}和{ft(x),f3(x)}4组概率密度函数带入公式,得到DJS(ft‖f0),DJS(ft‖f1),DJS(ft‖f2),DJS(ft‖f3)。

步骤5:为DJS(ft‖f0),DJS(ft‖f1),DJS(ft‖f2)和DJS(ft‖f3)分配权重,分别为0.5,0.25,0.15和0.1,计算得到加权JS散度DJS(AVG)。

步骤6:如果DJS(AVG)大于p,则将结果判定为异常,否则判定结果为正常。

3.2 感知数据异常发现

在生产环境中,网关采集到的感知数据通常包含大量的正常数据和少量的异常数据。由于区块链的存储方式采用了多节点冗余存储的架构,在资源受限的边缘侧尤其需要降低网关节点的存储压力。因此,该文选择只存储高价值的异常感知数据,以减少节点存储空间需求。通过基于LSTM(Long Short Term Memory)加滑动窗口的方式进行感知数据的异常检测,这种异常检测方法通过Tensorflow Lite实现,只需要较少的计算和存储资源。

用P和R分别表示在t时刻感知设备的预测值和实际值,在t时刻的误差计算公式为:

(3)

异常区间指以两个连续异常为端点所形成的区间。滑动窗口是从历史误差数据中取出的一段连续误差的集合,用于确定当前时刻误差在历史误差中的相对位置。为了具有代表性,滑动窗口应包含一定数量的异常区间。然而,在某个时间段内,异常发生的情况可能比较密集,也可能比较稀疏。因此,为滑动窗口长度设置最小值minLen和最大值maxLen。

感知数据异常检测分为建立模型、确定滑动窗口、异常判断和上链存储四个阶段。

(1)建立模型:用{…t-2,t-1,t0,t1,t2…}表示一个时间序列,其中t0表示当前时刻,用r0表示t0时刻网关采集到的实际感知数据,在t-1时刻,将t0之前一段时间的感知数据作为LSTM模型的输入,可以得到t0时刻的预测值p0。将p0,r0带入公式,可以得到t0时刻的误差e0,使用同样的方法可得到t0之前的误差集E。

(2)确定滑动窗口:用[ws,we]表示一个滑动窗口。用wn表示滑动窗口中包含异常区间的数量。设ln为当前时刻之前出现的第n(n≥0)个异常的时间点,则ws等于l0,we等于lwn。当历史异常值的数量小于wn时,将we的值设为ws+minLen。

(3)异常判断:计算E中数据的平均值(μ)和标准差(σ)。当e0大于μ+1.96σ时,将结果判定为异常,否则判定为正常。

(4)上链存储:当结果判断为异常时,根据网关边缘计算模块中的设备行为模式数据对感知数据异常的来源进行判断。若是因为设备自身而产生的异常,则将异常数据进行简化上链存储。否则,将异常数据进行完整的上链存储。

3.3 默克尔树剪枝

网关作为一种资源受限的设备,与其相连的设备对数据的需求大多为本组织中的交易数据,因此在网关中可以只同步存储与本组织相关的交易数据。

默克尔树剪枝算法的基本思想为:网关轻量级节点中只存储了本组织相关的交易数据,默克尔树剪枝算法在上述基础上实现了在区块头的默克尔树中剪掉与本组织无关交易的哈希值。这进一步简化了默克尔树,并降低了交易验证时的时间消耗。

在默克尔树剪枝过程中,首先计算交易的数量,并添加虚拟交易使交易能够构成一个高度最小的满二叉树。将虚拟交易的交易字段设为空,此时在以虚拟交易生成的节点作为叶子节点的树中,各层的哈希值是一致的,从而,在交易验证阶段不需要多次进行哈希计算,这保证了即使大量增加了虚拟交易,交易验证的工作量不会出现大幅的增加。

对连续多个不属于本组织的交易形成的叶子节点集进行分组,分组的方法为依次从叶子节点集取出能组成最高子树的叶子节点作为一个子集,直到叶子节点集变为空集,然后,用各个子集中的节点作为叶子节点所组成树的根作为该子集中节点的摘要存储在网关本地。具体示例如图3所示。

图3 默克尔树剪枝示例

图3中包含8个交易(Transaction,TX),默克尔树剪枝时对非本组织的交易{TX1,TX2,TX3,TX5,TX6}作丢弃处理。对相应的叶子节点{1,2,3,5,6},将节点A和B分别作为叶子节点{1,2}和{5,6}的摘要存储在网关本地。为了保证TX4可验证,将叶子节点3存储在网关中,最终形成一个以{A,3,4,B,7,8}为叶子节点,以{TX4,TX7,TX8}为交易的简化默克尔树。简化默克尔树能够在节省存储空间的情况下,保证{TX4,TX7,TX8}的可验证性,并加快交易的验证速度。

简化默克尔树中的叶子节点使用起始值和终止值字段标识该节点所代表的原始叶子节点的范围,例如,图3中的叶子节点A的起始值和终止值字段的数值分别为1和2,节点{4,7,8}的起始值和终止值字段的数值均为其自身的编号。

通过默克尔树剪枝算法,可以降低默克尔树的存储空间,同时,能够加快交易验证效率。默克尔树剪枝算法如下(算法1):

算法1:默克尔树剪枝伪代码

输入:交易数据集TXs,虚拟交易哈希序列virtualTXHashs,本组织编号LocOrgID

输出:剪枝后的交易数据集

1.计算交易组成的MerkleTree高度TXsHeight

2.for mkH:=0; mkH

3.distance := 2^i

4.定义tempTXs用于存储临时交易列表

5.for i:=0;i

6.if TXs[i].OrgID!=LocOrgID &&TXs[i+1].OrgID!= LocOrgID

7.if TXs[i]和TXs[i+1]的叶子节点距离均等于distance

8.由TXs[i]和TXs[i+1]计算生成哈希值TxHASH,若其叶子节点为虚拟节点则TxHASH=virtualTXHashs[mkH]

9.将TxHASH添加到tempTXs中,i+=2

10.else

11.将TXs[i]添加到tempTXs中,i+1=1

12.Return tempTXs //返回剪枝后交易

交易验证的基本思路是根据最新节点的区块头哈希获取上一个区块头,并在其中寻找到指定高度的区块。一旦找到该区块,就从其区块头中获取叶子节点列表。接着,需要遍历叶子节点列表中的哈希值,若目标哈希值在哈希值列表中存在,则可以验证该交易的合法性。

交易合法性的验证流程如下:首先,从区块头中取出叶子节点列表,并确定默克尔树的高度。接下来,按照从下到上的顺序对默克尔树进行逐层验证。在进行每一层验证时,假设当前层高为n,则交易间隔为2n。遍历叶子节点列表中的节点,通过节点中的起始值和终止值确定该节点的交易间隔。当节点的交易间隔为2n时,对该节点及其相邻的后续节点进行哈希计算。依此类推,直到叶子节点列表中只剩下一个节点时,该节点即为交易默克尔树的根节点。交易验证流程的算法伪代码如下(算法2):

算法2:交易验证伪代码

输入:交易所在区块高度blockH,交易哈希值TxHash,最新区块头哈希HeadHash

输出:交易是否合法

1.根据HeadHash查询区块,并从中取前区块的HeadHash,直到查询到目标区块block

2.merkleLeafNodes :=block.MerkleLeafNodes

3.for i := 0; i

4.if merkleLeafNodes[i].TxHash == TxHash &&blockH == blockHeight Then flag = True

5.if flag == False Then return Fale

6.for i:=0; i

7.定义tempNodes用于存储临时节点数据

8.for j:=0; j

9.if merkleLeafNodes[j].range == 2^i //2^i表示当前处理节点对应原始节点的数量

10.TxHash=SHA(merkleLeafNodes[j].key+ (merkleLeafNodes[j+1].key)

11.将通过merkleLeafNodes第j,j+1生成的节点放入tempNodes,j+=2

12.else

13.将merkleLeafNodes[j]放在tempNodes中,j+=1

14.merkleLeafNodes = tempNodes

15.root = merkleLeafNodes[0]

16.if block.MerkleRoot != root

17.return False

18.return True

4 实验设计与评估

4.1 实验设计

4.1.1 实验硬件基础

实验环境硬件包括1台在VMware ESXiTM7.0平台中部署的虚拟机、1台树莓派4B和1台PC,分别在其中部署了长安链2.1.0网络、文中的网关系统和感知设备模拟程序。虚拟机硬件资源配置为CPU: Intel(R) Xeon(R) Gold 6140 CPU @ 2.30 GHz,16核心,内存16 GB,操作系统为CentOS8.2。树莓派4B硬件资源配置为CPU:Broadcom BCM2711 @ 1.5 GHz,4核心,内存4 GB,操作系统为Ubuntu21.04。PC硬件配置为CPU: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40 GHz,4核心,操作系统为Windows10。

4.1.2 区块链网络

虚拟机中的长安链网络由4个通过Docker启动的共识节点组成,网络采用RAFT共识算法,单个区块的最大交易数为100,出块间隔为2 000 ms。感知数据异常检测滑动窗口的minLen和maxLen分别为60和200。

4.1.3 数据集

英特尔伯克利研究室(IBRL)传感器数据集为IBRL在2004年使用54个传感器采集到的约230万条的感知数据。该文将原始数据按照设备编号分组并按时间顺序排序整合为标准数据集。在标准数据集的基础上为每个设备添加了5% A.B. Sharma等人[19]所定义的异常数据,并将得到的数据集发布在Github (https://github.com/Trible863/GatewayTestDataset)上。通过将原始标准数据集进行复制实现增加设备数量到90个。取每个设备前10 000条数据,其中,前8 000条作为模型训练集,后2 000条用于本实验测试。

4.2 安全性分析

4.2.1 感知设备安全

为了验证设备可信接入功能的有效性,进行了感知设备异常行为检测实验,实验分为正常分组和异常分组。正常分组中各个设备以其自身初始化阶段的行为模式为基准,异常分组中各个设备以其它设备初始化阶段的行为模式为标准模型。之后以100秒为周期计算各个设备的JS散度值。

实验结果如图4所示。

根据实验结果显示,在正常分组中各个设备的数据包时延JS散度几乎均小于0.1,这表明正常设备的数据包时延呈现出一定的相似性和稳定性。相反,在异常分组中,各个设备的数据包时延JS散度几乎均大于0.1,这意味着异常设备的数据包时延具有更大的差异性和不确定性。综合分析可以得出结论,将判断阈值设为0.1时,通过设备行为模式对设备行为进行监测能够有效地识别设备的正常行为和异常行为。因此,该感知设备异常检测方案不仅能够帮助检测感知设备的异常行为,而且还能够增强物联网系统的安全性。该方案可以在现有的物联网系统中应用,以提高物联网系统的可靠性和安全性。

4.2.2 感知数据安全

感知数据异常检测能够从大量低质量的重复数据中筛选出有价值的异常数据,该文采用了LSTM和滑动窗口方法对感知数据进行异常检测。在提出的预测方法中进行了3 000次的预测,图5显示了将预测误差按1‰的组距分组统计的结果。

图5 模型预测性能

从实验结果看,随着误差率的增加,分组统计和累积比重逐渐增加。同时,当预测误差在0.9%以下时,占比达到了97.8%。这表明该预测模型的效果能够满足生产环境中的异常检测需求。

4.3 轻量级节点分析

4.3.1 节点运行时延分析

为了分析在网关中采用轻量级节点和在长安链全节点中进行数据上链和交易查询的时延情况,分别在网关节点和长安链节点中进行了数据上链和交易验证的实验。实验分9组进行测试,模拟感知设备的数量分别为{10,20,30,40,50,60,70,80,90},实验结果如图6所示,图6中“本地”和“节点”分别指在网关节点和长安链中进行实验得到的实验结果。

图6 网关运行时延

实验结果显示:在数据上链时延方面,在网关节点中和在长安链节点中的时延几乎一致,说明在网关中进行数据上链不会明显增加时延开销。在交易验证时延方面,在网关中向网关节点进行交易验证请求相较于向长安链节点进行交易验证请求,能够大幅度降低交易验证时延开销。

4.3.2 默克尔树剪枝分析

为了验证文中默克尔树剪枝方案的优势,进行了区块节点压缩测试、交易验证和默克尔树验证实验,对比方案为K. Saito等人[20]提出的轻量级节点方案(K. Saito方案),将K. Saito方案通过代码实现进行相关实验。

为了测试默克尔树剪枝方案相较于K. Saito方案在节点压缩上的优势,首先,根据不同的组织数量随机生成了5 000个交易,并模拟K. Saito方案区块中不同的交易数随机生成2 000个区块。然后,采用默克尔树剪枝算法对区块中默克尔树进行了剪枝,并计算默克尔树剪枝后叶子节点的平均数量。表1显示了文中方案相较于K. Saito方案(表1中基线方案)在叶子节点压缩上的效果。

表1 默克尔树剪枝结果

从实验结果看,当组织数量分别为4,6,8和10时,文中方案区块中的叶子节点数相较于K. Saito方案分别降低了36.6%,49.3%,57.4%和62.9%。这表明提出的默克尔树剪枝算法能够显著降低区块中的叶子节点数。

将组织数设为4,进行交易验证时延和默克尔树验证时延测试。在进行交易验证时延实验时,将区块中交易数设为100,然后,在不同的区块高度情况下测试了5 000次交易验证时延的情况并计算其均值,实验结果如图7(a)所示。进行默克尔树验证时延实验时,在默克尔树中包含一定交易数的情况下,随机生成了5 000个默克尔树。然后,测试默克尔树的交易验证时延,并计算默克尔树交易验证时延的均值,实验结果如图7(b)所示。

(a)交易验证时延

从图7可以看出,文中方案相比于K. Saito方案,具有更优秀的性能表现。在图7(a)中,文中方案的交易验证时延均小于K. Saito方案的交易验证时延,而且总体上比K. Saito方案优化了32.3%。这表明文中方案可以更快速地完成交易验证,从而提高了整个交易处理过程的效率。在图7(b)中,文中方案的验证时延相较于K. Saito方案明显降低。综上,文中方案可以被广泛应用于区块链轻量级节点技术的实践中,提高区块链系统的整体性能和效率。

5 结束语

该文提出了一种基于联盟链的轻量级区块链-物联网网关模型,在资源受限的设备上实现了物联网设备的可信接入、感知数据与设备的快速异常发现以及高效的数据处理,为区块链技术在物联网场景中的融合应用提供了可行的方案。

未来的工作将基于提出的新型智能物联体系架构,结合实际的物联网场景和感知数据类型,进一步优化提出的区块链网关系统。特别是,在区块链默克尔树中交易排序方面进行研究,以更好地优化轻量级节点的存储需求,实现轻量级、高可信和自适应的特性。这将有助于提升物联网系统的安全性和效率,并为实际应用场景提供更好的服务。

猜你喜欢
剪枝默克尔网关
人到晚年宜“剪枝”
基于YOLOv4-Tiny模型剪枝算法
剪枝
特蕾莎·梅——英国版“默克尔”
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”
一种实时高效的伺服控制网关设计
一种面向不平衡数据分类的组合剪枝方法
基于Zigbee与TCP的物联网网关设计
德国总理默克尔参加节日聚会 开怀畅饮