Preface
1 Overview
1.1 Secure Communications
1.2 Cryptographic Applications
2 Classical Cryptosystems
2.1 Shift Ciphers
2.2 Affine Ciphers
2.3 The Vigenere Cipher
2.4 Substitution Ciphers
2.5 Sherlock Holmes
2.6 The Playfair and ADFGX Ciphers
2.7 Block Ciphers
2.8 Binary Numbers and ASCII
2.9 One-Time Pads
2.10 Pseudo-random Bit Generation
2.11 Linear Feedback Shift Register Sequences
2.12 Enigma
2.13 Exercises
2.14 Computer Problems
3 Basic Number Theory
3.1 Basic Notions
3.2 Solving ax + by = d
3.3 Congruences
3.4 The Chinese Remainder Theorem
3.5 Modular Exponentiation
3.6 Fermat and Euler
3.7 Primitive Roots
3.8 Inverting Matrices Mod n
3.9 Square Roots Mod n
3.10 Finite Fields
3.11 Exercises
3.12 Computer Problems
4 The Data Encryption Standard
4.1 Introduction
4.2 A Simplified DES-Type Algorithm
4.3 Differential Cryptanalysis
4.4 DES
4.5 Modes of Operation
4.6 Breaking DES
4.7 Password Security
4.8 Exercises
AES: Rijndael
5.1 The Basic Algorithm
5.2 The Layers
5.3 Decryption
5.4 Design Considerations
6 The RSA Algorithm
6.1 The RSA Algorithm
6.2 Attacks on RSA
6.3 Primality Testing
6.4 Factoring
6.5 The RSA Challenge
6.6 An Application to Treaty Verification
6.7 The Public Key Concept
6.8 Exercises
6.9 Computer Problems
7 Discrete Logarithms
7.1 Discrete Logarithms
7.2 Computing Discrete Logs
7.3 Bit Commitment
7.4 The E1Gamal Public Key Cryptosystem
7.5 Exercises
7.6 Computer Problems
Digital Signatures
8.1 RSA Signatures
8.2 The E1Gamal Signature Scheme
8.3 Hash Functions
8.4 Birthday Attacks
8.5 The Digital Signature Algorithm
8.6 Exercises
8.7 Computer Problems
9 E-Commerce and Digital Cash
9.1 Secure Electronic Transaction
9.2 Digital Cash
9.3 Exercises
10 Secret Sharing Schemes
10.1 Secret Splitting
10.2 Threshold Schemes
10.3 Exercises
10.4 Computer Problems
11 Games
11.1 Flipping Coins over the Telephone
11.2 Poker over the Telephone
11.3 Exercises
12 Zero-Knowledge Techniques
12.1 The Basic Setup
12.2 Feige-Fiat-Shamir Identification Scheme
12.3 Exercises
13 Key Establishment Protocols
13.1 Key Agreement Protocols
13.2 Key Pre-distribution
13.3 Key Distribution
13.4 Public Key Infrastructures (PKI)
13.5 Exercises
14 Information Theory
14.1 Probability Review
14.2 Entropy
14.3 Huffman Codes
14.4 Perfect Secrecy
14.5 The Entropy of English
14.6 Exercises
15 Elliptic Curves
15.1 The Addition Law
15.2 Elliptic Curves Mod n
15.3 Factoring with Elliptic Curves
15.4 Elliptic Curves in Characteristic 2
15.5 Elliptic Curve Cryptosystems
15.6 Exercises
15.7 Computer Problems
16 Error Correcting Codes
16.1 Introduction
16.2 Error Correcting Codes
16.3 Bounds on General Codes
16.4 Linear Codes
16.5 Hamming Codes
16.6 Golay Codes
16.7 Cyclic Codes
16.8 BCH Codes
16.9 Reed-Solomon Codes
16.10 The McEliece Cryptosystem
16.11 Other Topics
16.12 Exercises
16.13 Computer Problems
17 Quantum Cryptography
17.1 A Quantum Experiment
17.2 Quantum Key Distribution
17.3 Shor's Algorithm
17.4 Exercises
A Mathematica
A.1 Getting Started with Mathematica
A.2 Some Commands
A.3 Examples for Chapter 2
A.4 Examples for Chapter 3
A.5 Examples for Chapter 6
A.6 Examples for Chapter 8
A.7 Examples for Chapter 10
A.8 Examples for Chapter 11
A.9 Examples for Chapter 15
B Maple Examples
B.1 Getting Started with Maple
B.2 Some Commands
B.3 Examples for Chapter 2
B.4 Examples for Chapter 3
B.5 Examples for Chapter 6
B.6 Examples for Chapter 8
B.7 Examples for Chapter 10
B.8 Examples for Chapter 11
B.9 Examples for Chapter 15
C MATLAB Examples
C.1 Getting Started with MATLAB
C.2 Examples for Chapter 2
C.3 Examples for Chapter 3
C.4 Examples for Chapter 6
C.5 Examples for Chapter 8
C.6 Examples for Chapter 10
C.7 Examples for Chapter 11
C.8 Examples for Chapter 15
D Further Reading
Bibliography
Index