用于生成哈希值的方法和裝置制造方法
【專利摘要】本發(fā)明涉及生成哈希值的方法,包括:a.將輸入數(shù)據(jù)劃分為十六個分別具有32*m位長度的輸入數(shù)據(jù)塊,m是大于等于1的整數(shù),下標變量i=0,…,15表示第i個輸入數(shù)據(jù)塊Mi,b.用可預先給定的值初始化八個工作數(shù)據(jù)塊,八個工作數(shù)據(jù)塊中的每個都具有32*m位的長度,下標變量k=0,…,7表示第k個工作數(shù)據(jù)塊Mk,c.按照如下規(guī)則改變輸入數(shù)據(jù)塊和工作數(shù)據(jù)塊:對于i=1至15,將輸入數(shù)據(jù)塊Mi,n的內(nèi)容指派給輸入數(shù)據(jù)塊Mi-1,n+1,n是大于等于零的整數(shù)并且代表處理周期;對于k=0,k=1,k=2以及對于k=4,k=5,k=6,將工作數(shù)據(jù)塊Wk,n的內(nèi)容指派給工作數(shù)據(jù)塊Wk+1,n+1;將第一、第二、第三函數(shù)T、G、F的輸出值分別指派給輸入數(shù)據(jù)塊M15,n+1,工作數(shù)據(jù)塊W0,n+1,工作數(shù)據(jù)塊W4,n+1,其中改變的步驟c)被執(zhí)行N次,N>1。
【專利說明】用于生成哈希值的方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及用于根據(jù)數(shù)字輸入數(shù)據(jù)生成哈希值的方法。本發(fā)明還涉及用于生成這 種哈希值的裝置。
【背景技術(shù)】
[0002] 作為輸出值提供一個或多個哈希值的哈希函數(shù)尤其是被使用在密碼學中,特 別是針對安全相關(guān)的應用例如數(shù)字簽名、密碼存儲以及文件的完整性檢驗等等。廣 泛流行的密碼哈希函數(shù)組基于所謂的安全哈希算法版本2 (SHA-2)標準,其尤其 是在 公布"Federal Information Processing Standards Publication, Secure Hash Standard,F(xiàn)IPS PUB 180-3, 2008"中得以描述并且可以在因特網(wǎng)中在地址 http://csrc.insit,gov/publications/fips/180-3 下被調(diào)用。相應的專利出版物是 US 6, 829, 355B2。
[0003] -般,密碼哈希函數(shù)接受任意長度的數(shù)字輸入數(shù)據(jù)流并且由此生成所謂的哈希 值、也即可預先給定的、尤其是固定的長度的數(shù)字輸出數(shù)據(jù)。哈希值有時也被稱為數(shù)字指 紋。
[0004] 哈希值的特別重要的特性在于,哈希函數(shù)輸入數(shù)據(jù)的輕微變化已經(jīng)引起在由此計 算的哈希值中的非常大的變化。
[0005] 此外,密碼哈希算法可以具有三個特別的特性: 1.所謂的"抗原像(Preimage Resistance)",這意味著,必須證明:在有限的、實際可 用的計算能力情況下,對于哈希算法的每個可設想的輸出值不可能找到所屬的輸入數(shù)據(jù) 值。
[0006] 2.所謂的"抗第二原像(Second Preimage Resistance)",這意味著,在知道由輸 入數(shù)據(jù)值和哈希函數(shù)的所屬輸出數(shù)據(jù)值(哈希值)組成的數(shù)據(jù)對的情況下實際上不可能找 到第二輸入數(shù)據(jù)值,該第二輸入數(shù)據(jù)值通向同一輸出數(shù)據(jù)值、也即哈希值。
[0007] 3. "抗碰撞(Collision Resistance)",這意味著,實際上不可能找到兩個輸入數(shù) 據(jù)值,它們通向同一哈希值。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明的任務在于,如下地改善開頭所述類型的方法和裝置:能夠?qū)崿F(xiàn)更簡單并 且1?效的實施。
[0009] 該任務在開頭所述類型的方法中通過如下方式被解決,即該方法具有如下步驟: a) 將輸入數(shù)據(jù)劃分為十六個分別具有32*m位長度的輸入數(shù)據(jù)塊,其中m是大于等于1 的整數(shù),并且其中下標變量i=〇,…,15表示第i個輸入數(shù)據(jù)塊吣, b) 初始化帶有可預先給定的值的八個工作數(shù)據(jù)塊,其中這八個工作數(shù)據(jù)塊中的每個都 具有32*m位的長度,并且其中下標變量k=0,…,7表示第k個工作數(shù)據(jù)塊W k, c) 按照如下規(guī)則改變輸入數(shù)據(jù)塊和工作數(shù)據(jù)塊: cl)對于i=l至15,將輸入數(shù)據(jù)塊Mi,n的內(nèi)容指派給輸入數(shù)據(jù)塊Μ?η+1,其中η是大于 等于零的整數(shù)并且代表處理周期, c2)對于k=0, k=l,k=2以及對于k=4, k=5, k=6,將工作數(shù)據(jù)塊Wk,n的內(nèi)容指派給工作 數(shù)據(jù)塊Wk+1,n+1, c3)將第一函數(shù)T的輸出值指派給輸入數(shù)據(jù)塊M15;n+1, c4)將第二函數(shù)G的輸出值指派給工作數(shù)據(jù)塊\η+1, c5)將第三函數(shù)F的輸出值指派給工作數(shù)據(jù)塊W4;n+1, 其中改變的步驟c)被執(zhí)行N次,其中N > 1。
[0010] 按照本發(fā)明認識到,前面定義的用于改變輸入數(shù)據(jù)塊和工作數(shù)據(jù)塊的規(guī)則能夠 實現(xiàn)用于生成哈希值的方法的特別高效的技術(shù)實施。由此可以特別有利地實現(xiàn)如下實 施:所述實施具有比例如基于US 6, 829, 355 B2的已知實施小得多的對等效門(GE,gate equivalents)的需求。
[0011] 借助于本發(fā)明的原理特別有利的是此外是如下事實:每個工作周期僅僅必須修 改一個輸入數(shù)據(jù)塊,并且按照本發(fā)明所建議的函數(shù)G、F僅僅作用于兩個工作數(shù)據(jù)塊,也即 W〇,n+i, W4,n+1。
[0012] 在一種優(yōu)選的實施方式中,可以同時進行將輸入數(shù)據(jù)劃分成十六個輸入數(shù)據(jù)塊的 步驟和初始化八個工作數(shù)據(jù)塊的步驟。代替地,這些步驟也可以相繼地或重疊地進行。
[0013] 在一種有利的實施方式中規(guī)定: A)在m=l的情況下 -函數(shù)T被定義戈
【權(quán)利要求】
1. 一種用于根據(jù)數(shù)字輸入數(shù)據(jù)(Μ)生成哈希值(HW)的方法,其中該方法包括下面的步 驟: a) 將輸入數(shù)據(jù)(M)劃分(200)為分別具有32*m位長度的十六個輸入數(shù)據(jù)塊(Μ。,,…, M15),其中m是大于等于1的整數(shù),并且其中下標變量i=0,…,15表示第i個輸入數(shù)據(jù)塊吣, b) 用可預先給定的值初始化(210)八個工作數(shù)據(jù)塊Wi,…,W7),其中八個工作數(shù) 據(jù)塊(Wy Wi,…,W7)中的每個都具有32*m位的長度,并且其中下標變量k=0,…,7表示第 k個工作數(shù)據(jù)塊Wk, c )按照如下規(guī)則改變(220 )輸入數(shù)據(jù)塊(,Mi,…,M15)和工作數(shù)據(jù)塊(Wm Wi,…,W7): cl)對于i=l至15,將輸入數(shù)據(jù)塊Mi;n的內(nèi)容指派(222a)給輸入數(shù)據(jù)塊Μ?η+1,其中η 是大于等于零的整數(shù)并且代表處理周期, c2)對于k=0, k=l,k=2以及對于k=4, k=5, k=6,將工作數(shù)據(jù)塊Wk,n的內(nèi)容指派(222b) 給工作數(shù)據(jù)塊Wk+1,n+1, c3)將第一函數(shù)T的輸出值指派(224)給輸入數(shù)據(jù)塊M15;n+1, c4)將第二函數(shù)G的輸出值指派(226)給工作數(shù)據(jù)塊\η+1, c5)將第三函數(shù)F的輸出值指派給(228)工作數(shù)據(jù)塊W4;n+1, 其中改變(220)的步驟c)被執(zhí)行N次,其中N> 1。
2. 根據(jù)權(quán)利要求1所述的方法,其中 A) 在m=l的情況下 -函數(shù)T被定義為了 = +減_ + < ROTRl7《M",rt> XOR ROTR1s(M",r,) X〇R SHR1c(M"?n)) + ( ROTR?(M1tft) XOR ROTRlMJ XOR 31?3_1?,以,其中R〇TR制是操作數(shù)x向右逐位旋轉(zhuǎn)y個 許多位,其中3?@?是操作數(shù)X向右逐位邏輯移位y個許多位,其中XOR是異或邏輯連接, -函數(shù)G被定義為G=T0+T1,其中 TO = M〇.n + W7,n + ( ROTRe{W4A) XOR ROTR^^^XOR ROTR25(W*,n) > 十((W_ _D W_) XOR pOTiWJ AND 1 其中 Τ? = (ROTR?(W_) XOR RO+TR'^Wo..,"} XOR m7RnmnJ) + {(We,n AND W,,) XOR (W,M AND W2,") XOR AND W^n)), 其中AND是與邏輯連接,其中NOT是逐位非,其中Wtn是處理周期n的第k個工作數(shù)據(jù)塊, 其中kn是可預先給定的常數(shù),其中 -函數(shù)F被定義為F=W3,n+T0, 以及其中 B) 在m=2的情況下 -函數(shù) T 被定義為 了 = + 關(guān)#>" +《R〇fR13(M14,n) XOR ROTR61《M",n》XOR XOR R〇TRe{M,in) XOR SHR7(M,,n)), -函數(shù)G被定義為G=T0+T1,其中TO=MQ,n+ W?.n + (ROTR14(W4irt) XOR R0TR18(W4n) XOR R〇TR41{W4.n)) + ((W(n AND V¥5'n) XOR p〇T(W4,n》AND W切)} + Kn,其中 丁1 = (ROTR29(W0'n) XOR ROTRM(W0,n》XOR ROTR39,!^》)+ AND WU XOR (W_ AND W2.n> XOR (W,,n AND W2A>), 其中 -函數(shù)F被定義為F = W3,n + TO。
3. 根據(jù)權(quán)利要求1至2之一所述的方法,其中設置有8個哈希數(shù)據(jù)塊(4,?,…,H7), 其中8個哈希數(shù)據(jù)塊(%,氏,…,H 7)中的每個都具有32*m位的長度,并且其中在(r*N)次 執(zhí)行步驟c)之后將工作數(shù)據(jù)塊(Wm Wi,…,W7)的內(nèi)容優(yōu)選逐塊地加(229)到哈希數(shù)據(jù)塊 (H。,氏,…,H7)的內(nèi)容上,其中r是大于等于1的整數(shù)。
4. 根據(jù)權(quán)利要求3所述的方法,其中所述加(229)的步驟包括下面的步驟: dl)將工作數(shù)據(jù)塊W7,n和哈希數(shù)據(jù)塊H7,n之和指派(229a)給哈希數(shù)據(jù)塊\" +1, d2)對于1=1至7,將哈希數(shù)據(jù)塊氏_1;11的值指派(229b)給哈希數(shù)據(jù)塊H I;n+1。
5. 根據(jù)上述權(quán)利要求之一所述的方法,其中m=l和/或其中N=64和/或其中在八個工 作數(shù)據(jù)塊(WyWi,…,W7)的初始化(210)的步驟中進行下面的指派: Wa〇 = 0x6a09e667, W,,〇 - 0xbb6?ae85, W2.〇 = 0x3c6ef372, W30 = 0xa54ff53a, Wco = 0x510e527f, W5,fl = 0x9b05688ct Wm * 0x1f83diab, WM * 0x5be0cd19, 和/或其中八個哈希數(shù)據(jù)塊(4, Hi,…,H7)通過下面的指派被初始化: Οχβ3〇0δ66Ττ Η|§ ~ 0xbb6?ae85, Η2,〇 = 0x3c6ei372. Η3 0 = 0xa54ff53a, Hc§ = 0ir510e527f. Η?Λ ? 0x9b05B88c, Hw, = 0x1f83d9ab, Hjr.a = 0x5be0cd19。
6. 根據(jù)權(quán)利要求1至4之一所述的方法,其中m=2和/或其中N=80和/或其中在八個 工作數(shù)據(jù)塊(Wy Wi,…,W7)的初始化(210)的步驟中進行下面的指派: 0x6a09e667f3bcc908, W, 〇 = 0xbb67ae8584caa73b, W2.0 = w〇〇 _ 0x3c6ef372fe94f82b. W3,〇 = 0xa54ff53a5f1d36f1, W4,〇 = ' 〇M510e52?fide882d1, Ws,0 ? 〇Mib05i88c2b3e6c1f, Wi8 = 0x1ffi3diabfb41bdeb, Wno = 0x5be0od19137e21T9, 和/或其中八個哈希數(shù)據(jù)塊(H。,氏,…,H7)通過下面的指派被初始化: H〇i〇 = 0x6a09e667f3bcc908, Ht,〇 = 0xbb67ae8584caa73b, Η2ι5 = Ox3c60f372fei4f82bt Η3Λ = 0^85^53351^3611, Η4β = 0x510e527fade6l2d1? Hm = 0x9b05688c2b3e6c1f, He.〇 = 0x1f83c?ab_l1W6b, H7J = 0x5b_Gd19137e2i79。
7. 根據(jù)上述權(quán)利要求之一所述的方法,其中第一移位寄存器(SR_M)被用于至少暫時 地存儲輸入數(shù)據(jù)塊(My Mi,…,M15),和/或其中第二移位寄存器(SR_W)被用于至少暫時地 存儲工作數(shù)據(jù)塊(Wy Wi,…,W7),和/或其中第三移位寄存器(SR_H)被用于至少暫時地存 儲哈希數(shù)據(jù)塊(H。,氏,…,H 7)。
8. 根據(jù)權(quán)利要求7所述的方法,其中對于i=l至15將輸入數(shù)據(jù)塊Mi;n的內(nèi)容指派 (222a)給輸入數(shù)據(jù)塊Mi_ 1;n+1的步驟包括在第一移位寄存器(SR_M)中優(yōu)選逐塊地對輸入數(shù) 據(jù)塊Mi;n的內(nèi)容進行移位,和/或其中對于k=0, k=l,k=2和對于k=4, k=5, k=6將工作數(shù)據(jù) 塊\"的內(nèi)容指派(222b)給工作數(shù)據(jù)塊Wk+1,n+1的步驟包括在第二移位寄存器(SR_W)中優(yōu) 選逐塊地對工作數(shù)據(jù)塊\ n的內(nèi)容進行移位,和/或其中對于1=1至7將哈希數(shù)據(jù)塊H^n 的值指派(229b)給哈希數(shù)據(jù)塊&n+1的步驟包括在第三移位寄存器(SR_H)中優(yōu)選逐塊地對 哈希數(shù)據(jù)塊 n的內(nèi)容進行移位。
9. 根據(jù)權(quán)利要求7至8之一所述的方法,其中在第一運行階段(BP1)中第一移位寄存 器(SR_M)和第二移位寄存器(SR_W)對于N個許多時鐘周期共同地被時鐘控制,以便對第一 移位寄存器(SR_M)的內(nèi)容的優(yōu)選逐塊的移位和第二移位寄存器(SR_W)的內(nèi)容的優(yōu)選逐塊 的移位進行控制,以及其中在接著第一運行階段(BP1)的第二運行階段(BP2)中,第二移位 寄存器(SR_W)和第三移位寄存器(SR_H)對于8個時鐘周期共同地被時鐘控制,其中優(yōu)選在 第二運行階段(BP2)期間不對第一移位寄存器(SR_M)進行時鐘控制,和/或其中優(yōu)選在第 一運行階段(BP1)期間不對第三移位寄存器(SR_H)進行時鐘控制。
10. 根據(jù)權(quán)利要求2至9之一所述的方法,其中 i.為了確定第一函數(shù)T的表達式ROTRt7__), ROTR1B(M14,n),實施下面的步驟: el)確定表達式V1 = ROTR17(M,4J, el)確定表達式V2 = ROTR2(V1),以便得到 R〇TR19(M14;n), 和/或其中
11. 為了確定第一函數(shù)T的表達式ROTRWMuhROTRVMu)實施下面的步驟: Π )確定表達式 = RcrrRkMW, f2)確定表達式V4 = ROTR11iV3),以便得到 R〇TR18(M1;n), 和/或其中 iii.為了確定第二函數(shù)G的表達式ROTI^CW^ROTR15,^),ROTR^WcJ實施下面 的步驟: gl)確定表達式V5= ROTR2(WU, g2)確定表達式 V6=R0TRn (V5),以便得到 R0TR13(WQ,n), g3)確定表達式 V7=R0TR9 (V6),以便得到 ROTR22 (WQ,n)。
11. 一種用于根據(jù)數(shù)字輸入數(shù)據(jù)(Μ)生成哈希值(HW)的裝置(100 ;1100),其中該裝置 (100)被構(gòu)造用于實施下面的步驟: a) 將輸入數(shù)據(jù)(M)劃分(200)為分別具有32*m位長度的十六個輸入數(shù)據(jù)塊(Μ。,Mi,…, M15),其中m是大于等于1的整數(shù),并且其中下標變量i=0,…,15表示第i個輸入數(shù)據(jù)塊吣, b) 用可預先給定的值初始化(210)八個工作數(shù)據(jù)塊Wi,…,W7),其中八個工作數(shù) 據(jù)塊(Wy Wi,…,W7)中的每個都具有32*m位的長度,并且其中下標變量k=0,…,7表示第 k個工作數(shù)據(jù)塊Wk, c )按照如下規(guī)則改變(220 )輸入數(shù)據(jù)塊(,Mi,…,M15)和工作數(shù)據(jù)塊(Wm Wi,…,W7): cl)對于i=l至15,將輸入數(shù)據(jù)塊Mi;n的內(nèi)容指派(222a)給輸入數(shù)據(jù)塊Μ?η+1,其中η 是大于等于零的整數(shù)并且代表處理周期, c2)對于k=0, k=l,k=2以及對于k=4, k=5, k=6,將工作數(shù)據(jù)塊Wk,n的內(nèi)容指派(222b) 給工作數(shù)據(jù)塊Wk+1,n+1, c3)將第一函數(shù)T的輸出值指派(224)給輸入數(shù)據(jù)塊M15;n+1, c4)將第二函數(shù)G的輸出值指派(226)給工作數(shù)據(jù)塊\η+1, c5)將第三函數(shù)F的輸出值指派(228)給工作數(shù)據(jù)塊W4;n+1, 其中該裝置(100)被構(gòu)造用于執(zhí)行改變(220)的步驟c)N次,其中N> 1。
12. 根據(jù)權(quán)利要求11的裝置(100),其中該裝置(100)被構(gòu)造用于實施根據(jù)權(quán)利要求2 至10之一所述的方法。
13. 根據(jù)權(quán)利要求11至12之一所述的裝置(100 ;1100),其中第一移位寄存器(SR_M) 被設置用于至少暫時地存儲輸入數(shù)據(jù)塊(My Mi,…,M15),和/或其中第二移位寄存器(SR_ W)被設置用于至少暫時地存儲工作數(shù)據(jù)塊(WyWi,…,W7),和/或其中第三移位寄存器(SR_ Η)被設置用于至少暫時地存儲哈希數(shù)據(jù)塊汛,氏,…,H7)。
14. 根據(jù)權(quán)利要求13的裝置(100),其中設置有第一函數(shù)塊(1110)用于實施第一函數(shù) T,和/或其中設置有第二函數(shù)塊(1120)用于實施第二函數(shù)G,和/或其中設置有第三函數(shù) 塊(1130)用于實施第三函數(shù)G,其中優(yōu)選第一函數(shù)塊(1110)的輸出端(1114)與第一移位 寄存器(SR_M)的分配給輸入數(shù)據(jù)塊M 15的輸入端(M15E)連接,其中優(yōu)選第二函數(shù)塊(1120) 的輸出端(1124)與第二移位寄存器(SR_W)的分配給工作數(shù)據(jù)塊%的輸入端(W#)連接,其 中優(yōu)選第三函數(shù)塊(1130)的輸出端(1134)與第二移位寄存器(SR_W)的分配給工作數(shù)據(jù)塊 W4的輸入端(W4E)連接。
15. 根據(jù)權(quán)利要求13至14之一所述的裝置(100 ;1100),其中設置有加法器(1200),其 被構(gòu)造用于將工作數(shù)據(jù)塊W7的內(nèi)容與哈希數(shù)據(jù)塊H 7的內(nèi)容相加,其中加法器(1200)的輸 出端(1204)優(yōu)選與第三移位寄存器(SR_H)的分配給哈希數(shù)據(jù)塊%的輸入端(H#)連接。
16. 根據(jù)權(quán)利要求13至15之一的裝置(100),其中該裝置(100)被構(gòu)造用于,在第一運 行階段(BP1)中對第一移位寄存器(SR_M)和第二移位寄存器(SR_W)對于N個許多時鐘周 期共同地進行時鐘控制,以及在接著第一運行階段(BP1)的第二運行階段(BP2)中,對第二 移位寄存器(SR_W)和第三移位寄存器(SR_H)對于8個時鐘周期共同地進行時鐘控制,其中 優(yōu)選在第二運行階段(BP2)期間不對第一移位寄存器(SR_M)進行時鐘控制,和/或其中優(yōu) 選在第一運行階段(BP1)期間不對第三移位寄存器(SR_H)進行時鐘控制。
17. 根據(jù)權(quán)利要求13至16之一所述的裝置(100),其中該裝置(100)優(yōu)選完全地被構(gòu) 造為集成電路,尤其是在使用CMOS技術(shù)情況下來構(gòu)造。
【文檔編號】H04L9/00GK104158648SQ201410199922
【公開日】2014年11月19日 申請日期:2014年5月13日 優(yōu)先權(quán)日:2013年5月14日
【發(fā)明者】M.劉易斯 申請人:羅伯特·博世有限公司