This tutorial (and its two follow-up tutorials) targets programmers
wishing to familiarize themselves with cryptology, its
techniques, its mathematical and conceptual basis, and its
lingo. The ideal user of this tutorial 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).
This tutorial does not contain much in the way of specific
programming code for cryptographic protocols, nor even much
specificity in precise algorithms. Instead, it will
familiarize its users with a broad range of cryptological
concepts and protocols. Upon completion, a user will feel at
ease with discussions of cryptographic designs, and be ready
to explore the details of particular algorithms and protocols
with a comfortable familiarity of their underlying concepts.