支持权限管理的高效属性撤销机制

2021-07-27 02:59刘雪贞邓小飞
计算机与现代化 2021年7期
关键词:密文解密密钥

刘雪贞,崔 艳,邓小飞,彭 杰

(焦作大学信息工程学院,河南 焦作 454000)

0 引 言

随着社会与科技的发展,人们越来越希望能跨平台、跨地理位置地访问资源,对外部数据云存储的需求呈现前所未有的高涨[1]。然而,将具有不同敏感级别的数据资源存放在外部云存储服务器上,为人们带来便利的同时,也带来了大量的安全问题[2-4]。因此,为了提高系统的安全性,需要引入安全可靠的加密机制为数据资源提供机密性及安全性保障[5-6]。

在基于密文策略的属性加密机制(Ciphertext-Policy Attribute-Based Encryption, CP-ABE)[7-11]中,用户私钥与属性集相关联,密文与访问结构相关联,访问控制策略由数据所有者设定,数据所有者拥有较高的自由度。因此,CP-ABE适用于大规模环境下实现数据共享的安全访问控制系统中,且能够实现对数据的机密性处理和密文访问。但是,将CP-ABE应用到访问控制中后,可能会发生属性到期、属性变更等问题,这些问题会引起属性撤消后用户访问权限的变更等[12-13]。因此,在以CP-ABE算法为基础的密文访问控制中,当发生属性撤消[14-16]时,如何才能确定用户的访问权限已成为亟需解决的问题。

为了解决属性撤销引起的问题,张应辉等[17]提出了一种密文长度恒定且属性直接可撤销的CP-ABE方案,该方案的“AND”门支持多值属性和通配符,且考虑了密文长度恒定和属性的撤销能力。但该方案属于属性直接撤销方案,撤销后数据拥有者需要维护属性撤销列表,工作量比较大。文献[18-20]提出了一种支持外包解密的属性撤销方案,解密时将部分解密运算外包给解密服务器,减少计算代价,但该方案不能抵抗用户合谋攻击。文献[21]提出了一种基于限制的用户撤销CP-ABE方案,该方案为每个用户设置访问数据的时间,一旦过有效期,用户就无法访问资源,实现了属性的定时撤销,但该方案属于粗粒度的属性撤销方案且缺少对用户权限的确定机制。王鹏翩等[22]尽管提出了细粒度属性撤销方案,但灵活性不高且计算量较大。文献[23]提出了基于属性加密的通用型属性撤销系统,该方案基于ABE,通过动态撤销应用系统中任意数量的属性来实现访问控制,但未考虑其访问权限的确定。

针对上述问题,本文提出一种支持权限管理的高效属性撤销机制。通过在访问控制过程中引入CP-ABE实现密文访问的基础上引入最小属性集,并通过判断被撤销属性与最小属性集的关系,最终确定用户的访问权限是否有所变更,对权限进行管理。

1 相关定义

定义1 访问树。树Γ用于描述一个访问结构。本质上,访问树是在门限结构的基础上加以扩展,具有多层次性、复杂性、表达能力较强等优点。

树Γ中的每个非叶子节点表示一个由子节点和阈值所描述的门限。假设节点x的子节点个数为nx,阈值为kx,则0≤kx≤nx。其中,当kx=1时,门限表示“或”门;当kx=nx时,门限表示“与”门。另外,每个叶子节点通常关联一个属性且阈值kx=1,这些叶子节点离根节点越近,所拥有的权限就越大。函数Parent(x)表示节点x的父节点,它可对叶子节点的输入进行限制,attr(x)表示叶子节点x所关联的属性值。Γ对每个节点的子节点进行编号,即从1到nx,函数index(x)返回节点x的编号。图1所示为访问树结构,其中叶子节点A、B、C、D、E、F、G分别代表属性,父亲节点分别代表与门、或门。

图1 访问树结构

定义2 最小属性集。将访问树Γ用主析取范式f(Γ)=T1∨T2∨…∨Tn来表示,即表示成若干个属性的and操作所组成的集合的or操作。其中Ti=A1∧A2∧…∧Am(Ai为属性)即为最小属性集(Minimal Attribute Set, MAS),每个最小属性集为一个用户能够访问资源至少要达到的条件。

在图1中,A、B、C、D、E、F及G分别代表相应的属性。因此,该访问树用主析取范式表示为:

f(T)=((A∨B)∧(C∧D))∨(E∨(F∧G))

=(A∧C∧D)∨(B∧C∧D)∨E∨(F∧G)

其中,T1=A∧C∧D,T2=B∧C∧D,T3=E,T4=F∧G,它们分别为图1中访问树的最小属性集。

定义3 KEK树。KEK树用于密钥加密密钥。在KEK树中,叶子节点代表系统中的用户,每个节点Vj拥有一个KEK,记做KEKj。另外,从叶子节点到根节点有一条路径,用于获取路径密钥。KEK树如图2所示。

图2 KEK树

在图2中,用户集U={U1,U2,U3,U4,U5,U6,U7},用户U2到根节点需要经过V9、V4、V2、V1。因此,用户U2的路径密钥为PK2={KEK9,KEK4,KEK2,KEK1}。

2 系统模型

将CP-ABE机制应用到访问控制中可以实现对数据资源的加密处理,保证数据资源的安全性。若用户访问客体资源,将以图3中的系统模型作为访问的判决条件。

在图3中,该模型主要由访问用户、数据属主、属性管理系统、云服务器提供商4部分组成,其中云服务器提供商(Cloud Service Provider, CSP)是由很多服务器组成的,它主要为用户及数据拥有者提供服务。数据属主为了保证数据的机密性,对数据进行加密处理。加密后将密文上传存储到云服务器中。当用户需要访问数据资源时,为用户提供服务,并最终确定用户对数据资源的权限。而属性管理系统(Attribute Management System, AMS)不仅可以对属性进行统一管理,还可以根据用户的属性集生成私钥,即当一个用户进入系统时,在属性管理系统进行注册。注册后,属性管理系统对该用户的属性集进行管理,并根据属性集生成密钥。同理,数据属主也可以从属性管理系统获得公钥,将其公开。然后,结合访问策略树对数据资源进行加密,并上传到云端。

图3 系统模型

当用户访问资源时,需要判断用户属性集是否满足数据属主定义的访问策略。若满足,则进行解密,并访问到数据资源。反之,不能访问。

2.1 方案的具体构造

该方案的具体方法是对传统CP-ABE算法进行改进,主要有系统初始化、密钥生成、密钥加密密钥生成、加密、重加密、解密及属性撤消时的重加密算法。

2.1.1 系统初始化

系统初始化Setup算法为一个随机算法,输入参数λ,λ决定群的大小,输出系统公钥PK与主密钥MK,其过程为:

Step1选择2个阶为素数p的双线性群G1、G2,g为其生成元,并且满足e:G1×G1→G2。

Step2任意选取2个元素α、β∈Zp,生成系统公钥PK与主密钥MK。

PK=(G1,g,h=gβ,e(g,g)α)

MK=(β,gα)

2.1.2 密钥生成

密钥生成算法(KeyGen)输入主密钥MK、用户集U及属性集S,并为用户集U中的每个用户输出与其相关的私钥SK,其过程为:

Step1为U中的每个用户随机选取γ∈Zp,Zp为模p的整数群{0,1,…,p-1},p为素数。

Step2对属性集S中的任一属性Ai随机选取γi∈Zp。

Step3为每个用户Ui的属性集生成对应的私钥。

SK=(D=g(α+γ)/β,∀i∈S:Di=gr×H(i)γi,Di′=gγi)

执行完后,将用户属性群发至服务器中。如在图2中,若用户U1拥有属性{1,2,3},U2拥有属性{1,3},U3拥有的属性为{2,3},则Gi={U1,U2},G2={U1,U3},G3={U1,U2,U3},其中Gi表示拥有属性i的所有用户所构成的集合。

2.1.3 密钥加密密钥生成

密钥加密密钥算法(KEKGen)为随机算法,用来重加密密文。它输入用户集U′⊆U,并为U′中的每一个用户输出对应的KEKs。其过程为:

Step1将用户集构建一棵KEK树,叶子节点代表属性集中的每个用户。

Step2为树中的任一节点Vj选取随机数KEKj∈Zp。

Step3从叶子节点到根节点存在一条路径,该路径上所有随机数即为用户Ui的路径密钥PKi。因此,输出PKi,它用于重加密阶段时加密KTi。例如在图2中,用户U4的路径密钥PK4={KEK1,KEK2,KEK5,KEK11}。

2.1.4 加密

加密算法(Encrypt)为随机算法,输入系统公钥PK、明文M及访问控制树Γ,输出密文CT,其过程为:

Step1由于利用访问控制树对消息M进行加密,因此数据属主制定访问策略后,将访问策略用树来表示。而构造访问控制树Γ的步骤为:

Step1.1树Γ从根节点r开始,其叶子节点与属性相对应。

Step1.2对树Γ中的每一节点x任意选取一个阶为kx-1的多项式qx,kx为节点门限,且树Γ对每个节点的子节点都加以编号。

Step1.3对根节点r来说,任意选取s∈Zp,令qr(0)=s。对非根节点来说,令qx(0)=qparent(x)(index(x)),其中,parent(x)函数返回节点x的父节点,index(x)函数返回节点x在兄弟节点中其索引序号。

Step2若N表示树Γ中所有叶子节点的集合,则密文可表示为:

∀x∈N:Cx=gqx(0),C′x=H(attr(x))qx(0))

2.1.5 重加密

重加密算法(ReEncrypt)用于为每个共享重加密密钥的最小属性集Ti生成重加密密钥,重加密的过程为:

Step1为每一个共享重加密密钥的最小属性集Ti随机选取密钥KTi∈Zp。

在图1中,A、C、D共享重加密密钥KT1,B、C、D共享重加密密钥KT2,E共享重加密密钥KT3,F、G共享重加密密钥KT4。因此,属性与重加密密钥的关系可表示为{A,B,…}→KTi(i=0,1,…,k)。

Step2将KTi用于重加密密文CT,输出CT′,它可表示为:

∀x∈N:Cx=gqx(0),C′x=(H(attr(x))qx(0))KTi)

Step3对密文CT执行完重加密后,需要在KEK树中选取能够覆盖所有叶子节点的最小覆盖子树。例如在图2中,假设Gi={U1,U2,U3,U4,U5,U6,U7},由于节点V2及V3能够覆盖Gi中的所有用户,因此,最小覆盖子树为KEK(Gi)={KEK2,KEK3}。其中当Uj∉Gi时,则用户Uj无法知道KEK(Gi)中的任一KEK。

Step4最小覆盖子树确定后,采用对称加密算法对KTi执行加密操作。此时,可以得到:

Hdr=(CKTi=EK(KTi),K∈KEK(Gi))

2.1.6 解密

解密算法(Decrypt)为随机算法,输入重加密密文CT′、用户属性集对应的私钥SK及KTi。它由KTi密钥解密及消息解密组成。

1)当用户访问消息时收到密文(Hdr,CT′),需要首先获得KTi。而KTi解密过程为:

Step1若用户Uj∈Gi,则可借助一个KEK来解密KTi,该KEK为KEK∈PKj∩KEK(Gi),其中PKj为KEK树中用户Uj到根节点的路径。在图2中,若Gi={U1,U2,U3,U4,U5,U6,U7},则用户U4可使用PK4∩KEK(Gi)={KEK1,KEK2,KEK5,KEK11}∩{KEK2,KEK3}=KEK2解密KTi。若用户Uj∉Gi,则不能依据KEK来解密KTi。

Step2用户Uj更新其私钥,可表示为:

SKj=(D=g(α+γ)/β, ∀i∈S:Di=gγ×H(i)ri,

Di′=(gri)1/KTi)

2)用户更新私钥后,需对消息进行解密。

对消息解密时,需执行Decrypt(CT′,SK,i)算法,其中i=attr(x),且解密过程中需要执行递归函数DecryptNode(CT,SK,x)。因此,执行解密算法时需要考虑以下2种情况:

1)x为叶子节点,i=attr(x),若i∈S,则:

DecryptNode(CT,SK,x)

若i∉S,则DecryptNode(CT,SK,x)=⊥。

2)x为非叶子节点时,用F(z)表示节点x的孩子节点z的返回值,Sx表示F(z)≠0的任意kx个子节点组成的集合,S′x={index(z),z∈Sx},并使用拉格朗日插值法从下往上递归,即:

=e(g,g)r·qx(0)

因此,通过上述方法不断递归到根节点,得到A=e(g,g)r·qr(0)=e(g,g)rs,并最终可以计算出:

2.1.7 属性撤消时的重加密算法

当发生属性到期、属性撤消等情况时,系统增加该算法,即属性撤消时需执行重加密算法。该算法用于重加密不受撤消属性影响的那些共享重加密密钥的密文,其过程为:

Step1随机选取s′∈Zp。

Step2由于最小属性集共享重加密密钥,因此除了含有撤消属性的最小属性集外,重加密其他共享重加密密钥的密文。

Step3输出CT′,它可表示为:

∀x∈N{Ti}:Cx=gqx(0)+s′,

C′x=H(attr(x)qx(0)+s′)KTi)

2.2 访问控制流程

在访问控制机制中,用户能否访问到资源主要是判断用户的属性集是否满足数据属主制定的访问控制策略。在图1中,该访问控制树用主析取范式可以表示为f(Γ)=(A∧C∧D)∨(B∧C∧D)∨E∨(F∧G),其中,A∧C∧D对应的密文为C1,B∧C∧D对应的密文为C2,E对应的密文为C3,F∧G对应的密文为C4。

假设某一用户要访问的数据资源用访问树加密后密文为C1,该用户在访问资源时提交的属性集为S,则根据最小属性集T1=A∧C∧D与该用户的属性集S加以比较,来判断是否可以对数据资源进行解密,并访问到资源。它主要基于以下3种情况:

1)若该用户提交的属性集为S={A,B,C,D,G},则S∩T1=T1。因此,该用户可以对密文进行解密,并访问到数据资源。

2)若该用户提交的属性集S满足S⊄T1或者S∩T1⊄T1,则不能解密密文。因此,该用户无法访问到数据资源。

3)若系统中的某一属性到期或者被撤消时,需要考虑该属性对最小属性集T1的影响。

①被撤消的属性或者到期的属性不在T1中。

在情况1中,该用户在访问数据资源的过程中提交的属性集合为S={A,B,C,D,G},若被撤消的属性或到期的属性Ri满足Ri∉S∩T1或者Ri∉S或者Ri∉T1,则Ri对访问权限的决策没有影响。因此,该用户仍可以解密密文C1,并访问到资源。即若Ri={B,G}或者Ri为除了S和T1外其余的属性,该用户可以访问到资源。

②被撤消的用户属性或者到期的属性在T1中。

若撤消的属性或者到期的属性Ri∈T1,即当撤消的属性为C时,用户其余的属性集S1为S1={A,B,D,G}。此时S∩T1≠T1。因此,该用户不满足最小属性集T1的要求,则无法访问到资源。

由于撤消的属性为C,而属性C不仅满足C∈T1,还满足C∈T2。因此,属性C的撤消,对访问这2个密文的用户就有所影响。此时,系统需要执行属性撤消时的重加密算法,对除密文C1、C2外的其余密文进行加密处理,加密过程参照2.1.7节。

除此之外,由于撤消了属性C,因此,需要更新具有属性C的用户所对应的最小覆盖子树。假设用户U1、U2、U4拥有属性C,在没有撤消该属性时,能覆盖用户U1、U2、U4的最小子树为{KEK4,KEK11}。但是当撤消用户U1的属性C时,需要更新那些没有受撤消属性影响的最小覆盖子树,即将其更新为{KEK9,KEK11},并结合路径密钥对KTi加密。

具体的数据资源访问流程如图4所示。

图4 数据资源访问流程

3 方案分析

本文方案保留了CP-ABE算法的优点,即利用访问树Γ对数据资源进行加密,保证数据的机密性,能够实现对数据资源的密文访问,并通过用户属性集与访问控制策略的比较来决定用户的访问权限,而且该方案能够解决属性撤消或者属性到期的问题。另外,由于该方案引入了最小属性集,并且增加了在属性撤消时的重加密等算法。因此,相对来说本文提出的方案运行时间会较长,但性能方面会有所提高。本章将从方案的正确性及性能方面对其进行分析。

3.1 正确性分析

本文提出方案的正确性主要体现在以下2个方面。

证明:由于用户在访问数据资源时,会提交自己的部分属性集S。在解密时需要判断i与属性集S的关系,其中i=attr(x)为节点x对应的属性值。此时:

而当一层一层地递归到根节点时,e(g,g)rqx(0)=e(g,g)rs=A,因此:

2)用户的某一属性撤消后,可能不会影响其访问权限。

证明:首先,假设用户的属性为A、B、C、D及E,访问资源R需要满足ABC或者ACD或者BD。而当用户的某一属性撤消时,需要考虑以下4种情况:

①当撤消的属性为A、C时,若用户提交B属性及D属性,权限不会发生改变。反之,影响其访问权限。

②当撤消属性为B时,若用户提交属性A、B及D,对资源的访问权限不会改变。反之,会影响访问权限。

③当撤消属性为D时,若用户提交属性A、B及D,权限不发生改变。反之,影响其访问权限。

④当撤消的属性为E时,不论提交哪些属性,对用户原有的访问权限不会有所影响。

综上所述,当用户的某一属性撤消后,权限可能不会发生变化。

3.2 性能分析

1)高效性。

对某个访问用户进行属性撤消时,首先,假设该用户有10个属性,利用访问控制策略树Γ对资源进行加密处理。而树Γ用主析取范式来表示可能会有多个最小属性集组成,该用户若想访问资源至少需要满足其中的一个最小属性集。其次,考虑引入最小属性集与未引入最小属性集对效率的影响,并预设某个最小属性集中属性的个数分别为2、3、4。最后,考虑系统撤消该用户属性时,选择被撤消属性的最好及最坏的情况。其中最坏情况即直到其余属性被撤消完才开始撤消最小属性集中的属性,最好情况即一开始被撤消的属性即为最小属性集中的属性。因此,在此基础上分析不同情况下其撤消效率,如图5所示,其中,图5(a)表示最坏情况,图5(b)表示最好情况。

图5 撤消效率对比

从图5可以看出,未引入最小属性集时,撤消次数随着被撤消属性个数的增加而线性增加。引入最小属性集时,最坏情况下,撤消次数也随着被撤消属性的个数增加而增加。但当撤消的属性中含有最小属性集中的属性时,撤消的次数开始保持不变,如在图5(a)中,最小属性集中属性个数为4时,若撤消其余6个属性时,即需要撤消6次,但当撤消到第7个属性的时候,该属性由于存在于最小属性集中,它的撤消影响该用户的访问权限。以此类推,撤消第8个属性时,对该用户访问权限的确定没有影响。因此,撤消的次数保持不变。同理,最好情况在图5(b)中,撤消第1个属性即为最小属性集中的属性,直接影响用户的访问权限。因此,后续撤消属性时,撤消的次数保持不变。

通过以上分析,引入最小属性集,不管考虑最好的情况还是最坏的情况,都比未引入最小属性集时的撤消次数偏低,效率较快。

2)前向安全性。

在本文方案中,若某用户的属性集满足访问控制策略,则该用户能够访问到相关数据资源。但是,若存在以下2种情况,则该用户不能访问随后新增的数据资源。

①系统撤消了该用户,即撤消该用户的所有属性。

虽然该用户以前访问过某个数据资源,但由于系统中不再有该用户的存在,因此,即使其自身属性集仍然满足某些资源对应的访问控制策略,也不能访问到资源。

②系统撤消了该用户的某些属性,但这些属性在访问控制策略中。

当被撤消的用户属性存在于访问控制策略中,该用户不再满足访问控制策略。因此,由于被撤消属性的缺失,该用户不能访问到资源。

因此,保证了数据资源的前向安全性。

3)后向安全性。

在本文方案中,根据用户属性集与访问控制策略的比较来确定用户的访问权限。但是,若对用户新增某些属性时,则该用户不能访问他进入系统前的数据资源,除非该数据资源在用户进入系统后加以修改。

假设某一用户的属性集为{college,role,grade,sex,location},对应属性值为{某某大学,学生,大二,女,北京},资源制定的访问策略为:

p={College=′某某大学′,Role=′学生′,

Grade=′大二′,Average(Sum)>=90}

若该用户访问该资源,由于属性集不满足访问控制策略,故不能访问到资源。但是当系统增加了该用户的Average(Sum)属性,且Average(Sum)=95时,该用户的属性集满足访问控制策略p。但该用户仍然不能解密增加Average(Sum)=95前该资源对应的密文。若该用户进入系统后,该资源也执行了某些操作(如:修改),并且没有更改访问控制策略,则该用户可以访问该资源。因此,当用户新增某些属性后,可以访问添加属性之后满足访问控制策略的资源,但是不能访问之前的资源,即保证了后向安全性。

4)抵抗共谋攻击。

当利用访问树对数据资源加密处理后,该资源便为密文资源。假设某用户欲对资源进行破坏,此时该用户在访问资源时,系统需对该用户进行判断,如判断该用户属性集中的属性是否达到访问控制策略中的需求。假设对信任度属性进行判断,经过判断,该用户以前表现较差。因此,该用户没有达到访问要求,不能访问到资源。但是,若该用户想通过与其他用户结合来共同获得对该资源的访问权限,则在该方案中行不通。

在该方案密钥生成阶段KeyGen,系统为用户集U中的每个用户随机选取r∈Zp,即每个用户都有唯一的随机数r。而该随机数又决定着用户的私钥SK,每个用户的密钥不同就使得他们无法联合访问到资源,并对其进行攻击。因此,该方案能够抵抗多用户的共谋攻击。

4 结束语

针对目前属性撤销后权限确定等问题,本文提出了支持权限管理的高效属性撤消方案,并给出了方案的具体构造过程。在访问控制过程中,当用户访问数据资源时发生属性撤消,将通过判断被撤消属性与最小属性集的关系来决定用户的访问权限。通过判断有效的属性集合是否满足访问控制策略来决定其访问权限。因此,在属性撤消后,不会立即终止用户在系统中的访问权限,而是通过分析被撤消属性是否在访问控制策略中,若在策略中,则该用户对资源没有相应的访问权限。反之,则撤消的属性对用户没有影响,用户仍然可以访问到资源。但是本文提出的属性撤消方案仍采用双线性配对,而双线性配对在运算过程中耗时较长。另外,对数据资源加密成密文后,密文长度会随着访问控制策略复杂性的增大而线性增加,且发生属性撤消时,需进行重加密操作。此时,密文长度会线性增加。因此,缩小密文长度是下一步需要研究的方向。

猜你喜欢
密文解密密钥
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
炫词解密
解密“一包三改”
密码系统中密钥的状态与保护*
炫词解密
TPM 2.0密钥迁移协议研究
一种对称密钥的密钥管理方法及系统
一种基于密文分析的密码识别技术*
云存储中支持词频和用户喜好的密文模糊检索