基于身份加密的接收者选择性打开密文攻击安全
1 引言
1.1 背景与动机
基于身份的加密(IBE)[4, 24]是公钥加密(PKE)的一种高级形式。在IBE中,发送者可以使用接收者的身份作为公钥来生成密文。接收者从其身份对应的私钥生成机构获取用户私钥。一个拥有主私钥的可信第三方。然后,接收者可以使用自己的用户私钥解密针对其身份标识生成的密文。使用身份基加密(IBE)方案的最大优点之一是,我们可以解决公钥证书分发的问题,而这一问题是在实际应用中使用公钥加密(PKE)方案时的主要难题之一。
作为身份基加密(IBE)的标准安全概念,我们通常要求一个身份基加密方案满足针对自适应身份攻击的不可区分性(IND‐ID‐CPA安全性)。我们称一个身份基加密方案满足IND‐ID‐CPA安全性,是指即使攻击者可以自适应地选择挑战身份id∗,并且能够获取除该挑战身份id∗之外其他身份的用户私钥,我们仍能保证在该挑战身份下被加密的明文的机密性。
乍一看,IND‐ID‐CPA安全性在许多应用中用于IBE时似乎是足够的。然而,作为一种自然场景,我们应考虑存在多个目标用户的情况,且攻击者可以攻破其中部分用户并获知其私钥。基于这一动机,北川和田中[16]通过将公钥加密的相同安全概念自然地引入到IBE环境中,形式化了接收者选择性打开(RSO)安全性[2, 13]。在一个发送者和多个接收者存在的场景下,即使攻击者能够攻破部分接收者并获取他们的明文和私钥,RSO安全性仍可保证未被攻破的密文的机密性。RSO安全性可以在选择明文攻击(CPA)和选择密文攻击(CCA)环境下分别定义。在实际中,我们应当考虑主动攻击者,因此相比CPA安全性,CCA安全性更为理想。北川等人[16]表明,可以从IND‐ID‐CPA安全的IBE方案构造出RSO‐CPA安全的IBE方案。然而,他们的构造对CCA不安全,迄今为止尚未构造出RSO‐CCA安全的IBE方案。
1.2 我们的贡献
本文中,我们提出了IBE的RSO‐CCA安全性的形式化定义以及首个RSO‐CCA安全的IBE方案。具体而言,我们展示了利用一个满足IND‐ID‐CPA安全的IBE方案和一个满足无界模拟可靠性和多定理零知识的非交互式零知识(NIZK)证明系统,构造RSO‐CCA安全的IBE的通用方法。后者这一原语比普通的NIZK证明系统更强。然而,已知这种更强的NIZK证明系统可以从普通的NIZK证明系统和一个单向函数[22]构造得到。
迄今为止,发送者选择性打开(SSO)安全性(即RSO安全性的对偶概念)在身份基加密(IBE)中的研究也已相当充分。粗略地说,IBE的SSO安全性意味着:攻击者A在获得一组密文后,自适应地腐蚀部分发送者并获取其明文和用于生成密文的随机数,则未被攻破的密文的机密性仍能得到保证。
1.3 技术概述
我们可以看到,我们提出的RSO‐CCA安全的IBE通用构造是北川等人提出的RSO‐CPA安全的IBE方案的扩展[16]。因此,我们首先回顾他们的方案。
北川等人提出的RSO-CPA安全的IBE方案回顾。 北川等人提出的构造RSO‐CPA安全的IBE方案的方法可以被视为对经典但强大的双重加密范式[19]的一种扩展。现在,我们解释他们的IBE方案 Π′,其身份空间ID和明文空间为{0,1}。下文中,令 Π为一个IND‐ID‐CPA安全的IBE方案,其身份空间 ID为 ×{0,1},明文空间为{0, 1}。
(1) Π′的设置算法(用于生成公共参数和主私钥)与 Π的相同。
(2) 在 Π′的密钥生成算法中,当为身份标识id ∈ID生成用户私钥SKid时,我们首先均匀随机地采样一个比特 α ∈{0, 1}。然后,我们为底层身份基加密方案 Π中的身份(id α)生成一个用户私钥skid α,并设SKid :=(α, skid α)。
(3) 在 Π′的加密算法中,当在身份id ∈ ID下加密明文 m ∈ {0, 1}时,我们对 i ∈{0, 1}的两种情况,均在底层身份基加密方案 Π中针对身份(id i)生成密文 ci of m,并将 c:=(c0,c1)作为 Π′的密文。
(4) 在Π′的解密算法中,当使用用户私钥 SKid =(α, skid α)对密文 c=(c0,c1)进行解密时,我们使用skid α对 cα进行解密。
上述身份基加密方案 Π′实现了用户私钥的非承诺性质。非正式地说,身份基加密方案的非承诺性质确保我们能够利用陷门信息和一个身份标识生成一个关于明文无任何信息的伪密文。此外,在给定陷门信息、伪密文以及任意明文的情况下,我们可以生成一个伪私钥,该伪私钥可将伪密文解密为该明文。
作为一项安全性要求,真实密文与真实私钥的联合分布必须与伪密文与伪私钥的联合分布不可区分。
具体而言,在上述方案中,为在身份id下生成一个伪密文ce=(ce0,ce1),我们计算ceα 作为在(id α)下对0加密的密文,以及ce1⊕α 作为在(id 1 ⊕ α)下对1加密的密文,其中 α ∈{0, 1}是随机均匀选择的。此处,陷门信息为 α,且该伪密文ce 不依赖于任何明文。接着,为在身份id下生成一个针对任意给定明文m的伪私钥fSKid,我们设置SKid:=(α ⊕m, skid α ⊕m)。我们可以看出,上述伪密文ce 可以通过上述伪私钥fSKid解密为给定的明文 m。此外,该伪私钥fSKid可用于正确解密任何真实密文。关于其安全性,由于底层IBE 方案 Π 的IND‐ID‐CPA安全性,上述伪密文与真实密文不可区分。此外,由于 α的随机性,上述伪私钥与真实私钥不可区分。
已知具有私钥非承诺性质的公钥加密可推出满足RSO‐CPA安全的公钥加密[13]。通过类似论证,我们可证明 Π′由于其用户私钥的非承诺性质,满足RSO‐CPA安全性。
如何将RSO-CPA安全性升级为RSO-CCA安全性。 基于上述满足RSO‐CPA安全的IBE方案,我们采用萨哈伊提出的技术构造RSO‐CCA安全的IBE方案[21]。简而言之,萨哈伊的技术是一种通过使用满足一次性模拟可靠性的NIZK证明系统,将满足IND‐CPA安全的公钥加密方案转换为满足IND‐CCA安全的公钥加密方案的方法。
有人可能会认为,通过上述技术将RSO‐CPA安全的IBE 方案转换为RSO‐CCA安全的IBE方案是显而易见的。事实上,原、北川、松田、花岡和田中[9, 10]表明,可以从满足IND‐CPA安全的PKE方案和满足一次性模拟可靠性的NIZK证明系统构造出RSO‐CCA安全的PKE方案。然而,在IBE环境中存在一个技术上的细微问题。具体而言,在PKE环境中,每个用户可以在密钥生成阶段将其公钥的一部分设为自己独立的NIZK证明系统的公共参考字符串。问题在于,在IBE环境中,每个用户不能拥有自己的公钥,因此必须共享在设置阶段生成的NIZK证明系统的公共参考字符串。因此,我们无法直接通过萨哈伊的技术获得RSO‐CCA安全的IBE方案。
我们发现,通过要求NIZK证明系统具备称为无界模拟可靠性和多定理零知识的额外性质,可以解决上述问题。简而言之,之所以能解决上述问题,是因为基于这两项性质,我们可以在同一个公共参考字符串下生成多个证明,以确保身份基加密方案的CCA安全性。已知满足这两项性质的NIZK证明系统可以从一个(普通)NIZK证明系统、一个伪随机生成器以及一个伪随机函数[22],构造出来,也就是说,可以从一个(普通)NIZK证明系统和一个单向函数[5, 12]构造出来。
上述情况下,我们考虑的是仅具有明文空间{0,1}的选择密文攻击下的相关密钥安全性(RSO‐CCA)安全的身份基加密(IBE)方案。然而,除了底层非交互式零知识证明系统(NIZK)的证明生成之外,我们可以通过并行使用单比特构造来扩展明文空间。详见第4.3节。
1.4 相关工作
贝尔尔、道斯利、沃特斯和伊莱克 [2]提出了PKE的RSO‐CPA安全性,并证明在存在抗碰撞哈希函数的情况下,IND‐CPA安全性与RSO‐CPA安全性之间存在分离。哈扎伊、帕特拉和瓦林斯基 [13]表明,接收者非承诺加密(RNCE)——一种对私钥具有特殊非承诺性质的公钥加密——可推出满足RSO‐CPA安全的公钥加密。贾、卢和李[15]提出了公钥加密的RSO‐CCA安全性,并表明可通过不可区分混淆器、伪随机生成器以及可穿孔伪随机函数构造满足RSO‐CCA安全的公钥加密方案。黄、赖、陈、欧、彭和李[11]提出了基于决策性Diffie‐Hellman(DDH)和决策性合数剩余性(DCR)假设的满足RSO‐CCA安全的公钥加密方案。此外,他们还表明,可通过满足主私钥相关密钥安全性的身份基加密(IBE)方案构造满足RSO‐CCA安全的公钥加密方案。原等人[9]提出了RNCE的CCA安全性,并表明满足CCA安全的RNCE可推出满足RSO‐CCA安全的公钥加密。此外,他们提出了一种基于满足IND‐CPA安全的公钥加密方案以及满足一次性模拟可靠性的NIZK证明系统的通用构造方法来实现满足CCA安全的RNCE,同时也提出了一种基于DDH假设的具体构造方法。此外,在工作 [10],中,他们还给出了一种高效扩展其基于DDH构造的明文空间的方法。杨、赖、黄、欧、徐和Susilo[26]研究了在多挑战设置下构造满足RSO‐CCA安全的公钥加密方案的可能性与不可能性结果。卢、原和田中[18]表明,可基于计算性Diffie‐Hellman (CDH)假设或带噪声学习奇偶性(LPN)假设构造满足RSO‐CCA安全的公钥加密方案。
1.5 组织结构
本文其余部分组织如下:在第2节中,我们回顾密码学原语的符号说明和定义。在第3节中,我们形式化了IBE的RSO‐CCA安全性。在第4节中,我们展示了满足RSO‐CCA安全的IBE的通用构造,该构造基于IND‐ID‐CPA安全的IBE方案以及满足无界模拟可靠性和多定理零知识的NIZK证明系统。在第5节中,我们总结了本文并讨论了未来工作。
2 预备知识
2.1 符号说明
在本文中, x← X表示从有限集合 X中均匀随机地选取一个元素 x。 y ← A(x;r)表示概率算法A在输入 x和随机性r下输出 y,当我们无需显式写出内部随机性时,简记为 y ← A(x)。此外, x:= y表示 x由 y定义。 λ表示安全参数。若函数 f(λ)是关于 λ的可忽略函数,则对于任意常数 c> 0, f(λ)趋向于0的速度比 1/λ^c 更快。negl(λ)表示某个未指定的可忽略函数。PPT表示概率多项式时间。若 n是一个自然数,则[n]表示整数集合{1,· · · n}。若m=(m1,· · · mn)是一个 n维向量,则mJ表示子序列( mj)j ∈J,其中 J ⊆[n]。
2.2 基于身份的加密
一个具有明文空间M和身份空间ID的基于身份的加密(IBE)方案 Π由以下四个概率多项式时间算法组成:(Setup,KG,Enc,Dec)。
- Setup : 设置算法在给定安全参数 1^λ的情况下,输出公共参数pp和主私钥msk。
- KG : 密钥生成算法,给定主私钥msk和一个身份标识id ∈ ID,输出一个用户私钥skid。
- Enc : 加密算法,给定公共参数pp、身份标识id ∈ ID和明文m ∈ M,输出密文 c。
- Dec : 解密算法,给定公共参数pp、用户私钥skid和密文 c,输出明文 m ∈{⊥} ∪M。
对于 Π的正确性,我们要求对所有 λ ∈ N、id ∈ID、 m ∈M以及 (pp, msk) ← Setup(1^λ),Dec(pp, KG(msk,id),Enc(pp, id m)) = m成立。
接下来,我们为身份基加密(IBE)方案定义IND‐ID‐CPA安全性。
定义1 (IND‐ID‐CPA安全性)
设 n:= n(λ)是 λ的一个多项式。令ID和M分别为身份基加密方案 Π=(Setup, KG,Enc,Dec)的身份空间和明文空间。考虑挑战者与攻击者A之间进行的如下游戏。
(1) 挑战者随机选择一个挑战比特 b←{0,1},并生成公共参数和主私钥(pp,msk) ← Setup(1^λ)。接着,挑战者将pp发送给攻击者A,并准备一个私钥列表Lsk:= ∅。在此步骤之后,攻击者A可以自适应地进行密钥生成查询。
- 密钥生成查询 : 攻击者A向挑战者发送一个身份id。挑战者检查是否存在skid,使得(id,skid) ∈ Lsk成立。如果情况如此,那么挑战者将skid返回给攻击者A。否则,挑战者将skid ← KG(msk, id)返回给攻击者A,并将(id, skid)添加到列表Lsk中。
(2) 攻击者A向挑战者发送(id∗ i,0,m∗ i,1)i ∈[n]。此处要求对于所有i ∈[n],|m∗ i,0| = |m∗ i,1| 以及(id∗ i) ∉ Lsk。挑战者对所有 i ∈[n]计算c∗ i ←Enc(pp, id∗ i,m∗ i,b),并将密文c∗:=(c∗ i) i ∈[n]返回给攻击者A。在此步骤之后,攻击者A仍可进行除id ∈{id∗ i} i ∈[n]以外的身份标识的密钥生成查询。
(3) 攻击者A输出一个比特 b′ ∈{0,1}。
在上述游戏中,我们定义攻击者A的优势为
$$
\text{Adv}_{n,\Pi,A}^{\text{ind-id-cpa}}(\lambda) := 2 \cdot \Pr[b = b’] - 1
$$
我们说 Π是IND-ID-CPA安全的,如果对于任意多项式 n= n(λ)和任意概率多项式时间攻击者A,均有Adv^{ind-id-cpa}_{n,\Pi,A}(λ)= negl(λ)成立。
本文中,为了使我们的证明更加简洁,我们引入了考虑攻击者进行多个挑战查询的IND‐ID‐CPA安全性定义。我们注意到,除了基于挑战查询次数的多项式规约损失外,我们的定义与 [4] 中提出的原始定义是等价的。
2.3 非交互式零知识证明系统
设R是一个可高效计算的二元关系,且L:={x | ∃w s.t. (x,w) ∈ R}。L的一个非交互式零知识(NIZK)证明系统 Φ由以下五个概率多项式时间算法(CRSGen,Prove,Verify, SimCRS, SimPrv)组成。
- CRSGen : 公共参考字符串(CRS)生成算法,给定一个安全参数1^λ,输出一个公共参考字符串crs。
- Prove : 证明算法,在给定crs、一个陈述x ∈ L以及表明x ∈ L成立的证据 w的情况下,输出一个证明 π。
- Verify : 验证算法,给定一个CRS crs、一个陈述x和一个证明 π,输出1(表示“接受”)或0(表示“拒绝”)。
- SimCRS : 模拟器的CRS生成算法,给定一个安全参数1^λ,输出一个模拟CRS crs和一个陷门td。
- SimPrv : 模拟器的证明算法,在给定陷门td和一个(可能为假的)陈述 x的情况下,输出一个模拟证明 π。
对于 Φ的正确性,我们要求对所有 λ ∈ N、crs ← CRSGen(1^λ)以及陈述/证据对(x,w) ∈ R,Verify(crs, x, Prove(crs, x,w)) = 1成立。
接下来,我们定义NIZK证明系统的安全性概念:无界模拟可靠性和多定理零知识性。
定义2(无界模拟可靠性)
我们考虑挑战者与攻击者 A之间关于一个NIZK证明系统 Φ=(CRSGen,Prove,Verify, SimCRS, SimPrv)的如下游戏。
(1) 挑战者生成 ←SimCRS(λ),将crs发送给攻击者A,并准备一个列表L_{s-sound} := ∅。在此步骤之后,攻击者A可以自适应地进行模拟证明查询。
- 模拟证明查询 : 攻击者A向挑战者发送陈述x和长度。挑战者将 π← SimPrv(td, x)返回给攻击者A并将(x, π) 添加到列表L_{s-sound}中。
(2) 攻击者A输出一个由语句和证明组成的一对(x∗, π∗)。
在上述游戏中,我们定义攻击者A的优势为
$$
\text{Adv} {\Phi,A}^{\text{s-sound}}(\lambda) := \Pr[x^ \notin L \land \text{Verify}(crs, x^ , \pi^ ) = 1 \land (x^ , \pi^*) \notin L {s-sound}]
$$
我们说 Φ满足无界模拟可靠性,如果对于任意概率多项式时间攻击者A,Adv^{s-sound}_{\Phi,A}(λ)= negl(λ)成立。
定义3(多定理零知识)
我们考虑挑战者与攻击者A之间关于一个NIZK证明系统 Φ=(CRSGen,Prove,Verify, SimCRS, SimPrv)的如下游戏。
(1) 挑战者随机选择一个挑战比特 b←{0,1}。
- 如果 b= 0,则挑战者计算crs ← CRSGen(1^λ)。
- 否则,挑战者计算(crs, td) ← SimCRS(1^λ)。然后,挑战者将crs发送给攻击者A。在此步骤之后,攻击者A可以自适应地进行证明查询。
- 证明查询 : 攻击者A发送一个包含陈述和见证的对(x,w) ∈ R。如果 b= 0,则挑战者计算一个证明 π ← Prove(crs, x, w)。否则,挑战者计算一个证明 π ← SimPrv(td, x)。然后,挑战者将证明 π返回给攻击者A。
(2) 攻击者A输出一个比特 b′ ∈{0,1}。
在上述游戏中,我们定义攻击者A的优势为
$$
\text{Adv}_{\Phi,A}^{\text{zk}}(\lambda) := 2 \cdot |\Pr[b = b’] - 1/2|
$$
我们称 Φ满足多定理零知识性,如果对于任意概率多项式时间攻击者A,均有Adv^{zk}_{\Phi,A}(λ)= negl(λ)成立。
备注 4。 满足无界模拟可靠性与多定理零知识的NIZK证明系统比满足标准可靠性与零知识的普通NIZK证明系统更强。然而,已知前者可以通过一个普通的NIZK证明系统、一个伪随机生成器和一个伪随机函数[22],来构造,即通过一个(普通)NIZK证明系统和一个单向函数[5, 12]来构造。
3 RSO‐CCA 安全的身份基加密
在本节中,我们介绍IBE的RSO‐CCA安全性。
定义5(RSO‐CCA安全性)
设 n:= n(λ)为一个多项式。设 Π=(Setup,KG,Enc,Dec)是一个具有身份空间ID和明文空间M的身份基加密方案。令S为一个概率多项式时间模拟器。我们考虑挑战者与攻击者A之间的真实游戏,以及挑战者与模拟器S之间的理想游戏,如下所示。
真实游戏
(1) 挑战者计算公共参数和主私钥(pp,msk) ← Setup(1^λ),并将pp发送给攻击者A。然后,挑战者准备一个密钥生成列表L := ∅。在此步骤之后,攻击者A可以自适应地发起以下密钥生成和解密查询。
- 密钥生成查询 : 攻击者A向挑战者发送身份标识。挑战者执行以下步骤:
- (a) 挑战者首先检查是否存在某个skid,使得(id, skid) ∈ L成立。如果不存在,则挑战者为身份id执行密钥生成算法生成用户私钥skid ← KG(msk, id),并将(id, skid)添加到L中。
-
(b) 挑战者将skid返回给A。
-
解密查询 : A向挑战者发送(id, c)。挑战者按以下步骤进行处理:
- (a) 挑战者检查是否存在某个skid,使得(id, skid) ∈ L成立。如果不存在,则挑战者按照响应密钥生成查询的步骤(a)的方式继续执行。
- (b) 挑战者计算 m ← Dec(pp, skid, c)并将 m返回给A。
(2) 攻击者A发送 n挑战身份(id∗ i) i ∈[n]和一个明文分布Dist(以概率电路形式)over Mn发送给挑战者。此处,攻击者A不允许将用于密钥生成查询的身份id作为挑战身份,并且要求对于所有挑战身份(id∗ i)i ∈[n],均有id∗ i ≠id∗ j(i ≠ j)成立。挑战者从分布Dist中采样挑战明文(m∗ i)i ∈[n]←,利用加密算法计算所有 i ∈[n]对应的挑战密文 c∗ i ←Enc(pp, id∗ i,m∗ i),并将c∗:=(c∗ i) i ∈[n]返回给攻击者A。在此步骤中,挑战者还需检查对于所有挑战身份(id∗ i) i ∈[n],是否均有(id∗, ∈) ∈ L成立。对于满足(id∗ i, ∗) ∉ L的索引 i ∈[n],挑战者计算skid∗ i ← KG(msk, id∗ i),并将(id∗ i, skid∗ i)添加到L中。在此步骤之后,攻击者A仍可进行除id ∈{id∗ i} i ∈[n]之外的身份标识密钥生成查询。此外,攻击者A仍可进行除(id, c) ∈{(id∗ i)} i ∈[n]之外的身份标识-密文对的解密查询。
(3) 攻击者A向挑战者发送一个索引集合J ⊆[n]。挑战者使用列表L中的用户私钥skid∗ j 设置sk∗J :=(skid∗ j)j ∈J,并将(m∗J, sk∗J)返回给攻击者A。在此步骤之后,攻击者A仍然可以发起除id ∈{id∗ i} i ∈[n]之外的身份标识密钥生成查询,以及除(id, c) ∈{(id∗ i)} i ∈[n]和满足{id, c)=(id∗ j, ∗)且 j ∈J的密文以外的解密查询。
(4) 攻击者A向挑战者发送输出 ∈{0,1}∗。
(5) 挑战者输出实际输出real:=((id∗ i) i ∈[n], (m∗ i) i ∈[n], Dist, J, out)。
理想游戏
(1) 挑战者向S发送 1^λ。
(2) S向挑战者发送 n个挑战身份(id∗ i) i ∈[n]和一个在M^n上的明文分布Dist。挑战者从明文分布Dist中采样挑战明文(m∗ i) i ∈[n] ←。
(3) S向挑战者发送索引集合J ⊆[n]。挑战者将m∗J 返回给S。
(4) S向挑战者发送out ∈{0, 1}∗。
(5) 挑战者输出理想输出:=((id∗ i) i ∈[n], (m∗ i)i ∈[n], Dist, J, out)。
我们说 Π满足RSO-CCA安全性,如果对于任意多项式n= n(λ)和任意概率多项式时间攻击者A,存在一个概率多项式时间模拟器S,使得对于任意概率多项式时间区分器D,
$$
\text{Adv} {n,\Pi,A,S,D}^{\text{rso-cca}}(\lambda) := |\Pr[D(\text{out} {\text{real}}) = 1] - \Pr[D(\text{out}_{\text{ideal}}) = 1]| = \text{negl}(\lambda)
$$
成立。
备注6. 为简便起见,我们在定义中仅考虑攻击者进行的非自适应打开查询。也就是说,攻击者只能一次性地进行一次打开查询J ⊆[n]。然而,即使考虑攻击者的自适应打开查询,我们所构造的RSO-CCA安全的IBE仍然保持安全。
基于身份加密的接收者选择性打开密文攻击安全
4 我们构造的选择密文攻击下的相关密钥安全性身份基加密方案
在本节中,我们将展示如何基于一个IND‐ID‐CPA安全的 IBE方案以及一个满足无界模拟可靠性和多定理零知识的 NIZK证明系统来构造RSO‐CCA安全的IBE方案。首先,在第 4.1节中,我们描述了明文空间为单比特的构造方法。接着, 在第4.2节中,我们给出了该构造的RSO‐CCA安全性证明。最 后,在第4.3节中,我们提出了明文空间为多比特的构造方案。
4.1 描述
在本节中,我们形式化地描述了明文空间为{0, 1}的RSO‐CCA安全的 IBE构造。设 Π=(Setup,KG,Enc,Dec)是一个身份基加密方案,其 身份空间ID ×{0, 1},明文空间为{0, 1}。令RΠ为加密算法Enc的随机 性空间。令Φ=(CRSGen,Prove,Verify, SimCRS, SimPrv)是针对列 表Leq的一个非交互式零知识证明系统,该系统定义如下
$$
\left{
\begin{array}{l}
(pp, id, c_0, c_1) \
\exists (m, r_0, r_1) \in {0, 1} \times (R_\Pi)^2 \text{ s.t. } \
c_0 = \text{Enc}(pp, (id, 0), m; r_0) \land \
c_1 = \text{Enc}(pp, (id, 1), m; r_1)
\end{array}
\right}.
$$
然后,我们构造一个身份基加密方案 Π′=(Setup′, KG′, Enc′, Dec′),其身份空间ID和明文空间为{0,1},如图1所示。注意, 由于 Π和 Φ的正确性, Π′的正确性是显而易见的。
在第4.2节中,我们证明了以下定理成立。
定理7
如果 Π是一个IND-ID-CPA安全的IBE方案,且 Φ是一个 满足无界模拟可靠性和多定理零知识的NIZK证明系统,则 Π′满足 RSO-CCA安全性。
实例化。 如第1.2节所述,我们可以基于配对群或格上的 困难性假设构建一个IND‐ID‐CPA安全的IBE方案和一个(普 通)NIZK证明系统。例如,在DLIN假设下,我们可以构造 一个IND‐ID‐CPA安全的IBE方案[25]和一个(普通) NIZK证明系统[7, 8]。此外,在LWE假设下,我们可以构造 一个IND‐ID‐CPA安全的IBE方案[1]和一个(普通)NIZK证 明系统[20]。这些NIZK证明系统可以通过[22]的转换技术增 强为具有无界模拟可靠性和多定理零知识性的证明系统,且无 需依赖额外的假设。因此,我们获得了RSO‐CCA安全的IBE 的具体基于配对和基于格的实例化。
4.2 安全性证明
在本节中,我们给出定理7的证明。
定理7的证明。 设 n= n(λ)> 0为任意多项式,表示挑战身 份的数量。令攻击者A为任意攻击 Π′的RSO‐CCA安全性的概 率多项式时间敌手。首先,我们为攻击者A构造如下在理想游 戏中运行的概率多项式时间模拟器S。
(1) 在理想游戏中收到挑战者发送的 1^λ后,S计算(pp, msk) ← Setup(1^λ) 和 (crs, td) ← SimCRS(1^λ),并准备其自身的密钥生 成列表 LS := ∅。在此列表中,S将存储形如(id, SK′id)的配对, 其中SK′id具有以下形式(α, skid,0, skid,1, id),且 α ∈{⊥, 0, 1},S将在模拟过程中使用这些配对。我们称SK′id为扩展用户私 钥。然后,S设置PP :=(pp, crs)并将PP发送给攻击者A。此步 骤完成后,攻击者A可开始发起密钥生成和解密查询。对于攻击 者A的每一次查询,S按如下方式响应。
- 密钥生成查询 当攻击者A发送一个身份标识id时,S执行如 下操作:
- (a)S检查是否存在条目(id, SK′id) ∈ LS,其中 SK′id =(α, skid,0, skid,1, id)。
- (i)如果LS中不存在这 样的条目,则S首先采样α←{0, 1},并计算skid 0← KG(msk, (id, 0))和skid 1← KG(msk, (id, 1))。接着, S设置SK′id :=(α, skid,0, skid,1, id),并将(id, SK′id)添 加到列表L中。
- (ii)如果该条目已存在但 α= ⊥,则S重 新采样 α←{0, 1},并更新SK′id :=(α, skid,0, skid,1, id)。
-
(b)S使用SK′id :=(α, skid,0, skid,1, id)返回 SKid :=(α, skid α, id)给攻击者A。
-
解密查询 当攻击者A发 送(id C=(c0,c1, π))时,S执行如下操作:
- (a)S检查是否 存在条目(id , SK′id) ∈ LS,其中SK′id =(α, skid,0, skid,1, id)。如果不存在,则S计算skid 0← KG(msk, (id, 0))和skid 1← KG(msk, (id, 1))(无需采样 α ←{0, 1}),然后设置SK′id :=(⊥, skid,0, skid,1, id),并将(id , SK′id)添加到列表L中。
- (b)S计算Verify(crs, (pp, id c0, c1) π)。如果Verify输出0,则S返回 ⊥给攻击者A。
- (c)S返回 m← Dec(pp, skid 0,c0)给攻击者A。
(2) 当攻击者A发送 n个挑战身份(id∗ i)i ∈[n]和一个明文分布 Dist时,S将它们发送给挑战者。然后,S执行以下步骤:
- (a) 对于所有的 i ∈[n],S检查是否存在SK′id∗ i使得(id∗ i, SK′id∗ i) ∈ LS成立,其中SK′id∗ =(αi, skid∗ i,0, skid∗ i,1, id∗ i)。接着,S在响应密钥生成查询时,以与步骤(a).(i)和 (a).(ii)相同的方式继续执行。
- (b) 对于所有的 i ∈[n],S根 据SK′id∗ i中的 αi ∈{0, 1},计算c ∗ i,αi ← Enc(pp, (id∗ i, αi), 0)和c ∗ i,1⊕αi ←Enc(pp, (id∗ i, 1⊕αi), 1)。
- (c) 对于所有的 i ∈[n],S设置 x ∗ i:=(pp, id∗ i, c ∗ i,0,c ∗ i,1),计算π ∗ i ← SimPrv(td x ∗ i),并设置 C ∗ i:=(c ∗ i,1, π ∗ i)。
- (d) S将密文 C∗:=(C ∗ i)i ∈[n]返回给攻击者A。在此步骤之后,当攻击者 A发起密钥生成查询和解密查询时,S以上述相同方式予以 回应。
(3) 当攻击者A发送一组索引集合J ⊆[n]时,S将J 发送给挑战者。在收到来自挑战者的m∗J =(m∗ j)j ∈J后,S 执行以下操作:
- (a) 对于所有 j ∈J,S使用SK′id∗ =(αj, skid∗ j,0, skid∗ j,1, id∗ j) ∈ LS,设置SKid∗ j:=(αj ⊕ m ∗ j, skid αj ⊕m ∗ j, id ∗ j)j ∈J,并将(m∗J, SK∗J)返回给攻击者A。在此步骤之后,当攻击者A发起密 钥生成查询和解密查询时,S以上述相同方式予以回应。
(4) 当攻击者A输出out ∈{0, 1}∗并终止时,S将out返回给 挑战者并终止。
这里,我们引入以下游戏{Gamei} 5 i=0。
Game0: 此游戏与真实游戏完全相同。该攻击者A 详细描述如下。
(1) 挑战者生成 Π(pp,msk) ← Setup(1^λ) 的公共参数和 主私钥,以及 Φcrs ← CRSGen(1^λ) 的CRS。然后,设 置 PP:=(pp,crs),将 PP 发送给攻击者A,并准备一个密 钥生成列表 L := ∅。对于攻击者A的密钥生成和解密查询, 挑战者按如下方式响应:
-
密钥生成查询 当攻击者A发起一个密钥生成查询id时,挑战者 检查是否(id, SKid) ∈ 若L中存在某个SKid,则成立。否则,它将从 α ← {0, 1}中随机采样,并通过 Π skid α ← KG(msk,(id α)) 生成一个用户私钥。接着,设置SKid:=(α, skid α, id), 将SKid发送给攻击者A,并将(id,SKid)添加到列表L中。
-
解密查询 当攻击者A对密文C(id C)发起解密查询时,挑战 者按如下步骤进行:
- (a) 它首先检查是否存在某个id,SKid) ∈ L 满足条件。如果不存在,则以响应密钥生成查询时的相同方式继 续执行。
- (b) 它解析 C:=(c0, c1, π) 并设置 x:=(pp, id c0, c1)。
- (c) 它计算 Verify(crs x, π)。如果 Verify 输出 0,则返回 ⊥给攻击者A。
- (d) 它计算 m← Dec(pp , skid α, c α) 并将 m返回给攻击者A。
(2) 当攻击者A发送 n挑战身份 (id∗ i)i ∈[n]以及一个关于 M的明文分布Distn时,挑战者从(m∗ i)i ∈[n] ←Dist中采样, 并检查所有挑战身份(id∗ i)i ∈[n]是否满足(id∗ i, ∗) ∈L。对于 满足(id∗ i, ∗) ∉L 的索引 i ∈[n],它以响应密钥生成查询 时的相同方式处理。然后,它按以下步骤进行:
- (a)对于所有 i ∈[n],挑战者采样随机数 r ∗ i,0, r ∗ i,1 ← RΠ and计算 c ∗ i,0 ← 加密算法(公共参数,(身份标识∗ i, 0) m∗ i; r ∗ i,0) and c ∗ i,1 ← 加密算法(公共参数,(身份标识∗ i, 1) m∗ i; r ∗ ,1).
- (b)对于所有i ∈[n],挑战者设置x ∗ i:=(pp, id∗ i, c ∗ i,0, c ∗ i,1) and w ∗ i:=(m∗ i, r0 i, r1 i),计算 π ∗ i ← 证明(crs x ∗ i, w ∗ i),并设置 C ∗ i:=(c ∗ i,0, c ∗ i,1, π ∗ i)。
- (c)挑战者设置 C∗:=(C ∗ i)i ∈[n],并将 C∗ 发送给攻击 者A。在此步骤之后,当攻击者A提出密钥生成和解密 查询时,挑战者以与上述相同的方式进行回答。
(3) 当攻击者A发送一组索引J ⊆[n]时,挑战者从列表 L中获取存储的SK∗J:=(SKid∗ j)j ∈J,并将其返回给攻击者 A。在此步骤之后,当攻击者A进行密钥生成和解密查询 时,挑战者以与上述相同的方式进行响应。
(4) 当攻击者A输出输出out ∈{0,1}∗并终止时,挑战者 输出outreal:=((id∗ i)i ∈[n],(m∗ i)i ∈[n], Dist, J, out)。
Game1: 本游戏与 Game0相同,仅作如下修改。
- (1) 挑战者通过执行 (crs,td) ← SimCRS(1^λ) 来生成 Φ 的 CRS crs。
- (2) 对于所有 i ∈[n],当计算挑战密文C ∗ i=(c ∗ i,0,c ∗ i,1, π ∗ i) 时,挑战者生成一个模拟证明 π ∗ i ← SimPrv(td,(pp, id∗ ,c ∗ i,0,c ∗ i, 1))。
Game2: 本游戏与 Game1相同,只是在计算挑战密文 C ∗ i =(c ∗ i,0,c ∗ i,1, π ∗ i) 时,挑战者进行如下计算
$$
c^ _{i,1\oplus\alpha_i} \leftarrow \text{Enc}(pp,(id^ i, 1 \oplus \alpha_i), 1 \oplus m^ _i)
$$
而不是
$$
c^ {i,1\oplus\alpha_i} \leftarrow \text{Enc}(pp,(id^ _i, 1 \oplus \alpha_i),m^ _i)
$$
对于所有 i ∈[n]。
Game3: 此游戏与Game2相同,仅作如下修改。
- (1) 我们改变了列表L的作用。更准确地说,挑战者在列表L中 存储扩展用户私钥SK′id:=(α, skid,0, skid,1, id),而不是普 通的用户私钥SKid = (α, skid α, id),其中 α ←{0, 1}, skid 0 ← KG(msk, (id, 0)),且skid 1← KG(msk, (id, 1))。请注意,这仅仅是一个概念上的改变,因此不会影响攻击者A的视 图。
- (2) 我们改变回答密钥生成查询 id 的方式,使S在理想游 戏中响应密钥生成查询时采用该方法。请注意,这只是一个概念上的改变,因此不会影响攻击者A的 视图。
- (3) 我们改变了解密查询(id C=(c0, c1, π))的应答方式, 使S在响应 理想游戏 中的解密查询时按此方式进行。通过这一改变,当回应攻击者A的解密查询时,对于 攻击者A未直接发起密钥生成查询的身份标识id,不 再采样 α来生成对应的扩展用户私钥。因此,在本游 戏及后续游戏中,若攻击者A对挑战身份id∗ i发起解密 查询(id∗ i, C),挑战者会在计算针对该身份标识id∗ i的挑 战密文 C ∗ i之前立即生成 αi。
游戏4: 此游戏与游戏3完全相同,只是进行了以下修改。挑战者 对所有挑战身份(id∗ i) i ∈[n]使用 αi ⊕m ∗ i代替 αi。也就是说,对 于所有 i ∈[n],在计算挑战密文 C ∗ i=(c ∗ i,1, π ∗ i)时,挑战者计 算c ∗ i,αi ⊕m ∗ i ← Enc(pp, (id∗ i, αi ⊕m ∗ i) m ∗ i,1⊕(αi ⊕m ∗ i) ← Enc(pp, (id∗ i, 1 ⊕(αi ⊕ m ∗ i)。此外,在响应打开查询J ⊆[n]时,挑战者向攻击者A提供索引集合J对应的用户私钥 SKid ∗ j = (αj ⊕ m∗ j, skid αj ⊕m ∗ j, id ∗ j)j ∈J。
Game5: 此游戏与挑战者和S所进行的理想游戏完全相同。
设D为针对攻击者A和上述模拟器S的任意PPT区分器。令 preal表示在真实游戏中,挑战者输出outreal时,D输出1的概 率。同样,令pideal表示在理想游戏中,挑战者输出outideal时, D输出1的概率。
对于所有 i ∈[n],设out′i为挑战者在Gamei中最终输出的值, 并设Ti为在Gamei中给定out′i时D输出1的事件。此处,根据定义,p real=Pr[T0]和pideal=Pr[T5]成立。因此,我们可以将Advrso‐ccan,Π′, A,S,D(λ)估计为
$$
\text{Adv} {n,\Pi’,A,S,D}^{\text{rso-cca}}(\lambda) = |\Pr[T_0] - \Pr[T_5]| \leq \sum {i=0}^{4} |\Pr[T_i] - \Pr[T_{i+1}]|.
$$
接下来需要说明如何对每个 | Pr[Ti]−Pr[Ti+1]| 进行上界估 计。由于空间限制,我们将在论文全文中形式化地给出这些证 明。具体而言,我们在其中给出了以下引理。
- 存在一个针对 Φ的多定理零知识的PPT攻击者B1,使得 | Pr[T0]−Pr[T1]| =AdvzkΦ,B1(λ)。
- 存在一个针对 Π的IND‐ID‐CPA安全性的PPT攻击者 B2,使得 | Pr[T1]−Pr[T2]| = Advind‐id‐cpan,Π,B2(λ)。
- 存在一个针对 Φ的无界模拟可靠性的PPT攻击者B3, 使得 |Pr[T2] − Pr[T3]| ≤ Advs‐soundΦ,B3(λ)。
- | Pr[T3] −Pr[T4]| = 0成立,因为 α i是均匀随机选取的, 因此 α i ⊕ m ∗ i 也是均匀随机分布的。
- | Pr[T4] −Pr[T5]| = 0成立,因为从攻击者A的视角来看, Game4和Game5是完全相同的。
综上所述,我们得到
$$
\text{Adv} {n,\Pi’,A,S,D}^{\text{rso-cca}}(\lambda) \leq \sum {i=0}^{4} |\Pr[T_i] - \Pr[T_{i+1}]| \leq \text{Adv} {\Phi}^{\text{zk},B_1}(\lambda) + \text{Adv} {n,\Pi,B_2}^{\text{ind-id-cpa}}(\lambda) + \text{Adv}_{\Phi,B_3}^{\text{s-sound}}(\lambda).
$$
在本证明的开始, n、A 和 D 被任意选择。因此,由于 Π 的IND‐ID‐CPA安全性以及 Φ的无界模拟可说服性和多 定理零知识性,对于任意多项式 n 和概率多项式时间敌手 A,存在一个概率多项式时间模拟器S,使得对于任意概率多 项式时间区分器D,Advrso‐ccan,Π′,A,S,D(λ) = negl(λ)成立。 因此, Π′ 满足RSO‐CCA安全性。 □(定理7)
4.3 具有多比特明文空间的选择密文安全可回收密钥 安全的基于身份的加密
这里,利用一个IND‐ID‐CPA安全的IBE方案和一个满足无界模 拟可靠性与多定理零知识的NIZK证明系统,我们展示了具有多 比特明文空间的RSO‐CCA安全的IBE方案的通用构造。设 ℓ= ℓ (λ) > 0为一个多项式, Π=(Setup, KG, Enc, Dec) 是一个身份 空间ID ×[ℓ]×{0,1} 和明文空间{0, 1} 的身份基加密方案,RΠ 为 加密算法Enc的随机性空间。令 Φ= (CRSGen,Prove,Verify,SimCRS, SimPrv) 是针对L′′eq 的一个 NIZK证明系统,该系统定义如下
$$
\left{
\begin{array}{l}
(pp, id,(c_{0i}, c_{1i}) {i \in [\ell]}) \
\exists (m_i, r {0i}, r_{1i}) {i \in [\ell]} \in ({0, 1} \times (R \Pi)^2)^\ell \text{ s.t. } \
c_{0i} = \text{Enc}(pp,(id, i, 0),m_i; r_{0i}) \land \
c_{1i} = \text{Enc}(pp,(id, i, 1),m_i; r_{1i}) \
\text{for all } i \in [\ell]
\end{array}
\right}.
$$
然后,我们构造我们的方案 Π′′=(Setup′′,KG′′,Enc′′, Dec′′),其 身份空间ID和明文空间为{0,1} ℓ,如图2所述。以下定理成立。
定理8
如果 Π是一个IND-ID-CPA安全的IBE方案,并且 Φ满 足无界模拟可靠性和多定理零知识性,则 Π′′是RSO-CCA安全的。
定理8的证明与定理7的证明非常相似,因此我们在此省略。
5 结论
在本文中,我们形式化了IBE的RSO‐CCA安全性的定义,并基 于一个IND‐ID‐CPA安全的IBE方案以及满足无界模拟可靠性 和多定理零知识性的NIZK证明系统,提出了RSO‐CCA安全 IBE的通用构造。通过我们的通用构造,得到了首个基于配对 和基于格的RSO‐CCA安全的IBE方案。
我们的构造RSO‐CCA安全的IBE方案的技术似乎可以扩展 到基于属性的加密[23]场景中。然而,该技术是否能够扩展到 分层身份基加密[6, 14]场景似乎并非易事,因为我们尚不清楚 如何在保持RSO安全性的同时处理密钥委托问题。我们将此作 为一个有趣的开放性问题留给未来研究。

68

被折叠的 条评论
为什么被折叠?



