This textbook provides an introduction to applied cryptography for students and practitioners. We offer a carefully chosen selection of cryptographic building blocks, algorithms, protocols, key management techniques and related methods, with a focus on what is used in practice and important to practitioners. We reinforce these with examples, applications, exercises, and real world case studies and deployments.
The book is designed for use in an introductory course for (undergraduate or entry-level graduate) students in a computer science, engineering, math or information technology program. It is also suitable for practitioners including software developers and computing professionals, as well as technical managers and government staff with some math, engineering or computer science background, who are interested in self-study to gain a solid footing in order to use, or understand the use of, cryptography in practice. While our focus is on applications rather than theory, we provide a solid technical foundation.
Our content choices—what to include and exclude, when to stop after an overview vs. giving low-level details—are informed by the authors' collective experiences in industry, academic research, and teaching cryptography for the past 30 years. The topics selected reflect what we would expect as the core knowledge held by students in graduate school as our students, if they claim to have a basic footing in applied cryptography; and by software or hardware developers entering industry if we were hiring them for system development with background in applied cryptography.
We avoid swamping our readers with pages of cryptographic source code; in our experience, books that do so rarely convey an understanding to readers. The reason that we also avoid detailed mathematical proofs and proof techniques is that this is not generally a priority skillset needed by the majority of those aiming to build or manage systems in practice; for researchers and experts who desire such skills, we recommend to take further specialized courses after a first course with a balanced approach as given in this book.
In our experience, due to time and space constraints, books designed for one- or two-term courses cannot provide at the same time both a deeply mathematical treatment and a practical engineering treatment (as in our book)—and it also turns out that few students are interested in both, and rarely (if ever) can authors succeed in covering both. Thus writing a book is about making tradeoffs. We view the excellent, mathematically-focused books as complementary alternatives to ours—but not substitutes.