(海军计算技术研究所 北京 100841)
近年来,密码技术的发展日新月异,出现了大量的新型算法。在DES、AES、RSA等的常用加密算法的基础上,又出现了新型加密算法。这些新型算法数学原理都比较复杂,实现难度较大。算法实现主要有两种方式:软件实现方式和硬件实现方式。软件实现方式是指采用标准C或VC++语言实现密码算法,一般可应用在CPU、DSP等多种平台,通用性强,但处理能力依赖于处理器性能。硬件实现是指采用HDL语言和RTL代码进行仿真验证并加载到FPGA实现,算法性能较高。但传统硬件实现方式需要经验丰富的硬件工程师,不仅要熟悉掌握系统功能设计、逻辑资源、工作频率、功耗要求等,还需手工书写RTL代码、验证代码,工作强度较大。采用FPGA算法C综合开发流程可以降低密码算法实现工作难度和风险,有效提高工作效率。
C语言综合器是一种将C语言描述输入转换为寄存器传输级(RTL)描述的高层次算法综合技术,它的应用可使系统建模、综合、验证、实现等FPGA或ASIC开发流程大大简化,大幅度缩短新产品的开发周期。
以往开发FPGA算法首先进行算法分析、仿真得到结果,再单独进行HDL的开发验证。两者独立进行,如果设计的时序或面积的目标不能满足要求,需要继续不断地改进编写的RTL代码,并继续不断地做验证,以期达到目标。改进RTL代码需要花费很多的时间。由于时间的关系,设计人员对硬件实现的微架构只能进行有限次数的探索,因此不得不采用次优化的RTL代码。一旦RTL代码确定下来,就需要用所有可能测试向量的一个子集进行RTL级别的验证,而更全面更花时间的彻底验证需要在FPGA样机系统建立以后才能进行。
图1 以往FPGA算法开发流程
新的使用C综合开发流程则将两个阶段的工作有机的结合起来,同时省掉了大量浪费的改进RTL代码的时间。新的开发流程图如图2所示。
图2 FPGA算法C综合开发流程
显然,在算法模型开发阶段的代码可以经过简单修改后直接代入第二阶段的开发,并且省去了HDL语言和RTL代码的大量修改,当正式结果和参考结果有误差时可以直接进入C代码设计架构中进行调整和修正。
传统的设计方法是劳动密集型的,它们几乎没有给设计者留下评估其它可选架构的时间。硬件设计者被迫提前对架构的进行选择,从而不可避免地导致非优化的硬件实现。
Catapult C是由Mentor Graphics公司推出的一款C综合工具。Catapult C的主要特点是,使用标准的C++,比以往的Handle C、System C抽象层次更高,工具优化的空间更大。
Catapult C对C代码编写的限制和RT L代码编写所受到的限制差不多,核心原因在于,Catapult C主要用于以数据处理为主的设计中。使用Catapult C来实现密码算法,优点就非常明显,可以快速从算法模块生成RTL代码;可以方便地评估不同的微架构下,占用的资源和处理延迟等可以大大加快实验性系统的开发速度;可以使硬件设计师大幅减少编写RT L的实现时间,改善设计流程的可靠性。
文献[1]是在IEEE学报上公布的DES算法的高性能全流水架构。该架构设计合理,处理吞吐率高,性能非常优异。如图3和图4所示。加密处理流程是:
1)输入64bit明文/64bit密钥;
2)输出64bit密文;
3)前处理,迭代变换(密钥在迭代时做左移操作),后处理。
采用以上架构进行C模型开发,代码不到200行,主要流程如下:
直接将上述代码转入Catapult C综合工具中,对C模型施加约束,由Catapult C生成RT L代码,并得到了面积最小和吞吐率最高的两种结果。使用Catapult C对生成的RT L代码进行了功能验证,并通过波形仿真证明了生成的RTL代码功能完全正确。
表1为生成ETL代码与文献[1]IP的性能对比。
表1 生成RTL代码与其他文献算法的性能对比
由表1可知,与软件解决方案相比,FPGA解决方案有着更高的处理能力。文献[1]中两位作者所开发的手工RTL(表格第二行),处理能力达到了1时钟/数据,性能已经非常优异。而在使用相同架构的前提下,Catapult C综合出的RTL代码Catapult_v2(表格第四行)与文献[1]中的结果相比,处理能力同样达到了1时钟/数据,工作效率和处理吞吐率与其相当,而面积仅为后者的75%左右。同时,在不改变代码的前提下,通过施加不同的约束,可以得到面积最小的另一个解决方案Catapult_v1(表格第三行)。这样同一个C设计可以应用于不同的应用场合。
Catapult C技术可以采用易于编写和调试标准C/C++输入,无缝地进行FPGA综合和布局布线,对同一套C代码施加不同的约束可以得到多个不同面积,不同吞吐率的设计结果,C代码的开发工作量较VHDL代码的工作量成倍的减少了,大大地提高设计流程的效率。节约了硬件成本,减小了开发工作量和开发难度。
[1]M.McLoone,J.V.M cCanny.High-performance FPGA implementation of DES using a novel method for implementing the key schedule.IEE Proc.:Circuits,Devices&Systems,2003,150:373~378
[2]肖国镇,白恩健,刘晓娟.AES密码分析的若干新进展[J].电子学报,2003,31(10):1549~1554
[3]Jhing-Fa Wang,Sun-Wei Chang,Po-Chuan Lin.A Novel Round Function Architecture for AES Encryption/Decryption Utilizing Look-up Table.2003
[4]Mó nica Liberatori,Fernando Otero J.C.Bonadero,Jorge Casti eira.AES-128 CIPHER.HIGH SPEED,LOW COST FPGA IMPLEMENTATION.2007
[5]Nalini C,Nagaraj,Dr.Anandmohan P.V,et al.An FPGA Based Performance Analysis of Pipelining and Unrolling of AES Algorithm.2006
[6]R.Sever,N.Ismailoglu,M.Askar,et al.A High Speed ASIC Implementation of theRijndael Algorithm.2004 IEEE InternationalSymposium on Circuits and Systems,May 2004,Vancouver,Canada
[7]I.Verbauwhede,P.Schaumont,H.Kuo.Design and Performance Testing of a 2.29-GB/s Rijndael Processor[J].IEEE Journal of Solid State Circuits,2003,38(3):569~572