|
|
1 | (8) |
|
1.1 Cryptographic Hashing |
|
|
1 | (1) |
|
|
2 | (3) |
|
|
5 | (1) |
|
|
6 | (3) |
|
|
9 | (28) |
|
|
9 | (6) |
|
2.1.1 Modification Detection |
|
|
9 | (1) |
|
2.1.2 Message Authentication |
|
|
10 | (1) |
|
|
11 | (1) |
|
2.1.4 Pseudorandom Functions |
|
|
12 | (1) |
|
2.1.5 Entropy Extraction and Key Derivation |
|
|
13 | (1) |
|
|
13 | (1) |
|
2.1.7 Data Identification |
|
|
14 | (1) |
|
|
14 | (1) |
|
2.1.9 Proof-of-Work Systems |
|
|
14 | (1) |
|
|
15 | (1) |
|
|
15 | (5) |
|
|
15 | (2) |
|
2.2.2 Classical Security Definitions |
|
|
17 | (2) |
|
2.2.3 General Security Definition |
|
|
19 | (1) |
|
2.3 Black-Box Collision Search |
|
|
20 | (4) |
|
|
20 | (1) |
|
|
21 | (1) |
|
2.3.3 Parallel Collision Search |
|
|
22 | (1) |
|
2.3.4 Application to Meet-in-the-Middle |
|
|
22 | (1) |
|
2.3.5 Quantum Collision Search |
|
|
23 | (1) |
|
2.4 Constructing Hash Functions |
|
|
24 | (7) |
|
|
24 | (3) |
|
|
27 | (1) |
|
|
27 | (1) |
|
|
27 | (1) |
|
2.4.5 Compression Functions |
|
|
28 | (3) |
|
|
31 | (6) |
|
|
31 | (1) |
|
|
32 | (2) |
|
|
34 | (3) |
|
|
37 | (8) |
|
|
37 | (4) |
|
3.1.1 Constant Parameters |
|
|
37 | (1) |
|
3.1.2 Compression Function |
|
|
38 | (2) |
|
|
40 | (1) |
|
|
41 | (2) |
|
3.2.1 Constant Parameters |
|
|
41 | (1) |
|
3.2.2 Compression Function |
|
|
42 | (1) |
|
|
42 | (1) |
|
|
43 | (1) |
|
|
43 | (1) |
|
|
44 | (1) |
|
|
45 | (10) |
|
|
45 | (4) |
|
|
45 | (1) |
|
4.1.2 Hashing a Large File with BLAKE-256 |
|
|
46 | (2) |
|
4.1.3 Hashing a Bit with BLAKE-512 |
|
|
48 | (1) |
|
4.1.4 Hashing the Empty String with BLAKE-512 |
|
|
49 | (1) |
|
|
49 | (1) |
|
|
49 | (1) |
|
4.2.2 Hashing a Bit with BLAKE-512 and a Salt |
|
|
49 | (1) |
|
4.3 Message Authentication with HMAC |
|
|
50 | (3) |
|
|
50 | (1) |
|
4.3.2 Authenticating a File with HMAC-BLAKE-512 |
|
|
50 | (3) |
|
4.4 Password-Based Key Derivation with PBKDF2 |
|
|
53 | (2) |
|
|
53 | (1) |
|
4.4.2 Generating a Key with PBKDF2-HMAC-BLAKE-224 |
|
|
53 | (2) |
|
|
55 | (42) |
|
5.1 Straightforward Implementation |
|
|
55 | (5) |
|
|
55 | (3) |
|
|
58 | (2) |
|
|
60 | (4) |
|
|
60 | (2) |
|
|
62 | (2) |
|
5.3 Vectorized Implementation Principle |
|
|
64 | (1) |
|
5.4 Vectorized Implementation with SSE Extensions |
|
|
64 | (6) |
|
5.4.1 Streaming SIMD Extensions 2 (SSE2) |
|
|
64 | (1) |
|
5.4.2 Implementing BLAKE-256 with SSE2 |
|
|
65 | (1) |
|
5.4.3 Implementing BLAKE-512 with SSE2 |
|
|
66 | (4) |
|
5.4.4 Implementations with SSSE3 and SSE4.1 |
|
|
70 | (1) |
|
5.5 Vectorized Implementation with AVX2 Extensions |
|
|
70 | (9) |
|
5.5.1 Relevant AVX2 Instructions |
|
|
71 | (2) |
|
5.5.2 Implementing BLAKE-512 with AVX2 |
|
|
73 | (4) |
|
5.5.3 Implementing BLAKE-256 with AVX2 |
|
|
77 | (2) |
|
5.6 Vectorized Implementation with XOP Extensions |
|
|
79 | (4) |
|
5.6.1 Relevant XOP Instructions |
|
|
80 | (1) |
|
5.6.2 Implementing BLAKE with XOP |
|
|
80 | (3) |
|
5.7 Vectorized Implementation with NEON Extensions |
|
|
83 | (5) |
|
5.7.1 Relevant NEON Instructions |
|
|
83 | (1) |
|
5.7.2 Implementing BLAKE-256 with NEON |
|
|
84 | (2) |
|
5.7.3 Implementing BLAKE-512 with NEON |
|
|
86 | (2) |
|
|
88 | (9) |
|
|
89 | (1) |
|
|
90 | (1) |
|
|
91 | (1) |
|
5.8.4 x86 Platforms (32-bit) |
|
|
91 | (1) |
|
5.8.5 amd64 Platforms (64-bit) |
|
|
92 | (1) |
|
|
93 | (4) |
|
|
97 | (10) |
|
|
97 | (1) |
|
|
98 | (2) |
|
|
98 | (2) |
|
|
100 | (1) |
|
|
100 | (1) |
|
|
101 | (6) |
|
|
102 | (1) |
|
|
102 | (3) |
|
|
105 | (2) |
|
|
107 | (24) |
|
7.1 NIST Call for Submissions |
|
|
107 | (4) |
|
7.1.1 General Requirements |
|
|
107 | (2) |
|
7.1.2 Technical and Security Requirements |
|
|
109 | (1) |
|
7.1.3 Could SHA2 Be SHA3? |
|
|
110 | (1) |
|
|
111 | (3) |
|
7.2.1 Ease of Implementation |
|
|
112 | (1) |
|
|
113 | (1) |
|
|
113 | (1) |
|
|
114 | (1) |
|
|
114 | (6) |
|
|
115 | (4) |
|
|
119 | (1) |
|
|
120 | (1) |
|
|
120 | (11) |
|
|
121 | (1) |
|
|
122 | (1) |
|
|
122 | (3) |
|
|
125 | (1) |
|
|
126 | (2) |
|
|
128 | (1) |
|
|
128 | (3) |
|
|
131 | (34) |
|
8.1 Differential Cryptanalysis |
|
|
131 | (2) |
|
8.1.1 Differences and Differentials |
|
|
132 | (1) |
|
8.1.2 Finding Good Differentials |
|
|
133 | (1) |
|
8.2 Properties of BLAKE's G Function |
|
|
133 | (8) |
|
|
134 | (2) |
|
8.2.2 Differential Properties of G |
|
|
136 | (5) |
|
8.3 Properties of the Round Function |
|
|
141 | (10) |
|
|
141 | (1) |
|
8.3.2 Diffusion and Low-Weight Differences |
|
|
142 | (3) |
|
|
145 | (2) |
|
8.3.4 Impossible Differentials |
|
|
147 | (4) |
|
8.4 Properties of the Compression Function |
|
|
151 | (3) |
|
|
151 | (1) |
|
|
152 | (1) |
|
|
152 | (1) |
|
8.4.4 Fixed Point Collisions |
|
|
153 | (1) |
|
|
153 | (1) |
|
8.5 Security Against Generic Attacks |
|
|
154 | (4) |
|
8.5.1 Indifferentiability |
|
|
154 | (1) |
|
|
155 | (1) |
|
8.5.3 Collision Multiplication |
|
|
155 | (1) |
|
|
156 | (1) |
|
|
157 | (1) |
|
8.6 Attacks on Reduced BLAKE |
|
|
158 | (7) |
|
|
158 | (1) |
|
8.6.2 Near-Collision Attack |
|
|
159 | (1) |
|
8.6.3 Boomerang Distinguisher |
|
|
160 | (1) |
|
8.6.4 Iterative Characteristics |
|
|
161 | (2) |
|
|
163 | (1) |
|
8.6.6 Attack on a Variant with Identical Constants |
|
|
163 | (2) |
|
|
165 | (20) |
|
|
165 | (1) |
|
9.2 Differences with BLAKE |
|
|
166 | (6) |
|
|
167 | (1) |
|
9.2.2 Rotations Optimized for Speed |
|
|
167 | (1) |
|
|
168 | (1) |
|
|
168 | (1) |
|
|
168 | (1) |
|
|
169 | (1) |
|
|
170 | (1) |
|
|
170 | (1) |
|
|
170 | (2) |
|
9.3 Keyed Hashing (MAC and PRF) |
|
|
172 | (1) |
|
|
172 | (4) |
|
|
173 | (1) |
|
|
174 | (1) |
|
|
174 | (1) |
|
9.4.4 Generic Tree Parameters |
|
|
175 | (1) |
|
9.4.5 Updatable Hashing Example |
|
|
175 | (1) |
|
9.5 Parallel Hashing: BLAKE2sp and BLAKE2bp |
|
|
176 | (1) |
|
|
177 | (3) |
|
9.6.1 Why BLAKE2 Is Fast in Software |
|
|
177 | (1) |
|
|
178 | (1) |
|
|
179 | (1) |
|
|
180 | (1) |
|
|
180 | (5) |
|
|
190 | |
|
9.7.2 Implications of BLAKE2 Tweaks |
|
|
181 | (1) |
|
9.7.3 Third-Party Cryptanalysis |
|
|
181 | (4) |
|
|
185 | (10) |
|
|
187 | (8) |
|
|
195 | (14) |
|
|
195 | (3) |
|
|
195 | (1) |
|
|
196 | (2) |
|
|
198 | (3) |
|
|
198 | (1) |
|
|
199 | (2) |
|
|
201 | (4) |
|
|
201 | (1) |
|
|
202 | (3) |
|
|
205 | (4) |
|
|
205 | (1) |
|
|
206 | (3) |
|
|
209 | (16) |
|
|
209 | (2) |
|
|
211 | (3) |
|
|
214 | (3) |
|
|
217 | (3) |
|
|
220 | (5) |
|
|
225 | (2) |
|
|
225 | (1) |
|
|
226 | (1) |
Index |
|
227 | |