APP下载

基于区块链的细粒度物联网访问控制模型

2022-03-01宋丽华朱宗科李梦晨郭艳飞

计算机工程与设计 2022年2期
关键词:访问控制合约区块

宋丽华,朱宗科,李梦晨,郭艳飞,马 礼

(1.北方工业大学 信息学院,北京100043;2.中国化工油气股份有限公司,北京 100080; 3.治华盛顿大学 计算机科学系,华盛顿特区 20052)

0 引 言

自物联网(internet of things,IoT)概念提出以来,物联网技术得到了飞速发展,由于私人数据的收集、处理、分发已经变得越来越隐蔽、普遍,过度授权、超范围收集个人信息等现象大量存在,带来了严重的安全和隐私问题[1]。

访问控制是保障物联网信息安全的常见技术之一。但常见的传统访问控制都是基于中央可信实体的概念构建,通过使用集中式服务器进行访问控制的验证。中央可信实体面临的管理压力较大,容易造成单点故障,且无法解决在不可信环境下的访问控制[2]。因此,出现了一个关键问题:我们如何在物联网中实现分布式和可信赖的访问控制?答案在于新兴的区块链技术。区块链是一种开放、透明的分布式账本系统,可以验证且永久地记录双方之间有效的交易,具有去中心、去信任、链上内容不可篡改、链上信息公开透明、链上数据可追溯等特点[3]。以太坊提供了一个名为以太坊虚拟机(ethereum virtual machine,EVM)的去中心化图灵完备平台,以运行被称为智能合约的应用程序代码。智能合约是驻留在以太坊区块链环境中的代码,可在满足特定条件时执行。只要对区块链进行写操作,一定会发生交易。由于调用智能合约进行写操作时一定会伴随着交易,因此这种智能合约的调用也记录在区块链中[4]。

1 相关研究

目前已有诸多将区块链技术和访问控制相结合的研究。为了解决传统访问控制中存在的单点故障问题,梅颖等[5]提出了一种基于比特币平台的区块链访问控制模型,将访问权限和访问控制策略等信息存储在区块链上。Ding等[6]、Alansari等[7]和Damiano等[8]则将区块链技术和基于属性的访问控制技术相结合(attributes-based access control,ABAC)[9],Ding等、Alansari等利用区块链记录属性信息,Damiano等则是利用比特币交易进行管理和维护访问控制权限。Ouaddah等[10]提出了一种名为FairAccess的新机制,引入了token的概念,将访问权限以脚本的形式存在区块链上。Dorri等[11]将区块链技术应用到智能家居系统的访问控制中去,利用比特币交易管理设备。

随着以太坊技术的发展,研究者们将访问控制与区块链技术进行更深层次的结合,利用智能合约进行权限的决策。Ouaddah等[12]、史等[13]使用token作为访问令牌,并利用智能合约进行访问控制。Christidis等[14]、Ramachandran等[15]、Zhang等[16]提出使用智能合约进行访问控制裁决,保证了访问控制的公开透明。Jemel等[17]则使用多个契约对访问控制进行投票,为访问控制提供了新的思路。

虽然已经有了许多访问控制和区块链技术相结合的相关研究,但这些访问控制技术并不成熟,存在以下问题:①更改权限方式过于复杂,无法做到细粒度控制;②没有充分利用区块链的计算能力;③或利用了区块链的计算能力却受累于区块链的低效性;④无法支持轻量级物联网设备。

2 访问控制模型

为了解决以上问题,本文提出一种基于区块链智能合约的物联网属性访问控制模型ABAC-B(attributes-based access control using blockchain),设计思路如下:①通过引入ABAC中属性的概念,并将属性进一步划分,有效简化了访问管理,且能够进行动态、细粒度的访问控制。②将访问控制策略通过智能合约的方式部署在区块链上,利用了区块链的计算能力,且降低了物联网设备的计算压力。③在策略中引入token概念,访问主体通过提前申请token获得访问权限,以及一次申请多次使用的方法,降低区块链对访问控制性能的影响。④使用物联网网关管理物联网设备,将权限验证部分部署到区块链智能合约和网关上。

综合以上考虑,访问控制模型如图1所示。该模型由3个功能节点和两个安全模块组成,通过以太网和区块链连接在一起。

2.1 实 体

定义1 访问设备:访问设备指在一次资源访问过程中发起访问的主体,它们可以不参与区块链的交易验证,但具有区块链的读取权限。可以用S={s1,s2,…,sn} 表示发起访问请求的主体si的集合。

定义2 资源:资源定义请参见文献[13],本文中的资源可以是数据、文件、可被访问的程序和现实中的可被控制的硬件设备(如:可被远程控制开关的灯)等客体。可以用O={o1,o2,…,on} 表示物联网中可被访问的资源oj的集合。

定义3 资源拥有者:资源拥有者即网关代理,拥有上述资源和管理权限的实体集合。为了确保有效的访问和数据安全,用户需要在交换数据之前获得访问授权。网关在收到用户的访问控制请求后,将调用智能合约进行决策,并将裁决结果在区块链上进行广播。

定义4 权限:权限定义请参见文献[13],通过P={p1,p2,…,pn} 表示访问控制模型中的权限,权限包括数据的读、写、删除和对物联网设备的操作等。

图1 访问控制模型

定义5 (Token)权限令牌Token定义请参见文献[13]。通过Tokenij(a,p,tstart,tend)={tokenij(a,p,tstart,tend)|i∈S(tstart),j∈O(tstart),p∈P} 表示, tokenij(a,p,tstart,tend) 表示tstart到tend期间满足属性集a的用户si拥有对资源体oj的操作权限p。资源拥有者需要对token进行签名,验证该资源拥有者是此token的发布方。

2.2 属 性

定义6 属性:属性定义请参见文献[13]。

定义7 细粒度访问控制:细粒度的访问控制是指通过对模型中的对象加以细分,进而对数据层次进行权限管理的访问控制。本文通过将属性分为角色属性、权限属性和标识属性达到细粒度访问的目的。细粒度的访问控制相较于粗粒度的访问控制可以有效减少过度授权等问题的发生。在属性数量相同的情况下,细粒度的访问控制可以有效减少策略数量,减少角色和权限的授予量,降低权限管理难度。

定义8 角色属性:角色属性是指在指定模型中,为了划分某一类设备或某一类角色而抽象出来的属性,其会随着模型和应用场景的更改而更改,目的是确认实体设备的身份、功能和此类所有设备所拥有的所有权限。可以用RA={ra1,ra2,…,ran} 表示角色属性的集合。

定义9 权限属性:权限属性是指不影响角色分类但影响权限授予的一部分属性。其可以为身份属性所延伸的属性,也可以是与身份属性相对应的数值,例如:年龄、工作年限等。目的是在不过多增在角色分类的情况下细化权限授予过程,减少过度授权。可以用PA={pa1,pa2,…,pan} 表示权限属性的集合。

定义10 标识属性:标识属性用作标记、临时分类,也可通过简单的规则运算来简略验证身份的真实性。可以用MA={ma1,ma2,…,man} 表示权限属性的集合。

定义11 主体属性:主体的属性定义请参见文献[13],主体属性的集合用SA来表示。对于某个主体si的属性集合,通过si.aj={aj|aj∈si,SA} 表示。

定义12 资源属性:资源的属性定义请参见文献[13],资源属性的集合用OA来表示。对于某个资源的oi的属性集合,通过oi.aj={aj|aj∈oi,OA} 表示。

定义13 会话历史:会话历史是指用户在系统中的历史访问行为和相关信息记录,使用SH(s,o,t)={sh1,sh2,…,shn} 表示会话历史的集合。区块链链上内容不可更改的特性可以保证每一次会话都被准确无误地记载下来。

定义14 信任度:信任度Tt是指t时间段,系统根据用户历史行为记录、模型访问需求和其所拥有的属性等信息计算出的一个取值在[-1,1]上的属性,其目的是为了约束用户不良行为、甄别恶意节点以及实施信任约束条件。信任度公式如下

(1)

该公式利用用户以往的会话结果计算当前时间段t时的系统对访问主体信任度Tt,其中P(shi)=p(shi)/∑p(shj), 表示会话sh在会话历史集合SH中所占的比重,p(shi)随着时间递减。我们假设每一次会话行为都会带来一定的收益,电子交易会带了实际收益,资源的共享、管理和权限管理等会带来行为收益。 F(s,o,shi)=f(Xsh-X(φ)), 表示对会话shi的信任评估。 X(φ) 为预期带来的收益,Xsh为实际带来的收益。 f(x)=sin(πx/2)。 对于首次会话的用户其信任值在[0.8,0.9]之间随机取得。

2.3 设备注册点

本文中设备注册点并不承担存储功能,其在收到用户设备或资源所有者设备的注册信息后会根据设备的身份或能力发布为每个设备设置一组属性,并为每个设备或某类设备部署其专属的智能合约并记录属性、公钥、访问策略等相关信息。

主体注册的目的是获得一个唯一的ID作为标识和设备注册点分配的属性等,以及将相关信息上传至智能合约。主体s向设备注册点发送相关信息和公钥s.pk,设备注册点授予用户唯一用作标识的s.id,属性组s.a(s.a1,s.a2,…,s.an), 随后创建并部署智能合约s.c,将主体s的属性s.a和公钥s.pk上传至智能合约,然后在整个区块链进行广播并保存在区块链上。主体和资源所有者可通过调用s.c智能合约GetAttribute(s)、GetPublicKey(s)函数获得用户s所拥有的属性和公钥。设备注册点可通过调用智能合约SetAttribute(s.a)、SetPublicKey(s.k)函数更改主体的属性,来达到撤销主体的权限的功能。

资源注册与主体注册类似,其目的是获得一个唯一的ID、设备注册点分配的属性和访问策略等,以及将相关信息上传至智能合约。

2.4 访问控制实施点

访问控制过程中有多种终端设备资源,如传感器、智能摄像头等,其本身并不具备能够满足权限裁决的计算能力,也不能直接连接到权限裁决点,所以需要一个能够进行权限判断或者能够连接到权限裁决点的访问控制实施设备进行管理。物联网中的网关具有一定的计算和存储能力,并且能够连接到权限裁决点,所以本模型使用物联网网关作为这些资源的拥有者和管理者,同时,作为访问控制过程中的访问控制实施点。

当主体想要访问某一资源时,主体并不直接与终端设备资源通信,而是与访问控制实施点进行交互。主体向访问控制实施点发送访问控制请求,访问控制实施点与访问控制裁决点进行交互,权限通过后得到一个权限令牌token,然后访问控制实施点与设备资源进行交互,将访问结果和token返回给主体。

访问主体也可以直接访问权限裁决点,通过提前申请token达到降低访问控制时间成本的目的。

2.5 权限裁决点

权限裁决点能够接收访问控制实施点和访问主体发送的访问控制请求。权限裁决点首先调用智能合约获得主体和资源的相关信息,查看安全监测模块判断主体是否处于惩罚状态,然后调用策略合约进行权限裁决,最后若裁决通过,则生成一个权限令牌token,并将裁决结果和token返回给信息发送方。

当被访问资源为敏感资源时,权限裁决点会拒绝来自访问主体的访问请求,只接受访问控制实施点的访问请求。访问控制实施点发送访问请求,权限裁决点将裁决结果和token直接返回给访问控制实施点。然后访问控制实施点需要先对token进行签名,然后将裁决结果和token返回给访问主体。

2.6 安全监测模块

访问控制模型中设置有安全监测模块,可以更好地督促用户行为和惩罚恶意行为。访问客体拥有访问日志,区块链会记录用户的访问过程行为,当用户存在不当操作或者恶意操作时会受到相应的惩罚,例如:当用户在规定单位时间1 s内进行超过阈值3次的访问时或进行超过3次向无权限资源发起访问时,系统判定为轻度恶意访问,并在规定时间3 min内限定其访问;用户在受到处罚过程中或之后再次进行违规操作,系统判定为中度或重度恶意访问,延长限制时间,并下降20%信任度。日志分析模块会在用户进行访问时分析用户的在单位监测时间内的访问频率,当用户访问过于频繁超过阀值或者多次认证失败时,系统将采取惩罚措施。禁止用户在一定时间内的全部访问请求,并将惩罚结果记录在访问日志和用户智能合约中。当检测到用户进行越权行为或者用户之间进行恶意串通时,系统也会采取一定的惩罚措施。

2.7 身份认证模块

当被访问资源为敏感资源时,访问控制实施点与访问主体进行通信的过程中需要使用身份认证模块。访问控制过程中用户和资源都存在身份被冒领的可能,在模型中设置身份认证模块可以有效地解决这一问题。其原理是使用非对称加密算法里的数字签名算法。

信息发送方需要预先将自身的相关信息和公钥发送给属性分配机构,属性分配机构为其部署专属智能合约,并将属性、公钥的相关信息记录在智能合约中。任何用户或者资源拥有者在拥有智能合约地址的前提下都可以查看存储在其中的公钥。区块链的防篡改性、可追溯性保证了公钥的可靠性。将属性、公钥等相关信息记录在智能合约可以有效防止第三方在访问控制过程中伪造虚假信息,为访问控制提供了公开透明、安全可信的通讯环境。

3 模型工作流程

上文描述了模型的形式化定义,这里将详细介绍模型的工作流程。

3.1 无token访问控制流程

当访问主体没有权限令牌token的情况下,主体向访问控制实施点请求访问资源和权限,具体流程如图2所示,请求访问权限过程如算法1所示。

图2 访问控制流程模型

算法1: 请求访问权限算法

输入: (s.id,o.id,s.p)

输出: token

(1)RequestAccess (s.id,o.id,s.p)

(2)if o=msg.sender∧s.a≠NULL∧o≠NULL then

(3) s.a←GetAttributes(s);ra,pa←s.a;

(4) o.a←GetAttributes(o);

(5) If AFC(s.a)∈ACR∧Tt>Tr

(6) get Decision()←AFC(ra,pa);

(7) If Decision(o.a, s.a,s.p)=true then

(8) emit request event;

(9) token←CreateToken(s.a,o.a,s.p);

(10) return token;

(11) else return Access denied;

(12) end if

(13)else return Fail verification;

(14)end if

访问控制实施点向权限裁决点发送一个三元组请求的消息(s.id,o,s.op)。 分别是主体的唯一id,主体o和用户所请求的操作s.op。当收到访问控制请求时权限裁决点通过调用GetAttribute(),GetStrategy()分别获得用户的属性s.a,客体属性o.a。依据属性条件函数ACF()判断属性是否合规,同时结合计算所得的信任度Tt确认用户设备身份、类型和信任评价。使用角色条件函数AFC()根据角色属性ra找到与设备相关访问策略合约Decision()的地址。调用裁决合约Decision()利用获得o.a, s.a,s.p做出决策,判断是否授予权限。

调用裁决合约Decision()进行判断的过程是需要发生交易的,所以会被广播并记录在区块链上。如果决定授予权限,则权限裁决点生成一个对应的token。裁决过程由所有以太坊节点进行监督,裁决结果根据共识算法的不同需要达到一定占比的支持才能生效,保证了裁决结果的公开透明。

3.2 有token访问控制流程

为了不影响访问速度,访问主体可以提前向权限裁决点发送访问请求。其过程与访问控制实施点向权限裁决点请求裁决过程类似。

当访问主体获得token后,主体向访问控制实施点发送访问请求。访问控制实施点通过判断token的有效性代替权限裁决过程,判断token是否合法如算法2所示。

算法2: 请求访问算法

输入: (s.id,o.id,token,s.p)

输出: true or false

(1)GrantAccess (s.id,token,s.p)←(s.id,token,s.p);

(2)if s=msg.sender∧s.id≠NULL∧token≠NULL then

(3) s.a←GetAttributes(s);

(4) if Effective(token)∧GetAttributes(token)⊆s.a then

(5) s.p←GetPermission(token);

(6) If s.p⊆o.p

(7) return true;emit access event;

(8) else return false;

(9) end if

(10) else return false;

(11) end if

(12)else return false;

(13)end if

主体向访问控制实施点发送四元消息 (s.id,o.id,token,s.p) 分别是主体的唯一id,主体所使用的token、客体的id和将要使用的权限。然后访问控制实施点通过调用GerAttributes(s)查看主体属性集s.a,并判断有权利使用token的属性是否被包含在主体属性集s.a内。最后判断主体所请求的访问权限s.p是否属于资源所有者所允许的权限o.p内,是则用户拥有s.p权限访问资源。需要注意的是当被访问资源为敏感资源时,主体发送访问请求前需要对token进行签名处理。

4 案例分析

基于以上访问控制模型,搭建了原型演示系统,具体硬件环境配置如图3所示,其中两台台式计算机、3台笔记本电脑、一个物联网网关开发板、两个Wi-Fi开发板。

图3 部分设备环境

在两台台式计算机、3台笔记本电脑和物联网网关开发板上安装以太坊客户端,安装了以太坊geth客户端的设备可以转换为以太坊节点,这些节点通过配置加入到同一个私有区块链网络,如图4所示。

图4 仿真实验拓扑图

实验中两台台式计算机和3台笔记本电脑充当矿工维护整个私有区块链网络。物联网网关开发板作为物联网设备的代理通过Remix集成开发环境编译用于访问控制判断的智能合约。每个以太坊节点还采用了web3j,通过web3j来与以太坊geth客户端进行交互。计算机设备规格见表1。

案例:用户依次对温度计、灯进行读取和控制操作。预计达到的访问控制结果见表2。

表1 计算机设备规格

表2 预期访问结果

用户使用错误签名请求对温度计进行读操作,温度计可以进行读操作,但是错误签名导致签名认证错误第一次操作被拒绝。用户使用正确签名向温度计请求控制操作,温度计只能进行读操作,控制操作显然超出温度计的适用范围,自然超出token权限范围,操作被拒绝。用户使用正确签名向灯光控制器请求读操作,权限允许,签名认证通过,所以允许操作。实验结果如图5所示。

图5 仿真实验结果

5 安全分析

女巫攻击是指攻击者利用单个节点来伪造多个身份存在于P2P网络中,从而达到削弱网络的冗余性,降低网络健壮性,监视或干扰网络正常活动等目的。用户和资源都存在身份被冒领的可能,本模型在请求访问过程中,资源拥有者需要对token进行签名,以此验证该token是自己发布的。用户在得到token后使用资源拥有者的公钥进行认证,确认该token是资源拥有者所发布的。在访问资源过程中,需要用户自身对token进行私钥加密签名,资源拥有者会根据用户的公钥验证访问者的身份。解密和签名的过程会极大地增加女巫攻击的计算成本,而通过引入私钥签名、公钥认证的过程,可以轻松解决掉用户身份被冒领的问题。

为了确保正确的访问控制,ABAC-B模型必须能够抵抗共谋攻击。有时,当设备中没有一个满足访问控制要求的属性集时,它们可能会在利益的驱动下相互勾结,以尝试与他人进行身份验证、恶意串通访问权限以获取有价值的数据。例如当用户1拥有属性集A,用户2拥有属性集B∩C。规定只有拥有(A∪B)∩C才能访问资源。此时,用户1想要访问资源则需要和用户2恶意串通获得token。用于访问时需要提交token和用户1的ID。资源拥有者在获得访问请求后首先要调用验证token是否合法,随后调用智能合约查看用户1是否符合token的属性要求,可以很轻易地发现用户1并没有拥有属性集C,并终止身份验证。因此,我们的访问控制是可以防止用户间恶意串通的。

6 性能分析

ABAC-B模型通过属性分为角色属性、权限属性和标识属性达到细粒度访问的目的。本模块共设置10个节点,其中包括3个恶意节点,即拥有错误属性或伪造属性的节点和2个低信任节点,即拥有正确属性却申请错误权限的节点,利用本文所提算法,使用循环随机请求的方式分别进行10,100,500,1000次实验,实验预期及结果见表3。

表3 访问结果

可以看到当访问次数很少时,系统可以准确找到恶意节点,却很难区分低信任节点。当访问次数增加时,会话历史也在增加,此时系统可以有更多的信息计算节点的信任度,访问的正确率也逐步增加。

ABAC-B模型通过提前申请访问权限和多次使用token,降低区块链对访问控制性能的影响。本模块将通过实验验证,引用token可以有效降低区块链对访问控制性能的影响。因为本实验的区块链环境和数字签名环境并不能客观反映ABAC-B模型的时间效能,实验中POW和PBFT的共识时间来自文献[13,18]。本次实验,5种访问方式共进行20次取平均值,第一次完整的访问控制时间如图6所示。其中依次为ABAC-B模型在分别在POW和PBFT环境下进行无token的访问控制、有token的访问控制和传统的ABAC。需要注意的是在有token的访问控制过程中,访问控制实施点通过判断token的有效性来代替权限裁决过程和共识过程。而无token的访问控制在进行第一次访问控制之后,访问主体将会获得token,之后将进行有token的访问控制。可以看出在引入token概念后访问控制的时间得到有效的减少,且在理想环境下无token的访问控制时间比传统的ABAC访问控制时间明显增加,而有token的访问控制时间则略低于传统的ABAC访问控制时间。累计访问控制时间如图7所示。

图6 第一次访问控制的响应时间

图7 累计访问控制响应时间

可以看出,在引入token进行多次访问控制的情况下,可以有效降低区块链对访问控制性能的影响。

实验中存在一种可能当用户申请token后且在token生效时间内属性被更改,则此次访问时间为正常访问的两倍,但是此类事件发生概率太低,可以忽略不计。

7 结束语

在本文中,我们引入了ABAC中属性的概念,提出了一种与区块链技术相结合的基于属性的物联网系统访问控制方案。通过属性将属性细化,降低了访问控制的管理难度。利用智能合约存储重要数据和决策访问策略,达到了分布式的访问控制效果,有效防止了单点故障的问题。在策略中引入token概念,访问主体通过提前申请token获得访问权限,以及一次申请多次使用的方法,降低区块链对访问控制性能的影响。将属性、策略、公钥和权限更新在区块链上公开,创造了公开透明、安全可信的访问控制环境。利用非对称密码认证用户信息。引入了非对称加密算法中的数字签名算法,有效解决了身份被冒领的问题。

猜你喜欢

访问控制合约区块
一种跨策略域的林业资源访问控制模型设计
区块链:一个改变未来的幽灵
区块链:主要角色和衍生应用
《红楼梦》的数字化述评——兼及区块链的启示
内外网隔离中ACL技术的运用
一场区块链引发的全民狂欢
云计算访问控制技术研究综述
访问控制机制在数据库中的应用研究