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

一种获取大数拓展最大公约数的方法及硬件架构技术

技术编号:35407891 阅读:14 留言:0更新日期:2022-11-03 11:02
本申请涉及计算机应用技术领域,提供一种获取大数拓展最大公约数的方法及硬件架构,控制模块、GCD计算单元、贝祖系数计算单元、第一多路选择器、第二多路选择器、终止模块和input_valid信号,GCD计算单元和贝祖系数计算单元用于根据控制模块的控制信号迭代更新中间变量,通过δ参数的引入,避免比较中间变量a和b的大小,基于k

【技术实现步骤摘要】
一种获取大数拓展最大公约数的方法及硬件架构


[0001]本申请涉及计算机应用
,具体涉及脉一种获取大数拓展最大公约数的方法及硬件架构。

技术介绍

[0002]随着互联网的发展,在通信过程中保证信息的安全十分重要,因此密码技术受到越来越广泛的关注。在密码学中,出于安全的需要,除了使用大位宽的数据以外,还包括应用于数据传输、存储和身份认证等方面的加解密算法和签名算法,例如二次型可验证延迟函数(Verifiable delay function in binary quadratic forms,VDFs)和模逆运算等,在这些运算当中,拓展最大公约数(Extended greatest common divisor,XGCD)由于其计算的复杂性,是其中的核心单元。
[0003]在基于RSA(RSA algorithm)的公钥密码体制中,发送方利用公钥对文件明文进行加密,得到文件密文,接收方利用该公钥对应的私钥对文件密文进行解密。公钥由模数和公钥指数组成,私钥由模数和私钥指数组成,在公私钥对的生成过程中,首先选取两个大质数p、q得到模数,利用p和q的互质数目的乘积得到第一参数,根据第一参数选取公钥指数,其中,私钥指数为公钥指数关于第一参数的模反元素,因此,可以使用公钥指数和第一参数作为XGCD的输入,输出的对应的贝祖系数即为私钥指数。
[0004]现有技术公开了一种基于拓展欧几里得算法(Extended Euclidean algorithm,简称EEA)及其变体的XGCD计算方法,该方法所需的迭代次数少,由于CPU的频率固定,较少的迭代次数意味着计算所需时间很短,所以其被广泛用于软件实现中,例如GMP大数库(GNU Multiple Precision Arithmetic Library)。然而,在硬件实现方面,上述方法需要用到除法,而大数除法的实现十分复杂,会导致关键路径很长,且其具有数据依赖性,需要串行地迭代进行,很难通过并行处理来提高计算速度,导致硬件实现上复杂度高且计算效率低,在高速的密码学应用和硬件实现中成为瓶颈。
[0005]现有技术还公开基于k

ary算法的XGCD计算方法和基于Two

bit PM算法的XGCD计算方法,其中,k

ary算法通过设计k值可以只需要用到简单的运算,并且相比于PM算法和Two

bit PM算法,不同的k值可以在面积和运算速度上获得一个很好的折中,因此更为灵活,适用于更多的设计需求。然而对于k

ary算法,大多数研究未提及贝祖系数的计算方法,极少数基于k

ary算法的计算贝祖系数的方法又需要用到模乘与除法,对于硬件实现而言都是十分复杂的。

技术实现思路

[0006]本申请提供一种获取大数拓展最大公约数的方法及硬件架构,以降低复杂度从而适应于硬件实现。
[0007]本申请第一方面提供一种获取大数拓展最大公约数的方法,应用于公私钥对的生成,包括:
[0008]获取公私钥对生成过程中的第一参数和公钥指数;
[0009]获取所述方法中预设的k值,所述k为2的幂次;
[0010]根据所述第一参数和所述公钥指数,初始化后续迭代中所需的中间变量,所述中间变量包括第一迭代变量、第二迭代变量、第三迭代变量、第四迭代变量、第五迭代变量、第六迭代变量和第七迭代变量,其中,所述第七迭代变量的初始值为0;所述第一迭代变量、所述第二迭代变量、所述第三迭代变量、所述第四迭代变量、所述第五迭代变量和所述第六迭代变量满足xA+yB=a和zA+wB=b,初始值为x=1,y=0,z=0,w=1,a=A和b=B,其中,A为第一参数、B为公钥指数、a为第一迭代变量、b为第二迭代变量、x为第三迭代变量、y为第四迭代变量、z为第五迭代变量、w为第六迭代变量;
[0011]判断第一迭代变量或第二迭代变量是否为偶数;
[0012]如果第一迭代变量为偶数,则选取第一数据,以及,使用第一迭代变量除以第一数据的值来更新第一迭代变量,使用第三迭代变量除以第一数据的值来更新第三迭代变量,使用第四迭代变量除以第一数据的值来更新第四迭代变量,使用第七迭代变量减去log2u来更新第七迭代变量,其中,u为第一数据,所述第一数据为小于或等于k且能被第一迭代变量整除的2的幂次的数据集合中最大的数;
[0013]如果更新后的第一迭代变量为0,则第一参数和公钥指数的最大公约数为第二迭代变量,第一参数对应的贝祖系数为第五迭代变量,公钥指数对应的贝祖系数为第六迭代变量。
[0014]可选地,还包括:
[0015]如果更新后的第一迭代变量为非0,则重新判断第一迭代变量或第二迭代变量是否为偶数。
[0016]可选地,在所述判断第一迭代变量或第二迭代变量是否为偶数之后,还包括:
[0017]如果第二迭代变量为偶数,则选取第二数据,以及,使用第二迭代变量除以第二数据的值来更新第二迭代变量,使用第五迭代变量除以第二数据的值来更新第五迭代变量,使用第六迭代变量除以第二数据的值来更新第六迭代变量,使用第七迭代变量加上log2v来更新第七迭代变量,其中,v为第二数据,所述第二数据为小于或等于k且能被第二迭代变量整除的2的幂次的数据集合中最大的数;
[0018]如果更新后的第二迭代变量为0,则第一参数和公钥指数的最大公约数为第一迭代变量,第一参数对应的贝祖系数为第三迭代变量,公钥指数对应的贝祖系数为第四迭代变量。
[0019]可选地,还包括:
[0020]如果更新后的第二迭代变量为非0,则重新判断第一迭代变量或第二迭代变量是否为偶数。
[0021]可选地,在所述判断第一迭代变量或第二迭代变量是否为偶数之后,还包括:
[0022]如果第一迭代变量和第二迭代变量均为奇数,则选取第三数据和第四数据,并计算c=(pa+qb)/k,α=(px+qz)/k,β=(py+qw)/k,其中,p为第三数据,q为第四数据,第三数据和第四数据满足且pa+qb=0(mod k),以及,根据第三数据和第四数据更新第一迭代变量、第二迭代变量、第三迭代变量、第四迭代变量、第五迭代变量、第六迭代变量和第七迭代变量,其中:如果第七迭代变量为负数,则使用(c,α,β)更新
(b,z,w),且使用第七迭代变量加上log2k/q

1来更新第七迭代变量;如果第七迭代变量为非负数,则使用(c,α,β)更新(a,x,y),且使用第七迭代变量减去log2k/q

1来更新第七迭代变量;
[0023]如果更新后的第二迭代变量为0,则第一参数和公钥指数的最大公约数为第一迭代变量,第一参数对应的贝祖系数为第三迭代变量,公钥指数对应的贝祖系数为第四迭代变量。
[0024]本申请第二方面提供一种获取大数拓展最大公约数的硬件架构,用于计算XA+YB=GCD(A,B)=G,其中,G、X和Y为运算结果,A为第一操作数,B本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种获取大数拓展最大公约数的方法,应用于公私钥对的生成,其特征在于,包括:获取公私钥对生成过程中的第一参数和公钥指数;获取所述方法中预设的k值,所述k为2的幂次;根据所述第一参数和所述公钥指数,初始化后续迭代中所需的中间变量,所述中间变量包括第一迭代变量、第二迭代变量、第三迭代变量、第四迭代变量、第五迭代变量、第六迭代变量和第七迭代变量,其中,所述第七迭代变量的初始值为0;所述第一迭代变量、所述第二迭代变量、所述第三迭代变量、所述第四迭代变量、所述第五迭代变量和所述第六迭代变量满足xA+yB=a和zA+wB=b,初始值为x=1,y=0,z=0,w=1,a=A和b=B,其中,A为第一参数、B为公钥指数、a为第一迭代变量、b为第二迭代变量、x为第三迭代变量、y为第四迭代变量、z为第五迭代变量、w为第六迭代变量;判断第一迭代变量或第二迭代变量是否为偶数;如果第一迭代变量为偶数,则选取第一数据,以及,使用第一迭代变量除以第一数据的值来更新第一迭代变量,使用第三迭代变量除以第一数据的值来更新第三迭代变量,使用第四迭代变量除以第一数据的值来更新第四迭代变量,使用第七迭代变量减去log2u来更新第七迭代变量,其中,u为第一数据,所述第一数据为小于或等于k且能被第一迭代变量整除的2的幂次的数据集合中最大的数;如果更新后的第一迭代变量为0,则第一参数和公钥指数的最大公约数为第二迭代变量,第一参数对应的贝祖系数为第五迭代变量,公钥指数对应的贝祖系数为第六迭代变量。2.根据权利要求1所述的一种获取大数拓展最大公约数的方法,其特征在于,还包括:如果更新后的第一迭代变量为非0,则重新判断第一迭代变量或第二迭代变量是否为偶数。3.根据权利要求1所述的一种获取大数拓展最大公约数的方法,其特征在于,在所述判断第一迭代变量或第二迭代变量是否为偶数之后,还包括:如果第二迭代变量为偶数,则选取第二数据,以及,使用第二迭代变量除以第二数据的值来更新第二迭代变量,使用第五迭代变量除以第二数据的值来更新第五迭代变量,使用第六迭代变量除以第二数据的值来更新第六迭代变量,使用第七迭代变量加上log2v来更新第七迭代变量,其中,v为第二数据,所述第二数据为小于或等于k且能被第二迭代变量整除的2的幂次的数据集合中最大的数;如果更新后的第二迭代变量为0,则第一参数和公钥指数的最大公约数为第一迭代变量,第一参数对应的贝祖系数为第三迭代变量,公钥指数对应的贝祖系数为第四迭代变量。4.根据权利要求3所述的一种获取大数拓展最大公约数的方法,其特征在于,还包括:如果更新后的第二迭代变量为非0,则重新判断第一迭代变量或第二迭代变量是否为偶数。5.根据权利要求1所述的一种获取大数拓展最大公约数的方法,其特征在于,在所述判断第一迭代变量或第二迭代变量是否为偶数之后,还包括:如果第一迭代变量和第二迭代变量均为奇数,则选取第三数据和第四数据,并计算c=(pa+qb)/k,α=(px+qz)/k,β=(py+qw)/k,其中,p为第三数据,q为第四数据,第三数据和第四数据满足且pa+qb=0(mod k),以及,根据第三数据和第四数据更新第一迭代变量、第二迭代变量、第三迭代变量、第四迭代变量、第五迭代变量、第六
迭代变量和第七迭代变量,其中:如果第七迭代变量为负数,则使用(c,α,β)更新(b,z,w),且使用第七迭代变量加上log2k/q

1来更新第七迭代变量;如果第七迭代变量为非负数,则使用(c,α,β)更新(a,x,y),且使用第七迭代变量减去log2k/q

1来更新第七迭代变量;如果更新后的第二迭代变量为0,则第一参数和公钥指数的最大公约数为第一迭代变量,第一参数对应的贝祖系数为第三迭代变量,公钥指数对应的贝祖系数为第四迭代变量。6.一种获取大数拓展最大公约数的硬件架构,用于计算XA+YB=GCD(A,B)=G,其中,G、X和Y为运算结果,A为第一操作数,B为第二操作数,第一操作数和第二操作数均为奇数,其特征在于,包括:控制模块、GCD计算单元、贝祖系数计算单元、第一多路选择器、第二多路选择器、终止模块和input_valid信号;GCD计算单元,所述GCD计算单元的输入端分别与所述第一多路选择器的输出端和所述控制模块的输出端连接,所述GCD计算单元的输出端分别与所述控制模块的输入端、所述终止模块的输入端和所述第一多路选择器的输入端连接,所述GCD计算单元用于将输入的第一操作数和第二操作数分别作为第一迭代变量和第二迭代变量的初始值,以及,根据所述控制模块的控制信号,更新每次输入的第一迭代变量或第二迭代变量,同时更新初始值为0的第七迭代变量,输出当前次迭代完成的第一迭代变量、第二迭代变量和第七迭代变量;贝祖系数计算单元,所述贝祖系数计算单元的输入端分别与所述第二多路选择器的输出端和所述控制模块的输出端连接,所述贝祖系数计算单元的输出端与所述第二多路选择器的输入端连接,所述贝祖系数计算单元用于将输入的1、0、0、1分别作为第三迭代变量、第四迭代变量、第五迭代变量和第六迭代变量的初始值...

【专利技术属性】
技术研发人员:王中风欧伦朱丹阳田静
申请(专利权)人:南京大学
类型:发明
国别省市:

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

1