REVIEW: Practical Cryptography


by Bruce Schneier/Niels Ferguson. Wiley, Apr 3, 2003410 pages



The preface points out that cryptography has done more harm than good

in terms of securing information systems, not because cryptography

fails in and of itself, but, rather, due to the improper use or

implementation of the technology.  This book is intended to provide

concrete advice to those designing and implementing cryptographic

systems.  As such, it is not the usual introduction to cryptography,

and is aimed at a fairly limited group.

Chapter one asserts that we should be engineering for security, rather

than speed or bells and whistles.  Security is only as strong as the

weakest link, we are told in chapter two, and (following from the idea

of defence in depth) we need to have engineering in depth (and

probably breadth, as well).  The issues are important, but there is

some lack of clarity to the organization and flow of the text and

arguments: the reader may start to wonder what the essence of the

message is.  (I see that I should have trademarked "professional

paranoia" when I started using it years ago, but it is nice to note

that the point is being taken.)  Chapter three is a rather unusual

"Introduction to Cryptography" (and the mathematical format of the

text doesn't make it easier for the math-phobic to concentrate on the

meaning), but focussing on the applications and problems, the

cryptanalytic attacks, and repeating the injunctions against

complexity and the sacrifice of security for performance is a

reasonable position.

Having come this far, it is interesting to note that we are only

starting part one, reviewing message security.  Chapter four compares

and reviews various existing block ciphers.  The modes, and attacks

against specific modes, of block algorithms are described in chapter

five.  (This material appears to be what would, in a more traditional

book, be the introduction to cryptography.)  Hash functions are

explained, compared, and assessed in chapter six, while seven extends

the concept to message authentication codes, which ensure not only

detection of accidental alteration, but are also resistant to outsider

modification attacks on the data or transmission.  We therefore have

the basic tools that we need to consider a channel that is secure from

eavesdropping and manipulation by anyone not party to the

communications, in chapter eight.  Implementation, and the engineering

or software development considerations, are examined in chapter nine.

Part two deals with key negotiation, partly by introducing the concept

of asymmetric (more commonly, if less accurately, referred to as..

Read more: