杨业平, 林德威, 黄芳芳, 王斌, 杨旸
(1. 国网福建省电力有限公司信息通信分公司, 福建 福州 350003; 2. 国网信通亿力科技有限责任公司, 福建 福州 350003; 3. 福州大学计算机与大数据学院, 福建 福州 350108)
基于区块链的物联网模型可以广泛应用于智能电网、 车联网、 智慧医疗等领域, 实现分布式的资源管理以及更低的管理开销和更高的商业价值[1]. 在巨大的商业潜在价值背后, 区块链物联网技术的推广也面临着巨大的安全威胁和挑战: 增加数据窃听、 拒绝服务攻击和僵尸网络攻击等风险. 其中, 最大的安全威胁是数据泄露, 这些数据极易被攻击者窃听和搜集, 然后在暗网中进行售卖[2]. 因此, 区块链物联网的隐私性保护是一个亟待解决的问题.
Lu等[3]提出基于区块链的安全数据共享架构, 通过仅共享数据模型来实现对数据隐私性的保护. Hassija等[4]通过博弈论模型来实现电网和车辆之间交互的性能优化, 但是系统对数据安全性的保护较弱. 乔康等[5]设计了面向物联网数据共享的链下交易机制, 基于闪电网络的方案可以提高交易吞吐量, 降低交易时延. 蒋宇娜等[6]构造了基于区块链的去中心化物联网数据共享和存储算法, 通过存储证明的共识机制, 对区块传播时延进行均衡化处理. Yu等[7]综合属性基加密(attribute based encryption, ABE)算法和变色龙哈希技术, 提出可更新的数据共享访问控制方案. 任天宇等[8]提出基于多级身份验证和轻量级加密的电力物联网数据安全方案, 采用RC6和Fiestel加密算法对敏感数据进行处理, 但是加密数据共享的方式不够灵活. Ren等[9]结合ABE和区块链技术实现了跨域的数据访问令牌申请和更新. Qi等[10]设计了基于压缩算法的物联网隐私数据共享框架, 从而利用区块链对隐私数据进行管理.
为了实现对数据的隐私保护, 本研究提出一种新型区块链物联网安全数据共享算法, 利用属性基加密方式, 实现对物联网数据访问权限的细粒度控制, 并且通过外包解密技术降低用户端的计算开销. 本系统的一个核心功能是实现对用户访问次数的控制, 运用同步聚合签名、 可验证随机函数等算法, 对用户的每次访问进行管理. 在付费使用模型线下, 根据用户对数据的付费情况, 分配有限次数的物联网数据访问. 同时, 区块链的智能合约功能可以提供用户管理和访问验证功能. 此外, 本研究对方案进行了性能测试, 包括通信开销、 计算时间、 消耗的区块链Gas值等指标, 实验结果表明本方案具有高效性和实用性.
密文策略属性基加密(ciphertext-policy attribute based encryption, CP-ABE)可以为数据共享提供保护隐私的细粒度访问控制, 通过引入外包解密功能, 可以降低数据使用者的恢复明文数据的计算开销. 具体包含五个算法:
1) Setup(1λ)→(PP, MSK): 输入安全参数λ, 输出系统公开参数PP和主密钥MSK.
2) KeyGen(PP, MSK,S)→(TK, RK): 输入PP, MSK和用户属性集合, 输出密文转换密钥TK和提取密钥RK.
3) Enc(PP,m,A)→(EK, CT): 输入PP, 消息m和访问策略A, 输出封装密钥EK和密文CT.
4) Trans(TK, CT)→TCT/⊥: 输入TK, CT, 如果TK中的属性集合S与CT中的访问A匹配(f(S,A)=1), 则输出转换密文(或称为部分解密密文)TCT, 否则输出0.
5) Dec(RK, TCT)→(EK,m): 输入RK, TCT, 输出封装密钥EK和消息m.
本系统使用同步聚合签名(synchronized aggregate signature, SAS)对云服务器提供的数据安全访问服务进行审计. SAS包含六个算法:
1) Setup(1λ)→PP: 输入安全参数λ, 输出系统公开参数PP.
2) KeyGen(PP)→(pk,sk): 输入PP, 输出公私钥pk/sk.
3) Sign(PP,sk,m,ω)→σ: 输入PP,sk, 消息m和有效期ω, 输出签名σ.
4) Verify(PP,pk,m,σ)→1/0: 输入PP,pk,m,σ, 输出1表示签名有效, 否则输出0.
5) Agg(PP, PK, Msg, Sig)→σ∑: 输入PP, 一组公钥PK=(pk1, …,pkl), 一组消息Msg=(m1, …,ml), 一组签名Sig=(σ1, …,σl), 输出聚合签名σ∑.
6) AggVerify(PP, PK, Msg,σ∑)→1/0: 输入PP, PK, Msg,σ∑, 输出1表示聚合签名有效, 否则输出0.
可验证随机函数(verifiable random function, VRF)是一种可提供验证功能的伪随机函数, 包含四个算法:
1) Setup(1λ)→PP: 输入安全参数λ, 输出系统公开参数PP.
2) KeyGen(PP)→(pk,sk): 输入PP, 输出公私钥pk/sk.
3) Prove(PP,sk,x)→(y,π): 输入PP,sk和消息x, 输出VRF评估值y和证明值π.
4) Verify(PP,pk,x,y,π)→1/0: 输入PP,pk,x,y,π, 输出1表示(y,π)是对x的有效评估和证明值, 否则输出0.
属性集合定义: 本系统用符号A表示单个属性, 令{A1,A2, …,An}表示所有属性的集合.令符号S表示用户的属性集合, 并满足S⊆{A1,A2, …,An}.利用n比特串表示属性集合S=(a1,a2, …,an), 其中ai∈{0, 1}表示第i个属性对应的比特值: 若Ai⊆S, 则ai=1; 若Ai∉S, 则ai=0.例如, 假设n-6, 则S=(1, 0, 1, 0, 1, 1)表示属性集合S包含属性{A1,A2, …,An}.
访问策略定义: 本系统使用基于与门(AND gate)和属性集合{A1,A2, …,An}的访问结构来定义访问策略A.利用n比特字符串表示访问策略A=(b1,b2, …,bn), 其中bi∈(0, 1)表示第i个属性对应的比特值: 若Ai∈A, 则bi=1; 若Ai∉A, 则bi=0.例如, 假设n=6, 则A=(0, 0, 1,0, 1, 0)表示满足访问策略A需要包含属性{A3,A5}.
属性与访问策略匹配定义: 对于属性集合S=(a1,a2, …,an)和访问策略a=(b1,b2, …,bn), 如果对于所有的i∈(1, 2, …,n), 都满足ai≥bi, 则称属性集合S和访问策略A匹配, 表示为A⊆S.
系统架构如图1所示, 包括密钥生成中心、 云服务器、 区块链、 物联网和数据使用者.
图1 系统架构和工作流程图Fig.1 System model and workflow
密钥生成中心. 产生公开参数PP, 并分发密钥(步骤①): 为物联网设备分发公私钥对(PKO, SKO), 为数据使用者分发(PKU, SKU), 为用户生成密文转换密钥TKU和提取密钥RKU, 将(PKU, SKU, RKU)发送给数据使用者, 并将(PKU, TKU)发送给云平台.
物联网. 物联网设备需要对产生的数据m进行加密, 并使用访问控制策略A来对允许访问数据的用户属性S进行限定产生密文CT. 假设物联网设备授权用户对数据访问次数为κ, 物联网设备产生κ对签名密钥对, 并对签名私钥进行加密产生CK. 最后, 物联网设备将密文CT和签名密钥对CK上传到云平台进行存储, 云平台将CT发送到区块链平台进行存证(步骤②). 物联网调用智能合约对云平台的服务证明proof∑进行验证, 然后进行付费操作(步骤⑦).
数据使用者. 将访问请求req提交给云服务器(步骤③), 由云服务器完成密文转换操作(步骤④). 数据使用者将接收到的转换密文TCT提交给区块链智能合约进行正确性验证, 若正确则对其进行解密恢复出明文m. 然后, 数据使用者需要生成数据资源使用证明proof(步骤⑤).
云服务器. 提供数据存储服务和外包解密服务, 根据访问控制策略对授权数据使用者提供服务(步骤④). 在收到数据使用者访问证明proof后, 云平台将proof提交给区块链智能合约进行验证. 若通过验证则进行聚合生成聚合证明proof∑以对提供的服务进行收费(步骤⑥).
区块链. 为物联网数据存储、 共享、 访问、 收费过程提供存证服务, 同时利用智能合约对数据使用者的数据使用、 付费行为, 以及云服务器产生的聚合签名进行验证(步骤①②④⑥⑦).
KGC.Setup(1λ)→(PP, MSK): 密钥生成中心根据安全参数λ, 生成椭圆曲线群G=(p,Ep(a,b),Q), 其中Q是椭圆曲线G的生成元, 群G的阶为素数p.生成双线性对(p,G,GT,e), 其中群G和GT的阶为素数p, 双线性对映射e:G×G→GT.令系统的全局属性集合为U=(A1, …,An).
U.DecVerify(PP, PKO, RKU, TCT, CSKctr)→(m,ski)/⊥: 数据使用者从转换密文恢复出访问密钥ski和明文消息m. 数据使用者用密文提取密钥RKU=ζ恢复出原始消息m. 首先计算下式:
通过个人电脑终端, 借助Charm库和以太坊测试网络进行安全数据共享系统进行性能测试. Charm库是一种可以用来对密码系统进行原型开发的函数库, 使用的编程语言是Python. 本研究从Charm库选取了三条椭圆曲线进行系统性能测试: secp384r1, secp256k1和secp224r1, 椭圆曲线的代数公式为E:y2=x3+ax+b, 定义在素数域Fp上,p为大素数, 其参数a,b∈Fp. 这三条曲线均为NIST(national institute of standards and technology)推荐的Weierstrass型曲线, 在OpenSSL库中可以实现. OpenSSL是一个开放源代码的软件库, 应用程序可以使用OpenSSL库来进行安全通信, 被广泛应用在互联网的网页服务器上. secp384r1椭圆曲线的大素数p=2384-2128-296+232-1,p的长度为384-bit, 可以实现192-bit的安全等级(该曲线方程参数均为长度大于100-bit的大整数, 故此处未列出). secp256k1的椭圆方程为E:y2=x3+7, 256-bit的大素数p=2256-232-29-28-27-26-24-1, 可以实现128-bit的安全等级. secp224r1的椭圆方程为E:y2=x3+5, 224-bit的大素数p=2224-232-212-211-29-27-24-2-1, 可以实现112-bit的安全等级. 以太坊测试网络(release-1.8 version)可以用过Solidity编程语言进行智能合约的编写和部署. 本研究使用Python库中的py-solc和web3联接以太坊的智能合约并进行编译, 通信过程采用RPC远程过程调用. 实验环境环境为PC, 配置为Intel Core i7-9700 CPU@ 3.00 GHz*8, 16 GB RAM, 运行64-bit Ubuntu 18.04.5 LTS操作系统.
根据系统初始化阶段、 密钥生成阶段、 物联网数据加密和共享阶段、 物联网数据请求阶段、 区块链聚合证明阶段以及区块链聚合验证阶段的划分, 对区块链安全数据共享系统的通信开销和计算开销进行了测试, 实验结果如图2~5所示.
(a) 各算法计算开销
(b) 各算法通信开销
(a) 初始化阶段计算开销
(b) 初始化阶段通信开销
(a) 加密阶段计算开销
(b) 加密阶段通信开销
在图2中, 密钥生成阶段, 解密和证明阶段, 聚合证明阶段和聚合验证阶段的计算开销都是固定值, 对于secp384r1椭圆曲线, 计算时间分别为2.126、 31.725、 27.473 和27.473 ms. 密钥生成阶段、 数据请求阶段、 解密和证明阶段、 聚合证明阶段的通信开销都是固定值, 对于secp384r1椭圆曲线, 通信量分别为0.56、 0.49、 0.56 和0.07 kbit. 图2的实验结果表明, 方案的各个算法在secp224r1、 secp256k1和secp384r1三条椭圆曲线上分别进行测试时, 计算开销和通信开销呈现依次递增的趋势, 这是因为三条曲线的参数依次增大, 随着素数域中素数比特长度的增加, 每一次椭圆曲线上的加法和乘法操作计算开销都会增加. 但是由此带来的是安全级别的提升, 从112-bit安全性, 提高到192-bit安全性. 因此, 在secp224r1曲线上的密钥生成阶段、 解密和证明阶段、 聚合证明阶段、 聚合验证阶段的算法实现具有高效性, 在secp384r1曲线上的实现会带来更高的安全级别. 因此, 该系统在实际部署时可以根据需求
对效率和安全性之间做出权衡.
图3展示了系统初始化阶段的通信和计算开销, 两者都随着系统中支持的属性数量n线性增长, 选择n的变化值分别为{5, 10, 15, 20, 25, 30}. 在系统初始化阶段, 密钥生成中心会为系统全局属性集合中的每个属性Ai分别生成公开参数(Qi,Ui,Vi), 其中i∈{1, …,n}.因此, 随着属性数量n的增长, KGC在初始化过程中的计算量和通信量也会随之增加. 当n=30时, 为了实现112-bit、 128-bit和192-bit的安全性, 系统初始化的时间开销分别为48.41、 61.852 和99.927 ms, 通信量分别为3.906、 4.278和6.51 kbit.
图4为物联网数据加密和共享阶段的计算和通信量, 图5为请求阶段的计算开销, 两幅性能图的对比可以看出加密时间高于请求阶段的计算时间, 并且都随着属性数量增加而线性递增. 加密阶段的运算量主要来自于属性基加密的计算, 耗时最多的是椭圆曲线上的幂指数运算. 请求阶段的数据使用方运算量较小, 云服务器对密文进行转换的计算量较大, 主要目的是降低用户端的解密开销. 当n=30时, 对于secp384r1椭圆曲线(192-bit安全性), 物联网数据加密的计算和通信开销分别是83.363 ms和2.66 KB, 数据请求和密文转换的计算量和通信量分别为72.568 ms和0.49 Kbit.
图5 请求阶段的计算开销 Fig.5 Computation overheads of query phase
通过上述实验结果表明, 本研究所提出的基于区块链的物联网安全数据共享系统中的各个阶段在不同的椭圆曲线上效率较高, 通信量低, 能够有效保护物联网数据的隐私性, 同时提供细粒度的数据共享策略, 并能够对授权用户的访问次数进行限定.
针对传统物联网数据共享系统中安全性保护级别低、 共享灵活性不足等问题, 提出一种基于区块链的物联网安全数据共享系统, 不仅能够实现数据保密性, 非交互式的细粒度访问控制和数据不可伪造性, 还具有防篡改性, 抗分布式拒绝服务攻击和数据过度下载等特性, 适用于付费商业模型. 实验测试结果表明, 本研究提出的数据共享系统有很低的计算开销和通信量, 同时, 具有高效性, 系统能够在通过椭圆曲线的选取达到不同的安全级别.