摘要 提出了一種面積優先的多功能、可重組的大數值運算器設計方法.基于簡單的加法操作,采用掃描鏈控制、迭代調用等方法對設計進行優化,實現了14種基本的大數運算功能每種功能支持的規格從8位至2048位,給安全芯片用戶提供了極大的靈活性,顯著減小了代碼的開發周期和成本.由于多種功能盡量復用相同的邏輯資源,本設計在滿足體系運算速度的前提下,規模只有13887門,完全滿足安全芯片面積優先的設計約束.
關鍵詞 運算器;運算功能;安全芯片;硬件設計
隨著各種加解密算法密鑰長度的逐步增加,在一些具有安全性需求的芯片設計中,大規格數據運算的硬件實現已成為硬件設計的主要考慮因素和設計難點.比如RSA等基于大數分解的公鑰密碼算法,雖然目前密鑰長度已達1024位,但是仍然不能避免將被破解的厄運,致使密鑰還需進一步增加.這種運算規格的增長不僅使加解密運算速度降低,而且增加了硬件實現的難度.
目前國內外對大數值運算器的研究,主要集中在大數模冪乘運算的實現上,其數學表達式為S=ABmodN.大數模冪乘一般用模平方和模乘來實現;對于一個指數B,模平方的次數是固定的,而模乘的次數是可以優化的.因此可在以下兩方面考慮運算加速:(1)減少模乘次數;(2)提高大數模乘速度.針對第一種方案提出的加速算法有m進制方法、加法鏈法、Yacobi法;針對第二種方案有估商型系列算法和Montgomery系列算法_.以上各種方案或者需要預計算,占用較大的存儲空間,或者需要設置專門的乘法單元,都是在犧牲規模的前提下提高運算速度.在對規模要求嚴格的安全芯片中,以上方法不再適用.而且,它們也并未涉及其他運算(如加、減、乘、除等四則運算)的大規格實現方法.
根據保密終端安全芯片CSTU(China secureterminal unit,國家密碼委員會審批項目,產品型號SSX11)對運算速度要求不高(主頻20 MHz)、對規模要求嚴格的設計需求,提出了一種小規模的大數值運算器設計方法.基于加法操作,在掃描鏈的配合下,全部用邏輯電路實現了包括加減乘除及模乘、模冪乘等多種運算功能,各功能支持的運算規格從8位一直擴展到2048位.經綜合驗證,在20MHz的主頻下,設計規模只有13887門,完全適用于CSTU安全體系的面積優先的設計要求.
1 CSTU 安全芯片體系結構簡介
隨著人們對安全需求的不斷增加,采用固定或單一加解密算法的產品已經無法滿足人們的需求,目前的安全產品需要經常更換加解密算法甚至改變整個安全策略.適應這種需求常用的方法是在基本運算器之上,使用軟件編程的方式靈活的實現算法的轉換.但是面對不斷升級的軟件破解技術的挑戰,以及軟件方式的低速率性,各種加解密算法也由軟件實現向硬件電路實現過渡.為解決這一矛盾.可支持多種加解密算法的硬件安全產品就應運而生,其中基于可重組方式設計的安全芯片無疑又具有領先優勢.
CSTU保密終端安全芯片采用了可重組設計思想,綜合分析了當前大量使用的DES,AES,IDEA,RSA,MD5等十余種加解密算法的實現過程,支持對稱、公鑰、摘要密碼算法及用戶隱秘算法,提供這些算法實現所需的IP平臺,不同的用戶可以根據自己的需要在平臺上進行二次開發,形成自己定義的安全算法及策略.
CSTU安全芯片可用于保密電話、安全卡證或移動安全終端等產品中,這些產品的共同特點是對規模要求比較嚴格,對公鑰密碼算法的速度要求不高.為提供對公鑰密碼算法和數字簽名算法的支持,大數運算器成為CSTU安全體系中關鍵的核心IP.根據實際需求,本設計在滿足硬件規模盡可能小同時支持盡可能多的運算功能和多種規格的數據運算的條件下,最終保證整個系統的靈活性.
2 算法分析
2.1 模冪乘算法分析
模冪乘運算采用平方乘算法,將模冪乘運算轉化為模乘和模平方運算實現.
平方-乘算法:一般地,求S=ABmodN,其中A<N,B<N;將指數B表示為二進制,即
觀察算法,由于指數B化為二進制后的長度不確定,多數情況下高位會存在很多個0.如果完全按照該算法實現,指數B從最高位起開始運算,在第一個1出現以前,雖進行了多次運算,但D的值一直為1;當B出現第一個1后才進入有效的模乘運算.在具體實現時,設計專門的電路從高到低掃描指數B的每一位,當在找到第一個1之前,不做任何運算,找到第一個1時,使D=A,以后根據每次掃描的6[i]值