加密哈希函數在計算機安全中起著至關重要的作用,它提供了敏感數據的單向轉換。許多信息安全應用程序都得益于使用哈希函數,特別是數字簽名、消息身份驗證碼和其他形式的身份驗證。哈希函數(如SHA512、SHA256、MD5等)的計算是發揮定制計算優勢的潛在舞臺。這是源于RISC-V指令集的靈活性以及經由Zk的擴展指令得到加強,結合自定義指令中合并固有順序位操作的能力,有助于顯著提高產品性能。
SHA512哈希函數 SHA512屬于USNS設計的“SHA-2”系列。符合FIPS標準,并已通過CMVP得到驗證。 以下為SHA512算法的示意框圖。由于它使用1024位的數據塊進行操作,因此輸入信息被格式化并用虛擬位填充。然后,通過80個“循環”的鏈依次處理每個1024位塊。每個“循環”在很大程度上依賴于對輸入數據塊、初始化向量和一組“循環常數”的加法和循環位移位:
每個80個“循環”序列的輸出是一個512位的哈希值,作為下一個輸入數據塊的初始化向量,或者作為最后一個數據塊處理后的最終結果。 到目前為止,SHA-512仍然是許多安全協議的主力,包括TLS和SSL、PGP、SSH、S/MIME和IPsec。從算法上說,它本質上是順序的:每個階段都需要前一階段的結果準備就緒,從而防止并行計算。
RISC-V Zk擴展指令應用于標量加密 RISC-V的指令集架構(ISA)是模塊化設計,允許添加各種特定于應用程序的擴展。標量加密擴展(2022年2月)包含' Zk ' -針對AES, SM3(4), SHA256和SHA512算法的指令子集。 此外,根據RISC-V標準,針對CPU核的性能、內存占用或功耗的某些要求,允許在基準指令集和正式批準的可選擴展之上添加特定于應用程序的自定義指令。在本研究中,我們展示了在運行SHA512時,用Codasip Studio工具實現的高級綜合和可重定向LLVM編譯器對優化嵌入式內核性能的提升。
Codasip Studio, CodAL, Zk及實現方式 針對SHA512哈希算法,RISC-V Zk擴展了以下6條指令的子集。整個子集已經實現并包含在Codasip L31 IP核的指令集中。除此之外,還考慮了兩個自定義指令“sha512_ch”和“sha512_maj”。它們負責3個輸入操作數之間的某些位操作,在SHA512“循環”中會經常遇到。
Codasip L31 RISC-V CPU IP核、Zk子集和自定義指令已經用CodAL(一種用于處理器描述的高級語言)進行了描述。與其他HDL不同,CodAL中的指令以一種緊湊而獨特的方式進行描述,使得LLVM編譯器和Codasip高級綜合工具都可以調用指令語義。一旦完成了自定義指令的CodAL描述,Codasip Studio可以自動生成可綜合的RTL和SDK,其中包含編譯器、調試器、指令精確和周期精確的模擬器以及可識別新指令的分析器。下面是使用CodAL的自定義“sha512_ch”指令的示例實現: 指令體包含3個部分:匯編、二進制和語義。前兩個定義指令語法,并將操作數、操作碼和立即數映射到指令二進制。語義包含一系列描述指令行為的類c語句。在上述示例中,從寄存器文件中讀出3個操作數,按照一定的位操作模式計算結果,然后將其寫入目標寄存器。 由于語義模式簡單,這兩個自定義指令都由編譯器解析并在高優化級別(-O2+)下自動使用:
已批準的Zk擴展的指令具有更復雜的語義,它們可由生成的內部函數直接從軟件中調用。 整個2條自定義指令集和SHA512的Zk子集只需要150行CodAL代碼。這種緊湊的描述與自動生成的SDK一起顯著縮短了產品的設計周期和上市時間。 PPA效果: 顯著提升SHA512性能 RISC-V Zk子集和自定義指令所帶來的SHA512性能提升,我們在RISC-V Crypto Github存儲庫中包含的SHA512基準上進行了評估。該基準測試使用了3種不同的SDK進行編譯: 1.標準指令集(RV32IMCB)的參考SDK 2.標準指令集 + 批準的SHA512的Zk子集 3.標準指令集 + SH512 Zk子集 + 自定義指令 使用生成的周期精確的評測器對所獲得的可執行文件進行評測,獲得處理器在每個軟件例程中花費的時鐘周期的詳細信息以及PPA數據。
上圖顯示,單使用Zk指令子集減少了約1.89倍的時鐘周期數和約9.7%的代碼量,顯著提高了SHA512性能,硅面積僅增加0.8%。 在Zk之上增加自定義指令帶來了進一步的加速,將性能提高到2倍以上,將代碼量減少了10.2%,總面積僅增加了約為初始L31面積的1.6%。可以認為這是一個合理的代價,實現了兩倍的性能提升。 結論 當涉及到特定的應用程序時,通用CPU IP核通常不可能是最理想的解決方案。有時,即使是一個看似簡單的指令也會大大改變游戲規則。芯片設計人員應該善于利用這些優勢來設計出差異化的產品。由Codasip Studio提供的定制計算方案有助于利用RISC-V指令集的靈活性,通過緊湊的基于CodAL的處理器描述,幫助芯片設計人員大大縮減設計時間,同時也為芯片使用者提供豐富的可自動生成的軟件套件。
目前RISC-V已經有一組豐富的獲批準的擴展指令,也許您尚無法在現成的RISC-V CPU IP核中獲取相關方案。但是,經由Codasip提供的技術,芯片設計人員可以便捷地集成這些指令并進一步發展。本研究演示了8個自定義指令的實現:6個來自已批準的Zk子集,2個基于特定算法需求。這直接將SHA512哈希計算的性能提高了兩倍,代碼量減少了10%以上。值得關注的是,CPU IP核定制計算及軟硬件協同設計的應用領域,除了SHA512和加密算法可以因此受益外,在其他特定應用計算領域也同樣發展空間巨大。 |