安全協(xié)議的動(dòng)態(tài)選擇的制作方法
【專利摘要】這里描述的技術(shù)使得客戶端能夠存儲(chǔ)指示各種主機(jī)(例如,服務(wù)器、web域)是否支持優(yōu)選的安全協(xié)議(諸如經(jīng)搶跑修改的TLS或SSL協(xié)議)的信息。客戶端然后可以使用這個(gè)信息來動(dòng)態(tài)地確定當(dāng)連接到特定的主機(jī)時(shí)是否使用優(yōu)選的協(xié)議。當(dāng)客戶端第一次嘗試握手來建立與主機(jī)的安全連接時(shí),客戶端使用優(yōu)選的協(xié)議來這樣做。如果握手失敗,則客戶端本地存儲(chǔ)用于主機(jī)的域或其它標(biāo)識(shí)信息,這樣,客戶端在隨后的連接嘗試中可以采用非優(yōu)選的協(xié)議。因此,客戶端可以避免由嘗試與不支持優(yōu)選的協(xié)議的主機(jī)進(jìn)行優(yōu)選的協(xié)議連接而引起的性能降級(jí)。所存儲(chǔ)的信息可包括時(shí)間戳,其使能用于主機(jī)能力更新的周期性檢查。
【專利說明】安全協(xié)議的動(dòng)態(tài)選擇
【背景技術(shù)】
[0001]安全套接字層(SSL)和傳輸層安全(TLS)是在開放系統(tǒng)互連(OSI)模型的應(yīng)用層上運(yùn)行的、用來提供互聯(lián)網(wǎng)上客戶端與服務(wù)器之間的安全通信的通信協(xié)議。在簡(jiǎn)單的SSL或TLS握手中,客戶端通過發(fā)送包括由客戶端支持的協(xié)議版本以及在客戶端處生成的隨機(jī)數(shù)的客戶端問候(ClientHell0)開始。然后服務(wù)器用包括由服務(wù)器支持的協(xié)議版本連同在服務(wù)器處生成的隨機(jī)數(shù)的服務(wù)器問候語(yǔ)消息進(jìn)行應(yīng)答。然后服務(wù)器可以發(fā)送它的證書,包括其用于加密的公開密鑰,之后發(fā)送指示關(guān)于握手協(xié)商已完成的、服務(wù)器問候完成(ServerHeI1Done)消息。
[0002]然后客戶端可以用包含使用服務(wù)器的公開密鑰加密的預(yù)備主秘密(PreMasterSecret)的客戶端密鑰交換(ClientKeyExchange )消息進(jìn)行應(yīng)答。然后客戶端和服務(wù)器可以使用所交換的隨機(jī)數(shù)和預(yù)備主秘密來計(jì)算被使用來生成用于通信會(huì)話的會(huì)話密鑰的公共的主秘密(MasterSecret)。然后,客戶端和服務(wù)器互相發(fā)送指示隨后的消息將被加密的改變密碼說明(ChangeCipherSpec),以及加密的完成(Finished)消息。服務(wù)器和客戶端將嘗試解密相互的完成消息。如果任一項(xiàng)嘗試失敗,則握手失敗且連接終止。如果客戶端和服務(wù)器都成功解密完成消息,則握手成功。如果客戶端也具有其自己的證書,和/或如果握手正在恢復(fù)以前的會(huì)話,則握手可以被修改。然而,在上述的簡(jiǎn)單的情形下,完整的握手通常包括在握手完成以及客戶端和服務(wù)器可以開始發(fā)送應(yīng)用數(shù)據(jù)之前的至少兩次完整的協(xié)議往返行程,因此,為建立通信會(huì)話增加了兩次網(wǎng)絡(luò)往返行程的等待時(shí)間(latency)懲罰。
[0003]為了減小這個(gè)等待時(shí)間,已向互聯(lián)網(wǎng)工程任務(wù)組(IETF)的TLS工作組提交了建議,以通過并入被稱為搶跑(False Start)的特征而修改TLS并且可能修改SSL。這個(gè)建議的修改使得客戶端能夠在其已經(jīng)接收和驗(yàn)證服務(wù)器的完成消息之前就開始發(fā)送應(yīng)用數(shù)據(jù)。在其中采用縮短的握手來恢復(fù)以前的會(huì)話的場(chǎng)景下,服務(wù)器在它已經(jīng)接收和驗(yàn)證客戶端的完成消息之前就開始發(fā)送應(yīng)用數(shù)據(jù)。因此,搶跑使等待時(shí)間減少一個(gè)往返行程的時(shí)間。然而,如果能夠搶跑的客戶端嘗試與不支持搶跑的服務(wù)器進(jìn)行握手,則握手將失敗,并且客戶端將嘗試使用標(biāo)準(zhǔn)的、非搶跑協(xié)議進(jìn)行另一次握手,這招致相當(dāng)大的等待時(shí)間懲罰。
【發(fā)明內(nèi)容】
[0004]這里描述的技術(shù)使得客戶端能夠存儲(chǔ)指示各種服務(wù)器或主機(jī)是否支持對(duì)于TLS或SSL的搶跑修改的信息。然后客戶端可以使用這個(gè)信息來確定是否在連接到服務(wù)器時(shí)發(fā)起搶跑握手。當(dāng)能夠進(jìn)行搶跑的客戶端第一次嘗試進(jìn)行握手來建立與服務(wù)器的安全連接時(shí),客戶端使用經(jīng)搶跑修改的協(xié)議來進(jìn)行握手。如果安全連接被通過使用搶跑建立(例如,如果握手成功),則客戶端和服務(wù)器將進(jìn)行應(yīng)用數(shù)據(jù)的交換。
[0005]然而,如果握手失敗并且安全連接未建立,則客戶端重新嘗試通過使用標(biāo)準(zhǔn)的(例如,未經(jīng)搶跑修改的)TLS或SSL握手來建立連接,并且把指示服務(wù)器不支持搶跑的信息存儲(chǔ)在客戶端。所存儲(chǔ)的信息可包括服務(wù)器的標(biāo)識(shí)和/或由服務(wù)器所宿有的網(wǎng)站,所述標(biāo)識(shí)是以域、子域、統(tǒng)一資源定位器(URL)、互聯(lián)網(wǎng)協(xié)議(IP)地址、和/或其它標(biāo)識(shí)信息的形式。信息可被存儲(chǔ)在客戶端的主動(dòng)式存儲(chǔ)器(例如,物理存儲(chǔ)器)中,用來優(yōu)化在同一個(gè)通信會(huì)話內(nèi)的安全連接的建立。信息也可以被存儲(chǔ)在永久存儲(chǔ)器中(例如,在客戶端的硬驅(qū)動(dòng)機(jī)上),用來優(yōu)化跨不同通信會(huì)話的安全連接的建立。在某些情形下(例如,其中信息被存儲(chǔ)在永久存儲(chǔ)器中),信息還可包括指示信息被存儲(chǔ)時(shí)的時(shí)間和日期的時(shí)間戳。這樣的時(shí)間戳可以使得客戶端能夠重新檢查服務(wù)器或主機(jī),以確定它是否已經(jīng)被更新成支持搶跑。
[0006]本概要被提供來以簡(jiǎn)化的形式介紹概念的選擇,這些概念還將在下面的詳細(xì)說明中進(jìn)行描述。本概要既不打算確認(rèn)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不打算被使用來限制所要求保護(hù)的主題的范圍。
【專利附圖】
【附圖說明】
[0007]詳細(xì)說明是參照附圖描述的。在圖上,參考標(biāo)號(hào)的最左面的數(shù)字標(biāo)識(shí)其中該參考標(biāo)號(hào)第一次出現(xiàn)的圖。在不同的圖上相同的參考標(biāo)號(hào)指示類似的或相同的項(xiàng)。
[0008]圖1A、1B和IC圖示出其中啟用搶跑的客戶端嘗試與啟用搶跑或未啟用搶跑的服務(wù)器或主機(jī)握手的示例性場(chǎng)景。
[0009]圖2是描繪實(shí)施例可以在其中運(yùn)行的示例性環(huán)境的圖。
[0010]圖3是描繪按照實(shí)施例的示例性計(jì)算系統(tǒng)的圖。
[0011]圖4描繪用于把信息存儲(chǔ)在客戶端以指示服務(wù)器是否支持優(yōu)選的安全協(xié)議(例如,支持搶跑的協(xié)議)的示例性過程的流程圖。
[0012]圖5描繪用于采用被存儲(chǔ)在客戶端的信息來確定是否嘗試使用優(yōu)選的安全協(xié)議(例如,支持搶跑的協(xié)議)進(jìn)行連接的示例性過程的流程圖。
【具體實(shí)施方式】
[0013]綜述
這里描述的實(shí)施例為啟用搶跑的客戶端提供用于確定是否使用經(jīng)搶跑修改的協(xié)議來嘗試建立與服務(wù)器或主機(jī)的安全連接的技術(shù)。對(duì)于SSL (例如,SSL 3.0和以后版本)和TLS(例如,TLS 1.0、1.1、1.2和以后版本)的搶跑修改通過從建立安全的客戶端-服務(wù)器連接的握手中移除一次往返行程而減小等待時(shí)間。然而,不是所有的服務(wù)器都支持帶有搶跑修改的協(xié)議。當(dāng)支持搶跑的客戶端嘗試與不支持搶跑的服務(wù)器握手時(shí),握手失敗,并且客戶端重新嘗試不帶有搶跑的握手。第一次失敗的握手嘗試可以造成在建立連接中的增加的等待時(shí)間,因此可能使嘗試建立與服務(wù)器的安全通信的web瀏覽器或其它客戶端側(cè)應(yīng)用的性能降級(jí)。為了防止這樣的性能降級(jí),實(shí)施例使得能夠把指示特定的服務(wù)器是否支持搶跑的信息或元數(shù)據(jù)存儲(chǔ)在客戶端。然后客戶端可以使用這個(gè)數(shù)據(jù)來確定是否嘗試搶跑握手。
[0014]圖1A、1B和IC圖示出其中啟用搶跑的客戶端嘗試與啟用搶跑或未啟用搶跑的服務(wù)器握手的示例性場(chǎng)景。如圖1A所示,執(zhí)行啟用搶跑的客戶端應(yīng)用的客戶端設(shè)備102嘗試連接到支持搶跑的web服務(wù)器104。在這種情形下,搶跑握手106成功。在某些實(shí)施例中,客戶端應(yīng)用是超級(jí)文本傳送協(xié)議(HTTP)客戶端,其可在客戶端設(shè)備102上作為web瀏覽器或其它應(yīng)用的組件執(zhí)行,以連接到網(wǎng)站或由web服務(wù)器104提供的其它web服務(wù)。
[0015]圖1B圖示出其中客戶端設(shè)備102嘗試連接到不支持搶跑的不同web服務(wù)器110的示例性場(chǎng)景。在客戶端對(duì)web服務(wù)器110的第一次訪問(First Visit)108時(shí),客戶端嘗試搶跑握手112,該搶跑握手由于web服務(wù)器缺乏對(duì)于搶跑的支持而失敗。然后,客戶端重新嘗試通過使用非搶跑握手114進(jìn)行連接。在第二次訪問(Second Visit) 116時(shí),客戶端再一次嘗試搶跑握手118,該握手再一次失敗,然后客戶端嘗試通過使用非搶跑握手120來建立連接。在這種場(chǎng)景下,因?yàn)榭蛻舳藳]有并入這里描述的實(shí)施例的各種特征,所以客戶端沒有從其第一次訪問108的失敗的搶跑握手112中吸取教訓(xùn),接著又在其第二次訪問116中,重新嘗試搶跑握手。
[0016]然而,圖1C圖示出其中客戶端設(shè)備102保留web服務(wù)器110不支持搶跑的信息的示例性場(chǎng)景。在客戶端第一次訪問122時(shí),客戶端嘗試搶跑握手124,該握手因?yàn)閣eb服務(wù)器110不支持搶跑而失敗。然后客戶端重新嘗試通過使用非搶跑握手126而進(jìn)行連接。然而,在本例中,在第一次失敗的握手后,客戶端存儲(chǔ)了指示web服務(wù)器110不支持搶跑的信息。因此,在客戶端第二次訪問128時(shí),客戶端查找以前存儲(chǔ)的信息,并根據(jù)該信息,知道不嘗試與web服務(wù)器110進(jìn)行搶跑握手。而是,客戶端嘗試非搶跑握手130。這個(gè)信息的存儲(chǔ)、檢索和使用在下面參照?qǐng)D4和圖5進(jìn)一步描述。
[0017]因此,通過采用所存儲(chǔ)的信息,客戶端可以確定是否嘗試使用優(yōu)選的安全協(xié)議(例如,搶跑協(xié)議)進(jìn)行連接,從而防止與不支持優(yōu)選安全協(xié)議的服務(wù)器的失敗的第一次嘗試。因?yàn)榭蛻舳丝梢栽L問關(guān)于主機(jī)服務(wù)器的能力(例如,它是否支持搶跑)的信息,所以客戶端可以節(jié)省多達(dá)三次往返行程時(shí)間:對(duì)于在搶跑握手時(shí)的初始失敗的嘗試的兩次往返行程,加上(在某些情形下)由于以下原因而引起的另一次往返行程時(shí)間,即:因?yàn)門CP會(huì)話在跟隨搶跑握手的失敗嘗試而已經(jīng)被服務(wù)器拆掉之后可能需要被重建。
[0018]而且,因?yàn)閷?shí)施例規(guī)定:關(guān)于服務(wù)器能力的信息被本地存儲(chǔ)在客戶端本身,所以客戶端可以動(dòng)態(tài)地確定采用哪個(gè)安全協(xié)議,而不需要訪問在遠(yuǎn)程服務(wù)器上存儲(chǔ)的其它信息(例如,不支持的主機(jī)的黑名單)。這使得客戶端能夠更有效地進(jìn)行它的確定,而不招致對(duì)于從遠(yuǎn)程服務(wù)器檢索服務(wù)器能力信息所需要的附加的等待時(shí)間打擊(hit)。再者,實(shí)施例還可以使得能進(jìn)行有效的通信,因?yàn)榉?wù)器能力信息被本地存儲(chǔ)并基于客戶端與某些主機(jī)連接的能力來被動(dòng)態(tài)地更新。而且,因?yàn)榭蛻舳吮旧泶鎯?chǔ)關(guān)于服務(wù)器能力的信息,所以信息可以比被存儲(chǔ)在遠(yuǎn)程服務(wù)器的服務(wù)器能力信息(例如,在黑名單中)更頻繁地更新,因此導(dǎo)致使用優(yōu)選的安全協(xié)議的握手較少失敗。
[0019]示例性環(huán)境
圖2顯示實(shí)施例可以在其中運(yùn)行的示例性環(huán)境200。如圖所示,環(huán)境200的各種設(shè)備經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)202來互相通信,所述網(wǎng)絡(luò)可包括使得能進(jìn)行這樣的通信的任何類型的網(wǎng)絡(luò)。例如,網(wǎng)絡(luò)202可包括諸如互聯(lián)網(wǎng)那樣的公用網(wǎng)、諸如公共機(jī)構(gòu)和/或個(gè)人的內(nèi)聯(lián)網(wǎng)那樣的專用網(wǎng)、或?qū)S镁W(wǎng)與公用網(wǎng)的某種組合。網(wǎng)絡(luò)202還可包括任何類型的有線和/或無(wú)線網(wǎng),包括,但不限于,局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、W1-F1、WiMax和移動(dòng)通信網(wǎng)(例如,3G、4G等等)。網(wǎng)絡(luò)202可以利用通信協(xié)議,其包括基于分組的和/或基于數(shù)據(jù)報(bào)的協(xié)議,諸如互聯(lián)網(wǎng)協(xié)議(IP)、傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)、或其它類型的協(xié)議。而且,網(wǎng)絡(luò)202還可包括促進(jìn)網(wǎng)絡(luò)通信和/或形成用于網(wǎng)絡(luò)的硬件基礎(chǔ)的多個(gè)設(shè)備,諸如交換機(jī)、路由器、網(wǎng)關(guān)、接入點(diǎn)、防火墻、基站、中繼器、骨干設(shè)備等等。
[0020]環(huán)境200還包括與終端用戶相關(guān)聯(lián)的一個(gè)或多個(gè)客戶端設(shè)備204。概略地說,客戶端設(shè)備204可包括用戶可以采用來通過網(wǎng)絡(luò)202發(fā)送和接收信息的任何類型的計(jì)算設(shè)備。例如,客戶端設(shè)備204可包括,但不限于,臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、電子書閱讀器、可穿戴計(jì)算機(jī)、媒體播放器、車載計(jì)算機(jī)、移動(dòng)計(jì)算設(shè)備、智能電話、個(gè)人數(shù)據(jù)助理(PDA)、游戲控制臺(tái)、移動(dòng)游戲設(shè)備、機(jī)頂盒等等。
[0021]客戶端設(shè)備204通常包括一個(gè)或多個(gè)應(yīng)用,包括但不限于,文字處理應(yīng)用、游戲、web瀏覽器、電子郵件客戶端應(yīng)用、文本消息傳送應(yīng)用、聊天或即時(shí)消息傳送(IM)客戶端以及其它應(yīng)用。這些應(yīng)用中的一個(gè)或多個(gè)應(yīng)用可包括使得應(yīng)用能夠經(jīng)由HTTP或另外的聯(lián)網(wǎng)協(xié)議連接到網(wǎng)站或以別的方式訪問基于web的信息的組件。客戶端設(shè)備204以及其它設(shè)備被描述在圖2上,并在此處參照?qǐng)D3作進(jìn)一步描述。
[0022]如圖2進(jìn)一步顯示的,環(huán)境200可包括被配置成用來通過網(wǎng)絡(luò)202供應(yīng)內(nèi)容或把服務(wù)提供給用戶的一個(gè)或多個(gè)web服務(wù)器設(shè)備206。這樣的內(nèi)容和服務(wù)可包括,但不限于,被宿有的靜態(tài)和/或動(dòng)態(tài)的網(wǎng)頁(yè)、社交網(wǎng)絡(luò)服務(wù)、電子郵件服務(wù)、聊天服務(wù)、游戲、多媒體和通過網(wǎng)絡(luò)202提供的任何其它類型的內(nèi)容、服務(wù)或信息。web服務(wù)器設(shè)備206可以支持用于與客戶端設(shè)備204或其它聯(lián)網(wǎng)設(shè)備通信的一個(gè)或多個(gè)通信協(xié)議。例如,web服務(wù)器設(shè)備206可被配置成通過使用TCP/IP而建立通信會(huì)話,和/或通過使用HTTP而應(yīng)答對(duì)于數(shù)據(jù)的請(qǐng)求。web服務(wù)器設(shè)備206還可以被配置成通過使用諸如TLS或SSL的安全協(xié)議來建立安全通信會(huì)話,該安全協(xié)議可被修改成支持搶跑。
[0023]說明性計(jì)算系統(tǒng)結(jié)構(gòu)
圖3描繪實(shí)施例可以在其中運(yùn)行的示例性計(jì)算系統(tǒng)300。如圖所示,計(jì)算系統(tǒng)300包括處理單元302。處理單元302可包含多個(gè)處理單元,并可以作為硬件、軟件、或其的某種組合被實(shí)現(xiàn)。處理單元302可包括一個(gè)或多個(gè)處理器。正如這里使用的,處理器指硬件組件。處理單元302可包括以任何適當(dāng)?shù)木幊陶Z(yǔ)言編寫的、計(jì)算機(jī)可執(zhí)行的、處理器可執(zhí)行的和/或機(jī)器可執(zhí)行的指令,用于執(zhí)行這里描述的各種功能。
[0024]正如例子中顯示的,計(jì)算系統(tǒng)300還包括系統(tǒng)存儲(chǔ)器304,它可包括易失性存儲(chǔ)器,諸如隨機(jī)存取存儲(chǔ)器(RAM) 306、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)等等。RAM 306包括一個(gè)或多個(gè)正執(zhí)行的操作系統(tǒng)(0S)308和一個(gè)或多個(gè)正執(zhí)行的過程,該正執(zhí)行的過程包括可由處理單元302加載和執(zhí)行的組件、程序、或應(yīng)用。這樣的過程可包括web瀏覽器310,其運(yùn)行來與網(wǎng)站或在互聯(lián)網(wǎng)上可得到的其它服務(wù)通信。在某些實(shí)施例中,web瀏覽器310包括協(xié)議選擇組件312,當(dāng)與特定的web服務(wù)器通信時(shí),該協(xié)議選擇組件312動(dòng)態(tài)地選擇特定的通信協(xié)議來使用。正如下面進(jìn)一步描述的,協(xié)議選擇組件312可以訪問所存儲(chǔ)的關(guān)于服務(wù)器的信息,以確定是否采用啟用搶跑的TLS或SSL協(xié)議來建立與服務(wù)器的安全連接。在某些實(shí)施例中,RAM 306可包括物理存儲(chǔ)器(例如,臨時(shí)存儲(chǔ)裝置314),OS 308、web瀏覽器310和/或其它過程316在其中執(zhí)行。
[0025]系統(tǒng)存儲(chǔ)器304還可包括非易失性存儲(chǔ)器,諸如只讀存儲(chǔ)器(ROM) 318、快閃存儲(chǔ)器等等。正如所顯示的,ROM 318可包括被使用來引導(dǎo)計(jì)算系統(tǒng)300的基本輸入/輸出系統(tǒng)(B1S) 320。雖然未示出,但是系統(tǒng)存儲(chǔ)器304還可存儲(chǔ)由OS 308、web瀏覽器310和/或其它過程316在它們執(zhí)行期間所生成的和/或采用的程序或組件數(shù)據(jù)。系統(tǒng)存儲(chǔ)器304還可包括高速緩沖存儲(chǔ)器。
[0026]如圖3所示,計(jì)算系統(tǒng)300還可包括非可移除存儲(chǔ)裝置330 (例如,硬驅(qū)動(dòng)機(jī))和/或可移除存儲(chǔ)裝置334,其包括,但不限于,磁盤存儲(chǔ)裝置、光盤存儲(chǔ)裝置、磁帶存儲(chǔ)裝置等等。盤驅(qū)動(dòng)和相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)可以提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和用于計(jì)算系統(tǒng)300的操作的其它數(shù)據(jù)的非易失性存儲(chǔ)。而且,非可移除存儲(chǔ)裝置330還可包括永久存儲(chǔ)裝置332。
[0027]通常,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。
[0028]計(jì)算機(jī)存儲(chǔ)介質(zhì)是有形的介質(zhì),其包括以任何方法或技術(shù)來實(shí)現(xiàn)的、用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)那樣的信息的易失性和非易失性的、可移除和非可移除介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,RAM、ROM、可擦除可編程只讀存儲(chǔ)器(EEPROM)、SRAM、DRAM、快閃存儲(chǔ)器、或其它存儲(chǔ)器技術(shù)、只讀光盤存儲(chǔ)器(CD-ROM)、數(shù)字多功能盤(DVDS)或其它光存儲(chǔ)裝置、盒式磁帶、磁帶、磁盤存儲(chǔ)裝置或其它磁存儲(chǔ)器件、或可被計(jì)算設(shè)備使用來存儲(chǔ)信息以便訪問的任何其它非傳輸介質(zhì)。
[0029]相反,通信介質(zhì)是非有形的,并且可以在諸如載波或其它傳輸機(jī)制那樣的已調(diào)制數(shù)據(jù)信號(hào)中體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其它數(shù)據(jù)。正如這里定義的,計(jì)算機(jī)存儲(chǔ)介質(zhì)不包括通信介質(zhì)。
[0030]計(jì)算系統(tǒng)300可包括輸入設(shè)備336,包括,但不限于,鍵盤、鼠標(biāo)、筆、游戲控制器、用于語(yǔ)音標(biāo)識(shí)的話音輸入設(shè)備、觸摸輸入設(shè)備等等。計(jì)算系統(tǒng)300還可包括輸出設(shè)備338,包括,但不限于,顯示器、打印機(jī)、音頻揚(yáng)聲器、觸覺輸出等等。計(jì)算系統(tǒng)300還可包括通信連接340,允許通信系統(tǒng)300與其它計(jì)算設(shè)備342通信,其它計(jì)算設(shè)備包括在一個(gè)或多個(gè)通信網(wǎng)上可得到的客戶端設(shè)備、服務(wù)器設(shè)備、數(shù)據(jù)庫(kù)和/或其它聯(lián)網(wǎng)設(shè)備。
[0031]說明性過程
圖4和5是描繪按照各種實(shí)施例的示例性過程的流程圖。這些過程的操作在各個(gè)方框中舉例說明,并參考那些方框進(jìn)行概述。過程被圖示為邏輯流程圖,其每個(gè)操作可以代表能以硬件、軟件、或其組合實(shí)現(xiàn)的一個(gè)或多個(gè)操作。在軟件的上下文中,操作代表被存儲(chǔ)在一個(gè)或多個(gè)存儲(chǔ)介質(zhì)上的計(jì)算機(jī)可執(zhí)行指令,這些指令當(dāng)被一個(gè)或多個(gè)處理器執(zhí)行時(shí)使得所述一個(gè)或多個(gè)處理器能夠執(zhí)行所闡述的操作。通常,計(jì)算機(jī)可執(zhí)行指令包括執(zhí)行特定的功能或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型的例行程序、程序、對(duì)象、模塊、組件、數(shù)據(jù)結(jié)構(gòu)等等。操作被描述的次序不打算被看作為限制,并且任何數(shù)量的所描述的操作可以以任何次序被組合、被再劃分成多個(gè)子操作和/或可并行地執(zhí)行,以實(shí)現(xiàn)所描述的過程。
[0032]圖4描繪用于在客戶端上存儲(chǔ)信息以指示服務(wù)器或主機(jī)是否支持優(yōu)選的安全協(xié)議(例如,支持搶跑的安全通信協(xié)議)的示例性過程400。在一些實(shí)施例中,過程400由諸如在客戶端設(shè)備上執(zhí)行的協(xié)議選擇組件312那樣的組件執(zhí)行。而且,過程400可以通過客戶端過程,諸如作為在客戶端設(shè)備上執(zhí)行的瀏覽器或其它應(yīng)用的一部分的HTTP客戶端來執(zhí)行。
[0033]在402,進(jìn)行嘗試以使用第一安全協(xié)議在客戶端與服務(wù)器(例如,web服務(wù)器)之間建立安全連接。在一些實(shí)施例中,第一安全協(xié)議是支持搶跑以減小如上所述的等待時(shí)間的優(yōu)選的安全協(xié)議,諸如SSL或TLS協(xié)議,以及客戶端嘗試進(jìn)行由搶跑修改的SSL或TLS握手。在方塊404,對(duì)握手是否成功以及連接是否被建立進(jìn)行確定。例如,如上所述,當(dāng)使用經(jīng)搶跑修改的協(xié)議時(shí),客戶端可以在接收到服務(wù)器的完成消息(或TLS或SSL握手完成的其它通信指示)之前就開始發(fā)送應(yīng)用數(shù)據(jù)。如果服務(wù)器不支持搶跑,服務(wù)器可以把應(yīng)用數(shù)據(jù)的客戶端傳輸解譯為過早,且終止或以別的方式拆除與客戶端的連接。在這樣的情形下,服務(wù)器可以把指示失敗的通信發(fā)送到客戶端,其包括但不限于,SSL或TLS警告、SSL或TLS錯(cuò)誤消息、和/或TCP消息(例如,TCP FIN或TCP RESET (復(fù)位))。而且,在一些實(shí)施例中,客戶端在于一定的時(shí)間段后沒有接收到來自服務(wù)器的任何應(yīng)答后,可能超時(shí)。在方塊404,各種實(shí)施例可以使用一個(gè)或多個(gè)這些事件來確定服務(wù)器不支持搶跑。雖然可以有連接失敗的其它原因,但實(shí)施例可以根據(jù)建立安全連接或會(huì)話失敗而推斷:服務(wù)器不支持搶跑。
[0034]如果連接被成功地建立,則在406,客戶端和服務(wù)器可以著手進(jìn)行通信來交換應(yīng)用數(shù)據(jù)。然而,如果連接沒有被成功地建立,則在408,關(guān)于服務(wù)器的信息可被存儲(chǔ)在客戶端上的臨時(shí)存儲(chǔ)裝置(例如,臨時(shí)存儲(chǔ)裝置314)中。在一些實(shí)施例中,信息被存儲(chǔ)在數(shù)據(jù)庫(kù)、列表、或其它數(shù)據(jù)結(jié)構(gòu)中,并且所存儲(chǔ)的信息標(biāo)識(shí)了客戶端已確定不支持第一安全協(xié)議的那些服務(wù)器。這樣的標(biāo)識(shí)信息可包括對(duì)于任何域級(jí)別或子域級(jí)別處的服務(wù)器的域信息、用于每個(gè)服務(wù)器的URL、或其它標(biāo)識(shí)信息(例如,IP地址)。
[0035]在一些實(shí)施例中,臨時(shí)存儲(chǔ)裝置可以是在過程的主動(dòng)式存儲(chǔ)器(例如,物理存儲(chǔ)器或虛擬存儲(chǔ)器)中的存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu),協(xié)議選擇組件正在主動(dòng)式存儲(chǔ)器中執(zhí)行過程400。在一些實(shí)施例中,在臨時(shí)存儲(chǔ)裝置中的這個(gè)信息可能只要過程是活動(dòng)的、特定的連接是活動(dòng)的,就可得到,和/或在連接變?yōu)椴换顒?dòng)后的一定的預(yù)定時(shí)間段(例如,10分鐘)內(nèi)可得到。這樣,把信息存儲(chǔ)在臨時(shí)存儲(chǔ)裝置中可以使得能對(duì)同一個(gè)會(huì)話的與服務(wù)器的多個(gè)連接進(jìn)行優(yōu)化,這樣使得HTTP客戶端或其它組件可以從物理存儲(chǔ)器中有效地檢索所存儲(chǔ)的關(guān)于服務(wù)器能力的信息,而不必訪問硬驅(qū)動(dòng)機(jī)或其它永久存儲(chǔ)裝置。因此,假設(shè)客戶端可以從臨時(shí)存儲(chǔ)裝置有效地檢索主機(jī)能力信息,則在某個(gè)時(shí)間段后返回到同一個(gè)主機(jī)或網(wǎng)站的用戶可能能夠更快速地連接。
[0036]在410,關(guān)于服務(wù)器能力的信息可以另外被存儲(chǔ)在永久存儲(chǔ)裝置中,諸如在客戶端設(shè)備的硬驅(qū)動(dòng)機(jī)或其它非可移除存儲(chǔ)裝置上的永久存儲(chǔ)裝置332中。把服務(wù)器能力信息保存在永久存儲(chǔ)裝置中可以使得能跨多個(gè)會(huì)話來優(yōu)化與服務(wù)器的連接。例如,在特定的會(huì)話被終結(jié)且臨時(shí)存儲(chǔ)裝置被釋放后,服務(wù)器能力信息可以在以后的會(huì)話期間從永久存儲(chǔ)裝置中檢索。因此,客戶端可能能夠根據(jù)在以前的會(huì)話期間收集的服務(wù)器能力信息,確定特定的服務(wù)器是否支持優(yōu)選的安全協(xié)議(例如,具有搶跑)。
[0037]在一些實(shí)施例中,被存儲(chǔ)在永久存儲(chǔ)裝置中的服務(wù)器信息包括與被存儲(chǔ)在臨時(shí)存儲(chǔ)裝置中的信息相同的或類似的服務(wù)器標(biāo)識(shí)(例如,域)信息。在一些實(shí)施例中,被存儲(chǔ)在永久存儲(chǔ)裝置中的服務(wù)器信息還可包括:對(duì)于每個(gè)服務(wù)器的、指示當(dāng)信息被存儲(chǔ)時(shí)的時(shí)間和日期的時(shí)間戳。這個(gè)時(shí)間戳可以提供啟發(fā)性(heuristic),以使得客戶端在稍后的時(shí)間能夠重新嘗試使用第一安全協(xié)議連接到服務(wù)器,并且因此周期地檢查以確定服務(wù)器的能力是否已更新或擴(kuò)展到支持第一安全協(xié)議(例如,包括搶跑的協(xié)議)。這方面將參照?qǐng)D5進(jìn)一步描述。
[0038]在412,進(jìn)行嘗試以使用第二安全協(xié)議建立安全的客戶端/服務(wù)器連接。在一些實(shí)施例中,第二安全協(xié)議是非優(yōu)選的或不太優(yōu)選的協(xié)議,諸如不支持搶跑的SSL或TLS協(xié)議。在一些實(shí)施例中,在這個(gè)第二次握手嘗試之前且跟在第一次失敗的握手嘗試之后,服務(wù)器信息被存儲(chǔ)在臨時(shí)和/或永久存儲(chǔ)裝置中。在一些實(shí)施例中,服務(wù)器信息可以跟在第二次握手嘗試之后被存儲(chǔ)。而且,在一些實(shí)施例中,在412,可能需要重建TCP會(huì)話,因?yàn)楫?dāng)搶跑握手失敗時(shí)服務(wù)器可能已拆除現(xiàn)有的會(huì)話。
[0039]圖5描繪用于采用被存儲(chǔ)在客戶端的信息來確定是否嘗試使用優(yōu)選的安全協(xié)議(例如,支持搶跑的協(xié)議)進(jìn)行連接的示例性過程500。在一些實(shí)施例中,過程500由在客戶端設(shè)備上執(zhí)行的、諸如協(xié)議選擇組件312那樣的組件執(zhí)行。而且,過程500可以由客戶端過程,諸如由作為在客戶端設(shè)備上執(zhí)行的瀏覽器或其它應(yīng)用的一部分的HTTP客戶端來執(zhí)行。
[0040]在502,接收與服務(wù)器安全地連接的指示。例如,當(dāng)用戶希望使用諸如SSL或TLS那樣的安全通信協(xié)議通過在客戶端上的web瀏覽器或其它應(yīng)用而連接到服務(wù)器上的網(wǎng)站時(shí),可以觸發(fā)這樣的指示。在504,從如上所述的服務(wù)器信息以前存儲(chǔ)在其中的永久存儲(chǔ)裝置或者該過程的存儲(chǔ)器中臨時(shí)存儲(chǔ)裝置訪問服務(wù)器信息。在一些實(shí)施例中,首先檢查存儲(chǔ)器中的臨時(shí)存儲(chǔ)裝置,并且如果在臨時(shí)存儲(chǔ)裝置中沒有找到信息,則隨后檢查永久存儲(chǔ)裝置。
[0041]在506,對(duì)在所訪問的信息中是否找到用于服務(wù)器的信息進(jìn)行確定。在一些實(shí)施例中,信息在客戶端上被存儲(chǔ)為數(shù)據(jù)庫(kù)、列表、或其它數(shù)據(jù)結(jié)構(gòu),并且數(shù)據(jù)庫(kù)中服務(wù)器的域的存在表明服務(wù)器不支持第一安全協(xié)議(例如,支持搶跑的優(yōu)選的協(xié)議)。如果服務(wù)器的域沒有在數(shù)據(jù)庫(kù)中列出,或數(shù)據(jù)庫(kù)以別的方式指示服務(wù)器支持第一安全協(xié)議,則過程500進(jìn)到508并且客戶端嘗試使用第一安全協(xié)議建立與服務(wù)器的安全連接,如以上參照?qǐng)D4描述的。
[0042]如果在506,服務(wù)器的域在數(shù)據(jù)庫(kù)中列出,或數(shù)據(jù)庫(kù)以別的方式指示服務(wù)器不支持第一安全協(xié)議,則可以檢查與服務(wù)器的域相關(guān)聯(lián)的時(shí)間戳,以確定標(biāo)識(shí)該服務(wù)器的信息是否過期(例如,已期滿)。在一些實(shí)施例中,這個(gè)檢查可包括把時(shí)間戳的日期/時(shí)間與當(dāng)前的日期/時(shí)間相比較,并確定二者之間的差別(例如,自從信息被存儲(chǔ)以來消逝的時(shí)間)。如果時(shí)間差不大于預(yù)定的閾值(例如,30天),則可以確定:服務(wù)器信息沒有期滿,并且在512,可以作出嘗試來使用第二安全協(xié)議(例如,不支持搶跑的非優(yōu)選的安全協(xié)議)來建立安全連接。
[0043]然而,如果時(shí)間差大于預(yù)定的閾值,則可以確定:服務(wù)器的信息已期滿,或者以別的方式過期了。在這種情形下,在508,可以使用第一安全協(xié)議來進(jìn)行連接嘗試。這樣,與服務(wù)器域一起存儲(chǔ)的時(shí)間戳可以提供用于檢查從信息被存儲(chǔ)的時(shí)間以來服務(wù)器是否已被更新來支持第一協(xié)議(例如,搶跑)的手段。在一些實(shí)施例中,閾值可以是可配置的,用來對(duì)不能搶跑的服務(wù)器提供或多或少頻繁的檢查,以確定它們的能力是否已升級(jí)。
[0044]—些實(shí)施例支持在客戶端上周期地執(zhí)行的附加支持過程以檢查主機(jī)能力信息是否為最新。例如,這樣的過程可以分析主機(jī)的已存儲(chǔ)列表,并對(duì)于其信息過期的(例如,比起預(yù)定的時(shí)間段更陳舊的)每個(gè)主機(jī),從列表中移除該主機(jī),以便節(jié)省永久存儲(chǔ)器中的空間。而且,在一些實(shí)施例中,對(duì)于其在列表中的信息過期的每個(gè)主機(jī),這樣的過程可以嘗試與主機(jī)進(jìn)行TLS搶跑或SSL搶跑連接,并且或者從列表中移除主機(jī)(例如,如果連接是成功的),或者把主機(jī)留在列表中并把時(shí)間戳更新到當(dāng)前的日期/時(shí)間(例如,如果連接是不成功的)。
[0045]再者,一些實(shí)施例支持對(duì)于主機(jī)列表合并的優(yōu)化,其中高級(jí)別域信息優(yōu)先于較低級(jí)別域信息被存儲(chǔ)(例如,存儲(chǔ) abcdefg.com,而不是 www.abcdefg.com、mail, abcdefg.com等等)。而且,在一些實(shí)施例中,較低級(jí)別域信息可被存儲(chǔ)在數(shù)據(jù)庫(kù)中,直到當(dāng)列表包括了一定閾值數(shù)目的、共享高級(jí)別域的較低級(jí)別域(例如,WWW.abcdefg.com、mail, abcdefg.com、news, abcdefg.com等等)的時(shí)間。這時(shí),在列表中那些較低級(jí)別域可以用高級(jí)別域(例如,abcdefg.com等等)替換,以節(jié)省列表中的空間。在一些實(shí)施例中,上文討論的支持過程可以執(zhí)行這個(gè)合并過程。然而,在一些實(shí)施例中,可以實(shí)行單獨(dú)的過程來執(zhí)行該合并。
[0046]結(jié)論
雖然技術(shù)是以對(duì)于結(jié)構(gòu)特征和/或方法動(dòng)作特定的語(yǔ)言描述的,但應(yīng)當(dāng)理解的是,所附權(quán)利要求不一定必須限于所描述的具體的特征或動(dòng)作。而是,具體的特征和動(dòng)作是作為這樣的技術(shù)的示例性實(shí)現(xiàn)被公開的。
【權(quán)利要求】
1.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括: 嘗試通過使用第一安全協(xié)議在客戶端與服務(wù)器之間建立安全連接; 確定是否成功地通過使用第一安全協(xié)議建立安全連接; 根據(jù)確定沒有成功地使用第一安全協(xié)議建立安全連接,把標(biāo)識(shí)服務(wù)器為不支持第一安全協(xié)議的信息存儲(chǔ)在客戶端上;以及 嘗試通過使用第二安全協(xié)議在客戶端與服務(wù)器之間建立安全連接。
2.權(quán)利要求1的方法,其中第一安全協(xié)議是支持搶跑的安全套接層(SSL)或支持搶跑的傳輸層安全(TLS)協(xié)議,以及其中第二安全協(xié)議是不支持搶跑的SSL或不支持搶跑的TLS協(xié)議。
3.權(quán)利要求1的方法,其中信息被存儲(chǔ)在客戶端上的臨時(shí)存儲(chǔ)裝置中,以便對(duì)在同一個(gè)通信會(huì)話內(nèi)建立安全連接進(jìn)行優(yōu)化。
4.權(quán)利要求1的方法,其中信息被存儲(chǔ)在客戶端上的永久存儲(chǔ)裝置中,以便對(duì)跨不同通信會(huì)話建立安全連接進(jìn)行優(yōu)化。
5.權(quán)利要求1的方法,還包括: 在隨后嘗試在客戶端與服務(wù)器之間建立隨后的安全連接期間,訪問客戶端上的存儲(chǔ)的信息, 確定所存儲(chǔ)的信息指示該服務(wù)器不支持第一安全協(xié)議;以及 嘗試使用第二安全協(xié)議建立隨后的安全連接。
6.權(quán)利要求1的方法,還包括: 在隨后嘗試在客戶端與服務(wù)器之間建立隨后的安全連接期間,訪問客戶端上的存儲(chǔ)的信息; 確定所存儲(chǔ)的信息不包括用于服務(wù)器的信息或所存儲(chǔ)的信息包括用于服務(wù)器的期滿的信息;以及 嘗試使用第一安全協(xié)議建立隨后的安全連接。
7.一種或多種計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì),用來存儲(chǔ)指令,所述指令當(dāng)由至少一個(gè)處理器執(zhí)行時(shí)命令處理器執(zhí)行以下動(dòng)作,包括: 接收要在客戶端與服務(wù)器之間建立安全連接的指示; 訪問客戶端上的數(shù)據(jù)庫(kù),以確定數(shù)據(jù)庫(kù)是否包括服務(wù)器的標(biāo)識(shí); 根據(jù)確定客戶端上的數(shù)據(jù)庫(kù)包括尚未期滿的用于服務(wù)器的標(biāo)識(shí),嘗試使用非優(yōu)選的安全協(xié)議而不是優(yōu)選的安全協(xié)議來建立安全連接;以及 根據(jù)確定客戶端上的數(shù)據(jù)庫(kù)不包括用于服務(wù)器的標(biāo)識(shí)或客戶端上的數(shù)據(jù)庫(kù)包括期滿的用于服務(wù)器的標(biāo)識(shí),嘗試使用優(yōu)選的安全協(xié)議來建立安全連接。
8.一種客戶端設(shè)備,包括: 存儲(chǔ)器, 至少一個(gè)處理器;以及 被存儲(chǔ)在存儲(chǔ)器中且在至少一個(gè)處理器上執(zhí)行的組件,用來: 嘗試通過使用支持搶跑的第一安全協(xié)議在客戶端設(shè)備與服務(wù)器之間建立安全連接; 確定是否成功地通過使用第一安全協(xié)議建立安全連接; 根據(jù)確定沒有成功地使用第一安全協(xié)議建立安全連接,把標(biāo)識(shí)服務(wù)器為不支持搶跑的信息存儲(chǔ)在客戶端設(shè)備上;以及 重新嘗試通過使用不支持搶跑的第二安全協(xié)議在客戶端設(shè)備與服務(wù)器之間建立安全連接。
9.權(quán)利要求8的客戶端設(shè)備,其中標(biāo)識(shí)服務(wù)器為不支持搶跑的信息被存儲(chǔ)在客戶端設(shè)備的存儲(chǔ)器中的數(shù)據(jù)庫(kù)上。
10.權(quán)利要求8的客戶端設(shè)備,還包括硬驅(qū)動(dòng)機(jī),其中標(biāo)識(shí)服務(wù)器為不支持搶跑的信息被存儲(chǔ)在硬驅(qū)動(dòng)機(jī)的永久存儲(chǔ)裝置中。
【文檔編號(hào)】H04L29/06GK104137511SQ201380011709
【公開日】2014年11月5日 申請(qǐng)日期:2013年2月24日 優(yōu)先權(quán)日:2012年2月29日
【發(fā)明者】M.R.科克斯, I.D.帕肖夫, B.安德斯, J.A.西爾貝拉 申請(qǐng)人:微軟公司