A Course in Cryptography
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.