科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Java语言安全机制在移动Agent中的应用

Java语言安全机制在移动Agent中的应用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java语言安全机制在移动Agent中的应用

作者:执木 来源:赛迪网技术社区 2007年11月26日

关键字: 应用 Agent 安全机制 java

  • 评论
  • 分享微博
  • 分享邮件

随着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 是所有问题中最困难的。也正因如此,才吸引了许多人花费大量的精力进行研究。

  第四类,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加密扩展包)、JSSE(Java Secure Sockets Extension,Java 安全套接字扩展包)和JAAS(Java Authentication and Authorization Service,Java 鉴别与授权服务)。它们所提供的技术都为Java的安全性助了一臂之力。

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章