This book provides a compact course in modern cryptography. The mathematical foundations in algebra, number theory and probability are presented with a focus on their cryptographic applications. The text provides rigorous definitions and follows the provable security approach. The most relevant cryptographic schemes are covered, including block ciphers, stream ciphers, hash functions, message authentication codes, public-key encryption, key establishment, digital signatures and elliptic curves. The current developments in post-quantum cryptography are also explored, with separate chapters on quantum computing, lattice-based and code-based cryptosystems.
Many examples, figures and exercises, as well as SageMath (Python) computer code, help the reader to understand the concepts and applications of modern cryptography. A special focus is on algebraic structures, which are used in many cryptographic constructions and also in post-quantum systems. The essential mathematics and the modern approach to cryptography and security prepare the reader for more advanced studies.
The text requires only a first-year course in mathematics (calculus and linear algebra) and is also accessible to computer scientists and engineers. This book is suitable as a textbook for undergraduate and graduate courses in cryptography as well as for self-study.
Heiko Knospe: Technische Hochschule Köln, University of Applied Sciences, Cologne, Germany
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 _{??}* 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