IPsec 协议组

IPsec 全称 IP Security,顾名思义它是一个用于保证通信安全的协议,并且多半是在 IP frame 上做的手脚。下面我们来了解一下它。

什么是 IPsec

IPsec 不是一个单独的协议,它是一个协议组。它的目的是为网络层安全提供一个稳定,持久的基础,可用于设备之间的加密连接。它可以保证数据在公网上传输的安全,并且常用于 VPN。它的工作原理是加密 IP 数据包,同时验证数据包的来源。IPsec 通常使用 500 端口。

并非所有 VPN 都是通过 IPsec 实现的,有些 VPN 使用的是 SSL/TLS 协议,它们之间的区别在于它们作用在不同的协议层上。SSL/TLS 作用在传输层。

IPsec 工作流程

IPsec 连接经历以下步骤:

  1. Key exchange,交换密钥;要保证数据的安全,则需要为数据包进行加密,在为数据包加密之前,需要保证通信双方拥有对应的密钥,交换密钥就是一件很重要的事情;在这一步会使用到IKE协议;
  2. Packet headers and trailers,修改报文;IPsec 在报文头部或尾部增加了一些用于验证和加密的信息;
  3. Authentication,验证,IPsec 为每个数据包都提供了验证机制,保证该数据包来自可信的设备;可以使用AH或者ESP协议;
  4. Encyption,加密,IPsec 使用密钥为载荷进行加密,保证数据安全;可以使用ESP协议;
  5. Transmission,转发,主要使用 UDP 协议而非 TCP 协议;
  6. Decryption,解密,与加密相对应;

对比 SSL/TLS 协议,SSL/TLS 使用的是非对称加密,在握手时服务端需要向客户端发送公钥,而为了保证公钥不被篡改,又需要通过证书机制来保证。

协议族

  • Authentication Headers(AH),为 IP 数据报提供无连接数据完整性和数据源身份验证,并提供针对重放攻击的保护
  • Encapsulating Security Payloads(ESP),提供机密性、无连接数据完整性、数据源身份验证、抗重播服务(部分序列完整性的一种形式)和有限的流量流机密性
  • Internet Security Association and Key Management Protocol(ISAKMP),提供验证与密钥交换,IKE 与 IKEv2 协议。

AH

(有空再看)https://en.wikipedia.org/wiki/IPsec

ESP

(有空再看)https://en.wikipedia.org/wiki/IPsec

SA

(有空再看)https://en.wikipedia.org/wiki/IPsec https://sc1.checkpoint.com/documents/R76/CP_R76_VPN_AdminGuide/13847.htm

算法

  • 对称加密算法

    • HMAC-SHA1/SHA2
    • TripleDes-CBC
    • AES-CBC AES-CTR
    • AES-GCM ChaCha20-Poly1305
  • 密钥交换算法

    • Diffie-Hellman
    • ECDH
  • 验证算法

    • RSA
    • ECDSA
    • PSK

tunnel 和 transport 模式

  • tunnel:

在 tunnel 模式用于两个专用的路由器之间,两个路由器分别充当隧道的两端,起始端路由器会加密 IP 报文头以及载荷部分,同时会添加一个新的 IP 报文头,用来告诉中继路由器如何转发报文,在 tunnel 的终端,终端路由器会解密出原始的 IP 报文头,并发送到最终的目标机上。

  • transport:

transport 模式只加密载荷部分,不加密 IP 报文头,中继路由器可以直接看到每个包的目标机(除非你又用了其他的隧道协议,比如 GRE)。

image-20210904215816930

MSS 和 MTU

MSS 用于描述数据包的载荷大小,MTU 描述整个数据包的大小(包括报文头)。IPsec 添加了额外的报文头和报文尾。使用了 IPsec 的网络,要么需要调整 MSS 和 MTU 的大小,要么数据包将被分割且增加延迟。通常来说 MTU 大小为 1500 bytes,通常一个 IP header 大小在 20 bytes,TCP header 20 bytes,这意味着载荷大小为 1460 bytes。而 IPsec 增加了一个验证头,一个 ESP 头,以及相关的 trailers。这些加起来大概有 50-60 bytes,甚至更多。