摘要:JFK(just fast keying)協議是一種新型的Internet密鑰交換協議,具有高效、安全和較好的防DoS(denial of services)攻擊的特點。但是JFK協議也有自身的缺陷,比如由于不協商安全策略的不合導致通信中斷,改進后的JKF在不犧牲效率的情況下實現了對協議的改進。
關鍵詞:密鑰交換;DoS攻擊;JFK
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)36-2588-02
Analysis and Improvement of JFK Protocol
HUANG Xin,WAN Zhang-mao,YANG Zhi-bin
(Computing Centre of Nanchang University, Nanchang 330031,China)
Abstract: JFK protocol is a new type of Internet key exchange protocol,it is eficient,secure and DoS-resistan. But JFK protocol Has its own defectiveness,for example:communication interruption by lack negotiation security policy. After im provement, JFK protocol has Optimized without losing efficiency.
Key words: key exchange; DoS attack; just fast keying
1 引言
VPN ( virtual private network)技術是指采用隧道技術以及加密、身份認證等方法,在公眾網絡上構建專用網絡,使數據通過安全的“加密管道”在公眾網絡中傳播的技術。目前已經開發了很多安全協議來支持VPN的構建,如IPSec(IP security protocol)協議[1]。在具有加密功能的安全協議開始工作以前,在工作過程中所需要的共享密鑰以及所要使用的加密認證算法必須可以被安全地協商,并且在VPN運行過程當中,必須要適當地刷新加密所用的密鑰,限制一個密鑰所加密的數據量。在全球化的網絡中,人工交換和更新密鑰是不可能的,所以就需要一種能自動交換和更新密鑰的方法。現在IKE(internet key exchange)協議作為IPSec協議的指定密鑰交換協議標準正在被廣泛使用。但是IKE有很多缺陷,主要有以下幾點:交換密鑰所需要交換的消息數量龐大;容易受到Dos攻擊;協議的說明和實現非常復雜。鑒于IKE 的種種缺陷,人們己經開始設計一種更安全、更高效和能更好防止Dos攻擊的新型的密鑰交換方法來替代IKE協議,目前IKE的替代協議主要有IKEV2協議和JFK協議[2]。IKEV2是在IKE的基礎上進行重新設計,保留了兩個階段交換的思想,并且通過增加了可變的前面兩條消息來提高協議效率和防DoS攻擊的能力。JFK提出了一種新的密鑰交換體制,在JFK中取消了兩個階段交換的思想,只保留了一個階段,并且采取了更為有效的方式來防止DoS攻擊和重放攻擊,相比較而言,JFK協議效率更高,更安全,實現也更為簡單,但是JFK協議同樣存在自身的一些缺陷,對JFK協議進行改進可以使其更加完善。
2 JFK協議介紹及交換過程
2.1 JFKr概述
JFK 協 議 是一種新型的Intenret密鑰交換協議,與IKE協議相比,JFK協議效率更高、安全性更好。JFK協議只有一個階段,取消了IKE協議兩個階段的思想,因此JFK協議實現更為簡單,一次完整的JFK密鑰交換只需要兩個往返共4條消息。JFK協議的實現基于Difie-Helhnan交換。在Diffe-Hellman交換中Diffie-Hellman指數的計算其代價非常昂貴,為了更好地提高效率和防止DoS攻擊,JFK協議并沒有對不同的會話使用不同的Difie-Hellman指數值,而是規定在一個時間間隔(如30秒)內,對所有的會話連接使用同一個Dife-Hellman指數值,在時間間隔到達以后,重新計算一個新的指數值,用于以后的通信,實現了階段性向前保密。JFK協議由兩個變種協議組成,即JFKi和JFKr,二者的主要區別在于對通信雙方提供的不同身份保護功能,其中JFKi為Initiator提供身份保護,使Initiator的身份能防止主動攻擊,并沒有對Responder的身份提供任何保護:JFKr為Responder的身份提供保護防止主動攻擊,同時對Responder和Initiator的身份提供加密保護防止被動攻擊。JFKi主要適用于C/S模式,在這種情況下,Initiator(Client)希望能保護自己的身份而Responder(Server)的身份通常是公開的。JFKr主要適用于Peer-to-Peer結構的情況,此時Responder可能希望保護自己的身份,本文將以JFKr為例來分析JFK協議。
JFKr協議的密鑰交換過程分為兩輪,共有四條消息,每條消息的具體內容如下:
1) Message 1,I->R: Ni,gi;
2) Message 2,R->I:Ni,Nr,gr,GRPINFOr,HMACHKr(gr,Nr,Ni,IPi);
3) Message 3,I->R:Ni,Nr,gi ,gr,HMACHKr(gr,Nr,Ni,IPi),EKe(Idi,Idr' ,sa,SIGi(Ni,Nr,gi,gr,GRPINFOr)),HMACKa('I',EKe(Idi,Idr',sa,SIGi(Ni, Nr,gi,gr,GRPINFOr)));
4) Message 4,R->I:Ni,Nr,EKe(Idr,sa',SIGr(gr,Nr,gi,Ni),HMACKa('R',EKe(Idr,sa',SIGr(gr,Nr,gi,Ni)));
消息中涉及到的符號含義如下:
Ni、Nr分別代表發起者和響應者選擇的隨機數;gi、gr代表發起者和響應者選擇的Diffie—Hellman公共值;sa是發起者協商的安全關聯,sa'是響應者協商的安全關聯;Ke用來加密數據,Ka用來做消息認證碼的密鑰;Idi、Idr分別是發起者和響應者的身份信息(如公鑰證書);GRPINFOr包括響應者支持的所有Diffie—Hellman組和用來保護消息3和消息4的對稱密鑰加密算法和產生密鑰的Hash函數類型。Ek(M)表示利用對稱密鑰加密算法,使用密鑰K來對消息M加密。SIGX(M)表示利用會話參與者x的私鑰來對M進行數字簽名。HMACK(M)表示使用密鑰K來計算消息M的消息認證碼。在Message 1中,發起者首先選擇一個響應者能夠接受的Diffie—Hellman組生成gi mod p,并選擇一個隨機數Ni,,然后將二者一起發送給響應者。
在Message 2中,響應者首先選擇自己的隨機數Nr,然后生成與發起者的Diffie—Hellman公共值同組的gr mod p,在GRPINFOr包含它所支持的密鑰算法和Hash函數類型的信息。還要生成一個用來認證和保證完整性的消息認證碼HMACHKr (gr,Nr,Ni,IPi),這個認證碼在Message 3中發起者將重傳給響應者,密鑰HKr是只有響應方知道的一個值,因此對認證碼的內容的任何篡改都將會被響應者發現。認證的內容包括了gr、Nr、Ni,這三個值可用來確定是一個特定的會話。認證的內容還包括了發起者的IP地址,它可以用來抵抗“cookie jar”DDoS攻擊[3]。
在Message 3中,發起者將會傳回HMACHKr (gr,Nr,Ni,IPi)(響應方收到這條消息后將首先驗證它)。然后利用響應者在上一個消息的GRPINFOr中提出的認證和加密算法來對傳送的一些數據進行處理。加密的數據包括發起者的身份信息、發起者選擇的安全關聯、Idr'(可以告訴響應者用如何來驗證發起者),還有發起者對Ni、Nr、gi、gr、GRPINFOr的數據簽名,數據簽名一方面可以保證這些數據的完整性,另一方面可以起到數據起源認證的作用,加密的密鑰Ke= HMACgir (Ni, Nr, 1)。HMACKa('I',EKe(Idi,Idr',sa,SIGi(Ni, Nr,gi,gr,GRPINFOr)))則保證了整個消息的完整性,也讓中間人無法綁定自己身份信息,其中密鑰Ka= HMACgir (Ni, Nr, 2)。在Message 4中,響應者又發回了發起者和響應者選擇的隨機數。隨之,選擇自己的安全關聯,用自己的私鑰對gr、Nr、gi、Ni進行數字簽名,響應者的身份信息Idr,然后再對相關信息用密鑰Ka= HMACgir (Ni, Nr, 2)生成消息認證碼,以保證數據的完整性,再將以上數據用密鑰Ke= HMACgir (Ni, Nr, 1)加密。發起者收到Message 4可以驗證響應者的身份,并用密鑰Ke解密數據得到響應者選擇的最終的安全關聯。
通過以上4條消息建立了雙方的安全關聯,同時建立了會話的密鑰Kir= HMACgir (Ni, Nr, 0),它只有會話雙方才能計算得出來,沒有第三方可以得到[4]。
2.2消息的拒絕
Responder可以接受Initiator提出的要求,同樣也可以拒絕Initiator的請求,Responder拒絕Initiator的消息1)的惟一理由是Responder不接受Initiator提出的Diffie-Hellman的組值,但是消息(2)中grpinfoR中可以指定Responder可以接受的值,所以這條消息不需要明顯地拒絕消息[5]。拒絕消息(3)可以有很多理由,包括請求未授權的服務,或者是Initiator提出的用在IPSec中的加密算法不適合Responder的要求。消息4)中可以指出適用的算法或者其它的出錯信息,讓Initiator重新發送消息3),在未成功接受消息3)以前,Responder不會保存任何狀態信息。
3 JFK協議的改進
3.1 JFK協議的改進思想
JFK 協 議 采用一個階段的思想,取消了多種認證方式的選擇,簡化了密鑰協商所要交換消息的內容,提高了效率。然而由于JFK協議取消了加密和認證算法的協商,由Responder指定所要使用的加密和認證算法,JFK協議認為提供服務的一方有權為其提供的服務規定加密和認證的強度,如果Initiator恰好不支持Responder所提出的加密或認證要求,那么將無法進行通信。
JFK在消息3)中并沒有將grpinfoR中指定的加密認證算法傳回給Responder,因為之前Responder不會保存任何和Initiator交互的狀態信息,所以Responder可能不知道用什么方法去解密和驗證消息3)。
本文針對JFK協議上述缺陷進行了相應的改進。為了避免出現Initiator恰好不支持Responder所提出的加密或認證算法而導致整個通信無法進行的情況,采用Internet密鑰交換協議常用的方法,由Initiator在消息1)中列出其支持的加密和認證算法,讓Responder在其中選擇合適的算法進行通信,在實現時這一項是可選的,如果Initiator在消息1)中沒有列出其支持的加密和認證算法,則由Responder在消息2)中指定后兩條消息所使用的加密和認證算法。在消息3)中將消息3)和消息4)所采用的加密和認證算法傳回,真正實現Initiator和Responder之間無狀態的交互。本文以改進后的JFKr協議為例,在下一小節中對具體改進進行詳細說明。
3.2 JFK協議的改進
1) Message 1,I->R: Ni,gi,[SPi];
2) Message 2,R->I:Ni,Nr,gr,SPr,HMACHK`r(gr,Nr,Ni,IPi);
3) Message 3,I->R:Ni,Nr,gi ,gr,SPr,HMACHKr(gr,Nr,Ni,IPi),EKe(Idi,Idr',sa,SIGi(Ni,Nr,gi,gr,SPr)),HMACKa(I,EKe(Idi,Idr',sa,SIGi(Ni, Nr,gi,gr,SPr)));
4) Message 4,R->I:Ni,Nr,EKe(Idr,sa',SIGr(gr,Nr,gi,Ni),HMACKa(R,EKe(Idr,sa',SIGr(gr,Nr,gi,Ni)));
消息 1) 中,增加一個可選項[SPi],如果此項不為空,則由Initiator列出支持的所有加密和認證算法。為了避免組合爆炸情況,并不列出所有加密認證算法的組合,而是采取IKEV2中提到的方法,分別提供加密和認證算法,由Responder
從中選擇一個算法來使用。如果此項為空的話,則由Responder在消息(2)中指定采用的加密和認證算法[6]。
消息2)中SPr的意義和原JFkr中的grpinfoR的意義基本相同,用來指定后面所用的加密算法和認證算法等內容,如果消息(1)中的[SPi] 不為空,并且Responder支持其中列出的算法,則Responder選擇一組算法放在SPr中回應Initiator,否則由Responder在SPr中指定相應的算法。
消息3)中,I向R傳回了SPr。如果不傳回SPr,由于Responder沒有保存之前和Initiator連接的任何狀態,因此Responder根本不知道采用什么方法對消息進行解密和認證。
4 結束語
該文對 JFK 協議進行了較為詳細的分析和探討,并且對目前JFK協議的不足和缺陷進行了改進。具體改進方法是:在消息(1)中增加可選項解決因Initiator不支持Responder指定的算法而造成無法通信的問題;在消息(3)中因為Responder沒有保存grpinfoR而不知道解密算法的問題;
參考文獻:
[1] KentS,Atkinson R.Security architecture for the internet protocol (IPSec)[Z].RFC2 401,IETF 1998.
[2] Aiello W,Bellovin S,Blaze M.Eficient, dos-resistant, secure key exchange for internet protocols[C].Porceedings of the 9th ACMConference on Computer and Communication security, ACM 2002.48-58.
[3] Anupa Datta,John Mitchell.Derivation of the JFK protocol.www.stanford.edu/~danupam/composition.ps,2002.
[4] 李力,張中科.快速密鑰交換協議的分析與實現[J].南昌大學學報(理科版),2007,31(2):197-200.
[5] 常麗娟,沈蘇彬.密鑰交換協議JFK的分析與研究[J].南京郵電大學學報(自然科學版),2006,26(1):18-24.
[6] 林鵬,張玉芳.JFK協議的分析與改進[J].計算機工程與計,2006,27(13):2446-2475.
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”