ImageVerifierCode 换一换
格式:DOCX , 页数:70 ,大小:2.58MB ,
资源ID:7613395      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7613395.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(IPSEC实现分析.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

IPSEC实现分析.docx

1、IPSEC实现分析IPSec实现分析1引言1.1编写目的编写该文档的目的是为了更好地理IPSec模块。为了能更好地理解IPSec,本详细设计报告描述了IPSec介绍、数据结构、IPSec策略匹配、SA的查找&安全路由的安装、发包和收包过程和IPSec IKE。1.2编写背景无1.3预期读者和阅读建议本文档的预期读者包括网关安全模块开发人员。开发人员应重点理解函数实现和数据结构之间的关系。1.4文档约定IPSec Internet Protocol Security SA Security Association (安全联盟)SPI Security parameter index(安全参数索引

2、)AH Authentication Header (认证头)ESP Encapsulating Security Payload (加密安全载荷)IKE Internet Key Exchange HMAC Keyed-hash Message Authentication Code1.5参考资料RFC 2401 Security Architecture for the Internet ProtocolRFC 2402 IP Authentication HeaderRFC 2406 IP Encapsulating Security Payload (ESP)RFC 2407 The

3、Internet IP Security Domain of Interpretation for ISAKMPRFC 2408 Internet Security Association and Key Management Protocol (ISAKMP) RFC 2409 The Internet Key Exchange (IKE) RFC 3947 Negotiation of NAT-Traversal in the IKERFC 3948 UDP Encapsulation of IPsec ESP Packets2详细设计2.1IPSec介绍IPSEC(Internet Pr

4、otocol Security)是IETF指定的一个IP层安全框架协议。它提供了在未提供保护的网络环境中传输敏感数据的保护。它定义了IP数据包格式和相关基础结构,以便为网络通信提供端对端、加强的身份验证、完整性、防重放和保密性等。IPSec到底是如何起作用的呢?为了更直观的理解IPSec VPN,图2-1到图2-3说明了:当两个机构通信的重要内容不想被中间人截获到,可以采用的方法。图2-1是最原始的方法,两个机构直接通过Internet进行通信,但是这样的话,很容易遭受中间黑客的截获和对内容的篡改,而两边都无法知道,很可能会造成重要损失。图2-2,两边的机构通过架设自己的专用网络进行通信,这样

5、的话,黑客不修改物理的连接是无法接触到两边的通信内容的,所以比较安全,但是这样的方式会耗费巨大的投资。图2-3,通过架设虚拟的VPN通道就可以使得:1.黑客能截获到报文,但也无法得知内容;2.即便是修改了内容,但两边机构是能检测到报文有无修改。图2-1 普通通信方式图2-2 架设专用网络图2-3 开辟虚拟通道当然VPN有多种,本文着重从IPSec VPN的角度介绍IPSec的原理及实现。IPSec通过两种协议来实现对IP数据包的保护,分别是AH和ESP(下文介绍)。IPSec既可以保护一个完整的IP载荷,也可以保护某个IP载荷的上层协议(例如TCP)。这两种方式的保护取决于两种不同的模式来提供

6、的,如图2-4。图2-4 两种模式传输模式用来保护上层协议,而隧道模式则用来保护整个IP报文。两种协议均能使用两种模式进行数据传输。IPSec提供以下的安全特性: 数据机密性(Confidentiality):IPsec发送方在通过网络传输包前对包进行加密。 数据完整性(Data Integrity):IPsec接收方对发送方发送来的包进行认证,以确保数据在传输过程中没有被篡改。 数据来源认证(Data Authentication):IPsec在接收端可以认证发送IPsec报文的发送端是否合法。 防重放(Anti-Replay):IPsec接收方可检测并拒绝接收过时或重复的报文。2.1.1封

7、装协议ESPESP(Encapsulating Security Payload)属于IPSec的一种协议,可用于确保IP数据包的机密性(未被别人看过)、数据的完整性以及对数据源的身份验证。ESP的协议号是50,ESP的协议头的格式如图2-5所示。图2-5 ESP头SPI是用于唯一标识SA的一个32比特数值,它在AH和ESP头中传输。在手工配置SA时,需要手工指定SPI的取值。使用IKE协商产生SA时,SPI将随机生成。Sequence Number是单调递增的数值,用来防止重放攻击。Payload Data可变长度,实际要传输的数据。Padding 填充数据,以字节为单位,为了保证数据的对齐

8、。Pad length 填充长度Next Header 下一个头的协议号Authentication Data 可变长度,认证数据ESP同时提供了机密性以及完整性,所以在其SA中必须同时定义两套算法用来确保机密性的算法叫作一个cipher(加密器),而负责完整性的算法叫作authenticator(验证器)。ESP作用的方式,如图2-6。通过加密算法(对称加密DES/3DES/AES)对数据进行加密,然后使用散列函数MD5/SHA-1对报文进行摘要计算,最后把摘要放入ESP校验的部分。图2-6 ESP头的使用通过加密来实现数据的机密性,保证传输过程中,即便是有人截获报文,也无法得知报文的内容;

9、通过ESP校验来实现数据的完整性,如果一旦在传输过程中对内容进行篡改,则校验不通过。当接收方收到包以后,首先检查序列号(防止重放),其次校验数据完整性,最后解密数据成明文。2.1.2封装协议AHAH(AuthenticationHeader) 协议,用来向 IP通信提供数据完整性和身份验证,同时可以提供抗重播服务。AH的协议号是51,AH的协议头的格式如图2-7所示。图2-7 AH认证头Next Header 占8bit,下一个头的协议号;Payload Len 占8bit,表示AH头的长度,单位是4字节,计算完要减2;Reserved 占16bit,保留SPI 占32bit,安全参数索引,用

10、来定位SASequence Number 占32bit,序列号,用来抗重播攻击Authentication Data 可变长度,认证数据AH提供了完整性校验、数据源认证及抗重播攻击的能力,但不提供机密性,传输过程中以明文方式进行。AH头作用的方式如图2-8所示。图2-8 AH头的使用跟ESP一样,通过对报文进行散列(MD5/SHA)计算来得到认证数据,有所不同的是加入了HMAC(Keyed-hashed Message Authentication Code,密钥化散列认证代码)的方式。图2-9所示是普通散列认证方式,第步是对明文进行散列计算得到一个散列值,并把散列值和明文一起传送给用户B;第

11、步,当用户B收到信息后,也对明文进行散列计算;第步,用计算得到的散列值2与散列值1进行比较,如果发现不一样,则丢弃数据包(说明传输过程中,有人改动数据包),如果发现一致,则数据包未被改动。但这样的方式,中间人可以篡改信息,并同样计算散列值来实现改动数据包的目的。图2-10所示是HMAC的方式,和图2-9不一样的是,通过加入共享密钥来计算散列值,这样的话,中间人是没有办法改动数据包的。同时HMAC的方式实现了完整性校验和源认证。图2-9 普通散列认证图2-10 HMAC方式认证2.1.3IPSec应用场景IPSec VPN的应用场景分为3种:1. Site-to-Site(站点到站点或者网关到网

12、关):企业内网(若干PC)之间的数据通过这些网关建立的IPSec隧道实现安全互联。这种方式只能使用隧道模式。2. End-to-End(端到端或者PC到PC): 两个PC之间的通信由两个PC之间的IPSec会话保护,而不是网关。这种方式既可使用传输模式也可使用隧道模式。3. End-to-Site(端到站点或者PC到网关):两个PC之间的通信由网关和异地PC之间的IPSec进行保护。这种方式只能使用隧道模式。图2-11 应用场景从上图可以看出来,隧道模式可应用于任何场景,传输模式只适用于端到端的模式;但是 隧道模式会多一层IP头的开销,所以当使用端到端的情况,建议使用传输模式。2.2IPSec

13、实现2.2.1IPSec大体实现思想SA (Security Association):安全联盟。SA是构成IPSec的基础,是两个通信实体协商建立起来的一种协定。它决定了用来保护IPSec协议的加密算法、认证算法、密钥以及密钥存活时间等内容。SA 由三个元素定义:安全协议、唯一安全参数索引 (security parameter index, SPI) 和 IP 目标。SA是单向的,发送需要一个SA,接收也需要一个SA;SA由手工或者通过IKE自动协商两种方式创建。IPSec的主要处理流程,如图2-12所示。图2-12 处理流程图(左:发包 右:收包)安全策略是用来匹配看哪些流需要进行IPS

14、ec的处理,如果匹配上安全策略则进行IPSec处理。策略的意义在于,可以把想通过IPSec处理的流(感兴趣流)区分出来,其余的不处理。安全路由,如图2-13所示,以隧道模式(ESP+AH)为例来说明安全路由,其实就是用路由结构体存放一些处理函数(SA),然后每走一层处理一层,这样的话,扩展性会很好。被称之为安全路由,后面会详细介绍这方面,所以到这里为止,先有个大体概念。图2-13 安全路由示意图图2-14 所示为IPSEC对于数据包的处理所经过的钩子点,本例中均为隧道模式,由于传输模式只支持点对点,网关上启用IPSEC的情况,基本上用不到传输模式。数据流经过FORWARDING的时候,会匹配I

15、PSEC安全策略,然后会经过ESP/AH头的处理以及封装外层IP头,封装完后,属于本地发包(正常发包),然后经过LOCAL_OUT-POST_ROUTING发出当收到IPSEC包的时候,首先收到本地进行处理,验证-解密-除去封装头,然后再放入到收包队列中进行再次收包这个时候,就是正常的转发包了图2-14 IPSEC处理流程2.2.2IPSec策略IPSec策略主要是用来匹配兴趣流(哪些数据包需要进行IPSec的处理)的,当匹配上IPSec策略以后,才会进一步操作,所以IPSec策略是IPSEC处理的基础。2.2.3数据描述2.2.2.1 安全策略SP图2-15所示为IPSec策略结构体(安全策

16、略SP)。其实策略就是用来定义一些条件和操作,当匹配上这些条件的时候,做些什么操作。有一个元素叫做“选择子”(元素selector),这个选择子就是用来匹配兴趣流(那些流该做IPSEC封装)的东西,所以叫做选择子;有一个元素叫做“状态模板”(元素xfrm_vec),是用来匹配SA(就是当使用IPSEC的时候,如何加密,如何封装等内容)的;还有一个元素是bundles,这个元素是用来安装安全路由的,这样的话,每次匹配上这个策略后,就不必再去查找bundle,不必再去查找SA了,是为了加速的作用。图2-15 IPSec策略这个时候,我们可以对着结构体来看IPSEC大体的流程:图2-16 流程(策略

17、角度)状态选择子(selector):从数据流的角度定义选择的数据流,被叫做感兴趣流,其中匹配项有对端地址、本段地址、子网掩码、协议簇等信息;bundles:被用来安装安全路由(参考图2-11);当查找不到绑定的安全路由的时候,就会先用来查找SA,因为如果要创建一个安全路由,需要使用SA作为材料。SA为其提供一些参数,比如一些处理函数、genid等。xfrm_vec:这个模板数组用来匹配SA策略的机构体struct xfrm_policy,如下:struct xfrm_policy#ifdef CONFIG_NET_NS struct net *xp_net;#endif struct xfr

18、m_policy *next; /* 下一个策略add by lxh for ipsec kernel, 2011 12.13 struct hlist_node bydst; /*按目的地址HASH的链表,加入到全局链表中init_net-xfrm-policy_bydst相关*/ struct hlist_node byidx; /*按索引号HASH的链表,加入全局链表中init_net-xfrm-policy_byidx*/ struct xfrm_policy *child; /add by lxh for ipsec kernel, 2011 04.13 /* This lock o

19、nly affects elements except for entry. */ rwlock_t lock; atomic_t refcnt; /*引用次数*/ struct timer_list timer; /*策略定时器*/ u32 priority; /*策略优先级,如果多个匹配,则使用最高优先级的*/ u32 index; /*存放policy_byidx的下标*/ struct xfrm_selector selector; /*选择子*/ struct xfrm_lifetime_cfg lft; /*策略生命期*/ struct xfrm_lifetime_cur curl

20、ft; / 当前的生命期数据 struct dst_entry *bundles; /*安全路由链表*/ struct xfrm_policy_walk_entry walk; /*加入init_net-xfrm-policy_all中*/ u8 type; u8 action; /*接受/加密/阻塞等*/ u8 flags; /*标记*/ u8 xfrm_nr; /*有几个模板,对应本结构体中的数组xfrm_vec*/ u16 family; /*协议簇*/add by lxh for ipsec kernel, 2011 04.13 u32 inbound; /*入方向*/ u32 out

21、bound; /*出方向*/ u32 pol_type; /*策略类型*/ u32 pol_id; /*策略id*/ u32 isdynamic; /*是否是动态?*/ char tunnel_name32; /*隧道名字*/ u32 outbound_sa_spi; /*出方向的spi*/end add by lxh for ipsec kernel, 2011 04.13 struct xfrm_sec_ctx *security; /*安全上下文 */ struct xfrm_tmpl xfrm_vecXFRM_MAX_DEPTH; /*状态模板*/ struct policy_entr

22、y *policy_entry;/add by lxh for ipsec kernel, 2011 04.13 / added by liangxia for match peer gw ip, 2012.4.11 / 隧道模式,保护子网不变,但对端地址改变 / 删除原隧道SA 引起新隧道不可用 u32 peer_ip; / added by liangxia, 2012.12.14 s32 dev_index; /接口ifindex ;2.2.2.2 安全联盟SA上文中多次提到的SA,究竟是以什么组织的,现在来揭开神秘的面纱。SA的结构体图如下图2-17。图2-17 SA的结构体内核中SA

23、(Security Association)是用结构体struct xfrm_state 来定义,各个字段的含义如下:/* Full description of state of transformer. */struct xfrm_state#ifdef CONFIG_NET_NS struct net *xs_net;#endif union struct hlist_node gclist; struct hlist_node bydst; /按照目的地址HASH,与回收重用 ; struct hlist_node bysrc; /按照源地址HASH struct hlist_node

24、 byspi; /按照SPI值HASH atomic_t refcnt; / 引用计数 spinlock_t lock; / 锁 struct xfrm_id id; / SA 索引,即目的地址,spi和协议号 struct xfrm_selector sel; / 状态选择子 u32 genid; /生成id /* Key manager bits */ struct xfrm_state_walk km; / KEY回调管理处理结构参数 /* Parameters of this state. */ struct u32 reqid; /请求ID u8 mode; / 模式: 传输/通道

25、u8 replay_window; / 回放窗口 u8 aalgo, ealgo, calgo;/ 认证,加密,压缩算法ID值 u8 flags; /标记 u16 family; / 协议族 xfrm_address_t saddr; / 源地址(出口地址) int header_len; / 添加的协议头长度, ESP/AH 头(+IP头,隧道模式时) int trailer_len; / 添加的协议尾长度, ESP 才有 props; / SA相关参数结构 struct xfrm_lifetime_cfg lft; /生命周期 /* Data for transformer */ stru

26、ct xfrm_algo *aalg; / hash算法 struct xfrm_algo *ealg; / 加密算法 struct xfrm_algo *calg; / 压缩算法 struct xfrm_algo_aead *aead; /* Data for encapsulator */ struct xfrm_encap_tmpl *encap; /NAT穿越相关信息 /* Data for care-of address */ xfrm_address_t *coaddr; /* IPComp needs an IPIP tunnel for handling uncompresse

27、d packets */ struct xfrm_state *tunnel; /通道,实际上是另一个SA /* If a tunnel, number of users + 1 */ atomic_t tunnel_users; /通道的使用数 /* State for replay detection */ struct xfrm_replay_state replay; /回放检测结构,包含各种序列号掩码等信息 /* Replay detection state at the time we sent the last notification */ struct xfrm_replay

28、_state preplay; / 上次的回放记录值 /* internal flag that only holds state for delayed aevent at the * moment */ u32 xflags; / 标志 /* Replay detection notification settings */ u32 replay_maxage; / 回放最大时间间隔 u32 replay_maxdiff; / 回放最大差值 /* Replay detection notification timer */ struct timer_list rtimer; / 回放检测定

29、时器 /* Statistics */ struct xfrm_stats stats; / 统计值 struct xfrm_lifetime_cur curlft;/ 当前生存周期计数器 struct timer_list timer; / SA 定时器 /* Last used time */ unsigned long lastused; /* Reference to data common to all the instances of this * transformer. */ const struct xfrm_type *type; / 类型, ESP / AH,处理指针 s

30、truct xfrm_mode *inner_mode; /函数处理指针 struct xfrm_mode *inner_mode_iaf; / struct xfrm_mode *outer_mode; /函数处理指针 /* Security context */ struct xfrm_sec_ctx *security;/ 安全上下文, 加密时使用 /* Private data of this transformer, format is opaque, * interpreted by xfrm_type methods. */ void *data; / 内部私有数据, 将在esp_init_state/ ah_init_state 中被赋值;2.2.2.3 安全路由链表安全路由链表是用来处理IPSEC包,以及发送的时候用的,最大的好处是灵活。如图2-18和2-19所示。对于策略的匹配,SA的匹配,都是为了给数据包skb上添加处理指针,以便在发出的时候进行处理。当是隧道的模式的时候,最后一个dst_entry是通过查找普通路由得到的;而传输模式,则是直接从skb上拷贝就可以得到,因为当经过FORWARDING的时候

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1