计算机系统应用  2024, Vol. 33 Issue (4): 69-81   PDF    
边缘计算中基于区块链的轻量级密文访问控制方案
郑嘉诚1,2, 何亨1,2, 陈月佳1,2, 肖天哲3     
1. 武汉科技大学 计算机科学与技术学院, 武汉 430065;
2. 武汉科技大学 智能信息处理与实时工业系统湖北省重点实验室, 武汉 430065;
3. 华中科技大学 计算机科学与技术学院, 武汉 430074
摘要:密文策略属性基加密(ciphertext-policy attribute-based encryption, CP-ABE)技术可以在保证数据隐私性的同时提供细粒度访问控制. 针对现有的基于CP-ABE的访问控制方案不能有效解决边缘计算环境中的关键数据安全问题, 提出一种边缘计算环境中基于区块链的轻量级密文访问控制方案(blockchain-based lightweight access control scheme over ciphertext in edge computing, BLAC). 在BLAC中, 设计了一种基于椭圆曲线密码的轻量级CP-ABE算法, 使用快速的椭圆曲线标量乘法实现算法加解密功能, 并将大部分加解密操作安全地转移, 使得计算能力受限的用户设备在边缘服务器的协助下能够高效地完成密文数据的细粒度访问控制; 同时, 设计了一种基于区块链的分布式密钥管理方法, 通过区块链使得多个边缘服务器能够协同地为用户分发私钥. 安全性分析和性能评估表明BLAC能够保障数据机密性, 抵抗共谋攻击, 支持前向安全性, 具有较高的用户端计算效率, 以及较低的服务器端解密开销和存储开销.
关键词: 边缘计算    区块链    访问控制    密文策略属性基加密    椭圆曲线    
Blockchain-based Lightweight Access Control Scheme over Ciphertext in Edge Computing
ZHENG Jia-Cheng1,2, HE Heng1,2, CHEN Yue-Jia1,2, XIAO Tian-Zhe3     
1. College of Computer Science and Technology, Wuhan University of Science and Technology, Wuhan 430065, China;
2. Hubei Province Key Laboratory of Intelligent Information Processing and Real-time Industrial System, Wuhan University of Science and Technology, Wuhan 430065, China;
3. School of Computer Science and Technology, Huazhong University of Science and Technology, Wuhan 430074, China
Abstract: Ciphertext-policy attribute-based encryption (CP-ABE) can provide fine-grained access control while guaranteeing data privacy. Considering that the existing CP-ABE-based access control schemes can not effectively address critical data security in edge computing, this study proposes a blockchain-based lightweight access control scheme over ciphertext (BLAC) in edge computing. In BLAC, a lightweight CP-ABE algorithm based on elliptic curve cryptography is designed, and fast elliptic curve scalar multiplication is adopted to realize algorithm encryption and decryption. Additionally, most of the encryption and decryption operations are securely transferred to make user devices with limited computing power efficiently complete the fine-grained access control process of ciphertext data with the assistance of edge servers. Meanwhile, a distributed key management method based on blockchain is designed, which enables multiple edge servers to collaboratively distribute private keys for users by blockchain. Security analysis and performance evaluation show that BLAC can guarantee data confidentiality, resist conspiracy attacks, and support forward security. Additionally, it has high user-side computational efficiency and low server-side decryption overhead and storage overhead.
Key words: edge computing     blockchain     access control     ciphertext-policy attribute-based encryption (CP-ABE)     elliptic curve    

云计算通过基础设施搭建服务平台, 为用户提供了可扩展的计算与存储服务. 但其数据传输时具有较高的时延, 无法满足应用服务对于低时延的需求. 边缘计算作为云计算的扩展, 能够在网络边缘为用户提供计算服务, 极大提升了时延敏感型应用交互体验, 有效缓解了轻量级设备资源受限的问题[13]. 近年来, 边缘计算技术的快速进步推动了诸如智能家居, 智慧医疗等新型服务模式的发展与应用[46]. 在这些应用服务中, 海量数据存储在云服务器上, 并通过边缘计算提供的分布式计算资源进行处理, 但是边缘服务器与云服务器均不完全可信, 它们有可能窥探用户的隐私数据[79], 并且用户通常要实现数据的安全共享. 因此, 需要访问控制机制以避免其他用户对数据的非法访问. 传统的访问控制机制使用基于公钥的加密体制来限制用户的访问权限: 用户使用公钥对数据加密后进行共享, 持有对应私钥的用户才能进行解密. 在这种访问控制机制中, 需要可信的授权机构对所有用户的公钥进行管理. 然而边缘计算环境中的用户是海量的, 用户变更也较为频繁, 存储和维护用户的公钥将产生较大的开销, 并且也无法实现一对多的数据共享[10], 即传统的访问控制机制难以有效应用于边缘计算环境中. 密文策略属性基加密[11]是一种一对多的加密算法, 能够在保障数据机密性的同时实现细粒度访问控制. CP-ABE为数据制定由属性集合组成的访问策略, 只有当用户的属性集合成功匹配访问策略时, 用户才能解密密文. 通过CP-ABE可以实现一对多的数据安全共享, 适用于边缘计算环境中.

现有的基于CP-ABE的访问控制方案[12]通常会假定一个完全可信的授权机构进行密钥生成与管理, 授权机构可以为自身及所有用户生成密钥, 导致系统中的密文有泄露的风险, 即系统存在密钥托管问题. 部分方案[1315]采用多授权机构来解决密钥托管问题, 其中每个授权机构所管理的属性密钥各不相同, 然而当系统中属性数量过多时, 若通过单个授权机构所管理的属性密钥就可以解密某份密文, 那么密钥托管问题仍然存在. 与此同时, 用户需要同时与多个授权机构通信, 存在密钥分发困难, 通信成本较高等问题. 其次, 由于边缘计算环境中的终端设备是轻量级的, 如智能家居场景中所使用的嵌入式设备, 可穿戴设备, 传感器设备等, 计算能力低, 电池容量有限, 无法执行复杂度较高的计算任务, 现有方案[1618]采用的双线性配对计算复杂度较高, 不适用于轻量级设备. 相关研究[1921]通过将部分计算任务转移到服务器中以减少用户计算开销, 但受困于双线性配对运算的复杂性, 用户计算效率有待进一步提升. 再次, 边缘计算环境中用户对数据隐私保护的需求是多样的. 用户需要系统提供对数据权限的实时灵活的撤销, 如在智慧医疗中, 用户在就医时会授权医生对病历数据的访问权限, 就医结束后需要及时撤销医生的访问权限以保护用户的隐私数据. 相关研究[2224]提出通过属性更新密钥来解决属性撤销问题, 即授权机构生成属性更新密钥, 将涉及到的密钥和密文同时更新, 但这带来了额外的计算负担, 并且不够灵活, 难以有效满足用户对数据访问权限更改的需求. 同时用户也需要系统提供对任意非法用户共谋攻击的抵抗能力. 如为某份数据文件定义访问控制策略{“Doctor” AND “Surgery”}, 用户A具有属性{“Doctor”}, 用户B具有属性{“Surgery”}, 两者都不满足访问策略, 但当A和B通过组合各自属性的方式进行共谋时则可能满足访问策略并能对文件进行非法访问.

针对上述边缘计算环境中存在的关键数据安全问题和现有方案存在的不足, 本文提出了一种边缘计算环境中基于区块链的轻量级密文访问控制方案(BLAC). 本文的主要工作如下.

(1)设计了一种基于椭圆曲线密码的轻量级CP-ABE (BLAC-CP-ABE)算法. 使用快速的椭圆曲线标量乘法实现CP-ABE算法加解密功能, 无需使用计算开销较大的双线性配对运算, 提升整体计算效率. 引入虚拟属性和转换密钥, 可以在不泄露隐私的情况下将大部分计算开销转移到边缘服务器, 从而显著降低轻量级设备的计算开销. 通过BLAC-CP-ABE可以使得计算能力受限的用户设备在边缘服务器的协助下能高效地完成数据的细粒度访问控制过程.

(2)结合BLAC-CP-ABE, 实现了一种基于区块链和秘密共享技术的分布式密钥管理方法. 在边缘服务器之间部署区块链构建可信执行环境, 通过区块链使得多个边缘服务器能够协同安全地为用户分发私钥, 解决了已有方案中存在的密钥托管问题, 并且减少了用户与授权机构的通信开销. 同时, 利用区块链账本存储转换密钥, 通过区块链去中心化和防篡改的特性可以实现实时灵活的属性撤销.

(3)对BLAC进行安全性分析和性能评估, 结果表明BLAC能够有效保障数据机密性, 支持前向安全性, 并能抵抗任意多个非法用户的共谋攻击, 同时用户端整体计算效率较高, 并且具有较低的服务器端解密开销, 以及较低的私钥和数据存储开销. 因此BLAC能够有效满足边缘计算环境中实际应用对数据安全性和性能的高要求.

1 相关工作

属性基加密由Sahai等[25]于2005年首次提出, 该算法提取用户的特征信息作为属性来对文件进行加密, 实现了灵活的访问控制机制. Bethencourt等[11]在此基础上于2007年提出CP-ABE算法, 将访问策略嵌入密文, 密钥则与用户的属性集合相绑定, 当用户的属性集合与访问策略匹配才可以成功解密密文. Chase等[26]提出多授权机构CP-ABE算法, 每个授权机构分别管理不同的属性集合, 单个授权机构将无法独立破解密文, 同时用户与多个授权机构通信也将产生额外的开销. 随后, 大量方案[27]利用CP-ABE算法实现访问控制机制, 但是双线性配对计算效率较低, 阻碍了CP-ABE的广泛应用. 研究人员为提升CP-ABE计算效率展开相关工作. Das等[13]提出物联网环境中基于椭圆曲线的多授权机构CP-ABE方案, 利用快速的椭圆曲线标量乘法来提升CP-ABE的计算效率. Huang[14]提出了一种云环境中支持在线/离线加密的多授权机构CP-ABE方案, 通过增加可重用密文池, 减少离线/在线计算量, 用户计算开销较低. Sammy等[15]提出云环境中层次化CP-ABE方案, 对访问控制结构进行优化, 降低了多层次化密文的加密计算开销, 并有效节省了存储空间. 以上方案虽然提升了CP-ABE计算效率, 但是方案均基于多授权机构实现, 无法有效解决密钥托管问题, 同时存在密钥分发困难, 通信开销较大等问题.

Pu等[16]提出了边缘计算环境中基于区块链的属性撤销方案, 通过在区块链网络中维护属性撤销链实现了CP-ABE中灵活的属性撤销机制. Jiang等[17]结合区块链实现边缘计算环境中对电子病历的访问控制机制, 病历数据以交易记录的形式存储在区块链中, 实现了病历数据的可追溯, 保证了数据的完整性. 上述方案均使用区块链实现了灵活的访问控制机制, 但其中CP-ABE加解密过程中均涉及到大量双线性配对运算, 计算效率较低. Zheng等[18]实现了边缘计算环境中支持云边协同计算的CP-ABE方案, 该方案支持灵活动态的访问控制策略, 实现了分级访问控制. Yang等[19]提出边缘计算环境中细粒度CP-ABE方案, 结合区块链实现多重访问控制策略保证用户对数据的合法访问, 同时将部分计算任务转移到边缘服务器以降低用户端的计算开销, 并设计重加密算法实现属性撤销. Xie等[20]为了提升计算效率, 构建混合云环境来转移用户计算开销, 用户计算开销显著降低, 但混合云环境需要搭建私有服务器, 对用户具有较大限制. Qin等[21]利用区块链实现云环境中属性跨域管理, 通过调用智能合约为用户生成密钥, 减少用户与多个授权机构之间的通信开销, 同时通过云服务器为用户分担部分计算开销. 上述方案均通过将部分计算任务转移到服务器中提升用户计算效率, 但双线性配对计算复杂度较高, 用户计算效率有待进一步提升. Tu等[22]提出了雾计算环境中可撤销的CP-ABE方案, 通过引入属性组密钥的方式实现属性撤销. Li等[24]提出边缘计算环境中恒定密文大小的可撤销CP-ABE方案, 该方案具有恒定的密文大小并使用边缘服务器转移用户计算开销. 上述方案均通过重加密的方式实现了属性撤销, 具有额外的计算开销.

2 预备知识 2.1 椭圆曲线密码学

椭圆曲线密码学(elliptic curve cryptography, ECC)是一种基于公钥的加密体制, 相较于其他加密算法, 能够维持相同安全性的同时提供更小的密钥长度和更快的计算时间[28].

定义在有限域GF(q)中的椭圆曲线E可以由式(1)描述:

$ {y^{\text{2}}} = {x^{\text{3}}} + ax + b $ (1)

椭圆曲线E是由该方程所有的解(x, y)与无穷远点O组成的集合, 其中a, b表示有限域GF(q)中的两个元素, 并且满足$ 4{a^{\text{3}}} + 27{b^{\text{2}}} \ne 0 $.

2.2 Shamir秘密共享方案

Shamir秘密共享方案能够将一个秘密值s分成n份子秘密, 系统中的每位用户持有一份. 系统指定阈值$ t \; (1 \leqslant t \leqslant n) $, 当且仅当系统中t个及以上的用户共享手中的子秘密值时, 才能恢复出秘密值s, 否则无法得到关于s的任何信息.

Shamir(t, n)秘密共享方案具体流程如下.

随机生成一个阶为q的有限域GF(q), 其中q>n. 从有限域GF(q)中选取n个互不相同的正整数$ {a_0}, {a_1}, \cdots, {a_{n - 1}} $, 构造多项式g(x), 并令$ {a_0} = s $, 如式(2)所示.

$ g(x) = {a_0} + {a_1}{x^1} + {a_2}{x^2} + \cdots + {a_{n - 1}}{x^{n - 1}} $ (2)

从有限域GF(q)随机选取n个非零元素$ x{}_i $, 计算子秘密${s_i} = g({x_{{i}}}) \; {\rm{mod}} \; q{\text{ (1}} \leqslant i \leqslant n{\text{)}}$, 并将子秘密值分发给系统中的用户.

当系统中t个及以上的用户共享子秘密值$ {s_i} $时即可恢复秘密值s. 首先计算拉格朗日多项式f(x), 如式(3):

$ f(x) = \mathop \prod \limits_{i = 1, i \ne j}^t (x - {x_i})/({x_j} - {x_i}) $ (3)

然后计算重构多项式g(x), 如式(4):

$ g(x) = \mathop \sum \limits_{i = 1}^t {s_i}f({x_i}) $ (4)

则秘密值s=g(0).

2.3 区块链

区块链是基于分布式网络的共享账本. 在区块链网络中, 数据以区块的形式存储起来, 通过哈希计算, 生成每一个区块的散列值. 最终所有的区块通过散列值前后链接起来, 形成了区块链. 区块链具有去中心化, 防篡改, 可追溯等特性, 有利于保护数据完整性[2931].

(1)对等节点. 对等节点是区块链网络的基本组成单位, 每一个节点都维护相同的数据账本.

(2)智能合约. 智能合约是区块链网络中预定义的一段代码, 当满足预定的条件时, 智能合约将自行验证并执行. 区块链中的对等节点都可以部署智能合约, 并以交易事务的形式广播给区块链中的所有节点, 当交易事务得到足够的背书验证后才会写入数据账本中存储, 并基于共识机制, 使所有节点的数据账本保持一致.

2.4 决策性Diffie-Hellamn假设

决策性DDH (decisional Diffie-Hellamn)假设的定义如下: 设G是以大素数r为阶的循环群中的生成元, 从域Zp中随机选取a, b, R. 对于给定元组(G, aG, bG), 敌手想在多项式时间内区分abG和随机元素R是困难的. 若存在多项式时间算法$ \;\beta $满足:

$ \begin{split} &\left| {{\rm{Pr}}{\text{[}}\beta(G, aG, bG, Z = abG) = 0{\text{]}}} \right| \\ &\quad - \left| {{\rm{Pr}}{\text{[}}\beta(G, aG, bG, Z = R) = 0{\text{]}}} \right| \geqslant \varepsilon \end{split} $

则算法$ \;\beta $能以不可忽略的优势$ \varepsilon > 0 $解决该假设, 否则该假设成立.

3 方案实现 3.1 方案框架

BLAC系统模型图如图1所示. BLAC中包含5个实体, 分别为授权机构(trusted authority, TA), 数据拥有者(data owner, DO), 数据使用者(data user, DU), 边缘服务器(edge server, ES)和云服务器(cloud server, CS).

图 1 系统模型图

TA负责系统初始化, 生成部分属性私钥并分割成切片. TA与ES之间存在安全通道, 用于部分属性密钥切片的分发. TA是一个诚实的实体.

DO是有数据共享需求的用户, 定义访问控制结构对数据文件进行部分加密并上传至ES, ES完全加密之后存储至CS. DO是一个诚实的实体.

DU是想要访问数据文件的用户, 将数据访问请求发送给CS, 并委托ES进行部分解密, 最后DU进行完全解密. DU可能是不诚实的实体, 不诚实的DU可能通过共谋的方式解密未授权的数据文件.

CS提供数据存储服务, 为DO存储生成的密文. CS是一个诚实但好奇的实体, 可能会窥探用户的重要隐私数据, 但不会与不诚实DU串通并向被撤销的DU提供密文.

ES提供低时延的计算和存储服务, ES对数据文件进行完全加密后上传至CS, 同时它也可以为DU执行部分解密操作. 多个ES (ES1, ES2, …, ESn)形成联盟链网络, 为用户提供区块链服务. ES可能会窥探用户的重要隐私数据, 是一个诚实但好奇的实体.

首先TA执行系统初始化函数生成系统公钥PK和系统主密钥MSK, PK将公开给DO与DU, 进行数据文件的加解密, MSK将用于生成部分属性私钥SK'.

然后TA执行私钥生成函数生成属性全集U的部分属性私钥SK'并通过秘密共享函数生成SK'的切片SK'Frag, 并将各ES对应的切片${{\textit{SK}}'}{{\textit{Frag}}_{{\textit{ES}_j}}} \; (1 \leqslant j \leqslant n)$由安全通道分发给各ES以实现密钥的分布式管理.

当DU向某ES请求生成属性私钥时, 该ES将在区块链网络中广播密钥生成请求, 各个节点验证密钥生成请求后将${{\textit{SK}}'}{{\textit{Frag}}_{{\textit{ES}_j}}}$发送给请求方. 当得到足够数量的切片后, 该ES为用户生成部分属性私钥${\textit{SK}'}$; 用户收到${{\textit{SK}}'}$后计算生成转换密钥TK并发送给该ES, 该ES通过交易事务的形式将TK广播给其他ES, 各ES对交易事务进行验证, 验证成功之后将TK上传至自己的区块链账本中.

DO通过BLAC-CP-ABE算法加密其需要共享的数据集PT得到部分加密密文CTDO, 经过ES加密得到完整密文CT, CT由ES上传至CS进行存储; 当DU想要访问CS中的数据时, ES从区块链账本中获取DU的转换密钥TK, 并从CS处下载密文集CT进行部分解密计算得到部分解密密文CTES; DU收到CTES后执行完整解密计算得到数据PT.

3.2 方案设计

BLAC由以下9个函数组成, 函数1实现了BLAC-CP-ABE算法的初始化, 函数2–5通过秘密共享技术实现了分布式密钥管理方法, 函数6–9则实现了BLAC-CP-ABE算法对数据的加密和解密. 表1展示了BLAC所涉及的主要参数.

表 1 主要参数

(1) Setup(k, U)→(PP, UID, PK, MSK)

如函数1所示, 系统初始化函数输入安全参数k和属性全集U得到系统的全局参数PP, 用户标识符UID, 系统公钥PK和系统主私钥MSK.

函数1. 系统初始化

输入: 安全参数k, 属性全集U.

输出: 全局参数PP, 系统公钥PK, 系统主私钥MSK, 用户标识符UID.

1) 生成一个q阶有限域GF(q)和哈希函数$\scriptstyle H:{\{ 0, 1\} ^*} \to {Z_p}$;

2) 从有限域GF(q)随机选取生成元为G的椭圆曲线E;

3) 从有限域GF(q)随机选择$\scriptstyle \left| U \right|$对随机数$\scriptstyle \{ {y_1}, {k_1}\} , \cdots, \{ {y_{\left| U \right| - 1}}, {k_{\left| U \right| - 1}}\} , \scriptstyle \{ {y_{{\rm{vir}}}}, {k_{{\rm{vir}}}}\} \in {Z_p} $, 与属性全集U中的属性相对应, 其中$\scriptstyle \{ {y_{{\rm{vir}}}}, {k_{{\rm{vir}}}}\}$对应于用户的虚拟属性;

4) 为系统中的每一位用户定义标识符UID;

5) 输出$\scriptstyle PP = \{ GF(q), G, U, E, H\}$, $\scriptstyle PK = \{ {y_i}G, {k_i}G\}$, $\scriptstyle {\textit{MSK}} = \{ {y_i}, {k_i}\}$, UID.

(2) AttrKeyGen(UID, MSK)→${{\textit{SK}}'}$

如函数2所示, 私钥生成函数通过输入用户标识符UID和主密钥MSK, 输出用户部分属性私钥${{\textit{SK}}'}$.

函数2. 私钥生成

输入: 属性全集U, 用户标识符UID, 主密钥MSK.

输出: 部分属性私钥$\scriptstyle {{\textit{SK}}'}$.

1) 对于属性全集U中的每一个属性, 计算$\scriptstyle {{\textit{SK}}'_i} = {y_i} + {k_i}H(UID)$;

2) 输出$\scriptstyle {{\textit{SK}}'}$.

(3) ShamirS(s, t, n)→${\textit{sFrag}}$

如函数3所示, 秘密共享函数通过输入秘密值s和门限值(t, n), 输出n份子秘密值${\textit{sFrag}}$.

函数3. 秘密共享

输入: 秘密值s, 门限值(t, n).

输出: 子秘密值$\scriptstyle sFrag$.

1) 从有限域GF(q)中随机选择n个非零元素xi, 其中$\scriptstyle 1 \leqslant i \leqslant n$;

2) 构造多项式: $\scriptstyle g(x) = s + {a_1}x + {a_2}{x^2} + \cdots + {a_{t - 1}}{x^{t - 1}}$;

3) 计算子秘密值$\scriptstyle {{\textit{sfrag}}_i} = g({x_i})$;

4) 输出$\scriptstyle {\textit{sFrag}} = \{ {{\textit{sfrag}}_1}, \; {{\textit{sfrag}}_2}, \cdots, \; {{\textit{sfrag}}_n}\}$.

(4) ShamirR(sFrag)→s

如函数4所示, 秘密重构函数通过输入子秘密值${\textit{sFrag}} = \{ {{\textit{sfrag}}_1}, {{\textit{sfrag}}_2}, \cdots, {{\textit{sfrag}}_n}\}$输出秘密值s.

函数4. 秘密重构

输入: 子秘密值$\scriptstyle sFrag$.

输出: 秘密值s.

1) 计算拉格朗日多项式:

$ \scriptstyle f(x) = \prod\limits_{i = 1, i \ne j}^t {(x - {x_i})/({x_j} - {x_i})} ; $

2) 计算重构多项式$\scriptstyle g(x) = \sum\limits_{i = 1}^t {{{\textit{sfrag}}_i}f({x_i})}$;

3) 计算秘密值s=g(0);

4) 输出s.

(5) TransKeyGen(${{\textit{SK}}'}$)→(TK, USK)

如函数5所示, 转换密钥生成函数通过输入用户部分属性私钥进行计算, 输出用户转换密钥TK和解密密钥USK, TK将上传至区块链进行存储.

函数5. 转换密钥生成

输入: 部分属性私钥$\scriptstyle {{\textit{SK}}'}$.

输出: 用户转换密钥TK, 解密密钥USK.

1) 随机选择$\scriptstyle p \in {Z_p}$;

2) 计算$\scriptstyle {{\textit{SK}}_i} = {{\textit{SK}}'} + p = {y_i} + {k_i}H(UID) + p$;

3) 输出$\scriptstyle {\textit{TK}} = \{ {{\textit{SK}}_1}, {{\textit{SK}}_2}, \cdots, {{\textit{SK}}_i}\}$, USK=p.

(6) Enc.DO(PT, PK, (${{M}}, \rho$))→CTDO

如函数6所示, DO加密函数通过输入明文PT, 系统公钥PK和用户制定的访问控制策略($ M, \rho $)输出部分加密密文CTDO.

函数6. DO加密

输入: 明文PT, 系统公钥PK, 访问控制策略($\scriptstyle M, \rho$).

输出: 部分加密密文CTDO.

1) 随机选取$\scriptstyle s \in {Z_p}$, $\scriptstyle ck \in {Z_p}$;

2) 随机选取$\scriptstyle \mathop {{v}}\limits^ \to = {(s, {v_2}, \cdots, {v_n})^{\rm{T}}} \in {Z_p}$;

3) 随机选取$\scriptstyle \mathop {{u}}\limits^ \to = {(0, {u_2}, \cdots, {u_n})^{\rm{T}}} \in {Z_p}$;

4) 随机选取$\scriptstyle {r_{{\rm{vir}}}} \in {Z_p}$, $\scriptstyle R = ({r_1}, {r_2}, \cdots, {r_n}) \in Z_p^{l - 1}$;

5) 计算CT0=Encck(m), CT1=ck+sG;

6) 计算CTH=H(CT0);

7) 计算$\scriptstyle {\lambda _i} = {{{M}}_{{i}}}{\overrightarrow {{v}} _{{i}}}$, $\scriptstyle {\omega _i} = {{{M}}_{{i}}}{\overrightarrow {{u}} _{{i}}}$, $\scriptstyle i \in (1, l - 1)$;

8) 计算$\scriptstyle {C_{{\rm{vir}}}} = {\lambda _{{\rm{vir}}}}G + {y_{{\rm{vir}}}}{r_{{\rm{vir}}}}G$;

9) 计算$\scriptstyle C'_{{\rm{vir}}} = {\omega _{{\rm{vir}}}}G + {k_{{\rm{vir}}}}{r_{{\rm{vir}}}}G$, $\scriptstyle {R_{{\rm{vir}}}} = {r_{{\rm{vir}}}}G$;

10) 输出: $\scriptstyle C{T_{{\rm{DO}}}} = \{ (M, \rho ), C{T_0}, C{T_1}, C{T_H}, {C_{{\rm{vir}}}}, C'_{{\rm{vir}}}, {R_{{\rm{vir}}}}, R, \lambda , \omega \}$.

(7) Enc.ES(CTDO, PK)→CT

如函数7所示, ES加密函数通过输入系统公钥PK对部分密文CTDO进行加密, 输出最终密文CT.

函数7. ES加密

输入: 系统公钥PK, 部分密文CTDO.

输出: 最终密文CT.

1) 计算$\scriptstyle {C_x} = {\lambda _x}G + {y_x}{r_x}G$;

2) 计算$\scriptstyle C'_x = {\omega _x}G + {k_x}{r_x}G$, $\scriptstyle {R_x} = {r_x}G$;

3) 输出: $\scriptstyle CT = \{ (M, \rho ), C{T_0}, C{T_1}, C{T_H}, {C_x}, C'_x, {R_x}, {C_{{\rm{vir}}}}, C'_{{\rm{vir}}}, {R_{{\rm{vir}}}}\}$.

(8) Dec.ES(PK, TK, CT)→CTES

如函数8所示, ES解密函数通过输入系统公钥PK, 转换密钥TK和密文CT输出部分解密密文CTES. 如果DU的属性集合满足密文制定的访问策略, 则存在集合$ {\{ {c_i} \in {Z_p}\} _{i \in I}} $, 使得$\displaystyle\sum\limits_{i \in I} {{c_i}{M_i} = (1, 0, 0, \cdots, 0)}$.

函数8. ES解密

输入: 系统公钥PK, 转换密钥TK, 密文CT.

输出: 部分解密密文CTES.

1) 计算$\scriptstyle {\{ {c_i} \in {Z_p}\} _{i \in I}}$使得$\scriptstyle \sum\limits_{i \in I} {{c_i}{M_i} = (1, 0, 0 , \cdots, 0)}$;

2) 若$\scriptstyle {\{ {c_i} \in {Z_p}\} _{i \in I}}$能成功求出, 计算:

$ \scriptstyle \begin{split} \scriptstyle {D_x} = &\scriptstyle {C_x} - {{\textit{SK}}_{\rho (i), UID}}{R_x} + H(UID)C'_x \\ \scriptstyle = & \scriptstyle {\lambda _x}G + {y_x}{r_x}G - {y_x}{r_x}G - {k_x}H(UID){r_x}G \\ \scriptstyle &\scriptstyle - p{r_x}G + H(UID){\omega _x}G + H(UID){k_x}{r_x}G \\ \scriptstyle = &\scriptstyle {\lambda _x}G + H(UID){\omega _x}G - p{r_x}G \end{split} $

3) 计算:

$ \scriptstyle \begin{gathered} \scriptstyle {N_1} = \sum\limits_{x \in I} {{c_x}{D_x} = sG - p\sum\limits_{x \in I} {{c_x}{r_x}} G} \\ \scriptstyle {N_2} = \sum\limits_{x \in I} {{c_x}{R_x} = \sum\limits_{x \in I} {{c_x}{r_x}} G} \\ \end{gathered} $

4) 若$\scriptstyle {\{ {c_i} \in {Z_p}\} _{i \in I}}$计算失败, 令N1=N2=$ \varnothing $;

5) 若N1=N2=$ \varnothing $, 输出CTES=$ \varnothing $,

否则输出CTES={CT0, CT1, CTH, N1, N2}.

(9) Dec.DU(USK, CTES)→PT

如函数9所示, DU解密函数通过输入用户解密密钥USK和部分解密密文CTES输出数据明文PT.

函数9. DU解密

输入: 用户解密密钥USK, 部分解密密文CTES.

输出: 数据明文PT.

1) 计算:

$ \scriptstyle \begin{split} \scriptstyle ck &\scriptstyle = C{T_1} - {N_1} + p{N_2} \\ & \scriptstyle = ck + sG - sG - p\sum\limits_{x \in I} {{C_x}{r_x}} G + p\sum\limits_{x \in I} {{C_x}{r_x}} G = ck \end{split} $

2) 计算$\scriptstyle {m'} = De{c_{ck}}(C{T_0})$;

3) 输出$\scriptstyle PT = {m'}$.

3.3 具体实现

BLAC包括7个阶段: 初始化阶段, 秘密共享阶段, 用户加密阶段, 边缘服务器加密阶段, 密钥生成阶段, 边缘服务器解密阶段, 用户解密阶段. 具体实现过程如图2所示.

(1)初始化阶段. TA通过Setup()函数初始化整个系统, 生成系统公钥PK, 系统主密钥MSK, 公共参数PP和用户标识符UID. 之后, TA通过AttrKeyGen()函数生成属性全集U的部分属性私钥${{\textit{SK}}'}$.

(2)秘密共享阶段. TA对${{\textit{SK}}'}$进行分割. 首先, TA通过ShamirS()函数得到每一个$SK'_i$n个切片${\textit{SK}}'_i{\textit{Frag}}= \{ {\textit{SK}}'_{i\;}{{\textit{frag}}_1}, {\textit{SK}}'_{i\;}{{\textit{frag}}_2}, \cdots, {\textit{SK}}'_{i\;}{{\textit{frag}}_n}\}$并聚合得到属性全集U的切片${{\textit{SK}}'}{\textit{Frag}} = \{ {\textit{SK}}'_1{\textit{Frag}}, {{\textit{SK}}}'_2Frag, \cdots,{{\textit{SK}}}'_{\left| U \right|}Frag\}$. 之后, TA通过安全通道向各ES分发对应的切片, 如ESj得到${{\textit{SK}}'}Fra{g_{{\textit{ES}_j}}} = \{ {{\textit{SK}}}'_1fra{g_j}, {{\textit{SK}}}'_2fra{g_j}, \cdots, {{\textit{SK}}}'_{\left| U \right|}fra{g_j}\}$, 同时TA自身无需存储${{\textit{SK}}'}$.

(3)用户加密阶段. DO为了限制用户对数据文件m的访问权限, 定义访问策略$ (M, \rho ) $. 利用Enc.DO()函数对数据文件m进行加密得到部分加密密文CTDO, 并将CTDO上传至ES.

(4)边缘服务器加密阶段. ES收到部分加密密文后, 利用Enc.ES()函数生成最终密文CT, 并将CT上传至CS.

图 2 系统流程图

(5)密钥生成阶段. DU将自己的属性集合和标识符UID发送给ES进行密钥生成. ES收到密钥生成请求后首先向区块链网络中的各个节点发送请求获取${{\textit{SK}}}{Frag_{{\textit{ES}_j}}}$. 当得到至少t个节点验证并且响应后, ES通过ShamirR()函数计算${{\textit{SK}}'_i}$. DU收到${{\textit{SK}}'_i}$后执行TransKeyGen()函数生成转换密钥TK, 解密密钥USK. USK由DU自己保存, TK将发送给ES, ES通过算法1生成TK的交易事务${{\textit {Tx}}_{{\rm{storage}}}}$并提交至区块链网络进行验证, 验证成功之后TK才能上传到数据账本中存储. 当DU向ES发送数据请求时, ES将利用TK为DU进行部分解密. 此外, DU与单个ES交互生成属性密钥的通信开销比多授权机构方案[13]更小.

算法1. $\scriptstyle {{\textit {Tx}}_{{\rm{storage}}}}$事务生成算法

输入: 事务标识符ID, 转换密钥TK, ES的签名私钥BSKES.

输出: 事务$\scriptstyle {{\textit {Tx}}_{{\rm{storage}}}}$.

1) 计算TK哈希值: $\scriptstyle {\textit{TKcheck}} = H({\textit{TK}})$;

2) 计算Txstorage哈希值: $\scriptstyle MD = H(ID, {\textit{TKcheck}})$;

3) 计算ES签名值: $\scriptstyle sign = {{\textit{Sign}}_{{{\textit{BSK}}_{ES}}}}(MD)$;

4) 返回$\scriptstyle {{\textit {Tx}}_{{\rm{storage}}}} = \{ ID, TK, {\textit{TKcheck}}, sign\}$.

ID为事务标识符, 区块链中的每一个事务都具有唯一标识符, BSKES为ES的签名私钥. Txstorage事务生成之后将广播给区块链网络中的其他ES节点, 其他ES节点通过算法2对Txstorage进行验证, 以避免TK在传输过程中被篡改.

算法2. $\scriptstyle {{\textit {Tx}}_{{\rm{storage}}}}$事务验证

输入: 事务$\scriptstyle {{\textit{Tx}}_{{\rm{storage}}}}$, ES的签名公钥BPKES.

输出: 事务$\scriptstyle {{\textit{Tx}}_{{\rm{storage}}}}$验证结果.

1) 计算$\scriptstyle T{x_{{\rm{storage}}}}$哈希值: $\scriptstyle M{D'} = H(ID, H(TK)) $;

2) 使用公钥计算签名值: $\scriptstyle MD = Comput{e_{{{\textit{BPK}}_{ES}}}}(sign)$;

3) 若$\scriptstyle MD = M{D'} $, 则计算$\scriptstyle {{\textit{TKcheck}}'} = H({\textit{TK}})$, 若$\scriptstyle {{\textit{TKcheck}}'} = {\textit{TKcheck}}$, 返回验证成功; 否则返回验证失败;

4) 否则返回验证失败.

当足够数量的节点验证Txstorage成功后, TK才能上传至区块链数据账本中存储. 若DU某个属性被撤销或者退出系统, 通过算法3生成交易事务${{\textit{Tx}}_{{\rm{revoke}}}}$并上传至区块链网络中进行验证, 验证成功之后将TK标记为撤销状态, ES不会利用被撤销的TK为用户进行解密操作, 因此实现了实时灵活的属性撤销.

算法3. $\scriptstyle {{\textit{Tx}}_{{\rm{revoke}}}}$事务生成

输入: 事务标识符ID, 被撤销的转换密钥TKrevoke, DU的签名私钥BSKDU.

输出: 事务$\scriptstyle {{\textit{Tx}}_{{\rm{revoke}}}}$.

1) 计算TKrevoke哈希值: $\scriptstyle {{\textit{TKcheck}}_{{\rm{revoke}}}} = H({{\textit{TK}}_{{\rm{revoke}}}})$;

2) 计算TKrevoke哈希值: $\scriptstyle MD = H(ID, {{\textit{TKcheck}}_{{\rm{revoke}}}})$;

3) 计算DU签名值: $\scriptstyle sign = {{\textit{Sign}}_{{{\textit{BSK}}_{{\rm{DU}}}}}}(MD)$;

4) 返回$\scriptstyle {{\textit{Tx}}_{{\rm{revoke}}}} = \{ ID, {\textit{TK}}, {{\textit{TKcheck}}_{{\rm{revoke}}}}, sign\}$.

BSKDU为DU的签名私钥. ${{\textit{Tx}}_{{\rm{revoke}}}}$事务生成之后将广播到区块链网络, 通过算法4对${{\textit{Tx}}_{{\rm{revoke}}}}$进行验证, 同样当足够数量的节点验证${{\textit{Tx}}_{{\rm{revoke}}}}$成功后TKrevoke将被标记为撤销状态.

算法4. $\scriptstyle {{\textit{Tx}}_{{\rm{revoke}}}}$事务验证

输入: 事务$\scriptstyle {{\textit{Tx}}_{{\rm{revoke}}}}$, DU的签名公钥BPKDU.

输出: 事务$\scriptstyle {{\textit{Tx}}_{{\rm{revoke}}}}$验证结果.

1) 计算$\scriptstyle {{\textit{Tx}}_{{\rm{revoke}}}}$哈希值: $\scriptstyle M{D'} = H(ID, H({{\textit{TK}}_{{\rm{revoke}}}})$;

2) 使用公钥计算签名值: $\scriptstyle MD = {{\textit{Compute}}_{BP{K_{{\rm{DU}}}}}}(sign)$;

3) 若$\scriptstyle MD = M{D'} $, 则计算$\scriptstyle {{\textit{TKcheck}}'_{{\rm{revoke}}}} = H({{\textit{TK}}_{{\rm{revoke}}}})$, 若$\scriptstyle {{\textit{TKcheck}}'_{{\rm{revoke}}}} = \scriptstyle H({{\textit{TK}}_{{\rm{revoke}}}})$, 返回验证成功; 否则返回验证失败;

4) 否则返回验证失败.

(6)边缘服务器解密阶段. 当DU有数据访问需求时, 首先向CS发送数据访问请求, CS将相应密文CT发送至ES进行委托计算. ES通过Dec.ES()函数执行解密操作得到部分解密密文CTES.

(7)用户解密阶段. DU收到部分解密密文后若CTES不为空集, 则利用Dec.DU()函数进行最终解密得到$ {m'} $. 为了验证$ {m'} $是否被篡改, DU计算$ C{T'} = En{c_{ck}}({m'}) $, 若$ H(C{T'}) \ne C{T_H} $, 则CS中存储的数据m被篡改, DU直接丢弃PT, 否则表示DU得到的数据没有被篡改.

3.4 安全模型

BLAC方案中的安全模型由挑战者$ \;\beta $和敌手$ \mathcal{A} $之间的选择明文攻击博弈游戏来描述. 挑战者$ \;\beta $为TA, 主要流程如下.

初始化: 敌手$ \mathcal{A} $选择访问控制结构$ (M, \rho ) $, 并发送给挑战者$ \;\beta $.

系统设置: 挑战者$ \;\beta $运行Setup()生成公钥PK和主私钥MSK, 将PK发送给敌手$ \mathcal{A} $.

阶段1: 敌手$ \mathcal{A} $指定属性集合U, 并向挑战者$ \;\beta $申请获得与U相关的密钥SK, 同时根据限制, 属性集合U不满足初始化中制定的访问控制策略. 挑战者$ \;\beta $计算得到SK发送给敌手$ \mathcal{A} $.

挑战: 敌手$ \mathcal{A} $选择两个等长的数据明文m0m1发送给挑战者$ \;\beta $. 挑战者$ \;\beta $使用随机选择器$ b \in \{ 0, 1\} $和访问策略$ (M, \rho ) $生成加密密文mb, 最后将加密密文$ C{T^*} $发送给敌手$ \mathcal{A} $.

阶段2: 和阶段1类似, 敌手$ \mathcal{A} $继续指定属性集合U, 并向挑战者申请获得与U相关的属性私钥.

猜测: 敌手$ \mathcal{A} $输出对b的猜测${b'} \in {\text{\{0, 1\} }}$, 如果$ {b'} = b $, 则敌手$ \mathcal{A} $获得了游戏的胜利. 敌手$ \mathcal{A} $所具有的优势定义为: $ Ad{v_\mathcal{A}} = \left| {\Pr \left[ {{b'} = b} \right] - \dfrac{1}{2}} \right| $.

4 安全性分析与性能评估 4.1 安全性分析

在第3.1节提出的实体安全性假设以及第3.4节提出的安全模型的基础上证明BLAC在DDH假设下是安全性的, 同时BLAC能够保障数据机密性, 抵抗共谋攻击, 支持前向安全性.

(1)安全性证明

定理1. 如果敌手在多项式时间内以不可忽略的优势$ \varepsilon > 0 $破解BLAC, 则挑战者$\; \beta $可以在多项式时间内打破DDH假设.

Gr阶循环群中的生成元, 挑战者随机选择$x, {{y}} \in {Z_p}$$ R \in {Z_p} $. 定义随机选择器$ b \in \{ 0, 1\} $, 若b=0时, Z=xyG, 若b=1, 则Z=RG. 挑战者$ \;\beta $发送元组(G, xG, yG)给敌手$ \mathcal{A} $, 假设敌手$ \mathcal{A} $具有不可忽略的优势$ \varepsilon > 0 $来赢得安全游戏, 安全游戏流程如下.

初始化: 敌手$ \mathcal{A} $选择访问控制结构$ (M, \rho ) $, 并发送给挑战者$ \;\beta $.

系统设置: 挑战者$\; \beta $为属性集合U中每一个属性选择随机数$ \{ {y_i}, {k_i}\} \in {Z_p} $并公布系统公钥$ PK = \{ {y_i}G, {k_i}G\} $.

阶段1: 敌手$ \mathcal{A} $指定属性集合U和用户标识符UID, 并向挑战者$ \;\beta $申请相应的密钥SK, 同时根据限制, 属性集合U不满足初始化中制定的访问控制策略. 挑战者$ \;\beta $随机选择$ p \in {Z_p} $计算得到${{\textit{SK}}_{i, UID}} = {y_i} + {k_i}H(UID) + p$发送给敌手$ \mathcal{A} $.

挑战: 敌手$ \mathcal{A} $选择两个等长的数据明文m0m1发送给挑战者$ \;\beta $. 挑战者$ \;\beta $随机选取向量$\overrightarrow \nu = {(s, {v_2}, \cdots, {v_n})^{\rm{T}}} \in {Z_p}$, $\overrightarrow u = {(0, {u_2}, \cdots, {u_n})^{\rm{T}}} \in {Z_p}$计算$ {\lambda _i} = {M_i}{\overrightarrow \nu _i} $$ {\omega _i} = {M_i}{\overrightarrow u _i} $, 其中$ {M_i} $表示矩阵$ M $的第$ i $行. 挑战者$ \beta $使用随机选择器$b \in {\text{\{0, 1\} }}$计算$ C{T_1} = {m_b} + sG $, 最后计算生成加密密文$ {C_x} = {\lambda _x}G + {y_x}{r_x}G $, $C'_x = {\omega _x}G + {k_x}{r_x}G$, $ {R_x} = {r_x}G $并将$CT = \{ (M, \rho ), C{T_1}, {C_x}, C'_x, {R_x}\}$发送给敌手$ \mathcal{A} $.

阶段2: 和阶段1类似, 敌手$ \mathcal{A} $继续指定属性集合U和用户标识符UID, 并向挑战者申请获得与U相关的属性私钥, 同样敌手$ \mathcal{A} $不能违反属性集合的限制条件.

猜测: 敌手$ \mathcal{A} $输出对b的猜测${b'} \in {\text{\{0, 1\} }}$, 如果$ {b'} = b $, 挑战者$ \;\beta $输出0表示$ Z = xyG $, 敌手获$ \mathcal{A} $得了游戏的胜利. 否则, 挑战者$ \;\beta $输出1表示Z=RG. 若敌手$ \mathcal{A} $能以不可忽略的优势$ \varepsilon > 0 $来赢得安全游戏, 则敌手$ \mathcal{A} $获胜的概率为$ \left| {\Pr [\beta (G, xG, yG, Z = xyG) = 0]} \right| = \dfrac{1}{2} + \varepsilon $, 敌手$ \mathcal{A} $失败的概率为$ \left| {\Pr [\beta (G, xG, yG, Z = R) = 0]} \right| = \dfrac{1}{2} $. 挑战者$ \beta $所具有的优势为式(5):

$ \begin{split} & \frac{1}{2}(\left| {\Pr [\beta (G, xG, yG, Z = xyG) = 0]} \right| \\ &\qquad + \left| {\Pr [\beta (G, xG, yG, Z = R) = 0]} \right|) - \frac{1}{2} = \frac{\varepsilon }{2} \end{split} $ (5)

在上述过程中, 假定敌手$ \mathcal{A} $具有不可忽略的优势$ \varepsilon > 0 $来赢得安全游戏, 则挑战者$ \;\beta $的优势为$ \dfrac{\varepsilon }{2} $. 但不存在多项式时间算法能够破解DDH假设, 则敌手$ \mathcal{A} $无法在多项式时间内以不可忽略的优势$ \varepsilon > 0 $来赢得安全游戏, 即无法在多项式时间内破解BLAC. 因此, BLAC在DDH假设下是安全的.

(2)数据机密性

在BLAC中, 数据经过部分加密并在ES进行最终加密的过程中, 好奇的ES可能试图破解用户的加密数据. 在ES进行加密的过程中, ES已知部分密文集CTDO和系统公钥PK, 真实数据由用户通过对称加密算法进行加密, 对称加密算法可以认定是安全的; 与秘密值相关的$\overrightarrow {{v}}$, R, rvir由用户随机选择, 虚拟密文集${C_{{\rm{vir}}}}, C'_{{\rm{vir}}}$由用户计算得出, rvir, $ {\lambda _{{\rm{vir}}}} $, $ {\omega _{{\rm{vir}}}} $都不会发送给ES, 因此ES无法获取密文的有效信息. 在解密过程中, ES利用转换密钥TK进行部分解密得到N1N2后, 无法完全解密获取数据明文, 因为解密密钥USK={p}保存在用户手中, ES无法获取. 与此同时, 只有满足访问控制策略的DU才能正确解密密文数据, 不满足策略的DU无法解密.

在BLAC中, 无论系统中属性数量规模如何, 任意单个ES均无法独立生成属性私钥去解密密文, 因此所采用的分布式密钥管理方法可以有效解决密钥托管问题.

(3)共谋攻击

在BLAC中, 单个DU的属性集合不满足访问控制策略时, 可能通过与其他用户组合属性集合的方式非法解密数据. 在密钥生成阶段, 每个DU生成的部分属性私钥${{\textit{SK}}'_{i, UID}} = {y_i} + {k_i}H(UID)$与用户标识符UID绑定. 若存在DU相互勾结, 由于每位DU的UID各不相同, 在解密阶段, 无法正确计算并得到Dx, 后续解密过程中无法推出sG, 所以无法解密密文. 因此, BLAC可以抵抗任意多个用户的共谋攻击. 同样, ES无法获取其他用户标识符UID, 故ES与DU共谋也无法解密密文.

(4)前向安全性

在BLAC中, 用户可以随时加入系统或者退出系统, 退出系统的用户可能继续利用属性私钥来解密系统中的密文. 用户的转换密钥TK被保存在区块链当中. 当用户退出系统后, 区块链中与用户标识符UID相关的TK都将被标记为无效, 此时ES将无法为用户执行部分解密操作. 同时, 如果用户任意单个或者多个属性被撤销时, 区块链中的转换密钥TK同样会被标记, 在ES进行解密时, 被标记为无效的属性私钥将无法使用. 区块链防篡改和可追溯的特性保证了ES无法更改区块链中的转换密钥. 这样系统实现了实时灵活的属性撤销并保证了前向安全性.

4.2 性能评估

本节将BLAC与密切相关的文献[13,16,20,21]进行比较, 比较方面包括: 方案功能, 计算开销, 存储开销. 实验具体过程为: 使用Intel Core i5-8300H @2.30 GHz, 16 GB RAM, 搭建环境为Ubuntu 18.04操作系统的服务器作为ES和TA, 并在ES上部署Hyper Ledger Fabric V1.4.6联盟链; 使用Intel Core i5-4460 @3.20 GHz, 8 GB RAM, 搭建环境为Ubuntu 18.04操作系统的设备作为DO和DU; 使用阿里云S6云服务器作为CS. 仿真实验基于Java Pairing-based Cryptography (JPBC)库实现, 选择512位有限域上160阶的TypeA类型椭圆曲线, 实验结果为30次实验平均值.

(1)方案功能

方案功能比较如表2所示. 文献[13]主要应用于物联网环境, 使用快速的椭圆曲线标量乘法和外包解密提升计算效率, 文献[16]主要应用于边缘计算环境, 使用区块链并结合秘密共享技术对密文进行切片实现了属性撤销, 文献[20]主要应用于云计算环境, 采用外包解密提升计算效率. 上述3篇文献都采用多授权机构进行密钥管理, 具有较大的通信开销, 且当属性数量过多时仍然存在密钥托管问题. 文献[21]主要应用于云计算环境, 通过区块链实现了密钥管理, 并使用外包解密提升计算效率, 但受限于双线性配对计算的复杂度, 计算效率有待进一步提升, 且缺少属性撤销功能. BLAC基于快速的椭圆曲线标量乘法设计并实现高效的算法功能, 并将大部分加解密计算操作转移到ES, 降低用户端计算开销. 同时, BLAC通过区块链结合秘密共享技术对部分属性私钥进行切片, 不仅实现了密钥的分布式管理, 也具备灵活的属性撤销功能, 可以有效解决边缘计算环境中存在的数据安全问题.

表 2 功能比较

(2)计算开销与存储开销

基础运算开销和基础存储开销分别如表3表4所示. 其中E1ET分别表示群G1GT中一次标量乘法或幂运算时间, M1MT表示群G1GT内元素乘法运算时间, P表示群G1中一次双线性配对运算时间. DivT表示GT群内一次除法运算时间. $ \left| {{A_{{\rm{pol}}}}} \right| $表示访问策略中定义的属性数量, $ \left| {{A_{{\rm{DU}}}}} \right| $表示DU的属性总数, $ \left| {{A_U}} \right| $表示系统中的属性总数. 从表3中可知, ES执行双线性配对计算开销是标量乘法的2.46倍, DO或DU执行双线性配对计算开销是标量乘法的3.42倍, 采用快速的椭圆曲线标量乘法可以有效减少计算开销. 从表4中可知$ {Z_p} $中的元素所需存储空间较小, 为20 B, 而G1GT域中元素所需存储空间皆为128 B.

理论计算开销如表5所示. 在用户加密计算过程中, BLAC通过虚拟属性的方式将大部分计算开销转移到ES, 用户计算效率有效提升, 只需要6E1计算量. 而其余方案中用户加密计算开销将会随着访问控制策略中所包含的属性数量增加呈现线性增加趋势. 其中, 文献[21]增长率最高. 在解密过程中, 除了文献[16]以外都将部分计算转移到服务器上进行以减少用户计算开销. 在服务器解密过程中, BLAC与文献[13]计算开销相同, 为$ 4\left| {{A_{{\rm{DU}}}}} \right|{E_1} $. 文献[20,21]计算过程中采用了大量双线性配对计算, 计算开销较大. 在用户解密过程中, 文献[20]将大部分解密计算转移到私有CS上进行, 用户只需一次除法计算即可解密, 计算开销最低. 但这种方式需要用户自行搭建完全可信的CS, 不适用于大部分用户. 文献[21]由服务器承担了大部分解密计算开销, 用户解密仅需要(MT+ET)计算量, 但总解密开销仍然较大. BLAC和文献[13]均需要E1计算量, 总解密计算开销小, 适用于轻量级设备.

表 3 基础运算开销比较 (ms)

表 4 基础存储开销比较 (B)

理论存储开销如表6所示. 在私钥存储开销方面, BLAC, 文献[13,16,20]的私钥存储开销均与属性数量正相关, 文献[16]中私钥为G1群中元素, 存储开销增长率最大. 文献[21]中私钥存储开销最小且恒定, 为$ 3{L_{{G_T}}} $. 在密文存储开销方面, BLAC存储开销相较于另外4个方案存储开销更大. BLAC存储开销为$ (3| {{A_{{\rm{pol}}}}} | + 2){L_{{G_1}}} $, 所涉及密文项更多, 且与属性相关联, 当属性数量增加时BLAC存储开销增长率最大, 然而采用快速的椭圆曲线标量乘法显著提升了BLAC加解密效率, 利用少量存储空间换来更快的解密时间对用户是更为有利的.

DO加密计算时间如图3所示. 在文献[13,16,20,21]中, 随着属性数量的增加, 用户加密计算时间也逐步增加. 其中文献[21]的增长率最高, 文献[20]次之, 文献[13]和文献[16]计算开销接近. 而BLAC将繁重的加密计算工作转移到给ES, 用户计算量稳定且最少, 与同样采用椭圆曲线标量乘法的文献[13]相比, 当属性数量为11时, BLAC计算开销只有文献[13]的26.1%. 与采用双线性配对计算的文献[21]相比, BLAC计算开销仅有文献[21]的13%, 随着属性数量增加, BLAC在计算效率方面的优势将更加显著.

表 5 理论计算开销比较

表 6 理论存储开销比较

图 3 DO加密计算时间

服务器解密计算时间如图4所示. 文献[13,20,21]中通过CS提供部分解密服务, BLAC则通过ES完成部分解密工作. 文献[16]不涉及外包解密计算, 故图4中不存在文献[16]数据线段. BLAC和文献[13]计算开销一致, 数据线段重合. 文献[20]和文献[21]计算开销基本一致, 数据线段接近重合, 同时两个方案都采用了大量双线性配对操作, 计算复杂度更高. 当属性数量为11时, BLAC相较于文献[20], 解密计算效率提升了34.5%, BLAC采用的椭圆曲线标量乘法有效降低了计算量.

DU解密计算时间如图5所示. BLAC与文献[13]计算开销相同, 数据线段重合. 文献[16]由用户完成所有解密计算工作, 计算开销最大. 其余4种方案用户解密计算开销均恒定. BLAC在解密时需要一次标量乘法操作, 其用户解密计算开销为4.37 ms, 比文献[20]和文献[21]耗时更长, 但这对于DU来说是完全可以承担的. 文献[20]中采用私有CS, 将几乎所有解密操作交给私有CS, DU通过一次DivT运算即可解密, 但要求CS是完全可信的, 也带来了额外的服务器运营维护开销. 文献[21]由服务器承担大部分解密计算开销, 用户解密计算开销小, 但总解密计算开销相较于BLAC更大.

图 4 服务器解密计算时间

图 5 DU解密计算时间

私钥存储开销如图6所示. BLAC与文献[13]私钥存储开销相同, 数据线段重合. 文献[16]的私钥存储开销最大, 文献[20]存储开销次之, 当属性数量增加时, 与其余方案的差异也越来越大. 文献[21]的私钥存储开销较小且恒定, BLAC和文献[13]私钥存储开销较小, 增长也相对缓慢, 当属性数量增加到29时, 密钥大小也仅不到1 KB. 同时, BLAC通过区块链和秘密共享技术实现分布式密钥管理, 相较于文献[13]具有更好的系统稳定性.

图 6 私钥存储开销

密文存储开销如图7所示. 文献[13,16,20]的密文存储开销相同, 数据线段重合. BLAC在加密时应用椭圆曲线加密, 需要额外密文项$ {R_x} = {r_x}G $对密文进行随机化处理. 而在同样使用椭圆曲线加密的文献[13]中, 缺失密文项$ {R_x} = {r_x}G $, 安全性较低. 所有方案的密文开销均随着属性数量增加而增加, 当属性数量增加到29时, BLAC密文存储开销也仅为11 KB. 密文存储由CS承担, 存储能力完全可以满足BLAC需求.

图 7 密文存储开销

5 结论与展望

针对现有的基于CP-ABE的访问控制方案不能有效满足边缘计算环境中关键数据安全问题, 本文提出一种基于区块链的轻量级密文访问控制方案BLAC. 在BLAC中, 设计了一种基于椭圆曲线密码的轻量级CP-ABE算法, 采用快速的椭圆曲线标量乘法来实现算法加解密功能, 并通过虚拟属性和转换密钥将大部分加解密操作安全地转移到边缘服务器上, 使得用户设备能高效地完成数据的细粒度访问控制过程; 同时, 实现了一种基于区块链和秘密共享技术的分布式密钥管理方法, 使得边缘服务器能够协同地为用户分发私钥, 解决了现有CP-ABE方案存在的密钥托管问题并实现了实时灵活的属性撤销. 下一步将结合属性基加密研究边缘计算环境中基于区块链的轻量级海量数据的检索机制.

参考文献
[1]
施巍松, 张星洲, 王一帆, 等. 边缘计算: 现状与展望. 计算机研究与发展, 2019, 56(1): 69-89. DOI:10.7544/issn1000-1239.2019.20180760
[2]
郑逢斌, 朱东伟, 臧文乾, 等. 边缘计算: 新型计算范式综述与应用研究. 计算机科学与探索, 2020, 14(4): 541-553. DOI:10.3778/j.issn.1673-9418.1911042
[3]
Kong XJ, Wu YH, Wang H, et al. Edge computing for internet of everything: A survey. IEEE Internet of Things Journal, 2022, 9(23): 23472-23485. DOI:10.1109/JIOT.2022.3200431
[4]
Khan LU, Yaqoob I, Tran NH, et al. Edge-computing-enabled smart cities: A comprehensive survey. IEEE Internet of Things Journal, 2020, 7(10): 10200-10232. DOI:10.1109/JIOT.2020.2987070
[5]
Oh SR, Seo YD, Lee E, et al. A comprehensive survey on security and privacy for electronic health data. International Journal of Environmental Research and Public Health, 2021, 18(18): 9668. DOI:10.3390/ijerph18189668
[6]
Rasori M, La Manna M, Perazzo P, et al. A survey on attribute-based encryption schemes suitable for the Internet of Things. IEEE Internet of Things Journal, 2022, 9(11): 8269-8290. DOI:10.1109/JIOT.2022.3154039
[7]
Kong LH, Tan JL, Huang JQ, et al. Edge-computing-driven Internet of Things: A survey. ACM Computing Surveys, 2022, 55(8): 174.
[8]
Zhang JL, Chen B, Zhao YC, et al. Data security and privacy-preserving in edge computing paradigm: Survey and open issues. IEEE Access, 2018, 6: 18209-18237. DOI:10.1109/ACCESS.2018.2820162
[9]
Hartmann M, Hashmi US, Imran A. Edge computing in smart health care systems: Review, challenges, and research directions. Transactions on Emerging Telecommunications Technologies, 2019, 33(3): e3710.
[10]
李晓伟, 陈本辉, 杨邓奇, 等. 边缘计算环境下安全协议综述. 计算机研究与发展, 2022, 59(4): 765-780. DOI:10.7544/issn1000-1239.20210644
[11]
Bethencourt J, Sahai A, Waters B. Ciphertext-policy attribute-based encryption. Proceedings of the 2007 IEEE Symposium on Security and Privacy. Berkeley: IEEE, 2007. 321–334.
[12]
Oberko PSK, Obeng VHKS, Xiong H. A survey on multi-authority and decentralized attribute-based encryption. Journal of Ambient Intelligence and Humanized Computing, 2022, 13(1): 515-533. DOI:10.1007/s12652-021-02915-5
[13]
Das S, Namasudra S. Multiauthority CP-ABE-based access control model for IoT-enabled healthcare infrastructure. IEEE Transactions on Industrial Informatics, 2023, 19(1): 821-829. DOI:10.1109/TII.2022.3167842
[14]
Huang KQ. Multi-authority attribute-based encryption for resource-constrained users in edge computing. Proceedings of the 2019 International Conference on Information Technology and Computer Application (ITCA). Guangzhou: IEEE, 2019. 323–326.
[15]
Sammy F, Vigila SMC. An efficient blockchain based data access with modified hierarchical attribute access structure with CP-ABE using ECC scheme for patient health record. Security and Communication Networks, 2022, 2022: 8685273. DOI:10.1155/2022/8685273
[16]
Pu YW, Hu CQ, Deng SJ, et al. R2PEDS: A recoverable and revocable privacy-preserving edge data sharing scheme. IEEE Internet of Things Journal, 2020, 7(9): 8077–8089.
[17]
Jiang Y, Xu XL, Xiao F. Attribute-based encryption with blockchain protection scheme for electronic health records. IEEE Transactions on Network and Service Management, 2022, 19(4): 3884-3895. DOI:10.1109/TNSM.2022.3193707
[18]
Zheng KF, Ding CY, Wang JC. A secure data-sharing scheme for privacy-preserving supporting node-edge-cloud collaborative computation. Electronics, 2023, 12(12): 2737. DOI:10.3390/electronics12122737
[19]
Yang YF, Shi RH, Li KC, et al. Multiple access control scheme for EHRs combining edge computing with smart contracts. Future Generation Computer Systems, 2022, 129: 453-463. DOI:10.1016/j.future.2021.11.002
[20]
Xie MD, Ruan YY, Hong HB, et al. A CP-ABE scheme based on multi-authority in hybrid clouds for mobile devices. Future Generation Computer Systems, 2021, 121: 114-122. DOI:10.1016/j.future.2021.03.021
[21]
Qin XM, Huang YF, Yang Z, et al. A blockchain-based access control scheme with multiple attribute authorities for secure cloud data sharing. Journal of Systems Architecture, 2021, 112: 101854. DOI:10.1016/j.sysarc.2020.101854
[22]
Tu SS, Waqas M, Huang FM, et al. A revocable and outsourced multi-authority attribute-based encryption scheme in fog computing. Computer Networks, 2021, 195: 108196. DOI:10.1016/j.comnet.2021.108196
[23]
Al-Dahhan RR, Shi Q, Lee GM, et al. Survey on revocation in ciphertext-policy attribute-based encryption. Sensors, 2019, 19(7): 1695. DOI:10.3390/s19071695
[24]
Li X, Liu T, Chen CY, et al. A lightweight and verifiable access control scheme with constant size ciphertext in edge-computing-assisted IoT. IEEE Internet of Things Journal, 2022, 9(19): 19227-19237. DOI:10.1109/JIOT.2022.3165576
[25]
Sahai A, Waters B. Fuzzy identity-based encryption. Proceedings of the 24th Annual International Conference on the Theory and Applications of Cryptographic Techniques. Aarhus: Springer, 2004. 457–473.
[26]
Chase M, Chow SSM. Improving privacy and security in multi-authority attribute-based encryption. Proceedings of the 16th ACM Conference on Computer and Communications Security. Chicago: ACM, 2009. 121–130.
[27]
Zhang YH, Deng RH, Xu SM, et al. Attribute-based encryption for cloud computing access control: A survey. ACM Computing Surveys, 2020, 53(4): 83.
[28]
Koblitz N. Elliptic curve cryptosystems. Mathematics of Computation, 1987, 48(177): 203-209. DOI:10.1090/S0025-5718-1987-0866109-5
[29]
Rajasekaran AS, Azees M, Al-Turjman F. A comprehensive survey on blockchain technology. Sustainable Energy Technologies and Assessments, 2022, 52: 102039. DOI:10.1016/j.seta.2022.102039
[30]
王利朋, 关志, 李青山, 等. 区块链数据安全服务综述. 软件学报, 2023, 34(1): 1-32. DOI:10.13328/j.cnki.jos.006402
[31]
佟兴, 张召, 金澈清, 等. 面向端边云协同架构的区块链技术综述. 计算机学报, 2021, 44(12): 2345-2366. DOI:10.11897/SP.J.1016.2021.02345