IPSEC实验报告
一.实验目的:
通过IPSEC协议实验,加深对IPSEC协议的认识,对IPSEC协议实现的工作模式、AH 协议和ESP 协议有一个初步的认识。同时,通过实验增进对于网络安全协议的理解,了解安全传输的一般模式。
二.实验要求:
理解IPSEC协议的具体工作流程,利用实验平台编程实现以下四种模式传输过程中对IP包的处理,并做分析。
1) 传输模式报文处理(AH协议)
2) 隧道模式报文处理(ESP协议)
3) 混合模式报文处理(AH协议+ESP 协议)
4) 3des加密算法实现(ESP协议)
实验平台为NetRiver,编程语言为C语言。
三.实验内容:
3.1 IPSEC协议简述
IPsec(Internet Protocol Security)即Intenet安全协议,是IETF提供Internet安全通信的一系列规范,它提供私有信息通过公用网的安全保障。IPSec适用于目前的版本IPv4和下一代IPv6。由于IPSec在TCP/IP协议的核心层——IP层实现,因此可以有效地保护各种上层协议,并为各种安全服务提供一个统一的平台。
IPsec使用两个不同的协议——AH和ESP来确保通信的认证、完整性和机密性。它既可以保护整个IP数据报也可以只保护上层协议。适当的模式称为:隧道模式和传送模式。在隧道模式下,IP数据报被IPsec协议完全加密成新的数据报;在传送模式下,仅仅是有效负荷被IPsec协议将IPsec头插入IP头和上层协议头之间来搬运。
为保护IP数据报的完整性,IPsec协议使用了“散列信息认证代码”(HMAC:hash message authentication codes)。为了得到这个“散列信息认证代码”,IPsec 使用了像MD5和SHA这样的散列算法根据一个密钥和数据报的内容来生成一个“散列”。这个“散列信息认证代码”包含在IPsec协议头并且数据包接受者可以检查“散列信息认证代码”,当然前提是可以访问密钥。
为了保证数据报的机密性,IPsec协议使用对称加密算法。IPsec标准需要NULL和DES 执行者。如今经常使用像3DES、AES和Blowfish这样更加强的算法。
为了避免拒绝服务攻击(DoS: denial of service attacks),IPsec协议使用了一个滑动窗口,每个数据包被分配到一个序号,并且只接受在不在窗口中的或新的数据包。旧的数据包立即丢弃。这可以避免重复攻击,即:攻击者记录原始的数据并稍后再次重发。本实验的设计中没有加入抗重播服务。
通信的双方为了能够加密和解密IPsec数据包,需要一种方法来保存通信的密钥、算法和IP地址等有关信息。所有的这些用来保护IP数据报的参数保存在一个“安全联盟”(SA:security association)中。“安全联盟”依次保存在一个“安全联盟”数据库(SAD:security association database)中。
3.2 编程实现内容
收到ipsec报文事件处理函数int stud_ipsec_input(char * pBuffer,unsigned int len)。
发送ipsec报文事件处理函数int stud_ipsec_output(char * pBuffer,unsigned int len)。
pBuffer为指向当前接收报文的指针,从IP报头开始,len为接收到的ipsec报文长度,函数成功返回0。
当系统收到或发送ipsec报文时,会调用此函数,实现如下功能:
根据系统提供的安全联盟数据库,按照报文源地址、目的地址和上层协议号查与之匹配的安全策略,确定与该安全策略对应的安全联盟束,再根据源地址、目的地址和上层协议号查于之对应的安全联盟,从而根据到的安全联盟中的模式、认证加密算法和密钥处理该报文。最后将通过解封装和解密的报文提交给接收函数,将经过封装加密的报文提交给发送函数。报文有可能被多次保护,需要按照先后顺序对报文进行认证和解密。
编程时依照实验报告书流程图、说明文档和编程环境中头文件编写,通过不断调试完成代码,在此不做列举。
3.3 实验过程
编译成功后点击“执行”,生成的程序将作为client与实验平台的测试sever进行通信。测试结束后(命令行显示Test over!)点击“分析”显示共收发12个包,c lient地址为192.168.0.1,server地址为192.168.1.1,上层协议包括AH、ESP和UDP,分别测试了传输模式报文处理(AH)、隧道模式报文处理(ESP)、混合模式报文处理(AH+ESP)和3DES 加密算法实现(ESP)。
此过程测试了编程实现的正确性,同时显示了测试流程和包数据。我在编程中添加了输出缓冲区中内容的代码,后面将结合数据分析IPSEC的工作流程。
3.4 实验分析
以接收到ipsec包后的处理过程为分析对象。
当收到一个ipsec包时,根据IP包输入源地址、目的地址查对应的安全策略数据库SPD,再在SPD中根据源地址、目的地址和上层协议查安全联盟数据库SAD(编程时直接一步实现了),在SAD中根据目的地址、上层协议和安全参数索引(SPI)查SA。对ipsec 包协议进行判断,AH或ESP之一。
3.4.1 传输模式报文处理(AH协议)
对AH协议包的处理是利用对应SA中的加密算法进行认证、剥离认证信息并还原IP 包。下面是一次AH协议包的处理过程:
原始输入数据包如下:
45 00 00 48 00 00 00 00 40 33 F8 30 C0 A8 01 01
C0 A8 00 01 11 04 00 00 00 00 01 36 00 00 00 00
AF 80 B9 56 1D 46 B4 7A 83 0F E9 6B 07 D8 07 D9
00 14 00 00 00 01 00 03 00 05 00 07 00 09 00 0B
00 0D 00 0F 00 11 00 13
经过处理的数据包如下:
45 00 00 30 00 00 00 00 40 11F8 6A C0 A8 01 01
C0 A8 00 01 07 D8 07 D9 00 14 00 00 00 01 00 03
00 05 00 07 00 09 00 0B 00 0D 00 0F 00 11 00 13
蓝部分表示20字节的IP头,红部分则是24字节的认证头。经过认证计算,如果正确就把认证头去掉,并修改IP头中的总长度、上层协议和校验码,最终得到处理后的数
据包。橙字体部分标注了修改的部分,分别是总长从0x48变为0x30,上层协议从IPT_AUTH(0x33)变为IPT_UDP(0x11),校验码从0xF830变为0xF86A。
3.4.2 隧道模式报文处理(ESP协议)
对ESP协议包的处理包括从SA中查认证算法和加密算法、认证并剥离认证数据、数据解密和IP包还原。下面是一次ESP协议包的处理过程:
原始输入数据包如下:
45 00 00 68 00 00 00 00 40 32 F9 61 C0 00 01 01
C0 00 00 01 00 00 01 36 00 00 00 00 B9 E1 F6 11
6A 28 C8 A2 7A 7E 61 25 9E D2 41 B1 36 D5 36 85
1A 51 2B 6F 0E 74 01 39 CC 71 AB 30 DB AF 2E BF
9A 82 B1 E3 8F 9A 28 B3 B6 51 14 20 90 11 9D 9D
85 98 A3 01 88 DE A7 58 FC 2F 78 64 DC 8C 8A 4B
26 2E 88 88 7F 29 1E C7
经过处理的数据包如下:
45 00 00 30 00 00 00 00 40 11 F8 6A C0 A8 01 01
C0 A8 00 01 07 D8 07 D9 00 14 00 00 00 01 01 01
00 01 00 01 00 00 00 01 00 01 00 00 00 01 00 01
蓝部分表示20字节的IP头,紫部分则分别是4字节的SPI,4字节的序列号,4字节的加密初始向量,12字节的ESP认证字段。若ESP采用隧道模式,负载就是最终的IP 包,则只需解密没有涂的负载部分;若采用非隧道模式,则解密后要重构IP包,做类似于AH的处理。需要注意的是解密后的数据可能带有填充数据,需要根据解密后数据的倒数第2个字节的填充数据长度(Pad Length)修复数据,再去掉最后两个字节Pad Length和Next Header(负载字段数据类型)。
由IP头的变化可以看出,采用隧道模式,IP地址有变化。
3.4.3 混合模式报文处理(AH协议+ESP 协议)
对混合模式的处理相当于先进行一次AH协议包的处理,再把处理得到的包进行一次ESP包处理。下面是一次混合模式包的处理过程:
原始输入数据包如下:
45 00 00 80 00 00 00 00 40 33 F9 48 C0 00 01 01
C0 00 00 01 32 04 00 00 00 00 01 36 00 00 00 00
E9 B6 2D 6F B5 BE 27 28 20 74 B7 60 00 00 01 36
00 00 00 00 88 DE A7 58 FC 2F 78 64 6E 39 76 B6
C0 58 C5 C4 2B E3 88 FA D6 17 1E E6 E5 CE 18 6B
7D 06 99 C0 70 85 F7 FE BF 00 53 FB BF 42 91 11
0A 0F CD 4C 52 9B AD 54 29 77 36 E7 3C 2C 1A B6tcp ip协议的ip层是指
E0 8D 97 C8 F9 75 17 13 D9 99 C3 14 84 BD FD 71
经过AH协议包处理后得到的包如下:
45 00 00 68 00 00 00 00 40 32 F9 61 C0 00 01 01
C0 00 00 01 00 00 01 36 00 00 00 00 88 DE A7 58
FC 2F 78 64 6E 39 76 B6 C0 58 C5 C4 2B E3 88 FA
D6 17 1E E6 E5 CE 18 6B 7D 06 99 C0 70 85 F7 FE
BF 00 53 FB BF 42 91 11 0A 0F CD 4C 52 9B AD 54
29 77 36 E7 3C 2C 1A B6 E0 8D 97 C8 F9 75 17 13
D9 99 C3 14 84 BD FD 71
经过ESP协议包处理后得到的数据包:
45 00 00 30 00 00 00 00 40 11 F8 6A C0 A8 01 01
C0 A8 00 01 07 D8 07 D9 00 14 00 00 00 01 01 01
00 01 00 01 00 00 00 01 00 01 00 00 00 01 00 01
3.4.4 3des加密算法实现(ESP协议)
ESP协议包处理中,3des加解密与普通情况下des加解密的区别在于需要3个密钥进行3des加解密。实验中只需两个密钥,密钥1复用。下面是一次3des加密算法包的处理过程:原始输入数据包如下:
45 00 00 48 00 00 00 00 40 32 F8 31 C0 A8 00 01
C0 A8 01 01 00 00 01 36 00 00 00 00 7C B6 00 BD
35 A3 A9 4D 12 B3 A0 48 85 B3 60 CD B3 6A 91 F5
FA 24 9F B2 48 6E F8 F7 3F F9 B6 5C 30 2E 83 65
83 A1 E3 16 2C 51 49 FD
经过ESP协议3des解密处理后得到的数据包:
45 00 00 30 00 00 00 00 40 11 F8 6A C0 A8 00 01
C0 A8 01 01 07 D9 07 D8 00 14 00 00
发送一个ipsec包的过程就是接收的逆过程,在此不再详细分析。
四.实验结果
通过对IPSEC协议基本知识和工作流程学习,在实验平台编程实现IPSEC协议收发数据包的过程并进行实验,最后对实验数据进行分析,我对IPSEC协议有了比较深刻的认识,对AH协议和ESP协议以及传输模式和隧道模式的原理和效果有了非常直观的认识。同时,实验增进了我对于网络安全协议的理解,了解了安全传输的一般模式。
以保证传输数据的真实性、完整性和保密性为目的,在不同的内容要求、安全等级要求和性能要求的前提下,可以选择不同模式的IPSEC协议进行传输,协议也完全能满足各种不同的安全需要。
在协议使用较强加密和认证算法并使用长密钥的情况下,我认为数据传输本身是十分安全的。可能出现安全问题的地方在于安全联盟数据库的管理不善或可能存在的对IKE密钥交换协议的攻击。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。