不訪問私鑰而使用公鑰密碼的安全會(huì)話能力的制作方法
【專利摘要】服務(wù)器建立與客戶端設(shè)備的安全會(huì)話,其中當(dāng)建立安全會(huì)話時(shí)在握手中使用的私鑰被存儲(chǔ)在不同的服務(wù)器中。在握手過程期間,服務(wù)器接收已經(jīng)使用與域綁定的公鑰加密的預(yù)主密鑰,客戶端設(shè)備針對所述域正在嘗試建立與其的安全會(huì)話。服務(wù)器將加密后的預(yù)主密鑰發(fā)送給另一服務(wù)器以用于解密。服務(wù)器接收解密后的預(yù)主密鑰,并且繼續(xù)握手過程,包括從解密后的預(yù)主密鑰生成主密鑰,以及生成要在安全會(huì)話中被用于加密和解密客戶端設(shè)備和服務(wù)器之間的通信的一個(gè)或多個(gè)會(huì)話密鑰。
【專利說明】
不訪問私鑰而使用公鑰密碼的安全會(huì)話能力
技術(shù)領(lǐng)域
[0001]本發(fā)明的實(shí)施例涉及安全網(wǎng)絡(luò)通信的領(lǐng)域,并且更具體地,涉及在服務(wù)器不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下使用公鑰密碼建立安全會(huì)話(例如, 安全套接層(SSL),傳輸層安全(TLS))?!颈尘凹夹g(shù)】
[0002]安全套接層(SSL)和作為SSL的后續(xù)者的傳輸層安全(TLS)提供安全的網(wǎng)絡(luò)連接。 SSL和/或TLS通常在web (網(wǎng)絡(luò))瀏覽(例如,使用HTTPS)、郵件、以及其他因特網(wǎng)應(yīng)用期間被使用。SSL和TLS在若干請求評論(Request For Comment(RFC))中描述,包括RFC 2246(描述 TLS 1.0)、RFC 4346(描述TLS 1.1)、RFC 5246(描述TLS 1.2)、和RFC 6101(描述TLS 3.0)。
[0003]在稱為握手的過程中,SSL或TLS客戶端和服務(wù)器協(xié)商參數(shù)集合以建立安全會(huì)話。 例如,客戶端發(fā)送問候(hello)消息(稱為客戶端問候消息),該消息包括以下內(nèi)容:SSL或 TLS協(xié)議的請求版本的指示、用于標(biāo)識(shí)會(huì)話連接的請求會(huì)話標(biāo)識(shí)符、客戶端所支持的密碼組 (密碼選項(xiàng))的列表、客戶端所支持的壓縮方法的列表、被用于密碼用途的隨機(jī)數(shù)據(jù)(有時(shí)稱為客戶端問候.隨機(jī)),并且還可以指示客戶端是否支持?jǐn)U展和支持什么類型的擴(kuò)展(由協(xié)議定義)。
[0004]作為響應(yīng),服務(wù)器將問候消息(稱為服務(wù)器問候消息)發(fā)送給客戶端,該消息包括: 服務(wù)器所支持的SSL或TLS協(xié)議的版本、將用于標(biāo)識(shí)會(huì)話的會(huì)話標(biāo)識(shí)符、所選擇的密碼組(從包括在客戶端問候消息中的密碼組列表中選擇)、所選擇的壓縮方法(從包括在客戶端問候消息中的壓縮方法列表中選擇)、不同于包括在客戶端問候消息中的隨機(jī)數(shù)據(jù)的被用于密碼目的的隨機(jī)數(shù)據(jù)(有時(shí)稱為服務(wù)器問候.隨機(jī)),并且可以包括服務(wù)器支持的擴(kuò)展的列表。
[0005]在問候消息之后,服務(wù)器在稱為證書消息的消息中發(fā)送其(多個(gè))證書的列表(有時(shí)也稱為服務(wù)器證書消息)。服務(wù)器然后發(fā)送指示握手的問候消息階段完成的消息(稱為服務(wù)器問候完成消息)。對于一些實(shí)現(xiàn),依賴于所使用的密鑰交換方法(例如,使用Diffie-Hellman密碼組的實(shí)現(xiàn)),服務(wù)器還發(fā)送消息(稱為服務(wù)器密鑰交換消息)給客戶端,該消息傳達(dá)密碼信息以允許客戶端計(jì)算預(yù)主密鑰(premaster secret)。該消息使用服務(wù)器的私鑰來簽署(sign)。然后,客戶端發(fā)送消息給服務(wù)器(稱為客戶端密鑰交換消息),包括通常由客戶端生成的隨機(jī)值,其稱為預(yù)主密鑰或Diffie-Hellman參數(shù),其允許客戶端和服務(wù)器就相同的預(yù)主密鑰而意見一致。預(yù)主密鑰被客戶端和服務(wù)器二者用來生成共享的密鑰(稱為主密鑰),其被用于生成用來在安全會(huì)話期間加密和解密信息的會(huì)話密鑰。如果預(yù)主密鑰包括在客戶端密鑰交換消息中,其使用由服務(wù)器發(fā)送的證書中的公鑰來加密。經(jīng)由特例,如果 Rivest-Shamir-Adelman(RSA)算法被用于密鑰協(xié)定和認(rèn)證,則客戶端針對預(yù)主密鑰生成48 字節(jié)值,并且使用來自服務(wù)器的證書的公鑰進(jìn)行加密,并且將加密后的預(yù)主密鑰發(fā)送給服務(wù)器。經(jīng)由另一特例,如果使用Diffie-Hellman實(shí)現(xiàn),則客戶端密鑰交換消息包括客戶端的 Diffie-Hellman公共值。經(jīng)由另一特例,如果使用F0RTEZZA硬件加密系統(tǒng),則客戶端使用 F0RTEZZA密鑰交換算法(KEA)導(dǎo)出令牌加密密鑰(TEK),其自身使用來自服務(wù)器的證書的公鑰以及客戶端的私有參數(shù),生成用于預(yù)主密鑰的隨機(jī)的48字節(jié)值并使用TEK對其進(jìn)行加密, 并且將加密后的預(yù)主密鑰發(fā)送給服務(wù)器。
[0006]如果服務(wù)器在客戶端密鑰交換消息中接收到加密的預(yù)主密鑰,則其利用它們的私鑰對其進(jìn)行解密。在其中客戶端密鑰交換消息包括生成預(yù)主密鑰的密碼參數(shù)的實(shí)現(xiàn)中,月艮務(wù)器使用這些密碼參數(shù)生成預(yù)主密鑰(其同樣需要使用私鑰)。
[0007]客戶端和服務(wù)器各自使用客戶端問候和服務(wù)器問候消息中包括的隨機(jī)數(shù)據(jù)(例如,客戶端問候.隨機(jī)和服務(wù)器問候.隨機(jī))執(zhí)行一系列步驟以從預(yù)主密鑰生成主密鑰。主密鑰是用于生成會(huì)話密鑰的共享的密鑰,其是在安全會(huì)話期間用于加密和解密信息的對稱的密鑰。
[0008]客戶端然后發(fā)送消息給服務(wù)器,從而通知它未來的消息將被加密(稱為改變密碼說明(Change Cipher Spec)消息)。客戶端然后向服務(wù)器發(fā)送加密消息以用于驗(yàn)證(稱為完成消息)。服務(wù)器向客戶端發(fā)送未來的消息將被加密的消息(改變密碼說明消息)以及向客戶端發(fā)送加密的消息以用于驗(yàn)證(完成消息)。從此時(shí)起,握手完成,并且安全會(huì)話建立,而使得客戶端和服務(wù)器之間的未來的消息被加密?!靖綀D說明】
[0009]通過參考以下用來說明本發(fā)明的實(shí)施例的描述和附圖,本發(fā)明將被最佳地理解:
[0010]圖1圖示了根據(jù)一個(gè)實(shí)施例的用于在安全會(huì)話服務(wù)器不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下在客戶端設(shè)備和安全會(huì)話服務(wù)器之間使用公鑰密碼建立安全會(huì)話的示例性消息;
[0011]圖2是圖示了根據(jù)一個(gè)實(shí)施例的用于在安全會(huì)話服務(wù)器不具有對用于所請求的域的密鑰的訪問的情況下在客戶端設(shè)備和安全會(huì)話服務(wù)器之間建立利用公鑰密碼實(shí)現(xiàn)的安全會(huì)話的示例性操作的流程圖;
[0012]圖3是圖示了根據(jù)一個(gè)實(shí)施例的由密鑰服務(wù)器響應(yīng)于接收到來自安全會(huì)話服務(wù)器的加密的預(yù)主密鑰而執(zhí)行的示例性操作的流程圖;
[0013]圖4圖示了根據(jù)另一實(shí)施例的用于在安全會(huì)話服務(wù)器不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下在客戶端設(shè)備和安全會(huì)話服務(wù)器之間使用公鑰密碼建立安全會(huì)話的示例性消息;
[0014]圖5是圖示了根據(jù)另一實(shí)施例的用于在安全會(huì)話服務(wù)器不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下在客戶端設(shè)備和安全會(huì)話服務(wù)器之間建立利用公鑰密碼實(shí)現(xiàn)的安全會(huì)話的示例性操作的流程圖;
[0015]圖6是圖示了根據(jù)一個(gè)實(shí)施例的由密鑰服務(wù)器響應(yīng)于接收到來自安全會(huì)話服務(wù)器的簽署密碼參數(shù)的請求而執(zhí)行的示例性操作的流程圖;
[0016]圖7圖示了用于在安全會(huì)話服務(wù)器不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下在客戶端設(shè)備和安全會(huì)話服務(wù)器之間建立安全會(huì)話的另一實(shí)施例;
[0017]圖8是圖示了根據(jù)另一實(shí)施例的在安全會(huì)話服務(wù)器不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下在客戶端設(shè)備和安全會(huì)話服務(wù)器之間建立利用公鑰密碼實(shí)現(xiàn)的安全會(huì)話的示例性操作的流程圖;
[0018]圖9是圖示了根據(jù)一個(gè)實(shí)施例的由密鑰服務(wù)器所執(zhí)行的示例性操作的流程圖;以及
[0019]圖10是圖示了可以根據(jù)本發(fā)明的實(shí)施例而使用的示例性計(jì)算設(shè)備的框圖?!揪唧w實(shí)施方式】
[0020]在以下的描述中,將闡述眾多的具體細(xì)節(jié)。然而,要理解的是,本發(fā)明的實(shí)施例可以在不具有這些具體細(xì)節(jié)的情況下實(shí)施。在其他實(shí)例中,未示出公知的電路、結(jié)構(gòu)和技術(shù)以免使對本說明書的理解晦澀難懂。在所包括的描述的情況下,本領(lǐng)域普通技術(shù)人員將能夠?qū)崿F(xiàn)適當(dāng)?shù)墓δ芏鵁o需過度試驗(yàn)。
[0021]在本說明書中對“一個(gè)實(shí)施例”、“實(shí)施例”、“示例性實(shí)施例”等的引用指示所描述的實(shí)施例可以包括特定的特征、結(jié)構(gòu)、或特性,然而每個(gè)實(shí)施例可以不必包括所述特征、結(jié)構(gòu)、或特性。此外,這樣的短語不必涉及相同的實(shí)施例。進(jìn)一步,當(dāng)結(jié)合實(shí)施例來描述特定的特征、結(jié)構(gòu)、或特性時(shí),認(rèn)為不管是否明確地描述,結(jié)合其他實(shí)施例來實(shí)現(xiàn)這樣的特征、結(jié)構(gòu)、或特性在本領(lǐng)域技術(shù)人員的知識(shí)內(nèi)。
[0022]在以下的描述和權(quán)利要求中,可以使用術(shù)語“耦合”和“連接”連同它們的派生詞。 應(yīng)當(dāng)理解到,這些術(shù)語不意圖作為彼此的同義詞?!榜詈稀北挥脕碇甘緝蓚€(gè)或多個(gè)元件,它們可以或者可以不處于彼此直接物理或電接觸中、彼此協(xié)作或交互?!斑B接”被用來指示彼此耦合的兩個(gè)或多個(gè)器件之間的通信的建立。
[0023]描述了一種用于在安全會(huì)話服務(wù)器不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下使用公鑰密碼建立安全會(huì)話(例如,SSL或TLS)的方法和裝置。安全會(huì)話服務(wù)器是計(jì)算設(shè)備,其向和從客戶端設(shè)備發(fā)送和接收因特網(wǎng)業(yè)務(wù),并且在安全會(huì)話中是服務(wù)器。經(jīng)由在整個(gè)說明書中使用的特例,安全會(huì)話服務(wù)器可以接收和發(fā)送針對域https:// example, com的業(yè)務(wù)。該業(yè)務(wù)可以在安全會(huì)話服務(wù)器處被接收,作為客戶端設(shè)備的客戶端網(wǎng)絡(luò)應(yīng)用(例如,web瀏覽器)嘗試訪問https://example, com的結(jié)果。在一個(gè)實(shí)施例中,安全會(huì)話服務(wù)器可以充當(dāng)針對可以屬于一個(gè)或多個(gè)域所有者的多個(gè)域的服務(wù)器。
[0024]當(dāng)在客戶端設(shè)備和安全會(huì)話服務(wù)器之間建立安全會(huì)話時(shí),安全會(huì)話服務(wù)器不具有對在握手過程期間所使用的私鑰的本地(local)訪問。例如,對于一些密碼組,私鑰被用于解密預(yù)主密鑰,其已經(jīng)被客戶端設(shè)備利用對應(yīng)的公鑰進(jìn)行加密。作為另一示例,對于其他密碼組(例如,使用針對密鑰交換的Diffie-Hellman的密碼組),私鑰被用于簽署包含用于生成預(yù)主密鑰的密碼參數(shù)的消息。在本發(fā)明的實(shí)施例中,所需的私鑰從對于安全會(huì)話服務(wù)器遠(yuǎn)程的設(shè)備被存儲(chǔ)(或者可訪問),所述設(shè)備在此稱為“密鑰服務(wù)器”。當(dāng)在握手過程期間的某個(gè)點(diǎn)上需要私鑰的情況下,安全會(huì)話服務(wù)器請求密鑰服務(wù)器訪問和使用該私鑰。[〇〇25]例如,如果預(yù)主密鑰已經(jīng)由客戶端生成并且利用公鑰進(jìn)行加密,則安全會(huì)話服務(wù)器可以請求密鑰服務(wù)器使用對應(yīng)的私鑰來解密該預(yù)主密鑰。解密后的預(yù)主密鑰被客戶端設(shè)備和安全會(huì)話服務(wù)器二者用來創(chuàng)建共享的密鑰(稱為主密鑰),其在生成在安全會(huì)話期間用于加密和解密數(shù)據(jù)的會(huì)話密鑰時(shí)使用。在接收到加密的預(yù)主密鑰后(安全會(huì)話服務(wù)器不能解密其),安全會(huì)話服務(wù)器將該加密的預(yù)主密鑰發(fā)送到密鑰服務(wù)器,其具有對可以解密加密的預(yù)主密鑰的私鑰的訪問。密鑰服務(wù)器解密并發(fā)送預(yù)主密鑰到安全會(huì)話服務(wù)器。在接收到來自密鑰服務(wù)器的解密后的預(yù)主密鑰后,安全會(huì)話服務(wù)器生成主密鑰,并使用該主密鑰來生成在安全會(huì)話期間用來加密和解碼數(shù)據(jù)的會(huì)話密鑰。密鑰服務(wù)器可以通過安全會(huì)話或以其他加密形式向安全會(huì)話服務(wù)器發(fā)送解密后的預(yù)主密鑰。安全會(huì)話服務(wù)器和客戶端完成安全會(huì)話握手并建立安全會(huì)話。
[0026]作為另一示例,如果選擇的密碼組是需要在生成要利用私鑰來簽署的預(yù)主密鑰時(shí)使用的密碼參數(shù)的Diffie-Hellman密碼組,則安全會(huì)話服務(wù)器請求密鑰服務(wù)器利用私鑰來簽署密碼參數(shù)。
[0027]圖1圖示了根據(jù)一個(gè)實(shí)施例的用于在安全會(huì)話服務(wù)器120不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下在客戶端設(shè)備110和安全會(huì)話服務(wù)器120之間使用公鑰密碼建立安全會(huì)話的示例性消息??蛻舳嗽O(shè)備110是計(jì)算設(shè)備(例如,桌上計(jì)算機(jī)、膝上計(jì)算機(jī)、智能電話、移動(dòng)電話、平板、游戲系統(tǒng)、機(jī)頂盒、服務(wù)器等),其包括能夠訪問網(wǎng)絡(luò)資源并能夠在安全會(huì)話中充當(dāng)客戶端的客戶端網(wǎng)絡(luò)應(yīng)用115(例如,web瀏覽器或其他應(yīng)用)。應(yīng)理解的是,在此術(shù)語“客戶端設(shè)備”的使用不需要該設(shè)備是最終用戶客戶端設(shè)備。更確切地, 在此使用術(shù)語“客戶端設(shè)備”來指代在安全會(huì)話(例如,SSL和/或TLS)的客戶-服務(wù)器關(guān)系中操作為客戶端的計(jì)算設(shè)備。
[0028]安全會(huì)話服務(wù)器120是計(jì)算設(shè)備,其包括用于建立和維持與客戶端設(shè)備(以及潛在地,密鑰服務(wù)器130)的安全會(huì)話的安全會(huì)話模塊140。安全會(huì)話服務(wù)器120還包括一個(gè)或多個(gè)證書145。例如,(多個(gè))證書145包括與example.com綁定的證書。與example.com綁定的證書包括公鑰。安全會(huì)話服務(wù)器120不存儲(chǔ)與用于example.com的公鑰對應(yīng)的私鑰。密鑰服務(wù)器130是計(jì)算設(shè)備,其包括(多個(gè))私鑰150。例如,(多個(gè))私鑰150包括與存儲(chǔ)在安全會(huì)話服務(wù)器120中的用于example.com的證書中包括的公鑰對應(yīng)的私鑰。安全會(huì)話服務(wù)器120的安全會(huì)話模塊150被配置為當(dāng)在握手過程期間需要私鑰(例如,私鑰150)時(shí),向密鑰服務(wù)器130 發(fā)送請求以訪問和使用該私鑰。[〇〇29]在操作1.1處,客戶端設(shè)備110發(fā)送客戶端問候消息給安全會(huì)話服務(wù)器120。該客戶端問候消息開始安全會(huì)話握手??蛻舳嗽O(shè)備110可以向安全會(huì)話服務(wù)器120發(fā)送該客戶端問候消息作為客戶端網(wǎng)絡(luò)應(yīng)用11 5嘗試訪問以HTTPS開始的網(wǎng)站(例如,https:// example, com)的結(jié)果。在一個(gè)實(shí)施例中,客戶端問候消息被發(fā)送給安全會(huì)話服務(wù)器120,作為針對域的域名系統(tǒng)(DNS)請求的結(jié)果,其中客戶端設(shè)備110嘗試連接以解析安全會(huì)話服務(wù)器120的IP地址??蛻舳藛柡蛳⒖梢园ㄒ韵聝?nèi)容:請求的SSL或TLS協(xié)議版本的指示、用于標(biāo)識(shí)會(huì)話連接的請求的會(huì)話標(biāo)識(shí)符、客戶端設(shè)備110所支持的密碼組的列表、客戶端設(shè)備 110所支持的壓縮方法的列表、用于密碼目的的隨機(jī)數(shù)據(jù)(客戶端問候.隨機(jī)),并且還可以指示客戶端是否支持由協(xié)議定義的擴(kuò)展和客戶端支持由協(xié)議定義的什么類型的擴(kuò)展。在此描述的實(shí)施例中可以使用許多密碼組(例如,TLS_RSA_WI TH_RC4_128_SHA,TLS_RSA_WI TH_ RC4_128_MD5,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_DES_CBC_SHA,TLS_ECDHE_ RSA_WITH_RC4_128_SHA;TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA;TLS_ECDHE_RSA_WITH_ AES_128_CBC_SHA;TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA;等)。
[0030]響應(yīng)于客戶端問候消息,在操作1.2處,安全會(huì)話服務(wù)器120向客戶端設(shè)備110發(fā)送服務(wù)器問候消息。服務(wù)器問候消息可以包括安全會(huì)話服務(wù)器120所支持的SSL或TLS協(xié)議的版本、將用于標(biāo)識(shí)會(huì)話的會(huì)話標(biāo)識(shí)符、所選擇的密碼組(從客戶端問候消息中包括的密碼組的列表中選擇)、不同于客戶端問候消息中所包括的隨機(jī)數(shù)據(jù)的用于密碼目的的隨機(jī)數(shù)據(jù) (有時(shí)稱為服務(wù)器問候.隨機(jī)),并且還可以包括服務(wù)器所支持的擴(kuò)展的列表。
[0031] 在操作1.3處,安全會(huì)話服務(wù)器120還向客戶端設(shè)備110發(fā)送證書消息(服務(wù)器證書)。證書消息包括用于請求域的數(shù)字證書。例如,如果請求域是e xamp 1 e.c om,則證書消息包括綁定到example.com的數(shù)字證書。除其他之外,數(shù)字證書還包括公鑰。在操作1.4處,安全會(huì)話服務(wù)器120向客戶端設(shè)備110發(fā)送服務(wù)器問候完成消息,其指示握手的問候消息階段完成。[〇〇32]在操作1.5處,客戶端110發(fā)送客戶端密鑰交換消息給安全會(huì)話服務(wù)器120??蛻舳嗣荑€交換消息包括稱為預(yù)主密鑰的隨機(jī)值,該預(yù)主密鑰已經(jīng)使用在操作1.3的證書消息中包括的公鑰進(jìn)行加密。經(jīng)由特例,如果RSA算法被用于密鑰協(xié)定和認(rèn)證,則客戶端設(shè)備110生成用于預(yù)主密鑰的48字節(jié)值,并且使用來自服務(wù)器的證書的公鑰對其進(jìn)行加密,并向安全會(huì)話服務(wù)器120發(fā)送加密后的預(yù)主密鑰。如將在以下所描述的,解密后的預(yù)主密鑰被用于生成客戶端設(shè)備110和安全會(huì)話服務(wù)器120之間的共享密鑰(稱為主密鑰),其然后在生成用于加密和解密在安全會(huì)話期間發(fā)送的數(shù)據(jù)的加密和解密密鑰時(shí)被使用。應(yīng)理解的是,如果加密的預(yù)主密鑰無法被解密,則握手將失敗,并且安全會(huì)話將不建立。
[0033]安全會(huì)話服務(wù)器120不具有用于解密預(yù)主密鑰的私鑰。然而,私鑰存儲(chǔ)在密鑰服務(wù)器130中(作為(多個(gè))私鑰150之一)。雖然圖1圖示了密鑰服務(wù)器130存儲(chǔ)私鑰,但是在其他的實(shí)施例中,密鑰服務(wù)器130可以訪問私鑰,但那些私鑰存儲(chǔ)在不同的設(shè)備上。在操作1.6 處,安全會(huì)話服務(wù)器120發(fā)送加密的預(yù)主密鑰給密鑰服務(wù)器130。密鑰服務(wù)器130使用針對請求的域的私鑰對加密后的預(yù)主密鑰進(jìn)行解密。在操作1.7處,密鑰服務(wù)器130然后向安全會(huì)話服務(wù)器120發(fā)送解密后的預(yù)主密鑰。在一個(gè)實(shí)施例中,操作1.6和1.7的消息通過安全連接 155發(fā)送(例如,使用SSL或TLS加密,或其他機(jī)制)和/或加密的預(yù)主密鑰和解密的預(yù)主密鑰以其他方式被加密。
[0034]在一個(gè)實(shí)施例中,密鑰服務(wù)器130存儲(chǔ)用于多個(gè)域和/或區(qū)的私鑰或者具有對其的訪問,該多個(gè)域和/或區(qū)可以由不同的實(shí)體所擁有或控制。例如,密鑰服務(wù)器130可以存儲(chǔ)用于example.com和example2.com的私鑰或者具有對其的訪問。在這樣的實(shí)施例中,與發(fā)送加密的預(yù)主密鑰給密鑰服務(wù)器130結(jié)合,安全會(huì)話服務(wù)器120指示客戶端設(shè)備110在其中正在請求連接的域或區(qū)。例如,如果客戶端設(shè)備110正在請求與example, com的安全會(huì)話,則安全會(huì)話服務(wù)器120向密鑰服務(wù)器130指示example.com是請求的域。客戶端設(shè)備110可以使用客戶端問候消息中的服務(wù)器名稱指示(S N T)擴(kuò)展來指定目的地域。S NI在2 0 0 3年6月的R F C 3546中描述。如果未由客戶端設(shè)備110指定目的地(例如,客戶端設(shè)備110不支持SNI),則安全會(huì)話服務(wù)器120將從客戶端設(shè)備110發(fā)送的客戶端-問候消息的目的地IP地址與對應(yīng)的主機(jī)名進(jìn)行匹配(例如,安全會(huì)話服務(wù)器120可以包括IP地址和主機(jī)名之間的映射)。安全會(huì)話服務(wù)器120可以采用許多不同的方式將域或區(qū)名的指示發(fā)送給密鑰服務(wù)器130,包括以報(bào)頭 (header)、定制二進(jìn)制結(jié)構(gòu)、或序列化格式(例如,protobuf、JavaScript對象表示法(JS0N) 等)。在接收到客戶端在其中嘗試連接的域或區(qū)名的指示后,密鑰服務(wù)器130訪問對應(yīng)的私鑰并解密加密后的預(yù)主密鑰。
[0035]安全會(huì)話服務(wù)器120使用解密后的預(yù)主密鑰來計(jì)算主密鑰。客戶端設(shè)備110和安全會(huì)話服務(wù)器120使用相同的算法和數(shù)據(jù)來計(jì)算相同的主密鑰。例如,使用取得預(yù)主密鑰、客戶端問候.隨機(jī)值、和服務(wù)器問候.隨機(jī)值作為輸入的偽隨機(jī)函數(shù)來計(jì)算主密鑰。
[0036]主密鑰被客戶端設(shè)備110和安全會(huì)話服務(wù)器120用來生成會(huì)話密鑰,該會(huì)話密鑰用于在安全會(huì)話期間加密和解密信息。經(jīng)由特例,主密鑰用于生成客戶端寫消息認(rèn)證碼(MAC) 密鑰、服務(wù)器寫MAC密鑰、客戶端寫加密密鑰、和服務(wù)器寫加密密鑰??蛻舳藢懗跏蓟蛄?(IV)和服務(wù)器寫IV也可以依賴于所使用的密碼來生成。
[0037]在操作1.8處,客戶端設(shè)備110向安全會(huì)話服務(wù)器120發(fā)送改變密碼說明消息。來自客戶端設(shè)備110的改變密碼說明消息指示未來的由客戶端設(shè)備110發(fā)送的消息將被加密。在操作1.9處,客戶端設(shè)備110向安全會(huì)話服務(wù)器120發(fā)送完成消息。使用生成的會(huì)話密鑰對完成消息進(jìn)行加密。例如,完成消息包括先前在握手中發(fā)送和接收的所有消息的加密后的散列。
[0038]在操作1.10處,安全會(huì)話服務(wù)器120發(fā)送改變密碼說明消息給客戶端設(shè)備110,其指示未來的由安全會(huì)話服務(wù)器120發(fā)送的消息將被加密。在操作1.11處,安全會(huì)話服務(wù)器 120發(fā)送完成消息給客戶端設(shè)備110。完成消息包括先前在握手中發(fā)送和接收的所有消息的加密后的散列。
[0039]在操作1.11的完成消息之后,握手完成,并且安全會(huì)話160被視為建立。在操作 1.12處,客戶端設(shè)備110和安全會(huì)話服務(wù)器120間的安全會(huì)話的未來消息將通過安全會(huì)話 160加密,其承載連接的應(yīng)用數(shù)據(jù)。
[0040]如上所述,安全會(huì)話服務(wù)器120和密鑰服務(wù)器130之間的連接可以是安全連接以用于安全地發(fā)送解密后的預(yù)主密鑰以及可選地安全發(fā)送加密后的預(yù)主密鑰。如上所述,安全會(huì)話(例如,SSL或TLS)可以在安全會(huì)話服務(wù)器120和密鑰服務(wù)器130之間建立。作為建立安全會(huì)話的一部分,密鑰服務(wù)器130可以從安全會(huì)話服務(wù)器120請求客戶端證書,并且安全會(huì)話服務(wù)器120可以發(fā)送包括其證書的客戶端證書消息給密鑰服務(wù)器130??蛻舳俗C書消息中的數(shù)據(jù)被密鑰服務(wù)器130用來對安全會(huì)話服務(wù)器120的身份進(jìn)行認(rèn)證。
[0041]在一些實(shí)施例中,密鑰服務(wù)器130可以使用IP地址分塊以接受來自僅某些IP地址的連接(例如來自安全會(huì)話服務(wù)器120)。例如,密鑰服務(wù)器130可以具有被允許連接到密鑰服務(wù)器130的(多個(gè))IP地址和/或(多個(gè))IP地址范圍的白名單,或者具有不被允許連接到密鑰服務(wù)器130的(多個(gè))IP地址和/或(多個(gè))IP地址范圍的黑名單。IP地址分塊還可以在安全會(huì)話服務(wù)器120和密鑰服務(wù)器130之間的一個(gè)或多個(gè)中間網(wǎng)絡(luò)設(shè)備處被使用。[〇〇42]雖然已經(jīng)描述了由安全會(huì)話服務(wù)器120發(fā)起的安全會(huì)話服務(wù)器120和密鑰服務(wù)器 130之間的安全會(huì)話,但是在其他實(shí)施例中,安全會(huì)話可以由密鑰服務(wù)器130發(fā)起。
[0043]所描述的安全技術(shù)的結(jié)合可以用于為解密的預(yù)主密鑰提供安全。例如,請求客戶端證書和IP地址分塊的結(jié)合可以用于為安全會(huì)話服務(wù)器120和密鑰服務(wù)器130之間的連接提供安全。
[0044]在一個(gè)實(shí)施例中,安全會(huì)話服務(wù)器120和密鑰服務(wù)器130之間的安全連接155可以是虛擬私人網(wǎng)絡(luò)(VPN)連接,其在防火墻環(huán)境中可以是合期望的。
[0045]圖2是圖示了根據(jù)一個(gè)實(shí)施例的用于在安全會(huì)話服務(wù)器不具有對用于所請求的域的密鑰的訪問的情況下在客戶端設(shè)備和安全會(huì)話服務(wù)器之間建立利用公鑰密碼實(shí)現(xiàn)的安全會(huì)話的示例性操作的流程圖。私鑰遠(yuǎn)離安全會(huì)話服務(wù)器而存儲(chǔ)(例如,在密鑰服務(wù)器上)。
[0046]在操作210處,安全會(huì)話服務(wù)器接收來自客戶端設(shè)備的消息,其發(fā)起建立與客戶端設(shè)備的安全會(huì)話的過程。例如,安全會(huì)話服務(wù)器可以接收來自客戶端設(shè)備的客戶端問候消息(例如,SSL或TLS客戶端問候消息)。依賴于客戶端設(shè)備的協(xié)議和能力,該消息可以指示客戶端設(shè)備想要在其中建立安全會(huì)話的目的地主機(jī)名(例如,客戶端問候消息可以包括服務(wù)器名稱指示(SNI)擴(kuò)展并且指定目的地主機(jī)名)。
[0047]響應(yīng)于在操作210中接收到消息,安全會(huì)話服務(wù)器可以執(zhí)行許多操作,包括在操作 215處發(fā)送數(shù)字證書給客戶端設(shè)備。數(shù)字證書包括用于請求域的公鑰。應(yīng)理解,對應(yīng)于公鑰的私鑰未存儲(chǔ)在安全會(huì)話服務(wù)器上(例如,其遠(yuǎn)程地存儲(chǔ)在密鑰服務(wù)器上)。數(shù)字證書可以在SSL或TLS證書消息中發(fā)送。在發(fā)送數(shù)字證書之前,安全會(huì)話服務(wù)器可以執(zhí)行許多其他操作,包括發(fā)送服務(wù)器問候消息給客戶端設(shè)備。如果操作210中的消息指示目的地域,則安全會(huì)話服務(wù)器發(fā)送綁定到該目的地域的數(shù)字證書。如果操作210中的消息未指示目的地主機(jī)名,則安全會(huì)話服務(wù)器發(fā)送與操作210中的消息的目的地IP地址相關(guān)聯(lián)并綁定到請求域的數(shù)字證書。流程從操作215移到操作220。[〇〇48]在操作220處,安全會(huì)話服務(wù)器從客戶端設(shè)備接收已經(jīng)使用操作215中發(fā)送的數(shù)字證書中的公鑰進(jìn)行加密的預(yù)主密鑰。加密的預(yù)主密鑰可以由客戶端設(shè)備在SSL或TLS客戶端密鑰交換消息中發(fā)送。流程從操作220移到操作225。
[0049]安全會(huì)話服務(wù)器不具有與加密預(yù)主密鑰的公鑰對應(yīng)的私鑰。作為結(jié)果,安全會(huì)話服務(wù)器不能解密加密后的預(yù)主密鑰以獲得預(yù)主密鑰。在操作225處,安全會(huì)話服務(wù)器發(fā)送加密后的預(yù)主密鑰給密鑰服務(wù)器,其具有可以解密加密后的預(yù)主密鑰的私鑰。在一個(gè)實(shí)施例中,密鑰服務(wù)器與安全會(huì)話服務(wù)器遠(yuǎn)程地定位。此外,在一些實(shí)施例中,安全會(huì)話服務(wù)器和密鑰服務(wù)器可以由不同的實(shí)體所擁有和/或操作。例如,當(dāng)密鑰服務(wù)器在請求域的所有者的物理控制之下時(shí),安全會(huì)話服務(wù)器可能不在由請求域的所有者的物理控制之下。在一個(gè)實(shí)施例中,加密的預(yù)主密鑰通過安全連接(例如,使用SSL或TLS加密的)發(fā)送給密鑰服務(wù)器和/ 或以其他方式加密。流程從操作225移到操作230。
[0050]響應(yīng)于接收到加密的預(yù)主密鑰,密鑰服務(wù)器解密該加密的預(yù)主密鑰并獲得預(yù)主密鑰。圖3是圖示了根據(jù)一個(gè)實(shí)施例的由密鑰服務(wù)器響應(yīng)于接收到來自安全會(huì)話服務(wù)器的加密的預(yù)主密鑰而執(zhí)行的示例性操作的流程圖。在操作310處,密鑰服務(wù)器接收來自安全會(huì)話服務(wù)器的加密的預(yù)主密鑰。例如,密鑰服務(wù)器接收由安全會(huì)話服務(wù)器在圖2中操作225中發(fā)送的加密的預(yù)主密鑰。
[0051]流程然后移到操作315,其中密鑰服務(wù)器訪問與用來加密預(yù)主密鑰的公鑰對應(yīng)的私鑰。密鑰服務(wù)器可以從安全會(huì)話服務(wù)器接收客戶端設(shè)備在其中嘗試建立針對的安全會(huì)話的域或區(qū)名的指示。該指示可以采用許多不同的方式發(fā)送,包括以報(bào)頭、定制二進(jìn)制結(jié)構(gòu)、 或序列化格式(例如,protobuf,JavaScript對象表示法(JS0N)等)。密鑰服務(wù)器使用該指示來訪問對應(yīng)于加密預(yù)主密鑰的公鑰的私鑰。
[0052]流程然后移到操作320,其中密鑰服務(wù)器使用訪問的私鑰解密加密后的預(yù)主密鑰。 流程然后移到操作325,其中密鑰服務(wù)器發(fā)送解密的預(yù)主密鑰給安全會(huì)話服務(wù)器。[〇〇53]如上所述,密鑰服務(wù)器可以通過安全會(huì)話向安全會(huì)話發(fā)送解密的預(yù)主密鑰。作為建立密鑰服務(wù)器和安全會(huì)話服務(wù)器之間的安全會(huì)話的一部分,密鑰服務(wù)器可以從安全會(huì)話服務(wù)器請求客戶端證書,以便認(rèn)證安全會(huì)話服務(wù)器的身份。在一些實(shí)施例中,密鑰服務(wù)器可以使用基于IP地址的分塊來驗(yàn)證密鑰服務(wù)器正在與合法的安全會(huì)話服務(wù)器通信(例如,通過驗(yàn)證安全會(huì)話服務(wù)器正在與具有由密鑰服務(wù)器所預(yù)期的值的IP地址通信)。在一些實(shí)施例中,密鑰服務(wù)器和安全會(huì)話服務(wù)器之間的連接是VPN連接。在一些實(shí)施例中,這些安全技術(shù)的任何組合都可以用于使解密的預(yù)主密鑰的發(fā)送安全。
[0054]回到參考圖2,在操作230處,安全會(huì)話服務(wù)器接收來自密鑰服務(wù)器的解密的預(yù)主密鑰。在一個(gè)實(shí)施例中,解密的預(yù)主密鑰通過安全連接(例如,使用SSL或TLS加密的)發(fā)送給密鑰服務(wù)器和/或以其他方式加密,使得安全會(huì)話服務(wù)器能夠解密消息。流程從操作230移到操作235。
[0055]在獲得來自密鑰服務(wù)器的解密的預(yù)主密鑰后,安全會(huì)話服務(wù)器可以繼續(xù)與客戶端設(shè)備的安全會(huì)話握手,并建立安全會(huì)話。例如,在操作235處,安全會(huì)話服務(wù)器使用解密的預(yù)主密鑰來生成主密鑰。客戶端設(shè)備也生成相同的主密鑰。[〇〇56]流程然后移到操作240,其中安全會(huì)話服務(wù)器生成要在加密和解密信息時(shí)在安全會(huì)話中使用的會(huì)話密鑰集合。經(jīng)由特例,主密鑰被用于生成客戶端寫消息認(rèn)證碼(MAC)密鑰、服務(wù)器寫MAC密鑰、客戶端寫加密密鑰、和服務(wù)器寫加密密鑰??蛻舳藢懗跏蓟蛄?IV) 和服務(wù)器寫IV也可以依賴于所使用的密鑰而生成。[〇〇57]流程從操作240移到操作245,其中安全會(huì)話服務(wù)器完成與客戶端設(shè)備的握手,并建立與客戶端設(shè)備的安全會(huì)話。例如,客戶端設(shè)備和安全會(huì)話服務(wù)器均可以發(fā)送改變密碼說明消息和完成消息,如本文之前所描述的。當(dāng)安全會(huì)話在操作中時(shí),客戶端設(shè)備和安全會(huì)話服務(wù)器可以安全地交換數(shù)據(jù)。[〇〇58]圖4圖示了根據(jù)一個(gè)實(shí)施例的用于在安全會(huì)話服務(wù)器420不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下在客戶端設(shè)備410和安全會(huì)話服務(wù)器420之間使用公鑰密碼建立安全會(huì)話的示例性消息。圖4中所描述的實(shí)施例描述了用于建立安全會(huì)話的消息,其中所選擇的密碼組需要使用服務(wù)器密鑰交換消息(例如,使用Diffie-Hellman密碼組)??蛻舳嗽O(shè)備410(包括客戶端網(wǎng)絡(luò)應(yīng)用415)與圖1的客戶端設(shè)備110類似。包括安全會(huì)話模塊440和(多個(gè))證書445的安全會(huì)話服務(wù)器420類似于安全會(huì)話服務(wù)器120(包括安全會(huì)話模塊140和(多個(gè))證書145),但是執(zhí)行不同的操作,如將在以下描述的。密鑰服務(wù)器430類似于圖1的密鑰服務(wù)器130,但是執(zhí)行不同的操作,如將在以下描述的。[〇〇59]在操作4.1處,客戶端設(shè)備410發(fā)送客戶端問候消息給安全會(huì)話服務(wù)器420。該客戶端問候消息類似于圖1的操作1.1中的客戶端問候消息。響應(yīng)于客戶端問候消息,在操作4.2 處安全會(huì)話服務(wù)器420發(fā)送服務(wù)器問候消息給客戶端設(shè)備410。該服務(wù)器問候消息類似于圖 1的操作1.2中的服務(wù)器問候消息。在操作4.3處,安全會(huì)話服務(wù)器420還發(fā)送證書消息給客戶端設(shè)備410(服務(wù)器證書)。該證書消息類似于圖1的操作1.3中描述的證書消息。
[0060] 雖然圖4中未圖示,但是安全會(huì)話服務(wù)器420已經(jīng)選擇具有密鑰交換的密碼組,在其中,在操作4.3中發(fā)送的認(rèn)證消息不包括足夠數(shù)據(jù)以允許客戶端設(shè)備410生成預(yù)主密鑰。 例如,所選擇的密碼組可以使用Diffie-Hellman作為密鑰交換機(jī)制(例如,DHE_RSA、DHE_ DSS)。因此,安全會(huì)話服務(wù)器420將發(fā)送消息給客戶端設(shè)備410,該消息傳達(dá)密碼信息以允許客戶端設(shè)備410和安全會(huì)話服務(wù)器420均生成相同的預(yù)主密鑰。經(jīng)由特例,在密鑰交換機(jī)制是Diffie-Hellman的情況下,密碼信息包括密碼參數(shù)集合,其包括以下內(nèi)容:用于Diffie-Hellman 操作的素?cái)?shù)模(prime modulus) (p) 、 用于 Diffie-Hellman 操作的生成器(g) 、 以及服務(wù)器的Diffie-Hellman公共值(g~X mod p,其中X是服務(wù)器的Diffie-Hellman私有值)。 傳達(dá)密碼信息的消息可以稱為服務(wù)器密鑰交換消息。服務(wù)器密鑰交換消息可能需要利用私鑰450來簽署,該私鑰對應(yīng)于在操作4.3中發(fā)送的證書消息中發(fā)送的服務(wù)器的公鑰(例如,如果密鑰交換機(jī)制是DHE_RSA或DHE_DSS的話)。如關(guān)于在圖1中討論的實(shí)施例類似描述的,安全會(huì)話服務(wù)器420不具有對該密鑰450的本地訪問。作為結(jié)果,安全會(huì)話服務(wù)器420不能利用私鑰450來簽署服務(wù)器密鑰交換消息。
[0061]因?yàn)榘踩珪?huì)話服務(wù)器420不具有對私鑰450的本地訪問,所以在操作4.4處,安全會(huì)話服務(wù)器420發(fā)送請求給密鑰服務(wù)器430,以利用私鑰450來簽署服務(wù)器密鑰交換消息的密碼參數(shù)。[〇〇62] 在一個(gè)實(shí)施例中,安全會(huì)話服務(wù)器420生成這些密碼參數(shù)(并選擇Diffie-Hellman 操作中使用的服務(wù)器的私有值),并將這些密碼參數(shù)和任何其他所需信息(例如,客戶端問候.隨機(jī)和服務(wù)器問候.隨機(jī)值)發(fā)送給密鑰服務(wù)器430,以使用私鑰450來簽署。在該實(shí)施例中,如果密鑰交換機(jī)制是DHE_RSA,則私鑰450通常是RSA密鑰,或者如果密鑰交換機(jī)制是 DHE_DSS,則私鑰450是數(shù)字簽名算法(DSA)。
[0063]在操作4.5處,密鑰服務(wù)器430將簽署的服務(wù)器密鑰交換參數(shù)的結(jié)果發(fā)送給安全會(huì)話服務(wù)器420。在一個(gè)實(shí)施例中,操作4.4和4.5的消息通過安全連接455(例如,使用SSL或 TLS或其他機(jī)制加密)發(fā)送和/或以其他方式加密。[〇〇64]在操作4.6處,安全會(huì)話服務(wù)器420將服務(wù)器密鑰交換消息發(fā)送給客戶端設(shè)備410, 其包括簽署的密碼參數(shù)。在操作4.7處,安全會(huì)話服務(wù)器420還將服務(wù)器問候完成消息發(fā)送給客戶端設(shè)備410,該消息指示握手的問候消息階段完成。[〇〇65]客戶端設(shè)備410使用對應(yīng)的公鑰(例如,操作4.3中發(fā)送的證書消息中接收的公鑰) 對服務(wù)器密鑰交換消息中的信息進(jìn)行認(rèn)證。假設(shè)信息被認(rèn)證,則客戶端設(shè)備410使用該信息生成預(yù)主密鑰。在操作4.8處,客戶端發(fā)送客戶端密鑰交換消息。
[0066]不像圖1的客戶端密鑰交換消息,操作4.8中發(fā)送的該客戶端密鑰交換消息不包括預(yù)主密鑰。更確切地,該客戶端密鑰交換消息包括對于服務(wù)器(安全會(huì)話服務(wù)器420)生成相同的預(yù)主密鑰所必需的信息(例如,其包括客戶端的Diffie-Hellman公共值)。例如,在其中安全會(huì)話服務(wù)器420生成Diffie-Hellman密碼參數(shù)的實(shí)施例中,安全會(huì)話服務(wù)器420使用 (在客戶端密鑰交換消息中接收的)客戶端的Diffie-Hellman公共值和其Diffie-Hellman 私有值來生成預(yù)主密鑰。[〇〇67]安全會(huì)話服務(wù)器420使用預(yù)主密鑰計(jì)算主密鑰??蛻舳嗽O(shè)備410和安全會(huì)話服務(wù)器 420使用相同的算法和數(shù)據(jù)計(jì)算相同的主密鑰。例如,主密鑰使用取得預(yù)主密鑰、客戶端問候.隨機(jī)值和服務(wù)器問候.隨機(jī)值作為輸入的偽隨機(jī)函數(shù)來計(jì)算。主密鑰被客戶端設(shè)備410 和安全會(huì)話服務(wù)器420用來生成在安全會(huì)話期間用于加密和解密信息的會(huì)話密鑰。經(jīng)由特例,主密鑰用于生成客戶端寫消息認(rèn)證碼(MAC)密鑰、服務(wù)器寫MAC密鑰、客戶端寫加密密鑰、和服務(wù)器寫加密密鑰。客戶端寫初始化向量(IV)和服務(wù)器寫IV也可以依賴于所使用的密碼而生成。[〇〇68]在操作4.9處,客戶端設(shè)備410將改變密碼說明消息發(fā)送給安全會(huì)話服務(wù)器420。來自客戶端設(shè)備410的改變密碼說明消息指示由客戶端設(shè)備410發(fā)送的未來的消息將被加密。 在操作4.10處,客戶端設(shè)備410向安全會(huì)話服務(wù)器420發(fā)送完成消息。使用生成的會(huì)話密鑰對完成消息進(jìn)行加密。例如,完成消息包括先前在握手中發(fā)送和接收的所有消息的加密的散列。[〇〇69]在操作4.11處,安全會(huì)話服務(wù)器420向客戶端設(shè)備410發(fā)送改變密碼說明消息,其指示由安全會(huì)話服務(wù)器420發(fā)送的未來消息將被加密。在操作4.12處,安全會(huì)話服務(wù)器420 發(fā)送完成消息給客戶端設(shè)備410。完成消息可以包括先前在握手中發(fā)送和接收的所有消息的加密的散列。[0〇7〇]在操作4.12的完成消息之后,握手完成,并且安全會(huì)話460被視為建立。在操作 4.13處,客戶端設(shè)備110和安全會(huì)話服務(wù)器120間的會(huì)話期間的未來消息通過安全會(huì)話160 進(jìn)行加密,其承載連接的應(yīng)用數(shù)據(jù)。
[0071]圖5是圖示了根據(jù)一個(gè)實(shí)施例的用于在安全會(huì)話服務(wù)器不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下在客戶端設(shè)備和安全會(huì)話服務(wù)器之間建立利用公鑰密碼實(shí)現(xiàn)的安全會(huì)話的示例性操作的流程圖。
[0072]在操作510處,安全會(huì)話服務(wù)器接收來自客戶端設(shè)備的消息,其發(fā)起建立與客戶端設(shè)備的安全會(huì)話的過程。例如,安全會(huì)話服務(wù)器從客戶端設(shè)備接收客戶端問候消息(例如, SSL或TLS客戶端問候消息)。依賴于客戶端設(shè)備的協(xié)議和能力,該消息可以指示客戶端設(shè)備想要在其中建立安全會(huì)話的目的地主機(jī)名(例如,客戶端問候消息可以包括服務(wù)器名稱指示(SNI)擴(kuò)展并且指定目的地主機(jī)名)。
[0073]響應(yīng)于在操作510中接收到消息,安全會(huì)話服務(wù)器可以執(zhí)行許多操作,包括在操作 515處向客戶端設(shè)備發(fā)送數(shù)字證書。數(shù)字證書包括用于請求域的公鑰。應(yīng)理解,與該公鑰對應(yīng)的私鑰未存儲(chǔ)在安全會(huì)話服務(wù)器中(例如,其遠(yuǎn)程地存儲(chǔ)在密鑰服務(wù)器上)。數(shù)字證書可以在SSL或TLS證書消息中發(fā)送。在發(fā)送數(shù)字證書之前,安全會(huì)話服務(wù)器可以執(zhí)行許多其他操作,包括向客戶端設(shè)備發(fā)送服務(wù)器問候消息。如果操作510中的消息指示目的地域,則安全會(huì)話服務(wù)器發(fā)送綁定到該目的地域的數(shù)字證書。如果操作510中的消息未指示目的地主機(jī)名,則安全會(huì)話服務(wù)器發(fā)送與操作510中的消息的目的地IP地址相關(guān)聯(lián)的綁定到請求域的數(shù)字證書。流程從操作515移到操作520。
[0074]在圖5的實(shí)施例中,安全會(huì)話服務(wù)器選擇了具有密鑰交換的密碼組,在其中由安全會(huì)話服務(wù)器發(fā)送的證書消息不包括足夠的數(shù)據(jù)以允許客戶端設(shè)備生成預(yù)主密鑰。例如,選擇的密碼組可以使用Dif f ie-He 1 lman作為密鑰交換機(jī)制(例如,DHE_RSA或DHE_DSS)。
[0075]在操作520處,安全會(huì)話服務(wù)器生成被用于為選擇的密鑰交換消息生成預(yù)主密鑰的密碼參數(shù)集合。經(jīng)由特例,在密鑰交換機(jī)制是Diffie-Hellman的情況下,密碼參數(shù)可以包括以下內(nèi)容:用于Diff ie-Hellman操作的素?cái)?shù)模(p)、用于Diff ie-Hellman操作的生成器 (g)、以及安全會(huì)話服務(wù)器的Diffie-Hellman公共值(g~X mod p,其中X是服務(wù)器所選擇的 Diff ie-Hellman私有值)。流程從操作520移到操作525。
[0076]該密碼參數(shù)集合將被包括在消息中,以發(fā)送到客戶端設(shè)備。依賴于選擇的密碼組, 這些密碼參數(shù)可能需要被簽署(例如,利用與用于請求域的公鑰對應(yīng)的私鑰)。安全會(huì)話服務(wù)器不具有對私鑰的本地訪問(例如,其被存儲(chǔ)在與安全會(huì)話服務(wù)器遠(yuǎn)程地定位的密鑰服務(wù)器上)。在操作525處,安全會(huì)話服務(wù)器向密鑰服務(wù)器發(fā)送請求,以利用與用于請求域的公鑰對應(yīng)的私鑰來簽署該密碼參數(shù)集合。除密碼參數(shù)之外,該請求還可以包括一個(gè)或多個(gè)同樣被簽署的隨機(jī)值(例如,客戶端問候.隨機(jī)和服務(wù)器問候.隨機(jī)值)。被簽署的該密碼參數(shù)集合將被包括在到客戶端設(shè)備的消息中,在其中客戶端進(jìn)行認(rèn)證。流程從操作525移到操作 530〇
[0077]圖6是圖示了根據(jù)一個(gè)實(shí)施例的由密鑰服務(wù)器響應(yīng)于接收到來自安全會(huì)話服務(wù)器的簽署密碼參數(shù)的請求而執(zhí)行的示例性操作的流程圖。在操作610處,密碼服務(wù)器接收來自安全會(huì)話服務(wù)器的簽署密碼參數(shù)的請求。例如,密鑰服務(wù)器接收由安全會(huì)話服務(wù)器在圖5的操作525中發(fā)送的請求。
[0078]流程然后移到操作615,其中密鑰服務(wù)器訪問與用于請求域的公鑰對應(yīng)的私鑰。密鑰服務(wù)器可以接收來自安全會(huì)話服務(wù)器的客戶端設(shè)備在其中嘗試建立用于其的安全會(huì)話的域或區(qū)名的指示。該指示可以采用許多不同的方式發(fā)送,包括以報(bào)頭、定制二進(jìn)制結(jié)構(gòu)、 或序列化格式(例如,protobuf、JavaScript對象表示法(JS0N)等)。密鑰服務(wù)器使用該指示來訪問與用于請求域的公鑰對應(yīng)的私鑰。然后流程移到操作620。
[0079]在操作620處,密鑰服務(wù)器使用訪問的私鑰來簽署密碼參數(shù)。流程然后移到操作 625,其中密鑰服務(wù)器發(fā)送所簽署的密碼參數(shù)給安全會(huì)話服務(wù)器。
[0080]密鑰服務(wù)器可以通過安全會(huì)話發(fā)送簽署后的密碼參數(shù)。作為建立密鑰服務(wù)器和安全會(huì)話服務(wù)器之間的安全會(huì)話的一部分,密鑰服務(wù)器可以從安全會(huì)話服務(wù)器請求客戶端證書,以便認(rèn)證安全會(huì)話服務(wù)器的身份。在一些實(shí)施例中,密鑰服務(wù)器可以使用基于IP地址的分塊來驗(yàn)證密鑰服務(wù)器正在與合法的安全會(huì)話服務(wù)器通信(例如,通過驗(yàn)證安全會(huì)話服務(wù)器正在與具有由密鑰服務(wù)器所預(yù)期的值的IP地址通信)。在一些實(shí)施例中,密鑰服務(wù)器和安全會(huì)話服務(wù)器之間的連接是虛擬私人網(wǎng)絡(luò)(VPN)連接。在一些實(shí)施例中,這些安全技術(shù)的任何組合都可以用于使簽署的密碼參數(shù)的發(fā)送安全。
[0081]回到參考圖5,在操作530處,安全會(huì)話服務(wù)器從密鑰服務(wù)器接收具有簽署的密碼參數(shù)集合的消息。流程然后移到操作535,其中安全會(huì)話服務(wù)器將簽署的密碼參數(shù)集合發(fā)送給客戶端設(shè)備。該簽署的密碼參數(shù)集合可以在服務(wù)器密鑰交換消息中被發(fā)送給客戶端。流程從操作535移到操作540。[〇〇82]客戶端設(shè)備將使用先前從服務(wù)器接收到的公鑰對消息中的信息進(jìn)行認(rèn)證(例如, 認(rèn)證簽名)。假設(shè)其被認(rèn)證,則客戶端設(shè)備將部分地使用該信息來生成預(yù)主密鑰。然而,在該實(shí)施例中,客戶端設(shè)備不將預(yù)主密鑰傳送給安全會(huì)話服務(wù)器。更確切地,其傳送對于安全會(huì)話服務(wù)器生成相同預(yù)主密鑰所必需的信息。例如,客戶端設(shè)備向安全會(huì)話服務(wù)器發(fā)送其 Diffie-Hellman公共值(部分地根據(jù)從安全會(huì)話服務(wù)器接收到的密碼參數(shù)集合來生成)。因此,在操作540處,安全會(huì)話服務(wù)器接收由客戶端設(shè)備部分地基于密碼參數(shù)所生成的公共值 (例如,客戶端設(shè)備的Diffie-Hellman公共值)。流程從操作540移到操作545。[〇〇83]在操作545處,安全會(huì)話服務(wù)器使用接收到的公共值和密碼參數(shù)中的至少一些來生成預(yù)主密鑰(其應(yīng)該與由客戶端設(shè)備所生成的預(yù)主密鑰相同)。經(jīng)由特例,安全會(huì)話服務(wù)器通過計(jì)算y~X mod p生成預(yù)主密鑰,其中y是客戶端設(shè)備的公共值,X是安全會(huì)話服務(wù)器的私有值,并且P是素?cái)?shù)模值。[〇〇84] 流程從操作545移到操作550,其中安全會(huì)話服務(wù)器使用預(yù)主密鑰生成主密鑰??蛻舳嗽O(shè)備還生成相同的主密鑰。流程然后移到操作555,其中安全會(huì)話服務(wù)器生成要在安全會(huì)話中當(dāng)加密和解密信息時(shí)使用的會(huì)話密鑰集合。經(jīng)由特例,主密鑰被用于生成客戶端寫消息認(rèn)證碼(MAC)密鑰、服務(wù)器寫MAC密鑰、客戶端寫加密密鑰、和服務(wù)器寫加密密鑰??蛻舳藢懗跏蓟蛄?IV)和服務(wù)器寫IV也可以依賴于所使用的密碼而生成。[〇〇85]流程從操作555移到操作560,其中安全會(huì)話服務(wù)器完成與客戶端設(shè)備的握手,并且建立與客戶端設(shè)備的安全會(huì)話。例如,客戶端設(shè)備和安全會(huì)話服務(wù)器均可以發(fā)送改變密碼說明消息和完成消息,如本文之前所描述的。當(dāng)安全會(huì)話在操作中時(shí),客戶端設(shè)備和安全會(huì)話服務(wù)器可以安全地交互數(shù)據(jù)。
[0086]圖7圖示了用于在安全會(huì)話服務(wù)器不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下在客戶端設(shè)備和安全會(huì)話服務(wù)器之間建立安全會(huì)話的另一實(shí)施例。與圖4中描述的實(shí)施例類似,圖7中描述的實(shí)施例描述了消息,其中選擇的密碼組需要使用服務(wù)器密鑰交換消息(例如,使用Diffie-Hellman密碼組)。然而,不像圖4中描述的實(shí)施例,在圖7的實(shí)施例中,密鑰服務(wù)器生成密鑰交換期間所使用的密碼參數(shù)。客戶端設(shè)備710(包括客戶端網(wǎng)絡(luò)應(yīng)用715)與圖1的客戶端設(shè)備110類似。包括安全會(huì)話模塊740和(多個(gè))證書745的安全會(huì)話服務(wù)器720類似于安全會(huì)話服務(wù)器120(包括安全會(huì)話模塊140和(多個(gè))證書145),但是執(zhí)行不同的操作,如將在以下描述的。密鑰服務(wù)器730類似于圖1的密鑰服務(wù)器130,但是執(zhí)行不同的操作,如將在以下描述的。。
[0087]在操作7.1處,客戶端設(shè)備710發(fā)送客戶端問候消息給安全會(huì)話服務(wù)器720。該客戶端問候消息類似于圖1的操作1.1中描述的客戶端問候消息。響應(yīng)于客戶端問候消息,在操作7.2處,安全會(huì)話服務(wù)器720發(fā)送服務(wù)器問候消息給客戶端設(shè)備710。該服務(wù)器問候消息類似于圖1的操作1.2中描述的服務(wù)器問候消息。在操作7.3處,安全會(huì)話服務(wù)器720還發(fā)送證書消息給客戶端設(shè)備710(服務(wù)器證書)。該證書消息類似于圖1的操作1.3中描述的證書消息。[〇〇88] 雖然圖7中未圖示,但是安全會(huì)話服務(wù)器420已經(jīng)選擇具有密鑰交換的密碼組,在其中,在操作7.3中發(fā)送的證書消息不包括足夠數(shù)據(jù)以允許客戶端設(shè)備710生成預(yù)主密鑰。 例如,所選擇的密碼組可以使用Diffie-Hellman作為密鑰交換機(jī)制(例如,DHE_RSA,DHE_ DSS)。因此,安全會(huì)話服務(wù)器720將發(fā)送消息給客戶端設(shè)備710,該消息傳達(dá)密碼信息以允許客戶端設(shè)備710和安全會(huì)話服務(wù)器720均生成相同的預(yù)主密鑰。經(jīng)由特例,在密鑰交換機(jī)制是Diffie-Hellman的情況下,密碼信息包括密碼參數(shù)集合,其包括以下內(nèi)容:用于Diffie-Hellman操作的素?cái)?shù)模(p) 、 用于Diffie-Hellman操作的生成器 (g) 、 以及服務(wù)器的Dif fie-Heilman公共值(g~X mod p,其中X是服務(wù)器的Diffie-Hellman私有值)。傳達(dá)密碼信息的消息可以稱為服務(wù)器密鑰交換消息。服務(wù)器密鑰交換消息可能需要利用私鑰750來簽署,該私鑰對應(yīng)于在操作7.3中發(fā)送的證書消息中發(fā)送的服務(wù)器的公鑰(例如,如果密鑰交換機(jī)制是 DHE_RSA或DHE_DSS的話)。如關(guān)于在圖1中討論的實(shí)施例類似描述的,安全會(huì)話服務(wù)器720不具有對該密鑰750的本地訪問。作為結(jié)果,安全會(huì)話服務(wù)器720不能利用私鑰750來簽署服務(wù)器密鑰交換消息。[〇〇89]在操作7.4處,安全會(huì)話服務(wù)器720向密鑰服務(wù)器730發(fā)送請求,以生成和簽署要在服務(wù)器密鑰交換消息中使用的密碼參數(shù)。密鑰服務(wù)器730生成密碼參數(shù)(安全會(huì)話服務(wù)器 420可以發(fā)送任何其他的所需信息,諸如可以在簽署時(shí)使用的客戶端問候.隨機(jī)和服務(wù)器問候.隨機(jī)值),并且使用私鑰750來簽署結(jié)果。在該實(shí)施例中,如果密鑰交換機(jī)制是DHE_RSA, 則私鑰750通常是RSA密鑰,或者如果密鑰交換機(jī)制是DHE_DSS,則私鑰750是DSA密鑰。
[0090]在操作7.5處,密鑰服務(wù)器730將簽署后的服務(wù)器密鑰交換參數(shù)發(fā)送回到安全會(huì)話服務(wù)器720。在操作7.6處,安全會(huì)話服務(wù)器720使用發(fā)送給客戶端設(shè)備710的服務(wù)器密鑰交換消息中的簽署后的參數(shù)。在操作7.7處,安全會(huì)話服務(wù)器720還將服務(wù)器問候完成消息發(fā)送給客戶端設(shè)備710,其指示握手的問候消息階段完成。[0091 ]客戶端設(shè)備710使用對應(yīng)的公鑰(例如,在操作7.3中發(fā)送的證書消息中接收到的公鑰)對服務(wù)器密鑰交換消息中的信息進(jìn)行認(rèn)證。假設(shè)信息被認(rèn)證,則客戶端設(shè)備710使用該信息生成預(yù)主密鑰。在操作7.8處,客戶端發(fā)送客戶端密鑰交換消息。[〇〇92]客戶端密鑰交換消息包括對于密鑰服務(wù)器430生成相同的預(yù)主密鑰所必需的信息 (例如,其包括客戶端的Diff ie-Hel lman公共值)。在操作7.9處,安全會(huì)話服務(wù)器720向密鑰服務(wù)器730發(fā)送請求,以使用客戶端的公共值生成預(yù)主密鑰。在操作7.10處,安全會(huì)話服務(wù)器720使用客戶端的公共值生成預(yù)主密鑰,并且向安全會(huì)話服務(wù)器720發(fā)送該預(yù)主密鑰。
[0093]安全會(huì)話服務(wù)器720使用預(yù)主密鑰計(jì)算主密鑰??蛻舳嗽O(shè)備710和安全會(huì)話服務(wù)器 720使用相同的算法和數(shù)據(jù)計(jì)算相同的主密鑰。例如,主密鑰使用取得預(yù)主密鑰、客戶端問候.隨機(jī)值和服務(wù)器問候.隨機(jī)值作為輸入的偽隨機(jī)函數(shù)來計(jì)算。主密鑰被客戶端設(shè)備710 和安全會(huì)話服務(wù)器720用來生成在安全會(huì)話期間用于加密和解密信息的會(huì)話密鑰。經(jīng)由特例,主密鑰用于生成客戶端寫消息認(rèn)證碼(MAC)密鑰、服務(wù)器寫MAC密鑰、客戶端寫加密密鑰、和服務(wù)器寫加密密鑰。客戶端寫初始化向量(IV)和服務(wù)器寫IV也可以依賴于所使用的密碼而生成。
[0094]在操作7.11處,客戶端設(shè)備710將改變密碼說明消息發(fā)送給安全會(huì)話服務(wù)器720。 來自客戶端設(shè)備710的改變密碼說明消息指示由客戶端設(shè)備710發(fā)送的未來的消息將被加密。在操作7.12處,客戶端設(shè)備710向安全會(huì)話服務(wù)器720發(fā)送完成消息。使用生成的會(huì)話密鑰對完成消息進(jìn)行加密。例如,完成消息包括先前在握手中發(fā)送和接收的所有消息的加密的散列。
[0095]在操作7.13處,安全會(huì)話服務(wù)器720向客戶端設(shè)備710發(fā)送改變密碼說明消息,其指示由安全會(huì)話服務(wù)器720發(fā)送的未來的消息將被加密。在操作7.14處,安全會(huì)話服務(wù)器 720發(fā)送完成消息給客戶端設(shè)備710。完成消息可以包括先前握手中發(fā)送和接收的所有消息的加密的散列。
[0096]在操作7.14的完成消息之后,握手完成,并且安全會(huì)話760被視為建立。在操作 7.15處,客戶端設(shè)備110和安全會(huì)話服務(wù)器120間的會(huì)話期間的未來信息通過安全會(huì)話760 進(jìn)行加密,其承載連接的應(yīng)用數(shù)據(jù)。[〇〇97] 在一個(gè)實(shí)施例中,在操作7.4、7.5、7.9和7.10中發(fā)送的消息通過安全連接755(例如,使用SSL或TLS或者其他機(jī)制加密)發(fā)送和/或以其他方式加密。
[0098]圖8是圖示了根據(jù)另一實(shí)施例的在安全會(huì)話服務(wù)器不具有對在安全會(huì)話握手期間所使用的私鑰的訪問的情況下在客戶端設(shè)備和安全會(huì)話服務(wù)器之間建立利用公鑰密碼實(shí)現(xiàn)的安全會(huì)話的示例性操作的流程圖。在操作810處,安全會(huì)話服務(wù)器接收來自客戶端設(shè)備的消息,其發(fā)起與客戶端設(shè)備建立安全會(huì)話的過程。例如,安全會(huì)話服務(wù)器從客戶端設(shè)備接收客戶端問候消息(例如,SSL或TLS客戶端問候消息)。依賴于客戶端設(shè)備的協(xié)議和能力,該消息可以指示客戶端設(shè)備想要在其中建立安全會(huì)話的目的地主機(jī)名(例如,客戶端問候消息可以包括服務(wù)器名稱指示(SNI)擴(kuò)展并指定目的地主機(jī)名)。
[0099]響應(yīng)于在操作810中接收到消息,安全會(huì)話服務(wù)器可以執(zhí)行許多操作,包括在操作 815處,向客戶端設(shè)備發(fā)送數(shù)字證書。數(shù)字證書包括用于請求域的公鑰。應(yīng)理解的是,與該公鑰對應(yīng)的私鑰未存儲(chǔ)在安全會(huì)話服務(wù)器上(例如,其遠(yuǎn)程地存儲(chǔ)在密鑰服務(wù)器上)。數(shù)字證書可以在SSL或TLS證書消息中發(fā)送。在發(fā)送數(shù)字證書之前,安全會(huì)話服務(wù)器可以執(zhí)行許多其他操作,包括向客戶端設(shè)備發(fā)送服務(wù)器問候消息。如果操作810中的消息指示目的地域, 則安全會(huì)話服務(wù)器發(fā)送綁定到該目的地域的數(shù)字證書。如果操作810中的消息未指示目的地主機(jī)名,則安全會(huì)話服務(wù)器發(fā)送與操作810中的消息的目的地IP地址相關(guān)聯(lián)的綁定到請求域的數(shù)字證書。流程從操作815移到操作820。
[0100]在圖8的實(shí)施例中,安全會(huì)話服務(wù)器選擇具有密鑰交換的密碼組,在其中由安全會(huì)話服務(wù)器發(fā)送的證書消息不包括足夠的數(shù)據(jù)以允許客戶端設(shè)備生成預(yù)主密鑰。例如,所選擇的密碼組可以使用Dif f ie-He 1 lman作為密鑰交換機(jī)制(例如,DHE_RSA或DHE_DSS)。
[0101]對照于參照圖5所描述的實(shí)施例,安全會(huì)話服務(wù)器不生成用于生成預(yù)主密鑰的密碼參數(shù)集合。取而代之,密鑰服務(wù)器生成這些密碼參數(shù)。在操作820處,安全會(huì)話服務(wù)器發(fā)送生成和簽署用于生成預(yù)主密鑰的密碼參數(shù)集合的請求給密鑰服務(wù)器。該請求還可以包括一個(gè)或多個(gè)同樣被簽署的隨機(jī)值(例如,客戶端問候.隨機(jī)和服務(wù)器問候.隨機(jī)值)。流程從操作820移到操作825。
[0102]圖9是圖示了根據(jù)一個(gè)實(shí)施例的由密鑰服務(wù)器所執(zhí)行的示例性操作的流程圖。在操作910處,密鑰服務(wù)器接收來自安全會(huì)話服務(wù)器的請求,以生成和簽署要在生成預(yù)主密鑰期間使用的密碼參數(shù)。例如,密鑰服務(wù)器接收由安全會(huì)話服務(wù)器在圖8的操作820中發(fā)送的請求。流程然后移到操作915,其中密鑰服務(wù)器生成用于產(chǎn)生預(yù)主密鑰的密碼參數(shù)。經(jīng)由其中密鑰交換機(jī)制是Diffie-Hellman的特例,密碼參數(shù)可以包括以下內(nèi)容:用于Diffie-Hellman操作的素?cái)?shù)模(p)、用于Diff ie-Hellman操作的生成器(g)、以及密鑰服務(wù)器的 Diffie-Heliman公共值(g~X mod p,其中X是密鑰服務(wù)器所選擇的Diffie-Hellman私有值)。流程從操作915移到操作920。
[0103]在操作920處,密鑰服務(wù)器訪問對應(yīng)于用于請求域的公鑰的私鑰。密鑰服務(wù)器可以接收來自安全會(huì)話服務(wù)器的客戶端設(shè)備在其中嘗試建立用于其的安全會(huì)話的域或區(qū)名的指示。該指示可以采用許多不同的方式發(fā)送,包括以報(bào)頭(header)、定制二進(jìn)制結(jié)構(gòu)、或序列化格式(例如,protobuf、JavaScript對象表示法(JS0N)等)。密鑰服務(wù)器使用該指示訪問與用于請求域的公鑰對應(yīng)的私鑰。流程然后移到操作925。
[0104]在操作925處,密鑰服務(wù)器使用所訪問的私鑰簽署密碼參數(shù)。流程然后移到操作 930,其中密鑰服務(wù)器發(fā)送被簽署的密碼參數(shù)給安全會(huì)話服務(wù)器。
[0105]返回參照圖8,在操作825處,安全會(huì)話服務(wù)器接收來自密鑰服務(wù)器的具有簽署的密碼參數(shù)集合的消息。流程然后移到操作830,其中安全會(huì)話服務(wù)器向客戶端設(shè)備發(fā)送被簽署的密碼參數(shù)集合。簽署的密碼參數(shù)集合可以在服務(wù)器密鑰交換消息中被發(fā)送給客戶端。 流程從操作830移到操作835。
[0106]客戶端設(shè)備將使用先前從服務(wù)器接收到的公鑰來認(rèn)證該消息中的信息(例如,認(rèn)證簽名)。假設(shè)其被認(rèn)證,則客戶端設(shè)備將部分地使用該信息生成預(yù)主密鑰。然而,在該實(shí)施例中,客戶端設(shè)備不將預(yù)主密鑰傳送給安全會(huì)話服務(wù)器。更確切地,其傳送對于安全會(huì)話服務(wù)器生成相同預(yù)主密鑰所必需的信息。例如,客戶端設(shè)備向安全會(huì)話服務(wù)器發(fā)送其Diffie-Hellman 公共值 (部分地根據(jù)從安全會(huì)話服務(wù)器接收到的密碼參數(shù)集合而生成的 )。因此,在操作835處,安全會(huì)話服務(wù)器接收由客戶端設(shè)備部分地基于密碼參數(shù)所生成的公共值(例如,客戶端設(shè)備的Diff ie-Hellman公共值)。流程從操作835移到操作840。
[0107]在操作840處,安全會(huì)話服務(wù)器向密鑰服務(wù)器發(fā)送生成預(yù)主密鑰的請求。該請求包括從客戶端設(shè)備接收到的公共值。
[0108]返回參照圖9,在操作935處密鑰服務(wù)器接收生成預(yù)主密鑰的請求。流程然后移到操作940,并且密鑰服務(wù)器使用接收到的公共值和至少一些生成的密碼參數(shù)來生成預(yù)主密鑰。例如,密鑰服務(wù)器通過計(jì)算y~X mod p生成預(yù)主密鑰,其中y是客戶端設(shè)備的公共值,X是密鑰服務(wù)器的私有值,并且P是素?cái)?shù)模值。流程然后移到操作945,其中密鑰服務(wù)器向安全會(huì)話服務(wù)器發(fā)送預(yù)主密鑰。
[0109]返回參照圖8,在操作845處,安全會(huì)話服務(wù)器接收來自密鑰服務(wù)器的預(yù)主密鑰。流程然后移到操作850,并且安全會(huì)話服務(wù)器使用預(yù)主密鑰生成主密鑰??蛻舳嗽O(shè)備也生成相同的主密鑰。流程然后移到操作855,其中安全會(huì)話服務(wù)器生成要在加密和解密信息時(shí)在安全會(huì)話中使用的會(huì)話密鑰集合。經(jīng)由特例,主密鑰被用于生成客戶端寫消息認(rèn)證碼(MAC)密鑰、服務(wù)器寫MAC密鑰、客戶端寫加密密鑰、和服務(wù)器寫加密密鑰??蛻舳藢懗跏蓟蛄?IV) 和服務(wù)器寫IV也可以依賴于所使用的密碼而生成。
[0110]流程從操作855移到操作860,其中安全會(huì)話服務(wù)器完成與客戶端設(shè)備的握手,并且與客戶端設(shè)備建立了安全會(huì)話。例如,客戶端設(shè)備和安全會(huì)話服務(wù)器均可以發(fā)送改變密碼說明消息和完成消息,如本文之前描述的。當(dāng)安全會(huì)話在操作中時(shí),客戶端設(shè)備和安全會(huì)話服務(wù)器可以安全地交換數(shù)據(jù)。
[0111]密鑰服務(wù)器可以通過安全會(huì)話來發(fā)送簽署的密碼參數(shù)和/或預(yù)主密鑰。作為在密鑰服務(wù)器和安全會(huì)話服務(wù)器之間建立安全會(huì)話的一部分,密鑰服務(wù)器可以從安全會(huì)話服務(wù)器請求客戶端證書,以便對安全會(huì)話服務(wù)器的身份進(jìn)行認(rèn)證。在一些實(shí)施例中,密鑰服務(wù)器可以使用基于IP地址的分塊來驗(yàn)證密鑰服務(wù)器正在與合法的安全會(huì)話服務(wù)器通信(例如, 通過驗(yàn)證安全會(huì)話服務(wù)器正在與具有由密鑰服務(wù)器所預(yù)期的值的IP地址通信)。在一些實(shí)施例中,密鑰服務(wù)器和安全會(huì)話服務(wù)器之間的連接是VPN連接。在一些實(shí)施例中,這些安全技術(shù)的任何組合均可以用于使簽署的密碼參數(shù)的發(fā)送安全。
[0112]在另一實(shí)施例中,安全會(huì)話服務(wù)器可以請求密鑰服務(wù)器生成和簽署對于生成預(yù)主密鑰所必需的密碼參數(shù),并且還可以請求和接收密鑰服務(wù)器的所選擇的用于生成預(yù)主密鑰的私有值。在這樣的實(shí)施例中,安全會(huì)話服務(wù)器可以使用客戶端設(shè)備的Diffie-Hellman公共值和密鑰服務(wù)器所選擇的Diffie-Hellman私有值來生成預(yù)主密鑰。
[0113]不像其中安全會(huì)話服務(wù)器在握手期間具有對私鑰的訪問的傳統(tǒng)安全會(huì)話實(shí)現(xiàn),在本發(fā)明的實(shí)施例中,私鑰對于安全會(huì)話服務(wù)器不可本地地訪問。這提供安全會(huì)話握手期間的增加的安全性。例如,雖然安全會(huì)話服務(wù)器可以代表網(wǎng)站遞送web內(nèi)容,但是安全會(huì)話服務(wù)器可以不在網(wǎng)站所有者的物理范圍處,和/或不被網(wǎng)站所有者控制。這可以使網(wǎng)站所有者不信任安全會(huì)話服務(wù)器和/或安全會(huì)話服務(wù)器的操作者的安全性。然而,因?yàn)楸景l(fā)明的實(shí)施例中私鑰遠(yuǎn)程地存儲(chǔ)(不在安全會(huì)話服務(wù)器上),而是存儲(chǔ)在密鑰服務(wù)器上,所以網(wǎng)站所有者不失去對私鑰的控制,而仍然慮及其不控制的安全會(huì)話服務(wù)器以提供安全的會(huì)話能力。
[0114]當(dāng)在此描述的實(shí)施例可以用于使web業(yè)務(wù)安全時(shí),在此描述的實(shí)施例還可以用于使依賴于基于密鑰的用于安全性的密碼的任何網(wǎng)絡(luò)業(yè)務(wù)安全。
[0115]在一個(gè)實(shí)施例中,安全會(huì)話服務(wù)器和密鑰服務(wù)器由不同的實(shí)體所擁有。例如,安全會(huì)話服務(wù)器可以是基于云的代理服務(wù)中的代理服務(wù)器,其為一個(gè)或多個(gè)域所有者提供一個(gè)或多個(gè)服務(wù)。例如,基于云的代理服務(wù)可以提供服務(wù),包括針對基于因特網(wǎng)的威脅進(jìn)行保護(hù)(例如,主動(dòng)阻止僵尸網(wǎng)絡(luò)、清除病毒、木馬、蠕蟲等)、為客戶提供執(zhí)行服務(wù)(例如,在內(nèi)容遞送網(wǎng)絡(luò)(CDN)中充當(dāng)節(jié)點(diǎn)、以及動(dòng)態(tài)緩存更靠近訪問者的客戶的文件、頁面加速、內(nèi)容優(yōu)化服務(wù)等)、圖像加載優(yōu)化(例如,延期的圖像加載和/或自動(dòng)調(diào)整尺寸)、和/或其他服務(wù)。密鑰服務(wù)器由域所有者所擁有或操作,該域所有者是基于云的代理服務(wù)的客戶。經(jīng)由特例, example, com的域所有者可以是基于云的代理服務(wù)的客戶。密鑰服務(wù)器可以由域所有者操作或在其控制之下,而安全會(huì)話服務(wù)器通過客戶端設(shè)備和安全會(huì)話服務(wù)器之間的安全會(huì)話針對example, com接收和發(fā)送網(wǎng)絡(luò)業(yè)務(wù),其中使用本發(fā)明在此描述的實(shí)施例(其中私鑰與安全會(huì)話服務(wù)器遠(yuǎn)程地存儲(chǔ))來建立安全會(huì)話。作為特例,密鑰服務(wù)器可以是網(wǎng)站所有者的源服務(wù)器。
[0116]經(jīng)由特例,在建立客戶端設(shè)備和安全會(huì)話服務(wù)器之間的安全會(huì)話之后,安全會(huì)話服務(wù)器可以接收針對資源的加密請求(該資源可以托管在安全會(huì)話服務(wù)器、密鑰服務(wù)器上, 或在不同服務(wù)器上)。安全會(huì)話服務(wù)器對加密請求進(jìn)行解密,以確定客戶端設(shè)備正在請求的資源。安全會(huì)話服務(wù)器然后檢索請求的資源。資源可以由安全會(huì)話服務(wù)器本地地檢索(例如,如果資源本地可獲得)或可以從托管該資源的源服務(wù)器請求。在一個(gè)實(shí)施例中,安全會(huì)話服務(wù)器可以是CDN中的節(jié)點(diǎn)。在一個(gè)實(shí)施例中,安全會(huì)話服務(wù)器和密鑰服務(wù)器以不同的安全等級(jí)操作。例如,密鑰服務(wù)器可以操作在高安全區(qū)中,并且安全會(huì)話服務(wù)器可以操作在較低安全區(qū)中。
[0117]如圖10中所圖示的,作為數(shù)據(jù)處理系統(tǒng)的形式的計(jì)算設(shè)備1000包括(多個(gè))總線 1050,其耦合有處理系統(tǒng)1020、電源1025、存儲(chǔ)器1030和非易失性存儲(chǔ)器1040(例如,硬盤驅(qū)動(dòng)、閃存、相變存儲(chǔ)器(PCM)等)。如本領(lǐng)域中公知的,(多個(gè))總線1050還可以通過各種橋、控制器、和/或適配器彼此連接。處理系統(tǒng)1020可以檢索來自存儲(chǔ)器1030和/或非易失性存儲(chǔ)器1040的(多個(gè))指令,并且執(zhí)行指令以完成本文描述的操作??偩€1050將上述組件互連在一起,并且還將這些組件互連到顯示控制器&顯示設(shè)備1070、輸入/輸出設(shè)備1080(例如 (NIC)網(wǎng)絡(luò)接□卡)、光標(biāo)控制器(例如,鼠標(biāo)、觸摸屏、觸摸板等)、鍵盤和(多個(gè))無線收發(fā)器 1090(例如,藍(lán)牙、WiF1、紅外等)。計(jì)算設(shè)備1000的一個(gè)或多個(gè)組件可以是可選的(例如,顯示控制器和顯示設(shè)備1070、1/0設(shè)備1080、(多個(gè))無線收發(fā)器1090等)。在一個(gè)實(shí)施例中,客戶端設(shè)備11〇、410和/或710、安全會(huì)話服務(wù)器120、420和/或720、和/或密鑰服務(wù)器130、430 和/或730可以采取計(jì)算設(shè)備1000的形式。
[0118]圖中所示的技術(shù)可以使用存儲(chǔ)和執(zhí)行在一個(gè)或多個(gè)電子設(shè)備(例如,客戶端設(shè)備、 代理服務(wù)器、密鑰服務(wù)器)上的代碼和數(shù)據(jù)來實(shí)現(xiàn)。這樣的電子設(shè)備使用計(jì)算機(jī)可讀介質(zhì)來存儲(chǔ)和傳送(在內(nèi)部和/或通過網(wǎng)絡(luò)與其他電子設(shè)備)代碼和數(shù)據(jù),所述計(jì)算機(jī)可讀介質(zhì)諸如非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(例如,磁盤;光盤;隨機(jī)存取存儲(chǔ)器;只讀存儲(chǔ)器;閃存設(shè)備;相變存儲(chǔ)器)以及暫時(shí)性計(jì)算機(jī)可讀通信介質(zhì)(例如,電、光、聲或其他形式的傳播信號(hào), 諸如載波、紅外信號(hào)、數(shù)字信號(hào))。此外,這樣的電子設(shè)備通常包括耦合至一個(gè)或多個(gè)其他組件的一個(gè)或多個(gè)處理器的集合,所述一個(gè)或多個(gè)其他組件諸如一個(gè)或多個(gè)存儲(chǔ)設(shè)備(非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì))、用戶輸入/輸出設(shè)備(例如,鍵盤、觸摸屏、和/或顯示器)、以及網(wǎng)絡(luò)連接。處理器集合和其他組件的耦合通常通過一個(gè)或多個(gè)總線和橋(也稱為總線控制器)。因此,給定電子設(shè)備的存儲(chǔ)設(shè)備通常存儲(chǔ)用于在該電子設(shè)備的一個(gè)或多個(gè)處理器的集合上執(zhí)行的代碼和/或數(shù)據(jù)。當(dāng)然,本發(fā)明的實(shí)施例的一個(gè)或多個(gè)部分可以使用軟件、固件、和/或硬件的不同組合來實(shí)現(xiàn)。
[0119]雖然圖中的流程圖示出由本發(fā)明的某些實(shí)施例所執(zhí)行的操作的特定順序,但是應(yīng)當(dāng)理解,這樣的順序是示例性的(例如,可選實(shí)施例可以以不同的順序執(zhí)行操作、組合某些操作、或重復(fù)某些操作等)。
[0120]雖然本發(fā)明就若干實(shí)施例進(jìn)行了描述,但是本領(lǐng)域技術(shù)人將認(rèn)識(shí)到,本發(fā)明不限于所描述的實(shí)施例,可以在所附權(quán)利要求的精神和范圍內(nèi)利用修改和替換來實(shí)施。因此,本描述要被視為說明性而不是限制。
【主權(quán)項(xiàng)】
1.一種第一服務(wù)器中的用于與客戶端設(shè)備建立安全會(huì)話的方法,其中被用于所述安全 會(huì)話的私鑰存儲(chǔ)在第二服務(wù)器中,所述方法包括:接收來自所述客戶端設(shè)備的發(fā)起建立所述客戶端設(shè)備和所述第一服務(wù)器之間的安全 會(huì)話的過程的消息;將包括公鑰的數(shù)字證書發(fā)送給所述客戶端設(shè)備;從所述客戶端設(shè)備接收已經(jīng)使用所述公鑰加密的預(yù)主密鑰,其中所述第一服務(wù)器不包 括可對加密后的預(yù)主密鑰進(jìn)行解密的私鑰;將所述加密后的預(yù)主密鑰發(fā)送給所述第二服務(wù)器以用于解密;從所述第二服務(wù)器接收已經(jīng)被解密的預(yù)主密鑰;使用解密后的預(yù)主密鑰來生成主密鑰;以及使用所生成的主密鑰來生成要在所述安全會(huì)話中被用于加密和解密所述客戶端設(shè)備 和所述第一服務(wù)器之間的通信的一個(gè)或多個(gè)會(huì)話密鑰的集合。2.根據(jù)權(quán)利要求1所述的方法,其中,所述第一服務(wù)器和所述第二服務(wù)器由不同的實(shí)體 所擁有。3.根據(jù)權(quán)利要求1所述的方法,其中,所述第一服務(wù)器接收來自所述客戶端設(shè)備的發(fā)起 建立所述客戶端設(shè)備和所述第一服務(wù)器之間的安全會(huì)話的過程的消息,作為解析到所述第 一服務(wù)器的針對所述客戶端設(shè)備針對其正在嘗試建立安全會(huì)話的域的域名系統(tǒng)(DNS)請求 的結(jié)果。4.根據(jù)權(quán)利要求1所述的方法,其中,解密后的預(yù)主密鑰通過所述第一服務(wù)器和所述第 二服務(wù)器之間的安全會(huì)話而被接收。5.根據(jù)權(quán)利要求4所述的方法,還包括:作為建立所述第一服務(wù)器和所述第二服務(wù)器之間的安全會(huì)話的一部分,所述第一服務(wù) 器向所述第二服務(wù)器發(fā)送所述第一服務(wù)器的數(shù)字證書。6.根據(jù)權(quán)利要求1所述的方法,其中所述第二服務(wù)器是源服務(wù)器,并且其中所述方法還 包括:通過所述安全會(huì)話從所述客戶端設(shè)備接收針對所述第二服務(wù)器的域的資源的加密的 請求;解密所述加密的請求;從所述第二服務(wù)器檢索所請求的資源;生成包括所檢索的資源的響應(yīng);加密所生成的響應(yīng);以及通過所述安全會(huì)話向所述客戶端設(shè)備發(fā)送加密后的響應(yīng)。7.根據(jù)權(quán)利要求6所述的方法,其中,從所述第二服務(wù)器檢索所請求的資源包括通過所 述第一服務(wù)器和所述第二服務(wù)器之間的安全會(huì)話發(fā)送針對所請求的資源的加密的請求。8.—種第一服務(wù)器中的用于與客戶端設(shè)備建立安全會(huì)話的方法,其中被用于所述安全 會(huì)話的私鑰存儲(chǔ)在第二服務(wù)器中,所述方法包括:從所述客戶端設(shè)備接收客戶端問候消息;響應(yīng)于所接收的客戶端問候消息,向所述客戶端設(shè)備發(fā)送服務(wù)器問候消息;將包括一個(gè)或多個(gè)數(shù)字證書的服務(wù)器證書消息發(fā)送給所述客戶端設(shè)備;向所述客戶端設(shè)備發(fā)送服務(wù)器問候完成消息;從所述客戶端設(shè)備接收包括加密后的預(yù)主密鑰的客戶端密鑰交換消息;向所述第二服務(wù)器發(fā)送所述加密后的預(yù)主密鑰以用于解密;從所述第二服務(wù)器接收包括解密后的預(yù)主密鑰的消息;從所述客戶端設(shè)備接收第一改變密碼說明消息;從所述客戶端設(shè)備接收第一完成消息;向所述客戶端設(shè)備發(fā)送第二改變密碼說明消息;以及 向所述客戶端設(shè)備發(fā)送第二完成消息。9.根據(jù)權(quán)利要求8所述的方法,其中,所述第一服務(wù)器和所述第二服務(wù)器由不同的實(shí)體 所擁有或操作。10.根據(jù)權(quán)利要求8所述的方法,其中,所述解密后的預(yù)主密鑰通過所述第一服務(wù)器和 所述第二服務(wù)器之間的安全會(huì)話而被接收。11.根據(jù)權(quán)利要求10所述的方法,還包括:作為建立所述第一服務(wù)器和所述第二服務(wù)器之間的安全會(huì)話的一部分,所述第一服務(wù) 器向所述第二服務(wù)器發(fā)送包括所述第一服務(wù)器的數(shù)字證書的客戶端證書消息。12.根據(jù)權(quán)利要求8所述的方法,其中所述第二服務(wù)器是源服務(wù)器,并且其中所述方法 還包括:通過所述安全會(huì)話從所述客戶端設(shè)備接收針對所述第二服務(wù)器的域的資源的加密的 請求;解密所述加密的請求;從所述第二服務(wù)器檢索所請求的資源;生成包括所檢索的資源的響應(yīng);加密所生成的響應(yīng);以及通過所述安全會(huì)話向所述客戶端設(shè)備發(fā)送加密后的響應(yīng)。13.根據(jù)權(quán)利要求12所述的方法,其中,從所述第二服務(wù)器檢索所請求的資源包括通過 所述第一服務(wù)器和所述第二服務(wù)器之間的安全會(huì)話發(fā)送針對所請求的資源的加密的請求。14.一種第一服務(wù)器中的方法,包括:從第二服務(wù)器接收加密后的預(yù)主密鑰,其中,所述加密后的預(yù)主密鑰使用與安全會(huì)話 證書相關(guān)聯(lián)的公鑰而被加密,其中從所述第二服務(wù)器接收所述加密后的預(yù)主密鑰作為客戶 端設(shè)備與所述第二服務(wù)器之間的安全會(huì)話建立的一部分;訪問與所述公鑰對應(yīng)的私鑰,其中所述私鑰不存儲(chǔ)在所述第二服務(wù)器上;使用所述私鑰來解密所述加密后的預(yù)主密鑰;以及向所述第二服務(wù)器發(fā)送解密后的預(yù)主密鑰,以用于所述客戶端設(shè)備和所述第二服務(wù)器 之間的建立中。15.根據(jù)權(quán)利要求14所述的方法,還包括:在將所述解密后的預(yù)主密鑰發(fā)送給所述第二服務(wù)器之前,參與建立所述第一服務(wù)器和 所述第二服務(wù)器之間的安全會(huì)話的安全會(huì)話建立過程,其中,向所述第二服務(wù)器發(fā)送所述 解密后的預(yù)主密鑰是通過安全會(huì)話。16.根據(jù)權(quán)利要求15所述的方法,其中,作為參與所述安全會(huì)話的建立的一部分,所述第一服務(wù)器執(zhí)行以下操作:從所述第二服務(wù)器請求證書;從所述第二服務(wù)器接收證書;以及 使用所接收的證書來認(rèn)證所述第二服務(wù)器。17.根據(jù)權(quán)利要求14所述的方法,還包括從所述第二服務(wù)器接收所述客戶端設(shè)備在其 中正在嘗試經(jīng)由所述安全會(huì)話進(jìn)行連接的域的指示,并且,其中所訪問的私鑰對應(yīng)于與所 指示的域相關(guān)聯(lián)的公鑰。18.根據(jù)權(quán)利要求14所述的方法,其中在將所述解密后的預(yù)主密鑰發(fā)送給所述第二服 務(wù)器之前,驗(yàn)證所述第二服務(wù)器正在與有具有所述第一服務(wù)器所預(yù)期的值的IP地址的第一 服務(wù)器進(jìn)行通信。19.一種裝置,包括:服務(wù)器,其包括一個(gè)或多個(gè)處理器的集合以及存儲(chǔ)指令的一個(gè)或多個(gè)非暫時(shí)性計(jì)算機(jī) 可讀存儲(chǔ)介質(zhì)的集合,所述指令當(dāng)由處理器集合執(zhí)行時(shí),使處理器集合執(zhí)行以下操作: 接收來自客戶端設(shè)備的發(fā)起建立所述客戶端設(shè)備和所述服務(wù)器之間的安全會(huì)話的過 程的消息;將包括公鑰的數(shù)字證書發(fā)送給所述客戶端設(shè)備;從所述客戶端設(shè)備接收已經(jīng)使用所述公鑰加密的預(yù)主密鑰,其中所述服務(wù)器不包括可 對加密后的預(yù)主密鑰進(jìn)行解密的私鑰;將所述加密后的預(yù)主密鑰發(fā)送給不同的服務(wù)器以用于解密;接收解密后的預(yù)主密鑰;使用所接收的解密后的預(yù)主密鑰來生成主密鑰;使用所生成的主密鑰來生成要在所述安全會(huì)話中被用于加密和解密所述客戶端設(shè)備 和所述服務(wù)器之間的通信的一個(gè)或多個(gè)會(huì)話密鑰的集合。20.根據(jù)權(quán)利要求19所述的裝置,其中,所述服務(wù)器和所述不同的服務(wù)器由不同的實(shí)體 所擁有。21.根據(jù)權(quán)利要求19所述的裝置,其中,所述服務(wù)器接收來自所述客戶端設(shè)備的發(fā)起建 立所述客戶端設(shè)備和所述服務(wù)器之間的安全會(huì)話的過程的消息,作為解析到第一服務(wù)器的 針對所述客戶端設(shè)備在其中正在嘗試建立安全會(huì)話的域的域名系統(tǒng)(DNS)請求的結(jié)果。22.根據(jù)權(quán)利要求19所述的裝置,其中,解密后的預(yù)主密鑰通過所述服務(wù)器和所述不同 的服務(wù)器之間的安全會(huì)話而被接收。23.根據(jù)權(quán)利要求22所述的裝置,其中非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的集合還存儲(chǔ)指 令,所述指令當(dāng)由處理器集合執(zhí)行時(shí),使處理器集合執(zhí)行以下操作:作為所述服務(wù)器和所述不同的服務(wù)器之間的安全會(huì)話的建立的一部分,所述服務(wù)器將 自身的數(shù)字證書發(fā)送到所述不同的服務(wù)器,以用于所述不同的服務(wù)器認(rèn)證所述服務(wù)器的身 份。24.根據(jù)權(quán)利要求19所述的裝置,其中,所述不同的服務(wù)器是源服務(wù)器,并且其中非暫 時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的集合還存儲(chǔ)指令,所述指令當(dāng)由處理器集合執(zhí)行時(shí),使處理器 集合執(zhí)行以下操作:通過所述安全會(huì)話從所述客戶端設(shè)備接收針對源服務(wù)器的域的資源的加密的請求;解密所述加密的請求;從所述源服務(wù)器檢索所請求的資源;生成包括所檢索的資源的響應(yīng);加密所生成的響應(yīng);以及通過所述安全會(huì)話向所述客戶端設(shè)備發(fā)送加密后的響應(yīng)。25.根據(jù)權(quán)利要求24所述的裝置,其中,從所述源服務(wù)器檢索所請求的資源的操作包括 通過所述服務(wù)器和所述源服務(wù)器之間的安全會(huì)話發(fā)送針對所請求的資源的加密的請求。
【文檔編號(hào)】H04L9/08GK105993146SQ201480026113
【公開日】2016年10月5日
【申請日】2014年3月6日
【發(fā)明人】S·A·H·帕爾, M·P·F·托爾恩, P·西科拉, R·R·貝加尼, D·O·克內(nèi)奇特, M·B·普林斯, J·格拉厄姆-卡明, L·H·哈羅維, A·斯特拉謝姆
【申請人】云耀公司