system: [SYSTEM]

user: 3. 利用LWR构建基于关键策略属性的全同态加密方案 本章节首先构造高效的基于LWR的属性全同态加密方案(以下简称LWR-ABFHE方案)。在所提出的方案中，访问策略被构建在密文中，并且用户的私钥与一组属性相关联。这随后允许在不知道实际用户数的情况下加密数据。当且仅当其私钥满足加密数据中的访问策略时，新用户才能访问加密数据。接下来，提出的LWR-ABFHE方案被正式定义如下。 3.1. LWR-ABFHE方案构造 本节提出的LWR-ABFHE方案由LWR-ABFHE. Setup (初始化)、LWR-ABFHE. Key Gen (秘钥生成)、LWR-ABFHE.Enc (加密)、LWR-ABFHE. Dec (解密)和LWR-ABFHE. Evaluate (同态评估)四部分组成。 LWR-ABFHE .Setup ( λ ， U ， k ) → ( P P ， M S K ) ：设置算法将输入：安全参数l，全部属性 U = { u 1 ， u 2 ， ⋯ ， u n } 以及系统中参与计算的用户数量k。选择一个足够大的素数q使得 q = 1 mod ( 2 λ ) ，以及一个较小的正整数p，使得 gcd ( p ， q ) = 1 。设 f ( x ) = ( x d + 1 ) ，其中d是2的次幂。令 R q = Z q [ x ] / 〈 f ( x ) 〉 是整数多项式f(x)和q模的环。选择一个均匀随机的主密钥 K 0 ← R q 和选择t个随机元素 a t ← R q (下标t表示第t个元素)，计算t个 。接下来针对U中的每个属性 { u 1 ， u 2 ， ⋯ ， u n } ，选择一对均匀随机元素 ( K i ， K i − 1 ) ← R q ，其中 K i − 1 是 R q 下 S K i 的倒数。计算 ，最后，输出如下公共参数PP和主密钥MSK。 P P = { a ， P K 0 ， { P K i } i = 1 n } M S K = { K 0 ， { K i } i = 1 n ， { K i − 1 } i = 1 n } LWR-ABFHE .KeyGen ( P P ， M S K ， D ) → ( S K D ) ：秘钥生成算法将公共参数PP，一个主私钥MSK和一个在属性U范围内的访问结构D作为输入。它首先将访问结构D转换成LSSS矩阵 ( G ， p ) ，其中矩阵 G ∈ R q n × m ，行标签 p ( i ) ∈ U ， ∀ i ∈ [ n ] 。然后，通过生成一个向量v来分配主密钥MSK的有效部分s，使得 v = ( s ， r 2 ， ⋯ ， r m ) ，其中 r 2 ， ⋯ ， r m ← R q 是随机选择的。 G v 表示根据访问结构D上线性秘密共享方案P的秘钥s的n个份额的向量。 δ i = G i ⋅ v ∈ R q ，其中 G i 表示矩阵G第i行的向量。下一步选择一个均匀随机数a和其对应的倒数 α − 1 使得 α ， α − 1 ← R q 。该算法输出与 ( G ， p ) 的描述相关联的用户的秘密密钥 S K D = ( S K 0 ， S K i ) ，其中： S K 0 = K 0 ⋅ α − 1 ∈ R q S K i = α ⋅ K i − 1 ⋅ δ i ∈ R q ， ∀ i ∈ A LWR-ABFHE .Encrypt ( M 1 ， ⋯ ， M t ， P P ， A ) → ( C T 1 ， ⋯ ， C T t ) ：加密算法采用主公钥参数PP，要加密的明文消息 M ∈ { 0 ， 1 } 以及一个授权属性集A作为输入。选取t个均匀随机的数 r t ∈ { 0 ， 1 } ，令 △ p = ⌊ q 1 p ⌋ ，其中 q 1 是明文模量，即 △ p = q 1 p − ε q 1 ， 0 ≤ ε q 1 ≤ 1 ，接下来计算密文。输出如下形式的密文 C T t = ( C t 0 ， C t i ) ，其中： C t 0 = P K 0 ⋅ r t + △ p ⋅ M t ∈ R p C t i = a t ⋅ P K i ⋅ r t ∈ R q LWR-ABFHE .Evaluate ( P P ， F ， C 1 0 ， ⋯ ， C t 0 ) → F ( C 1 0 ， ⋯ ， C t 0 ) ：同态评估算法采用公开参数PP，多项式时间计算函数F和密文 C 1 0 ， ⋯ ， C t 0 的第一分量作为输入。它在密文空间输出计算结果，使得 C t 0 ∗ = F ( C 1 0 ， ⋯ ， C t 0 ) 。 LWR-ABFHE .Decrypt ( S K D ， C t 0 ， C t i ) → ( M ∗ o r ⊥ ) ：解密算法将密文空间中的计算结果 C t 0 ∗ = F ( C 1 0 ， ⋯ ， C t 0 ) = F ( M 1 ， ⋯ ， M t ) 。利用LSSS的线性重构算法计算一组常量，如果等式 ∑ i ∈ I δ i w i = s 成立，接下来计算 M ∗ = 1 △ p ( C t 0 − S K 0 ∑ i ∈ I S K i ⋅ w i ⋅ C t i ) ，并将计算结果输出到明文空间中使得 ，否则输出解密失败符号 ⊥ 。 3.2. 正确性分析 设 ， ，由解密公式得出解密算法的正确性分析： M ∗ = 1 △ p ( C t 0 − S K 0 ∑ i ∈ I S K i ⋅ w i ⋅ C t i ) = 1 △ p ( C t 0 − S K 0 ∑ i ∈ I α ⋅ K i − 1 ⋅ δ i ⋅ w i ⋅ C t i ) = 1 △ p ( C t 0 − S K 0 ∑ i ∈ I α ⋅ K i − 1 ⋅ s ⋅ C t i ) = 1 △ p ( C t 0 − S K 0 ∑ i ∈ I α ⋅ K i − 1 ⋅ s ⋅ a t ⋅ P K i ⋅ r t ) = 1 △ p ( ( P K 0 ⋅ r t ⋅ s + △ p ⋅ M t ) − S K 0 ∑ i ∈ I α ⋅ K i − 1 ⋅ s ⋅ a t ⋅ P K i ⋅ r ) = M t + 1 △ p ( ( p q a t ⋅ K 0 + △ k 1 ) ⋅ r t ⋅ s − ∑ i ∈ I ( p q ⋅ s ⋅ a t ⋅ r t + K i − 1 ⋅ s ⋅ a t ⋅ △ k ⋅ r t ) ) = M t + 1 △ p ( △ k 1 ⋅ r t ⋅ s − ∑ i ∈ I K i − 1 ⋅ s ⋅ a t ⋅ △ k ⋅ r t ) ≤ M t + △ k 1 △ p − △ k △ p = M t + △ k 1 − △ k △ p 因为 r t ∈ { 0 ， 1 } ， 0 < △ k ， △ k 1 < 1 2 ，由以上公式可知当 时，解密公式 可以正确求出M。显然， △ k 1 − △ k 的误差范围在 △ p 2 以内时，可以保密解密的正确性。故当满足 ‖ △ k 1 − △ k ‖ ∞ c a n ≤ △ p / ( 2 ⋅ c m ) ， c m 表示环常数，详细解释见文献 [ 9 ] 。 同态运算包括同态加法和同态乘法运算，同态计算过程只计算密文的第一个分量，密文第二个分量用来区分该密文属性是否在信任区间。设 C 1 0 和 C 2 0 是两个新鲜密文的第一部分，即 C 1 0 = P K 1 ⋅ r 1 + △ p ⋅ M 1 ， C 2 0 = P K 2 ⋅ r 2 + △ p ⋅ M 2 。 同态加法： C a d d = F ( C 1 0 + C 2 0 ) = ( P K 1 ⋅ r 1 + △ p ⋅ M 1 ) + ( P K 2 ⋅ r 2 + △ p ⋅ M 2 ) = △ p ⋅ ( M 1 + M 2 ) + P K 1 ⋅ r 1 + P K 2 ⋅ r 2 同态乘法： C m u l t = F ( C 1 0 ⋅ C 2 0 ) = 1 △ p ( P K 1 ⋅ r 1 + △ p ⋅ M 1 ) ⋅ ( P K 2 ⋅ r 2 + △ p ⋅ M 2 ) = 1 △ p ( △ p 2 ⋅ M 1 ⋅ M 2 + P K 1 ⋅ P K 2 ⋅ r 1 r 2 + △ p ⋅ ( M 1 ⋅ P K 2 ⋅ r 2 + M 2 ⋅ P K 1 ⋅ r 1 ) ) = △ p ⋅ ( M 1 ⋅ M 2 ) + P K 2 ⋅ r 2 ⋅ M 1 △ p + P K 1 ⋅ r 1 ⋅ M 2 △ p + ( P K 1 ⋅ r 1 ) ⋅ ( P K 2 ⋅ r 2 ) △ p 通过以上同态加法和同态乘法计算公式不难看出评估密文和新鲜密文形式一致，设 C 1 0 和 C 2 0 的计算误差分别为 △ k 1 、 △ k 2 ，则同态加法后的密文误差为 △ k a d d = △ k 1 + △ k 2 ，因为 ‖ △ k 1 + △ k 2 ‖ ∞ can ≤ ‖ △ k 1 ‖ ∞ can + ‖ △ k 2 ‖ ∞ can ，则同态加法可以正确计算。设同态乘法的计算误差为 △ k m u l t ， δ = ( P K 1 ⋅ r 1 ) ⋅ ( P K 2 ⋅ r 2 ) △ p ，则对于同态乘法的噪音分析如下： ‖ △ k m u l t ‖ ∞ c a n ≤ ‖ ε q 1 ⋅ M 1 ⋅ M 2 ‖ ∞ c a n + ‖ △ k 1 ⋅ M 1 ‖ ∞ c a n + ‖ △ k 2 ⋅ M 2 ‖ ∞ c a n + ‖ δ ‖ ∞ c a n ≤ 4 ⋅ p 2 ⋅ ϕ ( m ) / 3 + 6 ⋅ ( B + B ′ ) ⋅ p ⋅ ϕ ( m ) / 12 + B δ = F ( B ， B ′ ) 。其中B(或者B')表示 △ k 1 (或者 △ k 2 )的标准范数的上界，那么 △ k m u l t 的分类范数本质上增长为 p ⋅ B ⋅ B ′ / △ p 。我们通过函数 F ( B ， B ′ ) 绑定了 △ k m u l t 的规范形式。所以当满足 ‖ △ k m u l t ‖ ∞ c a n ≤ F ( B ， B ′ ) ，可以保证同态乘法计算的正确性。 加密数据的细粒度访问控制：加密数据的访问控制由密文的第二部分 C t i 实现。满足访问结构D的秘钥 S K D 的任何加密数据集A的超集能够恢复计算结果。如果一个属性子集S在访问结构D中，所有包含S作为子集的属性集合也是访问结构中的一部分。例如，一个访问结构为 D = { a 1 ∩ a 2 } ，如果集合 S = { a 1 ， a 2 } 满足访问结构D，则 A = { a 1 ， a 2 ， a 3 } 也满足访问结构D。 3.3. 安全性分析 本文提出的LWR-ABFHE方案的安全性是基于Ring-LWR问题的困难硬度构建起来的。本节证明了LWR-ABFHE方案满足IND-ID-CPA(选择明文和选择id攻击下的不可区分安全)安全。证明如下： 定理3. 如果LWR问题求解困难假设成立，则上节提出的LWR-ABFHE方案满足IND-ID-CPA(选择明文和选择id攻击下的不可区分安全)安全。 证明：下面我们通过下述随机预言模型游戏进行。令 Adv Gamei [ Α ] 表示攻击者A在游戏Gamei中的优势，B表示挑战者。 Game 0：这是一个关于我们LWR-ABFHE方案的标准IND-CPA游戏。依次通过下列步骤来刻画。 1) 初始化阶段：给出一个大小为u的属性集U，B声明他希望受到挑战的访问结构 A ∗ 并向A公布他的意向。 2) B利用 LWR-ABFHE .Setup ( λ ， U ， k ) 算法生成 ( P P ， M S K ) ，并且将PP发送给A。 3) A向B发送属性列表 B ∗ = { B 1 ∗ ， B 2 ∗ ， ⋯ ， B j ∗ } 的私钥查询，其中对于所有的i都有 B ∗ ≠ A ∗ 。B通过秘钥生成算法 LWR-ABFHE .KeyGen ( P P ， M S K ， D ) 生成 S K D ，并且发送给A。 4) A发送属性 B ∗ 和一对消息 M 0 、 M 1 给B，B随机产生在访问结构 A ∗ 的密文CT。然后将CT发送给A。 5) A重复进行第三步中的任意多次秘钥询问。 6) A输出 M ′ ∈ { 0 ， 1 } 。B接收到A对于密文CT的猜测 C T ′ ，如果 C T = C T ′ ，则成功；否则输出一个随机比特。在这个游戏中，A的优势是 | Pr [ C T = C T ′ ] − 1 2 | 。 Game 1：与Game 0不同的是，Game 1改变了Setup算法，B随机均匀构造 ( K 1 i ， K 1 i − 1 ) ← R q ，由LWR问题的困难性知 ( K 1 i ， K 1 i − 1 ) 和 ( K i ， K i − 1 ) 是统计上不能区分的，因此攻击者A在Game 1中的优势为 | Adv Game0 ( A ) − Adv Game1 ( A ) | ≤ n e g l ( λ ) 。 Game 2：与Game 1不同的是，Game 2改变了KeyGen算法中随机数a和其对应倒数a − 1 的生成方式，因为 R q 上均匀随机选取到的a及a − 1 在统计意义上是不可区分的，则 | Adv Game1 ( A ) − Adv Game2 ( A ) | ≤ n e g l ( λ ) 。并且因为选值是随机均匀的，所以 Adv Game2 ( A ) = 1 2 。 综上所述，我们可以计算出Game 0中攻击者A获胜的概率为： Adv Game0 ( A ) = | Pr ( 0 ) − 1 2 | ≤ ∑ i = 0 ， 1 | Pr ( i ) − Pr ( i + 1 ) | + | Pr ( 2 ) − 1 2 | ≤ n e g l (λ) 所以，LWR-ABFHE全同态加密方案满足IND-ID-CPA安全，定理3得证。