一种面向隐私保护的浮点数全同态加密方法与流程

文档序号:11234370阅读:1549来源:国知局

本发明涉及一种适用于云计算环境的浮点数全同态加密方法,属于信息安全技术领域。



背景技术:

云服务为广大用户提供了广大的存储空间和强大的计算能力,但在人们享受便利的同时,隐私安全问题随之而来,这被认为是云环境下最大的挑战。研究者们一直在寻求构造一种既能充分利用云端强大的计算能力和存储空间,又能有效保护数据安全的方案。

同态加密与云环境中数据的机密性保护密切相关,是解决云环境中隐私保护问题的关键技术。公开号为106452723a的发明专利申请,公开了一种基于模运算的全同态加密处理方法,包括以下步骤:获取加密过程中任意数值数据类型的明文,并根据加密需要将其转换为对应的进制位明文,对得到的进制位明文中的各个数进行加密运算,将加密运算得到的密文进行组合,从而得到对应的密文组合,采用基于模加密的密文原码、密文反码和密文补码对得到的密文组合进行加减乘除密文运算,利用模除法对获取的密文运算结果进行解密,以获得解密后的明文。该方案能够解决现有的基于模运算的全同态加密处理方法中,由于密文乘法噪音难以控制,以及密文加法的结果等于进制时密文求和的结果在解密过程中出错所导致的加密结果无法被正确解密的技术问题。

另有公开号为103259643b的发明专利申请,公开了一种矩阵全同态加密算法,包括:1)初始化模块:根据待加密矩阵的维数、加密类型和矩阵元素值的范围,来生成加密、解密所需的密钥;2)加密模块:根据给定的明文矩阵,使用加密算法和密钥对明文矩阵进行加密,输出密文矩阵;3)解密模块:根据给定的密文矩阵,使用密钥和解密算法对密文矩阵进行解密,输出明文矩阵;4)矩阵全同态模块:矩阵的加法和乘法运算都满足矩阵同态的性质,矩阵加法和乘法产生的输出仍然满足同态的性质,即满足矩阵全同态的性质。该方案一是能够满足安全性需求;二是满足矩阵全同态的要求;三是明显提高了密文矩阵的运算速度。

但是以上方案虽然在一定程度上满足了安全性的需求,但是可应用的数据类型不广。



技术实现要素:

本发明所要解决的技术问题是:针对如今对于安全计算的需求,提出了一种可应用于云计算环境的浮点数全同态加密方法,通过对浮点数加密,增加方法可应用的数据类型,同时在不泄露隐私的前提下,实现对数据的安全计算。

本发明为解决上述技术问题采用以下技术方案:

一种面向隐私保护的浮点数全同态加密方法,包括如下步骤:

(1)将待加密的浮点数表示为正规表达式,并将浮点数正规表达式的有效数转换为二进制的比特位明文数据;

(2)生成随机私钥,结合伪随机函数用私钥定义公钥元素,并根据生成的随机噪声参数计算出公钥;

(3)利用随机整数矩阵和公钥对明文进行运算,实现对明文数据的部分同态加密;

(4)根据步骤(2)生成新的密钥参数,将新密钥参数与步骤(3)部分同态加密的密文进行运算,实现密文的扩展;然后利用同态解密刷新原密文,生成噪声更小的新密文,从而实现全同态加密。

进一步的,作为本发明的浮点数全同态加密方法,步骤(1)具体如下:

记fl为要加密的任意浮点数,则用四个整数表示fl,即为:

fl=(-1)s′·sig·2e-k(1)

其中s′表示符号位,当s′=0时,fl为正数,当s′=1时,fl为负数;e表示指数,用于控制浮点数的数值范围大小;k表示精度,即为浮点数的有效位数,用于控制浮点数的精度大小;sig表示有效数,满足2k-1≤sig≤2k-1,且sig为整数;

在浮点数fl以正规表达式表示的基础上,将有效数sig转化为二进制比特位形式,记为:

sig=d1d2…dk(2);

其中d1、d2、…、dk代表明文元素。

进一步的,作为本发明的浮点数全同态加密方法,步骤(2)具体为:

令μ2表示私钥的个数,η表示每个私钥的比特位数,生成μ2个η比特的随机素数{pu,v}1≤u,v≤μ,即为其中表示整数集合;

令π表示私钥的乘积,即为π=π1≤u,v≤μpu,v;

令γ表示公钥元素的比特位数,定义公钥元素φ0为φ0=q0·π,其中

若x,y表示任意整数,则定义模运算xmody∈(-y/2,y/2);

令ri,b,u,v,ωi,b,u,v,σi,b,u,v分别为三个噪声参数,ρ为噪声参数的比特位数;

对于噪声参数第一个公钥元素φi,b计算方法如下:

φi,bmodpu,v=ri,b,u,v(3)

其中1≤i≤β,0≤b≤1,1≤u,v≤μ,β为第一个公钥元素φi,0或φi,1的个数;

对于噪声参数第二个公钥元素πi,b计算方法如下:

πi,bmodpu,v=2ωi,b,u,v+δi,b,u,v·2ρ+1(4)

对于噪声参数第三个公钥元素χi,b计算方法如下:

χi,bmodpu,v=2σi,b,u,v+δi,b,u,v(5)

其中1≤i≤μ,0≤b≤1,1≤u,v≤μ,函数δi,b,u,v定义如下:

令私钥集合为sk,则sk={pu,v}1≤u,v≤μ,公钥集合为pk,则

pk=<φ0,(φi,b)1≤i≤β,0≤b≤1,(πi,b)1≤i≤μ,0≤b≤1,(χi,b)1≤i≤μ,0≤b≤1>(7)。

进一步的,作为本发明的浮点数全同态加密方法,步骤(3)具体如下:

令a,a′为随机整数矩阵,生成规则如下:

其中ai,j,a′i,j∈(-2η,2η),

根据步骤(2)生成的密钥和参数,对(2)式中的明文s进行加密,将明文元素d1、d2、…、dk打包存入矩阵m=[mi,j]1≤i,j≤μ,将明文mi,j加密,得到如下密文:

解密过程为:

1≤i,j≤μ,为异或运算符。

进一步的,作为本发明的浮点数全同态加密方法,步骤(4)具体如下:

a、按照步骤(2)中的规则生成私钥sk={pu,v}1≤u,v≤μ和公钥pk,具体包括:

若fl为任意浮点数,则运算[fl]表示fl四舍五入后的整数;生成μ2个θ比特的二进制私钥向量su,v={su,v,0,…,su,v,θ-1},1≤u,v≤μ,θ为向量su,v中元素的个数;

令每个私钥向量的汉明重量为θ,即向量中有θ个元素为1,θ-θ个元素为0;令随机选取θ个整数ui∈[0,2γ+3),i=0,…,θ-1,对于1≤u,v≤μ,使其满足:

令向量y=(y0,…,yθ-1),其中yi=ui/2γ+2,因此yi,0≤i≤θ-1均为小于2的有理正数,且二进制为精度均为γ+2,于是有下式成立:

其中εu,v为误差参数,且满足|εu,v|<2-(γ+2)

则私钥sk*为sk*={su,v}1≤u,v≤μ,公钥pk*为pk*=(pk,y0,y1,…,yθ-1);

b、在步骤(3)加密的基础上,将密文扩展:令zi=c·yimod2,i=0,…,θ-1,令zi的二进制精度为比特,若fl为任意浮点数,则运算表示比fl大的最小整数,输出的密文为(c,z0,…zθ-1);

该密文的解密过程如下:

将私钥su,v,i用步骤(3)的部分同态加密方法,加密为密文αu,v,i,即为:

c、将该私钥的密文放入上述公式(13)中与密文计算,即可得到噪声更小的新密文,使同态计算能一直持续下去。

进一步的,作为本发明的浮点数全同态加密方法,还包括同态性的验证步骤:

将明文mi,j,m′i,j分别加密为:

验证加法满足同态性:

[(c+c′)modpi,j]2=mi,j+m′i,j(16)

验证乘法满足同态性:

[(c·c′)modpi,j]2=mi,j·m′i,j(17)。

本发明采用以上技术方案与现有技术相比,具有以下技术效果:

本发明解决了云计算实际应用过程中要解决的两个问题:一是在数据保证机密性要求的前提下,云端服务器能够直接对密文进行运算。二是针对如今数据量巨大,数据类型丰富的现状,该方法支持对于浮点数的同态加密,更加适用于一般情况。

附图说明

图1是本发明的方法整体流程图。

具体实施方式

下面结合附图对本发明的技术方案做进一步的详细说明:

本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。

本发明针对如今对于安全计算的需求,提出了一种可应用于云计算环境的浮点数全同态加密方法,在密钥生成阶段,生成随机私钥,结合伪随机函数用私钥生成公钥元素,生成随机噪声;在somewhat同态加密过程中,通过公钥和明文进行运算,实现明文数据的部分同态加密;在全同态加密过程中,生成新参数,将新参数与部分同态加密的密文进行运算,实现密文的扩展,然后利用同态解密刷新原密文,生成噪声更小的新密文,从而实现全同态加密。

如图1所示,本发明具体包括以下步骤:

步骤一:浮点数的正规化表达式

记fl为要加密的任意浮点数,则fl可以用四个整数表示,即为:

fl=(-1)s′·sig·2e-k(1)

其中s′表示符号位,当s′=0时,fl为正数,当s′=1时,fl为负数;e表示指数,控制浮点数的数值范围大小;k表示精度,即为浮点数的有效位数,控制浮点数的精度大小;sig表示有效数,满足2k-1≤sig≤2k-1,且sig为整数。

步骤二:将十进制明文转化为二进制的比特位明文

在浮点数fl以正规表达式表示的基础上,将整数sig转化为二进制比特位形式,记为:

sig=d1d2…dk(2)

步骤三:对明文数据实现部分同态加密

首先生成密钥。令μ2表示私钥的个数,η表示每个私钥的比特位数,生成μ2个η比特的随机素数{pu,v}1≤u,v≤μ,即为其中表示整数集合。令π表示私钥的乘积,即为π=∏1≤u,v≤μpu,v。令γ表示公钥元素的比特位数,定义公钥元素φ0为φ0=q0·π,其中若x,y表示任意整数,则定义模运算xmody∈(-y/2,y/2)。

令ri,b,u,v,ωi,b,u,v,σi,b,u,v分别为三个噪声参数,ρ为噪声参数的比特位数。

对于噪声参数第一个公钥元素φi,b计算方法如下:

φi,bmodpu,v=ri,b,u,v(3)

其中1≤i≤β,0≤b≤1,1≤u,v≤μ。β为第一个公钥元素φi,0或φi,1的个数。

对于噪声参数第二个公钥元素πi,b计算方法如下:

πi,bmodpu,v=2ωi,b,u,v+δi,b,u,v·2ρ+1(4)

对于噪声参数第三个公钥元素χi,b计算方法如下:

χi,bmodpu,v=2σi,b,u,v+δi,b,u,v(5)

其中1≤i≤μ,0≤b≤1,1≤u,v≤μ,函数δi,b,u,v定义如下:

令私钥集合为sk,则sk={pu,v}1≤u,v≤μ,公钥集合为pk,则

pk=<φ0,(φi,b)1≤i≤β,0≤b≤1,(πi,b)1≤i≤μ,0≤b≤1,(χi,b)1≤i≤μ,0≤b≤1>(7)

令a,a′为随机整数矩阵,生成规则如下:

其中ai,j,a′i,j∈(-2η,2η)。

根据上面生成的密钥和参数,对(2)式中的明文s进行加密,将明文元素d1、d2、…、dk打包存入矩阵m=[mi,j]1≤i,j≤μ,将明文mi,j加密,得到如下密文:

解密过程为:

1≤i,j≤μ,为异或运算符。部分同态加密后的密文所含噪声较大,在进行有限次运算后,会导致噪声溢出,解密失败,因此需要步骤四压缩解密电路。

步骤四:压缩解密电路,实现全同态加密

在步骤三的基础上,生成新的密钥和参数。首先按照步骤三中部分同态加密方案的规则生成私钥sk={pu,v}1≤u,v≤μ和公钥pk。若fl为任意浮点数,则运算[fl]表示fl四舍五入后的整数。生成μ2个θ比特的二进制私钥向量su,v={su,v,0,…,su,v,θ-1},1≤u,v≤μ,θ为向量su,v中元素的个数。令每个私钥向量的汉明重量为θ,即向量中有θ个元素为1,θ-θ个元素为0。令随机选取θ个整数ui∈[0,2γ+3),i=0,…,θ-1,对于1≤u,v≤μ,使其满足:

令向量y=(y0,…,yθ-1),其中yi=ui/2γ+2,因此yi,0≤i≤θ-1均为小于2的有理正数,且二进制为精度均为γ+2。于是有下式成立:

其中εu,v为误差参数,且满足|εu,v|<2-(γ+2)

则私钥sk*为sk*={su,v}1≤u,v≤μ,公钥pk*为pk*=(pk,y0,y1,…,yθ-1)。

在步骤三加密的基础上,将密文扩展,令zi=c·yimod2,i=0,…,θ-1,令zi的二进制精度为比特,若fl为任意浮点数,则运算表示比fl大的最小整数。输出的密文为(c,z0,…zθ-1)。

该密文的解密过程如下:

将私钥su,v,i用步骤三的部分同态加密方法,加密为密文αu,v,i,即为:

将该私钥的密文放入上述的解密电路中与密文计算,即可得到噪声较小的新密文,使同态计算可以一直持续下去。

步骤五:同态性的验证

明文mi,j,m′i,j分别加密为:

加法满足同态性:

[(c+c′)modpi,j]2=mi,j+m′i,j(16)

乘法满足同态性:

[(c·c′)modpi,j]2=mi,j·m′i,j(17)

综上所述,本发明首先将浮点数表示为正规表达式,然后将其进行部分同态加密,压缩解密电路,实现全同态加密。再上传到云环境中,供使用者使用,在数据保密的基础上,实现对数据的安全计算。

以下结合具体实例对本发明的原理做进一步说明:

步骤一:浮点数的正规化表达式

令浮点数x为2.25,即x=2.25,精度为20,即k=20。则x可用正规表达式表示为:

x=(-1)0·9·220·2-2-20(18)

步骤二:十进制明文转化位二进制比特位

将表达式中的有效数部分转化为二进制形式,即由于该浮点数的精度要求较低,也为了更加方便的演示加密过程,将表达式简化为:

x=(-1)0·9·2-2(19)

则二进制明文为9=1001。

步骤三:对密文数据实现部分同态加密

首先生成密钥。生成随机素数p1,1=11,p1,2=13,p2,1=17,p2,2=19作为私钥,π表示它们的乘积,即π=p1,1·p1,2·p2,1·p2,2=46189,令q0=23,则无差错公钥元素φ0=q0·π=1062347,γ=20。将明文1001分成两部分[0,0]、[1,1],用私钥p1,1加密[0,0],用私钥p1,2加密[1,1]。由以上参数计算第一类公钥元素:

由于第二类公钥元素需要满足[πi,bmodp1,i]2=0,i=1,2,b=1,2,所以有:π1,0=13,π1,1=132,π2,0=143,π2,1=145。

第三类公钥元素需要满足以下条件:

所以有χ1,0=78,χ1,1=221,χ2,0=66,χ2,1=209。

由p1,1加密的明文[0,0]打包加密为密文c1,由p1,2加密的明文[1,1]打包加密为密文c2。生成随机整数矩阵a=(a1,a2)=(1,1),a′=(a1′,a2′)=(1,1),则可得密文如下:

将c1,c2解密可得:

解密正确。

步骤四:压缩解密电路,实现全同态加密

在步骤三已有参数的基础上,生成新的参数,θ=2,θ=4,γ=20,令随机选取2个θ比特的二进制向量s1,1={1,1,0,0},s1,2={0,0,1,1}。随机选取θ个整数ui∈[0,2κ+1),满足:

即381300=u0+u1mod223,322639=u2+u3mod223,令

u0=4194304,u1=4575604,u2=4194304,u3=4516943(25)

可得公钥元素

将步骤三中的密文c1,c2扩展

zi,j小数点后的二进制精度为2比特,其中i=1,2,j=0,1,2,3。

则扩展后的密文为(-467324,0.00,0.00,0.00,0.00),(-436292,0.00,1.00,0.00,1.00)。

将扩展密文解密可得:

解密正确。

利用解密电路同态解密,刷新密文,降低密文噪声。首先将私钥向量s1,1,s1,2加密,可得s1,1的密文向量为(-436292,-436292,-467324,-467324),s1,2的密文向量为(-467324,-467324,-436292,-436292)。输入解密电路可得新密文分别为:

将新密文解密可得:

解密正确。

步骤五:同态性的验证

加法满足同态性:

[(c1′+c3′)modp1]2=m1+m3=1(30)

乘法满足同态性:

[(c1′·c3′)modp1]2=m1·m3=0(31)

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1