|
1 Introduction to Cryptography and Data Security |
|
|
1 | (28) |
|
1.1 Overview of Cryptology (and This Book) |
|
|
2 | (2) |
|
1.2 Symmetric Cryptography |
|
|
4 | (5) |
|
|
4 | (2) |
|
1.2.2 Simple Symmetric Encryption: The Substitution Cipher |
|
|
6 | (3) |
|
|
9 | (4) |
|
1.3.1 General Thoughts on Breaking Cryptosystems |
|
|
9 | (2) |
|
1.3.2 How Many Key Bits Are Enough? |
|
|
11 | (2) |
|
1.4 Modular Arithmetic and More Historical Ciphers |
|
|
13 | (7) |
|
|
13 | (3) |
|
|
16 | (2) |
|
1.4.3 Shift Cipher (or Caesar Cipher) |
|
|
18 | (1) |
|
|
19 | (1) |
|
1.5 Discussion and Further Reading |
|
|
20 | (2) |
|
|
22 | (2) |
|
|
24 | (5) |
|
|
29 | (26) |
|
|
30 | (4) |
|
2.1.1 Stream Ciphers vs. Block Ciphers |
|
|
30 | (1) |
|
2.1.2 Encryption and Decryption with Stream Ciphers |
|
|
31 | (3) |
|
2.2 Random Numbers and an Unbreakable Stream Cipher |
|
|
34 | (7) |
|
2.2.1 Random Number Generators |
|
|
34 | (2) |
|
|
36 | (2) |
|
2.2.3 Towards Practical Stream Ciphers |
|
|
38 | (3) |
|
2.3 Shift Register-Based Stream Ciphers |
|
|
41 | (8) |
|
2.3.1 Linear Feedback Shift Registers (LFSR) |
|
|
41 | (4) |
|
2.3.2 Known-Plaintext Attack Against Single LFSRs |
|
|
45 | (1) |
|
|
46 | (3) |
|
2.4 Discussion and Further Reading |
|
|
49 | (1) |
|
|
50 | (2) |
|
|
52 | (3) |
|
3 The Data Encryption Standard (DES) and Alternatives |
|
|
55 | (32) |
|
|
56 | (2) |
|
3.1.1 Confusion and Diffusion |
|
|
57 | (1) |
|
3.2 Overview of the DES Algorithm |
|
|
58 | (3) |
|
3.3 Internal Structure of DES |
|
|
61 | (8) |
|
3.3.1 Initial and Final Permutation |
|
|
61 | (1) |
|
|
62 | (5) |
|
|
67 | (2) |
|
|
69 | (3) |
|
|
72 | (3) |
|
3.5.1 Exhaustive Key Search |
|
|
73 | (2) |
|
|
75 | (1) |
|
3.6 Implementation in Software and Hardware |
|
|
75 | (2) |
|
|
77 | (4) |
|
3.7.1 The Advanced Encryption Standard (AES) and the AES Finalist Ciphers |
|
|
77 | (1) |
|
3.7.2 Triple DES (3DES) and DESX |
|
|
78 | (1) |
|
3.7.3 Lightweight Cipher PRESENT |
|
|
78 | (3) |
|
3.8 Discussion and Further Reading |
|
|
81 | (1) |
|
|
82 | (1) |
|
|
83 | (4) |
|
4 The Advanced Encryption Standard (AES) |
|
|
87 | (36) |
|
|
88 | (1) |
|
4.2 Overview of the AES Algorithm |
|
|
89 | (1) |
|
4.3 Some Mathematics: A Brief Introduction to Galois Fields |
|
|
90 | (9) |
|
4.3.1 Existence of Finite Fields |
|
|
90 | (3) |
|
|
93 | (1) |
|
4.3.3 Extension Fields GF(2m) |
|
|
94 | (1) |
|
4.3.4 Addition and Subtraction in GF(2m) |
|
|
95 | (1) |
|
4.3.5 Multiplication in GF(2m) |
|
|
96 | (2) |
|
4.3.6 Inversion in GF(2m) |
|
|
98 | (1) |
|
4.4 Internal Structure of AES |
|
|
99 | (11) |
|
4.4.1 Byte Substitution Layer |
|
|
101 | (2) |
|
|
103 | (3) |
|
|
106 | (1) |
|
|
106 | (4) |
|
|
110 | (5) |
|
4.6 Implementation in Software and Hardware |
|
|
115 | (1) |
|
4.7 Discussion and Further Reading |
|
|
116 | (1) |
|
|
117 | (1) |
|
|
118 | (5) |
|
5 More About Block Ciphers |
|
|
123 | (26) |
|
5.1 Encryption with Block Ciphers: Modes of Operation |
|
|
124 | (12) |
|
5.1.1 Electronic Codebook Mode (ECB) |
|
|
124 | (4) |
|
5.1.2 Cipher Block Chaining Mode (CBC) |
|
|
128 | (2) |
|
5.1.3 Output Feedback Mode (OFB) |
|
|
130 | (1) |
|
5.1.4 Cipher Feedback Mode (CFB) |
|
|
131 | (1) |
|
|
132 | (2) |
|
5.1.6 Galois Counter Mode (GCM) |
|
|
134 | (2) |
|
5.2 Exhaustive Key Search Revisited |
|
|
136 | (1) |
|
5.3 Increasing the Security of Block Ciphers |
|
|
137 | (6) |
|
5.3.1 Double Encryption and Meet-in-the-Middle Attack |
|
|
138 | (2) |
|
|
140 | (1) |
|
|
141 | (2) |
|
5.4 Discussion and Further Reading |
|
|
143 | (1) |
|
|
144 | (1) |
|
|
145 | (4) |
|
6 Introduction to Public-Key Cryptography |
|
|
149 | (24) |
|
6.1 Symmetric vs. Asymmetric Cryptography |
|
|
150 | (3) |
|
6.2 Practical Aspects of Public-Key Cryptography |
|
|
153 | (4) |
|
6.2.1 Security Mechanisms |
|
|
154 | (1) |
|
6.2.2 The Remaining Problem: Authenticity of Public Keys |
|
|
154 | (1) |
|
6.2.3 Important Public-Key Algorithms |
|
|
155 | (1) |
|
6.2.4 Key Lengths and Security Levels |
|
|
156 | (1) |
|
6.3 Essential Number Theory for Public-Key Algorithms |
|
|
157 | (11) |
|
6.3.1 Euclidean Algorithm |
|
|
157 | (3) |
|
6.3.2 Extended Euclidean Algorithm |
|
|
160 | (4) |
|
6.3.3 Euler's Phi Function |
|
|
164 | (2) |
|
6.3.4 Fermat's Little Theorem and Euler's Theorem |
|
|
166 | (2) |
|
6.4 Discussion and Further Reading |
|
|
168 | (1) |
|
|
169 | (1) |
|
|
170 | (3) |
|
|
173 | (32) |
|
|
174 | (1) |
|
7.2 Encryption and Decryption |
|
|
174 | (1) |
|
7.3 Key Generation and Proof of Correctness |
|
|
175 | (4) |
|
7.4 Encryption and Decryption: Fast Exponentiation |
|
|
179 | (4) |
|
7.5 Speed-up Techniques for RSA |
|
|
183 | (4) |
|
7.5.1 Fast Encryption with Short Public Exponents |
|
|
183 | (1) |
|
7.5.2 Fast Decryption with the Chinese Remainder Theorem |
|
|
184 | (3) |
|
|
187 | (5) |
|
7.6.1 How Common Are Primes? |
|
|
187 | (1) |
|
|
188 | (4) |
|
7.7 RSA in Practice: Padding |
|
|
192 | (2) |
|
|
194 | (3) |
|
7.9 Implementation in Software and Hardware |
|
|
197 | (1) |
|
7.10 Discussion and Further Reading |
|
|
198 | (1) |
|
|
199 | (1) |
|
|
200 | (5) |
|
8 Public-Key Cryptosystems Based on the Discrete Logarithm Problem |
|
|
205 | (34) |
|
8.1 Diffie--Hellman Key Exchange |
|
|
206 | (2) |
|
|
208 | (8) |
|
|
208 | (2) |
|
|
210 | (4) |
|
|
214 | (2) |
|
8.3 The Discrete Logarithm Problem |
|
|
216 | (9) |
|
8.3.1 The Discrete Logarithm Problem in Prime Fields |
|
|
216 | (2) |
|
8.3.2 The Generalized Discrete Logarithm Problem |
|
|
218 | (1) |
|
8.3.3 Attacks Against the Discrete Logarithm Problem |
|
|
219 | (6) |
|
8.4 Security of the Diffie--Hellman Key Exchange |
|
|
225 | (1) |
|
8.5 The Elgamal Encryption Scheme |
|
|
226 | (6) |
|
8.5.1 From Diffie--Hellman Key Exchange to Elgamal Encryption |
|
|
226 | (1) |
|
8.5.2 The Elgamal Protocol |
|
|
227 | (2) |
|
8.5.3 Computational Aspects |
|
|
229 | (1) |
|
|
230 | (2) |
|
8.6 Discussion and Further Reading |
|
|
232 | (1) |
|
|
233 | (1) |
|
|
234 | (5) |
|
9 Elliptic Curve Cryptosystems |
|
|
239 | (20) |
|
9.1 How to Compute with Elliptic Curves |
|
|
240 | (6) |
|
9.1.1 Definition of Elliptic Curves |
|
|
241 | (1) |
|
9.1.2 Group Operations on Elliptic Curves |
|
|
242 | (4) |
|
9.2 Building a Discrete Logarithm Problem with Elliptic Curves |
|
|
246 | (3) |
|
9.3 Diffie--Hellman Key Exchange with Elliptic Curves |
|
|
249 | (2) |
|
|
251 | (1) |
|
9.5 Implementation in Software and Hardware |
|
|
252 | (1) |
|
9.6 Discussion and Further Reading |
|
|
253 | (2) |
|
|
255 | (1) |
|
|
256 | (3) |
|
|
259 | (34) |
|
|
260 | (4) |
|
10.1.1 Odd Colors for Cars, or: Why Symmetric Cryptography Is Not Sufficient |
|
|
260 | (1) |
|
10.1.2 Principles of Digital Signatures |
|
|
261 | (2) |
|
|
263 | (1) |
|
10.2 The RSA Signature Scheme |
|
|
264 | (6) |
|
10.2.1 Schoolbook RSA Digital Signature |
|
|
265 | (2) |
|
10.2.2 Computational Aspects |
|
|
267 | (1) |
|
|
267 | (3) |
|
10.3 The Elgamal Digital Signature Scheme |
|
|
270 | (7) |
|
10.3.1 Schoolbook Elgamal Digital Signature |
|
|
270 | (3) |
|
10.3.2 Computational Aspects |
|
|
273 | (1) |
|
|
274 | (3) |
|
10.4 The Digital Signature Algorithm (DSA) |
|
|
277 | (5) |
|
|
277 | (3) |
|
10.4.2 Computational Aspects |
|
|
280 | (1) |
|
|
281 | (1) |
|
10.5 The Elliptic Curve Digital Signature Algorithm (ECDSA) |
|
|
282 | (5) |
|
10.5.1 The ECDSA Algorithm |
|
|
282 | (3) |
|
10.5.2 Computational Aspects |
|
|
285 | (1) |
|
|
286 | (1) |
|
10.6 Discussion and Further Reading |
|
|
287 | (1) |
|
|
288 | (1) |
|
|
289 | (4) |
|
|
293 | (26) |
|
11.1 Motivation: Signing Long Messages |
|
|
294 | (2) |
|
11.2 Security Requirements of Hash Functions |
|
|
296 | (7) |
|
11.2.1 Preimage Resistance or One-Wayness |
|
|
297 | (1) |
|
11.2.2 Second Preimage Resistance or Weak Collision Resistance |
|
|
297 | (2) |
|
11.2.3 Collision Resistance and the Birthday Attack |
|
|
299 | (4) |
|
11.3 Overview of Hash Algorithms |
|
|
303 | (4) |
|
11.3.1 Dedicated Hash Functions: The MD4 Family |
|
|
304 | (1) |
|
11.3.2 Hash Functions from Block Ciphers |
|
|
305 | (2) |
|
11.4 The Secure Hash Algorithm SHA-1 |
|
|
307 | (5) |
|
|
308 | (1) |
|
|
309 | (3) |
|
|
312 | (1) |
|
11.5 Discussion and Further Reading |
|
|
312 | (1) |
|
|
313 | (2) |
|
|
315 | (4) |
|
12 Message Authentication Codes (MACs) |
|
|
319 | (12) |
|
12.1 Principles of Message Authentication Codes |
|
|
320 | (1) |
|
12.2 MACs from Hash Functions: HMAC |
|
|
321 | (4) |
|
12.3 MACs from Block Ciphers: CBC-MAC |
|
|
325 | (1) |
|
12.4 Galois Counter Message Authentication Code (GMAC) |
|
|
326 | (1) |
|
12.5 Discussion and Further Reading |
|
|
327 | (1) |
|
|
328 | (1) |
|
|
329 | (2) |
|
|
331 | (28) |
|
|
332 | (4) |
|
|
332 | (1) |
|
13.1.2 Key Freshness and Key Derivation |
|
|
332 | (2) |
|
13.1.3 The n2 Key Distribution Problem |
|
|
334 | (2) |
|
13.2 Key Establishment Using Symmetric-Key Techniques |
|
|
336 | (5) |
|
13.2.1 Key Establishment with a Key Distribution Center |
|
|
336 | (3) |
|
|
339 | (2) |
|
13.2.3 Remaining Problems with Symmetric-Key Distribution |
|
|
341 | (1) |
|
13.3 Key Establishment Using Asymmetric Techniques |
|
|
342 | (8) |
|
13.3.1 Man-in-the-Middle Attack |
|
|
342 | (2) |
|
|
344 | (3) |
|
13.3.3 Public-Key Infrastructures (PKI) and CAs |
|
|
347 | (3) |
|
13.4 Discussion and Further Reading |
|
|
350 | (2) |
|
|
352 | (1) |
|
|
353 | (6) |
References |
|
359 | (8) |
Index |
|
367 | |