專利名稱:亂序執(zhí)行的數(shù)據(jù)流aes加密電路結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明用于解決密碼集成電路抗差分功耗分析攻擊的問題
背景技術(shù):
隨著智能卡、付費電視卡等密鑰存儲數(shù)據(jù)安全集成電路的廣泛應(yīng)用,功耗分析攻擊,特別是差分功耗攻擊(DPA)開始出現(xiàn),并迅速成為數(shù)據(jù)存儲密碼芯片的重要威脅。功耗分析攻擊是通過采集芯片處理數(shù)據(jù)工程中的電源電流變化,并從中獲得數(shù)據(jù)信息的面向硬件的攻擊手段。其中應(yīng)用最普遍地差分功耗分析攻擊是采集多條芯片的工作電流數(shù)據(jù),通過對各個時刻的功耗樣本值進行統(tǒng)計檢驗的辦法提前部分密鑰的。使得電路各個操作的執(zhí)行時刻具有隨機性是對抗差分功耗分析的重要途徑之一?,F(xiàn)有的時序隨機性方法又分為隨機延時插入和亂序執(zhí)行兩種。前者運算執(zhí)行的順序固定,但是在各不執(zhí)行之間會隨機的插入一些延時,造成運算執(zhí)行時刻的不確定性;后者則是將執(zhí)行先后順序無關(guān)的一些運算以隨機的順序執(zhí)行,相對于前者具有更高的安全性。目前公布的亂序執(zhí)行技術(shù)有隨機寄存器重命名技術(shù)——參見May,D.,H.L.Muller等的論文“Random register renaming to foil DPA,Paris,F(xiàn)rance,Springer-Verlag.”(《隨機化寄存器重命名以抵擋差分功耗攻擊》)。還有論文“Irwin,J.,D.Page,等2002年發(fā)表的論文“Instruction stream mutation for non-deterministic processors,San Jose,CA,USA,IEEE Comput.Soc.”(《不確定性處理器的指令流變異》)介紹了一種“不確定處理器”技術(shù)。這兩個技術(shù)都是應(yīng)用于密碼專用處理器或?qū)崿F(xiàn)密碼算法的通用處理器?!半S機寄存器重命名技術(shù)”只在寄存器重命名環(huán)節(jié)上引入了隨機選擇;不確定性處理器則是挖掘程序內(nèi)部的指令級并行性,將可并行執(zhí)行的指令隨機的串行執(zhí)行。前者只在局部引入不確定性,后者的不確定性則局限于相鄰的指令之間,且受原程序描述的限制。本發(fā)明的數(shù)據(jù)流亂序執(zhí)行技術(shù)則應(yīng)用于專用集成電路密碼芯片。數(shù)據(jù)流模式是一種根據(jù)數(shù)據(jù)依賴關(guān)系執(zhí)行運算的操作,它不附加任何其它執(zhí)行順序的限制,因此能夠挖掘算法本身的最大并行性,從而具有更大的執(zhí)行順序的可變空間。且由于數(shù)據(jù)流模式采用分布控制,因此內(nèi)部的總線分散,總線負載電容小,根據(jù)功耗差分的公式ΔP=(α1-α2)CV2,功耗差分的大小與負載電容成正比,因此小的負載電容有利于降低功耗差分。下面對數(shù)據(jù)流及亂序執(zhí)行抗差分功耗攻擊的基本原理
1.亂序執(zhí)行對抗差分功耗攻擊
集成電路的處理數(shù)據(jù)時的功耗與被處理的數(shù)據(jù)相關(guān),當數(shù)據(jù)中某位b取0和1時,對應(yīng)的功耗具有不同的條件分布,分別用隨機過程P0(t)和P1(t)表示,其中t表示時間。DPA檢驗計算b時刻的兩個功耗的均值差根據(jù)DPA理論,如果設(shè)被測功耗中含有噪聲σ,則所需的樣本數(shù)N應(yīng)滿足
對于亂序執(zhí)行的集成電路,計算b的操作有可能在多個時刻隨機出現(xiàn)?,F(xiàn)假設(shè)該操作在時刻t執(zhí)行的概率為pb,則t時刻的功耗均值其中,
是t時刻執(zhí)行的其它操作的平均功耗,假設(shè)與b的取值無關(guān)。由此公式求得的新的功耗差分
所以,功耗差分變成了原來的pb倍,相應(yīng)地,樣本數(shù)就提高到原來的
倍。因此
亂序執(zhí)行可以提高DPA攻擊的成本,且不確定度越高,即pb越小所需樣本數(shù)越大。
2.數(shù)據(jù)流工作模式
首先介紹數(shù)據(jù)依賴關(guān)系的概念。對于一個算法,存在一系列操作,假設(shè)操作A的輸出是操作B的輸入,則B與A就存在數(shù)據(jù)依賴關(guān)系,B必須在A執(zhí)行后才能執(zhí)行。
數(shù)據(jù)流模式就是一種沒有控制流,除了數(shù)據(jù)依賴關(guān)系之外沒有其它執(zhí)行順序限制的計算模式。它將被處歷的操作數(shù)據(jù)封裝成令牌,一個令牌是按照某個規(guī)定格式的定長二進制串,每一位有固定的含義。例如,如下一個令牌就包含了數(shù)據(jù)域、源地址、目標地址3個域,它們在令牌中的位置是約定的低32位是數(shù)據(jù)域;第37位到第35位和第34位到第32位分別是3位的目標地址和源地址。
3735 34 32 310
數(shù)據(jù)流電路實現(xiàn)算法的各個操作,以及操作之間的令牌傳遞。對于一個操作,當它的所有輸入令牌都到達(即該操作所依賴的運算都已經(jīng)執(zhí)行)則可以被“激活”——開始處理數(shù)據(jù),并將產(chǎn)生的結(jié)果打包成新的令牌,傳給它的后繼操作。各操作之間的控制信息也通過靈牌傳達——例如例子中的數(shù)據(jù)地址就指示了數(shù)據(jù)的來源和處理后應(yīng)該發(fā)送的目的地;一些控制信號、選擇信號也被封裝成令牌(控制令牌),作為一個操作數(shù)傳遞給被控制的運算。
因此,數(shù)據(jù)流電路沒有一個中央控制電路,各個子系統(tǒng)是相對獨立的,所以數(shù)據(jù)交換也具有局域性,所以數(shù)據(jù)總線和存儲單元也是分布式的。數(shù)據(jù)運算的觸發(fā)是以操作數(shù)令牌是否全部到達為條件的,因此是數(shù)據(jù)驅(qū)動的,異步工作。且沒有數(shù)據(jù)依賴關(guān)系的操作只要運算條件滿足就可以執(zhí)行,彼此沒有影響,所以能夠充分發(fā)揮算法自身的并行性。
基于數(shù)據(jù)流計算的以上特征,可將其特點概括如下
并行性、函數(shù)性(即每個操作相對獨立,且無關(guān)操作可以按任意順序執(zhí)行。)、分布性、異步性。
3.異步電路和異步通道
一個異步電路系統(tǒng),各部分電路之間通過異步的通訊接口連接,稱為異步傳輸通道。
傳輸通道與外部的接口稱為通道端口,其是對一組信號的抽象包括一組數(shù)據(jù)總線和請求、應(yīng)答信號。一個異步傳輸通道包括數(shù)據(jù)鎖存器和鎖存器的控制端電路。結(jié)構(gòu)如圖1其工作方式是一種稱為“握手協(xié)議”的通信協(xié)議
“異步集成電路沒有時鐘,這就需要一種相應(yīng)的方式來控制時序,這種控制時序的方式叫做握手協(xié)議。絕大部分異步集成電路使用的握手協(xié)議包含兩種控制信號請求(request)信號和應(yīng)答(acknowledge)信號。請求信號啟動一個工作,應(yīng)答信號表示工作完成。這兩個信號可以完成系統(tǒng)中所有運算的時序控制。
用電路實現(xiàn)握手信號,需要把交替出現(xiàn)的請求和應(yīng)答信號編碼成控制線上的電平或電平變化,下面以常用的一種4相位握手協(xié)議為例(見圖2)。
請求信號的上升沿通知接收方有數(shù)據(jù)到達,接收方準備好接受數(shù)據(jù)后升高應(yīng)答信號,表示準備就緒,同時開始讀取數(shù)據(jù),請求信號又被應(yīng)答信號復位,請求信號的下降沿再把應(yīng)答信號復位,準備接受下一個數(shù)據(jù)。其中傳輸通道上的數(shù)據(jù)存儲在一個鎖存器中。(鎖存器有一個控制端,當控制端為低電平時輸出隨輸入變化,當控制端為高時輸出端的數(shù)據(jù)保持不變。)在4相位握手的異步傳輸通道中,鎖存器的控制端與應(yīng)答信號相連,即當應(yīng)答信號升高后將發(fā)送方的數(shù)據(jù)鎖存入鎖存器,待一次通信過程結(jié)束后才可以接受輸入端的數(shù)據(jù)。
在異步電路中經(jīng)常用到一種稱為C單元的時序控制電路,此種電路有2個輸入一個輸出,一般還有一個復位端,當兩個輸入全為1時,輸出為1;當兩個輸入全為0時輸出0;當兩個輸入不同時,輸出保持原來的狀態(tài)。可以由C單元實現(xiàn)4相位握手協(xié)議的異步傳輸通道,如圖3所示
4.數(shù)據(jù)流與密碼芯片的抗DPA安全性
數(shù)據(jù)流方式不顯式定義執(zhí)行順序,因此,執(zhí)行順序具有最大的靈活性。函數(shù)性使得亂序執(zhí)行更加方便。分布性降低了總線的負載,減小了功耗特征。異步性使得數(shù)據(jù)流方式更易于以異步電路實現(xiàn),而在Simon Moore 1999年的論文“Balanced Self-CheckingAsynchronous Logic for Smart Card Applications”(《用于智能卡的平衡自檢查異步邏輯》)中闡述了異步電路在實現(xiàn)密碼芯片方面具有優(yōu)勢。因此本發(fā)明利用數(shù)據(jù)流的上述特點,實現(xiàn)了一個數(shù)據(jù)流的AES集成電路實現(xiàn)方案。
5.數(shù)據(jù)流AES的基本工作原理
(1)Rijndael算法和AES加密標準
Rindael是一種對稱的分組密碼算法,AES,即高級加密標準,是美國國家標準與技術(shù)研究所(NIST)制定的新的高級數(shù)據(jù)加密標準(Advanced Encryption Standard)規(guī)范,此標準于1997年開始公開征集以取代DES,在2002年最終確定為采用128位明文分組長度的Rijndael算法,密鑰長度支持128位、192位和256位三種。本發(fā)明可以實現(xiàn)3種密鑰長度的AES加密算法。
i.AES算法設(shè)計原理
AES算法是以Rijndael算法為核心制定的,但是,Rijndael算法的一些特征沒有被接納為AES標準,Rijndael算法支持128位到256位之間任意32位跨度的分組長度,但AES標準僅支持128位的明文長度,128、192或256位的密鑰長度。
AES算法的運算是定義在有限域GF(28)上的。所謂的GF(28),是指由一組從(00)16到(FF)16的256個值組成,并定義了加法和乘法的數(shù)域。GF(28)加法就是異或(XOR)操作。GF(28)的乘法可以按下面方法計算首先,任何值乘0x01等于其自身;對于乘0x02,則當被乘的值小于0x80時,結(jié)果是該值左移1位,否則結(jié)果就是先左移1位,再與0x1b異或的結(jié)果。它防止了“域溢出”并保持乘法的乘積在范圍以內(nèi)。與(03)16相乘,可以將(03)16分解為2的冪之和,即b×(03)16=b×((02)16+(01)16)=(b×(02)16)+(b×(01)16)。
ii.加密流程
本節(jié)將以Rijndael標準進行介紹,Rindael算法的數(shù)據(jù)處理單元為字節(jié),一個明文分組信息被分為4×Nb個字節(jié),Nb=4,5,6,7,8,它們按順序被放入一個4×Nb的矩陣中,這個矩陣被稱為“狀態(tài)(State)”。狀態(tài)的一列稱為一個“狀態(tài)字”。密碼密鑰也以4個字節(jié)為一列,每列叫做一個“密鑰字”,密碼密鑰的列數(shù)用Nk表示。
Rijndael所有的變換都是基于狀態(tài)的變換。Rijndael變換是通過輪函數(shù)的多次迭代實現(xiàn)的,根據(jù)密鑰長度的不同,迭代次數(shù)也不同。迭代輪次用Nr表示,它的取值與Nb和Nk有關(guān),具體情況見表1。
加密算法的流程可用圖4表示
其中,虛線框內(nèi)的操作組成一個輪變換函數(shù),
表1 不同Nb和Nk的迭代輪數(shù)Nr
下面來解釋圖中各模塊的意義
iii.輪密鑰混合-AddKey
對應(yīng)圖中的“+”操作,它是輪密鑰的混合運算就是將輪密鑰與當前的狀態(tài)進行對應(yīng)字節(jié)的異或(XOR),實現(xiàn)密碼與密鑰的混合。輪密鑰由原始密鑰通過一定的規(guī)則擴展而成,產(chǎn)生的輪密鑰總長為Nb(Nr+1)個字,在每一輪的密鑰混合變換中,都要從輪密鑰Nb(Nr+1)中按順序依次取出Nb個字與狀態(tài)的各字節(jié)異或。
iv.字節(jié)代換運算-Srd
字節(jié)代換運算是一個可逆的非線性字節(jié)代換操作,這種變換要對分組中的每個字節(jié)進行,對字節(jié)的操作遵循一個代換表,即S盒。對于一個字節(jié),取其前4位作為x座標,后4位作為y座標,即可在S盒中查找到一個對應(yīng)項來替換原來的數(shù)據(jù)。這就是Srd( )所完成的功能。S盒的內(nèi)容如下所示
v.行位移變換-ShiftRow
行變換在狀態(tài)的每行間進行,是將每一行進行循環(huán)移位。移動位數(shù)以字節(jié)為單位,循環(huán)左移,移動的字節(jié)數(shù)根據(jù)行數(shù)來確定。不同Nb情況下各行的位移量見表2,表中第0行至第3行的位移量依次用C0,C1,C2,C3表示。圖5給出了Nb=4的ShiftRow作用效果。
表2 ShiftRow位移量表
vi.列混合變換-MixCol
列混合用狀態(tài)字節(jié)列的值進行數(shù)學域加和域乘的結(jié)果代替每個字節(jié)。對于狀態(tài)中的一列,a0,a1,a2,a3依次是第0行到第3行的字節(jié),所得的結(jié)果的4個字節(jié)依次是b0,b1,b2,b3,變換關(guān)系用矩陣運算的形式表示如式B-1所示。結(jié)果列代替對應(yīng)的輸入列。
需要申明的是,此矩陣運算中的加法和乘法都為有限域GF(28)中的加法和乘法。
vii.密鑰擴展-KeyExpansion
密鑰擴展是將初始的密碼密鑰擴展為輪密鑰的過程。擴展密鑰按擴展順序排列,Rijndael算法每輪需要4行Nb列字節(jié),每列4個字節(jié)稱為一個密鑰字或擴展密鑰字,第i輪的輪密鑰由擴展密鑰序列的第Nbgi列到第Nbg(i+1)-1列給出,擴展密鑰的總數(shù)為Nb(Nr+1)個字。
密鑰擴展函數(shù)依賴于Nk的值擴展密鑰序列的前Nk列是密碼密鑰(或稱初始密鑰),后面的各列由先前的各列按遞歸方式確定。遞歸函數(shù)依賴與列的位置,如果i不是Nk的倍數(shù),則第i列是第i-Nk列與第i-1列的逐位異或;否則,第i列是第i-Nk列與第i-1列的一個非線性函數(shù)的逐位異或。這個非線性函數(shù)可以通過以下方式來實現(xiàn)將Srd作用在列的4個字節(jié),附加一個列內(nèi)字節(jié)的循環(huán)移位,增加一個輪常量。這個輪常量獨立于Nk,而且被GF(28)中的一個遞歸規(guī)則所定義
RC[1]=x0(即01)
RC[2]=x(即02)
RC[j]=x·RC[j-1]=xj-1,j>2
這里的乘2運算也是有限域GF(28)內(nèi)的運算。
對于密碼密鑰長度之Nk>6,當i mod Nk=4時,第i列也是第i-Nk列與第i-1列的一個非線性函數(shù)的逐位異或,這個非線性函數(shù)是將Srd作用在列的4個字節(jié)上。
為了敘述方便,在文中將j mod Nk=0時所執(zhí)行的非線性變換用字母f表示;將Nk>6且j mod Nk=4時的非線性變換用字母g表示。
對于AES標準而言,上述Nb=4。
(2)令牌的暫存-匹配-發(fā)射(HMF)
數(shù)據(jù)流計算的內(nèi)容就是對于令牌的處理,具體的包括令牌的創(chuàng)建(發(fā)射)、解析、處理,以及令牌的暫存和各個令牌的匹配。對于多個操作數(shù)的操作,各個操作數(shù)的令牌往往不是同時到達,因此需要一個暫存單元把到達的令牌暫存起來,然后對所有已到達的令牌進行“匹配”,當發(fā)現(xiàn)一對(或多個)就緒的操作數(shù)令牌就打包成新的令牌發(fā)射到處理單元。
本發(fā)明采用了一種新的電路實現(xiàn)令牌匹配,稱為令牌暫存-匹配-發(fā)射結(jié)構(gòu),用HMF表示。所述的亂序執(zhí)行控制即在HMF結(jié)構(gòu)中實現(xiàn),當暫存單元中同時有多個或多組匹配成功的令牌時,電路從中隨機選取一個發(fā)送,如果只有一個或一組令牌匹配成功則發(fā)送匹配成功的令牌。
在本發(fā)明中的每個運算單元和結(jié)果輸出都有各自的一個暫存-匹配-發(fā)射結(jié)構(gòu)。
(3)一種特殊的密鑰擴展結(jié)構(gòu)
如果把附錄A中所述的輪密鑰序列每Nk個字(即一列輪密鑰,一個字有4個字節(jié))分為一組,稱為“密鑰分組”,則各密鑰分組間的計算關(guān)系可用圖6表示,圖中的“+”是逐位異或運算,kij,i=0,1,…,
j=0,1,…,Nk-1表示第i個密鑰分組的第j列密鑰字,f和g是密鑰擴展中的非線性變換(見附錄A)。為了敘述方便,本文把擴展密鑰的中間結(jié)果f和g命名為中間密鑰字。如圖6所示,每個密鑰分組可以分為兩部分序號在前的4個密鑰字為低段(圖中右側(cè)部分),其余的(Nk-4)個密鑰字屬于高段(圖中左側(cè)部分),當Nk=4時,每個密鑰分組只有低段部分的計算。由此,密鑰擴展可用圖7所示的運算結(jié)構(gòu)迭代實現(xiàn)。此結(jié)構(gòu)中包含連續(xù)異或運算與非線性變換f和g,我們將5輸入-4輸出的連續(xù)異或運算用圖8所示的電路實現(xiàn),并命名為KeySch運算,其中k3,k2,k1,k0和f是輸入密鑰字,y3,y2,y1,y0是輸出密鑰字。
Nk不同取值時的密鑰擴展的具體實現(xiàn)算法如圖9所示,其中標有*的運算是每次迭代執(zhí)行的第一個運算。Nk>4時,低段KeySch計算的結(jié)果作為新分組的低段,高段KeySch計算的結(jié)果作為新分組的高段;Nk=4時,低段KeySch計算的結(jié)果作為新分組的高段,高段KeySch計算的結(jié)果作為新分組的低段。Nk=6時,k3的結(jié)果直接參與KeySch運算,沒有經(jīng)過g變換,但是為了統(tǒng)一表示,我們也用g來表示,在單獨表示直接復制的運算時,用“pass”表示。
為了敘述方便,本文中命名產(chǎn)生中間密鑰字的擴展密鑰為變換密鑰字,分別稱產(chǎn)生f和g的變換密鑰字為變換密鑰字1和變換密鑰字2。
(4)輪函數(shù)部分
本發(fā)明中將密鑰擴展的非線性變換也放在輪函數(shù)執(zhí)行單元中執(zhí)行,共享Srd運算單元。根據(jù)亂序執(zhí)行的需要,發(fā)明中以狀態(tài)的一列(稱為狀態(tài)字)和輪密鑰的一列(稱為密鑰字)作為基本操作數(shù),即每個令牌的數(shù)據(jù)域都是由狀態(tài)字或密鑰字組成的,將這兩類令牌分別稱為狀態(tài)令牌和密鑰令牌。
上述密鑰擴展方法的令牌處理流程如圖10a所示。初始密鑰保存到緩存單元后,首先進行檢查,如果發(fā)現(xiàn)變換密鑰字則將其轉(zhuǎn)發(fā)到“輪變換環(huán)”中,經(jīng)過相應(yīng)的非線性變換,f或g,結(jié)果寫入到密鑰暫存器中的中間密鑰字單元。另一方面,密鑰變換環(huán)中對密鑰緩存器中的令牌反復檢驗,發(fā)現(xiàn)待執(zhí)行KeySch運算的令牌組即對它們執(zhí)行KeySch操作,結(jié)果寫回密鑰緩存單元相應(yīng)的地址。如果發(fā)現(xiàn)密鑰擴展已經(jīng)完成則停止,其中的停機條件是輪變換環(huán)的令牌輪次達到了最后一輪。
狀態(tài)令牌的處理流程如圖10b所示。一列狀態(tài)的令牌首先與對應(yīng)的輪密鑰列執(zhí)行AddKey運算,隨后檢驗結(jié)果令牌的輪次,如果輪次等于Nr,則將令牌數(shù)據(jù)緩存在輸出緩存單元中,當輸出緩存單元寫滿后則將密文輸出,運送結(jié)束;如果輪次小于Nr,則檢查完成AddKey運算的令牌能否組成執(zhí)行MixCol運算的新令牌(由AES算法知,一列狀態(tài)的MixCol運算依賴于4列的AddKey結(jié)果。),如果匹配成功則把相關(guān)的4個狀態(tài)字節(jié)重新打包成一個新的狀態(tài)字令牌,依次執(zhí)行Srd和MixCol運算。這4個狀態(tài)字的地址是按照它們經(jīng)過ShiffRow之后在同一列的關(guān)系逆推而得。所以被發(fā)送的令牌是ShiftRow后的結(jié)果。對于最后一輪的令牌則只執(zhí)行Srd運算。輪變換執(zhí)行后的結(jié)果狀態(tài)被返回到狀態(tài)令牌暫存單元,開始執(zhí)行新的一輪計算。
發(fā)明內(nèi)容
本發(fā)明是一個具有亂序執(zhí)行特點,能夠抵抗差分功耗分析攻擊的數(shù)據(jù)流模式AES加密集成電路結(jié)構(gòu)。這一結(jié)構(gòu)一次處理一個數(shù)據(jù)分組,待前一個分組處理完畢,才可以處理下一個分組。其主要特征在于
1.亂存執(zhí)行的數(shù)據(jù)流AES加密電路結(jié)構(gòu),其特征在于,該電路結(jié)構(gòu)是在一個數(shù)據(jù)流加密專用集成電路上實現(xiàn)的,該電路結(jié)構(gòu)遵從以Rijndael算法為最終算法的高級數(shù)據(jù)加密標準,記為AES,使用數(shù)據(jù)流模式實現(xiàn)亂序加密,該電路結(jié)構(gòu)含有
a.傳輸通道,是兩個部件間的數(shù)據(jù)傳輸接口,所傳輸?shù)臄?shù)據(jù)是相應(yīng)編號的令牌,其中包括一個令牌輸入數(shù)據(jù)總線、一個數(shù)據(jù)輸出總線和輸入請求與應(yīng)答信號、輸出請求與應(yīng)答信號,該傳輸通道與外部的接口就是通道端口;
b.輸入單元,是芯片內(nèi)核與外部的接口,實現(xiàn)把明文和密鑰按照協(xié)議要求的時序輸入并通過4#傳輸通道將明文送入內(nèi)核部分、把密鑰寫入初始密鑰存儲器的功能,同時產(chǎn)生該電路結(jié)構(gòu)中內(nèi)核的各個單元所需的復位信號InterRst和初始密鑰置入信號load;所述的4#通道傳輸?shù)牧钆?,命名為令?包括一個32位的數(shù)據(jù)域,一個2位的column域;
c.通道開關(guān)單元Switch,是一個2傳輸通道輸入-2傳輸通道輸出的交換開關(guān),此外還接收來自工作狀態(tài)寄存器的輸入信號WK,當WK=0時,該通道開關(guān)單元處于空閑狀態(tài),接收所述輸入單元經(jīng)4#通道送來的明文數(shù)據(jù),經(jīng)過解析后,把其中的數(shù)據(jù)重新打包成狀態(tài)字令牌,發(fā)送給5#通道,所述的5#通道傳輸?shù)牧钆?,命名為令?包括一個32位的數(shù)據(jù)域,一個4位的表示輪次的color域和一個2位的地址域,根據(jù)令牌4打包時,令牌5的數(shù)據(jù)域直接復制令牌4的數(shù)據(jù)域,令牌5的color域設(shè)為0,令牌5的地址域復制令牌4的column域;當WK=1時,處于工作狀態(tài),把3#通道發(fā)來的令牌解析后,根據(jù)不同的類型,把狀態(tài)字令牌重新打包成一個令牌發(fā)給5#通道,把密鑰字令牌重新打包成一個令牌發(fā)送給通道6;所述的3#通道傳輸?shù)牧钆?,命名為令?包括一個1位的屬性域和一個32位的數(shù)據(jù)域,當屬性域等于0時,是狀態(tài)字令牌,還包括一個1位的操作符域、一個2位的column域、一個4位的color域,把它重新打包成令牌5時,其中的數(shù)據(jù)域直接復制令牌3的數(shù)據(jù)域,color域直接復制令牌3的color域,地址域直接復制令牌3的column域,當令牌3屬性域等于1時,是密鑰字令牌,還包括一個1位的fadd位和6位不關(guān)心的數(shù)據(jù),所述發(fā)送到6#通道的令牌,命名為令牌6,是下述的中間密鑰字令牌,包括一個32位的數(shù)據(jù)域和一個1位的地址域,把它打包成令牌6時,令牌3的數(shù)據(jù)域直接復制到令牌6的數(shù)據(jù)域,fadd域復制到令牌6的地址域;
d.初始密鑰存儲器是一個256位的寄存器組,從所述輸入單元接收時鐘信號和輸入的密碼密鑰數(shù)據(jù),把來自所述輸入單元的密碼密鑰直接接收存入;
e.AK暫存器單元,是待執(zhí)行AddKey運算的令牌暫存單元,包括密鑰字存儲器、狀態(tài)字存儲器以及令牌解析和打包電路,其中,密鑰字存儲器有8個密鑰字存儲單元,2個中間密鑰字存儲單元、兩個5位內(nèi)部存儲器BLOCKH和BLOCKL及一個2位狀態(tài)寄存器KES,該密鑰字存儲區(qū)有3位地址,二進制表示的地址空間是000-111,依次存儲序號模密鑰分組列數(shù)Nk等于0-7的擴展密鑰字,高段為100-111,低段為000-011,每條存儲記錄包括一個32位的數(shù)據(jù)域、一個1位的fadd域、一個輪變換標記位和一個擴展標記位;所述密鑰字存儲器中地址等于Nk-1的單元存儲的數(shù)據(jù)稱為變換密鑰字1,Nk不等于4時地址等于3的記錄數(shù)據(jù)稱為變換密鑰字2,Nk等于4時的變換密鑰字2是地址等于7的記錄數(shù)據(jù);該狀態(tài)字存儲區(qū)有2位地址,二進制表示的地址空間是00-11,依次存儲狀態(tài)中的第0-3列,每條記錄包括一個32位的數(shù)據(jù)域、一個4位的color域;該中間密鑰字存儲區(qū),有一位地址空間0-1,依次存儲從通道端口6來的中間密鑰字,該中間密鑰字是AES密鑰擴展算法中定義的非線性函數(shù)的計算結(jié)果,每條存儲記錄包括一個32位的數(shù)據(jù)域;所述的暫存單元的每個存儲單元都對應(yīng)一個標記為flag的“滿/空”標記位,當單元寫入時flag置1,表示滿,當數(shù)據(jù)讀出后flag復位,表示空;該BLOCKH存儲高段密鑰字的“分組值”,BLOCKL存儲低段密鑰字的“分組值”,所述“分組值”是指所有輪擴展密鑰序列按所述Nk個一組分組后,所得到的組的序號,該擴展密鑰由初始密鑰擴展而成,該擴展密鑰的總長為4(Nr+1),Nr為迭代輪數(shù);該AK暫存器單元有三個輸入通道端口通道5端口接收令牌5并寫入狀態(tài)字存儲區(qū),寫入的地址是令牌5的地址域的值,狀態(tài)字記錄的數(shù)據(jù)域和color域分別等于令牌5的數(shù)據(jù)域和color域,通道6端口接收令牌6,寫入中間密鑰字區(qū),寫入地址是令牌6的地址域的值,寫入記錄的數(shù)據(jù)域直接復制令牌6的數(shù)據(jù)域,通道9端口接收新的擴展密鑰字令牌并寫入密鑰字存儲區(qū),另外,密鑰字存儲區(qū)還有一個置數(shù)端口,與所述初始密鑰寄存器的輸出端相連,256位寬,由所述load信號作置位信號;該AK暫存器單元有兩個輸出通道端口;通道7端口發(fā)送作AddKey運算或變換密鑰字轉(zhuǎn)發(fā)用的操作數(shù)令牌,通道10端口發(fā)送密鑰擴展運算用的操作數(shù)令牌;
e1.所述的通道9端口傳輸?shù)牧钆疲麨榱钆?,包括4個32位的數(shù)據(jù)域k0-k3、一個5位的BLOCK域和一個1位的part域,令牌9part等于0則k0-k3依次寫入密鑰字存儲區(qū)地址為000-011的單元,所述地址用二進制表示,令牌9的BLOCK值賦給BLOCKL,同時將所有低段單元的輪變換標記位和擴展標記位復位為0,令牌9part等于1則k0-k3依次寫入密鑰字存儲區(qū)二進制表示的地址為100-111的單元,令牌9的BLOCK值賦給BLOCKH,同時將所有高段單元的輪變換標記位和擴展標記位復位為0;
e2.所述通道7端口發(fā)送的令牌,命名為令牌7,包括2個32位的數(shù)據(jù)域data1和data2、一個1位的屬性域,屬性域的值等于發(fā)送時下述的AorT信號的取值當AorT等于0時,執(zhí)行AddKey操作,令牌7是狀態(tài)字令牌,它還包括一個4位的color域、一個2位的column域,打包時,把下述的ssel信號的值復制到它的column域、地址等于ssel的狀態(tài)字存儲記錄的數(shù)據(jù)域復制到令牌7的data1域、該狀態(tài)記錄的color域復制到令牌7的color域,地址等于下述ksel值的密鑰存儲記錄的數(shù)據(jù)域復制到令牌7的data2域,通道7端口的應(yīng)答信號將讀取的狀態(tài)字記錄情空,把讀取的密鑰字記錄的輪變換位變成1;當AorT等于1時,執(zhí)行變換密鑰字轉(zhuǎn)發(fā)操作,令牌7是密鑰令牌,除數(shù)據(jù)域和屬性域外還包括一個1位的操作符域、一個1位的fadd域與4位不關(guān)心的數(shù)據(jù),打包時,data1域等于0,地址等于下述ksel值的密鑰存儲記錄的數(shù)據(jù)域復制到它的data2域;ksel等于Nk-1時,轉(zhuǎn)發(fā)變換密鑰字1,fadd等于0,操作符域等于0,表示此令牌將執(zhí)行下述f變換,Nk等于4時,若ksel等于7,則表示轉(zhuǎn)發(fā)變換密鑰字2,fadd域等于1,操作符域等于0,表示此令牌將執(zhí)行下述f變換,若Nk不等于4且ksel等于3,則表示轉(zhuǎn)發(fā)變換密鑰字2,fadd等于1,操作符域等于1,表示此令牌將執(zhí)行下述g變換;通道7端口的應(yīng)答信號將讀取的狀態(tài)字記錄清空;
e3.所述通道10端口發(fā)送的令牌命名為令牌10,包括一個32位的中間密鑰字域、4個32位的密鑰字域k0-k3、一個5位的BLOCK域和一個1位的step域,打包時令牌10的step域等于令牌發(fā)送時所述的step信號的值,當令牌發(fā)送時刻所述step信號等于0時,令牌10的中間密鑰字域等于中間密鑰字存儲區(qū)中地址等于0的記錄的數(shù)據(jù),令牌10的BLOCK域的值等于所述BLOCKL寄存器的值,通道10端口的應(yīng)答信號把密鑰存儲區(qū)低段的4個密鑰字的擴展位都置成1,當令牌發(fā)送時刻所述step信號等于1時,令牌10的中間密鑰字域等于中間密鑰字存儲區(qū)中地址等于1的記錄的數(shù)據(jù),令牌10的BLOCK域的值等于所述BLOCKH寄存器的值,通道10端口的應(yīng)答信號把密鑰存儲區(qū)高段的所有密鑰字的擴展位都置成1;
e4.該KES控制密鑰擴展的時序,狀態(tài)都采用二進制編碼表示,KES的初始狀態(tài)二進制編碼是00,即準備計算f的狀態(tài),在此狀態(tài)下執(zhí)行變換密鑰字1轉(zhuǎn)發(fā)后,KES二進制編碼變?yōu)?1,進入執(zhí)行f變換的狀態(tài),在01狀態(tài)下讀取低段密鑰進行密鑰擴展時,KES的狀態(tài)變化為11,處于準備計算g的狀態(tài),在11的狀態(tài)下執(zhí)行變換密鑰字2操作后,KES的狀態(tài)變化為10,進入執(zhí)行g(shù)變換的狀態(tài),在10狀態(tài)下讀取高段密鑰進行密鑰擴展時,KES的狀態(tài)變化為00;
f.工作狀態(tài)寄存器,向所述輸入單元發(fā)送WK信號,向所述通道開關(guān)單元Switch發(fā)送WK信號,接收來自下述Matcher OK單元的OK信號;當OK信號上升時WK復位;
g.Matcher II匹配單元,檢查AK暫存器單元中的狀態(tài)字存儲區(qū)和密鑰字存儲區(qū),發(fā)現(xiàn)就緒的狀態(tài)字-密鑰字對或就緒的變換密鑰則隨機選取其中之一,把相應(yīng)的地址所選擇信號傳送給所述AK暫存器單位,隨后觸發(fā)令牌發(fā)射信號fetch_II,所述的選擇信號包括標記為了ssel的AddKey狀態(tài)字讀地址、標記為ksel的密鑰字讀地址、標記為AorT的表示發(fā)送令牌將執(zhí)行的操作的信號0表示AddKey運算,1表示變換密鑰字轉(zhuǎn)發(fā),標記為Trans;該Matcher II匹配單元的輸入包括AK暫存器單元的狀態(tài)字存儲區(qū)和密鑰字存儲區(qū)的觀測信號,其中包括狀態(tài)字記錄的color位與flag位,密鑰字記錄的輪變換標記位和擴展標記位、flag域,BLOCKL和BLOCKH,KES,另外還有密鑰分組列數(shù)Nk;所述的“就緒”是指計算所有被觀測狀態(tài)字和密鑰字的序列號,尋找序列號相同且flag都為1的狀態(tài)字-密鑰字對,或者根據(jù)KES狀態(tài)檢測并發(fā)現(xiàn)相應(yīng)的變換密鑰字;所述fetch_II信號到來,則觸發(fā)所述AK暫存單元把令牌發(fā)送給7#通道;當被發(fā)送的狀態(tài)字被清空,或者KES狀態(tài)改變,則fetch_II復位;
h.Matcher K匹配單元,檢查密鑰字存儲區(qū)和中間密鑰字存儲區(qū)的觀測信號輪變換標記位和擴展標記位、flag和KES狀態(tài);當KES處于密鑰擴展狀態(tài)下,且相應(yīng)的密鑰字段和中間密鑰字段已準備就緒則把標記為step的密鑰擴展讀地址變?yōu)橄鄳?yīng)的值1為高段擴展,0為低段擴展,并觸發(fā)令牌發(fā)射信號fetch_K,所述的AK暫存器單元根據(jù)step信號把密鑰區(qū)的相應(yīng)數(shù)據(jù)以及BLOCK值打包成令牌等待發(fā)送,當fetch_K信號來到時,觸發(fā)所述AK暫存單元把該令牌經(jīng)通道10發(fā)出;如果下述的exp_stop信號有效,Matcger K匹配單元則停止工作;
i.密鑰擴展運算單元,用Key Scgedule標記,接收并解析來自通道10的令牌,經(jīng)過下述Key Schedule處理后打包成內(nèi)含所述新的擴展密鑰的令牌經(jīng)通道9發(fā)出,所述的Key Schedule的處理含有以下運算
i1.把所述令牌10的中間密鑰字域和k0-k3域作為輸入,執(zhí)行KeySch運算中間密鑰字與k0逐位異或,結(jié)果輸出作為令牌9的k0域,并與令牌10的k1逐位異或,結(jié)果輸出作為令牌9的k1,并與令牌10的k2逐位異或,結(jié)果輸出作為令牌9的k2,并與令牌10的k3逐位異或,結(jié)果輸出作為令牌9的k3;
i2.把所述令牌10的BLOCK域加1后的結(jié)果作為令牌9的BLOCK值;
i3.當Nk=4時,把所述令牌10的step域的邏輯反作為所述令牌9的part域,如果Nk>4,則把所述令牌10的step域直接復制到所述令牌9的part域;
j.AddKey運算單元,在接收并解析通道7發(fā)來的操作數(shù)令牌后,對其中的數(shù)據(jù)執(zhí)行AddKey運算后,打包成輪密鑰混合令牌,經(jīng)通道8發(fā)送,所述AddKey運算即AES算法定義的輪密鑰加法操作作用于狀態(tài)的一列;所述經(jīng)通道8發(fā)送的令牌,命名為令牌8,包括一個32位的數(shù)據(jù)域和一個1位的屬性域,當屬性域等于0時,是狀態(tài)字令牌,還包括一個4位的color域和一個2位的column域,當屬性域等于1時,是密鑰令牌,還包括一個1位的操作數(shù)域和一個1位的fadd域,打包時,把令牌7的data1與data2逐位異或的結(jié)果作為令牌8的結(jié)果,令牌7的其余域直接復制到令牌8中與之同名的域中;
k.輪更新通道開關(guān)單元,對來自通道8的令牌進行輪次檢查,若是狀態(tài)字令牌且輪次已經(jīng)達到迭代輪次Nr,則經(jīng)通道11轉(zhuǎn)發(fā)到下述輸出暫存單元;否則,把其輪次加1經(jīng)通道1轉(zhuǎn)發(fā)到下述EU暫存器單元執(zhí)行后續(xù)處理;若到達的令牌輪次為Nr,且上述與其相加的擴展密鑰屬于密鑰分組的高段,即表示密鑰擴展已經(jīng)完成,則觸發(fā)exp_stop信號;若是密鑰字令牌則直接由通道1轉(zhuǎn)發(fā)到下述EU暫存器單元執(zhí)行后續(xù)處理;所述令牌處理包括如下3情況
k1.通道11傳輸?shù)牧钆?,命名為令?1,包括一個32位的數(shù)據(jù)域和一個2位的column域,打包時,令牌8的數(shù)據(jù)域直接復制到令牌11的數(shù)據(jù)域,令牌8的column域直接復制到令牌11的column域;
k2.當令牌8的屬性域為0時,所述通道1發(fā)送的令牌,命名為令牌1,是狀態(tài)字令牌,包括一個32位的數(shù)據(jù)域、一個4位的color域、一個2位的column域一個1位的操作符域和一個1位的屬性域打包時,令牌8的數(shù)據(jù)域和column域直接復制到令牌1中同名的域中,令牌8的color域加1后的結(jié)果作為令牌1的color域,令牌1的屬性域等于0,若令牌8的color域等于Nr-1,則令牌1的操作符域標記為Srd操作,否則令牌1的操作符域標記位SM操作;
k3.如果令牌8的屬性域等于1,所述通道1發(fā)送的令牌1是變換密鑰字令牌,包括一個32位的數(shù)據(jù)域、一個1位的操作符域、一個1位的fadd域和5位不關(guān)心的數(shù)據(jù),打包時,令牌8的各域分別直接復制到令牌1中同名的域中;
l.輸出暫存單元,是一個密文重排的暫存單元,由一個4×32比特的存儲單元和令牌解析電路組成,該單元接收通道11來的亂序到達的結(jié)果令牌所攜帶的密文數(shù)據(jù)并暫存,寫入的地址是所述令牌11的column域,寫入的數(shù)據(jù)是所述令牌11的數(shù)據(jù)域,在接收到下述接收單元的讀地址信號后輸出對應(yīng)的密文狀態(tài)字;所述的暫存單元的每個存儲單元都對應(yīng)一個標記為flag的“滿/空”標記位,當單元寫入時flag置1,表示滿,當數(shù)據(jù)讀出后flag復位,表示空;
m.輸出單元,該單元是所述芯片與外部的接口、實現(xiàn)把密文按要求的時序輸出的功能;
n.Matcher OK匹配單元,檢查所述輸出暫存單元中的所有flag信號,當所有的flag都為1則表示全部密文字都已到達,則把結(jié)束信號OK變成高電位,在通知所述工作狀態(tài)存儲器的同時也通知所述輸出單元讀取所述輸出暫存單元的密文狀態(tài)字,當flag被復位后,OK信號變?yōu)榈碗娢唬?br>
o.EU暫存器單元,由一個密鑰字存儲區(qū)和兩個完全相同的狀態(tài)存儲區(qū)組成,依次標記為key store、store0和store1;其中,key store存儲密鑰擴展的變換密鑰字,一條存儲記錄包括一個32位的數(shù)據(jù)域、一個1位的fadd域和一個1位的操作符域,store0/store1依次存儲行移位之前“狀態(tài)”中的第0-第3列,每列存儲單元又分為4行,第0行的記錄包括1個8位的數(shù)據(jù)域、一個4位的color域和一個1位的操作符域,第1行至第3行的記錄包含一個8位的數(shù)據(jù)域;所述兩個狀態(tài)存儲單元按照乒乓式讀寫的流水線方式工作根據(jù)輸入令牌的輪次標記,當輪次為偶數(shù)時寫入store0,store1中的數(shù)據(jù)必是前一輪的狀態(tài),從store1中讀取數(shù)據(jù)處理;當令牌的輪次為奇數(shù),則寫入store1,store0必是前一輪狀態(tài)的待處理數(shù)據(jù),從store0中讀取數(shù)據(jù)處理;該EU暫存器單元設(shè)有一個傳輸通道端口,接收所述輪更新通道開關(guān)單元經(jīng)通道1發(fā)出的令牌1,從中解析出令牌類型狀態(tài)令牌還是密鑰令牌、寫地址和記錄數(shù)據(jù),并把記錄寫入相應(yīng)的存儲單元中;一個輸出傳輸通道端口,與通道2相連,根據(jù)下述Matcher I匹配單元輸入的讀地址、store0/store1選擇信號以及狀態(tài)/變換密鑰選擇信號輸出相應(yīng)的狀態(tài)字或變換密鑰字,與其他控制信號一起打包成令牌,經(jīng)通道2發(fā)送給下述EU運算單元;上述3個暫存區(qū)的每個存儲單元都對應(yīng)一個標記為flag的“滿/空”標記位,當單元寫入時flag置1,表示滿,當數(shù)據(jù)讀出后flag復位,表示空;
o1.所述的令牌解析方法是當所述令牌1的屬性域為0時,是狀態(tài)字令牌,寫入地址是令牌1的column域,寫入記錄的第0行的數(shù)據(jù)域是令牌1數(shù)據(jù)域的7至0位,第0行的color域是令牌1的color域,第0行的操作符域是令牌1的操作符域,寫入記錄的第1行到第3行的數(shù)據(jù)分別依次是令牌1數(shù)據(jù)域的15位至8位、23位至16位和31至24位;當所述令牌1的屬性域為1時,是密鑰令牌,令牌1的數(shù)據(jù)域復制到所述變換密鑰字存儲記錄的數(shù)據(jù)域,令牌1的fadd域和操作符域直接復制到所述變換密鑰字存儲記錄的同名域中;
o2.所述的經(jīng)通道2發(fā)送的令牌被命名為令牌2,它的打包方法是當所述的狀態(tài)/變換密鑰選擇信號等于0時,令牌2是狀態(tài)字令牌,屬性域等于0,數(shù)據(jù)域的7到0位是地址等于所述的Matcher I匹配單元輸入的讀地址的第0行記錄的數(shù)據(jù)域,數(shù)據(jù)域的15到8位是經(jīng)過AES算法定義的行移位運算后的地址等于所述讀地址的第1行記錄的數(shù)據(jù)域,數(shù)據(jù)域的23到16位是經(jīng)過AES算法定義的行移位運算后的地址等于所述讀地址的第2行記錄的數(shù)據(jù)域,數(shù)據(jù)域的31到24位是經(jīng)過AES算法定義的行移位運算后的地址等于所述讀地址的第3行記錄的數(shù)據(jù)域,令牌2的color域和操作符域分別是地址等于所述讀地址的第0行記錄的color域和操作符域,令牌2的column域是所述讀地址的值;當所述的狀態(tài)/變換密鑰選擇信號等于0時,令牌2是密鑰自令牌,屬性域等于1,數(shù)據(jù)域是變換密鑰存儲記錄的數(shù)據(jù)域,fadd域和操作符域分別是變換密鑰存儲記錄的fadd域和操作符域;
p.Matcher I匹配單元,檢查key store和store0/store1中的令牌信息,在考慮行移位變換之后發(fā)現(xiàn)就緒的狀態(tài)字或者發(fā)現(xiàn)變換密鑰則隨機選取一個,把地址信息送給所述EU暫存器單元,并通過fetch_I信號觸發(fā)通道2端口的觸發(fā)信號,把所述EU暫存單元的令牌2發(fā)送給所述EU運算單元;所述Matcher I匹配單元的輸入包括來自所述EU暫存器單元的觀測端口的信號,通道2端口的應(yīng)答信號以及所述控制選擇的隨機信號;同時,向EU暫存器單元輸出所述fetch_I令牌發(fā)送信號;
q.全局存儲器,存儲密鑰分組列數(shù)Nk,迭代輪數(shù)Nr,其中,向EU暫存器、下述EU運算單元、Matcher II兩個單元和密鑰擴展運算單元輸出Nk,向輪更新通道開關(guān)單元輸出Nr,
r.EU運算單元,接收來自通道2的令牌2,解析后根據(jù)令牌2的屬性域和操作符域以及所述密鑰分組列數(shù)Nk對數(shù)據(jù)域執(zhí)行相應(yīng)的計算,操作結(jié)果打包到令牌3的數(shù)據(jù)域中通過通道3發(fā)送;其中,所述令牌3除數(shù)據(jù)域外,還有一個1位的屬性域,其值等于所述令牌2的屬性域值當屬性域等于0時,是狀態(tài)字令牌,還有一個4位的color域和一個2位的column域;當屬性域等于1時,是密鑰字令牌,還有一個1位的fadd域,還有5位不關(guān)心的數(shù)據(jù),打包時,令牌2的fadd域直接復制到令牌3的fadd域中;所述對于令牌數(shù)據(jù)域的計算包括
r1.Srd操作,當令牌2的屬性域等于0且操作符域為所述的Srd標記時或當令牌2的屬性域等于1且操作符域為1且所述密鑰分組列數(shù)Nk大于6時執(zhí)行,即對數(shù)據(jù)域的每個字節(jié)執(zhí)行AES算法定義的Srd查表操作;所述令牌2屬性域等于1且操作符域為1時的操作即是上述的g變換在Nk大于6時的操作;
r2.Srd-MixCol操作,當令牌2的屬性域等于0且操作符域為所述的SM標記時執(zhí)行,即先對數(shù)據(jù)域的每個字節(jié)執(zhí)行AES算法定義的Srd查表操作,再對4個字節(jié)的結(jié)果向量左乘一個4×4的常數(shù)矩陣,其中所述的常數(shù)矩陣為AES算法中定義的列混合操作對應(yīng)的常數(shù)矩陣;
r3.Srd-循環(huán)移位-輪常量相加計算,是上述的f變換當令牌2的屬性域等于1且所述密鑰令牌的操作符域為0時執(zhí)行,即先對數(shù)據(jù)域的每個字節(jié)執(zhí)行AES算法定義的Srd查表操作,再將4個字節(jié)的結(jié)果循環(huán)左移8位,最后,所得結(jié)果的低8位與一個8位的輪常量RC逐位異或;所述輪常量初值為0,每執(zhí)行一次輪常量加法運算后,其值乘以2,所述乘2操作是定義在GF(28)域上的;
r4.直接專發(fā)操作,當令牌2的屬性域等于1且所述狀態(tài)令牌的操作符域為1且Nk小于等于6時執(zhí)行,即令牌2的數(shù)據(jù)域直接復制到所述令牌3的數(shù)據(jù)域;所述令牌2屬性域等于1且操作符域為1時的操作即是上述的g變換在Nk下與等于6時的操作;
s.Matcher II隨機控制碼產(chǎn)生電路,隨機產(chǎn)生控制所述Matcher II匹配單元中仲裁電路的3位隨機選擇碼,每次fetch_II下降時產(chǎn)生一個新的隨機控制碼;
t.Matcher I隨機控制碼產(chǎn)生電路,隨機產(chǎn)生控制所述Matcher I匹配單元中仲裁電路的3位隨機選擇碼,每次fetch_I下降時產(chǎn)生一個新的隨機控制碼;
u.2.上述的Matcher II單元與AK暫存單元構(gòu)成了AddKey運算單元的令牌暫存-匹配-發(fā)射結(jié)構(gòu),簡稱為HMF結(jié)構(gòu),Matcher I單元與EU暫存單元構(gòu)成了EU運算單元的HMF結(jié)構(gòu),Matcher K與AK暫存單元的密鑰存儲區(qū)構(gòu)成了KeyAchedule單元的HMF結(jié)構(gòu),Matcher OK與輸出暫存單元構(gòu)成了輸出的HMF結(jié)構(gòu);所述HMF結(jié)構(gòu)具有如下特征
u1.包含一個令牌暫存單元,由寄存器堆實現(xiàn),寫端口采用異步握手協(xié)議;寫地址和寫入數(shù)據(jù)由輸入令牌解析得出,寫入時鐘由輸入通道端口的請求信號觸發(fā);讀端口的地址由下述匹配單元輸出的選擇信號決定,輸出數(shù)據(jù)隨讀地址即時變化;內(nèi)部存儲單元對應(yīng)有表示記錄是否存在的“滿/空”標志位,所有單元的滿空標志位和記錄與下述匹配條件相關(guān)的域的數(shù)據(jù)組成觀測信號,可被下述匹配單元讀??;所述輸出數(shù)據(jù)可被下述令牌打包邏輯讀??;所述滿空標志位由一個C單元產(chǎn)生,該C單元的一端接對應(yīng)記錄的寫入時鐘,另一輸入端接記錄的清空信號信號的反信號;所述各個記錄的寫入時鐘由寫端口的接收應(yīng)答信號經(jīng)過寫地址選擇產(chǎn)生,所述各個記錄的清空信號由所述讀端口的應(yīng)答信號經(jīng)讀地址選擇產(chǎn)生;
u2.包含一個匹配單元,由匹配邏輯和選擇邏輯電路兩部分組成,暫存單元各個記錄的觀測信號輸入匹配邏輯電路中按照匹配條件對應(yīng)的布爾表達式算出各自的匹配結(jié)果值,匹配成功則值為1,否則等于0;每個匹配結(jié)果信號通過一級C單元輸出到所述選擇邏輯的輸入端成為請求信號,所述C單元的另一輸入端與所有請求信號的或信號相連,只有請求信號全為0時等于1的匹配結(jié)果才能傳遞到選擇邏輯電路,當請求信號中存在有效請求,即為1的請求信號,在它之后產(chǎn)生的成立的匹配結(jié)果就無法通過C單元;請求對應(yīng)的令牌被發(fā)送后,請求復位,C單元對成立的匹配結(jié)果導通;所述Matcher I和Matcher II單元的選擇邏輯是一個仲裁邏輯電路,對每個被檢測的令牌組的請求信號進行隨機選擇,輸出的是選中請求的序號,并由此產(chǎn)生令牌暫存器的讀地址;所述的Matcher K單元的選擇電路是計算匹配成功的請求對應(yīng)的所述step信號;所述Matcher OK沒有選擇電路;匹配單元的選擇電路輸出的請求序號通過鎖存器輸出成為令牌的選擇信號;根據(jù)所述選擇信號的選擇選擇對應(yīng)的所述的請求信號成為令牌發(fā)射觸發(fā)信號,如所述的fetch_II、fetch_I、fetch_K信號;
u3.令牌發(fā)射觸發(fā)信號經(jīng)過長度等于選擇電路輸出穩(wěn)定所需的最長時間的延時后觸發(fā)所述選擇信號的鎖存器的控制端將鎖存器鎖存,同時觸發(fā)發(fā)送令牌的請求信號;所述暫存單元的復位應(yīng)答信號將所述選擇信號的鎖存器的控制端復位,使鎖存器導通,選擇信號重新隨所述匹配單元的選擇邏輯電路輸出變化;
在上述各單元中,
所有傳輸通道都采用異步握手協(xié)議;
所有運算單元的數(shù)據(jù)處理和令牌打包由組合邏輯電路實現(xiàn);
所述通道開關(guān)單元Switch,初始密鑰寄存器、AK暫存器單元、Matcher K匹配單元、密鑰擴展運算單元共同構(gòu)成了密鑰擴展環(huán),而通道開關(guān)單元Switch、Matcher II匹配單元、AddKey運算單元、輪更新通道開關(guān)單元、EU暫存器單元,Matcher I匹配單元、EU運算單元構(gòu)成輪變換環(huán),環(huán)內(nèi)用傳輸通道相連,環(huán)間用開關(guān)單元Switch相連。仿真結(jié)果
a)功能驗證
對最終的流片電路進行verilog和電路及仿真。其中verilog測試涵蓋了AES標準官方網(wǎng)站提供的全部已知答案驗證,全部通過。
b)亂序水平估計
對采用發(fā)明結(jié)構(gòu)和令牌傳輸關(guān)系實現(xiàn)的電路芯片處理128位明文、128位密文的情況做如下功耗差分測試分別在亂序執(zhí)行和確定順序執(zhí)行情況下采集密鑰所有位等于0和所有位等于1時加密同一組明文的功耗曲線,求出它們的樣本差分曲線,進行比較。實驗中,加密的明文是1200個隨機產(chǎn)生的128位分組。
使用功耗仿真的專門工具進行功耗仿真,完成上述測試。
圖11是測試所得到的亂序執(zhí)行和確定時序執(zhí)行的功耗差分曲線。圖中亂序執(zhí)行的曲線尖峰峰值比較接近,分布范圍廣,確定順序執(zhí)行的曲線尖峰間的高度差較大,且分布集中,可以明顯分辨出運算輪次。這體現(xiàn)了亂序執(zhí)行對于功耗差分的平均化效果,經(jīng)過平均化,亂序執(zhí)行的最大差分小于確定時序的結(jié)果。由于最大差分是抗DPA的決定因素,因此亂序執(zhí)行比確定執(zhí)行有更高的實現(xiàn)安全性。亂序執(zhí)行的最大功耗差分約是確定時序執(zhí)行的66%。
圖1 4相位握手協(xié)議傳輸通道。
圖2 4相位異步握手協(xié)議。
圖3 4相位握手協(xié)議異步傳輸通道實現(xiàn)電路。
圖6 Rijndael算法的密鑰分組間的計算關(guān)系。
圖4 Rijndael的輪變換定義。
圖5 ShiffRow圖解(128位)。
圖7 Rijndael密鑰擴展結(jié)構(gòu)。
圖8 KeySch單元邏輯圖。
圖9 密鑰擴展實現(xiàn)方法流程圖(a)Nk=4(b)Nk=6(c)Nk=8。
圖10 本發(fā)明的AES實現(xiàn)算法流程(a)密鑰令牌處理流程;(b)狀態(tài)令牌出來流程。
圖11 全0密鑰與全1密鑰的功耗差分曲線(Nb=4,Nk=4)。
圖12 結(jié)構(gòu)圖。
圖13 輸入模塊電路結(jié)構(gòu)。
圖14 輸出模塊電路結(jié)構(gòu)。
圖15 HMF結(jié)構(gòu)示意圖。
圖16 令牌暫存器基本結(jié)構(gòu)(4單元)。
圖17 匹配單元結(jié)構(gòu)。
圖18 4選1仲裁器電路(a)R-box0(b)R-box1(c)整體電路。
圖19 發(fā)射電路的邏輯圖。
圖20 密鑰擴展狀態(tài)機。
圖21 pp信號產(chǎn)生電路。
圖22 Switch電路結(jié)構(gòu)。
圖23 輪更新單元結(jié)構(gòu)。
圖24 令牌1至EU暫存單元的轉(zhuǎn)移關(guān)系(a)狀態(tài)令牌(b)密鑰令牌。
圖25 EU暫存單元存儲記錄到令牌2的轉(zhuǎn)移關(guān)系(a)狀態(tài)令牌(b)密鑰令牌。
圖26 令牌2到令牌3的轉(zhuǎn)移關(guān)系(a)狀態(tài)令牌(b)密鑰令牌。
圖27 EU單元的各種運算的流程(a)Srd運算(b)SM運算(c)RC運算。
圖28 令牌3到令牌5和令牌3到令牌6的轉(zhuǎn)移關(guān)系(a)令牌3到令牌5(b)令牌3到令牌6。
圖29 令牌4到令牌5的轉(zhuǎn)移關(guān)系。
圖30 令牌5到SR的轉(zhuǎn)移關(guān)系。
圖31 令牌6到AK暫存單元的KR的轉(zhuǎn)移關(guān)系。
圖32 AK暫存單元存儲的數(shù)據(jù)到令牌7的轉(zhuǎn)移關(guān)系(a)AddKey操作令牌發(fā)射(b)變換密鑰字令牌轉(zhuǎn)發(fā)(NK>4)(c)變換密鑰字令牌轉(zhuǎn)發(fā)(NK=4)。
圖33 令牌7到令牌8的轉(zhuǎn)移關(guān)系。
圖34 令牌8到令牌1和令牌11的轉(zhuǎn)移關(guān)系(a)密文令牌發(fā)送(b)狀態(tài)令牌輪次更新(c)密鑰令牌轉(zhuǎn)發(fā)。
圖35 令牌10到令牌9的轉(zhuǎn)移關(guān)系。
具體實施例
我們按照本發(fā)明實現(xiàn)了一個數(shù)據(jù)流AES加密芯片(THDFAES04),并進行了投片實驗。下面以此為例介紹具體實施辦法
1.工作方式
芯片每次處理一個分組,在開始加密前首先通過數(shù)據(jù)輸入總線將密鑰列數(shù)(NK)和初始密鑰分別送入芯片內(nèi)部的設(shè)置寄存器和初始密鑰寄存器中。然后再將明文分組送入芯片。啟動信號觸發(fā)芯片開始工作。最終運算結(jié)果先被暫存在輸出寄存器中,當輸出寄存器被填滿——即整個分組都產(chǎn)生之后,結(jié)束信號(OK)變高,結(jié)果數(shù)據(jù)可以從數(shù)據(jù)輸出總線讀出。每次開始輸入新的分組時,初始密鑰寄存器的數(shù)據(jù)都會被重新寫入內(nèi)部的密鑰暫存器。
2.電路結(jié)構(gòu)
它的整體電路結(jié)構(gòu)如圖12所示。它包含輸入模塊、輸出模塊、密鑰擴展運算單元(KeySchedule)、AddKey和EU三個運算單元、AK暫存單元、EU暫存單元和輸出暫存單元三個令牌暫存單元,Matcher I、Matcher II、Matcher K和Matcher OK四個匹配單元以及Switch和輪更新兩個通道開關(guān)單元,構(gòu)成了“輪變換環(huán)”和“密鑰擴展環(huán)”兩個環(huán)狀結(jié)構(gòu),環(huán)上各部件用異步傳輸通道相連。此外,還包含一些全局寄存器存儲全局變量。其中AK暫存單元又分為密鑰字存儲區(qū)和狀態(tài)字存儲區(qū)兩部分;EU暫存單元由一個密鑰字存儲區(qū)和兩個完全相同的狀態(tài)字存儲單元組成。電路中有兩個相同、彼此獨立的隨機控制碼產(chǎn)生電路,分別為MatcherI和Matcher II的仲裁電路提供隨機控制碼,其中WK表示工作狀態(tài)寄存器,Nk,Nr分別是密鑰分組的列數(shù)和迭代輪數(shù),都是內(nèi)部的全局寄存器,還有保存初始密鑰的初始密鑰寄存器。
圖中每個傳輸通道都標了一個編號,每個通道上傳輸固定的令牌格式,這些編號就是對應(yīng)的令牌編號。
各個部件的功能描述如下
5.1傳輸通道與通道端口
在圖12中用空心寬箭頭表示傳輸通道,箭頭表示數(shù)據(jù)傳輸方向。所傳輸?shù)臄?shù)據(jù)是相應(yīng)編號的令牌。THDFAES04采用4相位捆綁數(shù)據(jù)握手協(xié)議的異步傳輸通道。
5.2輸入模塊
芯片內(nèi)核與外部的接口,實現(xiàn)將明文按照要求的時序輸入的功能,對內(nèi)分別按照令牌4格式輸出明文數(shù)據(jù),將初始密碼密鑰直接存入初始密鑰寄存器。此外,還產(chǎn)生對內(nèi)的復位信號InterRst,初始密鑰加載信號load。
圖13是輸入模塊的電路結(jié)構(gòu)圖,其中CKIN信號是輸入時鐘,外部輸入信號還包括輸入數(shù)據(jù)總線和復位信號、地址信號和使能信號,復位信號可以復位整個芯片,控制電路根據(jù)輸入的地址控制輸入數(shù)據(jù)分配邏輯,將輸入數(shù)據(jù)存儲到相應(yīng)寄存器中明文存入明文緩存器,它是一個串行輸入、并行輸出的移位寄存器,可以存儲32位的明文數(shù)據(jù);密鑰存入內(nèi)核部分的初始密鑰寄存器;Nk值存入Nk寄存器;隨機順序控制序列分別存入內(nèi)核部分的隨機順序控制序列寄存器I和入隨機順序控制序列寄存器II。使能信號控制芯片的輸入是否有效。控制電路中包括一個計數(shù)器記錄當前明文序號,明文緩存器的輸出與打包邏輯電路相連,將計數(shù)器的低2位作為令牌4的column域,將明文緩存器的輸出作為令牌4的數(shù)據(jù)域,當寫入的明文數(shù)達到32位,則觸發(fā)通道4端口將打包電路輸出的令牌4發(fā)送到通道4中。啟動信號觸發(fā)load信號將初始密鑰寄存器中的數(shù)據(jù)置入AK暫存器單元的密鑰存儲區(qū),load信號觸發(fā)WK信號變?yōu)楦唠娖?。InterRst_信號是內(nèi)核電路的復位信號,不能復位初始密鑰寄存器,在開始輸入明文數(shù)據(jù)的時候,InterRst_信號出現(xiàn)一個負脈沖將內(nèi)核電路復位,準備執(zhí)行新的加密任務(wù),但是初始密鑰仍然保留。
5.3輸出模塊
芯片內(nèi)核與外部的接口,實現(xiàn)將密文按照要求的時序輸出的功能。其功能是從輸出暫存單元中讀取結(jié)果,并按要求輸出。輸入信號包括輸出暫存單元的數(shù)據(jù)輸出、OK信號和外部讀數(shù)時鐘CKOUT;輸出除了密文等對外接口外,還有輸出暫存單元的2位讀地址和讀取擦除信號(OUTACK)。
圖14是輸出模塊的電路結(jié)構(gòu)圖,其中的控制電路接收OK的上升沿后即觸發(fā)cpl信號,使地址累加器開始工作——從0開始每2個時鐘周期加1,地址累加器的輸出即是輸出暫存單元的讀地址,輸出緩存是一個并行輸入串行輸出的移位寄存器,ren信號是它的置數(shù)控制端。ren在每次地址變化前有效,此時,在下降沿將輸出暫存單元的輸出置入輸出緩存,隨后ren復位,每個CKOUT的上升沿將輸出緩存的數(shù)據(jù)串行輸出到輸出數(shù)據(jù)端口。每次ren信號復位即觸發(fā)OUTACK信號的正脈沖,清除輸出暫存單元中的記錄。
5.4初始密鑰寄存器
初始密鑰寄存器是一個256位的寄存器組,保存著由輸入模塊寫入的密鑰。它的時鐘端由輸入模塊控制。
5.5HMF結(jié)構(gòu)
發(fā)明結(jié)構(gòu)中共包括AddKey單元的HMF結(jié)構(gòu),由AK暫存單元、Matcher II組成,EU單元的HMF結(jié)構(gòu),由EU暫存單元、Matcher I組成,KeySchedule單元的HMF結(jié)構(gòu),由AK暫存單元的狀態(tài)存儲區(qū)、Matcher K組成,輸出HMF結(jié)構(gòu),由輸出暫存單元和Matcher OK組成。THDFAES04中采用的HMF電路的典型結(jié)構(gòu)如所示
它由令牌暫存器、匹配單元和發(fā)射電路組成,其中Matcher電路又分為匹配電路和選擇電路兩部分。選擇電路一般是一個仲裁器,由順序控制碼(rand)控制。圖中實心寬箭頭表示HMF與外部間的傳輸通道。WA和WD分別表示暫存器的寫地址和輸入數(shù)據(jù)端口,RA和RD分別表示讀地址和輸出數(shù)據(jù)端口。
其工作方式是外部輸入的令牌先存儲于暫存器中。暫存器中每個令牌記錄都有相應(yīng)的“滿/空”標志位(flag),在數(shù)據(jù)寫入時flag置1,讀出后CLR信號的高電平則將RA所指的記錄清空(對應(yīng)的flag位復位)。CLR_done是CLR信號的應(yīng)答信號,它的下降沿表示flag復位完成。
匹配單元讀取暫存器內(nèi)部所有令牌的flag位以及與匹配條件相關(guān)的令牌標簽域(Tags)并計算它們的匹配函數(shù)(匹配條件的命題公式)值。每個匹配函數(shù)值是一個“請求”信號,匹配函數(shù)值為真則表示請求有效。如果存在有效的請求,則fetch=1。匹配單元中的仲裁單元按照rand的值,從所有有效請求中選擇一個,并把選中請求的序號(select)輸出。
發(fā)射電路在空閑狀態(tài)時如果發(fā)現(xiàn)fetch上升,則鎖存select信號,并根據(jù)select產(chǎn)生讀地址address,再將得到的輸出數(shù)據(jù)data與地址以及其它需要的信息打包成新的令牌發(fā)送到執(zhí)行單元。執(zhí)行單元的應(yīng)答信號觸發(fā)clear將讀出的令牌記錄清空,此時,發(fā)射電路再次進入空閑狀態(tài)。發(fā)射電路在發(fā)送操作過程中不處理新的發(fā)送請求。
5.5.1令牌暫存器
THDFAES04中令牌暫存器的存儲單元由寄存器實現(xiàn)。圖16是一個4單元暫存器的示意圖,圖中僅畫出了一組存儲單元。每組單元由一組寄存器和一個flag標志電路組成,寄存器時鐘(clk)的上升沿在clr為0時將flag置1,清除信號(clr)的正脈沖在clk為0時可以將flag復位。WA和WD由輸入令牌解析,reqin和ackin分別表示輸入通道端口的寫請求和寫應(yīng)答信號。只有當flag信號為0時才能接受請求,數(shù)據(jù)在寫請求被接受后寫入寄存器。輸出數(shù)據(jù)則通過一級多路選擇器(MUX)直接輸出,RD隨RA即時變化。CLR信號經(jīng)過RA的選擇觸發(fā)對應(yīng)單元的clr信號,當所有clr信號都降低后CLR_done下降,作為記錄清除過程結(jié)束的標志。
5.5.2匹配單元
圖17是一個基本的4請求匹配單元結(jié)構(gòu),其由匹配邏輯部分、請求仲裁部分和選擇保持-請求阻塞電路三部分組成。
匹配邏輯部分實現(xiàn)匹配函數(shù)計算,由組合電路實現(xiàn),計算結(jié)果通過C單元送達仲裁器成為請求信號。
THDFAES04中的仲裁器采用了May D.論文中的R-box電路,如圖18所示,這是一個4選1的仲裁邏輯。I0~I3表示輸入的請求,A0、A1是被選中的請求的序號。
暫存器進行數(shù)據(jù)讀寫的時刻不確定,設(shè)計時認為觀測端口的信號隨時可能變化,仲裁器的輸出端也隨之不斷變化,因此需要同步select信號與令牌發(fā)送,以保證輸出通道的請求信號有效時,發(fā)射電路的輸出數(shù)據(jù)是穩(wěn)定的。因此在仲裁器輸出端設(shè)置select鎖存器。假設(shè)初態(tài)fetch=0,鎖存器導通(lock=0),當select信號變?yōu)橛行д埱蟮男蛱?,fetch上升,發(fā)射電路接收到fetch信號后則將lock信號變高,鎖存select,待發(fā)射完畢,對應(yīng)令牌清空后,被選中的請求信號復位——此時select仍然沒有變化——fetch也隨之復位。發(fā)射電路轉(zhuǎn)入空閑狀態(tài)后,lock變低,鎖存器透明,直至再次出現(xiàn)fetch=1的情況。另一方面,圖中的C單元和4輸入或門組成了反饋阻塞電路。只要請求信號中存在有效請求就會阻塞新請求的通過,但是請求的復位不被阻塞,只有所有仲裁輸入端的有效請求都復位后C單元才重新導通。阻塞電路使得仲裁器輸出經(jīng)過一定時間后必然能夠穩(wěn)定,在fetch上升后經(jīng)過相同的延時再采樣select即可避免“冒險”。顯然,此時的select值可能已經(jīng)不是觸發(fā)fetch的請求的序號,但是必定對應(yīng)一個有效請求,因此并不影響電路功能。
5.5.3發(fā)射電路
圖19是發(fā)射電路部分的邏輯圖與主要信號波形圖。
圖19a中R與C單元是令牌的接收通道;陰影部分的電路是地址鎖存信號lock的產(chǎn)生電路;req和ack分別是輸出通道端口的請求信號和應(yīng)答信號,ackout是下一級電路的應(yīng)答信號。其余信號與圖15對應(yīng);d1是用于延時匹配的延時單元。
電路中所有時序單元的初始狀態(tài)全為0,fetch的上升沿經(jīng)過d1(select的穩(wěn)定時間)延時后成為fetch_d信號,fetch_d上升則發(fā)射電路進入發(fā)射狀態(tài)(對應(yīng)圖中帶陰影的區(qū)域)。fetch_d的上升沿首先觸發(fā)lock信號,將有效請求的序號鎖存。req由lock門控輸出。lock信號在req的上升沿至clr_ack下降沿之間的時間內(nèi)始終保持高電平。
THDFAES04中各個HMF結(jié)構(gòu)都是在上述典型結(jié)構(gòu)的基礎(chǔ)上稍加變化而來的,首先實際實現(xiàn)中各個發(fā)射電路都合并到各暫存單元的暫存器輸出部分中了,下面具體介紹它們的具體參數(shù)和變化之處——在下文沒有特別說明的內(nèi)容即與上述典型結(jié)構(gòu)相同
√AddKey的HMF結(jié)構(gòu)
a)AK暫存單元
AK暫存單元是待執(zhí)行AddKey運算的令牌暫存單元其中的存儲部分分為密鑰字存儲區(qū)和狀態(tài)字存儲區(qū)兩部分,另外還包含了令牌解析和打包電路。
(1)密鑰字存儲區(qū)有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位內(nèi)部存儲器BLOCKH,BLOCKL和1個2位操作標記寄存器KES。BLOCKL是低段密鑰字的“分組值”;BLOCKH存儲高段密鑰字的“分組值”。KES用來控制密鑰擴展的時序,其狀態(tài)機如圖20所示。
在每次讀取相應(yīng)的密鑰字進行f/g變換和讀取密鑰進行密鑰擴展時KES的狀態(tài)發(fā)生變化。它的初始狀態(tài)是00,即準備計算f的狀態(tài)。
密鑰字部分和中間密鑰字部分的記錄格式如下
密鑰字記錄(KR)
每個記錄的滿/空標志位(flag)是當數(shù)據(jù)被寫入時(op=(11)2)置1,當op=(11)2時被復位。
f/g記錄(FR)
它含有兩個寫端口,分別是密鑰字和中間密鑰字的寫入端口,包含寫入數(shù)據(jù)總線和寫地址;兩個讀端口,分別對應(yīng)令牌7和令牌9的數(shù)據(jù)域,都是包含數(shù)據(jù)總線和讀地址,對應(yīng)令牌7數(shù)據(jù)域的總線寬度為32位,從Nk個密鑰字和2個中間密鑰字中選擇一個讀出,對應(yīng)令牌9數(shù)據(jù)域的總線寬度160位,一次讀出一個密鑰段和一條中間密鑰字。
(2)狀態(tài)字存儲區(qū)有4個狀態(tài)字存儲單元
地址空間(00)2-(11)2。
依次存儲“狀態(tài)”中的第0-第3列
記錄格式(SR)
狀態(tài)字區(qū)有一個寫端口,包括數(shù)據(jù)總線(寬度為26)、寫地址、寫信號;一個置數(shù)端口,與初始密鑰寄存器的輸出相連,256位寬,由load信號作為置位信號;有一個讀端口,數(shù)據(jù)總線是36位,對應(yīng)令牌7的data域與color域。當AorT為1時,輸出地址所指的狀態(tài)字,當AorT為0時,則輸出0。
AK暫存單元端口包括三個輸入通道端口,通道5端口接收狀態(tài)字令牌;通道6端口接收經(jīng)過非線性變換的中間密鑰字f,g令牌;通道9端口接收新的擴展密鑰字;有兩個輸出通道端口通道7端口發(fā)送AddKey的操作數(shù)令牌(令牌7);通道10端口發(fā)送密鑰擴展的操作數(shù)令牌。各令牌的打包函數(shù)見令牌傳輸部分。此外,還有置數(shù)端口包括初始密鑰輸入總線、load、WK信號。
b)MatcherII
它檢查AK暫存單元中的狀態(tài)區(qū)和密鑰區(qū),發(fā)現(xiàn)就緒的狀態(tài)字-密鑰字對,或就緒的變換密鑰則隨機選取其中之一,將相應(yīng)的地址和選擇信號(ssel,ksel,AorT)傳給AK暫存單元。Matcher II讀取的觀測信號包括狀態(tài)字記錄的color域與flag標志,密鑰字的op域與flag標志。匹配條件表達式見后面的令牌傳輸關(guān)系部分;它的仲裁邏輯分為兩級,第一級是從滿足AddKey運算條件的請求中選擇一個,第二級是選擇執(zhí)行AddKey操作還是執(zhí)行變換密鑰字的轉(zhuǎn)發(fā);對應(yīng)的發(fā)射令牌接收通道是通道7,輸出的請求選擇信號包括狀態(tài)字讀地址(ssel)和密鑰字讀地址(ksel)與令牌類型標志信號AorT,對應(yīng)的令牌發(fā)射信號是fetch_II信號;當發(fā)送的是變換密鑰字令牌時,通道7的應(yīng)答信號將密鑰字記錄的op域的輪變換位置1,而不是復位flag標志。如果exp_stop=1,則Matcher II不發(fā)送變換密鑰字轉(zhuǎn)發(fā)的操作請求。
上述匹配單元中的仲裁器的隨機控制碼由隨機順序控制序列寄存器I提供。
√密鑰擴展的HMF結(jié)構(gòu)
密鑰擴展的HMF結(jié)構(gòu)的令牌暫存器與AddKey的HMF結(jié)構(gòu)共用AK暫存單元的密鑰區(qū),此外,它的暫存器還包括AK暫存單元的中間密鑰字單元。
Matcher K的觀測信號包括密鑰字的op域與flag標志、中間密鑰字的flag、KES、BLOCKL和BLOCKH;匹配條件見后面令牌轉(zhuǎn)移關(guān)系部分;輸出的請求選擇信號是段標記step,打包邏輯根據(jù)step,將密鑰區(qū)的相應(yīng)數(shù)據(jù)以及BLOCK值打包成令牌10待發(fā)送,具體打包邏輯見令牌傳輸關(guān)系部分;由于密鑰擴展運算不會同時存在多個待執(zhí)行操作的令牌組,所以內(nèi)部沒有仲裁電路;令牌發(fā)射信號是fetch_k;當收到通道10的應(yīng)答信號則將step所指段內(nèi)所有記錄的op域的擴展位置1。在Wk為0時,即非工作狀態(tài),load信號的上升沿將初始密鑰寄存器中的數(shù)據(jù)寫入密鑰字區(qū)。
√EU單元的HMF結(jié)構(gòu)
a)EU暫存單元
EU暫存單元中包含一個變換密鑰字存儲單元key store和兩個相同的狀態(tài)存儲單元store0,store1.
(1)store0/store1
地址空間(00)2-(11)2,依次存儲ShiftRow前“狀態(tài)”中的第0-第3列,每列又分為4行,對應(yīng)狀態(tài)中的行和列;
store0和store1中包括兩種單元,它們的記錄形式不同。頭記錄(HDR)——對應(yīng)狀態(tài)的第0行,存儲記錄格式如下
普通記錄(DR)對應(yīng)第1行到第3行,記錄格式如下
store0和store1各包含一個讀端口,一個寫端口,都有各自的地址和數(shù)據(jù)總線。寫入時各行的地址相同,讀出時每行有獨立的讀地址。
(2)key store
只有一個存儲單元。存儲密鑰擴展的中間結(jié)果
記錄格式(KR)
EU暫存單元中的兩個狀態(tài)存儲單元是按照乒乓式讀寫的流水作業(yè)方式根據(jù)輸入令牌的輪次標記,當輪次為偶數(shù)時寫入store0,store1中的數(shù)據(jù)必是前一輪的狀態(tài),從store1中讀取數(shù)據(jù)處理當令牌的輪次為奇數(shù),則寫入store1,store0是前一輪狀態(tài)其中有待處理的數(shù)據(jù),從store0中讀取數(shù)據(jù)處理。在一個單元中無待處理的數(shù)據(jù),另一個單元中出現(xiàn)待處理數(shù)據(jù)時store0和store1的角色交換。圖12中的pp信號即是輸出狀態(tài)暫存單元的選擇信號,它為1store1輸出,為0store0輸出。
EU暫存單元有一個輸入傳輸通道端口,與通道1相連;一個輸出傳輸通道端口,與通道2相連,令牌的打包函數(shù)見令牌傳輸關(guān)系部分。EU暫存單元的功能是接收通道1發(fā)來的令牌1,從中解析出令牌類型(狀態(tài)令牌還是密鑰令牌)、寫地址和記錄數(shù)據(jù),并將記錄寫入相應(yīng)的存儲單元中;根據(jù)pp,s_f,raddr輸出相應(yīng)的狀態(tài)字或變換密鑰字,與其它控制信息一起打包成令牌2;fetch_I信號觸發(fā)2#通道端口的請求信號,將打包好的令牌發(fā)送給通道2,通道端口2的應(yīng)答信號到來,則將被發(fā)送令牌對應(yīng)的記錄的flag復位。
b)MatcherI
Matcher I包括Matcher I內(nèi)部包括兩個狀態(tài)令牌匹配單元和一個密鑰令牌匹配單元。store0的匹配結(jié)果matched0和store1的匹配結(jié)果matched1被送到乒乓控制信號pp的產(chǎn)生電路,pp的產(chǎn)生電路如圖21所示
store0/store1的觀測信號包括每個單元的flag位,以及各個HDR的color域、op域;輸出的請求選擇信號包括store0/store1的讀地址raddr(2位);具體匹配條件見令牌傳輸關(guān)系部分;狀態(tài)匹配單元內(nèi)部有一個4選1的仲裁電路,從匹配的待執(zhí)行EU單元運算的令牌中隨機選取一個。
密鑰匹配單元的觀測信號是密鑰存儲單元的flag標志;匹配條件是flag=1。在MatcherI中還有一個2選1的仲裁電路,從狀態(tài)匹配單元的請求和密鑰匹配單元的請求中隨機選取一個,對應(yīng)的操作選擇信號是s_f;對應(yīng)的令牌發(fā)送信號為fetch_I。
上述匹配單元中的仲裁器的隨機控制碼由隨機順序控制序列寄存器I提供。
√輸出HMF
a)輸出暫存單元
輸出暫存單元是密文重排的暫存單元,其作用是將亂序到達的結(jié)果令牌(11#)攜帶的密文數(shù)據(jù)暫存,然后再由輸出模塊按正確順序讀出。其由一個4×32的存儲單元和令牌解析電路組成。其中存儲單元地址空間為(00)2-(11)2。分別對應(yīng)密文狀態(tài)中的0-3列。
記錄格式為4個字節(jié)的數(shù)據(jù)。每個記錄同樣對應(yīng)一個滿/空標志位flag。
它有一個輸入通道端口與傳輸通道11相連;輸出端口包括來自輸出模塊的2位讀地址和清空信號OUTACK。
b)Matcher OK
它檢查輸出暫存單元的4個flag信號,當所有的flag都為1時表示4個密文字都已到達。則將結(jié)束信號OK變高,通知輸出模塊開始讀取數(shù)據(jù),當flag被復位后,OK變低。由于沒有多個請求同時出現(xiàn)的情況,因此沒有仲裁電路和請求選擇信號,也沒有對應(yīng)的令牌發(fā)射信號。
5.6密鑰擴展運算單元(KeySchedule)
KeySchedule單元輸入令牌10,解析令牌10后,經(jīng)過Key Schedule計算后將結(jié)果打包成令牌9輸出。具體處理操作見后面的“令牌傳輸協(xié)議部分”。由輸入傳輸通道端口、邏輯部分(包括令牌解析、處理和打包)與輸出傳輸通道端口三級組成。
5.7AddKey
AddKey單元輸入令牌7,解析令牌7后,對其中的數(shù)據(jù)執(zhí)行AddKey操作,將結(jié)果重新打包成令牌8發(fā)送。具體處理操作見后面的“令牌傳輸協(xié)議部分”。由輸入傳輸通道端口、邏輯部分(包括令牌解析、處理和打包)與輸出傳輸通道端口三級組成。
5.8EU
EU單元輸入令牌2,解析令牌2后,根據(jù)令牌類型和輪次對其中的數(shù)據(jù)執(zhí)行相應(yīng)的操作,將結(jié)果重新打包成令牌3發(fā)送。具體處理操作見后面的“令牌傳輸協(xié)議部分”。由輸入傳輸通道端口、邏輯部分(包括令牌解析、處理和打包)與輸出傳輸通道端口三級組成。
5.9Switch
Switch是一個2通道輸入-2通道輸出的交換開關(guān),兩個輸入通道開端口分別是來自輪變換輪的3#通道端口和來自輸入模塊的4#通道端口;此外還有輸入信號WK。其在空閑狀態(tài)(WK=0)將4#通道端口發(fā)來的令牌4解析后,將其中的數(shù)據(jù)重新打包成令牌5發(fā)送給通道5;在工作狀態(tài)(WK=1)將3#通道發(fā)來的令牌3解析后根據(jù)類型,將狀態(tài)令牌重新打包成令牌5發(fā)送給通道5;將中間密鑰字令牌重新打包成令牌6發(fā)送給通道6。其電路結(jié)構(gòu)如圖22所示,其中的箭頭表示異步傳輸通道,圖中的DEMUX和MUX也是異步控制部件①,DEMUX在傳來的Key的數(shù)據(jù)等于1的情況下,把輸入端令牌數(shù)據(jù)復制到通道6,否則復制到MUX的輸入通道,MUX在WK=0時,把通道4的數(shù)據(jù)傳遞到通道5,否則傳遞DEMUX的0輸出端數(shù)據(jù)到通道5;在輸入端,通道3來的令牌3被分解為兩個令牌請求,分別送到DEMUX的輸入端和控制端,控制端是令牌3的屬性域;MUX的控制端則是WK信號。令牌間的各個域的映射關(guān)系,見后面的令牌傳輸協(xié)議部分。
5.10輪更新單元
錯誤!未找到引用源。是輪更新單元的電路結(jié)構(gòu)。其中第一級DEMUX與圖22相同,判斷令牌屬性,如果是密鑰令牌則直接復制到通道1,如果是狀態(tài)令牌,則經(jīng)過第二級DEMUX,如果輸入令牌的color域等于Nr,則把令牌的一部分復制到通道11,同時對令牌的column域檢查(即圖中的exp_stop?單元),如果column>3,則則表示所有的擴展密鑰已經(jīng)全部產(chǎn)生(因為擴展密鑰是一次產(chǎn)生一個“段”的。)則觸發(fā)exp_stop信號(exp_stop信號在新一輪運算啟動時復位。);如果令牌的color<Nr則將令牌的color域加1后復制到通道1;圖中與通道1相連的矩形是異步電路中的基本部件——“Join”控制部件它的兩路輸入不會同時有令牌到達,它把到達的令牌復制到輸出通道。
5.11隨機順序控制序列寄存器I
THDFAES04的隨機順序控制序列采用外部輸入的方法,圖12中的隨機順序控制序列寄存器I對應(yīng)發(fā)明內(nèi)容中的Matcher I隨機控制碼產(chǎn)生電路,它是一個環(huán)形的移位寄存器,在運算開始前通過外部輸入數(shù)據(jù)端口把一組隨機序列輸入到隨機順序控制序列寄存器I中;在工作過程中寄存器中的數(shù)據(jù)循環(huán)移位——每次fetch_I的下降沿移位一次,其中有一級寄存器的輸出連接到Matcher I的隨機碼輸入端。
5.12隨機順序控制序列寄存器II
THDFAES04的隨機順序控制序列采用外部輸入的方法,圖12中的隨機順序控制序列寄存器I對應(yīng)發(fā)明內(nèi)容中的Matcher II隨機控制碼產(chǎn)生電路,它是一個環(huán)形的移位寄存器,在運算開始前通過外部輸入數(shù)據(jù)端口把一組隨機序列輸入到隨機順序控制序列寄存器II中;在工作過程中寄存器中的數(shù)據(jù)循環(huán)移位——每次fetch_II的下降沿移位一次,其中有一級寄存器的輸出連接到Matcher II的隨機碼輸入端。
補充說明為了突出重點在上述描述中沒有提到復位信號InterRst_的連接關(guān)系,事實上上述各單元除了輸入模塊產(chǎn)生InterRst_外,其余模塊都有InterRst_的輸入,用于電路初始化。
3.令牌傳輸協(xié)議
如下的令牌傳輸協(xié)議在上述部件和結(jié)構(gòu)上執(zhí)行,以實現(xiàn)AES加密算法
①可參見介紹異步電路的書籍
5.13令牌定義
令牌1
令牌2同令牌1
令牌3
令牌4
令牌5
令牌6
令牌7
令牌8
令牌9
令牌10
令牌11
5.14數(shù)據(jù)、令牌轉(zhuǎn)移關(guān)系
令牌1至EU暫存單元 記錄的變換協(xié)議
如果令牌1的key等于0,則當color為偶數(shù)時寫入store0,color為奇數(shù)時寫入store1,寫入地址為令牌1的column域的值,令牌1各個域與HDR、DR1-3各個域的映射關(guān)系如圖24(a)所示,其中令牌1的data域的最低字節(jié)(第7到第0位)至最高字節(jié)(第31位到第24位)依次分別寫入第0行至第3行的存儲單元中;如果令牌1的key域等于1,則令牌寫入EU暫存單元的key store中,令牌1各個域與KR各域的映射關(guān)系如圖24(b)所示。
EU暫存單元記錄至令牌2
Matchr I對store0或store1中的數(shù)據(jù)進行匹配,匹配條件是存在列數(shù)i,滿足第一行第i列、第二行第i-C1列,第三行第i-C2列,第四行第i-C3列的存儲記錄都是“滿”,對應(yīng)的匹配單元輸出,即store0和store1的讀地址等于i。它同時對key store中的變換密鑰字進行匹配,匹配條件是FR記錄是“滿”。當符合上述條件的數(shù)據(jù)多于一個時,則隨機選取一個發(fā)送,對于狀體令牌,如果pp=1則當store1中的數(shù)據(jù)滿足匹配條件時由store1的相應(yīng)數(shù)據(jù)打包成令牌2發(fā)射,否則當store0中的數(shù)據(jù)滿足匹配條件時由store0的相應(yīng)數(shù)據(jù)打包成令牌2發(fā)射;如果pp選擇的狀態(tài)存儲區(qū)中沒有滿足條件的令牌數(shù)據(jù),而另一個狀態(tài)存儲區(qū)中存在滿足匹配條件的令牌數(shù)據(jù),則pp取反。狀態(tài)存儲區(qū)中的HDR、DR記錄與令牌2的各個域的映射關(guān)系如圖25(a)所示。FR記錄各個域與令牌2的各個域的映射關(guān)系如圖25(b)所示。
令牌2->令牌3
令牌2到令牌3的各個域間的映射關(guān)系如
圖26所示。其中令牌2的data域經(jīng)過EU單元計算后,結(jié)果作為令牌3的data域。
EU計算的具體操作根據(jù)令牌2的其它域的取值而定
當key=0且op=Srd時,執(zhí)行Srd操作;
當key=0且op=SM時,執(zhí)行SM操作;
當key=1且remain=0時,執(zhí)行RC操作;
當key=1且remain=1時,若Nk>6,執(zhí)行Srd操作;若Nk<=6,結(jié)果即等于令牌2的data域。上述各個操作的流程圖如圖27所示。RC運算中用到的輪常量RC在線產(chǎn)生,即芯片初始化時將RC寄存器復位為初值“(01)16”,每次執(zhí)行RC運算后(通道3端口應(yīng)答信號的上升沿表示運算結(jié)束)觸發(fā)寄存器時鐘上升即把當前RC值乘2后存入RC寄存器(此處的乘法是定義在GF(28)域上的乘法);Srd用ROM實現(xiàn)附錄A所述的S盒查表操作;MixCo1即實現(xiàn)附錄A式1的計算;
令牌3->令牌5和令牌6
當令牌3的key=0時,產(chǎn)生令牌5,當令牌3的key=1時,產(chǎn)生令牌6。令牌3到令牌5和令牌6的各個域間的映射關(guān)系如圖28所示
令牌4->令牌5
令牌4各個域到令牌5的各個域間的映射關(guān)系如圖29所示。
令牌5->AK暫存單元中的SR
令牌5的內(nèi)容存儲到AK暫存單元的狀態(tài)暫存區(qū)中,存儲地址是令牌5的address,其它各個域與SR的各個域的映射關(guān)系如圖30所示。
令牌6->AK暫存單元中的KR
令牌6的數(shù)據(jù)存入AK暫存單元的中間密鑰字存儲區(qū),地址是它的address域,其它各個域與KR的各個域的映射關(guān)系如圖31所示。
AK暫存單元->令牌7
Marcher II對應(yīng)的匹配條件有兩個,AddKey匹配條件是存在一對狀態(tài)令牌(用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。相應(yīng)的匹配輸出ssel=i,ksel=j(luò),AorT=0;
Trans匹配條件是KES=(00)2且地址等于Nk-1的密鑰存儲單元不空,且exp_stop=0。相應(yīng)的匹配輸出ssel=0,ksel=Nk-1,AorT=1;或者Nk>4時KES=(11)2且地址等于3的密鑰存儲單元不空,相應(yīng)的匹配輸出ssel=0,ksel=3,AorT=1;或Nk=4時KES=(11)2且地址等于7的密鑰存儲單元不空且exp_stop=0,相應(yīng)的匹配輸出ssel=0,ksel=7,AorT=1;
如果同時有多個令牌(或令牌對)滿足上述條件,則隨機選擇一個。當發(fā)送狀態(tài)令牌,即發(fā)送AddKey操作令牌時的令牌7打包映射關(guān)系如圖32a所示;當發(fā)送密鑰令牌,即進行變換密鑰字轉(zhuǎn)發(fā)時的令牌7打包映射關(guān)系如圖32b-c所示,它們分別對應(yīng)Nk>4和Nk=4的情況。
令牌7->令牌8
令牌7與令牌8的各個域間的映射關(guān)系如圖33所示。其中,令牌7的datal和data2逐位異或的結(jié)果作為令牌8的data域。
令牌8->令牌1或令牌11
當令牌8的key=0且color=Nr時產(chǎn)生令牌11,各個域的映射關(guān)系如圖34a所示;當令牌8的key=0且color<Nr時,執(zhí)行輪次更新后產(chǎn)生令牌1,各個域的映射關(guān)系如圖34(b)所示,其中令牌8的color域加1后作為令牌1的color值,當令牌8的color=Nr-1時,令牌1的op=Srd,否則op=SM;當令牌8的key=1時,即密鑰令牌,產(chǎn)生令牌1,令牌8的內(nèi)容直接復制到令牌1種,映射關(guān)系如圖34c所示。
令牌10->令牌9
令牌10到令牌9的各個域間的映射關(guān)系如圖35所示。其中令牌10的f,k0,k1,k2,k3經(jīng)過KeySch計算的結(jié)果作為令牌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寫入密鑰暫存區(qū)的低段,令牌9的BLOCK值賦給BLOCKL,寫入的同時將低段暫存單元的op域的兩位都復位成0;如果令牌9的part=1,則令牌9的data寫入密鑰暫存區(qū)的高段,令牌9的BLOCK值賦給BLOCKH,寫入的同時將高段暫存單元的op域的兩位都復位成0。
令牌9寫入時要更新KES的狀態(tài),具體狀態(tài)轉(zhuǎn)移關(guān)系是
當KES=(01)2時,如果Nk>4且令牌9的part=0,或者Nk=4且令牌9的part=1,則KES變?yōu)?11)2;
當KES=(10)2時,如果Nk>4且令牌9的part=1,或Nk=4且令牌9的part=0,則KES變?yōu)?00)2;
MatchingUnit->令牌10
Matcher K對AK暫存單元的密鑰暫存區(qū)中的數(shù)據(jù)進行匹配,匹配條件是所有低段密鑰記錄的op的低位都為0且中間密鑰字1存在,相應(yīng)的匹配單元輸出step=0;或者存儲地址為4到存儲地址為Nk-1的密鑰記錄的op的低位都為0且中間密鑰字2存在,相應(yīng)的匹配單元輸出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。
權(quán)利要求
1.亂存執(zhí)行的數(shù)據(jù)流AES加密電路結(jié)構(gòu),其特征在于,該電路結(jié)構(gòu)是在一個數(shù)據(jù)流加密專用集成電路上實現(xiàn)的,該電路結(jié)構(gòu)遵從以Rijndael算法為最終算法的高級數(shù)據(jù)加密標準,記為AES,使用數(shù)據(jù)流模式實現(xiàn)亂序加密,該電路結(jié)構(gòu)含有
a.傳輸通道,是兩個部件間的數(shù)據(jù)傳輸接口,所傳輸?shù)臄?shù)據(jù)是相應(yīng)編號的令牌,其中包括一個令牌輸入數(shù)據(jù)總線、一個數(shù)據(jù)輸出總線和輸入請求與應(yīng)答信號、輸出請求與應(yīng)答信號,該傳輸通道與外部的接口就是通道端口;
b.輸入單元,是芯片內(nèi)核與外部的接口,實現(xiàn)把明文和密鑰按照協(xié)議要求的時序輸入并通過4#傳輸通道將明文送入內(nèi)核部分、把密鑰寫入初始密鑰存儲器的功能,同時產(chǎn)生該電路結(jié)構(gòu)中內(nèi)核的各個單元所需的復位信號InterRst_和初始密鑰置入信號load;所述的4#通道傳輸?shù)牧钆?,命名為令?包括一個32位的數(shù)據(jù)域,一個2位的column域;
c.通道開關(guān)單元Switch,是一個2傳輸通道輸入-2傳輸通道輸出的交換開關(guān),此外還接收來自工作狀態(tài)寄存器的輸入信號WK,當WK=0時,該通道開關(guān)單元處于空閑狀態(tài),接收所述輸入單元經(jīng)4#通道送來的明文數(shù)據(jù),經(jīng)過解析后,把其中的數(shù)據(jù)重新打包成狀態(tài)字令牌,發(fā)送給5#通道,所述的5#通道傳輸?shù)牧钆?,命名為令?包括一個32位的數(shù)據(jù)域,一個4位的表示輪次的color域和一個2位的地址域,根據(jù)令牌4打包時,令牌5的數(shù)據(jù)域直接復制令牌4的數(shù)據(jù)域,令牌5的color域設(shè)為0,令牌5的地址域復制令牌4的column域;當WK=1時,處于工作狀態(tài),把3#通道發(fā)來的令牌解析后,根據(jù)不同的類型,把狀態(tài)字令牌重新打包成一個令牌發(fā)給5#通道,把密鑰字令牌重新打包成一個令牌發(fā)送給通道6;所述的3#通道傳輸?shù)牧钆?,命名為令?包括一個1位的屬性域和一個32位的數(shù)據(jù)域,當屬性域等于0時,是狀態(tài)字令牌,還包括一個1位的操作符域、一個2位的column域、一個4位的color域,把它重新打包成令牌5時,其中的數(shù)據(jù)域直接復制令牌3的數(shù)據(jù)域,color域直接復制令牌3的color域,地址域直接復制令牌3的column域,當令牌3屬性域等于1時,是密鑰字令牌,還包括一個1位的fadd位和6位不關(guān)心的數(shù)據(jù),所述發(fā)送到6#通道的令牌,命名為令牌6,是下述的中間密鑰字令牌,包括一個32位的數(shù)據(jù)域和一個1位的地址域,把它打包成令牌6時,令牌3的數(shù)據(jù)域直接復制到令牌6的數(shù)據(jù)域,fadd域復制到令牌6的地址域;
d.初始密鑰存儲器是一個256位的寄存器組,從所述輸入單元接收時鐘信號和輸入的密碼密鑰數(shù)據(jù),把來自所述輸入單元的密碼密鑰直接接收存入;
e.AK暫存器單元,是待執(zhí)行AddKey運算的令牌暫存單元,包括密鑰字存儲器、狀態(tài)字存儲器以及令牌解析和打包電路,其中,密鑰字存儲器有8個密鑰字存儲單元,2個中間密鑰字存儲單元、兩個5位內(nèi)部存儲器BLOCKH和BLOCKL及一個2位狀態(tài)寄存器KES,該密鑰字存儲區(qū)有3位地址,二進制表示的地址空間是000-111,依次存儲序號模密鑰分組列數(shù)Nk等于0-7的擴展密鑰字,高段為100-111,低段為000-011,每條存儲記錄包括一個32位的數(shù)據(jù)域、一個1位的fadd域、一個輪變換標記位和一個擴展標記位;所述密鑰字存儲器中地址等于Nk-1的單元存儲的數(shù)據(jù)稱為變換密鑰字1,Nk不等于4時地址等于3的記錄數(shù)據(jù)稱為變換密鑰字2,Nk等于4時的變換密鑰字2是地址等于7的記錄數(shù)據(jù);該狀態(tài)字存儲區(qū)有2位地址,二進制表示的地址空間是00-11,依次存儲狀態(tài)中的第0-3列,每條記錄包括一個32位的數(shù)據(jù)域、一個4位的color域;該中間密鑰字存儲區(qū),有一位地址空間0-1,依次存儲從通道端口6來的中間密鑰字,該中間密鑰字是AES密鑰擴展算法中定義的非線性函數(shù)的計算結(jié)果,每條存儲記錄包括一個32位的數(shù)據(jù)域;所述的暫存單元的每個存儲單元都對應(yīng)一個標記為flag的“滿/空”標記位,當單元寫入時flag置1,表示滿,當數(shù)據(jù)讀出后flag復位,表示空;該BLOCKH存儲高段密鑰字的“分組值”,BLOCKL存儲低段密鑰字的“分組值”,所述“分組值”是指所有輪擴展密鑰序列按所述Nk個一組分組后,所得到的組的序號,該擴展密鑰由初始密鑰擴展而成,該擴展密鑰的總長為4(Nr+1),Nr為迭代輪數(shù);該AK暫存器單元有三個輸入通道端口通道5端口接收令牌5并寫入狀態(tài)字存儲區(qū),寫入的地址是令牌5的地址域的值,狀態(tài)字記錄的數(shù)據(jù)域和color域分別等于令牌5的數(shù)據(jù)域和color域,通道6端口接收令牌6,寫入中間密鑰字區(qū),寫入地址是令牌6的地址域的值,寫入記錄的數(shù)據(jù)域直接復制令牌6的數(shù)據(jù)域,通道9端口接收新的擴展密鑰字令牌并寫入密鑰字存儲區(qū),另外,密鑰字存儲區(qū)還有一個置數(shù)端口,與所述初始密鑰寄存器的輸出端相連,256位寬,由所述load信號作置位信號;該AK暫存器單元有兩個輸出通道端口;通道7端口發(fā)送作AddKey運算或變換密鑰字轉(zhuǎn)發(fā)用的操作數(shù)令牌,通道10端口發(fā)送密鑰擴展運算用的操作數(shù)令牌;
e1.所述的通道9端口傳輸?shù)牧钆?,命名為令?,包括4個32位的數(shù)據(jù)域k0-k3、一個5位的BLOCK域和一個1位的part域,令牌9part等于0則k0-k3依次寫入密鑰字存儲區(qū)地址為000-011的單元,所述地址用二進制表示,令牌9的BLOCK值賦給BLOCKL,同時將所有低段單元的輪變換標記位和擴展標記位復位為0,令牌9part等于1則k0-k3依次寫入密鑰字存儲區(qū)二進制表示的地址為100-111的單元,令牌9的BLOCK值賦給BLOCKH,同時將所有高段單元的輪變換標記位和擴展標記位復位為0;
e2.所述通道7端口發(fā)送的令牌,命名為令牌7,包括2個32位的數(shù)據(jù)域data1和data2、一個1位的屬性域,屬性域的值等于發(fā)送時下述的AorT信號的取值當AorT等于0時,執(zhí)行AddKey操作,令牌7是狀態(tài)字令牌,它還包括一個4位的color域、一個2位的column域,打包時,把下述的ssel信號的值復制到它的column域、地址等于ssel的狀態(tài)字存儲記錄的數(shù)據(jù)域復制到令牌7的data1域、該狀態(tài)記錄的color域復制到令牌7的color域,地址等于下述ksel值的密鑰存儲記錄的數(shù)據(jù)域復制到令牌7的data2域,通道7端口的應(yīng)答信號將讀取的狀態(tài)字記錄情空,把讀取的密鑰字記錄的輪變換位變成1;當AorT等于1時,執(zhí)行變換密鑰字轉(zhuǎn)發(fā)操作,令牌7是密鑰令牌,除數(shù)據(jù)域和屬性域外還包括一個1位的操作符域、一個1位的fadd域與4位不關(guān)心的數(shù)據(jù),打包時,data1域等于0,地址等于下述ksel值的密鑰存儲記錄的數(shù)據(jù)域復制到它的data2域;ksel等于Nk-1時,轉(zhuǎn)發(fā)變換密鑰字1,fadd等于0,操作符域等于0,表示此令牌將執(zhí)行下述f變換,Nk等于4時,若ksel等于7,則表示轉(zhuǎn)發(fā)變換密鑰字2,fadd域等于1,操作符域等于0,表示此令牌將執(zhí)行下述f變換,若Nk不等于4且ksel等于3,則表示轉(zhuǎn)發(fā)變換密鑰字2,fadd等于1,操作符域等于1,表示此令牌將執(zhí)行下述g變換;通道7端口的應(yīng)答信號將讀取的狀態(tài)字記錄清空;
e3.所述通道10端口發(fā)送的令牌命名為令牌10,包括一個32位的中間密鑰字域、4個32位的密鑰字域k0-k3、一個5位的BLOCK域和一個1位的step域,打包時令牌10的step域等于令牌發(fā)送時所述的step信號的值,當令牌發(fā)送時刻所述step信號等于0時,令牌10的中間密鑰字域等于中間密鑰字存儲區(qū)中地址等于0的記錄的數(shù)據(jù),令牌10的BLOCK域的值等于所述BLOCKL寄存器的值,通道10端口的應(yīng)答信號把密鑰存儲區(qū)低段的4個密鑰字的擴展位都置成1,當令牌發(fā)送時刻所述step信號等于1時,令牌10的中間密鑰字域等于中間密鑰字存儲區(qū)中地址等于1的記錄的數(shù)據(jù),令牌10的BLOCK域的值等于所述BLOCKH寄存器的值,通道10端口的應(yīng)答信號把密鑰存儲區(qū)高段的所有密鑰字的擴展位都置成1;
e4.該KES控制密鑰擴展的時序,狀態(tài)都采用二進制編碼表示,KES的初始狀態(tài)二進制編碼是00,即準備計算f的狀態(tài),在此狀態(tài)下執(zhí)行變換密鑰字1轉(zhuǎn)發(fā)后,KES二進制編碼變?yōu)?1,進入執(zhí)行f變換的狀態(tài),在01狀態(tài)下讀取低段密鑰進行密鑰擴展時,KES的狀態(tài)變化為11,處于準備計算g的狀態(tài),在11的狀態(tài)下執(zhí)行變換密鑰字2操作后,KES的狀態(tài)變化為10,進入執(zhí)行g(shù)變換的狀態(tài),在10狀態(tài)下讀取高段密鑰進行密鑰擴展時,KES的狀態(tài)變化為00;
f.工作狀態(tài)寄存器,向所述輸入單元發(fā)送WK信號,向所述通道開關(guān)單元Switch發(fā)送WK信號,接收來自下述Matcher OK單元的OK信號;當OK信號上升時WK復位;
g.Matcher II匹配單元,檢查AK暫存器單元中的狀態(tài)字存儲區(qū)和密鑰字存儲區(qū),發(fā)現(xiàn)就緒的狀態(tài)字-密鑰字對或就緒的變換密鑰則隨機選取其中之一,把相應(yīng)的地址所選擇信號傳送給所述AK暫存器單位,隨后觸發(fā)令牌發(fā)射信號fetch_II,所述的選擇信號包括標記為了ssel的AddKey狀態(tài)字讀地址、標記為ksel的密鑰字讀地址、標記為AorT的表示發(fā)送令牌將執(zhí)行的操作的信號0表示AddKey運算,1表示變換密鑰字轉(zhuǎn)發(fā),標記為Trans;該Matcher II匹配單元的輸入包括AK暫存器單元的狀態(tài)字存儲區(qū)和密鑰字存儲區(qū)的觀測信號,其中包括狀態(tài)字記錄的color位與flag位,密鑰字記錄的輪變換標記位和擴展標記位、flag域,BLOCKL和BLOCKH,KES,另外還有密鑰分組列數(shù)Nk;所述的“就緒”是指計算所有被觀測狀態(tài)字和密鑰字的序列號,尋找序列號相同且flag都為1的狀態(tài)字-密鑰字對,或者根據(jù)KES狀態(tài)檢測并發(fā)現(xiàn)相應(yīng)的變換密鑰字;所述fetch_II信號到來,則觸發(fā)所述AK暫存單元把令牌發(fā)送給7#通道;當被發(fā)送的狀態(tài)字被清空,或者KES狀態(tài)改變,則fetch_II復位;
h.Matcher K匹配單元,檢查密鑰字存儲區(qū)和中間密鑰字存儲區(qū)的觀測信號輪變換標記位和擴展標記位、flag和KES狀態(tài);當KES處于密鑰擴展狀態(tài)下,且相應(yīng)的密鑰字段和中間密鑰字段已準備就緒則把標記為step的密鑰擴展讀地址變?yōu)橄鄳?yīng)的值1為高段擴展,0為低段擴展,并觸發(fā)令牌發(fā)射信號fetch_K,所述的AK暫存器單元根據(jù)step信號把密鑰區(qū)的相應(yīng)數(shù)據(jù)以及BLOCK值打包成令牌等待發(fā)送,當fetch_K信號來到時,觸發(fā)所述AK暫存單元把該令牌經(jīng)通道10發(fā)出;如果下述的exp_stop信號有效,Matcher K匹配單元則停止工作;
i.密鑰擴展運算單元,用Key Schedule標記,接收并解析來自通道10的令牌,經(jīng)過下述Key Schedule處理后打包成內(nèi)含所述新的擴展密鑰的令牌經(jīng)通道9發(fā)出,所述的Key Schedule的處理含有以下運算
i1.把所述令牌10的中間密鑰字域和k0-k3域作為輸入,執(zhí)行KeySch運算中間密鑰字與k0逐位異或,結(jié)果輸出作為令牌9的k0域,并與令牌10的k1逐位異或,結(jié)果輸出作為令牌9的k1,并與令牌10的k2逐位異或,結(jié)果輸出作為令牌9的k2,并與令牌10的k3逐位異或,結(jié)果輸出作為令牌9的k3;
i2.把所述令牌10的BLOCK域加1后的結(jié)果作為令牌9的BLOCK值;
i3.當Nk=4時,把所述令牌10的step域的邏輯反作為所述令牌9的part域,如果Nk>4,則把所述令牌10的step域直接復制到所述令牌9的part域;
j.AddKey運算單元,在接收并解析通道7發(fā)來的操作數(shù)令牌后,對其中的數(shù)據(jù)執(zhí)行AddKey運算后,打包成輪密鑰混合令牌,經(jīng)通道8發(fā)送,所述AddKey運算即AES算法定義的輪密鑰加法操作作用于狀態(tài)的一列;所述經(jīng)通道8發(fā)送的令牌,命名為令牌8,包括一個32位的數(shù)據(jù)域和一個1位的屬性域,當屬性域等于0時,是狀態(tài)字令牌,還包括一個4位的color域和一個2位的column域,當屬性域等于1時,是密鑰令牌,還包括一個1位的操作數(shù)域和一個1位的fadd域,打包時,把令牌7的data1與data2逐位異或的結(jié)果作為令牌8的結(jié)果,令牌7的其余域直接復制到令牌8中與之同名的域中;
k.輪更新通道開關(guān)單元,對來自通道8的令牌進行輪次檢查,若是狀態(tài)字令牌且輪次已經(jīng)達到迭代輪次Nr,則經(jīng)通道11轉(zhuǎn)發(fā)到下述輸出暫存單元;否則,把其輪次加1經(jīng)通道1轉(zhuǎn)發(fā)到下述EU暫存器單元執(zhí)行后續(xù)處理;若到達的令牌輪次為Nr,且上述與其相加的擴展密鑰屬于密鑰分組的高段,即表示密鑰擴展已經(jīng)完成,則觸發(fā)exp_stop信號;若是密鑰字令牌則直接由通道1轉(zhuǎn)發(fā)到下述EU暫存器單元執(zhí)行后續(xù)處理;所述令牌處理包括如下3情況
k1.通道11傳輸?shù)牧钆?,命名為令?1,包括一個32位的數(shù)據(jù)域和一個2位的column域,打包時,令牌8的數(shù)據(jù)域直接復制到令牌11的數(shù)據(jù)域,令牌8的column域直接復制到令牌11的column域;
k2.當令牌8的屬性域為0時,所述通道1發(fā)送的令牌,命名為令牌1,是狀態(tài)字令牌,包括一個32位的數(shù)據(jù)域、一個4位的color域、一個2位的column域一個1位的操作符域和一個1位的屬性域打包時,令牌8的數(shù)據(jù)域和column域直接復制到令牌1中同名的域中,令牌8的color域加1后的結(jié)果作為令牌1的color域,令牌1的屬性域等于0,若令牌8的color域等于Nr-1,則令牌1的操作符域標記為Srd操作,否則令牌1的操作符域標記位SM操作;
k3.如果令牌8的屬性域等于1,所述通道1發(fā)送的令牌1是變換密鑰字令牌,包括一個32位的數(shù)據(jù)域、一個1位的操作符域、一個1位的fadd域和5位不關(guān)心的數(shù)據(jù),打包時,令牌8的各域分別直接復制到令牌1中同名的域中;
l.輸出暫存單元,是一個密文重排的暫存單元,由一個4×32比特的存儲單元和令牌解析電路組成,該單元接收通道11來的亂序到達的結(jié)果令牌所攜帶的密文數(shù)據(jù)并暫存,寫入的地址是所述令牌11的column域,寫入的數(shù)據(jù)是所述令牌11的數(shù)據(jù)域,在接收到下述接收單元的讀地址信號后輸出對應(yīng)的密文狀態(tài)字;所述的暫存單元的每個存儲單元都對應(yīng)一個標記為flag的“滿/空”標記位,當單元寫入時flag置1,表示滿,當數(shù)據(jù)讀出后flag復位,表示空;
m.輸出單元,該單元是所述芯片與外部的接口、實現(xiàn)把密文按要求的時序輸出的功能;
n.Matcher OK匹配單元,檢查所述輸出暫存單元中的所有flag信號,當所有的flag都為1則表示全部密文字都已到達,則把結(jié)束信號OK變成高電位,在通知所述工作狀態(tài)存儲器的同時也通知所述輸出單元讀取所述輸出暫存單元的密文狀態(tài)字,當flag被復位后,OK信號變?yōu)榈碗娢唬?br>
o.EU暫存器單元,由一個密鑰字存儲區(qū)和兩個完全相同的狀態(tài)存儲區(qū)組成,依次標記為key store、store0和store1;其中,key store存儲密鑰擴展的變換密鑰字,一條存儲記錄包括一個32位的數(shù)據(jù)域、一個1位的fadd域和一個1位的操作符域,store0/store1依次存儲行移位之前“狀態(tài)”中的第0-第3列,每列存儲單元又分為4行,第0行的記錄包括1個8位的數(shù)據(jù)域、一個4位的color域和一個1位的操作符域,第1行至第3行的記錄包含一個8位的數(shù)據(jù)域;所述兩個狀態(tài)存儲單元按照乒乓式讀寫的流水線方式工作根據(jù)輸入令牌的輪次標記,當輪次為偶數(shù)時寫入store0,store1中的數(shù)據(jù)必是前一輪的狀態(tài),從store1中讀取數(shù)據(jù)處理;當令牌的輪次為奇數(shù),則寫入store1,store0必是前一輪狀態(tài)的待處理數(shù)據(jù),從store0中讀取數(shù)據(jù)處理;該EU暫存器單元設(shè)有一個傳輸通道端口,接收所述輪更新通道開關(guān)單元經(jīng)通道1發(fā)出的令牌1,從中解析出令牌類型狀態(tài)令牌還是密鑰令牌、寫地址和記錄數(shù)據(jù),并把記錄寫入相應(yīng)的存儲單元中;一個輸出傳輸通道端口,與通道2相連,根據(jù)下述Matcher I匹配單元輸入的讀地址、store0/store1選擇信號以及狀態(tài)/變換密鑰選擇信號輸出相應(yīng)的狀態(tài)字或變換密鑰字,與其他控制信號一起打包成令牌,經(jīng)通道2發(fā)送給下述EU運算單元;上述3個暫存區(qū)的每個存儲單元都對應(yīng)一個標記為flag的“滿/空”標記位,當單元寫入時flag置1,表示滿,當數(shù)據(jù)讀出后flag復位,表示空;
o1.所述的令牌解析方法是當所述令牌1的屬性域為0時,是狀態(tài)字令牌,寫入地址是令牌1的column域,寫入記錄的第0行的數(shù)據(jù)域是令牌1數(shù)據(jù)域的7至0位,第0行的color域是令牌1的color域,第0行的操作符域是令牌1的操作符域,寫入記錄的第1行到第3行的數(shù)據(jù)分別依次是令牌1數(shù)據(jù)域的15位至8位、23位至16位和31至24位;當所述令牌1的屬性域為1時,是密鑰令牌,令牌1的數(shù)據(jù)域復制到所述變換密鑰字存儲記錄的數(shù)據(jù)域,令牌1的fadd域和操作符域直接復制到所述變換密鑰字存儲記錄的同名域中;
o2.所述的經(jīng)通道2發(fā)送的令牌被命名為令牌2,它的打包方法是當所述的狀態(tài)/變換密鑰選擇信號等于0時,令牌2是狀態(tài)字令牌,屬性域等于0,數(shù)據(jù)域的7到0位是地址等于所述的Matcher I匹配單元輸入的讀地址的第0行記錄的數(shù)據(jù)域,數(shù)據(jù)域的15到8位是經(jīng)過AES算法定義的行移位運算后的地址等于所述讀地址的第1行記錄的數(shù)據(jù)域,數(shù)據(jù)域的23到16位是經(jīng)過AES算法定義的行移位運算后的地址等于所述讀地址的第2行記錄的數(shù)據(jù)域,數(shù)據(jù)域的31到24位是經(jīng)過AES算法定義的行移位運算后的地址等于所述讀地址的第3行記錄的數(shù)據(jù)域,令牌2的color域和操作符域分別是地址等于所述讀地址的第0行記錄的color域和操作符域,令牌2的column域是所述讀地址的值;當所述的狀態(tài)/變換密鑰選擇信號等于0時,令牌2是密鑰自令牌,屬性域等于1,數(shù)據(jù)域是變換密鑰存儲記錄的數(shù)據(jù)域,fadd域和操作符域分別是變換密鑰存儲記錄的fadd域和操作符域;
p.Matcher I匹配單元,檢查key store和store0/store1中的令牌信息,在考慮行移位變換之后發(fā)現(xiàn)就緒的狀態(tài)字或者發(fā)現(xiàn)變換密鑰則隨機選取一個,把地址信息送給所述EU暫存器單元,并通過fetch_I信號觸發(fā)通道2端口的觸發(fā)信號,把所述EU暫存單元的令牌2發(fā)送給所述EU運算單元;所述Matcher I匹配單元的輸入包括來自所述EU暫存器單元的觀測端口的信號,通道2端口的應(yīng)答信號以及所述控制選擇的隨機信號;同時,向EU暫存器單元輸出所述fetch_I令牌發(fā)送信號;
q.全局存儲器,存儲密鑰分組列數(shù)Nk,迭代輪數(shù)Nr,其中,向EU暫存器、下述EU運算單元、Matcher II兩個單元和密鑰擴展運算單元輸出Nk,向輪更新通道開關(guān)單元輸出Nr,
r.EU運算單元,接收來自通道2的令牌2,解析后根據(jù)令牌2的屬性域和操作符域以及所述密鑰分組列數(shù)Nk對數(shù)據(jù)域執(zhí)行相應(yīng)的計算,操作結(jié)果打包到令牌3的數(shù)據(jù)域中通過通道3發(fā)送;其中,所述令牌3除數(shù)據(jù)域外,還有一個1位的屬性域,其值等于所述令牌2的屬性域值當屬性域等于0時,是狀態(tài)字令牌,還有一個4位的color域和一個2位的column域;當屬性域等于1時,是密鑰字令牌,還有一個1位的fadd域,還有5位不關(guān)心的數(shù)據(jù),打包時,令牌2的fadd域直接復制到令牌3的fadd域中;所述對于令牌數(shù)據(jù)域的計算包括
r1.Srd操作,當令牌2的屬性域等于0且操作符域為所述的Srd標記時或當令牌2的屬性域等于1且操作符域為1且所述密鑰分組列數(shù)Nk大于6時執(zhí)行,即對數(shù)據(jù)域的每個字節(jié)執(zhí)行AES算法定義的Srd查表操作;所述令牌2屬性域等于1且操作符域為1時的操作即是上述的g變換在Nk大于6時的操作;
r2.Srd-MixCol操作,當令牌2的屬性域等于0且操作符域為所述的SM標記時執(zhí)行,即先對數(shù)據(jù)域的每個字節(jié)執(zhí)行AES算法定義的Srd查表操作,再對4個字節(jié)的結(jié)果向量左乘一個4×4的常數(shù)矩陣,其中所述的常數(shù)矩陣為AES算法中定義的列混合操作對應(yīng)的常數(shù)矩陣;
r3.Srd-循環(huán)移位-輪常量相加計算,是上述的f變換當令牌2的屬性域等于1且所述密鑰令牌的操作符域為0時執(zhí)行,即先對數(shù)據(jù)域的每個字節(jié)執(zhí)行AES算法定義的Srd查表操作,再將4個字節(jié)的結(jié)果循環(huán)左移8位,最后,所得結(jié)果的低8位與一個8位的輪常量RC逐位異或;所述輪常量初值為0,每執(zhí)行一次輪常量加法運算后,其值乘以2,所述乘2操作是定義在GF(28)域上的;
r4.直接專發(fā)操作,當令牌2的屬性域等于1且所述狀態(tài)令牌的操作符域為1且Nk小于等于6時執(zhí)行,即令牌2的數(shù)據(jù)域直接復制到所述令牌3的數(shù)據(jù)域;所述令牌2屬性域等于1且操作符域為1時的操作即是上述的g變換在Nk下與等于6時的操作;
s.Matcher II隨機控制碼產(chǎn)生電路,隨機產(chǎn)生控制所述Matcher II匹配單元中仲裁電路的3位隨機選擇碼,每次fetch_II下降時產(chǎn)生一個新的隨機控制碼;
t.Matcher I隨機控制碼產(chǎn)生電路,隨機產(chǎn)生控制所述Matcher I匹配單元中仲裁電路的3位隨機選擇碼,每次fetch_I下降時產(chǎn)生一個新的隨機控制碼;
u.2.上述的Matcher II單元與AK暫存單元構(gòu)成了AddKey運算單元的令牌暫存-匹配-發(fā)射結(jié)構(gòu),簡稱為HMF結(jié)構(gòu),Matcher I單元與EU暫存單元構(gòu)成了EU運算單元的HMF結(jié)構(gòu),Matcher K與AK暫存單元的密鑰存儲區(qū)構(gòu)成了KeySchedule單元的HMF結(jié)構(gòu),Matcher OK與輸出暫存單元構(gòu)成了輸出的HMF結(jié)構(gòu);所述HMF結(jié)構(gòu)具有如下特征
u1.包含一個令牌暫存單元,由寄存器堆實現(xiàn),寫端口采用異步握手協(xié)議;寫地址和寫入數(shù)據(jù)由輸入令牌解析得出,寫入時鐘由輸入通道端口的請求信號觸發(fā);讀端口的地址由下述匹配單元輸出的選擇信號決定,輸出數(shù)據(jù)隨讀地址即時變化;內(nèi)部存儲單元對應(yīng)有表示記錄是否存在的“滿/空”標志位,所有單元的滿空標志位和記錄與下述匹配條件相關(guān)的域的數(shù)據(jù)組成觀測信號,可被下述匹配單元讀??;所述輸出數(shù)據(jù)可被下述令牌打包邏輯讀??;所述滿空標志位由一個C單元產(chǎn)生,該C單元的一端接對應(yīng)記錄的寫入時鐘,另一輸入端接記錄的清空信號信號的反信號;所述各個記錄的寫入時鐘由寫端口的接收應(yīng)答信號經(jīng)過寫地址選擇產(chǎn)生,所述各個記錄的清空信號由所述讀端口的應(yīng)答信號經(jīng)讀地址選擇產(chǎn)生;
u2.包含一個匹配單元,由匹配邏輯和選擇邏輯電路兩部分組成,暫存單元各個記錄的觀測信號輸入匹配邏輯電路中按照匹配條件對應(yīng)的布爾表達式算出各自的匹配結(jié)果值,匹配成功則值為1,否則等于0;每個匹配結(jié)果信號通過一級C單元輸出到所述選擇邏輯的輸入端成為請求信號,所述C單元的另一輸入端與所有請求信號的或信號相連,只有請求信號全為0時等于1的匹配結(jié)果才能傳遞到選擇邏輯電路,當請求信號中存在有效請求,即為1的請求信號,在它之后產(chǎn)生的成立的匹配結(jié)果就無法通過C單元;請求對應(yīng)的令牌被發(fā)送后,請求復位,C單元對成立的匹配結(jié)果導通;所述Matcher I和Matcher II單元的選擇邏輯是一個仲裁邏輯電路,對每個被檢測的令牌組的請求信號進行隨機選擇,輸出的是選中請求的序號,并由此產(chǎn)生令牌暫存器的讀地址;所述的Matcher K單元的選擇電路是計算匹配成功的請求對應(yīng)的所述step信號;所述Matcher OK沒有選擇電路;匹配單元的選擇電路輸出的請求序號通過鎖存器輸出成為令牌的選擇信號;根據(jù)所述選擇信號的選擇選擇對應(yīng)的所述的請求信號成為令牌發(fā)射觸發(fā)信號,如所述的fetch_II、fetch_I、fetch_K信號;
u3.令牌發(fā)射觸發(fā)信號經(jīng)過長度等于選擇電路輸出穩(wěn)定所需的最長時間的延時后觸發(fā)所述選擇信號的鎖存器的控制端將鎖存器鎖存,同時觸發(fā)發(fā)送令牌的請求信號;所述暫存單元的復位應(yīng)答信號將所述選擇信號的鎖存器的控制端復位,使鎖存器導通,選擇信號重新隨所述匹配單元的選擇邏輯電路輸出變化;
在上述各單元中,
所有傳輸通道都采用異步握手協(xié)議;
所有運算單元的數(shù)據(jù)處理和令牌打包由組合邏輯電路實現(xiàn);
所述通道開關(guān)單元Switch,初始密鑰寄存器、AK暫存器單元、Matcher K匹配單元、密鑰擴展運算單元共同構(gòu)成了密鑰擴展環(huán),而通道開關(guān)單元Switch、Matcher II匹配單元、AddKey運算單元、輪更新通道開關(guān)單元、EU暫存器單元,Matcher I匹配單元、EU運算單元構(gòu)成輪變換環(huán),環(huán)內(nèi)用傳輸通道相連,環(huán)間用開關(guān)單元Switch相連。
全文摘要
亂序執(zhí)行的數(shù)據(jù)流Rijindael加密電路結(jié)構(gòu)屬于密碼集成電路,抗差分功耗分析攻擊的領(lǐng)域,其特征在于該電路結(jié)構(gòu)集成在一個芯片上共包含輸入部分;輸出部分;完成密鑰擴展和密鑰擴展環(huán),其中包括通道開關(guān)單元switch,初始密鑰寄存器、密鑰擴展運算單元AK暫存器單元及匹配檢查單元;完成對輪密鑰作變換的輪變換環(huán),包括輪更新通道開關(guān)單元,AddKey運算單元、EU運算單元、AK暫存器單元及相應(yīng)的檢查單元,對輪密鑰進行與狀態(tài)信息的逐位混合運算、行移位運算、列混合變換運算以及輪迭代運算,以得到密文后通過輸出部分輸出。仿真實際表明本發(fā)明使得其功耗差分比現(xiàn)有數(shù)降低了66%,提高了攻擊的難度。
文檔編號H04L9/06GK1761185SQ200510086919
公開日2006年4月19日 申請日期2005年11月18日 優(yōu)先權(quán)日2005年11月18日
發(fā)明者孫義和, 李翔宇 申請人:清華大學