基于格的多用单向代理重加密

基于格的多用单向代理重加密

摘要

代理重加密(PRE)是一种密码学原语,允许代理将爱丽丝的密文转换为同一明文上的鲍勃的密文。目前,已经提出了许多具有不同属性的PRE方案。然而,除了基于格的双向代理重加密方案外,其余方案均基于离散对数假设和大整数分解假设。在本文中,我们构造了首个基于格的多用单向代理重加密方案。此外,PRE密钥的生成无需两个用户之间的交互,且该方案能够抵抗共谋攻击。更重要的是,该方案在标准模型下被证明是基于带误差学习假设的选择明文攻击安全。最后,从基本构造中得到了一个基于身份的代理重加密方案。版权所有 © 2015 John Wiley & Sons, Ltd。

关键词
代理重加密;格密码学;选择明文攻击安全;LWE问题

1. 引言

代理重加密(PRE)由Blaze et al.[1]提出。在一个 PRE方案中,涉及三方,即委托人、代理和被委托人。代理在掌握某些信息的情况下,可将委托人的密文转换为被委托人的密文,但代理无法获得任何明文信息。这一特性使得PRE在许多场景中具有广泛的应用,例如车载自组织网络 [2],分布式文件系统[2],外包加密垃圾邮件过滤[2],加密电子邮件转发 [1],以及执法 [3]。自从Blaze et al. 构造出第一个PRE方案以来,已有大量具备不同属性的PRE方案被提出。PRE方案可通过三种方式进行分类。第一是转换次数,可分为两类:多用途和单次使用。如果密文可被重新加密多次,则该PRE方案为多用途;否则为单次使用。第二是方向性。如果代理能将委托人的密文转换为被委托人的密文,但反过来不行,则该PRE方案为单向;否则为双向。第三是依据安全性。它们可以分为选择明文攻击(CPA)安全和选择密文攻击(CCA)安全。

1.1. 相关工作

首个PRE方案由Blaze et al. [1] 构造。该方案具有多用途和双向性,且是CPA安全的。然而,它无法抵御共谋攻击。Ateniese et al. [2] 利用双陷门技术提出了首个抗共谋攻击的方案。该方案是单向且单次使用的,也是 CPA安全的。Canetti et al. [4] 引入了PRE的CCA安全模型,并提出了首个CCA安全的PRE方案。该方案是多用途且双向的。随后,Libert et al.[5] 提出了首个在标准模型下实现单向CCA安全的PRE方案。Seo et al. [6] 发现其在重加密预言机模拟过程中存在一个小错误,并在不修改原方案的前提下修正了该证明。对于基于身份的代理重加密,Green et al. [7] 提出了首个单向基于身份的PRE方案,而Chu et al.[8]提出了一种可重放的、 CCA安全的多用途基于身份的PRE方案。Wang et al. [9] 提出了首个CCA在随机预言模型下的安全的多用单向基于身份的PRE 方案。Shao et al. [10]提出了一个在标准模型下 CCA安全的单向基于身份的方案,能够抵抗共谋攻击。Wang et al. [11]给出了一个更高效的、无需随机预言机的CCA安全单用途单向PRE方案。然而,所有这些方案都涉及昂贵的配对运算。最近,Shao et al. [12],、 Weng et al. [13]以及Matsuda et al. [14]提出了无需双线性配对的CCA安全PRE方案。但这些方案仍然基于离散对数假设。然而,这些方案在量子环境下将不再安全。肖尔[15]证明了离散对数问题和大整数分解问题可以在多项式时间内被解决。因此,有必要构建一种在量子环境下安全的PRE方案。

作为一种重要的后量子密码学,格密码学近年来吸引了越来越多密码学家的关注。格密码学具有若干优良的密码学特性:首先,它是一种线性密码体制,其大部分操作都是在小整数上的线性运算,因此具有较低的计算复杂度;其次,已证明其最坏情况安全性等价于平均情况安全性;第三,它在量子设定下是安全的。目前,许多密码原语已在格的基础上被构造和改进,例如公钥加密方案、基于身份的加密方案、全同态加密、基于格的签名方案以及具有特定特性的方案。Xagawa [16] 构造了第一个基于格的PRE方案。然而,该方案仅在双向情况下满足CPA安全,且不能抵抗共谋攻击。Kirshanova [17] 提出了首个基于格的单次使用单向CCA安全代理重加密方案。本文的研究重点是构建一种基于格的多用单向代理重加密方案。

1.2. 我们的构造

在我们的方案中,用户1的公钥/私钥(A1, T1)由一个概率多项式时间(PPT)算法生成,且T1是ƒ?q (A1)的一个基。明文通过公钥A1加密,对应密文c1= AT1 s + 2x1+b1 ∈ Zmq。为了将密文c1= AT1 s + 2x1+b1 转换为在公钥A2下的密文c2= AT2 s + 2x2+ b2,我们构造一个矩阵R1→2,使得RT1→2c1= RT1→2 ATs 1 + 2x1+b1 = AT2 s + 2x2+ b2。然后我们需要确保A1R1→2 mod q = A2 和 RT1→2x1= x2 的值也都较小。令矩阵R1→2为PRE 密钥,该密钥由高斯采样算法生成。首先,给定两个用户的两个公钥pk1= A1、pk2= A2以及对应于公钥 A1的私钥T1,使用高斯采样算法生成PRE密钥R1→2,使得A1R1→2= A2 mod q 且R1→2的范数较小。

1.3. 论文结构

在第2.1节中,我们给出了相关符号。在第2.2节和第2.3节中,我们回顾了格分布和高斯分布的定义。在第2.4节中,我们介绍了带误差学习难题假设。格基委派技术在第2.5节中给出。我们在第3节中描述了PRE的定义与安全模型。在第4节中,我们提出了一个基于格的多用单向代理重加密方案。基本构造的扩展在第5节中描述。最后,结论在第6节中给出。

2. 预备知识

2.1. 符号说明

我们使用 R 和 Z 分别表示实数集和整数集。向量 x 的l2 范数(欧几里得范数)记为 kxk2= p< x, x >= qPni=1x2i。通常,我们将 kxk2 简记为 kxk。矩阵 X 的范数记为 kXk = maxi kxik,其中 1 ≤ i ≤ k。我们使用大O符号来分类函数的增长。若函数 g(n) =!(f (n)),则表示对于任意常数 c,g(n) 的增长速度快于 cf (n)。可忽略函数,记为 negl(n),是指满足对每个固定常数 c 都有 f (n) = O(n–c) 的函数 f (n)。

2.2. 格

设B={b1, b2, : :, bm} 2 Rm×m为一个非奇异矩阵,且b1,b2, : :, bm 2 Rm。该m维格
ƒ= L(B)=(y 2 R m, 9s 2 Zm, y= Bs= Xi=m1 sibi)
这里,我们关注整数格,即格 L 包含于 实数集m。
定义1. 设q为一个素数,A 2整数集n×mq,u 2整数集nq,定义:
ƒ?q(A)={e 2 Zm s.t. ATe= 0(mod q)} ƒu q(A)={e 2 Z m s.t. A Te= u(mod q)} 注意,如果t 2 ƒuq(A),则ƒuq(A)= ƒ?q(A)+t;因此,A)是ƒ?q(A)的一个移位。
定理 1 ([18])。 设q ≥ 3为奇数,m= d6nlogqe。存在一个概率多项式时间算法TrapGen(q,n),返回两个矩阵A 2 Zn×mq和T 2 Zm×mq,其中A在统计意义上接近于Zn×mq中的均匀矩阵,且T是ƒ?q(A)的一个基,满足
keTk Opn log q and kTk O(n log q)
在n中具有除可忽略概率外的所有情况。

定义 2.(最短独立向量问题)。设B是一个m维格的满秩基。目标是找到一组m个线性无关的格向量S L (B),使得 kSk (m) m(L(B))。

2.3. 离散高斯分布

我们简要回顾格上的离散高斯分布以及一些有用的引理。对于任意正参数 > 0,定义在实数集m上、以c为中心的高斯函数:
8x 2 Rm, ,c= exp – kx – ck2/2
对于任意 c 2 Rm,实数 > 0,m维格 ƒ,定义在 ƒ 上的离散高斯分布为:
8x 2 Rm, Dƒ,,c(x)= s,c(x) ,c(ƒ) = ,c(x)

引理 1([19]).设q≥ 2 且矩阵A 2 Zn×mq。令 TA为ƒ?q(A)的一个基, ≥ k QTAk ! √logm。则对于c 2 Zm,u 2 Znq; (1) Pr xDΛ_q^⊥(A),: kxk > pm negl(n)。(2) 存在一个概率多项式时间算法 SampleGaussian(A, TA, , c),返回从统计意义上接近 Dƒ,,c 的分布中抽取的 x 2 Λ_q^⊥(A)。(3) 存在一个概率多项式时间算法 SamplePre(A, TA, u, ),返回从统计意义上接近 Dƒ_uq(A),,c 的分布中采样的 x 2 ƒ_uq(A)。

2.4. 带误差学习困难性假设

带误差学习(LWE)问题最早由雷格夫提出[20]。我们将其描述如下。

定义3。对于整数q,一个在Zq上的分布 。LWEq, 问题是指以非可忽略的概率区分分布As, 与在Znq × Zq上的均匀分布,其中s Znq为均匀选取的向量,且s是一个秘密。As, 定义为在Znq ×Zq上的分布,其变量为(a, aTs+x),其中a Znq是均匀选取的,x 是独立的。

雷格夫 [21]指出,对于某些表示为 ‰˛ 的噪声分布,LWE问题在量子归约下与最坏情况下的SIVP和 GapSVP一样困难。佩克特 [22] 完成了经典的归约。

2.5. 格基委派技术

在本节中,我们介绍由Agrawal etal. 在[23]中提出的格基委派技术。存在两种不同的陷门用于寻找短向量:一种称为左陷门,使实际系统能够在格中生成短向量;另一种称为右陷门,用于证明中。

引理2 ([23])。设q> 2,m> 2n log q 且 > k QTAk ! √log 2m。则存在一个多项式时间算法 SampleBasisLeft(A, M, TA),该算法以 A、M ∈ Zn×mq 和 ƒ?q(A) 的一个基 TA 作为输入,返回 ƒ?q(F) 的一个基 TF,且满足 k QTFk = k QTAk,其中 F =(A|(M)。

引理3 ([23])。设q> 2,m> n 且 > kTBk √m ! √log m。则存在一个多项式时间算法 SampleBasisRight(A, B, R, TB),该算法以 A,B ∈ Zn× mq、R ∈ {–1, 1}m×m 以及 ƒ?q(B) 的一个基 TB 作为输入,输出 ƒ?q(F) 的一个基 TF,满足 k QTFk ≤ k QTBk √m ! √log m,其中 F =(A|AR + B)。

3. 代理重加密:定义与安全模型

3.1. 单向代理重加密的定义

在本节中,我们回顾单向PRE方案的定义。一个针对 l层的单向PRE方案由五个算法(密钥生成算法、重加密密钥生成算法、加密算法、重加密和解密)组成

KeyGen :该算法输入安全参数 n,并返回用户的私钥/公钥对 (sk,pk)。

ReKeyGen :该算法输入用户 i 的私钥 ski、用户 j的公钥 pkj ,并输出一个重加密密钥 rki!j,该密钥允许将用户 i0 的密文转换为用户 j 0 的密文。

Enc :该算法输入一条消息 , 和公钥 pki,并输出一个密文 ci。

ReEnc :该算法输入一个重加密密钥 rki!j 和用户 i 的一个密文 ci,返回用户 j 的一个密文 cj。

Dec :该算法输入用户 j 的私钥 skj 和一个密文 cj,返回消息 。

正确性 : 需要满足两个要求:
Dec(ski,Enc(pki,)) =,
Dec(skj,ReEnc(ReKeyGen(ski,pkj),ci) =。

3.2. 单向代理重加密的安全模型

我们描述单向代理重加密(PRE)的CPA安全性的形式化定义。对于挑战者C与概率多项式时间攻击者 A之间的实验Expind–cpa PRE,A(n),其交互如下:

设置阶段 : 挑战者 C输入一个安全参数并获得参数 param。它将参数发送给 param A。

阶段1 :在此阶段,攻击者需要对以下预言机进行多项式次数的查询,挑战者 C需要回答这些预言机。

公钥生成预言机 Opk :挑战者 C维护一个表 TK = (pki,ski)。攻击者 A希望获知用户 i 的公钥。因此,攻击者输入索引 i,然后挑战者运行算法 KenGen(1n) 生成密钥对 (pki,ski)。挑战者 C将 (pki,ski) 存入表中,并将 pki返回给 A。

秘密密钥预言机 Osk :攻击者 A输入 pki。如果用户 i被攻破,即用户 i不诚实,挑战者查询表 TK并将 ski返回给 A;否则, C返回 ?。

重加密密钥预言机 Ork :攻击者 A输入(ski,pkj),挑战者 C运行算法 ReKeyGen 生成重加密密钥 rki!j并将 rki!j返回给 A。

重加密预言机Ore :攻击者A输入(ski,pkj,ci)。挑战者C计算cj= ReEnc(rki!j,ci)。

挑战阶段 :如果攻击者 A完成所有预言机的查询后, A提交两个明文 0, 1和一个目标用户i*,挑战者 C随机选择一个比特b 2 {0,1},并计算ci* = Enc(pki*,b)。然后将挑战密文ci*发送给 A。我们已知用户i*未被攻破,并且如果ski*,pk*已被查询过以生成重加密密钥 Ork,则pk*不应被攻破。

高斯 :最后,攻击者 A输出一个猜测值b0 2 {0, 1}。如果b0= b,则挑战者 C输出1,否则输出0。

定义4 。(IND – 选择明文攻击安全性)设PRE为一个 PRE方案。 A是一个攻击者,n是安全参数。我们定义 A的优势为
Advind–cpa PRE,A(n)= ˇˇˇ2 PrhExp ind–cpa PRE,A(n)= 1i – 1 ˇˇˇ
我们说一个PRE方案是IND-CPA安全的,如果对于所有概率多项式时间攻击者A,其优势Advind–cpa PRE,A(n)是可忽略的。

4. 基于格的多用单向PRE方案

在本节中,我们将使用Gentry、Halevi和 Vaikun‐tanathan的方案[24]来构建一个多用途单向PRE方案。构造如下。

4.1. 构造

Setup(1n) :输入安全参数 n ,并使用算法 TrapGen(q,n) 生成两个矩阵 Ai 2 Zn×mq 具有两个用于 ƒ?q (Ai)的陷门基 Ti,且满足 keTik ≤ O√n logq,i = 1, 2。陷门函数 fAi(x) =Aix mod q。公钥为 pki = Ai,私钥为 ski =Ti。

ReKeyGen(pk2, sk1) :输入公钥 pk2= A2 和私钥 sk1 = T1。令 A2 =(a21, a22, : : : , a2m)T,其中 a2i 2 Znq。对于每个 a2i,i = 1, : : : , m,使用预像可采样算法 SamplePre(A1, T1, a2i, ) 采样一个向量 ri,使得 A1ri = a2i mod q 且 krik ≤ √m。令 Rpk1!pk2=( r1, r2, : : : , rm) 2 Zm×m,则 A1 2 ≡ 2 1 Rpk1!pk2 A mod q 且 Rpk1!pk2 的范数不超过 √m。输出重加密密钥 rkpk1!pk2= Rpk1!pk2。

加密算法(pk1,) :输入一个消息比特 2{0, 1},pk1= A1,执行:
(1) Choose a random vector s1 Zn q, an error vector x1 m, and a vector b1 2 {0, 1}m;
(2) Compute c1= AT 1 s1+ 2x1+b1 2 Zmq; (3) Output the ciphertext c1.

ReEnc(rkpk1!pk2,c1) :输入在公钥 pk1 = A1 下的密文 c1 和重加密密钥 rkpk1!pk2 = Rpk1!pk2。计算 c2= RTc1pk1!pk2 + 2x02,其中 x0 2 m ,并输出 c2。

解密(sk,c) :输入私钥 sk= T和一个重加密密文 c。计算 w =(TT)–1(TTc)mod2。如果 w= 0,输出 0;否则输出1。

接下来,我们以分布式文件系统为例,说明如何在实际应用中使用所提出的方案。

爱丽丝需要将大量文件存储在一个不可信的服务器上,这些文件使用她的公钥进行加密。她允许某些指定用户访问这些文件。然而,当指定用户访问文件时,爱丽丝无法及时转换已加密的文件,这项工作十分繁重。该问题可以很好地解决。首先,爱丽丝使用她的私钥和指定用户的公钥生成一个重加密密钥,并将其发送给服务器。其次,服务器将加密的文件转换为指定用户的密文,并将其发送给指定用户。最后,指定用户使用他的私钥获取未加密的文件。该过程如图1所示。

4.2. 正确性和参数

对于密文 c,解密操作如下:
w=(TT)–1(TTc) mod 2 =(TT)–1(TT(ATs+ 2x+b)) mod 2 =(TT)–1((AT)Ts+ 2TTx+TTb) mod 2 =(TT)–1(2TTx+TTb) mod 2 =(2x+b) mod 2 =b mod 2
如果 w=b mod 2= 0,输出 0,否则输出 1。
我们注意到TT、x和b的范数很小,且向量2TTx + TTb的每一项都小于q。因此(2TTx+ TTb) mod q就是2TTx+ TTb本身。接下来,乘以(TT)–1 后得到(2x+ b) mod 2。最后,我们得到 b mod 2。
由于b= 0 mod 2的概率为1/2m,因此正确解密的概率为 1 – 1/2m。
对于一个重加密密文 c2,我们计算
c2= RTc1 pk1!pk2 + 2x0 2 = RT pk1!pk2 AT 1 s1+ 2x1+b1 + 2x0 2 = A1R T pk1!pk2 Ts1+ 2RTx1 pk1!pk2 +R T pk1!pk2 b1+ 2x0 2 = AT 2 s1+ 2 RT pk1 !pk2 x1+ x0 2 +R T pk1 !pk2 b1
Let s2= s1, x2= R Tx1 pk1 !pk2 + x0 2, b2= RT pk1 !pk2 b1, then c2= AT 2 s2+ 2x2+b2.
Then, we compute
w= TT 2 –1TTc 0 2 mod 2 = T T 2 –1T T 2 A T 2 s2+ 2x2+b2 mod 2 =b2 mod 2
如果向量的每个元素 2T2T RT pk1!pk2x1+ x02 +T2T RT pk1!pk2b1 小于q,并且 b2= RT pk1!pk2b1 ¤ 0 mod 2 那么它可以被正确解密。我们知道Rpk1!pk2 和 b1 是均匀随机的,因此b2 的每一项为偶数的概率是 1/2。因此b2= 0mod2 为 1/2m 的概率是 1/2。
对于该方案的正确性,需要满足以下条件:
(1)算法 TrapGen 需要 m> 6n logq;(2)正确解密密文 (q> b 2 = 1 2 i,i,,::, m,其中 b2i是向量 b2的元素)。(3)归约适用于引理 2(˛q> 2 √n)。
由于 kTk ≤ O(n logq),kRk ≤ √m,Q ≥ kTk ! (√logm),我们将参数设置如下:
m= 6n dlog qe, q= 2m(l+2)/2 √n !(log (l+1)/2m)+ 1 = m !(log n), ˛=[m (l+2)/2 !(log (l+1)/2m)] –1 where l is the number of re-encryption.
定理2. (多用性)设q、 ˛、m和 如前所述,则前述方案为多用途。
证明。 对于用户1,:::,l,假设A1 是用户1的公钥,密文c1= A1Ts 1+ 2x1+ b1 是在A1 下的有效密文。重加密过程从1到l通过2到l – 1执行。通过重加密过程,我们得到
cl= RTl–1!l cl–1+ 2xl = RTl–1!l RTl–2!l–1cl–2+ 2xl–1+ 2xl = Yi=l2 RTi–1!iA1T s1+ 2 jX=l2 0@ Yi>lj RTi–j!ixj–1 1 A + Yi=l2 RT i–1!ib1 = AT l s1+ 2 jX=l2 0@ Yi>lj RTi–j!ixj–1 1 A+ Yi=l2 RT i–1!ib1 = AT l sl+ 2x0l+bl where sl= s1, x0l= 2 jP=l2 iQ>lj RT i–j!ixj–1 ! , bl= iQ=l2 RT i–1!ib1. If each entry of the vector 2TTl x 0 l+ TTl bl is smaller than q, it can be decrypted correctly.

4.3. 安全性分析

定理3。 设q、 ˛、m和 如前所述,那么在假设 LWEq, 问题难解的情况下,前述单向PRE方案在标准模型中是IND–选择明文攻击安全的。
证明.为了证明该定理,我们使用一系列游戏来表明攻击者具有可忽略的优势。
Game0:这是原始的IND‐CPA游戏。在挑战阶段, 当挑战者收到(i*,0,1)时,它选择一个随机的b 2 {0, 1},并计算挑战密文c* = ATs i* + 2x+ bb。挑战者将c*返回给攻击者 A。最后,攻击者输出一个猜测值b0。如果b0= b,则挑战者输出1,否则输出0。
游戏1:在游戏0中,挑战者通过算法 TrapGen (q, n) 生成公钥A。在游戏1中,我们仅改变公钥A的生成方式。我们从Zn×mq中均匀随机地选择公钥A。挑战者生成重加密密钥 Ri!i+1 DZm, , i = 1,2,:::, l–1。其他重加密密钥为 Ri!j = Ri!i+1 Rj–1!j。如果攻击者A请求第i个公钥,挑战者计算 Ai = AR1!i mod q 并将其返回给 A。如果攻击者 A查询重加密密钥预言机Ork,输入i, j,则挑战者将Ri!j返回给 A。如果攻击者 A查询重加密预言机Ore,输入i, j, c,则挑战者使用重加密密钥Ri!j对密文c进行重加密。
游戏 2:在游戏2中,挑战密文 c* 的生成方式与游戏 1不同,而是从Zmq中选取的一个随机向量。由于挑战密文是密文空间中的一个随机向量,因此A在此游戏中的优势为0。
我们将证明,对于PPT攻击者 A而言,游戏1和 游戏2在计算上是不可区分的。我们通过将此问题归约到LWE问题来实现这一点。
来自LWE的归约。假设攻击者 A具有不可忽略的优势“来区分游戏1和游戏2。我们需要构造一个算法 B 来解决LWE问题。
B从LWE问题实例预言机接收m对(ui, vi) ∈ Znq × Zq,其中vi = ui, s + xi。令公钥A = (u1, u2, ⋯ , um),v = (v1, v2, ⋯ , vm)T,则v = ATs + x mod q,其中x = (x1, x2, ⋯ , xm)T。我们设定 c*= 2v+bb= AT i*2s+ 2x+bb = ATs0 i*+ 2x+bb 2 Zmq, s0= 2smodq。如果 A猜对了b,则 B输出1, 否则输出0。
一方面,如果v是一个均匀随机向量,则挑战密文c*也是均匀随机的。因此在这种情况下, B输出1的概率至多为1/2。另一方面,如果v= ATs+ xmodq,则挑战密文c*是均匀分布的 (因为q与2互素)。这与Enc(pk,b)的输出分布相同;因此在这种情况下,A以概率(1+”)/2 猜中正确的b,即B以相同概率输出1。这意味着 B至少具有”/2的优势来求解LWE问题。

4.4. 比较

在本节中,我们从以下几点对相关工作([5],[10], [11],[12],[14],[16],[17])进行比较。计算复杂度: 包含加密/解密的计算复杂度。交互性:PRE密钥由两个用户的私钥生成。在非交互式方案中,PRE密钥由 一个用户的私钥和另一个用户的公钥生成。转换次数: 密文可被重新加密的次数。共谋–抗性:该方案能够抵抗共谋攻击(代理者与委托者、代理者与被委托人)。方向性:单向性是指代理可将爱丽丝的密文转换为鲍勃的密文,反之则不行;双向性是指代理可将爱丽丝的密文转换为鲍勃的密文,反之亦然。量子安全:该方案在量子环境中安全。比较结果总结于表I。

表I. 与相关工作的比较。
| 密码系统 | 计算复杂性 | 交互性 | 转换次数 | 共谋‐抗性 | 方向性 | 量子安全 |
| — | — | — | — | — | — | — |
| Libert 和 Vergnaud 的方案 [5] | O(n³) | No | 单次使用 | Yes | 单向 | No |
| 邵和曹的方案[10] | O(n³) | No | 多用途 | Yes | 单向 | No |
| 王和曹的方案[11] | O(n³) | No | 单次使用 | Yes | 单向 | No |
| 邵和曹的方案[12] | O(n³) | No | 单次使用 | Yes | 单向 | No |
| Matsuda 等人[14]的方案 | O(n³) | Yes | 多用途 | No | 双向 | No |
| Xagawa [16]的方案 | O(n²) | Yes | 多用途 | No | 双向 | Yes |
| Kirshanova 的方案 [17] | O(n²) | No | 单次使用 | Yes | 单向 | Yes |
| 所提出的方案 | O(n²) | No | 多用途 | Yes | 单向 | Yes |

5. 扩展:基于身份的多用途单向PRE

利用[19],技术,我们将基本构造扩展为基于身份的多用单向PRE方案。在此构造中,我们将使用一个满秩差分函数H: Znq! Zn×nq。满秩差分是指对于所有不同的u,v 2 Znq,矩阵H(u) – H(v) 2 Zn×nq均为满秩。
系统建立(1n) :输入安全参数n,运行TrapGen(q, n)生成一个随机矩阵A ∈ Zn^×mq,其具有对应于 ƒ?q (A)的陷门基T,且满足||T|| ≤ O(√(n log q))。选择两个均匀随机的n × m矩阵A1和B,属于 Zn^×mq。主公开密钥为MPK = =(A, A1, B),主私钥为MSK = =(T)。
密钥提取(主公钥, 身份) :输入 MPK、MSK以及身份id ∈ Znq,使用 SampleBasisLeft算法计算基Tid ← SampleBasisLeft(A, A1+ H(id) × B),满足||Tid|| ≤ √(2m)。
重加密密钥生成(目标身份, 源私钥) : 输入身份id2和带有身份id1的私钥skid1 = Tid1。设 Aid1 = (A|A1+ H(id1) × B),Aid2 = (A|A1+ H(id2) × B)。使用原像可采样算法生成矩阵Rid1→ id2 ∈ Z^2m×2m,使得Aid1·Rid1→id2 ≡ Aid2 (mod q)且||Rid1→id2|| ≤ √m。输出重加密密钥 rkid1→id2 = Rid1→id2。
加密算法(pkid1,) :输入消息比特 2 ∈{0, 1},公钥pkid1 = Aid1,执行以下操作:(1)选择随机向量s1 ∈ Znq,误差向量x ∈ 1 m,以及向量 b1 ∈ {0, 1}^m;(2)计算密文 c1 ← ATs1 + id1·s1 + x + b1 ∈ Zmq;(3)输出密文c1。
重加密(重加密密钥, 源密文) :输入在公钥 pkid1 = Aid1下的密文c1和重加密密钥rkpkid1→ pkid2 = Rid1→id2。计算c2 ← RT·c1 + x,其中x ∈ 1 m。输出重加密后的密文c2。
解密(私钥, 密文) :输入私钥skid2 = Tid2和重加密密文c2。计算w = TTid2 –1TTid2cid2 mod 2。如果w= 0,输出0,否则输出1。

6. 结论

本文中,我们基于LWE问题的困难性构造了首个多用单向代理重加密方案。在所提出的方案中,代理重加密密钥的生成不需要两个用户之间的交互,而是由一个用户的私钥和另一个用户的公钥生成。该方案具有多用途、单向以及抵抗共谋攻击等良好性质。我们还证明了该方案在标准模型下是CPA安全且量子安全的。

分布式微服务企业级系统是一个基于Spring、SpringMVC、MyBatis和Dubbo等技术的分布式敏捷开发系统架构。该系统采用微服务架构和模块化设计,提供整套公共微服务模块,包括集中权限管理(支持单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等功能。系统支持服务治理、监控和追踪,确保高可用性和可扩展性,适用于中小型企业的J2EE企业级开发解决方案。 该系统使用Java作为主要编程语言,结合Spring框架实现依赖注入和事务管理,SpringMVC处理Web请求,MyBatis进行数据持久化操作,Dubbo实现分布式服务调用。架构模式包括微服务架构、分布式系统架构和模块化架构,设计模式应用了单例模式、工厂模式和观察者模式,以提高代码复用性和系统稳定性。 应用场景广泛,可用于企业信息化管理、电子商务平台、社交应用开发等领域,帮助开发者快速构建高效、安全的分布式系统。本资源包含完整的源码和详细论文,适合计算机科或软件工程专业的毕业设计参考,提供实践案例和技术文档,助力生和开发者深入理解微服务架构和分布式系统实现。 【版权说明】源码来源于网络,遵循原项目开源协议。付费内容为本人原创论文,包含技术分析和实现思路。仅供习交流使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值