APP下载

LDAP在IPv6网络IDS中的应用研究

2010-11-26王相林卢庆菲

关键词:服务端公钥密钥

王相林,卢庆菲

(杭州电子科技大学计算机学院,浙江杭州310018)

0 引 言

IPv6把IPSec协议作为必选协议[1],由于IPSec加密算法任意选择,密钥不公开,现有的入侵检测系统(Intrusion Detection System,IDS)无法解密会话的数据包,也就无从检测入侵行为[2]。目前,关于IPSec协议对现有安全防护系统产生的影响的研究甚少,对于这个问题也还没有相关的解决方案[3]。IDS被动监听网络信息,如果让IDS主动和监控网段的主机交换信息以获得密钥数据,会增加它的系统开销。在监控网段设置一个可信的第三方托管密钥[4],让它与IDS进行密钥信息交换,并保证相关的密钥信息只能被IDS读取,可以解决这个问题。轻量目录访问协议(Lightweight Directory Access Protocol,LDAP)基于X.500标准,支持TCP/IP[5]。LDAPServer承担企业网络管理的重任,它能够存储各种类型的信息,可以充当IPv6企业网络中的权威机构来接受托管的密钥。在LDAP中添加相关的条目,将用户用于加密通信的密钥信息加密处理,然后存储到目录服务上。通信主机将密钥信息存储在LDAP server中,IDS从LDAP server处获取密钥信息,这样就可以解密加密数据包,检测入侵行为。

1 模型原型设计

应用LDAP目录服务设计了一个基于C/S计算模式的模型。它的工作原理如图1所示:

图1 模型原型图

图1中实线表示密钥数据流,虚线表示网络数据流。

(1)主机端KEM与服务端KEM的连接。主机端KEM通过密钥交换协议交换动态密钥和服务端KEM建立一个安全信道,然后利用这个信道向服务端KEM发起LDAP身份认证,认证成功后再发送Key、SA等信息,否则拒绝连接。服务端KEM使用IDS的公钥加密Key和SA并丢弃源Key和SA,再把加密的Key和SA以及IP对(会话双方的IP)和时间戳t一起保存到LDAPServer。服务端KEM上保存IDS的公钥证书,以便获取IDS的公钥用于数据的加密,这个机制保证了被加密的信息只有拥有私钥的IDS才能读取。(2)服务端KEM到LDAPServer的连接。LDAP身份验证保证存储数据的用户的合法身份;LDAPServer的内部访问控制机制的约束了操作权限。服务端KEM对LDAPServer操作在同一台机器内,保证了服务端KEM与LDAPServer之间的安全。(3)IDS端KEM到服务端KEM的连接。IDS进行协议分析时发现数据被加密了即向IDS端KEM发起密钥请求,然后IDS端KEM向服务端KEM发起密钥请求。服务端KEM查询LDAPServer,如果有相关密钥则响应该请求并发送Key、SA和相关信息,IDS端KEM并把得到的Key和SA响应给相应协议分析模块对数据进行分析解密再提交给规则分析模块,否则服务端KEM和IDS端KEM依次响应无相关密钥、IDS产生警报并采取相应措施。

2 LDAP协议在IDS模型中的应用

2.1 LDAPServer中存取结构的设计

LDAPServer中增添一个来保存IPSec会话密钥和安全关联信息组织单元类型的条目。在该条目下为网内主机建立一个用户条目,并且为每一个用户设定身份证明,服务端KEM根据此信息来验证客户端KEM的身份。在用户的条目下建立连接条目,保存会话连接上正在使用密钥和安全关联等相关信息。

(1)设计相关条目的对象类。定义自己的属性类型来保存密钥和安全关联信息。该属性存储的数据是一个大小写敏感的ASCII字符。local.schema主要是用来保存一些我们自己设计的对象类和属性类型的定义.把语句Include./schema/local.schema添加到LDAPServer程序的配置文件sladp.conf中去。(2)LDAPServer上添加需要的条目。采用的是klif文件格式录入。首先创建了一个IPSec组织单元,然后在其下为网内主机建立用户条目,并设该条目的定访问密码,用户将凭这个密码来访问该条目及其下的条目。每台主机需要通过人工申请来获得身份许可(Username,Password),只允许主机动态改变自己Password。主机可以在身份认证的前提下通过服务端KEM动态的更新自己在LDAPServer里的IPSec连接。为了进一步保障LDAPServer的上数据的安全,还必须要在sladp.conf中定义访问控制链表来保证每个用户只能对自己的条目进行操作。

2.2 服务端KEM设计以及LDAP的应用

服务端KEM主要分为5个模块,其结构如图2所示:

图2 服务端KEM结构图

(1)LDAP操作模块程序内部结构如图3所示:

服务端KEM通过这个模块对LDAP Server进行各种操作,包括登录LDAPServer、添加数据到LDAPServer和对LDAPServer进行查询。LDAP查询、LDAP更新和LDAP清空后的执行结果都通过缓存Result模块保存在LDAP-Result-Link里等待处理。身份认证模块发出的请求缓存在队列的头部,其他请求都按照FIFO的原则进行,因为同属于这个身份的后续一系列请求都要根据这个身份认证的结果来判断是否要继续执行或者丢弃,所以它具有更高的优先权。

图3 LDAP操作模块的内部结构

1)LDAP查询。首先要比对查询请求的时间戳和保存在LDAPServer上Key的时间戳,在允许的时间差范围内,就返回LDAPServer上Key及相关信息,否则这个查询请求要重新进入缓存。2)LDAP更新。首先要判断LDAPServer中是否已经有数据存档。如果没有则直接加密Key和SA并与IP对和时间戳一起添加到LDAPServer上,否则比较新数据和旧数据的时间戳,存储时间戳较新的密钥信息。3)LDAP清空。LDAP清空就是清除IPSec下所有用户的项目。LDAP清空只在维护时期被执行,首先在IDS手动发起更换私钥,服务端KEM在接到这个请求后执行LDAP清空。

(2)监听/响应模块中密钥相关信息的数据结构分成针对客户端KEM和IDS端KEM两种。两者的差别在于对主机端的通信多一个时间戳字段。服务端KEM通过IPv6协议栈分别与IDS和主机来建立一个安全的连接,之后所有的数据都经过加密后再传输,保证数据保密性。IPv6协议栈每建立一个IPSec连接都将触发生成LDAP更新提交给LDAP操作外模块,并由LDAP操作外模块将Key等相关信息保存到LDAPServer上供IDS使用。

(3)身份认证模块。主机用户在发起密钥传送之前必须先通过身份认证。在处理请求之前要检查身份认证,首先在Identified-User-Link搜索是否已经标示为许可用户,如果则自加1,该用户的Request-Counter并告诉请求处理外模块该用户合法。监听外模块提交的身份认证请求由接收认证子模块来接收,然后进行LDAP查询,如果查询结果用户信息正确则由认证管理子模块添加该用户到Identified-User-Link,每当一个许可的请求被处理完毕也将调用认证管理子模块来对相应用户的Request-Counter自减1,如到0则从Identified-User-Link删除该用户的项,并告知响应外模块可以终止该连接了。

(4)公钥加密模块。模块内部结构如图4所示:

图4 公钥加密模块的内部结构

如果请求处理模块提交了一个证书更新的请求,首先替换原先存储的公钥证书并向LDAP操作模块发起LDAP清空.这是因为IDS端的私钥改变后LDAPServer上的所有原有的数据将变成不可用,因为没有任何一方知道解密的Key。这里加/解密通过同一个调用来完成,通过flag的值来决定是进行加密操作还是进行解密操作,通过state->grp来判断加解密算法是DES还是3DES或者其它。在进行相应的初始化后,对于加密操作主要调用EVP-CipherUpdate(&ctx,result-msg,&dest-data-len,original-msg,orglength)语句结果保存在result-msg中,最终保存到PAYLOAD类型的变量中去。

(5)请求处理模块。模块的内部结构如图5所示:

请求处理模块要接受各种处理请求,根据请求的类型调用相关模块并依据返回的信息做相应的处理。这里用到两个数据链表,第一个用于保存等待处理的请求,另一个即LDAP-Result-Link同LDAP操作模块的 LDAP-Result-Link。链表一的数据结构:Data-Link*Request-Waiting-Link。相应的payload的内部数据是IDS发送过来的公钥证书、Key-Associations和Key-Associations-t中的一个。先判断响应外模块提交的连接是否已认证,如果已认证就将数据缓存到Request-Waiting-Link;提取Request子模块。从Request-Waiting-Link队列中提取的请求,按FIFO的原则进行,并对请求进行类型判断,如果是LDAP操作则提交操作请求给LDAP操作外模块,如果是Update-Certification则调用证书更新外模块;按照FIFO的原则从LDAP-Result-Link中逐个提取子模块,处理后提交给响应处理模块。

图5 请求处理模块的内部结构

3 总 结

随着IPv6的推进,IPv6网络的安全问题越来越得到重视。利用LDAP sever对IPSec密钥进行托管,既解决了入侵检测系统不能对加密通信进行检测的问题,又保证了密钥等敏感信息的安全性,该方案适用于很多高安全和高保密的单位和部门,比如:大公司的商业机密部门、国家安全部门、金融行业的数据中心、电信行业的用户中心等等。LDAP目录服务是基于分布式的C/S模式,本文设计的IDS模型并没有涉及到分布式技术。加解密操作消耗资源很多,可以采用分布式技术对其进行改进。

[1] RFC2401,Security Architecture for the Internet Protocol[S].

[2] RFC4301,Security Architecture for the Internet Protocol[S].

[3] 程憬睿,马严.IPSec与IPv6的网络安全[J].现代电信科技,2006,2:21-23.

[4] 汤惟.密码学与网络安全技术基础[M].北京:机械工业出版社,2004:63-73.

[5] RFC2829,Authentication Methods for LDAP[S].

猜你喜欢

服务端公钥密钥
密码系统中密钥的状态与保护*
一种基于混沌的公钥加密方案
TPM 2.0密钥迁移协议研究
新时期《移动Web服务端开发》课程教学改革的研究
一种对称密钥的密钥管理方法及系统
在Windows Server 2008上创建应用
HES:一种更小公钥的同态加密算法
SM2椭圆曲线公钥密码算法综述
基于格的公钥加密与证书基加密
移动支付密钥体系研究