第5章 基于属性的密码体 制 5.1 基于属性的密码体制的一般概念 加密可被认为是加密者与接收者(用户或设备)共享数据的一种方法,但仅限于加密者 明确知道他想要共享数据的用户。然而,在许多应用中,加密者并不明确知道想要共享数据 的用户。例如,加密者意欲在某个特定时间段与具有某个特定IP地址的用户共享数据,加 密者就必须把自己的秘密钥给这些特定的用户。这种共享数据的方式只能实现一对一的加 密,因而是粗粒度的,限制了加密者以细粒度方式和其他用户共享加密数据。基于属性的加 密(Atribute-BasedEncryption,ABE)机制是传统公钥加密的一种延伸,由Sahai和Waters 在2005年欧密会上提出[34],其中加密者能够在加密算法中表达他想要如何分享数据,他可 根据接收用户的凭证制定一些策略,并根据这些策略共享数据。因此,可实现一对多或多对 多的加密。用户的凭证用属性集合描述,属性是描述用户的信息要素,通常指用户本身所拥 有的特性或身份标识,如学生的属性可包括所在的院系、专业、类别、年级等。 基于属性的加密机制又分为基于密钥策略的属性加密(Key-PolicyAtribute-Based Encryption,KP-ABE)和基于密文策略的属性加密(Ciphertext-PolicyAtribute-Based Encryption,CP-ABE),在KP-ABE中,密文包含属性集合,而密钥则与该属性集合的访 问策略相关联,只有当密文的属性集合满足密钥所关联的访问策略时才能解密。CPABE则相反,其中接收者的密钥与属性集合相关联,而密文则包含该属性集合上的访问 策略,只有当接收者密钥所关联的属性集合满足密文所包含的访问策略时才能解密。如 图5-1所示,其中TA(TrustedAuthority)是建立系统的可信机构。KP-ABE与CP-ABE 的区别如表5-1所示。 图5-1 KP-ABE与CP-ABE的关系 第5章 基于属性的密码体制 表5-1 KP-ABE与CP-ABE的区别 比 较 项KP-ABE CP-ABE 密文密文包含属性密文包含策略 密钥密钥关联策略密钥关联属性 策略策略掌握在中心TA手中(稳定) 策略掌握在自己(加密者)手中(灵活) 应用模式收费点播模式传统访问控制模式 计算量计算量小计算量大 IBE方案可看作一种特殊的KP-ABE方案,如图5-2所示。其中,密文包含的属性为 接收者的身份ID'。密钥所关联的访问策略为:密文包含的接收者身份ID'与密钥的属主 身份ID一样,即ID'=ID时,可以解密。 图5-2 KP-ABE与IBE的关系 因为策略集合远大于属性集合,因此在KP-ABE中,按照属性集合加密,计算量要小 于CP-ABE中按照策略加密。 访问结构是实现访问策略的集合表示,是由属性集合{P1,P2,…,Pn }的一些非空子 集构成的单调集合(见1.5.1节定义1-18),表示为A。A中的元素r 满足访问策略,称为授 权集合,表示为γ∈A。不在A中的元素则不满足访问策略,称为非授权集合,表示为 γ.A。 4个常用的概念如下: . 主密钥:由TA 掌握,用于为接收方产生解密密钥。 . 会话密钥:TA 为接收方产生的解密密钥。 . 密钥指数:用主密钥产生会话密钥时使用的随机数。 . 加密指数:发送方加密明文时使用的随机数。 KP-ABE方案由以下4个算法组成: (1)初始化。 TA 执行,为随机化算法,输入安全参数κ 和属性总体的描述,输出系统参数params 和主密钥msk,表示为(params,msk)←Init(κ)。 (2)加密。 发送方执行,为随机化算法,输入消息M 、系统参数params以及属性集γ,输出密文 CT,表示为CT=Eγ(M )。 143 密码学中的可证明安全性(第2版) (3)密钥产生。 TA 执行,为随机化算法,输入系统参数params、主密钥msk以及访问结构A,输出会 话密钥sk,表示为sk←ABEGen(A)。 TA 在密钥产生过程中实施策略的具体方式是用秘密分割方案在属性总体上对主密 钥进行分割,使得只有授权集合可以隐含地恢复主密钥。“隐含”是指在指数上恢复被加 密指数随机化了的主密钥。 (4)解密。 接收方执行,为确定性算法,输入系统参数params、会话密钥sk(访问结构A对应的 密钥)及密文CT(包含属性集合γ),如果γ∈A,解密算法将解密CT并返回消息M ,表示 为M =Dsk(CT)。 KP-ABE的安全模型与IBE机制类似,仍是由挑战者和敌手的交互式游戏刻画。 将KP-ABE方案记为Π,Π的IND游戏(称为IND-KP-ABE-CPA 游戏)如下: (1)初始化。由挑战者运行,产生系统参数params和主密钥msk,将params给 敌手。 (2)阶段1(训练)。敌手发出对访问结构A的秘密钥产生询问;挑战者运行秘密钥产 生算法,产生与A对应的秘密钥d,并把它发送给敌手。这一过程可重复多项式有界次。 (3)挑战。敌手提交两个长度相等的消息M0、M1 和一个意欲挑战的属性集合γ* , 其中γ* 不满足阶段1中的每一个访问结构A;挑战者选择随机数β←R {0,1},以γ* 加密 Mβ,将密文C* 给敌手。 (4)阶段2(训练)。重复阶段1的过程,敌手发出对另外的访问结构A的秘密钥产生 询问,唯一的限制是挑战阶段产生的属性集合γ* 均不满足该访问结构A,表示为γ* .A; 挑战者以阶段1中的方式进行回应。这一过程可重复多项式有界次。 (5)猜测。敌手输出猜测β'∈{0,1},如果β'=β,则敌手攻击成功。 敌手的优势定义为安全参数κ 的函数: AdvKP-ABE Π,A (κ)= Pr[β'=β]-12 如果敌手在初始化阶段前声称一个意欲挑战的属性集合γ* ,则称这个系统是选定属 性安全的。 IND-KP-ABE-CPA 游戏的形式化描述如下: ExpIΠN,DA-KP-ABE-CPA(κ): γ* ←A ;/选定属性的 (params,msk)←Init(κ); (M0,M1,γ* )←AABEGen(·)(params); /如果是选定属性的,此时无γ* /ABEGen(·)改为ABEGen≠γ* (·) β←R {0,1},C* =Eγ* (Mβ); β'←AABEGen≠γ* (·)(C* ); 如果β'=β,则返回1;否则返回0. 144 第5章 基于属性的密码体制 其中,A右肩上的ABEGen(·)表示敌手A向挑战者做访问结构的秘密钥询问, ABEGen≠γ* (·)表示敌手A向挑战者做访问结构A的秘密钥询问,要求γ* .A。 敌手的优势为 AdvKP-Π,AABE(κ)= Pr[ExpIND-KP-ABE-CPA Π,A (κ)=1]-12 定义5-1 如果对任何多项式时间的敌手A在上述游戏中的优势是可忽略的,则称此 KP-ABE加密机制是语义安全的。 CP-ABE方案由以下4个算法组成: (1)初始化。为随机化算法,输入安全参数κ 和属性总体的描述,输出系统参数params 和主密钥msk,表示为(params,msk)←Init(κ)。 (2)加密。为随机化算法,输入消息M 、系统参数params以及属性总体上的访问结 构A,输出密文CT,CT中隐含地包含访问结构A,表示为CT=EA (M )。仅当接收方拥有 满足访问结构的属性集合时才能解密该密文。 发送方实施的策略:首先为每一消息选择一个加密指数,然后用秘密分割方案在密 文上分割加密指数,使得只有授权集合可以隐含地恢复加密指数。“隐含”是指在指数上 恢复被加密指数随机化了的主密钥。 (3)密钥产生。为随机化算法,输入系统参数params、主密钥msk以及用来描述密 钥的属性集γ,输出会话密钥sk,表示为sk←ABEGen(γ)。 (4)解密。接收方执行,为确定性算法,输入系统参数params、会话密钥sk(属性集 合γ 对应的密钥)及密文CT(包含访问结构A),如果γ 满足访问结构A(即γ∈A),解密 算法将CT解密并返回消息M ,表示为M =Dsk(CT)。 CP-ABE机制的安全模型与IBE机制类似,其中允许敌手对任意的密钥(除了用来解 密挑战密文的密钥以外)进行询问。敌手会选择挑战一个满足访问结构A* 的密文,并且 能够对任何不满足访问结构A* 的属性集合γ进行密钥询问。记CP-ABE方案为Π,Π的 IND游戏(称为IND-CP-ABE-CPA 游戏)如下: (1)初始化。由挑战者运行,产生系统参数params并将其给敌手。 (2)阶段1(训练)。敌手发出对属性集合γ 的秘密钥产生询问;挑战者运行秘密钥 产生算法,产生与γ 对应的秘密钥d,并把它发送给敌手。这一过程可重复多项式有 界次。 (3)挑战。敌手提交两个长度相等的消息M0 和M1。此外,敌手选定一个意欲挑战 的访问结构A* ,其中敌手在阶段1中询问过的属性集合均不能满足此访问结构。挑战者 选择随机数β←R {0,1}并以A* 加密Mβ,将密文C* 给敌手。 (4)阶段2(训练)。敌手发出对另外的属性集合γ 的秘密钥产生询问,唯一的限制 是这些γ 均不满足挑战阶段的访问结构A* ;挑战者以阶段1中的方式进行回应。这一过 程可重复多项式有界次。 (5)猜测。敌手输出猜测β'∈{0,1},如果β'=β,则敌手攻击成功。 敌手的优势定义为安全参数κ 的函数: AdvCP-ABE Π,A (κ)= Pr[β'=β]-12 145 密码学中的可证明安全性(第2版) 如果敌手在初始化阶段前声称一个意欲挑战的访问结构A* ,则称这个系统是选定访 问结构安全的。 IND-CP-ABE-CPA 游戏的形式化描述如下: ExpIND-CP-ABE-Π,A CPA(κ): A* ←A;/选定访问结构的 (params,msk)←Init(κ); (M0,M1,A* )←AABEGen(·)(params); /如果是选定访问结构的,此时没有A* ; /ABEGen(·)修改为ABEGen≠A* (·) β←R {0,1},C* =EA* (Mβ); β'←AABEGen≠A * (·)(C* ); 如果β'=β,则返回1;否则返回0. 其中,A右肩上的ABEGen(·)表示敌手A向挑战者做属性集合的秘密钥询问, ABEGen≠A* (·)表示敌手A向挑战者做不满足A* 的属性集合γ 的秘密钥询问。 敌手的优势为 AdvCP-ABE Π,A (κ)= Pr[ExpIND-CP-ABE-CPA Π,A (κ)=1]-12 定义5-2 如果对任何多项式时间的敌手A在上述游戏中的优势是可忽略的,则称此 CP-ABE加密机制是语义安全的。 与IBE方案类似,ABE方案的安全模型也分为选定属性(或访问结构)安全的和完全 安全的。完全安全的模型用对偶加密系统实现。 本章分别介绍模糊身份的KP-ABE 加密方案[34]、基于访问树结构的KP-ABE 方 案[35]、基于LSSS的CP-ABE 加密方案[36]、基于对偶加密系统的完全安全的CP-ABE 方案[37]。 5.2 基于模糊身份的KP-ABE方案 基于模糊身份的加密方案简称FuzzyIBE(FuzzyIdentity-BasedEncryption),是 Sahai和Waters于2005年提出的,是对使用生物特征数据作为身份信息的IBE方案的 改进。该方案通过引入门限方案的思想,将用户的生物特征作为身份信息,可实现容错的 基于身份的加密。若用户拥有身份ω 对应的秘密钥,就可解密身份ω'加密的消息,当且 仅当在某种度量下,ω 和ω'在某个距离之内。作为身份信息的生物特征,其距离度量可 取海明距离、集合差、编辑距离。而如果将身份ω 取为属性集合,则FuzzyIBE系统可用 于基于密钥策略的属性加密(KP-ABE)。 5.2.1 Fuzzy IBE 的安全模型及困难性假设 FuzzyIBE的选定身份(FuzzySelective-ID)模型与基于身份的标准模型类似,区别 146 第5章 基于属性的密码体制 在于前者仅允许敌手询问与目标身份在某个距离范围外的身份的秘密钥,其中距离度量 取集合差。设ω 和ω'是两个集合,它们的对称差是集合ωΔω'={x∈ω∪ω'|x.ω∩ω'}, ω 和ω'之间的集合差定义为|ωΔω'|。为使集合差大于某个门限值,|ω∩ω'|必须小于某 个定值。这样就可以把集合差转换为集合交来描述。 设A表示一个攻击者,A可以对任一身份做秘密钥产生询问,限制条件是该身份与要 攻击的身份交集少于d 个元素。 下面是FuzzyIBE机制(记为Π)安全游戏。 (1)敌手声称意欲挑战的身份α。 (2)初始化。由挑战者运行,产生系统参数params和主密钥msk,将params给 敌手。 (3)阶段1(训练)。敌手对满足|γj∩α|ε(κ);反之,如果T ∈RMBDH,则Pr[β'=β]=12。B的优势为 |Pr[B(T ∈PMBDH)=1]-Pr[B(T ∈RMBDH)=1]|≥ 12 ±ε(κ) . è .. . ÷ -12 =ε(κ) (定理5-1证毕) 5.2.3 大属性集上的基于模糊身份的加密方案 在5.2.2节的方案中,公开参数随着属性集的大小|U|而线性增长。若属性总体为 Z* p ,则params大到使方案失去实际意义。本方案用插值法在g(生成元)的指数上构造 一个n 次多项式,其中n 是加密的最大的身份长度(即表示身份的最多的属性个数),由 此得到一个函数T(x),用此函数表达属性x。因此建立params时,不用显式地表达每 个属性。通过大属性集上一个抗碰撞的哈希函数H :{0,1}* →Z* p ,可以把任意串映射 到Z* p 上。该方案的安全性基于判定性BDH 假设(见4.3.1节)。 参数设置与5.2.2节相同,加密身份固定长度为n,即身份由Z* p 中的n 个元素构成。 如果取一个将任意串映射到Z* p 的抗碰撞的哈希函数H ,则身份可取为n 个任意的元素。 访问策略仍是将主密钥y 按(d,|U|)门限秘密分割方案进行分配,由身份ω'产生的密文 仅由满足|ω∩ω'|≥d 的身份ω 解密。 该方案的具体构造如下: (1)初始化: 150 第5章 基于属性的密码体制 Init(κ): y ←R Zp ;/主密钥 g2 ←R G1; t1,t2,…,tn+1 ←R G1; N 定义为集合{1,2,…,n +1}; T(x)定义为函数gxn 2 Πn+1 i=1 tΔi,N (x) i ; params=(g,g2,t1,t2,…,tn+1);/g 是G1的生成元 msk=y. 其中定义的函数T (x )=gxn 2 Πn+1 i=1 tΔi,N (x) i ,可看作存在某个n 次多项式h (x )使得 T(x)=gxn 2 gh(x)。 (2)密钥产生(其中ω.U): ABEGen(msk,ω): 随机选取一个d-1次多项式q,满足q(0)=y; 对每一i∈ω { ri←R Zp ;/密钥指数 Di=gq(2i)T(i)ri ,di=gri }; dω ={Di,di}i∈ω . 注意:dω 作为对ω 产生的秘密钥,其每个成分Di 与主密钥的分割份额q(i)关联。 (3)加密(用接收方的属性ω'作为公开钥,其中M ∈G2): Eω'(M ): s←R Zp ;/加密指数 CT=(ω',C'=M ·e^(g,g2)ys,C″=gs,{Ci=T (i)s}i∈ω') 注意:加密指数与属性的每个元素关联。 (4)解密(用ω 解密CT,其中|ω∩ω'|≥d): Ddω (CT): 在ω ∩ω' 中选取d 个元素,构成集合S; 返回C'Πi∈S e^(di,Ci) e^(Di,C″) . è . . . ÷ Δi,S (0) . 这是因为 C'Πi∈S e^(di,Ci) e^(Di,C″) . è . . . ÷ Δi,S (0) =M ·e^(g,g2)ysΠi∈S e^(gri ,T (i)s) ^e(gq2(i)T (i)ri ,gs) . è . . . ÷ Δi,S (0) =M ·e^(g,g2)ysΠi∈S e^(gri ,T (i)s) ^e(gq2(i),gs)^e(T (i)ri ,gs) . è . . . ÷ Δi,S (0) 151