Linux内核2_6版中IPSec实现的研究.docx_第1页
Linux内核2_6版中IPSec实现的研究.docx_第2页
Linux内核2_6版中IPSec实现的研究.docx_第3页
Linux内核2_6版中IPSec实现的研究.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux 内核 2 . 6 版中 IPSec 实现的研究张全林1 , 李勤1 , 祝跃飞1 , 徐廷2(1. 信息工程大学 信息工程学院 ,河南 郑州 450002 ;2. 北京理工大学 软件学院 ,北京 100081)摘要 :文章描述了 Linux 内核 2 . 6 版中的 IPSec 实现 ,并将集成了 IPSec 的 TCP/ IP 处理与 Linux内核 2 . 4 版中 TCP/ IP 处理做了比较 ,然后对应用层的 IKE 模块 , 内核层 SPD 、SAD 管理模块XFRM , IPSec 的进入和外出处理的详细实现进行了分析 ,最后给出了 IPSec 的实现小结 。关键词 : IPSec ; IKE ; SPD ; SAD ; XFRM中图分类号 : TP 393 . 08文献标识码 :A文章编号 :1671 - 0673 (2005) 03 - 0048 - 04Study on Implementation of IPSec in L inux 2 . 6 KernelZHAN G Quan2lin , L I Qin ,ZHU Yue2fei , XU Ting( Institute of Information Engineering , Information Engineering University , Zhengzhou 450002 ,China)Abstract :This article focuses on the implementation of IPSec in Linux2 . 6 kernel ,and compares the pro2 cessing of TCP/ IP which has IPSec inside with that of Linux2 . 4 kernel , then analyses IKE module on ap2 plication layer , SPD and SAD module called XFRM , in and out process of IPSec in detail . Finally a summarization on the implementation of IPSec is presented.Key words :IPSec ; IKE ; SPD ; SAD ; XFRMty Policy Database) 管理模块 、进入和外出处理模块 、AH/ ESP 处理模块和密码算法模块构成 。Linux 内 核 2 . 6 版中的 IPSec 同时支持 IPv4 和 IPv6 ,支持 4 级的 SA ( Security Association) 嵌套 、AH (Authentication Header Protocol ) 2 、ESP ( Encap sulating Security Pay2load Protocol) 3 和 IP 压缩处理 。而 Linux 内核 2 . 6 版中 IPSec 实现将这些模块与内核中的网络处理 模块紧密结合在一起了 ,密码算法库由 Crypto API提供 。在研究其实现前 ,首先对 Linux 内核 2 . 4 版的 网络处理模块进行分析 。0引言作为网络安全产品 , IPSec ( IP Security) 的实现不仅要考虑其所提供的安全服务 ,还要考虑 IPSec的实际运行效率 。因为 IPSec 中涉及到大量的数 据包加解密运算 ,这些运算直接影响到网络的吞吐 率 。Linux 内核 2 . 5 . 10 版以后的内核中的 TCP/ IP协 议 栈 内 置 了 一 个 IPSec 实 现 , 是 由 Alexey Kuznetsov 和 Dave Miller 在 USAGI IPv6 工作组的启发 下写成的 , IPSec 被无缝集成到内核中的 TCP/ IP 协 议栈 中 , 这 样 减 少 了 BITS ( RFC2401 bump in the stack) 实现方式 (如 FreesWAN ) 带来的数据包来回拷 贝造成的额外开销 ,从整体上提高了系统的性能 。IPSec 实现主要由应用层部分和内核层部分组成 。应用层部分包括配置管理模块和 IKE ( InternetKey Exchange Protocol ) 1 密 钥 协 商 模 块 ; 内 核 层 部 分由 SAD ( Security Association Database) / SPD ( Securi2Linux 内核 2 . 4 版网络实现4目前应用广泛且稳定运行的是 Linux 内核 2 . 4 版 ,所以这里以它的网络实现作为目标分析 。图 1 给出了其网络实现的一个简单原理图 。1收稿日期 :2005 - 02 - 25基金项目 :国家自然科学基金资助项目 (90204015 ,19931010)作者简介 :张全林 (1975 - ) ,男 ,四川成都人 ,信息工程大学硕士研究生 ,主要研究方向为信息安全 。49第 3 期张全林等 :Linux 内核 2. 6 版中 IPSec 实现的研究PF KEY 接 口 将 配 置 信 息 写 入 到 内 核 中 的 SPD中 ,并通过配置文件与 IKE 接口 。IPSec 的密钥管理有两种方式 ,手动密钥管理 和自动密钥管理 。手动密钥管理效率低 、对操作员的要求高 ,可维护性差 ; 而 IKE 用于动态的密钥协商和管理 。IKE 主要完成身份验证 、密钥协商 、算 法协商的工作 ,通过 PF KEY 接口与 SPD/ SAD 管理模块交互 , IKE 通过 UDP 协议传送数据 。Linux内核 2 . 5/ 2 . 6 版中的 IPSec 采用了 IKE 作为密钥管 理的 方 式 。IKE 的 工 具 包 有 KAME 的 setkey 和racoon 以及 OpenBSD 的 isakmp IKE 伺服 程 序 。这 里 ,setkey 用于策略和 SA 的配置管理 ; 其中 , racoon主要有以下几个特性 :支持主模式 、野蛮模式和快速模式 3 种交换 模式 ;支持预共享密钥验证和 X. 509 证书验证方式 ,可以使用 OpenSSL 产生和发放证书及证书的验 证 ;Diffie2Hellman 群支持 MODP768 、MODP1024 和MODP1536 三类群 ;提供完美向前保密 PFS ( Perfect Forward Se2crecy) ;ISAKMP SA 生命期的支持 ,以时间来表示 ;密钥 协 商 阶 段 中 的 加 密 算 法 可 采 用 DES、3DES 、Blowfish 和 CAST128 , 摘 要 算 法 可 采 用 MD5和 SHA1 ;可配置 IPSec 的加密算法 、验证算法和压缩 算法 。2 . 2XFRM 模块2 . 5 版之后的内核引入了一种新的 IP 包处理 的网 络 框 架 称 为“可 叠 放 目 标 ( stackable destina2tion) ”堆结构和 XFRM ,此设计中 IPv4 和 IPv6 共享SPD 和 SAD 。“可叠放目标”是指 dst 结构链 ,这些 dst 是 临时建立并有其缓存 ,一个 dst 可以插入到原 dst前构成一个堆式结构 。每个 dst 通常都有一个指针指向 xfrm state结构 ,xfrm state 中有数据图 1 2 . 4 版内核网络实现的原理框图数据包进入时产生硬件中断 ,由网卡驱动处理将接收到的数据包放入接收队列 ;系统调度通过软 中断机制从接收队列中获取数据交给路由处理 ;路 由处理根据 IP 地址和路由信息及路由算法判断是本地包还是转发包 ,如果是本地包则交给本地包接 收处理模块 ,否则交由转发处理模块 ; 外出处理是 传输层将要发送的包交给网络层 ,通过路由处理模 块给出其外出的发送函数和发送设备接口 ;然后交由硬件发送预处理模块发送 ;最后交由网卡驱动模 块完成最后的数据发送 。2Linux 内 核 2 . 6 版 的 网 络 及实现IPSec图 2 所示给出了 Linux 内核 2 . 6 版的网络及IPSec 实现的原理框图 。图中的灰色背景框部分是 对应新添加的属于 IPSec 的功能组成 。下面我们将对 TCP/ IP 协议栈中涉及到 IPSec 的主要模块实 现的情况进行分析 。包的传输处理函数 。XFRM 是 处 理 IP 数 据 包 的 一 个 新 的 网 络 框 架 ,它实际是 IPSec 的 SPD/ SAD 的管理模块 ,它又与原网络框架的路由和网络数据处理密切关联 ,图2 中的策略检查模块 、策略检查 SA 的获取模块实际 都属于 XFRM 模块 ,调用的是 XFRM 所提供的函数 。XFRM 代表传输 (transformer) ,其中定义了 2 个 结构 xfrm policy表示 IPSec SP ( Security Policy) 和图 2 2 . 6 版内核的网络及 IPSec 实现的原理框图2 . 1管理配置和 IKE 模块管理 配 置 模 块 主 要 完 成 IKE 的 协 商 参 数 、IPSec 的策略 、预共享密钥及证书的配置 , 它 通 过xfrm state表示 IPSec SA 。xfrm state 通过 xfrm50信 息 工 程 大 学 学 报2005 年 templ和 xfrm policy 关联 ,SPD 由 xfrm policy结构链组成 ,SAD 由 xfrm state结构链组成 。在 IPSec 的外出处理过程中会依次调用 xfrm lookup () 、xfrm tmpl resolve () 、xfrm bundle create() 和 dst output ( ) 。xfrm lookup ( ) 在 SPD 中查找xfrm policy ,此时栈中的 dst指向原 dst结构 ;然后 xfrm lookup () 调用 xfrm tmpl resolve 从 xfrm policy中解析得到 xfrm tmpl 结构 ,xfrm tmpl中包 含 了 数 据 包 的 处 理 方 式 , 并 查 找 与 xfrm tmpl 匹配的 xfrm state ,这个过程相当于查找与 IPSec 策略对应的 SA 或 SA 束 。xfrm bundle 图 3 XFRM 模块结构和函数调用关系create 创建堆叠式目标和 SA 束 。以上 3 个函数的过程在路由解析中完成 。当数据包建立后调用 dst output ( ) ,此时 dst 结构中外出例程函数指针指net/ xfrm/ xfrm policy. c 文件中给出了 包 含 6个链的策略链表 ,即策略库的定义 :struct xfrm policy xfrm policy list 6。向的外出处理函数被调用 ,外出函数从 sk buff 的 dst中可得到 xfrm state ,其结构和函数调用2 . 3进入外出和转发处理模块图 4 是 2 . 6 版内核中 TCP/ IP 协议栈处理数据 包的详细流程图 ,从右到左分别对应了进入 、转发和外出处理过程 。关系如图 3 。图 4 2 . 6 版内核中 TCP/ IP 协议栈数据包处理的流程图目的地址 、服务类型 、进入设备接口索引值等) 。ip local deliver finish 中先调用 xfrm4 check poli22 . 3 . 1进入处理根据源/ 目的地址 、服务类型 、进入设备接口索引值在路由 缓 存 rt hash table中 快 速 寻 找 路cy 进行进入策略检查 , 若策略检查不通过则丢弃该数据包 ;再调用 ipprot - handler ( skb) 即传输层 的处理函数 ,这些函数包括 xfrm4 rcv 、tcp rcv 、udp由 ,若未找到则调用 ip route input slow 到 FIB中查找 ,并构建结构体 struct flowi (flowi 包括源/51第 3 期张全林等 :Linux 内核 2. 6 版中 IPSec 实现的研究 rcv 和 ipip rcv 等 。xfrm4 rcv 调 用 xfrm rcv 数据包已经过了 IPSec 的处理已封装成另一 IP 数据包了 。2. 4Crypto APICrypto API 为 AH/ ESP 进 入 和 外 出 处 理 提 供 DES、3DES 、AES 和 Blowfish 加 密 算 法 , HMAC、MD5 和 SHA 摘要算法 。encap ,xfrm rcv encap 中先得到 spi ,根据 spi 调用xfrm state lookup 找到对应的 SA 束 , 并 进 行 SA有效状态 的 检 测 、窗 口 重 放 检 测 、SA 生 命 期 的 检测 ,再进入 AH 和 ESP 的处理 , SA 记录在 skb 中以 备后面策略检查用 。IPSec 处理完后 ,数据包将作为普通的报文传 给上层协议进行继续处理 。上层协议进入策略检 查模块处理 ,根据 skb 中所记录的 SA 信息来验证策略 。如果策略通过则继续 ; 如果没有通过 ,则丢 弃该报文 。ipip rcv 处理隧道模式的数据包 ,解开3结束语整个源代码文件增加了 net/ xfrm 目录 ,包括算法 、进入 、外出 、策略和 SA 的处理代码 , 并在 net/ ipv4 和 net/ ipv6 中有 xfrm 相关的处理文件 。AH 和 ESP 的相应处理的代码在 net/ ipv4 和 net/ ipv6 中 ,有关路由处理的代码也做了相应的修改 。对 2 . 6 版 IPSec 实现源代码的深入研究有助于 代码的改进和移植 ,可对内核进行裁减 ,并将此裁减以后 的 内 核 移 植 到 一 个 嵌 入 式 的 VPN 网 关 系 统中 。外层的数据包后再放入数据包接收队列中 。2 . 3 .

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论