Book reviewUSENIX

 

R. Macgregor, D. Durbin, J. Owlett, and A. Yeomans
Java Network Security
Prentice Hall, 1998. ISBN 0-13-761529-9. Pp. 232, includes CD-ROM

Reviewed by Terry Rooker <trooker@CapAccess.org>

Java network security? Some might claim that that is an oxymoron. After all, think about it. You download code from a source you may not know much about and then run it on your computer. With Java it is even worse than downloading a program or application; the download is done within the context of a Web browser, also running on your machine. So one view is that, to be safe, your only recourse is to disable Java in your browser so you know exactly what is getting executed on your computer. After reading this book you might feel more comfortable with some less stringent measures.

Java Network Security provides a good overview of the issues involved in maintaining security on a computer or network running Java. This book does not provide an overview of the Java environment itself, so there is an assumption you are already familiar with at least the higher level features of that environment.

Beyond some superficial distractions, which I'll talk about later, this book takes the right approach to these issues. There is a danger in writing books about technology, especially a volatile new technology such as Java. The Java specification has had many changes in a short period of time, and new major variations (such as Java Beans) are introduced frequently. So in a sense any book is dated by the time it reaches a printing press. Java Network Security is not a "how-to" book. There are few specific guidelines on how to implement security in the Java environment. Rather, much of the book discusses the issues and problems and how they apply to the Java environment.

For example, consider the class loader, which is responsible for taking the source information for a Java class and loading it into the Java Virtual Machine for use by other Java applications or applets. The authors do not give instructions for building your own loader that avoid the problems. In fact they even point out that such instructions are beyond the scope of the book. So what do they write about for seven pages?

They provide a detailed description of the requirements for a class loader, the process involved in loading a class, considerations for building your own, and finally motivation for why you might want to build your own. For each the authors describe the differing requirements or situations for loading a class from a local source or from a Web server. They also discuss the need for a trusted core of code in the Java environment. Basically, you need this trusted core to ensure a safe and sound starting point for building other applications or applets.

With the pace of technological change, these detailed descriptions are more valuable than any set of how-to instructions. They give administrators or developers the in-depth understanding of what is going on so they can make their own decisions about what measures are needed for their individual network or application. Even better, much of the discussion in the book is geared toward issues of security analysis ­ specifically, which threats each countermeasure might be appropriate for. So the book will be useful to a Java developer who is not familiar with some of the security issues as well as to the security engineer or network administrator trying to ensure any work done in Java still complies with existing security requirements and
policies.

Unfortunately, many readers might not get that far. The book often assumes a condescending tone about Java in general. The authors do acknowledge some of the already known security problems with Java, but tend to downplay them. In many cases they acknowledge security holes in Java that exist in other technologies, but then make vague statements as to why the holes are less of a problem in Java. They often rely on the "Web of Trust" resulting from signed certificates to build up the apparent strength of Java. Still, often this Web sounds more like a leap of faith that you should trust others to provide sound, well-designed, and well-built applets. The problem, of course, is implementation errors, even in signed and registered applets.

Security is provided both by those who build the applets and those who maintain the networks. Yet the book puts the greater responsibility on those who administer the networks. "So in the absence of implementation errors, either on the part of the browser vendors or on the part of the computer operators, administrators and system programmers, Java should be safe" (emphasis in the original). The paragraph goes on to say that the browser vendors have a good reputation for dealing with these things and the book is intended for the administrators. This patronizing attitude is most prevalent in the first chapter. If you can make it through this material you find the gems in the remainder of the book.

You won't find many ready-made solutions, but you will find a wealth of technical information that will help both network administrators and developers understand the Java environment. The book includes a CD with a Java development environment package and some other tools, and it also has the source for the various examples in the book. So you can try things out for yourself.

This book will be of value to anyone interested in technical details behind Java. It will be of obvious interest to administrators and developers. Yet others might be interested since many of the issues described apply to other networked applications. But it is to those working with Java that I most highly recommend this book..

 

?Need help? Use our Contacts page.
First posted: 5th November 1998 jr
Last changed: 5th November 1998 jr
Issue index
;login: index
USENIX home