Preface |
|
v | |
Introduction |
|
xi | |
1 An Introduction to Cryptography |
|
1 | |
|
1.1 Simple substitution ciphers |
|
|
1 | |
|
1.2 Divisibility and greatest common divisors |
|
|
10 | |
|
|
19 | |
|
1.4 Prime numbers, unique factorization, and finite fields |
|
|
26 | |
|
1.5 Powers and primitive roots in finite fields |
|
|
29 | |
|
1.6 Cryptography before the computer age |
|
|
34 | |
|
1.7 Symmetric and asymmetric ciphers |
|
|
36 | |
|
|
47 | |
2 Discrete Logarithms and DiffieHellman |
|
59 | |
|
2.1 The birth of public key cryptography |
|
|
59 | |
|
2.2 The discrete logarithm problem |
|
|
62 | |
|
2.3 DiffieHellman key exchange |
|
|
65 | |
|
2.4 The EIGamal public key cryptosystem |
|
|
68 | |
|
2.5 An overview of the theory of groups |
|
|
72 | |
|
2.6 How hard is the discrete logarithm problem? |
|
|
75 | |
|
2.7 A collision algorithm for the DLP |
|
|
79 | |
|
2.8 The Chinese remainder theorem |
|
|
81 | |
|
2.9 The PollligHellman algorithm |
|
|
86 | |
|
2.10 Rings, quotients, polynomials, and finite fields |
|
|
92 | |
|
|
105 | |
3 Integer Factorization and RSA |
|
113 | |
|
3.1 Euler's formula and roots modulo pq |
|
|
113 | |
|
3.2 The RSA public key cryptosystem |
|
|
119 | |
|
3.3 Implementation and security issues |
|
|
122 | |
|
|
124 | |
|
3.5 Pollard's p 1 factorization algorithm |
|
|
133 | |
|
3.6 Factorization via difference of squares |
|
|
137 | |
|
3.7 Smooth numbers and sieves |
|
|
146 | |
|
3.8 The index calculus and discrete logarithms |
|
|
162 | |
|
3.9 Quadratic residues and quadratic reciprocity |
|
|
165 | |
|
3.10 Probabilistic encryption |
|
|
172 | |
|
|
176 | |
4 Combinatorics, Probability, and Information Theory |
|
189 | |
|
4.1 Basic principles of counting |
|
|
190 | |
|
|
196 | |
|
|
210 | |
|
4.4 Collision algorithms and meet-in-the-middle attacks |
|
|
227 | |
|
|
234 | |
|
|
243 | |
|
4.7 Complexity Theory and P versus NP |
|
|
258 | |
|
|
262 | |
5 Elliptic Curves and Cryptography |
|
279 | |
|
|
279 | |
|
5.2 Elliptic curves over finite fields |
|
|
286 | |
|
5.3 The elliptic curve discrete logarithm problem |
|
|
290 | |
|
5.4 Elliptic curve cryptography |
|
|
296 | |
|
5.5 The evolution of public key cryptography |
|
|
301 | |
|
5.6 Lenstra's elliptic curve factorization algorithm |
|
|
303 | |
|
5.7 Elliptic curves over F2 and over F2k |
|
|
308 | |
|
5.8 Bilinear pairings on elliptic curves |
|
|
315 | |
|
5.9 The Weil pairing over fields of prime power order |
|
|
325 | |
|
5.10 Applications of the Weil pairing |
|
|
334 | |
|
|
339 | |
6 Lattices and Cryptography |
|
349 | |
|
6.1 A congruential public key cryptosystem |
|
|
349 | |
|
6.2 Subset-sum problems and knapsack cryptosystems |
|
|
352 | |
|
6.3 A brief review of vector spaces |
|
|
359 | |
|
6.4 Lattices: Basic definitions and properties |
|
|
363 | |
|
6.5 Short vectors in lattices |
|
|
370 | |
|
|
379 | |
|
6.7 Cryptosystems based on hard lattice problems |
|
|
383 | |
|
6.8 The GGH public key cryptosystem |
|
|
384 | |
|
6.9 Convolution polynomial rings |
|
|
387 | |
|
6.10 The NTRU public key cryptosystem |
|
|
392 | |
|
6.11 NTRU as a lattice cryptosystem |
|
|
400 | |
|
6.12 Lattice reduction algorithms |
|
|
403 | |
|
6.13 Applications of LLL to cryptanalysis |
|
|
418 | |
|
|
422 | |
7 Digital Signatures |
|
437 | |
|
7.1 What is a digital signature? |
|
|
437 | |
|
7.2 RSA digital signatures |
|
|
440 | |
|
7.3 ElGamal digital signatures and DSA |
|
|
442 | |
|
7.4 GGH lattice-based digital signatures |
|
|
447 | |
|
7.5 NTRU digital signatures |
|
|
450 | |
|
|
458 | |
8 Additional Topics in Cryptography |
|
465 | |
|
|
466 | |
|
8.2 Random numbers and pseudorandom number generators |
|
|
468 | |
|
8.3 Zero-knowledge proofs |
|
|
470 | |
|
8.4 Secret sharing schemes |
|
|
473 | |
|
8.5 Identification schemes |
|
|
474 | |
|
8.6 Padding schemes and the random oracle model |
|
|
476 | |
|
8.7 Building protocols from cryptographic primitives |
|
|
479 | |
|
8.8 Hyperelliptic curve cryptography |
|
|
480 | |
|
|
483 | |
|
8.10 Modern symmetric cryptosystems: DES and AES |
|
|
485 | |
List of Notation |
|
489 | |
References |
|
493 | |
Index |
|
501 | |