Article View: sci.crypt
Article #1235New Cryptography Book: Request for Code/Editors
From: Bruce Schneier
Date: Fri, 02 Oct 1992 02:02
Date: Fri, 02 Oct 1992 02:02
244 lines
9232 bytes
9232 bytes
People:
I am writing a cryptography book: CRYPTOGRAPHY IN C: APPLICATIONS,
ALGORITHMS, AND SOURCE CODE. The book will be published by John
Wiley & Sons next Autumn. I have shelves of mathematical texts,
conference proceedings, graduate theses and monographs. This book
will be different from all of them. It will be a book written for
programmers, not mathematicians: a lot of applications and
examples, and minimal number theory.
I am looking for two things from the people of this newsgroup:
source code examples, and people willing to read and edit the
manuscript.
Source Code Examples. I am looking for C source code (preferably
well-documented, but I'll take what I can get) for the following
algorithms:
Vigenare.
Playfair.
Enigma. Has anyone recreated this in software?
DES. I already have one DES, but I am looking for better/faster
implementations. I am also interested in DES variants: GDES,
DES with variable S-Boxes, etc.
Lucifer. I remember this being on-line somewhere.
FEAL. I have a paper copy of the reference implementation from
NTT. Has anyone typed it in and verified that it works.
LOKI. Both the original and LOKI-91.
REDOC II.
Khufu and Khafre. The Xerox patent has the listing of a C
implementation of these algorithms. Does anyone have them on-
line?
Public-key anything. I hope to get RSA's permission to publish
RSAREF, but would like code for such things as a knapsack
cryptosystem, Fiat-Shamir, El Gamal, Schnoor, elliptic-curve
something, E-Sign, etc.
NIST's Digital Signature Standard.
Prime number generators: Rabin-Miller, Solovay-Strassen, Lehmann,
etc.
Factorization programs: Pollard's Monte Carlo algorithm, the
continued fraction algorithm, Pomerance's quadratic sieve,
etc.
The Blum-Blum-Shub Pseudo-Random Number Generator, and the
probabilistic encryption algorithm based on it.
Any zero-knowledge implementations of anything.
Any threshold scheme.
Anything else not on this list that would be a good idea to
include.
I already have code for DES, SHA, IDEA, MD4, MD5, and Snefru. I
will include much from PGP (possibly the whole thing if the various
lawyers think it is a good idea).
Editors: I am also looking for people who are willing to read and
edit the manuscript in January. I am interested in people who have
knowledge of cryptography, but also in people who are programmers
with an interest (my target audience).
I would appreciate the help of anyone who is interested. This is
an exciting project, and I hope the results will be a source book
in the field.
Attached is the current incarnation of the table of contents.
Actual table of contents will probably be different.
*****************************************************************
CRYPTOGRAPHY IN C:
APPLICATIONS, ALGORITHMS, AND SOURCE CODE
by Bruce Schneier
Table of Contents
I. Introduction
A. Terminology
II. Classical Cryptography
A. Substitution Ciphers and Transposition Ciphers
B. One-Time Pads
III. Cryptographic Protocols
A. Symmetric Cryptosystems
B. One-Way Functions
C. Public-Key Cryptography
D. One-Way Hash Functions
E. Digital Signatures
F. Key Exchange
G. Proofs of Identity
H. Secret Splitting
I. Secret Sharing
J. Undeniable Digital Signatures
K. Fail-Stop Digital Signatures
L. Bit Commitment
M. Fair Coin Tosses
N. Mental Poker
O. Anonymous Key Distribution
P. Zero-Knowledge Proofs
Q. Blind Signatures
R. Oblivious Transfer
S. Simultaneous Contract Signing
T. Digital Certified Mail
U. Voting by Computer
V. Secure Multiparty Computation
W. Secure Circuit Evaluation
X. Digital Cash
Y. Anonymous Message Broadcast
Z. Time Stamping Services
IV. Cryptographic Techniques
A. Random Number Generation
1. Pseudo-Random Bits
2. Cryptographically-Secure Pseudo-Random Bits
3. Random Bits
4. Generating Non-Uniform Distributions
B. Conventional Cryptosystems
C. Stream Ciphers
1. Decimation Techniques
2. Combining Techniques
3. Output Feedback
4. Counter Method
5. Insertion Attack
6. Cipher Feedback
D. Block Ciphers
1. Electronic Codebook Mode
2. Block Replay
3. Block Chaining Mode
4. Cipher Block Chaining Mode
5. Output Feedback Mode
6. Cipher Feedback Mode
7. Choosing a Cipher Mode
E. Using Block Ciphers as Stream Ciphers
F. Stream Ciphers vs Block Ciphers
G. Key Management
1. Generating Keys
2. Transferring Keys
3. Verifying Keys
4. Storing Keys
5. Lost Keys
6. Lifetime of Keys
7. Destroying Keys
8. Sample Key Management System
H. Encrypting Communications
I. Encrypting Data for Storage
J. Implementations of Encryption
1. Hardware
2. Software
K. File Erasure
V. Cryptographic Algorithms
A. Mathematical Background
1. Information Theory
a. Confusion and Diffusion
2. Complexity Theory
a. NP-Complete Problems
3. Number Theory
a. Prime Numbers
b. Modular Arithmetic
c. Modular Exponentiation and Discreet Logarithms
d. Inverses Modulo a Number
e. Chinese Remainder Theorem
f. Computing in a Galois Field
B. Block Algorithms
1. Data Encryption Standard (DES)
2. DES Variants
a. Double DES
b. Triple DES
c. DES with Independent Keys
d. DES with Alternate S-Boxes
e. GDES
3. Lucifer
4. Madryga
5. FEAL N
6. REDOC II
7. LOKI
8. Khufu and Khafre
9. RC2
10. RC4
11. Bassomatic
12. IDEA
13. Using One-Way Hash Functions
C. One-Way Hash Functions
1. MD2
2. MD4
3. MD5
4. Snefru
5. N-Hash
6. Secure Hash Algorithm (SHA)
7. Using Block Algorithms
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 Algorithms
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. Algorithms Based on the Discreet Log Program
13. Algorithms Based on the Theory of Elliptical Curves
E. Secret Sharing Algorithms
1. LaGrange Interpolating Polynomial Scheme
2. Vector Scheme
3. Congruence Class Scheme
F. Prime Number Generation
1. Solovay-Srassen
2. Rabin-Miller
3. Lehmann
G. Pseudo-Random Bitstream Generators
1. Linear Feedback Shift Registers
2. Linear Congruential Generators
3. Cellular Automata
H. Cryptographically-Secure Pseudo-Random Number Generators
1. Using Stream Algorithms
2. Using Block Algorithms
3. Using One-Way Hash Functions
4. Using RSA
5. Blum Blum Shub
I. Real Random Number Generators
1. Measuring Keyboard Latency
2. Using Random Noise
3. Using Clock Oscillators
J. Probabilistic Encryption
K. Zero-Knowledge Proofs of Identity
L. Quantum Cryptography
VI. Source Code Examples
VII. Afterward
VIII. Glossary
IX. Bibliography and Further Reading
*****************************************************************************
* Bruce Schneier 2,000,000,000,000,000,000,000,000,002,000,000,000
* Counterpane Systems 000,000,000,000,002,000,000,002,293
* schneier@chinet.chi.il.us The largest prime number...alphabetically!
* (708) 524-9461 Two vigintillion, two undecillion, two trillion,
* 730 Fair Oaks Ave. two thousand, two hundred and ninety three.
* Oak Park, IL 60302
*****************************************************************************
Technical Details
Message-ID:
<BvH1oG.1wF@chinet.chi.il.us>Path:
arc1-ca.pugleaf.net!sparky!uunet!wupost!gumby!destroyer!ncar!uchinews!machine!chinet!schneierShow Full Headers
Complete Article Headers
Newsgroups: sci.crypt Path: arc1-ca.pugleaf.net!sparky!uunet!wupost!gumby!destroyer!ncar!uchinews!machine!chinet!schneier From: schneier@chinet.chi.il.us (Bruce Schneier) Subject: New Cryptography Book: Request for Code/Editors Message-ID: <BvH1oG.1wF@chinet.chi.il.us> Organization: Chinet - Public Access UNIX Date: Fri, 2 Oct 1992 02:02:39 GMT Lines: 244