From P2P to Web Services and Grids: Peers in a Client/Server World

This chapter covers the basic elements of security in a distributed system. It illustrates the various ways that a third party can gain access to data and gives an overview of some of the design issues involved in building a distributed security system.
Cryptography is introduced, then cryptographic techniques for symmetric and asymmetric encryption/decryption are given, along with the role of one-way hash functions. An example of the use of some of these techniques is provided through an example of how one digitally signs a document, e.g., email. Both asymmetric and symmetric secure channels are discussed, along with scenarios for their use. Finally, the notion of sand boxing is introduced and illustrated through the description of the Java security-manager implementation.
This chapter appears here in this book because it provides a gateway for the middleware and applications that will follow, which use various security techniques and frameworks. For example, Freenet (in Chapter 9) uses many of these techniques extensively for creating keys for the Freenet network, which are used, not only for privacy issues, but to actually map from the data content to network location. Further, Jxta (Chapter 10) and Grid computing (Chapter 4) also provide security infrastructures and address authentication issues.
This chapter is based on many on-line papers and articles and an excellent overview of distributed-systems security infrastructures, given by Tanenbaum and van Steen [1].
Security has to be pervasive throughout a system. A single design flaw in the security will render the entire security...