RISC-V MCU中文社区

【分享】 RSA加速实现思路

发表于 全国大学生集成电路创新创业大赛 2021-07-22 13:18:07
0
3760
1

队伍名称:东莞庄路三缺二 队伍编号:CICC1399。大家好,本篇是我们队伍的第三篇分享,主要介绍加速RSA算法加速的思路。水平有限,如有错误,欢迎大家批评指正。

1 关于RSA算法

RSA为非对称加密算法(也称为公开密钥算法),是当前比较普遍使用的非对称加密算法之一,常用于密钥交换和数字签名。RSA是一种较为高级、可基于硬件和软件实现的加密算法,安全性能高,速度却由于计算量大而比较慢。算法基于数论原理,寻求两个大质数并将它们的乘积作为公钥(乘积进行因式分解极其困难),RSA算法的密钥和输入内容没有固定长度,一般1024 bits,密钥长度越长保密强度越高;模式为加密和解密,是两种RSA的工作方式。

RSA算法流程:

     选取两个质数qp,两个数相乘得到N。质数越大保密程度越高。

     计算q-1p-1的最小公倍数L。选取加密用的指数幂E为比1大且比L小,同时EL的最大公约数为1

     选取解密时用到的指数幂DE关于模数L的模逆元,即D=E-1mod L);1

     设明文为M,密文为C.

加密过程为:C=ME mod N;其中(E , N)组成公钥

解密过程为:M = CDmod N;其中(D , N)组成私钥

2 关于加速操作

       上述提到NED一旦选取,在给数据流进行加解密的过程中便是作为常数存在,不需要反复生成,在数据流达到一定长度的情况下,生成公钥和私钥的花费的时间占比很小,不考虑对它们进行加速。而实际应用中这3个常数数值往往很大,对应二进制数位宽一般为1024bits,甚至更多。这就会造成加解密用到的大数模幂运算花费的时间会很大,它也是我们要关注的加速操作。

         对大数模幂操作常用的方案是【L-R扫描模幂算法蒙哥马利模乘算法】。

       L-R扫描模幂算法:

输入: M ,e,N,R2N;

                           -- M是明文,位宽取n=1024bits

                           -- e 是加密密钥,位宽取 n

                           -- N 是模数,位宽取n

                           -- R2N是常数, 等于R2modN,用于抵消蒙哥马利模乘结果的冗余项。

                  输出C=MemodN;

           {

                          M2 = Monprod(M,R2N,N)

                          C  =Monprod(1,R2N,N)

                          for i = n-1 to 0 do

                                   {

                                            C = Monprod(C,C,N) ;

                                            if(ei = 1) C = Monprod(C,M2,N);

                                   }

                          C=Monprod(1,C,N)

                          reture C;

}    

蒙哥马利模乘算法:

输入 A,B,N;

--A = [am+2,am+1,am,am-1,am-2,…,a1,a0 ]2

--B = [bm+2,bm+1,bm,bm-1,bm-2,…,b1,b0]2, 

--N = [nm-1,nm-2,…,n1,n0]2n0=1

--Am+3R’ = 2-m+3 mod N (R‘R对于模N的逆元,与N,n相关。m是模数N的位宽,在这里取1024bits)

输出 S= Monprod (A,B,N) = A * B * 2-(m+3) mod N

S = 0;

         fori= 0i< m+3 ; i++{

             if(ai == 1) then S = S + B;  

if (S[0] ==1)then S = (S+N)/2; }

这里要注意的是多循环三次(m+3)是为了省去算法每次循环原有的操作(ifS>NS=S-N;),进一步减少运算时间。

可以看出L-R模幂算法包含了大量蒙哥马利算法实现的模乘运算。模幂运算效率的提高取决于模乘运输速度。为了加快模幂运算速度,我们将模乘运算操作交给硬件完成,而for loop等数据调用工作交给软件实现。

3 关于硬件实现与仿真

1蒙哥马利模乘电路结构

1所示电路可以实现1024bits模乘运算,主要特征包括:

       使用32位加法器完成1024bit加法运算,节省硬件开销。

       使用同步FIFO存取模乘结果S,无需外部读写地址线实现字段更新与读取操作同时进行。  

       使用双DFF结构实现各字段右移一位,当前字段最高位补下一个字段的最低位。


2 RSA算法加速结果

最后给出RSA算法的加速结果,如图2所示,时钟周期数加速了27.9倍。


喜欢1
用户评论

未通过实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板