互聯網安全協定(英語:Internet Protocol Security,縮寫:IPsec)是一個協定套件,透過對IP協定封包進行加密認證來保護IP協定的網絡傳輸協定族(一些相互關聯的協定的集合)。

位於網絡層中的IPsec

IPsec主要由以下協定組成[1][2]

  1. 認證頭(AH),為IP數據報提供無連接數據完整性訊息認證英語Message_authentication以及防重放攻擊保護[3][4]
  2. 封裝安全載荷(ESP),提供機密性、數據源認證、無連接完整性、防重放和有限的傳輸流(traffic-flow)機密性[5]
  3. 互聯網金鑰交換(英語: Internet Key Exchange ,簡稱IKE或IKEv2),為AH、ESP操作所需的安全關聯(SA)提供演算法、封包和金鑰參數[6]

標準現狀

IPsec的源始編碼是在IPv4的環境中於1994年開發,第一版IPsec協定在RFC 2401-2409中定義。在2005年第二版標準文件發佈,新的文件定義在RFC 4301RFC 4309[7][8]。在IPv4中IPsec的使用是一個可選項,在IPv6 RFC 6434中為必選的內容 [9],這樣做的目的,是為了隨着 IPv6的進一步流行,IPsec可以得到更為廣泛的使用。

歷史概要

從1920-70年代初開始,美國進階研究專案局贊助了一系列實驗性的ARPANET加密裝置,起初用於本地ARPANET封包加密,隨後又用於TCP/IP封包加密。

從1986年到1991年,美國國家安全域在其安全數據網絡系統(SDN)計劃下贊助了互聯網安全協定的開發,包括摩托羅拉在內的各種供應商聚集在一起,於1988年生產了一種網絡加密裝置,這項工作於1988年由NIST公開發表,其中第3層的安全協定(SP3)演變為ISO標準的網絡層安全協定(NLSP)。[10]

從1992年到1995年,有三個研究小組對IP層加密分別進行了獨立研究:

  • 1. 1992年,美國海軍研究實驗室(NRL)開始了Simple Internet Protocol Plus(SIPP)專案來進行IP加密協定的研究。
  • 2. 1993年,哥倫比亞大學SunOSAT&T貝爾實驗室,開始由 JohnIoanndis等人研發實驗性軟件IP加密協定 (swIPe)。
  • 3. 1993年,在白宮資訊高速公路專案的支援下,Trusted Information Systems(TIS)科學家徐崇偉(Wei Xu)[11] 研究和開發了第一代軟件 IPSEC 協定,它的編碼是在BSD 4.1內核中完成的,支援x86和SUNOS CPU架構,同時開發了硬件安全3DES的加密技術,並為數據加密標準開發了裝置驅動程式。到1994年12月,TIS發佈了由DARPA贊助的開放原始碼的「手銬防火牆」產品,其VPN速度超過T1,首次用 IPSec VPN 實現了美國東西海岸安全連結,也是歷史上第一個 IPSec 商用產品。[12]
  • 4. 在美國國防部進階研究計劃局(DARPA)資助的研究工作下,1996年,NRL為IPsec開發了IETF標準跟蹤規範(rfc1825到rfc1827),它的編碼是在BSD 4.4內核中,同時支援x86和SPARC CPU架構[13]

互聯網工程任務組(IETF)於1992年成立了IP安全工作群組,以規範對 IPsec 的公開協定,1995年工作群組成員有 TIS、Cisco、FTP、Checkpoint 等五個企業組成,首次合作協商改進了 NRL 起草的 IPsec 協定標準,以及規範了 Cisco 和 TIS 提供的 IPsec 開放原始碼,此後,發佈了RFC-1825和RFC-1827,NRL在1996年 USENIX 會議論文集中進行了描述了,由麻省理工學院線上提供,並成為大多數初始商業實現的基礎。[14]

設計意圖

IPsec被設計用來提供(1)入口對入口通訊安全,在此機制下,封包通訊的安全性由單個節點提供給多台機器(甚至可以是整個區域網絡);(2)端到端封包通訊安全,由作為端點的電腦完成安全操作。上述的任意一種模式都可以用來構建虛擬私人網路(VPN),而這也是IPsec最主要的用途之一。應該注意的是,上述兩種操作模式在安全的實現方面有着很大差別。

互聯網範圍內端到端通訊安全的發展比預料的要緩慢[來源請求],其中部分原因,是因為其不夠普遍或者說不被普遍信任。公鑰基礎設施能夠得以形成(DNSSEC最初就是為此產生的),一部分是因為許多用戶不能充分地認清他們的需求及可用的選項,導致其作為內含物強加到賣主的產品中(這也必將得到廣泛採用);另一部分可能歸因於網絡響應的退化(或說預期退化),就像兜售資訊的充斥而帶來的頻寬損失一樣。

IPsec與其它互聯網安全協定的對比

IPsec協定工作在OSI模型的第三層,使其在單獨使用時適於保護基於TCPUDP的協定(如安全套接子層SSL)就不能保護UDP層的通訊流)。這就意味着,與傳輸層或更高層的協定相比,IPsec協定必須處理可靠性和分片的問題,這同時也增加了它的複雜性和處理開銷。相對而言,SSL/TLS依靠更高層的TCP(OSI的第四層)來管理可靠性和分片。

技術細節

認證頭(AH)

認證頭(Authentication Header,AH)被用來保證被傳輸封包的完整性和可靠性。此外,它還保護不受重放攻擊。認證頭試圖保護IP數據報的所有欄位,那些在傳輸IP封包的過程中要發生變化的欄位就只能被排除在外。當認證頭使用非對稱數碼簽章演算法(如RSA)時,可以提供不可否認性(RFC 1826[15]

認證頭封包圖示:

More information 位偏移, 位元組 ...
位偏移 位元組 0 1 2 3
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
0 下一個頭 載荷長度 保留
32 安全參數索引(SPI)
64 序列號
96+ 認證數據(可變長度)
Close

欄位含義:

下一個頭:標識被傳送數據所屬的協定。
載荷長度:認證頭包的大小。
保留:為將來的應用保留(目前都置為0)。
安全參數索引:與IP位址一同用來標識安全參數。
序列號:單調遞增的數值,用來防止重放攻擊。
認證數據:包含了認證當前包所必須的數據。

封裝安全載荷(ESP)

封裝安全載荷(Encapsulating Security Payload,ESP)協定對封包提供了源可靠性、完整性和保密性的支援。與AH頭不同的是,IP封包頭部不被包括在內。

ESP封包圖示:

More information 位偏移, 位元組 ...
位偏移 位元組 0 1 2 3
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
0 安全參數序列(SPI)
32 序列號
64+ 載荷*(可變長度)
  填充(0-255位元組)
    填充長度 下一個頭
認證數據(可變長度)
Close

欄位含義:

安全參數索引:與IP位址一同用來標識安全參數
序列號:單調遞增的數值,用來防止重放攻擊。
載荷數據:如果沒使用ESP的加密功能,則載荷數據域的內容是「下一個頭」所指示的數據;如果使用了ESP的加密功能,則使用加密載荷數據和ESP尾部數據所得的密文作為payload data.
填充:某些塊加密演算法用此將數據填充至塊的長度。
填充長度:以位為單位的填充數據的長度。
下一個頭:標識載荷中封裝的數據所屬的協定。
認證數據:又叫做完整性校驗值(ICV)。包含了認證當前包所必須的數據。

安全關聯(SA)

實現

FreeS/WAN專案已經開發了一個開源GNU/Linux作業系統下的IPsec實現。Free S/WAN專案的開發在2004年時被中止。OpenswanstrongSwanlibreswan是Free S/WAN延續。

至今已有許多IPsec協定和ISAKMPIKE協定的實現。它們包括:

參見

參考文獻

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.