This is a work suitable for first-year graduate students or advanced undergraduates. Obviously designed as a textbook, the addition of the online materials makes this book usable by independent readers or industry algorithm implementers in need of a reference work.
Focused on the implementation of algorithms, Algorithmic Cryptanalysis is a work in three parts. A preliminary section gives a brief, historical introduction to cryptography along with relevant topics from elementary number theory and algebra. The meat of the book is the central portion, on algorithms, including examples in pseudocode or C. Concluding the work is a part detailing cryptographic applications. Each chapter ends with exercises, usually about ten of them. Roughly a third of these have hints or solutions residing at the text’s web site. This site also has the C programs available for download and various auxiliary materials.
The first part, entitled “Background,” includes elementary number theory with a focus on the finite fields relevant to cryptography: modular arithmetic, primality tests, univariate polynomials, vector spaces, and linear maps. The RSA and Diffie-Hellman cryptosystems are analyzed in this portion.
The strength of the algorithm part is the rich bevy of algorithms presented in the coherent context of teaching cryptography as a science. I would wager that the pseudocode, the more prevalent form for algorithms in this book, is enough for the C programmer to get going. I wish the author, when going as far as far to show the syntax-specific programs for the Walsh transform or even Eratosthenes’s sieve, had picked a more widely used, higher-level language, such as Java or C#. If not wanting to commit to one of those divisive camps, even MATLAB would be nice. In the book’s defense, it may be more natural to show the effects of more current computer architecture, such as L1 and L2 cache usage in line sieving, when using a more low-level language such as C.
Entitled “Applications,” the final part of the book offers details on stream cipher attacks, lattice-based cryptanalysis, elliptic curves, and applications of index calculus. These chapters employ the work’s key elements: recognition of the impact of computer architecture such as LFSR-based keystream generators, the explanation of relevant theory such as the group structure of elliptic curves, and explicitly practical algorithms such as the pseudocode on computing the number of smooth polynomials presented in the index calculus chapter. The index calculus chapter features a very illustrative and complete toy example on computing discrete logs in F101.
Combining practical algorithms and supported by explanation of the relevant theory, this is a good introduction to cryptanalysis that improves on that good recipe by including key details on current computer architecture. This makes this work succeed as both handbook and textbook.
Tom Schulte is a lead systems engineer at Plex Systems in Michigan with a focus on application security.