Practical Cryptography, by Ferguson and Schneier.
This book is about cryptography as it
is used in real-world systems, about
cryptography as an engineering
discipline rather than cryptography as
a mathematical science.
Building real-world cryptographic
systems is vastly different from the
abstract world of most books on
cryptography, which discuss a pure
mathematical ideal that magically
solves your security problems.
Designers and implementors live in a
very different world, where nothing is
perfect and where experience shows
that most cryptographic systems are
broken due to problems that have
nothing to do with mathematics. This
book is about how to apply the
cryptographic functions in a
real-world setting in such a way that
you actually get a secure system.
This is the book we wish we'd had more
than a decade ago when we started our
cryptographic careers. It collects our
combined experiences on how to design
cryptographic systems the right way.
In some ways, this book is a sequel to
Bruce's first book Applied
Cryptography, but it focuses on very
practical problems and on how to build
a secure system rather than just
design a cryptographic protocol.