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