1 引 言
随着网络技术的飞速发展,网络正影响并改变着人们生活的方方面面,现有的传统网络的功能单一而封闭,对网络内部结点的功能开发很少,服务只能在端系统实现,使现有服务的优化和扩展、新服务的开发等受到很大的限制。
因此DARPA(美国国防部高级研究计划署)提出一种新型的网络体系结构——主动网络。而具有跨平台移动机制的移动代理技术为计算机网络环境中的许多领域提供了新的解决方案,特别是移动代理技术与主动网络的结合正在逐步受到关注,但相应的安全问题日益突出。
本文主要以移动代理系统的安全问题和主动网络安全的问题来展开,提出一种基于移动代理的主动网络安全架构,并给出了一些相应的策略。
2 基于移动代理的主动网络安全问题
2.1 移动代理
移动代理是能在异构网络主机之间自主地进行迁移的有名字的程序,程序能自主地决定在什么时候迁移到什么地方。在移动时,它能在程序运行的任意点上挂起,然后迁移到另一台主机上重新开始或接着这一点继续往下执行,最后返回结果和消息。移动代理也能克隆自己或者产生子代理,迁移到其他主机上以共同协作完成复杂的任务。移动代理系统是指能创建、解释、执行、传送和终止代理的平台,它由名称和地址惟一标志。每个系统都可以运行多个代理。代理通过和主机服务进行交互来获得所需的服务。移动代理的2大特点就是移动性和自主性。
2.2 MANet主动节点的结构
在MANet中,每个内部网络结点都是一个具有计算能力的主动结点。每个主动结点不仅具有有相当功能的处理器,而且也具备由多种存储设备组成的多级存储系统。实际上它是一个由网络硬件设备、处理机以及相应的软件所组成的系统,如图1所示。虚拟网络层完成传统网络中数据链路层的功能,它通过网络设备接收数据包,对数据包的格式进行识别,并依据数据包格式对其进行分解,然后将数据包所携带的代码和数据等传送给移动代理运行环境MAE,MAE将程序代码作为代理装载运行。代理实现的是客户化的协议程序,它在运行过程中可能还要和基础网络服务,部分进行交互,调用最基本的网络服务,如获取本地以及相邻结点的信息、下一转发结点的地址以及本地结点状态的存取等。经过代理处理后的数据交由虚拟网络层重新封装,然后通过网络设备发送给下一个主动网络结点(或几个网络结点)。
MAE是一个基本的移动代理执行环境,它从虚拟网络层接收数据包并对其进行分析和分解,将其中的程序代码装载执行。同时,它还要监视代理的运行状态,在要执行的程序代码尚未装载时,通过CodeBroker搜索并装载相应的代码块。MAE也要为主动网络系统的安全性提供诸如身份验证、授权以及代码的安全运行等有效的支持。基础网络服务主要是为主动数据包提供最基本的网络协议功能,如本地环境的存取、路由控制以及转发等。它有效地减少了数据包所携带代码的长度,提高了主动网络系统的性能。甚至较为上层的常用网络协议,如TCP,UDP和IP等,也可以作为基础网络服务的一部分以实现与传统网络的兼容性和提高主动网络的性能。
2.3 基于移动代理的主动网络系统
MANet(Mobile Agents Based Active Network)是一个以移动代理系统为基础,通过将主动数据包封装成移动代理来实现利用移动代理系统处理主动网络数据包的主动网络。利用移动代理来实现主动数据包的封装和运行,不仅可以充分利用移动代理的自主性和可移动性,而且提供了更好的主动网络可编程性和灵活性。将主动网络数据包所携带的程序和数据封装成移动代理,使得数据包具有很好的主动性和处理能力。例如,主动数据包可以利用代理的克隆及子代理的生成和分发来实现多路分发等。另一方面,移动代理系统也提供了一些相对于主动网络来说多余的功能,例如,移动代理能在程序运行的任意点上挂起,并在迁移到另一台主机后接着这一点继续往下执行。为了提高整个主动网络系统的性能,要针对主动网络的特性对移动代理系统进行修改,以去除不必要的功能,从而提高系统的性能。事实上,包括本文系统在内的许多基于Java的移动代理系统,如Aglets,Odyssey,Dagent等,由于Java语言本身所存在的程序运行状态的获取问题,都未能实现断点式的代理迁移。此外,支持主动数据包之间的通信对于主动网络来说,开销也太大。
2.4 基于移动代理的主动网络的安全性问题
把具有自主性和移动性的移动代理系统放置在开放性极高的主动网络中,其安全隐患是不言而喻的,因此安全性能成为衡量基于移动代理的主动网络的首要指标。
根据移动代理在主动网络中的位置,我们可以把主动网络的安全问题分为2个方面:一是保护主动结点不受恶意代理的侵犯;二是代理在网络中传输过程中,保护代理不受恶意主动网络结点的窃听或拒绝。
迄今为止,移动代理安全领域所做的研究工作为主动结点运行环境的安全提供了基础,但是由于主动网络系统的安全性还存在许多缺陷和不足以及移动代理是在应用层主动节点上运行的,需要使用主机资源,并对其进行存储,因此安全解决方案应该是双向的,既要保证系统不受恶意的代理和主动包的攻击,也要保证代理和主动包不受执行环境(EE)的非法侵害。针对以上的安全问题,本文提出一些相应的策略。
带有主动包的移动代理在网络中传输,利用现在安全移动代理可以确保移动代理不受其他恶意网络结点的窃听或拒绝。比如通过加密和数字签名技术可以确保主动分组的安全。下面重点讨论在移动代理停留在主动结点中,保护主动节点不受恶意代理的侵犯,提出一些相应的策略。
3 基于移动代理的主动网络安全框架模型
基于移动代理的主动网络MABAN(Mobile AgentBased Active Network)是以移动代理系统为基础,通过将主动封包程序封装成移动代理,从而实现利用移动代理系统来处理主动封包的网络。MABAN的可移动代码在主动结点上运行不可避免的引入了安全性问题。MABAN的安全问题主要包括主动结点、主动封包和端用户等方面。本文主要研究主动结点的安全问题,而主动封包和端用户的安全性研究则是更具挑战性的一项工作。
为解决MABAN中主动结点的安全问题,现设计一个通用的MABAN结点的安全性框架MANSF(MobileAgent-Based Active Network node Security Framework)。此规范符合主动网络安全工作组提出的主动网络结点的安全规范,而且具有可扩展性和通用性等特点。MANSF结点的安全框架图见图2。
由图2可见,MANSF主要包括认证授权模块,移动代理执行环境及访问控制模块。MANSF使用上述模块处理主动封包的流程是:
(1)封包到达结点,进入网络设备通道,如果是主动封包,则转入认证授权模块,否则在虚拟网络层处理;
(2)认证授权模块对封包数据进行完整性检查,并协同域授权中心对用户身份进行认证,提取代码,转入MAEE;
(3)MAEE执行移动代理,实现数据的客户化定制,当需要访问结点资源时转入(4);
(4)访问控制模块根据用户的访问权限,决定是否满足用户的资源访问要求;
(5)用户程序完成,结点将改动过的数据重新封包并通过网络设备通道发送给下一个结点。
3.1 认证授权模块
采用非对称双向认证协议来解决移动代理在主动结点中的运行安全性问题:
站一站协议可以使通信双方互相鉴证身份,较好地解决了传输数据的加密和中间插入攻击。如果移动代理能够通过使用用户的私有密钥签名,则站一站协议可以很好地解决鉴证和消息加密和摘要的工作。但是处于安全性考虑,不应该让移动代理携带着它们用户的私有密钥在网络中迁移。因为这种策略尽管可以使移动代理在任一结点证明自己的身份,但不幸的是,它实际上在所有经过的结点上暴露了它用户的私有密钥。该问题在非对称鉴证协议中用下述方式解决:
(1)当一个移动代理被用户在某个主动结点上启动后,本地文件系统使用移动代理的私有密钥对移动代理的名字空间(Namespace)定义(文件)进行加密(Sigm(Namespace)),产生移动代理的活动签名(Agent ActivitySignature,AAS)。该签名在该代理的整个生命周期中是保持不变的,它确切定义了该代理所要使用的各种资源。
(2)移动代理不携带用户的私有密钥在网络中迁移。
(3)移动代理在与主动结点的双向鉴证中,只传送其公开密钥。由于本系统中的加/解密算法公开,即用私有密钥进行签字,用公开密钥进行验证,所以在移动代理与主动结点的双向鉴证中不必传送解密算法,而只需传送公开密钥。
(4)移动代理也有私有密钥和公开密钥。无论移动代理还是用户都可向认证机构申请自己的私有/公开密钥。
采用这种非对称双向认证协议很好地保护了移动代理在网络传输中不被恶意主动结点入侵。
3.2 移动代理执行环境
MANSF使用Java作为编程语言,MAEE是一个基于Java的移动代理执行环境,运行于JVM层上。这样Java的安全特性就无缝地整合到MANSF中,同时它还要监视代理的运行状态,在要执行的程序代码尚未装载时,通过结点类装载器搜索并装载相应的代码块。一个主动结点可同时运行多个MAEE,MAEE可同时执行多个用户代理,这是为了防止用户代理之间相互攻击,而采取的一种隔离措施.在不同的MAEE中执行的用户代理运行于不同的空间,自然隔离,显然不能相互攻击。在相同的MAEE中,执行的用户代理采取以下措施来保护:
(1)Java语言自身的安全性。Java语言是强类型的,Java类在自己的地址空间执行,且不能使用指针,从而避免了用户代理在执行过程中任意引用内存空间,攻击别的代理。
(2)用户代理使用严格的类型标识来识别,类型标识采用MD5(message digest algorithm 5,信息摘要算法)生成。用户代理被授权以决定其处理。
(3)软状态存储机制。每个代理的状态数据被临时性地存储,将需要共享状态数据的几个用户代理组成一个“状态域”,代理只能操作与其“状态域”相关的状态。
用户代理在MAEE中执行完毕后,MANE调用结点服务,程序将处理后的用户数据、用户代理、证书及用户签名等重新封包,通过虚拟网络层通道继续发送。移动代理的执行环境的安全问题:可信任的执行环境(如Java Card)。
3.3 基于角色的访问控制机制
主动结点收到一个移动代理后,要在它运行之前确定该代理可以访问哪些资源。首先,主动节点通过该移动代理所携带的数字签名确认其身份,然后从管理者配置的安全策略中,检索出该用户对该代理拥有的权限。资源访问控制将利用这些信息在运行时刻决定移动代理是否可以访问某资源。授权给一个用户的移动代理可访问的资源,在MANet系统中,从移动代理管理者的角度看有3类用户,一是移动代理的发送者,二是管理者,三是移动代理旅行中其他主动节点上的用户。如果移动代理管理者对移动代理用户比较信任,认为不会出现恶意的行为,就分配较大的权力给该用户;反之,如果移动代理用户是一个不可信的甚至是匿名的,那么移动代理管理者只能分配很少的权力给该用户,以确保安全。
4 结 语
上述的安全框架的策略部分可用基于Java安全策略实现,主要是通过安全管理器的策略进行替换来扩展Java安全模型,使之适合MANSF的需要。