A mobile agent is a program that moves from machine to machine and executes
on each. Neither the agent nor the machines are necessarily trustworthy. The
agent might try to access or destroy privileged information or consume more than
its share of some resource. The machines might try to pull sensitive information
out of the agent or change the behavior of the agent by removing, modifying or
adding to its data and code. A mobile-agent system that does not detect and
prevent such malicious actions can never be used in real applications. In an open
network environment, intentional attacks on both machines and agents will start
as soon as the system is deployed, and even in a closed network environment
with
trusted users, there is still the danger of misprogrammed agents, which can
do significant damage accidentally. Security is perhaps the most critical issue in
a mobile-agent system. We consider the following four inter-related problems:
– Protect the machine. The machine should be able to authenticate the agent’s
owner, assign resource limits based on this authentication, and prevent any
violation of the resource limits. To prevent both the theft or damage of
sensitive information and denial-of-service attacks, the resource limits must
include access rights (reading a certain file), maximum consumptions (total
CPU time), and maximum consumptions per unit time (total CPU time per
unit time).