APP下载

基于智能合约的物联网访问控制建模

2022-02-11徐龙李杨

山东科学 2022年1期
关键词:细粒度访问控制合约

徐龙,李杨

(齐鲁工业大学(山东省科学院) 山东省科学院自动化研究所, 山东 济南 250014)

物联网(Internet of things,IoT)作为新一代信息技术,为社会各个阶层带来了革命性的变化,已经应用到智能医疗、智能家居和智慧消防等众多领域。据估计,到2025年全球物联网系统中设备连接数将达到215亿~416亿台[1],使人们进入万物互联时代。物联网基本架构是完成数据收集、融合、处理和共享的物与物互联的网络[2-3],物联网中会产生海量的数据,其中包含大量的隐私数据,由于物联网设备具有计算力资源有限、安全性差等特点,所以这种物与物互联的机制存在着巨大的安全隐患。访问控制作为保护数据安全的关键性技术之一,可以保障数据仅能被拥有相应权限的用户使用[4]。

针对如何保障物联网系统数据安全问题,研究人员从不同角度提出了多种访问控制模型,主要有基于角色的访问控制(role-based access control, RBAC)模型[5],基于属性的访问控制(attributed-based access control, ABAC)模型[6]和基于权能的访问控制(capability-based access control, CapBAC)模型[7]。RBAC模型引入角色概念,将系统中的用户映射到角色,不同的角色对应不同的权限[8-9]。ABAC模型兼顾访问控制细粒度问题,将主体与客体的属性作为访问政策制定的关键要素,利用权限请求者所具有的属性来确定是否赋予权限。CapBAC模型是以权能为基础提供访问控制,可以让用户自定义访问控制政策,被认为是物联网下访问控制模型中最有潜力的模型。

在上述模型中,模型的授权验证操作需引入可信的第三方实体,所有的访问控制操作由集中式服务器完成,故存在单点故障和隐私泄露问题。随着区块链、智能合约的出现,为解决传统的集中式物联网访问控制模型存在的问题,研究者们将区块链技术与传统的访问控制模型有机地结合,实现分布式访问控制。当前物联网系统具有异构性和多样性的特点,其访问技术的要求开始向细粒度和分层次的方向发展。但目前提出的模型中仍然存在着以下问题:一是没有充分估计物联网系统设备存在资源有限的特点,导致提出的方案会导致物联网系统的网络运算负担增大;二是物联网系统中设备访问控制的细粒度、灵活度不够,不能满足当前物联网系统的要求。

针对上述问题,本文提出了新的基于权能的访问控制模型(novel-capability-based access control,NCBAC)。基于区块链与智能合约技术,充分利用其不可篡改性、可回溯性,构建出可信任的分布式的新型物联网访问控制系统;设计了面向物联网系统的访问控制管理的新型架构,为避免给物联网系统带来巨大的网络开销,提出了由管理节点来实现物联网系统与区块链系统的通信;提出了基于传统的基于权能访问控制模型的基础上,引入角色集合和属性集合,实现了高细粒度、灵活的、高效的访问控制,能够更好地满足当前物联网系统对其访问控制系统的要求。

1 基于区块链和智能合约的访问控制系统

1.1 系统架构

本文提出的系统架构如图1所示,主要包括区块链、管理节点、特殊节点、管理者和智能合约部署者等5个主要组成部分。

图1 系统架构 Fig.1 System architecture

(1) 区块链:本系统用以太坊进行智能合约部署,由以太坊虚拟机(ethereum virtual machine,EVM)为智能合约提供运行环境。智能合约中定义的函数实现访问控制模型各项功能,通过应用程序接口ABI(application binary interface)为外部提供各项功能执行接口。

(2) 管理节点: 该节点是区块链的特殊节点,可直接与区块链进行通信,该节点拥有了两个外部账户(externally owned accounts,EOA):Normal Account和Special Account。实现的功能包括将传感器网络传输的多种格式消息统一转换为区块链可识别的JSON-RPC(JavaScript object notation-remote procedure call)信息,以及调用区块链中部署的智能合约完成对系统的初始化以及访问控制功能。另外,物联网系统中的所有传感器均通过管理节点直接或间接方式与区块链进行通信,因此管理节点通常是由计算资源丰富的设备承担,并且为了提高系统的响应时间,所有的管理节点都需要进行并发处理,以满足实际情况的需求,提高系统的响应速度。管理节点是区块链的组成部分,本文提出的模型中管理节点不是唯一的,其数量可根据实际情况增减。此外,其所实现的功能传感器注册、传感器操作授权等都是由区块链中智能合约提供的,因此,管理节点是一个去中心化、安全的模块。

(3) 特殊节点: 物联网系统中各类传感器等设备属于轻量级设备,很多设备只能发送和接收特定的、简单的通信信息,但也有不少的轻量级设备有一定的计算和存储能力。因此,部分物联网设备是可以在其上编写特定算法,实现信息转发并与管理节点通信的功能,为了保障整个系统的通信实时性和可靠性,该算法要根据当时网络情况进行最优链路选择。

(4) 管理者:该模块是拥有管理节点的Special Account账户的操作者,可以拥有设置系统的角色集合、属性集合、访问政策制定等一系列安全要求高的系统初始化操作权限。

(5) 智能合约部署者:智能合约部署者是完成智能合约在区块链部署的人,可以将系统中的管理节点信息记录在区块链中,完成系统的管理节点的指定。

1.2 智能合约体系

为解决传统访问控制方法安全性不高、细粒度不够等瓶颈问题,本文基于传统的基于权能访问控制算法设计了新的智能合约体系,可实现分布式、安全、高细粒度的访问控制。区块链中维护多种信息列表详见OSID,智能合约的功能应用程序二进制接口(application binary interface,ABI)主要包括:

· MangerRegister(): 此功能用来指定系统中管理节点,即用来注册管理员;

· MangerDelete(): 此功能用来删除系统中管理节点,即用来删除管理员;

· RoleSetCreate(): 此功能用来创建NCBAC模型中的角色集合;

· RoleSetDelete(): 此功能用来删除NCBAC模型中的角色集合;

· MemberDelete(): 此功能用来删除已添加进角色集合中的物联网设备;

· UserRegister(): 此功能是被物联网设备调用,以此完成设备连接到系统操作;

· UserDelete(): 此功能是被物联网设备调用,以此完成设备断开与系统连接操作;

· UserUpdate(): 此功能用来更新已连接系统设备的信息;

· AttributeCreate(): 此功能是用来创建NCBAC模型中的属性集合;

· AttributeDelete(): 此功能是用来删除NCBAC模型中的属性集合;

· AttributeUpdate(): 此功能是用来更新属性集合中的元素;

· PolicyMake(): 此功能用于添加新访问控制政策,该函数是由本政策中主体与客体对中的客体调用;

· PolicyDelete(): 此功能用来删除已添加的访问控制政策;

· PolicyUpdate(): 此功能用来更新已添加的访问控制政策;

· AccessControl(): 此功能用来访问决策,结合相关信息合法性检测和预先定义好的访问控制政策,进行权限决策。

为保证系统的安全性,不同的ABI具有不同的调用权限,ABI调用权限配置表见OSID。

1.3 系统工作流程

图2是系统各模块间交互过程,主要分为两大阶段:系统初始化阶段、访问政策执行阶段。

(1)系统初始化阶段:该阶段主要完成智能合约部署、角色集合创建、属性集合创建和政策制定等一些保证系统能正常工作的系统初始化操作。具体步骤如下:

步骤1:该步骤部署智能合约,当智能合约在区块链中部署成功后会得到智能合约地址,只有提前获取该地址才能与合约交互;

步骤2:管理者通过管理节点调用智能合约中RoleSetCreate()函数,将角色集合信息保存到区块链中;

步骤3:设备1与设备2通过管理节点调用智能合约中UserRegister()函数,完成将设备连接至系统操作;

步骤4: 只有完成步骤3后设备2才可通过管理节点调用智能合约中的AttributeCreate()函数将自身资源池选择性地在系统中共享;

步骤5:管理者通过管理节点调用智能合约中的PolicyMake()函数,根据在步骤4中设备2共享的资源池,来设定设备1对设备2的访问控制政策。

(2)政策执行阶段:如图2所示,物联网设备1访问目标物联网设备2的资源。设备1经由特殊节点或直接与管理节点通信发送资源请求信息,该信息包含的主要字段为发起设备:设备1;目标设备:设备2;请求动作:read/write等;请求资源:resourse;令牌:Token。管理节点将信息编译为可用信息后,调用智能合约中AccessControl()函数根据系统初始化时设定的政策对发起设备、目标设备、请求动作、请求资源的合法性进行检测,此次请求经过智能合约的判定,判定结束时会触发智能合约中ReturnResult()事件,将合约决策结果反馈给管理节点,系统依据判断结果来决定设备1是否可以对设备2资源进行相应的操作。为提高系统的决策速度,在本文提出的智能合约体系中采用令牌机制,成功获取一次访问权限后,在预设时间内再发起相同的权限访问请求,不再需要验证多种信息,只需验证Token的合法性,以此提高系统的决策速度。Token是一段保存在区块链中的时间戳,包含了该请求所有身份识别信息,因此保证了该Token的安全性。具体的访问控制算法伪代码见OSID。

图2 系统工作流程Fig.2 System workflow

2 实验仿真与结果分析

为了验证本文提出的面向物联网的基于区块链的访问控制模型建模方法,测试本文提出的系统架构与模型的可行性和有效性,我们搭建了实验环境并设计了实验方案。

2.1 硬件与软件配置

我们设计的实验中包含两台台式电脑(Inter®CoreTMi3-9100 CPU@3.60 Hz 3.60 GHz),一台笔记本电脑(DELL Inspiron 3541)和一台智能手机(One plus 6T)。台式电脑安装由Go语言编写的geth客户端,使其成为区块链节点,二者之间构建起以太坊私有链。本次实验系统中所有设备运行在同一局域网环境下。

2.2 实验仿真与结果分析

本次实验的主体-客体对为笔记本电脑-智能手机,其中客体设定的政策为允许主体读取Database1,为了得到更直观的实验结果,采用JavaScript脚本语言编写了事件监听脚本,具体的监听程序算法伪代码以及整个项目的关键代码见OSID 。

2.2.1 合法设备访问结果与分析

为验证主体对客体访问的可行性,实施主体对客体的Database1发起读操作访问过程,实验结果如图3所示。

图3 合法设备获取访问权限Fig.3 Legal devices gain access

2.2.2 非法篡改令牌攻击实验

在上一个实验成功取得访问权限允许结果条件下,人为地将系统发放的Token中Action字段由read篡改为write后,重新发起请求,实验结果如图4所示。

图4 篡改令牌非法攻击实验结果Fig.4 Experiment results of the illegal Token tampering attack

2.2.3 验证访问控制的灵活性与细粒度

在维持实验环境不变的情况下,客体(笔记本电脑)发起删除共享属性Database1请求,成功完成请求后,重复2.2.1权限访问请求操作。图5所示是系统监听访问请求事件结果。

图5 灵活性与细粒度验证实验结果Fig.5 Flexibility and fine-granularity verification experiment results

3 系统性能测试与分析

为了评估系统性能,在上述实验条件基础上,采用Apache Benchmark工具测试了每秒发送请求节点从0到10 000个的响应时间情况,如图6所示。

图6 两类基本操作的性能测试结果图Fig.6 Performance test results of the two types of basic operations

本次实验在有、无Token机制的情况下进行多次访问请求,测量系统对全部请求做出回应时的延迟时间。如图7所示,随着请求次数的增加,没有采用Token机制模型与采用Token机制模型的延迟时间差值越来越大,采用Token机制的模型对系统访问控制性能提升越明显。

图7 有无Token机制的访问控制请求实验Fig.7 Access control request experiments with or without Token mechanism

4 结语

本文旨在解决物联网系统中的访问控制问题,提出了一种基于区块链技术的分布式物联网访问控制模型NCBAC。该模型充分吸收现有访问控制模型的优点,实现灵活、可扩展、细粒度高的访问控制。实验仿真结果表明,本文提出的NCBAC模型可以为物联网系统提供安全、可靠和高效的访问控制。

猜你喜欢

细粒度访问控制合约
融合判别性与细粒度特征的抗遮挡红外目标跟踪算法
细粒度的流计算执行效率优化方法
基于双线性卷积网络的细粒度图像定位
ONVIF的全新主张:一致性及最访问控制的Profile A
支持细粒度权限控制且可搜索的PHR云服务系统
动态自适应访问控制模型
浅析云计算环境下等级保护访问控制测评技术
大数据平台访问控制方法的设计与实现
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望