With the rapid proliferation of software agents, there comes an increased
need for agents to ensure that they do not provide data and/or services to
unauthorized users. We first develop an abstract definition of what it
means for an agent to preserve data/action security. Most often, this
requires an agent to have knowledge that is impossible to acquire ---
hence, we then develop approximate security checks that take into account,
the fact that an agent usually has incomplete/approximate beliefs about
other agents. We develop two types of security checks --- static ones
that can be checked prior to deploying the agent, and dynamic ones that
are executed at run time. We prove that a number of these problems are
undecidable, but under certain conditions, they are decidable and (our
definition of) security can be guaranteed. Finally, we propose a language
within which the developer of an agent can specify her security needs, and
present provably correct algorithms for static/dynamic security
verification.
(Also cross-refernced as UMIACS-TR-99-62