用于生成哈希值的方法和装置制造方法

文档序号:7803529阅读:94来源:国知局
用于生成哈希值的方法和装置制造方法
【专利摘要】本发明涉及生成哈希值的方法,包括: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.刘易斯 申请人:罗伯特·博世有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1