ESP – Giao thức gói bảo mật đóng gói trong IPsec
ESP (Encapsulating Security Payload) là một trong hai giao thức cốt lõi của IPsec (kèm theo AH – Authentication Header). Được định nghĩa trong RFC 4303. ESP cung cấp: Confidentiality (mã hóa), Data Integrity, Data Origin Authentication, Anti-replay Protection. (AH chỉ cung cấp Authentication/Integrity, KHÔNG mã hóa).
1. Cấu trúc gói ESP
[IP Header] [ESP Header] [Payload Data] [ESP Trailer] [ESP Auth Data (ICV)]
│ │ │
│ │ └─ Padding (0-255 bytes) + Pad Length (1B) + Next Header (1B)
│ └─ Plaintext / Ciphertext (TCP/UDP segment hoặc IP packet tunnel mode)
└─ SPI (4B) + Sequence Number (4B) + IV (cho AES-CBC/GCM)
- SPI (Security Parameter Index): 32-bit, định danh SA (Security Association) – cùng với Destination IP & Protocol (ESP=50) tạo unique SA.
- Sequence Number: 32-bit, tăng dần, chống replay.
- IV (Initialization Vector): cho AES-CBC (16B), AES-GCM (8B implicit + 8B explicit).
- ESP Trailer: Padding (độ dài block), Pad Length, Next Header (protocol số: TCP=6, UDP=17, IPv4=4, IPv6=41).
- ESP Auth Data (ICV - Integrity Check Value): HMAC (SHA-1/256/384/512) hoặc AES-GMAC / AES-CCM/GCM tag.
2. Hai chế độ vận hành (Modes)
| Chế độ | Mô tả | Mã hóa phần nào? | Trường hợp dùng |
|---|---|---|---|
| Transport Mode | Chèn ESP header giữa IP header gốc và Payload. IP header gốc KHÔNG được mã hóa. | Payload (L4+Data) + ESP Trailer | End-to-end giữa 2 host (host-to-host, host-to-gateway). |
| Tunnel Mode | Gói IP gốc hoàn chỉnh được đóng gói trong ESP, thêm IP header mới (outer). | Toàn bộ gói IP gốc + ESP Trailer | Gateway-to-Gateway (Site-to-Site VPN), Gateway-to-Host (Remote Access VPN). |
3. Thuật toán mã hóa & xác thực (RFC 8221, 8247)
- AEAD (Authenticated Encryption with Associated Data) – Khuyến nghị:
- AES-GCM (128/192/256) – nhanh, song song, phần cứng AES-NI.
- ChaCha20-Poly1305 – nhanh trên CPU không AES-NI (mobile, IoT).
- AES-CCM – constrained device.
- Legacy (Encrypt-then-MAC):
- Encryption: AES-CBC, 3DES (deprecated), NULL (chỉ auth).
- Integrity: HMAC-SHA-1/256/384/512, AES-XCBC-MAC, AES-GMAC.
Lưu ý: Khi dùng AEAD (GCM/CCM/ChaCha20-Poly1305), KHÔNG** chọn thuật toán authentication riêng – nó tích hợp sẵn.
4. ESP vs AH – So sánh & Kết hợp
| Đặc điểm | AH (Protocol 51) | ESP (Protocol 50) |
|---|---|---|
| Confidentiality (Mã hóa) | KHÔNG | CÓ (AES-GCM, CBC...) |
| Integrity / Authentication | CÓ (Toàn bộ IP header + Payload) | CÓ (Payload + ESP Header/Trailer, KHÔNG outer IP header) |
| NAT Traversal | KHÔNG (thay đổi IP header → fail ICV) | CÓ (NAT-T: UDP encapsulation port 4500 – RFC 3947/3948) |
| Dùng chung? | Có (AH+ESP) – hiếm, phức tạp, overhead lớn. | Thường dùng ESP đơn lẻ (AEAD cung cấp cả auth + encrypt). |
5. IPsec SA & IKEv2
- ESP hoạt động trong Security Association (SA) – đơn hướng. Cần 2 SA (inbound/outbound) cho 2 chiều.
- IKEv2 (RFC 7296) dùng để negotiated SA: xác thực (PSK, Cert, EAP), trao đổi khóa (DH/ECDH), tạo SPI, chọn transform (ESP algorithm).
- IKEv2 chạy trên UDP 500/4500 (NAT-T).
6. Ứng dụng thực tế
- Site-to-Site VPN: Cisco ASA/Firepower, Palo Alto, FortiGate, StrongSwan, LibreSwan, OpenIKED – Tunnel Mode ESP AES-GCM.
- Remote Access VPN: AnyConnect, GlobalProtect, FortiClient, WireGuard (không dùng ESP, dùng Noise Protocol), OpenVPN (SSL/TLS).
- IPsec over IPv6: ESP protocol 50 trong IPv6 Next Header chain.
- MACsec (802.1AE): Layer 2 encryption – khác IPsec/ESP.
7. Troubleshooting ESP
- Wireshark filter:
esphoặcip.proto == 50. Giải mã nếu có key: Edit → Preferences → Protocols → ESP → nhập SPI + Key. - Lỗi thường gặp: SPI mismatch, Sequence number overflow, Replay window, MTU fragmentation (set
ip tcp adjust-mss/interface mtu), NAT-T không bật.