新四季網

亂序執行的數據流aes加密電路結構的製作方法

2023-09-16 20:05:25 2

專利名稱:亂序執行的數據流aes加密電路結構的製作方法
技術領域:
本發明用於解決密碼集成電路抗差分功耗分析攻擊的問題
背景技術:
隨著智慧卡、付費電視卡等密鑰存儲數據安全集成電路的廣泛應用,功耗分析攻擊,特別是差分功耗攻擊(DPA)開始出現,並迅速成為數據存儲密碼晶片的重要威脅。功耗分析攻擊是通過採集晶片處理數據工程中的電源電流變化,並從中獲得數據信息的面向硬體的攻擊手段。其中應用最普遍地差分功耗分析攻擊是採集多條晶片的工作電流數據,通過對各個時刻的功耗樣本值進行統計檢驗的辦法提前部分密鑰的。使得電路各個操作的執行時刻具有隨機性是對抗差分功耗分析的重要途徑之一。現有的時序隨機性方法又分為隨機延時插入和亂序執行兩種。前者運算執行的順序固定,但是在各不執行之間會隨機的插入一些延時,造成運算執行時刻的不確定性;後者則是將執行先後順序無關的一些運算以隨機的順序執行,相對於前者具有更高的安全性。目前公布的亂序執行技術有隨機寄存器重命名技術——參見May,D.,H.L.Muller等的論文「Random register renaming to foil DPA,Paris,France,Springer-Verlag.」(《隨機化寄存器重命名以抵擋差分功耗攻擊》)。還有論文「Irwin,J.,D.Page,等2002年發表的論文「Instruction stream mutation for non-deterministic processors,San Jose,CA,USA,IEEE Comput.Soc.」(《不確定性處理器的指令流變異》)介紹了一種「不確定處理器」技術。這兩個技術都是應用於密碼專用處理器或實現密碼算法的通用處理器。「隨機寄存器重命名技術」只在寄存器重命名環節上引入了隨機選擇;不確定性處理器則是挖掘程序內部的指令級並行性,將可並行執行的指令隨機的串行執行。前者只在局部引入不確定性,後者的不確定性則局限於相鄰的指令之間,且受原程序描述的限制。本發明的數據流亂序執行技術則應用於專用集成電路密碼晶片。數據流模式是一種根據數據依賴關係執行運算的操作,它不附加任何其它執行順序的限制,因此能夠挖掘算法本身的最大並行性,從而具有更大的執行順序的可變空間。且由於數據流模式採用分布控制,因此內部的總線分散,總線負載電容小,根據功耗差分的公式ΔP=(α1-α2)CV2,功耗差分的大小與負載電容成正比,因此小的負載電容有利於降低功耗差分。下面對數據流及亂序執行抗差分功耗攻擊的基本原理
1.亂序執行對抗差分功耗攻擊
集成電路的處理數據時的功耗與被處理的數據相關,當數據中某位b取0和1時,對應的功耗具有不同的條件分布,分別用隨機過程P0(t)和P1(t)表示,其中t表示時間。DPA檢驗計算b時刻的兩個功耗的均值差根據DPA理論,如果設被測功耗中含有噪聲σ,則所需的樣本數N應滿足
對於亂序執行的集成電路,計算b的操作有可能在多個時刻隨機出現。現假設該操作在時刻t執行的概率為pb,則t時刻的功耗均值其中,
是t時刻執行的其它操作的平均功耗,假設與b的取值無關。由此公式求得的新的功耗差分
所以,功耗差分變成了原來的pb倍,相應地,樣本數就提高到原來的
倍。因此
亂序執行可以提高DPA攻擊的成本,且不確定度越高,即pb越小所需樣本數越大。
2.數據流工作模式
首先介紹數據依賴關係的概念。對於一個算法,存在一系列操作,假設操作A的輸出是操作B的輸入,則B與A就存在數據依賴關係,B必須在A執行後才能執行。
數據流模式就是一種沒有控制流,除了數據依賴關係之外沒有其它執行順序限制的計算模式。它將被處歷的操作數據封裝成令牌,一個令牌是按照某個規定格式的定長二進位串,每一位有固定的含義。例如,如下一個令牌就包含了數據域、源地址、目標地址3個域,它們在令牌中的位置是約定的低32位是數據域;第37位到第35位和第34位到第32位分別是3位的目標地址和源地址。
3735 34 32 310
數據流電路實現算法的各個操作,以及操作之間的令牌傳遞。對於一個操作,當它的所有輸入令牌都到達(即該操作所依賴的運算都已經執行)則可以被「激活」——開始處理數據,並將產生的結果打包成新的令牌,傳給它的後繼操作。各操作之間的控制信息也通過靈牌傳達——例如例子中的數據地址就指示了數據的來源和處理後應該發送的目的地;一些控制信號、選擇信號也被封裝成令牌(控制令牌),作為一個操作數傳遞給被控制的運算。
因此,數據流電路沒有一個中央控制電路,各個子系統是相對獨立的,所以數據交換也具有局域性,所以數據總線和存儲單元也是分布式的。數據運算的觸發是以操作數令牌是否全部到達為條件的,因此是數據驅動的,異步工作。且沒有數據依賴關係的操作只要運算條件滿足就可以執行,彼此沒有影響,所以能夠充分發揮算法自身的並行性。
基於數據流計算的以上特徵,可將其特點概括如下
並行性、函數性(即每個操作相對獨立,且無關操作可以按任意順序執行。)、分布性、異步性。
3.異步電路和異步通道
一個異步電路系統,各部分電路之間通過異步的通訊接口連接,稱為異步傳輸通道。
傳輸通道與外部的接口稱為通道埠,其是對一組信號的抽象包括一組數據總線和請求、應答信號。一個異步傳輸通道包括數據鎖存器和鎖存器的控制端電路。結構如圖1其工作方式是一種稱為「握手協議」的通信協議
「異步集成電路沒有時鐘,這就需要一種相應的方式來控制時序,這種控制時序的方式叫做握手協議。絕大部分異步集成電路使用的握手協議包含兩種控制信號請求(request)信號和應答(acknowledge)信號。請求信號啟動一個工作,應答信號表示工作完成。這兩個信號可以完成系統中所有運算的時序控制。
用電路實現握手信號,需要把交替出現的請求和應答信號編碼成控制線上的電平或電平變化,下面以常用的一種4相位握手協議為例(見圖2)。
請求信號的上升沿通知接收方有數據到達,接收方準備好接受數據後升高應答信號,表示準備就緒,同時開始讀取數據,請求信號又被應答信號復位,請求信號的下降沿再把應答信號復位,準備接受下一個數據。其中傳輸通道上的數據存儲在一個鎖存器中。(鎖存器有一個控制端,當控制端為低電平時輸出隨輸入變化,當控制端為高時輸出端的數據保持不變。)在4相位握手的異步傳輸通道中,鎖存器的控制端與應答信號相連,即當應答信號升高後將發送方的數據鎖存入鎖存器,待一次通信過程結束後才可以接受輸入端的數據。
在異步電路中經常用到一種稱為C單元的時序控制電路,此種電路有2個輸入一個輸出,一般還有一個復位端,當兩個輸入全為1時,輸出為1;當兩個輸入全為0時輸出0;當兩個輸入不同時,輸出保持原來的狀態。可以由C單元實現4相位握手協議的異步傳輸通道,如圖3所示
4.數據流與密碼晶片的抗DPA安全性
數據流方式不顯式定義執行順序,因此,執行順序具有最大的靈活性。函數性使得亂序執行更加方便。分布性降低了總線的負載,減小了功耗特徵。異步性使得數據流方式更易於以異步電路實現,而在Simon Moore 1999年的論文「Balanced Self-CheckingAsynchronous Logic for Smart Card Applications」(《用於智慧卡的平衡自檢查異步邏輯》)中闡述了異步電路在實現密碼晶片方面具有優勢。因此本發明利用數據流的上述特點,實現了一個數據流的AES集成電路實現方案。
5.數據流AES的基本工作原理
(1)Rijndael算法和AES加密標準
Rindael是一種對稱的分組密碼算法,AES,即高級加密標準,是美國國家標準與技術研究所(NIST)制定的新的高級數據加密標準(Advanced Encryption Standard)規範,此標準於1997年開始公開徵集以取代DES,在2002年最終確定為採用128位明文分組長度的Rijndael算法,密鑰長度支持128位、192位和256位三種。本發明可以實現3種密鑰長度的AES加密算法。
i.AES算法設計原理
AES算法是以Rijndael算法為核心制定的,但是,Rijndael算法的一些特徵沒有被接納為AES標準,Rijndael算法支持128位到256位之間任意32位跨度的分組長度,但AES標準僅支持128位的明文長度,128、192或256位的密鑰長度。
AES算法的運算是定義在有限域GF(28)上的。所謂的GF(28),是指由一組從(00)16到(FF)16的256個值組成,並定義了加法和乘法的數域。GF(28)加法就是異或(XOR)操作。GF(28)的乘法可以按下面方法計算首先,任何值乘0x01等於其自身;對於乘0x02,則當被乘的值小於0x80時,結果是該值左移1位,否則結果就是先左移1位,再與0x1b異或的結果。它防止了「域溢出」並保持乘法的乘積在範圍以內。與(03)16相乘,可以將(03)16分解為2的冪之和,即b×(03)16=b×((02)16+(01)16)=(b×(02)16)+(b×(01)16)。
ii.加密流程
本節將以Rijndael標準進行介紹,Rindael算法的數據處理單元為字節,一個明文分組信息被分為4×Nb個字節,Nb=4,5,6,7,8,它們按順序被放入一個4×Nb的矩陣中,這個矩陣被稱為「狀態(State)」。狀態的一列稱為一個「狀態字」。密碼密鑰也以4個字節為一列,每列叫做一個「密鑰字」,密碼密鑰的列數用Nk表示。
Rijndael所有的變換都是基於狀態的變換。Rijndael變換是通過輪函數的多次迭代實現的,根據密鑰長度的不同,迭代次數也不同。迭代輪次用Nr表示,它的取值與Nb和Nk有關,具體情況見表1。
加密算法的流程可用圖4表示
其中,虛線框內的操作組成一個輪變換函數,
表1 不同Nb和Nk的迭代輪數Nr
下面來解釋圖中各模塊的意義
iii.輪密鑰混合-AddKey
對應圖中的「+」操作,它是輪密鑰的混合運算就是將輪密鑰與當前的狀態進行對應字節的異或(XOR),實現密碼與密鑰的混合。輪密鑰由原始密鑰通過一定的規則擴展而成,產生的輪密鑰總長為Nb(Nr+1)個字,在每一輪的密鑰混合變換中,都要從輪密鑰Nb(Nr+1)中按順序依次取出Nb個字與狀態的各字節異或。
iv.字節代換運算-Srd
字節代換運算是一個可逆的非線性字節代換操作,這種變換要對分組中的每個字節進行,對字節的操作遵循一個代換表,即S盒。對於一個字節,取其前4位作為x座標,後4位作為y座標,即可在S盒中查找到一個對應項來替換原來的數據。這就是Srd( )所完成的功能。S盒的內容如下所示
v.行位移變換-ShiftRow
行變換在狀態的每行間進行,是將每一行進行循環移位。移動位數以字節為單位,循環左移,移動的字節數根據行數來確定。不同Nb情況下各行的位移量見表2,表中第0行至第3行的位移量依次用C0,C1,C2,C3表示。圖5給出了Nb=4的ShiftRow作用效果。
表2 ShiftRow位移量表
vi.列混合變換-MixCol
列混合用狀態字節列的值進行數學域加和域乘的結果代替每個字節。對於狀態中的一列,a0,a1,a2,a3依次是第0行到第3行的字節,所得的結果的4個字節依次是b0,b1,b2,b3,變換關係用矩陣運算的形式表示如式B-1所示。結果列代替對應的輸入列。
需要申明的是,此矩陣運算中的加法和乘法都為有限域GF(28)中的加法和乘法。
vii.密鑰擴展-KeyExpansion
密鑰擴展是將初始的密碼密鑰擴展為輪密鑰的過程。擴展密鑰按擴展順序排列,Rijndael算法每輪需要4行Nb列字節,每列4個字節稱為一個密鑰字或擴展密鑰字,第i輪的輪密鑰由擴展密鑰序列的第Nbgi列到第Nbg(i+1)-1列給出,擴展密鑰的總數為Nb(Nr+1)個字。
密鑰擴展函數依賴於Nk的值擴展密鑰序列的前Nk列是密碼密鑰(或稱初始密鑰),後面的各列由先前的各列按遞歸方式確定。遞歸函數依賴與列的位置,如果i不是Nk的倍數,則第i列是第i-Nk列與第i-1列的逐位異或;否則,第i列是第i-Nk列與第i-1列的一個非線性函數的逐位異或。這個非線性函數可以通過以下方式來實現將Srd作用在列的4個字節,附加一個列內字節的循環移位,增加一個輪常量。這個輪常量獨立於Nk,而且被GF(28)中的一個遞歸規則所定義
RC[1]=x0(即01)
RC[2]=x(即02)
RC[j]=x·RC[j-1]=xj-1,j>2
這裡的乘2運算也是有限域GF(28)內的運算。
對於密碼密鑰長度之Nk>6,當i mod Nk=4時,第i列也是第i-Nk列與第i-1列的一個非線性函數的逐位異或,這個非線性函數是將Srd作用在列的4個字節上。
為了敘述方便,在文中將j mod Nk=0時所執行的非線性變換用字母f表示;將Nk>6且j mod Nk=4時的非線性變換用字母g表示。
對於AES標準而言,上述Nb=4。
(2)令牌的暫存-匹配-發射(HMF)
數據流計算的內容就是對於令牌的處理,具體的包括令牌的創建(發射)、解析、處理,以及令牌的暫存和各個令牌的匹配。對於多個操作數的操作,各個操作數的令牌往往不是同時到達,因此需要一個暫存單元把到達的令牌暫存起來,然後對所有已到達的令牌進行「匹配」,當發現一對(或多個)就緒的操作數令牌就打包成新的令牌發射到處理單元。
本發明採用了一種新的電路實現令牌匹配,稱為令牌暫存-匹配-發射結構,用HMF表示。所述的亂序執行控制即在HMF結構中實現,當暫存單元中同時有多個或多組匹配成功的令牌時,電路從中隨機選取一個發送,如果只有一個或一組令牌匹配成功則發送匹配成功的令牌。
在本發明中的每個運算單元和結果輸出都有各自的一個暫存-匹配-發射結構。
(3)一種特殊的密鑰擴展結構
如果把附錄A中所述的輪密鑰序列每Nk個字(即一列輪密鑰,一個字有4個字節)分為一組,稱為「密鑰分組」,則各密鑰分組間的計算關係可用圖6表示,圖中的「+」是逐位異或運算,kij,i=0,1,…,
j=0,1,…,Nk-1表示第i個密鑰分組的第j列密鑰字,f和g是密鑰擴展中的非線性變換(見附錄A)。為了敘述方便,本文把擴展密鑰的中間結果f和g命名為中間密鑰字。如圖6所示,每個密鑰分組可以分為兩部分序號在前的4個密鑰字為低段(圖中右側部分),其餘的(Nk-4)個密鑰字屬於高段(圖中左側部分),當Nk=4時,每個密鑰分組只有低段部分的計算。由此,密鑰擴展可用圖7所示的運算結構迭代實現。此結構中包含連續異或運算與非線性變換f和g,我們將5輸入-4輸出的連續異或運算用圖8所示的電路實現,並命名為KeySch運算,其中k3,k2,k1,k0和f是輸入密鑰字,y3,y2,y1,y0是輸出密鑰字。
Nk不同取值時的密鑰擴展的具體實現算法如圖9所示,其中標有*的運算是每次迭代執行的第一個運算。Nk>4時,低段KeySch計算的結果作為新分組的低段,高段KeySch計算的結果作為新分組的高段;Nk=4時,低段KeySch計算的結果作為新分組的高段,高段KeySch計算的結果作為新分組的低段。Nk=6時,k3的結果直接參與KeySch運算,沒有經過g變換,但是為了統一表示,我們也用g來表示,在單獨表示直接複製的運算時,用「pass」表示。
為了敘述方便,本文中命名產生中間密鑰字的擴展密鑰為變換密鑰字,分別稱產生f和g的變換密鑰字為變換密鑰字1和變換密鑰字2。
(4)輪函數部分
本發明中將密鑰擴展的非線性變換也放在輪函數執行單元中執行,共享Srd運算單元。根據亂序執行的需要,發明中以狀態的一列(稱為狀態字)和輪密鑰的一列(稱為密鑰字)作為基本操作數,即每個令牌的數據域都是由狀態字或密鑰字組成的,將這兩類令牌分別稱為狀態令牌和密鑰令牌。
上述密鑰擴展方法的令牌處理流程如圖10a所示。初始密鑰保存到緩存單元後,首先進行檢查,如果發現變換密鑰字則將其轉發到「輪變換環」中,經過相應的非線性變換,f或g,結果寫入到密鑰暫存器中的中間密鑰字單元。另一方面,密鑰變換環中對密鑰緩存器中的令牌反覆檢驗,發現待執行KeySch運算的令牌組即對它們執行KeySch操作,結果寫回密鑰緩存單元相應的地址。如果發現密鑰擴展已經完成則停止,其中的停機條件是輪變換環的令牌輪次達到了最後一輪。
狀態令牌的處理流程如圖10b所示。一列狀態的令牌首先與對應的輪密鑰列執行AddKey運算,隨後檢驗結果令牌的輪次,如果輪次等於Nr,則將令牌數據緩存在輸出緩存單元中,當輸出緩存單元寫滿後則將密文輸出,運送結束;如果輪次小於Nr,則檢查完成AddKey運算的令牌能否組成執行MixCol運算的新令牌(由AES算法知,一列狀態的MixCol運算依賴於4列的AddKey結果。),如果匹配成功則把相關的4個狀態字節重新打包成一個新的狀態字令牌,依次執行Srd和MixCol運算。這4個狀態字的地址是按照它們經過ShiffRow之後在同一列的關係逆推而得。所以被發送的令牌是ShiftRow後的結果。對於最後一輪的令牌則只執行Srd運算。輪變換執行後的結果狀態被返回到狀態令牌暫存單元,開始執行新的一輪計算。

發明內容
本發明是一個具有亂序執行特點,能夠抵抗差分功耗分析攻擊的數據流模式AES加密集成電路結構。這一結構一次處理一個數據分組,待前一個分組處理完畢,才可以處理下一個分組。其主要特徵在於
1.亂存執行的數據流AES加密電路結構,其特徵在於,該電路結構是在一個數據流加密專用集成電路上實現的,該電路結構遵從以Rijndael算法為最終算法的高級數據加密標準,記為AES,使用數據流模式實現亂序加密,該電路結構含有
a.傳輸通道,是兩個部件間的數據傳輸接口,所傳輸的數據是相應編號的令牌,其中包括一個令牌輸入數據總線、一個數據輸出總線和輸入請求與應答信號、輸出請求與應答信號,該傳輸通道與外部的接口就是通道埠;
b.輸入單元,是晶片內核與外部的接口,實現把明文和密鑰按照協議要求的時序輸入並通過4#傳輸通道將明文送入內核部分、把密鑰寫入初始密鑰存儲器的功能,同時產生該電路結構中內核的各個單元所需的復位信號InterRst和初始密鑰置入信號load;所述的4#通道傳輸的令牌,命名為令牌4包括一個32位的數據域,一個2位的column域;
c.通道開關單元Switch,是一個2傳輸通道輸入-2傳輸通道輸出的交換開關,此外還接收來自工作狀態寄存器的輸入信號WK,當WK=0時,該通道開關單元處於空閒狀態,接收所述輸入單元經4#通道送來的明文數據,經過解析後,把其中的數據重新打包成狀態字令牌,發送給5#通道,所述的5#通道傳輸的令牌,命名為令牌5包括一個32位的數據域,一個4位的表示輪次的color域和一個2位的地址域,根據令牌4打包時,令牌5的數據域直接複製令牌4的數據域,令牌5的color域設為0,令牌5的地址域複製令牌4的column域;當WK=1時,處於工作狀態,把3#通道發來的令牌解析後,根據不同的類型,把狀態字令牌重新打包成一個令牌發給5#通道,把密鑰字令牌重新打包成一個令牌發送給通道6;所述的3#通道傳輸的令牌,命名為令牌3包括一個1位的屬性域和一個32位的數據域,當屬性域等於0時,是狀態字令牌,還包括一個1位的操作符域、一個2位的column域、一個4位的color域,把它重新打包成令牌5時,其中的數據域直接複製令牌3的數據域,color域直接複製令牌3的color域,地址域直接複製令牌3的column域,當令牌3屬性域等於1時,是密鑰字令牌,還包括一個1位的fadd位和6位不關心的數據,所述發送到6#通道的令牌,命名為令牌6,是下述的中間密鑰字令牌,包括一個32位的數據域和一個1位的地址域,把它打包成令牌6時,令牌3的數據域直接複製到令牌6的數據域,fadd域複製到令牌6的地址域;
d.初始密鑰存儲器是一個256位的寄存器組,從所述輸入單元接收時鐘信號和輸入的密碼密鑰數據,把來自所述輸入單元的密碼密鑰直接接收存入;
e.AK暫存器單元,是待執行AddKey運算的令牌暫存單元,包括密鑰字存儲器、狀態字存儲器以及令牌解析和打包電路,其中,密鑰字存儲器有8個密鑰字存儲單元,2個中間密鑰字存儲單元、兩個5位內部存儲器BLOCKH和BLOCKL及一個2位狀態寄存器KES,該密鑰字存儲區有3位地址,二進位表示的地址空間是000-111,依次存儲序號模密鑰分組列數Nk等於0-7的擴展密鑰字,高段為100-111,低段為000-011,每條存儲記錄包括一個32位的數據域、一個1位的fadd域、一個輪變換標記位和一個擴展標記位;所述密鑰字存儲器中地址等於Nk-1的單元存儲的數據稱為變換密鑰字1,Nk不等於4時地址等於3的記錄數據稱為變換密鑰字2,Nk等於4時的變換密鑰字2是地址等於7的記錄數據;該狀態字存儲區有2位地址,二進位表示的地址空間是00-11,依次存儲狀態中的第0-3列,每條記錄包括一個32位的數據域、一個4位的color域;該中間密鑰字存儲區,有一位地址空間0-1,依次存儲從通道埠6來的中間密鑰字,該中間密鑰字是AES密鑰擴展算法中定義的非線性函數的計算結果,每條存儲記錄包括一個32位的數據域;所述的暫存單元的每個存儲單元都對應一個標記為flag的「滿/空」標記位,當單元寫入時flag置1,表示滿,當數據讀出後flag復位,表示空;該BLOCKH存儲高段密鑰字的「分組值」,BLOCKL存儲低段密鑰字的「分組值」,所述「分組值」是指所有輪擴展密鑰序列按所述Nk個一組分組後,所得到的組的序號,該擴展密鑰由初始密鑰擴展而成,該擴展密鑰的總長為4(Nr+1),Nr為迭代輪數;該AK暫存器單元有三個輸入通道埠通道5埠接收令牌5並寫入狀態字存儲區,寫入的地址是令牌5的地址域的值,狀態字記錄的數據域和color域分別等於令牌5的數據域和color域,通道6埠接收令牌6,寫入中間密鑰字區,寫入地址是令牌6的地址域的值,寫入記錄的數據域直接複製令牌6的數據域,通道9埠接收新的擴展密鑰字令牌並寫入密鑰字存儲區,另外,密鑰字存儲區還有一個置數埠,與所述初始密鑰寄存器的輸出端相連,256位寬,由所述load信號作置位信號;該AK暫存器單元有兩個輸出通道埠;通道7埠發送作AddKey運算或變換密鑰字轉發用的操作數令牌,通道10埠發送密鑰擴展運算用的操作數令牌;
e1.所述的通道9埠傳輸的令牌,命名為令牌9,包括4個32位的數據域k0-k3、一個5位的BLOCK域和一個1位的part域,令牌9part等於0則k0-k3依次寫入密鑰字存儲區地址為000-011的單元,所述地址用二進位表示,令牌9的BLOCK值賦給BLOCKL,同時將所有低段單元的輪變換標記位和擴展標記位復位為0,令牌9part等於1則k0-k3依次寫入密鑰字存儲區二進位表示的地址為100-111的單元,令牌9的BLOCK值賦給BLOCKH,同時將所有高段單元的輪變換標記位和擴展標記位復位為0;
e2.所述通道7埠發送的令牌,命名為令牌7,包括2個32位的數據域data1和data2、一個1位的屬性域,屬性域的值等於發送時下述的AorT信號的取值當AorT等於0時,執行AddKey操作,令牌7是狀態字令牌,它還包括一個4位的color域、一個2位的column域,打包時,把下述的ssel信號的值複製到它的column域、地址等於ssel的狀態字存儲記錄的數據域複製到令牌7的data1域、該狀態記錄的color域複製到令牌7的color域,地址等於下述ksel值的密鑰存儲記錄的數據域複製到令牌7的data2域,通道7埠的應答信號將讀取的狀態字記錄情空,把讀取的密鑰字記錄的輪變換位變成1;當AorT等於1時,執行變換密鑰字轉發操作,令牌7是密鑰令牌,除數據域和屬性域外還包括一個1位的操作符域、一個1位的fadd域與4位不關心的數據,打包時,data1域等於0,地址等於下述ksel值的密鑰存儲記錄的數據域複製到它的data2域;ksel等於Nk-1時,轉發變換密鑰字1,fadd等於0,操作符域等於0,表示此令牌將執行下述f變換,Nk等於4時,若ksel等於7,則表示轉發變換密鑰字2,fadd域等於1,操作符域等於0,表示此令牌將執行下述f變換,若Nk不等於4且ksel等於3,則表示轉發變換密鑰字2,fadd等於1,操作符域等於1,表示此令牌將執行下述g變換;通道7埠的應答信號將讀取的狀態字記錄清空;
e3.所述通道10埠發送的令牌命名為令牌10,包括一個32位的中間密鑰字域、4個32位的密鑰字域k0-k3、一個5位的BLOCK域和一個1位的step域,打包時令牌10的step域等於令牌發送時所述的step信號的值,當令牌發送時刻所述step信號等於0時,令牌10的中間密鑰字域等於中間密鑰字存儲區中地址等於0的記錄的數據,令牌10的BLOCK域的值等於所述BLOCKL寄存器的值,通道10埠的應答信號把密鑰存儲區低段的4個密鑰字的擴展位都置成1,當令牌發送時刻所述step信號等於1時,令牌10的中間密鑰字域等於中間密鑰字存儲區中地址等於1的記錄的數據,令牌10的BLOCK域的值等於所述BLOCKH寄存器的值,通道10埠的應答信號把密鑰存儲區高段的所有密鑰字的擴展位都置成1;
e4.該KES控制密鑰擴展的時序,狀態都採用二進位編碼表示,KES的初始狀態二進位編碼是00,即準備計算f的狀態,在此狀態下執行變換密鑰字1轉發後,KES二進位編碼變為01,進入執行f變換的狀態,在01狀態下讀取低段密鑰進行密鑰擴展時,KES的狀態變化為11,處於準備計算g的狀態,在11的狀態下執行變換密鑰字2操作後,KES的狀態變化為10,進入執行g變換的狀態,在10狀態下讀取高段密鑰進行密鑰擴展時,KES的狀態變化為00;
f.工作狀態寄存器,向所述輸入單元發送WK信號,向所述通道開關單元Switch發送WK信號,接收來自下述Matcher OK單元的OK信號;當OK信號上升時WK復位;
g.Matcher II匹配單元,檢查AK暫存器單元中的狀態字存儲區和密鑰字存儲區,發現就緒的狀態字-密鑰字對或就緒的變換密鑰則隨機選取其中之一,把相應的地址所選擇信號傳送給所述AK暫存器單位,隨後觸發令牌發射信號fetch_II,所述的選擇信號包括標記為了ssel的AddKey狀態字讀地址、標記為ksel的密鑰字讀地址、標記為AorT的表示發送令牌將執行的操作的信號0表示AddKey運算,1表示變換密鑰字轉發,標記為Trans;該Matcher II匹配單元的輸入包括AK暫存器單元的狀態字存儲區和密鑰字存儲區的觀測信號,其中包括狀態字記錄的color位與flag位,密鑰字記錄的輪變換標記位和擴展標記位、flag域,BLOCKL和BLOCKH,KES,另外還有密鑰分組列數Nk;所述的「就緒」是指計算所有被觀測狀態字和密鑰字的序列號,尋找序列號相同且flag都為1的狀態字-密鑰字對,或者根據KES狀態檢測並發現相應的變換密鑰字;所述fetch_II信號到來,則觸發所述AK暫存單元把令牌發送給7#通道;當被發送的狀態字被清空,或者KES狀態改變,則fetch_II復位;
h.Matcher K匹配單元,檢查密鑰字存儲區和中間密鑰字存儲區的觀測信號輪變換標記位和擴展標記位、flag和KES狀態;當KES處於密鑰擴展狀態下,且相應的密鑰欄位和中間密鑰欄位已準備就緒則把標記為step的密鑰擴展讀地址變為相應的值1為高段擴展,0為低段擴展,並觸發令牌發射信號fetch_K,所述的AK暫存器單元根據step信號把密鑰區的相應數據以及BLOCK值打包成令牌等待發送,當fetch_K信號來到時,觸發所述AK暫存單元把該令牌經通道10發出;如果下述的exp_stop信號有效,Matcger K匹配單元則停止工作;
i.密鑰擴展運算單元,用Key Scgedule標記,接收並解析來自通道10的令牌,經過下述Key Schedule處理後打包成內含所述新的擴展密鑰的令牌經通道9發出,所述的Key Schedule的處理含有以下運算
i1.把所述令牌10的中間密鑰字域和k0-k3域作為輸入,執行KeySch運算中間密鑰字與k0逐位異或,結果輸出作為令牌9的k0域,並與令牌10的k1逐位異或,結果輸出作為令牌9的k1,並與令牌10的k2逐位異或,結果輸出作為令牌9的k2,並與令牌10的k3逐位異或,結果輸出作為令牌9的k3;
i2.把所述令牌10的BLOCK域加1後的結果作為令牌9的BLOCK值;
i3.當Nk=4時,把所述令牌10的step域的邏輯反作為所述令牌9的part域,如果Nk>4,則把所述令牌10的step域直接複製到所述令牌9的part域;
j.AddKey運算單元,在接收並解析通道7發來的操作數令牌後,對其中的數據執行AddKey運算後,打包成輪密鑰混合令牌,經通道8發送,所述AddKey運算即AES算法定義的輪密鑰加法操作作用於狀態的一列;所述經通道8發送的令牌,命名為令牌8,包括一個32位的數據域和一個1位的屬性域,當屬性域等於0時,是狀態字令牌,還包括一個4位的color域和一個2位的column域,當屬性域等於1時,是密鑰令牌,還包括一個1位的操作數域和一個1位的fadd域,打包時,把令牌7的data1與data2逐位異或的結果作為令牌8的結果,令牌7的其餘域直接複製到令牌8中與之同名的域中;
k.輪更新通道開關單元,對來自通道8的令牌進行輪次檢查,若是狀態字令牌且輪次已經達到迭代輪次Nr,則經通道11轉發到下述輸出暫存單元;否則,把其輪次加1經通道1轉發到下述EU暫存器單元執行後續處理;若到達的令牌輪次為Nr,且上述與其相加的擴展密鑰屬於密鑰分組的高段,即表示密鑰擴展已經完成,則觸發exp_stop信號;若是密鑰字令牌則直接由通道1轉發到下述EU暫存器單元執行後續處理;所述令牌處理包括如下3情況
k1.通道11傳輸的令牌,命名為令牌11,包括一個32位的數據域和一個2位的column域,打包時,令牌8的數據域直接複製到令牌11的數據域,令牌8的column域直接複製到令牌11的column域;
k2.當令牌8的屬性域為0時,所述通道1發送的令牌,命名為令牌1,是狀態字令牌,包括一個32位的數據域、一個4位的color域、一個2位的column域一個1位的操作符域和一個1位的屬性域打包時,令牌8的數據域和column域直接複製到令牌1中同名的域中,令牌8的color域加1後的結果作為令牌1的color域,令牌1的屬性域等於0,若令牌8的color域等於Nr-1,則令牌1的操作符域標記為Srd操作,否則令牌1的操作符域標記位SM操作;
k3.如果令牌8的屬性域等於1,所述通道1發送的令牌1是變換密鑰字令牌,包括一個32位的數據域、一個1位的操作符域、一個1位的fadd域和5位不關心的數據,打包時,令牌8的各域分別直接複製到令牌1中同名的域中;
l.輸出暫存單元,是一個密文重排的暫存單元,由一個4×32比特的存儲單元和令牌解析電路組成,該單元接收通道11來的亂序到達的結果令牌所攜帶的密文數據並暫存,寫入的地址是所述令牌11的column域,寫入的數據是所述令牌11的數據域,在接收到下述接收單元的讀地址信號後輸出對應的密文狀態字;所述的暫存單元的每個存儲單元都對應一個標記為flag的「滿/空」標記位,當單元寫入時flag置1,表示滿,當數據讀出後flag復位,表示空;
m.輸出單元,該單元是所述晶片與外部的接口、實現把密文按要求的時序輸出的功能;
n.Matcher OK匹配單元,檢查所述輸出暫存單元中的所有flag信號,當所有的flag都為1則表示全部密文字都已到達,則把結束信號OK變成高電位,在通知所述工作狀態存儲器的同時也通知所述輸出單元讀取所述輸出暫存單元的密文狀態字,當flag被復位後,OK信號變為低電位;
o.EU暫存器單元,由一個密鑰字存儲區和兩個完全相同的狀態存儲區組成,依次標記為key store、store0和store1;其中,key store存儲密鑰擴展的變換密鑰字,一條存儲記錄包括一個32位的數據域、一個1位的fadd域和一個1位的操作符域,store0/store1依次存儲行移位之前「狀態」中的第0-第3列,每列存儲單元又分為4行,第0行的記錄包括1個8位的數據域、一個4位的color域和一個1位的操作符域,第1行至第3行的記錄包含一個8位的數據域;所述兩個狀態存儲單元按照桌球式讀寫的流水線方式工作根據輸入令牌的輪次標記,當輪次為偶數時寫入store0,store1中的數據必是前一輪的狀態,從store1中讀取數據處理;當令牌的輪次為奇數,則寫入store1,store0必是前一輪狀態的待處理數據,從store0中讀取數據處理;該EU暫存器單元設有一個傳輸通道埠,接收所述輪更新通道開關單元經通道1發出的令牌1,從中解析出令牌類型狀態令牌還是密鑰令牌、寫地址和記錄數據,並把記錄寫入相應的存儲單元中;一個輸出傳輸通道埠,與通道2相連,根據下述Matcher I匹配單元輸入的讀地址、store0/store1選擇信號以及狀態/變換密鑰選擇信號輸出相應的狀態字或變換密鑰字,與其他控制信號一起打包成令牌,經通道2發送給下述EU運算單元;上述3個暫存區的每個存儲單元都對應一個標記為flag的「滿/空」標記位,當單元寫入時flag置1,表示滿,當數據讀出後flag復位,表示空;
o1.所述的令牌解析方法是當所述令牌1的屬性域為0時,是狀態字令牌,寫入地址是令牌1的column域,寫入記錄的第0行的數據域是令牌1數據域的7至0位,第0行的color域是令牌1的color域,第0行的操作符域是令牌1的操作符域,寫入記錄的第1行到第3行的數據分別依次是令牌1數據域的15位至8位、23位至16位和31至24位;當所述令牌1的屬性域為1時,是密鑰令牌,令牌1的數據域複製到所述變換密鑰字存儲記錄的數據域,令牌1的fadd域和操作符域直接複製到所述變換密鑰字存儲記錄的同名域中;
o2.所述的經通道2發送的令牌被命名為令牌2,它的打包方法是當所述的狀態/變換密鑰選擇信號等於0時,令牌2是狀態字令牌,屬性域等於0,數據域的7到0位是地址等於所述的Matcher I匹配單元輸入的讀地址的第0行記錄的數據域,數據域的15到8位是經過AES算法定義的行移位運算後的地址等於所述讀地址的第1行記錄的數據域,數據域的23到16位是經過AES算法定義的行移位運算後的地址等於所述讀地址的第2行記錄的數據域,數據域的31到24位是經過AES算法定義的行移位運算後的地址等於所述讀地址的第3行記錄的數據域,令牌2的color域和操作符域分別是地址等於所述讀地址的第0行記錄的color域和操作符域,令牌2的column域是所述讀地址的值;當所述的狀態/變換密鑰選擇信號等於0時,令牌2是密鑰自令牌,屬性域等於1,數據域是變換密鑰存儲記錄的數據域,fadd域和操作符域分別是變換密鑰存儲記錄的fadd域和操作符域;
p.Matcher I匹配單元,檢查key store和store0/store1中的令牌信息,在考慮行移位變換之後發現就緒的狀態字或者發現變換密鑰則隨機選取一個,把地址信息送給所述EU暫存器單元,並通過fetch_I信號觸發通道2埠的觸發信號,把所述EU暫存單元的令牌2發送給所述EU運算單元;所述Matcher I匹配單元的輸入包括來自所述EU暫存器單元的觀測埠的信號,通道2埠的應答信號以及所述控制選擇的隨機信號;同時,向EU暫存器單元輸出所述fetch_I令牌發送信號;
q.全局存儲器,存儲密鑰分組列數Nk,迭代輪數Nr,其中,向EU暫存器、下述EU運算單元、Matcher II兩個單元和密鑰擴展運算單元輸出Nk,向輪更新通道開關單元輸出Nr,
r.EU運算單元,接收來自通道2的令牌2,解析後根據令牌2的屬性域和操作符域以及所述密鑰分組列數Nk對數據域執行相應的計算,操作結果打包到令牌3的數據域中通過通道3發送;其中,所述令牌3除數據域外,還有一個1位的屬性域,其值等於所述令牌2的屬性域值當屬性域等於0時,是狀態字令牌,還有一個4位的color域和一個2位的column域;當屬性域等於1時,是密鑰字令牌,還有一個1位的fadd域,還有5位不關心的數據,打包時,令牌2的fadd域直接複製到令牌3的fadd域中;所述對於令牌數據域的計算包括
r1.Srd操作,當令牌2的屬性域等於0且操作符域為所述的Srd標記時或當令牌2的屬性域等於1且操作符域為1且所述密鑰分組列數Nk大於6時執行,即對數據域的每個字節執行AES算法定義的Srd查表操作;所述令牌2屬性域等於1且操作符域為1時的操作即是上述的g變換在Nk大於6時的操作;
r2.Srd-MixCol操作,當令牌2的屬性域等於0且操作符域為所述的SM標記時執行,即先對數據域的每個字節執行AES算法定義的Srd查表操作,再對4個字節的結果向量左乘一個4×4的常數矩陣,其中所述的常數矩陣為AES算法中定義的列混合操作對應的常數矩陣;
r3.Srd-循環移位-輪常量相加計算,是上述的f變換當令牌2的屬性域等於1且所述密鑰令牌的操作符域為0時執行,即先對數據域的每個字節執行AES算法定義的Srd查表操作,再將4個字節的結果循環左移8位,最後,所得結果的低8位與一個8位的輪常量RC逐位異或;所述輪常量初值為0,每執行一次輪常量加法運算後,其值乘以2,所述乘2操作是定義在GF(28)域上的;
r4.直接專發操作,當令牌2的屬性域等於1且所述狀態令牌的操作符域為1且Nk小於等於6時執行,即令牌2的數據域直接複製到所述令牌3的數據域;所述令牌2屬性域等於1且操作符域為1時的操作即是上述的g變換在Nk下與等於6時的操作;
s.Matcher II隨機控制碼產生電路,隨機產生控制所述Matcher II匹配單元中仲裁電路的3位隨機選擇碼,每次fetch_II下降時產生一個新的隨機控制碼;
t.Matcher I隨機控制碼產生電路,隨機產生控制所述Matcher I匹配單元中仲裁電路的3位隨機選擇碼,每次fetch_I下降時產生一個新的隨機控制碼;
u.2.上述的Matcher II單元與AK暫存單元構成了AddKey運算單元的令牌暫存-匹配-發射結構,簡稱為HMF結構,Matcher I單元與EU暫存單元構成了EU運算單元的HMF結構,Matcher K與AK暫存單元的密鑰存儲區構成了KeyAchedule單元的HMF結構,Matcher OK與輸出暫存單元構成了輸出的HMF結構;所述HMF結構具有如下特徵
u1.包含一個令牌暫存單元,由寄存器堆實現,寫埠採用異步握手協議;寫地址和寫入數據由輸入令牌解析得出,寫入時鐘由輸入通道埠的請求信號觸發;讀埠的地址由下述匹配單元輸出的選擇信號決定,輸出數據隨讀地址即時變化;內部存儲單元對應有表示記錄是否存在的「滿/空」標誌位,所有單元的滿空標誌位和記錄與下述匹配條件相關的域的數據組成觀測信號,可被下述匹配單元讀取;所述輸出數據可被下述令牌打包邏輯讀取;所述滿空標誌位由一個C單元產生,該C單元的一端接對應記錄的寫入時鐘,另一輸入端接記錄的清空信號信號的反信號;所述各個記錄的寫入時鐘由寫埠的接收應答信號經過寫地址選擇產生,所述各個記錄的清空信號由所述讀埠的應答信號經讀地址選擇產生;
u2.包含一個匹配單元,由匹配邏輯和選擇邏輯電路兩部分組成,暫存單元各個記錄的觀測信號輸入匹配邏輯電路中按照匹配條件對應的布爾表達式算出各自的匹配結果值,匹配成功則值為1,否則等於0;每個匹配結果信號通過一級C單元輸出到所述選擇邏輯的輸入端成為請求信號,所述C單元的另一輸入端與所有請求信號的或信號相連,只有請求信號全為0時等於1的匹配結果才能傳遞到選擇邏輯電路,當請求信號中存在有效請求,即為1的請求信號,在它之後產生的成立的匹配結果就無法通過C單元;請求對應的令牌被發送後,請求復位,C單元對成立的匹配結果導通;所述Matcher I和Matcher II單元的選擇邏輯是一個仲裁邏輯電路,對每個被檢測的令牌組的請求信號進行隨機選擇,輸出的是選中請求的序號,並由此產生令牌暫存器的讀地址;所述的Matcher K單元的選擇電路是計算匹配成功的請求對應的所述step信號;所述Matcher OK沒有選擇電路;匹配單元的選擇電路輸出的請求序號通過鎖存器輸出成為令牌的選擇信號;根據所述選擇信號的選擇選擇對應的所述的請求信號成為令牌發射觸發信號,如所述的fetch_II、fetch_I、fetch_K信號;
u3.令牌發射觸發信號經過長度等於選擇電路輸出穩定所需的最長時間的延時後觸發所述選擇信號的鎖存器的控制端將鎖存器鎖存,同時觸發發送令牌的請求信號;所述暫存單元的復位應答信號將所述選擇信號的鎖存器的控制端復位,使鎖存器導通,選擇信號重新隨所述匹配單元的選擇邏輯電路輸出變化;
在上述各單元中,
所有傳輸通道都採用異步握手協議;
所有運算單元的數據處理和令牌打包由組合邏輯電路實現;
所述通道開關單元Switch,初始密鑰寄存器、AK暫存器單元、Matcher K匹配單元、密鑰擴展運算單元共同構成了密鑰擴展環,而通道開關單元Switch、Matcher II匹配單元、AddKey運算單元、輪更新通道開關單元、EU暫存器單元,Matcher I匹配單元、EU運算單元構成輪變換環,環內用傳輸通道相連,環間用開關單元Switch相連。仿真結果
a)功能驗證
對最終的流片電路進行verilog和電路及仿真。其中verilog測試涵蓋了AES標準官方網站提供的全部已知答案驗證,全部通過。
b)亂序水平估計
對採用發明結構和令牌傳輸關係實現的電路晶片處理128位明文、128位密文的情況做如下功耗差分測試分別在亂序執行和確定順序執行情況下採集密鑰所有位等於0和所有位等於1時加密同一組明文的功耗曲線,求出它們的樣本差分曲線,進行比較。實驗中,加密的明文是1200個隨機產生的128位分組。
使用功耗仿真的專門工具進行功耗仿真,完成上述測試。
圖11是測試所得到的亂序執行和確定時序執行的功耗差分曲線。圖中亂序執行的曲線尖峰峰值比較接近,分布範圍廣,確定順序執行的曲線尖峰間的高度差較大,且分布集中,可以明顯分辨出運算輪次。這體現了亂序執行對於功耗差分的平均化效果,經過平均化,亂序執行的最大差分小於確定時序的結果。由於最大差分是抗DPA的決定因素,因此亂序執行比確定執行有更高的實現安全性。亂序執行的最大功耗差分約是確定時序執行的66%。


圖1 4相位握手協議傳輸通道。
圖2 4相位異步握手協議。
圖3 4相位握手協議異步傳輸通道實現電路。
圖6 Rijndael算法的密鑰分組間的計算關係。
圖4 Rijndael的輪變換定義。
圖5 ShiffRow圖解(128位)。
圖7 Rijndael密鑰擴展結構。
圖8 KeySch單元邏輯圖。
圖9 密鑰擴展實現方法流程圖(a)Nk=4(b)Nk=6(c)Nk=8。
圖10 本發明的AES實現算法流程(a)密鑰令牌處理流程;(b)狀態令牌出來流程。
圖11 全0密鑰與全1密鑰的功耗差分曲線(Nb=4,Nk=4)。
圖12 結構圖。
圖13 輸入模塊電路結構。
圖14 輸出模塊電路結構。
圖15 HMF結構示意圖。
圖16 令牌暫存器基本結構(4單元)。
圖17 匹配單元結構。
圖18 4選1仲裁器電路(a)R-box0(b)R-box1(c)整體電路。
圖19 發射電路的邏輯圖。
圖20 密鑰擴展狀態機。
圖21 pp信號產生電路。
圖22 Switch電路結構。
圖23 輪更新單元結構。
圖24 令牌1至EU暫存單元的轉移關係(a)狀態令牌(b)密鑰令牌。
圖25 EU暫存單元存儲記錄到令牌2的轉移關係(a)狀態令牌(b)密鑰令牌。
圖26 令牌2到令牌3的轉移關係(a)狀態令牌(b)密鑰令牌。
圖27 EU單元的各種運算的流程(a)Srd運算(b)SM運算(c)RC運算。
圖28 令牌3到令牌5和令牌3到令牌6的轉移關係(a)令牌3到令牌5(b)令牌3到令牌6。
圖29 令牌4到令牌5的轉移關係。
圖30 令牌5到SR的轉移關係。
圖31 令牌6到AK暫存單元的KR的轉移關係。
圖32 AK暫存單元存儲的數據到令牌7的轉移關係(a)AddKey操作令牌發射(b)變換密鑰字令牌轉發(NK>4)(c)變換密鑰字令牌轉發(NK=4)。
圖33 令牌7到令牌8的轉移關係。
圖34 令牌8到令牌1和令牌11的轉移關係(a)密文令牌發送(b)狀態令牌輪次更新(c)密鑰令牌轉發。
圖35 令牌10到令牌9的轉移關係。
具體實施例
我們按照本發明實現了一個數據流AES加密晶片(THDFAES04),並進行了投片實驗。下面以此為例介紹具體實施辦法
1.工作方式
晶片每次處理一個分組,在開始加密前首先通過數據輸入總線將密鑰列數(NK)和初始密鑰分別送入晶片內部的設置寄存器和初始密鑰寄存器中。然後再將明文分組送入晶片。啟動信號觸發晶片開始工作。最終運算結果先被暫存在輸出寄存器中,當輸出寄存器被填滿——即整個分組都產生之後,結束信號(OK)變高,結果數據可以從數據輸出總線讀出。每次開始輸入新的分組時,初始密鑰寄存器的數據都會被重新寫入內部的密鑰暫存器。
2.電路結構
它的整體電路結構如圖12所示。它包含輸入模塊、輸出模塊、密鑰擴展運算單元(KeySchedule)、AddKey和EU三個運算單元、AK暫存單元、EU暫存單元和輸出暫存單元三個令牌暫存單元,Matcher I、Matcher II、Matcher K和Matcher OK四個匹配單元以及Switch和輪更新兩個通道開關單元,構成了「輪變換環」和「密鑰擴展環」兩個環狀結構,環上各部件用異步傳輸通道相連。此外,還包含一些全局寄存器存儲全局變量。其中AK暫存單元又分為密鑰字存儲區和狀態字存儲區兩部分;EU暫存單元由一個密鑰字存儲區和兩個完全相同的狀態字存儲單元組成。電路中有兩個相同、彼此獨立的隨機控制碼產生電路,分別為MatcherI和Matcher II的仲裁電路提供隨機控制碼,其中WK表示工作狀態寄存器,Nk,Nr分別是密鑰分組的列數和迭代輪數,都是內部的全局寄存器,還有保存初始密鑰的初始密鑰寄存器。
圖中每個傳輸通道都標了一個編號,每個通道上傳輸固定的令牌格式,這些編號就是對應的令牌編號。
各個部件的功能描述如下
5.1傳輸通道與通道埠
在圖12中用空心寬箭頭表示傳輸通道,箭頭表示數據傳輸方向。所傳輸的數據是相應編號的令牌。THDFAES04採用4相位捆綁數據握手協議的異步傳輸通道。
5.2輸入模塊
晶片內核與外部的接口,實現將明文按照要求的時序輸入的功能,對內分別按照令牌4格式輸出明文數據,將初始密碼密鑰直接存入初始密鑰寄存器。此外,還產生對內的復位信號InterRst,初始密鑰加載信號load。
圖13是輸入模塊的電路結構圖,其中CKIN信號是輸入時鐘,外部輸入信號還包括輸入數據總線和復位信號、地址信號和使能信號,復位信號可以復位整個晶片,控制電路根據輸入的地址控制輸入數據分配邏輯,將輸入數據存儲到相應寄存器中明文存入明文緩存器,它是一個串行輸入、並行輸出的移位寄存器,可以存儲32位的明文數據;密鑰存入內核部分的初始密鑰寄存器;Nk值存入Nk寄存器;隨機順序控制序列分別存入內核部分的隨機順序控制序列寄存器I和入隨機順序控制序列寄存器II。使能信號控制晶片的輸入是否有效。控制電路中包括一個計數器記錄當前明文序號,明文緩存器的輸出與打包邏輯電路相連,將計數器的低2位作為令牌4的column域,將明文緩存器的輸出作為令牌4的數據域,當寫入的明文數達到32位,則觸發通道4埠將打包電路輸出的令牌4發送到通道4中。啟動信號觸發load信號將初始密鑰寄存器中的數據置入AK暫存器單元的密鑰存儲區,load信號觸發WK信號變為高電平。InterRst_信號是內核電路的復位信號,不能復位初始密鑰寄存器,在開始輸入明文數據的時候,InterRst_信號出現一個負脈衝將內核電路復位,準備執行新的加密任務,但是初始密鑰仍然保留。
5.3輸出模塊
晶片內核與外部的接口,實現將密文按照要求的時序輸出的功能。其功能是從輸出暫存單元中讀取結果,並按要求輸出。輸入信號包括輸出暫存單元的數據輸出、OK信號和外部讀數時鐘CKOUT;輸出除了密文等對外接口外,還有輸出暫存單元的2位讀地址和讀取擦除信號(OUTACK)。
圖14是輸出模塊的電路結構圖,其中的控制電路接收OK的上升沿後即觸發cpl信號,使地址累加器開始工作——從0開始每2個時鐘周期加1,地址累加器的輸出即是輸出暫存單元的讀地址,輸出緩存是一個並行輸入串行輸出的移位寄存器,ren信號是它的置數控制端。ren在每次地址變化前有效,此時,在下降沿將輸出暫存單元的輸出置入輸出緩存,隨後ren復位,每個CKOUT的上升沿將輸出緩存的數據串行輸出到輸出數據埠。每次ren信號復位即觸發OUTACK信號的正脈衝,清除輸出暫存單元中的記錄。
5.4初始密鑰寄存器
初始密鑰寄存器是一個256位的寄存器組,保存著由輸入模塊寫入的密鑰。它的時鐘端由輸入模塊控制。
5.5HMF結構
發明結構中共包括AddKey單元的HMF結構,由AK暫存單元、Matcher II組成,EU單元的HMF結構,由EU暫存單元、Matcher I組成,KeySchedule單元的HMF結構,由AK暫存單元的狀態存儲區、Matcher K組成,輸出HMF結構,由輸出暫存單元和Matcher OK組成。THDFAES04中採用的HMF電路的典型結構如所示
它由令牌暫存器、匹配單元和發射電路組成,其中Matcher電路又分為匹配電路和選擇電路兩部分。選擇電路一般是一個仲裁器,由順序控制碼(rand)控制。圖中實心寬箭頭表示HMF與外部間的傳輸通道。WA和WD分別表示暫存器的寫地址和輸入數據埠,RA和RD分別表示讀地址和輸出數據埠。
其工作方式是外部輸入的令牌先存儲於暫存器中。暫存器中每個令牌記錄都有相應的「滿/空」標誌位(flag),在數據寫入時flag置1,讀出後CLR信號的高電平則將RA所指的記錄清空(對應的flag位復位)。CLR_done是CLR信號的應答信號,它的下降沿表示flag復位完成。
匹配單元讀取暫存器內部所有令牌的flag位以及與匹配條件相關的令牌標籤域(Tags)並計算它們的匹配函數(匹配條件的命題公式)值。每個匹配函數值是一個「請求」信號,匹配函數值為真則表示請求有效。如果存在有效的請求,則fetch=1。匹配單元中的仲裁單元按照rand的值,從所有有效請求中選擇一個,並把選中請求的序號(select)輸出。
發射電路在空閒狀態時如果發現fetch上升,則鎖存select信號,並根據select產生讀地址address,再將得到的輸出數據data與地址以及其它需要的信息打包成新的令牌發送到執行單元。執行單元的應答信號觸發clear將讀出的令牌記錄清空,此時,發射電路再次進入空閒狀態。發射電路在發送操作過程中不處理新的發送請求。
5.5.1令牌暫存器
THDFAES04中令牌暫存器的存儲單元由寄存器實現。圖16是一個4單元暫存器的示意圖,圖中僅畫出了一組存儲單元。每組單元由一組寄存器和一個flag標誌電路組成,寄存器時鐘(clk)的上升沿在clr為0時將flag置1,清除信號(clr)的正脈衝在clk為0時可以將flag復位。WA和WD由輸入令牌解析,reqin和ackin分別表示輸入通道埠的寫請求和寫應答信號。只有當flag信號為0時才能接受請求,數據在寫請求被接受後寫入寄存器。輸出數據則通過一級多路選擇器(MUX)直接輸出,RD隨RA即時變化。CLR信號經過RA的選擇觸發對應單元的clr信號,當所有clr信號都降低後CLR_done下降,作為記錄清除過程結束的標誌。
5.5.2匹配單元
圖17是一個基本的4請求匹配單元結構,其由匹配邏輯部分、請求仲裁部分和選擇保持-請求阻塞電路三部分組成。
匹配邏輯部分實現匹配函數計算,由組合電路實現,計算結果通過C單元送達仲裁器成為請求信號。
THDFAES04中的仲裁器採用了May D.論文中的R-box電路,如圖18所示,這是一個4選1的仲裁邏輯。I0~I3表示輸入的請求,A0、A1是被選中的請求的序號。
暫存器進行數據讀寫的時刻不確定,設計時認為觀測埠的信號隨時可能變化,仲裁器的輸出端也隨之不斷變化,因此需要同步select信號與令牌發送,以保證輸出通道的請求信號有效時,發射電路的輸出數據是穩定的。因此在仲裁器輸出端設置select鎖存器。假設初態fetch=0,鎖存器導通(lock=0),當select信號變為有效請求的序號,fetch上升,發射電路接收到fetch信號後則將lock信號變高,鎖存select,待發射完畢,對應令牌清空後,被選中的請求信號復位——此時select仍然沒有變化——fetch也隨之復位。發射電路轉入空閒狀態後,lock變低,鎖存器透明,直至再次出現fetch=1的情況。另一方面,圖中的C單元和4輸入或門組成了反饋阻塞電路。只要請求信號中存在有效請求就會阻塞新請求的通過,但是請求的復位不被阻塞,只有所有仲裁輸入端的有效請求都復位後C單元才重新導通。阻塞電路使得仲裁器輸出經過一定時間後必然能夠穩定,在fetch上升後經過相同的延時再採樣select即可避免「冒險」。顯然,此時的select值可能已經不是觸發fetch的請求的序號,但是必定對應一個有效請求,因此並不影響電路功能。
5.5.3發射電路
圖19是發射電路部分的邏輯圖與主要信號波形圖。
圖19a中R與C單元是令牌的接收通道;陰影部分的電路是地址鎖存信號lock的產生電路;req和ack分別是輸出通道埠的請求信號和應答信號,ackout是下一級電路的應答信號。其餘信號與圖15對應;d1是用於延時匹配的延時單元。
電路中所有時序單元的初始狀態全為0,fetch的上升沿經過d1(select的穩定時間)延時後成為fetch_d信號,fetch_d上升則發射電路進入發射狀態(對應圖中帶陰影的區域)。fetch_d的上升沿首先觸發lock信號,將有效請求的序號鎖存。req由lock門控輸出。lock信號在req的上升沿至clr_ack下降沿之間的時間內始終保持高電平。
THDFAES04中各個HMF結構都是在上述典型結構的基礎上稍加變化而來的,首先實際實現中各個發射電路都合併到各暫存單元的暫存器輸出部分中了,下面具體介紹它們的具體參數和變化之處——在下文沒有特別說明的內容即與上述典型結構相同
√AddKey的HMF結構
a)AK暫存單元
AK暫存單元是待執行AddKey運算的令牌暫存單元其中的存儲部分分為密鑰字存儲區和狀態字存儲區兩部分,另外還包含了令牌解析和打包電路。
(1)密鑰字存儲區有8個密鑰字記錄存儲單元和兩個中間密鑰字存儲單元。
密鑰字存儲空間的地址空3位地址,地址空間是(000)2-(111)2。
依次存儲前述「密鑰分組」模Nk等於0-7的密鑰字,如果Nk<8,則高地址單元空閒;按照地址此部分分為高低兩段,高段為(100)2-(111)2;低端為(000)2-(011)2。
中間密鑰字部分有1位地址,地址空間是0-1;依次存儲f和g。
另有兩個5位內部存儲器BLOCKH,BLOCKL和1個2位操作標記寄存器KES。BLOCKL是低段密鑰字的「分組值」;BLOCKH存儲高段密鑰字的「分組值」。KES用來控制密鑰擴展的時序,其狀態機如圖20所示。
在每次讀取相應的密鑰字進行f/g變換和讀取密鑰進行密鑰擴展時KES的狀態發生變化。它的初始狀態是00,即準備計算f的狀態。
密鑰字部分和中間密鑰字部分的記錄格式如下
密鑰字記錄(KR)
每個記錄的滿/空標誌位(flag)是當數據被寫入時(op=(11)2)置1,當op=(11)2時被復位。
f/g記錄(FR)
它含有兩個寫埠,分別是密鑰字和中間密鑰字的寫入埠,包含寫入數據總線和寫地址;兩個讀埠,分別對應令牌7和令牌9的數據域,都是包含數據總線和讀地址,對應令牌7數據域的總線寬度為32位,從Nk個密鑰字和2個中間密鑰字中選擇一個讀出,對應令牌9數據域的總線寬度160位,一次讀出一個密鑰段和一條中間密鑰字。
(2)狀態字存儲區有4個狀態字存儲單元
地址空間(00)2-(11)2。
依次存儲「狀態」中的第0-第3列
記錄格式(SR)
狀態字區有一個寫埠,包括數據總線(寬度為26)、寫地址、寫信號;一個置數埠,與初始密鑰寄存器的輸出相連,256位寬,由load信號作為置位信號;有一個讀埠,數據總線是36位,對應令牌7的data域與color域。當AorT為1時,輸出地址所指的狀態字,當AorT為0時,則輸出0。
AK暫存單元埠包括三個輸入通道埠,通道5埠接收狀態字令牌;通道6埠接收經過非線性變換的中間密鑰字f,g令牌;通道9埠接收新的擴展密鑰字;有兩個輸出通道埠通道7埠發送AddKey的操作數令牌(令牌7);通道10埠發送密鑰擴展的操作數令牌。各令牌的打包函數見令牌傳輸部分。此外,還有置數埠包括初始密鑰輸入總線、load、WK信號。
b)MatcherII
它檢查AK暫存單元中的狀態區和密鑰區,發現就緒的狀態字-密鑰字對,或就緒的變換密鑰則隨機選取其中之一,將相應的地址和選擇信號(ssel,ksel,AorT)傳給AK暫存單元。Matcher II讀取的觀測信號包括狀態字記錄的color域與flag標誌,密鑰字的op域與flag標誌。匹配條件表達式見後面的令牌傳輸關係部分;它的仲裁邏輯分為兩級,第一級是從滿足AddKey運算條件的請求中選擇一個,第二級是選擇執行AddKey操作還是執行變換密鑰字的轉發;對應的發射令牌接收通道是通道7,輸出的請求選擇信號包括狀態字讀地址(ssel)和密鑰字讀地址(ksel)與令牌類型標誌信號AorT,對應的令牌發射信號是fetch_II信號;當發送的是變換密鑰字令牌時,通道7的應答信號將密鑰字記錄的op域的輪變換位置1,而不是復位flag標誌。如果exp_stop=1,則Matcher II不發送變換密鑰字轉發的操作請求。
上述匹配單元中的仲裁器的隨機控制碼由隨機順序控制序列寄存器I提供。
√密鑰擴展的HMF結構
密鑰擴展的HMF結構的令牌暫存器與AddKey的HMF結構共用AK暫存單元的密鑰區,此外,它的暫存器還包括AK暫存單元的中間密鑰字單元。
Matcher K的觀測信號包括密鑰字的op域與flag標誌、中間密鑰字的flag、KES、BLOCKL和BLOCKH;匹配條件見後面令牌轉移關係部分;輸出的請求選擇信號是段標記step,打包邏輯根據step,將密鑰區的相應數據以及BLOCK值打包成令牌10待發送,具體打包邏輯見令牌傳輸關係部分;由於密鑰擴展運算不會同時存在多個待執行操作的令牌組,所以內部沒有仲裁電路;令牌發射信號是fetch_k;當收到通道10的應答信號則將step所指段內所有記錄的op域的擴展位置1。在Wk為0時,即非工作狀態,load信號的上升沿將初始密鑰寄存器中的數據寫入密鑰字區。
√EU單元的HMF結構
a)EU暫存單元
EU暫存單元中包含一個變換密鑰字存儲單元key store和兩個相同的狀態存儲單元store0,store1.
(1)store0/store1
地址空間(00)2-(11)2,依次存儲ShiftRow前「狀態」中的第0-第3列,每列又分為4行,對應狀態中的行和列;
store0和store1中包括兩種單元,它們的記錄形式不同。頭記錄(HDR)——對應狀態的第0行,存儲記錄格式如下
普通記錄(DR)對應第1行到第3行,記錄格式如下
store0和store1各包含一個讀埠,一個寫埠,都有各自的地址和數據總線。寫入時各行的地址相同,讀出時每行有獨立的讀地址。
(2)key store
只有一個存儲單元。存儲密鑰擴展的中間結果
記錄格式(KR)
EU暫存單元中的兩個狀態存儲單元是按照桌球式讀寫的流水作業方式根據輸入令牌的輪次標記,當輪次為偶數時寫入store0,store1中的數據必是前一輪的狀態,從store1中讀取數據處理當令牌的輪次為奇數,則寫入store1,store0是前一輪狀態其中有待處理的數據,從store0中讀取數據處理。在一個單元中無待處理的數據,另一個單元中出現待處理數據時store0和store1的角色交換。圖12中的pp信號即是輸出狀態暫存單元的選擇信號,它為1store1輸出,為0store0輸出。
EU暫存單元有一個輸入傳輸通道埠,與通道1相連;一個輸出傳輸通道埠,與通道2相連,令牌的打包函數見令牌傳輸關係部分。EU暫存單元的功能是接收通道1發來的令牌1,從中解析出令牌類型(狀態令牌還是密鑰令牌)、寫地址和記錄數據,並將記錄寫入相應的存儲單元中;根據pp,s_f,raddr輸出相應的狀態字或變換密鑰字,與其它控制信息一起打包成令牌2;fetch_I信號觸發2#通道埠的請求信號,將打包好的令牌發送給通道2,通道埠2的應答信號到來,則將被發送令牌對應的記錄的flag復位。
b)MatcherI
Matcher I包括Matcher I內部包括兩個狀態令牌匹配單元和一個密鑰令牌匹配單元。store0的匹配結果matched0和store1的匹配結果matched1被送到桌球控制信號pp的產生電路,pp的產生電路如圖21所示
store0/store1的觀測信號包括每個單元的flag位,以及各個HDR的color域、op域;輸出的請求選擇信號包括store0/store1的讀地址raddr(2位);具體匹配條件見令牌傳輸關係部分;狀態匹配單元內部有一個4選1的仲裁電路,從匹配的待執行EU單元運算的令牌中隨機選取一個。
密鑰匹配單元的觀測信號是密鑰存儲單元的flag標誌;匹配條件是flag=1。在MatcherI中還有一個2選1的仲裁電路,從狀態匹配單元的請求和密鑰匹配單元的請求中隨機選取一個,對應的操作選擇信號是s_f;對應的令牌發送信號為fetch_I。
上述匹配單元中的仲裁器的隨機控制碼由隨機順序控制序列寄存器I提供。
√輸出HMF
a)輸出暫存單元
輸出暫存單元是密文重排的暫存單元,其作用是將亂序到達的結果令牌(11#)攜帶的密文數據暫存,然後再由輸出模塊按正確順序讀出。其由一個4×32的存儲單元和令牌解析電路組成。其中存儲單元地址空間為(00)2-(11)2。分別對應密文狀態中的0-3列。
記錄格式為4個字節的數據。每個記錄同樣對應一個滿/空標誌位flag。
它有一個輸入通道埠與傳輸通道11相連;輸出埠包括來自輸出模塊的2位讀地址和清空信號OUTACK。
b)Matcher OK
它檢查輸出暫存單元的4個flag信號,當所有的flag都為1時表示4個密文字都已到達。則將結束信號OK變高,通知輸出模塊開始讀取數據,當flag被復位後,OK變低。由於沒有多個請求同時出現的情況,因此沒有仲裁電路和請求選擇信號,也沒有對應的令牌發射信號。
5.6密鑰擴展運算單元(KeySchedule)
KeySchedule單元輸入令牌10,解析令牌10後,經過Key Schedule計算後將結果打包成令牌9輸出。具體處理操作見後面的「令牌傳輸協議部分」。由輸入傳輸通道埠、邏輯部分(包括令牌解析、處理和打包)與輸出傳輸通道埠三級組成。
5.7AddKey
AddKey單元輸入令牌7,解析令牌7後,對其中的數據執行AddKey操作,將結果重新打包成令牌8發送。具體處理操作見後面的「令牌傳輸協議部分」。由輸入傳輸通道埠、邏輯部分(包括令牌解析、處理和打包)與輸出傳輸通道埠三級組成。
5.8EU
EU單元輸入令牌2,解析令牌2後,根據令牌類型和輪次對其中的數據執行相應的操作,將結果重新打包成令牌3發送。具體處理操作見後面的「令牌傳輸協議部分」。由輸入傳輸通道埠、邏輯部分(包括令牌解析、處理和打包)與輸出傳輸通道埠三級組成。
5.9Switch
Switch是一個2通道輸入-2通道輸出的交換開關,兩個輸入通道開埠分別是來自輪變換輪的3#通道埠和來自輸入模塊的4#通道埠;此外還有輸入信號WK。其在空閒狀態(WK=0)將4#通道埠發來的令牌4解析後,將其中的數據重新打包成令牌5發送給通道5;在工作狀態(WK=1)將3#通道發來的令牌3解析後根據類型,將狀態令牌重新打包成令牌5發送給通道5;將中間密鑰字令牌重新打包成令牌6發送給通道6。其電路結構如圖22所示,其中的箭頭表示異步傳輸通道,圖中的DEMUX和MUX也是異步控制部件①,DEMUX在傳來的Key的數據等於1的情況下,把輸入端令牌數據複製到通道6,否則複製到MUX的輸入通道,MUX在WK=0時,把通道4的數據傳遞到通道5,否則傳遞DEMUX的0輸出端數據到通道5;在輸入端,通道3來的令牌3被分解為兩個令牌請求,分別送到DEMUX的輸入端和控制端,控制端是令牌3的屬性域;MUX的控制端則是WK信號。令牌間的各個域的映射關係,見後面的令牌傳輸協議部分。
5.10輪更新單元
錯誤!未找到引用源。是輪更新單元的電路結構。其中第一級DEMUX與圖22相同,判斷令牌屬性,如果是密鑰令牌則直接複製到通道1,如果是狀態令牌,則經過第二級DEMUX,如果輸入令牌的color域等於Nr,則把令牌的一部分複製到通道11,同時對令牌的column域檢查(即圖中的exp_stop?單元),如果column>3,則則表示所有的擴展密鑰已經全部產生(因為擴展密鑰是一次產生一個「段」的。)則觸發exp_stop信號(exp_stop信號在新一輪運算啟動時復位。);如果令牌的color<Nr則將令牌的color域加1後複製到通道1;圖中與通道1相連的矩形是異步電路中的基本部件——「Join」控制部件它的兩路輸入不會同時有令牌到達,它把到達的令牌複製到輸出通道。
5.11隨機順序控制序列寄存器I
THDFAES04的隨機順序控制序列採用外部輸入的方法,圖12中的隨機順序控制序列寄存器I對應發明內容中的Matcher I隨機控制碼產生電路,它是一個環形的移位寄存器,在運算開始前通過外部輸入數據埠把一組隨機序列輸入到隨機順序控制序列寄存器I中;在工作過程中寄存器中的數據循環移位——每次fetch_I的下降沿移位一次,其中有一級寄存器的輸出連接到Matcher I的隨機碼輸入端。
5.12隨機順序控制序列寄存器II
THDFAES04的隨機順序控制序列採用外部輸入的方法,圖12中的隨機順序控制序列寄存器I對應發明內容中的Matcher II隨機控制碼產生電路,它是一個環形的移位寄存器,在運算開始前通過外部輸入數據埠把一組隨機序列輸入到隨機順序控制序列寄存器II中;在工作過程中寄存器中的數據循環移位——每次fetch_II的下降沿移位一次,其中有一級寄存器的輸出連接到Matcher II的隨機碼輸入端。
補充說明為了突出重點在上述描述中沒有提到復位信號InterRst_的連接關係,事實上上述各單元除了輸入模塊產生InterRst_外,其餘模塊都有InterRst_的輸入,用於電路初始化。
3.令牌傳輸協議
如下的令牌傳輸協議在上述部件和結構上執行,以實現AES加密算法
①可參見介紹異步電路的書籍
5.13令牌定義
令牌1
令牌2同令牌1
令牌3
令牌4
令牌5
令牌6
令牌7
令牌8
令牌9
令牌10
令牌11
5.14數據、令牌轉移關係
令牌1至EU暫存單元 記錄的變換協議
如果令牌1的key等於0,則當color為偶數時寫入store0,color為奇數時寫入store1,寫入地址為令牌1的column域的值,令牌1各個域與HDR、DR1-3各個域的映射關係如圖24(a)所示,其中令牌1的data域的最低字節(第7到第0位)至最高字節(第31位到第24位)依次分別寫入第0行至第3行的存儲單元中;如果令牌1的key域等於1,則令牌寫入EU暫存單元的key store中,令牌1各個域與KR各域的映射關係如圖24(b)所示。
EU暫存單元記錄至令牌2
Matchr I對store0或store1中的數據進行匹配,匹配條件是存在列數i,滿足第一行第i列、第二行第i-C1列,第三行第i-C2列,第四行第i-C3列的存儲記錄都是「滿」,對應的匹配單元輸出,即store0和store1的讀地址等於i。它同時對key store中的變換密鑰字進行匹配,匹配條件是FR記錄是「滿」。當符合上述條件的數據多於一個時,則隨機選取一個發送,對於狀體令牌,如果pp=1則當store1中的數據滿足匹配條件時由store1的相應數據打包成令牌2發射,否則當store0中的數據滿足匹配條件時由store0的相應數據打包成令牌2發射;如果pp選擇的狀態存儲區中沒有滿足條件的令牌數據,而另一個狀態存儲區中存在滿足匹配條件的令牌數據,則pp取反。狀態存儲區中的HDR、DR記錄與令牌2的各個域的映射關係如圖25(a)所示。FR記錄各個域與令牌2的各個域的映射關係如圖25(b)所示。
令牌2->令牌3
令牌2到令牌3的各個域間的映射關係如
圖26所示。其中令牌2的data域經過EU單元計算後,結果作為令牌3的data域。
EU計算的具體操作根據令牌2的其它域的取值而定
當key=0且op=Srd時,執行Srd操作;
當key=0且op=SM時,執行SM操作;
當key=1且remain=0時,執行RC操作;
當key=1且remain=1時,若Nk>6,執行Srd操作;若Nk<=6,結果即等於令牌2的data域。上述各個操作的流程圖如圖27所示。RC運算中用到的輪常量RC在線產生,即晶片初始化時將RC寄存器復位為初值「(01)16」,每次執行RC運算後(通道3埠應答信號的上升沿表示運算結束)觸發寄存器時鐘上升即把當前RC值乘2後存入RC寄存器(此處的乘法是定義在GF(28)域上的乘法);Srd用ROM實現附錄A所述的S盒查表操作;MixCo1即實現附錄A式1的計算;
令牌3->令牌5和令牌6
當令牌3的key=0時,產生令牌5,當令牌3的key=1時,產生令牌6。令牌3到令牌5和令牌6的各個域間的映射關係如圖28所示
令牌4->令牌5
令牌4各個域到令牌5的各個域間的映射關係如圖29所示。
令牌5->AK暫存單元中的SR
令牌5的內容存儲到AK暫存單元的狀態暫存區中,存儲地址是令牌5的address,其它各個域與SR的各個域的映射關係如圖30所示。
令牌6->AK暫存單元中的KR
令牌6的數據存入AK暫存單元的中間密鑰字存儲區,地址是它的address域,其它各個域與KR的各個域的映射關係如圖31所示。
AK暫存單元->令牌7
Marcher II對應的匹配條件有兩個,AddKey匹配條件是存在一對狀態令牌(用SR[i]表示)和密鑰令牌(用KR[j]表示),它們的存儲地址分別是i和.j,滿足
SR[i].color·Nb+i=BLOCKX·Nk+j且SR[i]的op=0且KR[j]的輪變換位等於0,
其中SR[i].color表示SR[i]的color域,對於j<4時,BLOCKX=BLOCKL,j≥4時,BLOCKX=BLOCKH。相應的匹配輸出ssel=i,ksel=j,AorT=0;
Trans匹配條件是KES=(00)2且地址等於Nk-1的密鑰存儲單元不空,且exp_stop=0。相應的匹配輸出ssel=0,ksel=Nk-1,AorT=1;或者Nk>4時KES=(11)2且地址等於3的密鑰存儲單元不空,相應的匹配輸出ssel=0,ksel=3,AorT=1;或Nk=4時KES=(11)2且地址等於7的密鑰存儲單元不空且exp_stop=0,相應的匹配輸出ssel=0,ksel=7,AorT=1;
如果同時有多個令牌(或令牌對)滿足上述條件,則隨機選擇一個。當發送狀態令牌,即發送AddKey操作令牌時的令牌7打包映射關係如圖32a所示;當發送密鑰令牌,即進行變換密鑰字轉發時的令牌7打包映射關係如圖32b-c所示,它們分別對應Nk>4和Nk=4的情況。
令牌7->令牌8
令牌7與令牌8的各個域間的映射關係如圖33所示。其中,令牌7的datal和data2逐位異或的結果作為令牌8的data域。
令牌8->令牌1或令牌11
當令牌8的key=0且color=Nr時產生令牌11,各個域的映射關係如圖34a所示;當令牌8的key=0且color<Nr時,執行輪次更新後產生令牌1,各個域的映射關係如圖34(b)所示,其中令牌8的color域加1後作為令牌1的color值,當令牌8的color=Nr-1時,令牌1的op=Srd,否則op=SM;當令牌8的key=1時,即密鑰令牌,產生令牌1,令牌8的內容直接複製到令牌1種,映射關係如圖34c所示。
令牌10->令牌9
令牌10到令牌9的各個域間的映射關係如圖35所示。其中令牌10的f,k0,k1,k2,k3經過KeySch計算的結果作為令牌9的data域,BLOCK加1後作為令牌9的BLOCK值。當Nk=4時,令牌9的part等於令牌10的step的反,Nk>4時,令牌9的part=令牌10的step。
令牌9->KR
如果令牌9的part=0,則令牌9的data寫入密鑰暫存區的低段,令牌9的BLOCK值賦給BLOCKL,寫入的同時將低段暫存單元的op域的兩位都復位成0;如果令牌9的part=1,則令牌9的data寫入密鑰暫存區的高段,令牌9的BLOCK值賦給BLOCKH,寫入的同時將高段暫存單元的op域的兩位都復位成0。
令牌9寫入時要更新KES的狀態,具體狀態轉移關係是
當KES=(01)2時,如果Nk>4且令牌9的part=0,或者Nk=4且令牌9的part=1,則KES變為(11)2;
當KES=(10)2時,如果Nk>4且令牌9的part=1,或Nk=4且令牌9的part=0,則KES變為(00)2;
MatchingUnit->令牌10
Matcher K對AK暫存單元的密鑰暫存區中的數據進行匹配,匹配條件是所有低段密鑰記錄的op的低位都為0且中間密鑰字1存在,相應的匹配單元輸出step=0;或者存儲地址為4到存儲地址為Nk-1的密鑰記錄的op的低位都為0且中間密鑰字2存在,相應的匹配單元輸出step=1;
當step=0時,令牌10的f等於中間密鑰字1的data,k0,k1,k2,k3依次分別等於存儲地址為0,1,2,3的KR的data,BLOCK等於BLOCKL;當step=1時,令牌10的f等於中間密鑰字2的data,k0,k1,k2,k3依次分別等於存儲地址為4,5,6,7的KR的data,BLOCK等於BLOCKH。
權利要求
1.亂存執行的數據流AES加密電路結構,其特徵在於,該電路結構是在一個數據流加密專用集成電路上實現的,該電路結構遵從以Rijndael算法為最終算法的高級數據加密標準,記為AES,使用數據流模式實現亂序加密,該電路結構含有
a.傳輸通道,是兩個部件間的數據傳輸接口,所傳輸的數據是相應編號的令牌,其中包括一個令牌輸入數據總線、一個數據輸出總線和輸入請求與應答信號、輸出請求與應答信號,該傳輸通道與外部的接口就是通道埠;
b.輸入單元,是晶片內核與外部的接口,實現把明文和密鑰按照協議要求的時序輸入並通過4#傳輸通道將明文送入內核部分、把密鑰寫入初始密鑰存儲器的功能,同時產生該電路結構中內核的各個單元所需的復位信號InterRst_和初始密鑰置入信號load;所述的4#通道傳輸的令牌,命名為令牌4包括一個32位的數據域,一個2位的column域;
c.通道開關單元Switch,是一個2傳輸通道輸入-2傳輸通道輸出的交換開關,此外還接收來自工作狀態寄存器的輸入信號WK,當WK=0時,該通道開關單元處於空閒狀態,接收所述輸入單元經4#通道送來的明文數據,經過解析後,把其中的數據重新打包成狀態字令牌,發送給5#通道,所述的5#通道傳輸的令牌,命名為令牌5包括一個32位的數據域,一個4位的表示輪次的color域和一個2位的地址域,根據令牌4打包時,令牌5的數據域直接複製令牌4的數據域,令牌5的color域設為0,令牌5的地址域複製令牌4的column域;當WK=1時,處於工作狀態,把3#通道發來的令牌解析後,根據不同的類型,把狀態字令牌重新打包成一個令牌發給5#通道,把密鑰字令牌重新打包成一個令牌發送給通道6;所述的3#通道傳輸的令牌,命名為令牌3包括一個1位的屬性域和一個32位的數據域,當屬性域等於0時,是狀態字令牌,還包括一個1位的操作符域、一個2位的column域、一個4位的color域,把它重新打包成令牌5時,其中的數據域直接複製令牌3的數據域,color域直接複製令牌3的color域,地址域直接複製令牌3的column域,當令牌3屬性域等於1時,是密鑰字令牌,還包括一個1位的fadd位和6位不關心的數據,所述發送到6#通道的令牌,命名為令牌6,是下述的中間密鑰字令牌,包括一個32位的數據域和一個1位的地址域,把它打包成令牌6時,令牌3的數據域直接複製到令牌6的數據域,fadd域複製到令牌6的地址域;
d.初始密鑰存儲器是一個256位的寄存器組,從所述輸入單元接收時鐘信號和輸入的密碼密鑰數據,把來自所述輸入單元的密碼密鑰直接接收存入;
e.AK暫存器單元,是待執行AddKey運算的令牌暫存單元,包括密鑰字存儲器、狀態字存儲器以及令牌解析和打包電路,其中,密鑰字存儲器有8個密鑰字存儲單元,2個中間密鑰字存儲單元、兩個5位內部存儲器BLOCKH和BLOCKL及一個2位狀態寄存器KES,該密鑰字存儲區有3位地址,二進位表示的地址空間是000-111,依次存儲序號模密鑰分組列數Nk等於0-7的擴展密鑰字,高段為100-111,低段為000-011,每條存儲記錄包括一個32位的數據域、一個1位的fadd域、一個輪變換標記位和一個擴展標記位;所述密鑰字存儲器中地址等於Nk-1的單元存儲的數據稱為變換密鑰字1,Nk不等於4時地址等於3的記錄數據稱為變換密鑰字2,Nk等於4時的變換密鑰字2是地址等於7的記錄數據;該狀態字存儲區有2位地址,二進位表示的地址空間是00-11,依次存儲狀態中的第0-3列,每條記錄包括一個32位的數據域、一個4位的color域;該中間密鑰字存儲區,有一位地址空間0-1,依次存儲從通道埠6來的中間密鑰字,該中間密鑰字是AES密鑰擴展算法中定義的非線性函數的計算結果,每條存儲記錄包括一個32位的數據域;所述的暫存單元的每個存儲單元都對應一個標記為flag的「滿/空」標記位,當單元寫入時flag置1,表示滿,當數據讀出後flag復位,表示空;該BLOCKH存儲高段密鑰字的「分組值」,BLOCKL存儲低段密鑰字的「分組值」,所述「分組值」是指所有輪擴展密鑰序列按所述Nk個一組分組後,所得到的組的序號,該擴展密鑰由初始密鑰擴展而成,該擴展密鑰的總長為4(Nr+1),Nr為迭代輪數;該AK暫存器單元有三個輸入通道埠通道5埠接收令牌5並寫入狀態字存儲區,寫入的地址是令牌5的地址域的值,狀態字記錄的數據域和color域分別等於令牌5的數據域和color域,通道6埠接收令牌6,寫入中間密鑰字區,寫入地址是令牌6的地址域的值,寫入記錄的數據域直接複製令牌6的數據域,通道9埠接收新的擴展密鑰字令牌並寫入密鑰字存儲區,另外,密鑰字存儲區還有一個置數埠,與所述初始密鑰寄存器的輸出端相連,256位寬,由所述load信號作置位信號;該AK暫存器單元有兩個輸出通道埠;通道7埠發送作AddKey運算或變換密鑰字轉發用的操作數令牌,通道10埠發送密鑰擴展運算用的操作數令牌;
e1.所述的通道9埠傳輸的令牌,命名為令牌9,包括4個32位的數據域k0-k3、一個5位的BLOCK域和一個1位的part域,令牌9part等於0則k0-k3依次寫入密鑰字存儲區地址為000-011的單元,所述地址用二進位表示,令牌9的BLOCK值賦給BLOCKL,同時將所有低段單元的輪變換標記位和擴展標記位復位為0,令牌9part等於1則k0-k3依次寫入密鑰字存儲區二進位表示的地址為100-111的單元,令牌9的BLOCK值賦給BLOCKH,同時將所有高段單元的輪變換標記位和擴展標記位復位為0;
e2.所述通道7埠發送的令牌,命名為令牌7,包括2個32位的數據域data1和data2、一個1位的屬性域,屬性域的值等於發送時下述的AorT信號的取值當AorT等於0時,執行AddKey操作,令牌7是狀態字令牌,它還包括一個4位的color域、一個2位的column域,打包時,把下述的ssel信號的值複製到它的column域、地址等於ssel的狀態字存儲記錄的數據域複製到令牌7的data1域、該狀態記錄的color域複製到令牌7的color域,地址等於下述ksel值的密鑰存儲記錄的數據域複製到令牌7的data2域,通道7埠的應答信號將讀取的狀態字記錄情空,把讀取的密鑰字記錄的輪變換位變成1;當AorT等於1時,執行變換密鑰字轉發操作,令牌7是密鑰令牌,除數據域和屬性域外還包括一個1位的操作符域、一個1位的fadd域與4位不關心的數據,打包時,data1域等於0,地址等於下述ksel值的密鑰存儲記錄的數據域複製到它的data2域;ksel等於Nk-1時,轉發變換密鑰字1,fadd等於0,操作符域等於0,表示此令牌將執行下述f變換,Nk等於4時,若ksel等於7,則表示轉發變換密鑰字2,fadd域等於1,操作符域等於0,表示此令牌將執行下述f變換,若Nk不等於4且ksel等於3,則表示轉發變換密鑰字2,fadd等於1,操作符域等於1,表示此令牌將執行下述g變換;通道7埠的應答信號將讀取的狀態字記錄清空;
e3.所述通道10埠發送的令牌命名為令牌10,包括一個32位的中間密鑰字域、4個32位的密鑰字域k0-k3、一個5位的BLOCK域和一個1位的step域,打包時令牌10的step域等於令牌發送時所述的step信號的值,當令牌發送時刻所述step信號等於0時,令牌10的中間密鑰字域等於中間密鑰字存儲區中地址等於0的記錄的數據,令牌10的BLOCK域的值等於所述BLOCKL寄存器的值,通道10埠的應答信號把密鑰存儲區低段的4個密鑰字的擴展位都置成1,當令牌發送時刻所述step信號等於1時,令牌10的中間密鑰字域等於中間密鑰字存儲區中地址等於1的記錄的數據,令牌10的BLOCK域的值等於所述BLOCKH寄存器的值,通道10埠的應答信號把密鑰存儲區高段的所有密鑰字的擴展位都置成1;
e4.該KES控制密鑰擴展的時序,狀態都採用二進位編碼表示,KES的初始狀態二進位編碼是00,即準備計算f的狀態,在此狀態下執行變換密鑰字1轉發後,KES二進位編碼變為01,進入執行f變換的狀態,在01狀態下讀取低段密鑰進行密鑰擴展時,KES的狀態變化為11,處於準備計算g的狀態,在11的狀態下執行變換密鑰字2操作後,KES的狀態變化為10,進入執行g變換的狀態,在10狀態下讀取高段密鑰進行密鑰擴展時,KES的狀態變化為00;
f.工作狀態寄存器,向所述輸入單元發送WK信號,向所述通道開關單元Switch發送WK信號,接收來自下述Matcher OK單元的OK信號;當OK信號上升時WK復位;
g.Matcher II匹配單元,檢查AK暫存器單元中的狀態字存儲區和密鑰字存儲區,發現就緒的狀態字-密鑰字對或就緒的變換密鑰則隨機選取其中之一,把相應的地址所選擇信號傳送給所述AK暫存器單位,隨後觸發令牌發射信號fetch_II,所述的選擇信號包括標記為了ssel的AddKey狀態字讀地址、標記為ksel的密鑰字讀地址、標記為AorT的表示發送令牌將執行的操作的信號0表示AddKey運算,1表示變換密鑰字轉發,標記為Trans;該Matcher II匹配單元的輸入包括AK暫存器單元的狀態字存儲區和密鑰字存儲區的觀測信號,其中包括狀態字記錄的color位與flag位,密鑰字記錄的輪變換標記位和擴展標記位、flag域,BLOCKL和BLOCKH,KES,另外還有密鑰分組列數Nk;所述的「就緒」是指計算所有被觀測狀態字和密鑰字的序列號,尋找序列號相同且flag都為1的狀態字-密鑰字對,或者根據KES狀態檢測並發現相應的變換密鑰字;所述fetch_II信號到來,則觸發所述AK暫存單元把令牌發送給7#通道;當被發送的狀態字被清空,或者KES狀態改變,則fetch_II復位;
h.Matcher K匹配單元,檢查密鑰字存儲區和中間密鑰字存儲區的觀測信號輪變換標記位和擴展標記位、flag和KES狀態;當KES處於密鑰擴展狀態下,且相應的密鑰欄位和中間密鑰欄位已準備就緒則把標記為step的密鑰擴展讀地址變為相應的值1為高段擴展,0為低段擴展,並觸發令牌發射信號fetch_K,所述的AK暫存器單元根據step信號把密鑰區的相應數據以及BLOCK值打包成令牌等待發送,當fetch_K信號來到時,觸發所述AK暫存單元把該令牌經通道10發出;如果下述的exp_stop信號有效,Matcher K匹配單元則停止工作;
i.密鑰擴展運算單元,用Key Schedule標記,接收並解析來自通道10的令牌,經過下述Key Schedule處理後打包成內含所述新的擴展密鑰的令牌經通道9發出,所述的Key Schedule的處理含有以下運算
i1.把所述令牌10的中間密鑰字域和k0-k3域作為輸入,執行KeySch運算中間密鑰字與k0逐位異或,結果輸出作為令牌9的k0域,並與令牌10的k1逐位異或,結果輸出作為令牌9的k1,並與令牌10的k2逐位異或,結果輸出作為令牌9的k2,並與令牌10的k3逐位異或,結果輸出作為令牌9的k3;
i2.把所述令牌10的BLOCK域加1後的結果作為令牌9的BLOCK值;
i3.當Nk=4時,把所述令牌10的step域的邏輯反作為所述令牌9的part域,如果Nk>4,則把所述令牌10的step域直接複製到所述令牌9的part域;
j.AddKey運算單元,在接收並解析通道7發來的操作數令牌後,對其中的數據執行AddKey運算後,打包成輪密鑰混合令牌,經通道8發送,所述AddKey運算即AES算法定義的輪密鑰加法操作作用於狀態的一列;所述經通道8發送的令牌,命名為令牌8,包括一個32位的數據域和一個1位的屬性域,當屬性域等於0時,是狀態字令牌,還包括一個4位的color域和一個2位的column域,當屬性域等於1時,是密鑰令牌,還包括一個1位的操作數域和一個1位的fadd域,打包時,把令牌7的data1與data2逐位異或的結果作為令牌8的結果,令牌7的其餘域直接複製到令牌8中與之同名的域中;
k.輪更新通道開關單元,對來自通道8的令牌進行輪次檢查,若是狀態字令牌且輪次已經達到迭代輪次Nr,則經通道11轉發到下述輸出暫存單元;否則,把其輪次加1經通道1轉發到下述EU暫存器單元執行後續處理;若到達的令牌輪次為Nr,且上述與其相加的擴展密鑰屬於密鑰分組的高段,即表示密鑰擴展已經完成,則觸發exp_stop信號;若是密鑰字令牌則直接由通道1轉發到下述EU暫存器單元執行後續處理;所述令牌處理包括如下3情況
k1.通道11傳輸的令牌,命名為令牌11,包括一個32位的數據域和一個2位的column域,打包時,令牌8的數據域直接複製到令牌11的數據域,令牌8的column域直接複製到令牌11的column域;
k2.當令牌8的屬性域為0時,所述通道1發送的令牌,命名為令牌1,是狀態字令牌,包括一個32位的數據域、一個4位的color域、一個2位的column域一個1位的操作符域和一個1位的屬性域打包時,令牌8的數據域和column域直接複製到令牌1中同名的域中,令牌8的color域加1後的結果作為令牌1的color域,令牌1的屬性域等於0,若令牌8的color域等於Nr-1,則令牌1的操作符域標記為Srd操作,否則令牌1的操作符域標記位SM操作;
k3.如果令牌8的屬性域等於1,所述通道1發送的令牌1是變換密鑰字令牌,包括一個32位的數據域、一個1位的操作符域、一個1位的fadd域和5位不關心的數據,打包時,令牌8的各域分別直接複製到令牌1中同名的域中;
l.輸出暫存單元,是一個密文重排的暫存單元,由一個4×32比特的存儲單元和令牌解析電路組成,該單元接收通道11來的亂序到達的結果令牌所攜帶的密文數據並暫存,寫入的地址是所述令牌11的column域,寫入的數據是所述令牌11的數據域,在接收到下述接收單元的讀地址信號後輸出對應的密文狀態字;所述的暫存單元的每個存儲單元都對應一個標記為flag的「滿/空」標記位,當單元寫入時flag置1,表示滿,當數據讀出後flag復位,表示空;
m.輸出單元,該單元是所述晶片與外部的接口、實現把密文按要求的時序輸出的功能;
n.Matcher OK匹配單元,檢查所述輸出暫存單元中的所有flag信號,當所有的flag都為1則表示全部密文字都已到達,則把結束信號OK變成高電位,在通知所述工作狀態存儲器的同時也通知所述輸出單元讀取所述輸出暫存單元的密文狀態字,當flag被復位後,OK信號變為低電位;
o.EU暫存器單元,由一個密鑰字存儲區和兩個完全相同的狀態存儲區組成,依次標記為key store、store0和store1;其中,key store存儲密鑰擴展的變換密鑰字,一條存儲記錄包括一個32位的數據域、一個1位的fadd域和一個1位的操作符域,store0/store1依次存儲行移位之前「狀態」中的第0-第3列,每列存儲單元又分為4行,第0行的記錄包括1個8位的數據域、一個4位的color域和一個1位的操作符域,第1行至第3行的記錄包含一個8位的數據域;所述兩個狀態存儲單元按照桌球式讀寫的流水線方式工作根據輸入令牌的輪次標記,當輪次為偶數時寫入store0,store1中的數據必是前一輪的狀態,從store1中讀取數據處理;當令牌的輪次為奇數,則寫入store1,store0必是前一輪狀態的待處理數據,從store0中讀取數據處理;該EU暫存器單元設有一個傳輸通道埠,接收所述輪更新通道開關單元經通道1發出的令牌1,從中解析出令牌類型狀態令牌還是密鑰令牌、寫地址和記錄數據,並把記錄寫入相應的存儲單元中;一個輸出傳輸通道埠,與通道2相連,根據下述Matcher I匹配單元輸入的讀地址、store0/store1選擇信號以及狀態/變換密鑰選擇信號輸出相應的狀態字或變換密鑰字,與其他控制信號一起打包成令牌,經通道2發送給下述EU運算單元;上述3個暫存區的每個存儲單元都對應一個標記為flag的「滿/空」標記位,當單元寫入時flag置1,表示滿,當數據讀出後flag復位,表示空;
o1.所述的令牌解析方法是當所述令牌1的屬性域為0時,是狀態字令牌,寫入地址是令牌1的column域,寫入記錄的第0行的數據域是令牌1數據域的7至0位,第0行的color域是令牌1的color域,第0行的操作符域是令牌1的操作符域,寫入記錄的第1行到第3行的數據分別依次是令牌1數據域的15位至8位、23位至16位和31至24位;當所述令牌1的屬性域為1時,是密鑰令牌,令牌1的數據域複製到所述變換密鑰字存儲記錄的數據域,令牌1的fadd域和操作符域直接複製到所述變換密鑰字存儲記錄的同名域中;
o2.所述的經通道2發送的令牌被命名為令牌2,它的打包方法是當所述的狀態/變換密鑰選擇信號等於0時,令牌2是狀態字令牌,屬性域等於0,數據域的7到0位是地址等於所述的Matcher I匹配單元輸入的讀地址的第0行記錄的數據域,數據域的15到8位是經過AES算法定義的行移位運算後的地址等於所述讀地址的第1行記錄的數據域,數據域的23到16位是經過AES算法定義的行移位運算後的地址等於所述讀地址的第2行記錄的數據域,數據域的31到24位是經過AES算法定義的行移位運算後的地址等於所述讀地址的第3行記錄的數據域,令牌2的color域和操作符域分別是地址等於所述讀地址的第0行記錄的color域和操作符域,令牌2的column域是所述讀地址的值;當所述的狀態/變換密鑰選擇信號等於0時,令牌2是密鑰自令牌,屬性域等於1,數據域是變換密鑰存儲記錄的數據域,fadd域和操作符域分別是變換密鑰存儲記錄的fadd域和操作符域;
p.Matcher I匹配單元,檢查key store和store0/store1中的令牌信息,在考慮行移位變換之後發現就緒的狀態字或者發現變換密鑰則隨機選取一個,把地址信息送給所述EU暫存器單元,並通過fetch_I信號觸發通道2埠的觸發信號,把所述EU暫存單元的令牌2發送給所述EU運算單元;所述Matcher I匹配單元的輸入包括來自所述EU暫存器單元的觀測埠的信號,通道2埠的應答信號以及所述控制選擇的隨機信號;同時,向EU暫存器單元輸出所述fetch_I令牌發送信號;
q.全局存儲器,存儲密鑰分組列數Nk,迭代輪數Nr,其中,向EU暫存器、下述EU運算單元、Matcher II兩個單元和密鑰擴展運算單元輸出Nk,向輪更新通道開關單元輸出Nr,
r.EU運算單元,接收來自通道2的令牌2,解析後根據令牌2的屬性域和操作符域以及所述密鑰分組列數Nk對數據域執行相應的計算,操作結果打包到令牌3的數據域中通過通道3發送;其中,所述令牌3除數據域外,還有一個1位的屬性域,其值等於所述令牌2的屬性域值當屬性域等於0時,是狀態字令牌,還有一個4位的color域和一個2位的column域;當屬性域等於1時,是密鑰字令牌,還有一個1位的fadd域,還有5位不關心的數據,打包時,令牌2的fadd域直接複製到令牌3的fadd域中;所述對於令牌數據域的計算包括
r1.Srd操作,當令牌2的屬性域等於0且操作符域為所述的Srd標記時或當令牌2的屬性域等於1且操作符域為1且所述密鑰分組列數Nk大於6時執行,即對數據域的每個字節執行AES算法定義的Srd查表操作;所述令牌2屬性域等於1且操作符域為1時的操作即是上述的g變換在Nk大於6時的操作;
r2.Srd-MixCol操作,當令牌2的屬性域等於0且操作符域為所述的SM標記時執行,即先對數據域的每個字節執行AES算法定義的Srd查表操作,再對4個字節的結果向量左乘一個4×4的常數矩陣,其中所述的常數矩陣為AES算法中定義的列混合操作對應的常數矩陣;
r3.Srd-循環移位-輪常量相加計算,是上述的f變換當令牌2的屬性域等於1且所述密鑰令牌的操作符域為0時執行,即先對數據域的每個字節執行AES算法定義的Srd查表操作,再將4個字節的結果循環左移8位,最後,所得結果的低8位與一個8位的輪常量RC逐位異或;所述輪常量初值為0,每執行一次輪常量加法運算後,其值乘以2,所述乘2操作是定義在GF(28)域上的;
r4.直接專發操作,當令牌2的屬性域等於1且所述狀態令牌的操作符域為1且Nk小於等於6時執行,即令牌2的數據域直接複製到所述令牌3的數據域;所述令牌2屬性域等於1且操作符域為1時的操作即是上述的g變換在Nk下與等於6時的操作;
s.Matcher II隨機控制碼產生電路,隨機產生控制所述Matcher II匹配單元中仲裁電路的3位隨機選擇碼,每次fetch_II下降時產生一個新的隨機控制碼;
t.Matcher I隨機控制碼產生電路,隨機產生控制所述Matcher I匹配單元中仲裁電路的3位隨機選擇碼,每次fetch_I下降時產生一個新的隨機控制碼;
u.2.上述的Matcher II單元與AK暫存單元構成了AddKey運算單元的令牌暫存-匹配-發射結構,簡稱為HMF結構,Matcher I單元與EU暫存單元構成了EU運算單元的HMF結構,Matcher K與AK暫存單元的密鑰存儲區構成了KeySchedule單元的HMF結構,Matcher OK與輸出暫存單元構成了輸出的HMF結構;所述HMF結構具有如下特徵
u1.包含一個令牌暫存單元,由寄存器堆實現,寫埠採用異步握手協議;寫地址和寫入數據由輸入令牌解析得出,寫入時鐘由輸入通道埠的請求信號觸發;讀埠的地址由下述匹配單元輸出的選擇信號決定,輸出數據隨讀地址即時變化;內部存儲單元對應有表示記錄是否存在的「滿/空」標誌位,所有單元的滿空標誌位和記錄與下述匹配條件相關的域的數據組成觀測信號,可被下述匹配單元讀取;所述輸出數據可被下述令牌打包邏輯讀取;所述滿空標誌位由一個C單元產生,該C單元的一端接對應記錄的寫入時鐘,另一輸入端接記錄的清空信號信號的反信號;所述各個記錄的寫入時鐘由寫埠的接收應答信號經過寫地址選擇產生,所述各個記錄的清空信號由所述讀埠的應答信號經讀地址選擇產生;
u2.包含一個匹配單元,由匹配邏輯和選擇邏輯電路兩部分組成,暫存單元各個記錄的觀測信號輸入匹配邏輯電路中按照匹配條件對應的布爾表達式算出各自的匹配結果值,匹配成功則值為1,否則等於0;每個匹配結果信號通過一級C單元輸出到所述選擇邏輯的輸入端成為請求信號,所述C單元的另一輸入端與所有請求信號的或信號相連,只有請求信號全為0時等於1的匹配結果才能傳遞到選擇邏輯電路,當請求信號中存在有效請求,即為1的請求信號,在它之後產生的成立的匹配結果就無法通過C單元;請求對應的令牌被發送後,請求復位,C單元對成立的匹配結果導通;所述Matcher I和Matcher II單元的選擇邏輯是一個仲裁邏輯電路,對每個被檢測的令牌組的請求信號進行隨機選擇,輸出的是選中請求的序號,並由此產生令牌暫存器的讀地址;所述的Matcher K單元的選擇電路是計算匹配成功的請求對應的所述step信號;所述Matcher OK沒有選擇電路;匹配單元的選擇電路輸出的請求序號通過鎖存器輸出成為令牌的選擇信號;根據所述選擇信號的選擇選擇對應的所述的請求信號成為令牌發射觸發信號,如所述的fetch_II、fetch_I、fetch_K信號;
u3.令牌發射觸發信號經過長度等於選擇電路輸出穩定所需的最長時間的延時後觸發所述選擇信號的鎖存器的控制端將鎖存器鎖存,同時觸發發送令牌的請求信號;所述暫存單元的復位應答信號將所述選擇信號的鎖存器的控制端復位,使鎖存器導通,選擇信號重新隨所述匹配單元的選擇邏輯電路輸出變化;
在上述各單元中,
所有傳輸通道都採用異步握手協議;
所有運算單元的數據處理和令牌打包由組合邏輯電路實現;
所述通道開關單元Switch,初始密鑰寄存器、AK暫存器單元、Matcher K匹配單元、密鑰擴展運算單元共同構成了密鑰擴展環,而通道開關單元Switch、Matcher II匹配單元、AddKey運算單元、輪更新通道開關單元、EU暫存器單元,Matcher I匹配單元、EU運算單元構成輪變換環,環內用傳輸通道相連,環間用開關單元Switch相連。
全文摘要
亂序執行的數據流Rijindael加密電路結構屬於密碼集成電路,抗差分功耗分析攻擊的領域,其特徵在於該電路結構集成在一個晶片上共包含輸入部分;輸出部分;完成密鑰擴展和密鑰擴展環,其中包括通道開關單元switch,初始密鑰寄存器、密鑰擴展運算單元AK暫存器單元及匹配檢查單元;完成對輪密鑰作變換的輪變換環,包括輪更新通道開關單元,AddKey運算單元、EU運算單元、AK暫存器單元及相應的檢查單元,對輪密鑰進行與狀態信息的逐位混合運算、行移位運算、列混合變換運算以及輪迭代運算,以得到密文後通過輸出部分輸出。仿真實際表明本發明使得其功耗差分比現有數降低了66%,提高了攻擊的難度。
文檔編號H04L9/06GK1761185SQ200510086919
公開日2006年4月19日 申請日期2005年11月18日 優先權日2005年11月18日
發明者孫義和, 李翔宇 申請人:清華大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀