一种同态加密计算方法及系统技术方案

技术编号:35455935 阅读:13 留言:0更新日期:2022-11-03 12:13
本发明专利技术公开了一种同态加密计算方法及系统,包括有:步骤S1,将多项式f(x)和需要加密的参数进行封装后,传入至预设的分析计算引擎;步骤S2,所述分析计算引擎接收到多项式f(x)后,利用六角深度剖析算法进行拆解和分析,根据分析结果判断:若采用半同态加密计算方案,则执行步骤SA1,若采用全同态加密计算方案,则执行步骤SB1;步骤SA,执行半同态加密计算流程;步骤SB,执行全同态加密计算流程。本发明专利技术通过分析多项式和明文数据自动选择半同态或全同态进行求解,无需人为参与,从而降低人员、运维成本,同时能使运算所需的时间和资源接近最优化。优化。优化。

【技术实现步骤摘要】
一种同态加密计算方法及系统


[0001]本专利技术涉及加密计算方法,尤其涉及一种同态加密计算方法及用于实现该方法的系统。

技术介绍

[0002]目前,用途比较广泛而且相对权威的同态加密算法包含:半同态加密算法Paillier和全同态加密算法Microsoft SEAL。其中:
[0003]Paillier算法是1999年提出的一种基于合数剩余类问题的公钥加密算法,也是目前最为常用且最具实用性的加法同态加密算法,已在众多具有同态加密需求的应用场景中实现了落地应用,同时也是ISO同态加密国际标准中唯一指定的加法同态加密算法。此外,由于支持加法同态,所以Paillier算法还可支持数乘同态,即支持密文与明文相乘。
[0004]Microsoft SEAL是一个同态加密库,允许对加密的整数或实数执行加法和乘法。提供了两种不同的同态加密方案,它们具有非常不同的属性。BFV方案允许对加密整数执行模运算。CKKS方案允许对加密的实数或复数进行加法和乘法运算,但只能得到近似的结果。在诸如总结加密实数、评估加密数据的机器学习模型或计算加密位置的距离等应用中,ckks将是目前为止的最佳选择。对于需要精确值的应用,BFV方案是唯一的选择。
[0005]然而,目前的实现方案基本都是利用已有的同态加密算法进行人为的运算多项式求解,通过人为选择半同态或全同态加密技术如上面提到的Paillier、Microsoft SEAL,人为调整参数进行数据多项式的同态计算。由此导致现有技术存在如下缺陷:Paillier半同态加密算法、Microsoft SEAL全同态加密算法,提供基于密文上的基础运算,但需求的复杂性、数据高精度计算、多项式复杂度等都会影响到最终的运行耗能和成本,而目需要依赖人为不断的去拆解、剖析和调优,这个过程有很大的时间成本,每次的调优并不精准会导致运行时耗能严重,运算后的结果失真严重。

技术实现思路

[0006]本专利技术要解决的技术问题在于,针对现有技术的不足,提供一种通过分析多项式和明文数据自动选择半同态或全同态进行求解,无需人为参与,从而降低人员、运维成本,同时能使运算所需的时间和资源接近最优化的同态加密计算方法及系统。
[0007]为解决上述技术问题,本专利技术采用如下技术方案。
[0008]一种同态加密计算方法,其特征在于,包括有:步骤S1,将多项式f(x)和需要加密的参数进行封装后,传入至预设的分析计算引擎;步骤S2,所述分析计算引擎接收到多项式f(x)后,利用六角深度剖析算法进行拆解和分析,根据分析结果判断:若采用半同态加密计算方案,则执行步骤SA1,若采用全同态加密计算方案,则执行步骤SB1;步骤SA,执行半同态加密计算流程;步骤SB,执行全同态加密计算流程。
[0009]优选地,所述步骤SA1中,利用多项式f(x)对数据提供方提供的数据x进行Paillier公钥加密并得到密文对象x_encrypt,对x_encrypt进行序列化,得到x_encrypt_
serial,将x_encrypt_serial和f(x)传输至计算方,计算方得到x_encrypt_serial和f(x),首先对x_encrypt_serial进行反序列化得到x_encrypt,将x_encrypt代入至f(x)中求解得到f(x)密态下的结果f(x)_encrypt,随后计算方将f(x)_encrypt返回至数据提供方,数据提供方接收到f(x)_encrypt,将其进行私钥解密得到明文计算结果f(x)_decrypt。
[0010]优选地,所述步骤S2中,六角深度剖析算法包括如下过程:步骤B001:确定单项式数量;对f(x)进行分析拆解成n个单项式,得到f(x):
[0011][0012]经分析拆解,得到[0.5*x,

x*0.81300813,x*x*x,x*x*x*x*0.87]四个单项式组合monomials,进而得到f(x)为四个单项式数量monomials_count;
[0013]步骤B002:乘法深度;对f(x)的乘法进行剖析得到乘法深度,对步骤B001得到的monomials进行逐一剖析,根据每个单项式的乘法次数,得到该单项式的乘法深度,结合整个monomials的所有乘法深度集合得到最终的总乘法深度multipe_deepth;
[0014]步骤B003:函数转换,得到f(x):
[0015][0016]步骤B004:浮点数精度,得到f(x):
[0017][0018]该f(x)存在大量的浮点数,需要对f(x)的所有的系数w和未知数x进行scale,scale数值的决定因素包括:在对浮点数的同态计算中,scale是不断同态计算迭代调参后得到的最优值;首先要得到f(x)的初始scale,对该f(x)按照步骤B001处理得到monomials,然后分析每一项的系数,得到[0.56458995,5.18588,1.455,1.2]系数集合ws,同时还得到x的小数点位数X_I,选取ws小数点后面位数最大的一个系数为:0.56458995,获取小数位数P_I为8位,此时对P_I和X_I进行逻辑比较,假设得到是P_I较大,则直接使用P_I进行求的初始scale,对小数位数取log取整(int)再与10相乘,即:
[0019]scale_i=int(log2P_I)*10;
[0020]将P_I为8代入得到scale_i=30,在阈值范围内,则使用该scale值作为初始scale。
[0021]步骤B005:数据维度;该步骤只关心x的数据形态,f(x)其他系数已是常数,最终同态计算只需将x进行代入,关于x的数据形态划分了以下两种种等级:A级:针对是简单的数据维度如单个数字、一维数组、多行一列的二维数组;B级:多行多列的多维数组和矩阵;步骤B006:复杂程度;将对t_monomials进行分析加法和乘法的次数、total_multipe_deepth、步骤B005得到的数据维度dimension、步骤B001的monomials_count进行深度整合,并利用机器学习算法得出对半同态和全同态加密计算方案的选择;所述步骤B006中,利用大批量经过半同态计算得出的测试数据,根据不同的P_I、total_multipe_deepth、dimension、monomials_count、结果准确率组成特征列和结果列,制作成一份数据集,利用机器学习线性回归算法进行模型训练,得到模型:
[0022]y=w1P_I+w2total_multipe_deepth+w3dimension+w4monomials_count+b;
[0023]其中,y为结果准确率,w1、w2、w3、w4是每个特征列的权重,b是偏置项,训练模型得出这些权重和偏置项,依据此模型,将需要进行同态计算的f(x)经过步骤B004得出当前P_I,记为P_I_C,根据步骤B002得到的当前乘法总深度,记为total_multipe_deepth_c,根据步骤本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种同态加密计算方法,其特征在于,包括有:步骤S1,将多项式f(x)和需要加密的参数进行封装后,传入至预设的分析计算引擎;步骤S2,所述分析计算引擎接收到多项式f(x)后,利用六角深度剖析算法进行拆解和分析,根据分析结果判断:若采用半同态加密计算方案,则执行步骤SA1,若采用全同态加密计算方案,则执行步骤SB1;步骤SA,执行半同态加密计算流程;步骤SB,执行全同态加密计算流程。2.如权利要求1所述的同态加密计算方法,其特征在于,所述步骤SA1中,利用多项式f(x)对数据提供方提供的数据x进行Paillier公钥加密并得到密文对象x_encrypt,对x_encrypt进行序列化,得到x_encrypt_serial,将x_encrypt_serial和f(x)传输至计算方,计算方得到x_encrypt_serial和f(x),首先对x_encrypt_serial进行反序列化得到x_encrypt,将x_encrypt代入至f(x)中求解得到f(x)密态下的结果f(x)_encrypt,随后计算方将f(x)_encrypt返回至数据提供方,数据提供方接收到f(x)_encrypt,将其进行私钥解密得到明文计算结果f(x)_decrypt。3.如权利要求2所述的同态加密计算方法,其特征在于,所述步骤S2中,六角深度剖析算法包括如下过程:步骤B001:确定单项式数量;对f(x)进行分析拆解成n个单项式,得到f(x):经分析拆解,得到[0.5*x,

x*0.81300813,x*x*x,x*x*x*x*0.87]四个单项式组合monomials,进而得到f(x)为四个单项式数量monomials_count;步骤B002:乘法深度;对f(x)的乘法进行剖析得到乘法深度,对步骤B001得到的monomials进行逐一剖析,根据每个单项式的乘法次数,得到该单项式的乘法深度,结合整个monomials的所有乘法深度集合得到最终的总乘法深度multipe_deepth;步骤B003:函数转换,得到f(x):步骤B004:浮点数精度,得到f(x):该f(x)存在大量的浮点数,需要对f(x)的所有的系数w和未知数x进行scale,scale数值的决定因素包括:在对浮点数的同态计算中,scale是不断同态计算迭代调参后得到的最优值;首先要得到f(x)的初始scale,对该f(x)按照步骤B001处理得到monomials,然后分析每一项的系数,得到[0.56458995,5.18588,1.455,1.2]系数集合ws,同时还得到x的小数点位数X_I,选取ws小数点后面位数最大的一个系数为:0.56458995,获取小数位数P_I为8位,
此时对P_I和X_I进行逻辑比较,假设得到是P_I较大,则直接使用P_I进行求的初始scale,对小数位数取log取整(int)再与10相乘,即:scale_i=int(log2P_I)*10;将P_I为8代入得到scale_i=30,在阈值范围内,则使用该scale值作为初始scale。步骤B005:数据维度;该步骤只关心x的数据形态,f(x)其他系数已是常数,最终同态计算只需将x进行代入,关于x的数据形态划分了以下两种种等级:A级:针对是简单的数据维度如单个数字、一维数组、多行一列的二维数组;B级:多行多列的多维数组和矩阵;步骤B006:复杂程度;将对t_monomials进行分析加法和乘法的次数、total_multipe_deepth、步骤B005得到的数据维度dimension、步骤B001的monomials_count进行深度整合,并利用机器学习算法得出对半同态和全同态加密计算方案的选择;所述步骤B006中,利用大批量经过半同态计算得出的测试数据,根据不同的P_I、total_multipe_deepth、dimension、monomials_count、结果准确率组成特征列和结果列,制作成一份数据集,利用机器学习线性回归算法进行模型训练,得到模型:y=w1P_I+w2total_multipe_deepth+w3dimension+w4monomials_count+b;其中,y为结果准确率,w1、w2、w3、w4是每个特征列的权重,b是偏置项,训练模型得出这些权重和偏置项,依据此模型,将需要进行同态计算的f(x)经过步骤B004得出当前P_I,记为P_I_C,根据步骤B002得到的当前乘法总深度,记为total_multipe_deepth_c,根据步骤B005得到当前数据维度,记为dimension_c,根据步骤B001得到当前单项式数量,记为monomials_count_c;随后将P_I_C、total_multipe_deepth_c、dimension_c、monomials_count_c代入上述模型中求得结果准确率y,根据上述统计理论准确率分析,如果y在80%

90%之间,则推荐使用半同态加密计算方案,反之则推荐使用全同态加密计算方案,或者根据该y值在准确率之间对f(x)的复杂程度系数complex_level划分判定。4.如权利要求3所述的同态加密计算方法,其特征在于,所述步骤SB包括如下过程:步骤SB1,通过六角深度剖析算法分析得到的六项结果全部传入至全同态加密算法;步骤SB2,根据步骤SB1得出的各单项式分析判断是否包含有浮点数,若不包含浮点数,则执行步骤SBB,若包含浮点数,则执行步骤SBC;步骤SBB,执行BFV方案:对加密整数进行模运算;步骤SBC,执行CKKS方案:对加密的实数或复数进行运算;所述步骤SBB包括如下过程:步骤SBB1,执行BFV方案之前,先前设置加密参数:多项式模数、密文系数模和明文模数;步骤SBBC2,根据六角深度剖析算法分析结果中的复杂程度、单项式数量和乘法深度进一步分析得到多项式模数;步骤SBB3,由多项式模数决定密文系数模;步骤SBB4,根据所述密文系数模、复杂程度、乘法深度分析得出明文模;步骤SBBC5,加密算法初始化公私钥、加密器、解密器、计算器、编码器和重线性化密钥;
步骤SBB6,使用编码器对需要加密的参数进行编码,再利用加密器、数据维度进行公钥加密;步骤SBB...

【专利技术属性】
技术研发人员:王济平黎刚汤克云高俊杰杨劲业梁孟
申请(专利权)人:京信数据科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1