AES加密算法的高速低功耗ASIC設(shè)計
摘 要:本文提出了一個AES加密算法的高速低功耗ASIC設(shè)計方案,使用Synopsys設(shè)計流程和VeriSilicON 0.18μm CMOS工藝,實現(xiàn)了最高工作頻率410MHz,數(shù)據(jù)吞吐率5.23Gbps,功耗為58 mW。采用改進(jìn)算法(T盒算法),將輪變換操作中的不同步驟合并為一組表的查詢,有效降低了關(guān)鍵時序路徑的傳輸延遲,并通過動態(tài)功耗管理和門控時鐘等低功耗設(shè)計方法有效地降低了功耗。
關(guān)鍵詞:AES;ASIC;T盒;功耗管理;時鐘門控
1 引言
從1976年美國數(shù)據(jù)加密標(biāo)準(zhǔn)算法(DES)公布以來,到20世紀(jì)末,DES算法或其某些變形基本上主宰了對稱算法的研究與開發(fā)進(jìn)程。隨著密碼分析水平、芯片處理能力和計算技術(shù)的不斷進(jìn)步,DES的安全強(qiáng)度已經(jīng)難以適應(yīng)新的安全需要,其實現(xiàn)速度、代碼大小和跨平臺性均難以繼續(xù)滿足性的應(yīng)用需求。因此,AES(高級加密標(biāo)準(zhǔn))應(yīng)運(yùn)而生。作為DES的繼承者,AES自從被接納為標(biāo)準(zhǔn)之日起就已經(jīng)被工業(yè)界、銀行業(yè)和行政部門作為事實上的密碼標(biāo)準(zhǔn)。在網(wǎng)絡(luò)通信和某些工業(yè)控制應(yīng)用場合,對加密速度的需求成為對AES算法的最關(guān)鍵要求,同時功耗成為日漸突出的問題,必須進(jìn)行低功耗設(shè)計。
2 AES加密算法簡介
AES是一個密鑰迭代分組密碼,對加密來說,輸入是一個明文分組和一個密鑰,輸出是一個密文分組。它將分組長度固定為128比特,而且僅支持128、196或256比特的密鑰長度,本文僅對密鑰長度為128比特的情況進(jìn)行討論。
加密過程包括一個初始密鑰加法,記作AddRoundKey,接著進(jìn)行9次輪變換(Round),最后再使用一個輪變換(FinalRound)。輪變換由SubBytes、ShiftRows、MixColumns 和AddRoundKey 共4個步驟構(gòu)成。輪變換及其每一步均作用在中間結(jié)果上,將該中間結(jié)果稱為狀態(tài),可以形象地表示為一個4*4字節(jié)的矩陣。
3 AES的改進(jìn)算法(T盒算法)
假設(shè)加密過程中輪變化的輸入為a,輸出為d,則:
上式中SRD(S盒)由有限域GF(28)中的乘法逆變換和GF(2)中的仿射變換復(fù)合而成,符號
代表有限域GF(28)中的加法運(yùn)算,符號 代表有限域GF(28)中的乘法運(yùn)算。
這樣我們可以定義4個表:T0,T1,T2以及T3:
則d簡化為:
該實現(xiàn)方案中T0~T3,每個表都包含了256個雙字,一共占用4KByte的空間。在每次循環(huán)迭代中,只要通過4次表查詢和4次異或運(yùn)算,就能快速地得到一次輪操作中一列的運(yùn)算結(jié)果。改進(jìn)算法有效降低了關(guān)鍵時序路徑的傳輸延遲,能夠明顯的提高ASIC工作頻率。
4 CMOS功耗
對于一個CMOS邏輯門,其功耗主要由靜態(tài)功耗和動態(tài)功耗兩部分組成。靜態(tài)功耗是指門處于非活動狀態(tài)時的功耗,大部分是由擴(kuò)散層到襯底,源極到漏極存在的反偏二極管造成的泄露電流產(chǎn)生的。一般來說,泄漏電流功耗在總功耗中所占的比重不到1%。動態(tài)功耗是門處于活動狀態(tài)下產(chǎn)生的,它又包含兩部分:開關(guān)功耗和內(nèi)部功耗。內(nèi)部功耗包括對門內(nèi)部的寄生電容充放電的翻轉(zhuǎn)電流功耗,以及PMOS管和NMOS管瞬間同時導(dǎo)通所形成的短路電流功耗。對于信號上升(下降)快的電路,短路電流功耗很小,但對信號上升(下降)較慢的電路,短路電流功耗可能要占總功耗的30%以上。開關(guān)功耗是對輸出端負(fù)載電容充放電的翻轉(zhuǎn)電流引起的。
5 低功耗設(shè)計
該實現(xiàn)方案中主要采用了以下兩種低功耗設(shè)計方法。
1) 動態(tài)功耗管理
動態(tài)功耗管理是一種系統(tǒng)級低功耗設(shè)計方法,降低功耗的主要思路是根據(jù)芯片工作狀態(tài)改變功耗管理模式,從而在保證性能的基礎(chǔ)上降低功耗。在不同模式下,時鐘的頻率可以進(jìn)行調(diào)整,一些空閑模塊甚至整個芯片的時鐘也可能會被停止。還可以通過調(diào)整芯片的電壓,進(jìn)一步降低功耗。由于工作庫的限制,本文沒有對動態(tài)電壓管理作進(jìn)一步的研究。
本文采用動態(tài)功耗管理,分為normal和idle兩種功耗模式。有開始(START)信號時,芯片由idle模式進(jìn)入normal模式,開始對明文分組加密。經(jīng)過初始密鑰加法和10次輪變換,輸出密文分組,并產(chǎn)生結(jié)束(STOP)信號,使芯片返回idle模式。因此設(shè)計了一個鑒相器產(chǎn)生idle模式的控制信號(EN)。電路由與非門和基本RS觸發(fā)器組成(圖1),對輸入信號(開始和結(jié)束)的上升沿感應(yīng),由D觸發(fā)器輸出EN。具有結(jié)構(gòu)簡單的特點,并對噪聲的影響有很好的抑制作用,并能有效地去除毛刺。
2) 時鐘門控
EN有關(guān)閉和打開ASIC內(nèi)部模塊的作用,但這樣不是最佳的,因為EN只是關(guān)閉了內(nèi)部模塊的功能操作,而并沒有把模塊內(nèi)的時鐘網(wǎng)絡(luò)關(guān)閉,也就是說時鐘網(wǎng)絡(luò)依然處于激活狀態(tài),而時鐘網(wǎng)絡(luò)造成的功耗占總功耗的很大部分,只有關(guān)閉時鐘網(wǎng)絡(luò)才能同時達(dá)到關(guān)閉模塊功能和降低功耗的目的。
采用時鐘門控技術(shù)可以達(dá)到關(guān)閉時鐘網(wǎng)絡(luò)的目的。以圖2(a)中所示電路為例,仿真生成的波形如圖2(b)所示??梢钥吹街挥性贓N信號為1和時鐘信號CLK上跳同時發(fā)生,ENCLK才會從0變?yōu)?,激活時鐘網(wǎng)絡(luò)。在其他時刻,時鐘網(wǎng)絡(luò)是關(guān)閉的。插入的時鐘門控單元不僅能通過關(guān)閉時鐘網(wǎng)絡(luò)而明顯的降低功耗外,還有其他幾個重要的功能:
① D觸發(fā)器的時鐘輸入端口對毛刺敏感,門控單元能有效地濾除信號EN的毛刺,從而確保進(jìn)入D觸發(fā)器時鐘端口的ENCLK信號不會出現(xiàn)毛刺,避免因競爭而導(dǎo)致觸發(fā)器發(fā)生錯誤的狀態(tài)變化。
② 鎖存器的插入增加了ENL信號的延時。
③ 對于n位寄存器組,n條反饋連線和n個多路選擇器被一個門控單元所取代,不僅帶來面
積上的節(jié)省,降低后端布線的擁塞,同時又進(jìn)一步降低了功耗。
6 實現(xiàn)方案
該實現(xiàn)方案采用Synopsys公司的芯片設(shè)計流程和VeriSilicon公司0.18μm CMOS工藝。首先根據(jù)設(shè)計規(guī)范,使用Verilog硬件描述語言編寫可綜合的RTL代碼,并對RTL代碼進(jìn)行仿真。然后對RTL代碼進(jìn)行綜合。綜合后生成的門級網(wǎng)表和RTL代碼進(jìn)行等效性檢驗并做靜態(tài)時序分析。接著進(jìn)行版圖設(shè)計,先是根據(jù)各邏輯單元間的時序采用時序驅(qū)動布局策略來做物理布局和全局布線,之后在設(shè)計中插入時鐘樹。然后進(jìn)行詳細(xì)布線,并從詳細(xì)布線后的版圖中提取出真實的時延值并將其反標(biāo)給網(wǎng)表,再作等效性檢驗、靜態(tài)時序分析和仿真驗證保證滿足時序約束。最后對版圖做設(shè)計規(guī)則檢查。
7 結(jié)論
本文針對AES的ASIC實現(xiàn),使用改進(jìn)算法和低功耗設(shè)計方法,實現(xiàn)了高速低功耗的AES ASIC設(shè)計,其基本思想是:采用T盒算法,只要通過4次表查詢和4次異或運(yùn)算,就能快速地得到一次輪操作中一列的運(yùn)算結(jié)果,同時在滿足時序約束的前提下,通過動態(tài)功耗管理和時鐘門控等方法,根據(jù)芯片的工作狀態(tài)關(guān)閉模塊的功能操作并關(guān)閉時鐘網(wǎng)絡(luò),達(dá)到了降低功耗的目的。從表1可以清晰地看出,采用T盒算法后,設(shè)計的數(shù)據(jù)吞吐率提高了13.8%,同時采用功耗優(yōu)化方案后,normal模式下功耗下降了10.7%,在idle模式時更低。該實現(xiàn)方案適用于ECB,CBC等運(yùn)行模式。