0 引言
在当前的大数据环境下,各种组织都在依赖数据来做出决策和进行分析,通过深入挖掘大量数据,开发出广泛应用的推荐算法和大规模语言模型等。然而,如果数据不能进行有效流通,则会出现数据孤岛的现象,所以企业需要在可控的范围内实现数据的流通和共享。
为了解决上述需求,许多访问控制技术方案应运而生,其中较为经典的方案包括基于角色的访问控制(RBAC)[1]和基于属性的访问控制(ABAC)[2]。基于属性的加密(ABE)[3-4]访问控制方案是一种从ABAC衍生出来的以密码学为基础的访问控制方案,其具备许多优良特性使其可以很好地适应各种复杂的应用场景,如供应链[5]、医疗[6-7]、物联网[8]、云存储[9]、区块链[10]、智慧网格[11]等。ABE借鉴了基于模糊身份的加密方案(Fuzzy-IBE)[12],Fuzzy-IBE的核心思想是通过使用一组属性以标识一个身份,只要解密实体持有的属性与数据约定的属性集之间的差距在一定范围内,就可以解密得到原始数据。通过这种方式,一个数据访问者不再是某个特定的实体,而可以是一组满足一定属性条件的多个实体,从而解决了传统加密控制方案只能支持一对一加密的缺陷。
基于属性的加密访问控制方案在2006年由GOYAL等[3]提出,在其论文中把ABE方案分为KP-ABE与CP-ABE两类。在此之后,许多ABE方案的变体涌现,其中得到最广泛应用的便是基于属性的分布式加密(DABE)方案[13],它支持多个分布式的机构来弥补原先ABE方案中仅支持单个机构的不足。
工业物联网与个人智慧移动终端的普及为属性加密方案带来了新的挑战。这些设备往往与工业或个人使用者的敏感数据相关,同时其拥有的计算资源有限,一般难以负担大量数据解密所带来的计算开销。为了解决这个问题,外包解密的概念被引入属性加密中[14-19],其中LIU等[14]提出了一种适用于物联网设备的属性加密方案,通过将解密工作外包给云端减轻设备负担,同时引入策略隐藏技术保证隐私性。ZIEGLER等[17]同样设计了一个可外包的方案,并使用对偶向量空间技术实现了策略隐藏。LI等[18]提出了一个可用于物联网设备的外包属性加密方案,并在RCCA安全模型下证明了方案的安全性。此外,郭瑞等[19]基于区块链技术设计了一个可外包的属性加密方案,并引入白盒可追溯性对恶意用户进行追踪。
在智能化的时代下,如何实现数据的跨域流通与共享成为一个亟须解决的问题,同时随着数据受控共享所涉及的场景愈发复杂,企业要求实现数据流通过程的透明与更细粒度的控制、属性密钥的全周期管控等。此外,传统的CP-ABE方案中缺乏对属性申请者的身份验证的统一且规范的认证模式以及存在数据持有者进行加密后就会失去对数据的后续控制权的缺陷。针对上述需求,本文引入区块链技术[20]与可验证凭证(VC)[21]概念,提出基于区块链的可问责可验证外包分层属性加密方案。本文方案支持分布式架构,可由多个独立属性机构自行管理属性,与区块链的去中心化特性相契合,通过区块链技术保障数据流通期间的透明可信,利用VC与问责机制保证属性密钥的合法生成与正确使用。为了解决数据可控性问题,本文方案引入分层概念,在保留一对多加密的灵活性的同时保留了持有者对数据的全生命周期的监管。属性加密方案可以为持有者初步筛选符合访问策略的访问者,而持有者具有最终决定权。综上所述,本文主要工作如下:
1) 利用VC概念和问责机制,用户在申请属性密钥之前需要先得到属性机构的VC作为持有该属性的认证。生成属性密钥时需要先验证此凭证,保证了密钥生成的合法性。问责机制可以判断属性密钥是否有效以及确认其属权。
2) 引入区块链技术,利用其去中心化与不可篡改的特性,通过编写智能合约,将数据流通的全流程记录在链上,以实现更高的透明度,同时满足跨域共享的需求。
3) 借助外包技术,用户可以生成一次性外包解密密钥,并将数据部分加解密计算过程交给算力充足的云节点,减轻物联网设备的计算负担。
4) 通过对数据进行分层加密,实现更加细粒度的控制,其中第一层数据由设定的访问策略控制,第二层数据的控制权交回给数据持有者本身。
1 预备知识
1.1 素数阶双线性群
设G和GT是两个阶为素数p的循环群,g表示群G的生成元。e: G×G→GT是一个双线性映射,其满足以下性质:
1) 双线性:∀a, b∈Zp, e(ga, gb)=e(g, g)ab。
2) 非退化性:存在g∈G使得e(g, g)在GT中的阶为p。
3) 可计算性:∀g, h∈Zp,可以在多项式时间内计算双线性映射e(g, h)。
1.2 单调访问结构
设U=P1, P2, …, Pn是一个属性集合,定义U上的一个访问结构A⊆2P1, P2, …, Pn是属性集合U的非空子集构成的集合。A中的子集称为授权集,而不在A中的子集称为非授权集。一个访问结构如果满足∀B, C∈A: if B∈A and B⊆C, then C∈A, 则是单调的[22]。
1.3 DDH假设
设q是一个大素数,G为阶是q的群,g是G的生成元。给定两个元组(g, ga, gb, gc)和(g, ga, gb, gab),其中a、b、c是从Zq中随机选取的。如果不存在任何概率多项式时间的敌手A可以以不可忽略的概率区分随机选取的R=(g, ga, gb, gc)与D=(g, ga, gb, gab),即AADDH= |Pr[A(R)=1]-Pr[A(D)=1]|, 该值可忽略不计,则DDH假设[23]成立。
1.4 q-SDH假设
设G是一个阶为p的循环群,g为群G的生成元。在群G上的q-SDH问题[24]定义如下:首先随机选择一个元素x∈Zp,以及相应的一个q+1元组(g, gx, gx2, …, gxq);然后随机选择另一个元素c∈Zp并计算元素对(c, g1/(x+c))。若敌手A可以以ε的优势解决群G上的q-SDH问题,则其满足如下条件:
Pr[A(g,gx,gx2,⋯,gxq)=(c,g1/(x+c))]⩾ε
如果不存在任何多项式时间敌手A可以以不可忽略的优势破解群G上的q-SDH问题,则称q-SDH假设在群G上成立。
1.5 线性秘密分享方案
线性秘密分享方案(LSSS)定义[22]如下:设p是一个素数,U是属性集合,如果一个秘密分享方案Π在Zp的U上是一个线性访问结构,则它满足以下2个条件。
1) 每个U中的属性对应的Zp上的秘密分享值构成Zp上的一个向量。
2) 对于U上的每个访问结构A,存在一个对应的矩阵A(称为秘密生成矩阵)以及一个函数ρ,将A的每行映射到U中的每个属性,且满足以下条件:在生成秘密时,考虑这样的一个列向量ν=(s, r2, r3, …, rn)T,其中s是需要分享的秘密值,r2, r3, …, rn是在Zp中随机选取的,则每个属性对应的秘密分享值可以表示成λj=Aj·ν。
(A, ρ)是访问结构A的一个访问策略。每个秘密分享方案都满足重构性与安全性,


