兩台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通信提供機密性、數據完整性以及數據源認證服務;第二階段,使用已建立的IKESA建立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均可以各自獨立設置。