本發明涉及實施安全哈希算法(securehashalgorithm)的處理器。
背景技術:
安全哈希算法(securehashalgorithm,縮寫為sha)或稱為安全雜湊算法包括一密碼哈希函數家族,sha-0、sha-1、sha-2、sha-3。數字消息將經安全哈希算法sha轉換為消息摘要(messagedigest)。sha-2包括sha224、sha256、sha384與sha512。sha224與sha256是基于32位字長(32bitwordlength)的類似算法,生成224位和256位的消息摘要。sha384和sha512則是基于64位字長運算,產生384位和512位的消息摘要。
以下以sha256為例進行討論。
sha256使用到的邏輯運算式是基于32位字長的運算,包括以下邏輯運算式:
以下討論n循環的sha256計算。循環代號i由1遞增至n。循環i的512字節的數字消息m(i)將被分割為各為32字節的數字消息塊(chunks)
將用于循環i的64次迭代運算。t又視為迭代代號。
迭代運算還有使用到32字節常數
迭代運算還使用到八個工作變量(workingvariables)a…h,于循環i之初,以先前一次循環(i-1)算出的哈希值(hashvalues)
各迭帶進行的運算包括:
h=g,g=f,f=e,e=d+t1,d=c,c=b,b=a,a=t1+t2。工作變量a…h在每次迭帶中更新。
循環i的64次迭代運算完成后,獲得的哈希值為:
如以上所示,安全哈希算法(sha)涉及龐大的常數使用以及復雜的運算。如何有效率地施行安全哈希算法為本技術領域一項重要課題。
技術實現要素:
安全哈希算法(sha)每次迭代運算(迭代代號t)需將消息塊wt與常數kt進行相加,獲得數值wt+kt。本發明提出一種處理器,具有一內部存儲器儲存常數kt,縮減自處理器外部載入常數kt所可能引起的延遲、且避免占據處理器與外部元件通信的總線。所述處理器可還于指令集提供一條指令,以該條指令自該內部存儲器取得常數kt并完成數值wt+kt運算,大大提升安全哈希算法(sha)的施行效能。
根據本發明一種實施方式所實現的一處理器包括一內部存儲器以及一執行單元集合。該內部存儲器儲存一安全哈希算法的一常數陣列,內含常數kt。t為該安全哈希算法的迭代運算代號。t包括0至數字(l-1)的變化。該執行單元集合包括該安全哈希算法所需的執行單元群組。上述執行單元群組是自該內部存儲器讀取常數kt實現該安全哈希算法的工作變量更新。一種實施方式中,上述執行單元群組接收一數值w+k取得指令。該數值w+k取得指令指示一讀取地址,使上述執行單元群組據以自該內部存儲器取得上述常數kt。該數值w+k取得指令還使用一來源操作數。該來源操作數內容為消息塊wt。該數值w+k取得指令還儲存消息塊wt以及常數kt的加總wt+kt于一目標操作數,用于該安全哈希算法的工作變量更新。
根據本發明一種實施方式所實現的一種數字消息處理方法,包括:于一處理器內提供一內部存儲器,儲存一安全哈希算法的一常數陣列,內含常數kt,t為該安全哈希算法的迭代運算的代號,t包括0至數字(l-1)的變化;以及,以該處理器的一執行單元集合中關于該安全哈希算法的執行單元群組自該內部存儲器讀取常數kt,以實現該安全哈希算法的工作變量更新。
下文特舉實施例,并配合附圖,詳細說明本發明內容。
附圖說明
圖1為方塊圖,根據本發明一種實施方式圖解一處理器(processor)100;
圖2為流程圖,根據本發明一種實施方式說明處理器100對安全哈希算法(sha)所做的部分運算;以及
圖3對應圖2流程條列程序碼300,以sha256為例,且涉及四次迭代t+3、t+2、t+1以及t。
具體實施方式
以下敘述列舉本發明的多種實施例。以下敘述介紹本發明的基本概念,且并非意圖限制本發明內容。實際發明范圍應依照權利要求界定。
圖1為方塊圖,根據本發明一種實施方式圖解一處理器(processor)100。處理器100可為各種形式的指令處理設備(instructionprocessingapparatus)。例如,處理器100可為通用處理器(general-purposeprocessor)。處理器100可為復雜指令集運算(cisc)處理器、精簡指令集運算(risc)處理器、超長指令字(vliw)處理器任一或組合、或其他任何形式處理器。處理器100可實現多種處理器核心(processorcore),包括,通用處理器的通用有序核心(general-purposein-ordercore)或高效通用無序核心(high-performancegeneral-purposeout-of-ordercore),圖像或科學運算的特定功能運算核心。處理器100可實現具備通用功能的中央處理單元(centralprocessingunit)、或特定功能的協處理器(coprocessor)。
如圖所示,處理器100包括一指令解碼器102、執行單元集合104、寄存器集合106以及一內部存儲器108。
指令解碼器102接收且解碼一指令抓取器(instructionfetcher,未顯示在圖中)所送來的指令110。根據指令110,指令解碼器102可產生一或多條微運算(microoperations)、微碼(microcode)、微指令(microinstructions)、其他指令或其他控制信號、一或多個進入點(entrypoints)…等。指令解碼器102將驅動執行單元集合104、寄存器集合106以及內部存儲器108的運作或存取。
執行單元集合104可包括算數邏輯單元(arithmeticlogicunit)、電路、或軟硬件結合的執行邏輯,根據指令解碼器102的指令解碼結果動作。執行單元集合104提供安全哈希算法(sha)所需的執行單元群組112。
寄存器集合106所提供的寄存器可用作執行單元所執行運算的來源操作數(sourceoperands)和/或目標操作數(destinationoperands)。寄存器集合106提供安全哈希算法(sha)所需的寄存器群組114。安全哈希算法(sha)也可有部分利用處理器100外部的儲存空間如系統存儲器做操作數空間。
內部存儲器108則提供空間116儲存安全哈希算法(sha)所使用的常數kt,t包括0至數字(l-1)的變化,對應l次迭帶運算。一種實施方式中,內部存儲器108為處理器100的內部只讀存儲器(internalrom),其中內容是出廠前燒錄。以sha256為例,內部存儲器108燒錄有常數
內部存儲器108的空間116可以t為索引進行查閱,提供常數
本發明還提供一種指令集(isa)使該處理器100得以運作實現安全哈希算法(sha)。特別是,所述指令集包括本分別新定義的一數值w+k取得指令。解碼器102將以該數值w+k取得指令致動執行單元群組114中對應的執行單元。該些執行單元會自該內部存儲器108空間116獲得所需的常數kt,且可以是自寄存器群組114實現的來源操作數取得所需的消息塊wt,并將兩者相加得wt+kt。該數值w+k取得指令完全不操作執行單元集合104的載入(load)執行單元也不會自處理器100外部載入常數kt,故不會占用處理器100對外的總線,也不會因為來不及自處理器100外部獲得常數kt,而延滯安全哈希算法(sha)后續運算。
一種sha256實施方式中,該數值w+k取得指令為:
sha256wkrnds4xmm1,xmm2,imm8;
imm8[7:0]指示內部存儲器108地址;一執行單元是據以讀取內部存儲器108獲得常數
對應該數值w+k取得指令,該執行單元群組112包括內部存儲器108存取用的執行單元以及負責加法運算的單指令多數據流擴展(sse)執行單元。
圖2為流程圖,根據本發明一種實施方式說明處理器100對安全哈希算法(sha)所做的部分運算。步驟s202準備消息塊wt。步驟s204于處理器100的內部存儲器108取得常數kt,并計算wt+kt。步驟s206將wt+kt用于工作變量(如sha256定義的八個工作變量a…h)更新。
圖3對應圖2流程條列程序碼300,是以sha256為例,且涉及四次迭代t+3、t+2、t+1以及t。
指令sha256msg1、sha256msg2以及paddw對應步驟s202,備妥消息塊{wt+3,wt+2,wt+1,wt}于寄存器群組114內的一寄存器xmm0中。
指令sha256wkrnds4對應步驟s204且如前述動作,于處理器100的內部存儲器108取得常數
步驟s206則涉及兩次指令sha256rnds2中間穿插指令psrldq,將指令sha256wkrnds4所設定的寄存器xmm0內容
h=g,g=f,f=e,e=d+t_1,d=c,c=b,b=a,a=t1+t2。標號302所指的指令sha256rnds2是使用寄存器xmm0低位內容
圖3程序碼執行16次即完成sha256循環i的64次迭代(t=0至63)。循環i所得哈希值為:
除以上討論的sha256實施例,安全哈希算法(sha)家族的sha384、sha512皆可如本發明利用處理器100內部存儲器108儲存常數kt(t=0…(l-1)),并設計對應的數值w+k取得指令。
其他采用上述概念使處理器實現安全哈希算法(sha)的技術都屬于本發明所要保護的范圍。基于以上技術內容,本發明還涉及基于安全哈希算法(sha)的數字消息處理方法。
雖然本發明已以較佳實施例公開如上,然而其并非用以限定本發明,任何本領域技術人員,在不脫離本發明的精神和范圍內,應當可以做些許更動與潤飾,因此本發明的保護范圍當視所附的權利要求所界定的為準。