TW201332329A - 用以處理sha-1安全雜湊演算法之方法及裝置 - Google Patents

用以處理sha-1安全雜湊演算法之方法及裝置 Download PDF

Info

Publication number
TW201332329A
TW201332329A TW101147194A TW101147194A TW201332329A TW 201332329 A TW201332329 A TW 201332329A TW 101147194 A TW101147194 A TW 101147194A TW 101147194 A TW101147194 A TW 101147194A TW 201332329 A TW201332329 A TW 201332329A
Authority
TW
Taiwan
Prior art keywords
instruction
sha
operand
processor
messages
Prior art date
Application number
TW101147194A
Other languages
English (en)
Other versions
TWI488475B (zh
Inventor
Kirk S Yap
Gilbert M Wolrich
James D Guilford
Vinodh Gopal
Erdinc Ozturk
Sean M Gulley
Wajdi K Feghali
Martin G Dixon
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW201332329A publication Critical patent/TW201332329A/zh
Application granted granted Critical
Publication of TWI488475B publication Critical patent/TWI488475B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一種處理器包括:一指令解碼器,其用來來接收用來處理一SHA-1雜湊演算法之一第一指令,該第一指令具有用來儲存一SHA-1狀態之一第一運算元、用來儲存多個訊息之一第二運算元及用來指定一雜湊函數之一第三運算元;及一執行單元,其耦接至該指令解碼器來使用該第三運算元中指定之該雜湊函數來對該第一運算元中指定之該SHA-1狀態及該第二運算元中指定之該等多個訊息來執行該SHA-1雜湊演算法之多個輪轉。

Description

用以處理SHA-1安全雜湊演算法之方法及裝置 發明領域
本發明之實施例大體而言係關於指令處理裝置。更特定言之,本發明之實施例係關於用以處理SHA-1安全雜湊演算法之指令處理裝置。
發明背景
SHA代表安全雜湊演算法。其由國家安全局(NSA)設計且由國家標準與技術協會(NIST)公開之五個雜湊函數組成。其中,SHA-1為最風行的一者。SHA-1針對具有最大長度264之訊息而產生160位元之訊息摘要。訊息摘要為訊息之固定長度輸出。接著將訊息摘要輸入至數位簽章演算法(DSA),其接著將產生該訊息之簽章。簽署訊息摘要替代訊息提供改良之效能,此係因為訊息摘要將比訊息小得多。訊息之接受者接著將使相同雜湊演算法來驗證簽章。在傳輸期間發生之任何改變將導致不同之訊息摘要,且因此簽章將未驗證。一旦其經驗證為真,接受者即能夠解鎖訊息。此方法防止未授權使用者查看未打算供其使用之訊息。
當計算一訊息摘要時,SHA-1處理512位元之區塊。訊息摘要之總長度將為512之倍數。圖1為例示SHA-1運算之典型迭代之方塊圖。圖2A及圖2B展示在SHA-1運算之輪轉(round)期間分別使用之函數及常數。藉由SHA-1雜湊演算法處理512位元/64位元組之資料區塊由執行輪轉演算法之80輪轉(重複)組成。對於每一輪轉需要32位元之訊息輸入,其中針對訊息資料輸入之前16輪轉直接使用經雜湊之512位元之區塊,且藉由根據SHA-1標準指定之「訊息排程」函數而組合先前訊息輸入來導出輪轉17至80之訊息輸入。
具體而言,根據SHA-1標準,使用填充訊息來計算訊息摘要。該計算使用兩個緩衝器,每一者由五個32位元字以及一序列八十個32位元字組成。第一5字緩衝器之字標為A、B、C、D及E。第二5字緩衝器之字標為H0、H1、H2、H3及H4。80字序列之字標為W0、W1、...、W79。亦使用單字緩衝器TEMP。為產生訊息摘要,按順序處理該標準中所定義之16字區塊M1、M2、...、Mn。每一Mi之處理涉及80個步驟。在處理任何區塊之前,如下初始化{Hi}:H0=0x67452301;H1=0xEFCDAB89;H2=0x98BADCFE;H3=0x10325476;及H4=0xC3D2E1F0。
接著處理M1、M2、...、Mn。為處理Mi,執行以下運算:
a).將Mi分為16個字W0、W1、...、W15,其中W0為最左邊的字。
b).對於t=16至79,使Wt=S1(Wt-3 XOR Wt-8 XOR Wt-14 XOR Wt-16)。
c).使A=H0、B=H1、C=H2、D=H3、E=H4
d).對於t=0至79 TEMP=S5(A)+ft(B,C,D)+E+Wt+Kt;E=D;D=C;C=S30(B);B=A;A=TEMP;e).使H0=H0+A、H1=H1+B、H2=H2+C、H3=H3+D、H4=H4+E。
在處理Mn後,訊息摘要為由5個字H0、H1、H2、H3及H4表示之160位元串。
或者,根據SHA-1標準,上文假設序列W0、...、W79經實施為八十個32位元字之陣列。此在執行時間之最小化觀點來看為有效的,此係因為容易計算步驟(b)中Wt-3、...、Wt-16之位址。若空間非常珍貴,則替代方法為將{Wt}看作環形佇列,其可使用十六個32位元字來實施W[0]、...W[15]。在此狀況下,使MASK=0x0000000F,接著如下進行Mi之處理:
a).將Mi分為16個字W[0]、...、W[15],其中W[0]為最左邊的字。
b).使A=H0、B=H1、C=H2、D=H3、E=H4
c).對於t=0至79
s=t ^ MASK;若(t>=16),則W[s]=S1(W[(s+13)^ MASK]XOR W[(s+8)AND MASK]XOR W[(s+2)^ MASK]XOR W[s]);TEMP=S5(A)+ft(B,C,D)+E+W[s]+Kt;E=D;D=C;C=S30(B);B=A;A=TEMP;d).使H0=H0+A、H1=H1+B、H2=H2+C、H3=H3+D、H4=H4+E。
可在由聯邦資訊處理標準公開案(FIPS PUB 180-1995、4月17日)公開之安全雜湊標準中找到關於SHA-1規格之進一步詳細資訊。
習知軟體解決方案利用標準32位元指令及32位元暫存器/記憶體儲存器。輪轉計算需要四個32位元加法、兩個32位元旋轉、邏輯函數及移動。針對輪轉17至80之每一訊息輸入需要旋轉及3個互斥OR(XOR)。在針對80個輪轉/訊息傳遞中之每一者的四個32位元加法、3次旋轉及若干邏輯函數的情況下,甚至在多次執行單元處理器的情況下,需要若干循環來處理一輪轉。已缺少用來執行上述運算之有效方式。
依據本發明之一實施例,係特地提出一種處理器,其包含:一指令解碼器,其用來接收一第一指令來處理一SHA-1雜湊演算法,該第一指令具有用來儲存一SHA-1狀態之一第一運算元、用來儲存多個訊息之一第二運算元及用來指定一雜湊函數之一第三運算元;及一執行單元,其耦接至該指令解碼器,其回應於該第一指令來使用該第三運算元中指定之該雜湊函數來對該第一運算元中指定之 該SHA-1狀態及該第二運算元中指定之該等多個訊息來執行該SHA-1雜湊演算法之多個輪轉。
100‧‧‧處理器
101‧‧‧指令解碼器
102‧‧‧執行單元
104‧‧‧暫存器
105‧‧‧暫存器組
106‧‧‧指令
108‧‧‧源運算元(SRC)
109‧‧‧目的地運算元(DEST)
110‧‧‧資料
500、600、700‧‧‧方法
501~504、601~604、701~704‧‧‧區塊
900‧‧‧系統
901‧‧‧處理器
902‧‧‧晶片組
903~904‧‧‧裝置
905‧‧‧記憶體
906‧‧‧匯流排
908‧‧‧快取記憶體
909‧‧‧核心
910‧‧‧記憶體控制集線器(MCH)
911‧‧‧輸入輸出控制集線器(ICH)
912‧‧‧圖形裝置
913‧‧‧可執行程式碼
914‧‧‧資料
在其中相同參考指示類似元件之附圖中,本發明之實施例藉由實例來例示且並非限制。
圖1為例示SHA-1標準演算法之典型程序之方塊圖。
圖2A及圖2B為例示在SHA-1標準演算法中使用之函數及常數的圖。
圖3為例示根據一個實施例之處理器之實例的方塊圖。
圖4為例示根據一個實施例之執行SHA-1演算法之程序的方塊圖。
圖5為例示用來根據一個實施例執行SHA-1輪轉運算之方法的流程圖。
圖6為例示用來根據一個實施例執行SHA-1訊息排程運算之方法的流程圖。
圖7為例示用來根據另一實施例執行SHA-1訊息排程運算之方法的流程圖。
圖8A及圖8B為表示由處理器接收之用來根據一個實施例執行SHA-1演算法之一序列代碼的偽代碼。
圖9為例示根據一個實施例之資料處理系統之實例的方塊圖。
圖10為例示根據另一實施例之資料處理系統之實例的方塊圖。
詳細說明
將參考以下論述之細節來描述本發明之各種實施例及態樣,且附圖將例示各種實施例。以下描述及圖式係說明本發明而非解釋為限制本發明。描述眾多特定細節來提供本發明之各種實施例之透徹理解。然而,在某些情況下,未描述眾所周知或習知細節以便提供本發明之實施例之簡明論述。
在說明書中對「一個實施例」或「一實施例」之參考意味結合該實施例描述之特定特徵、結構或特性可包括在本發明之至少一實施例中。短語「在一個實施例中」在本說明書中各處之出現未必全部代表同一實施例。
根據一些實施例,回應於單指令而利用一新指令集架構(ISA)來執行上述多個SHA-1運算來改良SHA-1計算之效率。可藉由減少執行SHA-1輪轉函數所需之時間同時導出輪轉17至80之訊息輸入使得執行SHA-1演算法之速度主要依據輪轉計算來最佳該效能。在一個實施例中,利用具有至少160位元之暫存器來儲存SHA-1狀態變數(例如,狀態變數A、B、C、D及E)及多個訊息輸入(例如,四個訊息輸入),使得可回應於單指令而使SHA-1輪轉雜湊運算之多個輪轉(例如,四個輪轉)藉由諸如向量能夠處理器之處理器來並行執行。另外,利用具有至少128位元之暫存器基於先前訊息輸入來製備與下一循環或迭代(例如,接著四個輪轉)之多個訊息輸入。
圖3為例示根據一個實施例之處理器之實例的方 塊圖。參看圖3,處理器100可代表任何種類之指令處理裝置。舉例而言,處理器101可為通用處理器。處理器100可為各種複雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種極長指令字(VLIW)處理器、其各種混合或完全其他類型處理器中之任一者。在一個實施例中,處理器100包括指令解碼器101來接收及解碼指令106。指令解碼器101可產生及輸出一或多個微運算、微代碼、入口點、微指令、其他指令或其他控制信號,其反應指令106或自指令106導出。可使用各種不同機制來實施指令解碼器101。合適機制之實例包括(但不限於)微代碼唯讀記憶體(ROM)、查詢表、硬體實行方案、可規劃邏輯陣列(PLA)及類似者。
處理器100進一步包括一或多個執行單元102,其可包括算術邏輯單元或能夠基於指令106執行運算之另一類型之邏輯單元。作為指令解碼器101解碼指令106之結果,執行單元102可接收一或多個微運算、微代碼入口點、微指令、其他指令或其他控制信號,其反應指令106或自指令106導出。執行單元102可作為指示一或多個源運算元(SRC)108之指令106而操作,且將結果儲存於指令106所指示至暫存器組105之一或多個目的地運算元(DEST)109中。執行單元102可包括電路或其他執行邏輯(例如,與硬體及/或韌體組合之軟體),其可操作來執行自指令106導出之指令或其他控制信號且相應地執行一操作。執行單元102可代表任何種類之執行單元,諸如邏輯單元、算術邏輯單元 (ALU)、算術單元、整數單元等。
在一個實施例中,指令106可內隱地指示及/或顯式指定(例如,經由一或多個專用欄位或位元集)源及目的地運算元。運算元之合適之源及/或目的地之實例包括暫存器、記憶體、指令之立即數(immediate)及其組合。在各種實施例中,源及目的地運算元可為8位元、16位元、32位元或64位元運算元,但此並非必須的。
在一個實施例中,可將源及目的地運算元中之一些或全部儲存於暫存器組之暫存器及/或記憶體105中。暫存器組可為暫存器檔案之部分,連同潛在地其他暫存器,諸如狀態暫存器、旗標暫存器等。暫存器可為可用來儲存資料之儲存位置或裝置裝置。暫存器組通常可實體位於具有執行單元之晶粒上。暫存器可自處理器外部或自程式設計員角度可見。舉例而言,指令可指定儲存於暫存器中之運算元。各種不同類型之暫存器為合適的,只要其能夠如本文所描述來儲存及提供資料即可。暫存器可或不可重新命名。合適暫存器之實例包括(但不限於)專用實體暫存器、使用暫存器重新命名之動態分配之實體暫存器、專用及動態分配之實體暫存器的組合等。或者,可將源及目的地運算元中之一或多者儲存於除了暫存器之外的儲存位置,諸如系統記憶體中之位置。
根據一個實施例,執行單元102包括一或多個SHA-1單元106,其回應於由指令解碼器101接收及提供之第一指令而使用諸如在一或多個暫存器104(例如,具有至 少160位元之暫存器)中指定之SHA-1狀態、訊息輸入及雜湊函數的資料110來執行SHA-1輪轉運算之多個輪轉。回應於作為單指令多資料(SIMD)指令之單指令來執行SHA-1輪轉運算之多個輪轉。在一個實施例中,第一指令包括三個運算元。第一運算元代表用來儲存當前SHA-1狀態及作為多個SHA-1輪轉運算之結果的下一SHA-1狀態的源/目的地暫存器。第二運算元代表用來儲存用於輪轉運算之多個訊息輸入之暫存器/記憶體。第三運算元代表諸如將用於輪轉運算之如圖2A所示之雜湊函數中之一者的雜湊函數。在已執行多個SHA-1輪轉運算後,更新SHA-1狀態且將其儲存回至第一運算元所指定之暫存器。在一個實施例中,回應於單SIMD指令而執行SHA-1輪轉運算之至少四個輪轉,其中所涉及暫存器具有至少160位元來儲存SHA-1狀態變數及訊息輸入。
根據另一實施例,SHA-1單元106回應於第二指令而執行SHA-1訊息排程運算來產生由於下一循環之多個訊息輸入(例如,下一SIMD指令循環中之多個SHA-1輪轉運算)。在一個實施例中,可存在製備下一SIMD指令循環之訊息輸入所需之兩個指令。在支援SHA-1輪轉運算之至少四個輪轉時,第一指令包括三個運算元來儲存至少12個先前訊息輸入,且在執行第一指令後,產生一中間結果且返回至在運算元中之一者中所指定的暫存器中。第二指令將由第一指令產生之中間結果用作一個運算元中之輸入。第二指令之另一運算元指定至少3個先前訊息輸入。最終結果 代表用於下一SIMD循環之4個訊息輸入。在一個實施例中,訊息排程運算中涉及之暫存器具有至少128位元。
為了例示,假定在單一SIMD循環中執行SHA-1輪轉運算之四個輪轉。將瞭解,亦可在單一SIMD循環中執行SHA-1輪轉運算更多或更少輪轉,只要所需資源(諸如具有足夠位元之暫存器)可用即可。根據一些實施例,本發明之實施例包括利用YMM SIMD暫存器之新指令及資料路徑,該YMM SIMD暫存器具有256位元且與來自Intel Corporation(Santa Clara,California)之AVX處理器相容而作為用於SHA-1狀態之160位元之源/目的地運算元。利用另一YMM暫存器或記憶體位置作為第二源運算元來儲存訊息輸入加上恆定K值用於接著四個SHA-1輪轉。立即運算元用來指定輪轉1至20、21至40、41至60及61至80所需之不同組合邏輯函數「F」,如圖2A中所示。
根據一個實施例,可如下定義本文中稱作SHA1RNDS4(SHA-1 4輪轉)之SHA-1輪轉指令:SHA1RNDS4 YMM1,YMM2/m128,immd
SHA1RNDS4指令需要3個循環來讀取來自YMM1暫存器之SHA-1狀態及來自YMM2/m128之Kmessage輸入(例如,訊息輸入加上常數K,其中K如圖2B中所示而定義),藉由立即運算元「imp」中指定之F函數執行SHA-1之4輪轉,如圖4中所述。在用於SHA-1之四輪轉之三循環延時的情況下,輸送量速率為每循環約1及1/3輪轉或每512位元區塊60循環。SHA1RNDS4指令每3個循環利用 SIMD埠一次從而提供SIMD指令槽來將常數K值加至區塊輸入資料,及執行針對輪轉17至80之訊息排程(包括在不減慢SHA-1輪轉運算之情況下的適當K值之加法)。
在一個實施例中,SHA1RNDS4指令在與用於立即運算元所指定之所有四個輪轉之F函數的SHA-1迭代的四個輪轉之後用所得新狀態更新目的地YMM1暫存器。YMM2為具有四個新訊息輸入及預添加輪轉常數(本文稱作KW0至KW3)之源暫存器。在一個實施例中,輪轉0輸入KW0為YMM2[31:00];輪轉1輸入KW1為YMM2[63:32];輪轉2輸入KW2為YMM2[95:64];及輪轉3輸入KW3為YMM2[127:96]。在一個實施例中,SHA-1狀態變數A、B、C、D及E可如下儲存於YMM暫存器中:A=YMM[255:224] B=YMM[223:192] C=YMM[191:160] D=YMM[159:128] E=YMM[127:96]
給定根據一個實施例之i之當前輪轉,可如下定義用於輪轉17至80之訊息排程函數:w[i]=(w[i-3]XOR w[i-8]XOR w[i-4]XOR w[i-16])left-rotate 1
可使用SIMD指令來計算四個訊息輸入:w[i+3]、w[i+2]、w[i+1]及w[i]。對於w[32]至w[80],可在提供SIMD旋轉指令之五個指令預算中計算訊息輸入。即使 給定SIMD旋轉,訊息輸入16至31之計算可能跟不上SHA-1輪轉指令SHA1RNDS4。
根據一個實施例,可藉由使用以下兩個指令實施w[i]函數而在不使用所有五個SIMD指令槽的情況下達成用於SHA-1之訊息排程:MSG1SHA1 XMM0,XMM1,XMM2 MSG2SHA1 XMM0,XMM1
根據一個實施例,XMM暫存器具有至少128位元,其可與來自Intel Corporation之AVX相容處理器之XMM暫存器相容。
訊息排程指令確保在SHA-1資料區塊之處理中的最佳效能。給定w[i]如由上文所述之SHA1RNDS4指令所計算,MSG1SHA1使處理器執行以下運算:Word0=w[i-8]XOR w[i-14]XOR w[i-16] Word1=w[i-7]XOR w[i-13]XOR w[i-15] Word1=w[i-6]XOR w[i-12]XOR w[i-14] Word1=w[i-5]XOR w[i-11]XOR w[i-13]
MSG1SHA1指令之中間結果經由XMM0暫存器返回。
根據一個實施例,MSG1SHA1使處理器執行(作為SHA-1訊息排程運算之第一部分)用於SHA-11訊息輸入之下一者的中間計算。SHA-1排程用於輪轉16至79之訊息輸入「w」可如下定義:w(i)=(w(i-3)XOR w(i-8)XOR w(i-14)XOR w(i-16)) <<l msg1=w(i-8)XOR w(i-14)XOR w(i-16)
其中運算「<<」代表邏輯循環左移(left-rotate)運算。
在一個實施例中,XMM2暫存器將如下儲存訊息w(i-13)、w(i-14)、w(i-15)及w(i-16):XMM2[127:96]=w(i-13) XMM2[95:64]=w(i-14) XMM2[63:32]=w(i-15) XMM2[31:00]=w(i-16)
在一個實施例中,XMM1暫存器將如下儲存訊息w(i-9)、w(i-10)、w(i-11)及w(i-12):XMM1[127:96]=w(i-9) XMM1[95:64]=w(i-10) XMM1[63:32]=w(i-11) XMM1[31:00]=w(i-12)
在一個實施例中,XMM0暫存器將如下儲存訊息w(i-5)、w(i-6)、w(i-7)及w(i-8):XMM0[127:96]=w(i-5) XMM0[95:64]=w(i-6) XMM0[63:32]=w(i-7) XMM0[31:00]=w(i-8)
在一個實施例中,指令MSG1SHA1之輸出儲存於XMM0中作為:w(i-5)XOR w(i-11)XOR w(i-13)、w(i-6)XOR w(i-12)XOR w(i-14)、w(i-7)XOR w(i-13)XOR w(i-15)、w(i-8)XOR w(i-14)XOR w(i-16)。在一特定實施 例中,該結果可如下儲存於XMM0暫存器中:XMM0[127:96]=w(i-5)XOR w(i-11)XOR w(i-13);Msg1 w(i+3) XMM0[95:64]=w(i-6)XOR w(i-12)XOR w(i-14);Msg1 w(i+2) XMM0[63:32]=w(i-7)XOR w(i-13)XOR w(i-15);Msg1 w(i+1) XMM0[31:00]=w(i-8)XOR w(i-14)XOR w(i-16);Msg1 w(i)
基於MSG1SHA1指令所產生之中間結果,根據一個實施例,MSG2SHA1指令使處理器執行以下運算:Word0=w[i]=(w[i-3]XOR Word0 of MSG1SHA1)left-rotate 1 Word1=w[i+1]=(w[i-2]XOR Word1 of MSG1SHA1)left-rotate 1 Word2=w[i+2]=(w[i-1]XOR Word2 of MSG1SHA1)left-rotate 1 Word3=w[i+3]=(w[i]XOR Word0 result of this MSG2SHA1)left-rotate 1
其中Word3之w[i]輸入為Word0之結果。由於Word3需要來自Word0之輸出,所以可在具有延遲的情況下執行Word3之計算直至完成Word0計算為止。舉例而言,Word0及Word1可在第一處理器循環中計算,且Word2及Word3可在第一處理器循環之後的第二處理器循環中計算以確保當正在計算 Word3時Word0可用。
根據一個實施例,指令MSG2SHA1使處理器產生接著四個輸入訊息,其與含有訊息w(i-1)、w(i-2)、w(i-3)及w(i-4)之XMM暫存器組合,其中XMM暫存器具有用於w(i-5)至w(i-16)之Msg1結果。在一個實施例中,XMM1暫存器將如下儲存訊息w(i-1)、w(i-2)、w(i-3)及w(i-4):XMM1[127:96]=w(i-1) XMM1[95:64]=w(i-2) XMM1[63:32]=w(i-3) XMM1[31:00]=w(i-4)
在一個實施例中,XMM0暫存器將如下儲存由指令MSG1SHA1產生之中間結果:XMM0[127:96]=w(i-5)XOR w(i-11)XOR w(i-13);Msg1 w(i+3) XMM0[95:64]=w(i-6)XOR w(i-12)XOR w(i-14);Msg1 w(i+2) XMM0[63:32]=w(i-7)XOR w(i-13)XOR w(i-15);Msg1 w(i+1) XMM0[31:00]=w(i-8)XOR w(i-14)XOR w(i-16);Msg1 w(i)
在一個實施例中,指令MSG2SHA1之輸出將如下儲存於XMM0暫存器中:XMM0[127:96]=w(i+3) XMM0[95:64]=w(i+2) XMM0[63:32]=w(i+1) XMM0[31:00]=w(i)
圖8A及圖8B為表示由處理器接收之用來執行根據一個實施例之SHA-1演算法的代碼序列的偽代碼。
圖5為例示用來執行根據一個實施例之SHA-1輪轉運算之方法的流程圖。舉例而言,方法500可回應於SHA1RNDS4指令而由SHA-1單元106執行。參看圖5,在區塊501,處理器接收諸如SHA1RNDS4指令之指令,其具有第一運算元(例如,YMM1)、第二運算元(例如,YMM2/m128)及第三運算元(例如,immd)。在區塊502,回應於該指令,自第一運算元提取SHA-1狀態(例如,SHA-1狀態A、B、C、D及E),及自第二運算元擷取多個訊息輸入(例如,KW)。在區塊503,使用第三運算元中指定之組合邏輯函數對SHA-1狀態及訊息輸入來執行SHA-1輪轉運算之多個輪轉。在區塊504,由於SHA-1運算之多個輪轉之結果而更新SHA-1狀態。
圖6為例示用來執行根據一個實施例之SHA-1訊息排程運算之方法的流程圖。舉例而言,可回應於MSG1SHA1指令藉由SHA-1單一106來執行方法600。參看圖6,在區塊601,處理器接收諸如MSG1SHA1指令之指令,其具有第一運算元(例如,XMM0)、第二運算元(例如,XMM1)及第三運算元(例如,XMM2)。在區塊602,回應於該指令,自第一、第二及第三運算元提取多個訊息輸入。在區塊603,執行SHA-1訊息排程運算之第一部分。在區塊 604,將SHA-1訊息排程運算之第一部分之中間結果儲存於與第一運算元(例如,XMM0)相關聯之暫存器中。
圖7為例示用來執行根據另一實施例之SHA-1訊息排程運算之方法的流程圖。舉例而言,方法700可回應於MSG2SHA1指令由SHA-1單元106執行。參看圖7,在區塊701,處理器接收諸如MSG2SHA1指令之指令,其具有第一運算元(例如,XMM0)及第二運算元(例如,XMM1)。在區塊702,回應於該指令,自第一運算元提取中間結果,且自第二運算元提取多個訊息輸入。該中間結果表示(例如)回應於MSG1SHA1指令之SHA-1訊息排程運算之第一部分。在區塊703,基於該中間結果及訊息輸入來執行SHA-1訊息排程運算之第二部分。在區塊704,將SHA-1訊息排程運算之最終結果儲存於與第一運算元相關聯之暫存器中(例如,XMM0)。
圖9為例示根據本發明之一個實施例之資料處理系統的實例之方塊圖。系統900可代表上述系統中之任一者。舉例而言,處理器901可代表圖3之處理器100。系統900可代表桌上型電腦、膝上型電腦、平板電腦、伺服器、行動電話(例如,智慧型電話)、媒體播放器、個人數位助理(PDA)、個人通訊器、遊戲裝置裝置、網路路由器或集線器、無線存取點或中繼器、機上盒或其組合。注意雖然圖9例示資料處理系統之各種組件,但其並不意欲代表將該等組件互連之任何特定架構或方式;因為此類細節與本發明之實施例無密切關係。亦將瞭解,亦可與本發明之實施例一起 使用網路電腦、手持型電腦、行動電話及具有較少組件或可能較多組件之其他資料處理系統。
參看圖9,在一個實施例中,系統900包括處理器901及用來經由匯流排或互連體而將包括記憶體905及裝置裝置903至904之各種組件耦接至處理器901之晶片組902。處理器901可代表單一處理器或其中包括單一處理器核心或多個處理器核心909之多個處理器。處理器901可代表一或多個通用處理器,諸如微處理器、中央處理單元(CPU)或類似者。更特定言之,處理器901可為複雜指令集計算(CISC)微處理器、精簡指令集計算(RISC)微處理器、極長指令字(VLIW)微處理器、或實施其他指令集之處理器、或實施指令集組合之處理器。處理器901亦可為一或多個專用處理器,諸如特殊應用積體電路(ASIC)、場可規劃閘陣列(FPGA)、數位信號處理器(DSP)、網路處理器、圖形處理器、網路處理器、通訊處理器、密碼處理器、共處理器、嵌入式處理器或能夠處理指令之任何其他類型邏輯。舉例而言,處理器901可為可購自Intel Corporation(Santa Clara,California)之Pentium® 4、Pentium® Dual-Core、CoreTM 2 Duo and Quad、XeonTM、ItaniumTM、XScaleTM、CoreTM i7、CoreTM i5、Celeron®或StrongARMTM微處理器。處理器901經組配來執行用於執行本文論述之操作及步驟之指令。
處理器901可包括指令解碼器,其可接收及解碼多種指令。解碼器可產生及輸出一或多個微運算、微代碼入口點、微指令、其他指令或其他控制信號,其反應原始 輸入指令或自原始輸入指令導出。解碼器可使用各種不同機制來實施。合適機制之實例包括(但不限於)微代碼唯讀記憶體(ROM)、查詢表、硬體實行方案、可規劃邏輯陣列(PLA)及類似者。
解碼器可並非為處理器901之所需組件。在一或多個其他實施例中,處理器901可替代具有指令模仿器、指令轉譯器、指令變形器、指令解譯器或其他指令轉換邏輯。各種不同類型之指令模仿器、指令變形器、指令轉譯器或類似者為此項技術中已知的。指令轉換邏輯可接收位元範圍隔離指令,模仿、轉譯、變形、解譯或以其他方式轉換位元範圍隔離指令,及輸出對應於原始位元範圍隔離指令之一或多個指令或控制信號。指令轉換邏輯可以軟體、硬體、韌體或其組合來實施。在一些狀況下,一些或所有指令轉換邏輯可與指令處理器裝置之其餘者(諸如單獨晶粒)位於晶粒外或在系統記憶體中。在一些狀況下,指令處理裝置可具有解碼器及指令轉換邏輯兩者。
處理器901及/或核心909可進一步包括與解碼器之輸出耦接或以其他方式通訊的一或多個執行單元。術語「耦接」可意味任何兩個或兩個以上元件直接電接觸或連接。然而,「耦接」亦可意味兩個或兩個以上元件未彼此直接連接,但仍彼此合作或互動或通訊(例如,經由介入組件)。作為一個實例,解碼器及執行單元可金鉤介入可選緩衝器或此項技術中已知的其他組件而彼此耦接,來可能地在解碼器與執行單元之間耦接。處理器901及/或核心909可 進一步包括多個不同類型之執行單元,諸如算術單元、算術邏輯單元(ALU)、整數單元等。
處理器901可進一步包括一或多個暫存器檔案,包括(但不限於)整數暫存器、浮點暫存器、向量或擴展暫存器、狀態暫存器及指令指標暫存器等。術語「暫存器」在本文中用來代表機載處理器儲存位置,其用作微指令之部分來識別運算元。換言之,本文中所引用之暫存器為彼等自處理器外部(自程式設計員角度)可見之暫存器。然而,暫存器不應限於意味特定類型之電路。相反,暫存器僅需要能夠儲存及提供資料,及執行本文所描述之功能。本文所描述之暫存器可使用任何數目之不同技術藉由處理器內之電路來實施,諸如專用實體暫存器、使用暫存器重新命名之動態分配之實體暫存器、專用及動態分配之實體暫存器的組合等。在一個實施例中,整數暫存器儲存32位元或64位元整數資料。暫存器檔案可含有用於緊縮資料之擴展多媒體SIMD暫存器(例如,XMM)。此類暫存器可包括與SSE2、SSE3、SSE4、GSSE相關之128位元寬XMM暫存器及256位元寬暫存器(其可在其低階位元中併入XMM暫存器),及用來保持此類緊縮資料運算元之超越(大體稱作「SSEx」)技術。
處理器901及/或核心909亦可視情況包括一或多個其他已知組件。舉例而言,處理器901可視情況包括指令獲取邏輯、預解碼邏輯、排程邏輯、重新排序緩衝器、分支預測邏輯、引退邏輯、暫存器重新命名邏輯及類似者, 或其一些組合。此等組件可按習知方式實施,或具有熟習此項技術者將基於本發明而顯而易見之最小調適。不需要此等組件之進一步描述以便理解本文之實施例,但進一步描述在公開文獻中容易可得(若需要)。存在此項技術中已知之此類組件之字面上眾多不同組合及組態。範疇並不限於任何已知此類組合或組態。可藉由或不藉由此類額外組件來實施實施例。
晶片組902可包括記憶體控制集線器(MCH)910及輸入輸出控制集線器(ICH)911。MCH 910可包括與記憶體905通訊之記憶體控制器(未圖示)。MCH 910亦可包括與圖形裝置裝置912通訊之圖形介面。在本發明之一個實施例中,圖形介面可經由加速圖形埠(AGP)、周邊組件互連(PCI)快速匯流排或其他類型之互連體而與圖形裝置裝置912通訊。ICH 911可提供與諸如裝置裝置903至904之I/O裝置裝置的介面。裝置裝置903至904中之任一者可為儲存裝置裝置(例如,硬碟機、快閃記憶體裝置裝置)、通用串列匯流排(USB)埠、鍵盤、滑鼠、並行埠、串列埠、列印機、網路介面(有線或無線)、無線收發器(例如,WiFi、藍牙或蜂巢式收發器)、媒體裝置裝置(例如,音訊/視訊編碼解碼器或控制器)、匯流排橋(例如,PCI-PCI橋)或其組合。
MCH 910有時稱作北橋,且ICH 911有時稱作南橋,但一些人在兩者之間進行技術區分。如本文所使用,意欲廣泛地解釋術語MCH、ICH、北橋及南橋來涵蓋各種晶片,其功能包括將中斷信號傳遞至處理器。在一些實施 例中,MCH 910可與處理器901整合。在此類組態中,晶片組902作為介面晶片而操作,其執行MCH 910及ICH 911之一些功能,如圖10中所示。此外,可將圖形加速器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高效能匯流排(AHB)之高級微控制器匯流排架構(AMBA)相容之匯流排。
快取記憶體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))來處置諸如訊息傳訊中斷之中斷。
已在關於電腦記憶體內之資料位元之運算的演算法及符號表示方面來呈現先前詳細描述之一些部分。此等演算法描述及表示為熟習資料處理技術者用來將其工作實質最有效地傳達至其他熟習此項技術中的方式。此處演算法大體被構想為導致所要結果之自相一致操作序列。該等操作為需要實體數量之實體操縱的操作。
然而,應牢記在心,此等及類似項目之全部將與適當實體數量相關聯且僅為應用至此等數量之便利標籤。除非具體指出,否則如自以上論述顯而易見,將瞭解,經由該描述,利用諸如彼等在以下申請專利範圍中陳述之項目的論述代表一電腦系統或類似電子計算裝置之動作及處 理程序,該電腦系統或類似電子計算裝置操縱及將表示為電腦系統之暫存器及記憶體內之實體(電子)數量之資料變換為類似地表示為電腦系統記憶體或暫存器或其他此類資訊儲存、傳輸或顯示器裝置內之實體數量的其他資料。
可使用儲存或執行於一或多個電子裝置上之程式碼及資料來實施圖式中展示之技術。此類電子裝置使用電腦可讀媒體來儲存及通訊(在內部及/或經由網路與其他電子裝置)程式碼及資料,諸如非暫時性電腦可讀儲存媒體(例如,磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相位改變記憶體)及暫時性電腦可讀傳輸媒體(例如,電學、光學、聲訊或其他形式之傳播信號,諸如載波、紅外線信號、數位信號)。
可藉由處理包含硬體(例如,電路、專用邏輯等)、韌體、軟體(例如,體現於非暫時性電腦可讀媒體上)或其組合之邏輯來執行在先前圖式中描繪之處理程序或方法。儘管在上文關於一些順序操作來描述處理程序或方法,但應瞭解,所描述操作中之一些可以不同順序來執行。此外,一些操作可並行而非順序地執行。
在上述說明書中,已參考本發明之特定例示性實施例來描述本發明之實施例。將顯而易見,可在不脫離如以下申請專利範圍中所陳述之本發明之較寬精神及範疇的情況下進行各種修改。因此,以說明性意義而非限制性意義來看待說明書及圖式。
100‧‧‧處理器
101‧‧‧指令解碼器
102‧‧‧執行單元
104‧‧‧暫存器
105‧‧‧暫存器組
106‧‧‧指令
108‧‧‧源運算元(SRC)
109‧‧‧目的地運算元(DEST)
110‧‧‧資料

Claims (20)

  1. 一種處理器,其包含:一指令解碼器,其用來接收一第一指令來處理一SHA-1雜湊演算法,該第一指令具有用來儲存一SHA-1狀態之一第一運算元、用來儲存多個訊息之一第二運算元及用來指定一雜湊函數之一第三運算元;及一執行單元,其耦接至該指令解碼器,其回應於該第一指令來使用該第三運算元中指定之該雜湊函數來對該第一運算元中指定之該SHA-1狀態及該第二運算元中指定之該等多個訊息來執行該SHA-1雜湊演算法之多個輪轉。
  2. 如申請專利範圍第1項之處理器,其中該第一運算元指定具有儲存SHA-1狀態變數之資料之至少160位元的一第一暫存器。
  3. 如申請專利範圍第2項之處理器,其中該第二運算元指定具有儲存至少四訊息之至少128位元的一第二暫存器或一記憶體位置。
  4. 如申請專利範圍第3項之處理器,其中該SHA-1演算法之至少四輪轉係回應於作為一單指令多資料(SIMD)指令之該第一指令來執行。
  5. 如申請專利範圍第1項之處理器,其中該指令解碼器接收一第二指令,且其中回應於該第二指令,該執行單元經組配來基於由該第二指令指定之多個第一先前訊息 來執行訊息排程運算之一第一部分。
  6. 如申請專利範圍第5項之處理器,其中該指令解碼器接收一第三指令,且其中回應於該第三指令,該執行單元經組配來對該第三指令中指定之第二先前訊息及中間結果來執行該等訊息排程運算之一第二部分,而產生將在SHA-1演算法之接著多個輪轉期間被執行的該SHA-1演算法之多個輪轉運算的接著輸入訊息。
  7. 如申請專利範圍第6項之處理器,其中對於SHA-1輪轉運算之一當前輪轉i,該等第一先前訊息包含訊息w(i-5)至w(i-16),其中該等第二先前訊息包含訊息w(i-1)至w(i-4),且其中該等接著輸入訊息包含w(i)、w(i+1)、w(i+2)及w(i+3)。
  8. 如申請專利範圍第6項之處理器,其中該中間結果包含w(i-5)^w(i-11)^w(i-13)、w(i-6)^w(i-12)^w(i-14)、w(i-7)^w(i-13)^w(i-15)及w(i-8)^w(i-14)^w(i-16)之結果。
  9. 一種方法,其包含:在一處理器之一指令解碼器處接收一第一指令來處理一SHA-1雜湊演算法,該第一指令具有用來儲存一SHA-1狀態之一第一運算元、用來儲存多個訊息之一第二運算元及用來指定一雜湊函數之一第三運算元;及回應於該第一指令,藉由該處理器之一執行單元來使用該第三運算元中指定之該雜湊函數來對該第一運算元中指定之該SHA-1狀態及該第二運算元中指定之該等多個訊息來執行該SHA-1雜湊演算法之多個輪轉。
  10. 如申請專利範圍第9項之方法,其中該第一運算元指定具有儲存SHA-1狀態變數之資料之至少160位元的一第一暫存器。
  11. 如申請專利範圍第10項之方法,其中該第二運算元指定具有儲存至少四訊息之至少128位元的一第二暫存器或一記憶體位置。
  12. 如申請專利範圍第11項之方法,其中以一向量方式回應於作為一單指令多資料(SIMD)指令之該第一指令來執行該SHA-1演算法之至少四輪轉。
  13. 如申請專利範圍第9項之方法,其中該指令解碼器接收一第二指令,且其中回應於該第二指令,該執行單元經組配來基於由該第二指令指定之多個第一先前訊息來執行訊息排程運算之一第一部分。
  14. 如申請專利範圍第13項之方法,其中該指令解碼器接收一第三指令,且其中回應於該第三指令,該執行單元經組配來對該第三指令中指定之第二先前訊息及中間結果來執行該等訊息排程運算之一第二部分,而產生將在SHA-1演算法之接著多個輪轉期間被執行的該SHA-1演算法之多個輪轉運算的接著輸入訊息。
  15. 如申請專利範圍第14項之方法,其中對於SHA-1輪轉運算之一當前輪轉i,該等第一先前訊息包含訊息w(i-5)至w(i-16),其中該等第二先前訊息包含訊息w(i-1)至w(i-4),且其中該等接著輸入訊息包含w(i)、w(i+1)、w(i+2)及w(i+3)。
  16. 如申請專利範圍第14項之方法,其中該中間結果包含w(i-5)^w(i-11)^w(i-13)、w(i-6)^w(i-12)^w(i-14)、w(i-7)^w(i-13)^w(i-15)及w(i-8)^w(i-14)^w(i-16)之結果。
  17. 一種資料處理系統,其包含:一互連體;一處理器,其耦接至該互連體來接收一第一指令來處理一SHA-1雜湊演算法,該第一指令具有用來儲存一SHA-1狀態之一第一運算元、用來儲存多個訊息之一第二運算元及用來指定一雜湊函數之一第三運算元,從而執行該第一指令來使用該第三運算元中指定之該雜湊函數來對該第一運算元中指定之該SHA-1狀態及該第二運算元中指定之該等多個訊息來執行該SHA-1雜湊演算法之多個輪轉;及一動態隨機存取記憶體(DRAM),其耦接至該互連體。
  18. 如申請專利範圍第17項之系統,其中該第一運算元指定具有儲存SHA-1狀態變數之資料之至少160位元的一第一暫存器。
  19. 如申請專利範圍第18項之系統,其中該第二運算元指定具有儲存至少四訊息之至少128位元的一第二暫存器或一記憶體位置。
  20. 如申請專利範圍第19項之系統,其中該SHA-1演算法之至少四輪轉係回應於作為一單指令多資料(SIMD)指令之該第一指令以一向量方式來執行。
TW101147194A 2011-12-22 2012-12-13 用以處理sha-1安全雜湊演算法之方法及裝置 TWI488475B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066813 WO2013095503A1 (en) 2011-12-22 2011-12-22 Method and apparatus to process sha-1 secure hashing algorithm

Publications (2)

Publication Number Publication Date
TW201332329A true TW201332329A (zh) 2013-08-01
TWI488475B TWI488475B (zh) 2015-06-11

Family

ID=48669144

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101147194A TWI488475B (zh) 2011-12-22 2012-12-13 用以處理sha-1安全雜湊演算法之方法及裝置

Country Status (4)

Country Link
US (1) US8954754B2 (zh)
CN (1) CN104012032B (zh)
TW (1) TWI488475B (zh)
WO (1) WO2013095503A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI575388B (zh) * 2014-03-27 2017-03-21 英特爾股份有限公司 有效地執行散列運算的方法及設備
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10148428B2 (en) 2012-12-29 2018-12-04 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US10592245B2 (en) 2014-09-26 2020-03-17 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
US10623175B2 (en) 2014-09-04 2020-04-14 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104025502B (zh) 2011-12-22 2017-07-11 英特尔公司 用于处理blake安全散列算法的指令处理器、方法以及系统
US8874933B2 (en) * 2012-09-28 2014-10-28 Intel Corporation Instruction set for SHA1 round processing on 128-bit data paths
US8953785B2 (en) * 2012-09-28 2015-02-10 Intel Corporation Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor
EP3338397B1 (en) * 2015-08-19 2020-11-04 Intel Corporation Instructions and logic to provide simd sm3 cryptographic hashing functionality
CN106452769B (zh) * 2016-09-13 2019-11-29 杭州华为数字技术有限公司 一种数据处理方法、数据处理装置以及处理器
CN114648319A (zh) * 2020-12-18 2022-06-21 深圳比特微电子科技有限公司 执行哈希算法的电路、计算芯片、加密货币矿机和方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7142669B2 (en) * 2000-11-29 2006-11-28 Freescale Semiconductor, Inc. Circuit for generating hash values
US20030002666A1 (en) 2001-06-13 2003-01-02 Takahashi Richard J. Method and apparatus for creating a message digest using a parallel, one-way hash algorithm
TWI238636B (en) 2003-06-19 2005-08-21 Yen-Fu Liu Operation device and method of fast secure hash algorithm
KR20050065976A (ko) 2003-12-26 2005-06-30 한국전자통신연구원 Sha-1 해쉬값 연산 장치 및 방법
US7546461B2 (en) * 2005-06-28 2009-06-09 Microsoft Corporation Strengthening secure hash functions
US7882358B2 (en) * 2007-01-15 2011-02-01 Microsoft Corporation Reversible hashing for E-signature verification
US8510569B2 (en) * 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
US8788766B2 (en) * 2010-02-18 2014-07-22 Oracle America, Inc. Software-accessible hardware support for determining set membership
CN101872338B (zh) * 2010-06-04 2012-08-29 杭州电子科技大学 一种认证协议中得到安全消息摘要的方法
US8855302B2 (en) * 2011-06-21 2014-10-07 Intel Corporation Apparatus and method for Skein hashing
US9632782B2 (en) * 2012-03-30 2017-04-25 Intel Corporation Method and apparatus to process SHA-2 secure hashing algorithm
US8838997B2 (en) * 2012-09-28 2014-09-16 Intel Corporation Instruction set for message scheduling of SHA256 algorithm
US8874933B2 (en) * 2012-09-28 2014-10-28 Intel Corporation Instruction set for SHA1 round processing on 128-bit data paths

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10148428B2 (en) 2012-12-29 2018-12-04 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10686591B2 (en) 2012-12-29 2020-06-16 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
TWI575388B (zh) * 2014-03-27 2017-03-21 英特爾股份有限公司 有效地執行散列運算的方法及設備
TWI610184B (zh) * 2014-03-27 2018-01-01 英特爾股份有限公司 有效地執行散列運算的方法及設備
US9912481B2 (en) 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US10623175B2 (en) 2014-09-04 2020-04-14 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US11075746B2 (en) 2014-09-04 2021-07-27 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US11128443B2 (en) 2014-09-04 2021-09-21 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US10592245B2 (en) 2014-09-26 2020-03-17 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality

Also Published As

Publication number Publication date
US20130283064A1 (en) 2013-10-24
CN104012032A (zh) 2014-08-27
TWI488475B (zh) 2015-06-11
US8954754B2 (en) 2015-02-10
CN104012032B (zh) 2017-04-19
WO2013095503A1 (en) 2013-06-27

Similar Documents

Publication Publication Date Title
TWI488475B (zh) 用以處理sha-1安全雜湊演算法之方法及裝置
JP6711483B2 (ja) 複数の128ビットデータパスにおけるsha1ラウンド処理のための命令セット
EP3627764B1 (en) Method and apparatus to process sha-2 secure hashing algorithm
CN107667499B (zh) 带密钥散列消息认证码处理器、方法、系统和指令
US8838997B2 (en) Instruction set for message scheduling of SHA256 algorithm
US10725779B2 (en) Method and apparatus to process SHA-2 secure hashing algorithm