執(zhí)行g(shù)roestl散列的指令的制作方法
【專利摘要】描述了一種方法。該方法包括執(zhí)行對狀態(tài)矩陣執(zhí)行一個或多個與2的伽羅瓦域(GF)相乘運算的指令以及執(zhí)行用異或(XOR)函數(shù)將所述一個或多個與2的GF相乘運算的結(jié)果進行組合以生成結(jié)果矩陣的指令。
【專利說明】執(zhí)行GROESTL散列的指令 發(fā)明領(lǐng)域
[0001] 本公開涉及加密算法,尤其涉及Groestl安全散列算法。
【背景技術(shù)】
[0002] 密碼術(shù)(Cryptology)是一種依賴算法和密鑰來保護信息的工具。該算法是復(fù)雜 的數(shù)學(xué)算法,而密鑰是位串。存在兩種基本的密碼術(shù)系統(tǒng)類型:秘密密鑰系統(tǒng)和公開密鑰 系統(tǒng)。秘密密鑰系統(tǒng)(也被稱為對稱系統(tǒng))具有兩方或更多方共享的單一密鑰("秘密密 鑰")。該單一密鑰既被用來將信息加密,也被用來將信息解密。
[0003] 由國家標準和技術(shù)委員會(NIST)作為聯(lián)邦信息處理標準(FIPS) 197發(fā)布的先進 加密標準(AES)是一種秘密密鑰系統(tǒng)。AES是能夠?qū)⑿畔⒓用芎徒饷艿膶ΨQ塊密碼(block cipher)。Groestl算法是一種基于AES的迭代散列函數(shù),其具有從兩個固定的大的不同的 置換(P和Q)構(gòu)造的壓縮函數(shù)。
[0004] 該壓縮函數(shù)(f)被經(jīng)由P和Q的置換來定義,使得:f (h,m) =P(h X0R m)X0R Q(m) X0R h,其中函數(shù)P和Q是置換函數(shù),而是hg是輸入狀態(tài),1?是消息塊輸入,而h是結(jié)果狀 態(tài)。加密(密碼)使用該秘密密鑰(密碼密鑰)執(zhí)行一系列變換來將被稱為"明文"的可理 解數(shù)據(jù)變換為被稱為"密文"的不可理解形式。密碼中的變換可包括:(1)使用異或(X0R) 運算向該狀態(tài)(二維字節(jié)數(shù)組)添加輪次常數(shù)(從P函數(shù)和Q函數(shù)推出的值);(2)使用非 線性字節(jié)代換表(S-Box)處理該狀態(tài);(3)將該狀態(tài)的最后三行循環(huán)移位不同的偏移量;以 及(4)取該狀態(tài)的所有的列并將這些列的數(shù)據(jù)(彼此獨立地)混合以產(chǎn)生新的列。
[0005] 解密(逆向密碼)使用該密碼密鑰執(zhí)行一系列變換來將"密文"塊變換為相同大 小的"明文"塊。逆向密碼中的變換是該密碼中的變換的逆反。
[0006] Groestl算法用10個或14個連續(xù)的輪次將明文變換為密碼文本或?qū)⒚芪淖儞Q為 明文,輪次的數(shù)量取決于密鑰的長度。
[0007] 附圖簡沭
[0008] 結(jié)合以下附圖,從以下詳細描述可獲得對本發(fā)明更好的理解,其中:
[0009] 圖1是圖解系統(tǒng)的一個實施例的框圖;
[0010] 圖2是圖解處理器的一個實施例的框圖;
[0011] 圖3是圖解緊縮數(shù)據(jù)寄存器的一個實施例的框圖;
[0012] 圖4A和4B圖解了圖解由MUL_BYTE_GF2指令和MIX_BYTE_X0R指令執(zhí)行的過程的 一個實施例的流程圖;
[0013] 圖5是根據(jù)本發(fā)明的一個實施例的寄存器架構(gòu)的框圖;
[0014] 圖6A是根據(jù)本發(fā)明的多個實施例的單CPU核,連同其到管芯上互連網(wǎng)絡(luò)的連接及 其本地2級(L2)高速緩存子集,的框圖;
[0015] 圖6B是根據(jù)本發(fā)明的多個實施例的CPU核的一部分的剖視圖;
[0016] 圖7是圖解根據(jù)本發(fā)明的多個實施例的示例性無序架構(gòu)的框圖;
[0017] 圖8是根據(jù)本發(fā)明的一個實施例的系統(tǒng)的框圖;
[0018] 圖9是根據(jù)本發(fā)明的一實施例的第二系統(tǒng)的框圖;
[0019] 圖10是根據(jù)本發(fā)明的一實施例的第三系統(tǒng)的框圖;
[0020] 圖11是根據(jù)本發(fā)明的一實施例的片上系統(tǒng)(SoC)的框圖;
[0021] 圖12是根據(jù)本發(fā)明的多個實施例的帶有集成存儲器控制器和圖形元件的單核處 理器和多核處理器的框圖;以及
[0022] 圖13是對照根據(jù)本發(fā)明的多個實施例的使用軟件指令轉(zhuǎn)換器來將源指令集中的 二進制指令轉(zhuǎn)換為目標指令集中的二進制指令的框圖。
[0023] 詳細描沭
[0024] 在下面的描述中,出于解釋目的闡述了眾多具體細節(jié)以便提供對本發(fā)明的完全理 解。然而對于本領(lǐng)域技術(shù)人員顯然的是,沒有這些具體細節(jié)中的一些細節(jié)也可實踐本發(fā)明。 在其他實例中,公知的結(jié)構(gòu)和設(shè)備以框圖形式示出以避免湮沒本發(fā)明的基礎(chǔ)概念。
[0025] 說明書中對"一個實施例"或"一實施例"的引用旨在指示結(jié)合該實施例所述的特 定特征、結(jié)構(gòu)、或特性被包括在本發(fā)明的至少一個實施例中。在說明書各處出現(xiàn)的短語"在 一個實施例中"不一定全部指相同實施例。
[0026] 描述了一種包括用于處理Groestl安全散列算法的指令的機制。如同上面討論 的,Groestl算法是一種基于在AES標準中指定的Ri jindael算法的加密散列函數(shù)。該AES 標準包括提供用于在通用處理器中執(zhí)行AES加密和解密的指令集擴展的指令集(例如,AES 指令集)。
[0027] 該AES指令集是對x86指令集架構(gòu)(ISA)的擴展,其改善了使用該AES算法的應(yīng) 用的速度。根據(jù)一個實施例,該AES指令集擴展被實現(xiàn)以執(zhí)行Groestl算法。圖1是系統(tǒng) 100的一個實施例的框圖,該系統(tǒng)包括用于在通用處理器中執(zhí)行Groestl加密和解密的AES 指令集擴展。
[0028] 系統(tǒng)100包括處理器101、存儲器控制器中樞(MCH) 102、以及輸入/輸出(1/0)控 制器中樞(ICH) 104。MCH 102包括控制處理器101和存儲器108之間的通信的存儲器控制 器106。處理器101和MCH 102通過系統(tǒng)總線116通信。
[0029] 處理器101可以是多種處理器中的任何一者,所述多種處理器諸如是:單核 Intel? Pentium IV?處理器、單核Intel Celeron處理器、Intel? XScale處理器或多核處 理器(諸如 Intel? Pentium D、Intel? Xeon? 處理器、Intel? Core? i3, i5, i7, 2 Duo 及 Quad、Xeono^、丨tanium?處理器)、或任何其他類型的處理器。
[0030] 存儲器108可以是動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)、 同步動態(tài)隨機存取存儲器(SDRAM)、雙數(shù)據(jù)率2 (DDR2) RAM或Rambus動態(tài)隨機存取存儲器 (RDRAM)或任何其他類型的存儲器。
[0031] ICH 104可使用高速芯片到芯片互連114(諸如直接媒體接口(DMI))耦合于MCH 102。DMI支持經(jīng)由兩個單向通道的2千兆比特/秒并發(fā)傳輸速率。
[0032] ICH 104可包括用于控制與耦合至ICH 104的至少一個存儲設(shè)備112的通信的存 儲1/0控制器110。該存儲設(shè)備可以例如是盤驅(qū)動器、數(shù)字視頻盤(DVD)驅(qū)動器、緊致盤 (⑶)驅(qū)動器、獨立盤冗余陣列(RAID)、磁帶驅(qū)動器或其他存儲設(shè)備。ICH 104可使用諸如串 行附接小型計算機系統(tǒng)接口(SAS)或串行先進技術(shù)附接(SATA)之類的串行存儲協(xié)議通過 存儲協(xié)議互連118與存儲設(shè)備112通信。
[0033] 在一個實施例中,處理器101包括用于執(zhí)行Groestl加密和解密運算的Groestl 函數(shù)103。Groestl函數(shù)103可被用來加密或解密存儲器108中存儲的和/或存儲設(shè)備112 中存儲的信息。
[0034] 圖2是圖解了處理器101的一個實施例的框圖。處理器101包括用于解碼從1級 (L1)指令高速緩存202接收的處理器指令的取回和解碼單元202。要用于執(zhí)行該指令的數(shù) 據(jù)可被存儲在寄存器文件208中。在一個實施例中,寄存器文件208包括被AES指令用來 存儲供該AES指令使用的數(shù)據(jù)的多個寄存器。
[0035] 圖3是寄存器文件208中的緊縮數(shù)據(jù)寄存器的適當集合的示例實施例的框圖。所 示緊縮數(shù)據(jù)寄存器包括32個512位緊縮數(shù)據(jù)或矢量寄存器。這32個512位寄存器被標記 為ΖΜΜ0到ZMM31。在所示實施例中,這些寄存器中的較低的16個寄存器(即ZMM0-ZMM15) 的較低階的256位被混疊或覆蓋在被標記為YMM0-YMM15的相應(yīng)的256位緊縮數(shù)據(jù)或矢量 寄存器中,然而不要求如此。
[0036] 類似地,在所示實施例中,YMM0-YMM15的較低階128位被混疊或覆蓋在被標記為 XMM0-XMM1的相應(yīng)的128位緊縮數(shù)據(jù)或矢量寄存器上,然而也不要求如此。512位寄存器 ΖΜΜ0到ZMM31能夠操作以保存512位緊縮數(shù)據(jù)、256位緊縮數(shù)據(jù)、或128位緊縮數(shù)據(jù)。
[0037] 256位寄存器YMM0-YMM15能夠操作以保存256位緊縮數(shù)據(jù)或128位緊縮數(shù)據(jù)。128 位寄存器XMM0-XMM1能夠操作以保存128位緊縮數(shù)據(jù)。這些寄存器中的每個寄存器可被用 于存儲緊縮浮點數(shù)據(jù)或緊縮整數(shù)數(shù)據(jù)。支持不同的數(shù)據(jù)元素大小,包括至少8位字節(jié)數(shù)據(jù)、 16位字數(shù)據(jù)、32位雙字或單精度浮點數(shù)據(jù)、以及64位四字或雙精度浮點數(shù)據(jù)。緊縮數(shù)據(jù)寄 存器的替代實施例可包括不同數(shù)量的寄存器、不同大小的寄存器,并且可以或可以不在較 小的寄存器上混疊較大的寄存器。
[0038] 參考圖2,取回和解碼單元202從L1指令高速緩存202取回宏指令,解碼所述宏指 令并且將所述宏指令分解為被稱為微操作(Pops)的簡單操作。執(zhí)行單元210調(diào)度并執(zhí)行 所述微操作。在所示實施例中,執(zhí)行單元210中的Groestl函數(shù)103包括用于AES指令的 微操作。退役單元212將所執(zhí)行的指令的結(jié)果寫到寄存器或存儲器。
[0039] 函數(shù)103執(zhí)行壓縮函數(shù)f(h,m) =P(h X0R m)X0R Q(m)X0R h,其中置換P和Q是 使用多個輪次R來設(shè)計的,其包括多個輪次變換。在Groestl函數(shù)103中,針對每個置換定 義全部4個輪次變換。所述變換對被表示為8位字節(jié)的矩陣(例如,矩陣A)的狀態(tài)操作。 在一個實施例中,該矩陣具有8行和8列。然而,其他實施例可實現(xiàn)其他變型(例如,8行和 16 列)。
[0040] 在一個實施例中,Groestl函數(shù)103所執(zhí)行的變換序列包括 AddRoundConstant (AC)變換、SubBytes 變換、ShiftBytes 變換和 MixBytes 變換。
[0041] AC變換向狀態(tài)矩陣A添加輪次相關(guān)常數(shù)(例如,A - A X0R c[i],其中c[i]是在 輪次i中使用的輪次常數(shù))。P和Q具有不同的輪次常數(shù)。
[0042] SubBytes變換用另一值取代該狀態(tài)矩陣中的每個字節(jié)。使用非線性字節(jié)取代表 (S-Box)處理該狀態(tài)。SubBytes是通過將S-box變換應(yīng)用于該16個字節(jié)中的每個字節(jié)來 定義的16字節(jié)到16字節(jié)(逐字節(jié))變換。
[0043] S-box變換可經(jīng)由如下的查找表來表示:對查找表的輸入是字節(jié)B[7:0],其中X和 y表示低和高半字節(jié)x[3:0] =B[7:4],y[3:0] =B[3:0]。輸出字節(jié)在該表中被編碼為用 16(H)進制表示的2數(shù)位數(shù)。在一個實施例中,AES-NI指令集提供了用于為Groestl執(zhí)行 SubBytes的精確功能。在這種實施例中,使用AES-NI指令A(yù)ESENCLAST來計算SubBytes變 換。
[0044] ShiftBytes變換將一行內(nèi)的字節(jié)向左循環(huán)移位多個位置。在一個實施例中, ShiftBytes實現(xiàn)AES-NI指令PSHUFB以對XMM寄存器中的字節(jié)快速重新排序。
[0045] 當P和Q矩陣是以XMM/YMM寄存器中的行組織的時,AC和ShiftBytes操作不是 計算密集的,而使用AES-NI指令A(yù)ESENCLAST可以同時為高達16個字節(jié)計算SubBytes操 作。從而,AES指令集中的復(fù)雜度和循環(huán)的大部分是由MixBytes操作帶來的。
[0046] MixBytes變換將該矩陣中的每一列獨立地進行變換。MixBytes實現(xiàn)有限字段 F256,其是經(jīng)由對F2的不可化簡多項式X8 X0R X4 X0R X3 X0R X X0R 1來定義的。狀態(tài)矩陣 A的字節(jié)可被看作F256的元素,(例如,作為系數(shù)為{0, 1}的最高為7次的多項式)。每個字 節(jié)的最低有效位確定x°的系數(shù)等。
[0047] MixBytes將矩陣A的每一列乘以F256中的常數(shù)8 X 8矩陣B。從而,整個矩陣A上 的變換可被寫為矩陣乘法:A - B X A。在一個實施例中,矩陣B是循環(huán)行列式(例如,每一 行等于將上一行向右輪轉(zhuǎn)一個位置,并被指定為:
[0048]
【權(quán)利要求】
1. 一種用于在計算機處理器中執(zhí)行過程的方法,包括: 執(zhí)行對狀態(tài)矩陣執(zhí)行一個或多個與2的伽羅瓦域(GF)相乘運算的指令;以及 執(zhí)行用異或(XOR)函數(shù)將所述一個或多個與2的GF相乘運算的結(jié)果進行組合以生成 結(jié)果矩陣的指令。
2. 如權(quán)利要求1所述的方法,其特征在于,還包括在執(zhí)行組合結(jié)果的指令前執(zhí)行對所 述狀態(tài)矩陣第二次執(zhí)行與2的GF相乘運算的指令。
3. 如權(quán)利要求1所述的方法,其特征在于,執(zhí)行所述一個或多個與2的GF相乘運算包 括: 將所述狀態(tài)矩陣的行存儲在第一寄存器中; 對存儲在所述第一寄存器中的每一行執(zhí)行與2的GF相乘運算;以及 將所述與2的GF相乘運算的結(jié)果存儲在第二寄存器中。
4. 如權(quán)利要求3所述的方法,其特征在于,執(zhí)行所述一個或多個與2的GF相乘運算進 一步包括對于值為1的每個最1?有效位執(zhí)行XOR運算。
5. 如權(quán)利要求1所述的方法,其特征在于,執(zhí)行所述一個或多個與2的GF相乘運算進 一步包括: 對存儲在所述第二寄存器中的每一行執(zhí)行與2的第二次GF相乘運算;以及 將所述與2的第二次GF相乘運算的結(jié)果存儲在第三寄存器中。
6. 如權(quán)利要求5所述的方法,其特征在于,執(zhí)行組合所述一個或多個與2的GF相乘運 算的結(jié)果的指令包括使用存儲在所述第一、第二和第三寄存器中的數(shù)據(jù)作為源操作數(shù)來組 合所述狀態(tài)矩陣的因子。
7. 如權(quán)利要求6所述的方法,其特征在于,所述結(jié)果矩陣被存儲在所述第一寄存器中。
8. 如權(quán)利要求5所述的方法,其特征在于,所述狀態(tài)矩陣是8位條目的8x8矩陣。
9. 如權(quán)利要求5所述的方法,其特征在于,所述第一、第二和第三寄存器是512位寄存 器。
10. 如權(quán)利要求2所述的方法,其特征在于,所述狀態(tài)矩陣是8位條目的8x16矩陣。
11. 如權(quán)利要求8所述的方法,其特征在于,進一步包括: 執(zhí)行對所述狀態(tài)矩陣的第二個一半執(zhí)行與2的GF相乘運算的指令;以及 執(zhí)行對所述狀態(tài)矩陣的所述第二個一半第二次執(zhí)行與2的GF相乘運算的指令。
12. -種裝置,包括: 多個數(shù)據(jù)寄存器;以及 與所述多個數(shù)據(jù)寄存器耦合的執(zhí)行單元,所述執(zhí)行單元執(zhí)行對狀態(tài)矩陣執(zhí)行一個或多 個與2的伽羅瓦域(GF)相乘運算的指令以及用異或(XOR)函數(shù)將所述一個或多個與2的 GF相乘運算的結(jié)果進行組合以生成結(jié)果矩陣的指令。
13. 如權(quán)利要求12所述的裝置,其特征在于,在執(zhí)行組合結(jié)果的指令前所述執(zhí)行單元 執(zhí)行對所述狀態(tài)矩陣第二次執(zhí)行與2的GF相乘運算的指令。
14. 如權(quán)利要求12所述的裝置,其特征在于,執(zhí)行所述一個或多個與2的GF相乘運算 包括將所述狀態(tài)矩陣的行存儲在第一寄存器中,對存儲在所述第一寄存器中的每一行執(zhí)行 與2的GF相乘運算,以及將所述與2的GF相乘運算的結(jié)果存儲在第二寄存器中。
15. 如權(quán)利要求14所述的裝置,其特征在于,執(zhí)行所述一個或多個與2的GF相乘運算 進一步包括對于值為1的每個最商有效位執(zhí)行XOR運算。
16. 如權(quán)利要求12所述的裝置,其特征在于,執(zhí)行所述一個或多個與2的GF相乘運算 進一步包括對存儲在所述第二寄存器中的每一行執(zhí)行與2的第二次GF相乘運算,以及將所 述與2的第二次GF相乘運算的結(jié)果存儲在第三寄存器中。
17. 如權(quán)利要求16所述的裝置,其特征在于,執(zhí)行組合所述一個或多個與2的GF相乘 運算的結(jié)果的指令包括使用存儲在所述第一、第二和第三寄存器中的數(shù)據(jù)作為源操作數(shù)來 組合所述狀態(tài)矩陣的因子。
18. 如權(quán)利要求17所述的裝置,其特征在于,所述結(jié)果矩陣被存儲在所述第一寄存器 中。
19. 如權(quán)利要求16所述的裝置,其特征在于,所述狀態(tài)矩陣是8位條目的8x8矩陣。
20. 如權(quán)利要求13所述的裝置,其特征在于,所述狀態(tài)矩陣是8位條目的8x16矩陣。
21. 如權(quán)利要求20所述的裝置,其特征在于,所述執(zhí)行單元進一步執(zhí)行對所述狀態(tài)矩 陣的第二個一半執(zhí)行與2的GF相乘運算的指令以及執(zhí)行對所述狀態(tài)矩陣的所述第二個一 半第二次執(zhí)行與2的GF相乘運算的指令。
22. -種系統(tǒng),包括: 互連; 與所述互連耦合的處理器,所述處理器執(zhí)行對狀態(tài)矩陣執(zhí)行一個或多個與2的伽羅瓦 域(GF)相乘運算的指令以及用異或(XOR)函數(shù)將所述一個或多個與2的GF相乘運算的結(jié) 果進行組合以生成結(jié)果矩陣的指令。 與所述互連耦合的動態(tài)隨機存取存儲器(DRAM)。
23. 如權(quán)利要求22所述的系統(tǒng),其特征在于,在執(zhí)行組合結(jié)果的指令前,所述處理器執(zhí) 行對所述狀態(tài)矩陣第二次執(zhí)行與2的GF相乘運算的指令。
24. 如權(quán)利要求12所述的裝置,其特征在于,執(zhí)行所述一個或多個與2的GF相乘運算 包括將所述狀態(tài)矩陣的行存儲在第一寄存器中,對存儲在所述第一寄存器中的每一行執(zhí)行 與2的GF相乘運算,將所述與2的GF相乘運算的結(jié)果存儲在第二寄存器中,對存儲在所述 第二寄存器中的每一行執(zhí)行與2的第二次GF相乘運算,將所述與2的第二次GF相乘運算 的結(jié)果存儲在第三寄存器中。
25. 如權(quán)利要求24所述的系統(tǒng),其特征在于,執(zhí)行組合所述一個或多個與2的GF相乘 運算的結(jié)果的指令包括使用存儲在所述第一、第二和第三寄存器中的數(shù)據(jù)作為源操作數(shù)來 組合所述狀態(tài)矩陣的因子。
26. 如權(quán)利要求22所述的系統(tǒng),其特征在于,所述處理器進一步執(zhí)行對所述狀態(tài)矩陣 的第二個一半執(zhí)行與2的GF相乘運算的指令以及執(zhí)行對所述狀態(tài)矩陣的所述第二個一半 第二次執(zhí)行與2的GF相乘運算的指令。
27. 一種制品,包括: 機器可讀介質(zhì),包括一個或多個固態(tài)數(shù)據(jù)存儲材料,所述機器可讀存儲介質(zhì)存儲指令, 當執(zhí)行所述指令時,使得處理器: 對狀態(tài)矩陣執(zhí)行一個或多個與2的伽羅瓦域(GF)相乘運算;以及 用異或(XOR)函數(shù)將所述一個或多個與2的GF相乘運算的結(jié)果進行組合以生成結(jié)果 矩陣。
28. 如權(quán)利要求27所述的制品,其特征在于,所述機器可讀存儲介質(zhì)存儲在被執(zhí)行時 進一步使得所述處理器在執(zhí)行組合結(jié)果的指令前,執(zhí)行對所述狀態(tài)矩陣第二次執(zhí)行與2的 GF相乘運算的指令。
29. 如權(quán)利要求28所述的制品,其特征在于,執(zhí)行所述一個或多個與2的GF相乘運算 進一步包括對存儲在所述第二寄存器中的每一行執(zhí)行與2的第二次GF相乘,以及將所述與 2的第二次GF相乘運算的結(jié)果存儲在第三寄存器中。
30. 如權(quán)利要求29所述的制品,其特征在于,執(zhí)行組合所述一個或多個與2的GF相乘 運算的結(jié)果的指令包括使用存儲在所述第一、第二和第三寄存器中的數(shù)據(jù)作為源操作數(shù)來 組合所述狀態(tài)矩陣的因子。
【文檔編號】G06F13/14GK104126174SQ201180076443
【公開日】2014年10月29日 申請日期:2011年12月22日 優(yōu)先權(quán)日:2011年12月22日
【發(fā)明者】G·M·沃爾里齊, K·S·雅普, V·戈帕爾, J·D·吉爾福德, E·奧茲圖科, S·M·格爾雷, W·K·費格哈利, M·G·迪克森 申請人:英特爾公司