一种嵌入式安全芯片及其的蒙哥马利模乘运算方法.pdf

上传人:1520****312 文档编号:176902 上传时间:2018-01-31 格式:PDF 页数:16 大小:947.45KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510178336.1

申请日:

2015.04.15

公开号:

CN104765586A

公开日:

2015.07.08

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 7/72申请日:20150415|||公开

IPC分类号:

G06F7/72

主分类号:

G06F7/72

申请人:

深圳国微技术有限公司

发明人:

陈金强; 徐浩

地址:

518000广东省深圳市南山区高新技术产业园南区高新南一道国微大厦二楼

优先权:

专利代理机构:

深圳市康弘知识产权代理有限公司44247

代理人:

胡朝阳; 孙洁敏

PDF下载: PDF下载
内容摘要

本发明提供了嵌入式安全芯片和其的蒙哥马利模乘运算方法,所述运算方法包括以下步骤获取两个第一预设参数,和第二预设参数,其中第一预设参数为常数1;根据两个第一预设参数和蒙哥马利模乘函数,得到第一运算结果A;根据第一运算结果A、第一预设参数、第二预设参数和次方计算函数,得到第二运算结果B;根据第一运算结果A、第二运算结果B和所述蒙哥马利模乘函数,得到蒙哥马利模乘转换系数D;根据第一输入参数NA、第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到最终模乘结果。该蒙哥马利模乘运算方法可以避开大数模幂方式的计算转换系数,而且不需要事先计算好系数,可以节省存储空间。

权利要求书

1.  一种嵌入式安全芯片的蒙哥马利模乘运算方法,其特征在于:所述运算方法包括以下步骤:
获取两个第一预设参数,和第二预设参数,其中第一预设参数为常数1;
根据两个第一预设参数和蒙哥马利模乘函数,得到第一运算结果A;
根据第一运算结果A、第一预设参数、第二预设参数和次方计算函数,得到第二运算结果B,其中,第二预设参数为W-4,W =φ(N),φ是欧拉函数,N是蒙哥马利模乘中模数,第二预设参数只与模数N有关,次方计算函数为计算R-1 数的多少次方的函数,R与 R-1关于模数N互逆;
根据第一运算结果A、第二运算结果B和所述蒙哥马利模乘函数,得到蒙哥马利模乘转换系数;
根据第一输入参数NA、第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到最终模乘结果。

2.
  如权利要求1所述的运算方法,其特征在于:所述根据第一运算结果、第二预设参数和次方计算函数,得到第二运算结果,具体包括以下步骤:
根据所述第二预设参数转换成计算过程的编码,得到运算标志数T和运算标志数T的位长度len;
将第一运算结果A赋值给中间结果S ;
对循环量i初始化,并将len-1值赋值给循环量i;
判断循环量i是否大于等于零值;
当循环量i大于等于零值时,运算标志数T [i]的值是否满足逻辑真;
当循环量i小于零值时,输出第二运算结果B,第二运算结果B等于所述中间结果S;
当运算标志数T [i]的值不满足逻辑真时,根据所述中间结果S、第一预设参数和蒙哥马利模乘函数,对所述中间结果S进行更新;
当运算标志数T [i]的值满足逻辑真时,根据两个所述中间结果S和蒙哥马利模乘函数,对所述中间结果S进行更新;
当所述中间结果S进行更新后,循环量i的值自减常数1,接着进入判断循环量i是否大于等于零值的步骤。

3.
  如权利要求2所述的运算方法,其特征在于:根据所述第二预设参数转换成计算过程的编码,得到运算标志数T和运算标志数T的位长度len,具体包括以下步骤:
初始化第一变量ZeroCounter,第二变量OneCounter,循环变量i和第三变量Out_i;
判断循环变量i是否小于等于E_Bitslen,其中E_Bitslen是第二预设参数的位长;
当循环变量i小于等于E_Bitslen时,判断E[i]的值是否满足逻辑真;
当E[i]的值满足逻辑真时,判断第一变量ZeroCounter是否等于零值;
当第一变量ZeroCounter不等于零值时,判断第二变量OneCounter是否等于零值;
当第二变量OneCounter等于零值时,运算标志数T [Out_i]赋值零,第三变量Out_i自增一,运算标志数T [Out_i:Out_i+ ZeroCounter-1]赋值1,接着第三变量Out_i等于Out_i+ ZeroCounter,第一变量ZeroCounter赋值为1;
循环变量i自增一,接着进入判断循环变量i是否小于等于E_Bitslen的步骤 ;
当第二变量OneCounter不等于零值时,进入循环变量i自增一的步骤 ;
当第一变量ZeroCounter等于零值时,第二变量OneCounter自增一,接着进入循环变量i自增一的步骤;
当E[i]的值不满足逻辑真时,判断第二变量OneCounter是否等于零值;
当第二变量OneCounter不等于零值,判断第一变量ZeroCounter是否等于零值;
当第一变量ZeroCounter等于零值时,运算标志数T [Out_i:Out_i+ ZeroCounter-1] 赋值为1,第三变量Out_i等于Out_i+ ZeroCounter,第二变量OneCounter]赋值为零值,第一变量ZeroCounter赋值为1,接着进入循环变量i自增一的步骤;
当第一变量ZeroCounter不等于零值时,进入循环变量i自增一的步骤;
当第二变量OneCounter等于零值,第一变量ZeroCounter自增1,接着进入循环变量i自增一的步骤;
当循环变量i不小于等于E_Bitslen时,判断第三变量Out_i值是否大于零;
当第三变量Out_i值大于零时,第三变量Out_i自减1;
输出位长度len= Out_i,和运算标志数T;
当第三变量Out_i值不大于零时,进入输出位长度len= Out_i,和运算标志数T的步骤。

4.
  如权利要求2所述的运算方法,其特征在于:根据所述第二预设参数转换成计算过程的编码,得到运算标志数T和运算标志数T的位长度len,具体包括以下步骤:
初始化运算标志数T和运算标志数T的位长度len;
判断所述第二预设参数是否小于4;
当所述第二预设参数小于4时;判断所述第二预设参数是否等于3;
当第二预设参数等于3,运算标志数T位或一,位长度len自增一;
输出位长度len= Out_i,和运算标志数T;
当第二预设参数不等于3时,位长度len自增一,接着进入输出位长度len= Out_i,和运算标志数T的步骤;
当所述第二预设参数大于等于4时,判断第二预设参数的二进制数最低位的值是否等于1;
当第二预设参数的二进制数最低位的值等于1时,运算标志数T位或一,第二预设参数向右移一位,和位长度len自增一;
当第二预设参数的二进制数最低位的值不等于1时,第二预设参数自减1,和位长度len自增一;
运算标志数T向左移一位,接着进入判断所述第二预设参数是否小于4的步骤。

5.
  如权利要求1-4任意一项所述的运算方法,其特征在于:所述根据第一输入参数NA、第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到模乘结果的步骤,具体包括以下步骤:
根据第一输入参数NA、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到第一模乘结果NAR;
根据第二输入参数NB、第一模乘结果NAR和所述蒙哥马利模乘函数,得到最终模乘结果。

6.
  如权利要求1-4任意一项所述的运算方法,其特征在于:所述根据第一输入参数NA、第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到模乘结果的步骤,具体包括以下步骤:
根据第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到第二模乘结果NBR;
根据第一输入参数NA、第二模乘结果NBR和所述蒙哥马利模乘函数,得到最终模乘结果。

7.
  如权利要求1-4任意一项所述的运算方法,其特征在于:所述根据第一输入参数NA、第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到模乘结果的步骤,具体包括以下步骤:
根据第一输入参数NA、第二输入参数NB和所述蒙哥马利模乘函数,得到第三模乘结果NANBr;
根据第三模乘结果NANBr、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到最终模乘结果。

8.
  一种嵌入式安全芯片,其特征在于:所述嵌入式安全芯片包括:
获取模块,用于获取两个第一预设参数,和第二预设参数,其中第一预设参数为常数1;
蒙哥马利模乘模块,用于根据两个第一预设参数,得到第一运算结果A;
次方计算模块,用于根据所述蒙哥马利模乘模块输出的第一运算结果A、第一预设参数、第二预设参数和次方计算函数,得到第二运算结果B,其中,第二预设参数为W-4,W =φ(N),φ是欧拉函数,N是蒙哥马利模乘中模数,第二预设参数只与模数N有关,次方计算函数为计算R-1 数的多少次方的函数,R与 R-1关于模数N互逆;
所述蒙哥马利模乘模块,还用于根据第一运算结果A和第二运算结果B,得到蒙哥马利模乘转换系数,以及根据第一输入参数NA、第二输入参数NB和蒙哥马利模乘转换系数,得到最终模乘结果。

9.
  如权利要求8所述的嵌入式安全芯片,其特征在于:所述次方计算模块还用于:
根据所述第二预设参数转换成计算过程的编码,得到运算标志数T和运算标志数T的位长度len;
将第一运算结果A赋值给中间结果S ;
对循环量i初始化,并将len-1值赋值给循环量i;
判断循环量i是否大于等于零值;
当循环量i大于等于零值时,运算标志数T [i]的值是否满足逻辑真;
当循环量i小于零值时,第二运算结果B等于所述中间结果S;
当运算标志数T [i]的值不满足逻辑真时,根据所述中间结果S、第一预设参数和蒙哥马利模乘函数,对所述中间结果S进行更新;
当运算标志数T [i]的值满足逻辑真时,根据两个所述中间结果S和蒙哥马利模乘函数,对所述中间结果S进行更新;
当所述中间结果S进行更新后,循环量i值自减常数1,接着进入判断循环量i是否大于等于零值的步骤。

说明书

一种嵌入式安全芯片及其的蒙哥马利模乘运算方法
技术领域
本发明涉及密码学中非对称密钥算法领域,尤其涉及一种嵌入式安全芯片及其的蒙哥马利模乘运算方法。
背景技术
信息安全的安全保障基于安全算法,安全算法有一类是非对称密钥算法。非对称密钥算法的基本运算是大数的模乘运算,模乘运算算法中效率高、便于实现的算法是蒙哥马利模乘算法。蒙哥马利模乘使用过程中需要把普通数转换成蒙哥马利数,然后在根据系数进行蒙哥马利模乘运算,那么转换过程中需要用到转换系数,该转换系数一般通过大数模幂算法计算得到,使得现有的嵌入式安全芯片中需要进行复杂的大数运算,那么嵌入式安全芯片中的算法需要花费较多的运行时间和资源。
发明内容
本发明的目的旨在至少解决上述技术缺陷之一,提供一种嵌入式安全芯片及其的蒙哥马利模乘运算方法。
本发明提供一种嵌入式安全芯片的蒙哥马利模乘运算方法,所述运算方法包括以下步骤:
获取两个第一预设参数,和第二预设参数,其中第一预设参数为常数1;
根据两个第一预设参数和蒙哥马利模乘函数,得到第一运算结果A;
根据第一运算结果A、第一预设参数、第二预设参数和次方计算函数,得到第二运算结果B,其中,第二预设参数为W-4,W =φ(N),φ是欧拉函数,N是蒙哥马利模乘中模数,次方计算函数为计算R-1 数的多少次方的函数,R与 R-1关于模数N互逆;
根据第一运算结果A、第二运算结果B和所述蒙哥马利模乘函数,得到蒙哥马利模乘转换系数;
根据第一输入参数NA、第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到最终模乘结果。         
从上述方法的方案可以看出,次方计算函数只与蒙哥马利模乘函数有关系。不同的模数N,通过调用不同次数的蒙哥马利模乘函数,就能得到蒙哥马利模乘的转换系数,从而避开大数模幂方式的计算转换系数,而且不需要事先计算好系数,可以节省存储空间,另外在没有复杂大数库基础上,也能完成非对称密钥运算,以及可用于检查一个大数是否为素数的必要条件和可用于检查蒙哥马利模乘算法正确性。如果计算的数越来越长,素数域多个情况下,该算法的优势会更明显。
本发明提供还一种嵌入式安全芯片,所述嵌入式安全芯片包括:
获取模块,用于获取两个第一预设参数,和第二预设参数,其中第一预设参数为常数1;
蒙哥马利模乘模块,用于根据两个第一预设参数,得到第一运算结果A;
次方计算模块,用于根据所述蒙哥马利模乘模块输出的第一运算结果A、第一预设参数、第二预设参数和次方计算函数,得到第二运算结果B,其中,第二预设参数为W-4,W =φ(N),φ是欧拉函数,N是蒙哥马利模乘中模数,次方计算函数为计算R-1 数的多少次方的函数,R与 R-1关于模数N互逆;
所述蒙哥马利模乘模块,还用于根据第一运算结果A和第二运算结果B,得到蒙哥马利模乘转换系数,以及根据第一输入参数NA、第二输入参数NB和蒙哥马利模乘转换系数,得到最终模乘结果。
从上述芯片的方案可以看出,次方计算函数只与蒙哥马利模乘函数有关系。不同的模数N,通过调用不同次数的蒙哥马利模乘函数,就能得到蒙哥马利模乘的转换系数,从而避开大数模幂方式的计算转换系数,而且不需要事先计算好系数,可以节省存储空间,另外在没有复杂大数库基础上,也能完成非对称密钥运算,以及可用于检查一个大数是否为素数的必要条件和可用于检查蒙哥马利模乘算法正确性。如果计算的数越来越长,素数域多个情况下,该算法的优势会更明显。
附图说明
图1为本发明蒙哥马利模乘运算方法一种实施例的流程图;
图2为本发明蒙哥马利模乘的系数中次方计算方法一种实施例的流程图;
图3为本发明蒙哥马利模乘的系数中编码计算方法一种实施例的流程图;
图4为本发明蒙哥马利模乘的系数中编码计算方法另一种实施例的流程图;
图5为本发明蒙哥马利模乘的普通模乘运算第一种实施例的流程图;
图6为本发明蒙哥马利模乘的普通模乘运算第二种实施例的流程图;
图7为本发明蒙哥马利模乘的普通模乘运算第三种实施例的流程图;
图8为本发明嵌入式安全芯片一种实施例的结构示意图。
具体实施方式
为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种实施例嵌入式安全芯片的蒙哥马利模乘运算方法,如图1所示,所述运算方法包括以下步骤:
步骤S01,获取两个第一预设参数,和第二预设参数,其中第一预设参数为常数1;
步骤S02,根据两个第一预设参数和蒙哥马利模乘函数,得到第一运算结果A,第一运算结果A = MontF(1,1);
步骤S03,根据第一运算结果A、第一预设参数、第二预设参数和次方计算函数,得到第二运算结果B,其中,第二预设参数为W-4,W =φ(N),φ是欧拉函数,N是蒙哥马利模乘中模数,模数位长通常取值为192、239、521、1024、2048,第二预设参数只与模数N有关,次方计算函数CoeffEx为计算R-1数的多少次方的函数,第二运算结果B= CoeffEx(A,W-4),R与 R-1关于模数N互逆;
步骤S04,根据第一运算结果A、第二运算结果B和所述蒙哥马利模乘函数,得到蒙哥马利模乘转换系数D,D=MontF(A,B),即D= R2
步骤S05,根据第一输入参数NA、第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到最终模乘结果RE,RE是第一输入参数NA和第二输入参数NB关于模数N的模乘结果。
从上述方法的方案可以看出,次方计算函数只与蒙哥马利模乘函数有关系。不同的模数N,通过调用不同次数的蒙哥马利模乘函数,就能得到蒙哥马利模乘的转换系数,从而避开大数模幂方式的计算转换系数,而且不需要事先计算好系数,可以节省存储空间,另外在没有复杂大数库基础上,也能完成非对称密钥运算,以及可用于检查一个大数是否为素数的必要条件和可用于检查蒙哥马利模乘算法正确性。如果计算的数越来越长,素数域多个情况下,该算法的优势会更明显。
在具体实施中,如图2所示,所述步骤S03具体包括以下步骤:
步骤S031,根据所述第二预设参数E转换成计算过程的编码,得到运算标志数T和运算标志数T的位长度len,进入步骤S032;
步骤S032,将第一运算结果A赋值给中间结果S,即S = A,A值等于R-1 数,进入步骤S033;
步骤S033,对循环量i初始化,并将len-1值赋值给循环量i,即i=len-1进入步骤S034;
步骤S034,判断循环量i是否大于等于零值,如果是,步骤S035,如果否,步骤S036;
步骤S035,当循环量i大于等于零值时,T[i]的值是否满足逻辑真,如果是,进入步骤S038,如果否,进入步骤S037;
步骤S036,当循环量i小于零值时,输出第二运算结果B,第二运算结果B等于所述中间结果S,即S 等于 AE
步骤S037,当T[i]的值不满足逻辑真时,根据所述中间结果S、第一预设参数和蒙哥马利模乘函数,对所述中间结果S进行更新,即S= MontF(S,1);
步骤S038,当T[i]的值满足逻辑真时,根据两个所述中间结果S和蒙哥马利模乘函数,对所述中间结果S进行更新,即S= MontF(S,S);
步骤S039,当所述中间结果S进行更新后,循环量i值自减常数1,即i=i-1接着进入步骤S034。
在步骤S031中,也可以理解为调用一次CaclStepEncode函数,输入所述第二预设参数E,输出运算标志数T,存储运算后的结果,返回运算标志数T和运算标志数T的数据位长度len = CaclStepEncode(E,T),其中第二预设参数E是需要计算多少次,E的值小于N值,运算标志数T的位长度不会超过E的位长的两倍。
在步骤S035中,T是一个数组,T[i]为数组中的一个元素,T[i]的值只取0或非0。
在具体实施中,如图3所示,所述步骤S031具体包括以下步骤:
步骤S0311,初始化第一变量ZeroCounter,第二变量OneCounter,循环变量i和第三变量Out_i,即ZeroCounter = 0,OneCounter=0,i=0,Out_i=0;
步骤S0312,判断循环变量i是否小于等于E_Bitslen,其中E_Bitslen是第二预设参数的位长,如果是,进入步骤S0313,如果否,进入步骤S0323;
步骤S0313,当循环变量i小于等于E_Bitslen时,判断E[i]的值是否满足逻辑真,如果是,进入步骤S0314,如果否,进入步骤S0319;
步骤S0314,当E[i]的值满足逻辑真时,判断第一变量ZeroCounter是否等于零值,如果否,进入步骤S0315,如果是,进入步骤S0318;
步骤S0315,当第一变量ZeroCounter不等于零值时,判断第二变量OneCounter是否等于零值,如果是,步骤S0316,如果否,进入步骤S0317;
步骤S0316,当第二变量OneCounter等于零值时,运算标志数T [Out_i]赋值零,第三变量Out_i自增一,运算标志数T [Out_i:Out_i+ ZeroCounter-1]赋值1,接着第三变量Out_i等于Out_i+ ZeroCounter,第一变量ZeroCounter赋值为1,即T [Out_i]=0,Out_i= Out_i+1,T [Out_i:Out_i+ ZeroCounter-1]=1,Out_i=Out_i+ ZeroCounter,ZeroCounter=1,进入步骤S0317;
步骤S0317,循环变量i自增一,即i=i+1,接着进入步骤S0312;
步骤S0318,当第一变量ZeroCounter等于零值时,第二变量OneCounter自增一,即OneCounter=OneCounter+1,接着进入步骤S0317;
步骤S0319,当E[i]的值不满足逻辑真时,判断第二变量OneCounter是否等于零值,如果否,进入步骤S0320,如果是,进入步骤S0322;
步骤S0320,当第二变量OneCounter不等于零值,判断第一变量ZeroCounter是否等于零值,如果是,进入步骤S0321,如果否,进入步骤S0317;
步骤S0321,当第一变量ZeroCounter等于零值时,运算标志数T [Out_i:Out_i+ ZeroCounter-1] 赋值为1,第三变量Out_i等于Out_i+ ZeroCounter,第二变量OneCounter赋值为零值,第一变量ZeroCounter赋值为1,即T [Out_i:Out_i+ ZeroCounter-1]=1,Out_i=Out_i+ ZeroCounter,OneCounter=0,ZeroCounter=1,接着进入步骤S0317;
步骤S0322,当第二变量OneCounter等于零值,第一变量ZeroCounter自增1,即ZeroCounter=ZeroCounter+1,接着进入步骤S0317;
步骤S0323,当循环变量i不小于等于E_Bitslen时,判断第三变量Out_i值是否大于零,如果是,进入步骤S0324,如果否,进入步骤S0325;
步骤S0324,当第三变量Out_i值大于零时,第三变量Out_i自减1,即Out_i=Out_i-1;
步骤S0325,输出位长度len= Out_i,和运算标志数T。
在具体实施中,如图4所示,所述步骤S031具体包括以下步骤:
步骤S0331,初始化运算标志数T和运算标志数T的位长度len,即T=0,len = 0;
步骤S0332,判断所述第二预设参数E是否小于4,如果是,进入步骤S0333,如果否,步骤S0337;
步骤S0333,当所述第二预设参数E小于4时;判断所述第二预设参数是否等于3,如果是,进入步骤S0334,如果否,进入步骤S0336;
步骤S0334,当第二预设参数E等于3,运算标志数T位或一即T = T | 1,位长度len自增一即len=len+1;
步骤S0335,输出位长度len= Out_i,和运算标志数T;
步骤S0336,当第二预设参数E不等于3时,位长度len自增一即len=len+1,进入步骤S0335;
步骤S0337,当所述第二预设参数E大于等于4时,判断第二预设参数的二进制数最低位的值是否等于1,如果是,步骤S0338,如果否,步骤S0339;
步骤S0338,当第二预设参数E的二进制数最低位的值等于1时,运算标志数T位或一即T = T | 1,第二预设参数向右移一位即E = E >> 1,和位长度len自增一即len=len+1,进入步骤S0340;
步骤S0339,当第二预设参数E的二进制数最低位的值不等于1时,第二预设参数自减1即E = E -1,和位长度len自增一即len=len+1;
步骤S0340,运算标志数T向左移一位,即T = T <<1,进入步骤S0332。
在具体实施中,当计算得到蒙哥马利模乘转换系数D之后,通过现有的普通模乘运算,需要执行四次蒙哥马利模乘实现来普通数模乘运算,而改进后方式只需要执行二次蒙哥马利模就实现普通数模乘运算,因此改进后方式的实现控制运算的状态简化了一倍。如图5所示,所述步骤S04具体包括以下步骤:
步骤S051,根据第一输入参数NA、蒙哥马利模乘转换系数D和所述蒙哥马利模乘函数,得到第一模乘结果NAR;
步骤S052,根据第二输入参数NB、第一模乘结果NAR和所述蒙哥马利模乘函数,得到最终模乘结果。
对于步骤S051,也就是说,调用一次蒙哥马利模乘函数,输入两个参数分别为NA、R2,R2为蒙哥马利模乘转换系数,NAR = MontF(NA, R2),NAR是一个变量。
对于步骤S052,也就是说,调用一次蒙哥马利模乘函数,输入两个参数分别为NAR、B,RE = MontF(NAR,B),RE是NA和NB关于模数N的模乘结果。
在具体实施中,如图6所示,所述步骤S04具体包括以下步骤:
步骤S061,根据第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到第二模乘结果NBR;
步骤S062,根据第二输入参数NA、第二模乘结果NBR和所述蒙哥马利模乘函数,得到最终模乘结果。
对于步骤S061,也就是说,调用一次蒙哥马利模乘函数,输入两个参数分别为NB、R2,NBR = MontF(NB, R2),BR是一个变量。
对于步骤S062,也就是说,调用一次蒙哥马利模乘函数,输入两个参数分别为NA、NBR,RE = MontF(NA, NBR),RE是NA和NB关于模数N的模乘结果。
在具体实施中,如图7所示,所述步骤S04具体包括以下步骤:
步骤S071,根据第一输入参数NA、第二输入参数NB和所述蒙哥马利模乘函数,得到第三模乘结果NANBr;
步骤S072,根据第三模乘结果NANBr、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到最终模乘结果。
  对于步骤S071,调用一次蒙哥马利模乘函数,输入两个参数分别为A、B, NANBr = MontF(NA, NB),NANBr是一个变量。
 对于步骤S072,调用一次蒙哥马利模乘函数,输入两个参数分别为NANBr、R2,RE = MontF(NANBr, R2),RE是NA和NB关于模数N的模乘结果。
在具体实施中,本发明还提供一种实施例的嵌入式安全芯片,如图8所示,所述嵌入式安全芯片包括获取模块1,蒙哥马利模乘模块2和次方计算模块3;
获取模块1,用于获取两个第一预设参数,和第二预设参数,其中第一预设参数为常数1;
蒙哥马利模乘模块2,用于根据两个第一预设参数,得到第一运算结果A;
次方计算模块3,用于根据所述蒙哥马利模乘模块2输出的第一运算结果A、第一预设参数、第二预设参数和次方计算函数,得到第二运算结果B,其中,第二预设参数为W-4,W =φ(N),φ是欧拉函数,N是蒙哥马利模乘中模数,模数位长通常取值为192、239、521、1024、2048,第二预设参数只与模数N有关,次方计算函数为计算R-1 数的多少次方的函数,R与 R-1关于模数N互逆;
所述蒙哥马利模乘模块2,还用于根据第一运算结果A和第二运算结果B,得到蒙哥马利模乘转换系数,以及根据第一输入参数NA、第二输入参数NB和蒙哥马利模乘转换系数,得到最终模乘结果。
从上述芯片的方案可以看出,次方计算函数只与蒙哥马利模乘函数有关系。不同的模数N,通过调用不同次数的蒙哥马利模乘函数,就能得到蒙哥马利模乘的转换系数,从而避开大数模幂方式的计算转换系数,而且不需要事先计算好系数,可以节省存储空间,另外在没有复杂大数库基础上,也能完成非对称密钥运算,以及可用于检查一个大数是否为素数的必要条件和可用于检查蒙哥马利模乘算法正确性。如果计算的数越来越长,素数域多个情况下,该算法的优势会更明显。
在具体实施中,所述次方计算模块3还用于:
根据所述第二预设参数E转换成计算过程的编码,得到运算标志数T和运算标志数T的位长度len;
将第一运算结果A赋值给中间结果S,即S = A,A值等于R-1 数;
对循环量i初始化,并将len-1值赋值给循环量i,即i=len-1;
判断循环量i是否大于等于零值;
当循环量i大于等于零值时,运算标志数T [i]的值是否满足逻辑真;
当循环量i小于零值时,第二运算结果B等于所述中间结果S,即S 等于 AE
当运算标志数T [i]的值不满足逻辑真时,根据所述中间结果S、第一预设参数和蒙哥马利模乘函数,对所述中间结果S进行更新,即S= MontF(S,1);
当运算标志数T [i]的值满足逻辑真时,根据两个所述中间结果S和蒙哥马利模乘函数,对所述中间结果S进行更新,即S= MontF(S,S);
当所述中间结果S进行更新后,循环量i值自减常数1,即i=i-1接着进入判断循环量i是否大于等于零值的步骤。
在具体实施中,当计算得到蒙哥马利模乘转换系数D之后,通过现有的普通模乘运算,需要执行四次蒙哥马利模乘实现来普通数模乘运算,而改进后方式只需要执行二次蒙哥马利模就实现普通数模乘运算,因此改进后方式的实现控制运算的状态简化了一倍,也就是说,所述蒙哥马利模乘模块2,还用于根据第一输入参数NA、蒙哥马利模乘转换系数D和所述蒙哥马利模乘函数,得到第一模乘结果NAR;
第二输入参数NB、第一模乘结果NAR和所述蒙哥马利模乘函数,得到最终模乘结果。
或者,所述蒙哥马利模乘模块2,还用于根据第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到第二模乘结果NBR;
根据第一输入参数NA、第二模乘结果NBR和所述蒙哥马利模乘函数,得到最终模乘结果。
或者,所述蒙哥马利模乘模块2,还用于根据第一输入参数NA、第二输入参数NB和所述蒙哥马利模乘函数,得到第三模乘结果NANBr;
根据第三NANBr模乘结果、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到最终模乘结果。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

一种嵌入式安全芯片及其的蒙哥马利模乘运算方法.pdf_第1页
第1页 / 共16页
一种嵌入式安全芯片及其的蒙哥马利模乘运算方法.pdf_第2页
第2页 / 共16页
一种嵌入式安全芯片及其的蒙哥马利模乘运算方法.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《一种嵌入式安全芯片及其的蒙哥马利模乘运算方法.pdf》由会员分享,可在线阅读,更多相关《一种嵌入式安全芯片及其的蒙哥马利模乘运算方法.pdf(16页珍藏版)》请在专利查询网上搜索。

本发明提供了嵌入式安全芯片和其的蒙哥马利模乘运算方法,所述运算方法包括以下步骤获取两个第一预设参数,和第二预设参数,其中第一预设参数为常数1;根据两个第一预设参数和蒙哥马利模乘函数,得到第一运算结果A;根据第一运算结果A、第一预设参数、第二预设参数和次方计算函数,得到第二运算结果B;根据第一运算结果A、第二运算结果B和所述蒙哥马利模乘函数,得到蒙哥马利模乘转换系数D;根据第一输入参数NA、第二输入。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1