支持外包密文数据相等性测试的公钥加密方法及系统



1.本发明涉及加密技术领域,特别是涉及支持外包密文数据相等性测试公钥加密方法及系统。


背景技术:



2.本部分的陈述仅仅是提到了与本发明相关的背景技术,并不必然构成现有技术。
3.在以云计算为代表的数据存储外包服务中,用户的私人数据被存放在云服务器中,这种方式为用户减少了维护数据存储的开销,也带来了数据可以随时随处进行访问的便利。但同时,由于用户数据在物理上脱离了用户的控制,因此,也带来了严重的数据安全与隐私泄露的风险。
4.为了保护用户数据的机密性及隐私性,可以将用户数据加密之后再存放于云服务器,但此种方式对云服务器数据存储管理,以及用户本人数据利用都带来不便:
5.(1)如果用户上传两个相同的文件,由于加密算法的安全性,服务器无法判断密文数据是否相等,因此云服务无法进行去重处理,造成存储空间浪费;
6.(2)当用户需要从云服务器取回特定的数据时,由于加密算法的安全性,云服务器无法判断哪个密文数据符合用户的检索的条件,只能将所有密文数据发送给用户,由用户解密并得到需要的数据,造成巨大的网络通讯开支,以及用户端的计算开支。


技术实现要素:



7.为了解决现有技术的不足,本发明提供了支持外包密文数据相等性测试的公钥加密方法及系统,可以使云服务器独立完成密文相等性测试,既可以用于构造支持密文查重,又可以用于密文检索的协议。
8.第一方面,本发明提供了支持外包密文数据相等性测试的公钥加密方法;
9.支持外包密文数据相等性测试的公钥加密方法,应用于加密端,包括:
10.获取明文和解密端公开的公钥;
11.基于公钥对明文进行加密,生成密文,并将密文发送给云服务器或解密端;
12.其中,不同的密文在云服务器结合解密端生成的令牌,可以进行相等性测试。
13.进一步地,所述公钥为:
14.pk=(g,q,g,h,u,v,h(
·
));
15.其中,g为q阶;q是一个素数;g是g的一个生成元;随机数x,y∈rzq;h=g
x
,u=gy,v=hy;密码学hash函数h(
·
):g
→zq

16.进一步地,所述密文为:
17.c=(c1,c2,c3)
18.其中,c1=hr;c2=ur·gh(m)
;c3=vr·hh(m)
·
m;明文m∈g;随机数r∈rzq;g为q阶;q是一个素数;g是g的一个生成元;随机数x,y∈rzq;h=g
x
,u=gy,v=hy;密码学hash函数h(
·
):g
→zq

19.进一步地,所述密文在解密端解密得到的明文为:
[0020][0021]
其中,c2和c3来自于密文,随机数x∈rzq,q是一个素数。
[0022]
进一步地,所述相等性测试的具体方法为:基于两个密文c=(c1,c2,c3)和c

=(c1′
,c2′
,c3′
),验证是否成立,若成立,则表示密文c和c

对应的明文相等;其中,c1,c2,c3均为密文c的组成部分;c1′
,c2′
,c3′
均为密文c

的组成部分;随机数y∈rzq,q是一个素数。
[0023]
第二方面,本发明提供了支持外包密文数据相等性测试的公钥加密方法;
[0024]
支持外包密文数据相等性测试的公钥加密方法,应用于解密端,包括:
[0025]
生成公私钥对和令牌,并将公钥发送给加密端,以使加密端对明文进行加密,生成密文;
[0026]
基于私钥,对密文解密得到明文;
[0027]
其中,不同的密文在云服务器结合所述令牌,可以进行相等性测试。
[0028]
第三方面,本发明提供了支持外包密文数据相等性测试的公钥加密方法;
[0029]
支持外包密文数据相等性测试的公钥加密方法,包括:
[0030]
解密端生成公私钥对和令牌,并将公钥发送给加密端;
[0031]
加密端基于公钥对明文进行加密,生成密文,并将密文发送给云服务器或解密端;
[0032]
其中,不同的密文在云服务器结合所述令牌,可以进行相等性测试。
[0033]
第四方面,本发明提供了支持外包密文数据相等性测试的公钥加密系统;
[0034]
支持外包密文数据相等性测试的公钥加密系统,包括加密端和解密端;
[0035]
所述解密端,用于生成公私钥对和令牌,并将公钥发送给加密端;
[0036]
所述加密端,用于基于公钥对明文进行加密,生成密文,并将密文发送给云服务器或解密端;
[0037]
其中,不同的密文在云服务器结合所述令牌,可以进行相等性测试。
[0038]
第五方面,本发明提供了一种电子设备,包括:
[0039]
存储器,用于非暂时性存储计算机可读指令;以及
[0040]
处理器,用于运行所述计算机可读指令,
[0041]
其中,所述计算机可读指令被所述处理器运行时,执行上述第一方面或第二方面所述的方法。
[0042]
第六方面,本发明还提供了一种存储介质,非暂时性地存储计算机可读指令,其中,当所述非暂时性计算机可读指令由计算机执行时,执行第一方面或第二方面所述方法的指令。
[0043]
与现有技术相比,本发明的有益效果是:
[0044]
本发明的支持外包密文数据相等性测试的公钥加密方法,其具备选择明文攻击的安全性,且服务器可以自己独立完成密文相等性测试,既可以用于构造支持密文查重,又可以用于密文检索的协议。
附图说明
[0045]
构成本技术的一部分的说明书附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。
[0046]
图1为实施例一所述的支持外包密文数据相等性测试的公钥加密方法的流程图。
具体实施方式
[0047]
应该指出,以下详细说明都是示例性的,旨在对本技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本技术所属技术领域的普通技术人员通常理解的相同含义。
[0048]
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本技术的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0049]
术语解释:
[0050]
公钥加密方法:包括:密钥生成算法、加密算法和解密算法。
[0051]
密钥生成算法:解密端(可以为任何一个用户,如alice,的客户端)通过运行密钥生成算法,产生自己的公私钥对:公钥pka和私钥ska,其中,pka公开,任何人都可以拿到,ska保密,只有加密端(alice)自己知道。
[0052]
加密算法:加密端(可以为任何一个用户,如bob,的客户端)想要加密发送一个消息m给解密端(alice),则使用可以公开获得的解密端的公钥pka,加密m,得到密文c,并把密文发送给解密端。
[0053]
解密算法:解密端(alice)得到密文c之后,使用只有自己知道的私钥ska,解密得到明文
[0054]
对公钥加密方法来说,要满足一个选择明文攻击的安全性,则对加密算法来说,一定是一个概率算法,通俗的说,对同一个明文m,第一次加密和第二次加密得到的密文不相同。由于这个特性,服务器存的是密文,并且是一个随机的密文,因此服务器没有办法判断两个密文对应的明文是不是相同,所以,去重和检索,靠服务器自己无法完成。
[0055]
实施例一
[0056]
本实施例提供了支持外包密文数据相等性测试的公钥加密方法,在传统公钥加密方案的基础上,增加了一个密文相等性测试令牌,以及密文相等性检测算法,持有密文相等性测试令牌的参与方,可以使用密文相等性检测算法来判断两个密文对应的明文是否相等,在这个相等性检测过程中,不泄露明文的具体信息。
[0057]
本实施例提供的支持外包密文数据相等性测试的公钥加密方法基于判定迪菲-赫尔曼问题(decision diffie-hellman,ddh)假设,如图1所示,具体包括以下步骤:
[0058]
步骤1:密钥生成算法gen(1k):响应于加密端密文的输入,解密端输入一个安全参数k,输出密钥三元组(pk,sk,etoken),其中pk是公钥,sk是私钥,etoken是相等性测试的令牌。可以记作(pk,sk,etoken)

gen(1k)。
[0059]
解密端(即任何一个用户,例如alice,的客户端)通过运行密钥生成算法,产生自己的公私钥对pka,ska,其中pka公开,任何人都可以拿到,ska保密,只有解密端自己知道。除
此之外,还产生一个密文相等性测试令牌etoken。这个令牌不是公开的,解密端想让谁具备密文相等性测试的能力,就把令牌秘密的发送给谁,比如云服务器。
[0060]
具体的,密钥生成算法gen(1k)对输入的安全参数k,选取一个q阶g,其中q是一个素数,||q||=k,g是g的一个生成元。选取一个密码学hash函数h(
·
):g
→zq
,均匀随机选取x,y∈rzq,计算h=g
x
,u=gy,v=hy。则公钥pk=(g,q,g,h,u,v,h(
·
)),私钥sk=x,相等性测试的令牌etoken=y。其中,∈r是一个整体,是密码算法中常用的特定的符号,x∈rzq表示从集合zq中随机选择一个元素x,y∈rzq表示从集合zq中随机选择一个元素y;||q||是指q的阶,具体是q的二进制形式的位数,就是q的bit长度;q不能太小,否则可以通过穷举到q,因此要求q的长度至少为k;zq是mod q剩余类,简单的理解,整数集合可以分成除以q余0的数(整数子集,用[0]表示),除以q余1的数([1]),...,除以q余q-1的数([q-1])。
[0061]
步骤2、加密算法enc
pk
(m):加密端输入公钥pk及明文m,输出密文c。记作c

enc
pk
(m)。
[0062]
加密端(可以为任何一个用户,如bob,的客户端)想要加密发送一个消息m给解密端alice,则加密端bob使用可以公开获得的解密端alice的公钥pka,加密m,得到密文c。此处密文c可以发送给解密端alice,也可以上传到云服务器。
[0063]
具体的,加密算法enc
pk
(m)输入公钥pk=(g,q,g,h,u,v,h(
·
))及明文m∈g,均匀随机选取r∈rzq,计算
[0064]
c1=hr[0065]
c2=ur·gh(m)
[0066]
c3=vr·hh(m)
·m[0067]
则密文c=(c1,c2,c3)。
[0068]
步骤3、解密算法dec
sk
(c):解密端输入私钥sk及密文c,输出明文m。记作m:=dec
sk
(c)。
[0069]
解密端alice得到密文c之后,使用只有自己知道的私钥ska,对密文解密得到明文
[0070]
具体的,解密算法dec
sk
(c):输入私钥sk=x及密文c=(c1,c2,c3),计算
[0071][0072]
步骤4、密文相等性测试算法eqt
etoken
(c,c

):云服务器输入相等性测试的令牌etoken及两个密文c,c

,输出一个比特b,若密文c,c

对应的明文相等,则b=1,否则,b=0。记作b:=eqt
etoken
(c,c

)。
[0073]
密文相等性测试算法eqt
etoken
(c,c

):输入相等性测试的令牌etoken及两个密文c=(c1,c2,c3),c

=(c1′
,c2′
,c3′
),验证是否成立,若成立则表示密文c,c

对应的明文相等,输出1,否则输出0。
[0074]
在本实施例中,加密端和解密端可以为同一个客户端。
[0075]
密文相等性测试算法有两种应用场景:
[0076]
(1)检索的场景:解密端或加密端(可以为任一客户端,例如alice或其他人,如bob)想要从云服务器取回某个文件(例如,“咏柳”这个文件),可以使用解密端alice的公钥
pka加密该文件“咏柳”得到一个密文c

,并发给云服务器,云服务器使用etoken,将自己存储的每一个密文,分别与c

进行密文相等性测试,将相等的结果发回给用户,解密端alice得到结果后可以解密,加密端bob得到结果后,不能直接解密,需要请求解密端alice解密。
[0077]
(2)去重的场景:若干个加密端(例如,用户bob,carl,甚至解密端alice自己),使用解密端alice的公钥pka加密了一批文件(例如,一批唐诗),得到一系列密文,存储到云服务器,云服务器可以使用etoken,运行密文相等性测试算法,判断这些密文中是否有相同的,如果相同,可以只存储一份。
[0078]
解密正确性验证:
[0079][0080]
密文相等性测试正确性验证:
[0081]
令c是m的密文,则c=(c1,c2,c3)=(hr,ur·gh(m)
,vr·hh(m)
·
m)
[0082]
令c

是m
′’
的密文,则c

=(c1′
,c2′
,c3′
)=(hr′
,ur′
·gh(m

)
,vr′
·hh(m

)
·m′
)
[0083]

[0084][0085]
因此,如果m=m

,则成立,算法输出1,
[0086]
否则不成立,算法输出0。
[0087]
本发明的公钥加密方法具备选择明文攻击的安全性,且服务器可以自己独立完成密文相等性测试,既可以用于构造支持密文查重,又可以用于密文检索的协议。
[0088]
实施例二
[0089]
本实施例提供了支持外包密文数据相等性测试的公钥加密方法,应用于加密端,包括如下步骤:
[0090]
获取明文和解密端公开的公钥;
[0091]
基于公钥对明文进行加密,生成密文,并将密文发送给云服务器或解密端;
[0092]
其中,不同的密文在云服务器结合解密端生成的令牌,可以进行相等性测试。
[0093]
其中,公钥为:
[0094]
pk=(g,q,g,h,u,v,h(
·
));
[0095]
其中,g为q阶;q是一个素数;g是g的一个生成元;随机数x,y∈rzq;h=g
x
,u=gy,v=hy;密码学hash函数h(
·
):g
→zq

[0096]
其中,密文为:
[0097]
c=(c1,c2,c3)
[0098]
其中,c1=hr;c2=ur·gh(m)
;c3=vr·hh(m)
·
m;明文m∈g;随机数r∈rzq;g为q阶;q是一个素数;g是g的一个生成元;随机数x,y∈rzq;h=g
x
,u=gy,v=hy;密码学hash函数h(
·
):g
→zq

[0099]
其中,密文在解密端解密得到的明文为:
[0100][0101]
其中,c2和c3来自于密文,随机数x∈rzq,q是一个素数。
[0102]
其中,相等性测试的具体方法为:基于两个密文c=(c1,c2,c3)和c

=(c1′
,c2′
,c3′
),验证是否成立,若成立,则表示密文c和c

对应的明文相等;其中,c1,c2,c3均为密文c的组成部分;c1′
,c2′
,c3′
均为密文c

的组成部分;随机数y∈rzq,q是一个素数。
[0103]
详细方法与实施例一提供的方法相同,这里不再赘述。
[0104]
实施例三
[0105]
本实施例提供了支持外包密文数据相等性测试的公钥加密方法,应用于解密端,包括:
[0106]
生成公私钥对和令牌,并将公钥发送给加密端,以使加密端对明文进行加密,生成密文;
[0107]
基于私钥,对密文解密得到明文;
[0108]
其中,不同的密文在云服务器结合解密端生成的令牌,可以进行相等性测试。
[0109]
其中,公钥为:
[0110]
pk=(g,q,g,h,u,v,h(
·
));
[0111]
其中,g为q阶;q是一个素数;g是g的一个生成元;随机数x,y∈rzq;h=g
x
,u=gy,v=hy;密码学hash函数h(
·
):g
→zq

[0112]
其中,密文为:
[0113]
c=(c1,c2,c3)
[0114]
其中,c1=hr;c2=ur.g
h(m)
;c3=vr·hh(m)
·
m;明文m∈g;随机数r∈rzq;g为q阶;q是一个素数;g是g的一个生成元;随机数x,y∈rzq;h=g
x
,u=gy,v=hy;密码学hash函数h(
·
):g
→zq

[0115]
其中,解密得到的明文为:
[0116][0117]
其中,c2和c3来自于密文,随机数x∈rzq,q是一个素数。
[0118]
其中,相等性测试的具体方法为:基于两个密文c=(c1,c2,c3)和c

=(c1′
,c2′
,c3′
),验证是否成立,若成立,则表示密文c和c

对应的明文相等;其中,c1,c2,c3均为密文c的组成部分;c1′
,c2′
,c3′
均为密文c

的组成部分;随机数y∈rzq,q是一个素数。
[0119]
详细方法与实施例一提供的方法相同,这里不再赘述。
[0120]
实施例四
[0121]
本实施例提供了支持外包密文数据相等性测试的公钥加密系统;
[0122]
支持外包密文数据相等性测试的公钥加密系统,包括加密端和解密端;
[0123]
所述解密端,用于生成公私钥对和令牌,并将公钥发送给加密端;
[0124]
所述加密端,用于基于公钥对明文进行加密,生成密文,并将密文发送给云服务器或解密端;
[0125]
其中,不同的密文在云服务器结合所述令牌,可以进行相等性测试。
[0126]
各个组成部分的详细流程在实施例一已经介绍。
[0127]
实施例五
[0128]
本实施例还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述实施例二或实施例三所述的方法。
[0129]
应理解,本实施例中,处理器可以是中央处理单元cpu,处理器还可以是其他通用处理器、数字信号处理器dsp、专用集成电路asic,现成可编程门阵列fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0130]
存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
[0131]
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。
[0132]
实施例二或实施例三中的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
[0133]
本领域普通技术人员可以意识到,结合本实施例描述的各示例的单元及算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0134]
实施例六
[0135]
本实施例还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例二或实施例三所述的方法。
[0136]
以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。

技术特征:


1.支持外包密文数据相等性测试的公钥加密方法,其特征是,应用于加密端,包括:获取明文和解密端公开的公钥;基于公钥对明文进行加密,生成密文,并将密文发送给云服务器或解密端;其中,不同的密文在云服务器结合解密端生成的令牌,可以进行相等性测试。2.如权利要求1所述的支持外包密文数据相等性测试的公钥加密方法,其特征是,所述公钥为:pk=(g,q,g,h,u,v,h(
·
));其中,g为q阶;q是一个素数;g是g的一个生成元;随机数x,y∈
r
z
q
;h=g
x
,u=g
y
,v=h
y
;密码学hash函数h(
·
):g

z
q
。3.如权利要求1所述的支持外包密文数据相等性测试的公钥加密方法,其特征是,所述密文为:c=(c1,c2,c3)其中,c1=h
r
;c2=u
r
·
g
h(m)
;c3=v
r
·
h
h(m)
·
m;明文m∈g;随机数r∈
r
z
q
;g为q阶;q是一个素数;g是g的一个生成元;随机数x,y∈
r
z
q
;h=g
x
,u=g
y
,v=h
y
;密码学hash函数h(
·
):g

z
q
。4.如权利要求1所述的支持外包密文数据相等性测试的公钥加密方法,其特征是,所述密文在解密端解密得到的明文为:其中,c2和c3来自于密文,随机数x∈
r
z
q
,q是一个素数。5.如权利要求1所述的支持外包密文数据相等性测试的公钥加密方法,其特征是,所述相等性测试的具体方法为:基于两个密文c=(c1,c2,c3)和c

=(c1′
,c2′
,c3′
),验证是否成立,若成立,则表示密文c和c

对应的明文相等;其中,c1,c2,c3均为密文c的组成部分;c1′
,c2′
,c3′
均为密文c

的组成部分;随机数y∈
r
z
q
,q是一个素数。6.支持外包密文数据相等性测试的公钥加密方法,其特征是,应用于解密端,包括:生成公私钥对和令牌,并将公钥发送给加密端,以使加密端对明文进行加密,生成密文;基于私钥,对密文解密得到明文;其中,不同的密文在云服务器结合所述令牌,可以进行相等性测试。7.支持外包密文数据相等性测试的公钥加密方法,其特征是,包括:解密端生成公私钥对和令牌,并将公钥发送给加密端;加密端基于公钥对明文进行加密,生成密文,并将密文发送给云服务器或解密端;其中,不同的密文在云服务器结合所述令牌,可以进行相等性测试。8.支持外包密文数据相等性测试的公钥加密系统,其特征是,包括加密端和解密端;所述解密端,用于生成公私钥对和令牌,并将公钥发送给加密端;所述加密端,用于基于公钥对明文进行加密,生成密文,并将密文发送给云服务器或解密端;
其中,不同的密文在云服务器结合所述令牌,可以进行相等性测试。9.一种电子设备,其特征是,包括:存储器,用于非暂时性存储计算机可读指令;以及处理器,用于运行所述计算机可读指令,其中,所述计算机可读指令被所述处理器运行时,执行上述权利要求1-5或权利要求6任一项所述的方法。10.一种存储介质,其特征是,非暂时性地存储计算机可读指令,其中,当所述非暂时性计算机可读指令由计算机执行时,执行权利要求1-5或权利要求6任一项所述方法的指令。

技术总结


本发明涉及加密技术领域,公开了支持外包密文数据相等性测试的公钥加密方法及系统,解密端生成公私钥对和令牌,并将公钥发送给加密端;加密端基于公钥对明文进行加密,生成密文,并将密文发送给云服务器或解密端;其中,不同的密文在云服务器结合所述令牌,可以进行相等性测试。使云服务器独立完成密文相等性测试,既可以用于构造支持密文查重,又可以用于密文检索的协议。检索的协议。检索的协议。


技术研发人员:

蒋瀚 徐秋亮

受保护的技术使用者:

山东大学

技术研发日:

2022.08.04

技术公布日:

2022/11/22

本文发布于:2024-09-22 03:36:16,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/16612.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:明文   公钥   测试   所述
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议