论文部分内容阅读
[摘要]研究一种VPN网关的设计方案,使工作在局域网的网关位置具有加密和认证功能:完成了采用IPSec的VPN网关设计,通过修改Linux内核可以实现基于IPSec的VPN网关,加快了处理速度并避免了操作系统本身的不安全性。
[关键词]VPN网关 IPSec协议 Linux内核
中图分类号:TP3文献标识码:A 文章编号:1671-7597 (2008) 0310028-01
一、设计方案
(一)设计目标
VPN网关的设计目标是为了工作在局域网的网关位置,具有加密和认证功能,并由此在互联网上构建相互信任方之间的安全加密信息传输通道,以期达到专用网络的效果,保证通信的安全性、机密行、可认证性和完整性。
(二)设计功能
根据VPN安全体系结构和IPSec规范,VPN网关将提供以下安全服务:鉴别、访问控制、数据机密性、数据完整性、数据源鉴别、禁止否认。为了实现上述各种安全服务,按IS07492建议采用以下安全机制:A、加密机制;B、访问控制机制;C.数据完整性机制;D、交换鉴别机制;E、数字签名机制路由控制机制。
(三)体系结构
VPN网关系统的体系结构可抽象为:自主开发的嵌入式安全操作系统内核;网络协议和IPSec协议层;管理系统层。
(四)VPN网关的总体设计实现框架
设计方案中,在用户层除提供手工注入SA方式外,还允许IKE动态协商SA,这由用户层操作到内核的接口Pfkey,Sockets(手工注入SA和利用IKE动态协商SA的接口及SAD与SAD的接口)实现;通过一个IKE守护进程监听动态协商请求,来进行相应的协商处理;由用户层实现的策略系统来完成存储、管理及验证策略;最后,在内核完成与用户的接口、SAD及其管理、IPSec协议进入/外出处理及加密算法的功能,以加快IPSec处理的速度。
二、路由功能的实现
安全加密路由平台的功能集中于网络部分,这里给出安全加密路由平台网络部分的结构模型。首先进行几点如下说明:
(1)VPN网关的网络层次结构遵循TCPAP协议。
(2)网络层除了包含实现网络层功能的基本模块外,还包含转发模块。转发模块用于转发接收到的目的地址不是自己的IP包。
(3)加密和解密工作的客体是需要转发的信息,对于安全加密路由平台与其他主机之间的通信信息可以不进行加密。
(4)VPN网关采用网络级加密,因此加密和解密在网络层实现。但两者工作在处理数据包的不同阶段。
在图2所示的路由功能实现模型,可以将VPN网关处理的包分为三类:
①VPN网关接收的包目的IP地址是本主机,则处理过程为依次向上层传递直到交给相应的应用程序;②VPN网关应用程序发送的包,处理过程为向下传递至网络设备;
③VPN网关接收的目的IP地址是别的主机的包则将该包转发,如果是发往局域网外的包则对其加密。
三、IPSec的设计
(一)IPSec的实现方案主要有以下两种
(1)在IP层与链路层间插入IPSec处理模块;(2)将IPSec与IP层融合成为IP+IPSec传统的实现方案采用插入IPSec处理模块方式,该方案的优点在于: IPSec处理模块独立于内核,IPSec处理程序几乎对内核没有进行任何修改。
(二)其中接收和发送数据包的流程为
(1)接收包处理。对于链路层来的包,首先进行路由。对于本地包,先进行分片重组,然后检查SAD,看是否经过IPSec处理过的包。如果是,则检查SA的状态、生存期,然后根据找到的SA对包进行认证、解密。处理完后交给传输层。
(2)发送包处理。对于传输层来的包,首先检查,看否需要进行IPSec。如果需要,则查找SAD,根据找到的SA进行IPSec外出包处理,处理完后进行分片等其他IP外出处理及路由,然后将包发送到链路层处理;如果不需要,则将进行正常的IP层外出处理,并将包发到链路层。
四、IPSec在Linux操作系统内核中的算法方案及数据包流程
在实现中,IPSec的功能主要在内核中完成,接下来着重讨论IPSec在Linux下的操作。系统内核中的具体实施,通常IPSec的实现方式有三种:
(1)将IPSec集成到原IP的实现中。这种方式需要访问EP源码;
(2)“BUMP-IN-THE-WIRE”(BITW)实现,在TCP/IP协议栽的Native IP和局域网络驱动器之间实现,该方式无需访问IP的源码,只适用于主机;
(3)“BMIP-IN-THE-WIRE”(BITW)实现,采用专用加密处理器,可在主机或安全网关实现。
数据报文处理的过程如下:
(1)在Linux内核注册一虚拟网络设备接口,虚拟接口与实际的网络接口一一对应;
(2)在路由表中增加指向虚拟接口的入口,使得要经过IPSec处理的分组首先被送往虚拟接口;
(3)IPSec的分组封装处理程序放在虚拟设备的驱动程序中,从而使得不必直接修改IP模块的源码,虚拟设备驱动程序中的IPS。处理包括:安全策略库SPD的查询、SA的选择以及分组的封装处理、加密和认证;
(4)最后分组送往实际的网络接口,从而实现了主机间的安全通信。
参考文献:
[1]龙艳彬、王丽君,“基于IPsec的非对称VPN在Linux下的设计”, 鞍山科技大学学报, Vol.29 No.4 Aug. 2006. pp384-390.
[2] 王进、贾忠田、李大兴,“对基于VPN/IPSec的移动IP安全模型的改进”,计算机工程与应用, Vol.42 No.23, 2006. pp124-126.
[3]鲍洪生,“网络安全与IPSec协议”,科技信息(科技教育版),2006 . 7. pp22-23.
[4]梁铮、黄永峰,“一种新型结构的VPN安全网关平台设计”,电子技术应用, Vol.32 No.9. 2006. pp27-30.
[5]Kent S, Atkinson R.IP encapsulating security payload RFC2406, 1998
[6]曹文波、蒋天发,“IPv6安全协议IPSec分析”, 电脑与信息技术, Vol.14 No.4. Aug,2006. Pp27-30.
[关键词]VPN网关 IPSec协议 Linux内核
中图分类号:TP3文献标识码:A 文章编号:1671-7597 (2008) 0310028-01
一、设计方案
(一)设计目标
VPN网关的设计目标是为了工作在局域网的网关位置,具有加密和认证功能,并由此在互联网上构建相互信任方之间的安全加密信息传输通道,以期达到专用网络的效果,保证通信的安全性、机密行、可认证性和完整性。
(二)设计功能
根据VPN安全体系结构和IPSec规范,VPN网关将提供以下安全服务:鉴别、访问控制、数据机密性、数据完整性、数据源鉴别、禁止否认。为了实现上述各种安全服务,按IS07492建议采用以下安全机制:A、加密机制;B、访问控制机制;C.数据完整性机制;D、交换鉴别机制;E、数字签名机制路由控制机制。
(三)体系结构
VPN网关系统的体系结构可抽象为:自主开发的嵌入式安全操作系统内核;网络协议和IPSec协议层;管理系统层。
(四)VPN网关的总体设计实现框架
设计方案中,在用户层除提供手工注入SA方式外,还允许IKE动态协商SA,这由用户层操作到内核的接口Pfkey,Sockets(手工注入SA和利用IKE动态协商SA的接口及SAD与SAD的接口)实现;通过一个IKE守护进程监听动态协商请求,来进行相应的协商处理;由用户层实现的策略系统来完成存储、管理及验证策略;最后,在内核完成与用户的接口、SAD及其管理、IPSec协议进入/外出处理及加密算法的功能,以加快IPSec处理的速度。
二、路由功能的实现
安全加密路由平台的功能集中于网络部分,这里给出安全加密路由平台网络部分的结构模型。首先进行几点如下说明:
(1)VPN网关的网络层次结构遵循TCPAP协议。
(2)网络层除了包含实现网络层功能的基本模块外,还包含转发模块。转发模块用于转发接收到的目的地址不是自己的IP包。
(3)加密和解密工作的客体是需要转发的信息,对于安全加密路由平台与其他主机之间的通信信息可以不进行加密。
(4)VPN网关采用网络级加密,因此加密和解密在网络层实现。但两者工作在处理数据包的不同阶段。
在图2所示的路由功能实现模型,可以将VPN网关处理的包分为三类:
①VPN网关接收的包目的IP地址是本主机,则处理过程为依次向上层传递直到交给相应的应用程序;②VPN网关应用程序发送的包,处理过程为向下传递至网络设备;
③VPN网关接收的目的IP地址是别的主机的包则将该包转发,如果是发往局域网外的包则对其加密。
三、IPSec的设计
(一)IPSec的实现方案主要有以下两种
(1)在IP层与链路层间插入IPSec处理模块;(2)将IPSec与IP层融合成为IP+IPSec传统的实现方案采用插入IPSec处理模块方式,该方案的优点在于: IPSec处理模块独立于内核,IPSec处理程序几乎对内核没有进行任何修改。
(二)其中接收和发送数据包的流程为
(1)接收包处理。对于链路层来的包,首先进行路由。对于本地包,先进行分片重组,然后检查SAD,看是否经过IPSec处理过的包。如果是,则检查SA的状态、生存期,然后根据找到的SA对包进行认证、解密。处理完后交给传输层。
(2)发送包处理。对于传输层来的包,首先检查,看否需要进行IPSec。如果需要,则查找SAD,根据找到的SA进行IPSec外出包处理,处理完后进行分片等其他IP外出处理及路由,然后将包发送到链路层处理;如果不需要,则将进行正常的IP层外出处理,并将包发到链路层。
四、IPSec在Linux操作系统内核中的算法方案及数据包流程
在实现中,IPSec的功能主要在内核中完成,接下来着重讨论IPSec在Linux下的操作。系统内核中的具体实施,通常IPSec的实现方式有三种:
(1)将IPSec集成到原IP的实现中。这种方式需要访问EP源码;
(2)“BUMP-IN-THE-WIRE”(BITW)实现,在TCP/IP协议栽的Native IP和局域网络驱动器之间实现,该方式无需访问IP的源码,只适用于主机;
(3)“BMIP-IN-THE-WIRE”(BITW)实现,采用专用加密处理器,可在主机或安全网关实现。
数据报文处理的过程如下:
(1)在Linux内核注册一虚拟网络设备接口,虚拟接口与实际的网络接口一一对应;
(2)在路由表中增加指向虚拟接口的入口,使得要经过IPSec处理的分组首先被送往虚拟接口;
(3)IPSec的分组封装处理程序放在虚拟设备的驱动程序中,从而使得不必直接修改IP模块的源码,虚拟设备驱动程序中的IPS。处理包括:安全策略库SPD的查询、SA的选择以及分组的封装处理、加密和认证;
(4)最后分组送往实际的网络接口,从而实现了主机间的安全通信。
参考文献:
[1]龙艳彬、王丽君,“基于IPsec的非对称VPN在Linux下的设计”, 鞍山科技大学学报, Vol.29 No.4 Aug. 2006. pp384-390.
[2] 王进、贾忠田、李大兴,“对基于VPN/IPSec的移动IP安全模型的改进”,计算机工程与应用, Vol.42 No.23, 2006. pp124-126.
[3]鲍洪生,“网络安全与IPSec协议”,科技信息(科技教育版),2006 . 7. pp22-23.
[4]梁铮、黄永峰,“一种新型结构的VPN安全网关平台设计”,电子技术应用, Vol.32 No.9. 2006. pp27-30.
[5]Kent S, Atkinson R.IP encapsulating security payload RFC2406, 1998
[6]曹文波、蒋天发,“IPv6安全协议IPSec分析”, 电脑与信息技术, Vol.14 No.4. Aug,2006. Pp27-30.