相關(guān)申請(qǐng)的交叉引用
本申請(qǐng)是2015年2月13日提交的美國(guó)臨時(shí)申請(qǐng)?zhí)?2/116,357(代理人案號(hào):079900-0925515)的正式案并要求其優(yōu)先權(quán)權(quán)益,該申請(qǐng)出于所有目的全文以引用方式并入本文中。
背景技術(shù):
標(biāo)準(zhǔn)密鑰協(xié)商協(xié)議(例如,ssl/tls和ipsec)可以揭示有關(guān)所涉及的各方的身份的信息以及密鑰協(xié)商協(xié)議類型或密碼套件信息。這些信息可以為攻擊者提供智能,并幫助他們跟蹤發(fā)送者和接收者活動(dòng)、捕獲元數(shù)據(jù)和逆向工程消息以及根據(jù)明顯的弱點(diǎn)來(lái)設(shè)計(jì)時(shí)間有效的和集中的攻擊方法。
本發(fā)明的實(shí)施方案?jìng)€(gè)別地和共同地解決了這些和其他問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的實(shí)施方案涉及用于保密通信管理的系統(tǒng)和方法。具體地,實(shí)施方案提供了一種改進(jìn)的密鑰協(xié)商協(xié)議,其中密鑰和協(xié)議數(shù)據(jù)(例如,密碼套件)的規(guī)范在請(qǐng)求和響應(yīng)消息中保持保密,由此減少攻擊者的機(jī)會(huì)并增加攻擊成本。
根據(jù)一個(gè)方面,提供了用于保密密鑰識(shí)別的方法。例如,在一些實(shí)施方案中,服務(wù)器計(jì)算機(jī)可以從客戶端計(jì)算機(jī)接收請(qǐng)求。請(qǐng)求消息可以包括受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符和加密的請(qǐng)求數(shù)據(jù)。服務(wù)器計(jì)算機(jī)可以使用服務(wù)器標(biāo)識(shí)符加密密鑰來(lái)解密受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符以獲取服務(wù)器密鑰標(biāo)識(shí)符??梢源_定與服務(wù)器密鑰標(biāo)識(shí)符相關(guān)聯(lián)的服務(wù)器私鑰??梢允褂梅?wù)器私鑰對(duì)加密的數(shù)據(jù)進(jìn)行解密以獲取請(qǐng)求數(shù)據(jù)。
根據(jù)另一方面,提供了用于保護(hù)協(xié)議數(shù)據(jù)的方法、系統(tǒng)和裝置。例如,在一些實(shí)施方案中,發(fā)送者計(jì)算機(jī)可以使用一個(gè)或多個(gè)有效載荷加密密鑰來(lái)加密有效載荷數(shù)據(jù),以生成加密的有效載荷數(shù)據(jù)。發(fā)送者計(jì)算機(jī)還可以使用一個(gè)或多個(gè)協(xié)議加密密鑰加密協(xié)議數(shù)據(jù)以生成加密的協(xié)議數(shù)據(jù)。協(xié)議數(shù)據(jù)可以指示密碼套件。發(fā)送者計(jì)算機(jī)可以將包括加密的有效載荷數(shù)據(jù)和加密的協(xié)議數(shù)據(jù)的消息傳輸?shù)浇邮照哂?jì)算機(jī)。
根據(jù)另一方面,提供了用于數(shù)據(jù)保護(hù)的方法、系統(tǒng)和裝置。例如,在一些實(shí)施方案中,發(fā)送者計(jì)算機(jī)可以使用一個(gè)或多個(gè)有效載荷加密密鑰來(lái)加密有效載荷數(shù)據(jù),以生成加密的有效載荷數(shù)據(jù)。發(fā)送者計(jì)算機(jī)還可以使用一個(gè)或多個(gè)協(xié)議加密密鑰加密協(xié)議數(shù)據(jù)以生成加密的協(xié)議數(shù)據(jù)。協(xié)議數(shù)據(jù)可以指示密碼套件。發(fā)送者計(jì)算機(jī)可以將包括加密的有效載荷數(shù)據(jù)和加密的協(xié)議數(shù)據(jù)的消息傳輸?shù)浇邮照哂?jì)算機(jī)。
在一些實(shí)施方案中,提供了計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)可以被配置成接收包括加密的協(xié)議數(shù)據(jù)和加密的有效載荷數(shù)據(jù)的消息??梢源_定一個(gè)或多個(gè)協(xié)議解密密鑰以解密加密的協(xié)議數(shù)據(jù)??梢允褂靡粋€(gè)或多個(gè)協(xié)議解密密鑰對(duì)加密的協(xié)議數(shù)據(jù)進(jìn)行解密以獲取協(xié)議數(shù)據(jù)??梢源_定用于解密有效載荷數(shù)據(jù)的一個(gè)或多個(gè)有效載荷解密密鑰。可以使用協(xié)議數(shù)據(jù)和一個(gè)或多個(gè)有效載荷解密密鑰來(lái)解密加密的有效載荷數(shù)據(jù)以獲取有效載荷數(shù)據(jù)。
附圖說(shuō)明
圖1說(shuō)明了根據(jù)本發(fā)明的一些實(shí)施方案的客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī)之間的通信。
圖2說(shuō)明了根據(jù)一些實(shí)施方案的用于生成和發(fā)送請(qǐng)求消息的示例性過(guò)程。
圖3說(shuō)明了根據(jù)一些實(shí)施方案的用于接收和處理請(qǐng)求消息的示例性過(guò)程。
圖4說(shuō)明了根據(jù)一些實(shí)施方案的用于生成和發(fā)送響應(yīng)消息的示例性過(guò)程。
圖5說(shuō)明了根據(jù)一些實(shí)施方案的用于接收和處理響應(yīng)消息的示例性過(guò)程。
圖6說(shuō)明了根據(jù)一些實(shí)施方案的由客戶端計(jì)算機(jī)發(fā)送到服務(wù)器計(jì)算機(jī)的第一請(qǐng)求消息和由服務(wù)器計(jì)算機(jī)處理第一請(qǐng)求消息的示例。
圖7說(shuō)明了根據(jù)一些實(shí)施方案的由客戶端計(jì)算機(jī)發(fā)送到服務(wù)器計(jì)算機(jī)的后續(xù)請(qǐng)求消息和由服務(wù)器計(jì)算機(jī)處理后續(xù)請(qǐng)求消息的示例。
圖8示出了根據(jù)一些實(shí)施方案的由服務(wù)器計(jì)算機(jī)發(fā)送到客戶端計(jì)算機(jī)的響應(yīng)消息和響應(yīng)消息的生成的示例。
圖9說(shuō)明了根據(jù)一些實(shí)施方案的示例性請(qǐng)求消息和包括受保護(hù)的客戶端密鑰標(biāo)識(shí)符的示例性響應(yīng)消息。
圖10說(shuō)明了根據(jù)一些實(shí)施方案的用于加密消息的示例性過(guò)程。
圖11說(shuō)明了根據(jù)一些實(shí)施方案的用于加密消息的另一示例性過(guò)程。
圖12說(shuō)明了根據(jù)一些實(shí)施方案的用于解密消息的示例性過(guò)程。
圖13說(shuō)明了根據(jù)一些實(shí)施方案的用于解密消息的另一示例性過(guò)程。
圖14說(shuō)明了根據(jù)一些實(shí)施方案的用于解密消息的另一示例性過(guò)程。
圖15說(shuō)明了根據(jù)一些實(shí)施方案的用于生成http請(qǐng)求消息的示例性過(guò)程。
圖16說(shuō)明了根據(jù)一些實(shí)施方案的用于處理http請(qǐng)求消息的示例性過(guò)程。
圖17說(shuō)明了根據(jù)一些實(shí)施方案的用于生成http響應(yīng)消息的示例性過(guò)程。
圖18說(shuō)明了根據(jù)一些實(shí)施方案的用于處理http響應(yīng)消息的示例性過(guò)程。
圖19說(shuō)明了根據(jù)一些實(shí)施方案的用于加密敏感數(shù)據(jù)的示例性加密過(guò)程。
圖20說(shuō)明了根據(jù)一些實(shí)施方案的用于解密數(shù)據(jù)的示例性解密過(guò)程。
圖21示出了根據(jù)一些實(shí)施方案的用于處理請(qǐng)求消息以強(qiáng)制執(zhí)行服務(wù)器策略的決策樹(shù)。
圖22是根據(jù)一些實(shí)施方案的計(jì)算機(jī)系統(tǒng)的高級(jí)框圖。
術(shù)語(yǔ)
在討論本發(fā)明的一些實(shí)施方案之前,對(duì)一些術(shù)語(yǔ)的描述可能有助于理解本發(fā)明的實(shí)施方案。
術(shù)語(yǔ)“服務(wù)器計(jì)算機(jī)”可以包括功能強(qiáng)大的計(jì)算機(jī)或計(jì)算機(jī)集群。例如,服務(wù)器計(jì)算機(jī)可以是大的主機(jī)、小型計(jì)算機(jī)集群或像一個(gè)單元一樣工作的一組服務(wù)器。在一個(gè)實(shí)例中,服務(wù)器計(jì)算機(jī)可以是耦連至網(wǎng)絡(luò)服務(wù)器的數(shù)據(jù)庫(kù)服務(wù)器。服務(wù)器計(jì)算機(jī)可以耦連到數(shù)據(jù)庫(kù)并且可以包括用于服務(wù)于來(lái)自一個(gè)或多個(gè)客戶端計(jì)算機(jī)的請(qǐng)求的任何硬件、軟件、其他邏輯、或前述內(nèi)容的組合。服務(wù)器計(jì)算機(jī)可以包括一個(gè)或多個(gè)計(jì)算裝置并且可以使用各種計(jì)算結(jié)構(gòu)、排列和編譯中的任何一種來(lái)服務(wù)于來(lái)自一個(gè)或多個(gè)客戶端計(jì)算機(jī)的請(qǐng)求。
術(shù)語(yǔ)“公/私鑰對(duì)”可以包括由實(shí)體生成的一對(duì)關(guān)聯(lián)加密密鑰。公鑰可以用于公共功能,諸如加密要發(fā)送給實(shí)體的消息,或用于對(duì)應(yīng)該由實(shí)體做出的數(shù)字簽名進(jìn)行驗(yàn)證。另一方面,私鑰可以用于私用功能,諸如對(duì)接收到的消息解密或應(yīng)用數(shù)字簽名。公鑰通常會(huì)由被稱為證書(shū)機(jī)構(gòu)(ca)的主體進(jìn)行授權(quán),證書(shū)機(jī)構(gòu)將公鑰存儲(chǔ)在數(shù)據(jù)庫(kù)中并將其分配給請(qǐng)求它的任何其他實(shí)體。私鑰一般會(huì)被保持在安全存儲(chǔ)介質(zhì)中并且通常只有實(shí)體知道。然而,本文中描述的密碼系統(tǒng)可以以用于恢復(fù)丟失的密鑰并避免數(shù)據(jù)丟失的密鑰恢復(fù)機(jī)制為特征。公鑰和私鑰可以是任何適當(dāng)格式,包括基于rsa或橢圓曲線密碼學(xué)(ecc)的格式。
“數(shù)字簽名”可以指基于公/私鑰對(duì)應(yīng)用算法的結(jié)果,這種算法允許簽名方顯示,并且允許驗(yàn)證方驗(yàn)證文件的真實(shí)性和完整性。簽名方借助于私鑰起作用,驗(yàn)證方借助于公鑰起作用。這個(gè)過(guò)程證明發(fā)送者的真實(shí)性、已簽名文檔的完整性和所稱的不可否認(rèn)性原則,所述原則不允許否認(rèn)已經(jīng)簽名的內(nèi)容。證書(shū)或包括簽名方的數(shù)字簽名的其他數(shù)據(jù)被稱為是由簽名方“簽名的”。
“數(shù)字證書(shū)”或“證書(shū)”可以包括使用數(shù)字簽名將公鑰和/或?qū)?yīng)的私鑰與和身份相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行綁定的電子文檔或數(shù)據(jù)文件。在一些實(shí)施方案中,證書(shū)可以包括公鑰。證書(shū)可以包括一個(gè)或多個(gè)數(shù)據(jù)字段,例如身份的合法名稱、證書(shū)的序列號(hào)、證書(shū)的起始有效期和終止有效期、證書(shū)相關(guān)許可等。證書(shū)可以包含指示證書(shū)有效的第一個(gè)日期的“起始有效”日期,以及指示證書(shū)有效的最后日期的“終止有效”日期。證書(shū)還可以包含證書(shū)中包括數(shù)據(jù)字段的數(shù)據(jù)的散列。除非另外說(shuō)明,每個(gè)證書(shū)都由證書(shū)機(jī)構(gòu)簽名。
“證書(shū)機(jī)構(gòu)”(ca)可以包括可操作耦連以向?qū)嶓w發(fā)行證書(shū)的一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)。ca可以使用ca證書(shū)證明其身份,ca證書(shū)包括ca的公鑰??梢杂昧硪粋€(gè)ca的私鑰或者可以用同一個(gè)ca的私鑰對(duì)ca證書(shū)簽名。后者被稱為自簽名證書(shū)。ca還通常維護(hù)由ca發(fā)布的所有證書(shū)的數(shù)據(jù)庫(kù)。
在一個(gè)典型過(guò)程中,證書(shū)機(jī)構(gòu)從其身份已知的實(shí)體接收未簽名的證書(shū)。未簽名的證書(shū)包括公鑰、一個(gè)或多個(gè)數(shù)據(jù)字段、以及證書(shū)中的數(shù)據(jù)的散列。ca用與ca證書(shū)上所包括的公鑰相對(duì)應(yīng)的私鑰對(duì)證書(shū)進(jìn)行簽名。ca然后可以將簽名的證書(shū)存儲(chǔ)在數(shù)據(jù)庫(kù)中,并將簽名的證書(shū)發(fā)行給實(shí)體。
“密碼隨機(jī)數(shù)”可以包括任何數(shù)字、字符串、位序列、或旨在關(guān)聯(lián)單個(gè)通信會(huì)話使用的其他數(shù)據(jù)值。在一些情況下,密碼隨機(jī)數(shù)可以是隨機(jī)或偽隨機(jī)生成的。通常,密碼隨機(jī)數(shù)具有足夠的長(zhǎng)度以使多次獨(dú)立生成同一隨機(jī)數(shù)值的可能性并不顯著。
“盲化密鑰(blindedkey)”,諸如“盲化公鑰”可以包括通過(guò)與另一數(shù)據(jù)元素(諸如密碼隨機(jī)數(shù),例如隨機(jī)數(shù)或偽隨機(jī)數(shù))組合而被模糊化或以其他方式修改了其原始值的密鑰。例如,公鑰可以乘以隨機(jī)數(shù)從而生成“盲化公鑰”。類似地,私鑰可以乘以隨機(jī)數(shù)從而生成“盲化私鑰”。
“加密密鑰”可以包括適合于用密碼加密數(shù)據(jù)的任何數(shù)據(jù)值或其他信息?!敖饷苊荑€”可以包括適合于對(duì)已加密的數(shù)據(jù)進(jìn)行解密的任何數(shù)據(jù)值或其他信息。在一些情況下,加密密鑰和解密密鑰可以相同(即,“對(duì)稱密鑰”)。
“密鑰標(biāo)識(shí)符”可以包括任何數(shù)據(jù),其可用于識(shí)別一個(gè)或多個(gè)密鑰或數(shù)字證書(shū)。例如,密鑰標(biāo)識(shí)符可以識(shí)別私鑰、公鑰或其數(shù)字證書(shū)、或私鑰/公鑰對(duì)。密鑰標(biāo)識(shí)符還可以識(shí)別一個(gè)或多個(gè)加密密鑰、簽名密鑰或任何其他合適的密鑰。密鑰標(biāo)識(shí)符可以是與數(shù)字證書(shū)相關(guān)聯(lián)的序列號(hào),其中證書(shū)可以使用序列號(hào)來(lái)檢索。密鑰標(biāo)識(shí)符還可以包括識(shí)別私鑰或公鑰的隨機(jī)數(shù)或偽隨機(jī)數(shù)或字母數(shù)字字符串。在一些實(shí)施方案中,密鑰標(biāo)識(shí)符和相關(guān)聯(lián)的密鑰或證書(shū)之間的映射可以存儲(chǔ)在支持查找和/或存儲(chǔ)操作的表、文件、數(shù)據(jù)庫(kù)或任何其他合適的數(shù)據(jù)存儲(chǔ)器中。
“客戶端密鑰標(biāo)識(shí)符”是識(shí)別與客戶端計(jì)算機(jī)相關(guān)聯(lián)的一個(gè)或多個(gè)密鑰的密鑰標(biāo)識(shí)符?!胺?wù)器密鑰標(biāo)識(shí)符”是識(shí)別與服務(wù)器計(jì)算機(jī)相關(guān)聯(lián)的一個(gè)或多個(gè)密鑰的密鑰標(biāo)識(shí)符。
“受保護(hù)的密鑰標(biāo)識(shí)符”可以包括密鑰標(biāo)識(shí)符和可能的其他數(shù)據(jù),其用于以某種方式模糊或以其他方式保護(hù)密鑰標(biāo)識(shí)符的機(jī)密性。在一些實(shí)施方案中,受保護(hù)的密鑰標(biāo)識(shí)符僅指一次性值,其不向竊聽(tīng)者顯示任何有用信息(例如,隨機(jī)值或偽隨機(jī)值),而是被映射到一個(gè)或多個(gè)密鑰或證書(shū)。例如,受保護(hù)的客戶端密鑰標(biāo)識(shí)符可以包括映射到客戶端私鑰或客戶端公鑰的一次性隨機(jī)值。
受保護(hù)的密鑰標(biāo)識(shí)符還可以包括已經(jīng)使用加密密鑰(也稱為“標(biāo)識(shí)符保護(hù)密鑰”)加密的密鑰標(biāo)識(shí)符(具有或不具有附加數(shù)據(jù))。例如,受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符可以包括映射到客戶端私鑰或客戶端公鑰的服務(wù)器密鑰標(biāo)識(shí)符。在一些實(shí)施方案中,受保護(hù)的密鑰標(biāo)識(shí)符還可以包括附加數(shù)據(jù),諸如填充和/或隨機(jī)值。在一些實(shí)施方案中,填充可以是恒定數(shù)據(jù)元素。在受保護(hù)的密鑰標(biāo)識(shí)符的解密結(jié)果中存在恒定數(shù)據(jù)元素可以指示密鑰標(biāo)識(shí)符的有效性或完整性。在一些其他實(shí)施方案中,填充可以包括密鑰標(biāo)識(shí)符的消息認(rèn)證碼(mac)或者以其他方式基于密鑰標(biāo)識(shí)符生成。mac可用于認(rèn)證密鑰標(biāo)識(shí)符和/或包括在受保護(hù)的密鑰標(biāo)識(shí)符中的其他數(shù)據(jù)。填充和/或隨機(jī)值可以用于使受保護(hù)的密鑰標(biāo)識(shí)符或未加密數(shù)據(jù)(包括密鑰標(biāo)識(shí)符、填充和隨機(jī)值)的長(zhǎng)度達(dá)到固定長(zhǎng)度,以便模糊密鑰標(biāo)識(shí)符并使得竊聽(tīng)者更難以將受保護(hù)的密鑰標(biāo)識(shí)符與任何其他固定長(zhǎng)度的數(shù)據(jù)區(qū)分開(kāi)。在一些實(shí)施方案中,服務(wù)器密鑰標(biāo)識(shí)符和/或附加數(shù)據(jù)可以使用標(biāo)識(shí)符加密密鑰或一些其他合適的加密密鑰來(lái)加密,以生成受保護(hù)的密鑰標(biāo)識(shí)符。
在一些實(shí)施方案中,受保護(hù)的密鑰標(biāo)識(shí)符可被解密或以其他方式處理以揭示基礎(chǔ)密鑰標(biāo)識(shí)符。然后可以將密鑰標(biāo)識(shí)符映射到一個(gè)或多個(gè)基礎(chǔ)密鑰和/或證書(shū)。在一些其他實(shí)施方案中,受保護(hù)的密鑰標(biāo)識(shí)符不被解密,而是直接用于檢索對(duì)應(yīng)的密鑰和/或證書(shū)。映射可以存儲(chǔ)在支持查找和/或存儲(chǔ)操作的表、文件、數(shù)據(jù)庫(kù)或任何其他合適的數(shù)據(jù)存儲(chǔ)器中。
“標(biāo)識(shí)符加密密鑰”或“標(biāo)識(shí)符解密密鑰”可以指可操作以加密或解密密鑰標(biāo)識(shí)符的任何加密密鑰。在一些實(shí)施方案中,標(biāo)識(shí)符加密密鑰可以與標(biāo)識(shí)符解密密鑰相同(例如,對(duì)稱加密密鑰)。例如,可以使用標(biāo)識(shí)符加密密鑰來(lái)加密密鑰標(biāo)識(shí)符(以及可選的其他數(shù)據(jù))以導(dǎo)出上述討論的受保護(hù)的密鑰標(biāo)識(shí)符。在一些實(shí)施方案中,可以使用某個(gè)公/私鑰對(duì)和/或其他合適的數(shù)據(jù)來(lái)確定標(biāo)識(shí)符加密密鑰。例如,在一些實(shí)施方案中,標(biāo)識(shí)符加密密鑰可以是公鑰和對(duì)應(yīng)的私鑰的點(diǎn)乘法的結(jié)果。在這種情況下,不需要獨(dú)立地管理標(biāo)識(shí)符加密密鑰,因?yàn)榭偸强梢詮默F(xiàn)有密鑰對(duì)中恢復(fù)標(biāo)識(shí)符加密密鑰。作為另一示例,標(biāo)識(shí)符加密密鑰可以是單獨(dú)維護(hù)(例如,存儲(chǔ)在客戶端計(jì)算機(jī)或服務(wù)器計(jì)算機(jī)的安全元件中)的加密密鑰。
在各種實(shí)施方案中,一個(gè)或多個(gè)標(biāo)識(shí)符加密密鑰可以在不同情況下由單個(gè)實(shí)體(例如,客戶端計(jì)算機(jī)或服務(wù)器計(jì)算機(jī))使用和/或維護(hù)。例如,第一標(biāo)識(shí)符加密密鑰可以用于根據(jù)第一協(xié)議或來(lái)自特定發(fā)送者的消息來(lái)加密/解密消息的密鑰標(biāo)識(shí)符。不同的第二標(biāo)識(shí)符加密密鑰可以用于根據(jù)第二協(xié)議或來(lái)自另一個(gè)發(fā)送者的消息來(lái)加密/解密消息的密鑰標(biāo)識(shí)符。
在一些實(shí)施方案中,包含在消息中的信息可以指示要使用哪個(gè)標(biāo)識(shí)符加密密鑰和/或如何導(dǎo)出標(biāo)識(shí)符加密密鑰。例如,消息a中的標(biāo)頭版本可以用于選擇第一默認(rèn)私/公鑰對(duì)來(lái)生成第一標(biāo)識(shí)符加密密鑰;而消息b中的不同標(biāo)頭版本可以用于選擇第二默認(rèn)私/公鑰對(duì)來(lái)生成第二不同標(biāo)識(shí)符加密密鑰。在一些實(shí)施方案中,對(duì)默認(rèn)私/公鑰對(duì)或標(biāo)識(shí)符加密密鑰的選擇可以基于消息的發(fā)送者的身份、憑證信息或任何其他合適的數(shù)據(jù)。
“一次性密鑰”是指用于僅一次保護(hù)單個(gè)交易或兩個(gè)實(shí)體(例如,客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī))之間的其他通信會(huì)話(例如,請(qǐng)求消息或響應(yīng)消息)的密鑰。例如,客戶端計(jì)算機(jī)可以使用第一客戶端密鑰來(lái)加密發(fā)送到服務(wù)器計(jì)算機(jī)的請(qǐng)求消息??梢杂煽蛻舳擞?jì)算機(jī)使用第一客戶端密鑰來(lái)解密由服務(wù)器計(jì)算機(jī)發(fā)送的與第一請(qǐng)求消息相對(duì)應(yīng)的響應(yīng)消息。然而,為了加密下一個(gè)請(qǐng)求消息,客戶端計(jì)算機(jī)可以使用第二不同的密鑰。因此,第一客戶端密鑰是用于僅保護(hù)來(lái)自客戶端的第一請(qǐng)求消息的一次性客戶端密鑰。類似地,可以使用一次性服務(wù)器密鑰來(lái)保護(hù)來(lái)自服務(wù)器計(jì)算機(jī)的單個(gè)響應(yīng)消息。
一次性密鑰可以包括為每個(gè)新的交易或通信會(huì)話重新生成的密鑰(也被稱為“短暫密鑰”)。另選地,可以從相同的基本或靜態(tài)密鑰生成多個(gè)一次性密鑰,該基本或靜態(tài)密鑰在多個(gè)交易或通信會(huì)話中保持不變??梢圆煌匦薷亩鄠€(gè)一次性密鑰中的每一個(gè)。例如,每個(gè)一次性密鑰可以使用不同的加密隨機(jī)數(shù)、識(shí)別因子或其他盲化因子被盲化,或者以其他方式被不同地模糊化。
一次性密鑰通常在交易或通信會(huì)話結(jié)束時(shí)被移除。然而,在一些實(shí)施方案中,一次性密鑰可以保持較長(zhǎng)的時(shí)間段。例如,在與服務(wù)器計(jì)算機(jī)的異步通信期間,客戶端計(jì)算機(jī)可以發(fā)送請(qǐng)求消息,但是可能在很長(zhǎng)一段時(shí)間內(nèi)不接收對(duì)應(yīng)的響應(yīng)消息,或者可能不按順序接收對(duì)應(yīng)的響應(yīng)消息(例如,在接收到對(duì)應(yīng)于稍后傳輸?shù)恼?qǐng)求消息的響應(yīng)消息之后)。在這種情況下,需要保存與較早請(qǐng)求相關(guān)聯(lián)的一次性密鑰并將其用于解密對(duì)應(yīng)的響應(yīng)消息?;就瑫r(shí)與多臺(tái)服務(wù)器計(jì)算機(jī)進(jìn)行通信的客戶端計(jì)算機(jī)也可能需要存儲(chǔ)與相應(yīng)的交易或通信會(huì)話相關(guān)聯(lián)的多個(gè)一次性私鑰,從而解密對(duì)應(yīng)的響應(yīng)消息。類似地,與多個(gè)客戶端計(jì)算機(jī)通信的服務(wù)器計(jì)算機(jī)還需要存儲(chǔ)與相應(yīng)的交易或通信會(huì)話相關(guān)聯(lián)的多個(gè)一次性密鑰。
“一次性密鑰對(duì)”可以包括私鑰和對(duì)應(yīng)的公鑰,其中兩個(gè)密鑰中的至少一個(gè)為每個(gè)新的交易或通信會(huì)話改變。密鑰對(duì)可以是任何合適的格式,例如基于橢圓曲線(ec)的密鑰或基于rsa的密鑰。在一個(gè)示例中,可以為每個(gè)新交易重新生成私鑰和對(duì)應(yīng)的公鑰。因此,一次性密鑰對(duì)包括短暫私鑰和短暫公鑰。在另一示例中,一次性密鑰對(duì)可以包括靜態(tài)私鑰和短暫公鑰,靜態(tài)私鑰對(duì)于多于一個(gè)交易保持相同,但每次不同地模糊化。在又一示例中,一次性密鑰對(duì)可以包括靜態(tài)公鑰和短暫私鑰,所述靜態(tài)公鑰對(duì)于多于一個(gè)交易保持相同但每次被不同地模糊化。在一些實(shí)施方案中,一次性密鑰對(duì)的私鑰和公鑰都是靜態(tài)的,但是對(duì)于每個(gè)新的通信會(huì)話,密鑰中的一個(gè)或兩個(gè)都可以被盲化、模糊化或以其他方式不同地修改。
“靜態(tài)密鑰對(duì)”可以包括在一段時(shí)間內(nèi)或?yàn)榻o定數(shù)量的交易或通信會(huì)話維護(hù)的公鑰(即“靜態(tài)公鑰”)和私鑰(即“靜態(tài)私鑰”)。通常但不一定,靜態(tài)私鑰可以被安全地存儲(chǔ)在諸如硬件安全模塊(hsm)或安全元件(se)中。通常但不一定,靜態(tài)公鑰可以通過(guò)使用數(shù)字證書(shū)綁定到身份。靜態(tài)密鑰對(duì)可以是任何適當(dāng)格式,諸如ecc或rsa。
“共享秘密”可以包括只對(duì)安全通信中的被授權(quán)方已知的任何數(shù)據(jù)值或其他信息。共享秘密可以以任何適當(dāng)方式由任何適當(dāng)數(shù)據(jù)生成。例如,可以使用基于diffie-hellman的算法(諸如橢圓曲線diffie-hellman(ecdh)),以由私鑰和公鑰生成共享秘密。請(qǐng)求共享秘密可以指用于保護(hù)請(qǐng)求消息的安全性的共享秘密。響應(yīng)共享秘密是指用于保護(hù)響應(yīng)消息的安全性的共享秘密。
在某些情況下,可以使用共享秘密來(lái)生成一個(gè)或多個(gè)密鑰。例如,可以使用共享秘密來(lái)生成用于保護(hù)整個(gè)請(qǐng)求或響應(yīng)消息的一個(gè)或多個(gè)會(huì)話密鑰或保護(hù)密鑰(下文將討論)。作為另一示例,可以使用共享秘密來(lái)生成多個(gè)密鑰,每個(gè)密鑰用于保護(hù)消息的一部分。
“會(huì)話密鑰”或“保護(hù)密鑰”可以指用于保護(hù)通信會(huì)話中的請(qǐng)求或響應(yīng)消息的至少一部分或任何其他類型數(shù)據(jù)的密鑰(例如,加密密鑰或解密密鑰)。請(qǐng)求會(huì)話密鑰是指用于保護(hù)請(qǐng)求消息的會(huì)話密鑰。響應(yīng)會(huì)話密鑰是指用于保護(hù)響應(yīng)消息的會(huì)話密鑰。會(huì)話密鑰可以基于共享秘密生成。例如,可以基于請(qǐng)求共享秘密來(lái)生成請(qǐng)求會(huì)話密鑰,以及可以基于響應(yīng)共享秘密生成響應(yīng)會(huì)話密鑰。
“協(xié)議數(shù)據(jù)”是指消息中的任何數(shù)據(jù),其指示如何加密、解密或以其他方式處理消息的有效載荷數(shù)據(jù)或任何其他類型的數(shù)據(jù)。協(xié)議數(shù)據(jù)可以包括密碼套件信息、數(shù)據(jù)描述符信息(例如,數(shù)據(jù)協(xié)議映射信息)或其他合適的數(shù)據(jù)。密碼套件可以指密鑰交換算法(例如,ecdhe_rsa)、加密算法、消息認(rèn)證碼、認(rèn)證算法和/或用于保護(hù)客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī)之間的通信的其他算法的命名組合。在一些實(shí)施方案中,協(xié)議數(shù)據(jù)還可以包括密鑰協(xié)商信息,諸如密鑰協(xié)商算法和用于建立共享秘密和/或生成密鑰的參數(shù)。在一些實(shí)施方案中,協(xié)議數(shù)據(jù)可以不包括密碼套件信息。相反,密碼套件信息可以被通信方(例如,客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī))硬編碼、固定和/或隱式地協(xié)議。
密碼套件可以定義信道強(qiáng)度(例如,128位、192位或256位)、密鑰導(dǎo)出函數(shù)(kdf)(例如,aes-128、aes-394或aes-256)、橢圓曲線密碼學(xué)(ecc)密鑰協(xié)商曲線或密鑰生成算法(例如,p-256、p-384或p-521)、塊密碼操作模式(例如,偏移碼本模式(ocb)、密鑰包裹、cbc-mac計(jì)數(shù)器模式(ccm)、eax、encrypt-then-mac(etm)或galois/countermode(gcm))、數(shù)字簽名算法(例如,橢圓曲線數(shù)字簽名算法(ecdsa)或數(shù)字簽名算法(dsa))、加密散列函數(shù)(例如,sha-256、sha-384或sha-512)、隨機(jī)數(shù)(例如,16字節(jié)、24字節(jié)或32字節(jié))等。
消息的發(fā)送者和接收者可以同意用于它們之間的通信的密碼套件。在某些情況下,客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī)可以交換一個(gè)或多個(gè)消息以協(xié)商并同意用于后續(xù)通信的密碼套件。例如,客戶端計(jì)算機(jī)可以在請(qǐng)求消息中向服務(wù)器計(jì)算機(jī)發(fā)送其支持的密碼套件的列表。密碼套件可以按照客戶端計(jì)算機(jī)的優(yōu)先級(jí)順序列出。例如,密碼套件列表中的第一密碼套件可能是客戶端計(jì)算機(jī)最優(yōu)選的,第二密碼套件對(duì)客戶端計(jì)算機(jī)可能不如第一密碼套件那么優(yōu)選,等等。請(qǐng)求消息可以不包括任何有效載荷數(shù)據(jù)。另選地,請(qǐng)求消息可以包括加密的或使用優(yōu)選密碼套件以其他方式編碼的有效載荷數(shù)據(jù)。作為響應(yīng),服務(wù)器計(jì)算機(jī)可以從客戶端計(jì)算機(jī)提供的密碼套件列表中選擇密碼套件,并將所選擇的密碼套件包括在響應(yīng)消息中。響應(yīng)消息可以不包括任何有效載荷數(shù)據(jù)。另選地,響應(yīng)消息可以包括加密的或使用選擇的密碼套件以其他方式編碼的有效載荷數(shù)據(jù)。
“有效載荷數(shù)據(jù)”或“應(yīng)用數(shù)據(jù)”是指由消息攜帶的“貨物”或內(nèi)容,而不僅僅是用于促進(jìn)消息的傳送或處理的消息中的標(biāo)頭、協(xié)議數(shù)據(jù)、元數(shù)據(jù)或其他類似數(shù)據(jù)。有效載荷數(shù)據(jù)的示例可以包括在供應(yīng)請(qǐng)求中發(fā)送的識(shí)別數(shù)據(jù)、來(lái)自服務(wù)器計(jì)算機(jī)的供應(yīng)響應(yīng)中的憑證數(shù)據(jù)、交易消息中的應(yīng)用或交易數(shù)據(jù)等。在一個(gè)典型的實(shí)施方案中,有效載荷數(shù)據(jù)包括優(yōu)選地保護(hù)防止未授權(quán)訪問(wèn)的敏感數(shù)據(jù)。
具體實(shí)施方式
本發(fā)明的實(shí)施方案涉及用于保密通信管理的系統(tǒng)和方法。
實(shí)施方案允許通信消息以安全的方式包括對(duì)任何一方使用的密鑰的不可追溯的引用(例如,受保護(hù)的密鑰標(biāo)識(shí)符),以確定用于保護(hù)(例如,加密或解密)請(qǐng)求或響應(yīng)消息的密鑰。例如,服務(wù)器計(jì)算機(jī)可以在到客戶端計(jì)算機(jī)的響應(yīng)消息中包括受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符可以包括識(shí)別用于加密響應(yīng)消息的服務(wù)器私鑰的服務(wù)器密鑰標(biāo)識(shí)符??蛻舳擞?jì)算機(jī)可以在后續(xù)請(qǐng)求中回傳受保護(hù)的服務(wù)器密鑰,使得服務(wù)器計(jì)算機(jī)可以識(shí)要?jiǎng)e用于解密請(qǐng)求消息的適當(dāng)?shù)姆?wù)器私鑰。
類似地,客戶端計(jì)算機(jī)可以在到服務(wù)器計(jì)算機(jī)的請(qǐng)求消息中包括受保護(hù)的客戶端密鑰標(biāo)識(shí)符。受保護(hù)的客戶端密鑰標(biāo)識(shí)符可以識(shí)別用于加密請(qǐng)求消息的客戶端私鑰。服務(wù)器計(jì)算機(jī)可以在響應(yīng)消息中回傳受保護(hù)的客戶端密鑰,使得客戶端計(jì)算機(jī)可以識(shí)別要用于解密響應(yīng)消息的適當(dāng)?shù)目蛻舳怂借€。對(duì)于當(dāng)消息是異步的時(shí)候,將響應(yīng)消息與對(duì)應(yīng)的請(qǐng)求和客戶端私鑰相匹配的能力是重要的。
實(shí)施方案還保護(hù)用于與有效載荷數(shù)據(jù)分開(kāi)加密/解密有效載荷數(shù)據(jù)的協(xié)議數(shù)據(jù)。敏感有效載荷數(shù)據(jù)可以使用一個(gè)或多個(gè)有效載荷加密密鑰進(jìn)行加密以生成加密的有效載荷數(shù)據(jù)。包括用于加密有效載荷數(shù)據(jù)的密碼套件的協(xié)議數(shù)據(jù)也可以使用一個(gè)或多個(gè)協(xié)議加密密鑰進(jìn)行加密。協(xié)議加密密鑰和有效載荷加密密鑰可以基于密鑰協(xié)商建立??梢栽谙⒅邪l(fā)送加密的協(xié)議數(shù)據(jù)和加密的有效載荷數(shù)據(jù)。
當(dāng)接收到消息時(shí),可以基于密鑰協(xié)商來(lái)導(dǎo)出協(xié)議數(shù)據(jù)解密密鑰和有效載荷解密密鑰??梢允褂脜f(xié)議解密密鑰來(lái)解密加密的協(xié)議數(shù)據(jù)以獲取協(xié)議數(shù)據(jù)(例如,密碼套件)??梢允褂脜f(xié)議數(shù)據(jù)和有效載荷解密密鑰來(lái)解密加密的有效載荷數(shù)據(jù)。
在一些情況下,有效載荷數(shù)據(jù)可以包括多個(gè)有效載荷元素,每個(gè)有效載荷元素可以使用不同的加密密鑰單獨(dú)地加密。在這種情況下,可以根據(jù)需要對(duì)加密的有效載荷元素進(jìn)行解密以改進(jìn)數(shù)據(jù)安全性。
i.i.系統(tǒng)
圖1說(shuō)明了根據(jù)一些實(shí)施方案的客戶端計(jì)算機(jī)101和服務(wù)器計(jì)算機(jī)102之間的通信??蛻舳擞?jì)算機(jī)101和服務(wù)器計(jì)算機(jī)102都可以是任何合適的計(jì)算設(shè)備(例如,主機(jī)、臺(tái)式或膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、移動(dòng)設(shè)備、可穿戴設(shè)備等)。
如圖1中所示,客戶端計(jì)算機(jī)101可以向服務(wù)器計(jì)算機(jī)102發(fā)送請(qǐng)求消息。請(qǐng)求消息可以是任何合適的形式。例如,在各種實(shí)施方案中,請(qǐng)求消息可以是一個(gè)或多個(gè)tcp/ip分組、http請(qǐng)求消息、或以任何其他合適的格式。通常,請(qǐng)求消息可以包括受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符,其識(shí)別與服務(wù)器計(jì)算機(jī)相關(guān)聯(lián)的公鑰或證書(shū)。請(qǐng)求消息還可以包括加密的協(xié)議數(shù)據(jù)和加密的有效載荷數(shù)據(jù)。加密的協(xié)議數(shù)據(jù)可以包括受保護(hù)的客戶端密鑰標(biāo)識(shí)符以允許客戶端計(jì)算機(jī)匹配異步請(qǐng)求和響應(yīng)。
服務(wù)器計(jì)算機(jī)102可以處理請(qǐng)求消息。服務(wù)器計(jì)算機(jī)102可以從請(qǐng)求消息中的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符來(lái)確定服務(wù)器密鑰標(biāo)識(shí)符。可以基于服務(wù)器密鑰標(biāo)識(shí)符來(lái)選擇對(duì)應(yīng)的服務(wù)器私鑰,并將其用于生成一個(gè)或多個(gè)會(huì)話密鑰。一些會(huì)話密鑰可用于解密請(qǐng)求消息中的加密協(xié)議數(shù)據(jù)以獲取協(xié)議數(shù)據(jù)。一些其他會(huì)話密鑰可以用于根據(jù)協(xié)議數(shù)據(jù)解密加密的有效載荷數(shù)據(jù)。
服務(wù)器計(jì)算機(jī)102可以生成響應(yīng)數(shù)據(jù)以發(fā)送給客戶端計(jì)算機(jī)101。響應(yīng)可以包括受保護(hù)的客戶端密鑰標(biāo)識(shí)符。響應(yīng)還可以包括要在后續(xù)請(qǐng)求中使用的新的受保護(hù)的密鑰標(biāo)識(shí)符。此外,響應(yīng)可以包括加密的協(xié)議數(shù)據(jù)和加密的有效載荷數(shù)據(jù)。
客戶端計(jì)算機(jī)101可以從響應(yīng)消息中的受保護(hù)的客戶端密鑰標(biāo)識(shí)符確定客戶端密鑰標(biāo)識(shí)符,并且選擇對(duì)應(yīng)的客戶端私鑰。可以使用客戶端私鑰生成一個(gè)或多個(gè)會(huì)話密鑰。一些會(huì)話密鑰可用于解密響應(yīng)消息中的加密協(xié)議數(shù)據(jù)以獲取協(xié)議數(shù)據(jù)。一些其他會(huì)話密鑰可以用于根據(jù)協(xié)議數(shù)據(jù)解密加密的有效載荷數(shù)據(jù)。
ii.保密密鑰識(shí)別
圖2-圖9描述了用于保護(hù)客戶端和服務(wù)器之間的通信中的密鑰識(shí)別的方法。具體地,根據(jù)所描述的方法的實(shí)施方案可以允許通信消息以安全的方式包括客戶端或服務(wù)器使用的密鑰的標(biāo)識(shí)符。通信消息中的密鑰的規(guī)范可以增加每個(gè)消息中包括的信息量,從而減少了對(duì)認(rèn)證交易所需消息的總數(shù)。例如,實(shí)施方案允許在單個(gè)請(qǐng)求消息和響應(yīng)消息對(duì)中建立客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī)之間的認(rèn)證。此外,通過(guò)將對(duì)由任一方使用的密鑰的不可追溯的引用(例如,受保護(hù)的密鑰標(biāo)識(shí)符)包括在通信消息中來(lái)改進(jìn)通信的安全性,使得只有預(yù)期方才可以確定與受保護(hù)的密鑰標(biāo)識(shí)符相關(guān)聯(lián)的密鑰。密鑰標(biāo)識(shí)符以此方式保護(hù)在消息中,使得即使消息被攔截,與密鑰標(biāo)識(shí)符相關(guān)聯(lián)的密鑰仍然保密。因此,實(shí)施方案改進(jìn)了通信的安全性而不犧牲效率。
a.請(qǐng)求消息生成方法
圖2說(shuō)明了根據(jù)一些實(shí)施方案的用于生成和發(fā)送請(qǐng)求消息的示例性過(guò)程200。通常,過(guò)程200可以由客戶端計(jì)算機(jī)(諸如,客戶端計(jì)算機(jī)101)執(zhí)行,以便向服務(wù)器計(jì)算機(jī)(例如,服務(wù)器計(jì)算機(jī)102)發(fā)送消息。過(guò)程200中的一些或所有方面(或本文中描述的任何其他過(guò)程或其變形和/或組合)可以在配置有可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)/控制系統(tǒng)的控制下執(zhí)行,且可以實(shí)施為通過(guò)硬件或其組合在一個(gè)或多個(gè)處理器上共同執(zhí)行的代碼(例如可執(zhí)行指令、一個(gè)或多個(gè)計(jì)算機(jī)程序或一個(gè)或多個(gè)應(yīng)用)。代碼可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上,例如呈包括可由一個(gè)或多個(gè)處理器執(zhí)行的多個(gè)指令的計(jì)算機(jī)程序的形式。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是非瞬態(tài)的。描述操作的順序不旨在被解讀為是限制,任何數(shù)目的被描述操作可以以任何順序和/或并行地組合以執(zhí)行過(guò)程。
在框202處,確定一次性客戶端密鑰對(duì)。一次性客戶端密鑰可以包括由客戶端計(jì)算機(jī)為每個(gè)新請(qǐng)求生成的短暫私鑰和短暫公鑰。另選地,一次性客戶端密鑰可以包括靜態(tài)私有和/或靜態(tài)公鑰,其被盲化、模糊化或以其他方式不同地修改,從而為每個(gè)新請(qǐng)求生成不同的盲化密鑰。例如,可以對(duì)具有一些其他數(shù)據(jù)元素(例如,隨機(jī)數(shù)、密碼隨機(jī)數(shù)、識(shí)別因子、交易數(shù)據(jù)等)的靜態(tài)客戶端公鑰執(zhí)行點(diǎn)乘法,以便為每個(gè)請(qǐng)求修改客戶端公鑰的值。
在一些實(shí)施方案中,客戶端計(jì)算機(jī)可以配置成與一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)進(jìn)行通信。因此,客戶端計(jì)算機(jī)可以為一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)的一些或全部維護(hù)一個(gè)或多個(gè)一次性客戶端密鑰對(duì)集。一個(gè)或多個(gè)客戶端密鑰對(duì)集中的每個(gè)客戶端密鑰對(duì)對(duì)應(yīng)于發(fā)送給給定服務(wù)器計(jì)算機(jī)的特定請(qǐng)求。一次性客戶端密鑰對(duì)可以被確定為與特定服務(wù)器計(jì)算機(jī)的特定請(qǐng)求消息相關(guān)聯(lián)。在一些實(shí)施方案中,諸如用于異步通信,客戶端計(jì)算機(jī)可以為給定服務(wù)器計(jì)算機(jī)存儲(chǔ)先前發(fā)送的請(qǐng)求消息的一定數(shù)量的先前生成的客戶端密鑰對(duì),以便能夠解密與先前發(fā)送的請(qǐng)求消息對(duì)應(yīng)的無(wú)序響應(yīng)消息。先前生成的客戶端密鑰對(duì)的集合的大小可以由預(yù)定的最大數(shù)量(例如,10)限制。
在框204處,確定是否存在受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。在一個(gè)實(shí)施方案中,客戶端計(jì)算機(jī)可以存儲(chǔ)從一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)的先前響應(yīng)消息中接收到的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)中的每一個(gè)可以與一個(gè)或多個(gè)受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符集相關(guān)聯(lián),其中的一些或全部可以從相關(guān)聯(lián)的服務(wù)器計(jì)算機(jī)的先前響應(yīng)消息中接收。每個(gè)受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符可以與特定的服務(wù)器公鑰和/或私鑰相關(guān)聯(lián)。服務(wù)器計(jì)算機(jī)與受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符之間的映射以及受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符與對(duì)應(yīng)的服務(wù)器公鑰和/或證書(shū)之間的映射可以被存儲(chǔ)在與客戶端計(jì)算機(jī)相關(guān)聯(lián)的表、數(shù)據(jù)庫(kù)或任何其他合適的數(shù)據(jù)存儲(chǔ)器中。這樣的映射可以用于確定是否存在要向其發(fā)送請(qǐng)求消息的給定服務(wù)器計(jì)算機(jī)的任何受保護(hù)的服務(wù)器標(biāo)識(shí)符(并且因此,服務(wù)器公鑰或證書(shū))。這種受保護(hù)的服務(wù)器標(biāo)識(shí)符的存在指示客戶端計(jì)算機(jī)先前已經(jīng)從服務(wù)器計(jì)算機(jī)接收到響應(yīng)消息,并且從這些響應(yīng)消息中提取出受保護(hù)的服務(wù)器標(biāo)識(shí)符。這種受保護(hù)的服務(wù)器標(biāo)識(shí)符的缺少可以指示客戶端計(jì)算機(jī)從未從服務(wù)器計(jì)算機(jī)接收到響應(yīng)消息,或者在預(yù)定時(shí)間段內(nèi)沒(méi)有從服務(wù)器計(jì)算機(jī)接收到響應(yīng)消息。
如果在框204處確定服務(wù)器計(jì)算機(jī)存在一個(gè)或多個(gè)受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符,則在框206處,從一個(gè)或多個(gè)受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符檢索受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。通常,選擇與來(lái)自服務(wù)器計(jì)算機(jī)的最近發(fā)送的響應(yīng)消息相關(guān)聯(lián)的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。在某些情況下,當(dāng)無(wú)序接收響應(yīng)消息時(shí),服務(wù)器計(jì)算機(jī)最近發(fā)送的響應(yīng)消息不一定必須是客戶端計(jì)算機(jī)最近收到的響應(yīng)消息。
在框208處,可以檢索與檢索到的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符相關(guān)聯(lián)的服務(wù)器公鑰或證書(shū)。在一些實(shí)施方案中,受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符和對(duì)應(yīng)的服務(wù)器公鑰或證書(shū)在相同的響應(yīng)消息中被接收。在一些其他實(shí)施方案中,受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符和對(duì)應(yīng)的服務(wù)器公鑰或證書(shū)在不同的響應(yīng)消息中被接收。在一些情況下,可以在與用于請(qǐng)求/響應(yīng)消息的通信信道相同或不同的通信信道(例如,電子郵件、文本)中接收受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符和/或相關(guān)聯(lián)的服務(wù)器公鑰或證書(shū)。
最近發(fā)送的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符及其相關(guān)聯(lián)的服務(wù)器公鑰或證書(shū)可以指示由服務(wù)器計(jì)算機(jī)執(zhí)行的最新密鑰更新或密鑰輪轉(zhuǎn)。通過(guò)將新的服務(wù)器公鑰或證書(shū)以及相關(guān)聯(lián)的新的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符包括在響應(yīng)消息中,服務(wù)器計(jì)算機(jī)通知客戶端計(jì)算機(jī)與服務(wù)器計(jì)算機(jī)的后續(xù)通信應(yīng)該使用新的服務(wù)器公鑰或證書(shū)而不是一個(gè)舊的公鑰或證書(shū)。在一些實(shí)施方案中,服務(wù)器計(jì)算機(jī)可以使用新的公鑰或證書(shū)來(lái)加密當(dāng)前響應(yīng)消息中的請(qǐng)求數(shù)據(jù)。因此,客戶端計(jì)算機(jī)可以使用新的公鑰或證書(shū)來(lái)解密當(dāng)前的響應(yīng)消息。
如果在框204處確定服務(wù)器計(jì)算機(jī)不存在受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符,則可以在框210處生成隨機(jī)密鑰標(biāo)識(shí)符(也稱為偽密鑰標(biāo)識(shí)符)以作為受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。隨機(jī)密鑰標(biāo)識(shí)符可能不識(shí)別任何現(xiàn)有的服務(wù)器公鑰或服務(wù)器證書(shū)。隨機(jī)密鑰標(biāo)識(shí)符可以包括使用任何合適的隨機(jī)化或偽隨機(jī)化算法生成的數(shù)據(jù)。在一些實(shí)施方案中,隨機(jī)密鑰標(biāo)識(shí)符可以被格式化,使得對(duì)于接收服務(wù)器計(jì)算機(jī)來(lái)說(shuō)密鑰標(biāo)識(shí)符是隨機(jī)的是顯而易見(jiàn)的。在一些實(shí)施方案中,通過(guò)對(duì)受保護(hù)的密鑰標(biāo)識(shí)符的竊聽(tīng)者,隨機(jī)密鑰標(biāo)識(shí)符可能對(duì)于隨機(jī)值是無(wú)法區(qū)分的。
在[0081]框212處,確定默認(rèn)或初始服務(wù)器公鑰或證書(shū)。默認(rèn)的服務(wù)器數(shù)字密鑰或證書(shū)可以包括在通信中使用的任何服務(wù)器公鑰或服務(wù)器證書(shū),其中先前沒(méi)有其他公鑰或證書(shū)被定義為在客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī)之間使用。默認(rèn)數(shù)字證書(shū)可以包括公鑰(即,默認(rèn)公鑰)。在某些情況下,在從客戶端計(jì)算機(jī)發(fā)送第一請(qǐng)求到服務(wù)器計(jì)算機(jī)期間,可以使用默認(rèn)數(shù)字證書(shū)。在一些實(shí)施方案中,可以將默認(rèn)數(shù)字證書(shū)預(yù)加載到客戶端計(jì)算機(jī)上,以及可以將與默認(rèn)數(shù)字證書(shū)(即,默認(rèn)私鑰)相關(guān)聯(lián)的私鑰加載到服務(wù)器計(jì)算機(jī)上。在一些實(shí)施方案中,默認(rèn)服務(wù)器證書(shū)或公鑰可以在與用于請(qǐng)求/響應(yīng)消息的通信信道相同或不同的通信信道(例如,電子郵件、文本)中提供給客戶端計(jì)算機(jī)。在一些實(shí)施方案中,要使用的默認(rèn)數(shù)字證書(shū)可以取決于密鑰協(xié)商協(xié)議(例如,基于協(xié)議的版本號(hào))而變化。
在步驟210處生成的隨機(jī)受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符可以被包括在要發(fā)送到服務(wù)器計(jì)算機(jī)的請(qǐng)求消息中以指示客戶端計(jì)算機(jī)使用了默認(rèn)或初始服務(wù)器公鑰并且服務(wù)器計(jì)算機(jī)也應(yīng)該這樣做。
在框214處,使用在框202處確定的一次性客戶端私鑰和在208處或212處確定的服務(wù)器公鑰或證書(shū)來(lái)生成請(qǐng)求共享秘密。請(qǐng)求共享秘密可以用來(lái)保護(hù)(例如加密和/或解密)請(qǐng)求消息,如下文討論的。在一些實(shí)施方案中,服務(wù)器公鑰可以從服務(wù)器計(jì)算機(jī)的數(shù)字證書(shū)確定,其可以先前由客戶端設(shè)備獲取(例如,來(lái)自服務(wù)器計(jì)算機(jī)或來(lái)自某個(gè)其他信道的響應(yīng)消息)。
可以使用任何合適的方法來(lái)生成請(qǐng)求共享秘密。例如,在使用橢圓曲線密碼學(xué)的實(shí)施方案中,可以使用橢圓曲線diffie-hellman協(xié)議(ecdh)確定共享秘密。
另外地和/或另選地,可以使用附加數(shù)據(jù)來(lái)生成請(qǐng)求共享秘密。這樣的附加數(shù)據(jù)可以包括使用識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)計(jì)算的識(shí)別因子。識(shí)別數(shù)據(jù)可以包括與用戶或客戶端設(shè)備相關(guān)聯(lián)的任何數(shù)據(jù)或信息。識(shí)別數(shù)據(jù)的示例可以包括與客戶端設(shè)備相關(guān)聯(lián)的用戶的姓名、與客戶端設(shè)備相關(guān)聯(lián)的組織、與客戶端設(shè)備相關(guān)聯(lián)的支付信息(諸如主賬號(hào)(pan)或令牌)、與pan或令牌相關(guān)聯(lián)的到期日期、與客戶端設(shè)備相關(guān)聯(lián)的證書(shū)、客戶端設(shè)備的imei或序列號(hào)等。認(rèn)證數(shù)據(jù)可以包括適合于認(rèn)證用戶或客戶端設(shè)備的任何數(shù)據(jù)或信息。認(rèn)證數(shù)據(jù)的實(shí)例可以包括口令或口令短語(yǔ)、秘密密鑰(例如,私鑰)等。識(shí)別因子可以包括從識(shí)別數(shù)據(jù)和/或認(rèn)證數(shù)據(jù)確定的任何數(shù)據(jù)或信息。例如,在一些實(shí)施方案中,可以通過(guò)對(duì)識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)的組合求散列生成識(shí)別因子。
在框216處,可選地確定受保護(hù)的客戶端密鑰標(biāo)識(shí)符。受保護(hù)的客戶端密鑰標(biāo)識(shí)符對(duì)應(yīng)于一次性客戶端密鑰對(duì)的私鑰、一次性客戶端密鑰對(duì)的公鑰或兩者。在某些情況下,確定受保護(hù)的客戶端密鑰標(biāo)識(shí)符可以包括生成隨機(jī)或偽隨機(jī)數(shù)據(jù)以作為受保護(hù)的客戶端密鑰標(biāo)識(shí)符。在一些其他情況下,確定受保護(hù)的客戶端密鑰標(biāo)識(shí)符可以包括使用加密密鑰加密客戶端密鑰標(biāo)識(shí)符??蛻舳嗣荑€標(biāo)識(shí)符或受保護(hù)的客戶端密鑰標(biāo)識(shí)符可以與一次性客戶端密鑰對(duì)的私鑰、一次性客戶端密鑰對(duì)的公鑰或兩者相關(guān)聯(lián)。可以在客戶端設(shè)備的表、數(shù)據(jù)庫(kù)或類似數(shù)據(jù)存儲(chǔ)器中維護(hù)映射。
當(dāng)服務(wù)器計(jì)算機(jī)在請(qǐng)求消息中接收到受保護(hù)的客戶端標(biāo)識(shí)符時(shí),它可以將受保護(hù)的客戶端標(biāo)識(shí)符包括在對(duì)應(yīng)的響應(yīng)消息中,使得客戶端計(jì)算機(jī)知道要使用哪個(gè)一次性客戶端私鑰來(lái)解密響應(yīng)消息(如下面討論的)。因此,客戶端計(jì)算機(jī)可以使用受保護(hù)的客戶端標(biāo)識(shí)符來(lái)映射請(qǐng)求和響應(yīng)消息,例如在異步通信期間。在一些實(shí)施方案中,框216可以是可選的,并且請(qǐng)求消息可以不包括任何受保護(hù)的客戶端密鑰標(biāo)識(shí)符。
在框218處,使用請(qǐng)求共享秘密來(lái)加密請(qǐng)求數(shù)據(jù)。請(qǐng)求數(shù)據(jù)可選地包括在框216處確定的受保護(hù)的客戶端密鑰標(biāo)識(shí)符。
在一些實(shí)施方案中,可以基于請(qǐng)求共享秘密生成請(qǐng)求會(huì)話密鑰。請(qǐng)求會(huì)話密鑰可以用于加密請(qǐng)求數(shù)據(jù)。請(qǐng)求會(huì)話密鑰可以使用請(qǐng)求共享秘密和其他合適的補(bǔ)充數(shù)據(jù)(諸如密鑰導(dǎo)出數(shù)據(jù),如果有的話)生成。請(qǐng)求會(huì)話密鑰也可以被稱為消息保護(hù)密鑰,因?yàn)樗糜诒Wo(hù)客戶端設(shè)備和服務(wù)器計(jì)算機(jī)之間的消息。此類補(bǔ)充數(shù)據(jù)的示例可以包括服務(wù)器計(jì)算機(jī)標(biāo)識(shí)符和/或截?cái)嗟囊淮涡钥蛻舳斯€。
請(qǐng)求會(huì)話密鑰可以是任何適當(dāng)格式(例如,aes、des、blowfish等)、任何適當(dāng)長(zhǎng)度,并且使用任何適當(dāng)?shù)拿荑€導(dǎo)出函數(shù)(kdf)生成。例如,在一個(gè)實(shí)施方案中,請(qǐng)求會(huì)話密鑰可以使用基于口令的密鑰導(dǎo)出函數(shù)2(pbkdf2)算法生成。在一些實(shí)施方案中,其他客戶端計(jì)算機(jī)數(shù)據(jù)(諸如客戶端設(shè)備標(biāo)識(shí)符)可以用作到密鑰導(dǎo)出函數(shù)的附加輸入。
在框220處,請(qǐng)求消息被發(fā)送到服務(wù)器計(jì)算機(jī)。請(qǐng)求消息包括加密的請(qǐng)求數(shù)據(jù)和受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符可以是在框206處檢索到的真實(shí)的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符或是在框210處確定的隨機(jī)密鑰標(biāo)識(shí)符。請(qǐng)求消息還可以包括一次性客戶端公鑰,其可以被盲化或不被盲化。請(qǐng)求消息還可以包括指示如何解密受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符的信息。例如,請(qǐng)求消息可以包括協(xié)議版本號(hào),其可以由接收服務(wù)器計(jì)算機(jī)使用來(lái)選擇用于解密受保護(hù)的服務(wù)器標(biāo)識(shí)符的默認(rèn)服務(wù)器密鑰。
在一些實(shí)施方案中,請(qǐng)求消息還可以包括識(shí)別數(shù)據(jù)、客戶端計(jì)算機(jī)標(biāo)識(shí)符、認(rèn)證數(shù)據(jù)以及意圖用于服務(wù)器計(jì)算機(jī)的任何其他合適的數(shù)據(jù)。例如,該請(qǐng)求數(shù)據(jù)還可以包括客戶端配置信息和/或服務(wù)的指令。在一些示例中,此類信息可以由不先驗(yàn)地包括用于強(qiáng)認(rèn)證的構(gòu)件的客戶端設(shè)備提供。在一些實(shí)施方案中,請(qǐng)求消息在到達(dá)服務(wù)器計(jì)算機(jī)之前可以傳遞通過(guò)一個(gè)或多個(gè)中間方(例如不受信網(wǎng)絡(luò))。
b.請(qǐng)求消息處理方法
圖3說(shuō)明了根據(jù)一些實(shí)施方案的用于接收和處理請(qǐng)求消息的示例性過(guò)程300。通常,過(guò)程300可以由服務(wù)器計(jì)算機(jī)(例如,服務(wù)器計(jì)算機(jī)102)響應(yīng)于從客戶端計(jì)算機(jī)(例如,客戶端計(jì)算機(jī)101)接收到請(qǐng)求消息來(lái)執(zhí)行。然而,在各種實(shí)施方案中,方法300的一些或全部可以由另一實(shí)體執(zhí)行。
在框302處,接收包括受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符和加密的請(qǐng)求數(shù)據(jù)的請(qǐng)求消息。通常,從客戶端計(jì)算機(jī)接收請(qǐng)求消息。此外,應(yīng)當(dāng)注意,盡管使用了術(shù)語(yǔ)“受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符”,但是在一些實(shí)施方案中,從接收的數(shù)據(jù)來(lái)看數(shù)據(jù)是否是隨機(jī)密鑰標(biāo)識(shí)符或受保護(hù)的密鑰標(biāo)識(shí)符不是直接顯而易見(jiàn)的。請(qǐng)求消息還可以包括一次性客戶端公鑰和可選地受保護(hù)的客戶端密鑰標(biāo)識(shí)符。
在框304處,使用標(biāo)識(shí)符加密密鑰來(lái)解密受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符以確定服務(wù)器密鑰標(biāo)識(shí)符。標(biāo)識(shí)符加密密鑰可以包括可操作以加密和解密密鑰標(biāo)識(shí)符的任何加密密鑰。在一些實(shí)施方案中,可以使用默認(rèn)公/私鑰對(duì)和/或其他合適的數(shù)據(jù)來(lái)確定標(biāo)識(shí)符加密密鑰。例如,在一些實(shí)施方案中,標(biāo)識(shí)符加密密鑰可以是默認(rèn)公鑰和默認(rèn)私鑰的點(diǎn)乘法的結(jié)果。在這種情況下,服務(wù)器計(jì)算機(jī)不需要獨(dú)立地管理標(biāo)識(shí)符加密密鑰,因?yàn)榭偸强梢詮默F(xiàn)有密鑰對(duì)中恢復(fù)標(biāo)識(shí)符加密密鑰。作為另一示例,標(biāo)識(shí)符加密密鑰是由服務(wù)器計(jì)算機(jī)維護(hù)的加密密鑰(例如,在安全存儲(chǔ)器中)。
在一些實(shí)施方案中,請(qǐng)求消息可以包括指示如何解密受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符的信息。例如,請(qǐng)求消息可以包括版本號(hào)或其他合適信息,其可由服務(wù)器計(jì)算機(jī)用于從多個(gè)默認(rèn)公/私鑰對(duì)中選擇默認(rèn)公/私鑰對(duì)以解密受保護(hù)服務(wù)器標(biāo)識(shí)符,或以其他方式識(shí)別標(biāo)識(shí)符加密密鑰。
在框306處,確定服務(wù)器密鑰標(biāo)識(shí)符是否有效。有效的服務(wù)器密鑰標(biāo)識(shí)符對(duì)應(yīng)于有效的服務(wù)器公鑰或證書(shū)、有效的服務(wù)器私鑰或兩者。服務(wù)器密鑰標(biāo)識(shí)符可用于查找由服務(wù)器計(jì)算機(jī)維護(hù)的表或數(shù)據(jù)庫(kù)中的現(xiàn)有服務(wù)器公鑰或證書(shū)或服務(wù)器私鑰。如果查找產(chǎn)生了命中,則服務(wù)器密鑰標(biāo)識(shí)符可以被認(rèn)為是有效的。否則,服務(wù)器密鑰標(biāo)識(shí)符可以被確定為是無(wú)效的。在一些實(shí)施方案中,受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符的解密除了服務(wù)器密鑰標(biāo)識(shí)符(諸如填充和/或隨機(jī)數(shù))之外還產(chǎn)生附加數(shù)據(jù)。填充可用于驗(yàn)證密鑰標(biāo)識(shí)符的真實(shí)性和/或完整性。例如,填充可以包括密鑰標(biāo)識(shí)符的消息認(rèn)證碼和/或附加數(shù)據(jù)。另選地,填充可以是常數(shù)或已知的數(shù)據(jù)元素。在受保護(hù)的密鑰標(biāo)識(shí)符的解密結(jié)果中填充數(shù)據(jù)元素的存在可以指示密鑰標(biāo)識(shí)符的有效性或完整性(例如,密鑰標(biāo)識(shí)符來(lái)自受信源和/或密鑰標(biāo)識(shí)符尚未被改變)。在一些其他實(shí)施方案中,填充可以包括密鑰標(biāo)識(shí)符的消息認(rèn)證碼(mac)或者以其他方式基于密鑰標(biāo)識(shí)符生成。
如果在框306處確定服務(wù)器密鑰標(biāo)識(shí)符是有效的,則在框308處檢索與服務(wù)器密鑰標(biāo)識(shí)符相關(guān)聯(lián)的服務(wù)器私鑰。在一些實(shí)施方案中,服務(wù)器密鑰標(biāo)識(shí)符用于檢索公鑰或證書(shū)。然后檢索與公鑰或證書(shū)相對(duì)應(yīng)的私鑰。例如,如果服務(wù)器密鑰標(biāo)識(shí)符是序列號(hào),則檢索具有序列號(hào)的數(shù)字證書(shū)。在另一示例中,如果密鑰標(biāo)識(shí)符是公鑰,則確定具有公鑰的數(shù)字證書(shū)。在一些其他實(shí)施方案中,服務(wù)器密鑰標(biāo)識(shí)符被直接用于檢索對(duì)應(yīng)的私鑰。密鑰標(biāo)識(shí)符和對(duì)應(yīng)的公鑰、證書(shū)和/或私鑰之間的映射可以存儲(chǔ)在由服務(wù)器計(jì)算機(jī)維護(hù)的表或數(shù)據(jù)庫(kù)中。在一些實(shí)施方案中,可以從服務(wù)器計(jì)算機(jī)上的安全元件或硬件安全模塊(hsm)檢索私鑰。
如果在框306處確定服務(wù)器密鑰標(biāo)識(shí)符是無(wú)效的,則在框310處檢索默認(rèn)服務(wù)器私鑰。例如,從受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符的解密獲取的服務(wù)器密鑰標(biāo)識(shí)符可能不對(duì)應(yīng)于任何現(xiàn)有的服務(wù)器公鑰、證書(shū)或私鑰。另選地或另外地,服務(wù)器密鑰標(biāo)識(shí)符的驗(yàn)證可能由于缺少預(yù)期的常量填充或者由于密鑰標(biāo)識(shí)符的mac的不匹配而失敗。在這種情況下,可以檢索默認(rèn)私鑰。
在框312處,使用在框308處或框310處檢索到的服務(wù)器私鑰對(duì)加密的請(qǐng)求數(shù)據(jù)進(jìn)行解密。在一些實(shí)施方案中,使用服務(wù)器私鑰和一次性客戶端公鑰來(lái)確定請(qǐng)求共享秘密。一次性客戶端公鑰可能已經(jīng)由請(qǐng)求消息提供。一次性客戶端公鑰可以被盲化或不盲化或以其他方式模糊化。在一些實(shí)施方案中,基于請(qǐng)求共享秘密來(lái)確定請(qǐng)求會(huì)話密鑰??梢允褂谜?qǐng)求會(huì)話密鑰對(duì)請(qǐng)求消息的加密的請(qǐng)求數(shù)據(jù)進(jìn)行解密。請(qǐng)求共享秘密和請(qǐng)求會(huì)話密鑰的確定可以類似于圖2的框214中所描述的。
在框314處,可以從請(qǐng)求數(shù)據(jù)中可選地獲取受保護(hù)的客戶端密鑰標(biāo)識(shí)符。受保護(hù)的客戶端密鑰標(biāo)識(shí)符可以類似于上面在圖2中所描述的。在一些實(shí)施方案中,請(qǐng)求消息可以不包括受保護(hù)的客戶端密鑰標(biāo)識(shí)符。
在一些實(shí)施方案中,服務(wù)器計(jì)算機(jī)可以基于包括在請(qǐng)求消息中的數(shù)據(jù)來(lái)執(zhí)行進(jìn)一步的處理。例如,服務(wù)器計(jì)算可以從請(qǐng)求消息中獲取識(shí)別數(shù)據(jù)、客戶端計(jì)算機(jī)標(biāo)識(shí)符、認(rèn)證數(shù)據(jù)以及任何其他合適的數(shù)據(jù)。
服務(wù)器計(jì)算機(jī)可以使用請(qǐng)求數(shù)據(jù)認(rèn)證客戶端計(jì)算機(jī)。可以使用客戶端計(jì)算機(jī)標(biāo)識(shí)符驗(yàn)證識(shí)別數(shù)據(jù)。例如,在一些實(shí)施方案中,客戶端計(jì)算機(jī)標(biāo)識(shí)符可以用來(lái)從設(shè)備數(shù)據(jù)庫(kù)檢索對(duì)應(yīng)的識(shí)別數(shù)據(jù)。然后可以把解密的識(shí)別數(shù)據(jù)與接收的識(shí)別數(shù)據(jù)比較來(lái)驗(yàn)證解密的識(shí)別數(shù)據(jù)。在一些實(shí)施方案中,識(shí)別數(shù)據(jù)可以包括客戶端計(jì)算機(jī)標(biāo)識(shí)符。
可以檢索與客戶端計(jì)算機(jī)標(biāo)識(shí)符和/或識(shí)別數(shù)據(jù)相關(guān)聯(lián)的認(rèn)證數(shù)據(jù)。認(rèn)證數(shù)據(jù)可以包括適合于認(rèn)證用戶或客戶端計(jì)算機(jī)的任何數(shù)據(jù)或信息。認(rèn)證數(shù)據(jù)的實(shí)例可以包括口令或口令短語(yǔ)、秘密密鑰(例如,私鑰)等。在一些實(shí)施方案中,可以從設(shè)備數(shù)據(jù)庫(kù)檢索認(rèn)證數(shù)據(jù)。
可以使用不檢索的認(rèn)證數(shù)據(jù)和識(shí)別數(shù)據(jù)來(lái)生成識(shí)別因子。識(shí)別因子可以包括從識(shí)別數(shù)據(jù)和/或認(rèn)證數(shù)據(jù)確定的任何數(shù)據(jù)或信息。例如,在一些實(shí)施方案中,可以通過(guò)對(duì)識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)的組合求散列生成識(shí)別因子。
可以驗(yàn)證一次性客戶端公鑰以確保一次性客戶端公鑰與預(yù)期值匹配。例如,在一些情況下,可以使用從解密的請(qǐng)求數(shù)據(jù)提取的一次性公鑰以及上面確定的識(shí)別因子來(lái)生成盲化的一次性公鑰。然后將盲化的一次性公鑰與作為請(qǐng)求消息的一部分(例如,在請(qǐng)求消息的明文部分中)被接收的一次性公鑰進(jìn)行比較,以確保密鑰匹配。如果密鑰匹配,則可以認(rèn)證客戶端計(jì)算機(jī)。否則,認(rèn)證可能失敗。
應(yīng)當(dāng)注意,這種認(rèn)證方法(即驗(yàn)證組合的短暫密鑰)提供這樣的優(yōu)點(diǎn),即不需要以明文甚至以加密形式傳輸可能是敏感的認(rèn)證數(shù)據(jù)。因此,即便服務(wù)器私鑰稍后受到損害(然而不太可能),明文認(rèn)證數(shù)據(jù)也不會(huì)被暴露。此外,由于密鑰的盲化通常是不可逆的,即便同時(shí)具有盲化的客戶端公鑰和未盲化的客戶端公鑰(例如短暫公鑰)的知識(shí),攻擊者也不能導(dǎo)出識(shí)別因子,更不用說(shuō)用來(lái)生成識(shí)別因子的認(rèn)證數(shù)據(jù)。
在一些實(shí)施方案中,請(qǐng)求數(shù)據(jù)可以包括協(xié)議數(shù)據(jù)(例如,密碼套件信息、數(shù)據(jù)映射信息等)和有效載荷數(shù)據(jù)(例如,憑證數(shù)據(jù))。協(xié)議數(shù)據(jù)和有效載荷數(shù)據(jù)可以根據(jù)本文描述的各種實(shí)施方案被單獨(dú)地加密以進(jìn)一步增強(qiáng)數(shù)據(jù)安全性。
c.響應(yīng)消息生成方法
圖4說(shuō)明了根據(jù)一些實(shí)施方案的用于生成和發(fā)送響應(yīng)消息的示例性過(guò)程400。通常,過(guò)程400可以在來(lái)自客戶端計(jì)算機(jī)(例如,客戶端計(jì)算機(jī)101)的請(qǐng)求消息已被接收和處理(例如,根據(jù)過(guò)程300)之后由服務(wù)器計(jì)算機(jī)(例如,服務(wù)器計(jì)算機(jī)102)執(zhí)行。然而,在各種實(shí)施方案中,過(guò)程400中的一些或全部可以由另一實(shí)體執(zhí)行。
在框402處,確定第二服務(wù)器私鑰標(biāo)識(shí)符。第二服務(wù)器私鑰標(biāo)識(shí)符識(shí)別第二服務(wù)器私鑰和第二服務(wù)器公鑰或證書(shū),其與接收到的請(qǐng)求消息中的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符相關(guān)聯(lián)的那些不同。第二公鑰/私鑰可以是靜態(tài)密鑰或一次性密鑰。第二公鑰或證書(shū)將由客戶端計(jì)算機(jī)在后續(xù)通信(諸如將來(lái)的請(qǐng)求消息)中使用。通過(guò)改變服務(wù)器密鑰,數(shù)據(jù)通信的安全性得到改進(jìn),并且一個(gè)服務(wù)器密鑰的暴露的潛在影響被最小化。使用本文描述的方法,可以以對(duì)竊聽(tīng)者透明的保密方式來(lái)執(zhí)行此類密鑰輪轉(zhuǎn)。
在框404處,為第二服務(wù)器密鑰標(biāo)識(shí)符生成第二受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。在一些實(shí)施方案中,第二受保護(hù)的密鑰標(biāo)識(shí)符還可以包括附加數(shù)據(jù),諸如填充和/或隨機(jī)值。填充可以包括服務(wù)器計(jì)算機(jī)已知的常數(shù)數(shù)據(jù)或密鑰標(biāo)識(shí)符的消息認(rèn)證碼(mac)。填充和/或隨機(jī)值可以用于使第二受保護(hù)的密鑰標(biāo)識(shí)符或未加密數(shù)據(jù)(包括密鑰標(biāo)識(shí)符、填充和隨機(jī)值)的長(zhǎng)度達(dá)到到固定長(zhǎng)度,以便進(jìn)一步模糊第二密鑰標(biāo)識(shí)符并使得竊聽(tīng)者更難以將第二受保護(hù)的密鑰標(biāo)識(shí)符與任何其他固定長(zhǎng)度的數(shù)據(jù)區(qū)分開(kāi)。在一些實(shí)施方案中,隨機(jī)數(shù)或偽隨機(jī)數(shù)可以不同于先前受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符的隨機(jī)數(shù)或偽隨機(jī)數(shù),以進(jìn)一步模糊密鑰標(biāo)識(shí)符。第二服務(wù)器密鑰標(biāo)識(shí)符和/或附加數(shù)據(jù)可以使用標(biāo)識(shí)符加密密鑰或服務(wù)器計(jì)算機(jī)已知的一些其他合適的加密密鑰進(jìn)行加密。
在一些實(shí)施方案中,服務(wù)器密鑰可以不隨著每個(gè)響應(yīng)而改變。相反,服務(wù)器密鑰可以在一段時(shí)間或給定數(shù)量的交易中不會(huì)更改。當(dāng)沒(méi)有密鑰更改時(shí),響應(yīng)消息不包括第二服務(wù)器公鑰和第二受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。相反,響應(yīng)消息可以包括與先前提供的相同的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符,或者根本不包括任何受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。
在框406處,使用第二服務(wù)器私鑰來(lái)加密響應(yīng)數(shù)據(jù)。在一些實(shí)施方案中,可以使用第二服務(wù)器私鑰和一次性客戶端公鑰來(lái)生成響應(yīng)共享秘密。一次性客戶端公鑰可以從請(qǐng)求消息中獲取,并且可以被盲化或不被盲化。在一些實(shí)施方案中,第二服務(wù)器公鑰和/或第二服務(wù)器私鑰可以使用密碼隨機(jī)數(shù)(例如,隨機(jī)數(shù)據(jù)值或偽隨機(jī)數(shù)據(jù)值)和/或識(shí)別因子來(lái)被盲化??梢允褂妹せo態(tài)服務(wù)器私鑰和一次性客戶端公鑰來(lái)生成響應(yīng)共享秘密。在替代性實(shí)施方案中,靜態(tài)服務(wù)器計(jì)算機(jī)私鑰不被盲化。相反,一次性客戶端公鑰是盲化的??梢允褂萌魏魏线m的方法(諸如,ecdh)來(lái)生成響應(yīng)共享秘密。
可以使用響應(yīng)共享秘密、kdf和其他合適的補(bǔ)充數(shù)據(jù)(諸如密鑰導(dǎo)出數(shù)據(jù),如果有的話)來(lái)確定響應(yīng)會(huì)話密鑰。響應(yīng)會(huì)話密鑰也可以被稱為消息保護(hù)密鑰,因?yàn)樗糜诒Wo(hù)客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī)之間的消息。此類補(bǔ)充數(shù)據(jù)的示例可以包括服務(wù)器計(jì)算機(jī)標(biāo)識(shí)符、客戶端設(shè)備標(biāo)識(shí)符和/或截?cái)嗟目蛻舳斯€。
可以確定要包括在響應(yīng)消息中的響應(yīng)數(shù)據(jù)。響應(yīng)數(shù)據(jù)可以包括第二受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。此外,響應(yīng)數(shù)據(jù)可以可選地包括其他地方描述的第二服務(wù)器公鑰或證書(shū)和/或協(xié)議數(shù)據(jù)(例如,密碼套件信息、數(shù)據(jù)映射信息)。在一些實(shí)施方案中,響應(yīng)數(shù)據(jù)可以包括憑證數(shù)據(jù),其指為給定的客戶端設(shè)備(例如,移動(dòng)設(shè)備)或給定的設(shè)備組專門提供的任何數(shù)據(jù),以使得客戶端設(shè)備能夠執(zhí)行交易(例如,支付交易)。憑證數(shù)據(jù)的實(shí)例可以包括令牌,pan或其他賬戶信息,一個(gè)或多個(gè)密鑰(例如,用于生成密碼的luk,加密密鑰,盲化或未混合的靜態(tài)公鑰等),密鑰導(dǎo)出參數(shù)(例如,用于導(dǎo)出用于生成密碼、共享秘密密鑰、加密密鑰等的suk),密碼導(dǎo)出參數(shù),證書(shū)鏈信息,交易參數(shù)以及任何其他合適的數(shù)據(jù)。響應(yīng)數(shù)據(jù)可以使用第二服務(wù)器私鑰進(jìn)行加密并包括在響應(yīng)消息中。
除了加密的響應(yīng)數(shù)據(jù)之外,響應(yīng)消息還可以包括不使用第二服務(wù)器私鑰加密的信息。這樣的信息可以可選地包括從請(qǐng)求消息獲取的受保護(hù)的客戶端密鑰標(biāo)識(shí)符、服務(wù)器計(jì)算機(jī)證書(shū)鏈、盲化的或短暫的第二服務(wù)器公鑰、密碼隨機(jī)數(shù)等。服務(wù)器計(jì)算機(jī)證書(shū)鏈可以由客戶端計(jì)算機(jī)驗(yàn)證以驗(yàn)證服務(wù)器計(jì)算機(jī)的身份。盲化的或短暫的第二服務(wù)器公鑰可以由客戶端計(jì)算機(jī)對(duì)包括在加密請(qǐng)求數(shù)據(jù)中的第二服務(wù)器公鑰進(jìn)行驗(yàn)證。
在框408處,將上述討論地響應(yīng)消息發(fā)送到客戶端計(jì)算機(jī)。響應(yīng)消息包括加密的響應(yīng)數(shù)據(jù),以及可選地,從請(qǐng)求消息獲取的受保護(hù)的客戶端密鑰標(biāo)識(shí)符。然而,在一些實(shí)施例中,可以從響應(yīng)消息中省略受保護(hù)的密鑰標(biāo)識(shí)符。響應(yīng)消息在到達(dá)客戶端計(jì)算機(jī)之前可以傳遞通過(guò)一個(gè)或多個(gè)中間方(例如不受信網(wǎng)絡(luò))傳輸。
在一些實(shí)施方案中,響應(yīng)消息可以包括根據(jù)本文描述的各種實(shí)施方案從加密的有效載荷(例如,憑證數(shù)據(jù))單獨(dú)地加密的協(xié)議數(shù)據(jù)(例如,密碼套件信息、數(shù)據(jù)映射信息等),以進(jìn)一步增強(qiáng)數(shù)據(jù)安全性。
d.響應(yīng)消息處理方法
圖5說(shuō)明了根據(jù)一些實(shí)施方案的用于接收和處理響應(yīng)消息的示例性過(guò)程500。通常,過(guò)程500可以由客戶端計(jì)算機(jī)(例如,客戶端計(jì)算機(jī)101)響應(yīng)于從服務(wù)器計(jì)算機(jī)(例如,服務(wù)器計(jì)算機(jī)102)接收到響應(yīng)消息(例如,在過(guò)程400中生成的響應(yīng)消息)來(lái)執(zhí)行。然而,在各種實(shí)施方案中,過(guò)程500中的一些或全部可以由另一實(shí)體執(zhí)行。
在框502處,接收包括加密的響應(yīng)數(shù)據(jù)和受保護(hù)的客戶端密鑰標(biāo)識(shí)符的響應(yīng)消息。在一些實(shí)施方案中,受保護(hù)的客戶端密鑰標(biāo)識(shí)符可以用于確定要處理的消息的序列。例如,如果與較早請(qǐng)求相對(duì)應(yīng)的響應(yīng)消息尚未處理,則可以推遲步驟502和504,直到較早響應(yīng)消息已經(jīng)被接收和處理。然而,在一些實(shí)施方案中,可以省略受保護(hù)的客戶端密鑰標(biāo)識(shí)符。
響應(yīng)消息可以包括一次性服務(wù)器公鑰。一次性服務(wù)器公鑰可以對(duì)應(yīng)于用于生成響應(yīng)消息的服務(wù)器私鑰。一次性服務(wù)器公鑰可以是靜態(tài)服務(wù)器公鑰的盲化或其他方式模糊化的形式。提供盲化的靜態(tài)服務(wù)器公鑰的優(yōu)點(diǎn)是,靜態(tài)服務(wù)器計(jì)算機(jī)公鑰被模糊化,并且服務(wù)器計(jì)算機(jī)的身份被防止竊聽(tīng)。在靜態(tài)服務(wù)器公鑰不被盲化時(shí),可以提供密碼隨機(jī)數(shù)作為響應(yīng)數(shù)據(jù)的一部分并用來(lái)計(jì)算密碼。例如,可以使用或存儲(chǔ)來(lái)自服務(wù)器的密碼隨機(jī)數(shù)(熵)以進(jìn)行進(jìn)一步的推導(dǎo),或者可以將第二密碼隨機(jī)數(shù)提供作為導(dǎo)出參數(shù)的一部分。
在框504處,使用受保護(hù)的客戶端密鑰標(biāo)識(shí)符來(lái)確定客戶端私鑰??蛻舳怂借€可以是用于加密與接收到的響應(yīng)消息相對(duì)應(yīng)的請(qǐng)求消息的一次性客戶端私鑰。在一些其他情況下,受保護(hù)的私鑰標(biāo)識(shí)符可以包括使用任何合適的隨機(jī)化或偽隨機(jī)化算法生成的數(shù)據(jù)。在一些其他情況下,可以通過(guò)使用加密密鑰加密客戶端密鑰標(biāo)識(shí)符來(lái)生成受保護(hù)的客戶端密鑰標(biāo)識(shí)符。確定客戶端私鑰可以包括:使用受保護(hù)的客戶端密鑰標(biāo)識(shí)符,或者使用由客戶端計(jì)算機(jī)維護(hù)的表、數(shù)據(jù)庫(kù)或類似數(shù)據(jù)存儲(chǔ)器中的客戶端密鑰標(biāo)識(shí)符來(lái)檢索相關(guān)聯(lián)的客戶端私鑰。如果對(duì)應(yīng)的客戶端私鑰不存在,則可替代地檢索默認(rèn)的客戶端私鑰。
在框506處,使用客戶端私鑰對(duì)加密的響應(yīng)數(shù)據(jù)進(jìn)行解密以獲取響應(yīng)數(shù)據(jù)。在一些實(shí)施方案中,可以使用客戶端私鑰(其可以是短暫的、靜態(tài)的或半靜態(tài)的)和盲化的服務(wù)器公鑰來(lái)確定響應(yīng)共享秘密。在一些實(shí)施方案中,可以從服務(wù)器計(jì)算機(jī)接收盲化的服務(wù)器公鑰(例如作為供應(yīng)響應(yīng)消息的一部分),或從單獨(dú)的信道接收。在一些其他實(shí)施方案中,客戶端計(jì)算機(jī)可以預(yù)加載或以其他方式訪問(wèn)服務(wù)器公鑰或證書(shū)(其可以是靜態(tài)的)??梢詫⒚せ瘮?shù)據(jù)(例如,密碼隨機(jī)數(shù),隨機(jī)數(shù))作為響應(yīng)消息的一部分或在單獨(dú)的信道中提供給客戶端設(shè)備。在這種情況下,盲化的服務(wù)器公鑰可以由客戶端計(jì)算機(jī)使用服務(wù)器公鑰和所提供的盲化數(shù)據(jù)來(lái)導(dǎo)出。在一些實(shí)施方案中,密碼隨機(jī)數(shù)還可以用來(lái)驗(yàn)證服務(wù)器計(jì)算機(jī)證書(shū),如在其他地方討論的。在一些實(shí)施方案中,可以使用任何適當(dāng)方法(諸如ecdh)從客戶端私鑰和盲化的服務(wù)器公鑰生成響應(yīng)共享秘密。
可以使用響應(yīng)共享秘密、kdf和其他合適的補(bǔ)充數(shù)據(jù)(諸如密鑰導(dǎo)出數(shù)據(jù),如果有的話)來(lái)確定響應(yīng)會(huì)話密鑰。響應(yīng)會(huì)話密鑰也可以被稱為消息保護(hù)密鑰,因?yàn)樗糜诒Wo(hù)用戶裝置和服務(wù)器計(jì)算機(jī)之間的消息。此類補(bǔ)充數(shù)據(jù)的示例可以包括服務(wù)器計(jì)算機(jī)標(biāo)識(shí)符、客戶端計(jì)算機(jī)標(biāo)識(shí)符和/或截?cái)嗟目蛻舳斯€。
響應(yīng)會(huì)話密鑰可以是任何適當(dāng)格式(例如,aes、des、blowfish等)、任何適當(dāng)長(zhǎng)度,并且使用任何適當(dāng)?shù)拿荑€導(dǎo)出函數(shù)(kdf)生成。例如,在一個(gè)實(shí)施方案中,響應(yīng)會(huì)話密鑰可以使用基于口令的密鑰導(dǎo)出函數(shù)2(pbkdf2)算法生成。在一些實(shí)施方案中,其他用戶設(shè)備專用數(shù)據(jù)(諸如用戶設(shè)備標(biāo)識(shí)符或其他設(shè)備指紋信息)可以用作到密鑰導(dǎo)出函數(shù)的附加輸入。
可以使用響應(yīng)會(huì)話密鑰來(lái)解密響應(yīng)消息以獲取響應(yīng)數(shù)據(jù)。響應(yīng)數(shù)據(jù)可以包括受保護(hù)的服務(wù)器標(biāo)識(shí)符、加密的憑證數(shù)據(jù)、加密隨機(jī)數(shù)、服務(wù)器計(jì)算機(jī)證書(shū)鏈、密鑰導(dǎo)出數(shù)據(jù)、密碼套件描述符以及其他地方討論的任何其他應(yīng)用數(shù)據(jù)。
服務(wù)器計(jì)算機(jī)的認(rèn)證可以由客戶端計(jì)算機(jī)使用包括在響應(yīng)消息中的數(shù)據(jù)執(zhí)行。服務(wù)器計(jì)算機(jī)證書(shū)鏈可以被驗(yàn)證??梢允褂萌魏芜m當(dāng)?shù)脑诰€或離線方法驗(yàn)證服務(wù)器計(jì)算機(jī)證書(shū)鏈。例如,對(duì)于鏈中的一個(gè)或多個(gè)證書(shū)中的每一個(gè),可以使用已知的可信公鑰(例如,證書(shū)機(jī)構(gòu)的公鑰或由ca適當(dāng)授權(quán)的實(shí)體的公鑰)驗(yàn)證證書(shū)的數(shù)字簽名。例如,在一些實(shí)施方案中,可以使用諸如橢圓曲線數(shù)字簽名算法(ecdsa)的數(shù)字簽名算法來(lái)驗(yàn)證證書(shū)。在一些實(shí)施方案中,可以使用作為供應(yīng)響應(yīng)消息的一部分(例如憑證的一部分)提供的密碼隨機(jī)數(shù)驗(yàn)證服務(wù)器計(jì)算機(jī)證書(shū)。
可以使用服務(wù)器計(jì)算機(jī)證書(shū)和密碼隨機(jī)數(shù)驗(yàn)證盲化的靜態(tài)服務(wù)器計(jì)算機(jī)公鑰。驗(yàn)證盲化靜態(tài)服務(wù)器計(jì)算機(jī)公鑰可以包括確保盲化靜態(tài)服務(wù)器計(jì)算機(jī)公鑰與預(yù)期值匹配。例如,在一些情況下,可以使用在服務(wù)器計(jì)算機(jī)證書(shū)上包括的靜態(tài)服務(wù)器計(jì)算機(jī)公鑰和從響應(yīng)數(shù)據(jù)提取的密碼隨機(jī)數(shù)生成第二盲化靜態(tài)服務(wù)器計(jì)算機(jī)公鑰。第二盲化靜態(tài)服務(wù)器計(jì)算機(jī)公鑰然后可以與接收的盲化靜態(tài)服務(wù)器計(jì)算機(jī)公鑰比較,以確保密鑰匹配??商娲?,在一些情況下,可以通過(guò)把接收的盲化靜態(tài)服務(wù)器計(jì)算機(jī)公鑰與存儲(chǔ)的盲化靜態(tài)服務(wù)器計(jì)算機(jī)公鑰比較來(lái)驗(yàn)證前者。如果密鑰匹配,則可以認(rèn)證服務(wù)器計(jì)算機(jī)。否則,認(rèn)證可能失敗。在一些實(shí)施方案中,盲化的靜態(tài)公鑰可以以響應(yīng)消息的明文和密文兩者提供,以便能夠進(jìn)行驗(yàn)證并防止篡改。
應(yīng)當(dāng)注意,這種認(rèn)證方法(即驗(yàn)證盲化靜態(tài)公鑰)能夠提供這樣的優(yōu)點(diǎn),即不需要以明碼電文傳輸可能被認(rèn)為是敏感(因?yàn)槠淇赡芙沂痉?wù)器計(jì)算機(jī)的身份)的靜態(tài)服務(wù)器計(jì)算機(jī)公鑰。因此,在保護(hù)服務(wù)器計(jì)算機(jī)的身份不被捕獲響應(yīng)消息的竊聽(tīng)者獲得的同時(shí),可以執(zhí)行服務(wù)器計(jì)算機(jī)的認(rèn)證。
響應(yīng)數(shù)據(jù)還可以包括憑證數(shù)據(jù)。憑證數(shù)據(jù)可以包括從服務(wù)器計(jì)算機(jī)向客戶端計(jì)算機(jī)提供的任何數(shù)據(jù),其使得客戶端計(jì)算機(jī)能夠進(jìn)行交易(例如,支付交易)。憑證數(shù)據(jù)的實(shí)例可以包括令牌,pan或其他賬戶信息,一個(gè)或多個(gè)密鑰(例如,用于生成密碼的luk,加密密鑰,盲化或未混合的靜態(tài)公鑰等),密鑰導(dǎo)出參數(shù)(例如,用于導(dǎo)出用于生成密碼、共享秘密密鑰、加密密鑰等的suk),密碼導(dǎo)出參數(shù),證書(shū)鏈信息,交易參數(shù)以及任何其他合適的數(shù)據(jù)。
在一些實(shí)施方案中,響應(yīng)數(shù)據(jù)可以包括協(xié)議數(shù)據(jù)(例如,密碼套件信息、數(shù)據(jù)映射信息等)和應(yīng)用數(shù)據(jù)(例如,憑證數(shù)據(jù))。可以根據(jù)本文描述的各種技術(shù)來(lái)處理協(xié)議數(shù)據(jù)和有效載荷數(shù)據(jù)。
在框508處,可以存儲(chǔ)從響應(yīng)數(shù)據(jù)獲取的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。響應(yīng)數(shù)據(jù)還可以包括受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符,諸如在過(guò)程400中討論的第二受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符。受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符中包括的服務(wù)器密鑰標(biāo)識(shí)符通常識(shí)別在響應(yīng)消息中提供的服務(wù)器公鑰(盲化或不盲化的)。例如,在一些實(shí)施方案中,受保護(hù)的密鑰標(biāo)識(shí)符可以與數(shù)據(jù)庫(kù)中的對(duì)應(yīng)的服務(wù)器公鑰和/或證書(shū)以及服務(wù)器計(jì)算機(jī)相關(guān)聯(lián)。因此,與服務(wù)器計(jì)算機(jī)的未來(lái)通信可以使用相同的受保護(hù)的密鑰標(biāo)識(shí)符和/或服務(wù)器公鑰。例如,如在過(guò)程200中所描述的,服務(wù)器計(jì)算機(jī)的后續(xù)請(qǐng)求消息可以包括受保護(hù)的密鑰標(biāo)識(shí)符,以及使用服務(wù)器公開(kāi)密鑰進(jìn)行加密。
e.示例性第一請(qǐng)求消息及其處理
圖6說(shuō)明了根據(jù)一些實(shí)施方案的由客戶端計(jì)算機(jī)發(fā)送到服務(wù)器計(jì)算機(jī)的第一請(qǐng)求消息600和由服務(wù)器計(jì)算機(jī)處理第一請(qǐng)求消息600的示例。特別地,第一請(qǐng)求消息600包括隨機(jī)密鑰標(biāo)識(shí)符,其不表示有效的服務(wù)器密鑰標(biāo)識(shí)符。無(wú)效的服務(wù)器密鑰標(biāo)識(shí)符指示服務(wù)器計(jì)算機(jī)使用默認(rèn)服務(wù)器私鑰來(lái)解密加密的請(qǐng)求數(shù)據(jù)。
如圖6中所示,第一請(qǐng)求消息600包括標(biāo)頭版本602、隨機(jī)密鑰標(biāo)識(shí)符604、與客戶端計(jì)算機(jī)相關(guān)聯(lián)的一次性客戶端公鑰606(例如,短暫或盲化的公鑰)和密文608(即加密請(qǐng)求數(shù)據(jù))。隨機(jī)密鑰標(biāo)識(shí)符604可以由客戶端計(jì)算機(jī)而不是服務(wù)器計(jì)算機(jī)生成。
在接收到第一請(qǐng)求消息600時(shí),服務(wù)器計(jì)算機(jī)可以使用標(biāo)頭版本602來(lái)選擇默認(rèn)密鑰對(duì)610(也稱為初始密鑰對(duì))。如前所述,不同的標(biāo)頭版本值可以對(duì)應(yīng)于不同的默認(rèn)密鑰對(duì),每個(gè)默認(rèn)密鑰對(duì)包括默認(rèn)公鑰和默認(rèn)私鑰。默認(rèn)密鑰對(duì)610可以用于導(dǎo)出用于解密隨機(jī)密鑰標(biāo)識(shí)符604的標(biāo)識(shí)符解密密鑰612。例如,可以通過(guò)使默認(rèn)密鑰對(duì)610的默認(rèn)公鑰和默認(rèn)私鑰點(diǎn)相乘來(lái)導(dǎo)出標(biāo)識(shí)符解密密鑰612。然后,服務(wù)器計(jì)算機(jī)使用解密算法614使用標(biāo)識(shí)符解密密鑰612來(lái)嘗試解密隨機(jī)密鑰標(biāo)識(shí)符604,以確定密鑰標(biāo)識(shí)符。然而,與有效密鑰標(biāo)識(shí)符的受保護(hù)密鑰標(biāo)識(shí)符相反,由于隨機(jī)密鑰標(biāo)識(shí)符604表示隨機(jī)值或偽隨機(jī)值,解密結(jié)果是無(wú)效密鑰標(biāo)識(shí)符616。解密結(jié)果的無(wú)效性使得服務(wù)器計(jì)算機(jī)使用默認(rèn)私鑰618來(lái)解密密文608(例如,使用解密算法620)。默認(rèn)私鑰618可以是默認(rèn)密鑰對(duì)610的一部分。在一些實(shí)施方案中,為了不同的用途和目的可能存在多于一個(gè)默認(rèn)密鑰對(duì),并且用于解密密文608的默認(rèn)私鑰618可以是與用于導(dǎo)出標(biāo)識(shí)符加密密鑰612的默認(rèn)密鑰對(duì)610不同的默認(rèn)密鑰對(duì)的一部分。在一些實(shí)施方案中,一次性公鑰606可以與默認(rèn)私鑰618一起使用以解密密文608。在圖3中描述了處理第一請(qǐng)求消息600的方法的實(shí)施方案。
f.示例性后續(xù)請(qǐng)求消息及其處理
圖7說(shuō)明了根據(jù)一些實(shí)施方案的由客戶端計(jì)算機(jī)發(fā)送到服務(wù)器計(jì)算機(jī)的后續(xù)請(qǐng)求消息700和由服務(wù)器計(jì)算機(jī)處理后續(xù)請(qǐng)求消息的示例。可以在圖6中所說(shuō)明的第一請(qǐng)求消息600之后發(fā)送請(qǐng)求消息700。在第一請(qǐng)求消息和后續(xù)請(qǐng)求消息之間,客戶端計(jì)算機(jī)可能已經(jīng)接收到受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符,其表示有效的服務(wù)器密鑰標(biāo)識(shí)符(例如,在來(lái)自服務(wù)器計(jì)算機(jī)的響應(yīng)消息中)。因此,與第一請(qǐng)求消息600不同,后續(xù)請(qǐng)求消息700包括受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符704,其可以被解密成有效的服務(wù)器密鑰標(biāo)識(shí)符(與無(wú)效值相反)。有效服務(wù)器密鑰標(biāo)識(shí)符識(shí)別用于解密加密請(qǐng)求數(shù)據(jù)的指定服務(wù)器私鑰。
如圖7中所示,后續(xù)請(qǐng)求消息700包括標(biāo)頭版本702、受保護(hù)的密鑰標(biāo)識(shí)符704、與客戶端計(jì)算機(jī)相關(guān)聯(lián)的一次性客戶端公鑰706(例如,短暫或盲化的公鑰)和密文708(即加密請(qǐng)求數(shù)據(jù))。受保護(hù)的密鑰標(biāo)識(shí)符704可能已經(jīng)由服務(wù)器計(jì)算機(jī)而不是客戶端計(jì)算機(jī)生成(并且以響應(yīng)消息或帶外信道被發(fā)送到客戶端計(jì)算機(jī))。
在接收到請(qǐng)求消息700時(shí),服務(wù)器計(jì)算機(jī)可以使用標(biāo)頭版本702來(lái)選擇默認(rèn)密鑰對(duì)710。默認(rèn)密鑰對(duì)710可以用于導(dǎo)出用于解密受保護(hù)的密鑰標(biāo)識(shí)符704的標(biāo)識(shí)符解密密鑰712。例如,可以通過(guò)使默認(rèn)密鑰對(duì)710的默認(rèn)公鑰和默認(rèn)私鑰相乘來(lái)導(dǎo)出標(biāo)識(shí)符解密密鑰712。然后,服務(wù)器計(jì)算機(jī)使用解密算法714使用標(biāo)識(shí)符解密密鑰712來(lái)解密受保護(hù)的密鑰標(biāo)識(shí)符704,以確定密鑰標(biāo)識(shí)符716以及可能的附加數(shù)據(jù)(諸如填充718和隨機(jī)數(shù)據(jù)720)。在一些實(shí)施方案中,填充718可用于驗(yàn)證密鑰標(biāo)識(shí)符。例如,如果填充與已知包括在原始受保護(hù)的密鑰標(biāo)識(shí)符中的密鑰標(biāo)識(shí)符的常數(shù)數(shù)據(jù)元素相同。然后,解密的受保護(hù)的密鑰標(biāo)識(shí)符中的填充的存在可以指示密鑰標(biāo)識(shí)符的真實(shí)性和/或完整性。作為另一示例,填充718可以是密鑰標(biāo)識(shí)符716的mac,并且可以驗(yàn)證mac。可以包括隨機(jī)數(shù)據(jù)720和/或填充以模糊密鑰標(biāo)識(shí)符和/或使受保護(hù)的密鑰標(biāo)識(shí)符、未加密數(shù)據(jù)(包括密鑰標(biāo)識(shí)符、填充和隨機(jī)值)和/或消息達(dá)到固定長(zhǎng)度。
一旦被驗(yàn)證,密鑰標(biāo)識(shí)符716可以用于選擇指定的私鑰722,其用于解密密文708(例如使用解密算法724)。在一些實(shí)施方案中,一次性客戶端公鑰706可以與指定的私鑰722一起使用以解密密文708。在圖3中描述了處理后續(xù)請(qǐng)求消息700的方法的實(shí)施方案。
g.示例性響應(yīng)消息及其生成
圖8說(shuō)明了根據(jù)一些實(shí)施方案的由服務(wù)器計(jì)算機(jī)發(fā)送到客戶端計(jì)算機(jī)的響應(yīng)消息800和響應(yīng)消息800的生成的示例。具體地,響應(yīng)消息800包括并保護(hù)新密鑰標(biāo)識(shí)符的機(jī)密性,該新密鑰標(biāo)識(shí)符識(shí)別用于后續(xù)通信的新服務(wù)器密鑰或密鑰(例如,新的靜態(tài)服務(wù)器私/公鑰對(duì))。例如,可以在接收到圖6的第一請(qǐng)求消息600或圖700的后續(xù)請(qǐng)求消息700之后由服務(wù)器計(jì)算機(jī)生成響應(yīng)消息800。
請(qǐng)求消息800可以包括標(biāo)頭版本802,其識(shí)別與默認(rèn)密鑰對(duì)810相關(guān)聯(lián)的版本號(hào)。默認(rèn)密鑰對(duì)810可以用于以與圖6-圖7中描述的類似的方式導(dǎo)出標(biāo)識(shí)符加密密鑰812。例如,可以通過(guò)使默認(rèn)密鑰對(duì)810的默認(rèn)私鑰和默認(rèn)公鑰相乘來(lái)導(dǎo)出標(biāo)識(shí)符加密密鑰812。標(biāo)識(shí)符加密密鑰812可以用于經(jīng)由加密算法814加密服務(wù)器密鑰標(biāo)識(shí)符816和其他相關(guān)數(shù)據(jù)(例如,填充數(shù)據(jù)818和隨機(jī)數(shù)據(jù)820)以獲取受保護(hù)的密鑰標(biāo)識(shí)符804。
密鑰標(biāo)識(shí)符816識(shí)別包括私鑰822a和公鑰或證書(shū)822b的新服務(wù)器密鑰對(duì)。在一些實(shí)施方案中,填充可以是恒定數(shù)據(jù)元素。在受保護(hù)的密鑰標(biāo)識(shí)符的解密結(jié)果中存在恒定數(shù)據(jù)元素可以指示密鑰標(biāo)識(shí)符的有效性或完整性。在一些其他實(shí)施方案中,填充數(shù)據(jù)可以包括密鑰標(biāo)識(shí)符816的mac或可用于驗(yàn)證密鑰標(biāo)識(shí)符816的真實(shí)性和/或完整性的其他認(rèn)證數(shù)據(jù)。隨機(jī)數(shù)據(jù)820可以確保受保護(hù)的密鑰標(biāo)識(shí)符總是在變化。在一些實(shí)施方案中,填充數(shù)據(jù)818和/或隨機(jī)數(shù)據(jù)820可用于使受保護(hù)的密鑰標(biāo)識(shí)符804、未加密數(shù)據(jù)(包括密鑰標(biāo)識(shí)符、填充和隨機(jī)值)或消息的大小達(dá)到到固定長(zhǎng)度以提供附加的數(shù)據(jù)安全性。
可以使用新的私鑰822a來(lái)加密包括受保護(hù)的密鑰標(biāo)識(shí)符804和新的公鑰或證書(shū)822b的響應(yīng)數(shù)據(jù)以生成密文808。在一些實(shí)施方案中,新的受保護(hù)的密鑰標(biāo)識(shí)符的包括可以避免在多個(gè)消息(例如,請(qǐng)求和響應(yīng)消息)中的受保護(hù)的密鑰標(biāo)識(shí)符值的重復(fù),這可能導(dǎo)致消息之間的受保護(hù)的密鑰標(biāo)識(shí)符的可追溯性。即使當(dāng)包括相同的密鑰標(biāo)識(shí)符時(shí),可以改變隨機(jī)值820以便生成不同的受保護(hù)的密鑰標(biāo)識(shí)符804。
在某些情況下,請(qǐng)求數(shù)據(jù)還可以包括需要加密的其他數(shù)據(jù),諸如憑證數(shù)據(jù)。密文808包括在響應(yīng)消息800中。響應(yīng)消息800還包括與新公鑰或證書(shū)822b對(duì)應(yīng)的一次性公鑰806。例如,如果公鑰822b是靜態(tài)密鑰,則一次性公鑰806可以是靜態(tài)公鑰822b的盲化形式。另選地,如果公鑰822b是短暫密鑰,則一次性公鑰806可以與短暫公鑰822b相同。
h.具有客戶端密鑰標(biāo)識(shí)符的示例性請(qǐng)求和響應(yīng)消息
如上所述,客戶端計(jì)算機(jī)可以以任何順序提交多個(gè)異步請(qǐng)求并接收響應(yīng)。為了允許來(lái)自客戶端計(jì)算機(jī)側(cè)的請(qǐng)求和響應(yīng)之間的映射,響應(yīng)消息可以包括受保護(hù)的客戶端密鑰引用(也稱為“隨機(jī)請(qǐng)求標(biāo)識(shí)符”),其是對(duì)對(duì)應(yīng)的請(qǐng)求消息和由客戶端計(jì)算機(jī)可操作地用來(lái)加密請(qǐng)求和/或解密響應(yīng)消息的客戶端私鑰的不可追溯的引用。
對(duì)于每個(gè)請(qǐng)求/響應(yīng)對(duì),客戶端計(jì)算機(jī)生成受保護(hù)的客戶端密鑰標(biāo)識(shí)符(隨機(jī)請(qǐng)求標(biāo)識(shí)符)或不揭示可重用位的任何一個(gè)時(shí)間值。受保護(hù)的客戶端密鑰標(biāo)識(shí)符被加密并包括在請(qǐng)求消息的密文中
在接收到包括受保護(hù)的客戶端密鑰標(biāo)識(shí)符的請(qǐng)求消息時(shí),服務(wù)器計(jì)算機(jī)解密請(qǐng)求消息以獲取受保護(hù)的客戶端密鑰標(biāo)識(shí)符。然后,服務(wù)器計(jì)算機(jī)在響應(yīng)于請(qǐng)求消息的響應(yīng)消息中包括受保護(hù)的客戶端密鑰標(biāo)識(shí)符。在一個(gè)實(shí)施方案中,受保護(hù)的客戶端密鑰標(biāo)識(shí)符可以被包括作為在響應(yīng)消息的明文部分中第一數(shù)據(jù)元素。
圖9說(shuō)明了根據(jù)一些實(shí)施方案的示例性請(qǐng)求消息900和包括受保護(hù)的客戶端密鑰標(biāo)識(shí)符的示例性響應(yīng)消息920。請(qǐng)求消息900可以由客戶端計(jì)算機(jī)發(fā)送到服務(wù)器計(jì)算機(jī),以及響應(yīng)消息920可由服務(wù)器計(jì)算機(jī)發(fā)送到客戶端計(jì)算機(jī)。
如圖9中所示,請(qǐng)求消息900包括在消息的密文918中的受保護(hù)的客戶端密鑰標(biāo)識(shí)符908。例如,客戶端密鑰標(biāo)識(shí)符908可以用要包括在密文中的請(qǐng)求會(huì)話密鑰進(jìn)行加密。在一些實(shí)施方案中,將受保護(hù)的密鑰標(biāo)識(shí)符包括在密文中可以保護(hù)客戶端密鑰標(biāo)識(shí)符的機(jī)密性。受保護(hù)的客戶端密鑰標(biāo)識(shí)符908可以由客戶端計(jì)算機(jī)生成或確定,并且其與用于保護(hù)請(qǐng)求消息的客戶端私鑰或客戶端密鑰對(duì)相關(guān)聯(lián)。例如,受保護(hù)的客戶端密鑰標(biāo)識(shí)符908可以與包括一次性客戶端私鑰和一次性客戶端公鑰的一次性客戶端密鑰對(duì)(例如,短暫密鑰對(duì))相關(guān)聯(lián)??梢允褂靡淮涡钥蛻舳怂借€(例如,結(jié)合服務(wù)器公鑰)來(lái)生成請(qǐng)求共享秘密,其用于加密請(qǐng)求數(shù)據(jù)以獲得密文918。可以在請(qǐng)求消息900的明文916中以原樣或以模糊化形式提供一次性客戶端公鑰(在圖9中示出為一次性客戶端公鑰906),使得服務(wù)器計(jì)算機(jī)可以解密使用客戶端公鑰(例如,結(jié)合服務(wù)器私鑰)的消息。
請(qǐng)求消息900還可以包括本文討論的其他數(shù)據(jù)。例如,請(qǐng)求消息900的明文916可以包括類似于上面在圖7中討論的標(biāo)頭版本和受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符的標(biāo)頭版本902和受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符904。請(qǐng)求消息900可以另外包括加密的協(xié)議數(shù)據(jù)910(例如,密碼套件信息、數(shù)據(jù)映射信息等)和加密的有效載荷數(shù)據(jù)912(例如,客戶端認(rèn)證數(shù)據(jù))。請(qǐng)求消息900的認(rèn)證數(shù)據(jù)919可以包括用于整個(gè)請(qǐng)求數(shù)據(jù)和/或其部分的一個(gè)或多個(gè)消息認(rèn)證碼(mac)914。
如圖9中所示,響應(yīng)消息920包括在響應(yīng)消息920的明文936中的受保護(hù)的客戶端密鑰標(biāo)識(shí)符924。受保護(hù)的客戶端密鑰標(biāo)識(shí)符924可能已經(jīng)由服務(wù)器計(jì)算機(jī)在類似于請(qǐng)求消息900的先前請(qǐng)求消息中被接收。受保護(hù)的客戶端密鑰標(biāo)識(shí)符924的包括允許客戶端計(jì)算機(jī)將響應(yīng)消息920映射到對(duì)應(yīng)的請(qǐng)求消息(例如,請(qǐng)求消息900),并且選擇用于解密響應(yīng)消息920的適當(dāng)?shù)目蛻舳怂借€。
響應(yīng)消息920還可以包括本文討論的其他數(shù)據(jù)。例如,響應(yīng)消息920的明文936可以包括類似于上面在圖8中討論的那些標(biāo)頭版本922和一次性服務(wù)器公鑰926。響應(yīng)消息920的密文938可以另外包括協(xié)議數(shù)據(jù)928和有效載荷數(shù)據(jù)932。協(xié)議數(shù)據(jù)928可以包括識(shí)別服務(wù)器私鑰/公鑰的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符930。服務(wù)器私鑰用于加密響應(yīng)數(shù)據(jù)以獲取密文938。受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符930可以在后續(xù)請(qǐng)求消息中被回傳到服務(wù)器計(jì)算機(jī),以使得服務(wù)器計(jì)算機(jī)能夠解密請(qǐng)求消息。服務(wù)器公鑰以原樣或以模糊化形式提供(作為一次性服務(wù)器公鑰926)。有效載荷數(shù)據(jù)932可以包括提供給客戶端計(jì)算機(jī)的憑證數(shù)據(jù)、應(yīng)用程序數(shù)據(jù)或者意圖用于客戶端計(jì)算機(jī)的任何其他合適的數(shù)據(jù)。響應(yīng)消息920的認(rèn)證數(shù)據(jù)939可以包括用于整個(gè)響應(yīng)數(shù)據(jù)和/或其部分的一個(gè)或多個(gè)消息認(rèn)證碼(mac)934。
iii.數(shù)據(jù)保護(hù)方法
實(shí)施方案保護(hù)用于與有效載荷數(shù)據(jù)分開(kāi)加密/解密有效載荷數(shù)據(jù)的協(xié)議數(shù)據(jù)。敏感有效載荷數(shù)據(jù)可以使用一個(gè)或多個(gè)有效載荷加密密鑰進(jìn)行加密以生成加密的有效載荷數(shù)據(jù)。包括用于加密有效載荷數(shù)據(jù)的密碼套件的協(xié)議數(shù)據(jù)也可以使用一個(gè)或多個(gè)協(xié)議加密密鑰進(jìn)行加密。協(xié)議加密密鑰和有效載荷加密密鑰可以基于密鑰協(xié)商建立。可以在消息中發(fā)送加密的協(xié)議數(shù)據(jù)和加密的有效載荷數(shù)據(jù)。
當(dāng)接收到消息時(shí),可以基于密鑰協(xié)商來(lái)導(dǎo)出協(xié)議數(shù)據(jù)解密密鑰和有效載荷解密密鑰??梢允褂脜f(xié)議解密密鑰來(lái)解密加密的協(xié)議數(shù)據(jù)以獲取協(xié)議數(shù)據(jù)(例如,密碼套件)。可以使用協(xié)議數(shù)據(jù)和有效載荷解密密鑰來(lái)解密加密的有效載荷數(shù)據(jù)。
在一些情況下,有效載荷數(shù)據(jù)可以包括多個(gè)有效載荷元素,每個(gè)有效載荷元素可以使用不同的加密密鑰單獨(dú)地加密。在這種情況下,可以根據(jù)需要對(duì)加密的有效載荷元素進(jìn)行解密以改進(jìn)數(shù)據(jù)安全性。
在各種實(shí)施方式中,下面討論的技術(shù)可以與用于提供上文討論的或彼此獨(dú)立實(shí)施的保密密鑰識(shí)別的方法組合。
a.消息加密方法
圖10說(shuō)明了根據(jù)一些實(shí)施方案的用于加密消息的示例性過(guò)程1000。過(guò)程1000可以由客戶端計(jì)算機(jī)來(lái)實(shí)施以將請(qǐng)求消息加密到服務(wù)器計(jì)算機(jī)。另選地,過(guò)程1000也可以由服務(wù)器計(jì)算機(jī)來(lái)實(shí)施以將響應(yīng)消息加密到客戶端計(jì)算機(jī)。
在框1002處,確定消息的密碼套件。如本文所討論的,密碼套件定義了用于保護(hù)計(jì)算機(jī)之間的通信的各種算法或參數(shù),諸如操作模式(例如,用于關(guān)聯(lián)數(shù)據(jù)的認(rèn)證加密(aead))、密鑰大小、密鑰交換算法等。
可以由客戶端計(jì)算機(jī)或服務(wù)器計(jì)算機(jī)基于以下各者來(lái)確定密碼套件:預(yù)定參數(shù),諸如硬件/軟件配置和能力(例如,操作系統(tǒng)、存儲(chǔ)器、cpu);預(yù)定偏好(例如用戶偏好);等。此外,可以基于客戶端計(jì)算機(jī)和服務(wù)器計(jì)算機(jī)之間的協(xié)商來(lái)確定密碼套件。例如,客戶端計(jì)算機(jī)可以在請(qǐng)求中向服務(wù)器計(jì)算機(jī)發(fā)送其支持的密碼套件的列表。密碼套件可以按照客戶端計(jì)算機(jī)的優(yōu)先級(jí)順序列出。例如,密碼套件列表中的第一密碼套件可能是客戶端計(jì)算機(jī)最優(yōu)選的,第二密碼套件對(duì)客戶端計(jì)算機(jī)可能不如第一密碼套件那么優(yōu)選,等等。請(qǐng)求消息可以不包括任何有效載荷數(shù)據(jù)。另選地,請(qǐng)求消息可以包括使用優(yōu)選密碼套件加密的有效載荷數(shù)據(jù)。作為響應(yīng),服務(wù)器計(jì)算機(jī)可以從客戶端計(jì)算機(jī)提供的密碼套件(其可以是或可以不是客戶端優(yōu)選的密碼套件)列表中選擇密碼套件,并將所選擇的密碼套件包括在響應(yīng)消息中。響應(yīng)消息可以不包括任何有效載荷數(shù)據(jù)。另選地,響應(yīng)消息可以包括加密的或使用選擇的密碼套件以其他方式編碼的有效載荷數(shù)據(jù)。
在框1004處,確定一個(gè)或多個(gè)協(xié)議加密密鑰和一個(gè)或多個(gè)有效載荷加密密鑰。協(xié)議加密密鑰和有效載荷加密密鑰可以基于消息的發(fā)送者和接收者之間的一個(gè)或多個(gè)共享秘密,kdf和/或密鑰導(dǎo)出參數(shù)來(lái)確定??梢允褂冒l(fā)送者的一個(gè)或多個(gè)私鑰(例如,客戶端私鑰或服務(wù)器私鑰)和接收者的一個(gè)或多個(gè)公鑰(例如,服務(wù)器公鑰或客戶端公鑰)來(lái)導(dǎo)出共享秘密??梢允褂萌魏魏线m的密鑰協(xié)商算法(諸如ecdh)來(lái)導(dǎo)出共享秘密。在一個(gè)實(shí)施方案中,一個(gè)私鑰可以與不同的公鑰組合以導(dǎo)出不同的共享秘密。在另一個(gè)實(shí)施方案中,不同的私鑰可以與一個(gè)公鑰組合以導(dǎo)出不同的共享秘密。私鑰和公鑰可以是一次性密鑰,諸如短暫密鑰或盲化的靜態(tài)密鑰??梢詮南惹暗慕邮照呦⒒驈膸庑诺?諸如電子郵件、文本、電話呼叫、郵政郵件或與用于請(qǐng)求/響應(yīng)消息的當(dāng)前通信信道不同的任何其他信道)獲取接收者公鑰。在某些情況下,可以從諸如證書(shū)機(jī)構(gòu)的第三方獲取接收者公鑰。
協(xié)議加密密鑰和/或有效載荷加密密鑰可以除了共享秘密之外或代替共享秘密,基于密碼套件生成。例如,密碼套件可以指示要生成的密鑰的大小和/或密鑰生成算法(例如,kdf)。
可以從相同或不同的共享秘密生成協(xié)議加密密鑰和/或有效載荷加密密鑰。在一個(gè)示例中,將共享秘密用作到密鑰導(dǎo)出函數(shù)(kdf)的輸入,以生成被分割成多個(gè)較短子字符串的長(zhǎng)位字符串。然后,可以使用子字符串來(lái)生成協(xié)議加密密鑰和/或有效載荷加密密鑰。例如,第一和第二子字符串可以用作協(xié)議加密密鑰,并且其余的子字符串可以用作有效載荷加密密鑰。在另一示例中,可以將不同的共享秘密和相同或不同的kdf一起使用來(lái)生成不同的密鑰。
協(xié)議加密密鑰和/或有效載荷加密密鑰可以在基本相同的時(shí)間或在不同的時(shí)間生成。例如,可以基于共享秘密一次性生成所有密鑰。在另一示例中,一些密鑰可以在其他密鑰之前生成。在某些情況下,密鑰可以在“按需要”的基礎(chǔ)上生成,就在加密操作需要它們之前。
協(xié)議加密密鑰和/或有效載荷加密密鑰可以彼此獨(dú)立地生成或者基于先前生成的密鑰來(lái)生成。例如,可以將協(xié)議加密密鑰用作輸入來(lái)生成另一個(gè)協(xié)議加密密鑰或有效載荷加密密鑰??梢詫⒂行лd荷加密密鑰用作輸入來(lái)生成另一有效載荷加密密鑰。
在框1006處,使用有效載荷加密密鑰加密有效載荷數(shù)據(jù)以獲取加密的有效載荷數(shù)據(jù)。有效載荷數(shù)據(jù)的示例可以包括在請(qǐng)求消息中發(fā)送的客戶端標(biāo)識(shí)或客戶端憑證數(shù)據(jù)、來(lái)自服務(wù)器計(jì)算機(jī)的響應(yīng)消息中提供給客戶端計(jì)算機(jī)的憑證數(shù)據(jù)、交易授權(quán)消息中的應(yīng)用程序或交易數(shù)據(jù)等。
在一些實(shí)施方案中,有效載荷數(shù)據(jù)可以作為一個(gè)整體使用有效載荷加密密鑰和由密碼套件指示的加密算法來(lái)加密。例如,可以將有效載荷數(shù)據(jù)、有效載荷加密密鑰以及可選地標(biāo)頭(例如,受保護(hù)的接收者密鑰標(biāo)識(shí)符、一次性發(fā)送者公鑰)用作到aead函數(shù)中的輸入,以產(chǎn)生密文(加密的有效載荷數(shù)據(jù))和認(rèn)證標(biāo)簽(消息認(rèn)證碼(mac))。
在一些其他實(shí)施方案中,有效載荷數(shù)據(jù)可以包括多個(gè)不止一個(gè)部分(也稱為“有效載荷數(shù)據(jù)元素”或“有效載荷元素”)。可以使用其自己的有效載荷加密密鑰和/或加密算法來(lái)單獨(dú)加密每個(gè)有效載荷元素。由各種有效載荷元素使用的有效載荷加密密鑰和/或加密算法可以相同或不同。在一些實(shí)施方案中,可以基于在框1002處確定的密碼套件來(lái)確定有效載荷加密密鑰和/或加密算法。
在框1008處,可以使用協(xié)議加密密鑰來(lái)加密包括密碼套件的協(xié)議數(shù)據(jù)以獲取加密的協(xié)議數(shù)據(jù)。協(xié)議數(shù)據(jù)可以指描述如何加密、解密或以其他方式處理包括在消息中的有效載荷數(shù)據(jù)的任何信息。協(xié)議數(shù)據(jù)可以包括關(guān)于一個(gè)或多個(gè)密碼套件的信息。例如,協(xié)議數(shù)據(jù)可以包括使用或優(yōu)選地由消息的發(fā)送者(例如,客戶端計(jì)算機(jī)或服務(wù)器計(jì)算機(jī))使用的密碼套件。另選地,協(xié)議數(shù)據(jù)可以包括由消息的發(fā)送者支持的多個(gè)密碼套件。
除了密碼套件信息之外,協(xié)議數(shù)據(jù)還可以包括附加數(shù)據(jù),諸如描述個(gè)人數(shù)據(jù)元素如何被加密的數(shù)據(jù)安全性描述符數(shù)據(jù)。描述符數(shù)據(jù)可以包括數(shù)據(jù)協(xié)議映射信息。例如,對(duì)于每個(gè)有效載荷元素,數(shù)據(jù)協(xié)議映射信息可以包括用于給定有效載荷元素(諸如數(shù)據(jù)標(biāo)簽、加密/解密密鑰標(biāo)識(shí)符、加密/解密算法標(biāo)識(shí)符等)的詳細(xì)的元素特定協(xié)議信息。在一些實(shí)施方案中,元素特定協(xié)議信息可以可選地包括與有效載荷元素相關(guān)聯(lián)的消息認(rèn)證碼(例如,作為將aead應(yīng)用到有效載荷元素的結(jié)果)。數(shù)據(jù)協(xié)議映射可以存儲(chǔ)在消息發(fā)送者可訪問(wèn)的表、列表、文件、數(shù)據(jù)庫(kù)或任何其他數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)存儲(chǔ)器中。
協(xié)議數(shù)據(jù)還可以可選地包括受保護(hù)的發(fā)送者密鑰標(biāo)識(shí)符(諸如本文所描述的)以使能異步請(qǐng)求和響應(yīng)消息的映射。例如,請(qǐng)求消息可以包括受保護(hù)的客戶端密鑰標(biāo)識(shí)符作為其協(xié)議數(shù)據(jù)的一部分。響應(yīng)消息可以包括受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符作為其協(xié)議數(shù)據(jù)的一部分。
可以使用在框1004處確定的協(xié)議加密密鑰來(lái)加密協(xié)議數(shù)據(jù)。在一些實(shí)施方案中,可以使用單個(gè)協(xié)議加密密鑰(例如,從發(fā)送者私鑰和一次性接收者公鑰或一次性發(fā)送者私鑰和接收者公鑰導(dǎo)出的)來(lái)加密協(xié)議數(shù)據(jù)。在一些其他實(shí)施方案中,可以使用不同的協(xié)議加密密鑰和/或加密算法來(lái)加密協(xié)議數(shù)據(jù)的不同部分。例如,協(xié)議數(shù)據(jù)的數(shù)據(jù)協(xié)議映射可以使用特定于數(shù)據(jù)協(xié)議映射的一個(gè)或多個(gè)映射加密密鑰和/或加密算法(例如,aead)來(lái)加密;而協(xié)議數(shù)據(jù)的密碼套件可以使用一個(gè)或多個(gè)密碼套件加密密鑰和預(yù)定的加密算法(例如,aes)來(lái)加密。
在框1010處,包括加密的有效載荷數(shù)據(jù)和加密的協(xié)議數(shù)據(jù)的消息可以被傳輸?shù)较⒌慕邮照?。例如,消息可以是由客戶端?jì)算機(jī)傳輸?shù)椒?wù)器計(jì)算機(jī)的請(qǐng)求消息或由服務(wù)器計(jì)算機(jī)傳輸?shù)娇蛻舳擞?jì)算機(jī)的響應(yīng)消息。
加密的有效載荷數(shù)據(jù)和加密的協(xié)議數(shù)據(jù)可以包括在消息的密文部分中。消息可以包括消息的明文部分中的附加信息。例如,消息可以包括在明文中的受保護(hù)的接收者密鑰標(biāo)識(shí)符(例如,在請(qǐng)求消息中的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符或在響應(yīng)消息中的受保護(hù)的客戶端密鑰標(biāo)識(shí)符)以允許接收者識(shí)別用來(lái)解密消息的接收者私鑰。消息還可以包括一次性發(fā)送者公鑰(例如,在請(qǐng)求消息中的一次性客戶端公鑰或在響應(yīng)消息中的一次性服務(wù)器公鑰),其可以是短暫密鑰或盲化的靜態(tài)密鑰。消息還可以包括指示協(xié)議版本的標(biāo)頭版本,所述協(xié)議版本可由消息的接收者用來(lái)(例如)確定用于解密受保護(hù)的接收者密鑰標(biāo)識(shí)符的合適的標(biāo)識(shí)符加密/解密密鑰??梢允褂谜J(rèn)證算法(例如,aead)來(lái)保護(hù)附加信息中一些或所有以及協(xié)議數(shù)據(jù)和有效負(fù)載數(shù)據(jù)的真實(shí)性以生成包括在消息中的全局mac。在一個(gè)示例中,可以使用與協(xié)議加密密鑰相同的密鑰(例如,密碼套件加密密鑰或映射加密密鑰)來(lái)生成全局mac。在一些實(shí)施方案中,代替加密的有效載荷元素或除了加密的有效載荷元素之外,可以從有效載荷元素特定的mac來(lái)計(jì)算全局mac。當(dāng)在消息或文檔中分散有效載荷數(shù)據(jù)元素(例如,不以連續(xù)方式排列)時(shí),這提供了認(rèn)證消息標(biāo)頭的靈活性。有效載荷元素特定的mac也可以被包括作為數(shù)據(jù)協(xié)議映射的一部分或被包括在消息內(nèi)的另一合適的位置處。
圖11說(shuō)明了根據(jù)一些實(shí)施方案的用于加密消息的另一示例性過(guò)程1100。過(guò)程1100可以由客戶端計(jì)算機(jī)來(lái)實(shí)施以將請(qǐng)求消息加密到服務(wù)器計(jì)算機(jī)。另選地,過(guò)程1100也可以由服務(wù)器計(jì)算機(jī)來(lái)實(shí)施以將響應(yīng)消息加密到客戶端計(jì)算機(jī)。
在框1102處,使用一個(gè)或多個(gè)發(fā)送者私鑰和一個(gè)或多個(gè)接收者公鑰來(lái)確定一個(gè)或多個(gè)共享秘密??梢允褂萌魏魏线m的密鑰協(xié)商算法(諸如ecdh)來(lái)導(dǎo)出共享秘密。對(duì)于請(qǐng)求消息,可以使用客戶端私鑰和服務(wù)器公鑰來(lái)確定請(qǐng)求共享秘密。對(duì)于響應(yīng)消息,可以使用服務(wù)器私鑰和客戶端公鑰來(lái)確定響應(yīng)共享秘密。私鑰和/或公鑰可以是一次性密鑰(例如,短暫密鑰或靜態(tài)盲化的密鑰)。
在框1104處,基于共享秘密、kdf和密鑰導(dǎo)出參數(shù)(如果有的話)來(lái)確定包括協(xié)議加密密鑰和有效載荷加密密鑰的多個(gè)會(huì)話密鑰。在一個(gè)實(shí)施方案中,可以將共享秘密用作到密鑰導(dǎo)出函數(shù)中的輸入,以導(dǎo)出隨后被分割成多個(gè)會(huì)話密鑰的位字符串。在一些其他實(shí)施方案中,可以使用不同的共享秘密來(lái)生成不同的會(huì)話密鑰。例如,共享秘密a可以用于生成一個(gè)或多個(gè)會(huì)話密鑰,共享秘密b可以用于生成一個(gè)或多個(gè)其他會(huì)話密鑰,等等。
在一些實(shí)施方案中,密鑰導(dǎo)出函數(shù)可以另外接受諸如接收者密鑰標(biāo)識(shí)符和會(huì)話標(biāo)識(shí)符的其他輸入。接收者密鑰標(biāo)識(shí)符可以識(shí)別接收者公/私鑰對(duì)或接收者證書(shū),并且可能不是受保護(hù)的形式。會(huì)話標(biāo)識(shí)符可以基于發(fā)送者公鑰(例如,截?cái)嗟陌l(fā)送者公鑰)來(lái)確定。
多個(gè)會(huì)話密鑰可以包括用于加密消息的協(xié)議數(shù)據(jù)的協(xié)議加密密鑰和用于加密消息的有效載荷數(shù)據(jù)的有效載荷加密密鑰。協(xié)議加密密鑰可以包括用于加密不同協(xié)議數(shù)據(jù)的多個(gè)密鑰。例如,協(xié)議加密密鑰可以包括用于加密密碼套件的第一協(xié)議加密密鑰(例如,密碼套件加密密鑰)。協(xié)議加密密鑰可以包括用于加密協(xié)議數(shù)據(jù)的剩余部分的第二協(xié)議加密密鑰,所述剩余部分為諸如數(shù)據(jù)協(xié)議映射(例如,消息認(rèn)證碼列表、有效載荷加密密鑰標(biāo)識(shí)符和/或有效載荷元素的加密算法標(biāo)識(shí)符)、發(fā)送者密鑰標(biāo)識(shí)符、會(huì)話標(biāo)識(shí)符、密碼套件列表(例如,用于請(qǐng)求消息)等。在一些實(shí)施方案中,如果適用,可以使用多于兩個(gè)的協(xié)議加密密鑰。類似地,有效載荷加密密鑰可以包括多個(gè)加密密鑰,每個(gè)加密密鑰用于加密有效載荷數(shù)據(jù)的不同部分(或有效載荷元素)。
在框1106處,使用第一協(xié)議加密密鑰(也稱為密碼套件加密密鑰)來(lái)加密密碼套件以獲取加密的密碼套件??梢匀鐖D10中的過(guò)程1000的框1002所描述的來(lái)確定密碼套件。從在框1104處確定的多個(gè)會(huì)話密鑰中選擇密碼套件加密密鑰。密碼套件加密密鑰和/或用于加密密碼套件的加密算法通常獨(dú)立于密碼套件本身。例如,密碼套件可以指定使用aead加密算法和256位的密鑰大小來(lái)加密有效載荷數(shù)據(jù)。密碼套件加密密鑰可以是不同的密鑰大小(例如128位),以及用于加密密碼套件的加密算法可以是高級(jí)加密標(biāo)準(zhǔn)(aes)。在一些實(shí)施方案中,可以將加密的密碼套件包括作為消息的明文的一部分。在其他實(shí)施方案中,可以將加密的密碼套件包括作為消息的密文的一部分。
在框1108處,使用相應(yīng)的有效載荷加密密鑰來(lái)加密多個(gè)有效載荷元素中的每一個(gè)。有效載荷加密密鑰可以從在框1104處確定的多個(gè)會(huì)話密鑰中獲得。出于各種原因,有效載荷數(shù)據(jù)可被劃分成多個(gè)有效載荷元素。例如,如果一個(gè)有效載荷加密密鑰被泄漏,則將有效載荷數(shù)據(jù)劃分成更小的單獨(dú)受保護(hù)的數(shù)據(jù)元素可以降低暴露整個(gè)有效載荷數(shù)據(jù)的風(fēng)險(xiǎn)。另選地,每個(gè)數(shù)據(jù)元素可以意圖用于不同實(shí)體的訪問(wèn)或與不同級(jí)別的安全性相關(guān)聯(lián)。因此,利用不同的密鑰和/或加密算法保護(hù)數(shù)據(jù)元素可以限制這些方對(duì)預(yù)期數(shù)據(jù)元素的訪問(wèn),而不會(huì)不必要地暴露其他數(shù)據(jù)元素。
密碼套件加密密鑰可以從上面在框1104處導(dǎo)出的多個(gè)會(huì)話密鑰獲得。因此,可以基于在框1102中確定的共享秘密來(lái)確定密碼套件加密密鑰。另選地或另外地,密碼套件加密密鑰可以基于一個(gè)或多個(gè)協(xié)議加密密鑰或其他數(shù)據(jù)來(lái)確定。
與通常獨(dú)立于密碼套件的密碼套件加密密鑰不同,有效載荷加密密鑰和/或算法通常取決于密碼套件。例如,密碼套件可以指定使用aead加密算法和/或256位的密鑰大小來(lái)加密有效載荷數(shù)據(jù)。因此,對(duì)于密碼套件,有效載荷加密密鑰可以具有256位的密鑰大小,和/或有效載荷元素可以使用aead加密函數(shù)進(jìn)行加密。
在一些實(shí)施方案中,密碼套件可以指定調(diào)節(jié)有效載荷元素的加密的一些但不是全部參數(shù)。例如,密碼套件可以指定在不指定密鑰大小的情況下使用aead算法。另選地,密碼套件可以僅指定密鑰大小而不指定加密算法。在這樣的實(shí)施方案中,可以使用元素特定的加密算法和/或有效載荷加密密鑰大小來(lái)加密有效載荷元素。作為協(xié)議數(shù)據(jù)的一部分,這種元素特定的加密信息可以被包括在元素特定的描述符信息(例如,數(shù)據(jù)協(xié)議映射信息)中。
可以基于各種因素來(lái)確定與有效載荷元素的加密相關(guān)聯(lián)的加密算法、密鑰大小和/或其他方面,這些因素為諸如有效載荷元素的類型(例如,多媒體對(duì)象或文本文件)、有效載荷元素的大小、與有效載荷元素相關(guān)聯(lián)的靈敏度或安全性級(jí)別以及有效載荷數(shù)據(jù)的其他特性。)這些因素還可以包括有效載荷元素的預(yù)期接收實(shí)體(例如,用戶、計(jì)算機(jī)或過(guò)程)的特性,諸如身份、訪問(wèn)控制級(jí)別、網(wǎng)絡(luò)環(huán)境(例如,安全或不安全)、硬件能力(例如,網(wǎng)絡(luò)或計(jì)算資源)、軟件配置(例如,操作系統(tǒng)或應(yīng)用)等。
在框1110處,可以使用第二協(xié)議加密密鑰來(lái)加密數(shù)據(jù)協(xié)議映射,以獲取加密的數(shù)據(jù)協(xié)議映射。從在框1104處生成的多個(gè)會(huì)話密鑰中選擇第二協(xié)議加密密鑰。在一個(gè)實(shí)施方案中,第二協(xié)議加密密鑰不同于用于在框1106處加密密碼套件的第一協(xié)議加密密鑰。第二協(xié)議加密密鑰可以取決于密碼套件。例如,第二協(xié)議加密密鑰的大小可以由密碼套件指定。在一個(gè)另選實(shí)施方案中,第二協(xié)議加密密鑰可以與第一協(xié)議加密密鑰相同,和/或獨(dú)立于密碼套件。
數(shù)據(jù)協(xié)議映射可以包括分別對(duì)應(yīng)于多個(gè)有效載荷元素的多個(gè)映射條目。每個(gè)映射條目可以包括對(duì)有效載荷元素的引用(例如,數(shù)據(jù)標(biāo)簽)、識(shí)別用于有效載荷元素的加密/解密密鑰的密鑰標(biāo)識(shí)符、識(shí)別用于有效載荷元素的密碼算法(例如,加密/解密算法)(例如,aead)的算法標(biāo)識(shí)符、有效載荷元素的消息認(rèn)證碼(mac)等??梢陨蒻ac作為將加密算法(例如,aead)應(yīng)用到有效載荷元素的結(jié)果。上述映射條目數(shù)據(jù)中的一些或全部在不同的實(shí)施方案中可以是可選的。例如,映射條目可以僅包括用于給定的有效載荷元素的mac,而不包括加密/解密密鑰標(biāo)識(shí)符或算法標(biāo)識(shí)符。因此,數(shù)據(jù)協(xié)議映射可以僅包括數(shù)據(jù)元素mac的列表。作為另一示例,映射條目可以包括加密/解密密鑰標(biāo)識(shí)符和/或算法標(biāo)識(shí)符,但是可能不包括mac。例如,當(dāng)應(yīng)用到有效載荷元素時(shí),加密算法(例如aes)可以不生成mac。
在一些實(shí)施方案中,除了數(shù)據(jù)協(xié)議映射之外或代替數(shù)據(jù)協(xié)議映射,可以使用第二協(xié)議加密密鑰來(lái)加密其他協(xié)議數(shù)據(jù)。例如,其他協(xié)議數(shù)據(jù)可以包括受保護(hù)的發(fā)送者密鑰標(biāo)識(shí)符、會(huì)話標(biāo)識(shí)符、密碼套件列表、控制位等。在其他實(shí)施方案中,可以使用與第一或第二協(xié)議加密密鑰不同的附加協(xié)議加密密鑰來(lái)加密附加協(xié)議數(shù)據(jù)。在某些情況下,附加協(xié)議數(shù)據(jù)的加密可以取決于密碼套件和/或數(shù)據(jù)協(xié)議映射。
在框1112處,傳輸包括加密的密碼套件、加密的數(shù)據(jù)協(xié)議映射和加密的有效載荷元素的消息。例如,消息可以是由客戶端計(jì)算機(jī)傳輸?shù)椒?wù)器計(jì)算機(jī)的請(qǐng)求消息或由服務(wù)器計(jì)算機(jī)傳輸?shù)娇蛻舳擞?jì)算機(jī)的響應(yīng)消息。
加密的有效載荷數(shù)據(jù)和加密的協(xié)議數(shù)據(jù)可以包括在消息的密文部分中?;蛘撸恍┘用艿膮f(xié)議數(shù)據(jù)(例如,加密的密碼套件)可以被包括在消息的明文部分中。消息可以包括附加數(shù)據(jù),諸如受保護(hù)的接收者密鑰標(biāo)識(shí)符(例如,在請(qǐng)求消息中的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符或在響應(yīng)消息中的受保護(hù)的客戶端密鑰標(biāo)識(shí)符)以允許接收者識(shí)別用于解密消息的接收者私鑰。消息還可以包括一次性發(fā)送者公鑰(例如,在請(qǐng)求消息中的一次性客戶端公鑰或在響應(yīng)消息中的一次性服務(wù)器公鑰),其可以是短暫密鑰或盲化的靜態(tài)密鑰。消息還可以包括指示協(xié)議版本的標(biāo)頭版本,所述協(xié)議版本可由消息的接收者用來(lái)(例如)確定用于解密受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符的合適的標(biāo)識(shí)符加密/解密密鑰。這些附加信息中的一些或全部的真實(shí)性可以被包括在消息的明文部分或密文部分中。包括在消息的明文部分中的數(shù)據(jù)可以不被加密,但仍然保護(hù)了真實(shí)性/完整性(例如,通過(guò)aead)。因此,消息可以不僅包括用于個(gè)人有效載荷元素的mac,還包括覆蓋消息中包括的非密文數(shù)據(jù)的一個(gè)或多個(gè)全局mac。
在一些實(shí)施方案中,敏感密碼信息(諸如共享秘密和會(huì)話密鑰)可以在其不再被需要之后立即被擦除(例如,刪除、歸零或以其他方式呈現(xiàn)為不可訪問(wèn))。此類敏感信息的擦除可以在例如使用敏感信息加密消息數(shù)據(jù)之后發(fā)生。在其他實(shí)施方案中,此類密碼信息中的一些可以在其使用之后的一段時(shí)間內(nèi)被存儲(chǔ)(例如,在安全元件中),以允許例如異步消息的處理。
b.消息解密方法
圖12說(shuō)明了根據(jù)一些實(shí)施方案的用于解密消息的示例性過(guò)程1200。過(guò)程1200可以由客戶端計(jì)算機(jī)來(lái)實(shí)施以從服務(wù)器計(jì)算機(jī)解密響應(yīng)消息。另選地,過(guò)程1200也可以由服務(wù)器計(jì)算機(jī)來(lái)實(shí)施以從客戶端計(jì)算機(jī)解密請(qǐng)求消息。
在框1202處,接收包括加密的協(xié)議數(shù)據(jù)和加密的有效載荷數(shù)據(jù)的消息。在一些實(shí)施方案中,消息可以由上述圖10-圖11中描述的消息加密方法生成。
在框1204處,確定一個(gè)或多個(gè)協(xié)議解密密鑰。協(xié)議解密密鑰可以與圖10-圖11中描述的對(duì)應(yīng)的協(xié)議加密密鑰相同或不同。協(xié)議解密密鑰可以基于消息的發(fā)送者和接收者之間的一個(gè)或多個(gè)共享秘密,kdf和密鑰導(dǎo)出參數(shù)(如果有的話)來(lái)確定。例如,可以使用接收者的一個(gè)或多個(gè)私鑰(例如,客戶端私鑰或服務(wù)器私鑰)和發(fā)送者的一個(gè)或多個(gè)公鑰(例如,服務(wù)器公鑰或客戶端公鑰)來(lái)導(dǎo)出共享秘密??梢允褂萌魏魏线m的密鑰協(xié)商算法(諸如ecdh)來(lái)導(dǎo)出共享秘密。私鑰和公鑰可以是一次性密鑰,諸如短暫密鑰或盲化的靜態(tài)密鑰。
接收者私鑰可以由包括在消息本身中的受保護(hù)的接收者密鑰標(biāo)識(shí)符來(lái)識(shí)別。在一些實(shí)施方案中,消息可以包括指示協(xié)議版本的標(biāo)頭版本,所述協(xié)議版本可以用于確定用于解密受保護(hù)的接收者密鑰標(biāo)識(shí)符的標(biāo)識(shí)符解密密鑰。
可以從消息本身或從帶外信道(諸如電子郵件、文本、電話呼叫、郵政郵件或與用于請(qǐng)求/響應(yīng)消息的當(dāng)前通信信道不同的任何其他信道)獲取發(fā)送者公鑰。在某些情況下,可以從諸如證書(shū)機(jī)構(gòu)的第三方獲取發(fā)送者公鑰。
可以從相同或不同的共享秘密生成協(xié)議解密密鑰。在一個(gè)示例中,將共享秘密用作到密鑰導(dǎo)出函數(shù)(kdf)的輸入,以生成被分割成各種子字符串的位字符串。然后,可以使用子字符串來(lái)生成協(xié)議解密密鑰。在另一示例中,可以將不同的共享秘密和相同或不同的kdf一起使用來(lái)生成不同的協(xié)議解密密鑰。
協(xié)議解密密鑰可以在基本相同的時(shí)間或在不同的時(shí)間生成。例如,可以基于共享秘密一次性生成所有協(xié)議解密密鑰。在另一示例中,一些密鑰可以在其他密鑰之前生成。在某些情況下,密鑰可以在“按需要”的基礎(chǔ)上生成,例如,就在解密操作需要它們之前。
協(xié)議解密密鑰可以彼此獨(dú)立地生成或者基于先前生成的密鑰來(lái)生成。例如,可以將第一協(xié)議解密密鑰用作輸入來(lái)生成第二協(xié)議解密密鑰。作為另一示例,第一協(xié)議解密密鑰可以用于解密加密的密碼套件。密碼套件可以指定第二協(xié)議加密密鑰的密鑰大小。
在框1206處,使用協(xié)議解密密鑰來(lái)解密加密的協(xié)議數(shù)據(jù),以獲取協(xié)議數(shù)據(jù)。協(xié)議數(shù)據(jù)通常包括如上所述的密碼套件。另外,協(xié)議數(shù)據(jù)還可以包括數(shù)據(jù)協(xié)議映射信息、發(fā)送者密鑰標(biāo)識(shí)符、發(fā)送者會(huì)話標(biāo)識(shí)符、發(fā)送者密碼套件列表等。在一些實(shí)施方案中,可以使用一個(gè)協(xié)議解密密鑰來(lái)解密整個(gè)加密的協(xié)議數(shù)據(jù)。在其他實(shí)施方案中,協(xié)議數(shù)據(jù)可以包括各自被個(gè)別地加密的多個(gè)部分。在此類實(shí)施方案中,可以單獨(dú)地解密每個(gè)加密的協(xié)議數(shù)據(jù)部分。
在一些實(shí)施方案中,加密的協(xié)議數(shù)據(jù)包括第一加密部分和第二加密部分和/或其他協(xié)議數(shù)據(jù),所述第一加密部分包括加密的密碼套件,并且所述第二加密部分包括數(shù)據(jù)安全性描述符(也稱為數(shù)據(jù)描述符)信息(例如,包括數(shù)據(jù)協(xié)議映射)。使用第一協(xié)議解密密鑰(例如,密碼套件解密密鑰)來(lái)解密協(xié)議數(shù)據(jù)的第一加密部分,以獲取密碼套件。使用第二協(xié)議解密密鑰來(lái)解密協(xié)議數(shù)據(jù)的第二加密部分,以獲取剩余的協(xié)議數(shù)據(jù)。解密可以以預(yù)定義或任意順序發(fā)生。例如,在一些情況下,可以至少部分地基于第一加密部分(例如,密碼套件)的解密結(jié)果來(lái)確定對(duì)第二加密部分的解密(例如,解密算法或密鑰大小)。在這些情況下,第二加密部分必須在解密第一加密部分之后進(jìn)行解密。在一些其他情況下,協(xié)議數(shù)據(jù)的不同部分之間可以不存在任何附屬性,并且對(duì)協(xié)議數(shù)據(jù)的解密可以以任意順序發(fā)生。
在一些示例中,可以使用協(xié)議解密密鑰(例如,密碼套件解密密鑰或映射解密密鑰)來(lái)提供對(duì)消息中的未包括在密文中的附加數(shù)據(jù)的真實(shí)性覆蓋。因此,可以驗(yàn)證消息中所包括的全局mac以確保消息數(shù)據(jù)的真實(shí)性和完整性。
在框1208處,確定一個(gè)或多個(gè)有效載荷解密密鑰。有效載荷解密密鑰可以與圖10-圖11中描述的對(duì)應(yīng)的有效載荷加密密鑰相同或不同??梢曰谙⒌陌l(fā)送者和接收者之間的一個(gè)或多個(gè)共享秘密以與框1204中所描述的方式類似的方式來(lái)確定協(xié)議解密密鑰。在一些實(shí)施方案中,相同的共享秘密用于生成協(xié)議解密密鑰和有效載荷解密密鑰兩者。另選地,可以使用不同的共享秘密來(lái)生成協(xié)議解密密鑰和有效載荷解密密鑰。
可以從相同或不同的共享秘密生成有效載荷解密密鑰。在一個(gè)示例中,將共享秘密用作到密鑰導(dǎo)出函數(shù)(kdf)的輸入,以生成被分割成各種子字符串的位字符串。然后,可以使用子字符串來(lái)生成有效載荷解密密鑰。在另一示例中,可以將不同的共享秘密和相同或不同的kdf一起使用來(lái)生成不同的有效載荷解密密鑰。在一些實(shí)施方案中,可以基于與協(xié)議解密密鑰相同的共享秘密來(lái)生成有效載荷解密密鑰。例如,可以由kdf使用共享秘密來(lái)生成位字符串,然后將所述位字符串分割成與協(xié)議解密密鑰相對(duì)應(yīng)的子字符串和協(xié)議解密密鑰。
有效載荷解密密鑰可以在基本相同的時(shí)間或在不同的時(shí)間生成。例如,可以基于共享秘密一次性生成所有有效載荷解密密鑰。在另一示例中,一些密鑰可以在其他密鑰之前生成。在某些情況下,密鑰可以在“按需要”的基礎(chǔ)上(就在解密操作需要它們之前)生成。在一些實(shí)施方案中,可以在與生成協(xié)議解密密鑰的基本相同的時(shí)間或不同的時(shí)間生成有效載荷解密密鑰。
有效載荷解密密鑰可以彼此獨(dú)立地生成或者基于先前生成的密鑰來(lái)生成。例如,可以將第一有效載荷解密密鑰用作輸入來(lái)生成第二有效載荷解密密鑰。作為另一示例,可以使用第一有效載荷解密密鑰來(lái)解密數(shù)據(jù)片段(例如,密鑰導(dǎo)出參數(shù)),然后將該數(shù)據(jù)片段用作輸入以生成第二有效載荷解密密鑰。在一些實(shí)施方案中,有效載荷解密密鑰的生成可以取決于使用諸如密碼套件的協(xié)議解密密鑰解密的信息。例如,密碼套件可以指定有效載荷解密密鑰的大小和/或密鑰導(dǎo)出函數(shù)。
在框1210處,使用協(xié)議數(shù)據(jù)和有效載荷解密密鑰對(duì)加密的有效載荷數(shù)據(jù)進(jìn)行解密。在一些實(shí)施方案中,加密的有效載荷數(shù)據(jù)可以作為一個(gè)整體使用由密碼套件指示的解密算法和在框1204處確定的協(xié)議解密密鑰來(lái)解密。在一些實(shí)施方案中,對(duì)有效載荷數(shù)據(jù)的解密包括驗(yàn)證有效載荷數(shù)據(jù)的mac。mac可以被包括作為協(xié)議數(shù)據(jù)的一部分。
在一些其他實(shí)施方案中,加密的有效載荷數(shù)據(jù)可以包括多個(gè)不止一個(gè)的加密的有效載荷元素。每個(gè)加密的有效載荷元素可以使用其對(duì)應(yīng)的有效載荷解密密鑰和解密算法來(lái)個(gè)別地解密。如上所述,將有效載荷數(shù)據(jù)劃分成更小的個(gè)別地受保護(hù)的數(shù)據(jù)元素可以降低暴露整個(gè)有效載荷數(shù)據(jù)的風(fēng)險(xiǎn)。另外,每個(gè)數(shù)據(jù)元素可以旨在由不同實(shí)體進(jìn)行訪問(wèn)或與不同的安全性級(jí)別相關(guān)聯(lián)。因此,利用不同的密鑰或算法來(lái)保護(hù)數(shù)據(jù)元素可以限制這些各方對(duì)預(yù)期數(shù)據(jù)元素的訪問(wèn),而不會(huì)不必要地暴露其他數(shù)據(jù)元素。
可以至少部分地基于在框1208處確定的協(xié)議數(shù)據(jù)來(lái)確定用于解密有效載荷元素的有效載荷解密密鑰、解密算法和可選地mac。作為一個(gè)示例,密碼套件可以指示要使用的密鑰大小和/或解密算法。作為另一示例,數(shù)據(jù)協(xié)議映射可以針對(duì)每個(gè)有效載荷元素指示要用于解密加密的有效載荷元素和/或用于驗(yàn)證解密結(jié)果的對(duì)應(yīng)的數(shù)據(jù)標(biāo)簽、解密密鑰、解密算法和/或mac。
解密的有效載荷數(shù)據(jù)可以由消息的接收者以任何合適的方式處理。例如,消息可以是來(lái)自服務(wù)器計(jì)算機(jī)的供應(yīng)響應(yīng)消息,且消息的有效載荷數(shù)據(jù)可以包括被提供給客戶端計(jì)算機(jī)的憑證數(shù)據(jù)(例如,pan或令牌、有限使用密鑰)。隨后,客戶端計(jì)算機(jī)可以使用憑證數(shù)據(jù)來(lái)進(jìn)行交易。作為另一示例,消息可以是從客戶端計(jì)算機(jī)到服務(wù)器計(jì)算機(jī)的請(qǐng)求消息,并且消息的有效載荷數(shù)據(jù)可以包括客戶端計(jì)算機(jī)的認(rèn)證或識(shí)別數(shù)據(jù)??梢杂煞?wù)器計(jì)算機(jī)使用有效載荷數(shù)據(jù)來(lái)認(rèn)證客戶端計(jì)算機(jī)和/或生成對(duì)應(yīng)的響應(yīng)。
在一些實(shí)施方案中,解密的有效載荷數(shù)據(jù)中的一些或全部可以使用不同的加密密鑰(例如,共享的或私有的)來(lái)重新加密、存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中和/或傳輸?shù)搅硪粚?shí)體。
圖13說(shuō)明了根據(jù)一些實(shí)施方案的用于解密消息的另一示例性過(guò)程1300。過(guò)程1300可以由客戶端計(jì)算機(jī)來(lái)實(shí)施以從服務(wù)器計(jì)算機(jī)解密響應(yīng)消息。另選地,過(guò)程1300也可以由服務(wù)器計(jì)算機(jī)來(lái)實(shí)施以從客戶端計(jì)算機(jī)解密請(qǐng)求消息。
在框1302處,接收包括加密的密碼套件、加密的數(shù)據(jù)協(xié)議映射和加密的有效載荷元素的消息。消息還可以包括其他數(shù)據(jù),諸如一次性發(fā)送者公鑰(例如,短暫或盲化的靜態(tài)密鑰)、受保護(hù)的接收者密鑰標(biāo)識(shí)符、標(biāo)頭版本等。
在框1304處,基于一個(gè)或多個(gè)接收者私鑰和一個(gè)或多個(gè)發(fā)送者公鑰來(lái)確定一個(gè)或多個(gè)共享秘密。在一個(gè)實(shí)施方案中,一個(gè)私鑰可以與不同的公鑰組合以導(dǎo)出不同的共享秘密。在另一個(gè)實(shí)施方案中,不同的私鑰可以與一個(gè)公鑰組合以導(dǎo)出不同的共享秘密。在一些實(shí)施方案中,接收者私鑰可以由包括在消息本身中的受保護(hù)的接收者密鑰標(biāo)識(shí)符來(lái)識(shí)別。消息可以包括多于一個(gè)受保護(hù)的接收者密鑰標(biāo)識(shí)符,其中每一者識(shí)別不同的接收者私鑰。例如,消息可以包括指示協(xié)議版本的標(biāo)頭版本,所述協(xié)議版本可以用于確定用于解密受保護(hù)的接收者密鑰標(biāo)識(shí)符的標(biāo)識(shí)符解密密鑰。在一些實(shí)施方案中,標(biāo)頭版本可以用于從多個(gè)默認(rèn)密鑰對(duì)中選擇一個(gè)默認(rèn)密鑰對(duì)。所選擇的默認(rèn)密鑰對(duì)包括默認(rèn)私鑰和默認(rèn)公鑰。可以基于默認(rèn)私鑰和默認(rèn)公鑰的點(diǎn)乘法來(lái)導(dǎo)出標(biāo)識(shí)符解密密鑰。
發(fā)送者公鑰可以從消息本身獲取。例如,發(fā)送者公鑰可以存儲(chǔ)在消息的明文和/或密文中。如果存儲(chǔ)在明文中,則發(fā)送者公鑰通常被模糊化以提供安全性。在一些情況下,可以從先前的消息或從帶外信道(諸如電子郵件、文本、電話呼叫、郵政郵件或與用于請(qǐng)求/響應(yīng)消息的當(dāng)前通信信道不同的任何其他信道)來(lái)獲取發(fā)送者公鑰。在某些情況下,可以從諸如證書(shū)機(jī)構(gòu)的第三方獲取發(fā)送者公鑰。
在框1306處,基于上文確定的一個(gè)或多個(gè)共享秘密來(lái)確定密碼套件解密密鑰。例如,可以將共享秘密用作到kdf中的輸入以生成位字符串,所述位字符串的一部分(例如,前128位)可以用作密碼套件解密密鑰。密碼套件解密密鑰是協(xié)議解密密鑰。字符串的剩余部分可以被分割以生成其他協(xié)議解密密鑰(例如,映射解密密鑰)或有效載荷解密密鑰。
在框1308處,使用密碼套件解密密鑰來(lái)解密加密的密碼套件以獲取密碼套件。密碼套件解密密鑰和/或用于解密密碼套件的解密算法通常獨(dú)立于密碼套件本身。例如,密碼套件可以指定使用aead加密算法和256位的密鑰大小。密碼套件解密密鑰可以是不同的密鑰大小(例如,128位),且用于解密密碼套件的解密算法(例如,高級(jí)加密標(biāo)準(zhǔn)(aes))可以不同于密碼套件指定的密鑰大小。在一些實(shí)施方案中,可以將加密的密碼套件包括作為消息的明文的一部分。在其他實(shí)施方案中,可以將加密的密碼套件包括作為消息的密文的一部分。
在框1310處,使用在框1304處確定的共享秘密來(lái)確定映射解密密鑰。映射解密密鑰是用于解密附加協(xié)議數(shù)據(jù)(諸如下面的數(shù)據(jù)協(xié)議映射)的協(xié)議解密數(shù)據(jù)。映射解密密鑰通常不同于密碼套件解密密鑰。然而,在某些情況下,映射解密密鑰可以與密碼套件解密密鑰相同。在某些實(shí)施方案中,映射解密密鑰可以使用與用于確定密碼套件解密密鑰相同的共享秘密來(lái)確定。在其他實(shí)施方案中,映射解密密鑰可以使用與用于確定密碼套件解密密鑰不同的共享秘密來(lái)確定??梢栽谂c確定密碼套件解密密鑰的基本相同的時(shí)間或不同的時(shí)間確定映射解密密鑰。
在一些實(shí)施方案中,可以至少部分地基于密碼套件來(lái)確定映射解密密鑰。例如,映射解密密鑰的大小和/或kdf可以由密碼套件指定。因此,選擇具有對(duì)應(yīng)大小的位字符串的一部分作為映射解密密鑰。位字符串可以是基于共享秘密的kdf的輸出字符串。在某些情況下,同一輸出字符串的其他部分可用于密碼套件解密密鑰和/或有效載荷解密密鑰。在其他實(shí)施方案中,映射解密密鑰可以不基于密碼套件。
在框1312處,使用密碼套件和映射解密密鑰對(duì)加密的數(shù)據(jù)協(xié)議映射數(shù)據(jù)進(jìn)行解密以獲取數(shù)據(jù)協(xié)議映射。
在一些實(shí)施方案中,用于解密數(shù)據(jù)協(xié)議映射的解密算法可以至少部分地基于密碼套件來(lái)確定。例如,密碼套件可以指定使用aead加密算法和/或256位的密鑰大小。因此,有效載荷加密密鑰可以具有256位的密鑰大小,和/或有效載荷元素可以使用aead加密函數(shù)進(jìn)行加密。
數(shù)據(jù)協(xié)議映射可以包括分別對(duì)應(yīng)于多個(gè)有效載荷元素的多個(gè)映射條目。每個(gè)映射條目可以包括對(duì)有效載荷元素的引用(例如,數(shù)據(jù)標(biāo)簽)、識(shí)別用于有效載荷元素的加密/解密密鑰的密鑰標(biāo)識(shí)符、識(shí)別用于有效載荷元素的密碼算法(例如,加密/解密算法)(例如,aead)的算法標(biāo)識(shí)符、有效載荷元素的消息認(rèn)證碼(mac)等??梢陨蒻ac作為將加密算法(例如,aead)應(yīng)用到有效載荷元素的結(jié)果。上述映射條目數(shù)據(jù)中的一些或全部在不同的實(shí)施方案中可以是可選的。例如,映射條目可以僅包括用于給定的有效載荷元素的mac,而不包括加密/解密密鑰標(biāo)識(shí)符或算法標(biāo)識(shí)符。因此,數(shù)據(jù)協(xié)議映射可以包括mac列表。作為另一示例,映射條目可以包括加密/解密密鑰標(biāo)識(shí)符和/或算法標(biāo)識(shí)符,但是可能不包括mac。例如,當(dāng)應(yīng)用到有效載荷元素時(shí),加密算法(例如aes)可以不生成mac。
在一些實(shí)施方案中,數(shù)據(jù)協(xié)議映射還可以包括附加協(xié)議數(shù)據(jù),諸如受保護(hù)的發(fā)送者密鑰標(biāo)識(shí)符、會(huì)話標(biāo)識(shí)符、密碼套件列表、控制位等。在其他實(shí)施方案中,附加協(xié)議數(shù)據(jù)可以使用不同的協(xié)議加密密鑰進(jìn)行加密。
在框1314處,使用數(shù)據(jù)協(xié)議映射來(lái)確定有效載荷解密密鑰和解密算法,以用于解密加密的有效載荷元素。
可以基于在框1304處確定的共享秘密來(lái)確定一個(gè)或多個(gè)有效載荷解密密鑰??梢允褂蒙鲜鱿嗤墓蚕砻孛芎?或用于協(xié)議解密密鑰(例如,密碼套件密鑰和/或映射解密密鑰)相同的kdf來(lái)生成有效載荷解密密鑰。在一個(gè)實(shí)施方案中,由kdf使用共享秘密生成長(zhǎng)位字符串。長(zhǎng)位字符串被分割成多個(gè)較小的子字符串,每個(gè)子字符串對(duì)應(yīng)于有效載荷解密密鑰。在一些實(shí)施方案中,長(zhǎng)位字符串還可以用于生成密碼套件解密密鑰和/或映射解密密鑰。
在一些實(shí)施方案中,有效載荷解密密鑰的生成可以由數(shù)據(jù)協(xié)議映射確定。例如,數(shù)據(jù)協(xié)議映射可以針對(duì)每個(gè)有效載荷元素指示對(duì)應(yīng)的解密密鑰的大小。基于該信息,可以從更長(zhǎng)的位字符串(例如,由kdf使用共享秘密生成)中選擇位字符串的連續(xù)片段,并將這些連續(xù)片段用作有效載荷解密密鑰,其中每個(gè)片段的長(zhǎng)度如由數(shù)據(jù)協(xié)議映射所指示對(duì)應(yīng)于對(duì)應(yīng)的有效載荷解密密鑰的大小。在一些實(shí)施方案中,一次性生成所有的有效載荷解密密鑰。在一些其他實(shí)施方案中,有效載荷解密密鑰可以在“按需要”的基礎(chǔ)上生成,例如,就在解密特定的對(duì)應(yīng)的有效載荷元素需要它們之前。
可以至少部分地基于數(shù)據(jù)協(xié)議映射來(lái)識(shí)別要用于特定有效載荷元素的有效載荷解密密鑰和/或解密算法。例如,可以檢索(例如,使用數(shù)據(jù)標(biāo)簽)有效載荷元素的數(shù)據(jù)協(xié)議映射條目。數(shù)據(jù)協(xié)議映射條目可以包括與數(shù)據(jù)元素相關(guān)聯(lián)的數(shù)據(jù)標(biāo)簽、識(shí)別有效載荷解密密鑰的解密密鑰標(biāo)識(shí)符、和/或識(shí)別用于有效載荷元素的解密算法的解密算法標(biāo)識(shí)符。在一個(gè)實(shí)施方式中,有效載荷解密密鑰存儲(chǔ)在列表、陣列或其他合適的數(shù)據(jù)結(jié)構(gòu)中。解密密鑰標(biāo)識(shí)符可以是索引,其指向此類數(shù)據(jù)結(jié)構(gòu)中的其中存儲(chǔ)有對(duì)應(yīng)的有效載荷解密密鑰的位置。算法標(biāo)識(shí)符可以通過(guò)名稱來(lái)識(shí)別算法。另選地,算法標(biāo)識(shí)符可以包括索引,其指向列表、陣列或其他適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)中的其中存儲(chǔ)有對(duì)應(yīng)的算法名稱或用于算法的代碼的位置。
在一些另選實(shí)施方案中,解密密鑰標(biāo)識(shí)符和/或算法標(biāo)識(shí)符可以不被明確地包括在數(shù)據(jù)協(xié)議映射中。例如,可以基于有效載荷元素相對(duì)于其他有效載荷元素的位置來(lái)隱式地識(shí)別有效載荷元素的解密密鑰。例如,在有效載荷解密密鑰的有序列表中的第一有效載荷解密密鑰可以對(duì)應(yīng)于第一有效載荷元素,在有效載荷解密密鑰的有序列表中的第二有效載荷解密密鑰可以對(duì)應(yīng)于第二有效載荷元素,依此類推。算法標(biāo)識(shí)符也可以這樣實(shí)施。
數(shù)據(jù)協(xié)議映射可以可選地包括可在加密的有效載荷元素的解密期間被驗(yàn)證的每個(gè)有效載荷元素的mac。作為一個(gè)示例,可以將加密的有效載荷元素、對(duì)應(yīng)的有效載荷解密密鑰和對(duì)應(yīng)的mac提供給對(duì)應(yīng)的解密函數(shù)(例如,aead)以獲取明文中的有效載荷元素,或者如果mac不匹配加密的有效載荷元素時(shí)報(bào)錯(cuò)。
在一些實(shí)施方案中,除了數(shù)據(jù)協(xié)議映射之外或代替數(shù)據(jù)協(xié)議映射,由密碼套件來(lái)確定用于有效載荷元素中的一些或全部的有效載荷解密密鑰和/或算法。在一個(gè)實(shí)施方案中,可以使用分層方法,其中搜索數(shù)據(jù)協(xié)議映射以確定用于解密特定有效載荷元素的元素特定解密密鑰和/或算法。如果沒(méi)有找到,則可以使用由密碼套件指定的全局解密密鑰和/或默認(rèn)解密算法來(lái)解密有效載荷元素。
在一些實(shí)施方案中,可以例如在“按需要”的基礎(chǔ)上針對(duì)包括在消息中的多于一個(gè)的加密的有效載荷元素來(lái)重復(fù)框1314和框1316。協(xié)議數(shù)據(jù)可以包括對(duì)預(yù)期接收者的識(shí)別、可訪問(wèn)性(例如,所需訪問(wèn)權(quán)限)以及關(guān)于有效載荷元素中的一些或全部的其他上下文信息。在一些實(shí)施方案中,有效載荷元素的解密可以取決于另一有效載荷元素的解密。例如,從解密一個(gè)加密的有效載荷元素獲取的數(shù)據(jù)可以用于解密另一加密的有效載荷元素。在一些實(shí)施方案中,解密的有效載荷元素可以在被存儲(chǔ)或傳輸之前使用不同的密鑰(例如,本地加密密鑰)來(lái)重新加密。
在一些實(shí)施方案中,敏感密碼信息(諸如共享秘密和會(huì)話密鑰)可以在其不再被需要之后立即被擦除(例如,刪除、歸零或以其他方式呈現(xiàn)為不可訪問(wèn))。此類敏感信息的擦除可以在例如使用敏感信息解密消息數(shù)據(jù)之后發(fā)生。在其他實(shí)施方案中,此類密碼信息中的一些可以在其使用之后的一段時(shí)間內(nèi)被存儲(chǔ)(例如,在安全元件中),以允許例如異步消息的處理。
圖14說(shuō)明了根據(jù)一些實(shí)施方案的用于解密消息1400的另一示例性過(guò)程。消息1400可以是由服務(wù)器計(jì)算機(jī)從客戶端計(jì)算機(jī)接收的請(qǐng)求消息,或由客戶端計(jì)算機(jī)從服務(wù)器計(jì)算機(jī)接收的響應(yīng)消息。
消息1400可以包括附加的認(rèn)證數(shù)據(jù)(aad)1418、密文1420和認(rèn)證數(shù)據(jù)1422。aad1418可以包括標(biāo)頭版本1402、一個(gè)或多個(gè)受保護(hù)的接收者密鑰標(biāo)識(shí)符1404以及一個(gè)或多個(gè)一次性發(fā)送者公鑰1406。標(biāo)頭版本1402可以指示當(dāng)前消息使用的協(xié)議版本。在一些實(shí)施方案中,標(biāo)頭版本可以不包括在aad1418中,而是改為保持為明文的形式。協(xié)議版本可以指出消息的數(shù)據(jù)格式。受保護(hù)的接收者密鑰標(biāo)識(shí)符1404可以是用于請(qǐng)求消息的受保護(hù)的服務(wù)器密鑰標(biāo)識(shí)符和用于響應(yīng)消息的被保護(hù)的客戶端密鑰標(biāo)識(shí)。每個(gè)受保護(hù)的接收者密鑰標(biāo)識(shí)符可用于標(biāo)識(shí)對(duì)應(yīng)的接收者私鑰。一次性發(fā)送者公鑰1406可以包括用于請(qǐng)求消息的一個(gè)或多個(gè)一次性客戶端公鑰或用于響應(yīng)消息的一個(gè)或多個(gè)一次性服務(wù)器公鑰。一次性發(fā)送者公鑰1406可以是短暫密鑰或者盲化的或模糊化的靜態(tài)密鑰。包括在aad中的數(shù)據(jù)可以不被加密,但可以被模糊化和完整性保護(hù)(例如通過(guò)全局應(yīng)用的aead)。例如,一次性發(fā)送者公鑰1406可以被模糊化??梢砸允鼙Wo(hù)的形式(例如,加密的)來(lái)包括受保護(hù)的接收者密鑰標(biāo)識(shí)符。標(biāo)頭版本1402可以以明文的形式提供,而不是被模糊化或被加密。
密文1420可以包括:加密的有效載荷數(shù)據(jù)1414;以及加密的協(xié)議數(shù)據(jù),其包括加密的密碼套件1408和其他加密的協(xié)議數(shù)據(jù)1410,所述其他加密的協(xié)議數(shù)據(jù)包括數(shù)據(jù)安全性描述符1412。數(shù)據(jù)安全性描述符1412可以包括諸如本文所述的數(shù)據(jù)協(xié)議映射。
認(rèn)證數(shù)據(jù)1422可以包括用于整個(gè)消息和/或用于消息的各個(gè)部分的一個(gè)或多個(gè)消息加密代碼(例如,aeadmac)。例如,認(rèn)證數(shù)據(jù)1422可以包括:保護(hù)aad1418的全局mac;和/或多個(gè)本地mac,每個(gè)本地mac覆蓋消息的不同部分(諸如有效載荷數(shù)據(jù)的不同有效載荷元素)。
根據(jù)實(shí)施方案,一旦接收者(例如,服務(wù)器計(jì)算機(jī)或客戶端計(jì)算機(jī))接收到消息1400,接收者便可以執(zhí)行以下示例步驟以對(duì)消息進(jìn)行解密。
在步驟1處,可以確定接收者的默認(rèn)私鑰1424。該確定可以基于標(biāo)頭版本1402。例如,可能存在與不同協(xié)議版本相關(guān)聯(lián)的多個(gè)默認(rèn)私鑰。標(biāo)頭版本1402可以指示消息的協(xié)議版本并由此用于選擇對(duì)應(yīng)的默認(rèn)私鑰。
在步驟2處,可以基于默認(rèn)私鑰1424來(lái)導(dǎo)出標(biāo)識(shí)符解密密鑰1426。例如,可以基于默認(rèn)私鑰1424和與默認(rèn)私鑰1424相關(guān)聯(lián)的默認(rèn)公鑰的點(diǎn)乘法來(lái)導(dǎo)出標(biāo)識(shí)符解密密鑰1426。標(biāo)識(shí)符解密密鑰1426可以用于解密一個(gè)或多個(gè)受保護(hù)的接收者密鑰標(biāo)識(shí)符1402以獲取一個(gè)或多個(gè)接收者密鑰標(biāo)識(shí)符(未示出)。
在步驟3處,使用一個(gè)或多個(gè)接收者密鑰標(biāo)識(shí)符來(lái)檢索對(duì)應(yīng)的接收者私鑰1428。在其中接收者密鑰標(biāo)識(shí)符無(wú)效的一些情況下(例如,與任何接收者私鑰都不相關(guān)聯(lián)的隨機(jī)標(biāo)識(shí)符),可以改為使用默認(rèn)私鑰或某個(gè)其他合適的私鑰。
在步驟4處,基于一個(gè)或多個(gè)接收者私鑰1428和一個(gè)或多個(gè)一次性發(fā)送者公鑰1406(例如,使用ecdh)來(lái)生成一個(gè)或多個(gè)共享秘密。
在步驟5處,可以使用共享秘密,以使用kdf和其他密鑰導(dǎo)出參數(shù)(如果有的話)來(lái)導(dǎo)出一個(gè)或多個(gè)保護(hù)密鑰1430(也稱為會(huì)話密鑰),諸如sk0、sk1、...skn。保護(hù)密鑰1430可以包括協(xié)議解密密鑰和有效載荷解密密鑰。在某些情況下,解密密鑰1430中的一些或全部可以與用于加密消息中的數(shù)據(jù)的加密密鑰相同。在一些其他情況下,解密密鑰可以與加密密鑰不同。
在步驟6處,使用第一保護(hù)密鑰(sk0)來(lái)解密加密的密碼套件1408,以獲取密碼套件。用于解密密碼套件的第一保護(hù)密鑰和解密算法可以獨(dú)立于密碼套件。
在步驟7處,使用第二保護(hù)密鑰(sk1)來(lái)解密其他加密的協(xié)議數(shù)據(jù)1410以獲取附加協(xié)議數(shù)據(jù),諸如數(shù)據(jù)安全性描述(例如,數(shù)據(jù)協(xié)議映射)??梢愿鶕?jù)密碼套件來(lái)執(zhí)行對(duì)加密的協(xié)議數(shù)據(jù)1410的解密。例如,密碼套件可以指示要使用的解密算法(例如,aead)。
在步驟8處,使用其他保護(hù)密鑰(例如,sk3至skn)和協(xié)議數(shù)據(jù)來(lái)解密加密的有效載荷數(shù)據(jù)1414。例如,加密的有效載荷數(shù)據(jù)可以包括多個(gè)獨(dú)立加密的數(shù)據(jù)元素。數(shù)據(jù)協(xié)議映射可以用來(lái)通過(guò)指定要使用的有效載荷解密密鑰、解密算法和/或消息驗(yàn)證碼來(lái)確定如何解密和/或驗(yàn)證每個(gè)加密的數(shù)據(jù)元素。例如,在一個(gè)示例中,可以使用第一有效載荷解密密鑰(例如,ski)來(lái)解密第一加密的有效載荷元素,而可以使用第二有效載荷解密密鑰(例如,ski)來(lái)解密第二加密的有效載荷元素。在一些情況下,加密的有效載荷元素中的一些或全部可以不被解密,或者可以在不同的時(shí)間被解密。
在一些情況下,可以取決于存儲(chǔ)在有效載荷元素中的數(shù)據(jù)的類型來(lái)解密有效載荷元素。例如,接收者(例如,服務(wù)器計(jì)算機(jī)或客戶端計(jì)算機(jī))可以基于要執(zhí)行的特定操作來(lái)決定僅對(duì)某些數(shù)據(jù)進(jìn)行解密。以此方式,只有需要的數(shù)據(jù)被解密,并且不需要的數(shù)據(jù)可以保持加密,從而避免當(dāng)數(shù)據(jù)處于明文時(shí)的潛在發(fā)現(xiàn),即使僅在短時(shí)間內(nèi)。在一個(gè)示例中,可以在數(shù)據(jù)安全性描述符中指示數(shù)據(jù)的類型作為協(xié)議數(shù)據(jù)的一部分。
在步驟9處,可以使用保護(hù)密鑰和/或解密數(shù)據(jù)來(lái)驗(yàn)證認(rèn)證數(shù)據(jù)(例如mac)1422。在一些實(shí)施方案中,mac的驗(yàn)證可以在數(shù)據(jù)(mac為其提供保護(hù))的解密期間、之前或之后發(fā)生。
c.http消息的數(shù)據(jù)保護(hù)
本文討論的技術(shù)可用于保護(hù)在http消息中傳輸?shù)拿舾袛?shù)據(jù)。在一些實(shí)施方案中,可以使用本文描述的加密方法來(lái)加密敏感有效載荷數(shù)據(jù)以生成加密的有效載荷數(shù)據(jù)和加密的協(xié)議數(shù)據(jù)。加密的有效載荷數(shù)據(jù)和加密的協(xié)議數(shù)據(jù)可以包括在http消息(例如,http請(qǐng)求消息或http響應(yīng)消息)中并進(jìn)行傳輸。相反地,可以使用本文描述的解密方法來(lái)解密包含加密的協(xié)議數(shù)據(jù)和加密的有效載荷數(shù)據(jù)的http消息,以恢復(fù)敏感有效載荷數(shù)據(jù)。在各種實(shí)施方案中,敏感有效載荷數(shù)據(jù)可以包括文件、數(shù)據(jù)對(duì)象、數(shù)據(jù)流或任何其他形式的數(shù)據(jù)。
雖然以下討論中的實(shí)施方案利用javascript對(duì)象概念(json)和jsonweb加密(jwe)來(lái)實(shí)施各個(gè)方面,但是應(yīng)當(dāng)理解,在另選實(shí)施方案中可以使用任何其他合適的數(shù)據(jù)格式和/或消息加密方案。
圖15說(shuō)明了根據(jù)一些實(shí)施方案的用于生成http請(qǐng)求消息的示例性過(guò)程1500。過(guò)程1500可以由http請(qǐng)求消息的發(fā)送者(諸如客戶端計(jì)算機(jī))來(lái)實(shí)施。
如所說(shuō)明,敏感數(shù)據(jù)或密鑰a1502(例如,pan信息)和敏感數(shù)據(jù)或密鑰b1504(例如,訪問(wèn)令牌散列)可以由加密服務(wù)或模塊1506加密以生成加密數(shù)據(jù),該加密數(shù)據(jù)包括加密數(shù)據(jù)a1510及其相關(guān)聯(lián)的認(rèn)證標(biāo)簽1512(例如,mac)、加密數(shù)據(jù)b1514及其相關(guān)聯(lián)的認(rèn)證標(biāo)簽1516(例如,mac)以及可以包括密鑰協(xié)商信息和/或加密協(xié)議信息(例如,密碼套件)的標(biāo)頭數(shù)據(jù)1508。在某些情況下,要加密的數(shù)據(jù)可能已經(jīng)被加密。例如,luk可以用本地des密鑰進(jìn)行加密。在這種情況下,在用保護(hù)密鑰(例如,基于共享秘密)重新加密本地加密的數(shù)據(jù)以生成加密數(shù)據(jù)之前,加密服務(wù)1506可以首先解密該本地加密的數(shù)據(jù)(例如,使用本地des密鑰)。
加密服務(wù)或模塊1506優(yōu)選地在相對(duì)安全的環(huán)境1505中執(zhí)行。安全環(huán)境可以由硬件、軟件或兩者的組合來(lái)提供。例如,安全環(huán)境可以由硬件安全模塊(hsm)和/或應(yīng)用程序編程接口(api)提供。關(guān)于圖19來(lái)討論示例性加密服務(wù)或模塊的操作。
可以處理加密服務(wù)1506的上述輸出以生成根據(jù)一個(gè)或多個(gè)模板(諸如一個(gè)或多個(gè)http模板1520和/或一個(gè)或多個(gè)json內(nèi)容模板1522)格式化的http請(qǐng)求消息1524。在一個(gè)實(shí)施方案中,可以將加密服務(wù)1506的輸出、http模板1520、json內(nèi)容模板1522提供作為到格式化服務(wù)或模塊1518的輸入,所述格式化服務(wù)或模塊生成正確格式化的http請(qǐng)求消息1524。在一個(gè)實(shí)施方案中,http請(qǐng)求消息1524可以根據(jù)jwe規(guī)范進(jìn)行格式化。
http請(qǐng)求消息1524包括http請(qǐng)求標(biāo)頭1526,所述http請(qǐng)求標(biāo)頭包括標(biāo)頭數(shù)據(jù)1508。標(biāo)頭數(shù)據(jù)1508可以被編碼或模糊化(例如,使用base64url編碼)。示例性標(biāo)頭數(shù)據(jù)1508可以包括公鑰或私鑰引用(例如,證書(shū)序列號(hào))、一次性公鑰、密鑰協(xié)商參數(shù)、有效載荷數(shù)據(jù)的mac列表和全局mac。
http請(qǐng)求消息1524還包括在http請(qǐng)求標(biāo)頭1526或請(qǐng)求消息的其他適當(dāng)部分中的加密數(shù)據(jù)a1510和加密數(shù)據(jù)b1514。例如,在一個(gè)實(shí)施方案中,http請(qǐng)求消息1524可以包括在http請(qǐng)求標(biāo)頭或http請(qǐng)求的另一部分中的數(shù)據(jù)ajwe序列化1530和數(shù)據(jù)bjwe序列化1532。這些jwe序列化可以是jwejson序列化或jwejson序列化。每個(gè)jwe序列化可以包括在名稱/值對(duì)中表示的標(biāo)頭、密文和認(rèn)證標(biāo)簽。數(shù)據(jù)可以在被包括在jwe序列化中之前進(jìn)行base64url編碼。jwe序列化的標(biāo)頭可以包括識(shí)別用于加密特定數(shù)據(jù)的加密算法和加密密鑰的協(xié)議數(shù)據(jù)。例如,數(shù)據(jù)ajwe序列化1530的標(biāo)頭可以包括對(duì)用于加密數(shù)據(jù)a的加密算法(例如,“alg:alg_name”)和加密密鑰(例如,“kid:1”,指代加密密鑰sk1)的識(shí)別。數(shù)據(jù)bjwe序列化1532的標(biāo)頭可以包括對(duì)用于加密數(shù)據(jù)b的加密算法(例如,“alg:alg_name”)和加密密鑰(例如,“kid:2”,指代加密密鑰sk2)的識(shí)別。數(shù)據(jù)ajwe序列化1530的密文可以包括加密數(shù)據(jù)a1510。數(shù)據(jù)bjwe序列化1532的密文可以包括加密數(shù)據(jù)b1514。數(shù)據(jù)ajwe序列化1530的認(rèn)證標(biāo)簽可以包括認(rèn)證標(biāo)簽1512。數(shù)據(jù)bjwe序列化1532的認(rèn)證標(biāo)簽可以包括認(rèn)證標(biāo)簽1516。
圖16說(shuō)明了根據(jù)一些實(shí)施方案的用于處理http請(qǐng)求消息的示例性過(guò)程1600。過(guò)程1600可以由http請(qǐng)求消息的接收者(諸如服務(wù)器計(jì)算機(jī))來(lái)實(shí)施。
如所說(shuō)明,諸如圖15中所描述的http請(qǐng)求消息1524可以由剖析模塊1602處理以提取標(biāo)頭數(shù)據(jù)1508、加密數(shù)據(jù)a1510和相關(guān)聯(lián)的認(rèn)證標(biāo)簽1512以及加密數(shù)據(jù)b1514和相關(guān)聯(lián)的認(rèn)證標(biāo)簽1516。如果需要,剖析模塊可以執(zhí)行base64url解碼。
提取的數(shù)據(jù)可以被饋送到解密服務(wù)或模塊1604中以獲取原始敏感數(shù)據(jù),諸如敏感數(shù)據(jù)a1502(例如,明文中的pan信息)和敏感數(shù)據(jù)b1504(例如,明文中的訪問(wèn)令牌散列)。
解密服務(wù)或模塊1604優(yōu)選地在相對(duì)安全的環(huán)境1605中執(zhí)行。安全環(huán)境可以由硬件、軟件或兩者的組合來(lái)提供。例如,安全環(huán)境可以由hsm和/或api提供。關(guān)于圖20來(lái)討論示例性解密服務(wù)或模塊1604的操作。
圖17說(shuō)明了根據(jù)一些實(shí)施方案的用于生成http響應(yīng)消息的示例性過(guò)程1700。過(guò)程1700可以由http響應(yīng)消息的發(fā)送者(諸如服務(wù)器計(jì)算機(jī))來(lái)實(shí)施。過(guò)程1700的方面可以類似于用于加密圖15中描述的http請(qǐng)求消息的數(shù)據(jù)的過(guò)程1500。
在類似于過(guò)程1500中的數(shù)據(jù)a和數(shù)據(jù)b的加密的過(guò)程中,敏感或密鑰數(shù)據(jù)c1702(例如,有限使用密鑰(luk))和敏感數(shù)據(jù)或密鑰d1704(例如,令牌參數(shù))可以由加密服務(wù)或模塊1706進(jìn)行加密以生成加密的數(shù)據(jù),所述加密的數(shù)據(jù)包括加密的敏感數(shù)據(jù)c1710及其相關(guān)聯(lián)的認(rèn)證標(biāo)簽1712(例如,mac)、加密的敏感數(shù)據(jù)d1714及其相關(guān)聯(lián)的認(rèn)證標(biāo)簽1716(例如,mac)以及可以包括密鑰協(xié)商信息和/或加密信息(例如,密碼套件)的標(biāo)頭數(shù)據(jù)1708。在某些情況下,要加密的數(shù)據(jù)可能已經(jīng)被加密。例如,luk可以用本地des密鑰進(jìn)行加密。在這種情況下,在用保護(hù)密鑰(例如,基于共享秘密)重新加密本地加密的數(shù)據(jù)以生成加密數(shù)據(jù)之前,加密服務(wù)1706可以首先解密該本地加密的數(shù)據(jù)(例如,使用本地des密鑰)。
加密服務(wù)或模塊1706優(yōu)選地在相對(duì)安全的環(huán)境1705中執(zhí)行。安全環(huán)境可以由硬件、軟件或兩者的組合來(lái)提供。例如,安全環(huán)境可以由hsm和/或api提供。關(guān)于圖19來(lái)討論示例性加密服務(wù)或模塊的操作。在一些實(shí)施方案中,圖16中討論的加密模塊1706和解密模塊1606可以由相同的模塊或不同的模塊實(shí)施。
可以處理加密服務(wù)1706的上述輸出以生成根據(jù)一個(gè)或多個(gè)模板(諸如一個(gè)或多個(gè)http模板1720和/或一個(gè)或多個(gè)json內(nèi)容模板1722)格式化的http響應(yīng)消息1724。如所說(shuō)明,在一個(gè)實(shí)施方案中,可以將加密服務(wù)1706的輸出數(shù)據(jù)、http模板1720、json內(nèi)容模板1722提供作為到格式化服務(wù)或模塊1718的輸入,所述格式化服務(wù)或模塊生成正確格式化的http響應(yīng)消息1724。在一個(gè)實(shí)施方案中,http響應(yīng)消息1724可以根據(jù)jwe規(guī)范進(jìn)行格式化。
http響應(yīng)消息1724包括http響應(yīng)標(biāo)頭1726,所述http響應(yīng)標(biāo)頭包括標(biāo)頭數(shù)據(jù)1708。標(biāo)頭數(shù)據(jù)1708可以被編碼或模糊化(例如,使用base64url編碼)。示例性標(biāo)頭數(shù)據(jù)1708可以包括公鑰或私鑰引用(例如,證書(shū)序列號(hào))、一次性公鑰、密鑰協(xié)商參數(shù)、有效載荷數(shù)據(jù)的mac列表和全局mac。
http響應(yīng)消息1724還包括在http響應(yīng)標(biāo)頭1726或響應(yīng)消息的其他適當(dāng)部分中的加密數(shù)據(jù)c1710和加密數(shù)據(jù)d1714。例如,在一個(gè)實(shí)施方案中,http響應(yīng)消息1724可以包括在http響應(yīng)標(biāo)頭或http響應(yīng)的另一部分中的數(shù)據(jù)cwe序列化1730和數(shù)據(jù)dwe序列化1732。這些jwe序列化可以是jwejson序列化或jwejson序列化。每個(gè)jwe序列化可以包括在名稱/值對(duì)中表示的標(biāo)頭、密文和認(rèn)證標(biāo)簽。數(shù)據(jù)可以在被包括在jwe序列化中之前進(jìn)行base64url編碼。jwe序列化的標(biāo)頭可以包括識(shí)別用于加密特定數(shù)據(jù)的加密算法和加密密鑰的協(xié)議數(shù)據(jù)。例如,數(shù)據(jù)cjwe序列化1730的標(biāo)頭可以包括對(duì)用于加密數(shù)據(jù)c的加密算法(例如,“alg:alg_name”)和加密密鑰(例如,“kid:1”,指代加密密鑰sk1)的識(shí)別。數(shù)據(jù)djwe序列化1732的標(biāo)頭可以包括對(duì)用于加密數(shù)據(jù)d的加密算法(例如,“alg:alg_name”)和加密密鑰(例如,“kid:2”,指代加密密鑰sk2)的識(shí)別。數(shù)據(jù)cjwe序列化1730的密文可以包括加密數(shù)據(jù)c1710。數(shù)據(jù)djwe序列化1732的密文可以包括加密數(shù)據(jù)d1714。數(shù)據(jù)cjwe序列化1730的認(rèn)證標(biāo)簽可以包括認(rèn)證標(biāo)簽1712。數(shù)據(jù)djwe序列化1732的認(rèn)證標(biāo)簽可以包括認(rèn)證標(biāo)簽1716。
圖18說(shuō)明了根據(jù)一些實(shí)施方案的用于處理http響應(yīng)消息的示例性過(guò)程1800。過(guò)程1800可以由http響應(yīng)消息的接收者(諸如客戶端計(jì)算機(jī))來(lái)實(shí)施。過(guò)程1800的方面可以類似于圖16中描述的用于解密來(lái)自http請(qǐng)求消息的數(shù)據(jù)的過(guò)程1600。
如所說(shuō)明,諸如圖17中所描述的http響應(yīng)消息1724可以由剖析模塊1802處理以提取標(biāo)頭數(shù)據(jù)1708、加密數(shù)據(jù)c1710和相關(guān)聯(lián)的認(rèn)證標(biāo)簽1712以及加密數(shù)據(jù)d1514和相關(guān)聯(lián)的認(rèn)證標(biāo)簽1716。
提取的數(shù)據(jù)可以被饋送到解密服務(wù)或模塊1804以獲取原始敏感數(shù)據(jù),諸如敏感數(shù)據(jù)c1702(例如,明文中的pan信息)和敏感數(shù)據(jù)d1704(例如,明文中的訪問(wèn)令牌散列)。
解密服務(wù)或模塊1804優(yōu)選地在相對(duì)安全的環(huán)境1805中執(zhí)行。安全環(huán)境可以由硬件、軟件或兩者的組合來(lái)提供。例如,安全環(huán)境可以由hsm和/或api提供。關(guān)于圖20討論示例性解密服務(wù)或模塊的操作。
圖19說(shuō)明了根據(jù)一些實(shí)施方案的用于加密敏感數(shù)據(jù)的示例性加密過(guò)程1900。加密過(guò)程1900可以用于加密要包括在請(qǐng)求消息或響應(yīng)消息中的敏感數(shù)據(jù)。在一些實(shí)施方案中,加密過(guò)程1900可以由加密服務(wù)或模塊(諸如上文在圖15和圖17中討論的加密服務(wù)或模塊)來(lái)實(shí)施。通常,加密過(guò)程1900可以用于生成供存儲(chǔ)、運(yùn)送的加密數(shù)據(jù),以用于任何其他合適的目的。
在步驟1處,使用密鑰協(xié)商協(xié)議數(shù)據(jù)1902來(lái)確定一個(gè)或多個(gè)會(huì)話密鑰1904(例如,sk0,sk1和sk2)。密鑰協(xié)商協(xié)議數(shù)據(jù)可以包括公鑰、策略等??梢允褂萌魏魏线m的密鑰協(xié)商算法,諸如ecdh和/或kdf。
在步驟2處,可以生成一個(gè)或多個(gè)敏感有效載荷數(shù)據(jù)元素的密文??梢允褂脮?huì)話密鑰(例如,sk1)和任何合適的加密算法(例如,aead)來(lái)加密敏感數(shù)據(jù)x1906以生成加密數(shù)據(jù)x(例如,數(shù)據(jù)a密文1908)和相關(guān)聯(lián)的消息認(rèn)證碼(例如,數(shù)據(jù)xmac1910)。類似地,可以使用會(huì)話密鑰(例如,sk2)和任何合適的加密算法(例如,aead)來(lái)加密敏感數(shù)據(jù)y1912以生成加密數(shù)據(jù)y(例如,數(shù)據(jù)y密文1914)和相關(guān)聯(lián)的消息認(rèn)證碼(例如,數(shù)據(jù)ymac1916)。在一些示例中,數(shù)據(jù)x和數(shù)據(jù)y可以對(duì)應(yīng)于圖15-圖16中討論的數(shù)據(jù)a和數(shù)據(jù)b,或?qū)?yīng)于圖17-圖18中討論的數(shù)據(jù)c和數(shù)據(jù)d。
要加密的有效載荷數(shù)據(jù)元素可以以任何合適的格式表示。在一些實(shí)施方案中,有效載荷元素可以以包括識(shí)別元素的標(biāo)簽、元素的長(zhǎng)度和元素的值的tlv數(shù)據(jù)結(jié)構(gòu)來(lái)表示。例如,數(shù)據(jù)x1906可以包括識(shí)別x的標(biāo)簽(例如,“tagx”)、數(shù)據(jù)x的大小(例如,1024字節(jié))和x的值。
在一個(gè)實(shí)施方案中,加密的數(shù)據(jù)元素及其mac可被轉(zhuǎn)換為base64編碼,從而以jwe緊湊型序列化格式被包括。序列化的加密數(shù)據(jù)元素可以包括在http消息中。此類jwe緊湊型序列化加密數(shù)據(jù)元素的示例包括在圖15中的數(shù)據(jù)ajwe序列化1530和數(shù)據(jù)bjwe序列化1532以及在圖17中的數(shù)據(jù)cjwe序列化1730和數(shù)據(jù)djwe序列化1732。
在步驟3處,生成標(biāo)頭數(shù)據(jù)1940。可以使用會(huì)話密鑰(例如,sk0)和任何合適的加密算法(例如,aead)來(lái)加密明文1936和要加密的文本1938,以生成包括明文協(xié)議數(shù)據(jù)1918、密文(例如,加密的協(xié)議數(shù)據(jù)1932)和全局mac1934的標(biāo)頭數(shù)據(jù)1940。明文1936可以包括明文協(xié)議數(shù)據(jù)1918。明文協(xié)議數(shù)據(jù)1918可以包括上文討論的密鑰協(xié)商協(xié)議數(shù)據(jù)1902,諸如公鑰信息(例如,受保護(hù)的密鑰標(biāo)識(shí)符、一次性公鑰)。在應(yīng)用加密算法之后,明文協(xié)議數(shù)據(jù)1918不被加密,而是經(jīng)由全局mac進(jìn)行完整性保護(hù)。
要加密的文本1938可以包括受保護(hù)的協(xié)議數(shù)據(jù)1920和用于每個(gè)加密的有效載荷元素的元素特定的協(xié)議數(shù)據(jù)。受保護(hù)的協(xié)議數(shù)據(jù)1920可以包括模糊化或盲化的公鑰、策略、密碼套件信息等。元素特定協(xié)議數(shù)據(jù)可以包括數(shù)據(jù)描述符(例如,數(shù)據(jù)x描述符1922或數(shù)據(jù)y描述符1926)和給定的有效載荷數(shù)據(jù)元素的mac(例如,數(shù)據(jù)xmac1924或數(shù)據(jù)y描述符1928)。例如,數(shù)據(jù)x描述符1922可以包括識(shí)別數(shù)據(jù)x的標(biāo)簽(標(biāo)簽x)、加密密鑰標(biāo)識(shí)符和數(shù)據(jù)xmac的長(zhǎng)度的組合(例如,級(jí)聯(lián))。數(shù)據(jù)y描述符1926可以包括識(shí)別數(shù)據(jù)y的標(biāo)簽(標(biāo)簽y)、加密密鑰標(biāo)識(shí)符和數(shù)據(jù)ymac的長(zhǎng)度的組合(例如,級(jí)聯(lián))。
在一個(gè)實(shí)施方案中,在步驟3中生成的標(biāo)頭數(shù)據(jù)1940可以被包括在http消息的標(biāo)頭部分中,諸如由圖15中的標(biāo)頭數(shù)據(jù)1508和圖17中的標(biāo)頭數(shù)據(jù)1708所說(shuō)明。
圖20說(shuō)明了根據(jù)一些實(shí)施方案的用于解密數(shù)據(jù)的示例性過(guò)程2000。解密過(guò)程2000可以用于解密包括在請(qǐng)求消息或響應(yīng)消息中的數(shù)據(jù)。數(shù)據(jù)可能已經(jīng)根據(jù)諸如圖19中所述的加密過(guò)程被加密。在一些實(shí)施方案中,解密過(guò)程2000可以由解密服務(wù)或模塊(諸如上文在圖16和圖18中討論的解密服務(wù)或模塊)來(lái)實(shí)施。通常,解密過(guò)程2000可以用于解密從存儲(chǔ)器檢索的、運(yùn)送中的加密數(shù)據(jù),以用于任何其他合適的目的。
在步驟1處,可以使用標(biāo)頭數(shù)據(jù)2002中的一些或全部來(lái)確定一個(gè)或多個(gè)會(huì)話密鑰2010(例如,sk0、sk1和sk2)。會(huì)話密鑰2010可以與在圖19中描述的加密過(guò)程中確定的會(huì)話密鑰相同。標(biāo)頭數(shù)據(jù)2002可以類似于圖19中討論的標(biāo)頭數(shù)據(jù)1940。例如,標(biāo)頭數(shù)據(jù)2002可以包括明文協(xié)議數(shù)據(jù)2004、加密的協(xié)議數(shù)據(jù)2006和全局mac2008。在一些實(shí)施方案中,僅使用標(biāo)頭數(shù)據(jù)2002的明文協(xié)議數(shù)據(jù)2004來(lái)導(dǎo)出會(huì)話密鑰2010。明文協(xié)議數(shù)據(jù)2004可以包括用于導(dǎo)出密鑰(諸如公鑰、策略等)的密鑰協(xié)商信息??梢允褂萌魏魏线m的密鑰協(xié)商算法(例如,ecdh、kdf)來(lái)導(dǎo)出會(huì)話密鑰。
在步驟2處,可以使用會(huì)話密鑰(例如,sk0)和合適的解密算法(例如,aead)來(lái)對(duì)標(biāo)頭數(shù)據(jù)2002中包括的協(xié)議數(shù)據(jù)進(jìn)行解密和認(rèn)證。明文協(xié)議數(shù)據(jù)2004可以使用全局mac2008進(jìn)行認(rèn)證。可以對(duì)加密的協(xié)議數(shù)據(jù)2006進(jìn)行解密以獲取受保護(hù)的協(xié)議數(shù)據(jù)2012和元素特定協(xié)議數(shù)據(jù)(例如,數(shù)據(jù)x描述符2014、數(shù)據(jù)xmac2016、數(shù)據(jù)y描述符2018和數(shù)據(jù)ymac2020)??梢则?yàn)證解密的數(shù)據(jù)(例如,使用全局mac2008)。
在步驟3處,可以對(duì)加密的有效載荷數(shù)據(jù)元素進(jìn)行解密和認(rèn)證。諸如圖15-圖18中所描述,可以從接收到的序列化對(duì)象(諸如包括在http消息中的jwe緊湊型序列化對(duì)象)獲取加密的有效載荷數(shù)據(jù)元素。例如,可以使用合適的解密密鑰(例如,sk1)來(lái)提供輸入到合適的解密算法(例如,aead)中的數(shù)據(jù)x密文2022和數(shù)據(jù)xmac2016,以獲取原始數(shù)據(jù)x2014。可以使用數(shù)據(jù)xmac2016來(lái)驗(yàn)證數(shù)據(jù)x的完整性。例如,可以使用合適的解密密鑰(例如,sk2)來(lái)提供輸入到合適的解密算法(例如,aead)中的數(shù)據(jù)y密文2026和數(shù)據(jù)ymac2020,以獲取原始數(shù)據(jù)y2028。可以使用數(shù)據(jù)ymac2020來(lái)驗(yàn)證數(shù)據(jù)y的完整性。在一些實(shí)施方案中,可以基于從步驟2獲取的協(xié)議數(shù)據(jù)(例如,密碼套件信息、元素特定協(xié)議數(shù)據(jù))來(lái)執(zhí)行對(duì)數(shù)據(jù)元素的解密。加密的數(shù)據(jù)元素可以在“按需要”的基礎(chǔ)上進(jìn)行解密和/或認(rèn)證,以降低不必要地暴露敏感信息的風(fēng)險(xiǎn)。
雖然圖19-圖20將加密過(guò)程1900和解密過(guò)程2000描述為兩個(gè)單獨(dú)的過(guò)程,但是在一些實(shí)施方案中,兩者都可以由單個(gè)模塊或計(jì)算機(jī)實(shí)施。在一些其他實(shí)施方案中,加密過(guò)程1900和解密過(guò)程2000可以由不同的模塊或計(jì)算機(jī)實(shí)施。
在一些實(shí)施方案中,加密過(guò)程1900和解密過(guò)程2000可用于加密和解密任何合適的數(shù)據(jù)類型,諸如文檔和數(shù)據(jù)對(duì)象。例如,加密過(guò)程1900可用于加密特定文檔中的敏感數(shù)據(jù)字段以生成代替敏感數(shù)據(jù)字段的加密數(shù)據(jù)字段。還可以生成描述加密的加密的協(xié)議數(shù)據(jù),并將其與文檔一起存儲(chǔ)。可以存儲(chǔ)或傳輸加密文檔。實(shí)體可以通過(guò)通信信道(例如,經(jīng)由http消息)接收加密的文檔,或者以其他方式希望從存儲(chǔ)器訪問(wèn)加密的文檔。為了訪問(wèn)文檔中的敏感數(shù)據(jù),可以使用解密過(guò)程2000來(lái)解密加密文檔并恢復(fù)一個(gè)或多個(gè)敏感數(shù)據(jù)字段。
iv.保密策略的強(qiáng)制執(zhí)行
本文描述的方法可用于實(shí)施對(duì)服務(wù)器或客戶端策略更改的保密管理。在各種情況下,此類策略更改可能是期望的或必要的。例如,策略更改可能是必需的,因?yàn)榉?wù)器或客戶端密鑰已過(guò)期或已被損害、不允許客戶端密碼套件、不允許客戶端ec曲線、協(xié)議版本或模式無(wú)效、客戶端憑證無(wú)效或不足、需要新的密碼套件、需要新的證書(shū)等。使用本文所述的方法,可以以保密和不可追溯的方式來(lái)傳輸實(shí)現(xiàn)策略更改所需的信息。例如,沒(méi)有數(shù)據(jù)或元數(shù)據(jù)可以以明文的形式傳輸??梢蕴峁?shù)據(jù)完整性檢查(例如,使用aead)。消息可以被安全地填充以保持固定的大小。
圖21示出了根據(jù)一些實(shí)施方案的用于處理請(qǐng)求消息以強(qiáng)制執(zhí)行服務(wù)器策略的決策樹(shù)2100。服務(wù)器計(jì)算機(jī)可以使用決策樹(shù)2100來(lái)處理來(lái)自客戶端計(jì)算機(jī)的請(qǐng)求消息。
如所說(shuō)明,可以針對(duì)服務(wù)器策略來(lái)檢查包括在請(qǐng)求消息中的協(xié)議數(shù)據(jù)。協(xié)議數(shù)據(jù)可以包括服務(wù)器密鑰引用(例如,密鑰標(biāo)識(shí)符)、在請(qǐng)求消息中使用的客戶端密碼套件、允許的密碼套件、客戶端支持的協(xié)議模式和版本、在請(qǐng)求中使用的客戶端協(xié)議模式等??梢允褂帽疚挠懻摰姆椒▉?lái)保護(hù)(例如,加密和/或完整性保護(hù))協(xié)議數(shù)據(jù)中的一些或全部。
基于服務(wù)器策略和請(qǐng)求消息中包括的協(xié)議數(shù)據(jù),服務(wù)器計(jì)算機(jī)可以采取不同的動(dòng)作。在某些情況下,響應(yīng)消息可以建立新的服務(wù)器策略,并且客戶端請(qǐng)求必須重新發(fā)送。此類情況可以包括:當(dāng)服務(wù)器密鑰已經(jīng)過(guò)期或被損害時(shí)、當(dāng)不允許密碼套件時(shí)、當(dāng)不允許ec曲線時(shí)、當(dāng)客戶端協(xié)議模式或版本無(wú)效時(shí)、當(dāng)客戶端憑證無(wú)效或不足時(shí)等。由響應(yīng)消息指示的新的服務(wù)器策略可以包括一個(gè)或多個(gè)新的證書(shū)或公鑰、新的曲線參數(shù)、需要的模式或版本、需要的憑證等。
在一些其他情況下,響應(yīng)消息可以建立新的服務(wù)器策略,并且不需要重新發(fā)送客戶端請(qǐng)求。此類情況可以包括:當(dāng)推薦新的密碼套件時(shí)、當(dāng)推薦新的證書(shū)或公鑰時(shí)等。
在又一些其他情況下(諸如當(dāng)不推薦更改時(shí)),響應(yīng)可以包括由請(qǐng)求消息請(qǐng)求的任何敏感數(shù)據(jù)。
v.viii.計(jì)算機(jī)設(shè)備
圖22是可以用來(lái)實(shí)施上文描述的任何實(shí)體或部件的計(jì)算機(jī)系統(tǒng)的高級(jí)框圖。圖22中所示的子系統(tǒng)經(jīng)由系統(tǒng)總線2275互連。附加的子系統(tǒng)包括打印機(jī)2203、鍵盤2206、固定盤2207和監(jiān)視器2209,所述監(jiān)視器聯(lián)接到顯示器適配器2204。聯(lián)接到i/o控制器2200的外圍設(shè)備和輸入/輸出(i/o)設(shè)備可以通過(guò)本領(lǐng)域已知的任何數(shù)量的構(gòu)件(諸如串行端口)連接到計(jì)算機(jī)系統(tǒng)。例如,串行端口2205或外部接口2208可以用來(lái)將計(jì)算機(jī)裝置連接至廣域網(wǎng)(諸如互聯(lián)網(wǎng))、鼠標(biāo)輸入設(shè)備或掃描儀。經(jīng)由系統(tǒng)總線2275的互連允許中央處理器2202與每個(gè)子系統(tǒng)進(jìn)行通信,并控制來(lái)自系統(tǒng)存儲(chǔ)器2201或固定盤2207的指令的執(zhí)行以及在子系統(tǒng)之間的信息交換。系統(tǒng)存儲(chǔ)器2201和/或固定盤可以體現(xiàn)計(jì)算機(jī)可讀介質(zhì)。
用于包含代碼或代碼部分的存儲(chǔ)介質(zhì)和計(jì)算機(jī)可讀介質(zhì)可以包括本領(lǐng)域已知或使用的任何適當(dāng)介質(zhì),其包括存儲(chǔ)介質(zhì)和通信介質(zhì),諸如但不限于在用于存儲(chǔ)和/或傳輸信息(諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù))的任何方法或技術(shù)中實(shí)施的易失性和非易失性、可移除和不可移除式介質(zhì)(包括ram、rom、eeprom、閃存或其他存儲(chǔ)器技術(shù)、cd-rom、數(shù)字通用盤(dvd)或其他光存儲(chǔ)器、磁帶盒、磁帶、磁盤存儲(chǔ)器或其他磁存儲(chǔ)設(shè)備)、數(shù)據(jù)信號(hào)、數(shù)據(jù)傳輸或可以用來(lái)存儲(chǔ)或傳輸期望信息并且可以由計(jì)算機(jī)訪問(wèn)的任何其他介質(zhì)。基于本文中提供的公開(kāi)和教導(dǎo),本領(lǐng)域技術(shù)人員會(huì)認(rèn)識(shí)到實(shí)施各實(shí)施方案的其他方式和/或方法。
以上描述是示意性的不是限制性的。本領(lǐng)域技術(shù)人員在閱讀本公開(kāi)后,會(huì)明白本發(fā)明的許多變形。因此,本發(fā)明的范圍可以不參照上文的描述確定,而是可以參照所附權(quán)利要求連同其全部范圍或等同物確定。
應(yīng)當(dāng)理解,如上文描述的本發(fā)明可以使用計(jì)算機(jī)軟件以控制邏輯的形式以模塊化或集成方式來(lái)實(shí)施?;诒疚闹刑峁┑墓_(kāi)和教導(dǎo),本領(lǐng)域的普通技術(shù)人員可以明白并認(rèn)識(shí)到使用硬件及硬件和軟件的組合實(shí)施本發(fā)明的其他方式和/或方法。
本申請(qǐng)中描述的任何軟件組件或功能可以實(shí)施為使用任何適當(dāng)計(jì)算機(jī)語(yǔ)言(比方說(shuō)例如java,c++或perl),使用例如傳統(tǒng)的或面向?qū)ο蟮募夹g(shù)由處理器執(zhí)行的軟件代碼。軟件代碼可以存儲(chǔ)作為計(jì)算機(jī)可讀介質(zhì)上的一系列指令或命令,所述計(jì)算機(jī)可讀介質(zhì)為諸如隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、磁介質(zhì)(諸如硬盤驅(qū)動(dòng)器或軟盤)或光介質(zhì)(諸如cd-rom)。任何這種計(jì)算機(jī)可讀介質(zhì)都可以駐存在單個(gè)計(jì)算裝置上或駐存在單個(gè)計(jì)算裝置內(nèi),并且可存在于在系統(tǒng)或網(wǎng)絡(luò)內(nèi)的不同計(jì)算裝置上或在系統(tǒng)或網(wǎng)絡(luò)內(nèi)的不同計(jì)算裝置上。
在不偏離本發(fā)明的范圍的情況下,任何實(shí)施方案的一個(gè)或多個(gè)特征可以與任何其他實(shí)施方案的一個(gè)或多個(gè)特征組合。
除非明確指示為相反,否則“一個(gè)/種”、“該/所述”的敘述旨在表示“一個(gè)或多個(gè)”。