才吸引了许多人花费大量的精力进行研究。
第四类,Agent 可以在一个站点上只消耗少量的资源,其行为也完全符合站点的安
全策略,但它却暗中以隐蔽的方式破坏着网络的可用性,进而会使一些主机瘫痪。如恶意
移动 Agent 不断地复制自身,产生大最的移动 Agent,并让它们在网络上来回流动,
从而大量染耗系统的通信与计算资很,并可能最终导致运行环境的瘫痪。对这类攻击的防
治也比较困难,从单个主机着手显然不能解决问题,必须从网络整体考虑。当网络从属于
一个管理者时,网络上的各个主机之间比较信任,找到一个统一的方法相对来说还容易
一些,否则,在像 Internet 这样无中心、无权威的网络上,困难就会大得多。
Java 语言的安全机制
移动 Agent 需要在不同的主机上迁移,这样异质的环境下,移动 Agent 需要有可移
植性,能在不同的主机上执行,因此,像 JAVA 这样的语言具有平台无关性、动态类装载、
多线程和对象序列化等特点,使用相关的 Java 安全机制解决移动 Agent 的安全问题便
是最佳的选择。
在 Java 中能够安全地运行通过 Internet 传递的各种 Applet,正因为如此,Java 不
像别的语言和系统,在事后才想到要实现安全性,或者作为一种对应措施,插入一些安
全性组件,安全机制是 Java 技术的一个不可分割的组成部分。
1、Java
沙箱 (早期安全机制)
Java 安全模式的重点在于保护最终用户不受从网上下载的破坏性程序的干扰。为达
到这个目的,Java 提供了一个专用的运行 Java
程序的沙箱。 安全模型的关键在于沙箱
(sandbox)的概念。其思想是,若在主机上允许驻留一个程序,就必须为该程序提供一个
“
”
玩耍 的场所(即运行环境),但是一般情况下,必须保证程序限制在沙箱中,Java 程序
在它的沙箱内可做任何事情,但出此边界就不能有任何操作。例如,未经确认的 Java
Applet 的沙箱禁止许多操作,其中包括:
禁止对本地磁盘的读写;
除了下载此 Applet 的主机外不能与任何别的主机连接;
禁止建立一个新的进程;
禁止载入一个直接调用本地方法的新的动态库。
通过限定下载代码的可执行操作的范围,在经过字节编码检验器、类加载器和安全管
理器检查使得 Java 程序高效而安全。Java 安全模式可使用户免受破坏性程序的威胁。
2、Java2 所引入的新的安全机制
随着 Java
程序的复杂化、实用化,必须要脱离沙箱运行。核心 Java 2 平台提供了
Java 安全的基本功能:
· 可配置的安全策略可以防止 Java 程序非法读取文件,或非法建立与其它主机的网
络连接,或在未经允许的情况下访问打印机等等。此策略建立在 Java 的存取控制机制上,
相应的存取控制器则依赖于 Java 的类装载器、安全管理器和语言保护等安全机制。
· 要判定程序所读取的数据是否被修改过,可以简单地利用生成消息摘要的方式来实
现,但这种方式安全性并不很高。
· 如果对完整性要求很高,那么可以生成数字签名(digital signature)来检测程序所
读取的数据是否被修改过(或者在发送数据时,使接收数据的一方可以检测数据在传输过
程中是否被修改过)。
· 密钥管理系统可以管理数字签名时用到的密钥。
Java2 引进了一种改进的新型安全结构,主要组件包括:访问权限、安全策略、保护域、
访问控制检查器、对象级的安全等。
Java 提供了三种标准 Java 扩展包:JCE(Java Cryptography Extension,Java 加