You are here

A Course in Cryptography

Heiko Knospe
Publication Date: 
Number of Pages: 
Pure and Applied Undergraduate Texts
[Reviewed by
Benjamin Linowitz
, on
Cryptography is a vast subject with branches extending deeply into both mathematics and computer science. As a consequence, authors of cryptography texts must think very carefully about their target audience. Some texts, like Katz and Lindell's Introduction to Modern Cryptography are very computer science oriented, while others, like Hoffstein, Pipher, and Silverman's An Introduction to Mathematical Cryptography, have a much stronger mathematical bent. In writing A Course in Cryptography, Knospe has attempted to find a middle ground. His book, which is meant to be accessible to undergraduates that have taken courses in calculus and linear algebra, aims to rigorously introduce modern cryptographic primitives and schemes, assess their security, and introduce the underlying mathematics. This is a very ambitious goal and has led to the publication of a very interesting book.
There is a lot to like about A Course in Cryptography. The book covers an extremely broad array of topics including Block Ciphers, Stream Ciphers, Hash Functions, the RSA Cryptosystem, Signature Schemes, Elliptic Curve Cryptography and Factorization Methods, Quantum Computing, as well as Post-Quantum Lattice-Based Cryptographic Schemes. Moreover, formal definitions of security are given as they are in the modern cryptographic literature. What I like most about A Course in Cryptography, however, is the manner in which Knospe, after describing a cryptographic scheme, will discuss a variety of known attacks on the scheme and how the scheme can be altered to provide protection against these attacks. For example, in the chapter on the RSA Cryptosystem, Knospe begins by discussing "schoolbook RSA". Schoolbook RSA is the simplest version of RSA and is the version one often encounters in books on elementary number theory and abstract algebra. It has the downside, however, of being incredibly insecure. Indeed, Knospe mentions seven different attacks against schoolbook RSA before discussing the much more secure RSA-OAEP scheme.
If there is a downside to discussing such a dazzling array of topics in a book meant to be accessible to students whose mathematical background does not extend beyond linear algebra, it is the breadth of the underlying mathematics. In the case of A Course in Cryptography, this includes topics from discrete mathematics, number theory, abstract algebra, probability and statistics. Knospe does his best to define all of the necessary material from scratch. While this works well when describing topics from elementary number theory (e.g. modular arithmetic), it works less well for the material on rings and fields. For example, the frantically paced chapter on Algebraic Structures begins with the definition of a group, and, less than 20 pages later, has already finished constructing finite fields and is beginning to define vector spaces over them.
This book does an excellent job of introducing modern cryptographic schemes and assessing their security. The book is replete with over 100 references to the cryptographic literature and takes its readers to the forefront of the topics discussed. I think that it is especially well-suited to be a textbook in departments where there are a large number of mathematics/computer science double majors.


Benjamin Linowitz ( is an Assistant Professor of Mathematics at Oberlin College. His website can be found at