Chapters 2 through 6 (Part I) describe cryptographic protocols: what people
can do with cryptography. The protocols range from the simple (sending
encrypted messages from one person to another) to the complex (flipping a
coin over the telephone) to the esoteric (secure and anonymous digital money
exchange). Some of these protocols are obvious; others are almost amazing.
Cryptography can solve a lot of problems that most people never realized it
could.
Chapters 7 through 10 (Part II) discuss cryptographic techniques. All four
chapters in this section are important for even the most basic uses of
cryptography. Chapters 7 and 8 are about keys: how long a key should be in
order to be secure, how to generate keys, how to store keys, how to dispose of
keys, and so on. Key management is the hardest part of cryptography and often
the Achilles’ heel of an otherwise secure system. Chapter 9 discusses different
ways of using cryptographic algorithms, and Chapter 10 gives the odds and
ends of algorithms: how to choose, implement, and use algorithms.
Chapters 11 through 23 (Part III) list algorithms. Chapter 11 provides the
mathematical background. This chapter is only required if you are interested in
public–key algorithms. If you just want to implement DES (or something
similar), you can skip ahead. Chapter 12 discusses DES: the algorithm, its
history, its security, and some variants. Chapters 13, 14, and 15 discuss other
block algorithms; if you want something more secure than DES, skip to the
section on IDEA and triple–DES. If you want to read about a bunch of
algorithms, some of which may be more secure than DES, read the whole
chapter. Chapters 16 and 17 discuss stream algorithms. Chapter 18 focuses on
one–way hash functions; MD5 and SHA are the most common, although I
discuss many more. Chapter 19 discusses public–key encryption algorithms,
Chapter 20 discusses public–key digital signature algorithms, Chapter 21
discusses public–key identification algorithms, and Chapter 22 discusses
public–key key exchange algorithms. The important algorithms are RSA,
DSA, Fiat–Shamir, and Diffie–Hellman, respectively. Chapter 23 has more
esoteric public–key algorithms and protocols; the math in this chapter is quite
complicated, so wear your seat belt.
Chapters 24 and 25 (Part IV) turn to the real world of cryptography. Chapter
24 discusses some of the current implementations of these algorithms and
protocols, while Chapter 25 touches on some of the political issues
surrounding cryptography. These chapters are by no means intended to be
comprehensive.
Also included are source code listings for 10 algorithms discussed in Part III. I
was unable to include all the code I wanted to due to space limitations, and
cryptographic source code cannot otherwise be exported. (Amazingly enough,
the State Department allowed export of the first edition of this book with
source code, but denied export for a computer disk with the exact same source
code on it. Go figure.) An associated source code disk set includes much more
source code than I could fit in this book; it is probably the largest collection of
cryptographic source code outside a military institution. I can only send source
code disks to U.S. and Canadian citizens living in the U.S. and Canada, but
hopefully that will change someday. If you are interested in implementing or
playing with the cryptographic algorithms in this book, get the disk. See the