新四季網

包括執行變換序列以隔離一個變換的指令的指令組合的製作方法

2023-07-05 07:39:16 4

專利名稱:包括執行變換序列以隔離一個變換的指令的指令組合的製作方法
包括執行變換序列以隔離一個變換的指令的指令組合
領域
本發明公開涉及高級加密標準(AES),尤其涉及使用包括執行AES的 變換序列的子集以提供AES之一結果的指令在內的指令的組合。
祖旦 冃爾
密碼學是一種依賴於算法和密鑰來保護信息的工具。算法是複雜的數學算
法,而密鑰是一串位。有兩種基本類型的密碼學系統私鑰系統和公鑰系統。
也被稱為對稱系統的私鑰系統具有由兩方或更多方共享的單個密鑰("私鑰")。
單個密鑰用於加密和解密信息。
由國家標準技術研究所(NIST)公布作為聯邦信息處理標準(FIPS) 197 的高級加密標準(AES)是私鑰系統。AES是可加密和解密信息的對稱塊密碼。
加密(密碼)利用私鑰(密碼密鑰)執行變換序列以將稱為"明文"的可 理解數據變換成稱為"密文"的不可理解形式。密碼中的變換可包括(1) 利用異或(XOR)運算將輪迴(round)密鑰(從密碼密鑰導出的值)加至狀 態(字節的二維陣列);(2)利用非線性字節替換表(S-Box)處理狀態;(3) 以不同的偏移循環地移位狀態的最後三行;以及(4)取出狀態的所有列並混 合它們的數據(相互獨立地)以產生新的列。
解密(逆向解碼)利用密碼密鑰執行變換序列以將"密文"塊變換成相同 大小的"明文"塊。逆向解碼中的變換是密碼中的逆變換。
在AES標準中指定Rijindael算法來利用長度是128位、192位和256位 的密碼密鑰處理128位數據塊。通常可將不同的密鑰長度稱為AES-128、 AES-192和AES-256。
AES算法在10、 12或14個連續輪迴中將明文變換成密文或將密文變換 成明文,且輪迴的數量取決於密鑰的長度。
附圖簡述
在參照附圖進行以下的詳細描述時所要求保護的主題的實施例的特徵將 變得顯而易見,其中相似的附圖標記描述相似的部件,附圖中

圖1是包括在通用處理器中執行AES加密和解密的指令的系統的框圖; 圖2是圖1所示的處理器的實施例的框圖3是利用至少一個AES輪迴指令隔離AES算法中的混合列(Mix Column)變換的混合列隔離變換函數的實施例的流程圖4是利用至少一個AES輪迴指令隔離AES算法中的混合列逆變換的混 合列隔離逆變換函數的實施例的流程圖5示出使用壓縮混洗字節(PSHUFB)指令來隔離移行和移行逆變換;
圖6是利用至少一個AES輪迴指令隔離AES算法中的替換字節變換的替 換字節隔離變換函數的實施例的流程圖;以及
圖7是利用至少一個AES輪迴指令隔離AES算法中的替換字節逆變換的
替換字節隔離逆變換函數的實施例的流程儘管以下的詳細描述將參照所要求保護主題的說明性實施例進行,但它的 很多替換、修改和變化對本領域的技術人員是顯而易見的。因此,旨在廣泛地 理解所要求保護的主題,並且僅按照所附權利要求中闡述地限定所要求保護的 主題。
詳細描述
由國家標準技術研究所(NIST)公布作為聯邦信息處理標準(FIPS) 197 的高級加密標準(AES)是通常在軟體或專用處理器中執行的計算密集算法。 AES算法在軟體中通過執行存儲在存儲器中的加載/存儲/遞增中央處理單元
(CPU)指令序列來執行。該變換很慢,因為AES算法消耗很多CPU周期來 變換明文或密文的每個字節。因此,加密一般僅用於加密計算機中存儲的信息 的子集,例如,可被歸類為"絕密"的信息。然而,需要加密更多存儲在計算 機上的信息。例如,如果加密存儲在移動計算機中的所有信息,則在移動計算 機丟失的情況下可保護該信息。
AES是對128位塊運算的塊密碼,且密鑰大小是128、 192或256位。AES 算法在10、12或14個連續輪迴中將128位明文塊變換成128位密文塊(加密), 或將128位密文塊變換成128位明文塊(解密),且輪迴的數量取決於密鑰的 大小(128、 192或256位)。對於每個輪迴(10、 12或14)重複一變換序列
(子步驟)。
6加密輪迴的變換序列包括
(1) AddRoundKey (加輪迴密鑰)變換利用異或(XOR)運算將輪迴 (round)密鑰(從密碼密鑰導出的值)加至狀態(字節的二維128位陣列)。
AddRoundKey是(128位,128位)一128位變換,該變換被定義為其兩個自 變量的逐位異或(XOR)。在AES流中,自變量是狀態和輪迴密鑰。
(2) SubBytes (替換字節)變換利用非線性字節替換表(S-Box)處理狀 態。SubBytes是通過將S-box變換施加到輸入的16位元組中的每一個所定義的 16位元組至16位元組(逐字節)變換。S-box變換可由査找表表示如下査找表 的輸入是字節[7:0],其中x和y指示低四位和高四位x[3:0]二B[7:4], y[3:0]= B[3:0]。輸出字節在表中被編碼為十六進位(H)記數法的兩個數字。例如, 輸入85H得到97H。
(3) ShiftRows (移行)變換以不同的偏移循環地移位狀態的最後三行。 ShiftRows是以下的逐字節排列(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) —(11, 6, 1, 12, 7, 2, 13, 8, 3, 14, 9, 4, 15, 10, 5, 0)。將該變換看作對狀態的4x4 矩陣表示的運算。4x4矩陣中的第一行是不變的。使第二行左旋轉一字節位置。 使第三行左旋轉二字節位置。使第四行左旋轉三字節位置。
(4) MixColumns (混合列)變換混合來自狀態的所有列的數據(相互 獨立地)以產生新的列。MixColumns是對輸入的44矩陣表示的列進行運算 的128位一128位變換。該變換將每個列視為帶有AES-伽羅瓦欄位256中的系 數的三次多項式。狀態的44矩陣表示的每個列乘以多項式a(x) = {03}x3 + {01}x2+{01}x+{02}並取模(reduced modulo) x4+l。
針對上述加密輪迴的變換序列可通過如下表1所示的單個AES加密輪迴 指令AESENC來執行,且針對最後加密輪迴的變換序列通過如下表2所示的 單個AES最後加密輪迴指令AESENCLAST執行。
AESENC xmml, xmm2/ml28
狀態=xmml;
輪迴密鑰=xmm2/ml28;
Tmp-移行(狀態);
Tmp-替換字節(Tmp);
7Tmp一昆合列(Tmp);
Output = xmm 1 =加輪迴密鑰(Tmp, Round Key) 表1
AESENCLAST xmml, xmm2/ml28 狀態=xmml; 輪迴密鑰=xmm2/ml28; Tmp一多行(狀態); Tmp-替換字節(Tmp);
輸出=xmml=加輪迴密鑰(Tmp, Round Key) 表2
表1和表2中所示的AESENC和AESENCLAST指令對狀態(xmm寄 存器中指定的128位)和輪迴密鑰(xmm寄存器中或作為存儲器指針指定的 128位)或對密鑰(xmm寄存器和/存儲器中指定的128位、192位或256位) 執行某些變換序列。這些指令產生128位輸出。利用FIPS公布197的術語, 描述對應的128位一128位變換序列。
如FIPS公布197所定義的,以上表1和表2中所示的AES指令 (AESENC, AESENCLAST)串行處理存儲在128位變量(temp)(也稱為狀 態)中的數據。在以下的表3中示出用於處理N個數據塊的串行運算序列的示 例。
For i從1至U N—BLOCKS do xmml = BLOCK [i] 〃加載 xmml = AESENC (xmml, RK [l]) xmml = AESENC (xmml, RK [2]) xmml = AESENC (xmml, RK [3])
xmml = AESENC (xmml, RK [9〗) xmml = AESENCLAST(xmml, RK [10]) 存儲xmml表3
對於待加密的N—Block中的每一個,數據塊被存儲在寄存器中,例如 具有128位的xmm寄存器(xmml)可用於存儲128位塊。對數據塊串行執行 10次加密輪迴。對於10次輪迴AES運算的輪迴1至9,調用AESENC指令以 利用輪迴密鑰和前一輪迴的結果或初始塊數據(在輪迴1時)來執行輪迴運算。 調用AESENCLAST指令來處理最後的輪迴(在該示例中為輪迴10)。
解密輪迴的變換序列包括-(1) AddRoundKey (加輪迴密鑰)變換利用異或(XOR)運算將輪 回(round)密鑰(從密碼密鑰導出的值)加至狀態(字節的二維128位陣列)。 AddRoundKey是(128位,128位)一128位變換,該變換被定義為其兩個自 變量的逐位異或(XOR)。在AES流中,自變量是狀態和輪迴密鑰。
逆替換字節(SubBytes)變換利用非線性字節逆替換表(S-Box)處 理狀態。逆替換字節是通過將InvS-Box函數施加到輸入的每個字節來定義的 16位元組一16位元組(逐字節)變換,艮P[P, O, N, M, L, K, J, I, H, G, F, E, D, C, B, A] —[InvS-Box (P), InvS-Box (O), InvS國Box (N), InvS-Box (M), InvS-Box (L), InvS國Box (K), InvS-Box (J), InvS-Box (I), InvS-Box (H), InvS-Box (G), InvS陽Box (F), InvS-Box (E), InvS-Box (D), InvS-Box (C), InvS-Box (B), InvS-Box (A)]。
(3) ShiftRows (移行)逆變換這種變換是ShiftRows變換的逆變換。 ShiftRows逆變換是以下的逐字節排列(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,0)—(3, 6,9, 12, 15,2, 5, 8, 11, 14, 1,4,7, 10, 13,0)。在P-A符號中,它讀取 [P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A] — [D,G,J,M,P,C,F,I,L, O,B,E,H,K,N,A]。
MixColumns逆變換是對輸入的4x4矩陣表示的列運算的128位一128 位變換。該變換將4x4矩陣中的每個列視為帶有AES-GF256-Field中的係數的 三次多項式。狀態的44矩陣表示的每個列乘以多項式a—、x) = {0b}x3 + {0d}x2+ {09}x+《0e)並取模x4+ 1。
針對上述加密輪迴的變換序列可通過如下表4所示的單個AES加密輪 回指令AESDEC來執行,且針對最後加密輪迴的變換序列通過如下表5所示 的單個AES最後加密輪迴指令AESDECCLAST執行。
以下表4和表5中所示的AESDEC和AESDECLAST指令對狀態(xmm寄存器中指定的128位)和輪迴密鑰(xmm寄存器中或作為存儲器指針指定 的128位)或對密鑰(xmm寄存器和/存儲器中指定的128位、192位或256 位)執行某些變換序列。這些指令產生128位輸出。利用FIPS公布197的術 語,描述對應的128位一128位變換序列。
AESDEC xmml, xmm2/ml28
狀態=xmml;
輪迴密鑰=xmm2/ml28;
Tmpz逆移行(狀態);
Tmpz逆替換字節(Tmp);
Tmp:逆混合列(Tmp二);
輸出二xmml-加輪迴密鑰(Tmp^輪迴密鑰) 表4
AESDECLAST xmml, xmm2/ml28 狀態=xmml; 輪迴密鑰=xmm2/ml28 Tmp^逆移行(State); Tmp-逆替換字節(Tmp); 輸出=xmml -加輪迴密鑰(Tmp, Round Key) 表5
表1、 2、 4禾B 5所示的四個AES輪迴指令(AESENC、 AESNECLAST、 AESDEC、 AESDECLAST)中的每一個通過共同執行數個AES變換而提升性 能。然而,指令僅支持AES標準的當前版本。
本發明的實施例使用包括AES加密和解密指令的指令組合來獲取AES 算法的子步驟(變換)作為隔離的變換。隔離的變換包括由加密AES指令 (AESENC、 AESENCLAST)所使用的移行、替換字節和混合列變換以及由解 密AES指令(AESDEC、 AESDECLAST)所使用的逆移行、逆替換字節和混 合列逆變換。
隔離變換的能力增加了使用AES加密和解密指令的靈活性。例如,獲 取AES算法的子步驟(變換)的能力允許構造AES變量,並允許支持AES標準中的可能未來修改。還允許將AES原語(變換)用作其它密碼和密碼學散
列函數的構建塊。
圖1是包括在通用處理器中執行AES加密和解密的指令的系統100的框 圖。系統100包括處理器101、存儲器控制器集線器(MCH)或(圖形存儲器 控制器集線器(GMCH) ) 102和輸入/輸出(I/O)控制器集線器(ICH) 104。 MCH 102包括控制處理器101和存儲器108之間的通信的存儲器控制器106。 處理器101和MCH 102通過系統總線116通信。
處理器101可以是諸如單核Intel Pentium IV⑧處理器、單核Intel Celeron 處理器、Intel XScale處理器或諸如Intel Pentium D、 Intel Xeon⑧處理器或 Intel Core Duo處理器之類的多核處理器或任何其它類型的處理器等多個處 理器中的任一個。
存儲器108可以是動態隨機存取存儲器(DRAM)、靜態隨機存取存儲器 (SRAM)、同步動態隨機存取存儲器(SDRAM)、雙數據率2 (DDR2) RAM或 Rambus動態隨機存取存儲器(RDRAM)或任何其它類型的存儲器。
ICH 104可利用諸如直接媒體接口(DMI)之類的高速晶片至晶片互連114 耦合到MCH 102。DMI支持經由兩個單向線路的2千兆位/秒的並發傳輸速率。 ICH 104可包括用於控制耦合至ICH 104的至少一個存儲設備112的通 信存儲I/0控制器110。存儲設備可以是例如盤驅動器、數字視頻盤(DVD) 驅動器、緊緻盤(CD)驅動器、獨立盤冗餘陣列(RAID)、磁帶驅動器或其 它存儲設備。ICH 104可通過存儲協議互連118利用諸如串行連接小型計算機 系統接口 (SAS)或串行高級技術附件(SATA)的串行存儲協議與存儲設備 112通信。
處理器101包括執行AES加密和解密運算的AES函數103。 AES函數 103可用於加密或解密可存儲在存儲器108和/或存儲在存儲設備112中的信 息。
可存儲在存儲器108中或存儲設備112中的變換隔離函數120使用AES 函數103來隔離AES加密或解密指令中的變換之一。稍後將結合圖3-7描述變 換隔離函數120。
圖2是圖1所示的處理器101的實施例的框圖。處理器101包括用於解碼從l級(Ll)指令高速緩存202接收的處理器指令的取出(fetch)和解碼單元 206。用於執行處理器指令的數據可被存儲在寄存器堆(register file) 208中。 在一個實施例中,寄存器堆208包括多個128位寄存器,它們被AES輪迴指 令用於存儲由AES輪迴指令所使用的數據。
在一個實施例中,寄存器堆208是一組與設置在Intel PentiumMMX處理 器中的具有(單指令多數據(SIMD))流送擴展(SSE)指令集的128位MMX 寄存器的128位寄存器。在SIMD處理器中,通過一次加載一個128位塊 來分128位塊地處理數據。
取出和解碼單元206從Ll指令高速緩存202取出宏指令,解碼宏指令 並將其分成可存儲在微碼只讀存儲器(ROM) 214中的稱為微運算(pops)的 簡單運算。流水線化的執行單元210編排並執行微運算。在所示的實施例中, 執行單元210中的AES函數103包括對含有AES加密/解密輪迴指令的AES 輪迴指令集的微運算。AES輪迴指令是完全流水線化的使得處理器(CPU)可 在每個周期分派指令,如果有數據準備好要處理的話。退役單元212將所執行 的指令的結果寫入寄存器或存儲器。AES輪迴指令所使用的輪迴密鑰216可被 存儲在L1數據高速緩存204中並加載到執行單元210,由微運算用其執行AES 加密/解密輪迴指令中的任一個。在Ll數據高速緩存204中存儲輪迴密鑰216 保護輪迴密鑰216免受側面信道攻擊,例如嘗試獲取輪迴密鑰以便獲得存儲在 系統100中的加密信息。
在AES輪迴指令已經被取出和解碼單元206解碼之後,由執行單元210 執行AES輪迴指令包括執行與可存儲在微碼ROM 214中的AES輪迴指令相 關聯的微運算。
在一實施例中,提供AES輪迴指令集,其包括用於執行加密輪迴、解 密輪迴、加密最後輪迴和解密最後輪迴的單獨AES輪迴指令。在實施例中, 每個AES輪迴指令具有唯一的運算碼(opcode)。
正如結合表l、 2、 4和5已經討論的,AES指令集包括四個AES輪迴 指令(加密、解密、加密最後輪迴、解密最後輪迴)。AES指令集中的AES 輪迴指令包括單個輪迴運算以執行將用於除最後輪迴以外的所有輪迴的加密 和解密輪迴運算。例如,在表1所示的AESENC單輪迴指令中,輸入數據被存儲在128 位寄存器(xmmsrcdst)中且輪迴密鑰被存儲在另一個128位寄存器(Xmm)中。該 指令對存儲在128位xmmsrcdst寄存器中的輸入數據(源)執行AES輪迴運算, 並用輪迴運算的執行結果重寫存儲在128位xmmsrcdst寄存器中的輸入數據。 因此xmmsrcdst首先存儲輸入數據,稍後存儲AES輪迴運算的結果。
例如,在表2所示的AESENCLAST單輪迴指令中,輸入數據被存儲在 128位寄存器(xmmsrcdst)中且輪迴密鑰被存儲在另一個128位寄存器(Xmm) 中。該指令對存儲在xmmsrcdst寄存器中的輸入數據(源)執行AES輪迴運算, 並用輪迴運算的執行結果重寫存儲在xmmsrcdst寄存器中的輸入數據。因此 xmmsrcdst首先存儲輸入數據,稍後存儲輪迴運算的結果。Xmm寄存器存儲用 於輪迴運算的輪迴密鑰。
密鑰的大小可以是128位、192位或256位。將執行的輪迴次數(n)可 以是1、 10、 12或14,這取決於密鑰的大小,且每個輪迴密鑰是固定大小的(128 位)。利用值為10、 12、 14的多次輪迴,AES微運算可針對128位、192位 或256位的密鑰大小執行標準AES加密和解密。
當將相同的密鑰用於很多塊時,可將用於每次輪迴的輪迴密鑰(密鑰編 排)預先計算並存儲在存儲器中(例如輪迴密鑰216存儲在1級數據高速緩存 204中)。輪迴密鑰216可包括具有IO個元素的陣列(RK)以存儲用於該密 鑰的密鑰編排。用於AES-128加密的輸入密鑰被存儲在RK
中,且預先計算 9個輪迴密鑰RK
-RK[l]。
在一個實施例中,寄存器堆304具有可由AES指令使用的多個128位 寄存器。128位寄存器可存儲源運算數、輪迴密鑰和AES指令的結果。對於第 一輪迴,AES指令接收可以是待加密的128位明文或待解密的128位密文的源 運算數。
在本發明的實施例中,前面描述的AES指令集(AESENC、 AESDEC、 AESENCLAST、 AESDECLAST)可用於隔離由FIPS 197定義的AES算法的
子步驟(變換)。該子步驟是移行、替換字節、混合列、逆移行、逆替換字節 和逆混合列。
六個子步驟(變換)對128位狀態進行運算並產生128位結果。"逆向"變換是變換的相對應的逆變換,例如,如果Tmp-替換字節(狀態),則逆替換 字節CTmp一狀態。加輪迴密鑰變換對兩個128位輸入(狀態和輪迴密鑰)進行 運算,並輸出其逐位XOR。
圖3是利用至少一個AES輪迴指令隔離AES算法中的混合列變換的混 合列隔離變換函數300的實施例的流程圖。
針對混合列變換的微運算僅在表1所示的AESENC指令中使用。 AESDEC指令包括對AESENC指令中變換的逆變換。
在框302,混合列變換隔離函數調用AESDECLAST指令,且當前狀態 和輪迴密鑰被設置為0。 AESDECLAST執行以下表6所示的微運算。 Tmp =逆移行(狀態) Tmp :逆替換字節(Tmp) Tmp = AddRoundKey (Tmp,輪迴密鑰) 表6
首先,對狀態執行移行逆變換,並將變換的結果存儲在Tmp中。接下 來,對Tmp的內容執行替換字節逆變換並將結果存儲在Tmp中。最後,對Tmp 的內容和設置為0的輪迴密鑰執行AddRoundKey變換。AddRoundKey微運 算基本上是NOP (無運算),因為對Tmp的內容和O執行異或運算且結果是 Tmp的內容。然後,將AESENCLAST指令的輸出X作為輸入提供給AESENC 指令。
在框304, AESENC指令接收AESDECLAST指令的結果(X)。結果 X是逆替換字節(逆移行(狀態)),即對狀態的兩個變換逆替換字節和逆移 行的結果。AESINC指令的輸入是AESBECLAST指令和設置為0的輪迴密鑰 的結果。AESENC指令執行以下表7所示的微運算。 Tmpl =移行(X) Tmpl =替換字節(Tmpl) Tmpl =混合列(Tmpl) Tmpl = AddRoundKey (Tmpl,輪迴密鑰) 表7
首先,對輸入X執行移行變換,並將變換的結果存儲在Tmp中。接下
14來,對Tmp的內容執行替換字節變換並將結果存儲在Tmp中。接下來,對Tmp 的內容執行混合列變換。最後,對Tmp的內容和為0的輪迴密鑰執行 AddRoundKey變換。AddRoundKey微運算基本上是NOP (無運算),因為 對Tmp的內容和0執行異或運算且結果是Tmp的內容。AESENCLAST指令 和AESENC指令的組合隔離混合列變換,因為AddRo皿dKey微運算執行 NOP,且其它微運算(移行、替換字節)通過執行逆微運算(逆移行、逆替換 字節)進行換算。
因此,AESENC指令的輸出是利用如下所示的AESDECLAST指令和 AESENC指令的組合隔離的混合列(狀態)。
Y =逆混合列(逆替換字節(逆移行(替換字節(移行(狀態)))) 圖4是利用至少一個AES輪迴指令隔離AES算法中的混合列逆變換的混 合列隔離逆變換函數400的實施例的流程圖。
針對混合列逆變換的微運算僅在表2所示的AESENCLAST指令中使用。 AESDEC指令包括對AESENC指令中的變換的逆變換。
在框402,混合列逆變換隔離函數400中的第一指令是在輪迴密鑰設置為 0的情況下調用的AESENCLAST指令。AESENCLAST指令執行下表8所示的
微運算
Tmp=移行(State) Tmp=替換字節(Tmp) Tmp = AddRoundKey (Tmp,輪迴密鑰) 表8
首先,對狀態執行移行變換,並將變換的結果存儲在Tmp中接下來,對 Tmp的內容執行替換字節變換並將結果存儲在Tmp中。最後,對Tmp的內容 和為0的輪迴密鑰執行AddRoundKey變換。AddRoundKey微運算基本上是 無運算(NOP),因為利用Tmp的內容和O執行異或運算且XOR運算的結果 是Tmp的原始內容。AESENCLAST指令的輸出X被輸入到AESECC指令。
在框404,混合列逆變換隔離函數中的第二指令是向其提供 AESENCLAST指令的結果(X)的AESDEC指令。結果X是替換字節(移行 (狀態)),即對狀態的兩個變換替換字節和移行的結果。AESDEC指令的輸入是AESENCLAST指令和設置為0的輪迴密鑰的結果。AESDEC指令
執行下表9所示的微運算。 Tmp=逆移行(X) Tmp :逆替換字節(Tmp) Tmp 二逆混合列(Tmp)
Tmp = AddRoundKey (Tmp,輪迴密鑰)
表9
首先,對輸入X執行移行逆變換,並將變換的結果存儲在Tmp中接下來, 對Tmp的內容執行替換字節逆變換並將結果存儲在Tmp中。然後,對Tmp的 內容進行混合列逆變換。最後,對Tmp的內容和為0的輪迴密鑰執行 AddRoundKey變換。AddRoundKey微運算基本上是NOP (無運算),因為對 Tmp的內容和0執行異或運算且結果是Tmp的內容。
因此,AESENCLAST指令和AESENC指令的組合隔離混合列逆變換,因 為AddRoundKey微運算執行NOP,且其它微運算(移行、替換字節)通過執 行逆微運算(逆移行、逆替換字節)進行換算。因此,AESDEC指令的輸出是 通過組合由如下所示的AESENCLAST指令所執行的變換和AESDEC指令所執 行的變換隔離的逆混合列(狀態)。
Y=逆混合列(逆替換字節(逆移行(替換字節(移行(狀態))))
因此,兩個AES指令序列的結果是隔離的混合列逆變換。
圖5示出使用壓縮混洗字節(PSHUFB)指令來隔離移行變換和移行逆變 換。狀態500具有標記為A-L的16個字節(128位)。PSHUFB指令具有兩 個128位輸入,其可被稱為字節A和B的兩個寄存器。PSHUFB指令取出字 節A = [a15 al4 a13 ... a。]和B = [b15 b14 b13…b。]的兩個寄存器,並用^15 abl4 abl3… aw)]取代寄存器A。如果b,的最高位被設置為1,則結果的第i位條目是0。
在圖5所示的示例中,狀態500對應於字節A二[a,5aMa,3…ao]。移行變 換的結果在狀態502中示出。為了執行移行變換,將字節B二[t^b,4bu…bo] 設置成'0B06010C07020D08030E0卯40F0A0500'(十六進位)。將狀態500 的字節[15:0]移到狀態502的位位置(3, 6, 9, 12, 15, 2, 5, 8, 11, 14, 1, 4, 7, 10, 13, 0)。例如,狀態500的標記為"A"的字節
被移到狀態502的字節
,而狀 態500的標記為"L"的字節[15]被移到狀態502的字節[11] "B"。
16利用字節A被設置成狀態502而字節B被設置成'0306090C0F0205080B 0E0104070A0D00'(十六進位)的PSHUSB指令對狀態502執行移行逆變換。將 狀態500的字節[15:0]移到狀態502的位位置(3,6, 9, 12, 15,2,5,8, 11, 14, 1,4, 7, 10, 13, 0)。例如,狀態502的標記為"A"的字節
, 而狀態500的標記為"L"的字節[15]被移到狀態504的字節[3]。
因此,可基於B字節的選擇利用PSHUFB指令執行移行變換和移行逆變 換,即'0B06010C07020D08030E09040F0A0500'(十六進位)用於執行移行變換 而'0306090C0F0205080B0E0104070A0D00'(十六進位)用於執行移行逆變換。
圖6是利用至少一個AES輪迴指令隔離AES算法中的替換字節變換的替 換字節隔離變換函數600的實施例的流程圖。
針對替換字節變換的微運算在表2所示的AESENCLAST指令和表1所 示的AESENC指令中使用。在結合圖5所述的實施例中,AESENCLAST指令
用於隔離替換字節變換。
在框602,在B寄存器被設置為0306090C0F0205080B0E0104070A0D00
(十六進位)以對狀態執行逆移行的情況下,調用替換字節隔離變換函數600的 PSHUFB指令。如前面結合圖5所討論的,移行逆變換基於B寄存器中存儲的
相應字節位置執行狀態中字節的排列。
在框604,利用PSHUFB指令的結果(X),調用替換字節變換隔離函 數600中的AESDECLAST指令。AESDECLAST指令的輸入是PSHUFB指令 和設置為0的輪迴密鑰的結果。AESDECLAST指令執行下表IO所示的微運算。 Tmp =移行(X) Tmp =替換字節(Tmp) Tmp = AddRoundKey (Tmp,輪迴密鑰) 表10
首先,對輸入X執行移行變換,並將變換的結果存儲在Tmp中。接下 來,對Tmp的內容執行替換字節變換並將結果存儲在Tmp中。最後,對Tmp 的內容和為0的輪迴密鑰執行AddRoundKey變換。AddRoundKey微運算基本 上是NOP(無運算),因為對Tmp的內容和O執行異或運算且結果是Tmp的 內容。PSHUFB指令和AESENCLAST指令的組合隔離替換字節變換,因為AddRoundKey微運算執行NOP,且其它微運算(移行)通過由PSHUFB指令 所執行逆微運算(逆移行)進行換算。因此,AESENCLAST指令的輸出是利 用如下所示的AESENCLAST指令和PSHUFB指令的組合隔離的替換字節(狀 態)。
Y =替換字節(移行(乂))=替換字節(移行(逆移行(狀態)))=替換字節(狀態) 因此,包括一個AES輪迴指令的該指令序列的結果是隔離的替換字節變換。
在另一個實施例中,可利用以下的AES指令隔離替換字節變換 AESKEYGENASSIST xmml, xmm2/ml28, imm8
AESKEYGENASSIST指令用於幫助生成用於密鑰編排的輪迴密鑰,並且 與密鑰的大小無關地運算,即不論密鑰大小是128位、192位還是256位都可 執行相同的運算。AESKEYGENASSIST指令執行用於生成FIPS 197密鑰編排 的"temp = SubWord(RotWord(temp)) xor Rcon[i/Nk]"和"temp = SubWord(temp)"運算。
然而,代替一次對一個32位字(dword)的運算,AESKEYGENASSIST 指令一次對四個32位字執行運算(即同時對四個dwords (128位)),從而增 加生成輪迴密鑰的速度。
AESKEYGENASSIST指令提供以下運算的結果 結果二
其中
X3 [31-0] :=Tmpl [127-96]; X2 [31-0]:= Tmpl [95-64]; XI [31-0]:= Tmpl [63陽32];以及 X0 [31-0]:= Tmpl [31-0];
以及
RCON [7陽0] := imm8[7] imm8[6]imm8[5] imm8[4] imm8[3]imm8[2]imm8[l]imm8
RotWord (Rot)是取出四字節32位dword並執行周期性排列的函數。 Rotword按順序(a0, al, a2, a3)取出標記為a0-a4的四個字節,並執行周期性排 列以返回按順序(al, a2, a3, aO)的四個字節。RotWord函數在小端(little Endian)
變換中被定義為
Rot Word X[31陽0〗=[X[7墨0] || X [31-8]], 艮P, Rot (x) = (X 8) I (X《24);
例如,如果X[31-0] = 、3c4fcf09; RotWord (、3c4fcf09、) = [ '09, I 、3c4fcf) =(、093c4fcf)
S-Box4指示單個dword S-Box函數至4個dword的應用如下
S-Box4 (X) [31-0]) = [S-Box (X[31-24]), S-Box (X[23-16]), S-Box (X[15-8]), S-Box (X[7-0〗)]。
S-box是字節值的一對一替換的非線性替換表。SubWord函數取出四字 節輸入(32位字(dword))並將S-box (字節替換(SubBytes))施加於dword 中的四個字節中的每一個以產生32位輸出dword。 SubWord函數(32位)得 到4個獨立的(並行)SubByte運算(8位)。
因此,替換字節變換可利用AESKEYGENASSIST指令來隔離,且中間 輸入(imm8)被設置為0且將輸入預混洗如下
AESKEYGENASSIST xmml, xmml, imm8
PSHUFB xmml, mask AESKEYGENASSIST指令去除與rcon異或的效應,且針對PSHUFB指 令的掩碼被選擇成不旋轉編號為3和1的雙字。
圖7是利用至少一個AES輪迴指令隔離AES算法中的替換字節逆變換 的替換字節隔離逆變換函數700的實施例的流程圖。
針對替換逆變換的微運算在表5所示的AESDECCLAST指令中使用。 在結合圖5所述的實施例中,PSHUFB指令用於隔離移行變換。
在框702,在B寄存器被設置為'0B06010C07020D08030E09040F0A0 500'以對狀態執行移行的情況下,調用替換字節隔離變換函數600的PSHUFB 指令。如前面結合圖5所討論的,移行變換基於另一個寄存器中存儲的相應字 節位置來執行第一寄存器中存儲的狀態中字節的排列。在框704,利用PSHUFB指令的結果(X),調用替換字節變換隔離函 數700中的AESDECLAST指令。AESDECLAST指令的輸入是PSHUFB指令 和設置為0的輪迴密鑰的結果。AESDECLAST指令執行下表IO所示的微運算。 Tmp=逆移行(X) Tmp :逆替換字節(Tmp) Tmp = AddRoundKey (Tmp,輪迴密鑰) 表10
首先,對輸入X執行移行逆變換,並將變換的結果存儲在Tmp中接下 來,對Tmp的內容執行替換字節逆變換並將結果存儲在Tmp中。最後,對Tmp 的內容和為0的輪迴密鑰執行AddRoundKey變換。AddRoundKey微運算基本 上是NOP(無運算),因為對Tmp的內容和O執行異或運算且結果是Tmp的 內容。PSHUFB指令和AESDECLAST指令的組合隔離替換字節變換,因為 AddRoundKey微運算執行NOP,且其它微運算(逆移行)通過由PSHUFB指 令所執行的微運算(移行)進行換算。因此,AESDECLAST指令的輸出是利 用如下所示的AESDECLAST指令和PSHUFB指令的組合隔離的逆替換字節 (狀態)。
Y ^逆替換字節(逆移行(X))=逆替換字節(逆移行(移行(狀態)))=逆替換字 節(狀態)
因此,包括至少一個AES輪迴指令的該指令序列的結果是隔離的替換 字節逆變換。
如上所述,通過使用AES輪迴加密/解密指令的特定組合,可隔離由 AES輪迴加密/解密指令執行的AES變換。這增加了 AES指令使用的靈活性, 因為它們可用於例如構造AES變量,支持AES標準中可能的未來修改和/或將 AES原語用作密碼和密碼學散列函數的構建塊。由AES指令的組合隔離的變 換可用於特別是全晶片和認證目的的調試、確認。
本領域的技術人員將顯而易見,本發明的實施例中所涉及的方法可具體 體現在包括計算機可用介質的電腦程式產品中。例如,這種計算機可用介質 可包括諸如緊緻盤只讀存儲器(CD ROM)盤或常規ROM設備的只讀存儲設 備或具有計算機可讀程序代碼存儲於其上的計算機磁碟。儘管已經參考本發明的實施例具體示出並描述了本發明的實施例,但本 領域的技術人員將理解可在其中進行各種形式和細節的變化,而不背離由所附 權利要求書包括的本發明的實施例的範圍。
權利要求
1. 一種方法,包括組合多個指令,所述指令中的至少一個執行變換序列,所述指令被組合成這樣的順序在執行時,所述指令的組合僅執行所述變換序列中的變換之一。
2. 如權利要求1所述的方法,其特徵在於,所述指令的組合包括AESDECLAST輪迴指令和AESENC輪迴指令,所述指令的組合執行 MixColumns變換。
3. 權利要求2所述的方法,其特徵在於,由所述AESDECLAST輪迴指 令執行的所述變換序列包括移行逆變換和替換字節逆變換,且由所述AESENC 輪迴指令執行的所述變換序列包括移行變換、替換字節變換和MixColumns變換。
4. 如權利要求1所述的方法,其特徵在於,所述指令的組合包括 AESENCLAST輪迴指令和AESDEC輪迴指令,所述指令的組合執行 MixColumns逆變換。
5. 權利要求4所述的方法,其特徵在於,由所述AESENCLAST輪迴指 令執行的所述變換序列包括移行變換和替換字節逆變換,且由所述AESDEC 輪迴指令執行的所述變換序列包括移行逆變換、替換字節逆變換和 MixColumns逆變換。
6. 如權利要求1所述的方法,其特徵在於,所述指令的組合包括PSHUFB 指令和AESENCLAST輪迴指令,所述指令的組合執行替換字節變換。
7. 權利要求6所述的方法,其特徵在於,由所述AESENCLAST輪迴指 令執行的所述變換序列包括移行變換和替換字節變換,且所述PSHUFB指令包 括移行變換。
8. 如權利要求1所述的方法,其特徵在於,所述指令的組合包括PSHUFB 指令和AESDECLAST輪迴指令,所述指令的組合執行替換字節逆變換。
9. 權利要求7所述的方法,其特徵在於,由所述AESDECLAST輪迴指令 執行的所述變換序列包括移行逆變換和替換字節逆變換,且所述PSHUFB指令 包括移行逆變換。
10. 如權利要求l所述的方法,其特徵在於,所述變換序列包括來自下組的變換由聯邦信息處理標準(FIPS) 197定義的移行、逆移行、替換字節、 逆替換字節、MixColumns和逆MixColumns。
11. 一種裝置,包括存儲器,用於存儲多個指令,所述指令中的至少一個執行變換序列;以及處理器,其包括執行單元,所述指令在所述存儲器中被存儲成這樣的順 序在被所述執行單元執行時,所述執行單元僅提供所述變換序列中的變換之一的結果。
12. 如權利要求11所述的裝置,其特徵在於,所述指令的組合包括AESDECLAST輪迴指令和AESENC輪迴指令,所述指令的組合執行 MixColumns變換。
13. 如權利要求11所述的裝置,其特徵在於,所述指令的組合包括 AESENCLAST輪迴指令和AESDEC輪迴指令,所述指令的組合執行 MixColumns逆變換。
14. 如權利要求11所述的裝置,其特徵在於,所述指令的組合包括 PSHUFB指令和AESENCLAST輪迴指令,所述指令的組合執行替換字節變 換。
15. 如權利要求11所述的裝置,其特徵在於,所述指令的組合包括 PSHUFB指令和AESDECLAST輪迴指令,所述指令的組合執行替換字節逆變換。
16. 如權利要求11所述的裝置,其特徵在於,所述變換序列包括來自下 組的變換由聯邦信息處理標準(FIPS) 197定義的移行、逆移行、替換字節、 逆替換字節、MixColumns禾卩逆MixColumns。
17. —種包括含相關聯信息的機器可訪問介質的製品, 其中所述信息在被訪問時致使機器執行組合多個指令,所述指令中的至少一個執行變換序列,所述指令被組合成 這樣的順序在執行時,所述指令的組合僅執行所述變換序列中的變換之一。
18. 如權利要求17所述的製品,其特徵在於,所述變換序列包括來自下組的變換由聯邦信息處理標準(FIPS) 197定義的移行、逆移行、替換字節、逆替換字節、MixColumns和逆MixColumns。
19. 一種系統,包括 處理器;以及存儲設備,其可由處理器訪問且在其中存儲有多個指令,所述指令中的 至少一個執行變換序列,所述指令被組合成這樣的順序在被所述處理器執行 時,導致處理器至少僅執行所述變換序列中的變換之一 。
20. 如權利要求19所述的系統,其特徵在於,所述變換序列包括來自下 組的變換由聯邦信息處理標準(FIPS) 197定義的移行、逆移行、替換字節、 逆替換字節、MixColumns禾卩逆MixColumns0
全文摘要
高級加密標準(AES)是可加密和解密信息的對稱塊密碼。加密(密碼)利用私鑰(密碼密鑰)執行變換序列(移行、替換字節、混合列)以將稱為「明文」的可理解數據變換成稱為「密文」的不可理解形式。逆向解碼(解密)中的變換(逆移行、逆替換字節、逆混合列)是密碼中的變換的逆變換。通過使用執行該變換序列的指令,高效率地執行加密和解密。這些指令的組合允許隔離將獲取的變換(移行、替換字節、混合列、逆移行、逆替換字節、逆混合列)。
文檔編號H04L9/28GK101520965SQ200910128119
公開日2009年9月2日 申請日期2009年3月2日 優先權日2008年2月29日
發明者S·格倫, Z·斯波伯 申請人:英特爾公司

同类文章

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

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有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-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀