APP下载

结合区块链的物联网数据安全共享机制

2023-08-29李井涵沈国华卞书钰张小玉

小型微型计算机系统 2023年8期
关键词:主客体访问控制合约

李井涵,沈国华,2,3,杨 阳,卞书钰,张小玉

1(南京航空航天大学 计算机科学与技术学院,南京 211106)

2(南京航空航天大学 高安全系统的软件开发与验证技术工业和信息化部重点实验室,南京 211106)

3(软件新技术与产业化协同创新中心,南京210093)

1 引 言

如今是万物互联的时代,物联网(Internet of Things)、传感器技术飞速发展,爱立信一项研究表明到2050年全球将会有240亿台设备[1]相互连接,为人类提供服务.物联网设备不仅实现了人与物、物与物和人与人之间的联系,更进一步应用在智能工厂[2]、智慧农业[3]、智能医疗[4,5]等诸多领域.物联网设备之间相互协作,信息共享,改变了生产模式,提高了生产效率,在人类社会的发展中发挥了重要作用.但随着物联网规模的不断扩大,其网络结构也越来越复杂,设备之间的数据交互频率也越来越高.其中数据安全问题引起人们的重视.在物联网系统环境下如何建立一套在不同组织之间的安全、有效的数据共享机制成为了研究者们关注的重点.

物联网设备会产生、交换大量的数据,机密或私人的信息可能包含在传输的数据中,未经身份验证或授权的用户一旦使用系统功能,极有可能带来数据安全隐患[6].此外,如有不诚实的用户,在获得授权后,滥用系统功能,恶意交换数据,或发送无意义数据,又或者窃听数据,也可能给其他用户带来经济或人身上的损害.传统的数据共享机制往往将设备产生的数据传输给可信的第三方实体[7],第三方实体使用一系列方法分析数据,为用户提供服务.然而,用户一旦提交自己的数据,就失去了对数据的控制权,用户无法知道数据是否泄露,是否被交易,集中式的数据管理机制对数据拥有者不透明,存在个人隐私泄露的风险.除此之外,第三方实体数据安全问题频发,导致了现阶段不可信的网络环境,一部分用户对第三方实体持不信任态度,所以有必要提出一种可信的、安全的数据共享机制.

区块链技术的出现为解决此类问题提供了一个新的方法.与传统中心化的架构不同,区块链是一种分布式的点对点网络,这种网络能提供良好的安全特性如不可篡改性、去中心化等特点,使用区块链技术,可构建出一套更安全、方便的物联网系统[8].将访问控制与区块链结合,能够提出一种扩展性强、安全的身份认证机制,适合现阶段物联网分布式、大规模的特点[9].与基于角色的访问控制(Role-Based Access Control,RBAC)相比,基于属性的访问控制(Attribute-Based Access Control,ABAC)[10]更为灵活,能按需提供不同粒度的权限控制,在物联网数据共享中提供可靠的、动态的身份认证和权限控制机制.结合区块链的特点[11],在智能合约上实现设备间的通信管理机制,以防止用户滥用系统功能.

本文提出了一种基于区块链的物联网设备信息共享机制.该机制利用区块链不可篡改、去中心化等特点,融合基于属性的访问控制防止未经授权用户恶意访问他人设备、数据的问题,基于智能合约实现设备间通信管理机制解决数据共享过程恶意通信的问题.本文贡献如下:

针对物联网中数据泄露未经授权访问的问题,以及细粒度的访问控制问题,本文提出了结合区块链和基于属性的权限管理机制,实现去中心化的访问控制机制,使资源拥有者掌握实质的资源所有权.

针对物联网数据共享过程中恶意用户滥用通信资源,破坏通信环境问题,本文提出了基于区块链的通信管理机制,设备所有者建立通信隧道管理设备间的数据交换,实现安全的数据共享.

基于以太坊平台实现了所提出的数据共享机制,并与相关研究作对比,证明其可用性和有效性.

2 相关工作

为解决物联网中数据共享中存在的问题,研究者们已经进行了大量的研究,结合区块链技术产生了新的研究成果.

在权限管理方面,部分研究采用不同的方式实现访问控制.文献[12]提出了一种基于区块链的去中心化在线社交网络访问控制管理系统.该方案结合区块链提出了一个不可篡改的和可审计的访问控制框架,资源拥有者使用访问控制列表(Access Control List,ACL)定义策略通过主体的密钥对来管理数据资源.文献[13]使用类比特币区块链在智能家居应用中的一种基于访问控制列表的物联网访问控制方案,每个家庭都有一个本地区块链来维护ACL,其中每个条目指定内部或外部主体对内部对象的访问权限.

文献[14]提出了一种基于区块链的物联网轻量级信息共享安全框架,使用和改进部分盲签名算法,实现对数据的保护和控制.文献[15]提出了基于比特币的ABAC方案,其中ABAC策略储存在比特币交易中,并使用现有的ABAC方案执行访问控制,策略可以通过附加一个带有更新信息的新交易更新,或者简单地通过花费虚拟货币来删除、增添.文献[16] 提出了一种基于区块链的访问控制模型,在该系统中,物联网用户通过智能合约编写的函数授予和撤销物联网数据区块的访问权限,并使用多种技术隐藏私密信息,只有相关用户才能访问.文献[17]同样在区块链的基础上,使用分散哈希列表来储存物联网中的数据,该方案中区块链存储了不同用户对分散哈希表中存储的任何数据的访问控制权限,分散哈希表节点用于查询区块记录和做出访问控制决策.

在数据共享方面,研究者结合不同区块链类型实现数据共享.文献[18]提出了一种基于FaBric区块链的工业物联网传输技术,使用基于区块链的动态秘密共享机制,并优化数据储存和传输,提高了工业物联网数据传输的安全性和可靠性,提高了传输效率.文献[19]提出了轻量化物联网智能家居基于区块链的定制构架.该方案在超级账本编写器中管理智能家居属性,以保证用户数据机密性和服务可用性.

其中部分研究使用ACL等方式实现访问控制,无法适应现阶段动态、海量的物联网环境,无法实现细粒度的访问控制.部分研究基于比特币平台,扩展性较低.在数据交换阶段,部分研究基于云平台,在请求过多时,处理请求时间较长,同时对用户或设备间的通信未做出管理,恶意用户如果滥用通信资源,其产生的恶意行为会严重破坏物联网的通信环境,因此,提出一种可控、安全的物联网数据共享机制十分必要.

3 相关技术

区块链作为新兴的分布式技术,为解决物联网数据共享安全问题提供了一个新的方向.区块链是一种分布式账本,记录网络中发生的交易,这种分布式账本可以应用于包含任何形式数据交换的网络.同时,区块链是一种完全分布式的点对点网络,所有参与的节点都维护账本的相同副本.当网络中由新的交易发生时,所有有关该交易的新通过各节点之间共识之后会添加到区块链中.

图1展示了区块的数据结构.在区块链网络中,所有的交易信息都储存在区块中.区块中记录由上个区块生成后产生的交易记录.每个区块包含区块头和区块体,区块头中记录区块信息,其中包括:前一区块哈希值、随机数(Nonce)、时间戳等、默克尔根(Merkle Tree Root)等信息.其中随机数(Nonce)用于挖矿,是一个试探性的随机数,是工作量证明的关键参数.前一个区块的哈希值可校验前一区块的完整性,同时也作为当前区块哈希值计算的输入.以这样的方式,区块就以链式的结构储存起来.默克尔树用于储存交易哈希值,可以验证存入区块交易的完整性.区块体中存入的是各个交易的具体信息.

图1 区块链数据结构

区块链融合了加密算法、共识机制,分布式的网络结构,使其拥有的良好的安全特性[20],其中包括:1)去中心化.网络中无需可信第三方集中服务器提供服务,节点之间可相互交易,使用智能合约提供服务;2)不可篡改性.区块中的条目都是由各个节点通过去中心化共识验证之后存入区块的,同时区块的链式结构使篡改的难度和成本非常高,因此,区块链拥有良好的不可篡改性;3)可审计性.所有节点都持有账本的副本,都可以访问、验证各个交易;4)高容错性.所有节点都包含账本的副本,如果网络中发生故障或数据问题,可通过共识机制来识别.

4 基于区块链的物联网数据共享方案

4.1 方案概述

图2 展示了本文提出的基于区块链的数据共享方案,该方案使用基于属性的访问控制模型构建数据共享权限管理机制,并在智能合约上实现对设备间的通信管理.根据不同的所属关系,设备所有者会把设备划分为不同的小组,每个小组有一个独一无二的小组ID以便区分不同的小组,各个所有者会为其拥有的设备分配唯一的ID.

图2 基于区块链的物联网数据共享方案

4.2 椭圆曲线数字签名算法

椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm,ECDSA)[21]是一种非对称的加密算法,相比与RSA有以下优点:安全性能更高,处理速度更快,储存空间更少等.接下来简单介绍该签名算法的签名和验证过程.其中Q标识公钥,d为私钥,k为随机数,G为椭圆曲线的基点,n为G的阶数且n为素数,m为发送消息.

签名生成步骤如下:1)在区间[1,n-1]中选取随机数k;2)计算曲线点(x1,y2)=k×G;3)计算r=x1modn;4)使用Hash()函数计算Hash(m),并将得到的比特串转化为整数e;5)计算s=k-1(e+rd)modn;6)(r,s)为签名.

签名验证步骤如下:1)检查r和s是否是属于区间[1,n-1]的整数;2)计算e=Hash(m);3)分别计算u1=es-1modn和u2=rs-1modn;4)计算曲线点(x1,y1)=u1×G+u2×Q,如果(x1,y1)=0,签名无效;5)如果r≡x1(modn)则签名有效,否则无效.

本文提出系统使用的签名算法为ECDSA,节点间的数据交换和与智能合约交互使用ECDSA对消息签名,消息接受方会验证签名,保证通信中数据的完整性和可用性.

4.3 访问控制框架

如图3所示,ABAC框架由4个智能合约构成,分别为访问控制合约(Access Control Contract,ACC)、主体属性合约(Subject Attribute Contract,SAC)、客体属性合约(Object Attribute Contract,OAC)和策略合约(Policy Contract,PC).其中,SAC和OAC用于管理和存储主客体的属性,PC负责管理、储存访问控制策略,ACC负责整个物联网系统中访问控制.接下来本文分别介绍各个合约.

图3 基于属性的访问控制合约框架

4.3.1 主体属性合约和客体属性合约

主体属性合约和客体属性合约功能相似,都用于储存和管理物联网中主客体的属性.根据4.1概述中所描述的,每个分组会有一个所有者,这两个合约只能由主客体所属的所有者才能调用.同时每个主客体都拥有独一无二的标识符即ObjID,该ID在合约中充当辨识主客体的唯一标志.组ID为每个设备标识其所属关系,所属关系会在后续数据交换阶段会起到通信控制作用.每个ID都有与之相关的各类属性.SAC和OAC还提供SubAttriAdd()/ObjAttriAdd()、SubAttriDelete()/ObjAttriDelete()、SubDelete()/ObjDelete()等应用程序二进制接口(Application Binary Interface,ABI)来更新对应主客体属性,或删除主客体属性条目.

在更新、添加和删除属性的时候,所有者需要将所要修改的主、客体的ID发送到SAC或OAC对应的ABI,如果在合约没有找到对应ID的属性条目,合约会自动创建一条新条目并更新信息,在删除的时候也执行相似的流程.

4.3.2 策略合约

策略合约主要用于储存、管理定义的ABAC策略,这个合约中的管理策略的ABI也只能由所有者调用.一条策略包含了一组主体属性、一组客体属性和一组动作,例如SA={SubAttribute1:a1,SubAttribute2:a2},OA={ObjAttribute:b1,ObjAttribute:b2},Action={Action1,Action2 },这条策略规定任何拥有属性a1,a2的主体都可以对拥有属性b1,b2的客体进行相应动作.与SAC和OAC类似,PC也提供policyAdd(),policyDelete(),policyUpdate()等ABI分别来添加、删除和更新策略,合约会记录每条策略的最近更新时间.

在搜索策略时,会执行不同的搜索方式,分别用于删除策略和查找策略.删除策略时使用一种完全匹配搜索,需要所有者提供策略中对应主客体的所有属性信息,这样能够准确找对对应主客体的访问控制策略,避免删除其他相似但非目的策略.在查找策略时,多使用部分搜索,需要调用者提供部分对应主客体属性.但通过这样的方式搜索会查找到多条符合条件的策略,查找出的策略是所有符合条件的策略的子集,最后确定策略时,合约会首先匹配只包含提供属性的策略,再以策略更新时间为依据,返回最近更新的策略.部分搜索多用于ACC处理访问请求时向PC查找策略.

在制定新的策略时,所有者提供越多的属性,所实现的访问控制策略粒度越细.当所有者添加一条的新的策略时,合约会查询已有策略中是否存在和新增策略冲突的条目,如果存在,则需要所有者修改或删除策略内容来消除冲突,才能添加新策略.在一些情况下无需添加新策略,现有的策略会覆盖可能会覆盖新策略.

4.3.3 访问控制合约

访问控制合约提供整个访问控制流程的核心功能,该合约控制着这个物联网系统从主体发出请求到返回请求结果.主体发送包含主体ID和客体ID的交易到ACC,ACC接收到请求后会从SAC、OAC和PC中分别获取对应主体属性、客体属性,再通过主客体属性查询PC中对应的策略,并验证主体的访问控制权限,确认访问结果之后返回给主客体.

详细的步骤如下:1)主体向ACC发送访问请求交易,该交易包含主体ID,所要访问客体ID和请求动作;2)ACC分别向SAC和OAC发送主客体ID检索对应属性;3)ACC在收到属性将其发送给PC查询相关策略,如返回属性为空则向主体返回错误;4)根据接收到的策略,ACC确定主体是否有权对客体进行该动作,并返回结果.通过算法1实现.

算法1.访问控制算法

输入:SAC_address,OAC_address,PC_address,sub_id,obj_id,sub_action

输出:results or error

1.subattri←GetAttribute(SAC_address,sub_id);

2.objattri←GetAttribute(OAC_address,obj_id); //获取属性

3.if(subattri==NULL||objattri==NULL)then

4.returnError(“Attribute error!”);

5.endif

6.policynow←GetPolicy(subattri,objattri,PC_address);

7.if(policynow==NULL)then

8.returnError(“Policy Not Found!”)

9.endif

10.if(TimeCheck(policynow))then

11. if(sub_action==policynow.action)then

12. return sub_action comfirmed;

13.elsereturnError(“Action Error!”);

14.endif

15.else if(sub_action==policynow[0].action)then

16.return sub_action confirm;

17.endif

其中GetAttribute()、GetPolicy()、TimeCheck()为ACC中定义的ABI,功能分别为获取属性、获取策略和策略时间检查.如找到多条匹配策略会返回最近更新条目,否则会以找到第一条策略来判断请求是否符合条件.

4.4 通信隧道

在权限授予之后,物联网设备的数据共享进入到数据交换阶段,在本系统中,所有的数据通信都由智能合约完成的,设备间每一次通信都需要向负责数据通信的智能合约发出交易,每次通信数据都会储存在区块中以便审计,保证数据不可篡改.

为了防止不诚实的用户在取得设备访问权限后,做出恶意行为,可能导致数据泄露、篡改等问题.该系统提出了通信隧道机制,符合条件且需要数据交互的设备必须在通信隧道建立之后才能通信,通信隧道合约(Communication Tunnel Contract,CTC)来完成这项工作.

在该系统中,把发出通信的设备成为源设备(Source Object,SO),源设备所属小组称为源小组(Source Group,SG),源小组的所有者称为源所有者(Source Master,SM),把源设备所要通信的目标成为目的设备(Destiny Object,DO),同理对应的组和所有者称为目的组(Destiny Group,DG),目的所有者(Destiny Master,DM).

通信隧道合约管理设备间的通信,每次设备需要通信则需要调用该合约的ABI,并提供相应信息,符合条件后才能通信.如果SO和DO来自同一小组,那么这两个设备可以直接进行数据交换,不需要建立通信隧道.SO和DO来自不同的小组则需要在建立通信隧道的情况下才能交换数据.建立通信隧道需要SM和DM 进行协商,双方需要调用CTC中对应的ABI,完成协商后会将隧道设置信息储存在区块中.区块链不可篡改的特性,将隧道信息存入区块中可以记录隧道建立、更新、删除整个过程,所有通信隧道的生命周期都储存在区块中,防止篡改,并提供给历史记录查询.需要协商的内容如下:

1)方向标志(Direction Flag,DF).该标志有0和1两个状态,分别代表单向通信和双向通信.该标志位为0,SO只能向DO发送数据,标志位为1时,SO和DO都可以发送数据.

2)通信时长(Time to Communicate,TTC).该设置能够限制两个设备间的通信次数,该字段会记录在隧道设置中,每次设备通信时都会更新该字段直到其数据为0,之后两个设备不能继续通信,该字段可由所有者更新,字段设定值大小需要通信双方的所有者协商设定.

CTC中还提供TunnelRequest(),TunnelInfoCheck()和CommViaTunnel()等API,分别用来申请隧道,查询隧道信息和使用隧道通信.

图4展示了隧道设定需要的步骤,接下来会详细说明每个步骤:

图4 通信隧道建立过程

1)SO会向SM发出通信请求的交易Tx1,包含DO的ID和DO的组ID,Tx1如下:

Tx1=(DB‖DO)

(1)

2)SM会添加SO信息和隧道信息,包括其组ID、设备ID和DF、TTC,签名后作为交易Tx2发送给DM,Tx2如下:

Tx2=((DG‖DO‖SG‖SO‖TTC‖DF)signedbySM)

(2)

3)DM在收到交易Tx2验证签名是否正确,并根据SM的要求决定是否建立隧道,如同意建立,DM会将Tx2加上DO信息签名后形成交易Tx3发送给CTC,Tx3如下:

Tx3=(((DG‖DO‖SG‖SO‖TTC‖DF)signedbySM))signedbySM)

(3)

4)CTC收到Tx3验证其中签名,检查是否有重复隧道,如有则更新信息,之后隧道建立完成,向SM返回信息.

5)SM向SO返回信息,告知是否能进行通信.

隧道建立完成,对应设备便可通过隧道通信,每次通信会更新隧道信息,直到隧道不能再通信.设备间通过算法2进行通信.

算法2.通信隧道算法

输入:tunnel_id,SO,DO,message

输出:event or error

1.if(tunnel[tunnel_id].TTC>0)then

2. if(tunnel[tunnel_id].SO_ObjID == SO.ObjID‖tunnel[tunnel_id].DO_ObjID == DO.ObjID)then

3. send SO_message,event(“message sent”);

4. tunnel[tunnel_id]-1;

5.elseError(“tunnel info error!”)

6.endif

7. if(DF==1)then

8. send DO_message,event(“DO message sent”); //DO可发送信息;

9. tunnel[tunnel_id].ttc-1;

10.elseError(“direction error!”)

11.endif

12.else Error(“TTC runs out!”)

13.endif

4.5 数据共享流程

图5展示了该方案中主体请求数据共享的整个流程.在权限申请阶段,主体需要先向ACC发出请求,ACC会根据主体的ID和客体的ID 查询主客体属性,并通过主客体属性查询相关策略,之后返回请求结果.如果请求成功,且客体与主体不在同一小组,则需要申请通信隧道才能进行数据交换.主体会向主体的所有者发出通信请求,接着主体所有者和客体所有者会协商并确定主客体之间隧道设定(通信方向、通信次数),主客体所有者都会对隧道信息签名保证信息的完整性,向通信隧道合约发出请求,将隧道设定信息储存在区块,隧道建立后,主体便可与客体交换数据,同时更新隧道信息.在通信时所有的消息都会由通信双方的公钥加密保证消息的机密性.

图5 数据共享流程

所有设备间的交互都由智能合约实现,访问控制和通信管理成为区块链中分布式的应用程序,系统内节点都会执行,节点以发送交易的形式与合约和其他节点交互.所有的访问历史和结果都会储存在区块链上,即使一些节点遭到破坏或入侵,该数据共享系统仍可以可靠工作.

5 实验设计与性能分析

5.1 实验环境

实验在一台操作系统为Ubuntu16.04的计算机上进行,其硬件配置为:CPU为Intel(R)Core(TM)i7-9750h CPU 2.6GHz,RAM为16 GB.并在以太坊平台实现本方案,以太坊是公共区块链平台,支持智能合约,使用Solidity编写智能合约.使用Geth客户端来管理网络中的节点,其中每个节点都可以调用智能合约的ABI,ABI与节点发出的交易交互.该实验在以太坊测试链上进行,使用Remix IDE开发智能合约.主要测试各个函数调用的资源消耗即Gas消耗和在调用通信隧道合约相关函数的时延.

该实验分别在50个节点、100个节点和200个节点3种网络环境下进行,模拟不同大小的网络规模,并在不同的节点环境下测试函数调用时延.

5.2 实验结果与分析

在以太坊平台中,部署和调用函数会消耗一定成本(gas),节点和智能合约交互或对区块执行操作时,交易的发起方都会支付一定gas费用,ether是以太坊中通用虚拟货币可以和gas相互兑换.

部署合约之后,测试了一部分函数调用成本,如表1所示.从中可以看出,SubAttriAdd()、policyAdd()、TunnelRequest()这3个函数的执行成本明显高于其他函数,由于这3个函数在初次调用时会初始化数据结构,修改或删除区块内容,写入操作在以太坊中有更高的执行成本.

表1 各个函数的Gas消耗

如图6所示,policyAdd()函数在不同节点规模下有不同的gas消耗,因为随着节点数量的增加,对每个交易的验证次数就会变多,会带来更多的成本.因为初始化数据结构,将数据写入区块导致在最初调用函数时有最高的gas消耗.同时从图6中可以看出,节点数量增多,并没有导致该函数调用成本快速增长,成本消耗较为稳定.

图6 policyUpdate()函数的Gas消耗

图7展示了在不同节点数量的情况下函数TunnelRequest()的时间消耗.可以明显的看出节点数量对于该函数的影响较大,这是因为节点数量越多,区块中存在的隧道数量也会越多,在申请时合约会搜索查询是否有重复隧道,到使用较多时间,此外节点数量变多,交易验证时间增加.

图7 函数TunnelRequest()时延

表2展示了该函数在不同节点数下执行30个交易的时间统计.可以看出随着节点规模的增长,交易执行的随之增长.节点规模到达200后交易执行时间增长较快.50节点到100节点平均时间开销增长为945ms,100节点到200节点平均时间开销增长为1551ms.但在同一节点规模下,最大时间开销差不超过300ms,说明本文提出方法在节点规模不同情况下执行稳定,不影响使用者体验.

表2 30个交易下函数TunnelRequest()的时间统计

表3展示了本文方法中相关函数和其他研究中的对比.表3中分别比较了policyadd()、policyUpdate()、和policyDelete()3个函数与文献[12]中对应函数的Gas消耗对比.

表3 函数Gas消耗对比

从表3中可以看出,在增加策略、策略更新和策略删除上,本文提出的方法Gas消耗低于文献[12]中的方法.但在访问控制函数上本文的Gas消耗要高于文献[12]中的方法.因为在对比文献中,一条访问控制请求只需要查询区块里储存的访问控制列表,无需向其他合约请求规则或属性,而本文提出的方法则需要与主体属性合约和客体属性合约、策略合约交互,需要执行更多的计算,并且调用更多的函数产生更多的消耗.但文献[12]中的方法需要资源所有者对不同的资源制定不同的访问控制列表并形成访问控制合约,所以在区块中会存在较多访问控制合约,在策略制定阶段会存在更多的成本,其策略相关的函数相比本文消耗更多.在资源数量较多的情况下,需要设定和部署更多的访问控制合约,相比于执行合约中的函数,部署合约有着更高的成本,同时如果需要频繁修改增添规则,所需的成本更高.相比于文本方法,成本更大,说明了提出方法的可行性.

图8展示了本文执行建立通信隧道交易的时间消耗与BAC[22]中执行整个访问控制流程的时间消耗作对比.BAC提出了一种基于区块链的访问控制方案,结合动态和静态代理的方法来提高区块链的管理效率.BAC主要面向的是节点规模较少的智能家居场景,解决未经授权导致的资源滥用、家庭入侵威胁和私人信息泄露问题.

图8 与BAC对比

在与BAC实验节点规模相同情况下进行对比,其中网络规模为50个节点,计算执行50~250 个交易时间消耗.从图8中可以看出,在执行不同个数交易的时间消耗上,本文提出的方法相比于BAC时间消耗少,执行的交易越多,本方法与BAC的时间消耗差距越大,说明本文方法的可用性.

综上实验结果分析可得,通过和其他研究相对比,本方案在实现了细粒度的、低成本的访问控制方案,使用设备所有者真实拥有设备的管理权,还考虑数据交换过程中通信管理问题,通过建立通信隧道实现设备间可控数据交换.同时利用区块链不可篡改、可审计等特点,将访问控制策略、通信隧道信息存入区块,记录设备所有者、设备的权限授予、数据交换过程,保证了数据交换过程的安全性.

6 总 结

本文提出了一种基于区块链的物联网数据安全共享机制,结合基于属性的访问控制提出了一套有效的权限管理机制,该机制主要有属性管理、策略管理和访问控制组成,实现了对系统中用户灵活、细粒度的访问控制,利用区块链解决了设备频繁接入、退出网络等情况.同时,基于智能合约实现了主客体间的通信管理机制,防止恶意用户滥用通信资源.最后,在本地以太坊平台上测试该方案的可行性和成本,结果证明该方案可作为物联网系统中安全的、有效的数据共享机制.利用区块链不可篡改、去中心化等特性,储存访问控制规则、通信隧道信息在区块中,阻止了未经授权访问且便于后续审计,同时解决第三方角色带来的单点故障、不可信等问题.本文所提机制还存在一些不足,在通信隧道中控制字段现阶段较少,需要添加更多的控制内容,同时优化在数据交换过程中,控制字段编码,降低控制字段在数据交换中的通信成本,并降低通信时延.在进一步完善本方案之外,考虑根据物联网特点改进共识机制实现更少的交易时延,同时尝试其他类区块链平台,例如IOTA,来解决物联网数据共享中存在的问题.

猜你喜欢

主客体访问控制合约
《甲·宣》——文明记忆的主客体交互表达
新中国成立初期马克思主义大众化主客体关系的特点与当代启示
ONVIF的全新主张:一致性及最访问控制的Profile A
动态自适应访问控制模型
浅析云计算环境下等级保护访问控制测评技术
大数据平台访问控制方法的设计与实现
非物质文化遗产保护之管见
论中学音乐教学主客体的角色互换
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望