Preface |
|
v | |
Introduction |
|
xiii | |
|
1 An Introduction to Cryptography |
|
|
1 | (60) |
|
1.1 Simple Substitution Ciphers |
|
|
1 | (9) |
|
1.1.1 Cryptanalysis of Simple Substitution Ciphers |
|
|
4 | (6) |
|
1.2 Divisibility and Greatest Common Divisors |
|
|
10 | (9) |
|
|
19 | (7) |
|
1.3.1 Modular Arithmetic and Shift Ciphers |
|
|
23 | (1) |
|
1.3.2 The Fast Powering Algorithm |
|
|
24 | (2) |
|
1.4 Prime Numbers, Unique Factorization, and Finite Fields |
|
|
26 | (3) |
|
1.5 Powers and Primitive Roots in Finite Fields |
|
|
29 | (5) |
|
1.6 Cryptography Before the Computer Age |
|
|
34 | (3) |
|
1.7 Symmetric and Asymmetric Ciphers |
|
|
37 | (24) |
|
|
37 | (2) |
|
|
39 | (1) |
|
1.7.3 Symmetric Encryption of Encoded Blocks |
|
|
40 | (1) |
|
1.7.4 Examples of Symmetric Ciphers |
|
|
41 | (3) |
|
1.7.5 Random Bit Sequences and Symmetric Ciphers |
|
|
44 | (2) |
|
1.7.6 Asymmetric Ciphers Make a First Appearance |
|
|
46 | (1) |
|
|
47 | (14) |
|
2 Discrete Logarithms and Dime--Hellman |
|
|
61 | (56) |
|
2.1 The Birth of Public Key Cryptography |
|
|
61 | (3) |
|
2.2 The Discrete Logarithm Problem |
|
|
64 | (3) |
|
2.3 Diffie---Hellman Key Exchange |
|
|
67 | (3) |
|
2.4 The Elgamal Public Key Cryptosystem |
|
|
70 | (4) |
|
2.5 An Overview of the Theory of Groups |
|
|
74 | (3) |
|
2.6 How Hard Is the Discrete Logarithm Problem? |
|
|
77 | (4) |
|
2.7 A Collision Algorithm for the DLP |
|
|
81 | (2) |
|
2.8 The Chinese Remainder Theorem |
|
|
83 | (5) |
|
2.8.1 Solving Congruences with Composite Moduli |
|
|
86 | (2) |
|
2.9 The Pohlig-Hellman Algorithm |
|
|
88 | (6) |
|
2.10 Rings, Quotients, Polynomials, and Finite Fields |
|
|
94 | (23) |
|
2.10.1 An Overview of the Theory of Rings |
|
|
95 | (1) |
|
2.10.2 Divisibility and Quotient Rings |
|
|
96 | (2) |
|
2.10.3 Polynomial Rings and the Euclidean Algorithm |
|
|
98 | (4) |
|
2.10.4 Polynomial Ring Quotients and Finite Fields |
|
|
102 | (5) |
|
|
107 | (10) |
|
3 Integer Factorization and RSA |
|
|
117 | (76) |
|
3.1 Euler's Formula and Roots Modulo pq |
|
|
117 | (6) |
|
3.2 The RSA Public Key Cryptosystem |
|
|
123 | (3) |
|
3.3 Implementation and Security Issues |
|
|
126 | (2) |
|
|
128 | (9) |
|
3.4.1 The Distribution of the Set of Primes |
|
|
133 | (3) |
|
3.4.2 Primality Proofs Versus Probabilistic Tests |
|
|
136 | (1) |
|
3.5 Pollard's p -- 1 Factorization Algorithm |
|
|
137 | (4) |
|
3.6 Factorization via Difference of Squares |
|
|
141 | (9) |
|
3.7 Smooth Numbers and Sieves |
|
|
150 | (16) |
|
|
150 | (5) |
|
3.7.2 The Quadratic Sieve |
|
|
155 | (7) |
|
3.7.3 The Number Field Sieve |
|
|
162 | (4) |
|
3.8 The Index Calculus and Discrete Logarithms |
|
|
166 | (3) |
|
3.9 Quadratic Residues and Quadratic Reciprocity |
|
|
169 | (8) |
|
3.10 Probabilistic Encryption |
|
|
177 | (16) |
|
|
180 | (13) |
|
|
193 | (14) |
|
4.1 What Is a Digital Signature? |
|
|
193 | (3) |
|
4.2 RSA Digital Signatures |
|
|
196 | (2) |
|
4.3 Elgamal Digital Signatures and DSA |
|
|
198 | (9) |
|
|
203 | (4) |
|
5 Combinatorics, Probability, and Information Theory |
|
|
207 | (92) |
|
5.1 Basic Principles of Counting |
|
|
208 | (6) |
|
|
210 | (1) |
|
|
211 | (2) |
|
5.1.3 The Binomial Theorem |
|
|
213 | (1) |
|
|
214 | (14) |
|
5.2.1 Cryptanalysis of the Vigenere Cipher: Theory |
|
|
218 | (5) |
|
5.2.2 Cryptanalysis of the Vigenere Cipher: Practice |
|
|
223 | (5) |
|
|
228 | (18) |
|
5.3.1 Basic Concepts of Probability Theory |
|
|
228 | (5) |
|
|
233 | (3) |
|
5.3.3 Monte Carlo Algorithms |
|
|
236 | (2) |
|
|
238 | (6) |
|
|
244 | (2) |
|
5.4 Collision Algorithms and Meet-in-the-Middle Attacks |
|
|
246 | (7) |
|
5.4.1 The Birthday Paradox |
|
|
246 | (1) |
|
5.4.2 A Collision Theorem |
|
|
247 | (3) |
|
5.4.3 A Discrete Logarithm Collision Algorithm |
|
|
250 | (3) |
|
|
253 | (10) |
|
5.5.1 Abstract Formulation of Pollard's ρ Method |
|
|
254 | (5) |
|
5.5.2 Discrete Logarithms via Pollard's ρ Method |
|
|
259 | (4) |
|
|
263 | (15) |
|
|
263 | (6) |
|
|
269 | (6) |
|
5.6.3 Redundancy and the Entropy of Natural Language |
|
|
275 | (2) |
|
5.6.4 The Algebra of Secrecy Systems |
|
|
277 | (1) |
|
5.7 Complexity Theory and P Versus NP |
|
|
278 | (21) |
|
|
282 | (17) |
|
6 Elliptic Curves and Cryptography |
|
|
299 | (74) |
|
|
299 | (7) |
|
6.2 Elliptic Curves over Finite Fields |
|
|
306 | (4) |
|
6.3 The Elliptic Curve Discrete Logarithm Problem |
|
|
310 | (6) |
|
6.3.1 The Double-and-Add Algorithm |
|
|
312 | (3) |
|
6.3.2 How Hard Is the ECDLP? |
|
|
315 | (1) |
|
6.4 Elliptic Curve Cryptography |
|
|
316 | (5) |
|
6.4.1 Elliptic Diffie--Hellman Key Exchange |
|
|
316 | (3) |
|
6.4.2 Elliptic Elgamal Public Key Cryptosystem |
|
|
319 | (2) |
|
6.4.3 Elliptic Curve Signatures |
|
|
321 | (1) |
|
6.5 The Evolution of Public Key Cryptography |
|
|
321 | (3) |
|
6.6 Lenstra's Elliptic Curve Factorization Algorithm |
|
|
324 | (5) |
|
6.7 Elliptic Curves over F2 and over F2κ |
|
|
329 | (7) |
|
6.8 Bilinear Pairings on Elliptic Curves |
|
|
336 | (11) |
|
6.8.1 Points of Finite Order on Elliptic Curves |
|
|
337 | (1) |
|
6.8.2 Rational Functions and Divisors on Elliptic Curves |
|
|
338 | (2) |
|
|
340 | (3) |
|
6.8.4 An Efficient Algorithm to Compute the Weil Pairing |
|
|
343 | (3) |
|
|
346 | (1) |
|
6.9 The Weil Pairing over Fields of Prime Power Order |
|
|
347 | (9) |
|
6.9.1 Embedding Degree and the MOV Algorithm |
|
|
347 | (3) |
|
6.9.2 Distortion Maps and a Modified Weil Pairing |
|
|
350 | (2) |
|
6.9.3 A Distortion Map on y2 = x3 + x |
|
|
352 | (4) |
|
6.10 Applications of the Weil Pairing |
|
|
356 | (17) |
|
6.10.1 Tripartite Diffie--Hellman Key Exchange |
|
|
356 | (2) |
|
6.10.2 ID-Based Public Key Cryptosystems |
|
|
358 | (3) |
|
|
361 | (12) |
|
7 Lattices and Cryptography |
|
|
373 | (98) |
|
7.1 A Congruential Public Key Cryptosystem |
|
|
373 | (4) |
|
7.2 Subset-Sum Problems and Knapsack Cryptosystems |
|
|
377 | (7) |
|
7.3 A Brief Review of Vector Spaces |
|
|
384 | (4) |
|
7.4 Lattices: Basic Definitions and Properties |
|
|
388 | (7) |
|
7.5 Short Vectors in Lattices |
|
|
395 | (8) |
|
7.5.1 The Shortest and the Closest Vector Problems |
|
|
395 | (1) |
|
7.5.2 Hermite's Theorem and Minkowski's Theorem |
|
|
396 | (4) |
|
7.5.3 The Gaussian Heuristic |
|
|
400 | (3) |
|
|
403 | (4) |
|
7.7 Cryptosystems Based on Hard Lattice Problems |
|
|
407 | (2) |
|
7.8 The GGH Public Key Cryptosystem |
|
|
409 | (3) |
|
7.9 Convolution Polynomial Rings |
|
|
412 | (4) |
|
7.10 The NTRU Public Key Cryptosystem |
|
|
416 | (9) |
|
|
417 | (5) |
|
7.10.2 Mathematical Problems for NTRUEncrypt |
|
|
422 | (3) |
|
7.11 NTRUEncrypt as a Lattice Cryptosystem |
|
|
425 | (3) |
|
|
425 | (2) |
|
7.11.2 Quantifying the Security of an NTRU Lattice |
|
|
427 | (1) |
|
7.12 Lattice-Based Digital Signature Schemes |
|
|
428 | (8) |
|
7.12.1 The GGH Digital Signature Scheme |
|
|
428 | (2) |
|
7.12.2 Transcript Analysis |
|
|
430 | (1) |
|
7.12.3 Rejection Sampling |
|
|
431 | (2) |
|
7.12.4 Rejection Sampling Applied to an Abstract Signature Scheme |
|
|
433 | (1) |
|
7.12.5 The NTRU Modular Lattice Signature Scheme |
|
|
434 | (2) |
|
7.13 Lattice Reduction Algorithms |
|
|
436 | (14) |
|
7.13.1 Gaussian Lattice Reduction in Dimension 2 |
|
|
436 | (3) |
|
7.13.2 The LLL Lattice Reduction Algorithm |
|
|
439 | (9) |
|
7.13.3 Using LLL to Solve apprCVP |
|
|
448 | (1) |
|
7.13.4 Generalizations of LLL |
|
|
449 | (1) |
|
7.14 Applications of LLL to Cryptanalysis |
|
|
450 | (21) |
|
7.14.1 Congruential Cryptosystems |
|
|
451 | (1) |
|
7.14.2 Applying LLL to Knapsacks |
|
|
451 | (1) |
|
7.14.3 Applying LLL to GGH |
|
|
452 | (1) |
|
7.14.4 Applying LLL to NTRU |
|
|
453 | (1) |
|
|
454 | (17) |
|
8 Additional Topics in Cryptography |
|
|
471 | (32) |
|
|
472 | (2) |
|
8.2 Random Numbers and Pseudorandom Number |
|
|
474 | (3) |
|
8.3 Zero-Knowledge Proofs |
|
|
477 | (3) |
|
8.4 Secret Sharing Schemes |
|
|
480 | (1) |
|
8.5 Identification Schemes |
|
|
481 | (1) |
|
8.6 Padding Schemes and the Random Oracle Model |
|
|
482 | (3) |
|
8.7 Building Protocols from Cryptographic Primitives |
|
|
485 | (2) |
|
8.8 Blind Digital Signatures, Digital Cash, and Bitcoin |
|
|
487 | (3) |
|
8.9 Homomorphic Encryption |
|
|
490 | (4) |
|
8.10 Hyperelliptic Curve Cryptography |
|
|
494 | (3) |
|
|
497 | (2) |
|
8.12 Modern Symmetric Cryptosystems: DES and AES |
|
|
499 | (4) |
List of Notation |
|
503 | (4) |
References |
|
507 | (10) |
Index |
|
517 | |