home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: sci.crypt
- Path: sparky!uunet!zaphod.mps.ohio-state.edu!pacific.mps.ohio-state.edu!linac!att!mcdchg!laidbak!tellab5!chinet!schneier
- From: schneier@chinet.chi.il.us (Bruce Schneier)
- Subject: New Cryptography Book
- Message-ID: <BzD2tw.Kvo@chinet.chi.il.us>
- Organization: Chinet - Public Access UNIX
- Date: Wed, 16 Dec 1992 16:51:31 GMT
- Lines: 246
-
- 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
-