用于完全同态加密的精度控制及累计误差消除方法与流程

文档序号:15929398发布日期:2018-11-14 01:28阅读:283来源:国知局

本发明涉及信息安全技术领域,尤其涉及一种用于完全同态加密的精度控制及累计误差消除方法。

背景技术

中国专利201510192143.1中所提出的基于系数映射变换的多项式完全同态加密方法对密文数据进行运算其本质是一种近似运算,因此如何控制运算精度是一个重要的问题。尤其是在连续进行多次密文运算后,累计误差会逐步变大,以致结果密文在解密后显著偏离正确的取值,从而影响该方法和系统的实际使用。

相比较于受到广泛学术研究的格上完全同态加密方法的精确运算特征,基于系数映射变换的多项式完全同态加密算法其密文运算采用了近似运算原理,从而可以在保证密文安全性的同时大大提升密文运算的整体效率,同时可以很好的控制密文的体积及其扩张速度,但与此同时,近似运算付出的代价则是精度的损失。

单次密文同态运算的精度问题主要源于基于系数映射变换的多项式完全同态加密方法的原始方案的近似运算特征,其中运算支持函数的采样密度越高,则运算精度也越高,但是同时运算支持函数的体积则会急速扩张,对网络存储和传输都带来不利影响。但如果采用密度过低,则运算精度甚至无法满足低有效位数密文的单次运算需要。因此,这里的运算精度和运算资源(存储空间和计算时间)是互斥的一对参数。



技术实现要素:

鉴于目前存在的上述不足,本发明提供一种用于完全同态加密的精度控制及累计误差消除方法,能够在同等采样密度的基础上,单次密文运算精度可以达到完全精确,而任意次数连续密文运算的精度也可以达到完全精确。

为达到上述目的,本发明的实施例采用如下技术方案:

一种用于完全同态加密的精度控制方法,所述用于完全同态加密的精度控制方法包括以下步骤:

对明文进行拆分;

针对每一个组成部分进行加密并通过运算得到结果密文;

对结果密文进行同态比较运算;

通过比较运算结果进行保留操作或者进行进位及保留操作;

通过解密和取整操作获得结果明文。

优选地,所述对明文进行拆分具体为:将明文表达成二进制后,按字节进行拆分,得到若干个组成部分p,p满足下式,

p={pm,pe}

pm={pm1,pm2,...,pmn},pmi∈[1,n]∈[0,256]

pe={pe1,pe2,...,pen},pei∈[1,n]∈[0,256]。

当p为整数时,p={p1,p2,...,pn},pi∈[1,n]∈[0,256]。

优选地,所述针对每一个组成部分进行加密并通过运算得到结果密文包括:

对每一个组成部分进行加密得到密文,

enc(p,key)={enc(p1,key),enc(p2,key),...,enc(pn,key)}={c1,c2,...,cn};

进行加法或者乘法运算时,先分别针对密文的每个部分进行运算,然后再将各个部分的运算结果组成结果密文,

{c11,c12,...,c1n}+{c21,c22,...,c2m}

={c11+c21,c12+c22,...,c1n+c2n,c2n+1,...,c2m}

n<m

{c11,c12,...,c1n}×{c21,c22,...,c2m}

={c11·c21,c11c22+c12c21,c11c23+c12c22+c13c21,...,c2m}。

n<m

优选地,所述对结果密文进行同态比较运算包括:预设一比较运算分辨率,对结果的每个组成部分进行比较,可以得知每个组成部分运算结果是否大于比较运算分辨率。

优选地,所述通过比较运算结果进行保留操作或者进行进位及保留操作包括:如果小于比较运算分辨率,则这部分保留;如果大于比较运算分辨率,则进行进位操作,具体为,使用公钥加密的方式,得到符合比较运算分辨率的密文,然后使用同态减法操作将待规约的密文反复减去比较运算分辨率,直至结果小于比较运算分辨率为止。然后将得到的进位数通过公钥加密后加到高位的密文上即可。

一种用于完全同态加密的累计误差消除方法,所述用于完全同态加密的累计误差消除方法包括以下步骤:

对明文进行拆分;

针对每一个组成部分进行加密并通过运算得到结果密文;

对结果密文进行同态比较运算;

通过比较运算结果进行保留操作或者进行进位及保留操作;

在密文状态下进行同态取整操作;

通过解密和取整操作获得结果明文。

优选地,所述对明文进行拆分具体为:将明文表达成二进制后,按字节进行拆分,得到若干个组成部分p={p1,p2,...,pn},pi∈[1,n]∈[0,256]。

优选地,所述针对每一个组成部分进行加密并通过运算得到结果密文包括:

对每一个组成部分进行加密得到密文,

enc(p,key)={enc(p1,key),enc(p2,key),...,enc(pn,key)}={c1,c2,...,cn};

进行加法或者乘法运算时,先分别针对密文的每个部分进行运算,然后再将各个部分的运算结果组成结果密文,

{c11,c12,...,c1n}+{c21,c22,...,c2m}

={c11+c21,c12+c22,...,c1n+c2n,c2n+1,...,c2m}

n<m

{c11,c12,...,c1n}×{c21,c22,...,c2m}

={c11·c21,c11c22+c12c21,c11c23+c12c22+c13c21,...,c2m}。

n<m

优选地,所述对结果密文进行同态比较运算包括:预设一比较运算分辨率,对结果的每个组成部分进行比较,可以得知每个组成部分运算结果是否大于比较运算分辨率。

优选地,所述通过比较运算结果进行保留操作或者进行进位及保留操作包括:如果小于比较运算分辨率,则这部分保留;如果大于比较运算分辨率,则进行进位操作,具体为,使用公钥加密的方式,得到符合比较运算分辨率的密文,然后使用同态减法操作将待规约的密文反复减去比较运算分辨率,直至结果小于比较运算分辨率为止。然后将得到的进位数通过公钥加密后加到高位的密文上即可。

优选地,所述在密文状态下进行同态取整操作包括:利用高斯函数的取整特性,结合运算支持函数,计算得到密文的小数部分,再利用同态减法获得密文取整。

优选地,所述高斯函数表达式如下:

其结果是变量x的小数部分。

当i=2时,基于系数映射变化的完全同态加密算法得到的密文可以表达为:

将该密文表达式代入所述述高斯方程可得:

式中g为高斯函数,c为密文,ai为分项系数,明文一部分,f1为函数密钥部分的第一个函数,密钥的一部分,f2为函数密钥部分的第二个函数,密钥的一部分,xi为第一密钥函数的自变量,明文一部分,yi为第二密钥函数的自变量,明文一部分,zi为多项式密钥部分的分项,密钥的一部分;

通过同态三角函数运算和同态反三角函数运算,求解得到高斯函数的结果密文cg,即输入密文c的小数部分。

优选地,通过一次同态减法运算,得到

cfinal=c-cg

这里的cfinal就是经过同态取整运算的结果密文。

本发明实施的优点:通过对明文进行拆分;针对每一个组成部分进行加密并通过运算得到结果密文;对结果密文进行同态比较运算;通过比较运算结果进行保留操作或者进行进位及保留操作;通过解密和取整操作获得结果明文,实现对基于系数映射变换的多项式完全同态加密方法进行精度控制;这样操作后,运算结果密文的每一字节部分都可以控制在原方案的精度范围内,通过解密和取整操作之后,结果明文可以达到完全精确。

每次密文同态运算之后都需要进行同态取整运算,这样就可以保证每一步的结果密文精度都在可接受的范围内,即每一步的结果密文进行解密和取整操作后都是正确的。

同时,由于每次运算后都进行同态取整运算,运算误差就不会在计算过程中被累积,而是在每一次运算后被重置了,这样就可以消除累计误差的影响,达到任意次数精确无损的密文运算。

在同等采样密度的基础上,原始加密方案的密文运算精度在十万分之一,而经过本发明改进的加密方案其单次密文运算精度可以达到完全精确,而任意次数连续密文运算的精度也可以达到完全精确。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明基本应用示意图。

图2为本发明密钥生成过程示意图。

图3为实施例数据加密过程示意图。

图4为本发明实施例一所述的用于完全同态加密的精度控制方法示意图。

图5为为本发明实施例二所述的用于完全同态加密的精度控制方法示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

如图1、图2、图3和图4所示,本发明对应于不同的需求环境和应用场景可采用多种方式实现,包括:usbkey实现方式、api实现方式、sdk实现方式、芯片实现方式、扩展卡实现方式、专用设备实现方式等。任意一种实现方式中均包括:客户端和服务器端,典型的同态加密运算过程的步骤如下:

1)客户端调用本地存储的密钥对敏感明文数据进行加密,获得密文;

2)客户端将密文以及运算要求发送到服务端,密钥保留于客户端;

3)服务端调用对应的运算支持函数族,并使用同态运算功能,对客户端上传的密文进行其所要求的运算操作,随后返回运算结果密文;

4)客户端接收结果密文,调用本地密钥进行解密,并输出结果明文。

这样的过程中,密钥和明文数据仅仅出现在客户端,而整个传输、运算、存储操作中数据始终以密文的形式存在,因此不存在数据泄露的可能。

所述加密过程中,包括用于单次完全同态加密的精度控制方法,其具体包括以下步骤:

步骤s1:对明文进行拆分;

单次密文同态运算的精度问题主要源于基于系数映射变换的多项式完全同态加密方法的原始方案的近似运算特征,其中运算支持函数的采样密度越高,则运算精度也越高,但是同时运算支持函数的体积则会急速扩张,对网络存储和传输都带来不利影响。但如果采用密度过低,则运算精度甚至无法满足低有效位数密文的单次运算需要。因此,这里的运算精度和运算资源(存储空间和计算时间)是互斥的一对参数。

在本实施例中,以整数明文为例进行说明:

将明文先进行拆分,把一个高有效位数的整数表达成若干个低有效位数的整数的组合,然后针对每一个组成部分进行加密。最常见的拆分方式就是进制转换,在本实施例中采用256进制,即在计算机二进制环境下,每八位二进制数(一个字节)作为一个组成部分。

按字节拆分

将整数明文表达成二进制后,按字节进行拆分,得到若干个0~256的整数部分。

p={p1,p2,...,pn},pi∈[1,n]∈[0,256]

步骤s2:针对每一个组成部分进行加密并通过运算得到结果密文;

所述针对每一个组成部分进行加密并通过运算得到结果密文包括:

对每一个组成部分进行加密得到密文,

enc(p,key)={enc(p1,key),enc(p2,key),...,enc(pn,key)}={c1,c2,...,cn};

进行加法或者乘法运算时,先分别针对密文的每个部分进行运算,然后再将各个部分的运算结果组成结果密文,

{c11,c12,...,c1n}+{c21,c22,...,c2m}

={c11+c21,c12+c22,...,c1n+c2n,c2n+1,...,c2m}

n<m

{c11,c12,...,c1n}×{c21,c22,...,c2m}

={c11·c21,c11c22+c12c21,c11c23+c12c22+c13c21,...,c2m}

n<m。

步骤s3:对结果密文进行同态比较运算;

使用两项的情况来进行说明,即i={1,2}。假设需要判断密文c是否大于0,整个步骤如下:

a.密钥持有者随机生成新的临时密钥k'={f'(),y'},并调用密钥置换操作将c转换成新密钥空间下的密文c';

b.密钥持有者随机生成新的函数密钥部分f″(),然后给出比较支持函数:

其中,h(x1,x2)≠h(x2,x1)≠x1≠x2,f″(x)>0且满足f″()处处可微。

c.密钥持有者围绕临时密钥的多项式密钥部分y'={y1',y2'},给出一个具有合理面积的矩形区间rect(y')

d.将密文c'针对y'的每一个分量求偏导数

e.然后求解c'的一阶偏导数等于0的方程,记录所有在矩形区间rect(y')中的解;

f.将矩形区间rect(y')的四个顶点加入求值点集合,然后对矩形区间内部所有偏导数等于0的解进行交叉组合,获得新的求值点加入该集合,最后将这些解对应的矩形区间边界上的投影点也加入该集合;

g.将求值点集合中的每一个点yi'={y1i',y2i'}代入密文c',并且使用比较支持函数gcomp将密文c'转换成形如a″·f″(x)的表达式,由于f″(x)>0,因此通过判断a″的符号,就可以判断密文表达式c'在该求值点上是否大于0;

h.计算所有求值点的符号,如果所有求值点都大于0,则可以得到结论c'>0,进而判断c>0;如果所有求值点均小于0,则可以得到结论c'<0,进而判断c<0;如果求值点同时存在大于0和小于0的情况,则无法判断c'是否大于0;

i.如果出现无法判断的情况,可以采取两个方法进行修正操作,一个方法是围绕y'缩小和移动rect(y');另一个方法是选取较大的正整数z,并重新计算z·c'。

上述操作过程,实际上是将二维的密文表达式c'看成三维空间中的一个曲面方程,判断该曲面在密钥对应的点附近与零平面的相交情况就可以得到c'是否大于零的判定结果。同样的方法适用于更高维度的情况,只是所需要的计算量更大,这里采用的比较运算分辨率为256,对结果的每个整数部分进行比较,可以得知每个整数部分运算结果是否大于256。

步骤s4:通过比较运算结果进行保留操作或者进行进位及保留操作;

通过步骤s3的比较情况进行判断,如果小于256,则这部分整数保留;如果大于256,则进行进位操作。

根据基于系数映射变换的多项式完全同态加密方法,取任意实数p∈r,其加密原理可以表示成公式:

其中,f(xi)>0且f()可微,记a={ai|i∈i},x={xi|i∈i},y={yi|i∈i},则密钥为k={f(),y},密文为c={a,x,b}。

上述运算过程只有一把密钥k,加密或者解密时都需要k的参与才能进行,也就是说加密与解密运算同时使用一把密钥,一旦密钥k丢失所有密文将泄露,因此加密和解密运算都必需由密钥持有者自己进行。这样的加密体制称为对称加密体制。

由于完全同态加密方法所得到的密文具有可运算特点,使用同一个密钥加密的密文,彼此之间可以依靠运算支持函数进行运算,而使用不同的密钥加密的密文则不能。因此,我们称使用同一个密钥生成的所有密文构成了这个密钥所对应的密文空间,也就是说只有同一个密钥空间中的两个密文才可以运算,而不同密钥空间中的密文不能进行运算。

现在,随机生成第二把密钥k'={f'(),y'},同时基于原密钥k,对明文1进行加密操作得到单位密文记为ck,1。

然后,定义公钥加密支持函数其中,h1为任意二元函数,且满足条件h1(x,x')≠x≠x'。

使用第二把密钥k'={f'(),y'}加密任意明文p,获得的密文ck',其所在的密钥空间为sk'。可以通过计算如下公式得到混合密钥空间sk'k的密文:

c'=ck'·ck,1

最后,通过gk',k将c'转换到密钥k的密文空间sk,得到ck,这个密文等价于使用第一把密钥k={f(),y}直接加密p所获得的密文,并且针对ck使用k进行解密操作,得到的结果等于p,即:

enc(p,k')=ck'

ck'·ck,1·gk',k=ck

dec(ck,k)=p

满足上述公式的gk',k的定义如下:

我们可以称原密钥k={f(),y}为私钥,记为sk,而第二把密钥k'={f'(),y'}为公钥,记为pk。这里公钥pk,单位密文ck,1,以及公钥加密运算支持函数gk',k可以公开,使用公钥加密的方式,得到256的密文,然后使用同态减法操作将待规约的密文反复减去256,直至结果小于256为止。然后将得到的进位数通过公钥加密后加到高位的密文上即可。

这样操作后,运算结果密文的每一字节部分都可以控制在原方案的精度范围内,通过解密和取整操作之后,结果明文可以达到完全精确。

步骤s5:通过解密和取整操作获得结果明文。

同理,需要处理实数时,可以采用ieee745等标准将实数转化为二进制形式然后使用与处理整数运算相同的方式进行运算精度控制。

实施例2

如图1、图2、图3和图5所示,基于系数映射变换的多项式完全同态加密方法,包括其精度控制及累计误差消除方法,其具体包括以下步骤:

步骤s1:对明文进行拆分;

单次密文同态运算的精度问题主要源于基于系数映射变换的多项式完全同态加密方法的原始方案的近似运算特征,其中运算支持函数的采样密度越高,则运算精度也越高,但是同时运算支持函数的体积则会急速扩张,对网络存储和传输都带来不利影响。但如果采用密度过低,则运算精度甚至无法满足低有效位数密文的单次运算需要。因此,这里的运算精度和运算资源(存储空间和计算时间)是互斥的一对参数。

在本实施例中,以整数明文为例进行说明:

将明文先进行拆分,把一个高有效位数的整数表达成若干个低有效位数的整数的组合,然后针对每一个组成部分进行加密。最常见的拆分方式就是进制转换,在本实施例中采用256进制,即在计算机二进制环境下,每八位二进制数(一个字节)作为一个组成部分。

按字节拆分

将整数明文表达成二进制后,按字节进行拆分,得到若干个0~256的整数部分。

p={p1,p2,...,pn},pi∈[1,n]∈[0,256]

步骤s2:针对每一个组成部分进行加密并通过运算得到结果密文;

所述针对每一个组成部分进行加密并通过运算得到结果密文包括:

对每一个组成部分进行加密得到密文,

enc(p,key)={enc(p1,key),enc(p2,key),...,enc(pn,key)}={c1,c2,...,cn};

进行加法或者乘法运算时,先分别针对密文的每个部分进行运算,然后再将各个部分的运算结果组成结果密文,

{c11,c12,...,c1n}+{c21,c22,...,c2m}

={c11+c21,c12+c22,...,c1n+c2n,c2n+1,...,c2m}

n<m

{c11,c12,...,c1n}×{c21,c22,...,c2m}

={c11·c21,c11c22+c12c21,c11c23+c12c22+c13c21,...,c2m}

n<m。

步骤s3:对结果密文进行同态比较运算;

使用两项的情况来进行说明,即i={1,2}。假设需要判断密文c是否大于0,整个步骤如下:

a.密钥持有者随机生成新的临时密钥k'={f'(),y'},并调用密钥置换操作将c转换成新密钥空间下的密文c';

b.密钥持有者随机生成新的函数密钥部分f″(),然后给出比较支持函数:

其中,h(x1,x2)≠h(x2,x1)≠x1≠x2,f″(x)>0且满足f″()处处可微。

c.密钥持有者围绕临时密钥的多项式密钥部分y'={y1',y2'},给出一个具有合理面积的矩形区间rect(y');

d.将密文c'针对y'的每一个分量求偏导数

e.然后求解c'的一阶偏导数等于0的方程,记录所有在矩形区间rect(y')中的解;

f.将矩形区间rect(y')的四个顶点加入求值点集合,然后对矩形区间内部所有偏导数等于0的解进行交叉组合,获得新的求值点加入该集合,最后将这些解对应的矩形区间边界上的投影点也加入该集合;

g.将求值点集合中的每一个点yi'={y1i',y2i'}代入密文c',并且使用比较支持函数gcomp将密文c'转换成形如a″·f″(x)的表达式,由于f″(x)>0,因此通过判断a″的符号,就可以判断密文表达式c'在该求值点上是否大于0;

h.计算所有求值点的符号,如果所有求值点都大于0,则可以得到结论c'>0,进而判断c>0;如果所有求值点均小于0,则可以得到结论c'<0,进而判断c<0;如果求值点同时存在大于0和小于0的情况,则无法判断c'是否大于0;

i.如果出现无法判断的情况,可以采取两个方法进行修正操作,一个方法是围绕y'缩小和移动rect(y');另一个方法是选取较大的正整数z,并重新计算z·c'。

上述操作过程,实际上是将二维的密文表达式c'看成三维空间中的一个曲面方程,判断该曲面在密钥对应的点附近与零平面的相交情况就可以得到c'是否大于零的判定结果。同样的方法适用于更高维度的情况,只是所需要的计算量更大,这里采用的比较运算分辨率为256,对结果的每个整数部分进行比较,可以得知每个整数部分运算结果是否大于256。

步骤s4:通过比较运算结果进行保留操作或者进行进位及保留操作;

通过步骤s3的比较情况进行判断,如果小于256,则这部分整数保留;如果大于256,则进行进位操作。

根据基于系数映射变换的多项式完全同态加密方法,取任意实数p∈r,其加密原理可以表示成公式:

其中,f(xi)>0且f()可微,记a={ai|i∈i},x={xi|i∈i},y={yi|i∈i},则密钥为k={f(),y},密文为c={a,x,b}。

上述运算过程只有一把密钥k,加密或者解密时都需要k的参与才能进行,也就是说加密与解密运算同时使用一把密钥,一旦密钥k丢失所有密文将泄露,因此加密和解密运算都必需由密钥持有者自己进行。这样的加密体制称为对称加密体制。

由于完全同态加密方法所得到的密文具有可运算特点,使用同一个密钥加密的密文,彼此之间可以依靠运算支持函数进行运算,而使用不同的密钥加密的密文则不能。因此,我们称使用同一个密钥生成的所有密文构成了这个密钥所对应的密文空间,也就是说只有同一个密钥空间中的两个密文才可以运算,而不同密钥空间中的密文不能进行运算。

现在,随机生成第二把密钥k'={f'(),y'},同时基于原密钥k,对明文1进行加密操作得到单位密文记为ck,1。

然后,定义公钥加密支持函数其中,h1为任意二元函数,且满足条件h1(x,x')≠x≠x'。

使用第二把密钥k'={f'(),y'}加密任意明文p,获得的密文ck',其所在的密钥空间为sk'。可以通过计算如下公式得到混合密钥空间sk'k的密文:

c'=ck'·ck,1

最后,通过gk',k将c'转换到密钥k的密文空间sk,得到ck,这个密文等价于使用第一把密钥k={f(),y}直接加密p所获得的密文,并且针对ck使用k进行解密操作,得到的结果等于p,即:

enc(p,k')=ck'

ck'·ck,1·gk',k=ck

dec(ck,k)=p

满足上述公式的gk',k的定义如下:

我们可以称原密钥k={f(),y}为私钥,记为sk,而第二把密钥k'={f'(),y'}为公钥,记为pk。这里公钥pk,单位密文ck,1,以及公钥加密运算支持函数gk',k可以公开,使用公钥加密的方式,得到256的密文,然后使用同态减法操作将待规约的密文反复减去256,直至结果小于256为止。然后将得到的进位数通过公钥加密后加到高位的密文上即可。

这样操作后,运算结果密文的每一字节部分都可以控制在原方案的精度范围内,通过解密和取整操作之后,结果明文可以达到完全精确。

步骤s5:在密文状态下进行同态取整操作;

本实施例用到的高斯函数表达式如下:

其结果是变量x的小数部分。

不失一般性的,当i=2时,基于系数映射变化的完全同态加密算法得到的密文可以表达为:

通常情况下,i=2即可满足加密强度的安全性要求。将该密文表达式代入上述高斯方程可得:

可以看到上述表达式由三角函数和反三角函数两部分组成,因此求解密文的高斯函数取值就需要解决同态三角函数运算和同态反三角函数运算两个子问题。

这里的解决方案与同态四则运算类似,都是通过构建运算支持函数的方式来实现的。

同态三角函数运算

解决同态三角函数运算的基本方法是引入三角函数运算支持函数,具体方法如下。

首先,将正切运算表达成正弦运算和余弦运算。

然后定义如下的运算支持函数:

基于上述运算支持函数g1={g11,g12,g13,g14},可以求得:

上式中每个部分又可以通过代入g2={g21,g22,g23,g24},进一步表达成如下形式

sin(b1·f3(x')·z1')=b1·g21(b1,x')·f1(x')

cos(b1·f3(x')·z1')=b1·g22(b1,x')·f1(x')

重复上面的运算过程,并引入新的符号简化表达式可以得到

最终将上面的式子代入正切函数表达式,可以得到

可以发现,同态三角函数的运算结果其形式统一为由于不同于标准的密文表达式形式,因此这里的同态三角函数不能独立针对密文进行计算得到相同密文空间的密文。同时,由于同态三角函数运算结果只有f而没有z,并且只有一项,因此其安全性比较差。

但是由于同态取整运算的特殊性,其运算本身可以容忍较大的精度误差。

同态反三角函数运算

这里针对反正切函数给出运算支持函数

其中,f(x,y)是针对的哈希运算,可以选择任意无碰撞哈希算法进行取值。首先将x和y进行离散化,然后对进行哈希运算,因此其结果一串无意义的字符。

而dict(a,f)则是的密文,其字典索引由a和f构成。这样设计的主要目的是为了降低运算支持函数的维度,从而减少反正切运算支持函数的体积。

通过运算支持函数g3={f,dict},可以将同态三角函数的运算结果形式进行反三角函数运算并得到原密文空间下的结果密文。

同态取整操作

经过同态三角函数和同态反三角函数的运算,就可以得到高斯函数的结果密文cg,即输入密文c的小数部分。然后通过一次同态减法运算,得到

cfinal=c-cg

这里的cfinal就是经过同态取整运算的结果密文。

在每次密文同态运算之后都需要进行同态取整运算,这样就可以保证每一步的结果密文精度都在可接受的范围内,即每一步的结果密文进行解密和取整操作后都是正确的。

同时,由于每次运算后都进行同态取整运算,运算误差就不会在计算过程中被累积,而是在每一次运算后被重置了,这样就可以消除累计误差的影响,达到任意次数精确无损的密文运算。

步骤s6:通过解密和取整操作获得结果明文。

同理,需要处理实数时,可以采用ieee745等标准将实数转化为二进制形式然后使用与处理整数运算相同的方式进行运算精度控制。

本发明实施的优点:通过对明文进行拆分;针对每一个组成部分进行加密并通过运算得到结果密文;对结果密文进行同态比较运算;通过比较运算结果进行保留操作或者进行进位及保留操作;通过解密和取整操作获得结果明文,实现对基于系数映射变换的多项式完全同态加密方法进行精度控制;这样操作后,运算结果密文的每一字节部分都可以控制在原方案的精度范围内,通过解密和取整操作之后,结果明文可以达到完全精确。

每次密文同态运算之后都需要进行同态取整运算,这样就可以保证每一步的结果密文精度都在可接受的范围内,即每一步的结果密文进行解密和取整操作后都是正确的。

同时,由于每次运算后都进行同态取整运算,运算误差就不会在计算过程中被累积,而是在每一次运算后被重置了,这样就可以消除累计误差的影响,达到任意次数精确无损的密文运算。

在同等采样密度的基础上,原始加密方案的密文运算精度在十万分之一,而经过本发明改进的加密方案其单次密文运算精度可以达到完全精确,而任意次数连续密文运算的精度也可以达到完全精确。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域技术的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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