已阅读5页,还剩69页未读, 继续免费阅读
(计算机科学与技术专业论文)基于移动agent的分布式入侵检测系统.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 随着网络技术的发展和i n t e m e t 在全球的推广,网络在给人类社会带来便利 的同时,网络安全问题也困扰着网络技术的发展和应用,信息安全问题也成为社 会关注的焦点之一。在信息技术的发展过程中,信息安全系统也经历了几个重要 阶段,起初是通信保密,后来发展到信息安全,而将来会是信息保障。下一代互 联网的研究已经提上议程,新一代网络的安全问题也是今后研究的热点。 基于a g e n t 的分布式入侵检测系统是当今入侵检测研究领域的个热点,国 内外的学者提出了很多系统模型,也有公司推出了基于a g e n t 的入侵检测产品。 但是,在这些基于a g e n t 的入侵检测模型中,有些采用的是固定的a g e n t ,而在 有些采用了移动a g e n t 的模型中,其a g e n t 的功能划分过于粗糙,而且跨平台的 功能并不强大。因此,本文提出了一种基于移动a g e n t 的分布式入侵检测模型: i d m a s 。i d m a s 是一个跨平台的入侵检测系统。并且,在1 d m a s 中我们还按 照系统中的入侵检测原始数据获取与格式化、入侵检测数据搜集、入侵响应以及 系统管理等功能定义了不同种类的移动a g e n t ,以实现更加灵活的入侵检测策略。 在本文的第一章和第二章中,我们将分别介绍网络安全技术和入侵检测的发 展概况:在第三章中我们将介绍a g e n t 技术在入侵检测系统中的应用,并将讨论 在入侵检测系统中使用a g e n t 技术的优势以及不足之处;在本文的第四章中我们 将提出一个基于移动a g e n t 的入侵检测系统模型:i d m a s ,并介绍该系统中的 各个组件以及各种移动a g e n t ;在本文的第五章中我们将用j a v a 和c 语言给出 了i d m a s 的一个原型系统的实现,并重点介绍了其中的移动a g e n t 运行平台的 构建以及入侵检测中各种移动a g e n t 间的协作,并在这一章的最后介绍i d m a s 原型系统中使用的入侵检测方法;最后在第六章中我们将给出i d m a s 中的测试 结果并对其进行评估。 关键字:入侵检测,入侵检测系统,移动a g e n t ,分布式系统 a b s t r a c t a b s t r a c t w i t ht h ed e v e l o p m e n to fn e t w o r kt e c h n o l o g ya n dt h es p r e a do fl n l e r n e ti nt h e w o r l d ,o nt h eo n eh a n d ,n e t w o r k sb d n g sg r e a tb e n e f i tt oo u rs o c i e t y , o nt h eo t h e rh a n d , n e t w o r ks e c u r i t yp r o b l e mh a sh i n d e r e dt h ea p p l i c a t i o na n dd e v e l o p m e n to fs u c h t e c h n o l o g y s oi n f o r m a t i o ns e c u r i t yh a sb e e no n eo ft h ef o c u s e so ft h ei n f o r m a t i o n s o c i e t y d u r i n gt h ec o u r s eo f t h ed e v e l o p m e n to f i n f o r m a t i o nt e c h n o l o g y , i n f o r m a t i o n s e c u r i t ys y s t e mh a sp a s s e dt h r e ei m p o r t a n tp h a s e s a tf i r s t ,i tw a sc o m m u n i c a t i o n s e c u r i t y , t h e ni tb e c a m et oi n f o r m a t i o ns e c u r i t y , a n di nt h ef u t u r e ,i tw i l l b e i n f o r m a t i o na s s u r a n c e t h er e s e a r c ho ft h en e x tg e n e r a t i o ni n t e r a c th a sb e g u na n dt h e s e c u r i t yi nt h en e x tg e n e r a t i o nn e t w o r kw i l lb eo n eo f t h ef o c u s e so f t h er e s e a r c h b yn o w , t h er e s e a r c ho nd i s t r i b u t e di n t r u s i o nd e t e c t i o ns y s t e mb a s e do na g e n ti s o n eo ft h em a i nr e s e a r c hf i e l d si nn e t w o r ki n t r u s i o nd e t e c t i o nr e s e a r c h m a n y r e s e a r c h e r sh a v ep u tf o r w a r ds o m et h e o r ym o d e l sa n ds o m ec o m p a n i e sh a v eb r o u g h t f o r w a r ds o m ec o m m e r c i a lp r o d u c t s h o w e v e r , i nt h e s em o d e l so rp r o d u c t s ,s o m eo f t h e md i d n ta d o p tm o b i l ea g e n t ,o rt h ef u n c t i o nm o d u l a r i z a t i o no ft h em o b i l ea g e n t s d i d n ta c c e p tt h er e q u i r e m e n t se v e ni f t h e ya d o p t e dm o b i l ea g e n t s ,f u r t h e rm o r e ,m a n y o ft h e mw e r ep l a t f o r md e p e n d e n t s ow ew i l lb r i n gf o r w a r da ni n t r u s i o nd e t e c t i o n m o b i l ea g e n ts y s t e m :i d m a si n t h i sa r t i c l e i d m a si sap l a t f o r mi n d e p e n d e n t s y s t e m ,f b r t h e rm o r e ,i ni d m a s ,w ew i l lc r e a t es e v e r a lk i n d so f m o b i l ea g e n t sb a s e d o nt h e i rf u n c t i o n sa n dd e f m eam o r ef l e x i b l ei n t r u s i o nd e t e c t i o np o l i c y i nc h a p t e r1a n dc h a p t e r2 ,w ew i l li n t r o d u c et h eb r i e fd e v e l o p i n gh i s t o r yo ft h e i n f o r m a t i o ns e c u r i t yt e c h n o l o g ya n dt h ei n t r u s i o nd e t e c t i o ns y s t e m i nc h a p t e r3 ,w e w i l li n t r o d u c et h eu s eo fa g e n ti ns o m ec l a s s i c a la g e n tb a s e di n t r u s i o nd e t e c t i o n s y s t e m s ,a n dd i s c u s st h ea d v a n t a g e sa n dt h ed r a w b a c k sw h e na d o p t i n ga g e n ti n t o i n t r u s i o nd e t e c t i o ns y s t e m s i nc h a p t e r4 ,w ew i l lb r i n gf o r w a r dai n t r u s i o nd e t e c t i o n m o b i l ea g e n ts y s t e m :i d m a s ,a n di n t r o d u c ei t sc o m p o n e n t sa n dt h ea g e n t so fi t i n c h a p t e r5 ,w ew i l lp r o v i d ea m o d e ls y s t e mi m p l e m e n t e db yj a v aa n dcp r o g r a m m i n g l a n g u a g e i nt h el a s tc h a p t e r , w ew i l lp r o v i d es o m et e s tr e s u l ta n dt h e ne v a l u a t et h e s y s t e m k e y w o r d si n t r u s i o nd e t e c t i o n ,i d s ,m o b i l ea g e n t ,d i s t r i b u t e ds y s t e m i i i 南开大学学位论文版权使用授权书 本人完全了解南开大学关于收集、保存、使用学位论文的规定,同意如下各项内 容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电 子版,并采用影印、缩印、扫描、数字化或其它手段保存论文:学校有权提供目录检索以及 提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送 交论文的复印件和电子版;在不以赢利为目的的前提下,学校可以适当复甫l 论文的部分或全 部内容用下学术活动。 学位论文作者签名 l 7 杆 年,月1 。日 经指导教师同意,本学位论文属于保密,在年解密后适用 本授权书。 指导教师签名: 。 1 淑助 学位论文作者签名: 慨队 n e w b y t e a r r a y ( e n v , b u f - s i z e ) 定义类型变量,对应的j a v a 类分别是:p a c k e t 类、d e v i c e 类和f i l t e r 类 j c l a s se l s _ p k t - - ( + e n v ) - f i n d c l a s s ( e n v , ”p a c k e t ”) ; j c l a s sc l s _ d e v = ( + e n v ) - g e t o b j e c t c l a s s ( e n v , d e v i c e ) ; j c l a s sc l s _ f l t r = - ( + e n v ) 一 g e t o b j e c t c l a s s ( e a v ,f i l t e r ) ; ,获取所需要的j a v a 对象中的函数的指针 j m e t h o d l dm i d _ p k t _ c n s t r - - ( e n v ) - g e t m e t h o d l l ) i :e n v , c l sp k t , g e t m e t h o d l d ( e n v , c l s _ d e v , ”g e t d e v i c e ”,”0 v ”) ; j m e t h o d l dm i d _ g e t _ f l t r = ( + e n v ) - g e t m e t h o d l d ( e n v , c l s _ f l l r , ”g e t f i l t e r , 0 v ”) ; ,通过调用j a v a 对象中的函数得到数据包捕获函数的参数 c h a r * d e x 一+ e n v ) - g e t s t r i n g u t f c h a r s ( e v ,p e n v ) - c a l l o b j e c t m e t h o d ( e n v , e l sp k t ,m l d g e t , d e v ) ) ; c h a r + f i l t e r - ( + e n v ) - o e t s t r i n g u t f c h a r s ( e n v , ( * e n v ) - c a l l o b j e e t m e t h o d ( e n v , c l s _ f l t r , m i d _ g e t _ f l l r ) ) ; ,调用其他本地函数实旌数据包捕获操作 c a p m r e _ p a c k e t o b ap k t _ b u f , d e v , f i l t e r , p r o m i s e _ m o d e ) ; 调用p a c k e t 类的构造函数,生成一个新的p a c k e t 类,并将其返回 r e t u r n ( * e n v ) - n e w o b j e c t ( e n v , e n v , c l sp k l , m i d p k t _ _ e n s t q b ap k t _ _ b u f ) ; 上面的程序段简要描述了在本地函数中对j a v a 对象的传递和使用,虽然有 些繁琐,但参数j n i e n v 数据结构确实为本地接口函数访问j a v a 对象提供了支持。 在大多数实现中,我们在本地接日函数中仅进行j a v a 对象的传递以获取参数或 根据函数的返回值创建j a v a 对象,而将具体的操作交给其他本地函数或其他库 文件提供的库函数来实现,比如本例中接口函数调用本地函数c a p t u r c j o a c k e t 0 实现具体的数据包截取操作。因此,也可以把这些接口函数看作是其他本地函 数的适配函数。 4 1 本地函数库和本地函数适配类库的创建 在实现各种本地接口函数以后,再将它们编译到各种库文件中。在w i n d o w s 系统上,我们可以将函数它们编译到动态链接库n e t w o r k o p e r a f i o n d l l 中;而在 第五章原型系统设“ u n i x l i n u x 系统上,我们则可以将它们编译到共享对象n e t w o r k o p e r a t i o n s o 中 去。 本地函数库由多个库文件组成,这些库文件导出的函数实现所有的操作系 统相关的操作,比如日志文件读取、获取操作系统信息、网络数据截取等等。 通常,本地函数库和本地函数适配类库在安装m o b i l ea g e n t 运行平台时进行安 装;但是,我们也可以通过m a n a g e m e n ta g e n t 对其进行管理。 5 1 2 通信接口的实现 通信接口是m o b i l ea g e n t 运行平台控制器的一个组件,它实际上是一个 c o r b a 对象,在这个c o r b a 对象中定义了m o b i l e a g e n t 运行平台需要导出的 所有通信接口函数。这些接口函数定义了m o b i l ea g e n t 运行平台的基本操作, 比如分派一个a g e n t 。同时,为实现该c o r b a 对象的注册与导出,我们还使用 了c o r b a 2 2 规范提出的“可移植对象适配器”( p o r t a b l eo b j e c t a d a p t e rp o a ) 。 p o a 规范定义了引导客户端的请求到具体的对象应用的机制。p o a 提供了标准 的a p i 去登记或激活对象应用。p o a 是灵活的c 0 r b a 编程模型模块,并且提 供了大量的规则配置它的行为,j a v a l 4 规范对此提供了完全的支持。通信接口 的具体实现如下图所示: 图5 1 通信接口的实现 在图5 1 中,通信接口对象作为一个侍服器( s e r v a n t ) 在p o a 对象中注册;而 o r b d ( o b j e c t r e q u e s t b r o k e r d a e m o n ) 是j a v a 开发环境提供的一个工具,o r b d 4 1 第五章原型系统设计 包括暂态命名服务( t r a n s i e n tn a m i n gs e r v i c e ) 和持续命名服务( p e r s i s t e n t n a m i n gs e r v i c e ) 。o r b d 工具运行在某个客户和服务器都能访问的节点上,并 在约定的端口上侦听,它使得c o r b a 环境下的客户端能够透明的定位服务端上 的永久对象。在客户端向o r b d 发出名字解析之前,服务器端必须向o r b d 注 册其导出的c o r b a 对象。在定位了服务器端的c o r b a 对象( 在这里是通信接 口对象) 之后,客户端即可以通过服务器端的o r b 对象以及p o a 得到远程 c o r b a 对象的引用,并调用其导出的方法。 每一个m o b i l e a g e n t 运行平台上都有一个通信接i = 1 对象,而c o r b a 的使 用使得i d m a s 的分布式方法调用成为可能,它也让i d m a s 的上层应用不必再 去关心各种底层的通信细节。 5 1 3a g e n t 的实现 在m o b i l e a g e n t 系统的实现中,我们主要需要考虑以下几个方面的问题: a g e n t 的移动:a g e n t 必须具有在安装了m o b i l e a g e n t 运行平台的不同节 点之间移动的能力: a g e n t 运行状态的保存和恢复:a g e n t 必须具有保存当前的运行状态,并 在到达远程节点以后恢复在前一个节点上的运行状态的能力; 安全问题:m o b i l ea g e n t 运行平台必须具有验证a g e n t 的身份并阻止 a g e n t 访问系统中的非授权资源的能力; a g e n t 间通信:a g e n t 必须具有定位其他a g e n t 并与之通信的能力。 上述问题涉及到a g e n t 的实现以及a g e n t 类装载器的设计以及j a v a 安全控 制等诸多方面,下面,我们将就这些方面给出i d m a s 的解决方案。 1 ) a g e n t 类 在i d m a s 中,每一个a g e n t 都由一个j a v a 类实现,而这些类都继承自a g e n t 基类。如下图所示: 第五章原型系统设计 图5 2 i d m a s 中的a g e n t 的继承关系 在a g e n t 基类中,我们实现了几个主要方法,这些方法用于向a g e n t 类装载 器提供接口;通过这些接口方法,a g e n t 类装载器可以实现保存和恢复a g e n t 运 行状态、启动a g e n t 的运行以及获知a g e n t 的下一跳地址等操作。但是,a g e n t 本身并不调用这些方法,它们都将由a g e n t 类装载器调用,具体如下: p u b l i cv o i ds e t s t a t e o u t p u t s t r e a m ( b y t e a r r a y o u t p u t s t r e a mb a o u t ) :通 过该方法,a g e n t 类装载器可以向a g e n t 提供一个独立于a g e n t 对象的 b y t e a r r a y o u t p u t s t r e a m 对象:b a o u t ;通过该对象a g e n t 可以将自己的状 态信息写入a g e n t 外部的一个字节数组中,这些状态信息不仅可以是一 些原始数据结构,如果用o b j e c t o u t p u t s t r e a m 对象对b a o u t 对象进行包裹, a g e n t 还可以向字节数组中写入对象信息; p u b l i cv o i ds e t s t a t e l n p u t s t r e a m ( b y t e a r r a y l n p u t s t r e a mb a i n ) :通过该 方法,a g e n t 类装载器可以向a g e n t 提供一个独立于a g e n t 对象的 b y t e a r r a y l n p u t s t r e a m 对象:b a i r n 通过该对象a g e n t 可以从a g e n t 外部 的一个字节数组中读取自己在上一次移动前保存的状态信息,这些状态 信息不仅可以是一些原始数据结构,如果用o b j e c t i n p u t s t r e a m 对象对 b a i n 对象进行包裹,a g e n t 还可以从字节数组中读取对象信息; p u b l i cn e x t h o pg e t n e x t h o p o : 通过该方法,a g e n t 类装载器可以获知 a g e n t 的下一跳目的地址,该地址被包裹在一个n e x t h o p 对象中,以便 将a g e n t 移动到正确的下一跳;但是,在a g e n t 退出在该节点的运行以 前,它必须决定自己的下一跳地址,并设置相应字段,使得a g e n t 类装 第五章原型系统设计 载器可以得到这个地址: p r o t e c t e dv o i dr u n 0 :该方法相当于普通j a v a 类的m a i n ( ) 方法,它是每 一个a g e n t 的主线程的入口点,a g e n t 类装载器通过调用该方法启动一 个a g e n t ;要注意的是,该方法的属性是:p r o t e c t e d ,因此,每一个a g e n t 的派生a g e n t 都应当根据需要实现自己的r u n ( ) 方法,以实现更具体的功 能。 2 ) 对a g e n t 类的字节代码的包装 a g e n t 的移动过程中,我们需要传输a g e n t 类及其使用到的未在m o b i l e a g e n t 运行平台上安装的类的字节代码( “c l a s s ”文件) 以及a g e n t 状态信息( 存储在 一个字节数组中) :因此,为了保证这些数据的传输过程的原子性并隐藏对这些 原始数据的操作细节,我们定义了两个类对这些信息进行包装,它们是c l a s s d a t a 类和a g e n t w r a p p e r 类。 其中,c l a s s d a t a 类用于对某个j a v a 类的字节代码数据的包装,它将一个j a v a 类的类名及其字节代码包装到一个对象中,并提供了对这些数据进行操作的方 法,这些方法包括:查询被包装的类的名字、取得被包装类的字节代码等。 而a g e n t w r a p p e r 对象则包含了该a g e n t 移动过程中所有需要传输的j a v a 类 的字节代码以及该a g e n t 的状态信息,它使用了c l a s s d a t a 类。a g e n t w r a p p e r 类 持有两个私有( p r i v a t e ) 字段,它们的定义如下: p r i v a t ec l a s s d a t a 】c l a s s d a t a s t r o r e = n u l l ; p d v a t eb y t e 】a g e n t s t a t e d a t a = n u l l ; 其中,c l a s s d a t a 类型的对象数组c l a s s d a t a s t o r e 保存需要传输的所有类的字 节代码;而字节数a g e n t s t a t e d a t ad , i | 保存a g e n t 的状态信息,但是,a g e n t w r a p p e r 并不知道这些状态信息的具体含义,它仅仅将它看作一个无意义的字节数组。 同时,a g e n t w r a p p e r 类还提供了一系列用于操作这些数据的方法,这些方法将 由a g e n t 类装载器调用,具体如下: p u b l i ca g e n t w r a p p e r ( f f l e 1e l a s s f i l e s ) :a g e n t w r a p p e r 类提供了一个以 一个文件列表为参数的构造函数,使得它可以在多个“c l a s s ”文件的基 第五章原型系统设计 础上构建一个a g e n t w r a p p e r 对象; p u b l i cb y t e l 】g e t c l a s s d a t a ( s t r i n gn a m e ) :该方法将在c l a s s d a t a 类型的 对象数组c l a s s d a t a s t o r e 中检索类名为n a m e 的类的字节代码,并返回给 a g e n t 类装载器,它将根据这些数据向内存中装载一个类; p u b h cb y t e a r r a y l n p u t s t r e a mg e t s t a t e d a t a 0 :该方法返回一个构建在字 节数组a g e n t s t a t e d a t a 之上的b y t e a r r a y o u t p u t s t r e a m 对象,该对象将传 递给a g e n t ,而a g e n t 将通过它读取自己的状态信息; p u b l i cv o i ds e t s t a t e d a t a ( b y t e a r r a y o u t p u t s t r e a mb a o u 0 :该方法中的参 数a b o u t 对象由a g e n t 构建,通过这个对象a g e n t 可以将自己的状态信 息写入字节数组a g e n t s t a t e d a t a ; 要注意的是,a g e n t w r a p p e r 类和c l a s s d a t a 类是安装在本地磁盘上的普通的 j a v a 类,m o b i l ea g e m 运行平台将在本地载入该类;因此,在a g e n t 移动过程中 我们仅传递一个a g e n t w r a p p e r 的对象,而不必传递a g e n t w r a p p e r 类和c a s s d a t a 类的代码文件( 即a g e m w m p p e r e l a s s 和c l a s s d a t a c l a s s ) 。 5 1 4i d m a s 中的a g e n t 类装载器的实现 j v m 本身包含了一个类装载器称为b o o t s t r a pc l a s s l o a d e r ,和m 一样, b o o t s t r a pc l a s s l o a d e r 是用本地代码实现的,它负责加载核心j a v a 类( 即所有 j a v a + 开头的类) 。另外j v m 还会提供两个装载器,它们都是用j a v a 语言编写的, 由b o o m 啪c l a s s l o a d e r 加载;其中e x t e n s i o nc l a s s l o a d e r 负责加载扩展的j a v a c l a s s ( 例如所有j a v a x + 开头的类和存放在j r e 的e x t 目录下的类) ,a p p l i c a t i o n c l a s s l o a d e r 负责加载应用程序自身的类。j a v a 的装载器通过一种委派机制来实 现类的装载,它是把类装载的任务传递给上级的装载器,依次类推,直到 b o o t s t r a pc l a s s l o a d e r 。如果b o o t s t r a p ( 2 1 a s s l o a d e r 能够装载这个类,那么它会首 先装载,如果不能,则往下传递。特定的类加载器所加载的类的命名空间与使 用其他类加载器加载的类的命名空间彼此隔离。使用不同的类加载器加载受信 任的类和不受信任的类,这就减少了不受信任的类替换受信任的类从而导致欺 骗性攻击的可能性。 但是,因为j v m 自带的类装载器只能从本地文件系统加载标准的j a v a 类文 件,并且缺省情况下这些类装载器都不提供我们要求的安全措施;因此,为了 第五章原型系统设计 实现动念地加载来自网络的a g e r n 类并确保这些a g e n t 类的运行符合系统的安全 要求,i d m a s 实现了自己的类装载器:a g e n t c l a s s l o a d e i 。对于从网络或者本地 文件系统接收的每一个a g e n t 类及其使用到的其他非本地类,i d m a s 都会为其 创建一个独立的a g e n t c l a s s l o a d e r ,并装载这些类,因此,i d m a s 中的类装载 器构成了一个树型结构,如下图所示: 图5 3i d m a s 中类装载器的使用 】) a g e n t 类装载器的基本功能的实现 每一个自定义的j a v a 类装载器都必须继承自j a v a 开发环境提供的 c l a s s l o a d e r 类,并重载c l a s s l o a d e r 类中类装载方法,以实现自定义的类装载行 为。在上一节的讨论中,我们已经知道,a g e n t 类文件及其状态信息是包裹在一 个a g e n t w r a p p e r 对象中在网络上进行传输的;因此,a g e n t c l a s s l o a d e r 构建在 一个a g e n t w r a p p e r 对象的基础上,并重载了c l a s s l o a d e r 类的f i n d c l a s s 0 方法, 该方法从一个a g e n t w r a p p e r 对象中获取a g e n t 的字节代码并将该a g e n t 类载入 内存,下面的程序段说明了这一过程: p u b l i cc l a s sf i n d c l a s s ( s t r i n gn a m e ) 在a g e n t c l a s s l o a d e r 的构造函数中给定 a g e n t w r a p p e ra w = g e t a g e n t w r a p p e r 0 ; 从a g e n t w r a p p e r 对象中载入a g e n t 类 第五章原型系统设计 i f f a w ! = n u h ) b y t e 【】d a t a = a w g e t c l a s s d a t a ( n a m e ) ; i f f d a l a ! = n u l l ) r e t u r nd e f i n e c l a s s ( n a m e ,d a t a , 0 ,d a t a 1 e n g t h ) ; r e t u r nn u l l ; 在上面的程序段中,我们重载了c l a s s l o a d e r 类中的方法d e f i n e c l a s s 0 ,该 方法按照j a v a 规范对字节代码进行解释,载入相应的j a v a 类;并且其属性为 f i n a l ,因此该方法是不能被重载的,这保证了在对字节代码的解释这一点上,所 有的类装载活动都必须遵循相同的标准。因此,每个用户自定义的类装载器的 不同之处仅在于它们找到j a v a 类字节代码的方法。 在方法f m d c l a s s o 中我们定义了找到a g e n t 及其相关类的字节代码的方法, 接下来,我们将在方法r u r t a g e n t 0 中载入一个a g e n t 类,并创建该类的一个对象, 恢复其迁移以前的状态,启动该a g e n t ,保存其运行结束时的状态,最后根据该 a g e n t 对象提供的下一跳信息将a g e n t 发送到其他平台或写入本地硬盘。在这一 过程中,我们用到了j a v a 的r e f l e c t i o n 机制,通过r e f l e c t i o n 机制,a g e n t c l a s s l o a d e r 可以在运行期间动态地获取一个a g e n t 类的信息。在实际过程中, a g e n t c l a s s l o a d e r 将通过r e f l e c t i o n 机制取得a g e n t 的r e s t o r e s t a t e 0 、r u n ( ) 、 s a v e s t a t e 0 以及g e t n e x t h o p 0 等方法的引用( r e f e r e n c e ) 以及这些方法的参数类 型和返回值等信息,并调用这些方法,实现a g e n t 的各种基本功能,这些方法 我们在前一节中已有介绍,此处不再详述。流程图5 4 说明了这一过程,具体的 程序实现可参见附录a 。 另外,a g e n t c l a s s l o a d e r 并没有一次性将所a g e m w r a p p e r 对象携带的类都 载入内存,它仅仅将a g e n t 类载入,并实例化了一个a g e n t 对象,这景我们用到 了a g e n t c l a s s l o a d e r 的按需载入特性,当a g e n t 对象需要创建其他类的对象时, a g e n t c l a s s l o a d e r 将根据j a v a 类装载器的委托机制,向其“父装载器”,请求载 入该类,如果要求装载的类不在本地文件系统中,则该请求最终将回到 a g e m c l a s s l o a d e r 自身,则a g e n t c l a s s l o a d e r 将会调用方法f m g c l a s s 0 从 a g e n t w r a p p e r 对象中动态地载入该类。但是,在性能要求较高的情况下,也可 第五章原型系统设计 以在m n a g e n t o 方法中一次性载入a g e n t w r a p p e r 携带的所有类。 r 玎嫱 工 载) n a g e n ! 类 i 倒建卟a g e n t 对象 0 b l , a g e a l w r a p p e r 腿携懵的a g e n t 袄鸯倩息巾恢复a g e n t 状吝 l 调用r u n o 矗法,房动a g e - t 的透抒 l 唧t 运行维束。将a g e n t 状奄保存刊 g 蛳1 w 障p 弦r 对象中 i 获取a g e n t 的卜一跳铬息 f j l 将a g e n t 和a p p e r 对象葛入本翘硬盘将h g e n t w r n p p e r 发向下r 跳 il ( 结束 ) 蹦5 4 a g e n t c l a s s l o a d e r 中的a g e n t 的运行周期 2 ) a g e n t 的身份验证和访问控制 在i d m a s 的实现中,系统本身的抗攻击能力也是设计时要关注的重要方面 之一。a g e n t 可能来自于一个不受信任的源。这些a g e n t 中包含的恶意代码可能 对i d m a s 的m o b i l e a g e n t 运行平台或其宿主进行攻击,或者访问m o b i l e a g e n t 运行平台或其宿主之上的敏感信息;因此,必须对a g e n t 的身份进行验证并控制 a g e n t 对某些关键资源的访问。 第五章原型系统设计 j a v a 2 规范为j a v a 对象的身份验证提供了完善的支持,在i d m a s 中,我们 使用了j a v a 2 规范的安全体系结构提供的j a v a s e c u r i t y s i g n e d o b j e c t 类,这个类是 其它安全要素的基本积木块。一个s i g n e d o b j e c t 包含另一个可序列化的对象,将 要签名的对象和它的数字签字。如果数字签名不是空,它将包含一个有效的已 签名的对象的数字签名,这可以用下图表示: 因此,我们可以在创建a g e n t w r a p p e r 对象时按照某种算法提取其数字签名, 将其包裹到一个s i g n e d o b j e c t 中,并在接收端的a g e n t c l a s s l o a d e r 中验证其数字 签名。底层的数字签名算法是通过一个s i g n o 方法的调用来设置的,该方法的参 数是s i g n a t u r e 对象,算法可以是如下算法之一:n i s t 标准d s a 、使用d s a 和 s h a 1 。与数字签字一样,算法是用通常方式说明的,如”s h a d s a ”。生成密 钥对可用l a v a 提供的类k e y p a i r g e n e m t o r ,用其中的g e t l n s t a n c e 0 方法创建 k e y p a i r g e n e r a t o r 对象,在用i n i t i a l i z e 进行初始化,最后用g e n e r a t e k e y p a i r o 生 成密钥对,密钥对生成后,就可以将其写入文件中。通过网络或其他方式公告 用户,用户接收到数据文件和签名文件后,就可以使用公钥来校验数据文件的 数字签名。在发送端,我们可以对a g e n t w r a p p e r 对象作如下处理: s i g n a t u r es i g n i n g e n g i n e2s i g n a t u r e g e t l n s t a n c e ( a l g o r i t h m ,p r o v i d e r ) ; s i g n e d o b j e c ts o = n e ws i g n e d o b j e c t ( w r a p p e r o b j e o t s i g n i n g k e y , s i g n i n g e n g i n e ) ; 而在接收端,a g e n t c l a s s l o a d e r 可以按照以下方法来验证一个a g e n t w r a p p e r 对象的身份,并在在通过验证以后,取得a g e n t w r a p p e r 对象: 第五章原型系统设计 s t r i n ga l g o r i t h m ;s o g e t a l g o r i t h m 0 ; s i g n a t u r ev e r i f l c a t i o n e n g i n e2s i g n a t u r e g e t l n s t a n c e ( a l g o r i t h m p r o v i d e r ) ; i f f s o v e r i f y ( v e r i f i c a t i o n e n g i n e ) 一- - - t m e ) a g e n t w r a p p e rw r a p p e r o h j = ( a g e n t w r a p p e r ) s o g e t o b j e c t 0 ; 经过这样的处理以后,i d m a s 即可保证包裹在a g e n t w r a p p e r 对象中的 a g e n t 及其状态信息的合法性。并且,仅需对a g e n t c l a s s l o a d e r 作简单的修改我 们就可以实现这一点。 在安全性要求较高的情况下,我们还应当对a g e n t 的行为进行控制,而j a v a 2 规范的安全体系结构提供的j a v a s e c u r i t y a c c e s s c o n t r o l l e r 类及其他相关类则为此 提供了支持。通过j a v a s e c u r i t y a c c e s s c o n t r o l l e r 类我们可以实现:1 、根据现行 安全策略,决定是否允许对关键系统资源的访问;2 、将某些代码标识为”特权” 代码,从而影响随后的访问决定;3 、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 库存分析师库存数据统计分析报告
- 应急事件处理计划及预案制定
- 护理专业面试常见问题解析与应对策略
- 2025年嵊州银行面试题及答案
- 华中集团高级面试问题解答职场竞争力提升策略
- 2025辽宁能源控股集团所属电机集团拟聘人员笔试历年参考题库附带答案详解
- 安全运维保密工程师安全运维文档管理规范
- 媒介面试技巧实战如何提高面试通过率
- 安全防护用品管理员安全防护用品管理员职业发展路径分析
- 2025江西省旅游集团文旅科技有限公司入闱考察笔试历年参考题库附带答案详解
- 肾上腺疾病临床多学科协作
- 《麻醉技术》课件
- 财务大数据分析与可视化课件 项目7 财务分析案例
- GJB9001C-2017版标准培训课件
- 2025中职对口高考-旅游类专业课综合模拟卷( 河南适用) 第1卷(原卷版)
- 客服人员话术培训
- 盐雾测试报告-样张
- 校园展美 课件 2024-2025学年人美版(2024)初中美术七年级上册
- 公司垫付丧葬费赔偿款协议书
- 会议记录表(标准样本)
- 危大工程清单及安全管理措施(样表)-纯图版
评论
0/150
提交评论