A security architecture in which a security module is integrated in a
client machine, wherein the client machine includes a local host that is
untrusted. The security module performs encryption and decryption
algorithms, authentication, and public key processing. The security
module also includes separate key caches for key encryption keys and
application keys. A security module can also interface a cryptographic
accelerator through an application key cache. The security module can
authorize a public key and an associated key server. That public key can
subsequently be used to authorize additional key servers. Any of the
authorized key servers can use their public keys to authorize the public
keys of additional key servers. Secure authenticated communications can
then transpire between the client and any of these key servers. Such a
connection is created by a secure handshake process that takes place
between the client and the key server. A time value can be sent from the
key server to the client, allowing for secure revocation of keys. In
addition, secure configuration messages can be sent to the security
module.