Bootstrapping the Cherubim System

 
 

The Classloader Hierarchy

The classes in the Cherubim system are split into three categories that are loaded by different classloaders:
 A picture
of the Classloader hierarchy
Figure: The Classloader Hierarchy
 

Implementation

In order to securely load the jurassic classes over the network to the client machine, encryption, authentication, and digital signatures are necessary.  This section describes the specifics of how the client and server authenticate one another and agree on a session key, as well as how the client machine loads the jurassic classes from the home machine.

Initial booting of the Cherubim System proceeds as follows:

  1. Client machine boots its Operating System and Java Virtual Machine (this may be done with AEGIS or a similar system)
  2. User runs Boot program
  3. Boot program prompts for passphrase
  4. Boot program hashes passphrase using SHA-1 to an IDEA symmetric key
  5. Boot program uses IDEA key to decrypt smartcard (including private keys)
  6. Client machine makes a socket connection to the user's home machine
  7. Home machine spawns a Connection thread to communicate with the client
  8. Client begins key negotiation with the server
Key Negotiation is accomplished using the Diffie-Hellman protocol:
  1. Client machine sends a SignedDHMessage (a signed Diffie-Hellman message, signed by the Smartcard) to the server
  2. Server verifies the signature, timestamp, and destination on the message
  3. Server sends a SignedDHMessage to the client
  4. Client verifies the signature, timestamp, and destination on the message
  5. Client and Server generate the shared secret
  6. Client and Server hash shared secret using SHA-1 to an IDEA secret key
After this authentication has taken place, the Client can then request classes as follows:
  1. JurassicClassloader receives request for a class on the client
  2. JurassicClassloader checks to see if requested class is in the class cache; if so, return it
  3. JurassicClassloader checks to see if the primordial classloader can load the class (i.e. if the class is in the CLASSPATH); if so, return it
  4. JurassicClassloader checks if existing session key is more than one hour old; if so, negotiate a new one as above
  5. JurassicClassloader sends a SEClassRequest (a signed, encrypted class request, signed by the Smartcard and encrypted with the IDEA session key) to the home server over the existing socket
  6. Server verifies the signature, timestamp, destination, and sequence number on the SEClassRequest
  7. Server loads the requested class off the local disk, if available
  8. Server sends the class in a SEClassResponse (a signed, encrypted class response, encrypted with the IDEA session key) to the client
  9. JurassicClassloader verifies the signature, timestamp, destination, and sequence number on the message
  10. JurassicClassloader adds the class in the message to the class cache
  11. JurassicClassloader returns the class in the message to the process that called it
Specifics:

The javadoc documentation is available for the cherubim.boot package.

Also available is the techical report describing the Cherubim Core Security Services and Bootstrapping System. The report is available in Microsoft Word and Postscript formats.

Feel free to direct any comments to Chuck Willis ( cfwillis@uiuc.edu ).


CherubReturn to the Cherubim Home Page  
 
 
 
 
 

Last Updated 16 Jun 98 by Chuck Willis (cfwillis@uiuc.edu).