CN101888294A - 杂凑函数diha256及diha512 - Google Patents
杂凑函数diha256及diha512 Download PDFInfo
- Publication number
- CN101888294A CN101888294A CN2009100265603A CN200910026560A CN101888294A CN 101888294 A CN101888294 A CN 101888294A CN 2009100265603 A CN2009100265603 A CN 2009100265603A CN 200910026560 A CN200910026560 A CN 200910026560A CN 101888294 A CN101888294 A CN 101888294A
- Authority
- CN
- China
- Prior art keywords
- diha256
- function
- diha512
- variable
- value
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Abstract
杂凑函数DIHA256及DIHA512基于64位运算,在MD5轮函数基础上,增加动态查表(工作变量b模加消息子块查表),查表值作为计算的初始化内状态值替代轮函数中的b变量参加运算,并之后延迟插入计算,DIHA256对每个1024分组进行3圈各16步运算。内状态映射值作为辅助链变量,最后模加至工作变量链值,输出256位杂凑值。DIHA512杂凑函数由两个独立不同的DIHA256(仅仅P[256]查表数组不同)并行运算的级联,在额外增加的附加分组xm+1前交叉工作变量链值,并最后互换辅助链变量值模加而并列工作变量链值,构成512位输出。DIHA256及DIHA512构造独特,具有强烈的雪崩性,使得自由起始端,链变量等攻击极其困难,是安全性明显优于现今任何其它杂凑函数的设计。
Description
技术领域:
密码学杂凑函数
背景介绍:
密码学杂凑函数在计算机安全的各个领域起着重要的作用。而随着近年来主要和著名的杂凑函数被攻破,构造新的安全的杂凑函数成为紧迫的问题,然后,构造符合要求的杂凑函数是相当困难的,本发明在专利申请号为200810243163.7“动态输入杂凑函数DIH”发明的基础上构造基于64位计算的DIHA256,和DIHA512。
申请号为200810243163.7“动态输入杂凑函数DIH”的基于32位计算的DIH阐述的发明基本结构为:
预建立一个数组:由所有各种单字节为单元的P[256],在采用MD5轮函数F,G,K基础上,每一步用工作变量b模加子块x[j]查表(P[256])进行字节转换,获得动态的映射值r1加入运算,同时以此查表映射为内状态的映射值随后延迟插入计算,每步获得的内状态映射值依次更新作为辅助链变量,辅助链变量不累加。
发明内容:
运用申请号为200810243163.7“动态输入杂凑函数DIH”的基于32位计算的DIH阐述的基本原理和结构扩展为基于64位运算的基本DIHA256杂凑函数以及DIHA512。
1.扩展为基本DIHA256时的主要变化和内容:
1)扩展为基于64位的计算,并且在F,G,K函数基本运算中用获得的内状态映射值r1取代F,G,K函数中b变量,以增强雪崩性。即改变申请号为200810243163.7“动态输入杂凑函数DIH”三圈48步中每一步中的t表达,例如第一圈中,对于轮函数F:
由t=a+(F(b,c,d)+r1+W+b<<<1)<<<7
改变为:t=a+(F(r1,c,d)+W1+b<<<j)<<<5
在三圈中,将r1由轮函数外的模加,改变为用r1取代工作变量b在函数F,G,K中的位置。
2)规范链值为7个,工作变量为基本的4个64位的寄存器变量,辅助寄存器变量为3个64位寄存器,输出杂凑值为256位,最后的辅助链变量模加至对应工作变量。
(详见稍后算法)
2.延伸扩展为DIHA512时的主要变化和内容:
1)将基本DIHA256分成左右两线独自并行运算,其中左右两线的DIHA256主要采用完全不同的P[256]表,(当然左右两线也可以设置成不同的初始链值)。
2)在原消息常规附加添加后形成的m个分组后,再额外加上一个分组Sx,作为第m+1个分组,Sx的组成详见稍后算法。
3)进入最后一个即m+1个分组运算之前,左线与右线的工作变量链变值互换。
左线右线基本DIHA256输出合并为512位输出。
(详见稍后算法)
具体实施方式:
1.基本DIHA256算法
输入:消息x,长度L比特,L≤2128
输出:x的256比特消息摘要:H(x)
1.1预处理
设置一个固定数组,以所有不同的单字节为单元的P[256],将P[256]放入缓存。(见附表)
设置4个64位寄存器变量a,b,c,d为工作变量,设置3个64位寄存器变量r1 r2,r3为辅助变量。
填充(同SHA512)
在消息x后首先填充比特1,随后填充所需数目的0比特,使得填充后的长度LP满足
LP≡896(mod1024)
填充增加的比特数目为1到1024,填充务必使得消息长度总是增加,即使是原消息x已经满足了上面等式(LP≡896(mod1024)。
添加(同SHA512)
一个表示x原长度L的128位无符号整数最后添加进来(大端表示),消息最终的长度是Lf,则Lf:
Lf≡1024*m
即,1024m≡16m*64
格式化的输入由16m个64比特字组成:x0x1...x16m-1
1.2符号:
“←” 表示赋值或同时赋值;
“||” 表示级联;
“<<<n” 为循环左移n比特;
“>>>n” 循环右移n比特;
“+” 表示64位模加;
“Map(b,x[j])→r1”
将64位b变量拆分为字节流:s1,s2,s3,s4,s5,s6,s7,s8(大端表示),然后将它们的查表值的字节流级联成64位字:P[s1]||P[s2]||P[s3]||P[s4]||P[s5]||P[s6]||P[s7]||P[s8](大端表示),最后结果赋值给r1。此过程可以用64位寄存器变量来比较方便地说明,例如,令:b为RBX,r1为RDX;BL,DL分别为寄存器RBX和RDX的最低位字节,则:
“DL←P[BL],RBX>>>8,RDX>>>8”;重复7次。
轮函数(源自MD5)
F(b,c,d)=(bANDc)OR((NOTb)AND(d))
G(b,c,d)=(bANDd)OR(cAND(NOTd))
K(b,c,d)=bXORcXORd
1.3初始化设置
定义7个64比特初始链值:
h1=0x6a09e667f3bcc90g;h2=0xbb67ae8584caa73b;h3=0x3c6ef372fe94fg2b
h4=0xa54ff53a5f1d36f1;h5=0x510e537fade682d1;h6=0x9b05688c2b3e6c1f
h7=0x1f83d9abfb41bd68
(这7个链值来自于SHA512)
定义7个链变量并且初始化它们:
H1,H2,H3,H4,H5,H6,H7
(H1,H2,H3,H4,H5,H6,H7)←(h1,h2,h3,h4,h5,h6,h7)
定义3个64位的常数:
W1=0xcdaa8b436ed9eba1,W2=0x6ed9eba18f1bbcdc W3=0x15b49ce581535a99
1.4运行
对于i从0到m-1,复制第i个消息块到缓存:
X[j]←x16i+j,0≤j≤15(格式化的输入由16m个64比特字组成:x0x1...x16m-1),在更新链表前,作3圈,每圈16步的运算:
初始化变量(a,b,c,d)←(H1,H2,H3,H4),(r1,r2,r3)←(H5,H6,H7)
第一圈16步:对j从0到15
1)a=a+r1,b=b+x[j];
2)Map(b,x[j])→r1
3)t=a+F(r1,c,d)+W1+b<<<j)<<<5
4)(a,b,c,d)←(d,t<<<30,b,c);
t←r1;(r1,r2,r3)←(r2,r3,t>>>12)
第二圈16步:对j从16到31
1)a=a+r1,b=b+x[j];
2)Map(b,x[j])→r1
3)t=a+G(r1,c,d)+W2+b<<<j)<<<5
4)(a,b,c,d)←(d,t<<<30,b,c);
t←r1;(r1,r2,r3)←(r2,r3,t>>>12)
第三圈16步:对j从32到47
1)a=a+r1,b=b+x[j];
2)Map(b,x[j])→r1
3)t=a+K(r1,c,d)+W3+b<<<j)<<<5
4)(a,b,c,d)←(d,t<<<30,b,c);
t←r1;(r1,r2,r3)←(r2,r3,t>>>12)
第三圈16步完成后
更新链值:
(H1,H2,H3,H4)←(H1+a,H2+b,H3+c,H4+d)
(H5,H6,H7)←(H5+r1,H6+r2,H7+r3)
1.5完成
最后的杂凑值:H(x)
H(x):(H1+H5)||H2||(H3+H6)||(H4+H7)(大端表示)
附:P[256]表
S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] |
0 | 147 | 32 | 230 | 64 | 108 | 96 | 120 | 128 | 72 | 160 | 249 | 192 | 0 | 224 | 156 |
1 | 227 | 33 | 47 | 65 | 162 | 97 | 200 | 129 | 1 | 161 | 250 | 193 | 56 | 225 | 114 |
2 | 44 | 34 | 111 | 66 | 59 | 98 | 25 | 130 | 12 | 162 | 179 | 194 | 209 | 226 | 65 |
3 | 116 | 35 | 191 | 67 | 131 | 99 | 213 | 131 | 92 | 163 | 196 | 195 | 50 | 227 | 153 |
4 | 188 | 36 | 8 | 68 | 211 | 100 | 64 | 132 | 172 | 164 | 23 | 196 | 35 | 228 | 68 |
5 | 5 | 37 | 80 | 69 | 37 | 101 | 144 | 133 | 199 | 165 | 16 | 197 | 60 | 229 | 126 |
6 | 77 | 38 | 152 | 70 | 117 | 102 | 102 | 134 | 30 | 166 | 104 | 198 | 148 | 230 | 175 |
7 | 149 | 39 | 224 | 71 | 197 | 103 | 177 | 135 | 63 | 167 | 140 | 199 | 236 | 231 | 161 |
8 | 221 | 40 | 41 | 72 | 14 | 104 | 2 | 136 | 146 | 168 | 228 | 200 | 118 | 232 | 95 |
9 | 38 | 41 | 121 | 73 | 94 | 105 | 100 | 137 | 13 | 169 | 53 | 201 | 79 | 233 | 243 |
10 | 110 | 42 | 193 | 74 | 166 | 106 | 252 | 138 | 93 | 170 | 206 | 202 | 167 | 234 | 133 |
11 | 182 | 43 | 10 | 75 | 246 | 107 | 26 | 139 | 173 | 171 | 98 | 203 | 34 | 235 | 7 |
12 | 254 | 44 | 83 | 76 | 143 | 108 | 106 | 140 | 141 | 172 | 163 | 204 | 122 | 236 | 170 |
13 | 71 | 45 | 155 | 77 | 223 | 109 | 186 | 141 | 229 | 173 | 251 | 205 | 210 | 237 | 137 |
14 | 135 | 46 | 235 | 78 | 48 | 110 | 124 | 142 | 54 | 174 | 88 | 206 | 61 | 238 | 212 |
15 | 207 | 47 | 52 | 79 | 128 | 111 | 21 | 143 | 134 | 175 | 176 | 207 | 232 | 239 | 85 |
16 | 24 | 48 | 132 | 80 | 208 | 112 | 101 | 144 | 214 | 176 | 9 | 208 | 73 | 240 | 15 |
17 | 96 | 49 | 204 | 81 | 33 | 113 | 62 | 145 | 39 | 177 | 89 | 209 | 231 | 241 | 27 |
18 | 168 | 50 | 29 | 82 | 113 | 114 | 142 | 146 | 127 | 178 | 189 | 210 | 76 | 242 | 217 |
19 | 240 | 51 | 109 | 83 | 139 | 115 | 222 | 147 | 58 | 179 | 22 | 211 | 136 | 243 | 187 |
20 | 57 | 52 | 181 | 84 | 219 | 116 | 32 | 148 | 138 | 180 | 42 | 212 | 145 | 244 | 165 |
21 | 129 | 53 | 6 | 85 | 245 | 117 | 112 | 149 | 218 | 181 | 130 | 213 | 241 | 245 | 66 |
22 | 201 | 54 | 78 | 86 | 174 | 118 | 192 | 150 | 4 | 182 | 43 | 214 | 103 | 246 | 45 |
23 | 18 | 55 | 119 | 87 | 105 | 119 | 17 | 151 | 84 | 183 | 159 | 215 | 160 | 247 | 31 |
24 | 90 | 56 | 49 | 88 | 185 | 120 | 97 | 152 | 164 | 184 | 247 | 216 | 248 | 248 | 194 |
S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] |
25 | 178 | 57 | 82 | 89 | 74 | 121 | 55 | 153 | 244 | 185 | 225 | 217 | 81 | 249 | 19 |
26 | 11 | 58 | 154 | 90 | 226 | 122 | 242 | 154 | 69 | 186 | 220 | 218 | 216 | 250 | 125 |
27 | 99 | 59 | 234 | 91 | 20 | 123 | 67 | 155 | 157 | 187 | 238 | 219 | 205 | 251 | 233 |
28 | 195 | 60 | 51 | 92 | 180 | 124 | 36 | 156 | 237 | 188 | 3 | 220 | 46 | 252 | 190 |
29 | 253 | 61 | 123 | 93 | 150 | 125 | 70 | 157 | 183 | 189 | 91 | 221 | 184 | 253 | 87 |
30 | 86 | 62 | 203 | 94 | 215 | 126 | 151 | 158 | 147 | 190 | 75 | 222 | 202 | 254 | 107 |
31 | 158 | 63 | 28 | 95 | 40 | 127 | 239 | 159 | 169 | 191 | 171 | 223 | 115 | 255 | 198 |
2.DIHA512算法:
输入:消息x,长度L比特,L≤2128
输出:x的512比特消息摘要:H(x)
1)左线基本DIHA256函数设置的数组表为P[256],右线基本DIHA256函数设置的数组表为
PR[256],P[256]与PR[256]完全不同。
左线所有变量下标L,右线下标R。
2)预处理的对消息x的填充和附加,同基本DIHA256算法,即LP≡896(mod1024);Lf≡1024*m1024m≡16m*64
消息处理成m个1024比特分组后,复制第一个分组x0并将之变形成为第(m+1)个分组Sx:
将x0分组的第一个字节切割然后移至分组的末尾
此时,xm+1=Sx。
3)左线和右线各自完成m个分组运算,此时,
(H1L,H2L,H3L,H4L)←(H1L+aL,H2L+bL,H3L+cL,H4L+dL)
(H5L,H6L,H7L)←(r1L,r2L,r3L)
(H1R,H2R,H3R,H4R)←(H1R+aR,H2R+bR,H3R+cR,H4R+dR)
(H5R,H6R,H7R)←(r1R,r2R,r3R)
4)进入第m+1轮分组计算前,
左右两组工作变量的链变值互换:
(t1,t2,t3,t4)←(H1L,H2L,H3L,H4L)
(H1L,H2L,H3L,H4L)←(H1R,H2R,H3R,H4R)
(H1R,H2R,H3R,H4R)←(t1,t2,t3,t4)
5)第m+1分组计算完成时,
左线:(H1L,H2L,H3L,H4L)←(H1L+aL,H2L+bL,H3L+cL,H4L+dL)
(H5L,H6L,H7L)←(r1L,r2L,r3L)
右线:(H1R,H2R,H3R,H4R)←(H1R+aR,H2R+bR,H3R+cR,H4R+dR)
(H5R,H6R,H7R)←(r1R,r2R,r3R)
最后的512位杂凑值:
H(x):(H1L+H5R)||H2L||(H3L+H6R)||(H4L+H7R)
||(H1R+H5L)||H2R||(H3R+H6L)||(H4R+H7L)
(大端表示)
添加的第(m+1)个分组Sx有各种方法制备。采用额外的Sx分组用意是使得消息x在全部添加后的长度至少有2个以上的分组长度,以便能够进行DIHA512最后一轮运算,即:使左线和右线的DIHA256工作变量交叉互换,以及最后512位杂凑值的以辅助链变量交叉混合。
附:PR[256]
S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] |
0 | 153 | 32 | 89 | 64 | 107 | 96 | 11 | 128 | 90 | 160 | 184 | 192 | 181 | 224 | 0 |
1 | 225 | 33 | 209 | 65 | 171 | 97 | 75 | 129 | 154 | 161 | 1 | 193 | 130 | 225 | 180 |
2 | 34 | 34 | 18 | 66 | 36 | 98 | 112 | 130 | 218 | 162 | 65 | 194 | 59 | 226 | 110 |
3 | 98 | 35 | 82 | 67 | 141 | 99 | 176 | 131 | 27 | 163 | 131 | 195 | 206 | 227 | 182 |
4 | 202 | 36 | 146 | 68 | 111 | 100 | 240 | 132 | 99 | 164 | 195 | 196 | 211 | 228 | 95 |
5 | 3 | 37 | 210 | 69 | 175 | 101 | 49 | 133 | 163 | 165 | 12 | 197 | 28 | 229 | 243 |
6 | 67 | 38 | 19 | 70 | 40 | 102 | 35 | 134 | 219 | 166 | 76 | 198 | 92 | 230 | 52 |
7 | 123 | 39 | 83 | 71 | 168 | 103 | 147 | 135 | 227 | 167 | 148 | 199 | 159 | 231 | 207 |
8 | 179 | 40 | 139 | 72 | 232 | 104 | 156 | 136 | 228 | 168 | 212 | 200 | 57 | 232 | 204 |
9 | 235 | 41 | 203 | 73 | 41 | 105 | 244 | 137 | 37 | 169 | 248 | 201 | 140 | 233 | 20 |
10 | 44 | 42 | 4 | 74 | 105 | 106 | 198 | 138 | 102 | 170 | 129 | 202 | 229 | 234 | 80 |
11 | 100 | 43 | 68 | 75 | 169 | 107 | 7 | 139 | 174 | 171 | 101 | 203 | 46 | 235 | 64 |
12 | 164 | 44 | 132 | 76 | 233 | 108 | 71 | 140 | 238 | 172 | 173 | 204 | 192 | 236 | 128 |
13 | 220 | 45 | 196 | 77 | 93 | 109 | 135 | 141 | 47 | 173 | 237 | 205 | 145 | 237 | 81 |
14 | 29 | 46 | 5 | 78 | 157 | 110 | 199 | 142 | 50 | 174 | 54 | 206 | 58 | 238 | 121 |
15 | 85 | 47 | 69 | 79 | 221 | 111 | 8 | 143 | 122 | 175 | 118 | 207 | 31 | 239 | 143 |
16 | 149 | 48 | 133 | 80 | 30 | 112 | 72 | 144 | 186 | 176 | 127 | 208 | 103 | 240 | 32 |
17 | 205 | 49 | 197 | 81 | 86 | 113 | 136 | 145 | 250 | 177 | 193 | 209 | 194 | 241 | 217 |
18 | 14 | 50 | 6 | 82 | 150 | 114 | 200 | 146 | 187 | 178 | 242 | 210 | 39 | 242 | 144 |
S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] | S | P[S] |
19 | 70 | 51 | 126 | 83 | 214 | 115 | 9 | 147 | 251 | 179 | 84 | 211 | 167 | 243 | 178 |
20 | 134 | 52 | 246 | 84 | 23 | 116 | 10 | 148 | 78 | 180 | 21 | 212 | 115 | 244 | 16 |
21 | 190 | 53 | 55 | 85 | 87 | 117 | 74 | 149 | 142 | 181 | 94 | 213 | 13 | 245 | 51 |
22 | 254 | 54 | 247 | 86 | 151 | 118 | 138 | 150 | 216 | 182 | 166 | 214 | 114 | 246 | 38 |
23 | 63 | 55 | 56 | 87 | 215 | 119 | 188 | 151 | 25 | 183 | 22 | 215 | 172 | 247 | 53 |
24 | 119 | 56 | 113 | 88 | 24 | 120 | 252 | 152 | 26 | 184 | 230 | 216 | 45 | 248 | 222 |
25 | 183 | 57 | 177 | 89 | 88 | 121 | 61 | 153 | 91 | 185 | 162 | 217 | 117 | 249 | 185 |
26 | 239 | 58 | 241 | 90 | 152 | 122 | 125 | 154 | 155 | 186 | 158 | 218 | 66 | 250 | 77 |
27 | 48 | 59 | 42 | 91 | 208 | 123 | 189 | 155 | 226 | 187 | 245 | 219 | 108 | 251 | 165 |
28 | 104 | 60 | 106 | 92 | 17 | 124 | 253 | 156 | 120 | 188 | 153 | 220 | 79 | 252 | 223 |
29 | 160 | 61 | 170 | 93 | 73 | 125 | 62 | 157 | 116 | 189 | 213 | 221 | 96 | 253 | 249 |
30 | 224 | 62 | 234 | 94 | 137 | 126 | 97 | 158 | 2 | 190 | 231 | 222 | 15 | 254 | 236 |
31 | 33 | 63 | 43 | 95 | 201 | 127 | 161 | 159 | 60 | 191 | 109 | 223 | 124 | 255 | 191 |
P[256]和PR[256]在此是为了示例说明,其中数组元素分布可能并非完全是算法所要求的充分随机分布。
6)说明
DIHA512算法虽然也是并行的算法,但与RIPEMD160算法明显不同;不仅仅是采用的轮函数不同。
(一)DIHA512算法是两个独立的基本DIHA256函数的级联,最终的杂凑值是两个独立的基本DIHA256函数链值的并列,而不是RIPEMD160最后的模加混合,这进一步强化了杂凑函数。
(二)DIHA512算法的两个独立的左线右线,即基本DIHA256函数之间的不同,是在于采用了不同的查表数组P[256]和PR[256]来实现,与RIPEMD160采用的方法不同。
(三)DIHA512算法在最后分组之前,两个独立的DIHA256函数互相交换了工作变量的链值,并为保证有2个以上的分组长度而特意增加了一个最后分组即第(m+1)个分组Sx。
(四)DIHA512算法最后结果,是在左右两线工作变量链值上交换了辅助链变量r1L,r2L,r3L以及r1R,r2R,r3R并各自模加。
3.关于安全性的说明
1)逆推的难易程度。
杂凑函数的安全性基于其单向性。在同等条件下,我们来比较MD5,SHA系列跟DIHA256逆推的难易程度。
假设我们已知输出:MD5的128位,SHA-1的160位和DIHA256的256位输出,同时已知消息的最后一个分组xm-1。
根据MD5的算法和SHA-1的算法,我们很容易逐步逆推到它们工作变量的上一步的状态,直至上一轮(对应于xm-2)结束时的链变量,这对于RIPEMD160以及SHA-2是同样结果;然而我们却无法逆推DIHA上一步的状态,原因很简单,DIHA最后只给出了256位杂凑值
H(x):(H1+H5)||H2||(H3+H6)||(H4+H7)
其中H5,H6,H7分别是不参与累加的链值,也就是最后几步产生的中间状态值r1,r2,r3,从给出的H(x)的256位中很难分离出r1,r2,r3而得到工作变量a,b,c,d最后的链值,因而很难逆推。即便我们已知了最后a,b,c,d的值,以及r1,r2,r3,根据DIHA256算法,我们仍然无法得到其前3步产生的延迟插入值r1,因而仍很难逐步地逆推到上一步,进而逆推至上一轮(对应于xm-2)结束时的链变量。
2)定向性比较和自由IV
单轮单圈输出时,MD5的四个工作变量或者SHA1的五个工作变量之间的关联相对而言是简单和确定的,这很容易设计定向结果。我们考虑在允许自由选择I0V0以及消息xi时,在某个单圈,我们可以很容易预先设计运行几步后的结果,例如,预先设计10步后的结果-----我们可以微调一个或几个子块的比特(例如一个比特),到达我们需要的目标。同样地,对RIPEMD160以及SHA-2我们也能轻易做到。
同样条件下,我们在DIHA256中,很难做到预先设计10步后的结果,原因是,DIHA256中每个下一步依赖上一步的结果去查表,即Map(b,x[j])→r1,同时,当我们微调一个消息子块的比特以试图到达所需目标时,这微调的变化被查表映射无规则放大,再直接进入轮函数的逻辑运算(而不是简单模加),变化被快速雪崩扩散,同时这查表映射的中间值又被延迟后插入其后几步的运算,我们就必须再额外地处理这延迟插入所形成的雪崩变化-----而这必须在其后再调整额外的子块的比特以消除这插入变化;而这额外的调整子块比特本身却又造成了新的映射,引起新的雪崩.....形成计算上的纠缠。
因而,对于自由起始端攻击,攻击DIHA比攻击其他函数大大困难。实际上,DIHA的输入变化雪崩性剧烈,每一步Map(b,x[j])→r1伴随着的是一一对应的查表,每一次查表264的可能被输入轮函数的逻辑结构,同时又被延迟重新插入。因而几步之后,所选择的自由起始端I0V0导致的后续输入就变得面目全非,无法预料,因而实际上的自由起始端攻击很难有效果。
3)级联效果
DIHA512是独立的两个DIHA256函数级联,若h1(x)表示左线DIHA256,h2(x)表示右线DIHA256,DIHA512表示为h(x),则:h(x)=h1(x)||h2(x)
显然,h1(x)和h2(x)是等强度的杂凑函数,因而,求h(x)的一个碰撞等于对于同一消息x求h1(x)和h2(x)同时碰撞。这需要分别计算h1(x)和h2(x)计算量的乘积。显然这增强了强度。由于DIHA512还采用了链变量交叉运算和最后辅助链变量混加,因而即使给出512位输出,实际上很难分离h1(x)和h2(x)的输出。因而并不能期望能够对于h(x)的单个DIHA256的攻击。
4)输出随机性
DIHA系列的基础是MD5的轮函数,而MD5在较长时间内被证明其输出是随机的。DIHA是在MD5轮函数基础上额外添加了组件Map(b,x[j])→r1,并以非累加的中间状态作为额外的链变量以及重插入设置,其中Map(b,x[j])→r1采用的查表是包含所有比特变化的一一对应,这些都不会破坏其原有的随机特性。
Claims (2)
1.一种基于申请号为200810243163.7“动态输入杂凑函数DIH”原理构造的,扩展为基于64位计算的杂凑函数DIHA256,并增强的方法。DIH原理为:
1)DIH采用了MD5的轮函数结构,设置了256字节的表,以对每圈每一步的32位消息子块x[j]获得查表映射,此映射是动态的,与每一步x[j]关联:将工作变量b模加x[j]后分成字节流查表再组成映射字,加入运算。
2)设置了几个辅助寄存器变量,用以存储映射值并重新插入,起到交错作用,使得函数变化更复杂化。
3)辅助寄存器变量作为额外的链变量,最后加入工作变量。
DIHA256杂凑函数包含特征:
1)利用了DIH的原理扩展为64位的运算,并在主运算上改变申请号为200810243163.7“动态输入杂凑函数DIH”三圈48步中每一步中的t表达,例如第一圈中,对于轮函数F:
由t=a+(F(b,c,d)+r1+W+b<<<1)<<<7
改变为:t=a+(F(r1,c,d)+W1+b<<<j)<<<5
在三圈中,将r1由轮函数外的模加,改变为在轮函数F,G,K内用r1取代工作变量b的位置
2)输出杂凑值为256位表达为,最后的辅助链变量模加至对应工作变量:
最后的杂凑输出值:H(x)
H(x):(H1+H5)||H2||(H3+H6)||(H4+H7)
2.一种由基本DIHA256杂凑函数并行构造DIHA512杂凑函数的方法:
DIHA512算法虽然也是并行的算法,但与RIPEMD160算法明显不同;不仅仅是采用的轮函数不同,其特征区别为:
1)DIHA512算法是两个独立的基本DIHA256函数的级联,最终的杂凑值是两个独立的基本DIHA256函数链值的并列,而不是RIPEMD160最后的模加混合。
2)DIHA512算法的两个独立的基本DIHA256函数之间即左线与右线函数的不同,是在于采用了不同的查表数组P[256]和PR[256]来实现,与RIPEMD160采用的方法不同。
3)DIHA512算法在最后分组之前,两个独立的DIHA256函数互相交换了工作变量的链值,并为保证有2个以上的分组长度而特意增加了一个最后分组即第(m+1)个分组Sx。
4)DIHA512算法最后结果,是在左右两线工作变量链值上交换了辅助链变量r1L,r2L,r3L以及r1R,r2R,r3R并各自模加。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100265603A CN101888294A (zh) | 2009-05-12 | 2009-05-12 | 杂凑函数diha256及diha512 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100265603A CN101888294A (zh) | 2009-05-12 | 2009-05-12 | 杂凑函数diha256及diha512 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101888294A true CN101888294A (zh) | 2010-11-17 |
Family
ID=43074029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100265603A Pending CN101888294A (zh) | 2009-05-12 | 2009-05-12 | 杂凑函数diha256及diha512 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101888294A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111464316A (zh) * | 2012-03-30 | 2020-07-28 | 英特尔公司 | 用于处理sha-2安全散列算法的方法和设备 |
-
2009
- 2009-05-12 CN CN2009100265603A patent/CN101888294A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111464316A (zh) * | 2012-03-30 | 2020-07-28 | 英特尔公司 | 用于处理sha-2安全散列算法的方法和设备 |
CN111464316B (zh) * | 2012-03-30 | 2023-10-27 | 英特尔公司 | 用于处理sha-2安全散列算法的方法和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Iwata et al. | Duel of the titans: the romulus and remus families of lightweight AEAD algorithms | |
CN109379086B (zh) | 低复杂度的码率兼容的5g ldpc编码方法和编码器 | |
Andrews et al. | Partitions associated with the Ramanujan/Watson mock theta functions ω (q), ν (q) and ϕ (q) | |
CN104737495A (zh) | 校正量子密钥分配协议中的比特误差的排列方法 | |
US10491377B2 (en) | Hashing using data parallel instructions | |
CN101872338B (zh) | 一种认证协议中得到安全消息摘要的方法 | |
CN104092534A (zh) | 实现sm3密码杂凑算法中的迭代压缩的方法 | |
US20180248687A1 (en) | Cryptographic hash generated using data parallel instructions | |
CN103632104A (zh) | 一种大数据环境下动态数据的并行加解密方法 | |
CN1735013A (zh) | 用于执行md5摘要的设备和方法 | |
US10237066B1 (en) | Multi-channel encryption and authentication | |
CN112367158A (zh) | 一种加速sm3算法的方法、处理器、芯片及电子设备 | |
CN101888294A (zh) | 杂凑函数diha256及diha512 | |
CN106656470A (zh) | 一种基于改进aes算法的数据加密方法 | |
US11500986B2 (en) | Side-channel attack protected gates having low-latency and reduced complexity | |
CN102542070B (zh) | 基于随机函数的单向哈希函数构造方法 | |
US9880960B1 (en) | Configurable sponge function engine | |
US9288041B2 (en) | Apparatus and method for performing compression operation in hash algorithm | |
Agibalov | ElGamal cryptosystems on Boolean functions | |
CN1815948A (zh) | 基于复合非线性数字滤波器的混沌散列构造方法 | |
CN107231229B (zh) | 一种用于保护sm4密码芯片的低熵掩码泄露防护方法及其实现系统 | |
JP4206205B2 (ja) | Sha演算の高速演算回路 | |
CN112953567A (zh) | Turbo编码方法和装置、电子设备和存储介质 | |
Eltaief et al. | MLCC: A new hash‐chained mechanism for multicast source authentication | |
CN116132108B (zh) | 基于预共享成对密钥的通用轻量级群密钥认证分配方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20101117 |