基于格上密文策略属性基加密的联盟链数据共享方案

2023-11-18 03:32张凌云陈玉玲
计算机工程 2023年11期
关键词:解密密钥加密

张凌云,陈玉玲

(贵州大学 计算机科学与技术学院 公共大数据国家重点实验室,贵阳 550025)

0 概述

当前,大数据正在成为信息时代竞争的核心战略资源,如何高效、安全地进行数据共享是学者们聚焦的热点。为了解决“数据孤岛”问题,需要建立一个公平、合理的数据共享模型。数据泄露、信任危机、利益冲突等问题使得数据共享难以进行。随着区块链[1-2]、云存储以及密文策略属性基加密(Ciphertext Policy Attribute-Based Encryption,CP-ABE)的完善和普及,数据共享逐渐走进人们的日常生活。但是,量子计算机的出现给采用传统加密方式的数据共享方案带来了冲击,数据共享变得不再安全,且很少有学者将抗量子攻击密码方案运用到数据共享领域。

SAHAI 等[3]在2004 年开创性地提出基于模糊身份的加密,从而引申出属性基加密(Attribute-Based Encryption,ABE)的概念。2006 年,GOYAL 等[4]将访问策略分别嵌入到密文与密钥中,将ABE 分成CPABE 与密钥策略属性基加密(Key Policy Attribute-Based Encryption,KP-ABE),但是此方案的安全性没有在标准模型下进行证明。针对该问题,WATERS[5]提出一种高效的具有通用访问结构的CP-ABE 方案,但是该方案不满足自适应安全性。为此,2012 年,LEWKO 等[6]提出一种标准模型下自适应安全的CP-ABE 方案。为了实现抗量子攻击,SOO 等[7]基于环上容错学习(Ring-Learning with Errors,R-LWE)[8]提出一种新的格CP-ABE[9-10]。ZHAO 等[11]针对密钥撤销问题,于2020 年在TAN 等研究的基础上提出一种云环境下的可撤销格属性基加密方案。

共享经济的概念由美国社会学教授FELSON等[12]于1978 年首次提出。大数据的兴起将数据共享带到了新的高度。2017 年,XIA 等[13]基于区块链技术提出一种轻量、高效、可扩展的电子医疗数据共享方案,该方案使得医疗数据能够安全地进行共享并能够保证数据不被泄露。次年,为了使得医疗数据支持细粒度的访问控制,LIANG 等[14]提出一种以用户为中心的健康数据共享解决方案。XUAN 等[15]在2020 年基于演化博弈论提出一种新的数据共享方式,通过智能合约来动态调整参数大小,鼓励用户积极参与到数据共享中,但是,该方案并没有说明是在公链还是联盟链中共享数据。2021 年,MA 等[16]提出一种新的多关键词可搜索加密技术,并结合区块链、ABE 设计了一种安全、可信的数据共享方案,但是该方案没有考虑数据的更新问题。同年,GUO等[17]提出一种可以支持可信数据共享服务的区块链辅助框架,这种区块链辅助的框架能够解决查询授权的信任问题。然而,在分布式系统中很难创建一个完全可信的环境。QIN[1]在2021 年基于多机构CP-ABE 以及(t,n)门限秘密共享,解决了传统数据共享单点故障以及相互不信任的问题。2022 年,ZHANG 等[18]将区块链技术和CP-ABE 加密技术相结合,提出一种安全可信的农产品管理系统,以确保数据的高效共享和监督。

上述数据共享方案都是基于传统的CP-ABE 技术,安全性基于双线性配对或三素数子群决策问题,没有达到抗量子的安全性,且未说明用户为什么要选择区块链而不是在私下进行交易。此外,传统的CP-ABE 虽然支持访问控制,但是不支持数据的分级加密,拥有密钥的用户都能访问同样的数据。

针对上述问题,本文提出一种新的数据共享方案,主要工作如下:

1)基于CP-ABER-LWE及联盟链提出一种抗量子攻击的数据共享方案。

2)针对数据拥有者的主观意愿,提出一种数据分级加密方式,将用户属性分为高敏感与低敏感两类,并对数据进行分级加密。

3)基于演化博弈论建立一种数据共享模型,以鼓励用户积极参与到联盟链中。

1 背景知识

1.1 区块链

区块链的概念由中本聪在2008 年[19]首次提出。与普通的数据库不同,区块链是由不同节点参与、不同节点保存同一份数据的分布式数据库系统。每个区块通过密码学方法产生并包含上一个区块的哈希值,它的第一个区块称为创世纪块(genesis block)。由于不需要信任机构且具有不可篡改、不可伪造等特性,区块链经常被应用于溯源[20-21]、数据确权[22-23]、数据共享等领域。区块链又分为公链、私链、联盟链3 种,本文使用的是联盟链。相比于私链,联盟链具有在指定成员之间的完全公开透明性。相比于公链,联盟链又对外部成员完全保密,在分布式系统中保留了传统可信第三方的特性,想加入联盟链的人员或组织必须满足准入机制,一旦有成员作恶,系统可以将其踢出联盟链。因此,联盟链能够有效解决采用公链或在私下交易的数据共享过程中所存在的信任危机问题。

1.2 Hyperledger Fabric

Hyperledger Fabric 支持联盟链与私链的开发,Hyperledger Fabric 中存在以下4 种节点:

1)Client 节点。该类节点用来发起提案,如安装链码、更新链码、调用链码中的方法。

2)Peer 节点。该类节点是系统中最普通的节点,用来维护账本。

3)Orderer 节点。该类节点是排序节点,主要负责对交易进行排序。

4)背书节点。该类节点是系统中由背书策略指定的一些特殊的Peer 节点。

首先由Client 节点发起提案,接着由Peer 节点进行背书,如果满足背书策略,则发送给Orderer 节点进行排序并生成区块,最后交给Peer 节点保存。Hyperledger Fabric 是第一个支持由不同语言对链码进行编程的平台,如Java、Go、Node.js 等,不要求某种特定的语言,因此,在实际中得到广泛应用。

1.3 线性秘密共享方案

定义1[线性秘密共享方案(Linear Secret Shar‐ing Schemes,LSSS)][24]令U是属性空间,q是一个大素数,在Zq上的秘密共享方案Π满足U上的访问结构,如果满足如下两点则称为是线性方案:

1)每个参与方共享的秘密数组成了Zq上的列向量。

2)对于U上的访问结构A,存在一个l行、n列的称为Π的共享生成矩阵W。对于i=1,2,…,n,W的第i行标记为一个属性ρ(i()ρ是一个映射,将矩阵W第i行映射到Π)。给定一个向量v=(s,r2,…,rn),s∊Zq是各个参与方共享的秘密数,且r2,…,rn是随机选取的。λ=Wl×n∙v是线性秘密共享方案的共享生成向量,其第i行是参与方ρ(i)所持有的秘密份额。

线性重构为:假设Π是访问结构A 的线性秘密共享方案,S是属性集。当S是授权集时,定义I={1,2,…,l}以及I={i|ρ(i)∊S},对于共享向量{λi}i∊I,存在一个常数向量w={wi∊Zp},当W∙w=(1,0,…,0)T时,可以得到,且wi可以在多项式时间内找到。如果S不是授权集,那么向量w不存在。

1.4 基于R-LWE 的格CP-ABE

基于R-LWE 的CP-ABE 的安全性以决策性R-LWE 问题为基础,包含了如下4 个多项式时间算法:

1)Setup(1φ,U)→P,Km。启动算法以安全参数φ和属性空间U为输入,通过在分圆多项式环中选取各个参数,最后输出公共参数P 以及主密钥Km。

2)Encrypt(P,M,A)→C。加密算法需要输入3 个参数,分别是公共参数P、密文M以及属性空间对应的访问结构A,输出密文C。

3)KeyGen(Km,U)→KDec。用户解密密钥生成算法输入2 个参数,分别是主密钥Km和用户的属性集合U,算法输出用户解密密钥KDec。

4)Decrypt(P,C,KDec)→Mor ⊥。解密算法输入3 个参数,分别是公共参数P、密文C以及用户的解密密钥KDec。当用户的属性集合满足密文中的访问策略时输出明文M,否则输出⊥。

1.5 演化博弈论

演化博弈论[25]于1973 年被首次提出,提出者认为与传统博弈理论不同,演化博弈论不要求参与人是完全理性、完全信息的,而是认为人类通常是通过试错的方法来达到博弈均衡。类似于进化论,演化博弈论所选择的均衡是一个达到均衡过程的函数,给出纳什均衡的生物学解释:纳什均衡是无数次动态博弈的稳定状态。令0

(1-x)∙u(m,m*)+x∙u(m,m)<

(1-x)∙u(m*,m*)+x∙u(m*,m)

从而得到u(m,m*)

定 义2 令G=<{1,2},((m,m*),(m,m*)),(ui)>是一个对称策略博弈,对于函数u,m*是G的一个演化稳定策略(ESS)需要满足如下两点:

1)(m*,m*)是G的一个纳什均衡。

2)u(m,m)

2 具体方案

2.1 系统结构

2.1.1 成员组成

如图1 所示,本文方案成员组成具体如下:

图1 成员组成Fig.1 Membership composition

1)DO(Data Owner):数据拥有者是数据的提供方,负责加密数据并上传到云端,同时也作为联盟链的Peer 节点保存账本。

2)Cloud:云端负责存储数据以及作为联盟链的Client 调 用Smart Contract 接 口。

3)AA(Attribute Authority):属性机构负责为数据使用者颁发解密密钥,同时作为联盟链的Client 调用Smart Contract 接口。

4)CA(Certification Authority):证书颁发机构负责为成员颁发公私钥作为联盟成员的凭证。

5)DU(Data User):数据使用者从云端获取数据并解密使用,同时也作为联盟链的Peer 节点保存账本。

6)Blockchain:上述成员都参与了一个区块链网络,链上存储了各种公共参数、DO 上传数据的证明以及数据使用者使用数据的各种信息。

本文中所涉及的常用符号及变量定义如表1所示。

表1 常用符号定义Table 1 Common symbol definitions

2.1.2 CBDSC

CBDSC 一共由4 个多项式时间算法组成:

1)SystemSetup(1φ,U)→P,Km:系统初始化由CA完成,通过安全参数φ及属性空间U生成公共参数P以及主密钥Km,并调用智能合约将P 上传到区块链网络。

2)DOEncrypt(P,Mhigh,Mlow,)→CR-LWE:加密阶段数据拥有者通过公共参数P、高敏感数据Mhigh、低敏感数据Mlow以及访问结构A 生成密文CR-LWE并上传到云服务器,云服务器调用智能合约将数据拥有者上传数据的凭证存储到区块链。

3)AAKeyGen(Km,kDU,S)→KDec:属性机构通过DU 发来的属性集S、公钥kDU和主密钥Km生成解密密钥,并将发送给DU,DU 在本地生成解密密钥KDec。

4)DUDecrypt(P,KDec,CR-LWE)→MhighorMlow:数据使用者通过公共参数P、自己的解密密钥KDec以及密文CR-LWE解密出数据,同时云端将数据使用者使用数据的信息通过智能合约上传到区块链。

2.1.3 智能合约部署

本文系统中一共部署了3 个智能合约,分别是公共参数上传合约(Public Parameter Upload Contract,PPUC)、数据拥有者上传数据凭证合约(Data Upload Information Contract,DUC)和数据下载信息合约(Data Download Information Contract,DDC),本文主要介绍后面2 个。

1)数据拥有者上传数据凭证合约

算法1 展示了DUC 的整体流程,DO 需要提供自己的DOID(DO 加入系统颁发的公钥)以及密文,DUC首先获取DO 上传数据的时间,通过gethash()函数将DO 的DOID 以及数据取哈希之后,以键值对的形式将凭证存储到区块链,DO 的数据结构如图2所示。

图2 DO 的数据结构Fig.2 Data structure of DO

算法1 DUC 的Addowner 函数

2)数据下载信息合约

算法2 展示了DDC 存储下载证明的流程,由于云端是Client 节点,因此DU 只需提供自己的ID,DU的数据结构如图3 所示。

图3 DU 的数据结构Fig.3 Data structure of DU

图4 分级LSSSFig.4 Grading LSSS

算 法2 DDC 的AddDuInfo 函 数

2.2 系统实现

DU 在生成解密密钥后用DO 的公钥向云端请求数据,云端返回该数据地址并将此次请求信息调用智能合约上传到区块链。解密算法首先找到向量w使得:

3 基于演化博弈论的联盟链数据共享模型

针对少数用户抱有私下交易比参与联盟链更符合自身利益而不愿意加入联盟链的想法,本文提出一种基于演化博弈论的联盟链数据共享模型,以鼓励用户参与到联盟链中。

3.1 基本假设与模型建立

本文模型涉及两类用户User1与User2,策略集G={参与联盟链,不参与联盟链}。

假设1令数据带来的固有收益为V,当两类用户都选择参与联盟链时,数据带来的额外收益为C。

假设2当有一方选择参与联盟链,另一方选择不参与联盟链时,不参与方需要承担数据泄露等问题造成的损失,假设损失概率为P,损失价值为Q。

假设3双方都不参与联盟链,除了损失收益PQ外,选取其他共享方式造成的损失或获得的收益为R。

本文模型收益矩阵如表2 所示。

表2 收益矩阵Table 2 Payoff matrix

3.2 模型分析

3.2.1 策略求解

User1选择参与联盟链的期望收益为:

其中:x为User2参与联盟链的概率。

User1选择不参与联盟链的期望收益为:

User1的期望收益为:

可得复制动态方程:

令F(y)=0,解得当F(y)>0 时,表示随时间的变化,User1选择参与联盟链的概率不断增加;当F(y)<0 时,表示随时间的变化,User1选择不参与联盟链的概率不断增加。同理,User2的复制动态方程为:

令F(x)=0,解得当F(x)>0 时,表示随时间的变化,User2选择参与联盟链的概率不断增加;当F(x)<0 时,表示随时间的变化,User2选择不参与联盟链的概率不断增加。

3.2.2 策略分析

由上述求解可知,演化模型的局部稳定点为(0,0)、(0,1)、(1,0)、(x*,y*),对应的雅克比矩阵J为:

如果一个局部平衡点满足detJ>0 且trJ<0,那么这个点就是局部渐进平衡点,称为演化博弈的稳定策略,即ESS。根据雅克比矩阵进行系统的稳定分析,如表3 所示。

表3 稳定性分析结果Table 3 Stability analysis results

从 表3 可以看出,除了C>0,0

1)R>C:此时(0,0)、(0,1)、(1,0)都是不稳定点,ESS 点只有(1,1),对应的相位图如图5 所示(彩色效果见《计算机工程》官网HTML 版,下同)。由于C>0 且PQ>0,因此如果R>C,那么双方不参与联盟链所带来的收益一定小于双方参与联盟链所带来的收益。因此,根据相位图的演变情况,即便有少数人刚开始选择不参与联盟链,但是最终会收敛到(1,1),即双方都参与联盟链。

图5 R>C 对应的相位图Fig.5 Phase diagram corresponding to R>C

2)-PQ0,R

图6 -PQ

3)R<-PQ:此时(0,1)、(1,0)都是不稳定点,ESS 点有(0,0)、(1,1)两个。由于R<-PQ,因此-PQ+R所对应的值与C的大小不确定,对应的相位图如图7 所示。随着参数的变化,演化模型最终会收敛到(0,0)和(1,1)两个平衡点。

图7 R<-PQ &R+PQ>-1 对应的相位图Fig.7 Phase diagram corresponding to R<-PQ &R+PQ>-1

4 实验分析

4.1 博弈模型参数分析

由于R>C和-PQ

情况1演化策略的效果如图8(a)所示,此时R+PQ>-1,随着时间的推移,最终双方都会选择参与联盟链。

图8 演化策略的效果Fig.8 Effect of evolutionary strategy

情况2演化策略的效果如图8(b)所示,当R+PQ<-1 时,双方都会选择不参与联盟链。

综上,如果想要演化结果是双方都参与联盟链,则需要满足R+PQ>-1。

4.2 分级加密正确性分析

当S∊{高权限属性集}时,解密算法首先找到向量w,使得

因此,M=M'modp。当数据使用者想要用低权限属性去解密高敏感数据时,会遗留如下一项导致解密不成功:

ars1K0-ars2K0

4.3 效率分析

文献[26]使用合数阶双线性群[27]构造CP-ABE,而本文的分级加密使用了多项式环,因此,通过Java 的JPBC 和Rings jar 包构建加密方案。图9中的横坐标表示属性的数量,且呈指数增长,纵坐标是每选择10 个操作的平均时间,图9(a)、图9(b)和图9(c)分别是启动、加密和解密时间的比较结果。可以看出,随着属性的增加,基于R-LWE 的CP-ABE算法效率明显高于基于合数阶双线性群的CP-ABE算法,但是在密钥生成方面[图9(d)],基于R-LWE的CP-ABE 算法复杂度为O(nlogan),n为系统中属性的个数,而基于合数阶双线性群的密钥生成算法的复杂度是O(n)。因此,随着属性的增加,本文分级加密方案效率将逐渐低于文献[26]方案。

图9 2 种方案的时间对比Fig.9 Time comparison of two schemes

4.4 联盟链吞吐量测试

本节主要测试在部署DUC 和DDC 这2 个智能合约后不同数量的背书节点对联盟链吞吐量的影响。

4.4.1 DUC 智能合约

表4 展示了在部署DUC 后不同背书节点对联盟链吞吐量的影响。从表4 可以看出,当系统中有2 个背书节点时,系统对Addowner 函数的最大响应时间为2.03 s,最小响应时间为0.03 s,每秒处理的平均交易数为1.9;对QueryData 函数的最大响应时间为0.02 s,最小响应时间可以忽略不计,每秒处理的平均交易数为374.3。由于Addowner 函数中涉及获取当前时间、封装用户、转换哈希等操作,而QueryData只涉及查询以及封装操作,因此在响应时间上QueryData 要高于Addowner,在每秒处理的平均交易数上QueryData 明显少于Addowner。

表4 不同数量的背书节点对联盟链吞吐量的影响1Table 4 The impact 1 of different numbers of endorsement nodes on the throughput of the consortium blockchain

4.4.2 DDC 智能合约

表5 展示了在部署DDC 后不同背书节点对联盟链吞吐量的影响。从表5 可以看出,当系统中有2 个背书节点时,系统对AddDuInfo 函数的最大响应时间为2.04 s,最小响应时间为0.02 s,每秒处理的平均交易数为1.9;对QueryDownloadRecords函数的最大响应时间为0.03 s,最小响应时间可以忽略不计,每秒处理的平均交易数为359.6。由于AddDuInfo 函数中同样涉及获取当前时间、封装用户、转换哈希等操作,而QueryDownloadRecords 仅涉及查询、遍历以及封装操作,因此在响应时间上AddDuInfo 高于QueryDownloadRecords,在每秒处理的平均交易数上AddDuInfo 明显少于QueryDownloadRecords。

表5 不同数量的背书节点对联盟链吞吐量的影响2Table 5 The impact 2 of different numbers of endorsement nodes on the throughput of the consortium blockchain

5 结束语

利用区块链和访问控制技术进行数据共享是当今信息化时代的一个热门课题,本文针对共享过程中存在的数据泄漏、信任危机和传统加密无法抵御量子攻击等问题,提出一种基于格上CP-ABE 的联盟链数据共享方案。此外,针对少数用户抱有私下交易比参与联盟链更符合自身利益而不愿意加入联盟链的想法,通过构建演化博弈模型分析不同参数对共享双方策略选择的影响。对本文的加密方案、部署智能合约后的联盟链系统进行测试,通过Matlab 对演化模型进行模拟,结果表明,分级加密方案效率高于基于合数阶双线性群的加密方案,增加背书节点能够提高联盟链系统的吞吐量,本文所提演化模型能够对共享双方起到激励作用。下一步将对R-LWE 密钥生成效率偏低的问题进行研究,并探究如何对密钥进行追溯。

猜你喜欢
解密密钥加密
探索企业创新密钥
炫词解密
解密“一包三改”
密码系统中密钥的状态与保护*
炫词解密
一种基于熵的混沌加密小波变换水印算法
一种对称密钥的密钥管理方法及系统
基于ECC的智能家居密钥管理机制的实现
认证加密的研究进展
基于ECC加密的电子商务系统