1. 引言
伴随物联网飞速发展而来的数据安全问题越来越凸显。物联网设备数量众多、规模庞大,产生的数据包含大量个人隐私,例如:智能摄像头捕获的音视频、可穿戴设备收集的个人信息等。如果数据严格管控,不与外界分享,则物联网强大的潜力不能发挥;而与外界分享数据时,所传输的数据会通过不受信任的网络路由或存储在不受信任的云服务器中。此外,传统互联网中,管理者可以在数据生成时为其提供完整性证明与身份验证,但是机密性通常由非对称加密来实现。与传统互联网不同的地方在于,物联网设备进行通讯时,数据管理者所传输的数据可能只希望某些选定方可以访问。物联网的数据分享通常需要一方加密多方解密,因此传统的访问控制方案很难适用于物联网环境。
区块链(Blockchain)技术 [1] 是由中本聪(Satoshi Nakamoto)在2008年首次提出来的。作为一种分布式点对点交易平台,由于其自身所具有的安全、可审计、可追溯、不可篡改等特性,区块链已经被认为是满足物联网安全需求最有前途的技术之一 [2] [3]。虽然区块链是一项新兴技术,但已经有很多研究提出将区块链技术(如Fabric [4] [5]、Bitcoin [1])应用到现有的访问控制方案中。一般来说,访问控制方案中区块链的使用可以分为两类,一是基于分布式账本实现去中心化存储,二是基于智能合约支持分布式服务。一方面,Zyskind [6] 等提出将权限授予与检查作为区块链的底层交易协议,使得数据所有者可以更有效率地管理用户对其数据的访问;Hossein Shafagh [7] 等使用区块链交易来存储访问权限信息,确保访问授权不会被篡改;Ouaddah [8] 等提出的基于区块链的访问控制参考模型,扩展了Fabric底层交易结构,将数字货币用授权令牌替代,数字货币交易改为令牌的交易。因此,该模型可以通过令牌交易实现访问权限的授予、获取。另一方面,Zhang [9] 等通过不同的以太坊智能合约管理每个主体(资源请求者)和客体(资源拥有者)之间的访问策略;Liu [10] 等人将区块链与基于属性的访问控制(ABAC)相结合,以Fabric平台为基础,设计了三种智能合约来实现物联网访问控制;丁晟 [11] 等人提出了一种新的基于属性的物联网系统访问控制方案,使用区块链技术来记录属性的分布,以避免单点故障和数据篡改,大大简化了访问管理,并且对访问控制流程也进行了优化。
Sahai和Waters提出的属性基加密(ABE)技术 [12] 同时实现了数据加密与访问控制,由于其细粒度、一对多、用户控制等特点而被广泛应用于加密访问控制。与传统的密码算法相比,属性基加密提供了一种更高效的访问控制方案:在Bethcourt等人提出的密文策略属性基加密(CP-ABE) [13] 中,数据请求者的私钥与其拥有的属性相关联,数据管理者将数据与访问结构封装形成密文,当且仅当私钥关联的属性满足密文的访问结构时,才能成功解密。在该方案中,数据请求者的身份由其所拥有的属性来描述,数据管理者只需要加密一次,满足访问结构的所有数据请求者就可以多次解密。然而,尽管属性基加密拥有显著的优点,但其计算开销对于物联网中资源受限型设备是一个巨大的挑战。定义访问结构所使用的属性的数量会显著影响属性基加密在实际应用中的性能:CP-ABE中,生成访问结构需要为每条属性进行幂运算;解密与双线性配对操作有关。这两种操作在基于配对的密码学中开销很高,很难适用于资源受限性设备大规模存在的物联网环境。
基于以上问题,本文提出了一种基于区块链的物联网数据访问控制方案,该方案借助智能合约技术,将属性基加密中开销高的双线性配对操作外包至区块链中执行,进行预解密,然后在本地验证区块链预解密的正确性,从而减轻了用户端的计算压力,解决了传统访问控制方案中数据请求端开销高的问题,实现了轻量级的访问控制。
2. 预备知识
2.1. 双线性映射
设G与GS是两个阶为素数p的乘法循环群,g与gS分别为两个循环群的随机生成元。定义运算
为双线性映射,具有以下性质:
1) 双线性:
。
2) 非退化性:
,1为GT单位元。
3) 可计算性:
,存在有效的多项式算法计算
。
若
,则该映射对称,否则为非对称映射。
2.2. 访问结构
设
为参与方集合,集合
。对于
,若
且
,则
,则
是单调的。若
,且单调,则
是一个访问结构(单调访问结构)。若集合
,则称D为授权集,否则为非授权集。
本文采用单调访问结构,参与方集合
由属性组成。单调访问结构可以用与门和或门组成的单调布尔公式直观表达,通常使用单调张成方案转化为矩阵M与映射
,其中M的第i行被属性
标记。设S为属性集合,若存在系数
,使得
则称S满足访问结构
。
2.3. 密文策略属性基加密(CP-ABE)
传统的密文策略属性基加密方案由以下四个基本算法组成:
1) 初始化算法
:系统CA运行初始化算法,输入为隐式安全参数
与属性集合P,输出公共参数PK,系统主密钥MSK。
2) 加密算法
:数据管理者运行加密算法,输入为公共参数PK,欲加密明文m及访问结构
,输出密文CT。只有拥有满足访问结构的属性的数据请求者才能解密。
3) 密钥生成算法
:系统CA运行密钥生成算法,输入为系统主密钥MSK与属性集合S,该算法将属性集合与密钥关联,输出属性密钥SK。
4) 解密算法
数据请求者运行解密算法,输入为公共参数PK,密文CT与属性密钥SK,若与SK关联的属性集合满足CT所包含的访问结构
,则该算法将解密CT输出明文m。
2.4. Hyperledger Fabric
本方案所采用的区块链平台为Hyperledger Fabric。Fabric是一种使用模块化结构的许可链,其中具有决定性的扩展功能为智能合约(Smart Contract)。如图1所示,Fabric与其他区块链平台最为显著的区别在于其模拟(simulation)、排序(ordering)、验证(validation)、提交(commit)的交易执行顺序:
1) 模拟:客户端发起交易请求,该请求被发送至经背书策略(endorsement policy)选择的背书节点(endorsement nodes)。背书节点模拟执行交易后形成读写集(ReadWriteSet),并将读写集与背书签名发送回客户端。客户端收集到足够背书后,则生成真正的交易请求,该请求包含之前收到的读写集与背书签名,然后发送给排序服务。
2) 排序:排序服务按照交易到达顺序排序,然后将一定数量的交易打包形成块(block),将块发送至网络中所有对等节点。系统不保证所有对等节点同时收到相同的块,但基于gossip协议保证所有对等节点收到块的顺序相同。
3) 验证:对等节点收到块后,即对块中包含的交易进行验证。一方面验证该交易是否遵循背书策略且包含的背书签名与读写集是否对应。另一方面为交易冲突验证:Fabric模型中并行进行的模拟交易位于排序服务之前,可能会产生冲突。两方面验证都通过后,进入提交阶段。
4) 提交:对等节点将包含所有交易的块添加到区块链,并根据有效交易更新账本状态。
一个分布式Fabric应用包含两个主要组成部分:链码(Chaincode)、背书策略(Endorsement Policy)。
链码:在Fabric中智能合约又称为链码。链码是一种可以运行在区块链上实现特定交易逻辑的可编程应用。Fabric拥有强大的容器技术来支持图灵完备语言编写的链码,例如:GoLang、Java、Node.Js。
背书策略:背书策略规定了必须执行特定交易并为之背书的节点,也可指定特定交易背书的最少节点、最小百分比等。一笔交易在被提交前,必须符合背书策略。
Figure 1. Hyperledger Fabric workflow
图1. Hyperledger Fabric工作流
3. 方案架构
本文所提出的基于区块链的轻量级访问控制方案架构如图2所示,主要由五部分组成,分别是:数据管理者(DM)、数据请求者(DR)、身份认证模块(CA)、区块链模块(Block Chain)、云服务器(Cloud Server),各部分功能的具体描述如下:
身份认证模块主要负责对系统进行初始化和为数据请求者生成属性令牌;该部分默认可信。
数据管理者是数据资源(访问客体)的拥有者,主要负责对原始数据执行对称加密、存储数据密文至云服务器以及在区块链上部署相应的访问控制结构。
数据请求者是访问主体,主要负责发送数据访问请求至区块链、验证区块链的预解密结果、从云服务器下载数据密文进行解密。
区块链模块主要负责处理数据请求者与数据管理者的交易请求以及执行预解密操作。
云服务器负责存储、传输系统中产生的大规模数据密文。
Figure 2. Access control scheme architecture
图2. 访问控制方案架构图
如图2所示,CA首先产生公共参数,然后将其上传至Block Chain来对系统进行初始化;当DR加入Block Chain时,CA根据DR所包含的属性通过智能合约为其产生属性令牌并分发;DM分别上传数据密文与属性密文至Cloud Server和Block Chain;DR发送访问请求至Block Chain,预解密在Block Chain上执行,若属性匹配,则预解密成功;随后,DR得到预解密结果与数据密文,执行最终解密。
4. 访问控制算法
本方案的访问控制算法分为六部分,分别是系统初始化、加密、属性令牌、预解密令牌、预解密、本地解密。
如图3所示,在初始化阶段,CA生成公共参数PK和系统主密钥MSK,公共参数上传至区块链公开,主密钥安全保存;在数据存储阶段,数据管理者先将明文M使用对称密钥SKM加密后得到数据密文M*,然后对对称密钥SKM进行属性加密得到属性密文CT,最后将属性密文CT和数据密文M*上传至云服务器与区块链;在数据访问阶段,数据请求者首先依据自身属性通过CA生成属性令牌TS,然后将属性令牌转化为预解密令牌
上传至区块链,区块链用该预解密令牌对属性密文执行预解密后将结果CT*返回至数据请求者,数据请求者在本地执行最终解密,得到对称密钥SKM并验证,最后,用该对称密钥解密从云服务器下载的数据密文得到明文,执行数据访问。以下是每部分的详细描述:
1) 系统初始化
CA运行初始化算法
,输入安全参数
与属性集合
,生成公共参数PK与系统主密钥MSK来对系统进行初始化:
CA运行算法
得到
,其中G与GS为p阶循环群;然后随机选择
,
,对于属性集合U中的每一条属性i,随机选择
与之对应;最后选择哈希函数
。则:
2) 加密
DM对数据资源M进行对称加密,得到数据密文M*后将其存储至云服务器,然后输入公共参数PK、对称密钥SKM、线性访问结构
(A为
阶矩阵,
为矩阵A的行向量Ai向属性
的映射),用加密算法
来加密对称密钥SKM:
加密算法随机选择向量
(
,
),
;对于矩阵A的行向量Ai,随机选择
。则:
属性密文
其中:
,
,
,
,
,
,
3) 属性令牌
CA运行属性令牌算法
为DR生成属性集合S所对应的令牌TS:
随机选择
,则:
其中:
4) 预解密令牌
DR运行预解密令牌算法
生成预解密令牌
:
随机选择
,恢复密钥
,则:
5) 预解密
区块链运行预解密算法
:
若属性令牌TS中所包含的属性不能满足线性访问结构
,则预解密失败,输出ERROR;
若属性令牌TS中所包含的属性满足线性访问结构
,则
定义为
,则必存在
,使
,预解密算法计算以下内容:
预解密密文为:
。
6) 本地解密
DR运行本地解密算法
,计算:
,
若
,则说明区块链上的预解密正确执行,然后从云服务器下载数据密文M*,用
对称密钥SKM解密数据密文后得到明文M,最后执行数据访问。
5. 安全性分析
5.1. 预解密机密性
预解密的机密性基于离散对数问题。本文所提方案通过随机选择的恢复密钥
产生预解密令牌
。因此,即使敌手从区块链处获得预解密令牌
和属性密文CT,也不能在没有恢复密钥RKS的情况下计算出SKM。所以,本文所提方案的预解密机密性得以保证。
5.2. 防篡改攻击
假设有少部分对等节点在短时间内受到攻击,敌手可以添加、删除、篡改存储在这些对等节点中的属性信息和数据访问记录。以单个恶意物联网设备为例,首先,通过在系统初始化阶段指定只有CA能产生属性令牌来防止恶意节点篡改属性信息;其次,当系统中的恶意节点试图篡改已有属性时,根据区块链的背书机制,必须有超过一半的节点被篡改。事实上,这是非常困难的,即敌手不可能通过破坏少数节点来篡改区块链上的数据。因此,本文所提方案可以防篡改攻击。
5.3. 抵抗合谋攻击
当多个恶意DR从区块链获得自己的属性令牌后,他们可能将其合并来解密自身属性权限外的文件。为了抵抗恶意DR的合谋攻击,属性令牌由CA随机选择的参数t来产生,不同的DR所采用的随机参数t是不同的。这样,恶意DR不能通过相互联合属性令牌来获取更多权限。因此,本文所提方案可以抵抗合谋攻击。
6. 结束语
本文提出了一种基于区块链的物联网数据访问控制方案,将区块链与属性基加密结合,借助智能合约技术,将属性基加密中开销高的双线性配对操作外包至区块链中执行预解密,然后在本地验证区块链预解密的正确性,解决了属性基加密应用于物联网资源受限设备中开销高的问题,从而减轻了用户端的计算压力,实现了轻量级的访问控制。安全分析结果表明,该方案在数据机密性、防篡改攻击和抵抗合谋攻击方面是可靠的。