SSL and TLS. Designing and Building Secure Systems
by Eric Rescorla
Addison-Wesley
Index, bibliography, 2 appendicies and an acronym table
ISBN 0-201-61598-3.   $39.95

Reviewed by  Robert Bruen

Secure Sockets Layer (SSL) was created at Netscape in 1994 to address the problem of secure transaction over networks using HTTP. Since then it has mutated, evolved, and been transformed by Netscape, Microsoft and others, including some very enterprising individuals. The result is that SSL is the primary method for securing web based transactions. There are open versions (openssl) and one for wireless (WTLS). The most recent incantation is Transport Layer Security (TLS), still not yet widely deployed, but certainly appears to be the future of SSL.

It is always a pleasure to review a good technical book such as SSL and TLS. The author is not only knowledgeable, he explains everything with a rare sense of clarity without reverting to black magic and hand waving. Code examples are written in C and Java. Additional examples given for HTTPS and mod_ssl (used to add SSL/TLS to the Apache web server).

SSL and TLS was written for those of us who want to design systems and write code. The first part of the book covers the basics of SSL, including a background chapter on cryptography. The basics cover the history and mechanics of SSL, meaning connections, handshakes, alerts and sessions. The in between chapters cover security within SSL and SSL performance.

Although I like the book in general, I especially enjoyed the performance analysis chapter. Everyone knows that encrypting and decrypting take compute cycles, usually from places that are already somewhat overburdened. After acknowledging this the author then covers Amdahl's Law (used in performance tuning), then delves into I/O and where the locations of transmission choke points. The author's thoroughness in analyzing the performance problem helps considerably in understanding some of the details of SSL as well as how one ought to go about performance analysis. Graphs, timing charts and operation executions are presented in depth for both hardware and software. Java, C, algorithms and networks all come the microscope as the author makes it look easy.

The next part of the book covers designing and coding with SSL, presenting topics such as authentication, reference integrity implementation and threads. Then there are two good chapters on HTTP (SSL) and SMTP (TLS). Why HTTP is a better match than SMTP for SSL/TLS is shown is detail.

This a book with substance for anyone with is interested in securing systems and networks. It well written, informative and highly recommended.

 

IEEE Cipher, E40, December 19, 2000.