【Cryptography】IP安全
1
IPsec
从IP层加密所有流量
加密的层次
结构
- AH【Authentication Header】:数据源认证和数据完整性保护和防报文重放功能,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据
- ESP【封装安全负载】:提供加密、数据源认证、数据完整性校验和防报文重放功能
- IKE【Internet 密钥交换】:IKE为IPsec提供了自动协商交换密钥、建立SA的服务,能够简化IPsec的使用和管理,大大简化IPsec的配置和维护工作。
- IPsec可以由
AH
或ESP
这两种方式实现,AH和ESP又都支持传输模式
与隧道模式
工作流程
SA(security association):是两个通信实体经协商建立起来地一种协议,它们决定了用来保护数据包安全地IPsec协议,转码方式,密钥,以及密钥地有效存在时间等等
IKE(isakmp)SA:协商对IKE数据流进行加密以及对对等体进行验证地算法(对密钥地加密和peer地认证)对等体之间只能存在一个
第一阶段:建立ISAKMP SA协商的是以下信息
1、对等体之间采用何种方式做认证
,是预共享密钥
还是数字证书
。
2、双方使用哪种加密算法(DES、3DES)
3、双方使用哪种HMAC方式,是MD5还是SHA
4、双方使用哪种Diffie-Hellman密钥组来交换密钥
5、使用哪种协商模式(主模式或主动模式)
6、协商SA的生存期
第二阶段:建立IPsec SA协商的是以下信息
1、双方使用哪种封装技术,AH还是ESP
2、双方使用哪种加密算法
3、双方使用哪种HMAC方式,是MD5还是SHA
4、使用哪种传输模式,是隧道模式还是传输模式
5、协商SA的生存期
IPsec资料 https://www.processon.com/outline/view/60768c965653bb2e1c66c905
ESP
封装安全有效载荷【Encapsulating Security Payloads】
**IPSec协议:**IPsec将IP数据包的内容先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容。
**传输模式和隧道模式:**IPsec对数据进行加密的方式有两种:传输模式和隧道模式。传输模式只是对IP协议的数据部分(payload)进行了加密,而隧道模式则是对整个IP数据包进行加密,就好像整个IP数据包在一个安全的隧道里传输一样
传输模式
装包过程:
1、在原IP
报文【包含IP、IP Datagram三部分】的末尾添加ESP尾部
(ESP Trailer)信息,
- 尾部包含三部分。由所选加密算法可能是块加密,那么当最后一块长度不够时就需要进行填充(padding),附上填充长度(Pad length)方便解包时顺利找出用来填充的那一段数据。而Next header则⽤用来标明被加密的数据报文的类型,例如TCP
2、ipDatagram和ESP尾部
作为整体进行加密,具体的加密算法与密钥由SA给出。
3、在第2步得到的加密数据添加ESP Header
。
- ESP Header由两部分组成:SPI和序号(Sequence number)。ESP Header位于IP之后。
4、将ESP Header和第2步得到的加密数据做一个摘要,得到一个消息认证码 MAC(ESP M
essage A
uthentication C
ode),并添加到ESP报文的尾部。这样就得到了一个完整的ESP数据报文。
拆包过程:
1、接收方收到数据报⽂文后,对除IP和ESP Message Authentication Code的部分计算摘要与ESP MAC进⾏行⽐比较,验证数据的完整性。假如比对不同,可以断定所收到的报⽂文已经经过篡改了。
2、查看ESP Header,通过里面的SPI得到数据报文所对应的SA;检查序列号,保证数据不是回放攻击。
3、根据SA所提供的加密算法与密钥,解密被加密算法加密过的部分(IP Datagram、ESPTrailer)。
4、根据ESP Trailer里的填充长度信息,可以找出填充字段的字段,删去后就能得到完整地IP Datagram
传输模式缺点是,无法避免对数据包的通信量分析
隧道模式
隧道模式将整个IP包加密,
包括原ip头部
。因为用ESP将原IP头部也加密了【IP头部里面有目的ip地址和源ip地址】,所以需要新的ip头部
来包含目的ip地址等信息。隧道模式很有效的防止通信量分析
装包过程:
-
在原IP报文末尾添加
ESP尾部
(ESP trailer)信息。如上图所示,尾部包含三部分。由所选加密算法可能是块加密,那么当最后一块长度不够时就需要进行填充(padding),附上填充长度(Pad length)方便解包时顺利找出用来填充的那一段数据。而Next header则用来标明被加密的数据报文的类型,例如TCP。 -
将
原IP报文以及第1步得到的ESP尾部
作为一个整体进行加密。具体的加密算法与密钥由SA给出。 -
为第2步得到的加密数据添加
ESP头部
。如上图所示,ESP头由两部分组成,SPI和序号(Sequence number)。加密数据与ESP头合称为“enchilada”。 -
附加完整性度量结果(ICV,Integrity check value)。对第三步得到的“enchilada”做摘要,得到一个完整性度量值,并附在ESP报文
的尾部。
- 加上新的IP头。新构造的IP头附在ESP报文的前面组成一个新的IP报文。注意这个新的IP头的目的地址跟源地址可以不一样。协议类型为50,说明它里面装的是一个IPsec报文。
拆包过程:
-
接收方收到数据报文后,发现协议类型是50,故知道这是一个IPsec包。首先查看ESP头,通过里面的SPI决定数据报文所对应的SA。
-
计算“enchilada”部分的摘要,与附在末尾的ICV做对比,如果一样的话说明数据是完整的。否则可以断定所收到的报文已经不是原来的报文了。
-
检查Seq里的顺序号,保证数据是“新鲜”的。
-
根据SA所提供的加密算法和密钥,解密被加密过的数据,即“enchilada”。得到原IP报文与ESP尾部(trailer)。
-
根据ESP尾部里的填充长度信息,我们可以找出填充字段的长度,删去后就得到原来的IP报文。
-
最后根据得到的原IP包的目的地址来进行转发。
资料
IPSec 传输模式下 ESP 报文的装包与拆包过程 https://www.csdn.net/tags/NtjaIgzsNDI2MTMtYmxvZwO0O0OO0O0O.html
IPSec传输模式/隧道模式下ESP报文的装包与拆包过程 https://blog.csdn.net/johnson_puning/article/details/14163751