模乘器、安全芯片、电子设备及加密方法技术

技术编号:35266450 阅读:15 留言:0更新日期:2022-10-19 10:29
本申请提供一种模乘器,应用于SM9,包括:相乘电路,用于对所述SM9中两个算子执行乘积操作,以获得所述两个算子的乘积,其中,所述乘积为二进制数,且其位数为m,所述m为2的整数倍;以及取模器,与所述相乘电路连接,用于在n个时钟周期内完成对所述乘积执行n次取模操作,从而得到最终模乘结果,其中,每次所述取模操作在一个时钟周期内执行,以得到一次取模结果,所述n为小于m/2的正整数。本申请还提供了相应的安全芯片及加密算法。本申请的上述方案,避免使用Montgomery模乘算法,减少不必要的反复模乘,提高SM9中整个模乘运算的速度,从而提高SM9的整体性能。而提高SM9的整体性能。而提高SM9的整体性能。

【技术实现步骤摘要】
模乘器、安全芯片、电子设备及加密方法


[0001]本申请的所公开实施例涉及信息安全
,且更具体而言,涉及一种模乘器、安全芯片、电子设备及加密方法。

技术介绍

[0002]随着信息技术发展,信息加密的要求也随之越来越高。其中,SM9(Modular multiplication Encryption algorithm,模乘加密算法)是国家密码管理局于2007年发布的标识密码算法,相比于一般公钥加密方式,SM9的公钥来源于身份标识,避免了复杂的交换过程,提高了无线网络吞吐量,因此,目前SM9广泛应用各种设备中,需求越来越大。
[0003]SM9基于扩域上的椭圆曲线运算,核心算法为双线性对的计算,主要包括基域、二次扩域、四次扩域和十二次扩域上的模加、模乘和模逆运算模块,基域和二次扩域上的点加和多倍点运算模块,Miller算法模块,十二次扩域上的模幂模块和最终模幂模块,其中,模乘运算为最基础的运算,其计算频率非常高,因此,模乘运算的速度对SM9整体的性能至关重要。
[0004]目前,模乘运算的实现有如下几种方式:
[0005]方式1):反复用两个乘数的乘积减去模数,直到得到的差小于模数,但这种方式仅适用于加密算法中算子位数较少的情况,而对于诸如SM9中算子位数较大的情况,使用这种方式来计算模乘会浪费较多的时钟周期,严重影响算法的性能。
[0006]方式2):直接利用两个乘数的乘积除以模数,并取余数作为结果,应用于加密算法中,即先将两个算子相乘,然后直接用乘积除以模数取余。然而,这种方式中,由于除法器综合后的电路往往过于复杂,且运算时间较长,硬件电路中往往用移位的方式代替除操作。
[0007]方式3):采用double

add算法,将乘转化为模加操作。这样,每次计算1比特,然而,在加密算法中,模数的位数过多时,采用这种方式过于耗时,从而影响算法性能。
[0008]方式4):采用Montgomery模乘,无需采用除法即可计算模乘。具体过程为:先进行一次蒙哥马利模乘,以完成进入蒙哥马利域,然后,在蒙哥马利域中进行蒙哥马利模乘,以得到结果,最后,再进行一次蒙哥马利模乘,以退出蒙哥马利域。这种方式是目前加密算法中常用的计算模乘的方法,适合于算子位数高达2048比特的RSA算法,或者需进行反复模乘的模幂运算。但对于SM9中的256比特的模乘运算来说,由于每计算一次模乘至少需要经历三次蒙哥马利模乘,消耗的时钟周期过多,从而降低了SM9的性能。

技术实现思路

[0009]根据本申请的实施例,本申请提出一种模乘器、安全芯片、电子设备及加密方法。
[0010]根据本申请的第一方面,公开一种实例性的模乘器,应用于SM9,包括:相乘电路,用于对所述SM9中两个算子执行乘积操作,以获得所述两个算子的乘积,其中,所述乘积为二进制数,且其位数为m,所述m为2的整数倍;以及取模器,与所述相乘电路连接,用于在n个时钟周期内完成对所述乘积执行n次取模操作,从而得到最终模乘结果,其中,每次所述取
模操作在一个时钟周期内执行,以得到一次取模结果,所述n为小于m/2的正整数。
[0011]根据本申请的第二方面,公开一种实例性的一种安全芯片,包括如上述第一方面所述的模乘器。
[0012]根据本申请的第三方面,公开一种实例性的一种电子设备,包括如上述第二方面所述的安全芯片。
[0013]根据本申请的第四方面,公开一种实例性的一种加密方法,应用于SM9,包括:对所述SM9中的两个算子执行模乘操作,以得到模乘结果,从而实现加密,其中,所述模乘操作由如上述第一方面所述的的模乘器实现。
[0014]本申请的有益效果有:通过相乘电路对SM9中两个算子执行乘积操作,以获得两个算子的乘积,取模器在n个时钟周期内完成对乘积执行n次取模操作,从而得到最终模乘结果,其中,每次取模操作在一个时钟周期内执行,以得到一次取模结果,n为小于m/2的正整数,避免使用Montgomery模乘算法,减少不必要的反复模乘,提高SM9中整个模乘运算的速度,从而提高SM9的整体性能。
[0015]在阅读以下对各图及图式中所例示的优选实施例的详细说明之后,本申请的这些及其它目标无疑将对所属领域的技术人员显而易见。
附图说明
[0016]图1是例示本申请一实施例的模乘器的结构示意图。
[0017]图2是例示本申请另一实施例的模乘器的结构示意图。
[0018]图3是例示本申请实施例的状态机的状态转移图。
[0019]图4是例示本申请一实施例的安全芯片的结构示意图。
[0020]图5是例示本申请一实施例的电子设备的结构示意图。
具体实施方式
[0021]为使本领域的技术人员更好地理解本申请的技术方案,下面结合附图和具体实施方式对本申请的技术方案做进一步详细描述。
[0022]如图1所示,是本申请一实施例的模乘器的结构示意图。该模乘器100应用于SM9,如上述,SM9基于扩域上的椭圆曲线运算,核心算法为双线性对的计算,本申请对SM9的具体算法流程或构成并不作具体限定。具体地,该模乘器100包括相乘电路110与取模器120,其中,取模器120与相乘电路110连接。
[0023]相乘电路110用于对SM9中的两个算子执行乘积操作,以获得两个算子的乘积,其中,乘积为二进制数,且其位数为m,m为2的整数倍。
[0024]取模器120用于在n个时钟周期内完成对乘积执行n次取模操作,从而得到最终模乘结果,其中,每次取模操作在一个时钟周期内执行,以得到一次取模结果,n为小于m/2的正整数。
[0025]相乘电路110采用Booth算法来执行乘积操作,SM9中的两个算子为二进制数,相应地,执行乘积操作所得到的乘积也以二进制数表示。例如,假设SM9中的两个算子分别为a_mul、b_mul,均是256比特,也即a_mul与b_mul的位数为256,可以表示为a_mul[255:0]和b_mul[255:0]。采用Booth算法执行乘积操作后,这两个算子a_mul与b_mul的乘积标记为ab_
product,其位数m为512,可以表示为ab_product[511:0]。
[0026]取模器120在n个时钟周期内完成对乘积ab_product执行n次取模操作,一个时钟周期内执行一次取模操作,从而得到最终取模结果。n为小于m/2的正整数,在上述m为512的情况下,n为小于256(即512/2)的正整数,例如,n可以为64、32等,即,取模器120可以在64或32个时钟周期内,执行64或32次取模操作,以完成对乘积ab_product的取模,得到最终取模结果。
[0027]本实施例中,通过相乘电路对SM9中两个算子执行乘积操作,以获得两个算子的乘积,取模器在n个时钟周期内完成对乘积执行n次取模操作,从而得到最终模乘结果,其中,每次取模操作在一个时钟周期内执行,以得到一次取模结果,n为小于m/2的正整数,避免使用本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种模乘器,其特征在于,应用于SM9,包括:相乘电路,用于对所述SM9中两个算子执行乘积操作,以获得所述两个算子的乘积,其中,所述乘积为二进制数,且其位数为m,所述m为2的整数倍;以及取模器,与所述相乘电路连接,用于在n个时钟周期内完成对所述乘积执行n次取模操作,从而得到最终模乘结果,其中,每次所述取模操作在一个时钟周期内执行,以得到一次取模结果,所述n为小于m/2的正整数。2.如权利要求1所述的模乘器,其特征在于,所述乘积被顺序划分成一个第一部分和n

1个第二部分,其中,所述第一部分位于所述n

1个第二部分之前,且所述第一部分的位数等于一个所述第二部分的位数与所述一次取模结果的位数之和;所述取模器分别对所述第一部分和所述n

1个第二部分进行取模。3.如权利要求2所述的模乘器,其特征在于,所述取模器分别对所述第一部分和所述n

1个第二部分进行取模,包括:在所述n个时钟周期中第一个时钟周期内对所述第一部分执行一次取模操作;在所述n个时钟周期中剩余n

1个时钟周期内,顺序对上一个时钟周期内所得到的取模结果和相邻的所述第二部分的结合执行一次取模操作,从而执行n

1次取模操作。4.如权利要求3所述的模乘器,其特征在于,所述在所述n个时钟周期中第一个时钟周期内对所述第一部分执行一次取模操作,包括:在所述第一个时钟周期内,将所述第一部分传输至所述取模器,以自所述取模器获得并寄存第一次取模结果;在所述n个时钟周期中剩余n

1个时钟周期内,顺序对上一个时钟周期内所得到的取模结果和相邻的所述第二部分的结合执行一次取模操作,包括:在所述n个时钟周期中剩余的每个时钟周期内,将上一个时钟周期内所得到的取模结果与相邻的所述第二部分拼接并传输至所述取模器,以自所述取模器获得并寄存本次取模结果,其中,最后一次取模结果为所述最终模乘结果。5.如权利要求1所述的模乘器,其特征在于,所述取模器包括状态机和取模电路,所述取模电路与所述状态机连接,所述状态机包括第一状态和第二状态,其中,第一状态,用于指示所述取模电路在所述n个时钟周期中第一个时钟周期内对所述第一部分执行一次取模操作;以及第二状态,用于指示所述取...

【专利技术属性】
技术研发人员:万方成
申请(专利权)人:上海途擎微电子有限公司
类型:发明
国别省市:

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

1