Cryptography Made Simple
Abstract
This is a reworking of my earlier book “Cryptography: An Introduction” which has been
available online for over a decade. In the intervening years there have been major advances and
changes in the subject which have led me to revisit much of the material in this book. In the main the
book remains the same, in that it tries to present a non-rigorous treatment of modern cryptography,
which is itself a highly rigorous area of computer science/mathematics. Thus the book acts as a
stepping stone between more “traditional” courses which are taught to undergraduates around the
world, and the more advanced rigorous courses taught in graduate school.
The motivation for such a bridging book is that, in my view, the traditional courses (which deal
with basic RSA encryption and signatures, and perhaps AES) are not a suitable starting point.
They do not emphasize the importance of what it means for a system to be secure; and are often
introduced into a curriculum as a means of demonstrating the applicability of mathematical theory
as opposed to developing the material as a subject in its own right. However, most undergraduates
could not cope with a full-on rigorous treatment from the start. After all one first needs to get a
grasp of basic ideas before one can start building up a theoretical edifice.
The main differences between this version and the Third Edition of “Cryptography: An Introduction”
is in the ordering of material. Now security definitions are made central to the discussion
of modern cryptography, and all discussions of attacks and weaknesses are related back to these
definitions. We have found this to be a good way of presenting the material over the last few years
in Bristol; hence the reordering. In addition many topics have been updated, and explanations
improved. I have also made a number of the diagrams more pleasing to the eye.
Cryptography courses are now taught at all major universities; sometimes these are taught
in the context of a Mathematics degree, sometimes in the context of a Computer Science degree,
and sometimes in the context of an Electrical Engineering degree. Indeed, a single course often
needs to meet the requirements of all three types of students, plus maybe some from other subjects
who are taking the course as an “open unit”. The backgrounds and needs of these students are
different; some will require a quick overview of the algorithms currently in use, whilst others will
want an introduction to current research directions. Hence, there seems to be a need for a textbook
which starts from a low level and builds confidence in students until they are able to read the texts
mentioned at the end of this Preface.
The background I assume is what one could expect of a third or fourth year undergraduate
in computer science. One can assume that such students have already met the basics of discrete
mathematics (modular arithmetic) and a little probability. In addition, they will have at some point
done (but probably forgotten) elementary calculus. Not that one needs calculus for cryptography,
but the ability to happily deal with equations and symbols is certainly helpful. Apart from that I
introduce everything needed from scratch. For those students who wish to dig into the mathematics
a little more, or who need some further reading, I have provided an appendix which covers most of
the basic algebra and notation needed to cope with modern cryptosystems.