An Architecture for Authorization and Delegation in Distributed Object-Oriented Agent Systems

Public key infrastructures and authentication protocols, in the sense they are currently known, have been publicly studied since 1978 [23]. In this work I demonstrate how I, together with the research group I have had the privilege to direct, have further developed these concepts in the Object-Oriented field. In our research, we have implemented a public key based system that allows distributed agents to securely co-operate in an insecure network. In this thesis, I focus on the following four interrelated aspects. First, I define a concrete secure software architecture for distributed software agents. Second, I describe our implementation of an Object-Oriented protocol framework for cryptographic protocols. Third, I show how an authorization based Public Key Infrastructure can be used to manage the security of Java based, Object-Oriented software Agents. And finally, I describe how this infrastructure can be extended to support distributed, secure agent execution and permission delegation. In the work as a whole, my goal has been an open, extensible security architecture that allows distributed software agents to co-operate securely. In this context, security1 mainly means two things. First, the agents must be able to trust in the underlying computing machinery, and also trust in each other. Second, the agents must be able to delegate rights among themselves, and to create secure connections between any two communicating agents. The distributed secure software architecture can be considered a high level framework where the protocol framework and the Public Key Infrastructure (PKI) plug in. It defines the security related subsystems for typical Object-Oriented execution environments, focusing on distribution and thereby cryptographic means of implementing security. The Object-Oriented protocol framework provides a supportive base, on top of which various cryptographic protocols can be built. In this sense, cryptographic protocols include both session encryption protocols used to protect actual data traffic between communicating parties and key management and authentication protocols, used to create secure channels used for the actual data transfer. The Public Key Infrastructure (PKI) is needed to provide sufficient trust relationships and an initial security context to the communicating parties so that the authentication and key management protocols can be operated. In this work, my sole focus has been on an authorization based (as opposed to identity based) PKI. In practical terms, this means that the secure channels created within such an authorization framework automatically get strong relationship semantics, providing the communicating parties explicit information about the level and form of trust mediated. Finally, the architecture with its protocol and PKI components makes it possible to create Object-Oriented software agents, distribute them into the network, and let them collaborate in a secure way. In our system, agents are represented as collections (JAR packages) of Java classes. The agent code may be loaded into a trusted Java Virtual Machine, where it is run. The running agents are able to create and evaluate trust relationships between each other, allowing dynamic delegation and creation of secure communication channels. 1 Security per se is, naturally, a much larger concept. However, for the purposes of this study, I have concentrated on these two aspects of security in defining the presented security architecture.