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,甚至更多。