Cryptography 101: From Theory to Practice

A book written by Rolf Oppliger and published in 2021 by Artech House in the Information Security and Privacy Series (visit the Insider Blog)

ISBN: 978-1-63081-846-3

Order from US office of Artech House
Order from UK office of Artech House


Aims and Scope

This book provides a comprehensive introduction into contemporary cryptography. It addresses all topics that are relevant for somebody who tries to understand and properly apply cryptographic techniques, mechanisms, and services in Internet applications.

Target Audience

The book is intended for anyone who wants to understand cryptography and currently deployed cryptographic techniques, mechanisms, and services. It speaks to theorists and practitioners.

Table of Contents

Foreword (provided by Eugene H. Spafford, Purdue University)
Preface
Acknowledgments

1. Introduction (slide deck)
2. Cryptographic Systems (slide deck)

PART I: UNKEYED CRYPTOSYSTEMS

3. Random Generators (slide deck)
4. Random Functions (slide deck)
5. One-Way Functions (slide deck)
6. Cryptographic Hash Functions (slide deck)

PART II: SECRET KEY CRYPTOSYSTEMS

7. Pseudorandom Generators (slide deck)
8. Pseudorandom Functions (slide deck)
9. Symmetric Encryption (slide deck)
10. Message Authentication (slide deck)
11. Authenticated Encryption (slide deck)

PART III: PUBLIC KEY CRYPTOSYSTEMS

12. Key Establishment (slide deck)
13. Asymmetric Encryption (slide deck)
14. Digital Signatures (slide deck)
15. Zero-Knowledge Proofs of Knowledge (slide deck)

PART IV: CONCLUSIONS

16. Key Management (slide deck)
17. Summary (slide deck)
18. Outlook (slide deck)

APPENDIX

A. Discrete Mathematics
B. Probability Theory
C. Information Theory
D. Complexity Theory

Abbreviations and Acronyms
About the Author
Index

Reviews

News

  • In 2022, the NIST PQC competition round 3 finalist Rainbow and the alternate algorithm SIKE were broken and taken out of the running.
  • In Section 11.3, OCB is mentioned as yet another AEAD cipher. In 2018, two attacks were published that break the authenticity and confidentiality protection of OCB version 2 (paper).
  • In 2018, the NSA put in place the Committe on National Security Systems Policy No. 15 (CNSSP-15) and replaced Suite B with the Commercial National Security Algorithm Suite (CNSA Suite).

Additional Material

  • The slide decks (available above for download) can be used to teach courses and classes on cryptography based on the book. They are moving targets and updated continuously.
  • A revised version of Section 6.4.5 about Keccak and SHA-3 is available here.
  • A revised version of Section 11.5 about identity-based encryption is available here.

Errata List

  • Page 4, footnote 4: Add “AD” at the end of the sentence (reported by Elainne Vibal on June 6, 2021)
  • Page 38, line 15: The range of the PRP is X instead of Y
  • Page 44, 3rd bullet from the top: Last sentence should start with “MtE” instead of “MtA” (reported by Elainne Vibal on June 6, 2021)
  • Page 63, line 4: “cryptographic” instead of “cryptogrphic”
  • Page 84, line 11: “… restricting its domain and codomain to …” instead of “… restricting its range to …”
  • Page 84, line 3 in footnote 17: “that” instead of “taht”
  • Page 92, line 11: The word “(nontrivial)” must be removed, because the factors can be trivial (if, for example, n is prime)
  • Page 93, first line in footnote 26: “1930s” instead of “1930”
  • Page 113, first line in Section 6.1: “Definition” instead of “Defintion”
  • Page 124, line 16: The word “construction” must be inserted after “Merkle-Damgard”
  • Page 132, first line 7 from the bottom: “specifically, w” instead of “specifically, X”
  • Page 143, second line (below Algorithm 6.10): Last word “as” instead of “of”
  • Page 150, line 11: Insert an additional bracket between 64 and (5×4) in the expression S[64(5×4)+4)+63]
  • Page 157, fourth line in Algorithm 6.14: “for z = 0 to w-1 do …” instead of “for z = 0 to w do …”
  • Page 162, second line in Algorithm 6.14: “for i_r = 2l + 12 – n_r to 2l + 12 – 1” instead of “for i_r = 2l + 12 – n_r … 2l + 12 – 1”
  • Page 214, Figure 9.5: The coefficients should be labeled “c_{L-1}, c_{L-2}, … , c_1, c_0” instead of “c_1, c_2, … , c_{L-1}, c_L” (from left to right)
  • Page 214, line 10: Connection polynom is “c(X) = c_0 + c_1X + c_2X^2 + … + c_{L-1}X^{L-1} + X^L” instead of “c(X) = c_1X + c_2X^2 + … + c_LX^L”
  • Page 214 / 215: A few inconsistencies in the text
  • Page 217, line 4 in Algorithm 9.1: “j = (j + S[i] + k[i mod |k|]) mod 256” instead of “j = (j + S[i] + k[i] mod |k|]) mod 256”
  • Page 230, lines 5/6: “… decryption functions D_k: …” instead of “… decryption function E_k: …”
  • Page 234, Algorithm 9.4: The leftarrow should be replaced with an equal sign (3 times)
  • Page 241, line 6: “… keys k_1 and k_2 are …” instead of “… keys K_1 and K_2 are …”
  • Page 253, line 7 in 9.6.2.2 State: Insert a blank between “and” and “s_{3,c}”
  • Page 316, Figure 11.2: “y^{(0)}”, “y^{(1)}”, “y^{(2)}”, and “y^{(n)}” instead of “y_0”, “y_1”, “y_2”, and “y_n”
  • Page 317, Algorithm 11.5, line 10: Closing bracket is missing
  • Page 321, Algorithm 11.6, line 11: Closing bracket is missing
  • Page 329, Table 12.1, line 1: P_i = (i,k_i) instead of P_i = (i,K_i)
  • Page 331, Table 12.2: The table illustrates Merkle’s Puzzles (from Table 12.1) instead of Shamir’s Three-Pass Protocol
  • Page 339, Table 12.7: The input parameters on B’s side are (Curve,G,n) instead of (G,g)
  • Page 347: Reference [16] is a double from [15] and can be removed.
  • Page 355, Table 13.1, Encrypt algorithm: The then-else statements must be swapped
  • Page 355, Table 13.1, last line in the Decrypt algorithm: The 1 in m1 must be subscript
  • Page 355, lines 5/6 from the bottom: The terms “if m_i=0” and “if m_i=1” must be swapped
  • Page 363, line 11: Word “time” is missing between “… exponential running” and “and is …”
  • Page 399, line 10: Word “is” is missing between “… and this” and “where the GMR …”
  • Page 415, line 13: The message m must be transmitted to the verifier (instead of the number 6)
  • Page 424, lines 9/10: The value 9 must be replaced with the value 8 (twice)
  • Page 430, last line: The leading bracket must be removed, but “mod n” must be written in brackets instead
  • Page 432, line 3: Word “system” is missing between “… symmetric encryption” and “[34].”
  • Page 433, line 15: “signature bit” is written twice and must be removed once
  • Page 435, line 3 in Table 14.10: “(bmod n)” must be replaced with “(mod n)”
  • Page 443, line 20: There must be a capital letter R in b \in_R \{0,1\}
  • Page 459, line 6 in Section 16.1: The word “employs” must be replaced with “employ”
  • Page 609, line 7 from the bottom: “it polytime reduces to D_1” must be replaced with “D_1 polytime reduces to it”