加密算法---机密性
- VPN加密技术
- 对称密钥算法
- 加密方与解密方共用一把秘钥
- 用于加密用户数据
- 对称密钥算法

- 非对称密钥算法
- 加密方通过对端的公钥加密数据
- 解密方通过自己的私钥解密数据
- 用于密钥交换和数字签名


HASH/散列 算法 -----完整性检查

散列算法应用:在数据通信过程中发送方对报文进行Hash,并将报文和Hash值发送给接收方。接收方采巴相同的算法对报文进行Hash,然后通过对比两个Hash值,来判断通信过程中报文是否受到篡改,从而实现完整性校验。
如图所示,客户端与服务器进行数据交互,采用散列算法,具体交互流程如下:
身份认证-----防中间人身份欺骗
身份认证包括两个方面:
- 设备身份认证: Pre-Shared Keys (预共享key认证)、 RSA签名认证
- 用户身份认证 :短信 、 usb-key 、 用户名和密码等
封装安全协议
- IPSec协议使用下面两种协议对IP报文进行保护
- AH协议(Authentication Header,协议号51):
- 可以同时提供数据完整性确认、数据来源确认、防重放等安全特性;AH常用摘要算法HMAC-MD5和HMAC-SHA1实现该特性。
- ESP协议(Encapsulating Security Payload,协议号50)
- 可以同时提供数据完整性确认、数据加密、防重放等安全特性;ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用HMAC-MD5或HMAC-SHA1来实现数据完整性。
- IPSec协议使用AH或ESP对报文进行保护时,会存在两种模式:
- 传输模式(Transport Mode)
- 隧道模式(Tunnel Mode)
IPSec协议概述
IPSec协议如何保护IP数据?
- 1. 使用传输模式的AH对IP数据进行保护
这段文字和图示描述的是 IPSec协议套件中,认证头(AH)在传输模式下提供数据完整性和认证保护 的过程。
核心概念解析
- IPSec: 是一套协议标准,用于在IP层对数据包进行加密、认证和保护,确保通信的机密性、数据完整性、和身份认证。
- AH : 认证头 。它是IPSec的两种主要协议之一(另一个是ESP-封装安全载荷)。AH不提供加密 ,但它提供:
- 数据完整性校验: 确保数据在传输过程中没有被篡改。
- 数据源认证: 确保数据包确实来自它所声称的发送方。
- 可选的防重放保护: 防止攻击者重复发送捕获的数据包。
- 传输模式 : 在这种模式下,IPSec只保护原始IP数据包的载荷 (即传输层数据,如TCP/UDP段),而原始的IP头部保持不变。这种模式通常用于端到端的通信(如客户端到服务器)。
过程详细描述
整个过程基于发送方和接收方共享一个秘密密钥(Key)。
发送方处理流程(打包与签名)
- 构建原始数据包 : 发送方有一个需要发送的原始IP数据包,其结构为:
[IP头部] [数据部分]
。 - 插入AH头部 : 发送方在IP头部和数据部分之间插入一个AH头部。这个头部包含一些重要字段,如安全参数索引(SPI)、序列号等,用于标识安全关联(SA)。
- 计算认证码(签名) :
- 将整个数据包(包括IP头部、新插入的AH头部、数据部分)作为输入,送入HMAC算法(如HMAC-MD5或HMAC-SHA1)。
- 同时,使用与接收方预先共享的秘密密钥(Key) 一起计算。
- HMAC算法会生成一个固定长度的哈希值(HASH值),这个哈希值就像是整个数据包唯一的"数字指纹"或"签名"。
- 存储哈希值 : 将这个计算得到的HASH值填入AH头部的"认证数据"字段中。
- 发送数据包 : 最终形成的受保护的数据包结构为:
[IP头部] [AH头部(内含HASH值)] [数据部分]
。然后将这个数据包发送到网络上。
关键点: 在计算哈希时,IP头部中一些在传输过程中会合法改变的字段(如TTL、校验和等)会被视为全0来计算,以确保接收方能正确验证。
接收方处理流程(验证)
- 接收数据包 : 接收方收到数据包:
[IP头部] [AH头部] [数据部分]
。 - 提取发送方的哈希值 : 接收方从AH头部的"认证数据"字段中取出发送方计算并存储的HASH值,暂时放在一边。
- 清空认证数据字段: 将AH头部中的"认证数据"字段清零(因为接收方自己计算哈希时,这个字段应该是空的)。
- 重新计算哈希值(验证签名) :
- 接收方使用相同的HMAC算法(如HMAC-MD5或HMAC-SHA1)。
- 将收到的整个数据包(IP头部、清零后的AH头部、数据部分)作为输入。
- 使用与发送方相同的秘密密钥(Key) 一起计算,生成一个新的哈希值。
- 对比验证 :
- 将自己计算出的哈希值 与从数据包中提取出的发送方的哈希值进行比对。
- 如果两个哈希值完全相同: 这意味着数据包在传输过程中没有被篡改(数据完整性),并且确实是由拥有相同密钥的对方发送的(数据源认证)。验证通过,接收方将数据包中的"数据部分"传递给上层协议。
- 如果两个哈希值不匹配: 这意味着数据包可能在传输中被篡改了,或者发送方身份不真实(密钥不正确)。接收方会** silently discard**(静默地丢弃)这个数据包,不会向上层传递任何错误信息,以防止遭受攻击。
总结
图中描述的过程清晰地展示了AH在传输模式下如何像一个"数字封印"一样工作:
- 发送方用共享密钥对整个包(几乎全部)进行哈希计算,并将结果附在包内。
- 接收方用同样的密钥重复此计算,并核对结果。任何对IP头部或数据的篡改都会导致哈希值变化,从而使验证失败。
这有效地防止了中间人攻击和数据篡改,保证了通信的 authenticity 和 integrity。
- 2. 使用传输模式的ESP对IP数据进行保护
这段文字和图示描述的是 IPSec协议套件中,封装安全载荷(ESP)在传输模式下同时提供加密和认证保护 的过程。它比之前描述的AH更复杂,功能也更强大。
下面我将为您详细描述发送方和接收方的处理过程:
核心概念解析
- ESP : 封装安全载荷 。它是IPSec的两种主要协议之一。ESP提供比AH更全面的安全服务:
- 机密性 : 加密数据载荷,防止窃听。
- 数据完整性校验: 确保数据在传输过程中没有被篡改。
- 数据源认证: 确保数据包确实来自它所声称的发送方。
- 防重放保护: 防止攻击者重复发送捕获的数据包。
- 传输模式 : 与AH一样,在此模式下,原始IP头部保持不变,主要保护的是传输层载荷。
过程详细描述
整个过程基于发送方和接收方共享两套密钥(或一套密钥用于不同用途):
- Key1: 用于加密的密钥。
- Key2: 用于认证的密钥。
发送方处理流程(打包、加密与签名)
- 构建原始数据包 : 发送方有原始数据包:
[IP头部] [数据部分]
。 - 准备加密 :
- 在
数据部分
后面添加一个ESP尾部。ESP尾部包含填充字节(为了满足加密算法的块长度要求)和"下一个头部"字段(用来标识加密的是什么数据,如TCP还是UDP)。 - 使用加密算法(如DES, 3DES, AES)和加密密钥(Key1) 对
[数据部分 + ESP尾部]
进行加密,得到加密数据。
- 在
- 添加ESP头部 : 在加密块前面添加一个ESP头部。这个头部包含安全参数索引(SPI)和序列号,用于标识安全关联(SA)和防重放。
- 计算认证码(签名) :
- 将
[ESP头部] [加密数据]
作为输入,送入HMAC算法(如HMAC-MD5或HMAC-SHA1)。 - 使用认证密钥(Key2) 一起计算,生成一个哈希值(HASH值),即"ESP认证数据"。
- 将
- 构建最终数据包 : 组装最终要发送的数据包,其结构为:
[IP头部] [ESP头部] [加密数据] [ESP认证数据(即HASH值)]
- 发送数据包: 将这个受保护和加密的数据包发送出去。
总结发送方操作 :先加密(数据+尾部),后认证(头部+加密后的数据)。
接收方处理流程(验证、解密与解包)
- 接收数据包 : 接收方收到数据包:
[IP头部] [ESP头部] [加密数据] [ESP认证数据]
。 - 验证认证码(验证签名) :
- 从包中提取出发送方计算的ESP认证数据(HASH值),暂存。
- 将收到的
[ESP头部] [加密数据]
部分作为输入,使用相同的HMAC算法和认证密钥(Key2) 重新计算一个哈希值。 - 对比自己计算出的哈希值与收到的哈希值。
- 如果不同,则立即丢弃数据包(数据可能被篡改或来源不真实)。
- 如果相同 ,验证通过, proceed to下一步。认证在解密之前进行,这是一个重要的安全特性,可以防止恶意构造的密文攻击。
- 解密数据 :
- 使用解密密钥(Key1) 和相同的加密算法对
[加密数据]
部分进行解密。 - 解密后得到
[原始数据部分] [ESP尾部]
。
- 使用解密密钥(Key1) 和相同的加密算法对
- 处理ESP尾部 :
- 根据ESP尾部中的"填充长度"字段,移除之前添加的填充字节。
- 根据"下一个头部"字段,确定解密后的
原始数据部分
应该交给哪个上层协议(如TCP或UDP)处理。
- 处理原始数据 : 最终,接收方重建了原始的数据包结构
[IP头部] [原始数据部分]
,并将其传递给上层协议栈。
总结:ESP vs. AH
特性 | ESP (封装安全载荷) | AH (认证头) |
---|---|---|
机密性 | 提供(加密) | 不提供 |
完整性 | 提供(保护ESP头部和加密数据) | 提供(保护整个IP包,除可变字段) |
认证 | 提供(数据源认证) | 提供(数据源认证) |
保护的字段 | IP载荷(数据) | 几乎整个IP包 |
图中描述的过程展示了ESP如何"先加密后认证",接收方则"先认证后解密",从而为IP通信提供了强大的、多层次的安全保护。
-
- 使用隧道模式的AH对IP数据进行保护

好的,这段文字和图示描述的是 IPSec协议套件中,认证头(AH)在隧道模式下提供数据完整性和认证保护 的过程。
这与传输模式的关键区别在于它保护了整个原始IP数据包。
下面我将为您详细描述这个过程:
核心概念解析
- AH : 认证头 。提供数据完整性、数据源认证和防重放保护,不提供加密。
- 隧道模式 : 在这种模式下,IPSec会将整个原始IP数据包(包括IP头部和数据载荷)都保护起来 ,并为其添加一个新的IP头部。这个新的IP头部通常包含隧道端点(如VPN网关)的地址。隧道模式主要用于网络到网络(如站点到站点VPN)或主机到网络(如远程访问VPN)的通信。
过程详细描述
整个过程同样基于发送方和接收方共享一个秘密密钥(Key)。
发送方处理流程(打包与签名)
- 构建原始数据包 : 发送方有一个需要发送的原始IP数据包,其结构为:
[原IP头部] [数据部分]
。 - 封装原始包: 发送方(通常是VPN网关)将整个原始数据包当作新的"数据载荷"来处理。
- 添加新IP头部 : 在最前面添加一个新IP头部。这个新头部的源地址和目的地址是IPSec隧道的两个端点(例如,公司总部的VPN网关和分公司的VPN网关的公共IP地址),而不是原始包中的源主机和目的主机的私有IP地址。
- 插入AH头部 : 在新IP头部和原始数据包之间插入一个AH头部。
- 计算认证码(签名) :
- 将整个新数据包 (包括新IP头部 、AH头部、原IP头部 、数据部分)作为输入,送入HMAC算法(如HMAC-MD5或HMAC-SHA1)。
- 使用与接收方预先共享的秘密密钥(Key) 一起计算,生成一个哈希值(HASH值)。
- 注意:计算时,新IP头部中一些在传输过程中会合法改变的字段(如TTL、校验和等)会被视为全0。
- 存储哈希值 : 将这个计算得到的HASH值填入AH头部的"认证数据"字段中。
- 发送数据包 : 最终形成的受保护的数据包结构为:
[新IP头部] [AH头部(内含HASH值)] [原IP头部] [数据部分]
。然后将这个数据包发送到网络上。
关键点 : AH隧道模式保护了原始IP数据包的全部内容,包括原始的源IP和目的IP地址,这些信息在传输过程中对外是隐藏的(尽管没有加密,但被完整性保护着)。
接收方处理流程(验证与解封)
- 接收数据包 : 接收方(隧道终点)收到数据包:
[新IP头部] [AH头部] [原IP头部] [数据部分]
。 - 提取发送方的哈希值 : 接收方从AH头部的"认证数据"字段中取出发送方计算并存储的HASH值,暂时放在一边。
- 清空认证数据字段: 将AH头部中的"认证数据"字段清零。
- 重新计算哈希值(验证签名) :
- 接收方使用相同的HMAC算法和相同的秘密密钥(Key)。
- 将收到的整个数据包(新IP头部、清零后的AH头部、原IP头部、数据部分)作为输入,生成一个新的哈希值。
- 对比验证 :
- 将自己计算出的哈希值 与从数据包中提取出的发送方的哈希值进行比对。
- 如果两个哈希值完全相同 : 验证通过。这意味着:
- 数据包来自真实的发送方。
- 数据包在传输中未被篡改(包括新IP头、原IP头和所有数据)。
- 如果两个哈希值不匹配: 验证失败。接收方会** silently discard(静默地丢弃)** 这个数据包。
- 解封原始包 : 验证通过后,接收方剥离掉新IP头部 和AH头部 ,露出内部的
[原IP头部] [数据部分]
。 - 路由原始包 : 然后根据原IP头部中的目的IP地址,将这个解封后的原始数据包路由到局域网中的最终目标主机。
总结:隧道模式 vs. 传输模式
特性 | 隧道模式 | 传输模式 |
---|---|---|
保护的内容 | 整个原始IP包(原IP头+数据) | 仅IP载荷(数据) |
添加的头部 | 新IP头 + AH/ESP头 | AH/ESP头(IP头不变) |
主要用途 | 网络到网络通信(站点到站点VPN) | 端到端通信(主机到主机) |
原始IP地址 | 被隐藏和保护在内层 | 在原始IP头中可见 |
图中描述的过程展示了AH隧道模式如何为整个原始IP数据包提供一个安全的"隧道",确保其从隧道起点到终点的完整性和真实性。
-
- 使用隧道模式的ESP对IP数据进行保护

这两张图结合在一起,完整地描述了 IPSec协议套件中,封装安全载荷(ESP)在隧道模式下同时提供加密和认证保护 的完整过程,包括发送方的处理(封装、加密、认证)和接收方的处理(验证、解密、解封)。
下面我将详细描述这个全过程:
核心概念解析
- ESP : 封装安全载荷 。提供机密性(加密) 、数据完整性校验 、数据源认证 和防重放保护。
- 隧道模式 : 在这种模式下,IPSec会将整个原始IP数据包(包括IP头部和数据载荷)都作为需要保护的有效载荷 。它会为这个被保护的整体添加一个新的IP头部(隧道头部)和一个ESP头部。隧道模式主要用于网关到网关的通信(如Site-to-Site VPN)。
过程详细描述
整个过程基于发送方和接收方(通常是两个VPN网关)共享两套密钥:
- Key1: 用于加密的密钥。
- Key2: 用于认证的密钥。
发送方处理流程(封装、加密与签名)
- 获取原始数据包 : 发送方网关收到一个需要穿越不安全网络(如互联网)发送到对端私有网络的原始数据包:
[原IP头部] [数据部分]
。这个原始包的目的IP是私有地址。 - 准备加密载荷 :
- 在原始数据包(
[原IP头部] [数据部分]
)后面添加一个ESP尾部 。ESP尾部包含:- 填充字节:为了使整个待加密块的长度满足加密算法(如AES)的块大小要求。
- 填充长度:记录填充了多少字节,以便接收方解密后移除。
- 下一个头部:标识被加密的是什么(这里因为是隧道模式,通常是"IPv4"或"IPv6")。
- 在原始数据包(
- 加密 :
- 使用加密算法(DES、3DES 或 AES )和加密密钥(Key1) 对
[原IP头部] [数据部分] [ESP尾部]
这个整体进行加密,得到加密数据。
- 使用加密算法(DES、3DES 或 AES )和加密密钥(Key1) 对
- 添加ESP头部 : 在加密块前面添加一个ESP头部。这个头部包含安全参数索引(SPI)和序列号,用于标识安全关联(SA)。
- 计算认证码(签名) :
- 将
[ESP头部] [加密数据]
作为输入,送入HMAC算法(如HMAC-MD5或HMAC-SHA1)。 - 使用认证密钥(Key2) 一起计算,生成一个哈希值(HASH值),即"ESP认证数据"。
- 将
- 添加新IP头部 : 在最前面添加一个新IP头部 。这个新头部的源地址和目的地址是两个VPN网关的公网IP地址。这是数据包在互联网上实际路由的依据。
- 构建最终数据包并发送 : 组装最终要发送的数据包,其结构为:
[新IP头部] [ESP头部] [加密数据] [ESP认证数据(即HASH值)]
然后将这个包发送到互联网上。
总结发送方操作 :先封装(原IP包+ESP尾),再加密,最后认证(ESP头+密文)。
接收方处理流程(验证、解密与解封)
- 接收数据包 : 接收方VPN网关收到数据包:
[新IP头部] [ESP头部] [加密数据] [ESP认证数据]
。 - 验证认证码(验证签名) :
- 从包中提取出发送方计算的ESP认证数据(HASH值),暂存。
- 将收到的
[ESP头部] [加密数据]
部分作为输入,使用相同的HMAC算法和认证密钥(Key2) 重新计算一个哈希值。 - 对比自己计算出的哈希值与收到的哈希值。
- 如果不同 ,则立即丢弃数据包(数据可能被篡改或来源不真实)。这是关键的安全步骤,先验证后解密。
- 如果相同,验证通过, proceed to下一步。
- 解密数据 :
- 使用解密密钥(Key1) 和相同的加密算法(DES/3DES/AES)对
[加密数据]
部分进行解密。 - 解密后得到
[原IP头部] [原始数据] [ESP尾部]
。
- 使用解密密钥(Key1) 和相同的加密算法(DES/3DES/AES)对
- 处理ESP尾部 :
- 根据ESP尾部中的"填充长度"字段,移除之前添加的填充字节。
- 根据"下一个头部"字段,确认解密出来的是一个完整的IP数据包。
- 解封并路由原始包 :
- 剥离掉用于隧道传输的
[新IP头部]
、[ESP头部]
和[ESP认证数据]
。 - 此时,只剩下原始的、未加密的IP数据包:
[原IP头部] [原始数据]
。 - 接收方网关查看原IP头部中的目的IP地址(这是一个私有地址),并根据本地的路由表,将这个原始数据包路由到内网中的最终目标主机。
- 剥离掉用于隧道传输的
总结:ESP隧道模式的价值
ESP隧道模式提供了最高级别的安全保障:
- 完全机密性: 原始IP包的所有内容(包括原始IP地址和内网数据)都被加密,在公网上不可读。
- 完整性与认证: 确保数据来自可信的对方且在传输中未被篡改。
- 地址隐藏: 原始网络的拓扑结构(私有IP地址)被隐藏起来,提高了网络安全性。
图中描述的过程完美展示了IPSec VPN如何通过隧道模式建立一条安全的"虚拟隧道",连接两个异地网络,让它们就像在同一个安全的局域网内一样通信。