一、IPsec核心協定族群
IPsec在網路層(IP層)提供安全服務,包含三大協定:
| 協定 | 全稱 | 功能 |
| ESP | Encapsulating Security Payload | 資料加密與/或認證 |
| AH | Authentication Header | 封包認證服務(不加密) |
| IKE | Internet Key Exchange | 協商連線參數、金鑰管理,為ESP/AH服務 |
術語備註:"IPsec"有時泛指三者,有時僅指AH+ESP。FreeS/WAN是Linux上主要的IPsec實作專案。
二、IPsec優勢:為何選擇網路層安全?
通用性最強
- 應用層協定 (PGP/SSL/SSH) 僅保護單一協定 (郵件/Web/遠端登入)
- 連結層加密 (專用硬體) 僅保護單一媒介
- IPsec 保護「所有跑在IP之上的協定」與「IP跑在其上的所有媒介」,且能同時保護複雜混合流量,是網際網路通訊的唯一通用解
透明部署,使用者零感知
PGP等需使用者管理金鑰、驗證公鑰、記住密語;IPsec可在閘道器層面部署,終端使用者完全無感,避免人為疏失 (如貼便利貼記密碼) 導致安全失效。
三、IPsec固有限制 (必須清楚認知)
- 系統安全是前提:閘道器主機若被入侵,IPsec無力回天。需配合作業系統加固
- 非真正端到端:IPsec保護的是「機器間的IP連線」,非「使用者/應用程式間的訊息」。郵件端到端加密仍需PGP/S/MIME
- 無法取代應用層功能:數位簽章、非抵賴、使用者身分驗證等需應用層機制
- 機器驗證非使用者驗證:IPsec驗證IP位址/憑證綁定的機器身分,資料庫存取控制仍需應用層帳號密碼
- 不防阻斷服務攻擊:僅改變攻擊面向,無法消除DoS風險
- 不防流量分析:加密封包的標頭(來源/目的閘道IP、封包大小)仍可被情報機關分析
四、Linux核心實作關鍵點 (FreeS/WAN架構)
核心模組架構
- KLIPS (Kernel IPsec):核心模組處理AH/ESP封裝/解封、SA查找、加密演算法
- Pluto (IKE Daemon):使用者空間精靈處理IKE協商、金鑰派生、SA管理
- /proc/net/ipsec/:核心與使用者空間介面,狀態查詢與控制
資料流向
發送方向:應用層 -> TCP/UDP -> IP層 -> [KLIPS: 查SA -> ESP/AH封裝] -> 網路驅動
接收方向:網路驅動 -> IP層 -> [KLIPS: 查SA -> 驗證/解密] -> TCP/UDP -> 應用層
安全關聯 (SA) 管理
- 每個方向一個SA (雙向通訊需兩組SA)
- SA由SPI (Security Parameter Index) + 目的IP + 協定(AH/ESP) 唯一識別
- Pluto協商完成後,透過
PF_KEY socket將SA安裝入核心SADB (Security Association Database)
- SPD (Security Policy Database) 定義哪些流量需IPsec保護 (如: 子網A <-> 子網B 需ESP)
五、部署模式比較