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

文档序号:8445385阅读:458来源:国知局
一种嵌入式安全芯片及其的蒙哥马利模乘运算方法
【技术领域】
[0001]本发明涉及密码学中非对称密钥算法领域,尤其涉及一种嵌入式安全芯片及其的蒙哥马利模乘运算方法。
【背景技术】
[0002]信息安全的安全保障基于安全算法,安全算法有一类是非对称密钥算法。非对称密钥算法的基本运算是大数的模乘运算,模乘运算算法中效率高、便于实现的算法是蒙哥马利模乘算法。蒙哥马利模乘使用过程中需要把普通数转换成蒙哥马利数,然后在根据系数进行蒙哥马利模乘运算,那么转换过程中需要用到转换系数,该转换系数一般通过大数模幂算法计算得到,使得现有的嵌入式安全芯片中需要进行复杂的大数运算,那么嵌入式安全芯片中的算法需要花费较多的运行时间和资源。

【发明内容】

[0003]本发明的目的旨在至少解决上述技术缺陷之一,提供一种嵌入式安全芯片及其的蒙哥马利模乘运算方法。
[0004]本发明提供一种嵌入式安全芯片的蒙哥马利模乘运算方法,所述运算方法包括以下步骤:
获取两个第一预设参数,和第二预设参数,其中第一预设参数为常数I;
根据两个第一预设参数和蒙哥马利模乘函数,得到第一运算结果A ;
根据第一运算结果A、第一预设参数、第二预设参数和次方计算函数,得到第二运算结果B,其中,第二预设参数为W-4,W =Φ(Ν),Φ是欧拉函数,N是蒙哥马利模乘中模数,次方计算函数为计算IT1数的多少次方的函数,R与IT1关于模数N互逆;
根据第一运算结果Α、第二运算结果B和所述蒙哥马利模乘函数,得到蒙哥马利模乘转换系数;
根据第一输入参数NA、第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到最终模乘结果。
从上述方法的方案可以看出,次方计算函数只与蒙哥马利模乘函数有关系。不同的模数N,通过调用不同次数的蒙哥马利模乘函数,就能得到蒙哥马利模乘的转换系数,从而避开大数模幂方式的计算转换系数,而且不需要事先计算好系数,可以节省存储空间,另外在没有复杂大数库基础上,也能完成非对称密钥运算,以及可用于检查一个大数是否为素数的必要条件和可用于检查蒙哥马利模乘算法正确性。如果计算的数越来越长,素数域多个情况下,该算法的优势会更明显。
[0005]本发明提供还一种嵌入式安全芯片,所述嵌入式安全芯片包括:
获取模块,用于获取两个第一预设参数,和第二预设参数,其中第一预设参数为常数
I;
蒙哥马利模乘模块,用于根据两个第一预设参数,得到第一运算结果A ; 次方计算模块,用于根据所述蒙哥马利模乘模块输出的第一运算结果A、第一预设参数、第二预设参数和次方计算函数,得到第二运算结果B,其中,第二预设参数为W-4,W= Φ(Ν),Φ是欧拉函数,N是蒙哥马利模乘中模数,次方计算函数为计算IT1数的多少次方的函数,R与R4关于模数N互逆;
所述蒙哥马利模乘模块,还用于根据第一运算结果A和第二运算结果B,得到蒙哥马利模乘转换系数,以及根据第一输入参数NA、第二输入参数NB和蒙哥马利模乘转换系数,得到最终模乘结果。
[0006]从上述芯片的方案可以看出,次方计算函数只与蒙哥马利模乘函数有关系。不同的模数N,通过调用不同次数的蒙哥马利模乘函数,就能得到蒙哥马利模乘的转换系数,从而避开大数模幂方式的计算转换系数,而且不需要事先计算好系数,可以节省存储空间,另外在没有复杂大数库基础上,也能完成非对称密钥运算,以及可用于检查一个大数是否为素数的必要条件和可用于检查蒙哥马利模乘算法正确性。如果计算的数越来越长,素数域多个情况下,该算法的优势会更明显。
【附图说明】
[0007]图1为本发明蒙哥马利模乘运算方法一种实施例的流程图;
图2为本发明蒙哥马利模乘的系数中次方计算方法一种实施例的流程图;
图3为本发明蒙哥马利模乘的系数中编码计算方法一种实施例的流程图;
图4为本发明蒙哥马利模乘的系数中编码计算方法另一种实施例的流程图;
图5为本发明蒙哥马利模乘的普通模乘运算第一种实施例的流程图;
图6为本发明蒙哥马利模乘的普通模乘运算第二种实施例的流程图;
图7为本发明蒙哥马利模乘的普通模乘运算第三种实施例的流程图;
图8为本发明嵌入式安全芯片一种实施例的结构示意图。
【具体实施方式】
[0008]为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0009]本发明提供一种实施例嵌入式安全芯片的蒙哥马利模乘运算方法,如图1所示,所述运算方法包括以下步骤:
步骤S01,获取两个第一预设参数,和第二预设参数,其中第一预设参数为常数I ;
步骤S02,根据两个第一预设参数和蒙哥马利模乘函数,得到第一运算结果Α,第一运算结果 A = MontF (I, I);
步骤S03,根据第一运算结果Α、第一预设参数、第二预设参数和次方计算函数,得到第二运算结果B,其中,第二预设参数为W-4,W =Φ (N),Φ是欧拉函数,N是蒙哥马利模乘中模数,模数位长通常取值为192、239、521、1024、2048,第二预设参数只与模数N有关,次方计算函数CoeffEx为计算IT1数的多少次方的函数,第二运算结果B= CoeffEx (A, ff-4),R与R4关于模数N互逆;
步骤S04,根据第一运算结果A、第二运算结果B和所述蒙哥马利模乘函数,得到蒙哥马利模乘转换系数D,D=MontF(A, B),即D= R2;
步骤S05,根据第一输入参数NA、第二输入参数NB、蒙哥马利模乘转换系数和所述蒙哥马利模乘函数,得到最终模乘结果RE,RE是第一输入参数NA和第二输入参数NB关于模数N的模乘结果。
[0010]从上述方法的方案可以看出,次方计算函数只与蒙哥马利模乘函数有关系。不同的模数N,通过调用不同次数的蒙哥马利模乘函数,就能得到蒙哥马利模乘的转换系数,从而避开大数模幂方式的计算转换系数,而且不需要事先计算好系数,可以节省存储空间,另外在没有复杂大数库基础上,也能完成非对称密钥运算,以及可用于检查一个大数是否为素数的必要条件和可用于检查蒙哥马利模乘算法正确性。如果计算的数越来越长,素数域多个情况下,该算法的优势会更明显。
[0011]在具体实施中,如图2所示,所述步骤S03具体包括以下步骤:
步骤S031,根据所述第二预设参数E转换成计算过程的编码,得到运算标志数T和运算标志数T的位长度len,进入步骤S032 ;
步骤S032,将第一运算结果A赋值给中间结果S,即S = A,A值等于IT1数,进入步骤S033;
步骤S033,对循环量i初始化,并将Ien-1值赋值给循环量i,即i=len_l进入步骤S034 ;
步骤S034,判断循环量i是否大于等于零值,如果是,步骤S035,如果否,步骤S036 ;步骤S035,当循环量i大于等于零值时,T[i]的值是否满足逻辑真,如果是,进入步骤S038,如果否,进入步骤S037 ;
步骤S036,当循环量i小于零值时,输出第二运算结果B,第二运算结果B等于所述中间结果S,即S等于Ae;
步骤S037,当T[i]的值不满足逻辑真时,根据所述中间结果S、第一预设参数和蒙哥
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1