IPSec 的两种工作模式及其报文封装格式
隧道( tunnel )模式
隧道( tunnel )模式:隧道模式保護(hù)所有 IP 數(shù)據(jù)并封裝新的 IP 頭部,不使用原始 IP 頭部進(jìn)行路由。在 IPSec 頭部( ESP 或 AH )前加入新的 IP 頭部,源 IP 地址和目的 IP 地址為 IPSec peer 地址。并允許RFC 1918(私有地址)規(guī)定的地址參與 VPN 穿越互聯(lián)網(wǎng)。
AH Tunnel modeESP Tunnel mode
1.1 封裝流程
在原IP報(bào)文中找到TCP報(bào)文部分,在其后添加相應(yīng)的ESP trailer信息。
ESP trailer 包含三部分:Padding,Pad length 和 Next header。Padding 即使用塊加密時(shí),最后一個(gè)數(shù)據(jù)塊長(zhǎng)度不足時(shí)所做的填充。Pad length 指填充的長(zhǎng)度,方便拆包時(shí)找到用來填充的數(shù)據(jù)段。Next header 標(biāo)明被封裝的原報(bào)文的協(xié)議類型,例如 6 = TCP。
將原 TCP 報(bào)文和第1步得到的 ESP trailer 作為一個(gè)整體進(jìn)行加密封裝。具體的加密算法和密鑰由SA給出。
為第2步得到的密文添加 ESP 頭。ESP 頭由 SPI (Security Parameter Index) 和 Seq #
兩部分組成。密文和 ESP頭合起來稱為"enchilada",構(gòu)成認(rèn)證部分。
附加完整性度量結(jié)果(ICV)。對(duì)第3步生成的"enchilada"認(rèn)證部分做摘要(ESP Authentication
Data),得到一個(gè)32位整數(shù)倍的 ICV,附在"enchilada"之后。ICV 生成算法和驗(yàn)證密鑰由 SA 給出。
將原始的 IP 報(bào)文頭中的協(xié)議號(hào)改為50(代表 ESP),然后將 IP 報(bào)文頭加到第4步的結(jié)果之前構(gòu)成 IPsec 報(bào)文。
1.2 解封裝流程
接收方收到 IP 報(bào)文后,發(fā)現(xiàn)協(xié)議類型是50,標(biāo)明這是一個(gè) ESP 包。首先查看 ESP 頭,通過安全參數(shù)索引號(hào) SPI
決定數(shù)據(jù)報(bào)文所對(duì)應(yīng)的 SA,獲得對(duì)應(yīng)的模式(隧道或傳輸模式)以及安全規(guī)范。
根據(jù) SA 指定的摘要算法和驗(yàn)證密鑰計(jì)算"enchilada"的摘要值,與附在 IP 報(bào)文最后的 ICV
進(jìn)行對(duì)比,二者相同則數(shù)據(jù)完整性未被破壞。
檢查 ESP 頭中的 Seq # 里的序列號(hào),保證數(shù)據(jù)是新的,避免重放攻擊
根據(jù) SA 所指定的加密算法和密鑰,解密密文段,得到原來的 TCP 報(bào)文和 ESP trailer。
根據(jù) ESP trailer 的填充長(zhǎng)度信息,找出填充字段的長(zhǎng)度,刪除填充字段得到原來的 TCP 報(bào)文。 根據(jù) TCP
報(bào)文頭信息將報(bào)文交付給傳輸層。
傳輸( transport )模式:傳輸模式保護(hù)原始 IP 頭部后面的數(shù)據(jù),在原始 IP 頭部和 payload 間插入 IPSec 頭部( ESP 或 AH )。典型應(yīng)用為端到端的會(huì)話,并且要求原始 IP 頭部全局可路由。
AH Transport modeESP Transport mode
在隧道模式和傳輸模式下的數(shù)據(jù)封裝形式對(duì)比如下圖所示,圖中 data 為原 IP 報(bào)文:
IPSec 的兩種工作模式及其報(bào)文封裝格式
AH 和 ESP 的最大區(qū)別有兩個(gè):
一個(gè)是 AH 不提供加密服務(wù),而 ESP 提供加密服務(wù)。
另一個(gè)是它們驗(yàn)證的范圍不同,ESP 不驗(yàn)證 IP 報(bào)頭,而 AH 驗(yàn)證 IP 報(bào)頭,所以往往需要結(jié)合使用 AH 和 ESP 才能保證 IP 報(bào)頭的機(jī)密性和完整性(如上圖所示);AH 為 IP 報(bào)頭提供盡可能多的驗(yàn)證保護(hù),驗(yàn)證失敗的包將被丟棄,不交給上層協(xié)議解密,這種操作模式可以減少拒絕服務(wù)攻擊成功的機(jī)會(huì)。
隧道模式和傳輸模式在 IP 數(shù)據(jù)報(bào)的 ESP 負(fù)載部分上的不同:
在隧道模式中,整個(gè) IP 數(shù)據(jù)報(bào)都在 ESP 負(fù)載中進(jìn)行封裝和加密。當(dāng)這完成以后,真正的源 IP 地址和目的 IP 地址都可以被隱藏。這種模式的一種典型用法就是在防火墻與防火墻之間通過虛擬專用網(wǎng)的連接時(shí)進(jìn)行的主機(jī)或拓?fù)潆[藏。
在傳輸模式中,只有更高層協(xié)議幀( TCP、UDP、ICMP 等)被放到加密后的 IP 數(shù)據(jù)報(bào)的 ESP 負(fù)載部分。在這種模式中,源 IP 地址和目的 IP 地址以及所有的 IP 報(bào)頭都是不加密發(fā)送的。
加密點(diǎn)不等于通信點(diǎn)的時(shí)候就是隧道模式,如果加密點(diǎn)等于通信點(diǎn)的話就是傳輸模式。但是要注意,默認(rèn)情況下都是隧道模式,這個(gè)你在 show crypto ipsec sa 中可以看到。因?yàn)閭鬏斈J奖人淼滥J缴倭艘粋€(gè)頭部,這樣提供了更大的負(fù)載空間,所以盡量使用傳輸模式。
傳輸模式是兩臺(tái)電腦直接通過 IPSecVPN 連接的時(shí)候用的,隧道模式是只要一端采用網(wǎng)關(guān)的話就需要用隧道模式。因?yàn)槿绻捎脗鬏斈J竭B接且一端是網(wǎng)關(guān)的時(shí)候,因?yàn)榫W(wǎng)關(guān)有 NAT 功能,會(huì)將地址變換,而傳輸模式是只識(shí)別原 IP 的,所以這樣就會(huì)被直接丟棄掉。而隧道模式則是用 IPSec peer 地址直接建立隧道用于兩端的通訊,不會(huì)出現(xiàn)被拋棄的情況。
總結(jié)
以上是生活随笔為你收集整理的IPSec 的两种工作模式及其报文封装格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几款开源的hybird移动app框架分析
- 下一篇: Linux服务器TIME_WAIT进程的