This tutorial builds on the foundation provided
by the two introductory tutorials on
general cryptology concepts (Part 1 and Part 2). You don't
necessarily need to have completed the introductory tutorials, but you
should be familiar with general cryptology concepts, such
as symmetric encryption algorithms, asymmetric
encryption algorithms, cryptanalysis, attacks, Alice and Bob,
messages, hashes, cipher text, and key length.
If you feel comfortable with
these concepts, you should not have difficulty understanding this
tutorial. If answers to those questions are unclear, take a
quick look at Parts 1 and 2 of this tutorial series by David
Mertz. (The section below, "Background and reminders," includes
a brief overview of important concepts.)
In general, this tutorial is aimed at programmers who wish
to become familiar with cryptology, its techniques, its
mathematical and conceptual basis, and its lingo. Most users
will have encountered various descriptions of
cryptographic systems and general claims about the security or
insecurity of particular software and systems, but without entirely
understanding the background of these descriptions and claims.
Additionally, many users will be programmers and
systems analysts whose employers have plans to develop or implement
cryptographic systems and protocols (perhaps assigning such
obligations to the very people who will benefit from this tutorial).