The book can be used at several different levels. Those interested in learning how to encipher messages using a variety of symmetric and asymmetric schemes will learn those techniques in this volume. Those interested in learning the mathematical foundations of these techniques will learn how and why the enciphering schemes actually work. And those who are looking for some challenging computer programming exercises will also find exercises in this book to keep them busy.

### Table of Contents

Preface

1. Monoalphabetic Substitution Ciphers

2. Polyalphabetic Substitution Ciphers

3. Polygraphic Substitutio Systems

4. Public Key Cryptography

Appendix A: ASCII Code

Appendix B: Taxonomy of Cryptography

Appendix C: Answers to Even-Numbered Problems

### Excerpt: Ch. 4 Public Key Cryptography (p. 141)

A common characteristic of all the cryptographic schemes so far considered is their *symmetric* nature—each scheme required the sender and the receiver of the message to share a bit of knowledge, namely the *key* used to encipher and decipher the text. In recent years, *asymmetric* cryptographic systems have been proposed. In such systems, rather than the sender and receiver sharing a common key, each participant has a *public key* **E** (for enciphering) and a private key **D** (for deciphering). The public and private keys of the sender are in no way related to the public and private keys of the receiver of the message. In fact, the public keys of the participants may well be published in a telephone directory format! For this reason, a scheme such as this is known as a public key scheme.

Suppose Beth wants to send Stephanie a message *m* using a public key system. Here's how this might work:

- Beth looks up Stephanie's public key
*E*_{s} in the directory and enciphers *m* using this key—the result is a ciphertext message *E*_{s}(*m*).
- Upon receiving the ciphertext, Stephanie deciphers it using her private key
*D*_{s} and arrives at the plaintext message *D*_{s}(*E*_{s}(*m*)).
- If the system is correctly designed,
*D*_{s}(*E*_{s}(*m*)) = *m* and so Stephanie now possesses Beth's original plaintext message. Note that Beth's public and private keys have no role to play in this transaction.

Should Molly intercept the encrypted message *E*_{s}(*m*), she would need to discover Stephanie's private key *D*_{s} in order to decipher the message. Molly wouldn't be able to persuade Beth to reveal this key—Beth herself is clueless as to its identity!

Of all the implementations of public key cryptographic systems, one of the more popular is the so-called RSA algorithm, named for its inventors Ronald Rivest, Adi Shamir and Leonard Adelman. In this chapter we will examine the workings of this system and answer questions including:

- Where do these public and private keys come from?
- What is the nature of these keys
- How do you assure that
*D*_{s}(*E*_{s}(*m*)) = *m*?

The answers to some of these and other questions lie in the theory of numbers. In particular, a 350 year-old theorem of Pierre de Fermat (whose name popped up in Section 2.3 in connection with probability) holds the solutions to these mysteries.

### About the Author

**Robert Edward Lewand** received his PhD in mathematics from the University of Virginia. He is the co-author of two books: *Expert System Development *and* Intelligent Systems Design*. He has delivered numerous talks and published extensively in professional journals largely in the areas of expert systems and artificial intelligence. He has been the recipient of several awards: Outstanding Teacher in the Faculty of Science (Goucher College, 1980), Fulbright Faculty Exchange Award (1987), Outstanding Scholarship Award (Goucher College, 1989), Caroline Doebler Bruckerl Award for Outstanding Faculty Member (Goucher College, 1999), and the John Smith Award for Distinguished College or University Teaching (Maryland-Virginia-District of Columbia Section of the Mathematical Association of America, 2002).