Internet金鑰交換(IKE)
兩台IPSec電腦在交換資料之前,必須首先建立某種約定,這種約定,稱為"安全性關聯",指雙方需要就如何保護資訊、交換資訊等公用的安全設定達成一致,更重要的是,必須有一種方法,使那兩台電腦安全地交換一套密鑰,以便在它們的串連中使用。見圖七。
圖七、Internet金鑰交換
網際網路工程任務推動小組IETF制定的安全性關聯標準法和金鑰交換解決方案--IKE(Internet金鑰交換)負責這些任務,它提供一種方法供兩台電腦建立安全性關聯 (SA)。SA 對兩台電腦之間的策略協議進行編碼,指定它們將使用哪些演算法和什麼樣的密鑰長度,以及實際的密鑰本身。IKE主要完成兩個作用:
·安全性關聯的集中化管理,減少連線時間
·密鑰的產生和管理
一、什麼是SA?
安全性關聯SA(Security Association)是單向的,在兩個使用 IPSec的實體(主機或路由器)間建立的邏輯串連,定義了實體間如何使用安全服務(如加密)進行通訊。它由下列元素組成:1)安全參數索引SPI;2)IP目的地址;3)安全性通訊協定。
SA是一個單向的邏輯串連,也就是說,在一次通訊中,IPSec 需要建立兩個SA,一個用於入站通訊,另一個用於出站通訊。若某台主機,如檔案伺服器或遠端存取伺服器,需要同時與多台客戶機通訊,則該伺服器需要與每台客戶機分別建立不同的SA。每個SA用唯一的SPI索引標識,當處理接收資料包時,伺服器根據SPI值來決定該使用哪種SA。
二、第一階段SA(主模式SA,為建立通道而進行的安全性關聯)
IKE建立SA分兩個階段。第一階段,協商建立一個通訊通道(IKE SA),並對該通道進行認證,為雙方進一步的IKE通訊提供機密性、資料完整性以及資料來源認證服務;第二階段,使用已建立的IKE SA建立IPsec SA。分兩個階段來完成這些服務有助於提高金鑰交換的速度。 第一階段協商(主模式協商)步驟:
1.策略協商,在這一步中,就四個強制性參數值進行協商:
1)密碼編譯演算法:選擇DES或3DES
2)hash演算法:選擇MD5或SHA
3)認證方法:選擇認證認證、預置共用密鑰認證或Kerberos v5認證
4)Diffie-Hellman組的選擇
2.DH交換
雖然名為"金鑰交換",但事實上在任何時候,兩台通訊主機之間都不會交換真正的密鑰,它們之間交換的只是一些DH演算法產生共用密鑰所需要的基本材料資訊。DH交換,可以是公開的,也可以受保護。在彼此交換過密鑰產生"材料"後,兩端主機可以各自產生出完全一樣的共用"主要金鑰",保護緊接其後的認證過程。
3.認證 DH交換需要得到進一步認證,如果認證不成功,通訊將無法繼續下去。"主要金鑰"結合在第一步中確定的協商演算法,對通訊實體和通訊通道進行認證。在這一步中,整個待認證的實體載荷,包括實體類型、連接埠號碼和協議,均由前一步產生的"主要金鑰"提供機密性和完整性保證。
三、第二階段SA(快速模式SA,為資料轉送而建立的安全性關聯)
這一階段協商建立IPsec SA,為資料交換提供IPSec服務。第二階段協商訊息受第一階段SA保護,任何沒有第一階段SA保護的訊息將被拒收。
第二階段協商(快速模式協商)步驟:
1.策略協商,雙方交換保護需求:
·使用哪種IPSec協議:AH或ESP
·使用哪種hash演算法:MD5或SHA
·是否要求加密,若是,選擇密碼編譯演算法:3DES或DES 在上述三方面達成一致後,將建立起兩個SA,分別用於入站和出站通訊。
2.工作階段金鑰"材料"重新整理或交換
在這一步中,將產生加密IP資料包的"工作階段金鑰"。產生"工作階段金鑰"所使用的"材料"可以和產生第一階段SA中"主要金鑰"的相同,也可以不同。如果不做特殊要求,只需要重新整理"材料"後,產生新密鑰即可。若要求使用不同的"材料",則在密鑰產生之前,首先進行第二輪的DH交換。
3.SA和密鑰連同SPI,遞交給IPSec驅動程式。
第二階段協商過程與第一階段協商過程類似,不同之處在於:在第二階段中,如果響應逾時,則自動嘗試重新進行第一階段SA協商。
第一階段SA建立起安全通訊通道後儲存在快取中,在此基礎上可以建立多個第二階段SA協商,從而提高整個建立SA過程的速度。只要第一階段SA不逾時,就不必重複第一階段的協商和認證。允許建立的第二階段SA的個數由IPSec策略屬性決定。
四、SA生命期
第一階段SA有一個預設有效時間,如果SA逾時,或"主要金鑰"和"工作階段金鑰"中任何一個生命期時間到,都要向對方發送第一階段SA刪除訊息,通知對方第一階段SA已經到期。之後需要重新進行SA協商。第二階段SA的有效時間由IPSec驅動程式決定。
密鑰保護
一、密鑰生命期
生命期設定決定何時產生新密鑰。在一定的時間間隔內重建新密鑰的過程稱為"動態密鑰更新"或"密鑰重建"。密鑰生命期設定決定了在特定的時間間隔之後,將強制產生新密鑰。例如,假設一次通訊需要1萬秒,而我們設定密鑰生命期為1千秒,則在整個資料轉送期間將產生10個密鑰。在一次通訊中使用多個密鑰保證了即使攻擊者截取了單個通訊密鑰,也不會危及全部通訊安全。密鑰生命期有一個預設值,但"主要金鑰"和"工作階段金鑰"生命期都可以通過配置修改。無論是哪種密鑰生命期時間到,都要重新進行SA協商。單個密鑰所能處理的最大資料量不允許超過100兆。
二、工作階段金鑰更新限制
反覆地從同一個的"主要金鑰"產生材料去產生新的"工作階段金鑰"很可能會造成密鑰泄密。"工作階段金鑰更新限制"功能可以有效地減少泄密的可能性。 例如,兩台主機建立安全性關聯後,A先向B發送某條訊息,間隔數分鐘後再向B發送另一條訊息。由於新的SA剛建立不久,因此兩條訊息所用的加密金鑰很可能是用同一"材料"產生的。如果想限制某密鑰"材料"重用次數,可以設定"工作階段金鑰更新限制"。譬如,設定"工作階段金鑰更新限制"為5,意味著同一"材料"最多隻能產生5個"工作階段金鑰"。
若啟用"主要金鑰精確轉寄保密(PFS)",則"工作階段金鑰更新限制"將被忽略,因為PFS 每次都強制使用新"材料"重建密鑰。將"工作階段金鑰更新限制"設定為1和啟用PFS效果是一樣的。如果既設定了"主要金鑰"生命期,又設定了"工作階段金鑰更新限制",那麼無論哪個限制條件先滿足,都引發新一輪SA協商。在預設情況下,IPSec不設定"工作階段金鑰更新限制"。
三、Diffie-Hellman(DH)組
DH組決定DH交換中密鑰產生"材料"的長度。密鑰的牢固性部分決定於DH組的強度。IKE共定義了5個DH組,組1(低)定義的密鑰"材料"長度為768位;組2(中)長度為1024位。密鑰"材料"長度越長,所產生的密鑰安全度也就越高,越難被破譯。
DH組的選擇很重要,因為DH組只在第一階段的SA協商中確定,第二階段的協商不再重新選擇DH組,兩個階段使用的是同一個DH組,因此該DH組的選擇將影響所有"工作階段金鑰"的產生。
在協商過程中,對等的實體間應選擇同一個DH組,即密鑰"材料"長度應該相等。若DH組不匹配,將視為協商失敗。
四、精確轉寄保密PFS(Perfect Forward Secrecy)
與密鑰生命期不同,PFS決定新密鑰的產生方式,而不是新密鑰的產生時間。PFS保證無論在哪一階段,一個密鑰只能使用一次,而且,產生密鑰的"材料"也只能使用一次。某個"材料"在產生了一個密鑰後,即被棄,絕不用來再產生任何其他密鑰。這樣可以確保一旦單個密鑰泄密,最多隻可能影響用該祕密金鑰加密的資料,而不會危及整個通訊。
PFS分"主要金鑰"PFS和"工作階段金鑰"PFS,啟用"主要金鑰"PFS,IKE必須對通訊實體進行重新認證,即一個IKE SA只能建立一個IPsec SA,對每一次第二階段SA的協商,"主要金鑰"PFS都要求新的第一階段協商,這將會帶來額外的系統開銷。因此使用它要格外小心。
然而,啟用"工作階段金鑰"PFS,可以不必重新認證,因此對系統資源要求較小。"工作階段金鑰"PFS只要求為新密鑰產生進行新的DH交換,即需要發送四個額外訊息,但無須重新認證。 PFS不屬於協商屬性,不要求通訊雙方同時開啟PFS。"主要金鑰"PFS和"工作階段金鑰"PFS均可以各自獨立設定。