ipsec

一個協議包

網際網路安全協議(Internet Protocol Security,縮寫為IPsec),是一個協議包,透過對IP協議的分組進行加密和認證來保護IP協議的網路傳輸協議族(一些相互關聯的協議的集合)。

簡介


IPsec主要由以下協議組成:一、認證頭(AH),為IP數據報提供無連接數據完整性、消息認證以及防重放攻擊保護;二、封裝安全載荷(ESP),提供機密性、數據源認證、無連接完整性、防重放和有限的傳輸流(traffic-flow)機密性;三、安全關聯(SA),提供演演算法和數據包,提供AH、ESP操作所需的參數。

歷史


從1920-70年代初開始,美國高級研究項目局贊助了一系列實驗性的ARPANET加密設備,起初用於本地ARPANET數據包加密,隨後又用於TCP/IP數據包加密。從1986年到1991年,美國國家安全局在其安全數據網路系統(SDN)計劃下贊助了網際網路安全協議的開發,包括摩托羅拉在內的各種供應商聚集在一起,於1988年生產了一種網路加密設備,這項工作於1988年由NIST公開發表,其中第3層的安全協議(SP3)演變為ISO標準的網路層安全協議(NLSP)。
從1992年到1995年,有三個研究小組對IP層加密分別進行了獨立研究:
1. 1992年,美國海軍研究實驗室NRL)開始了simpleinternetprotocolplus(SIPP)項目來研究IP加密協議。
2. 1993年,實驗性軟體IP加密協議(swIPe)是由 JohnIoanndis等人在哥倫比亞大學SunOS和AT&T貝爾實驗室開始研發。
3. 1994年,Trusted Information Systems(TIS)的科學家徐崇偉(Wei Xu)在白宮信息高速公路項目的支持下,開發了第一代 IPSEC 協議,它是在4.1BSD內核中編碼,同時支持x86和SUNOS CPU架構,增強了刷卡安全協議,並為數據加密標準開發了設備驅動程序。到1994年12月,TIS發布了由DARPA贊助的開放源代碼的“手銬防火牆”產品,集成了3DES硬體加密,第一次實現IPSec VPN速度超過T1的商用產品。
在美國國防部高級研究計劃局(DARPA)資助的研究工作下,1996年,NRL為IPsec開發了IETF標準跟蹤規範(rfc1825到rfc1827),它是在4.4 BSD內核中編碼的,同時支持x86和SPARC CPU架構。
1992年,網際網路工程任務組(IETF)成立了IP安全工作組,以規範對IP的公開指定的安全擴展,稱為IPsec。1995年,工作組批准了NRL開發的IPsec標準,從RFC-1825到RFC-1827發布,NRL在1996年USENIX會議論文集中,描述 NRL 的開放源代碼IPsec,由麻省理工學院在線提供,並成為大多數初始商業實現的基礎。

標準現狀


IPv6是IETF為IP協議分組通信制定的新的網際網路標準,IPsec在RFC 6434以前是其中必選的內容,但在IPv4中的使用則一直只是可選的。這樣做的目的,是為了隨著IPv6的進一步流行,IPsec可以得到更為廣泛的使用。第一版IPsec協議在RFCs2401-2409中定義。在2005年第二版標準文檔發布,新的文檔定義在RFC 4301和RFC 4309中。

設計意圖


IPsec被設計用來提供(1)入口對入口通信安全,在此機制下,分組通信的安全性由單個節點提供給多台機器(甚至可以是整個區域網);(2)端到端分組通信安全,由作為端點的計算機完成安全操作。上述的任意一種模式都可以用來構建虛擬專用網(VPN),而這也是IPsec最主要的用途之一。應該注意的是,上述兩種操作模式在安全的實現方面有著很大差別。
網際網路範圍內端到端通信安全的發展比預料的要緩慢,其中部分原因,是因為其不夠普遍或者說不被普遍信任。公鑰基礎設施能夠得以形成(DNSSEC最初就是為此產生的),一部分是因為許多用戶不能充分地認清他們的需求及可用的選項,導致其作為內含物強加到賣主的產品中(這也必將得到廣泛採用);另一部分可能歸因於網路響應的退化(或說預期退化),就像兜售信息的充斥而帶來的帶寬損失一樣。

技術細節


認證頭AH

認證頭(Authentication Header,AH)被用來保證被傳輸分組的完整性和可靠性。此外,它還保護不受重放攻擊。認證頭試圖保護IP數據報的所有欄位,那些在傳輸IP分組的過程中要發生變化的欄位就只能被排除在外。當認證頭使用非對稱數字簽名演演算法(如RSA)時,可以提供不可否認性(RFC 1826)。
認證頭分組圖示:
123
0 1 2 3 4 5 6 70 1 2 3 4 5 6 70 1 2 3 4 5 6 70 1 2 3 4 5 6 7
下一個頭載荷長度保留
安全參數索引(SPI)
串列號
認證數據(可變長度)
欄位含義:
● 下一個頭:標識被傳送數據所屬的協議。
● 載荷長度:認證頭包的大小。
● 保留:為將來的應用保留(目前都置為0)。
安全參數索引:與IP地址一同用來標識安全參數。
● 串列號:單調遞增的數值,用來防止重放攻擊。
● 認證數據:包含了認證當前包所必須的數據。

封裝安全載荷

封裝安全載荷(Encapsulating Security Payload,ESP)協議對分組提供了源可靠性、完整性和保密性的支持。與AH頭不同的是,IP分組頭部不被包括在內。
ESP分組圖示:
123
1234567123456712345671234567
安全參數串列(SPI)
串列號
載荷*(可變長度)
填充(0-255位元組)
填充長度下一個頭
認證數據(可變長度)
欄位含義:
● 安全參數索引:與IP地址一同用來標識安全參數
● 串列號:單調遞增的數值,用來防止重放攻擊。
● 載荷數據:實際要傳輸的數據。
● 填充:某些塊加密演演算法用此將數據填充至塊的長度。
● 填充長度:以位為單位的填充數據的長度。
● 下一個頭:標識被傳送數據所屬的協議。
● 認證數據:包含了認證當前包所必須的數據。

實現


FreeS/WAN項目已經開發了一個開源的GNU/Linux環境下的IPsec實現。且一個基於KAME項目的IPsec實現已經包含在NetBSDFreeBSD以及2.6Linux內核中。從某種程度上說,也是因為這個原因,Free S/WAN項目的開發在2004年3月時被中止。Openswan和strongSwan是Free S/WAN延續。
至今已有許多IPsec協議和ISAKMP/IKE協議的實現。它們包括:
● NRL IPsec,屬於原型的一種
OpenBSD,代碼源於NRL IPsec
Mac OS X,包含了Kame IPsec的代碼
● Cisco IOS
● Microsoft Windows
● SSH Sentinel(現作為SafeNet的一部分)提供了工具包
● Solaris

相關文檔


● RFC 2401
● IP協議的安全架構
● RFC 2402
● 認證頭
● RFC 2406
● 封裝安全載荷
● RFC 2407
● ISAKMP的IPsec解釋域(IPsec DoI)
● RFC 2408
● 網路安全關係與密鑰管理協議(ISAKMP)
● RFC 2409
● 網際網路密鑰交換(IKE)

安全結構


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

安全協議

(1)AH(AuthenticationHeader) 協議。
它用來向 IP通信提供數據完整性和身份驗證,同時可以提供抗重播服務。
在 IPv6 中協議採用 AH 后, 因為在主機端設置了一個基於演演算法獨立交換的秘密鑰匙, 非法潛入的現象可得到有效防止, 秘密鑰匙由客戶和服務商共同設置。在傳送每個數據包時,IPv6 認證根據這個秘密鑰匙和數據包產生一個檢驗項。在數據接收端重新運行該檢驗項並進行比較,從而保證了對數據包來源的確認以及數據包不被非法修改。
(2)ESP(EncapsulatedSecurityPayload) 協議。
它提供 IP層加密保證和驗證數據源以對付網路上的監聽。因為 AH雖然可以保護通信免受篡改, 但並不對數據進行變形轉換, 數據對於黑客而言仍然是清晰的。為了有效地保證數據傳輸安全, 在IPv6 中有另外一個報頭 ESP,進一步提供數據保密性並防止篡改。

安全聯盟SA

安全聯盟 SA,記錄每條 IP安全通路的策略和策略參數。安全聯盟是 IPSec 的基礎, 是通信雙方建立的一種協定,決定了用來保護數據包的協議、轉碼方式、密鑰以及密鑰有效期等。AH和 ESP都要用到安全聯盟,IKE的一個主要功能就是建立和維護安全聯盟。

密鑰管理協議

密鑰管理協議 ISAKMP, 提供共享安全信息。Internet密鑰管理協議被定義在應用層,IETF規定了 Internet安全協議和 ISAKMP(Internet Security Association and Key Management Protocol) 來實現 IPSec 的密鑰管理,為身份認證的 SA 設置以及密鑰交換技術

安全特性


IPSec的安全特性主要有:

不可否認性

"不可否認性"可以證實消息發送方是唯一可能的發送者,發送者不能否認發送過消息。"不可否認性"是採用公鑰技術的一個特徵,當使用公鑰技術時,發送方用私鑰產生一個數字簽名隨消息一起發送,接收方用發送者的公鑰來驗證數字簽名。由於在理論上只有發送者才唯一擁有私鑰,也只有發送者才可能產生該數字簽名,所以只要數字簽名通過驗證,發送者就不能否認曾發送過該消息。但"不可否認性"不是基於認證的共享密鑰技術的特徵,因為在基於認證的共享密鑰技術中,發送方和接收方掌握相同的密鑰。

反重播性

"反重播"確保每個IP包的唯一性,保證信息萬一被截取複製后,不能再被重新利用、重新傳輸回目的地址。該特性可以防止攻擊者截取破譯信息后,再用相同的信息包冒取非法訪問權(即使這種冒取行為發生在數月之後)。

數據完整性

防止傳輸過程中數據被篡改,確保發出數據和接收數據的一致性。IPSec利用Hash函數為每個數據包產生一個加密檢查和,接收方在打開包前先計算檢查和,若包遭篡改導致檢查和不相符,數據包即被丟棄。

數據可靠性

在傳輸前,對數據進行加密,可以保證在傳輸過程中,即使數據包遭截取,信息也無法被讀。該特性在IPSec中為可選項,與IPSec策略的具體設置相關。