一种模乘运算电路和一种运用该模乘运算电路的加密方法,该模乘运算电路包括512个基本运算电路,排成32列16行的矩阵;基本运算电路包括,两个多路选择器和两个一位加法器;32列16行的矩阵最右侧一列的16个基本运算电路的加法器进位输入为cp1[0,i],cp2[0,i],最左侧一列的16个基本运算电路的加法器进位输出为cp1[31,i],cp2[31,i],其余基本运算电路的进位输入为其右侧的基本运算电路的进位输出;除第1行的32个基本运算电路以外,每一行的基本运算电路的输入P[j]是上一行的基本运算电路的输出Po[j-1];使用该模乘运算电路的加密方法按照从右到左,从上到下的顺序依次使用这512个基本运算电路进行模乘运算;本发明专利技术简化了电路,提高了运算速度并有效的节约了芯片面积。(*该技术在2023年保护过期,可自由使用*)
【技术实现步骤摘要】
本专利技术涉及RSA加密技术,尤其涉及。
技术介绍
信息时代的飞速发展,给人们带来了新的生活方式,也给人们带来了信息安全的观念。公开密钥密码体制是现代密码学的最重要的专利技术和进展,其中,RSA公钥密码算法是目前比较安全且使用最广泛的一种加密算法,主要应用于智能IC卡和网络安全产品。RSA是一种公开密钥机理的加密算法。所谓公开密钥,就是每个用户拥有两个密码,一个公开(e),一个保密(d)。对明文加密,可以使用其中任一密码,但解密必须使用另一个密码。加密/解密算法是公开的,但是算法是不可逆的。RSA算法的加密过程为C=ME(modN),解密过程为M=CD(modN)。其中,M为明文,即待加密的数据,C为密文,即加密以后的数据,E为加密密钥,D为解密密钥,N为模数,N越大,运算过程越复杂,加密速度越慢,但同时破译也就越困难。RSA算法之所以具有安全性,是基于数论中的一个特性事实即将两个大的质数合成一个大数很容易,而相反的过程则非常困难。在当今技术条件下,当n足够大时,为了找到d,欲从n中通过质因子分解试图找到与d对应的p、q是极其困难甚至是不可能的。由此可见,RSA的安全性是依赖于作为公钥的大数n的位数长度的。为保证足够的安全性,一般认为现在的个人应用需要用384或512比特位的n,公司需要用1024比特位的n,极其重要的场合应该用2048比特位的n。RSA的加密过程,即C=ME(modN),就是一系列的模乘运算。M为u位二进制整数(mu-1mu-2…m1m0)2,即待加密的数据,N为u位二进制整数(nu-1nu-2…n1n0)2,即模数,E为u位二进制整数(eu-1eu-2…e1e0)2,为加密密钥,其算法如下<pre listing-type="program-listing"> ME(M,E,N)<!-- SIPO <DP n="1"> --><dp n="d1"/> { C=1; P=M mod N; for i=0 to u-1 do { if(ei=1) C=P*C(mod N); P=P*P(mod N); } return C; }</pre>其中大数位数往往多达512bit或更多,运算量极大,因此,解决模乘运算即成为RSA加密的核心问题。现有技术中常用到两种改进的蒙哥马利(Montgomery)算法,基为32和基为2的算法。基为32的算法如下<pre listing-type="program-listing"> MM(X,Y,M) { P0=0; for i=0 to 31 do { Ti=xi*Y; qi=(Pi+Ti)*m0’(mod r); Pi+1=(Pi+Ti+qi*M)/r; } if(P32>M) P32=P32-M; Return P32; }</pre> r=32,m0’为M的低32bit关于232的逆元。若算法的基为2时,r=2,m0’=1。基为2的算法如下<pre listing-type="program-listing"> MM(X,Y,M) { P=0 for i=0 to 1023 do { P=P+xi*Y if P=1 then P=P+M P=P div 2 } if(P>M) P=P-M Return P }</pre>可见,当我们令基为2时,算法得到了很大的简化,避免了采用基为32时逆元的的求解。但是现有技术中使用基为2的改进的蒙哥马利算法的模乘运算电路存在速度慢,面积大的缺点。
技术实现思路
本专利技术的目的是提供,模乘运算采用基为2的改进的蒙哥马利算法,电路采用处理单元局部互连的脉动阵列结构。为了达到上述目的,办法明采用如下技术方案本专利技术的模乘电路包括512个基本运算电路,排成32列16行的矩阵;基本运算电路包括,两个多路选择器,两个一位加法器,多路选择器1的输入为被乘数Y的第j位Y、0、乘数X的第i位X,其输出连接到一位加法器1的输入,多路选择器2的输入为模M的第j位M、0、Ip,其输出连接到一位加法器2的输入,一位加法器1的进位输入为cp1_in,另一个输入为部分积P的第j位P,其输出连接到一位加法器2的输入,进位输出为cp1_out,一位加法器2的进位输入为cp2_in,其结果输出到Po,进位输出为cp2_out;所述32列16行矩阵的最右侧一列的16个基本运算电路的加法器进位输入为cp1,cp2,最左侧一列的16个基本运算电路的加法器进位输出为cp1,cp2,其余基本运算电路的进位输入为其右侧的基本运算电路的进位输出;在同一行中的32个基本运算电路的多路选择器2的输入Ip是相同的,都是该行最右侧的基本运算电路中的一位加法器1的输出;除第1行的32个基本运算电路以外,每一行的基本运算电路的输入P是上一行的基本运算电路的输出Po。本专利技术的运用该模乘运算电路的加密方法,计算乘数X与被乘数Y的模乘,运用公式X*YmodM,X、Y、M都是n位的二进制数,包括以下步骤1)取出X的第1位X0,作为所述模乘电路第1行的32个基本运算电路的输入X;2)第1行最右侧的基本运算电路输入P、Y、M、cp1_in、cp2_in后,该基本运算电路计算得到Ip、cp1_out、cp2_out、Po,Ip输入到该行的32个基本运算电路的Ip,cp1_out、cp2_out输出到该基本运算电路的左侧的一个基本运算电路,Po输出到下一行的列基本运算电路;3)第1行的32个基本运算电路按从右到左的顺序依次完成计算,得到X0与Y的前32位数的乘积,将第1行最左侧的基本运算电路计算所得的cp1_out、cp2_out作为输入在输入到第1行最右侧的基本运算电路中,进行X0与Y的下32位数的模乘运算;4)重复步骤2)和步骤3)(n/32)*33次以后,完成X0与n位二进制数Y的模乘运算;5)步骤4)得到的结果Po作为第2行的基本运算电路的P的输入,取出X的第2位X1作为所述模乘电路第2行的32个基本运算电路的输入X;6)类似所述步骤2)、3)、4),完成X1与n位二进制数Y的模乘运算;7)类似所述步骤1)、2)、3)、4),完成X0到X15与n位二进制数Y的模乘运算;8)重复步骤7)n/16次以后,完成n位二进制数X和n位二进制数Y的一次模乘运算。Xi与Y的模乘运算中计算得到的Po直接作为Xi+1中的P的输入,不必等到Xi与Y的模乘运算全部完成。附图说明图1是本专利技术的基本运算电路的电路原理图。图2是本专利技术的基本运算电路的电路图。图3是本专利技术的模乘电路的结构示意图。具体实施例方式下面结合附图进一步说明本专利技术的技术方案,本专利技术提供,模乘运算采用基为2的改进的蒙哥马利算法,电路采用处理单元局部互连的脉动阵列结构。本专利技术的模乘运算电路包括512个基本运算电路,排成32列16行的矩阵;基本运算电路包括,如图1所示,两个多路选择器101和102,两个一位加法器103和104,多路选择器本文档来自技高网...
【技术保护点】
一种模乘运算电路,其特征在于,包括512个基本运算电路,排成32列16行的矩阵;基本运算电路包括,两个多路选择器(101)和(102),两个一位加法器(103)和(104),多路选择器(101)的输入为被乘数Y的第j位Y[j]、0、 乘数X的第i位X[i],其输出连接到一位加法器(103)的输入,多路选择器(102)的输入为模M的第j位M[j]、0、Ip[0],其输出连接到一位加法器(104)的输入,一位加法器(103)的进位输入为cp1_in,另一个输入为部分积P的第j位P[j],其输出连接到一位加法器(104)的输入,进位输出为cp1_out,一位加法器(104)的进位输入为cp2_in,其结果输出到Po[j],进位输出为cp2_out;所述32列16行矩阵的最右侧一列的16个基本运算电路的加 法器进位输入为cp1[0,i],cp2[0,i],最左侧一列的16个基本运算电路的加法器进位输出为cp1[31,i],cp2[31,i],其余基本运算电路的进位输入为其右侧的基本运算电路的进位输出;在同一行中的32个基本运算电路的多路选择器(102)的输入Ip[0]是相同的,都是该行最右侧的基本运算电路中的一位加法器(103)的输出;除第1行的32个基本运算电路以外,每一行的基本运算电路的输入P[j]是上一行的基本运算电路的输出Po[j-1]。...
【技术特征摘要】
【专利技术属性】
技术研发人员:白宁,高璐琳,印义言,
申请(专利权)人:上海华园微电子技术有限公司,
类型:发明
国别省市:31[中国|上海]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。