Mobile Agent Data Integrity Using Multi-agent Architecture* J. Todd McDonald** Dept of Computer Science Florida State University Tallahassee, FL 32306-4530, USA [email protected] Alec Yasinsac Dept of Computer Science Florida State University Tallahassee, FL 32306-4530, USA [email protected] Abstract Protection of agent data state and partial results in mobile agent systems continues to draw research interest. Current solutions to integrity attacks are geared at detection of malicious activity a posteriori. We propose multi-agent architecture that uses cooperating multi-hop and single-hop agents to prevent such attacks and discuss security features of our scheme. We also examine data protection services and the means for collecting agent data state in this context. Key Words: mobile agents, security, data integrity, partial result protection 1 INTRODUCTION Mobile agents are a method for implementing distributed systems and an emerging abstraction for architectural program design. Unresolved security issues continue to be cited among other reasons why mobile agents have not achieved widespread implementation [1]. Research continues to formulate mechanisms that secure the computational state of mobile agents in the presence of malicious hosts. Protecting an agent consists of two primary features: protecting the static executable code of an agent from disclosure or alteration and protecting the dynamic state of the agent as it incrementally changes during execution. We focus on the protection of the intermediate data results an agent gathers as it migrates through a network. Agent data protection is concerned with keeping the state of an agent safe from observation (confidentiality) or keeping it safe from alteration (integrity) by malicious hosts. Integrity violations are typically only detectable after the agent returns to its origination, when it reaches an honest host in the itinerary, or when it stores partial results with a trusted third party. Our proposed architecture supports prevention of integrity violations (without data aggregation) and detection of these violations (with data aggregation) by using multiple cooperating agents to accomplish user tasks. Essentially, we distinguish between the tasks of data computation and data collection, and assign these tasks to different classes of cooperating agents. This architecture provides security features ideal for protection against classical data integrity attacks such as insertion, deletion, and alteration of intermediate results. The novelty of our * This material is based upon work supported in part by the U.S. Army Research Laboratory and the U.S. Army Research Office under grant number DAAD19-02-1-0235 SIT Willard C. Thompson III Dept of Computer Science Florida State University Tallahassee, FL 32306-4530, USA [email protected] approach is in part the formalization of using different classes of agents to perform information computation and gathering. Essentially, our scheme relies on three cooperating types of agents: some agents performing computations, some managing tasks, and other agents carrying computational results back to the originating host. The rest of the paper is outlined as follows. In section 2, we provide background and review existing literature. In section 3, we introduce separation of agent data computation from agent data collection and outline our approach to integrity of data using multi-agent architecture. Section 4 provides conclusions and a discussion of benefits and issues related to our approach. 2 RELATED WORK Mobile agents are sent to gather information and perform tasks on behalf of a user, migrating to the source of information and reducing network bandwidth of messages required to process data. An agent is seen as a migrating program that has both a static part (code) and a dynamic state (data). Each host execution can be said to add new information progressively to the data state of an agent. Initial work in mobile agents such as [2] identified two modes of information gathering: stateless and stateful. In a stateless approach, agents can intermittently or at every hop send information acquired back home to the originator. In a stateful mode, the agent embodies in its data state the results of each host execution and carries with it a growing collection of information to each subsequent host in its itinerary. In this regard, we formalize in our architecture a mechanism by which both stateless and stateful integrity protection mechanisms can be incorporated into mobile agent interactions with the use of multiple classes of agents. The use of multiple agents and transfer of partial results for safekeeping during agent migration are considered in other works as well. Roth in [3] proposed that an agent could transfer commitments to another cooperating agent that can verify and store the information gathered. In [3], agents are sent to disjoint sets of hosts and in turn can send each other commitments of current hosts via a host-provided secure communications channel. This provides a level of nonrepudiation and requires a malicious host to corrupt other hosts that are on the co-operating agent’s future itinerary. ** The views expressed in this article are those of the author and do not reflect the official policy or position of the United States Air Force, Department of Defense, or the U.S. Government SIT 2.1 Partial Result Protection Chained encapsulated results [4], partial result authentication codes [5], per-server digital signatures [5], append-only containers [6], and sliding encryption [7] are all examples of solutions from early mobile agent research that provide various levels of intermediate result protection. These frameworks use digital signatures, encryption, and hash functions in different combinations of chained relationships to provide detection and verification services. With these techniques, the originating host or an honest host in the path of an agent can identify when previous servers have inserted, truncated, or changed information from previous intermediate results carried by the agent. Loureiro et al. proposed a subsequent protocol in [8] that would allow a server to update its previous offer or bid. Roth has noted in [9] that many of these protocols suffer from replay and oracle attacks because they do not bind the dynamically collected data of an agent to its static code. When malicious hosts collude, these protocols are weaker in detecting activity in the face of cooperating hosts that share secrets and information to change intermediate host results. Specifically, truncations are defined as integrity attacks where the data state of an agent is restored back to a state computed at a host that was previously visited in the itinerary. With the use of dynamically determined loose itineraries [3], detection of truncation attacks is difficult if not impossible in certain cases. Vijil and Iyer in [10] augmented the append-only container of [6] with a means to detect mutual collusion and actually identify which hosts performed the tampering. Other recent work describes weaknesses of several protocols where truncations cannot be detected in certain cases. Maggi and Sisto in [11] provided a formal definition to describe protocol interactions in several different data protection mechanisms. In particular, they note that implementation of stronger forms of truncation resilience need to be implemented. Our notion for multiagent architecture that separates data computation and data collection into different agent classes and services is inspired by this quest. 2.2 Multiple Agents/Fault Tolerance and Security We propose to use multiple classes of agents that are given similar duties of either information computation or data gathering. The use of multiple agents is also part of the domain of fault tolerance, which seeks to provide guarantees on agent migration and task completion. Extensive work has already been done with integrating and providing fault tolerance in mobile agent systems [12, 13, 14]. Minsky et al. in [15] proposed that replicated agents and voting could be used to decide if malicious hosts have altered agent execution. Yee proposed a mechanism to detect replay attacks in [16] while Tan and Moreau extend an execution tracing framework in [17] to prevent denial of service attacks. In terms of multiple agents, Tate and Xu utilize multiple parallel agents that employ threshold cryptography to eliminate the need for a trusted third party in [18]. Tate and Xu also noted their work was one of the first to consider multi-agent settings on the basis of their security benefits. With our approach, we continue to analyze multiple agent architectures in mobile contexts on the basis of their security advantages. A distinction exists between using the same agent logic replicated multiple times [15, 18] and using different agents to accomplish a single purpose-driven task [2], which our scheme utilizes. Work such as [19] has also tried to determine whether the use of multiple static agents is better than the use of multiple mobile agents from a performance perspective. Kotzanikolaou et al. in [20] presented architecture where a master agent and a set of multiple slave agents are used together to conduct electronic transactions. In [20], slave agents are mobile and travel to only one particular host to negotiate, but cannot complete a transaction without returning to the master agent. Our approach is similar in the sense that we conceptualize a master task agent that spawns and directs information gathering from multiple computation and collection agents, and then carries out any transaction logic separately. 2.3 Data Collection Services Our architecture also uses data bins that allow an agent to leave computational results in an encrypted, retrievable form. Data lockers in [21] are described as a service provided for mobile users that keeps their data in secure and safe locations part of a fixed network. Our notion of a data bin is similar in that we envision a data service where intermediate results of agent computations can be safely stored during the transit of an agent through a network. Our approach is motivated by the security properties that a data bin offers instead of convenience or accessibility that is associated with a data locker. 3 MULTI-AGENT DATA INTEGRITY The simplest method of preventing data integrity attacks is to not put partial or intermediate results in the hands of potential malicious servers. Reducing exposure or eliminating exposure of partial results all together is the essential idea behind our architecture. Specifically, we envision three different classes of agents: task agents, computation agents, and data collection agents. The task agent is responsible for the overall job a user wants to perform. Computation agents replicate in a fault-tolerant, single-hop manner or can be embodied in a single multihop agent to perform required computations. Data collection agents are responsible for providing ad-hoc or continuous data state collection. In essence, computation agents interact with hosts, under the direction of a master task agent, and leave partial results on the server where they are produced via the use of a data bin service. Collection agents are assigned the task of gathering and returning intermediate results to the master task agent that can then filter and make decisions based upon predefined criteria. Our work involves prevention of manipulation, extraction, and truncation of information accumulated by an agent in a multi-hop free-roaming scenario. We do not address denial of service by a malicious host nor attempt to analyze whether a server has provided false information to the agent. We do not address privacy of execution (the knowability of a given function) or integrity of execution in terms of random code modifications. We assume that alterations to the static agent code are detectable by honest hosts when measures such as code signatures [5, 18] or execution tracing [22] are employed. We also assume that a public key infrastructure is in place or at a minimum the ability to distributed shared secrets among participants of the mobile agent system. Various methods exist in the literature for formally describing the interaction of an agent with a host [8, 11, 18] and each sets forth data privacy characteristics that various protocols support. As illustrated in figure 1, an agent’s execution can be described by the set of hosts that it visits, {h1, h2, …, hk} and the associated set of data D, {d1, d2, …, dk}, that represents the incremental change in state of the agent as it visits each host and performs its task. This view of agent data interactions is part of the traditional idea of a competitive, electronic transaction application of mobile agents where bids or offers are collected by agents in various contexts, such as airline reservation [2, 4, 5, 23]. <D> d1 {d1} d2 h1 h2 {d1, d2} <B> h0 <C> dk hk <A> D’ = {d’1, d’2, d’3, …, d’k} … {d1, d2, d3, …, dk} h3 d3 {d1, d2, d3} Figure 1: Single and Multi-Hop Agent Interactions As shown in [11], this set of data can be described as being either a sequenced or unordered collection of the relevant computational results gathered by the agent as it traverses its itinerary and performs its task. Each host inserts a new result into the protected area of an agent in a manner that links the result to the previous results and/or the next host to be visited. Assuming that the originating host is h0, the agent’s path could also be described as the set {h0, h1, h2, …, hk,h0}. When an agent arrives back at its originating host, with task accomplished, the set of data results D’, {d`1, d2, …, d`k`}, will represent the incremental changes in state of the agent as it migrates around the network. Figure 1 illustrates how the data set of a migrating agent essentially grows as each host executes the agent code, adding a data state to the protected area of a migrating agent. The set D’, indicated by figure 1, letter <B>, indicates what the agent does have on arrival back at its originating host and set D, indicated by figure 1, letter <A>, indicates the set of data results it should have. The highest level of protection that can be achieved is known as strong data integrity and is defined as the ability to detect whether set D, {d1, d2, …, dk} ≠ set D’, {d`1, d’2, …, d`k`} on return of the agent to the originating host. Strong data integrity would also include detection of all truncation attacks, which is still not possible in all cases when colluding hosts are involved. 3.1 Independent and Dependent Agent Data Independent data can be viewed as a collection of offers, bids, or results that are used by an agent to perform some type of decision based on those gathered results. Independent data is seen in a single-hop agent (also referred to as remote code execution [22]) that migrates to a remote host, performs its operation, and then either sends its result back to the home platform or migrates back to the home platform carrying the result. In other words, the “result” of the agent is independent from the “result” gathered on any other host platform where the same computation is carried out. When an agent migrates from host to host performing such a query or computation in a multi-hop mode, results of the current host are appended to previous results that are also carried by the agent. Figure 1, letter <C>, illustrates migration paths of an agent that uses single-hop logic, returning to the originating host after each execution. This type of computation can be performed by one single agent that makes k roundtrip migrations in a single-hop manner or by k agents that migrate to each host independently, where k is the number of agent servers. Data fusion is then performed after all hosts are visited and all query results are collected. As an example of independent data, an agent that carries out a “sum” operation can do so by collecting inputs from a host and storing each value in some type of data collection. When the agent returns home, the values stored in the collection are added together to complete the operation. The multi-hop data state of the agent in this example depends on previous executions of the agent only in the sense that contents of the set of collected data must be carried forward faithfully from the previous host. In this case, truncations, insertions, and deletions are carried out by malicious hosts who modify the “values” that are carried by the agent. Data is considered independent because the code logic computes new data state by incrementally adding new results to the protected area of an agent. Data fusion or sorting is, again, conducted after all server results are collected. In some agent applications, the computational result of the agent at state dx is dependent on the computation result of the previous agent states {d1 .. dx-1}. Figure 1, letter <D> indicates the path of a multi-hop agent as it traverses a network, migrating from host to host carrying out computations. A multi-hop bidding agent can be designed to carry all of the bids for each host visited in its state and apply logic to determine the winner once all possible hosts are visited (thus utilizing independent data). The bidding agent can also be designed to carry the amount and identity of the lowest bidder in its state, which is updated along the way as the agent visits each host (dependent data). In the context of our “sum” example, an agent with dependent data would only carry a sum variable that is updated by the input of each host in its route. The agent returns home with the sum calculated from the last host that it visited. Independent data is also referred to as data aggregation because a correlation exists between the previous and current execution state of the agent. 3.2 Multiple Agents with Independent Data We present an architecture based on the interaction of three different classes of agents: task agents, data computation agents, and data collection agents. The task agent embodies the job an originating host wants to perform, such as a user’s desire to purchase an airline ticket with a fixed set of criteria. Task agents spawn either a single multi-hop agent or multiple numbers of singlehop agents to perform computations in the form of information gathering or bid requests. Task agents spawn one or more computation agents with either fixed or freeroaming itineraries that visit host servers in a specific subject domain (such as airline reservation systems) and perform queries based on user criteria. Computation agents traverse the same route of a typical mobile agent and need to be uniquely identifiable to prevent the replay attacks expounded in [9]. As figure 2 illustrates, a task agent can remain at the originating host or be transferred to a trusted third party where computation agents are then spawned. The agent framework in our architecture must be equipped with a data service, referred to as a data bin, which stores encapsulated data states of agents. These bins are similar to other notions of data lockers [21] or services that provide agent data safekeeping on trusted third party servers. Data bins have both a public part, where computation and collection agents can store and retrieve results, and a private part, where host-originating task agents can store partial results for later fusion. In independent data operations, computation agents do not arrive back at the originating hosts with a state payload containing a protected set of results. Instead, the computation agent leaves the result of its execution (embodied in the mutable state or as a query result) on each host via the public data bin service, protected with some form of agreed upon encryption scheme. Figure 2 depicts the spawning of the computation agent (a) that would visit hosts h1, h2, h3, and h4 with multi-hop migrations of {a1,a2,a3,a4,a5}. Public Data Bin Private Data Bin TTP Task Agent Public Data Bin [ result of a-h2 ] Public Data Bin [ result of a-h1 ] Computation Agent a t t Private Data Bin Private Data Bin h1 h2 a2 a1 a3 h0 Public Data Bin Private Data Bin a5 a4 h4 Public Data Bin [ result of a-h4 ] h3 Public Data Bin [ result of a-h3 ] Private Data Bin Private Data Bin Figure 2: Activity of Task and Computation Agent For greater fault tolerance, computation agents themselves can be launched in replicated mode as described in [15]. In either case, each computational result is linked to the identity of the agent and the identity of the originating host for later pickup. Data results can also be encapsulated using approaches such as [4,5,6,7]. At worst, a malicious host can only induce denial of service to the computation agent or only keep its own independent data result from being gathered by a collection agent. Authenticity and non-repudiability is achievable by binding the identification of the originating host and the unique agent identifier together with the agent data state. If the agent is single-hop, no data state is left and the agent returns to the originating host carrying the data state, as in remote evaluation operations [22]. Data collection agents are responsible for the singlehop mission of carrying back encapsulated data states or query results to the originating host. Figure 3 illustrates the activity of data collection agents that were spawned as a result of the activity of task agent (t) and its subsequent computation agent (a) seen in Figure 2. Each data collection agent (a,b,c,d in figure 3) stores its payload in the private data bin of the originating host and notifies the task agent of its arrival. In this aspect, data bins would provide private holding areas for data results that support information fusion of task agents that originate from that host as well as public holding areas where results of visiting agents are stored and are available for pickup. Public Data Bin Public Data Bin Private Data Bin Public Data Bin Private Data Bin [ result of a-h1 ] [ result of a-h2 ] [ result of a-h3 ] [ result of a-h4 ] h2 h1 Task Agent a b1 a1 t h0 d b Data Collection Agents c1 d1 c h4 Public Data Bin Private Data Bin h3 Public Data Bin Private Data Bin Private Data Bin Figure 3: Activity of Data Collection Agents Data collection agents are executed in one of three different configurations: 1) server-based response mode; 2) host-based request mode; and 3) autonomous data collection mode. In server-based response mode, each server visited by a computation agent spawns a data collection agent that performs an authenticated and encrypted single-hop transfer of the result (seen in figure 3). In the host-based request mode, the originating host sends data collection agents to each host that was part of the itinerary of the computation agent. The task agent does this in response to the completion of the computation agent. The autonomous data collection mode is a method where single-hop data collection agents are spawned either by a host that has just launched task agents or by agent servers who send results to trusted third party collection points on a recurring time interval. This approach is similar to a “garbage collection” service that runs in the background of a JAVA interpreter. With this method, data collection is built as a routine service that interfaces data bins with executing agent hosts. Design of data collection protocols must ensure that only the originating host can retrieve its own data results, or in some altered form, that an agent can request previous data results for fusion at locations where a trusted computing environment is guarenteed. After all data collection activities have been accomplished and the task agent collates and filters results, it can spawn further computation agents that perform single-hop transactions or additional data gathering. In such cases where a single-hop transaction like a credit card billing is accomplished, no data collection is required. To summarize, all three classes of agents within our architecture are used in various combinations to accomplish a user task. 3.3 Multiple Agents with Dependent Data Our proposed architecture relies on the general premise that agent computations should be separated from data state collection when a multi-hop agent is used. The static code of the computation agent has to interact with partial results of previous computations in order to produce a new data state result. To perform a multi-hop task that relies on dependent data, the data computation agent is modified to carry only the most recent state as its payload, while leaving a secured encrypted copy of its current state at each host server. Data collection agents in this configuration serve the role of a verification authority because the final data state of the agent can be compared against the incremental data states that are retrievable by collection activities. Detection of truncation violations is supported in this mode but not absolutely prevented when multiple colluding hosts are present. Data aggregation implemented in this manner gives more freedom for using multi-hop agent logic. This architectural variation also resembles execution tracing proposed by Vigna in [22], but communications with the host in our scheme are meant to verify integrity of data (versus code execution) and are also automated (versus ad-hoc). The underlying data collection architecture itself can be used to incorporate or support other security measures such as execution tracing and data encapsulation [4,5,7]. 3.4 Fault Tolerance and Security Issues There are several fault tolerance issues that need to be addressed in our approach, just as in other schemes. For example, when storage space is exceeded in data bin services, some form of queue management is implemented (much like routers discard packets under certain load conditions). One or more trusted third parties can be used for data collection activities or task agent hosting (instead of the originating host) to allow for disconnected host operations. Timeout of task agents that must wait for results of both the computation agent and the data collection agents can be mitigated by providing time-based services that determine when agents have been unreasonably detained or diverted. As with any multi-agent or mobile agent system, recovery from errors when messages are not delivered or when migration is not possible needs to be addressed. Failure of data bin services would require an alternative or default data storage service in the network if the host facility becomes unavailable. Failure of the original task agent, failure of one or more computation agents, and failure of data collection agents can be mitigated by such approaches as the shadow model of [14]. Other work on fault-tolerance such as [12,13,15] provide approaches to mitigate host failures and malicious activity. Denial of service or random alterations of the code are not preventable because the agent server has ultimate power over an agent by having access to executable code and updatable state—though such activity can be detectable. When multi-hop agents with dependent (aggregated) data are used, the ability to mask or guard the function itself is needed to protect the computation agent against smart alterations of the code. We are currently researching other means to accomplish this aspect of agent protection [24] and plan to incorporate future results in consideration of multi-hop migrations. We also do not address the ability to keep keys used by both the computation and collection agent private, though it is an important issue with planned future research along the lines of work such as [25,26]. 3.5 Performance In most cases, adding security to a system always comes with a cost. Multiple interacting agents do bring more complexity and performance overhead to a system and the added benefits of security or fault tolerance has to be weighed against the increased communications costs. Performance issues boil down to the difference between a normal multi-hop agent that carries results with it and returns back to an originating host versus a static task agent that spawns one or more computation agents and receives responses from one or more collection agents. A traditional migrating mobile agent that visits k servers would make k+1 migrations (see figure 1). The size of such an agent grows linearly according to the added data state and the size of the resulting query. When dependent data is designed into the agent logic, described earlier, the agent data state may not grow appreciably at all. For our architecture, there is now the overhead of single static task agent (present on the originating host or a trusted third party) and a computation agent that makes k+1 migrations (assuming a multi-hop traversal). At least k additional data collection agents must now make communication with data bin services and provide transport of results back to the host. The impact of doubling network transmission (2k + 1) and the increased consumption of resources due to the interaction of these three agent classes will be the subject of our continued future research. 4 CONCLUSION Enforcing strong data integrity is the goal of many agent system schemes. We propose a multi-agent architecture for preventing data integrity attacks against mobile agents, especially truncations in the presence of multiple colluding hosts. Though the idea of communicating agent state to the originating host has been proposed previously, our architecture formalizes this approach in three classes of cooperating multiple agents and introduces the notion of a data bin service to facilitate data computation and collection activities. We feel this approach offers several security benefits: • • • • It limits the impact any one agent platform can have on another No platform can influence previous computations during execution of the computation agent Impacting future computations in a multi-hop computation would require smart code alteration, which is the subject of other research in [24] Integrity attacks are reduced to denial of service We rely on the assertion that results of an agent computation must be carried back at some point to an originating host. It is the exposure of these incremental results to possibly malicious hosts that motivates separation of data computation activities from data collection activities. Whether it is in the form of a modified agent state or as a combination of results that are embedded in a collection of agent state values, the agent either carries this set of data states within it or the state can be left at an agent platform and delivered by another, more secure, means. The multi-agent approach also allows applications to be developed in a conceptual manner by leveraging the concept of agency while still providing a strong bound on data integrity and prevention of malicious host activity. The novelty of distinguishing between data computation and data collection to support data integrity in mobile agents will also provide continued avenues for future research and analysis. 5 REFERENCES [1] G. Vigna, “Mobile Agents: Ten Reasons For Failure,” Proceedings of MDM 2004, pp. 298-299 Berkeley, CA January 2004. D.M. Chess, B. Grosof, C. Harrison, D. Levine, C. Parris, and G. Tsudik, “Itinerant Agents for Mobile Computing,” Journal IEEE Personal Communications, vol. 2, no. 5, pp. 34-49, October 1995. V. Roth, “Mutual protection of co--operating agents,” in J. Vitek and C. Jensen, editors, Secure Internet Programming: Security Issues for Mobile and Distributed Objects, LNCS 1603, New York, NY, USA: SpringerVerlag, pp. 275-285, 1999. G. Karjoth, N. Asokan and C. Gulcu, “Protecting the computation results of freeroaming agents,” in K. Rothermel and F. Hohl, editors, Proc. of the Second International Workshop, Mobile Agents 98, LNCS 1477, Springer-Verlag, pp. 195-207, 1998. B. Yee, “A sanctuary for mobile agents,” in J. Vitek and C. Jensen, editors, Secure Internet Programming, volume 1603 in LNCS, pp. 261–274, New York, NY, USA, 1999. Springer-Verlag Inc. N. M. Karnik and A. R. Tripathi, “A security architecture for mobile agents in Ajanta,” in Proceedings of 20th International Conference on Distributed Computing [2] [3] [4] [5] [6] Systems, pp. 402–409, IEEE Computer Society Press, 2000. [7] A. Young and M. Yung, “Sliding Encryption: A Cryptographic Tool for mobile agents,” in Proceedings of the 4th International Workshop on Fast Software Encryption, FSE ’97. January 1997. [8] S. Loureiro, R. Molva, and A. Pannetrat, “Secure Data Collection with Updates,” in Electronic Commerce Research Journal, 1/2:119-130, February/March 2001. [9] V. Roth, “Empowering mobile software agents,” in Proc. 6th IEEE Mobile Agents Conference, LNCS Volume 2535, pages 47–63. Spinger Verlag, 2002. [10] E.C. Vijil and S Iyer, “Identifying collusions: Co-operating malicious hosts in mobile agent itineraries,” in K.Fischer and D. Hutter, editors, Proc. of 2nd Intl. Workshop on Security of Mobile MultiAgent Systems (SEMAS'2002), Bologna, Italy, July 2002. [11] P. Maggi and R. Sisto, “A Configurable Mobile Agent Data Protection Protocol,” in Proc. of the 2nd Int. Joint Conference on Autonomous Agents and Multiagent Systems (AAMAS'03), 2003. [12] F. Schneider, “Towards fault tolerant and secure agentry,” in Proc. of the 11th Int. Worskhop on Distributed Algorithms, LNCS 1320, Springer-Verlag, Berlin Germany, 1997. [13] H. Vogler, T. Hunklemann and M. Moschgath, “An Approach for Mobile Agent Security and Fault Tolerance Using Distributed Transactions,” in Proc. International Conference on Parallel and Distributed Systems (ICPADS’97), pp.268-274, Seoul, December 1997. [14] S. Pears, J. Xu, and C. Boldyreff, “A Dynamic Shadow Approach for Mobile Agents to Survive Crash Failures,” Sixth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC'03), pp. 113120 ,Hakodate, Hokkaido, Japan, May 14 - 16, 2003. [15] Y. Minsky, R. Renesse, F.B. Schneider, and S.D Stoller, “Cryptographic Support for Fault-Tolerant Distributed Computing,” in Proceedings of the Seventh ACM SIGOPS European Workshop, pp. 109-114, Connemara, Ireland, September 1996. [16] B. Yee, “Monotonicity and Partial Results Protection for Mobile Agents,” in Proceedings of 23rd International Conference on Distributed Computing Systems, Providence, Rhode Island, May, 2003. [17] H. Kim Tan, L. Moreau, “Extending execution tracing for mobile code security,” in Fischer, K. and Hutter, D., Eds. Proc. of 2nd Intl Workshop on Security of Mobile MultiAgent Systems (SEMAS'2002), pages pp. 51-59, Bologna, Italy, July 2002. s Conference (NAECON), Dayton, OH, October 10-12, 2000. [18] S.R. Tate and K. Xu, “Mobile Agent Security Through Multi-Agent Cryptographic Protocols,” in Proceedings of the 4th International Conference on Internet Computing (IC 2003), pp. 462-468, 2003. [19] S. O'Malley, A. Self, and S. DeLoach, “Comparing Performance of Static versus Mobile Multiagent Systems,” in Proceedings of the National Aerospace and Electronics Conference (NAECON) Dayton, OH, October 10-12, IEEE Press, pp. 282-289, 2000. [20] P. Kotzanikolaou, G. Katsirelos, and V. Chrissikopoulos, “Mobile agents for secure electronic transactions,” in N. Mastorakis, editor, Recent Advances in Signal Processing Communications, World Scientific Engineering Society, pp. 363-368, 1999. [21] Y. Villate, A. Illarramendi, and E. Pitoura, “Data Lockers: Mobile-Agent Based Middleware for the Security and Availability of Roaming Users Data,” in the 7th International Conference on Cooperative Information Systems (CoopIS 2000), Eilat, Israel, September 6-8, 2000, LNCS 1901, pp 275-286, Springer, 2000. [22] G. Vigna, “Cryptographic traces for mobile agents,” in G. Vigna, editor, Mobile Agents and Security, LNCS 1419, Springer-Verlag, June 1998. [23] J. Claessens, B. Preneel and J. Vandewalle, “(How) can mobile agents do secure electronic transactions on untrusted hosts? – A survey of the security issues and the current solutions,” ACM Transactions on Internet Technology. February 2003. [24] W. Thompson, A. Yasinsac, J. McDonald. “Semantic Encryption Transformation Scheme,” to appear in Proc. of 2004 International Workshop on Security in Parallel and Distributed Systems, San Francisco, CA, September 15-17, 2004. [25] S. Chow, P. Eisen, H. Johnson and P.C. van Oorschot, “White-Box Cryptography and an AES Implementation”, Proceedings of the Ninth Workshop on Selected Areas in Cryptography (SAC 2002). [26] S. Chow, P. Eisen, H. Johnson and P.C. van Oorschot, “A White-Box DES Implementation for DRM Applications”, Proceedings of 2ndwork ACM Workshop on Digital Rights Management (DRM 2002), November 2002.
© Copyright 2026 Paperzz