IPSec基礎-金鑰交換和金鑰保護Internet金鑰交換(IKE)
Internet金鑰交換(IKE)
兩臺IPSec計算機在交換資料之前,必須首先建立某種約定,這種約定,稱為"安全關聯",指雙方需要就如何保護資訊、交換資訊等公用的安全設定達成一致,更重要的是,必須有一種方法,使那兩臺電腦保安地交換一套金鑰,以便在它們的連線中使用。見圖七。
圖七、Internet金鑰交換
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均可以各自獨立設定。