(海軍計算技術研究所 北京 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