IPSec(InternetProtocolSecurity)是安全聯網的長期方向。它通過端對端的安全性來提供主動的保護以防止專用網絡與 Internet 的***。在通信中,只有發送方和接收方纔是唯一必須瞭解 IPSec 保護的計算機。在 Windows 2000、Windows XP 和 Windows Server 2003 家族中,IPSec 提供了一種能力,以保護工作組、局域網計算機、域客戶端和服務器、分支機構(物理上爲遠程機構)、Extranet 以及漫遊客戶端之間的通信。
作用目標編輯
保護 IP 數據包的內容。
通過數據包篩選及受信任通訊的實施來防禦網絡***。
這兩個目標都是通過使用基於加密的保護服務、安全協議與動態密鑰管理來實現的。這個基礎爲專用網絡計算機、域、站點、遠程站點、Extranet 和撥號用戶之間的通信提供了既有力又靈活的保護。它甚至可以用來阻礙特定通訊類型的接收和發送。
其中以接收和發送最爲重要。
3安全結構編輯
IPsec與其它互聯網安全協議的對比
IPsec協議工作在OSI 模型的第三層,使其在單獨使用時適於保護基於TCP或UDP的協議(如 安全套接子層(SSL)就不能保護UDP層的通信流)。這就意味着,與傳輸層或更高層的協議相比,IPsec協議必須處理可靠性和分片的問題,這同時也增加了它的複雜性和處理開銷。相對而言,SSL/TLS依靠更高層的TCP(OSI的第四層)來管理可靠性和分片。
安全協議
(1)AH(AuthenticationHeader) 協議。
在 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 設置以及密鑰交換技術
4封裝模式編輯
隧道(tunnel)模式:用戶的整個IP數據包被用來計算AH或ESP頭,AH或ESP頭以及ESP加密的用戶數據被封裝在一個新的IP數據包中。通常,隧道模式應用在兩個安全網關之間的通訊。
傳輸(transport)模式:只是傳輸層數據被用來計算AH或ESP頭,AH或ESP頭以及ESP加密的用戶數據被放置在原IP包頭後面。通常,傳輸模式應用在兩臺主機之間的通訊,或一臺主機和一個安全網關之間的通訊。定義了一個通用格式。
5常見問題編輯
IPSec 基於端對端的安全模式,在源 IP 和目標 IP 地址之間建立信任和安全性。考慮認爲 IP 地址本身沒有必要具有標識,但 IP 地址後面的系統必須有一個通過身份驗證程序驗證過的標識。只有發送和接收的計算機需要知道通訊是安全的。每臺計算機都假定進行通訊的媒體不安全,因此在各自的終端上實施安全設置。除非兩臺計算機之間正在進行防火牆類型的數據包篩選或網絡地址轉換,否則僅從源向目標路由數據的計算機不要求支持 IPSec。該模式允許爲下列企業方案成功部署 IPSec:
局域網 (LAN):客戶端/服務器和對等網絡
廣域網(WAN):路由器到路由器和網關到網關
遠程訪問:撥號客戶機和從專用網絡訪問 Internet
通常,兩端都需要 IPSec 配置(稱爲 IPSec 策略)來設置選項與安全設置,以允許兩個系統對如何保護它們之間的通訊達成協議。Windows 2000、Windows XP 和 Windows Server 2003 家族實施 IPSec 是基於“Internet 工程任務組 (IETF)”IPSec工作組開發的業界標準。IPSec 相關服務部分是由 Microsoft 與 Cisco Systems, Inc. 共同開發的。
IPSec 協議不是一個單獨的協議,它給出了應用於IP層上網絡數據安全的一整套體系結構,包括網絡認證協議 Authentication Header(AH)、封裝安全載荷協議Encapsulating Security Payload(ESP)、密鑰管理協議Internet Key Exchange (IKE)和用於網絡認證及加密的一些算法等。這些協議用於提供數據認證、數據完整性和加密性三種保護形式。AH和ESP都可以提供認證服務,但AH提供的認證服務要強於ESP。而IKE主要是對密鑰進行交換管理,對算法、協議和密鑰3個方面進行協商。
IPSec 規定了如何在對等層之間選擇安全協議、確定安全算法和密鑰交換,向上提供了訪問控制、數據源認證、數據加密等網絡安全服務。
安全特性
IPSec的安全特性主要有:
·不可否認性
"不可否認性"可以證實消息發送方是唯一可能的發送者,發送者不能否認發送過消息。"不可否認性"是採用公鑰技術的一個特徵,當使用公鑰技術時,發送方用私鑰產生一個數字簽名隨消息一起發送,接收方用發送者的公鑰來驗證數字簽名。由於在理論上只有發送者才唯一擁有私鑰,也只有發送者纔可能產生該數字簽名,所以只要數字簽名通過驗證,發送者就不能否認曾發送過該消息。但"不可否認性"不是基於認證的共享密鑰技術的特徵,因爲在基於認證的共享密鑰技術中,發送方和接收方掌握相同的密鑰。
·反重播性
"反重播"確保每個IP包的唯一性,保證信息萬一被截取複製後,不能再被重新利用、重新傳輸回目的地址。該特性可以防止***者截取破譯信息後,再用相同的信息包冒取非法訪問權(即使這種冒取行爲發生在數月之後)。
·數據完整性
防止傳輸過程中數據被篡改,確保發出數據和接收數據的一致性。IPSec利用Hash函數爲每個數據包產生一個加密檢查和,接收方在打開包前先計算檢查和,若包遭篡改導致檢查和不相符,數據包即被丟棄。
·數據可靠性(加密)
在傳輸前,對數據進行加密,可以保證在傳輸過程中,即使數據包遭截取,信息也無法被讀。該特性在IPSec中爲可選項,與IPSec策略的具體設置相關。
·認證
數據源發送信任狀,由接收方驗證信任狀的合法性,只有通過認證的系統纔可以建立通信連接。
公鑰認證
一個架構良好的公鑰體系,在信任狀的傳遞中不造成任何信息外泄,能解決很多安全問題。IPSec與特定的公鑰體系相結合,可以提供基於電子證書的認證。公鑰證書認證在Windows 2000中,適用於對非Windows 2000主機、獨立主機,非信任域成員的客戶機、或者不運行Kerberos v5認證協議的主機進行身份認證。
預置共享密鑰
IPSec也可以使用預置共享密鑰進行認證。預共享意味着通信雙方必須在IPSec策略設置中就共享的密鑰達成一致。之後在安全協商過程中,信息在傳輸前使用共享密鑰加密,接收端使用同樣的密鑰解密,如果接收方能夠解密,即被認爲可以通過認證。但在Windows 2000 IPSec策略中,這種認證方式被認爲不夠安全而一般不推薦使用。
公鑰加密
IPSec的公鑰加密用於身份認證和密鑰交換。公鑰加密,也被稱爲"不對稱加密法",即加解密過程需要兩把不同的密鑰,一把用來產生數字簽名和加密數據,另一把用來驗證數字簽名和對數據進行解密。
使用公鑰加密法,每個用戶擁有一個密鑰對,其中私鑰僅爲其個人所知,公鑰則可分發給任意需要與之進行加密通信的人。例如:A想要發送加密信息給B,則A需要用B的公鑰加密信息,之後只有B才能用他的私鑰對該加密信息進行解密。雖然密鑰對中兩把鑰匙彼此相關,但要想從其中一把來推導出另一把,以目前計算機的運算能力來看,這種做法幾乎完全不現實。因此,在這種加密法中,公鑰可以廣爲分發,而私鑰則需要仔細地妥善保管。
Hash函數
Hash信息驗證碼HMAC(Hash message authentication codes)驗證接收消息和發送消息的完全一致性(完整性)。這在數據交換中非常關鍵,尤其當傳輸媒介如公共網絡中不提供安全保證時更顯其重要性。
HMAC結合hash算法和共享密鑰提供完整性。Hash散列通常也被當成是數字簽名,但這種說法不夠準確,兩者的區別在於:Hash散列使用共享密鑰,而數字簽名基於公鑰技術。hash算法也稱爲消息摘要或單向轉換。稱它爲單向轉換是因爲:
1)雙方必須在通信的兩個端頭處各自執行Hash函數計算;
2)使用Hash函數很容易從消息計算出消息摘要,但其逆向反演過程以目前計算機的運算能力幾乎不可實現。
Hash散列本身就是所謂加密檢查和或消息完整性編碼MIC(Message Integrity Code),通信雙方必須各自執行函數計算來驗證消息。舉例來說,發送方首先使用HMAC算法和共享密鑰計算消息檢查和,然後將計算結果A封裝進數據包中一起發送;接收方再對所接收的消息執行HMAC計算得出結果B,並將B與A進行比較。如果消息在傳輸中遭篡改致使B與A不一致,接收方丟棄該數據包。
有兩種最常用的hash函數:
·HMAC-MD5 MD5(消息摘要5)基於RFC1321。MD5對MD4做了改進,計算速度比MD4稍慢,但安全性能得到了進一步改善。MD5在計算中使用了64個32位常數,最終生成一個128位的完整性檢查和。
·HMAC-SHA 安全Hash算法定義在NIST FIPS 180-1,其算法以MD5爲原型。 SHA在計算中使用了79個32位常數,最終產生一個160位完整性檢查和。SHA檢查和長度比MD5更長,因此安全性也更高。
數據可靠性
IPSec使用的數據加密算法是DES--Data Encryption Standard(數據加密標準)。DES密鑰長度爲56位,在形式上是一個64位數。DES以64位(8字節)爲分組對數據加密,每64位明文,經過16輪置換生成64位密文,其中每字節有1位用於奇偶校驗,所以實際有效密鑰長度是56位。 IPSec還支持3DES算法,3DES可提供更高的安全性,但相應地,計算速度更慢。
密鑰管理
·動態密鑰更新
IPSec策略使用"動態密鑰更新"法來決定在一次通信中,新密鑰產生的頻率。動態密鑰指在通信過程中,數據流被劃分成一個個"數據塊",每一個"數據塊"都使用不同的密鑰加密,這可以保證萬一***者中途截取了部分通信數據流和相應的密鑰後,也不會危及到所有其餘的通信信息的安全。動態密鑰更新服務由Internet密鑰交換IKE(Internet Key Exchange)提供,詳見IKE介紹部分。
IPSec策略允許專家級用戶自定義密鑰生命週期。如果該值沒有設置,則按缺省時間間隔自動生成新密鑰。
·密鑰長度
密鑰長度每增加一位,可能的密鑰數就會增加一倍,相應地,破解密鑰的難度也會隨之成指數級加大。IPSec策略提供多種加密算法,可生成多種長度不等的密鑰,用戶可根據不同的安全需求加以選擇。
·Diffie-Hellman算法
要啓動安全通訊,通信兩端必須首先得到相同的共享密鑰(主密鑰),但共享密鑰不能通過網絡相互發送,因爲這種做法極易泄密。
Diffie-Hellman算法是用於密鑰交換的最早最安全的算法之一。DH算法的基本工作原理是:通信雙方公開或半公開交換一些準備用來生成密鑰的"材料數據",在彼此交換過密鑰生成"材料"後,兩端可以各自生成出完全一樣的共享密鑰。在任何時候,雙方都絕不交換真正的密鑰。
通信雙方交換的密鑰生成"材料",長度不等,"材料"長度越長,所生成的密鑰強度也就越高,密鑰破譯就越困難。 除進行密鑰交換外,IPSec還使用DH算法生成所有其他加密密鑰。
AH報頭字段包括:
·Next Header(下一個報頭): 識別下一個使用IP協議號的報頭,例如,Next Header值等於"6",表示緊接其後的是TCP報頭。
·Length(長度): AH報頭長度。
·Security Parameters Index (SPI,安全參數索引): 這是一個爲數據報識別安全關聯的 32 位僞隨機值。SPI 值 0 被保留來表明"沒有安全關聯存在"。
·Sequence Number(序列號):從1開始的32位單增序列號,不允許重複,唯一地標識了每一個發送數據包,爲安全關聯提供反重播保護。接收端校驗序列號爲該字段值的數據包是否已經被接收過,若是,則拒收該數據包。
·Authentication Data(AD,認證數據): 包含完整性檢查和。接收端接收數據包後,首先執行hash計算,再與發送端所計算的該字段值比較,若兩者相等,表示數據完整,若在傳輸過程中數據遭修改,兩個計算結果不一致,則丟棄該數據包。
6數據包編輯
如圖二所示,AH報頭插在IP報頭之後,TCP,UDP,或者ICMP等上層協議報頭之前。一般AH爲整個數據包提供完整性檢查,但如果IP報頭中包含"生存期(Time To Live)"或"服務類型(Type of Service)"等值可變字段,則在進行完整性檢查時應將這些值可變字段去除。
圖2 AH爲整個數據包提供完整性檢查
協議結構
ESP(Encapsulating Security Payload)爲IP數據包提供完整性檢查、認證和加密,可以看作是"超級 AH", 因爲它提供機密性並可防止篡改。ESP服務依據建立的安全關聯(SA)是可選的。然而,也有一些限制:
·完整性檢查和認證一起進行。
·僅當與完整性檢查和認證一起時,"重播(Replay)"保護纔是可選的。
·"重播"保護只能由接收方選擇。
ESP的加密服務是可選的,但如果啓用加密,則也就同時選擇了完整性檢查和認證。因爲如果僅使用加密,***者就可能僞造包以發動密碼分析***。
ESP可以單獨使用,也可以和AH結合使用。一般ESP不對整個數據包加密,而是隻加密IP包的有效載荷部分,不包括IP頭。但在端對端的隧道通信中,ESP需要對整個數據包加密。
如圖三所示,ESP報頭插在IP報頭之後,TCP或UDP等傳輸層協議報頭之前。ESP由IP協議號"50"標識。
圖3 ESP報頭、報尾和認證報尾
ESP報頭字段包括:
·Security Parameters Index (SPI,安全參數索引):爲數據包識別安全關聯。
·Sequence Number(序列號):從1開始的32位單增序列號,不允許重複,唯一地標識了每一個發送數據包,爲安全關聯提供反重播保護。接收端校驗序列號爲該字段值的數據包是否已經被接收過,若是,則拒收該數據包。 ESP報尾字段包括:
·Padding(擴展位):0-255個字節。DH算法要求數據長度(以位爲單位)模512爲448,若應用數據長度不足,則用擴展位填充。
·Padding Length(擴展位長度):接收端根據該字段長度去除數據中擴展位。
·Next Header(下一個報頭):識別下一個使用IP協議號的報頭,如TCP或UDP。
ESP認證報尾字段:
·Authentication Data(AD,認證數據): 包含完整性檢查和。完整性檢查部分包括ESP報頭、有效載荷(應用程序數據)和ESP報尾。見圖四。
圖4 ESP的加密部分和完整性檢查部分
上圖所示,ESP報頭的位置在IP報頭之後,TCP,UDP,或者ICMP等傳輸層協議報頭之前。如果已經有其他IPSec協議使用,則ESP報頭應插在其他任何IPSec協議報頭之前。ESP認證報尾的完整性檢查部分包括ESP報頭、傳輸層協議報頭,應用數據和ESP報尾,但不包括IP報頭,因此ESP不能保證IP報頭不被篡改。ESP加密部分包括上層傳輸協議信息、數據和ESP報尾。
ESP和AH
以上介紹的是傳輸模式下的AH協議和ESP協議,ESP隧道模式和AH隧道模式與傳輸模式略有不同。
在隧道模式下,整個原數據包被當作有效載荷封裝了起來,外面附上新的IP報頭。其中"內部"IP報頭(原IP報頭)指定最終的信源和信宿地址,而"外部"IP報頭(新IP報頭)中包含的常常是做中間處理的安全網關地址。
與傳輸模式不同,在隧道模式中,原IP地址被當作有效載荷的一部分受到IPSec的安全保護,另外,通過對數據加密,還可以將數據包目的地址隱藏起來,這樣更有助於保護端對端隧道通信中數據的安全性。
ESP隧道模式中籤名部分(完整性檢查和認證部分)和加密部分分別如圖所示。ESP的簽名不包括新IP頭。
7***防禦編輯
IPv6提供了更廣闊的地址空間,但就安全性而言,IPv6並不比IPv4安全,甚至是某些***手段的天然土壤,比如DDos。
***方式
IPsec是IPv6引以爲傲的安全策略,下面我們說下這種策略帶來的問題。最直接的,IPsec是端到端的加密,中間傳輸過程是透明的,如果竊聽者沒有對應密鑰,那麼就無法解開數據內容;所以像路由防火牆等基於內容過濾的安全策略將無法存在;而如果通過某種方式,使得路由和防火牆能夠解開數據包,那麼IPsec的安全性也就不存在了。
更廣闊的地址空間導致更容易僞造源地址,也就更難以追蹤。
利用IPv6的自定義擴展頭,自定義路由路徑,就可以定義複雜的路由路徑,比如環路徑等,進一步增加追蹤難度並消耗更多路由資源。自定義擴展頭,也導致更復雜的安全過濾。還可以使用極大的擴展頭進行稱爲畸形炸彈的DDos***。