一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于共轭搜索问题的leveled同态加密方法

2022-12-20 00:52:27 来源:中国专利 TAG:


1.本发明属于信息安全技术领域,涉及一种同态加密方法,尤其是一种基于共轭搜索问题的leveled同态加密方法。


背景技术:

2.在云计算,大数据背景下的网络社会,越来越多的数据需要被计算从而为人们提供更加优质的服务。参与计算的数据有可能是极度隐私的数据(例如医疗系统中病人的敏感身份信息等),但是通过计算这其中的数据,又对分析以及处理病人的健康状况起到了重要的作用。
3.但当前的密码体系大部分只能做到对信息的加密,却不能对加密的信息进行操作。
4.这个时候就需要引入同态加密方案,同态加密指的是对于一个需要保护的数据m1,m2...mn,运行加密函数enc(m1),enc(m2)...enc(mn),对于该加密函数的解密函数存在满足的性质:
5.dec(f(enc(m1),enc(m2)...,enc(mn))=f(m1,m2,...,mn)
6.其中,enc指加密方法,dec指解密方法,f代表需要进行的同态运算。
7.现有的同态加密方法分为:全同态加密、部分同态加密和leveled同态加密;其中,leveled同态加密方法允许进行限定次数(该限定次数可以由用户自己指定)的乘法同态计算,但是对于加法可以进行任意次数。
8.但现有技术中leveled同态加密方法存在用户解密难度大、解密时间长的缺陷。
9.而且,现有技术中虽然也提出的基于共轭搜索问题的全同态加密方法虽然具有满足了全同态的性质,但是并不安全,攻击方仅需要求其密文对应的特征值就能够得到其加密的明文。
10.经检索,未发现与本发明相同或相似的现有技术中的文献。


技术实现要素:

11.本发明的目的在于克服现有技术的不足,提出一种能够安全地在云计算平台计算数据且不泄露数据的基于共轭搜索问题的leveled同态加密方法。
12.本发明解决其现实问题是采取以下技术方案实现的:
13.一种基于共轭搜索问题的leveled同态加密方法,包括以下步骤:
14.步骤1、定义一个新的内积方式,并在setup(λ,l,k)中,对密钥和各类安全参数进行初始化;
15.步骤2、在encrypt(m,h,t)中,对需要加密的明文进行加密;
16.步骤3、计算发起方将加密后的密文发送给云计算方进行同态乘法操作和同态加法操作;
17.步骤4、云计算平台完成计算发起方的所有要求之后,使用dimension_reduce(c,
ab,d,k)操作,对密文维数进行简约操作,并将最终结果返回给计算发起方;
18.在步骤5、计算发起方通过云计算方返回的密文向量c,对其进行decrypt(c,sk,h)解密操作,得到最终的计算结果。
19.而且,所述步骤1的定义一个新的内积方式为:
20.《a,b》,其表示仅求向量a,b中前i个元素的乘积之和,其中i代表的是向量a和b中最短的维数),用数学表达式表达为:
[0021][0022]
而且,所述步骤1的在setup(λ,l,k)中,对密钥和各类安全参数进行初始化的具体步骤包括:
[0023]
101)首先选定一个方案所使用的数域f;
[0024]
102)限定同态乘法操作的最大次数λ;
[0025]
103)选定一个有限生成的线性群,该群的元素为维数为l的方阵的
[0026]
104)随机生成一个数域f中的数t作为密钥,如果选择实数域作为空间,那么密钥t应当选择绝对值小于1的实数;
[0027]
105)随机生成该有限生成线性群内的元素h,h为l维的可逆方阵,也是一个密钥。得到密钥向量:sk=(1,t,t2,...,t
λp
)。
[0028]
而且,所述步骤2的具体步骤包括:
[0029]
201)计算发起方将需要加密的明文m分解为m1 m2=m,其中m1,m2来自和m一样的明文空间;
[0030]
202)构造如下的l维加密方阵m,m是一个以2x2的方阵为块的上三角方阵,其左下角是0方阵。其中a,b,...,k...为任意来自数域f的元素,注意:m应该为可逆方阵;
[0031]
203)按照上方密钥方阵h的生成方式,生成两个可逆方阵k1,k2;
[0032]
204)根据上方得到的密钥方阵h和t计算得到c0=h-1
(m-tk
1-t
p
k2)h,c1=h-1
k1h,c
p
=h-1
k2h;根据共轭搜索问题的假设,此时攻击方就算拿到c1=h-1
k1h,c
p
=h-1
k2h,也很难单独将其破解为h和k1,k2。
[0033]
205)输出得到的密文向量c=(c0,c1,0,...,c
p
)
[0034]
其中,c是一个p 1维的向量,密文中c的每一个元素都是l维方阵,其中0代表0方阵;
[0035]
206)如果此时选择的数域是实数域,还可以选择进行如下操作来简约密文的维数:否则直接去到步骤3;
[0036]
207)此时计算发起方还应当计算通过取密钥方阵h第一行的无穷范数a,h-1
第一列第二列的无穷范数b以及大于密钥t的绝对值的一个小数d(例如t=0.45,那么就取d=0.5
也可以取0.6,0.7);
[0037]
208)将计算得到的参数ab=a*b,d以及各个数据加密后的结果密文向量c以及所需的精度k和计算方式f发送给云计算平台。
[0038]
而且,所述步骤3的具体步骤包括:
[0039]
(1)计算发起方将加密后的密文发送给云计算方进行mult(c,c’)同态乘法操作,输出两个密文进行同态乘法得到的新的密文;
[0040]
其中,c代表一个密文向量,c’代表另一个密文向量,输出新的密文向量c”,其中c”的计算方式如下:
[0041][0042]
(2)计算发起方将加密后的密文发送给云计算方进行add(c,c’)同态加法操作,输出两个密文进行同态加法得到的新的密文;
[0043]
其中,c代表一个密文,c’代表另一个密文,输出密文向量c”=c c’,此时不妨设deg(c)》deg(c’),于是c”的计算方式如下:
[0044][0045]
其中,c”是一个维数小于等于λp 1的密文向量。
[0046]
而且,所述步骤4的具体步骤包括:
[0047]
401)初始化一个累计计算参数tmp=0
[0048]
402)云计算方从密文c的最后一个密文矩阵向前选取矩阵的无穷范数,例如:c=(c0,c1,...,cn)(n《=λp)云计算方首先计算cn的无穷范数o,
[0049]
403)计算tmp=tmp o*a*b*d n
[0050]
404)如果tmp《k/2
[0051]
那么就可以删去cn这个密文矩阵,并返回步骤502),否则去到步骤505)
[0052]
405)最终将得到的约简了维度的密文c’返还给计算发起方。
[0053]
而且,所述步骤5的具体步骤包括:
[0054]
501)计算发起方首先通过密钥方阵h进行计算:m=h《sk,c》h-1
[0055]
502)计算发起方再通过计算m’=m
[1,1]
m
[1,2]
,最终对m’进行取精度k得到最终的计算结果m。
[0056]
本发明的优点和有益效果:
[0057]
1、本发明提出一种基于共轭搜索问题的leveled同态加密方法,通过添加额外的“噪声”来规避攻现有技术中击方仅需要求其密文对应的特征值就能够得到其加密的明文的缺陷,使攻击方必须通过解决一个在有限域内的一元高次方程才能够有可能得到加密的明文,提高了方案的安全性。
[0058]
2、本发明能够广泛应用在当前的云计算环境下,能够解决用户在不泄露自身数据隐私的情况下,让云计算平台帮助用户完成用户所需要的计算。当计算完成后,云计算平台既不能得到用户发送给他的数据,也不能得到用户得到的计算结果,从而极大限度地保护了用户的数据隐私安全。
[0059]
3、本发明通过让用户指定计算所在的数域,如果指定的数域是实数域,用户还可以指定所需要的精度,通过近似计算的方法达到降低用户解密难度的效果。
附图说明
[0060]
图1是本发明的处理流程图。
具体实施方式
[0061]
以下结合附图对本发明实施例作进一步详述:
[0062]
一种基于共轭搜索问题的leveled同态加密方法,如图1所示,包括以下步骤:
[0063]
步骤1、定义一个新的内积方式,并在setup(λ,l,k)中,对密钥和各类安全参数进行初始化;
[0064]
所述步骤1的定义一个新的内积方式为:
[0065]
《a,b》,其表示仅求向量a,b中前i个元素的乘积之和(其中i代表的是向量a和b中最短的维数),用数学表达式表达为:
[0066][0067]
所述步骤1的在setup(λ,l,k)中,对密钥和各类安全参数进行初始化的具体步骤包括:
[0068]
104)首先选定一个方案所使用的数域f;
[0069]
105)限定同态乘法操作的最大次数λ;
[0070]
106)选定一个有限生成的线性群,该群的元素为维数为l的方阵的
[0071]
104)随机生成一个数域f中的数t作为密钥,如果选择实数域作为空间,那么密钥t应当选择绝对值小于1的实数;
[0072]
105)随机生成该有限生成线性群内的元素h,h为l维的可逆方阵,也是一个密钥。得到密钥向量:sk=(1,t,t2,...,t
λp
)。
[0073]
步骤2、在encrypt(m,h,t)中,对需要加密的明文进行加密;
[0074]
所述步骤2的具体步骤包括:
[0075]
209)计算发起方将需要加密的明文m分解为m1 m2=m,其中m1,m2来自和m一样的明文空间;
[0076]
210)构造如下的l维加密方阵m,m是一个以2x2的方阵为块的上三角方阵,其左下角是0方阵。其中a,b,...,k...为任意来自数域f的元素,注意:m应该为可逆方阵;
[0077][0078]
211)按照上方密钥方阵h的生成方式,生成两个可逆方阵k1,k2;
[0079]
212)根据上方得到的密钥方阵h和t计算得到c0=h-1
(m-tk
1-t
p
k2)h,c1=h-1
k1h,c
p
=h-1
k2h;根据共轭搜索问题的假设,此时攻击方就算拿到c1=h-1
k1h,c
p
=h-1
k2h,也很难单独将其破解为h和k1,k2。
[0080]
213)输出得到的密文向量c=(c0,c1,0,...,c
p
)
[0081]
其中,c是一个p 1维的向量,密文中c的每一个元素都是l维方阵,其中0代表0方阵;
[0082]
214)如果此时选择的数域是实数域,还可以选择进行如下操作来简约密文的维数:否则直接去到步骤3;
[0083]
215)此时计算发起方还应当计算通过取密钥方阵h第一行的无穷范数a,h-1
第一列第二列的无穷范数b以及大于密钥t的绝对值的一个小数d(例如t=0.45,那么就取d=0.5也可以取0.6,0.7);
[0084]
216)将计算得到的参数ab=a*b,d以及各个数据加密后的结果密文向量c以及所需的精度k和计算方式f发送给云计算平台。
[0085]
步骤3、计算发起方将加密后的密文发送给云计算方进行同态乘法操作和同态加法操作
[0086]
所述步骤3的具体步骤包括:
[0087]
(1)计算发起方将加密后的密文发送给云计算方进行mult(c,c’)同态乘法操作,输出两个密文进行同态乘法得到的新的密文;
[0088]
其中,c代表一个密文向量,c’代表另一个密文向量,输出新的密文向量c”,其中c”的计算方式如下:
[0089][0090]
在本实施例中,经过一次乘法同态运算,就会导致密文向量的维数增加;
[0091]
(2)计算发起方将加密后的密文发送给云计算方进行add(c,c’)同态加法操作,输出两个密文进行同态加法得到的新的密文;
[0092]
其中c代表一个密文,c’代表另一个密文,输出密文向量c”=c c’,此时不妨设deg(c)》deg(c’),于是c”的计算方式如下:
[0093][0094]
其中注意:c”是一个维数小于等于λp 1的密文向量。
[0095]
步骤4、云计算平台完成计算发起方的所有要求之后,使用dimension_reduce(c,ab,d,k)操作,对密文维数进行简约操作,并将最终结果返回给计算发起方;
[0096]
在本实施例中,当云计算平台完成了计算发起方的所有要求之后会得到一个最终的密文向量c,如果此时选择的数域是实数域,则去到步骤401),此时执行dimension_reduce(c,ab,d,k)操作,否则如果是正常的有限域计算则直接将得到的密文发送给计算发起方,则去到步骤405),dimension_reduce(c,ab,d,k)具体步骤如下:
[0097]
所述步骤4的具体步骤包括:
[0098]
401)初始化一个累计计算参数tmp=0
[0099]
402)云计算方从密文c的最后一个密文矩阵向前选取矩阵的无穷范数,例如:c=
(c0,c1,...,cn)(n《=λp)云计算方首先计算cn的无穷范数o,
[0100]
403)计算tmp=tmp o*a*b*d n
[0101]
404)如果tmp《k/2
[0102]
那么就可以删去cn这个密文矩阵,并返回步骤502),否则去到步骤505)
[0103]
405)最终将得到的约简了维度的密文c’返还给计算发起方。
[0104]
在步骤5、计算发起方通过云计算方返回的密文向量c,对其进行decrypt(c,sk,h)解密操作,得到最终的计算结果。
[0105]
所述步骤5的具体步骤包括:
[0106]
501)计算发起方首先通过密钥方阵h进行计算:m=h《sk,c》h-1
[0107]
502)计算发起方再通过计算m’=m
[1,1]
m
[1,2]
,最终对m’进行取精度k得到最终的计算结果m。
[0108]
下面通过具体算例对本发明作进一步说明:
[0109]
在本实例中,假设用户“张三”持有一堆数据m
01
=81,m
02
=48,用户“张三”需要通过云服务器计算得到f=m
014
*m
024
的数据结果。假设服务器“李四”拥有足够算量的服务器为张三提供服务。
[0110]
假设双方已经选定了本发明的基于共轭搜索问题的(leveled)同态加密方法:
[0111]
1)setup张三设定该同态加密方案的参数。
[0112]
101)选定安全参数l=4,λ=8,k=1,p=5,假设此时选择的数域是实数域;
[0113]
102)选定密钥t=0.008,此时得到密钥向量sk=(1,t,t2,...,t
40
);
[0114]
103)选定密钥方阵h
[0115][0116]
104)计算h的逆方阵h-1
[0117]
2)encrypt张三根据加密函数计算加密后的数据(这里以m
01
=81为例)
[0118]
201)通过上方的加密方式,随机生成一个原始加密方阵m:
[0119][0120]
202)再通过生成密钥方阵h的方式生成两个随机方阵k1,k2:
[0121][0122]
203)计算m
01
加密后的密文向量:
[0123]c01
=(h-1
(m-tk
1-t5k2)h,h-1
k1h,0,...,h-1
k2h);
[0124]
204)根据m
01
的加密方式对m
02
进行加密得到c
02

[0125]
205)张三计算密钥方阵h第一行的无穷范数a=13,h-1
第一列第二列的无穷
[0126]
范数b=0.135以及大于t的绝对值的一个小数d=0.01。
[0127]
206)将计算得到的参数a*b,d各个数据加密后的结果密文向量c以及所需的精度k=1和计算方式f=m
014
*m
024
发送给李四。
[0128]
3)李四通过张三发送的密文以及计算方式进行计算,用add(c
01
,c
02
)计算密文c
01
与密文c
02
的加法,用mult(c
01
,c
02
)计算密文c
01
与c
02
的乘法。按照f=m
014
*m
024
,李四需要计算:
[0129]
301)c
03
=mult(c
01
,c
02
)
[0130]
302)c
04
=mult(c
03
,c
03
)
[0131]
303)c
05
=mult(c
04
,c
04
)
[0132]
进一步,根据上述数据会得到一个维数为41的密文向量c
05

[0133]
4)李四使用dimension_reduce(c
05
,13*0.135,0.01,1)通过张三发送的ab,d的数据对密文维数进行约简,并将简约之后的密文返回给张三。通过上述数据可以将密文的维数简约到小于41维的新密文。
[0134]
5)假设李四发送给张三的密文向量为c,张三通过使用decrypt(c,sk,h)
[0135]
501)计算m’=h《c,sk》h-1
得到m’,
[0136]
502)通过计算m’[1,1]
m’[1,2]
并取k的精度1得到最终的计算结果(81*48)的四次方。
[0137]
需要强调的是,本发明所述实施例是说明性的,而不是限定性的,因此本发明包括并不限于具体实施方式中所述实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献