RSA算法的一种DSP快速实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RSA算法的一种DSP快速实现*
刘亮,胡冰,徐海波,林璟锵,向继,荆继武
(中国科学院研究生院信息安全国家重点实验室,北京100039)
摘要:根据DSP特性采用了RSA模幂快速算法,在节省了主机资源的同时加速了RSA算法;另一方面,方案采用密钥拆分机制,使得完整私钥对于外界是无法访问的,同时提高了RSA算法在实际应用中的安全性。
关键词:快速模幂运算;DSP;密钥拆分;RSA算法
中图法分类号:TP312 文献标识码:A 文章编号:1001-3695(2005)04-0155-02
A Fast Implementation of RSA Algorithm by DSP
LIU Liang,HU Bing,XU Hai-bo,LIN Jin-giang,XIANG Ji,JING Ji-wu
(State Key Laboratory of Information Security,Graduate School,Chinese Academy of Sciences,Beijing100039,China)Abstract:Select a fast modular exponentiation algorithm according to the feature of DSP,so host s resources are saved and further more the speed of modular exponentiation operation is accelerated.On the other hand,the scheme splits the private key to make it unaccessible to the outside thus the security of the implementation of RSA algorithm is enhanced.
Key words:Fast Modular Exponentiation;DSP;Key Split;RSA Algorithm
随着网络技术的发展,网络在社会中扮演越来越重要的角色,网络安全问题已成为全球所关注的焦点。
信息的真实性和隐匿性是网络安全所关注的两个重要方面,加密和数字签名则是当前在这两个方面上的主要安全解决方案。
Ronald L.Rivest,Adi Shamir和Leonard M.Adleman于1978年开发了RSA算法,并由此获得2002年的图灵奖。
RSA 方案从诞生起即作为唯一被广泛接受并实现的通用公开密钥加密方式而受到推崇。
RSA算法是一种分组密码,其中的明文和密文都是对于某个n的[0,n-1]之间的整数,算法描述如下:
对于某个明文分组M和密文分组C,加密及解密的形式:C=M e mod n
M=C d mod n=(M e)d mod n=M ed mod n
其中,n为大素数,{e,n}为公开密钥,{d,n}为私有密钥,且d 和e以欧拉totient函数!(n)为模互为乘法逆元。
RSA算法的加解密、数字签名/验证皆为模幂运算。
当RSA算法参数(M,C,e,d,n)长达上千比特时,模幂运算的运算量使得正面攻破RSA算法在当前的技术条件下是不可能的。
RSA算法是唯密钥保密的算法,一旦私钥泄漏,RSA算法就失去了应有的功能。
攻击者通过操作系统的漏洞攻占主机、种植木马程序获取主机上存储的信息是最常见的安全威胁。
用纯软件实现密码算法,密钥信息位于可访问的内存中,就不可避免地面临私钥泄漏的危险。
另一方面,纯软件实现RSA算法,在效率上也会存在很大的缺陷。
撇开RSA模幂运算本身占用大量的主机资源的事实不谈,由于通用处理器采用的是冯·诺依曼结构,总线只把系统中的两个设备连接在一起,实现这两个设备之间的数据传输,而没有像DSP的哈佛结构那样拥有并行体系结构。
这就使得数值运算例如乘法、加法等无法在一个周期内完成,从而影响了RSA算法的实现效率———这个缺陷是无法克服的。
1 方案硬件原理图
出于对纯软件RSA算法实现的实用性以及安全隐患的考虑,我们采用以DSP为核心部件的专用PCI模幂卡来实现RSA算法。
图1是PCI模幂卡的硬件原理图,其中DSP上电从Flash中加载程序至内部的RAM中,访问控制逻辑由DSP控制,将DSP映射的外部存储空间在Flash和PCI控制器的RAM(图1中的DSP与主机的共同访问存储空间)
之间进行切换。
图1 PCI模幂卡硬件原理图
2 DSP方案的安全机制
安全方面,我们采用密钥拆分机制。
在密钥分发时,将RSA私钥与等长的随机数字串进行异或,将异或结果和随机数字串作为密钥拆分的结果:PCI卡端私钥信息(方便起见,用A表示)和用户端私钥信息(用B表示)。
A保存在硬件卡的Flash中,用户保存B。
由于A和B 没有关联性,仅得到两者中的任何一个都是无法推导出完整私钥的。
在密钥恢复阶段,当用户需要进行加密或数字签名时,将B和要处理的信息一同发送给PCI卡,DSP将B与Flash中存
·
5
5
1
·
第4期刘亮等:RSA算法的一种DSP快速实现
收稿日期:2004-05-14;修返日期:2004-06-21
模幂运算处理。
由于恢复出的完整私钥仅在DSP内部RAM 中出现,对于外界是不可见的也是无法访问的,这样就避免了内存泄漏的威胁。
3 DSP方案的效率考虑
3.1 DSP芯片选择
该方案的课题背景是中科院研究生院信息安全国家重点实验室的入侵容忍CA系统改造。
考虑到成本与性能要求,我们选用TI公司生产的TMS320VC54l6DSP芯片作为PCI卡的核心部件,它的主要特征包括:
(l)采用哈佛结构,程序空间和数据空间分离。
TMS320VC54l6的哈佛结构采用多条并行总线:一条程序数据总线、两条数据读操作总线、一条数据写操作总线以及对应的四条地址总线,从而形成了局部并行的并行体系结构。
(2)对20MHz晶振进行8倍频,l60MIPS,指令周期6.25ns。
(3)单周期乘加运算是DSP的重要特性,TMSVC54l6带有两个40bits的累加器以及一个l7bits X l7bits的独立硬件乘法器,乘法器与累加器的硬件互连结构使得可以在一个CPU 周期内完成乘加运算。
(4)专门的块循环寄存器及对应的块循环指令实现零开销循环,与乘加指令的支持一样,这一点对于实现RSA模幂也是很重要的。
(5)可以访问的逻辑空间最小为l92KB,分为程序空间、数据空间和I/O空间各64K bits X l6bits,还可支持外部扩展存储器,可以达到8M bits X l6bits。
(6)每个时钟周期可以产生两个数据空间地址,同时带有SARAM和在一个时钟周期内可以被访问两次的DARAM。
(7)外部存储器指令无法访问DSP的ROM/RAM,只有DSP芯片上的ROM/RAM存储的指令可以访问DSP芯片的存储空间。
3.2 算法选择
关于RSA算法的模幂运算,现在已经发展了许多成熟的快速算法,其中使用最广泛也是效率最高的是Montgomery算法。
一般的求模运算离不开除法,而我们知道,大整数四则运算中,除法运算最耗时间,同样量级的除法耗时是乘法的几十倍。
Montgomery算法的高效性原因在于算法巧妙地将求模除法运算转换为乘法运算,从而大大提高了RSA算法的实现效率。
Montgomery模幂算法可以分为预计算和模乘循环两大部分组成,由于预计算所耗时间极小,算法实现效率关键在于Montgomery模乘运算[4,5]。
Montgomery模乘算法在实现上可以分为通常方式、操作数扫描方式(CIOS)、乘积扫描方式(FIPS)和混和方式四类。
这四类方式的区别在于对模乘内部循环的整合上面,适合于不同种类的处理器。
对于通用处理器来说,CIOS方式由于需要较少的加法及较少的存储空间而成为最好选择;而对于DSP来说,由于单周期乘加指令的特性,则使得FIPS方式比CIOS方式更能发挥DSP在运算方面的特
本方案采用的是Montgomery模乘算法乘积扫描方式中的FIPS方法。
下面是FIPS方法的两大主循环算法描述,我们可以清楚地看到它适合于DSP运算的特征:
算法TMS320VC54l6对应的特色指令(*表示)……
for i0to s l使用寄存器循环控制BANZ指令控制
for0to i l使用零开销块循环RPTB指令控制(*)(C,S):t[0]+a[]*b[i]可以使用乘加指令MACSU一步完成(*)ADD(t[l],C)在256的情形下,乘加MACSU包含此步(C,S):S+m[]*n[i]余下的同上描述
t[0]:S
ADD(t[l],C)
……
for i s to2s l可以使用寄存器循环控制BANZ指令
for i s+l to s l可以使用零开销块循环RPTB指令(*)(C,S):t[0]+a[]*b[i]可以使用乘加指令MACSU一步完成(*)ADD(t[l],C)在256的情形下,可以省略此步
(C,S):S+m[]*n[i]同上
t[0]:S…
ADD(t[l],C)
从上面的算法描述及TMS320VC54l6DSP对应的汇编语句我们可以看到,乘加指令以及零开销指令的引入大大减少了内层循环所耗指令周期,从而大大提升了模乘运算的速度。
实际上笔者曾经测试过,使用MACSU单周期乘加指令比使用单周期乘法指令和单周期加法指令的组合模乘速度提高30%~ 50%(乘数长度不同对速度提升比重不同);使用零开销循环指令RPTB比使用判断跳转指令(包括寄存器循环控制指令BANZ)速度提升20%~25%。
4 测试
测试说明:采用FIPS方式Montgomery模乘的Montgomery 模幂算法,分别取2048bits,3072bits,4096bits长度的私钥各l00个,对对应的2048bits,3072bits,4096bits长度的明文进行数字签名,记录每次所耗时间,对统计结果取算术平均值。
结果如表l所示。
表l FIPS方式下采用Montgomery算法
计算RSA模幂的耗时测试
算法强度2048bits3072bits4096bits
平均消耗时间l.472s 4.767s ll.l06s
结果表明,在RSA模幂运算的实现上面,用TMS320 VC54l6DSP采用FIPS算法,可以达到和733MHz奔腾!主机采用CIOS算法实现RSA算法相同的性能。
参考文献:
[l]WiIIiam StaIIings.Cryptography and Network Security PrincipIes and Practice[M].Prentice-HaII,l999.l72-l82.
[2]Cetin Kaya Koc.High-speed RSA ImpIementation[R].RSA Laborato-ries,version2.0,l994.
[3]T-W Kwon,C-S You,W-S Heo,!"#$.Two ImpIementation Methods of
a l024bits RSA Cryptoprocessor Based on Modified Montgomery AIgo-
rithm[C].Proc.of ISCAS200l,200l.650-653.
[4]Cetin Kaya Koc,ToIga Acar,Burton S KaIiski Jr.AnaIyzing and Com-paring Montgomery MuItipIication AIgorithms[J].IEEE Micro,l996,l6,(3):26-33.
[5]A Menezes,P Van Oorschot,S Vanstone.Handbook of AppIied Cryp-tography[M].CRC Press,l996.59l-634.
[6]C C Yang,T S Chang,C W Jen.A New RSA Cryptosystem Hardware Design Based on Montgomery s AIgorithm[J].IEEE Trans.Circuit
and Systems II:AnaIog and DigitaI SignaI Processing,l998,45(7):
3.2 MATLAB 和工控组态软件RSvieW32的DDE 通信
工控组态软件RSview32的DDE 通信中,RSview32可以同时既是客户机又是服务器。
作为一个客户,
RSview32可以从另一个应用程序读取数据,或把数据写入到该程序。
如果在网络上两个不同的计算机上运行RSview32,可以用网络DDE 在它们之间共享数据。
网络DDE (NetDDE )是Windows DDE 的扩展。
它允许DDE 客户在不同的计算机中,而不必在DDE 服务器中。
当RSview32用作一个NetDDE 服务器时,它给其他用作NetDDE 客户的RSview32计算机或任何NetDDE 应用程序提供实时状态的标记值。
在与MATLAB 的DDE 通信中,为了实现简单和编程方便,一般把RSview32作为服务器应用程序,而MATLAB 作为客户程序,向RSview32监控软件请求数据链接。
其总体框图如图1
所示。
图1 总体框图
4 MATLAB 和工控组态软件RSvieW32的DDE 通
信设计与实现
[6]
工控组态软件RSview32提供的数据库是一个具有复杂数据结构的实时数据库,它支持其实时数据库与其他支持DDE 的软件包的动态数据交换功能,可用于产生报表、输入离线数据和输出RSview32数据到其他的用户应用程序等。
本文用MATLAB 作为客户应用程序,而RSview32作为服务器应用程序,由MATLAB 向RSview32请求和发送数据。
RSview32作为服务器应用程序时,其服务器名为RTData ,主题名为Au-tosys ,即该RSview32项目名称,Item 选择要传送数据的RS-view32中的标记,
设为OneIoop \t 。
整个DDE 通信的软件设计是在MATLAB 的SIMULINK 中使用MATLAB 语言编写灵活的S 函数来实现,以M 文件形式存在。
具体实现方法如下:
(1)衍生标记。
创建衍生标记OneIoop \t ,使该标记相当于送入系统时域响应的仿真时钟。
(2)编制M 文件。
在MATLAB 的SIMULINK 中使用MATLAB 语言编写灵活S 函数来实现,以M 文件形式存在,这样就可以自动进行RSview32与MATLAB 动态数据的交换。
部分程序如下:
dderead3()函数
function getData =dderead3(service ,topic ,item ,bDisp )%用于通过DDE 读取数值,这里使用的是热链接if nargin ==3
bDisp =0;%参数bDisp 表示函数在运行过程中是否需要提示,1=要,0=不要
end
getData ==1;mchanneI =ddeinit (service ,topic );%建立DDE 链接if mchanneI ~=0%成功链接DDE 服务器(即为RSLINX ,主题是Dc-SYS )
if bDisp disp (sprintf ('成功链接到DDE 服务器:service =%s ,topic =%s',service ,topic ))
end eIse
%链接到DDE 服务器失败
(即为RSLINX 。
主题是Dc-SYS )if bDisp disp (sprintf ('链接DDE 服务器失败:service =%s ,topic =%s',service ,topic ))
end
getData ==-1;
return %使用return 退出该子程序end ddeadv (mchanneI ,item ,'mycaIIback3(data )','data')%建立热链接,其中第三个参数是回调函数
然后再编写mycaIIback3()函数。
在执行dderead3()时,调用了mycaIIback3()函数。
这样使用DDE 就可以将MAT-LAB 与组态软件RSview32动态链接起来,并实现了动态数据的交换。
(3)设置RSview32的DDE 通信。
在RSview32中可以用启动宏文件启动DDE 服务器,或直接在启动窗口中选中OPc /DDE 服务器启动DDE 服务器。
(4)使用RSTrendX 进行趋势画面的设计。
5 结论
本文详细叙述了用DDE 通信实现MATLAB 与Windows 下的工控组态平台软件RSview32的通信,使用RSview32对控制系统进行SIMULINK 仿真。
该方法具有编程简单,容易实现,运行效果能满足要求。
同时也可作为MATLAB 与各控制软件构造仿真平台的一种很好的通信方法。
参考文献:
[1]刘志俭,等.MATLAB 应用程序接口用户指南[M ].北京:科学出
版社,
2000.[2]张明光.RSview32工控组态软件功能分析和应用举例[J ].自动
化仪表,
2002,23(6).[3]RockweII Automation 公司.RSview32User ’s Guide [Z ].1998.[4]钱晓龙.MicroLogix 控制器应用举例[M ].北京:机械工业出版社,
2003.[5]刘满华,等.监控平台软件与MATLAB 的DDE 通信[J ].微型电
脑应用,2002,18(1).
[6]何衍庆,等.控制系统分析、设计和应用———MATLAB 语言的应用
[M ]
.北京:化学工业出版社,2003.作者简介:
张明光(1971-),男,副教授,硕士,主要从事电气自动化、工业过程计
算机控制系统设计与开发的研究;袁占亭(1961-),男,兰州理工大学校长,教授,博士生导师,主要从事制造业信息化、图像处理、计算机网络、自动控制技术等方向的研究;余冬梅(1957-),女,教授,主要从事
制造业信息化、计算机应用等方向的研究;王兴贵(1963-)
,男,高级工程师,硕士。
(上接第156页)
[7]D M Gordon.A Survey of Fast Exponentiation Methods [J ].JournaI of AIgorithms ,1998,(27):129-146.[8]S E EIdridge ,c D WaIter.Hardware ImpIementation of Montgomery s ModuIar MuItipIication AIgorithm [J ].IEEE Trans ,comput ,1993,42(6):693-699.[9]张雄伟,等.DSP 芯片的原理与开发应用[M ].北京:电子工业出
作者简介:
刘亮(1980-),男,硕士生,主要研究方向为计算机网络安全、密码应用技术;胡冰,女,硕士生,主要研究方向为通信与信息系统、嵌入式系统与网络安全;徐海波,男,硕士生,主要研究方向为计算机网络安全、芯片设计开发;林璟锵,男,硕士生,主要研究方向为通信与信息系统、密码应用技术;向继,男,硕士生,主要研究方向为通信与信息系统;荆继武,男,博士生导师,信息安全国家重点实验室副主任,中国科学院研究。