Preface
Getting Started with SageMath
0.1. Installation
0.2. SageMath Command Line
0.3. Browser Notebooks
0.4. Computations with SageMath
Chapter 1. Fundamentals
1.1. Sets, Relations and Functions
1.2. Combinatorics
1.3. Computational Complexity
1.4. Discrete Probability
1.5. Random Numbers
1.6. Summary
Exercises
Chapter 2. Encryption Schemes and Definitions of Security
2.1. Encryption Schemes
2.2. Perfect Secrecy
2.3. Computational Security
2.4. Indistinguishable Encryptions
2.5. Eavesdropping Attacks
2.6. Chosen Plaintext Attacks
2.7. Chosen Ciphertext Attacks
2.8. Pseudorandom Generators
2.9. Pseudorandom Functions
2.10. Block Ciphers and Operation Modes
2.11. Summary
Exercises
Chapter 3. Elementary Number Theory
3.1. Integers
3.2. Congruences
3.3. Modular Exponentiation
3.4. Summary
Exercises
Chapter 4. Algebraic Structures
4.1. Groups
4.2. Rings and Fields
4.3. Finite Fields
4.4. Linear and Affine Maps
4.5. Summary
Exercises
Chapter 5. Block Ciphers
5.1. Constructions of Block Ciphers
5.2. Advanced Encryption Standard
5.3. Summary
Exercises
Chapter 6. Stream Ciphers
6.1. Definition of Stream Ciphers
6.2. Linear Feedback Shift Registers
6.3. RC4
6.4. Salsa20 and ChaCha20
6.5. Summary
Exercises
Chapter 7. Hash Functions
7.1. Definitions and Security Requirements
7.2. Applications of Hash Functions
7.3. Merkle-Damgård Construction
7.4. SHA-1
7.5. SHA-2
7.6. SHA-3
7.7. Summary
Exercises
Chapter 8. Message Authentication Codes
8.1. Definitions and Security Requirements
8.2. CBC MAC
8.3. HMAC
8.4. Authenticated Encryption
8.5. Summary
Exercises
Chapter 9. Public-Key Encryption and the RSA Cryptosystem
9.1. Public-Key Cryptosystems
9.2. Plain RSA
9.3. RSA Security
9.4. Generation of Primes
9.5. Efficiency of RSA
9.6. Padded RSA
9.7. Factoring
9.8. Summary
Exercises
Chapter 10. Key Establishment
10.1. Key Distribution
10.2. Key Exchange Protocols
10.3. Diffie-Hellman Key Exchange
10.4. Diffie-Hellman using Subgroups of zz_{p}*
10.5. Discrete Logarithm
10.6. Key Encapsulation
10.7. Hybrid Encryption
10.8. Summary
Exercises
Chapter 11. Digital Signatures
11.1. Definitions and Security Requirements
11.2. Plain RSA Signature
11.3. Probabilistic Signature Scheme
11.4. Summary
Exercises
Chapter 12. Elliptic Curve Cryptography
12.1. Weierstrass Equations and Elliptic Curves
12.2. Elliptic Curve Diffie-Hellman
12.3. Efficiency and Security of Elliptic Curve Cryptography
12.4. Elliptic Curve Factoring Method
12.5. Summary
Exercises
Chapter 13. Quantum Computing
13.1. Quantum Bits
13.2. Multiple Qubit Systems
13.3. Quantum Algorithms
13.4. Quantum Fourier Transform
13.5. Shor’s Factoring Algorithm
13.6. Quantum Key Distribution
13.7. Summary
Exercises
Chapter 14. Lattice-based Cryptography
14.1. Lattices
14.2. Lattice Algorithms
14.3. GGH Cryptosystem
14.4. NTRU
14.5. Learning with Errors
14.6. Summary
Exercises
Chapter 15. Code-based Cryptography
15.1. Linear Codes
15.2. Bounds on Codes
15.3. Goppa Codes
15.4. McEliece Cryptosystem
15.5. Summary
Exercises
Bibliography
Index