專利名稱:基于密鑰的加密的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及加密,具體來說,涉及用于加密的密鑰的重新協(xié)商。
背景技術(shù):
個人和企業(yè)都使用計算機(jī)來傳輸與接收各種數(shù)據(jù)。這樣的數(shù)據(jù)的合理的比例很可能是敏感的,因此,確保數(shù)據(jù)保密是重要的。
取得數(shù)據(jù)保密的一種流行方式是通過使用加密算法。這樣的算法通常是基于密鑰的,被分類為對稱的或者不對稱的兩種。
對稱加密算法利用只有相關(guān)的數(shù)據(jù)發(fā)送者和接收者知道的秘密密鑰。同一個秘密密鑰被用來在發(fā)送端對數(shù)據(jù)進(jìn)行加密,當(dāng)由接收者接收到數(shù)據(jù)時,也被用來對數(shù)據(jù)進(jìn)行解密。
另一方面,非對稱加密算法使用公鑰和秘密密鑰兩種。公鑰可以為任何人所知,而秘密密鑰只有數(shù)量有限的實體知道。一個密鑰被用來對數(shù)據(jù)進(jìn)行加密,而另一個密鑰用于對數(shù)據(jù)進(jìn)行解密。
安全套接字層(SSL)是用于在因特網(wǎng)上進(jìn)行安全的數(shù)據(jù)傳輸?shù)膮f(xié)議。SSL使用了不對稱和對稱加密技術(shù)兩種技術(shù)。
在兩個參與方(例如,Alice和Bob)之間的初始身份驗證握手中使用一對不對稱密鑰。在下面的示例中,Alice希望對Bob進(jìn)行身份驗證(當(dāng)然,Bob也可能希望對Alice進(jìn)行身份驗證-建議這樣做)。Bob具有公共-秘密密鑰對。Bob的公鑰對于Alice是公開的。Alice向Bob傳輸消息,然后,Bob利用他的秘密密鑰進(jìn)行加密,并返回到Alice。Alice使用Bob早先透露給她的公鑰對來自Bob的消息進(jìn)行解密。如果解密過的消息匹配Alice最初發(fā)送給Bob的消息,那么,Alice可以認(rèn)為Bob是他說的人。然而,SSL也使用數(shù)字簽名防止第三方獲取Alice的原始消息并假冒Alice。SSL也利用證書。證書被用來證明公鑰確實來自Bob。
對Bob進(jìn)行了身份驗證之后,Alice就已經(jīng)準(zhǔn)備好與Bob交換數(shù)據(jù)。然而,在可以進(jìn)行數(shù)據(jù)交換之前,Alice和Bob必須商定對稱(秘密)密鑰。首先利用此秘密密鑰對要交換的數(shù)據(jù)進(jìn)行加密。由于雙方協(xié)商了秘密密鑰,因此,Alice可以使用密鑰對她的數(shù)據(jù)進(jìn)行加密,而Bob可以解密從Alice接收到的數(shù)據(jù)進(jìn)行解密。
應(yīng)該理解,如果被未經(jīng)授權(quán)的第三方發(fā)現(xiàn)秘密密鑰,它可以被用來對數(shù)據(jù)進(jìn)行解密并對哄騙消息進(jìn)行加密/改變數(shù)據(jù)。
因此,優(yōu)選情況下,應(yīng)該重新協(xié)商Alice(客戶端)和Bob(服務(wù)器)用來交換數(shù)據(jù)的秘密密鑰。重新協(xié)商秘密密鑰涉及在客戶端和服務(wù)器上執(zhí)行消耗CPU的握手。當(dāng)每一次重新協(xié)商涉及完全的不對稱身份驗證,后面再協(xié)商對稱秘密密鑰時,特別消耗處理器。
注意,SSL的詳細(xì)概述可以在http://developer.netscape.com/tech/security/ssl/howitworks.html中找到。
當(dāng)前解決方案當(dāng)前秘密密鑰重新協(xié)商實現(xiàn)方式一般使用了下列兩種方法之一(i)定時的復(fù)位,在這種情況下,每隔x分鐘由SSL客戶端啟動重新協(xié)商(例如,Web瀏覽器可以每隔2分鐘啟動密鑰重新協(xié)商);或(ii)在某一字節(jié)數(shù)量閾值流過之后啟動。
然而,這些解決方案在消息發(fā)送環(huán)境中不能有效地發(fā)揮作用,因為在這樣的環(huán)境中,通信鏈路通常在空閑和忙之間波動。在通信鏈路在不同的時刻特別空閑或特別忙的情況下(如消息發(fā)送環(huán)境中可能出現(xiàn)的情況),上文所提及的解決方案效率特別低。
當(dāng)前解決方案所存在的問題(i)定時的重新協(xié)商-空閑通信鏈路當(dāng)在比較長的時間段內(nèi)沒有數(shù)據(jù)(消息)在通信鏈路上發(fā)送時,完全身份驗證和重新協(xié)商的次數(shù)可能會不必要地增大。換句話說,客戶端可能不必要地經(jīng)常對它希望與其進(jìn)行通信的服務(wù)器進(jìn)行身份驗證,然后與該服務(wù)器重新協(xié)商秘密密鑰。如此,性能會不必要地降低。
(ii)字節(jié)閾值實現(xiàn)方式-空閑通信鏈路此解決方案延長了秘密密鑰在空閑鏈路上有效的時間段,并給黑客提供了更多時間來攻擊秘密密鑰,并發(fā)送“哄騙”消息,而不被檢測到。
(iii)定時的協(xié)商-忙的通信鏈路忙的通信鏈路將傳輸大量的用同一個秘密密鑰加密的數(shù)據(jù)。雖然黑客不太可能能夠在一般用于定時重新協(xié)商的那種時間內(nèi)破解密鑰,然而,問題是,他將能夠?qū)⒓用艿臄?shù)據(jù)記錄下來,然后在閑暇時對其進(jìn)行分析。如果大量數(shù)據(jù)是用同一個秘密密鑰加密的,這對他來說是比較容易的,如此,當(dāng)通信鏈路忙時,使用此解決方案,大量數(shù)據(jù)的安全性可能被破壞。
(iv)字節(jié)閾值實現(xiàn)方式-忙的通信鏈路在忙的通信鏈路上利用同一個秘密密鑰加密的數(shù)據(jù)量將被最大限度地降低。如此,此解決方案最大限度地降低了利用單一秘密密鑰加密的數(shù)據(jù)量。然而,此解決方案在鏈路空閑占主導(dǎo)地位的情況下不是很好(參見上文)。
如此,到目前為止,在那種在忙和空閑之間波動的環(huán)境中進(jìn)行加密是成問題的。
發(fā)明內(nèi)容
根據(jù)一個方面,提供了一種使用用于對通過通信鏈路在第一和第二實體之間流動的數(shù)據(jù)進(jìn)行加密的秘密密鑰實現(xiàn)安全的數(shù)據(jù)通信的方法,該方法包括判斷通信鏈路已經(jīng)空閑;判斷現(xiàn)在有數(shù)據(jù)要在先前空閑的通信鏈路上流過;并響應(yīng)判斷現(xiàn)在有數(shù)據(jù)要在先前空閑的通信鏈路上流過,開始生成新秘密密鑰,所述新秘密密鑰用于對通過通信鏈路在第一和第二實體之間發(fā)送的數(shù)據(jù)進(jìn)行加密。
如此,只有當(dāng)即將重新開始通過空閑通信鏈路進(jìn)行傳輸時才會生成密鑰。這與現(xiàn)有技術(shù)相反,在現(xiàn)有技術(shù)中,密鑰生成可以以時間為基礎(chǔ)。
優(yōu)選情況下,也可以判斷何時已經(jīng)通過通信鏈路發(fā)送了預(yù)先配置的數(shù)據(jù)量。一旦已經(jīng)通過鏈路發(fā)送了預(yù)先配置的數(shù)據(jù)量,優(yōu)選情況下,就開始生成新秘密密鑰。
這迎合了通信鏈路空閑不是占主導(dǎo)地位的情況。如此,甚至在忙的鏈路上,以足夠頻繁的間隔生成密鑰。
在一個實施例中,在由于判斷現(xiàn)在有數(shù)據(jù)需要流過鏈路而開始生成新秘密密鑰之前,通信鏈路必須已經(jīng)空閑了預(yù)先確定的時間量。
如此,較短的空閑時間段不會立即導(dǎo)致啟動生成新秘密密鑰的過程。
注意,可以使用簡單超時系統(tǒng),該系統(tǒng)說,如果鏈路已經(jīng)空閑了至少x秒并且現(xiàn)在有數(shù)據(jù)流動,那么,應(yīng)該生成新秘密密鑰。
在優(yōu)選實施例中,一旦判斷通信鏈路已經(jīng)空閑了預(yù)先確定的時間段,則通過心跳通知第二實體,第一實體仍存在。
如此,第二實體察覺到,第一實體仍活著,盡管第二實體當(dāng)前沒有數(shù)據(jù)需要流過通信鏈路。注意,第一實體可以向第二實體發(fā)送一個以上的心跳(即,如果鏈路足夠空閑)。
優(yōu)選情況下,第二實體確認(rèn)從第一實體接收到心跳。
在一個實施例中,如果在預(yù)先確定的時間量內(nèi)第一實體沒有接收到關(guān)于接收到心跳的確認(rèn),那么,由第一實體終止與第二實體的通信。這是因為,要么第二實體已經(jīng)發(fā)生故障,要么第三方正在消耗心跳/響應(yīng)心跳。
在另一個實施例中,如果在預(yù)先確定的時間量內(nèi)第一實體沒有接收到關(guān)于接收到心跳的確認(rèn),那么,在允許第一實體向第二實體再次傳輸數(shù)據(jù)之前,開始生成新秘密密鑰。當(dāng)然,除非過程也包括身份驗證(參見下文),第三方可能會冒充第二實體,如此參與到密鑰生成過程中。
在優(yōu)選實施例中,可以判斷通信鏈路已經(jīng)足夠空閑,足以使第一實體向第二實體發(fā)送心跳。優(yōu)選情況下,響應(yīng)判斷鏈路已經(jīng)足夠空閑足以使第一實體向第二實體發(fā)送心跳,開始生成新秘密密鑰。
在優(yōu)選實施例中,在開始生成新秘密密鑰之前,開始至少對第二實體進(jìn)行身份驗證。
優(yōu)選情況下,生成新秘密密鑰是在第一和第二實體之間進(jìn)行的協(xié)商過程的結(jié)果。
根據(jù)另一個方面,提供了一種使用用于對通過通信鏈路在第一和第二實體之間流動的數(shù)據(jù)進(jìn)行加密的秘密密鑰實現(xiàn)安全的數(shù)據(jù)通信的方法,該方法包括判斷通信鏈路已經(jīng)空閑;并響應(yīng)判斷通信鏈路已經(jīng)空閑,忽略用秘密密鑰加密的數(shù)據(jù)。
優(yōu)選情況下,只接受隨后的用新生成的秘密密鑰加密的數(shù)據(jù)。
優(yōu)選情況下,通信鏈路必須空閑了至少預(yù)先確定的時間量。優(yōu)選情況下,這是通過從第一實體接收到心跳指出的。
根據(jù)一個實施例,當(dāng)判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量并且沒有從第一實體接收到心跳時,終止與第一實體的通信。
這是因為,假設(shè)要么第一實體已經(jīng)發(fā)生故障,要么第三方正在消耗心跳。
在另一個實施例中,響應(yīng)判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量并且沒有從第一實體接收到心跳,只接受隨后的用新生成的秘密密鑰加密的數(shù)據(jù)。
根據(jù)另一個方面,提供了一種使用用于對通過通信鏈路在第一和第二實體之間流動的數(shù)據(jù)進(jìn)行加密的秘密密鑰實現(xiàn)安全的數(shù)據(jù)通信的設(shè)備,該設(shè)備包括用于判斷通信鏈路已經(jīng)空閑的裝置;用于判斷有數(shù)據(jù)要在先前空閑的通信鏈路上流過的裝置;以及用于響應(yīng)判斷有數(shù)據(jù)要在先前空閑的通信鏈路上流過,開始生成新秘密密鑰的裝置,所述新秘密密鑰用于對通過通信鏈路在第一和第二實體之間發(fā)送的數(shù)據(jù)進(jìn)行加密。
根據(jù)另一個方面,提供了一種使用用于對通過通信鏈路在第一和第二實體之間流動的數(shù)據(jù)進(jìn)行加密的秘密密鑰實現(xiàn)安全的數(shù)據(jù)通信的設(shè)備,該設(shè)備包括用于判斷通信鏈路已經(jīng)空閑的裝置;用于響應(yīng)判斷通信鏈路已經(jīng)空閑,忽略用秘密密鑰加密的數(shù)據(jù)的裝置。
優(yōu)選情況下,當(dāng)認(rèn)為不能安全地信任數(shù)據(jù)的完整性時,忽略用秘密密鑰加密的數(shù)據(jù)。如此,優(yōu)選情況下,只將隨后的用新生成的秘密密鑰加密的數(shù)據(jù)接受為值得信任的。
應(yīng)該理解,本發(fā)明可以以計算機(jī)軟件來實現(xiàn)。
現(xiàn)在將參考下面的附圖,只作為示例,對本發(fā)明的優(yōu)選實施例進(jìn)行描述圖1a顯示了根據(jù)本發(fā)明的優(yōu)選實施例的客戶端-服務(wù)器組件圖表;以及圖1b是根據(jù)本發(fā)明的優(yōu)選實施例的由客戶端執(zhí)行過程的流程圖。
具體實施例方式
現(xiàn)在將參考圖1a和1b描述本發(fā)明的優(yōu)選實施例。兩個圖應(yīng)該彼此結(jié)合起來看。
SSL客戶端5希望向SSL服務(wù)器6傳輸數(shù)據(jù)。首先,SSL客戶端使用連接啟動器55通過通信鏈路90啟動與服務(wù)器的連接。然后,客戶端5使用驗證器10對服務(wù)器6進(jìn)行身份驗證,該驗證器10與服務(wù)器上的等效組件10′進(jìn)行通信(步驟100)。
在對服務(wù)器6進(jìn)行身份驗證之后,客戶端和服務(wù)器通過密鑰協(xié)商器組件20、20′協(xié)商對稱秘密密鑰(步驟110)。此秘密密鑰隨后被用來對客戶端沿通信鏈路90發(fā)送的消息進(jìn)行加密和解密。
客戶端上的數(shù)據(jù)檢測器70檢測客戶端5是否具有任何數(shù)據(jù)需要流過通信鏈路90(步驟120)。如果現(xiàn)在有數(shù)據(jù)需要流過鏈路,那么在步驟130中檢測鏈路是否先前足夠空閑,導(dǎo)致客戶端向服務(wù)器發(fā)送心跳(參見下文)。
假設(shè)情況不是這樣的,那么,用當(dāng)前秘密密鑰對此數(shù)據(jù)進(jìn)行加密,并發(fā)送(未顯示)。通過字節(jié)測量器50判斷(步驟150)是否已經(jīng)發(fā)送了預(yù)先配置的字節(jié)數(shù)量。如果回答是否,那么,過程循環(huán)到步驟120,以查看是否有更多的數(shù)據(jù)需要發(fā)送。
如果已經(jīng)發(fā)送了預(yù)先配置的字節(jié)數(shù)量(如字節(jié)測量器40所檢測到的),那么,該使用組件10、10′、20、20′重新進(jìn)行身份驗證和重新協(xié)商密鑰(步驟100、110)。此時,字節(jié)測量器40所保存的發(fā)送的字節(jié)數(shù)量值被復(fù)位為零。
可配置的字節(jié)閾值確保了利用同一個秘密密鑰在忙的通信鏈路上發(fā)送的數(shù)據(jù)量是受限制的,因為由于滿足字節(jié)閾值將定期重新協(xié)商秘密密鑰。如此,利用同一個秘密密鑰加密的數(shù)據(jù)量被最大限度地降低。
注意,設(shè)置適當(dāng)?shù)淖止?jié)閾值是一把雙刃劍閾值越低,執(zhí)行重新身份驗證并改變秘密密鑰就越頻繁-如此,消耗的處理能力就越多。然而,執(zhí)行重新身份驗證并改變秘密密鑰越頻繁,流過通信鏈路的數(shù)據(jù)就越安全;以及閾值越高,性能就越好(由于重新身份驗證和秘密密鑰重新協(xié)商次數(shù)變少)。當(dāng)然,流過通信鏈路的數(shù)據(jù)安全性就會比閾值較低的環(huán)境中的安全性低。
計時器30被數(shù)據(jù)檢測器組件70用來判斷通信鏈路90何時已經(jīng)空閑了可配置的時間段。如果是這種情況,則它向SSL服務(wù)器6發(fā)出(通過心跳發(fā)出器50)特殊的“心跳”消息,以確認(rèn)它仍存在(步驟160)。(然后,計時器被復(fù)位為零-注意,優(yōu)選情況下,當(dāng)啟動重新身份驗證時,計時器也被置0)。客戶端等待來自服務(wù)器(心跳接收器75、心跳回復(fù)生成器80)的對心跳的響應(yīng)-參見下文。
注意,優(yōu)選情況下,可配置的時間段不要太短(例如,10秒),因為這可能會導(dǎo)致很多心跳(即,太多不必要的通信)。所選擇的時間取決于環(huán)境-例如,5分鐘的長度可能是適當(dāng)?shù)摹?br>
在SSL服務(wù)器接收到一個或多個“心跳”消息之后,它將作為“哄騙”拒絕任何包含用相同秘密密鑰(數(shù)據(jù)拒絕器組件95)加密的應(yīng)用程序數(shù)據(jù)的其他消息。在檢測到哄騙數(shù)據(jù)時,應(yīng)該采取適當(dāng)?shù)牟僮?,如管理員記錄此情況,關(guān)閉與客戶端的連接。
為了使SSL客戶端向SSL服務(wù)器(該服務(wù)器已經(jīng)接收到表明通信鏈路已經(jīng)先前空閑)發(fā)送新消息,在發(fā)送消息之前它必須首先重新協(xié)商新秘密密鑰,以避免SSL服務(wù)器將它作為“哄騙”加以拒絕(步驟120、130、100和110)。如此,在空閑時間段之后,應(yīng)該沒有安全性暴露。
如上文所討論的,在空閑時間段之后發(fā)送的哄騙數(shù)據(jù)優(yōu)選情況下使服務(wù)器終止與客戶端的連接。然后,客戶端可以選擇恢復(fù)其與服務(wù)器的連接,并在向服務(wù)器再發(fā)送數(shù)據(jù)之前必須重新進(jìn)行身份驗證和重新協(xié)商。
注意,由于心跳不包含任何有用的數(shù)據(jù),因此,不必對它們進(jìn)行加密。
如果當(dāng)SSL服務(wù)器檢測到(通過數(shù)據(jù)檢測器組件70′和計時器組件30′)鏈路已經(jīng)空閑了大于可配置的時間段的時間(即,與客戶端5所使用的時間段相同)時SSL服務(wù)器沒有接收到“心跳”,那么,SSL服務(wù)器通過連接終結(jié)器85關(guān)閉其連接。這防止了黑客消耗“心跳”消息以防止秘密密鑰重新協(xié)商,從而延長了秘密密鑰的生存期。
注意,沒有必要檢測哄騙心跳,因為它們不損害任何應(yīng)用程序數(shù)據(jù)。
如果SSL服務(wù)器6存在并從客戶端接收到了心跳,那么它響應(yīng)特殊的“心跳”消息,并記住,連接已經(jīng)空閑了比較長的時間,足以讓心跳沿通信鏈路流過。SSL客戶端可以發(fā)送任意數(shù)量的“心跳”消息,以確認(rèn)它仍存在。
注意,當(dāng)秘密密鑰萬一由字節(jié)閾值觸發(fā)時,“心跳”消息對于在計算時所使用的總字節(jié)沒有影響。
一旦客戶端從服務(wù)器接收到回復(fù),圖1b的過程循環(huán)到步驟120。如果判斷現(xiàn)在有數(shù)據(jù)需要流過鏈路,那么在步驟130中再次測試鏈路是否先前足夠空閑,以便生成心跳。如果回答是肯定的,那么,應(yīng)該重新協(xié)商秘密密鑰。因此,在進(jìn)行了重新身份驗證和密鑰協(xié)商之前,客戶端不會向服務(wù)器發(fā)送任何數(shù)據(jù)。
這意味著,如果黑客由于通信鏈路空閑的時間比較長設(shè)法破解了秘密密鑰,該密鑰現(xiàn)在對它們來說無用。
如果沒有接收到回復(fù),那么,客戶端使用連接終結(jié)器55關(guān)閉其連接(步驟180)。這是因為回復(fù)失敗表明,要么服務(wù)器不再存在,要么,其他人正在消耗服務(wù)器的回復(fù)。
注意,在另一個實施例中,客戶端可以在終止連接之前嘗試與服務(wù)器聯(lián)系更多的次數(shù)。這是因為,缺乏來自服務(wù)器的響應(yīng)可能只是臨時問題。為安全起見,可以啟動重新身份驗證/密鑰協(xié)商。
注意,優(yōu)選情況下,心跳之間的時間間隔(當(dāng)在空閑鏈路上發(fā)送一個以上的心跳時)是恒定的。如果在每一個心跳消息之間使用了隨機(jī)時間間隔,那么不可能預(yù)測何時心跳過期(相當(dāng)有可能被黑客消耗)。
當(dāng)然應(yīng)該理解,優(yōu)選情況下,選擇第一次發(fā)送心跳之前的時間(心跳之間時間間隔)和字節(jié)流統(tǒng)計,以便同一個秘密密鑰不會使用很長時間。注意,如果所選擇的值足夠高,以給黑客提供時間捕獲和發(fā)現(xiàn)秘密密鑰,仍可以實現(xiàn)“哄騙”消息。然而,一旦發(fā)生了心跳觸發(fā)的秘密密鑰重新協(xié)商,黑客就不能再欺騙服務(wù)器了。因此,優(yōu)選情況下,數(shù)據(jù)發(fā)送端啟動新密鑰的協(xié)商。否則,如果服務(wù)器正在接收正確地加密的哄騙消息,從服務(wù)器的觀點來看,不需要重新協(xié)商。
使用到現(xiàn)在為止所描述的解決方案有四個主要優(yōu)點(i)方案確保了只有當(dāng)在空閑通信鏈路上絕對必須時才重新進(jìn)行身份驗證和秘密密鑰的重新協(xié)商,以取得最佳性能,同時能確保安全。
(ii)通過使用“心跳”消息,提供了檢測“哄騙”消息的能力,盡管用正確的秘密密鑰對其進(jìn)行了加密-因為當(dāng)恢復(fù)數(shù)據(jù)通信時重新協(xié)商秘密密鑰;(iii)方案確保了在忙的通信鏈路上定期改變秘密密鑰,以限制黑客可以利用被破解的秘密密鑰讀取的應(yīng)用程序數(shù)據(jù)的量;以及(iv)特殊的“心跳”消息不包含應(yīng)用程序數(shù)據(jù),因此,對于黑客來說是無用的,盡管用來對數(shù)據(jù)進(jìn)行加密和解密的秘密密鑰可以通過蠻力來發(fā)現(xiàn)。
優(yōu)選情況下,此協(xié)議確保了,在通信鏈路已經(jīng)足夠空閑以至于一個或多個心跳沿鏈路流過之后,當(dāng)一定數(shù)量的字節(jié)沿通信鏈路流過時,始終執(zhí)行身份驗證和密鑰協(xié)商。
發(fā)送“哄騙”消息的黑客,盡管他可能已經(jīng)發(fā)現(xiàn)了當(dāng)前得到同意的秘密密鑰,但因為他不擁有用于啟動(對客戶端的)重新身份驗證和密鑰協(xié)商的不對稱秘密密鑰(他也沒有用于重新進(jìn)行身份驗證的證書),而不能遵循得到同意的協(xié)議。此外,自從服務(wù)器看到來自客戶端的心跳開始,舊的對稱秘密密鑰就失效。
此解決方案有效地防止了黑客在空閑通信鏈路發(fā)送“哄騙”消息,而不需要不必要地執(zhí)行重新身份驗證、密鑰協(xié)商。此解決方案還處理了忙的通信鏈路。
注意,還可能配置SSL,以便SSL客戶端不需要向SSL服務(wù)器呈現(xiàn)身份驗證信息,就能成功地重新進(jìn)行身份驗證-在此情況下,只需客戶端對服務(wù)器進(jìn)行身份驗證,而不必相反。然而,在安全的對等環(huán)境中,這是不可取的,因為這樣會使第三方能冒充客戶端,并如此與服務(wù)器進(jìn)行通信。
注意,雖然將本發(fā)明描述為特別適用于消息發(fā)送環(huán)境,但是,不特別限制于這樣的環(huán)境。本發(fā)明還適用于在空閑和忙時間段之間波動的任何環(huán)境。
此外,雖然是就SSL加密協(xié)議而言來描述本發(fā)明的,但是,不特別限制于這樣的環(huán)境。然而,本發(fā)明還特別適用于身份驗證和密鑰協(xié)商非常消耗處理器的任何環(huán)境。TLS是另一個示例。
注意,在示范性實施例中,數(shù)據(jù)是從客戶端流向服務(wù)器的。但是,可以不必就是這種情況-數(shù)據(jù)可以向相反的方向流動。優(yōu)選情況下,正在發(fā)送數(shù)據(jù)的任何人都可以啟動身份驗證和密鑰協(xié)商,也可以發(fā)送心跳。
在另一個實施例中,身份驗證和密鑰重新協(xié)商始終是由SSL客戶端啟動的。如此,如果SSL服務(wù)器具有數(shù)據(jù)需要發(fā)送,則服務(wù)器請求SSL客戶端首先對其進(jìn)行身份驗證并重新協(xié)商。相反的情況也成立。
注意,雖然描述的優(yōu)選實施例是在每一種情況下執(zhí)行初始完全握手(不對稱身份驗證),然后協(xié)商秘密密鑰,但是,可以不必就是這種情況。本發(fā)明特別適用于這種情況,因為身份驗證后面接著進(jìn)行密鑰協(xié)商特別消耗處理器。然而,優(yōu)選情況下,本發(fā)明也適用于使用會話緩存的環(huán)境(不是那么消耗處理器)。這是諸如SSL v3.0和TLS之類的協(xié)議中具有的特點。
在初始握手過程中可以執(zhí)行會話緩存??蛻舳撕头?wù)器保存共同的會話ID、主秘密密鑰和某些證書鏈。此信息通常被保存在高速緩存中可配置的時間段中。
如果請求了隨后的握手(即,當(dāng)客戶端請求了新的秘密密鑰時),并且此信息沒有從高速緩存中過期,雙方向彼此呈現(xiàn)它們的會話ID。如果會話ID匹配,那么,高速緩存的信息將被用來減少在握手過程中執(zhí)行的處理-這通常被稱為簡化的握手,與完全握手相反。
注意,使用會話緩存所存在的弱點是,當(dāng)對握手作出響應(yīng)時,黑客只需要呈現(xiàn)原始會話ID(不交換證書,沒有發(fā)生公鑰操作)。會話ID包括在客戶端“hello”流,因此,可以嗅探線路。
注意,數(shù)據(jù)不必只在一個方向流動-數(shù)據(jù)可以在兩個方向流動。在此情況下,優(yōu)選情況下,當(dāng)需要秘密密鑰重新協(xié)商時有數(shù)據(jù)要發(fā)送的任何人都啟動秘密密鑰重新協(xié)商。優(yōu)選情況下,兩端中的某一端被指定為負(fù)責(zé)發(fā)送心跳(即,在至少預(yù)先確定的時間量內(nèi)在任何一個方向沒有數(shù)據(jù)流動之后)。如此,心跳和響應(yīng)被用來判斷兩端的存在。優(yōu)選情況下,所使用的字節(jié)統(tǒng)計是在特定時間段內(nèi)通過通信鏈路發(fā)送的所有數(shù)據(jù)的總和-即,包括兩端所發(fā)送的數(shù)據(jù)。在一個實施例中,一端跟蹤字節(jié)統(tǒng)計和鏈路的空閑狀況,當(dāng)滿足兩個閾值中的任何一種閾值時通知另一端。
權(quán)利要求
1.一種使用用于對通過通信鏈路在第一和第二實體之間流動的數(shù)據(jù)進(jìn)行加密的秘密密鑰實現(xiàn)安全的數(shù)據(jù)通信的方法,該方法包括判斷通信鏈路已經(jīng)空閑;判斷有數(shù)據(jù)要在先前空閑的通信鏈路上流過;并響應(yīng)判斷有數(shù)據(jù)要在先前空閑的通信鏈路上流過,開始生成新秘密密鑰,所述新秘密密鑰用于對通過通信鏈路在第一和第二實體之間發(fā)送的數(shù)據(jù)進(jìn)行加密。
2.根據(jù)權(quán)利要求1所述的方法,包括判斷何時已經(jīng)通過通信鏈路發(fā)送了預(yù)先配置的數(shù)據(jù)量;響應(yīng)判斷已經(jīng)通過通信鏈路發(fā)送了預(yù)先配置的數(shù)據(jù)量,開始生成新秘密密鑰。
3.根據(jù)權(quán)利要求1或2所述的方法,其中,判斷通信鏈路已經(jīng)空閑的步驟包括判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量。
4.根據(jù)權(quán)利要求3所述的方法,其中,響應(yīng)判斷有數(shù)據(jù)要在先前空閑的通信鏈路上流過,開始生成新秘密密鑰的步驟包括響應(yīng)判斷鏈路已經(jīng)空閑了至少預(yù)先確定的時間量,開始生成新秘密密鑰。
5.根據(jù)權(quán)利要求3所述的方法,包括響應(yīng)判斷通信鏈路已經(jīng)空閑了預(yù)先確定的時間段,通過第一實體仍存在的心跳通知第二實體。
6.根據(jù)權(quán)利要求5所述的方法,包括從第二實體接收回復(fù),該回復(fù)確認(rèn)從第一實體接收到心跳。
7.根據(jù)權(quán)利要求5或6所述的方法,包括響應(yīng)在預(yù)先確定的時間段內(nèi)沒有接收到關(guān)于接收到心跳的確認(rèn),由第一實體終止與第二實體的通信。
8.根據(jù)權(quán)利要求5或6所述的方法,包括響應(yīng)在預(yù)先確定的時間段內(nèi)沒有接收到關(guān)于接收到心跳的確認(rèn),在允許數(shù)據(jù)由第一實體傳輸給第二實體之前開始生成新秘密密鑰。
9.根據(jù)權(quán)利要求5到7中的任何一個權(quán)利要求所述的方法,其中,判斷通信鏈路已經(jīng)空閑的步驟包括判斷鏈路已經(jīng)足夠空閑,足以使第一實體向第二實體發(fā)送心跳。
10.根據(jù)權(quán)利要求9所述的方法,其中,響應(yīng)判斷有數(shù)據(jù)要在先前空閑的通信鏈路上流過,開始生成新秘密密鑰的步驟包括響應(yīng)判斷鏈路已經(jīng)足夠空閑,足以使第一實體向第二實體發(fā)送心跳,開始生成新秘密密鑰。
11.根據(jù)任何一個前面的權(quán)利要求所述的方法,包括在開始生成新秘密密鑰之前,開始至少對第二實體進(jìn)行身份驗證。
12.根據(jù)任何一個前面的權(quán)利要求所述的方法,其中,生成新秘密密鑰是在第一和第二實體之間進(jìn)行的協(xié)商過程的結(jié)果。
13.一種使用用于對通過通信鏈路在第一和第二實體之間流動的數(shù)據(jù)進(jìn)行加密的秘密密鑰實現(xiàn)安全的數(shù)據(jù)通信的方法,該方法包括判斷通信鏈路已經(jīng)空閑;并響應(yīng)判斷通信鏈路已經(jīng)空閑,忽略用秘密密鑰加密的數(shù)據(jù)。
14.根據(jù)權(quán)利要求13所述的方法,包括只接受隨后的用新生成的秘密密鑰加密的數(shù)據(jù)。
15.根據(jù)權(quán)利要求13或14所述的方法,其中,判斷通信鏈路已經(jīng)空閑的步驟包括判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量。
16.根據(jù)權(quán)利要求15所述的方法,其中,判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量的步驟包括通過從第一實體接收到心跳判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量。
17.根據(jù)權(quán)利要求15或16所述的方法,包括響應(yīng)判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量,并且沒有從第一實體接收到心跳,終止與第一實體的通信。
18.根據(jù)權(quán)利要求15或16所述的方法,包括響應(yīng)判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量,并且沒有從第一實體接收到心跳,只接受隨后的用新生成的秘密密鑰加密的數(shù)據(jù)。
19.一種使用用于對通過通信鏈路在第一和第二實體之間流動的數(shù)據(jù)進(jìn)行加密的秘密密鑰實現(xiàn)安全的數(shù)據(jù)通信的設(shè)備,該設(shè)備包括用于判斷通信鏈路已經(jīng)空閑的裝置;用于判斷有數(shù)據(jù)要在先前空閑的通信鏈路上流過的裝置;以及用于響應(yīng)判斷有數(shù)據(jù)要在先前空閑的通信鏈路上流過,開始生成新秘密密鑰的裝置,所述新秘密密鑰用于對通過通信鏈路在第一和第二實體之間發(fā)送的數(shù)據(jù)進(jìn)行加密。
20.根據(jù)權(quán)利要求19所述的設(shè)備,包括用于判斷何時已經(jīng)通過通信鏈路發(fā)送了預(yù)先配置的數(shù)據(jù)量的裝置;用于響應(yīng)判斷已經(jīng)通過通信鏈路發(fā)送了預(yù)先配置的數(shù)據(jù)量,開始生成新秘密密鑰的裝置。
21.根據(jù)權(quán)利要求19或20所述的設(shè)備,其中,用于判斷通信鏈路已經(jīng)空閑的裝置包括用于判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量的裝置。
22.根據(jù)權(quán)利要求21所述的設(shè)備,其中,用于響應(yīng)判斷有數(shù)據(jù)要在先前空閑的通信鏈路上流過,開始生成新秘密密鑰的裝置包括用于響應(yīng)判斷鏈路已經(jīng)空閑了至少預(yù)先確定的時間量,開始生成新秘密密鑰的裝置。
23.根據(jù)權(quán)利要求21所述的設(shè)備包括用于響應(yīng)判斷通信鏈路已經(jīng)空閑了預(yù)先確定的時間段,通過第一實體仍存在的心跳通知第二實體的裝置。
24.根據(jù)權(quán)利要求23所述的設(shè)備包括用于從第二實體接收回復(fù)的裝置,該回復(fù)確認(rèn)從第一實體接收到心跳。
25.根據(jù)權(quán)利要求23或24所述的設(shè)備包括用于響應(yīng)在預(yù)先確定的時間段內(nèi)沒有接收到關(guān)于接收到心跳的確認(rèn),由第一實體終止與第二實體的通信的裝置。
26.根據(jù)權(quán)利要求23或24所述的設(shè)備,包括用于響應(yīng)在預(yù)先確定的時間段內(nèi)沒有接收到關(guān)于接收到心跳的確認(rèn),在允許數(shù)據(jù)由第一實體傳輸給第二實體之前開始生成新秘密密鑰的裝置。
27.根據(jù)權(quán)利要求23到25中的任何一個權(quán)利要求所述的設(shè)備,其中,用于判斷通信鏈路已經(jīng)空閑的裝置包括用于判斷鏈路已經(jīng)足夠空閑,足以使第一實體向第二實體發(fā)送心跳的裝置。
28.根據(jù)權(quán)利要求27所述的設(shè)備,其中,用于響應(yīng)判斷有數(shù)據(jù)要在先前空閑的通信鏈路上流過,開始生成新秘密密鑰的裝置包括用于響應(yīng)判斷鏈路已經(jīng)足夠空閑,足以使第一實體向第二實體發(fā)送心跳,開始生成新秘密密鑰的裝置。
29.根據(jù)權(quán)利要求19到29中的任何一個權(quán)利要求所述的設(shè)備,包括用于在開始生成新秘密密鑰之前,開始至少對第二實體進(jìn)行身份驗證的裝置。
30.根據(jù)權(quán)利要求19到29中的任何一個權(quán)利要求所述的設(shè)備,其中,生成新秘密密鑰是在第一和第二實體之間進(jìn)行的協(xié)商過程的結(jié)果。
31.一種使用用于對通過通信鏈路在第一和第二實體之間流動的數(shù)據(jù)進(jìn)行加密的秘密密鑰實現(xiàn)安全的數(shù)據(jù)通信的設(shè)備,該設(shè)備包括用于判斷通信鏈路已經(jīng)空閑的裝置;以及用于響應(yīng)判斷通信鏈路已經(jīng)空閑,忽略用秘密密鑰加密的數(shù)據(jù)的裝置。
32.根據(jù)權(quán)利要求31所述的設(shè)備包括用于只接受隨后的用新生成的秘密密鑰加密的數(shù)據(jù)的裝置。
33.根據(jù)權(quán)利要求31或32所述的設(shè)備,其中,用于判斷通信鏈路已經(jīng)空閑的裝置包括用于判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量的裝置。
34.根據(jù)權(quán)利要求33所述的設(shè)備,其中,用于判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量的裝置包括用于通過從第一實體接收到心跳判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量的裝置。
35.根據(jù)權(quán)利要求33或34所述的設(shè)備包括用于響應(yīng)判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量,并且沒有從第一實體接收到心跳,終止與第一實體的通信的裝置。
36.根據(jù)權(quán)利要求33或34所述的設(shè)備,包括用于響應(yīng)判斷通信鏈路已經(jīng)空閑了至少預(yù)先確定的時間量,并且沒有從第一實體接收到心跳,只接受隨后的用新生成的秘密密鑰加密的數(shù)據(jù)的裝置。
37.包括程序代碼裝置的計算機(jī)程序,當(dāng)所述程序在計算機(jī)上運行時,可以執(zhí)行權(quán)利要求1到18中的任何一個權(quán)利要求所述的方法。
38.包括存儲在計算機(jī)可讀取的存儲介質(zhì)上的程序代碼的計算機(jī)程序產(chǎn)品,當(dāng)所述程序代碼在計算機(jī)上運行時,可以執(zhí)行權(quán)利要求1到18中的任何一個權(quán)利要求所述的方法。
全文摘要
說明了一種用于實現(xiàn)安全的數(shù)據(jù)通信的方法、設(shè)備、計算機(jī)程序和計算機(jī)程序產(chǎn)品。安全的數(shù)據(jù)通信是使用用于對通過通信鏈路在第一和第二實體之間流動的數(shù)據(jù)進(jìn)行加密的秘密密鑰進(jìn)行的。首先判斷通信鏈路已經(jīng)空閑。一旦判斷現(xiàn)在有數(shù)據(jù)要在先前空閑的通信鏈路上流過,就生成新的秘密密鑰。然后,此新秘密密鑰用于對通過通信鏈路在第一和第二實體之間發(fā)送的數(shù)據(jù)進(jìn)行加密。
文檔編號H04L29/06GK1914882SQ200580003636
公開日2007年2月14日 申請日期2005年3月1日 優(yōu)先權(quán)日2004年3月9日
發(fā)明者理查德·邁克爾·懷恩·哈蘭, 邁克爾·霍蘭, 喬納?!斈啡?申請人:國際商業(yè)機(jī)器公司