專利名稱:一種抗功耗攻擊的字節替換電路的制作方法
技術領域:
本實用新型屬于數字集成電路領域,具體涉及一種抗功耗攻擊的字節替換電路,該字節替換電路專用于實現AES(高級數據加密標準)算法,尤其 適用于有可能受到功耗攻擊的智能卡、電子密鑰芯片和無線傳感器等硬件口廣叩o背景技術2000年10月2日,美國國家標準與技術研究所(NIST)正式宣布選 擇Rijndael算法作為新的高級加密標準AES (Advanced Encryption Standard),以替代舊的數據加密標準DES (Data Encryption Standard)。 AES被設計成一種具有堅固的安全性能的加密算法,而且能夠支持各種小型設 備。作為DES的繼承者,AES自從被接納為標準之日起就已經被工業界、 銀行業和行政部門作為事實上的密碼標準。AES加密算法流程一般包括字節替換、行移位變換、列混合變換和輪 密鑰加操作,結尾輪稍有不同,沒有列混合變換,其加密流程如圖l所示, 其中輪邏輯如下數據經過S盒完成字節替換,然后進行4個32比特的行 移位變換,再經過列混合變換,最后與由初始密鑰擴展出來的輪密鑰進行 輪密鑰加變換。實現密碼算法的方式主要有兩種, 一種是軟件方式,另一種是硬件方 式。通過硬件方式實現密碼算法時,又分為嵌入式方式、現場可編程門陣 列(FPGA)方式和專用集成電路(ASIC)方式。能夠直接實現或支持密碼 算法實現的ASIC芯片稱為密碼芯片,或信息安全芯片。針對密碼芯片,傳 統攻擊方法采用數學手段進行攻擊,密碼破譯者通常將密碼算法當作一種 理想的數學對象進行建模,從而對密碼系統的安全性進行分析。1990年代 早期引入的差分和線性分析技術是傳統數學攻擊方法的典型代表。他們利 用加密算法的統計特性來揭示算法的潛在弱點。另一種方法通過大量的數 學計算來搜索密碼系統的密鑰。該類攻擊方法的一個直接的例子就是暴力 攻擊嘗試所有可能的密鑰,直至找到正確的密鑰。隨著計算機性能的增 強,這種方法也越來越具有可行性,但是仍需要耗費大量的時間和物力, 而且如果密鑰的長度增加,攻擊難度則會急劇增加。目前,針對AES芯片的最有效的攻擊方法是功耗分析。功耗分析是旁路攻擊中的一種。它是指在加密設備運行時通過分析其功率消耗來推導出 加密系統所進行的操作和在操作中所涉及到的密鑰參量。通常根據對功率消耗的不同分析方法,又分為簡單功率分析(Simple Power Analysis, SPA)、差 分功率分析(Differential Power Analysis, DPA)和相關性功率分析(Correlation Power Analysis, CPA)。針對FPGA和ASIC的AES實現可以采用DPA或者 CPA攻擊最終獲得AES的密鑰,已有文獻報道,采用CPA方法成功針對 AES的ASIC進行了攻擊。AES加密電路的總功耗包括字節替換單元、行移位變換單元、列混合 變換單元、輪密鑰加、密鑰擴展單元以及內部寄存器的功耗。通常結構的 AES加密電路中包含了字節替換單元的16個S盒和密鑰擴展單元的4個S 盒,精簡結構的AES加密電路中也包含了4個或8個S盒,消耗了電路中 大部分的能量;另一方面,字節替換單元直接與寄存器相連,它的輸入被 時鐘所同步,可以大幅度減少由于毛刺和噪聲所引起的無關的功率消耗。 因此,字節替換單元的實現決定著加密芯片的面積和功耗的大小,同時也 對芯片的安全性有重要影響。S盒可以采用不同的硬件結構設計。最簡單直接的就是査找表(LUT) 結構,事先計算好求逆過程中每個輸入對應的輸出,將GF(2S)上的求逆運 算加上仿射變換用査找一個8輸入8輸出的表來表示。Bertoni等人針對智能卡、移動通信設備及電池供電設備中低功耗的需 求,提出了 DSE (Decoder-Switch-Encoder)結構的S盒[參見Bertoni G" Macchetti M., Negri L., Fragneto P.. Power-efficient ASIC Synthesis of Cryptographic Sboxes, In Proceedings of the 14th ACM Great Lakes Symposium on VLSI (GLSVLSI 2004), pp. 277 -281. ACM Press, 2004 ],包括譯碼模塊、交換模塊和編碼模塊三個部分。其
中,交換模塊只執行連線而不消耗能量;譯碼模塊將傳統的直接譯碼分解 成多級譯碼,并尋找合適的級數;編碼模塊也可以采用多級編碼結構。采用傳統的二叉決策圖(Binary Decision Diagram, BDD)算法也可以 實現S盒[參見Bryant R. E.. Graph-Based algorithms for Boolean function manipulation. IEEE Trans. Computers, vol. C-35, no. 8, pp. 677 - 691, 1986.]。 BDD是一種表示布爾 表達式的有向無環圖(DirectAcyclic Graph, DAG),其原理是將邏輯函數中 的所有變量作為BDD中的節點,按照自頂向下的方法,對每一節點的取值 按香農公式進行分叉選擇。Wolkerstorfer等人提出了有限域分解的實現方法[Wolkerstorfer J., Oswald E., Lamberger M.. An ASIC Implementation of the AES SBoxes[C]. In Topics in Cryptology -CT-RSA 2002, vol. 2271 of Lecture Notes in Computer Science, pp.67-78. Springer-Verlag, 2002.],它充分利用了有限域上的數學運算規則。由于在GF(2"上做乘法逆 則相對簡單,因此,把GF(2"看作GF(2,上的二次擴展,從而把GF(2"上 的每一個元素映射為GF(2"上的元素。最后,再通過一個逆映射把在GF(24) 上的計算結果轉化到GF(2"上。這種結構占用最小的芯片面積。Marioka和Satoh提出的3級PPRM結構S盒是對有限域分解結構S盒 的改進采用了異或門來減小動態冒險的傳播[S. Morioka and A. Satoh. An optimized S-Box circuit architecture for low power AES design. In Cryptographic Hardware and Embedded Systems — CHES 2002, vol. 2523 of Lecture Notes in Computer Science, pp. 172 - 186. Springer-Verlag,2002.];采用延時鏈來平衡路徑的延時使信號到達門的 時間盡可能一致,以此來減小動態冒險引起的器件無效翻轉,以達到降低 功耗的目的。一般情況下,字節替換單元直接由16個相同結構的8輸入8輸出的査 找表結構S盒組成。圖2所示為采用單一的查找表結構實現S盒的原理圖, 圖3為其具體電路結構圖(參見[l] S. Morioka and A. Satoh. A 10-Gbps Full-AES Crypto Design With a Twisted BDD S-Box Architecture. IEEE Transactions on Very Large Scale Integration(VLSI) Systems, vol.12, No.7, July 2004; [2]—種AES加解密電路中Sbox模塊優化方法及優化電路,專利申 請號200510085160)。
對于CMOS電路,占總能耗比例最大的動態功耗取決于時鐘變化時在該邏輯門引起消耗功率事件的概率、每時鐘周期發生開關的平均電容值、 供電電壓以及時鐘頻率。功耗分析攻擊正是利用了動態能耗對數據處理的 依賴關系。實際電路的拓撲結構很復雜,動態能耗取決于整體翻轉率的統 計特性和電路工藝。但可以簡化認為電路的總能耗與整體翻轉率有一定比 例關系。基于這種相關性建立起來的電路能耗模型能夠反映當前處理數據 的變換導致瞬時電路能耗的改變,因此功耗攻擊可以利用多次測量的能耗 曲線統計分析出電路中相應數據位的變化。在實際的功耗攻擊中,如果對整128比特進行攻擊,則需要進行2128 次測試,在實際攻擊中是不可接受的。因此,常用的方法是僅對部分密鑰 進行攻擊,然后逐段累加。針對AES時,由通常的AES加密電路結構可知, 輸入128比特的數據對應16個S盒,因此可以選擇8位進行攻擊,這樣總 的測試次數為28X 16=212。圖3所示通常結構的字節替換單元為同一結構 的16個S盒,其功耗特性一致,字節替換單元整體功耗和每個S盒的功耗 是一個簡單的線性關系。這樣,進行局部攻擊時可以很容易攻擊出正確的 結果。抗功耗攻擊的AES設計有兩種基本的方法 一種是采用特殊的電路邏 輯形式實現AES,如使用差分級聯開關邏輯(DCVSL, Differential Cascade Voltage Switch Logic),或者波動動態數字邏輯(WDDL, Wave Dynamic Digital Logic)并且在版圖設計中采用差分布線技巧,或者隨機開關邏輯 (RSL, Random Switching Logic)等;也可以采用異步電路設計方法,增強 AES硬件電路的抗功耗攻擊特性。另一種方法是采用掩蔽(mask)技術, 將AES中加密解密的中間結果隨機化。以上方法的不足是實現較為復雜且 代價較高。如采用特殊的電路邏輯實現形式,基本的邏輯門電路需要增加 一些附加的電路用以平衡功耗,這樣在面積和功耗上會有損失;另外一些 特殊的邏輯形式不與現有的芯片工藝和版圖庫兼容,這樣設計和生產起來 需要付出額外的成本。另一方面,如果采用掩蔽技術,需要在芯片中增加 隨機數產生器以及額外的掩蔽邏輯和恢復邏輯,這樣使AES的硬件實現代 價增加而性能降低。發明內容本實用新型的目的在于提供一種抗功耗攻擊的字節替換電路,該電路能夠以較小的代價顯著的增強AES加密電路的抗功耗攻擊特性。本實用新型提供的一種抗功耗攻擊的字節替換電路,其特征在于該 電路包括編碼單元、隨機開關單元、S盒單元和恢復單元;其中,所述編碼 單元對輸入數據進行運算,產生一個隨機數,并將該隨機數傳送給隨機開 關單元和恢復單元,控制隨機開關單元和恢復單元的操作;隨機開關單元接收n組8bit的輪數據和編碼單元產生的隨機數,并對n組輸入數據進行 交換,使各組數據隨機地進入異構S盒Sl Sn; S盒單元由n個S盒構成,n 的取值范圍為4 16, n個S盒中至少有一個S盒的結構不同于其它S盒的 結構;S盒單元對接收的各組數據進行字節替換;恢復單元接受與隨機開關 單元的相同的隨機數以及S盒單元發送來的變換后的數據,將這些變換后 的數據恢復到隨機開關單元交換之前的排列順序。本實用新型電路采用不同結構的S盒單元代替傳統的單一結構的S盒 單元,在S盒單元的輸入端之前插入了開關單元,在S盒單元的輸出端之 后添加了恢復單元。開關單元和恢復單元都由隨機數控制,而隨機數則由 編碼單元對輸入的輪數據進行運算后產生。不同于一般的掩蔽方法,在受 到攻擊時,該字節替換電路結構能夠巧妙利用攻擊時的輸入數據來進行選 擇,不需要另外的隨機數發生器。另一方面,增加輸入隨機明文的個數的 方法對本實用新型提出的電路的攻擊是無效的。同時,此方法也不需要采 用特殊的電路結構和邏輯形式,從而能與已有的AES加密電路實現方式兼 容。本實用新型能夠在與現有工藝兼容的情況下,以較小的代價顯著的增 強字節替換電路的抗功耗攻擊特性,采用本實用新型的技術方案后,能夠 在AES硬件加密和解密時有效掩蔽密鑰,從而使功耗攻擊得不到正確的密 鑰。
圖1為AES加密算法的流程圖;圖2為現有技術字節替換單元的原理圖;圖3為現有技術字節替換單元的電路結構圖;圖4為本實用新型抗功耗攻擊的字節替換電路的結構圖(n-16時); 圖5為本實用新型字節替換電路的一種應用實例; 圖6為S盒單元的一種實施方法;圖7為單一査找表結構的字節替換電路的AES攻擊結果;圖8為單一有限域分解結構的字節替換電路的AES攻擊結果;圖9為采用本實用新型的字節替換電路的AES攻擊結果。
具體實施方式
在AES加密算法中的每一輪中都要用到字節替換。字節替換是AES算 法中唯一的非線性變換,它是一個磚匠置換,該置換包含一個作用在狀態 字節上的S盒,對于狀態的每一個字節,都經過S盒替換成一個對應的字節。 S盒是由下述兩種變換的合成構造出來的 ;["]=/(g(")) (l)首先,取元素a在有限域GF (28)中的乘法逆g(a),規定'OO'的逆是它 自身;其次,再經過GF(2)上的仿射變換f得到結果。下面參照附圖,以16個S盒為例詳細說明本實用新型的抗功耗攻擊的 字節替換電路。所給出的附圖僅用于說明,并不限制本實用新型。如圖4所示,本實用新型字節替換電路采用掩蔽技術抗功耗攻擊,包 括編碼單元l、隨機開關單元2、 S盒單元3和恢復單元4。編碼單元1對輸入數據進行運算,產生一個隨機數,并將該隨機數傳 送給隨機開關單元2和恢復單元4,控制隨機開關單元2和恢復單元4的操 作。編碼單元1的輸入為每一輪數據,輸入數據所要進行的運算可以根據 電路結構任意設置。例如,可以選擇128bit輪數據的低16位作為輸入,將 這16個比特位上的"1"或"0"相加得到結果作為輸出。此時,若輪數據 的低16位全為"1",則輸出結果為16;若輪數據的低16位全為"0",則 輸出結果為0。也可以直接選取輪數據的部分比特位直接構成一個二進制 數,作為輸出結果。由于每次進入字節替換單元的輪數據不同,編碼單元l 的輸入數據一般都不同,其輸出結果是一個隨機數。如圖4所示,隨機開關單元2的輸入分為兩部分, 一部分為編碼單元1 產生的隨機數,另一部分為n組8bit的輪數據,n為S盒單元3中的S盒 的數量。當n=16時,隨機開關單元2完成的功能是對16組輸入數據進行 交換,使各組數據隨機地進入異構S盒S1 S16,以達到掩蔽的目的。隨機開關單元2所使用的開關函數的設計相當于對如下樣本 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} 進行全排列,因此,共計有16!種排列結果。在實際的硬件電路實現時, 僅需要取其中的一部分結果構成可供選擇的排列,這一部分結果根據編碼 單元1輸出的隨機數進行選擇。開關函數可以采用各種各樣的交換方式。 例如,當開關函數采用循環右移,編碼單元1輸出的隨機數為4時,隨機 開關單元2將16組輸入數據循環右移4次。這樣,第1組輸入數據移到了 第5組,進入S盒S5;第2組輸入數據移到了第6組,進入S盒S6;其余 依此類推。S盒單元3由n個異構S盒構成,n=4 16, S盒的結構可以是査找表 結構、DSE (Decoder-Switch-Encoder)結構、二叉決策圖(Binary Decision Diagram, BDD)結構、有限域分解結構、PPRM(Positive Polarity Reed-Muller)結構等結構。S盒單元3中至少有一個S盒的結構與其它S盒的結構不同。 這種結構代替了傳統的單--結構的S盒,它們可以是由任何不同硬件結構 實現的S盒,排列順序也可以任意組合,可用于通常結構或精簡結構的AES 加密電路。S盒單元3對輸入數據的進行字節替換。輸入數據的每一個字節,都經 過S盒替換成一個對應的字節。對各種不同結構的S盒而言,其fi更件電路 結構不同,所產生功耗也不同,故不能將此S盒單元所產生的功耗等效為n 個相同S盒產生功耗的累加。因此只要對這些不同結構的S盒進行隨機選 擇,就可以達到抗功耗攻擊的效果。
恢復單元4是隨機開關單元2的一個逆過程。恢復單元4和隨機開關 單元2的隨機數輸入值相同,經過隨機開關單元2交換后的n組輸入數據, 在經過S盒單元3變換后傳送給恢復單元4,恢復單元4將這些數據恢復到 隨機開關單元2交換之前的排列順序,以保證后續操作的正確性。如上文 隨機開關單元2的開關函數采用循環右移時,恢復單元4則采用循環左移。實例如圖5所示,編碼單元1選取輪數據的低16位逐位相加得到隨機數輸 出,開關單元2的函數設計為循環右移,恢復單元4的函數相應地設計為 循環左移,異構S盒S1-S16采用上文中圖6所示的5種S盒結構和排列順 序。如上文所述,當編碼單元1輸出的隨機數為4時,第1組8bit數據輸 入隨機開關單元2,經循環右移4次進入S5,完成字節替換變換后進入恢 復單元4,再循環左移4次,恢復為第1組處理后的8bit數據。同樣,第2 組,第3組,…,第16組輸入數據都將進行類似流程的操作。此時的編碼 單元1為加法器結構,隨機開關單元2為一個17輸入16輸出的循環右移 結構,恢復單元4為一個17輸入16輸出的循環左移結構。與通常的字節替換電路相比,該發明字節替換電路重點在于采用了異 構S盒S1 S16代替傳統的單 一結構的S盒,增加了由輪數據控制的編碼單 元,與隨機開關單元和恢復單元一起作用,使S1 S16的順序隨著輸入輪數 據的變化而變化,這樣整個AES加密電路功耗呈現隨機化的特點,因此可 以達到抗功耗攻擊的效果。且該發明電路能夠巧妙利用攻擊時輸入的輪數 據來產生隨機數以實現掩蔽,而不需要在芯片中增加隨機數產生器以及額 外的掩蔽邏輯和恢復邏輯,從而可降低實現成本。AES解密電路也可以采用與AES加密電路中相似的字節替換電路,采 用不同結構的S盒代替傳統的同種結構S盒,并用密文編碼作為開關單元 和恢復單元的控制信號,具體實現方法與AES加密電路類似。另外,由于 密鑰擴展單元也需要4個S盒,因此在密鑰擴展單元亦可采用本實用新型 所提出的異構字節替換電路,以增強AES的硬件電路的抗功耗攻擊的效果。該發明的技術效果實驗如下:采用AES標準算法實現AES加解密引擎,
完成硬件描述語言的設計和仿真后,采用UMC 0.25 u m工藝進行電路綜合 和實現。進行了 CPA攻擊實驗[S.B.Ors, F.Gurkaynak, E. Oswald, B. Preneel "Power-Analysis Attack on an ASIC AES implementation", in the proceedings of ITCC 2004, Las Vegas, April 5-7 2004.],部分密鑰為0X9C (156)時,輸入1000個隨機明 文,進行功耗攻擊。傳統的字節替換電路實現方法均可以被攻擊,如圖7、圖8所示為傳統 的單一結構S盒實現的AES加密電路結構被攻擊時的結果。圖7中字節替 換電路采用16個單一的査找表結構S盒,圖8中字節替換電路采用16個 單一的有限域分解結構S盒。由圖中可以看出,相關系數最大值處對應的 猜測密鑰值正是0X9C (156),這表明正確的部分密鑰值已經被成功攻擊出 來,并且多次仿真攻擊實驗的結果表明,只要隨機輸入明文數目在400以 上,所有的單一結構S盒都能被成功攻擊出密鑰值。如圖9所示為采用本實用新型提出的字節替換電路的AES加密電路結 構被攻擊時的結果,可以看出密鑰0X9C (156)己經被成功掩蔽。此時, 相關系數的最高點顯著偏離0X9C,因此功耗攻擊將得不到正確的部分密 鑰。實驗對不同的密鑰進行了攻擊,均證明本字節替換電路對功耗攻擊防 護的有效性。攻擊實驗同時證明,由于電路采用的特殊結構,增加隨機明 文的個數同樣無法對采用本實用新型提出的字節替換電路實現的AES加密 電路構成威脅。
權利要求1、 一種抗功耗攻擊的字節替換電路,其特征在于該電路包括編碼單 元(l)、隨機開關單元(2)、 S盒單元(3)和恢復單元(4),其中,所述編碼單元(l)對輸入數據進行運算,產生一個隨機數,并將該隨機 數傳送給隨機開關單元(2)和恢復單元(4),控制隨機開關單元(2)和恢復單元 (4)的操作;隨機開關單元(2)接收n組8bit的輪數據和編碼單元(l)產生的隨機數, 并對n組輸入數據進行交換,使各組數據隨機地進入異構S盒Sl Sn;S盒單元(3)由n個S盒構成,n的取值范圍為4 16, n個S盒中至少 有一個S盒的結構不同于其它S盒的結構;S盒單元(3)對接收的各組數據 進行字節替換;恢復單元(4)接受與隨機開關單元(2)的相同的隨機數以及S盒單元(3)發 送來的變換后的數據,將這些變換后的數據恢復到隨機開關單元(2)交換之 前的排列順序。
專利摘要本實用新型公開了一種抗功耗攻擊的字節替換電路,包括編碼單元、隨機開關單元、S盒單元和恢復單元,S盒單元由4~16個異構S盒組成。本實用新型采用異構S盒單元代替傳統的單一結構的S盒單元,在S盒單元的輸入端前插入開關單元,其輸出端后添加恢復單元。在受到攻擊時,本實用新型能夠巧妙利用攻擊時的輸入數據來進行選擇,不需要另外的隨機數發生器。另一方面,增加輸入隨機明文的個數的方法對本實用新型提出的電路的攻擊是無效的。本實用新型不需要采用特殊的電路結構和邏輯形式,能與已有的AES加密電路實現方式兼容。本實用新型能夠以較小的代價顯著的增強字節替換電路的抗功耗攻擊特性,能夠在AES硬件加密和解密時有效掩蔽密鑰,使功耗攻擊得不到正確的密鑰。
文檔編號H04L9/06GK201039199SQ20072008417
公開日2008年3月19日 申請日期2007年4月13日 優先權日2007年4月13日
發明者菊 劉, 劉政林, 鄒雪城, 陳毅成 申請人:華中科技大學