当前位置: 首页 > 专利查询>南京大学专利>正文

基于同态加密的自适应大整数模乘运算方法和装置制造方法及图纸

技术编号:35694293 阅读:20 留言:0更新日期:2022-11-23 14:44
本发明专利技术公开了一种基于同态加密的自适应大整数模乘运算方法和装置,属于格密码领域。先根据模数以及位宽参数进行预计算,得到循环指示数;再利用模数得到分解基底,将被乘数按分解基底分解;根据循环指示数以及位宽参数进行替代约减,在同余的环境下用分解基底的平方与模数的差代替基底的平方项进行约减;而后对得到的结果进行移位约减并与模数进行比较得到最后的模乘结果。本发明专利技术解决了大整数模乘计算中需要较高的位宽,乘法计算复杂度高的问题,可以降低乘法计算复杂度,减少大整数模乘计算所需位宽,且可以保证运算速度。且可以保证运算速度。且可以保证运算速度。

【技术实现步骤摘要】
基于同态加密的自适应大整数模乘运算方法和装置


[0001]本专利技术涉及密码学中格密码算法领域,尤其涉及基于同态加密的自适应大整数模乘运算方法。

技术介绍

[0002]量子计算机诞生后,量子算法也取得了巨大的突破。在量子计算模型下,经典的RSA、椭圆曲线等公钥密码体制存在多项式时间的量子算法。针对量子计算机的威胁,“后量子密码”应运而生,格密码就是一类备受关注的后量子密码体制。
[0003]在格密码的基础上,全同态加密方案被提出,实现了无密钥方对密文的计算。全同态加密方案可以提高信息安全性,保证数据的隐私性,在云计算等领域有着重要的应用前景。但是全同态加密要实现良好的加密和计算效果,需要涉及到大整数模数上的模乘运算。
[0004]现有Barrett模乘等算法,还存在下述问题:计算模乘时需要直接计算被乘数的乘积,对数据位宽的要求较高;涉及多次高位宽整数的乘法,乘法复杂度较高。

技术实现思路

[0005]专利技术目的:为克服现有算法中大整数模乘计算过程需要较高的位宽,乘法计算复杂度高的问题,提出来一种基于同态加密的大整数模乘运算方法,可以降低乘法计算复杂度,减少大整数模乘计算所需位宽,且可以保证运算速度。
[0006]为达到上述专利技术目的,本专利技术所采用的技术方案如下:
[0007]一种基于同态加密的自适应大整数模乘运算方法,包括以下步骤:
[0008]步骤1、初始化环境,接收输入的两个被乘数、模数、第一参数和第二参数,根据模数和位宽参数计算循环指示数;
>[0009]步骤2、判断循环指示数是否为零,第一参数是否等于第二参数;利用模数得到分解基底,再根据判断结果将被乘数按照分解基底分解;在同余的环境下用分解基底的平方与模数的差代替基底的平方项进行约减;对得到的结果进行移位约减;
[0010]步骤3、判断结果是否小于模数,若小于,输出结果;反之将结果减去模数并输出。
[0011]根据本申请的一个方面,所述步骤2进一步为:
[0012]若循环指示数不等于0,
[0013]计算第一分解基底,按照所述第一分解基底分解被乘数并相乘;
[0014]用第一分解基底的平方和模数的差代替第一分解基底平方项约减得到第一结果;
[0015]计算第二分解基底,按照第二分解基底分解第一结果,用第一分解基底的平方和模数的差进行替代约减得到第二结果;
[0016]计算第二结果是否非负,若是,对第二结果进行右移约减得到第三结果;
[0017]判断第三结果是否小于两倍的模数,若是,继续判断第三结果是否小于模数,若是小于,则输出第三结果。
[0018]根据本申请的一个方面,所述步骤2进一步为:
[0019]若循环指示数等于0且第一参数等于第二参数;
[0020]计算分解基底,按照分解基底分解被乘数;
[0021]利用分解后的结果同时进行替换和移位约减,并判断结果是否小于模数,若小于模数,则输出结果。
[0022]根据本申请的一个方面,所述步骤2进一步为:
[0023]若循环指示数等于0且第一参数不等于第二参数;
[0024]计算分解基底,按照分解基底分解被乘数并相乘;
[0025]用分解基底的平方和模数的差代替基底的平方项进行约减,并将结果右移约减;
[0026]判断结果是否小于模数,若小于,输出结果。
[0027]进一步的实施例中,还提供一种基于同态加密的自适应大整数模乘运算方法,步骤如下:
[0028]步骤1、接收输入的被乘数a、被乘数b和模数Q;将被乘数a和被乘数b按照分解基底B进行分解,分别得到被乘数a的低位整数a1和高位整数a2,以及被乘数b的低位整数b1和高位整数b2;
[0029]其中模数Q=2
2v

k*2
v1
+1,v1、v和k为参数,v1和v为正整数,且v1≤v,基底B=2
v
;被乘数a和被乘数b为任意小于模数Q的整数;被乘数a的低位整数a1、高位整数a2,被乘数b的低位整数b1、高位整数b2满足a=a1+a2*B,b=b1+b2*B;
[0030]步骤2,根据参数k、v1和v,以及被乘数a的低位整数a1、高位整数a2、被乘数b的低位整数b1和高位整数b2;在模数为Q的同余环境下循环n次计算出第一中间结果r1;
[0031]步骤3,对于第一中间结果r1,进行向右移位2v位的移位约减,得到第二中间结果r2,其中r2=r1‑
(r1>>2v)*Q,>>表示右移计算;
[0032]步骤4,对第二中间结果r2进行判断,当第二中间结果r2<模数Q,输出最终结果r=r2,否则,输出最终结果r=r2‑
Q。
[0033]根据本申请的一个方面,步骤2中,还包括计算循环指示数,并对循环指示数进行判断,当循环指示数不为0时,进行如下操作:
[0034]S1,将被乘数a和被乘数b按照分解基底B进行分解,分别得到被乘数a和被乘数b的低位整数和高位整数;
[0035]S2,将被乘数a和被乘数b按照分解基底B展开的结果相乘,用分解基底的平方与模数的差B2‑
Q代替B2进行一次约减,得到第一运算结果;
[0036]S3,根据第一运算结果,找出分解基底的平分项B2反复按照步骤S2进行约减,并加上模数Q的整数倍保持结果非负,最终得到复合预设范围的第二计算结果;
[0037]S4,对第二计算结果进行右移约减,用第二计算结果减去自身右移len(Q)位的结果,得到第三计算结果;
[0038]S5,对第三计算结果进行判断,当第三计算结果大于等于模数时,输出结果为第三计算结果与模数的商;当第三计算结果小于模数时,输出结果为第三计算结果。
[0039]根据本申请的一个方面,所述S3具体包括如下步骤:
[0040]S31,将第一计算结果赋值给中间计算结果;
[0041]S32,将中间计算结果中的B2用B2‑
Q的结果替代;
[0042]S33,当中间计算结果为负数时,加上模数Q的整数倍使中间计算结果非负;当中间
计算结果非负时,不做变化;
[0043]S34,判断是否符合预设范围,即将中间计算结果作为第二计算结果进行步骤S4,得到第三计算结果,当第三计算结果小于2Q,则说明中间计算结果符合预设范围,赋值给第二计算结果;当中间计算结果不符合预设范围时,返回步骤S32。
[0044]根据本申请的一个方面,其步骤2的中间结果r1的计算受参数k,v,v1的影响,在运算之前需根据参数k,v,v1预计算步骤2的循环指示数N,N的计算方式如下:
[0045]对于任意的1与2
v

1之间的正整数x1,x2以及任意的1与2
v

k之间的正整数y1,y2,令当t

(t>>2v)*Q小于2Q时,N=0;否则N=1。
[0本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于同态加密的自适应大整数模乘运算方法,其特征在于,包括以下步骤:步骤1、初始化环境,接收输入的两个被乘数、模数、第一参数和第二参数,根据模数和位宽参数计算循环指示数;步骤2、判断循环指示数是否为零,第一参数是否等于第二参数;利用模数得到分解基底,再根据判断结果将被乘数按照分解基底分解;在同余的环境下用分解基底的平方与模数的差代替基底的平方项进行约减;对得到的结果进行移位约减;步骤3、判断结果是否小于模数,若小于,输出结果;反之将结果减去模数并输出。2.如权利要求1所述的基于同态加密的自适应大整数模乘运算方法,其特征在于,所述步骤2进一步为:若循环指示数不等于0,计算第一分解基底,按照所述第一分解基底分解被乘数并相乘;用第一分解基底的平方和模数的差代替第一分解基底平方项约减得到第一结果;计算第二分解基底,按照第二分解基底分解第一结果,用第一分解基底的平方和模数的差进行替代约减得到第二结果;计算第二结果是否非负,若是,对第二结果进行右移约减得到第三结果;判断第三结果是否小于两倍的模数,若是,继续判断第三结果是否小于模数,若是小于,则输出第三结果。3.如权利要求1所述的基于同态加密的自适应大整数模乘运算方法,其特征在于,所述步骤2进一步为:若循环指示数等于0且第一参数等于第二参数;计算分解基底,按照分解基底分解被乘数;利用分解后的结果同时进行替换和移位约减,并判断结果是否小于模数,若小于模数,则输出结果。4.如权利要求1所述的基于同态加密的自适应大整数模乘运算方法,其特征在于,所述步骤2进一步为:若循环指示数等于0且第一参数不等于第二参数;计算分解基底,按照分解基底分解被乘数并相乘;用分解基底的平方和模数的差代替基底的平方项进行约减,并将结果右移约减;判断结果是否小于模数,若小于,输出结果。5.基于同态加密的自适应大整数模乘运算方法,其特征在于,步骤1、接收输入的被乘数a、被乘数b和模数Q;将被乘数a和被乘数b按照分解基底B进行分解,分别得到被乘数a的低位整数a1和高位整数a2,以及被乘数b的低位整数b1和高位整数b2;其中模数Q=2
2v

k*2
v1
+1,v1、v和k为参数,v1和v为正整数,且v1≤v,基底B=2
v
;被乘数a和被乘数b为任意小于模数Q的整数;被乘数a的低位整数a1、高位整数a2,被乘数b的低位整数b1、高位整数b2满足a=a1+a2*B,b=b1+b2*B;步骤2,根据参数k、v1和v,以及被乘数a的低位整数a1、高位整数a2、被乘数b的低位整数b1和高位整数b2;在模数为Q的同余环境下循环n次计算出第一中间结果r1;步骤3,对于第一中间结果r1,进行向右移位2v位的移位约减,得到第二中间结果r2,其
中r2=r1‑
(r1>>2v)*Q,>>表示右移计算;步骤4,对第二中间结果r2进行判断,当第二中间结果r2<模数Q,输出最终结果r=r2,否则,输出最终结果r=r2‑
Q。6.根据权利要求5所述的一种基于同态加密的自适应大整数模乘运算方法,其特征在于,步骤2中,还包括计算循环指示数,并对循环指示数进行判断,当循环指示数不为0时,进行如下操作:S1,将被乘数a和被乘数b按照分解基底B进行分解,分别得到被乘数a和被乘数b的低位整数和高位整数;S2,将被乘数a和被乘数b按照分解基底B展开的结果相乘,用分解基底的平方与模数的差B2‑
Q代替B2进行一次约减,得到第一运算结果;S3,根据第一运算结果,找出分解基底的平分项B2反复按照步骤S2进行约减,并加上模数Q的整数倍保持结果非负,最终得到复合预设范围的第二计算结果;S4,对第...

【专利技术属性】
技术研发人员:李丽邵心语傅玉祥王鑫宇宋文清何书专李伟
申请(专利权)人:南京大学
类型:发明
国别省市:

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

1