一种支持双向代理重加密的同态加密方法

文档序号:32240864发布日期:2022-11-18 22:26阅读:246来源:国知局
一种支持双向代理重加密的同态加密方法

1.本发明属于信息安全领域,具体涉及一种支持双向代理重加密的同态加密方法。


背景技术:

2.随着云计算的快速发展,越来越多资源受限的企业将数据和计算外包给云服务提供商。在使用云服务器提供的计算服务时,如何保证隐私和数据安全成为了问题。为保证数据安全,一般先对数据进行加密,再将加密后的数据上传到云服务器,由云服务器在密文上进行训练,这样虽然保证了数据本身的机密性,但也失去了数据的可用性。如何在保证数据隐私的前提下训练数据,这对加密算法有额外的要求。同态加密在一定程度上能够满足这一要求。同态加密是一种支持直接在加密数据上进行运算的密码机制,允许任何人可以在不知道明文的情况下,对密文进行计算从而达到对明文进行同等计算的效果。然而,当多个企业进行联合训练时,每个企业使用自己的公钥加密数据并外包给云服务器进行计算,云服务器如何在多密钥的情况下进行计算成为一个计算难题。
3.代理重加密是一种在仅知道代理密钥的情况下将不同公钥下的密文转化成同一公钥下的密文的方法。代理重加密方案包括两种类型:单向代理重加密和双向代理重加密。单向代理重加密是指只能从a的密文代理重加密成b可以解密的密文;双向代理重加密方案是指可以在a、b的密文之间互相代理重加密。
4.在文献《a simple public-key cryptosystem with a double trapdoor decryption mechanism and its applications》中,作者提出了具有加法同态性质和双陷门解密机制的bcp公钥密码系统。该方案允许用户直接在密文上进行计算,有效的改善了用户在将数据外包给云服务器进行计算时存在的隐私泄露问题,但是该方案在利用双陷门解密机制解决不同在公钥下加密的密文运算困难问题时需要借助第三方进行密文的盲化,效率较低。


技术实现要素:

5.本发明的主要目的在于克服现有技术的缺点与不足,提供一种支持双向代理重加密的同态加密方法,该方法具有加法同态性质又支持双向代理重加密。
6.为了达到上述目的,本发明采用以下技术方案:
7.一种支持双向代理重加密的同态加密方法,包括:
8.密钥对生成,根据实际的安全需求选择安全参数,将安全参数输入到密钥对生成算法中,生成公钥和私钥以及其他参数;
9.公钥加密消息,将公钥和待加密消息输入加密算法中,进行消息加密,得到消息对应的密文;
10.代理密钥生成,根据授权方的公钥和私钥以及被授权方的公钥和私钥,生成代理密钥;
11.代理重加密,当协助方同时拥有授权方的密文和代理密钥时,协助方对授权方的
密文进行代理重加密,将授权方能解密的密文转化成被授权方能解密的密文;
12.解密密文,当需要对密文进行解密时,输入密文和对应的私钥到解密算法中,通过解密算法对密文进行解密得到该密文对应的消息。
13.进一步的,支持双向代理重加密的同态加密方法基于上的ddh假设构造,其明文空间密文空间为
14.其中,表示模n2乘法群,表示模n加法群。
15.进一步的,密钥对生成具体为:
16.输入安全参数κ到密钥对生成算法keygen(κ),输出公钥pk、私钥sk、素数p以及素数q;
17.密钥对生成算法keygen(κ)具体步骤为:
18.首先初始化生成公共参数,再根据公共参数生成公私钥对,具体如下:从安全素数集中选取两个素数p和q,令n=pq,其中,要求n的比特长度为κ,当不满足该要求时,重新选择素数p和q,直到满足要求为止;
19.计算其中为安全素数组成的集合;
20.再选择一个随机数令g=α
2 mod n2,若则重复执行直到
21.其中,表示从中均匀随机地选取出一个元素α,mod表示求余,ord(g)表示g的阶,表示所有模n2的二次剩余组成的循环群,表示群的元素的个数;
22.最后选择一个随机数计算h=g
a mod n2,输出公钥pk=(n,g,h),私钥sk=a,素数p、素数q。
23.进一步的,公钥加密消息具体为:
24.输入公钥pk和消息m到加密算法enc(pk,m)中,加密算法输出密文c;加密算法具体过程如下:
25.对于明文消息m∈zn,选取随机数使用公钥pk=(n,g,ga)进行加密,计算密文c=(c1,c2),c1=g
ar mod n2,c2=gr(1+mn)mod n2;
26.其中,表示模n2的加法群。
27.进一步的,解密密文具体为:
28.当私钥sk、密文c已知时,通过解密算法dec1(sk,c)输出消息解密算法具体过程如下:
29.已知密文c=(c1,c2),c1=g
ar mod n2,c2=gr(1+mn)mod n2,私钥sk=a时,计算出
30.进一步的,代理密钥生成具体为:
31.输入授权方的公钥pki和私钥ski以及被授权方的公钥pkj和私钥skj,输出代理密
钥具体过程如下:
32.假设授权方的公钥pki=(n,g,ga)和私钥ski=a,以及被授权方的公钥pkj=(n,g,gb)和私钥skj=b,则代理密钥
33.进一步的,代理重加密具体为:
34.对授权方的密文进行重新加密,输入密文ci和代理密钥输出被授权者能解密的密文cj;
35.其中,ci表示授权者能解密的密文,cj表示被授权者能解密的密文;具体过程如下:
36.假设代理密钥授权者的密文
37.首先计算则被授权者的密文则被授权者的密文
38.当需要把的密文代理重加密成ci时,计算时,计算即完成授权者和被授权者的密文之间的双向代理重加密。
39.进一步的,当n的素数分解p和q已知时,存在另一种解密方法,即第二解密算法dec2(p,q,pk,c),由拥有主私钥,即p和q的可信第三方进行解密恢复消息;
40.当素数p和q已知时,通过第二解密算法dec2(p,q,pk,c)输出消息具体过程如下:
41.输入素数p、素数q、公钥pk=(n,g,h=ga)和密文c=(c1,c2),c1=g
ar mod n2,c2=gr(1+mn)mod n2;
42.首先计算出素数素数然后计算t=h
p
′q′ mod n2=g
(p
′q′
)
·
a mod n2=(1+akn)mod n2,则
43.计算l=c
1p
′q′ mod n2=g
(p
′q′
)
·
ar mod n2=1+arkn mod n2,则
44.计算r mod n=ar
·
a-1 mod n;
45.计算即恢复出明文;
46.在群中,由于ord(g)=pp

qq

,n=pq,因此g
p
′q′ mod n2=1+kn,k∈[1,n-1],于是h
p
′q′ mod n2=g
(p
′q′
)a mod n2=(1+kn
)a mod n2=1+akn;
[0047]
其中,k-1
满足k
·
k-1
=1 mod n2;
[0048]
由于所以存在一个逆元a-1
使a
·
a-1
=1 mod n2。
[0049]
进一步的,加密算法enc(pk,m)具有加法同态特性,即对两个密文进行运算等价于先对两个密文对应的明文进行求和,再针对求和所得结果进行加密;验证过程如下:
[0050]
对于任意消息记enc(pk,m1)所使用的随机数是r1,enc(pk,m2)使用的随机数是r2,有:
[0051][0052][0053]
得:
[0054][0055]
给定一个常数γ,
[0056][0057]
其中,于是(1+mn)ymod n2=1+γmn mod n2。
[0058]
本发明与现有技术相比,具有如下优点和有益效果:
[0059]
1、本发明是基于上的ddh假设而构造的,所提出的加密算法在将明文加密成密文时,由于密文形式上的独特性使得其同时满足加法同态的特性和支持双向代理重加密的特性,具有更广泛的应用场景,例如在多个参与方联合进行计算时,在保护每个参与方数据隐私的前提下,需要利用该加密算法具有的加法同态性质在密文上进行计算并且使用双向代理重加密技术将计算结果转化成每个参与方能够解密的密文,如果使用bcp加密算法,则由于其不具备双向代理重加密的性质,需要第三方进行密文的盲化来达到相同的效果,相比之下本发明方案在该场景下可以直接在授权方的密文上进行代理重加密,实施较为方便。
[0060]
2、本发明具有双陷门解密机制,即有两种解密方法,加密方案存在两种私钥,一种是与特定公钥绑定的私钥,另一种是通用性更强的主私钥,可以对该加密体制下的任意公钥加密得到的密文进行解密;第一种解密方法是拥有公私密钥对的人可以对用自己公钥加密得到的密文进行解密,另一种解密方法是拥有主私钥的人也可以对密文进行解密得到密文;双解密的性质使得将该加密算法可以应用到监管方面,减轻监管方的密钥管理成本和压力。
附图说明
[0061]
图1是本发明方法的示意图。
具体实施方式
[0062]
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
[0063]
实施例
[0064]
如图1所示,一种支持双向代理重加密的同态加密方法,方法基于上的ddh假设构造的,其明文空间密文空间为其中,表示模n2乘法群,表示模n加法群;
[0065]
方法包括以下步骤:
[0066]
密钥对生成,根据实际的安全需求选择安全参数,将安全参数输入到密钥对生成算法中,生成公钥和私钥以及其他参数;
[0067]
公钥加密消息,将公钥和待加密消息输入加密算法中,进行消息加密,得到消息对应的密文;
[0068]
代理密钥生成,根据授权方的公钥和私钥以及被授权方的公钥和私钥,生成代理密钥;
[0069]
代理重加密,当协助方同时拥有授权方的密文和代理密钥时,协助方对授权方的密文进行代理重加密,将授权方能解密的密文转化成被授权方能解密的密文;
[0070]
解密密文,当需要对密文进行解密时,输入密文和对应的私钥到解密算法中,通过解密算法对密文进行解密得到该密文对应的消息;
[0071]
在本实施例中,密钥对生成具体为:
[0072]
输入安全参数κ到密钥对生成算法keygen(κ),输出公钥pk、私钥sk,素数p、素数q;
[0073]
密钥对生成算法keygen(κ)具体步骤为:
[0074]
首先初始化生成公共参数,再根据公共参数生成公私钥对,具体如下:从安全素数集中选取两个素数p和q,令n=pq,其中要求n的比特长度为κ,当不满足该要求时,重新选择素数p和q,直到满足要求为止;
[0075]
然后计算其中为安全素数组成的集合;
[0076]
再选择一个随机数令g=α
2 mod n2,若则重复执行直到
[0077]
其中,表示从中均匀随机地选取出一个元素α,mod表示求余,ord(g)表示g的阶,表示所有模n2的二次剩余组成的循环群,表示群的元素的个数;
[0078]
最后选择一个随机数计算h=g
a mod n2,输出公钥pk=(n,g,h),私钥sk=a,素数p,素数q。
[0079]
在本实施例中,公钥加密消息具体为:
mod n2=(1+akn)mod n2,则
[0098]
计算l=c
1p
′q′ mod n2=g
(p
′q′
)
·
ar mod n2=1+arkn mod n2,则
[0099]
计算r mod n=ar
·
a-1
mod n;
[0100]
计算即恢复出明文;
[0101]
在群中,由于ord(g)=pp

qq

,n=pq,有g
p
′q′ mod n2=1+kn,k∈[1,n-1],于是h
p
′q′ mod n2=g
(p
′q′
)a mod n2=(1+kn)
a mod n2=1+akn;
[0102]
其中,k-1
满足k
·
k-1
=1 mod n2;
[0103]
由于所以存在一个逆元a-1
使得a
·
a-1
=1 mod n2。
[0104]
在本实施例中,加密算法enc具有加法同态特性,即对两个密文进行某种运算等价于先对两个密文对应的明文进行求和,再针对求和所得结果进行加密;验证过程如下:
[0105]
对于任意消息记enc(pk,m1)所使用的随机数是r1,enc(pk,m2)使用的随机数是r2,有:
[0106][0107][0108]
得:
[0109][0110]
给定一个常数γ,
[0111][0112]
其中,于是(1+mn)
γ
mod n2=1+γmn mod n2。
[0113]
还需要说明的是,在本说明书中,诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0114]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1