密码算法在TMS320C6201上的实现
刘晓莹,祝跃飞
(信息工程大学信息工程学院,河南郑州450002)
摘要:在TMS320C6201上实现密码算法,包括:DES(3DES),AES,RSA。在RSA的实现中,提出一种改进算法。同时根据TMS320C6201的特点应用汇编实现底层算法,并进行优化。实现速度达到:DES为每秒48Mbits,3DES为每秒18Mbits,AES为每秒139Mbits,RSA为每秒签名56次。
关键词:RSA;DES;AES;TMS320C6201;TI
中图分类号:TP309 文献标识码:A 文章编号:1671-0673(2003)01-0001-02
RealizationofCryptosystemonTMS320C6201
LIUXiao-ying,ZHUYue-fei
(InstituteofInformationEngineering,InformationEngineeringUniversity,Zhengzhou450002,China)
Abstract:InthispapertheauthorspresenttherealizationofacryptosystemincludingDES(3DES),
AES,andRSAonTMS320C6201.TheyfindamethodtorealizeandoptimizethealgorithmofRSAac-cordingtothepropertiesoftheTMS320C6201,achicvingaspeedof48Mbits/sforDES,18Mbits/sfor3DES,139Mbits/sforAES,andgenerating56RSAsignature/s.Keywords:RSA;DES;AES;TMS320C6201;TI
1 前言
目前,密码系统广泛应用于军事、政治、经济等领域,发挥着越来越重要的作用。由于网络等技术的迅猛发展,需要进行加解密处理的数据量急剧增加,对密码的实现速度要求也越来越高。国内外研究机构均投入大量精力对快速算法和系统实现等方面进行深入研究。基于这个原因,我们选择了德州仪器(TI)的TMS320C6201芯片实现密码算法。主要包括DES、AES和RSA等密码算法。实现的速度指标如表1,所有工作的实现环境都为200MHz的TMS320C6201。
表1
密码类型本文速度
RSA56次签名/秒
DES48Mbits/s
3DES
AES
2 TMS320C6201简介
TMS320C6201属于TI的TMS320C62XX定点系列,具有VLIW(VeryLongInstructionWord)结构,可以并行处理多条指令。与专用集成芯片相比,它通
用性强,使用灵活,易于系统重构与升级。
TMS320C6201的CPU内有两个可进行数据处理的数据通路A和B,每个通路有4个功能单元(.L,.S,.M,.D)和16个32位的寄存器构成的寄存器组。其中,两个数据寻址单元(.D1和.D2)专门负责寄存器与存储器之间的数据传递;两个专用乘法器(.M1和.M2)。每个数据通路有一条交叉通道连接另外一个寄存器组,以进行两个寄存器组间的数据交换。因此,TMS320C6201每个时钟周期最多可并行8条指令(分别有8个功能单元处理)。如图1。
18Mbits/s139Mbits/s
收稿日期:2002-09-17
基金项目:国家973项目(G1999035804);国家自然科学基金项目(90204015);河南省杰出青年基金项目(0212001400);河南省自然科学基金项目(011105100)
作者简介:刘晓莹(1971-),女,北京人,信息工程大学硕士研究生,主要研究方向为信息安全。 2 信息工程大学学报
114for(i=0;i<8;s<<=4,i++)
2003年
115{MontgomeryMul(c,c,P,c);MontgomeryMul(c,c,P,c);
图1
116MontgomeryMul(c,c,P,c);
117if((s>>28)!=0)MontgomeryMul(c,Tab[(s>>28)-1],P,c);}118}
119MontgomeryMul(c,1,P,c);
Mul(c,c,P,c);Montgomery
TMS320C6201的时钟频率为200MHz,峰值性能可达到1600MIPS。基于TMS320C6201具有良好性能,选择它进行密码算法的开发。
3 密码算法的实现
我们在DSP上实现了由分组密码和公钥密码两部分算法。分组密码主要用于数据加解密,公钥密码用于密钥安全和代码保护。3.1 分组密码
我们实现了DES
[1]
注 MontgomeryMul(a,b,P,buf)是实现Montgomery约化的子程,结果为:buf=a*b*r-1modP。
在签名中,进行两次模指,如上造一个15项的预处理表,则约需进行1288次Montgomery约化。因此,实现的重点是Montgomery约化。
经过深入研究Montgomery约化算法,对它进行
两种
改进,使改进后的算法运算更简单,从而有效地提高了实现速度。经过比较,改进后的算法比原来的算法减少了4%的工作量。
为提高效率及充分利用8个数据通路,Mont-gomery约化以DSP标准汇编的形式完成,达到了较好的效果。RSA签名速度达到了每秒56次签名。
(包括3DES)和AES
[2]
分组密码。分组密码主要用于大规模数据加解密处理,因此实现速度至关重要。在深入研究TMS320C6201的特性并结合算法考虑的基础上,充分利用6201的8个数据通道,提高核心程序的并行率,如AES每个时钟周期平均执行4.61条指令。
程序代码都在10K以内。3.2 公钥密码
考虑RSA签名中512位模指的实现:算法1
输入:P[16],e[16],a[16],r[16]=2513modP,r2[16]=r2
modP
输出:c=aemodP
算法:101MontgomeryMul(r2,a,P,Tab[0]);
102for(i=1;i<14;i++)103MontgomeryTab[i]);
104for(s=e[15],num=7;num>=0;s<<=4,num--)
105if((s>>28)!=0)break;
106MontgomeryMul(r,Tab[(s>>28)-1],P,c);107s<<=4;
108for(i=0;i Mul(c,c,P,c);MontgomeryMul(Tab[i-1],Tab[0],P, 4 结论 整个密码算法的代码总量约40K,驱动和系统管理约20K。在实现上,对各种密码进行分析、改进,并充分利用DSP的特点提高运行的速度。达到的运算能力如表2,AES为128bit/分组。 表2 密码类型处理速度 RSA约3.5M时钟/次签名 DES267时钟/分组 3DES717时钟/分组 AES184时钟/分组 我们在深入分析各种算法并进行改进后,达到了数据处理的理想速度,如AES每秒加解密超过100Mbits;然而目前RSA的速度指标比国外同行公布的最好结果还有一些差距[3],有待进一步优化。 参考文献: [1]BruceSchneier.应用密码学-协议、算法和C源程序 [M].北京:机械工业出版社,1996. [2]JoanDaemen,VincentRijmen.AESProposal:Rijndeal[R]. AESSubmission,1998. [3]KouichiItoh,MasahikoTakenaka,NaoyaTorh.FastImple-mentationofPublic-KeyCryptographyonaDSPTMS320C6201[A].LNCS1717[C].Springer-Verlag,1999. 因篇幅问题不能全部显示,请点此查看更多更全内容