background image

Java 教程:Java 安全机制在移动 Agent 中的应用

  引言
  随着 Internet 覆盖范围的日益扩大,有价值的信息资源在不断的增长,对网络的高
效性、智能性、主动性和灵活性提出了更多的要求,对于如何捆绑分布异构环境中信息源
的问题变得越来越突出。在网络分布式系统的实际应用中,一般采用 Server/Client 结构,
在这种结构中,运行于 Server 和 Client 上进程间的通信是通过信息传送和远程过程调
用(RPC)实现的,一般是同步实现的,即 Client 向服务器发出请求后就挂起本地进程而
等待结果,远地 Server 按要求执行完所要求的数据处理后返回结果,当本地进程得到结
果后就恢复运行。移动 agent 是这些概念的延伸,它是一个由 Client 向 Server 发送的一
个程序,包括了代码、数据和执行逻辑。移动 agent 不必把结果返还给客户机,它可以迁
移到其它服务器,把信息传回给源客户机,也可以通过适当安排迁移回源客户机。因此,
与简单的过程调用相比,移动 agent 具有更强的自治性。它很好地解决了网络通信的瓶
颈问题,增加了任务处理的并行程度,增强了系统的灵活性、可扩充性及容错能力。因此
移动 agent 己经逐渐应用到各种分布式网络中,相信移动 agent 在未来的军事信息安全、
企业信息传输安全保密方面会有好的发展前景。
  移动 Agent 技术应用范围日益广泛,随之而来的系统安全性问题也就日益突出。本
文对移动 Agent 系统中的主要安全威胁和 Java 语言的安全机制做了细致的分析,提出
了利用 java 安全机制解决移动 Agent 安全问题的方法。
  移动 agent 的安全问题
  虽然移动 Agent

——

技术具有很多优点,但是一个严峻的问题

安全却阻碍了它的应

用。移动 Agent 可以把多台分布的计算机连接起来,构成一个计算基础设施,在其上可
同时运行属于不同用户而且是潜在的不可信任用户的分布式应用程序。这些计算机分别属
于不同的组织,有各自不同的用途,通过公共通信设施进行通信。在这样的环境下,存在
着各种可能的不安全因素以及安全攻击。例如,未被授权的用户可以监听网络线路,在移
动 Agent 传输过程中窃听甚至修改其代码或数据;  

当 Agent 运行时,可能会攻击当地的

主机,故意占用过多资源,或者利用系统中的漏洞取得特权,进而攻击主机或其它
Agent 等等。归纳为如下几类:

 

  第一类安全问题主要是恶意的或者是有错误的 Agent 利用主机上安全设施的不足或
缺陷发起针对主机的攻击,主要有伪装、拒绝服务和未授权访问。

 

  第二类问题是指 Agent 可能会利用系统的缺陷对在主机上运行的其它 Agent 进行
攻击,包括伪装、未授权访问、拒绝服务和抵赖。其实这个问题可以看成是第一类问题的子
问题,首先,因为主机上的 Agent 

 

支持环境可能就包含一些 Agent,如负责通信的

Agent

 

,管理 Agent 名字空间的 Agent 等,对这类 Agent 的攻击等于是对系统进行攻

击。其次,可以把主机上运行的 Agent 看成是主机的一部分资源,Agent 对其它 Agent 
进行攻击也就是对主机的攻击。再次,从目前已有的安全措施来看,解决这两类问题所使
用的技术十分类似。

 

  第三类,在移动 Agent 

 

环境下,不仅可能会有恶意的 Agent,而且也会存在恶意

 

的主机对 Agent 

 

进行破坏。由于 Agent 发送到主机后要在其上运行,它的代码和数据以

及运行时刻的通信对主机来说都是暴露无疑的,可以说主机为刀俎,Agent 为鱼肉,主

 

机可以对 Agent 

 

采取任何动作,所以保护 Agent 是所有问题中最困难的。也正因如此,