目录
一.TCP/IP 协议的缺点
- IP层不校验数据完整性:原始的IP协议(IPv4)不检查数据包的完整性。当数据包在网络中传输时,中间的路由器或交换机不会验证数据包的内容是否被篡改。这意味着,如果攻击者能够访问到网络中的数据流,他们就有可能篡改数据包的内容而不被发现。
- 缺乏端到端的校验:虽然TCP协议在其传输层提供了校验和机制来验证报文在传输过程中是否出现错误,但如果黑客修改了报文,并重新计算,填入校验和字段,则接收方无法判断报文是否被修改。
- 缺少数据加密:原始的TCP/IP协议不提供数据加密功能。这意味着,除非用户自己实现加密机制,否则在网络上传输的所有数据都是明文的,可以被任何能够访问网络的人读取。
二.IPsec诞生背景
IPSec(IP Security)是一组开放的网络安全协议,是对IP的安全性补充,其工作在IP层,为IP网络通信提供透明的安全服务。它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合,这些协议和服务包括认证头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)两个安全协议、密钥交换和用于验证及加密的一些算法等。
IPsec可提供安全服务
1. 数据加密:IPsec协议使用加密技术对数据进行加密,确保数据在传输过程中的机密性。它提供了两种加密方式:ESP(Encapsulating Security Payload)和AH(Authentication Header)。ESP协议负责数据的加密,而AH协议则提供数据的完整性校验和源验证功能。通过这些加密技术,IPsec可以保护TCP/IP协议簇中传输的数据,防止数据被窃取或篡改。
2. 认证机制:IPsec协议提供了认证机制,用于验证数据的完整性和来源。AH协议通过在每个数据包中添加一个认证头来实现这一功能。认证头包含了用于验证数据完整性的哈希值和用于验证数据来源的公钥或预共享密钥。通过验证认证头,接收方可以确保接收到的数据是完整且来自可信的发送方。
3. 防止重放攻击:IPsec协议通过使用序列号和时间戳来防止重放攻击。每个IPsec数据包都包含一个唯一的序列号,接收方可以检查序列号的连续性来识别重放的数据包。此外,时间戳也可以用来验证数据包的时效性,确保数据包不是在过去某个时间截取的。
4. 访问控制:IPsec协议支持访问控制功能,可以根据策略规则来允许或拒绝特定的通信连接。通过配置IPsec策略,可以实现基于源IP地址、目标IP地址、端口号等条件的访问控制,增强网络的安全性。
三.IPsec协议簇
DH算法
DH算法的基本原理涉及以下步骤:
- Alice和Bob首先同意使用一个大的质数p和它的原根g。这两个数是公开的,不需要保密。
- Alice选择一个私有的随机数x,并计算X = | g^x | /P (图中=8)。她将X发送给Bob。
- Bob选择一个私有的随机数y,并计算Y = | g^y | / p (图中=4 )他将Y发送给Alice。
- Alice计算共享密钥Z = |Y^x | /p(图中=9),而Bob计算共享密钥S = |X^y |/p(图中=9)。
假设,图中需要传输的内容为X=8 ,Y=4 以及公开数 g p;以上为黑客能够知道的所有信息,即使黑客知道共享密钥的算法如:Z = |Y^x | /p 如果黑客不知道x则无法算出共享密钥,而x未经过传输是私有数,因此黑客无法获知共享密钥。
IPsec的两种工作模式
注:不同的工作模式代表不同的数据包封装方式
传输模式
- 封装方式:不改变原有的IP头部,在原始IP包头包头后面插入IPsec包用于将原来的数据封装成被保护的数据(网络层+传输层+应用层数据)。
- 应用场景:用于私网内部主机与主机之间通信
- 原因:若数据包被黑客截获由于原始IP包头包含私网主机IP地址且未被加密,黑客极有可能篡改IP报文冒充客户端向服务器发送信息。
隧道模式:
- 封装方式:在原始IP包人前插入一个IPsec包头,原始IP包头作为载荷的一部风受到IPSec保护。
- 应用场景:经常用于私网与私网之间跨越公网通信,建立安全的 VPN通道。
- 原因:与传输模式不同,隧道模式添加的新IP包头仅包含公网IP不包含私网IP,尽管被黑客截获,黑客也无法冒充客户端向服务器发送信息。
IPsec的安全协议
AH 协议:鉴别头协议
AH(Authentication Header)协议是一种为IP数据包提供数据完整性验证和数据源身份认证的安全协议。协议号:51
AH提供的安全服务:
-
数据源验证:AH协议通过验证数据包的完整性和身份来确保数据来自可信的源。它使用公钥加密或预共享密钥来对数据包进行加密和签名,以验证发送方的身份和数据包的完整性。
-
数据完整性校验:AH协议使用哈希算法(如MD5或SHA-1)来计算数据包的哈希值,并将该哈希值附加在数据包的AH头认证数据字段中。接收方在接收到数据包后,使用相同的哈希算法重新计算哈希值,并与数据包中的哈希值进行比较,以验证数据包的完整性。
-
防报文重放:AH协议通过序列号和时间戳等机制来防止重放攻击。每个AH数据包都包含一个唯一的序列号,接收方可以检查序列号的连续性来识别重放的数据包。此外,时间戳也可以用来验证数据包的时效性,确保数据包不是在过去某个时间截取的。
AH协议身份验证过程如下:
- 发送方生成一个身份验证值,使用共享密钥和AH头部中的其他字段进行计算。
- 发送方将生成的身份验证值填充到AH头部的身份验证数据字段中。
- 发送方将AH头部添加到待发送的IP包中,并将IP包发送给接收方。
- 接收方使用相同的共享密钥和接收到的IP包中的AH头部字段计算一个身份验证值。
- 接收方将计算得到的身份验证值与接收到的IP包中的AH头部中的身份验证数据字段进行比较。
- 如果两者相等,则验证成功,否则验证失败。