From: schneier@chinet.chi.il.us (Bruce Schneier)
Subject: New Cryptography Book
Organization: Chinet - Public Access UNIX
Date: Wed, 16 Dec 1992 16:51:31 GMT

As most of you already know, I am in the middle of writing a cryptography
book for programmers.  It will be published by John Wiley & Sons sometime
in the Fall.

Some time ago I asked this newsgroup if there was anyone interested in
reading and commenting on the manuscript.  A number of people have said yes,
and I saved all of those responses.

The time has come to see which of those responses were serious.  By the end
of the week I will have finished my draft of the first main section of the
manuscript:  cryptographic protocols.  I am planning to E-Mail that section
and the introductory section to everyone who expressed interest last time,
and anyone who expresses interest now.

All comments, criticisms, additions, and complaints are welcome. 

Additionally, I am still looking for cryptography source code for inclusion
in the book and on the source code disk.  I am interested in C source for
N-Hash, SHA, DSS, and anything else you can think of.  I have code for DES,
Lucifer, MD4, MD5, LOKI91, REDOC-III (I think), Snefru, Khufu and Khafre (if
I can transfer it from the patent), RSA (I'm using RSAREF), and IDEA.  I am
also looking or code for pre-computer algorithms.

Anyway, if you have already responded to this request the last time it was
posted, you don't have to respond again.  I am hopeful that this book will
go a long way to bring cryptography out of academia and into the hands of
programmers.  Any help that would make this book better would be greatly
appreciated.

Bruce

Attached is the current table of contents (subject to change, of course):

                     CRYPTOGRAPHY PROGRAMMING
           PROTOCOLS, TECHNIQUES, AND ALGORITHMS IN C
                                         by  Bruce Schneier 

                        Table of Contents

I. Foundations
     A. Terminology
     B. Classical Cryptography
          1. Substitution Ciphers and Transposition Ciphers
          2. Simple XOR
          3. One-Time Pads
II. Cryptographic Protocols
     A. Secret-Key Cryptosystems
     B. One-Way Functions
     C. Public-Key Cryptography
     D. Digital Signatures
     E. Digital Signatures with Encryption
     F. Undeniable Digital Signatures
     G. Fail-Stop Digital Signatures
     H. One-Way Hash Functions
     I. Key Exchange
     J. Proofs of Identity
     K. Obfuscation
     L. Subliminal Channel
     M. Secret Splitting
     N. Secret Sharing
     O. Bit Commitment
     P. Fair Coin Tosses
     Q. Mental Poker
     R. Anonymous Key Distribution
     S. Zero-Knowledge Proofs
     T. Blind Signatures
     U. Oblivious Transfer
     V. Simultaneous Contract Signing
     W. Digital Certified Mail
     X. Voting by Computer
     Y. Secure Multiparty Computation
     Z. Secure Circuit Evaluation
     AA. Digital Cash
     AB. Anonymous Message Broadcast
     AC. Time Stamping Services
III.  Cryptographic Techniques
     A. Random Number Generation
          1. Pseudo-Random Bits
          2. Cryptographically-Secure Pseudo-Random Bits
          3. Random Bits
          4. Generating Numbers Non-Uniform Distributions
     B. Conventional Cryptosystems
     C. Block Ciphers
          1. Electronic Codebook Mode
          2. Multiple Encryption
          3. Block Replay
          4. Block Chaining Mode
          5. Cipher Block Chaining Mode
          6. Plaintext Cipher Block Chaining Mode
          7. Cipher Feedback Mode
          8. Output Feedback Mode
          9. Choosing a Cipher Mode
     D. Stream Ciphers
          1. Decimation Techniques
          2. Combining Techniques
          3. Output Feedback
          4. Counter Method
          5. Insertion Attack
          6. Cipher Feedback
     E. Using Block Ciphers as Stream Ciphers
     F. Stream Ciphers vs Block Ciphers
     G. Secret-Key Ciphers vs Public-Key Ciphers
     H. Key Length
     I. Key Management
          1. Generating Keys
          2. Transferring Keys
          3. Verifying Keys
          4. Storing Keys
          5. Lost Keys
          6. Lifetime of Keys
          7. Destroying Keys
     J. Encrypting Communications
     K. Encrypting Data for Storage
     L. Public-Key Cryptography vs Secret-Key Cryptography
     M. Implementations of Encryption
          1. Hardware
          2. Software
     N. File Erasure
     O. Implementations
          1. IBM Secret-Key Management Protocol
          2. MEMO
          3. ISDN
          4. Needham and Schroeder
          5. Kerberos
          6. ISO Authentication Framework
          7. Privacy Enhanced Mail (PEM)
          8. Pretty Good Privacy (PGP)
          9. LAN Protocol
IV. Cryptographic Algorithms
     A. Mathematical Background
          1. Information Theory
               a. Confusion and Diffusion
          2. Complexity Theory
               a. Complexity of Algorithms
               b. Complexity of Problems
               c. NP-Complete Problems
               d. NP-Complete Problems and Cryptography
          3. Number Theory
               a. Modular Arithmetic
               b. Inverses Modulo a Number
               c. Computing in a Galois Field
          4. Prime Numbers
          5. Discreet Logarithms in a Finite Field
     B. Block Algorithms
          1. Data Encryption Standard (DES)
          2. DES Variants
               a. Multiple DES
               b. DES with Independent Keys
               c. DES with Alternate S-Boxes
               d. GDES
          3. Lucifer
          4. Madryga
          5. FEAL N
          6. REDOC II
          7. LOKI
          8. Khufu and Khafre
          9. RC2 and RC4
          10. Bassomatic
          11. IDEA
          12. Using One-Way Hash Functions 
     C. One-Way Hash Functions
          1. MD4
          2. MD5
          3. MD2
          4. Snefru 
          5. N-Hash
          6. Secure Hash Algorithm (SHA)
          7. Using Block Ciphers
               a.Davies-Meyer
               b.Preneel-Bosselaers-Govaerts-Vandewalle
               c.Quisquater-Girault
               d.LOKI Double-Block
               e.First IDEA
               f.Tandem DM
               g.Abreast DM
          8. Using Stream Ciphers
     D. Public-Key Algorithms
          1. Diffie-Hellman
          2. Knapsack Algorithms
          3. RSA
          4. Pohig-Hellman
          5. Rabin
          6. Fiat-Shamir
          7. ElGamal
          8. Schnoor
          9. Digital Signature Algorithm (DSA)
          10. ENSIGN
          11. McEliece
          12. Cellular Automata
          13. Algorithms Based on the Theory of Elliptical Curves
     E. Secret Sharing Algorithms
          1. LaGrange Interpolating Polynomial Scheme
          2. Vector Scheme
          3. Asmuth-Bloom
          4. Karnin-Greene-Hellman
          5. Advances Threshold Schemes
     F. Prime Number Generation
          1. Solovay-Srassen
          2. Rabin-Miller
          3. Lehmann
     G. Pseudo-Random Bitstream Generators
          1. Linear Congruential Generators
          2. Linear Feedback Shift Registers
          3. Cellular Automata
     H. Cryptographically-Secure Pseudo-Random Number Generators
          1. Information-Theoretic Approach
          2. System-Theoretic Approach
          3. Complexity-Theoretic Approach
               a. RSA
               b. Blum Blum Shub
          4. Randomized Stream Ciphers
          5. Using Block Algorithms
          6. Using One-Way Hash Functions
     I. Real Random Number Generators
          1. Using Clock Oscillators
          2. Measuring Keyboard Latency
          3. Using Random Noise
     J. Special Algorithms for Protocols
          1. Probabilistic Encryption
          2. Zero-Knowledge Proofs of Identity
          3. Subliminal Channel
          4. Secure Multiparty Computation
          5. Fair Coin Tosses
          6. Secure Audio Teleconferencing
     K. Quantum Cryptography
V. Source Code Examples
     A. Vigenare Cipher
     B. Playfair Cipher
     C. LFSR Key Generator
     D. Cellular Automata Key Generator
     E. DES
     F. LOKI
     G. FEAL-N and FEAL-XN
     H. Khufu and Khafre
     I. RSA-REF
     J. DSA
     K. Prime Number Generation
     L. MD2
     M. MD4
     N. MD5
     O. SHA
     P. Snefru
     Q. N-Hash
VI. Afterward
VII.  Glossary
VIII. Bibliography and Further Reading