物联网中基于区块链的密态内容审计方案
2022-04-07张天喜王利朋周春天杨艳艳李晓冲
张天喜,王利朋,周春天,杨艳艳,李晓冲
(1.鹤壁市广播电视台,河南 鹤壁 458030; 2.郑州师范学院,河南 郑州 450044; 3.北京大学,北京 100871)
0 引 言
物联网(Internet of Things, IoT)是继计算机和互联网之后的第三次信息技术革命,低功耗广域网(Low Power Wide Area Network, LPWAN)技术以低功耗、远距离、可以大规模网络部署的优势,得到了广泛关注,而远距离无线电广域网(Long Range Radio Wide Area Network, LoRaWAN)作为LPWAN中的重要组成技术也成为了当前的一个研究热点[1-2]。
目前的LoRaWAN技术主要应用于水表气表、烟雾报警器、宠物跟踪器等较为小型的终端设备,依赖于其传输距离远、低功率、良好的抗干扰能力和高敏感性等特点,LoRaWAN技术已经成为目前物联网技术的一个重要模块[3-6]。一个完整的远距离无线电广域网系统必须包括3个部分:终端设备、边缘设备和云端服务器。终端设备的作用是采集并上传数据;边缘设备也被称为集中器或采集器,负责中转命令;服务器负责下发命令和数据的打包处理。
由于LoRaWAN自身的固有特性,其目前也面临一些严峻的安全问题。一方面,传感器节点通常会部署在无人值守的环境中,容易出现物理损耗及损伤,而且容易受到第三方的恶意攻击,被改造成恶意节点并利用其发动各种攻击。另一方面,由于受限于传感器节点本身的能源储备,其计算与存储能力较弱,从而导致传统的网络安全防护机制不能高效地在其中发挥作用,其面临的安全问题愈发凸显。因此研究适用于无线传感网络的通信安全机制具有重要的意义[7-9]。
为了解决网络中传感器设备在效率和私密性方面并不完全可靠的问题,实现物联网密态内容审计,本文在同态加密技术的基础上,提出一种适用于LoRaWAN的密态内容审计方案,实验结果与分析表明,本文提出的方案能够实现对密文数据执行高效、快速地范围查询操作,能够有效解决目前物联网中存在的集中化数据管理、单点故障以及数据被篡改的问题,同时可以实现查询结果的溯源。
1 相关工作
2015年,Xu等人[10]根据隐私保护技术原理的不同,将无线传感器网络中数据聚合的隐私保护方案分为加密方案和不加密方案2种。
无线传感器网络中使用最多的不加密的隐私保护算法是数据扰动技术,通过修改数据的真实值,使攻击者无法获取真实数据[11-12]。加密方案包括逐跳加密[13]、安全多方计算[14]、数据切片[15-17]和隐私同态[18-20]。
2004年,Girao等人[18]基于同态加密技术提出了一种用于无线传感器系统的隐私加密密码系统CDA,该系统需要利用相同的密钥来进行加解密,因此系统中每个节点都需要相同的密钥,从而导致系统机密性有所下降。2016年,Elhoseny等人[19]将同态加密和椭圆曲线加密算法相结合,并且利用遗传算法构建动态的最优簇,使其网络系统的安全性能大大提升。2018年,Zhong等人[20]提出了一种基于椭圆曲线加密的同态加密方案,通过过滤无线传感器网络中的虚假数据,减少了不必要的能量消耗。
目前的LoRaWAN通讯方案主要存在以下一些问题:1)由于物联网系统中的节点和通信信道安全防护措施大量依赖加密操作,导致了其运行效率不高,计算资源损耗严重;2)用户查询记录等重要信息需要借助边缘节点进行存储和管理,而边缘节点容易遭受攻击,进而导致数据泄露;3)为了统计密态信息及追踪恶意行为,需要实现一套高效透明的可溯源信息管理系统,而当前的LoRaWAN通讯方案尚缺乏相应功能。
为了解决上述的问题,本文提出一种适用于LoRaWAN的密态内容审计方案,该方案主要具有以下一些优点:1)本文方案利用布隆过滤器,对生成的密文进行预处理,在物联网通信中实现了更好的隐私性和更高的效率;2)利用同态加密技术,将用户查询记录等重要信息进行加密操作,在边缘节点遭受攻击后,确保隐私信息不会泄露;3)利用区块链的分布式、溯源性、不可篡改性、不可否认性等特性,将区块链与物联网结合,防止数据被恶意篡改,并追踪节点通信记录,有效减少恶意节点对网络系统的破坏。
2 背景知识
2.1 BGN同态加密
BGN加密方案是一种基于双线性对性质实现的具有全同态性质的加密方案,在2005由Bonel等人提出的一种同态加密方案,和传统的仅能支持单同态的Elgamal和Paillier加密方案不一样,BGN能够支持加同态和一次乘同态运算[21-22]。
BGN具有以下同态性质:
1)自盲性:E(m,r+r′)←E(m,r)·hr′为m的有效密文。
2)加法同态性:E(m1)·E(m2)=E(m1+m2)。
3)乘法同态性:E(m1)m2=E(m1·m2)。
2.2 Bloom Filter数据结构
2.3 区块链技术
区块链是一种用于数据可信管理的分布式账本技术,无需第三方可信中心协助,就可以实现对数据或资源溯源的功能[25]。区块链这一概念最早是由中本聪在比特币白皮书中提出的,自2009年起,各种各样基于区块链的数字货币相继出现[26]。区块链发展至今,除了在数字货币应用之外,还有各种衍生应用,如金融监管、物流溯源等,已经引起政府部门、金融机构以及科技企业等部门的广泛关注[27]。区块链技术具有去中心化、时间戳标记、多节点维护、可编程和匿名性等特点,已经从最初单纯的数字货币应用扩展到社会应用的各个方面[28-30]。
3 方案设计
3.1 物联网系统模型
在物联网系统模型中,本文考虑一个典型的LoRaWAN场景,该场景主要由一系列物联网设备I={I1,I2,…,IN}、边缘设备F={f1,f2,…,fN}、云端服务器NS以及查询用户U构成,如图1所示。
图1 物联网系统模型
1)物联网设备。
一组物联网设备I={I1,I2,…,IN}部署在终端设备层。它们具有感应、生成数据和通信能力。每个物联网设备Ii∈I通过设置在每个物联网设备Ii和边缘节点F之间的安全通道,定期向其对应的边缘节点F报告其准备好的数据Di。此外,为了简单起见,本文假设Di是[1,n]范围内的正整数。在实际使用中,如果Di的值是一个浮点值,那么依据用户需要,将其统一乘以10的n次幂转换为一个整数,以到达保留小数点后n位的目的。例如,智能水表中的数据可以根据用户需要统一乘以10的1次幂或2次幂。
2)边缘设备。
边缘节点F={f1,f2,…,fN}位于物联网终端设备和云端服务器之间,作为物联网设备收集数据、接收云端转发的数据并为用户准备聚合结果的边缘设备。它具有一定的通信和计算能力,是成功执行查询的关键节点。
物联网终端设备在开始通信之前需要向边缘节点发出入网请求,包括身份信息和认证密钥,边缘节点在收到入网请求后,向云端服务器发送确认请求,确认无误后会给终端设备分配网络地址,同时生成网络对话密钥和应用会话密钥,构建安全信道用来对传输的数据进行加密和校验。
3)云端服务器。
云端服务器NS位于物联网边缘设备和用户之间,其功能主要有收集其他物联网设备数据、接收用户查询以及为用户计算查询结果,具有较高的通信和计算能力,可以作为整个物联网系统的网络控制器。
4)查询用户。
3.2 隐私保护方案
3.2.1 系统初始化
KGC运行此算法生成系统密钥和系统公共参数,由下列5步组成:
1)选取系统安全参数κ作为输入,KGC生成长度为κ的大素数p和q,2个阶为N=pq的循环群G和GT,以及双线性映射e:G×G→GT。g为循环群G的生成元。
2)选取g∈G,计算h=gq,h为G的p阶子群的随机生成元。
3)选取k个哈希函数,过程如下:
4)系统公钥pk=(N,g,G,GT,e,h)。
5)公布系统公共参数params=〈H1,H2,…,Hk〉并将公钥pk和私钥sk=p发送至用户。
3.2.2 加密查询信息
当用户对物联网中的数据发起范围为[L,U]的计数聚合查询时,利用一组布隆过滤器BF和公钥pk来加密查询信息,具体步骤如下:
2)根据分组为每个布隆过滤器BFj生成一个标记值rj,rj∈{0,1},为每个布隆过滤器BFj的rj计算一个对应的加密信息Ej(r)=grjhl∈G,其中l∈ZN。
3)对数据范围n中的每个数据d依次计算k次哈希值H′d=Hki(d),其中1 4)如果d在范围[L,U]中,那么将其哈希值H′d组织到BF1中,否则组织到BF0中。 5)生成密文Q=(BFj,Ej(r)),其中1≤j≤logn,并发送至云端服务器。 3.2.3 生成查询结果 在云端服务器接收到查询密文Q后,将其转发至边缘节点F,边缘节点F向其管理的物联网设备发送数据请求。最终查询结果由边缘节点和云端服务器共同生成,具体步骤如下: 1)物联网设备I对其持有的数据D⊆[1,n]进行k次哈希计算H′d=Hki(D),其中1 2)物联网设备I将生成的R=H′D作为响应数据,通过安全信道发送至边缘节点F并上传至区块链中。 3)边缘节点F利用布隆过滤器BFj(1≤j≤logn)对每个R进行处理。如果R在BFj中,则BFj对应的内部计数器Cj递增。 4)边缘节点F计算查询结果ERes=Ej(r)·Cj,并将加密结果和节点响应结果(ERes,R)发送给云端。 3.2.4 解密查询结果 用户在从云端接收到云端查询结果(ERes′,T)后,使用私钥sk解密获得查询结果Res。 解密结果正确性分析如下: 其中,rj是布隆过滤器BFj在分组时产生的标记值,Ej(rj)是根据布隆过滤器BFj的rj生成的BGN密文,Cj是边缘节点F中为每个布隆过滤器BFj生成的内部计数器。 3.2.5 数据上链 云端在计算最终的聚合结果ERes′后,将查询请求Q、边缘节点聚合结果ERes、终端响应结果R以及时间戳T上传至区块链中。 当用户对某次查询结果出现争议时,可以通过区块链查看该次查询操作中所有节点的计算数据。 在本文中,针对物联网的计数聚合通信设计密态审计方案,本文方案主要由以下部分组成:系统初始化、用户注册、生成查询、物联网设备响应、边缘节点结果聚合、解密结果和数据溯源,图2给出了本文方案的系统架构。 图2 本文方案系统架构 3.3.1 系统初始化 系统初始化阶段,KGC运行BGN生成(N,g,G,GT,e)等系统参数,选择加密哈希函数H1,H2,…,Hk,将params=〈H1,H2,…,Hk〉发送至所有边缘节点和物联网设备。 3.3.2 用户注册 用户在进行查询之前,需要向密钥生成中心注册身份,KGC生成会话密钥pk=(N,g,G,GT,e,h)和解密私钥sk,将pk和sk发送至用户。 3.3.3 生成查询密文 当查询用户对物联网中[L,U]范围的计数聚合发起范围查询时,查询用户将运行以下步骤: 1)查询用户生成一组数据 2)生成查询,将整个数据范围[1,n]组织到布隆过滤器(BF0∪BF1)中,其中查询范围[L,U]中的项插入到BF1中,其余的项([1,n]-[L,U])放入BF0中。 3)用户将生成的查询数据 用户生成查询密文算法伪代码如算法1所示,其中,代码中的PickRandomBloomFilter()函数功能为随机选择一个布隆过滤器并使内部分配的计数器加1。当计数器的数值达到m时,函数PickRandomBloomFilter()将在下一轮选择中忽略该布隆过滤器。 算法1 查询密文生成算法 用户输入查询范围[L,U] for eachj∈[1,logn] r=RandomInetger(0,1) Ej(r)=BGN.encrypt(r) BFj=NewBloomFilter() ifr=0 then //布隆过滤器分组 BF0←BFj else BF1←BFj End if end for for eachi∈[1,n] Hi=i for eachki∈[1,k] Hi=Hki(Hi) end for ifi∈[L,U] then //随机选择布隆过滤器 BFl=PickRandomBloomFilter(BF1) else BFl=PickRandomBloomFilter(BF0) end if BFl.addElement(Hi) //插入元素 end for return 3.3.4 物联网设备查询响应 对于每个物联网设备Ii⊆I,在接收到从边缘节点发送的数据请求后,运行内部加密操作,计算其拥有数据Di⊆[1,n]的键值,即Ri=H(Di),从边缘节点接收到查询请求后,通过安全信道将Ri作为对边缘节点查询请求的响应。 3.3.5 边缘节点结果聚合 边缘节点F在收到由云端发送的查询消息后,向其管理的物联网设备发送数据请求,在接收到物联网设备Ii(i∈[1,n])的响应结果Ri后,边缘节点开始成员查询过程,对于每个响应结果Ri寻找其可能存在的布隆过滤器BFj。之后,边缘节点计算加密结果ERes,并将加密结果ERes返回给云端并上传至区块链,边缘节点聚合伪代码如算法2所示,代码主要包括2个步骤,分别为边缘节点对响应数据的处理和计算聚合结果,为了确保数据的安全性,计算结果会进行自盲处理。 算法2 边缘节点聚合算法 边缘节点接收物联网设备节点响应信息Ri for eachRi for each BFj//j∈[1,logn] if BFj.MemberTest(Ri) then Cj=Cj+1 //过滤数据并计数 end if end for end for ERes=BGN.encrypt(0) for each BFj//j∈[1,logn] ECj=BGN.mul(Ej,Cj) ERes=BGN.add(ERes,ECj) //数据聚合 end for ERes=BGN.SelfBlind(ERes) //聚合结果自盲化 return ERes //生成聚合结果 3.3.6 上传查询结果 云端在接收到边缘节点F的加密数据后,将其加入时间戳后打包上传至区块链中,之后计算最终的聚合结果ERes′,并发送至用户。 3.3.7 解密结果 用户在接收到加密的聚合结果ERes′后,可以使用私钥sk恢复查询结果Res。 3.3.8 数据溯源 用户可以对查询结果ERes′进行溯源,通过区块链将获取查询请求对应的边缘节点聚合结果ERes和终端节点响应结果R,并再次进行聚合操作对结果进行验证和溯源。 本文中区块链选用公有链,利用区块链实现数据上链和数据查询,通过区块链的不可篡改性和公开校验性来确保物联网系统中的历史数据的可信性和可追溯性。 本章针对本文算法抵抗安全问题的能力进行分析,以评估算法的隐私保护能力。在本文方案中,将边缘节点和终端节点设定为诚实但具有好奇心的半诚实模型。 本文方案的安全目标为边缘节点和对物联网进行窃听的敌手无法获取用户查询数据,也无法通过破解本文算法倒推出用户查询信息。在以上前提下,本章针对以下方面进行证明,以验证本文方案的安全性。 定理1 边缘节点或基于窃听攻击的敌手根据物联网中公开的信息成功恢复用户原始查询数据的概率是可忽略的。 证明:边缘节点或进行窃听攻击的敌手能够获得的数据主要有用户查询密文Q=(BFj,Ej(r))和系统公开参数(H1,H2,…,Hk)这2个部分。在本文方案中,用户的查询范围[L,U]是需要受到隐私保护的主要信息。为了提升查询效率,本文方案中的查询范围[L,U]是组织在logn个布隆过滤器BFj中。终端节点无法获得用户查询密文Q=(BFj,Ej(r)),所以在终端节点处不存在隐私泄露的可能。可以看出,若想得到用户的查询范围[L,U],边缘节点或敌手需要从布隆过滤器BFj中恢复数据并判断其是否在查询范围[L,U]中。 假设边缘节点或敌手可以通过猜测整个数据范围[1,n]的方式,从布隆过滤器BFj处得到每个布隆过滤器BFj存储的数据D⊆[1,n]。但是,边缘节点或敌手如果要区分数据D是否在查询范围[L,U]中,则需要区分布隆过滤器BF0和BF1,那么边缘节点或敌手必须破解布隆过滤器BFj对应的密文Ej(r)。 也就是说,边缘节点或敌手成功还原用户原数据的概率可以归约于在仅有密文的情况下攻破BGN算法的概率。由BGN加密算法的语义安全可知,在仅有密文且没有其他任何参数的情况下攻破BGN算法的概率是可忽略的。因此边缘节点或敌手成功获取用户数据的概率也是可忽略的。 综上所述,边缘节点或基于窃听攻击的敌手根据成功获取用户查询范围[L,U]的概率是可忽略的。 定理2 用户可以校验并溯源边缘节点或敌手根据物联网中公开的信息制造的伪造数据信息。 证明:在本文方案中,所有设备产生的数据都将上传至区块链中。区块链中主要存储查询密文Q对应的云端上传数据(Q,ERes′,ERes,R,T)和终端节点上传数据R。 用户可以在解密之后通过区块链获取本次查询中设备产生的数据,验证终端节点上传的数据R和云端上传数据(Q,ERes′,ERes,R,T)中的R是否一致来判断数据是否被边缘节点或敌手伪造。若R一致,则重新计算边缘节点聚合结果ERes,并验证其与云端上传数据(Q,ERes′,ERes,R,T)中的聚合结果ERes是否一致,若一致,则验证通过,数据未被伪造。 当上述的验证失败时,可以对伪造数据溯源。当终端节点上传的数据R不一致或重新计算的边缘节点聚合结果ERes不一致时,可以得出在该边缘节点处数据遭到了伪造攻击。并且,在验证结束后,用户依然获取到了正确的聚合结果。 综上所述,用户可以通过区块链校验并溯源边缘节点或敌手根据物联网中公开的信息制造的伪造数据信息。 定理3 边缘节点或敌手根据物联网中公开的信息成功篡改聚合结果的概率是可忽略的。 证明:在本文方案中,采用数据上链的形式确保数据不被篡改。基于区块链去中心化设计可以保证区块链中保存的信息不被恶意修改,利用区块链的不可篡改性的特征,保护本文方案中各个设备产生的数据的可信性。 终端节点在将数据R发送至边缘节点后,将其上传至区块链,利用区块链的不可篡改性确保数据R不会遭到篡改。同样,边缘节点的聚合结果ERes也将上传至区块链中,云端将运行过程中各设备产生的信息(Q,ERes′,ERes,R,T)上传至区块链中,以确保数据的完整性和可信性。 本文采用模拟实验来比较分析本文方案与传统方案的性能差异,区块链系统采用EOS,系统环境配置如表1所示,实验中主要利用区块链的不可篡改性和可追溯性特性。 表1 系统配置环境 在实验中,终端节点数量限定为1000个,数据规模n为{102,152,202,252,302},本文方案主要采用布隆过滤器优化用户查询生成阶段和节点响应阶段的同态加密运算次数,将n次同态加密运算减少到logn次。本文模拟实验中,物联网终端节点响应运算为线性运算,实际运算时,物联网设备应同时响应,实际聚合时间应去除物联网终端节点响应时间。 相较于传统的基于BGN的隐私保护范围查询方案,本文采用了布隆过滤器,基于布隆过滤器设计一种区间分解和组合技术,在提升运行效率的基础上,进而实现信息的脱敏化。 在密文生成阶段,传统BGN方案的加密运算次数依赖于数据规模,本文方案的加密运算次数取决于布隆过滤器的数量。从图3可以看出,相较于传统方案,本文提出的方案在查询密文生成阶段时的加密运算大大减少,由n次(数据规模)运算减少到了logn次(布隆过滤器数量)。 图3 用户生成查询耗时 在传统BGN方案中,终端节点需要进行同态加密运算,在本文方案中终端节点只需进行哈希计算即可。从图4可以看出,相较于同态加密运算,本文采用的哈希计算耗时大大降低,由43 ms降到了8 ms。 图4 终端设备节点响应耗时 传统BGN方案中,边缘节点聚合时进行的同态加法运算次数由终端节点数量决定,本文方案中边缘节点的运算同态加法运算次数取决于布隆过滤器的数量,但是,本文方案还需对终端节点响应结果进行处理。从图5可以看出,在终端节点数量相同的情况下,数据范围对聚合时间无影响,本文方案相较于传统方案,在聚合阶段边缘节点聚合耗时由84 s降到了42 s。 图5 边缘节点聚合耗时 由图6可以看出,由于本文方案在解密阶段和传统方案一致,均进行了一次解密操作,所以在解密阶段耗时基本一致。另外,可以从图7的区块链性能测试中看出区块链的耗时远远小于加密运算,对本文方案的总体执行时间影响甚微。 图6 用户解密结果耗时 图7 区块链运行耗时 综上所述,本文提出的方案相较于传统方案,在查询生成阶段、节点响应阶段以及结果聚合阶段执行效率更高,运行效率相较于传统方案提高到了O(logn)。 本文以实现物联网通信中隐私保护为目的,基于区块链去中心化、不可篡改等特征,设计了一套适用于LoRa技术的物联网高效通信隐私保护方案,该方案利用了开源LoRaWAN协议定义的网络架构,增强了物联网通信系统安全性。本文通过使用布隆过滤器,对相应的密文进行组织,以加快执行效率;通过使用同态加密技术,在保护数据的前提下,实现有效的隐私保护和范围查询功能;利用区块链技术实现对通信数据的溯源,方便之后对问题节点的追踪。 相比于传统的BGN加密方案,本文采用布隆过滤器提升效率导致了系统中各节点处的数据安全性有所降低,为了提升安全性,本文方案的公开参数中并不包含加密算法的参数,从而限制了系统的进一步扩展,这将是算法需要进一步研究的安全性能,使其能够适配到更多的应用场景中。3.3 系统架构
4 安全性分析
4.1 机密性
4.2 抗数据伪造攻击
4.3 不可篡改性
5 仿真实验
6 结束语