TWI552071B - 用以處理keccak安全雜湊演算法的方法及裝置(二) - Google Patents
用以處理keccak安全雜湊演算法的方法及裝置(二) Download PDFInfo
- Publication number
- TWI552071B TWI552071B TW104110462A TW104110462A TWI552071B TW I552071 B TWI552071 B TW I552071B TW 104110462 A TW104110462 A TW 104110462A TW 104110462 A TW104110462 A TW 104110462A TW I552071 B TWI552071 B TW I552071B
- Authority
- TW
- Taiwan
- Prior art keywords
- keccak
- algorithm
- sub
- processor
- blocks
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Power Engineering (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
- Peptides Or Proteins (AREA)
Description
本發明之實施例大致上係有關於指令處理裝置。更明確言之,本發明之實施例係有關於用以處理KECCAK安全雜湊演算法的指令處理裝置。
KECCAK乃新穎安全雜湊函數,其係以5x5邊長表面及2L深度,L=0至6排列的位元陣列維持狀態。KECCAK係由國家標準與技術研究院(NIST)考慮選用作為SHA-3標準的一種演算法。於硬體體現的KECCAK效能超過競爭該標準的其它安全雜湊演算法,原因在於要求的邏輯函式簡單且可利用並列性。針對目前軟體體現的KECCAK效能係受到要求個別整數指令的邏輯操作數目高所限。
KECCAK狀態可視為具有5x5元素邊長定名為一「截割片」及w位元深度(z方向)的三維元素(位元)陣列,於該處該深度為2的次冪,亦即w=2l,l=0至6,如圖1A所示。KECCAK使用「海綿」組態,於該處r位元係以「第一」狀態之r位元的互斥或(XOR)被輸入KECCAK狀態,接著為
KECCAK-f狀態更新函數。KECCAK-1600(l=64)為提供訊息認證的最高容量之目標函數。該狀態之線通亦即在z軸方向的一維次陣列,映射至64位元處理器字元,結果導致簡單且有效的步驟映射之軟體體現。對l=6,KECCAK-1600(5x5x64)乃由nr回合五個步驟/置換θ、ρ、π、χ、ι所組成的狀態更新函數,如圖1B所示。
θ函數係如圖1C所示執行,及ρ函數如圖1D所示,旋轉線道/暫存器達特定補償值,要求24暫存器旋轉(一個補償值為零)。π函數為線道的轉位。此種轉位改變每64位元區段的使用及群集,如圖1E所示。在線道回到其原始位置之前,轉置具有24回合的週期。於χ步驟期間,各列係由該列的鄰近元素變換:A[x,y]=a[x,y]⊕((NOT a[x+1,y])AND a[x+2,y])
一列線道係一起計算,5個非(NOT),5個及(AND),及5個互斥或(XOR)共需15x5=75運算。施加ι加(add)回合常數至單一暫存器/線道要求1個互斥或指令,如圖1F所示。每回合的運算對θ為55,對ρ為24,對π為零,對χ為75,對ι為1。每回合共有155運算。回合數目nr對l=6為l2+2l=24,亦即64位元暫存器。對24回合KECCAK,要求155*24=3720運算。在一個4執行單元處理器上,若各次運算要求一個指令,則至少要求930週期。
因π函數故,前述運算無法使用向量指令使用函數的並列執行而有效地進行,諸如得自美國加州聖塔卡拉的英特爾公司(Intel Corporation)的串流單一指令多重資料
(SIMD)擴延(SSE)或進階向量擴延(AVX)指令,原因在於方塊的線道及相對應字元的位元各個回合皆拌碼之故。
依據本發明之一實施例,係特地提出一種處理器,其包含多個暫存器,其用以儲存表示一KECCAK雜湊演算法的一KECCAK狀態之資料的表示一KECCAK狀態方塊的劃分之多個次方塊;一指令解碼器,其用以接收一指令以處理表示該KECCAK雜湊演算法的該KECCAK狀態之資料的該KECCAK狀態方塊之該等次方塊;及耦接至該指令解碼器之一執行單元,其響應於該指令以一向量方式在接收自該等多個暫存器的該等多個次方塊上執行該KECCAK雜湊演算法的計算。
100‧‧‧處理器
101‧‧‧指令解碼器
102‧‧‧執行單元
104、305-308、400‧‧‧暫存器
105‧‧‧暫存器集合/記憶體
106‧‧‧指令
108‧‧‧來源運算元(SRC)
109‧‧‧目的地運算元(DEST)
110‧‧‧KECCAK狀態方塊
301-304‧‧‧次方塊
401-403‧‧‧16-位元區段
404‧‧‧112位元
500‧‧‧處理器
501‧‧‧初始化
502‧‧‧KECCAK_THETA階段
503‧‧‧KECCAK_ROUND階段
600‧‧‧方法
601-605‧‧‧方塊
900‧‧‧系統
902‧‧‧晶片組
903、904‧‧‧裝置
905‧‧‧記憶體
906、907‧‧‧匯流排
908‧‧‧快取記憶體
909‧‧‧處理器核心
910‧‧‧記憶體控制器中樞器(MCH)
911‧‧‧輸入輸出控制器中樞器(ICH)
912‧‧‧圖形加速器、圖形裝置
913‧‧‧代碼
914‧‧‧資料
本發明之實施例係於附圖之圖式中舉例說明但非限制性,附圖中類似的元件符號係指示相似的元件。
圖1A-1F為略圖例示說明一種典型KECCAK雜湊演算法之處理程序。
圖2為方塊圖例示說明依據一個實施例一處理器之一實例。
圖3為方塊圖例示說明依據一個實施例一KECCAK狀態方塊之劃分。
圖4為方塊圖例示說明依據一個實施例用於KECCAK運算之一暫存器布局。
圖5為依據一個實施例用以執行KECCAK雜湊演算法
之虛擬碼。
圖6為流程圖例示說明依據一個實施例一種執行KECCAK雜湊演算法之方法。
圖7為方塊圖例示說明依據一個實施例的一資料處理系統之一實例。
圖8為方塊圖例示說明依據另一個實施例的一資料處理系統之一實例。
將參考後文詳細說明部分描述本發明之多個實施例及面向,及附圖將例示說明該等多個實施例。後文詳細說明部分及附圖係為本發明之例示說明所非視為限制本發明。描述無數特定細節以供徹底瞭解本發明之多個實施例。但於某些情況下,眾所周知的或習知的細節不加描述以提供本發明之實施例的精簡討論。
本說明書中述及「一個實施例」或「一實施例」表示連結該實施例描述的一特定特徵、結構、或特性係含括於至少一個本發明之實施例。「於一個實施例中」或「於一實施例中」等片語出現於本說明書各處並非必要皆係指同一個實施例。
依據若干實施例,一向量指令及一資料路徑係利用以將該KECCAK函數的指令從每回合超過100個指令減少至每個KECCAK回合約8個指令。於一個實施例中,應答在一處理器接收到執行KECCAK運算之一指令,具有至少
450位元的數個暫存器係利用以儲存表示一KECCAK狀態方塊的資料,如圖1A所示。如前文描述,一KECCAK狀態方塊(例如64截割片)要求1600儲存位元。於一個實施例中,該KECCAK狀態方塊係劃分成至少四個次方塊,於該處各個次方塊表示至少16截割片或一個¼狀態方塊。四個次方塊係儲存於具有至少450位元的至少四個暫存器,諸如得自英特爾(Intel)處理器之ZMM可相容暫存器(例如512-位元寬暫存器),於該處各個暫存器儲存該KECCAK狀態方塊的一個5x5x16或400位元部分(例如¼狀態方塊)。儲存在各個暫存器400位元係劃分為25個16-位元區段,於該處各個16-位元區段表示該完整KECCAK狀態方塊之一線道的四分之一。其餘50位元可用以儲存於操作期間的中間結果(例如另二截割片),容後詳述。其後,如上陳述的KECCAK函數中之至少部分可以一向量方式或並列藉一具向量能力的處理器執行。
圖2為方塊圖例示說明依據一個實施例一處理器之一實例。參考圖2,處理器100可表示任一種指令處理裝置。舉例言之,處理器101可為通用處理器。處理器100可為多種複雜指令集電腦(CISC)處理器、多種精簡指令集電腦(RISC)處理器、多種極長指令字組(VLIW)處理器、多種其混成體、或全然其它型別的處理器中之任一者。於一個實施例中,處理器100包括指令解碼器101以接收與解碼指令106。指令解碼器101可產生與輸出從指令106所反映的或推衍的一或多個微操作、微碼、進入點、微指令、其它指
令或其它控制信號。指令解碼器101可使用多個不同機構體現。合宜機構之實例包括但非僅限於微碼、唯讀記憶體(ROM)、詢查表、硬體體現、可規劃邏輯陣列(PLA)等。
處理器100進一步包括一或多個執行單元102,可包括算術邏輯單元,或能夠基於指令106而從事操作的另一型邏輯單元。由於指令解碼器101解碼指令106的結果,執行單元102可接收從指令106所反映的或推衍的一或多個微操作、微碼進入點、微指令、其它指令或其它控制信號。由於指令106指示一或多個來源運算元(SRC)108的結果,執行單元102可操作且儲存一結果於暫存器集合105之由指令106指示的一或多個目的地運算元(DEST)109。執行單元102可包括電路或其它執行邏輯(例如軟體組合硬體及/或韌體),其係可操作以執行從指令106推衍的指令或其它控制信號,及據此從事一操作。執行單元102可表示任一種執行單元,諸如邏輯單元、算術邏輯單元(ALU)、算術單元、整數單元等。
於一個實施例中,指令106可暗示地指示及/或明確地載明(例如透過一或多個專用欄位或位元集合)該來源運算元及目的地運算元。該等運算元之合宜來源及/或目的地之實例包括暫存器、記憶體、中間指令、及其組合。於多個實施例中,該等來源運算元及目的地運算元可為8-位元、16-位元、32-位元或64-位元運算元,但非必要。
於一個實施例中,部分或全部來源運算元及目的地運算元可儲存於一暫存器集合或記憶體105的暫存器。
該暫存器集合可為一暫存器檔案的一部分,連同潛在其它暫存器,諸如狀態暫存器、旗標暫存器等。一暫存器可為可用以儲存資料的一儲存位置或裝置。該暫存器集合可經常實體位在具有執行單元的晶粒上。該等暫存器從該處理器外側或從程式設計師的觀點為可見。舉例言之,指令可載明儲存於該等暫存器的運算元。多種不同型別的暫存器為適宜,只要如此處所述能夠儲存與提供資料即可。該等暫存器可經或可不經重新命名。合宜暫存器之實例包括但非僅限於專用實體暫存器、運用暫存器重新命名的動態配置實體暫存器、專用的與動態配置的實體暫存器之組合等。另外,來源運算元及目的地運算元中之一或多者可儲存於一暫存器以外的一儲存位置,諸如於一系統記憶體中之一位置。
依據一個實施例,用以執行KECCAK運算的一向量指令及資料路徑係利用以將該KECCAK函數的指令從每回合超過100個指令減少至每個KECCAK回合約8個指令。於一個實施例中,應答在一指令解碼器101接收到執行KECCAK運算之一指令106,指令解碼器101係經組配來配置暫存器104,具有至少400位元以儲存表示一KECCAK狀態方塊的資料110及額外至少50位元以儲存中間結果。注意暫存器104可為暫存器集合105(例如來源及/或目的地暫存器)的一部分,及KECCAK狀態方塊110可從該記憶體取回。如前文描述,一個KECCAK狀態方塊(例如64截割片)要求1600個儲存位元。
於一個實施例中,應答指令106,指令解碼器101及/或執行單元102可將KECCAK狀態方塊110劃分成四個次方塊,於該處各個次方塊表示至少16截割片或一個¼狀態方塊如圖3所示。參考圖3,KECCAK狀態方塊110被劃分成四個次方塊301-304。然後四個次方塊301-304分別地儲存於至少四個暫存器305-308。於一個實施例中,暫存器305-308具有至少450位元,較佳為512-位元,諸如得自英特爾(Intel)處理器之ZMM可相容暫存器(例如512-位元寬暫存器)。各個暫存器305-308儲存該KECCAK狀態方塊的一個5x5x16或400位元部分(例如¼狀態方塊)。儲存在各個暫存器305-308的400位元係劃分為25個16-位元區段,如圖4所示。
參考圖4,暫存器400可表示圖3的暫存器305-308中之任一者。於一個實施例中,暫存器400係被劃分成25個16-位元區段401-403,於該處各個16-位元區段401-403表示該完整KECCAK狀態方塊110之一線道的四分之一。回頭參考圖2,一旦KECCAK狀態方塊110已經被劃分且妥當地儲存在圖3的暫存器305-308,KECCAK函數中之至少部分可以一向量方式或並列藉執行單元102的KECCAK單元106執行。
依據若干實施例,π、χ、及ι函數可與得自其它1/4方塊區段的資料獨立無關地,針對各個1/4方塊執行。為了計算一個象限(例如次方塊或1/4狀態方塊)的θ函數,也將需要得自「下一個」象限的資料。針對前15個截割片計算ρ
函數,只需操作含在該象限的資料。但為了在第16個截割片操作,需要儲存在「下一個」象限的第17個截割片。ρ旋轉函數要求得自各個1/4方塊的狀態執行線道旋轉函數,針對全部1/4方塊的各個線道為相同。
依據一個實施例,至少兩個指令或階段用以針對每回合共八個指令,處理在各個1/4方塊上的一回合KECCAK運算。第一指令或階段稱作為KECCAK_THETA,且依據一個實施例可定義如下:KECCAK_THETA Dst/Src1,Src2,Src3
於該KECCAK_THETA階段期間,處理器係經組配來在各個1/4截割片上執行θ函數及該ρ(旋轉)函數的第一部分:Src1=正被處理的該狀態象限,z=(z0至z0+15)mod 64
Src2=Src1旁的的該狀態象限,z=(z0+16至z0+31)mod 64
Src3=Src2旁的的該狀態象限,z=(z0+32至z0+47)mod 64
於一個實施例中,指令或階段KECCAK_THETA的第一部分於Src1、Src2及Src3上執行θ函數。注意Src3的最末截割片的θ無法計算,原因在於需要得自第四象限的一截割片。KECCAK_THETA的第二部分執行ρ函數的一部分。更明確言之,針對各個線道,處理邏輯針對在src1象限的位元摘取後θ位元(例如圖4之位元404),其位元將來自象限1、2及3之位元。指令或階段KECCAK_THETA的最末部分係從Src1及Src3摘取兩個未經處理的截割片(例如Src1之最末截割片及Src3之最末截割片)且放置於一目的地暫存器
Dst的第17截割片,Dst[449:400],亦即Dst[424:400]=Src1[0,16,32,...,384]及一目的地暫存器Dst的第18截割片,亦即Dst[449:425]=Src3[15,31,...,399]。
第二指令或階段稱作為KECCAK_ROUND,且依據一個實施例可定義如下:KECCAK_ROUND Dst/Src1,Src2,Src3
於KECCAK_ROUND階段期間,處理器係將對在Src1象限的截割片完成ρ旋轉函數及執行π、χ、及ι函數:Src1=KECCAK_THETA指令之結果
Src2=最遠離該Src1象限之未經處理的象限
Src3=欲用於ι函數的KECCAK捨入常數
依據一個實施例,指令KECCAK_ROUND的第一部分係在儲存於Src1[449:425]的「第三」象限及Src2象限的最末截割片上執行θ函數。注意為了計算Src2的最末截割片之θ,需要儲存在Src1[424:400]的Src1象限之未經處理的第一截割片。KECCAK_ROUND的第二部分係從第一部分的結果中摘取對Src1象限完成ρ函數所需的位元。然後接著於相對應於Src1已完成的ρ變換象限執行π、χ、及ι函數。
圖5為依據一個實施例執行一回合KECCAK的虛擬碼之一實例。虛擬碼500可由編碼器產生且藉圖2處理器100以向量方式執行。參考圖5,相對應於四個象限的狀態係分別地儲存於暫存器ZMM1、ZMM2、ZMM3及ZMM4。此處ZMM可相容暫存器為至少450-位元寬,較佳地至少512-位元寬。於初始化501期間,儲存於暫存器
ZMM1-ZMM4的一拷貝次方塊(例如1/4 KECCAK狀態方塊)係分別地儲存於暫時暫存器ZMMTMP1-ZMMTMP4。於階段502期間,其為KECCAK_THETA階段,θ函數及ρ函數的第一部分係在儲存於暫存器ZMM1-ZMM4的各個次方塊上執行。
於階段503期間,其為KECCAK_ROUND階段,執行ρ函數的第二部分以及執行π、χ、及ι函數。注意此處暫存器ZMMRC含有用於函數的捨入常數。於一個實施例中,處理器的第二SIMD埠係用以執行MOV指令,係用以保有未經處理的1/4方塊狀態以完成旋轉。於一個實施例中,KECCAK_THETA及KECCAK_ROUND的資料路徑係每回合10週期的資料通量的三週期資料路徑體現。24回合KECCAK係在240週期完成,或每個指令整數碼的單一操作約4倍改良。
圖6為流程圖例示說明依據一個實施例以向量方式執行KECCAK運算之方法。方法600可藉圖2之處理器100執行。參考圖6,於方塊601,處理器接收一指令以在表示具有64截割片的KECCAK狀態方塊之資料上執行KECCAK運算。於方塊602,KECCAK狀態方塊劃分成四個次方塊(例如1/4狀態方塊),各有16個截割片。於方塊603,該等次方塊係儲存於四個暫存器,於該處各個暫存器為至少450-位元寬,較佳為512-位元寬。於方塊604,針對各回合KECCAK運算,對次方塊執行KECCAK_THETA,包括在次方塊上執行θ函數及ρ函數的第一部分及π、χ、及ι函數。
圖7為方塊圖例示說明依據本發明之一個實施例的資料處理系統之實例。系統900可表示前述系統中之任一者。處理器901可表示如前述圖2的處理器100。系統900可表示前述系統中之任一者。舉例言之,系統900可表示桌上型電腦、膝上型電腦、平板電腦、伺服器、行動電話(例如智慧型電話)、媒體播放器、個人數位助理器(PDA)、個人通訊裝置、遊戲裝置、網路路由器或中樞器、無線存取點或轉發器、機上盒、或其組合。注意雖然圖7例示說明資料處理系統的各個組件,但非意圖表示互連該等組件的任何特定架構或方式;原因在於此等細節非關本發明之實施例。也須瞭解具有更少組件或者也許更多組件的網路電腦、掌上型電腦、行動電話、及其它資料處理系統也可用於本發明之實施例。
參考圖7,於一個實施例中,系統900包括處理器901及晶片組902,以透過一匯流排或一互連體而耦接包括記憶體905及裝置903-904的各個組件至處理器901。處理器901可表示單一處理器或多個處理器有單一處理器核心或多個處理器核心909含括於其中。處理器901可表示一或多個通用處理器,諸如微處理器、中央處理單元(CPU)等。更明確言之,處理器901可為複雜指令集運算(CISC)微處理器、精簡指令集運算(RISC)微處理器、極長指令字組(VLIW)微處理器、或體現其它指令集的處理器、或體現其它指令集之組合的處理器。處理器901也可為一或多個特用處理器,諸如特定應用積體電路(ASIC)、可現場程式規劃閘陣
列(FPGA)、數位信號處理器(DSP)、網路處理器、圖形處理器、網路處理器、通訊處理器、密碼處理器、共處理器、嵌入式處理器、或能處理指令的任何其它型別的邏輯。舉例言之,處理器901可為奔騰(Pentium®)4、奔騰雙核心、核心(CoreTM)2雙重及四重、席翁(Xeon)、伊塔尼(Itanium)、愛克斯階(XScale)、核心i7、核心i5、西洛龍(Celeron)、或強臂(StrongARM)微處理器,得自美國加州聖塔卡拉的英特爾公司。處理器901係經組配來執行用以進行此處討論的操作及步驟之指令。
處理器901可包括一指令解碼器,其可接收且解碼多個指令。解碼器可產生與輸出反映或衍生自原始輸入指令的一或多個微運算、微碼進入點、微指令、其它指令或其它控制信號。解碼器可使用各種不同機制體現。適當機制之實例包括但非僅限於微碼唯讀記憶體(ROM)、詢查表、硬體體現、可規劃邏輯陣列(PLA)等。
解碼器可能並非為處理器901的必要組件。於一或多個其它實施例中,取而代之,處理器901可具有指令模擬器、指令轉譯器、指令變形器、指令解譯器、或其它指令轉換邏輯。多種不同型別的指令模擬器、指令變形器、指令轉譯器等為技藝界所已知。指令轉換邏輯可接收位元範圍隔離指令,模擬、轉譯、變形、解譯或以其它方式轉換該位元範圍隔離指令,及輸出與該原始位元範圍隔離指令相對應的一或多個指令或控制信號。指令轉換邏輯可體現在軟體、硬體、韌體、或其組合。有些情況下,部分或
全部指令轉換邏輯可非位在晶粒上,而指令處理裝置的其餘部分諸如在分開晶粒或在系統記憶體。有些情況下,指令處理裝置可具有解碼器及指令轉換邏輯二者。
處理器901及/或核心909可進一步包括耦接至或以其它方式與解碼器之輸出通訊的一或多個執行單元。「耦接」一詞可表示二或多個元件彼此直接電氣接觸或電氣連接。但「耦接」一詞也可表示二或多個元件並非彼此直接連結,但仍然彼此協作或互動或通訊(例如透過中介組件)。舉個實例,解碼器及執行單元可經由一中介選擇性緩衝器或技藝界已知的可能耦接在解碼器與執行單元間的其它組件而彼此耦接。處理器901及/或核心909可進一步包括多個不同型別的執行單元,諸如算術單元、算術邏輯單元(ALU)、整數單元等。
處理器901可進一步包括一或多個暫存器檔案,包括但非僅限於整數暫存器、浮點暫存器、向量或擴延暫存器、狀態暫存器、及指令指標器暫存器等。「暫存器」一詞用於此處係指係指用作為巨集指令之一部分以識別運算元的板上處理器儲存位置。換言之,此處所指暫存器乃從該處理器外部(從程式設計師的觀點)可見的該等暫存器。但暫存器不應囿限於特定型別的電路。反而暫存器只須能儲存與提供資料且執行此處描述之功能。此處描述之暫存器可使用任何數目的不同技術而由處理器內部的電路體現,諸如專用實體暫存器、運用暫存器重新命名的動態配置實體暫存器、專用與動態配置實體暫存器的組合等。於一個
實施例中,整數暫存器儲存32-位元或64-位元整數資料。暫存器檔案可含有用於緊縮資料的擴延多媒體SIMD暫存器(例如XMM)。此等暫存器可包括保有此等緊縮資料運算元的有關SSE2、SSE3、SSE4、GSSE及以上(通稱作「SSEx」)技術的128位元寬XMM暫存器及256位元寬暫存器(可合併XMM暫存器於其低階位元)。
處理器901及/或核心909也可選擇性地包括一或多個其它眾所周知的組件。例如,處理器901可選擇性地包括指令提取邏輯、預解碼邏輯、排程邏輯、重新排序緩衝器、分支預測邏輯、報廢邏輯、暫存器重新命名邏輯等、或其若干組合。此等組件可以習知方式體現,或基於本文揭示如熟諳技藝人士顯然易知地略作調整。無需此等組件的進一步描述以瞭解此等實施例,但若有所需,進一步描述可於公開參考文獻方便易得。此等組件在文字上有無數技藝界已知的不同的組合及組態。其範圍並不限於任何已知之此等組合或組態。實施例可有或無此等額外組件而予體現。
晶片組902可包括記憶體控制器中樞器(MCH)910及輸入輸出控制器中樞器(ICH)911。MCH 910可包括與記憶體905通訊的記憶體控制器(圖中未顯示)。MCH 910也可包括與圖形裝置912通訊的圖形介面。於本發明之一個實施例中,圖形介面可透過加速圖形埠(AGP)、周邊組件互連體(PCI)快速匯流排、或其它型別的互連裝置而與圖形裝置912通訊。ICH 911可提供與I/O裝置諸如裝置903-904
的介面。裝置903-904中之任一者可為儲存裝置(例如硬碟機、快閃記憶體裝置)、通用串列匯流排(USB)埠、鍵盤、滑鼠、並聯埠、串聯埠、列印機、網路介面(有線或無線)、無線收發器(例如WiFi、藍牙或小區式收發器)、媒體裝置(例如音訊/視訊編解碼器或控制器)、匯流排橋接器(例如PCI-PCI橋接器)或其組合。
MCH 910偶爾稱作為北橋,而ICH 911偶爾稱作為南橋,但有些人會在其間做技術區分。如此處使用,MCH、ICH、北橋、及南橋等詞係意圖廣義地解譯為涵蓋晶片的功能包括發送中斷信號給處理器的各個晶片。於若干實施例中,MCH 910可與處理器901整合。於此種組態中,如圖11所示,晶片組902操作為介面晶片執行MCH 910及ICH 911的若干功能。此外,圖形加速器912可整合於MCH 910或處理器901內部。
記憶體905可儲存資料,包括由處理器901或任何其它裝置所執行的指令序列。舉例言之,多個不同作業系統、裝置驅動程式、韌體(例如基本輸出入系統或BIOS)及/或應用程式的可執行代碼913及/或資料914可載入記憶體905及由處理器901執行。作業系統可為任一型作業系統,例如,得自微軟(Microsoft®)的視窗(Windows®)、得自蘋果(Apple)的Mac OS®/iOS®、得自谷歌(Google®)的安卓(Android®)、Linux®、Unix®或其它實時作業系統。於一個實施例中,記憶體905可包括一或多個依電性儲存(或記憶體)裝置諸如,隨機存取記憶體(RAM)、動態RAM(DRAM)、
同步DRAM(SDRAM)、靜態RAM(SRAM)、或其它型別的儲存裝置。也可利用非依電性記憶體,諸如硬碟機或快閃儲存裝置。前端匯流排(FSB)906可為多插互連體或點對點互連體。前端匯流排(FSB)一詞意圖涵蓋各種型別的連結至處理器901的互連體。晶片組902可透過點對點介面而與其它裝置諸如裝置903-904通訊。匯流排906可體現為多種匯流排或互連體,諸如快速路徑互連體(QPI)、超傳送互連體、或進階微控制器匯流排架構(AMBA)可相容性匯流排,諸如AMBA高效能匯流排(AHB)。
快取記憶體908可為任一種處理器快取記憶體,諸如層級-1(L1)快取記憶體、L2快取記憶體、L3快取記憶體、L4快取記憶體、最末層級快取記憶體(LLC)或其組合。快取記憶體908可與處理器901的處理器核心909共享。快取記憶體908可嵌入於處理器901內部及/或位在處理器901外部。快取記憶體908可在核心909間共享。另外,核心909中之至少一者進一步包括嵌入於其中的本身本地快取記憶體。核心909中之至少一者可利用本地快取記憶體及與核心909中之另一者共享的快取記憶體。處理器901可進一步包括一直接快取記憶體存取(DCA)邏輯以使得其它裝置諸如裝置903-904直接地存取快取記憶體908。處理器901及/或晶片組902可進一步包括一中斷控制器,諸如高階可規劃中斷控制器(APIC)以處置中斷,諸如訊息發訊中斷。
前文詳細說明部分的某些部分已經以就對一電腦記憶體內部的資料位元的演算法及運算之符碼表示型態
呈現。此等演算法之描述及表示型態乃資料處理技藝界的熟諳技藝人士以最有效地傳遞其工作本質給技藝界的其它熟諳技藝人士所使用之方式。演算法於此處大致上須瞭解為結果可獲得期望結果之一自我一致的運算序列。運算為物理量的實體操弄所需。
但須牢記全部此等類似術語係與適當實體量相聯結且僅為施加至此等量的方便標示。除非有與前文討論顯然易知的除外特別陳述,否則須瞭解於全文說明中,利用術語諸如如下申請專利範圍陳述的術語討論述及一電腦系統或類似電子運算裝置的動作及處理,係將在電腦系統的暫存器及記憶體內部以物理(電子)量表示的資料操弄且變換成為其它資料,該等資料同樣地在電腦系統的記憶體或暫存器或其它此等資訊儲存、傳輸或顯示裝置內部以物理量表示。
附圖顯示之技術可使用儲存在且於一或多個電子裝置上執行的代碼及資料體現。此等電子裝置使用電腦可讀取媒體諸如非過渡電腦可讀取儲存媒體(例如磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相變記憶體)及過渡電腦可讀取儲存媒體(例如電氣、光學、聲學或其它形式的傳播信號,諸如載波、紅外線信號、數位信號)儲存與通訊(內部及/或透過網路與其它電子裝置)代碼及資料。
先前各圖中闡釋的處理或方法可藉處理邏輯執行,包含硬體(例如電路、專用邏輯等)、韌體、軟體(例如
在非過渡電腦可讀取媒體上具體實施)或其組合。雖然前文中處理或方法係就若干循序操作描述,但須瞭解可以不同順序執行若干所述操作。此外,若干操作可並列地而非串列地實施。
前文說明書中已經參考其特定具體實施例描述本發明之實施例。顯然可不悖離如下申請專利範圍列舉的本發明的廣義精髓及範圍而對其做出多項修改。因此說明書及附圖圖式須視為例示說明意義而非限制性意義。
Claims (20)
- 一種處理器,其包含:多個暫存器,其係用於儲存多個次方塊,該等次方塊表示出對於表示出一KECCAK雜湊演算法之一KECCAK狀態的資料的一KECCAK狀態方塊的數個劃分;一指令解碼器,其係用於接收一指令以處理表示出該KECCAK雜湊演算法之該KECCAK狀態的資料的該KECCAK狀態方塊之該等次方塊;及耦接至該指令解碼器的一執行單元,其係用於回應於該指令而以一向量方式對自該等多個暫存器所接收而來的該等多個次方塊執行該KECCAK雜湊演算法之計算。
- 如請求項1之處理器,其中,該KECCAK狀態方塊包括被劃分成4個次方塊的64個截割片,其中,各個次方塊含有16個截割片。
- 如請求項2之處理器,其中,該等多個暫存器包括4個暫存器,各個暫存器具有至少450個位元。
- 如請求項1之處理器,其中,該執行單元受組配為可針對該KECCAK演算法之各個回合執行包含下列的KECCAK_THETA操作:平行地對該等次方塊執行該KECCAK演算法之一θ函數,及 平行地對該等次方塊執行該KECCAK演算法之一ρ函數的一第一部分。
- 如請求項4之處理器,其中,該執行單元進一步受組配為可執行包含下列的KECCAK_ROUND操作:平行地對該等次方塊執行該KECCAK演算法之該ρ函數的一第二部分,平行地對該等次方塊執行該KECCAK演算法之一π函數,平行地對該等次方塊執行該KECCAK演算法之一χ函數,及平行地對該等次方塊執行該KECCAK演算法之一ι函數。
- 如請求項5之處理器,其中,該執行單元受組配為可回應於該指令而執行該KECCAK演算法的該等KECCAK_THETA操作,並且其中,該執行單元受組配為可回應於一第二指令而執行該KECCAK演算法的該等KECCAK_ROUND操作。
- 如請求項5之處理器,其中,該等多個暫存器各含有至少512位元,其中,至少400位元係用來儲存一次方塊,並且其中,該等至少512位元之剩餘部分係用來儲存該等KECCAK_THETA操作及KECCAK_ROUND操作的中間結果。
- 一種方法,其包含下列步驟:在一處理器之一指令解碼器處接收一指令以處理 多個次方塊,該等多個次方塊是從表示出一KECCAK雜湊演算法之一KECCAK狀態的資料的一KECCAK狀態方塊所劃分出來的,其中,該等多個次方塊係儲存於多個暫存器中;以及由該處理器之一執行單元,回應於該指令而以一向量方式對自該等多個暫存器所接收而來的該等多個次方塊執行該KECCAK雜湊演算法之計算。
- 如請求項8之方法,其中,該KECCAK狀態方塊包括被劃分成4個次方塊的64個截割片,其中,各個次方塊含有16個截割片。
- 如請求項9之方法,其中,該等多個暫存器包括4個暫存器,各個暫存器具有至少450個位元。
- 如請求項8之方法,其中,該執行單元受經組配為可針對該KECCAK演算法之各個回合執行包含下列的KECCAK_THETA操作:平行地對該等次方塊執行該KECCAK演算法之一θ函數,及平行地對該等次方塊執行該KECCAK演算法之一ρ函數的一第一部分。
- 如請求項11之方法,其中,該執行單元進一步受組配為可執行包含下列的KECCAK_ROUND操作:平行地對該等次方塊執行該KECCAK演算法之該ρ函數的一第二部分,平行地對該等次方塊執行該KECCAK演算法之一π 函數,平行地對該等次方塊執行該KECCAK演算法之一χ函數,及平行地對該等次方塊執行該KECCAK演算法之一ι函數。
- 如請求項8之方法,其中,該執行單元受組配為可回於該指令而執行該KECCAK演算法的該等KECCAK_THETA操作,並且其中,該執行單元受組配為可回應於一第二指令而執行該KECCAK演算法的該等KECCAK_ROUND操作。
- 如請求項8之方法,其中,該等多個暫存器各含有至少512位元,其中,至少400位元係用來儲存一次方塊,並且其中,該等至少512位元之剩餘部分係用來儲存KECCAK_THETA操作及KECCAK_ROUND操作的中間結果。
- 一種資料處理系統,其包含:一互連體;耦接至該互連體的一處理器,其係用於接收一指令以處理表示出一KECCAK雜湊演算法之一KECCAK狀態的資料的一KECCAK狀態方塊之多個次方塊,該KECCAK狀態方塊被劃分成該等多個次方塊且被儲存於多個暫存器中,其中,該處理器可以一向量方式對自該等多個暫存器所接收而來的該等多個次方塊執行該KECCAK雜湊演算法之計算;以及 耦接至該互連體的一動態隨機存取記憶體(DRAM)。
- 如請求項15之系統,其中,該KECCAK狀態方塊包括被劃分成4個次方塊的64個截割片,其中,各個次方塊含有16個截割片。
- 如請求項16之系統,其中,該等多個暫存器包括4個暫存器,各個暫存器具有至少450個位元。
- 如請求項15之系統,其中,該處理器受組配為可針對該KECCAK演算法之各個回合執行包含下列的KECCAK_THETA操作:平行地對該等次方塊執行該KECCAK演算法之一θ函數,及平行地對該等次方塊執行該KECCAK演算法之一ρ函數的一第一部分。
- 如請求項15之系統,其中,該處理器進一步受組配為可執行包含下列的KECCAK_ROUND操作:平行地對該等次方塊執行該KECCAK演算法之該ρ函數的一第二部分,平行地對該等次方塊執行該KECCAK演算法之一π函數,平行地對該等次方塊執行該KECCAK演算法之一χ函數,及平行地對該等次方塊執行該KECCAK演算法之一ι函數。
- 如請求項15之系統,其中,該處理器受組配為可回應於 該指令而執行該KECCAK演算法的該等KECCAK_THETA操作,並且其中,該處理器受組配為可回答於一第二指令而執行該KECCAK演算法的該等KECCAK_ROUND操作。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/064640 WO2013089682A1 (en) | 2011-12-13 | 2011-12-13 | Method and apparatus to process keccak secure hashing algorithm |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201528134A TW201528134A (zh) | 2015-07-16 |
TWI552071B true TWI552071B (zh) | 2016-10-01 |
Family
ID=48612979
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104110462A TWI552071B (zh) | 2011-12-13 | 2012-11-22 | 用以處理keccak安全雜湊演算法的方法及裝置(二) |
TW101143667A TWI488109B (zh) | 2011-12-13 | 2012-11-22 | 用以處理keccak安全雜湊演算法的方法及裝置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101143667A TWI488109B (zh) | 2011-12-13 | 2012-11-22 | 用以處理keccak安全雜湊演算法的方法及裝置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9772845B2 (zh) |
CN (1) | CN103946796B (zh) |
TW (2) | TWI552071B (zh) |
WO (1) | WO2013089682A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6139859B2 (ja) * | 2012-10-31 | 2017-05-31 | キヤノン株式会社 | ハッシュ値生成装置およびハッシュ値生成方法 |
JP6238774B2 (ja) * | 2013-02-21 | 2017-11-29 | キヤノン株式会社 | ハッシュ値生成装置 |
JP6113091B2 (ja) * | 2013-03-07 | 2017-04-12 | キヤノン株式会社 | ハッシュ値生成装置 |
CN103812643A (zh) * | 2014-01-26 | 2014-05-21 | 厦门密安信息技术有限责任公司 | 基于arm的axi接口的sha3 ip核设计 |
US9317719B2 (en) * | 2014-09-04 | 2016-04-19 | Intel Corporation | SM3 hash algorithm acceleration processors, methods, systems, and instructions |
CN107124267B (zh) * | 2017-03-30 | 2020-04-17 | 宁波大学 | 一种密码芯片上的固定位宽密钥产生方法 |
US10379868B1 (en) * | 2019-02-04 | 2019-08-13 | Bell Integrator Inc. | Optimization method with parallel computations |
GB2582900A (en) | 2019-03-18 | 2020-10-14 | Pqshield Ltd | Cryptography using a cryptographic state |
US11985226B2 (en) * | 2020-12-23 | 2024-05-14 | Intel Corporation | Efficient quantum-attack resistant functional-safe building block for key encapsulation and digital signature |
US20220416998A1 (en) * | 2021-06-23 | 2022-12-29 | Intel Corporation | Side channel protection for sha3 cryptographic functions |
US11663009B2 (en) | 2021-10-14 | 2023-05-30 | International Business Machines Corporation | Supporting large-word operations in a reduced instruction set computer (“RISC”) processor |
CN114095149B (zh) * | 2021-11-12 | 2023-05-30 | 龙芯中科技术股份有限公司 | 信息加密方法、装置、设备及存储介质 |
US12001343B1 (en) * | 2022-12-30 | 2024-06-04 | International Business Machines Corporation | Selective distribution of translation entry invalidation requests in a multithreaded data processing system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080279369A1 (en) * | 2003-10-21 | 2008-11-13 | Widevine Technologies, Inc. | System and method for n-dimensional encryption |
US20090262925A1 (en) * | 2008-04-21 | 2009-10-22 | Natarajan Vijayarangan | Method for designing a secure hash function and a system thereof |
US20110040977A1 (en) * | 2009-08-11 | 2011-02-17 | Apple Inc. | Sponge and hash functions using a rubik's cube puzzle process |
TW201135460A (en) * | 2010-03-29 | 2011-10-16 | Via Tech Inc | Prefetcher, method of prefetch data, computer program product and microprocessor |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2507708B1 (en) * | 2009-12-04 | 2019-03-27 | Cryptography Research, Inc. | Verifiable, leak-resistant encryption and decryption |
US8850219B2 (en) * | 2010-05-13 | 2014-09-30 | Salesforce.Com, Inc. | Secure communications |
CN101872338B (zh) * | 2010-06-04 | 2012-08-29 | 杭州电子科技大学 | 一种认证协议中得到安全消息摘要的方法 |
US8831221B2 (en) * | 2010-09-28 | 2014-09-09 | Lsi Corporation | Unified architecture for crypto functional units |
US9032183B2 (en) * | 2012-02-24 | 2015-05-12 | Simplivity Corp. | Method and apparatus for content derived data placement in memory |
JP6139859B2 (ja) * | 2012-10-31 | 2017-05-31 | キヤノン株式会社 | ハッシュ値生成装置およびハッシュ値生成方法 |
US8924741B2 (en) * | 2012-12-29 | 2014-12-30 | Intel Corporation | Instruction and logic to provide SIMD secure hashing round slice functionality |
-
2011
- 2011-12-13 US US13/976,184 patent/US9772845B2/en active Active
- 2011-12-13 CN CN201180074906.2A patent/CN103946796B/zh active Active
- 2011-12-13 WO PCT/US2011/064640 patent/WO2013089682A1/en active Application Filing
-
2012
- 2012-11-22 TW TW104110462A patent/TWI552071B/zh not_active IP Right Cessation
- 2012-11-22 TW TW101143667A patent/TWI488109B/zh not_active IP Right Cessation
-
2017
- 2017-09-26 US US15/716,258 patent/US10691458B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080279369A1 (en) * | 2003-10-21 | 2008-11-13 | Widevine Technologies, Inc. | System and method for n-dimensional encryption |
US20090262925A1 (en) * | 2008-04-21 | 2009-10-22 | Natarajan Vijayarangan | Method for designing a secure hash function and a system thereof |
US20110040977A1 (en) * | 2009-08-11 | 2011-02-17 | Apple Inc. | Sponge and hash functions using a rubik's cube puzzle process |
TW201135460A (en) * | 2010-03-29 | 2011-10-16 | Via Tech Inc | Prefetcher, method of prefetch data, computer program product and microprocessor |
Non-Patent Citations (1)
Title |
---|
Guido Bertoni1, "Keccak specications", http://keccak.noekeon.org/, 27 October 2008. * |
Also Published As
Publication number | Publication date |
---|---|
US10691458B2 (en) | 2020-06-23 |
CN103946796B (zh) | 2016-08-24 |
TW201528134A (zh) | 2015-07-16 |
US20180157489A1 (en) | 2018-06-07 |
CN103946796A (zh) | 2014-07-23 |
US9772845B2 (en) | 2017-09-26 |
TW201337745A (zh) | 2013-09-16 |
WO2013089682A1 (en) | 2013-06-20 |
US20130275722A1 (en) | 2013-10-17 |
TWI488109B (zh) | 2015-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI552071B (zh) | 用以處理keccak安全雜湊演算法的方法及裝置(二) | |
JP6351682B2 (ja) | 装置および方法 | |
US9524168B2 (en) | Apparatus and method for shuffling floating point or integer values | |
US10387148B2 (en) | Apparatus and method to reverse and permute bits in a mask register | |
TWI478058B (zh) | 電腦實施方法、電腦可讀取儲存媒體以及用於最佳化程式碼的裝置 | |
TWI517037B (zh) | 用於使用前綴之指令集架構指令的條件式執行支援技術 | |
US9760371B2 (en) | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions | |
KR101934760B1 (ko) | 단일 명령어에 응답하여 회전 및 xor을 수행하기 위한 시스템들, 장치들, 및 방법들 | |
EP3238022B1 (en) | Method and apparatus for performing big-integer arithmetic operations | |
US11074073B2 (en) | Apparatus and method for multiply, add/subtract, and accumulate of packed data elements | |
KR20130064797A (ko) | 범용 논리 연산 방법 및 장치 | |
US11573799B2 (en) | Apparatus and method for performing dual signed and unsigned multiplication of packed data elements | |
JP5798650B2 (ja) | 短整数の乗算の数を減らすためのシステム、装置、および方法 | |
US20190163476A1 (en) | Systems, methods, and apparatuses handling half-precision operands | |
US11036499B2 (en) | Systems, apparatuses, and methods for controllable sine and/or cosine operations | |
GB2514885A (en) | Systems, apparatuses, and methods for zeroing of bits in a data element |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |