Foreword |
|
xi | |
Preface |
|
xiii | |
Acknowledgments |
|
xv | |
About this book |
|
xvii | |
About the author |
|
xix | |
About the cover illustration |
|
xx | |
|
|
1 | (3) |
|
|
4 | (12) |
|
|
5 | (1) |
|
2.2 Types of cryptography |
|
|
6 | (2) |
|
2.3 Symmetric vs. asymmetric cryptography |
|
|
8 | (1) |
|
2.4 Block ciphers vs. stream ciphers |
|
|
9 | (1) |
|
2.5 Mechanical vs. digital |
|
|
9 | (3) |
|
2.6 Why choose Secret Key? |
|
|
12 | (2) |
|
|
14 | (2) |
|
|
16 | (7) |
|
|
16 | (1) |
|
3.2 Functions and operators |
|
|
17 | (1) |
|
|
18 | (1) |
|
|
19 | (1) |
|
|
20 | (1) |
|
|
21 | (2) |
|
4 Cryptographer's toolbox |
|
|
23 | (11) |
|
|
24 | (1) |
|
|
25 | (1) |
|
|
25 | (1) |
|
|
26 | (1) |
|
|
27 | (2) |
|
4.5 Random number generators |
|
|
29 | (2) |
|
|
30 | (1) |
|
4.6 Useful combinations, wasteful combinations |
|
|
31 | (3) |
|
|
32 | (2) |
|
|
34 | (30) |
|
|
35 | (4) |
|
|
39 | (3) |
|
|
42 | (1) |
|
5.4 Polyalphabetic substitution |
|
|
42 | (1) |
|
|
43 | (1) |
|
|
44 | (3) |
|
|
47 | (2) |
|
5.8 Index of Coincidence, again |
|
|
49 | (1) |
|
5.9 Solving a polyalphabetic cipher |
|
|
49 | (6) |
|
|
49 | (3) |
|
Solving a Vigenere cipher |
|
|
52 | (2) |
|
Solving a general polyalphabetic cipher |
|
|
54 | (1) |
|
|
55 | (2) |
|
|
57 | (2) |
|
5.12 Simulated rotor machines |
|
|
59 | (5) |
|
|
60 | (1) |
|
|
61 | (1) |
|
|
62 | (2) |
|
|
64 | (13) |
|
|
64 | (1) |
|
|
65 | (1) |
|
|
66 | (2) |
|
6.4 Homophonic substitution |
|
|
68 | (2) |
|
|
69 | (1) |
|
6.5 Bigram and trigram substitution |
|
|
70 | (1) |
|
6.6 Hiding messages in images |
|
|
70 | (2) |
|
|
72 | (2) |
|
6.8 Merging multiple messages |
|
|
74 | (1) |
|
6.9 Embedding a message in a file |
|
|
75 | (2) |
|
|
77 | (17) |
|
|
77 | (2) |
|
7.2 Columnar transposition |
|
|
79 | (5) |
|
|
82 | (1) |
|
|
83 | (1) |
|
7.3 Double columnar transposition |
|
|
84 | (1) |
|
7.4 Cycling columnar transposition |
|
|
85 | (1) |
|
7.5 Random number transposition |
|
|
86 | (2) |
|
7.6 Selector transposition |
|
|
88 | (1) |
|
|
88 | (3) |
|
7.8 Halving transposition |
|
|
91 | (1) |
|
|
92 | (2) |
|
|
94 | (6) |
|
|
96 | (1) |
|
8.2 Ciphertext-only solution |
|
|
97 | (3) |
|
|
100 | (24) |
|
|
100 | (1) |
|
|
101 | (5) |
|
Solving a Play fair cipher |
|
|
104 | (1) |
|
Strengthening a Playfair cipher |
|
|
104 | (2) |
|
|
106 | (1) |
|
|
107 | (2) |
|
|
109 | (2) |
|
|
111 | (3) |
|
|
113 | (1) |
|
|
114 | (1) |
|
|
114 | (1) |
|
|
115 | (1) |
|
|
116 | (2) |
|
|
118 | (1) |
|
9.12 Hexadecimal fractionation |
|
|
119 | (1) |
|
9.13 Bitwise fractionation |
|
|
120 | (2) |
|
|
121 | (1) |
|
|
122 | (1) |
|
|
123 | (1) |
|
10 Variable-length fractionation |
|
|
124 | (22) |
|
|
125 | (1) |
|
|
125 | (3) |
|
|
128 | (1) |
|
10.4 Huffman Substitution |
|
|
129 | (2) |
|
|
131 | (6) |
|
|
133 | (1) |
|
|
134 | (2) |
|
|
136 | (1) |
|
|
136 | (1) |
|
10.6 Fractionation in other bases |
|
|
137 | (1) |
|
|
137 | (9) |
|
|
137 | (3) |
|
|
140 | (3) |
|
Adaptive arithmetic coding |
|
|
143 | (3) |
|
|
146 | (23) |
|
11.1 Substitution-permutation network |
|
|
147 | (1) |
|
11.2 Data Encryption Standard (DES) |
|
|
148 | (5) |
|
|
150 | (1) |
|
|
150 | (1) |
|
|
151 | (1) |
|
|
152 | (1) |
|
11.3 Matrix multiplication |
|
|
153 | (1) |
|
11.4 Matrix multiplication |
|
|
154 | (1) |
|
11.5 Advanced Encryption Standard (AES) |
|
|
155 | (1) |
|
11.6 Fixed vs. keyed substitution |
|
|
156 | (1) |
|
|
157 | (3) |
|
|
158 | (1) |
|
Involutory polyalphabetic substitution |
|
|
158 | (1) |
|
|
158 | (1) |
|
|
159 | (1) |
|
Example, poly triple flip |
|
|
160 | (1) |
|
11.8 Variable-length substitutions |
|
|
160 | (1) |
|
|
161 | (2) |
|
|
163 | (4) |
|
|
165 | (1) |
|
|
165 | (1) |
|
|
165 | (1) |
|
|
165 | (1) |
|
|
166 | (1) |
|
|
166 | (1) |
|
|
166 | (1) |
|
Chaining variable-length blocks |
|
|
166 | (1) |
|
11.11 Strengthening a block cipher |
|
|
167 | (2) |
|
12 Principles for secure encryption |
|
|
169 | (28) |
|
|
169 | (1) |
|
|
170 | (2) |
|
|
171 | (1) |
|
|
172 | (17) |
|
|
174 | (3) |
|
|
177 | (3) |
|
|
180 | (1) |
|
|
181 | (3) |
|
|
184 | (1) |
|
|
185 | (1) |
|
|
185 | (3) |
|
|
188 | (1) |
|
|
189 | (3) |
|
|
192 | (5) |
|
|
197 | (26) |
|
|
198 | (1) |
|
|
199 | (1) |
|
13.3 Multiplicative congruential generator |
|
|
200 | (3) |
|
13.4 Linear congruential generator |
|
|
203 | (1) |
|
13.5 Chained exclusive-OR generator |
|
|
204 | (1) |
|
13.6 Chained addition generator |
|
|
205 | (1) |
|
13.7 Shift and XOR generator |
|
|
206 | (1) |
|
|
207 | (1) |
|
|
208 | (1) |
|
13.10 Linear feedback shift registers |
|
|
208 | (2) |
|
13.11 Estimating the period |
|
|
210 | (1) |
|
13.12 Strengthening a generator |
|
|
211 | (1) |
|
13.13 Combining generators |
|
|
212 | (3) |
|
13.14 True random numbers |
|
|
215 | (2) |
|
|
216 | (1) |
|
|
216 | (1) |
|
13.15 Refreshing the random bytes |
|
|
217 | (2) |
|
13.16 Synchronized key streams |
|
|
219 | (1) |
|
|
220 | (3) |
|
|
223 | (13) |
|
|
224 | (2) |
|
|
226 | (2) |
|
|
227 | (1) |
|
|
227 | (1) |
|
|
227 | (1) |
|
|
228 | (1) |
|
14.4 Diffie-Hellman key exchange |
|
|
229 | (7) |
|
Constructing large primes, old |
|
|
230 | (1) |
|
Constructing large primes, new |
|
|
231 | (5) |
|
|
236 | (28) |
|
|
237 | (2) |
|
15.2 Transposition matrix |
|
|
239 | (1) |
|
|
240 | (2) |
|
15.4 Hill cipher, computer versions |
|
|
242 | (3) |
|
15.5 Large integer multiplication |
|
|
245 | (2) |
|
Multiplying and dividing congruences |
|
|
246 | (1) |
|
15.6 Solving a linear congruence |
|
|
247 | (4) |
|
|
248 | (1) |
|
|
248 | (1) |
|
|
249 | (1) |
|
|
250 | (1) |
|
15.7 Large integer ciphers |
|
|
251 | (2) |
|
15.8 Small integer multiplication |
|
|
253 | (1) |
|
15.9 Multiplication modulo P |
|
|
254 | (2) |
|
|
256 | (1) |
|
|
257 | (1) |
|
15.12 Matrices over a ring |
|
|
258 | (1) |
|
15.13 Constructing a ring |
|
|
259 | (3) |
|
|
261 | (1) |
|
|
261 | (1) |
|
15.14 Finding an invertible matrix |
|
|
262 | (2) |
|
|
264 | (5) |
|
|
266 | (1) |
|
|
266 | (1) |
|
|
267 | (2) |
|
|
267 | (1) |
|
|
267 | (1) |
|
|
268 | (1) |
|
|
268 | (1) |
|
|
269 | (9) |
|
16.4 Matrix three pass protocol |
|
|
270 | (6) |
|
Commutative family of matrices |
|
|
271 | (1) |
|
|
271 | (1) |
|
|
272 | (1) |
|
|
272 | (1) |
|
|
273 | (1) |
|
Solving bilinear equations |
|
|
273 | (2) |
|
|
275 | (1) |
|
|
275 | (1) |
|
16.5 Two-sided three pass protocol |
|
|
276 | (2) |
|
|
278 | (4) |
|
|
279 | (3) |
|
|
282 | (17) |
|
|
283 | (1) |
|
|
284 | (1) |
|
|
285 | (1) |
|
|
285 | (1) |
|
18.5 Quantum 3-stage protocol |
|
|
286 | (1) |
|
18.6 Quantum key exchange |
|
|
286 | (1) |
|
|
287 | (1) |
|
|
287 | (3) |
|
|
288 | (1) |
|
|
288 | (1) |
|
|
289 | (1) |
|
|
289 | (1) |
|
|
290 | (1) |
|
|
290 | (3) |
|
|
291 | (1) |
|
|
291 | (1) |
|
|
292 | (1) |
|
18.10 Quantum simulated annealing |
|
|
293 | (1) |
|
|
294 | (1) |
|
|
294 | (5) |
|
|
294 | (1) |
|
|
295 | (1) |
|
Ultrasubstitution cipher US-A |
|
|
296 | (1) |
|
|
297 | (2) |
Fun pages |
|
299 | (3) |
Challenge |
|
302 | (2) |
Epilogue |
|
304 | (3) |
Index |
|
307 | |