摘要 在移动IPv6和层次移动IPv6中,移动节点通过无线接入点(AP)接入网络并且自动配置地址,缺乏必要的安全认证和地址管理机制。针对这一问题,文章结合IPv6的动态主机配置协议(DHCPv6)和认证、授权、计费(AAA,Authentication、Authorization、Accounting)协议设计出一套安全可靠的接入认证机制,并给出了实验结果,结果表明该接入认证方案能够有效实现对移动节点的合法性进行验证,认证成功的同时也为移动节点(MN)配置了合法IP地址,能够满足实际应用的需要。
0、引言
随着互连网络的飞速发展和便携式移动终端的不断涌现,用户希望通过个人终端随时随地的加入到互联网中,方便快捷地获取自己所需的信息,移动IPv6[1]应运而生,实现了无线局域网中的跨子网漫游和切换等功能。然而无线局域网的引入也带来了相应的安全隐患问题,比如对移动节点(MN)的接入缺少必要的身份验证。本文基于此提出了层次移动IPv6的接入认证设计方案和实现过程,为MN在网络间的切换提供可靠的身份验证。
本文是在基于内核版本为2.6.8.1的Linux平台上实现了层次移动IPv6[2](HMIPv6)的接入认证机制,采用DHCPv6[3]协议和AAA协议[4](认证、授权、计费)相结合完成接入认证过程,认证成功的同时为MN分配一个合法的IP地址。
1、接入认证方式
在大多数情况下,移动IPv6应用于无线环境中。与有线网络相比,攻击者可以不受物理空间的限制,在网络的任意一个角落通过无线电波发起诸如重放攻击和其他主动攻击,而且由于无线网络的特殊性使得攻击更容易实施。另外MN切换到外地网络时,所在的网络不一定是可信的网络,更容易受到诸如窃听、主动重放等攻击,因此无线接入的安全问题显得尤为突出。下面先对目前常用的接入认证机制进行比较,然后提出本文的认证机制。
1)PPPoE认证:以太网上点对点协议(PPP over Ethernet)把最经济的局域网技术、以太网和点对点协议的可扩展性及管理控制功能结合在一起。 PPPoE在发现阶段会产生大量广播流量,对网络性能产生很大的影响,用户端需要安装专门的软件。
2)Web认证:Web认证最初是一种业务类型的认证,通过启动一个Web页面输入用户名/密码,实现用户认证。Web认证目前已经成为运营商网络平台的认证方式,通过Web页面实现对用户是否有使用网络权限的认证。缺点:用户连接性差;易用性不够好;IP地址的分配在用户认证前;会造成地址的浪费。
3)802.1x认证:IEEE 802.1x称为基于二层端口的访问控制协议,能够实现认证与业务的分离。如果简单地使用标准协议,容易造成如中间人攻击、拒绝服务攻击、网络接入盗用等安全隐患。用标准802.1x认证在认证通过后的安全性是个很大问题,而且无法满足上述网络接入管理控制的需求。
本方案认证机制在比较上述几种认证机制的优缺点的基础上,根据层次移动IPv6的网络特性和运行需求,采用IPv6的动态主机配置协议(DHCPv6)结合AAA协议来完成AAA认证和地址分配过程。该机制工作在网络层,不依赖链路层协议,有利于移动节点用多种方式接入网络,具有兼容性好、利于向高层协议扩展、实现简单、容易控制、与移动IP结合性好等优点。
2、层次移动IP接入认证设计
2.1 层次移动IPv6
层次移动IPv6引入移动锚点(MAP),作用如同一个本地家乡代理,它将代表其所服务的移动节点接收所有数据包,并将这些数据包封装后直接转发至移动节点的当前地址。如果移动节点在本地MAP域中更改其当前地址(即在线转交地址(LCOA)),只需在相应的MAP注册新的LCOA。因此,移动节点在对端节点或家乡代理注册本地转交地址(RCOA)后,如果移动节点在一个MAP域中移动,则LCOA不发生改变。这使移动节点的移动对于与其通信的对端节点是透明的。
在无线链路情况下,层次移动IPv6可以减少通过空中接口发送到通信对端或家乡代理的消息数目。移动锚点的引入有利于移动IPv6协议减少与外部网络之间的移动信令传输。
2.2 消息格式
本方案采用DHCPv6协议作为接入认证方式,在DHCPv6 Request消息中添加用户名和密码选项来传送认证信息。用户名选项格式定义如下:
选项标识定义为OPTION_CLIENT_NAI,类型为44,占2个字节。
密码选项格式定义如下:
选项标识定义为OPTION_CLIENT_PASS-WORD,类型为45,占2个字节。
如果认证失败,则在reply消息中添加认证失败信息选项,格式定义如下:
选项标识定义为OPTION_AUTH_FAIL,类型为46,占2个字节。
图1 接入认证时序图
2.3 消息流程
接入认证时序如图1所示,消息流程如下。
1)当MN加入到一个网络中时,接收当地路由器发出的路由通告(RA)。
2)MN触发DHCPv6客户端发送DHCP Solicit消息去发现DHCPv6服务器。
3)当服务器收到请求消息后,构造相应的Advertisement消息发给DHCPv6客户端。
4)DHCPv6客户端收到响应消息发出DHCP Request消息,在消息选项中添加新的用户名和密码密文选项。
5)DHCPv6服务器收到消息后,从中提取用户名和密文后,对密文进行解密,发送AAA认证请求消息到本地AAA服务器(AA AL)。
6)AAAL,收到认证请求消息后将其转发到家乡AAA服务器(AAAH)。
7)AAAH收到认证请求消息后,验证用户名和密码。返回认证回复消息。
8)AAAL,服务器将收到的认证回复消息转发到AAA客户端。
9)AAA客户端对收到的认证回复进行处理,构造Reply消息响应客户端请求,
10)MN根据收到的Reply消息进行判断,至此整个认证过程完成。
3、软件实现过程
在软件体系的设计上,在HMIPv6的基础上修改和添加对DHCPv6配置地址的处理。本文采用MIPL即Mobile IPv6 for Linux,版本为2.0-rc2,层次移动IP基于此实现。DHCPv6采用的是dibbler软件来实现,版本为0.3.1;AAA协议采用的是FreeRADIUS开源软件,版本为1.0.4,它包含服务器端和客户端两部分。服务器端有MYSQL开源软件,版本为4.1.7,包过滤采用Netfilter机制。
3.1 DHCPv6消息处理
在层次移动IP的启动过程中,当MN收到路由通告,发现与自己的路由缓存中维护的路由前缀不一样时,发送一个信号量启动DHCPv6客户端子进程,开始接入认证过程。在DHCPv6协议中创建用户名、密码和认证失败选项,在填充选项内容时,用户名和密码通过对MN的配置文件进行读取操作,由AAA服务器预先分配给用户。
在获取密码后通过标准的DES加密算法对原始密码采用双方协商好的密钥进行加密。由于DES只能对不大于8字节的字符进行加密,所以在加密过程中先计算原始密码的长度,如果小于或等于8字节则直接进行加密;如果大于8字节则截取前8个字节进行加密,再对剩余的字节进行相同的加密过程,把生成的密码拷贝到密码选项中。为了简化运算,在该文中默认密码字节不大于16字节,一般能满足实际运用。
在客户端消息选项中,添加用户名和密码选项的标识OPTION_CLIENT_NAI和OPTION_CLIENT_PASSWORD,通过标识对相应的选项进行处理。当客户端在构建Request消息时,把定义好的用户名和密码标识通过系统函数添加到Request消息中,完成后发送该消息给服务器。
DHCPv6服务器端收到Request消息后,通过switch语句对OPTION_CLIENT_ NAI和OPTION_CLIENT_PASSWORD标识进行处理,获取选项中的用户名和密码密文字符,其中通过DES解密算法对收到的密文使用原先加密用的密钥进行解密。假如密文大于8个字节,则先对前8个字节进行解密,之后在对剩余的字节进行解密。把解密好的密码和用户名通过字符读取操作存到AAA的配置文件中。
完成后在DHCPv6服务器创建子进程来启动AAA客户端程序,并且构造Reply报文,在其中创建一个消息队列来等待接收AAA客户端认证完成后返回的认证结果。如果收到认证成功标识,则从地址池中获取一个合法地址添加到该消息选项中完成后发送Reply消息。并且将MN的MAC地址和IP地址发送到包过滤器的访问控制列表(ACL)中;如果收到认证失败标识,则在构造的Reply消息中添加一个认证失败信息选项,该认证选项标识为OPTION_AUTH_FAIL。将认证失败信息添加到该选项中,并且删除准备分配给客户端的合法地址选项,完成后发送Reply消息。
MN对收到的Reply报文进行判断,使用switch语句对消息中各选项进行处理。如果认证成功则含有地址选项标识,从中获取合法地址分配给接口使用,MN可以使用当地网络提供的服务或者完成切换绑定认证[5]过程。如果认证失败,不含有地址选项,而含有OPTION_AUTH_FAIL选项,MN可以获取该选项中相应的出错信息,进行再次认证或是退出该网络。该过程的主要消息流程如图2所示。
图2 DHCPv6接入认证消息流程图
3.2 AAA交互过程
当DHCPv6服务器调用子进程执行AAA客户端程序后,AAA客户端将把从MN传过来的密码和用户名添加到认证请求选项中,向AAAL进行认证。AAAL将收到的消息转发给AAAH服务器,AAAH收到认证请求后进行认证。如用户名和密码正确,则返回Accecpt响应消息,标志认证成功;如用户名或者密码错误,则返回Reject响应消息,标志认证失败。AAAL收到认证回复消息后记录认证信息,下次认证时只需询问AAAL,减少认证步骤。
AAA客户端对收到的认证回复消息进行判断,通过创建消息队列,将认证回复中的认证结果标志传递给DHCPv6服务器。
3.3 包过滤
在接入路由器上安装包过滤器软件,它工作在网络层,根据ACL列表对每个通过的包进行访问控制,列表中维护IP地址和MAC地址绑定选项,防止合法IP地址被伪造。ACL列表的更新由DHCPv6服务器完成,认证成功后将相应的IP地址和MAC地址添加到ACL列表中,当DHCPv6分配的地址过期后负责删除该绑定选项。接入认证开始只允许DHCPv6协议和AAA协议的消息包通过,认证成功后只允许绑定列表中维护的IP地址消息包通过,有效地控制了假冒攻击。
4、测试结果
实验拓扑原理图如3所示:
图3 实验拓扑图
首先修改层次移动IP的地址配置机制,使其采用有状态地址配置,在家乡代理(HA)、接入路由器1(AR1)、AR2和AR3安装dibbler软件和包过滤软件,在服务器上安装RADIUS软件。
分别在MN上启动HMIPv6程序,在HA上启动HMIPv6程序和DHCPv6服务器程序,在AR1、AR2和AR3上启动DHCPv6服务器端程序和路由通告协议。在服务器上启动AAA服务器端程序。通过手动修改ESSID在家乡与不同的MAP域之间进行切换,完成在切换过程的接入认证过程。
实验完成了从家乡到MAP1中的AR1、AR2和MAP2中的AR3的切换过程的接入认证,以及从MAP1到MAP2切换的接入认证过程。在切换的过程中MN触发接入认证过程,只有使用正确的用户名和密码才能完成接入,获得合法的IP地址。切换完成后采用该地址作为转交地址进行绑定注册和认证过程。如果用户采用了错误的用户名或者密码,则在切换过程中不能获得IP地址,接入认证失败,不能完成切换过程,MN被拒绝加入相应的网络。
结果证明,完成接入认证过程仅需要2s左右,这是完成DHCPv6协议重复地址检测过程和AAA协议信息交互所需的时间,没有增加附加的延时,并且在认证成功的同时给MN分配了一个合法的IP地址作为在线转交地址。
5、结束语
本文结合HMIPv6、DHCPv6和AAA协议实现了对MN在不同的网络间切换的接入认证过程,对用户提供了可靠的安全保证,解决了无线接入存在的安全问题;同时便于运营商对接入用户的管理和维护;采用DHCPv6作为接入认证方式还可以提供对地址的有效管理和附加参数的配置(如DNS等)。
下一阶段主要是考虑如何缩短认证过程时间,实现无缝切换,并且考虑在双栈下实现接入认证过程,这些也是未来研究的热点和重点。
参考文献
1 D Johnson,C Perkins,J Arkko.Mobility Support in IPv6.RFC 3775,June 2004.
2 H Soliman,C Castelluccia,K E1 Malki,et a1.Hierarchical Mobile IPv6 Mobility Management(HMIPv6).RFC 4140,August 2005.
3 J Bound,B Volz,T Lemon,et al. Dynamic Host Configuration Protocol for IPv6(DHCPv6).RFC 3315,July 2003.
4 C Rigney,A Rubens,W Simpson,S.Willens.Remote Authentication Dial In User Service.RFC 2865.June 2000.
5 A Patel,K Leung,M Khalil,H Akhtar. Authentication Protocol for Mobile IPv6.RFC 4285.January 2006.