本申請(qǐng)是2014年6月18日提交的美國臨時(shí)申請(qǐng)?zhí)?2/014,102(律師案號(hào):79900-911064-1012US01)和2014年6月23日提交的美國臨時(shí)申請(qǐng)?zhí)?2/016,048(律師案號(hào):79900-912144-1012US02)的正式案,并要求他們的優(yōu)先權(quán),出于所有目的他們的全部內(nèi)容通過引用被并入本文中。
背景技術(shù):
隨著諸如支持NFC的移動(dòng)電話和非接觸卡的用戶裝置的數(shù)量持續(xù)增加,維護(hù)支付交易的安全仍是關(guān)心的問題。例如,為了進(jìn)行支付交易,通常需要對(duì)用戶進(jìn)行認(rèn)證并向服務(wù)器發(fā)送信息。然而,攻擊者可能企圖竊聽交易(例如,通過進(jìn)行中間人攻擊)。因此,攻擊者可能企圖攔截諸如用戶裝置標(biāo)識(shí)符的識(shí)別數(shù)據(jù)或者諸如由用戶發(fā)送的口令的認(rèn)證數(shù)據(jù)。如果確定,這些數(shù)據(jù)可能會(huì)被用于非法目的。
而且使問題復(fù)雜化的是用戶裝置本身的安全性。在一些情況下,用戶裝置可能泄密或以別的方式不能信賴,所以在裝置上存儲(chǔ)諸如用戶私鑰的持久或靜態(tài)安全憑證是不可取的。在這些情形下進(jìn)行安全的認(rèn)證通信可能帶來挑戰(zhàn)。
另外使問題復(fù)雜化的是可能性不大的事件,即私鑰,諸如存儲(chǔ)在用戶裝置上的私鑰或存儲(chǔ)在服務(wù)器計(jì)算機(jī)上的私鑰被泄密。在這些情形下,期望安全系統(tǒng)表現(xiàn)出前向保密性:私鑰的泄密不應(yīng)當(dāng)導(dǎo)致實(shí)體之間以往的安全通信泄密。
本發(fā)明的實(shí)施例分別以及一起解決了這些和其它問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的實(shí)施例涉及用于已認(rèn)證的通信的高效方法。
在一個(gè)實(shí)施例中,第一計(jì)算裝置能夠生成包括臨時(shí)公鑰和臨時(shí)私鑰的臨時(shí)密鑰對(duì)。第一計(jì)算裝置能夠使用臨時(shí)私鑰和靜態(tài)第二裝置公鑰生成第一共享秘密。第一計(jì)算裝置能夠使用第一共享秘密加密請(qǐng)求數(shù)據(jù),以獲得已加密請(qǐng)求數(shù)據(jù)。第一計(jì)算裝置能夠向第二計(jì)算裝置發(fā)送包括已加密請(qǐng)求數(shù)據(jù)和臨時(shí)公鑰的請(qǐng)求消息。
一旦接收請(qǐng)求消息,第二計(jì)算裝置能夠使用臨時(shí)公鑰和靜態(tài)第二裝置私鑰生成第一共享秘密。第二計(jì)算裝置能夠使用第一共享秘密解密已加密請(qǐng)求數(shù)據(jù),以獲得請(qǐng)求數(shù)據(jù)。第二計(jì)算裝置然后能夠使用盲化靜態(tài)第二裝置私鑰和臨時(shí)公鑰生成第二共享秘密。第二計(jì)算裝置能夠使用第二共享秘密加密響應(yīng)數(shù)據(jù),以確定已加密響應(yīng)數(shù)據(jù)。第二計(jì)算裝置然后能夠向第一計(jì)算裝置發(fā)送包括已加密響應(yīng)數(shù)據(jù)和盲化靜態(tài)第二裝置公鑰的響應(yīng)消息。
一旦接收響應(yīng)消息,第一計(jì)算裝置能夠使用臨時(shí)私鑰和盲化靜態(tài)第二裝置公鑰確定第二共享秘密。第一計(jì)算裝置然后能夠解密來自響應(yīng)消息的已加密響應(yīng)數(shù)據(jù),以獲得響應(yīng)數(shù)據(jù)。
其它實(shí)施例涉及與本文中描述的方法關(guān)聯(lián)的系統(tǒng)、便攜式消費(fèi)者裝置和計(jì)算機(jī)可讀介質(zhì)。
參照以下詳細(xì)描述和附圖,可以獲得對(duì)本發(fā)明的實(shí)施例的本質(zhì)和優(yōu)點(diǎn)的更好理解。
附圖說明
圖1示出可以用于本發(fā)明的實(shí)施例的示例性系統(tǒng)的圖。
圖2示出根據(jù)一些實(shí)施例的計(jì)算裝置的示例。
圖3示出圖解說明根據(jù)一些實(shí)施例第一計(jì)算裝置和第二計(jì)算裝置之間的通信的流程圖。
圖4-5示出根據(jù)一些實(shí)施例安全地對(duì)第二計(jì)算裝置認(rèn)證并從第二計(jì)算裝置獲得響應(yīng)數(shù)據(jù)的方法。
圖6-7示出根據(jù)一些實(shí)施例安全地處理來自第一計(jì)算裝置的認(rèn)證請(qǐng)求消息并向第一計(jì)算裝置提供認(rèn)證響應(yīng)消息的方法。
圖8示出圖解說明根據(jù)一些實(shí)施例在生成、傳送和處理認(rèn)證請(qǐng)求消息時(shí)執(zhí)行的操作的數(shù)據(jù)流程圖。
圖9示出圖解說明根據(jù)一些實(shí)施例在生成、傳送和處理認(rèn)證響應(yīng)消息時(shí)執(zhí)行的操作的數(shù)據(jù)流程圖。
圖10-11示出根據(jù)一些實(shí)施例安全地對(duì)第二計(jì)算裝置認(rèn)證并從第二計(jì)算裝置獲得響應(yīng)數(shù)據(jù)的第二方法。
圖12-13示出根據(jù)一些實(shí)施例安全地處理來自第一計(jì)算裝置的認(rèn)證請(qǐng)求消息并向第一計(jì)算裝置提供認(rèn)證響應(yīng)消息的第二方法。
圖14示出圖解說明根據(jù)一些實(shí)施例在生成、傳送和處理認(rèn)證請(qǐng)求消息的第二方法中執(zhí)行的操作的數(shù)據(jù)流程圖。
圖15示出圖解說明根據(jù)一些實(shí)施例在生成、傳送和處理認(rèn)證響應(yīng)消息的第二方法中執(zhí)行的操作的數(shù)據(jù)流程圖。
圖16示出根據(jù)一些實(shí)施例安全地對(duì)第二計(jì)算裝置認(rèn)證并從第二計(jì)算裝置獲得響應(yīng)數(shù)據(jù)的優(yōu)化方法。
圖17示出根據(jù)一些實(shí)施例安全地處理來自第一計(jì)算裝置的認(rèn)證請(qǐng)求消息并向第一計(jì)算裝置提供認(rèn)證響應(yīng)消息的優(yōu)化方法。
圖18示出示例性計(jì)算機(jī)設(shè)備的框圖。
術(shù)語
在討論本發(fā)明的一些實(shí)施例之前,對(duì)一些術(shù)語的描述可能有助于理解實(shí)施例。
術(shù)語“服務(wù)器計(jì)算機(jī)”可以包括計(jì)算機(jī)或計(jì)算裝置的集群。例如,服務(wù)器計(jì)算機(jī)可以是大的主機(jī)、小型計(jì)算機(jī)集群或像一個(gè)單元一樣工作的一組服務(wù)器。在一個(gè)示例中,服務(wù)器計(jì)算機(jī)可以是耦連至網(wǎng)絡(luò)服務(wù)器的數(shù)據(jù)庫服務(wù)器。服務(wù)器計(jì)算機(jī)可以耦連到數(shù)據(jù)庫并且可以包括用于服務(wù)于來自一個(gè)或多個(gè)客戶端計(jì)算機(jī)的請(qǐng)求的任何硬件、軟件、其它邏輯、或前述內(nèi)容的組合。服務(wù)器計(jì)算機(jī)可以包括一個(gè)或多個(gè)計(jì)算設(shè)備并且可以使用各種計(jì)算結(jié)構(gòu)、排列、和編譯中的任何一種來服務(wù)于來自一個(gè)或多個(gè)客戶端計(jì)算機(jī)的請(qǐng)求。
術(shù)語“公/私鑰對(duì)”可以包括由實(shí)體生成的一對(duì)關(guān)聯(lián)加密密鑰。公鑰可以用于公共功能,諸如對(duì)要發(fā)送給實(shí)體的消息進(jìn)行加密,或用于對(duì)應(yīng)該由實(shí)體做出的數(shù)字簽名進(jìn)行驗(yàn)證。另一方面,私鑰可以用于私用功能,諸如對(duì)接收到的消息解密或應(yīng)用數(shù)字簽名。公鑰通常會(huì)由被稱為認(rèn)證機(jī)構(gòu)(CA)的主體進(jìn)行授權(quán),認(rèn)證機(jī)構(gòu)將公鑰存儲(chǔ)在數(shù)據(jù)庫中并將其分配給請(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è)過程證明發(fā)送者的真實(shí)性、已簽名文件的完整性和所稱的不可否認(rèn)性原則,所述原則不允許否認(rèn)已經(jīng)簽名的內(nèi)容。證書或包括簽名方的數(shù)字簽名的其它數(shù)據(jù)被稱為是由簽名方“簽名的”。
“證書”或“數(shù)字證書”可以包括使用數(shù)字簽名將公鑰與關(guān)聯(lián)身份的數(shù)據(jù)綁定的電子文件或數(shù)據(jù)文件。證書可以包括一個(gè)或多個(gè)數(shù)據(jù)字段,諸如身份的合法姓名、證書的序列號(hào)、證書的有效起止日期、證書相關(guān)的權(quán)限等。證書可以包含指示證書有效的第一天的“有效起始”日期,以及指示證書有效的最后一天的“有效截止”日期。證書還可以包含證書中包括數(shù)據(jù)字段的數(shù)據(jù)的散列。除非另外說明,每個(gè)證書都由證書機(jī)構(gòu)簽名。
“證書機(jī)構(gòu)”(CA)可以包括可操作耦連以向?qū)嶓w發(fā)行證書的一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)。CA可以使用CA證書證明其身份,CA證書包括CA的公鑰??梢杂昧硪粋€(gè)CA的私鑰或者可以用同一個(gè)CA的私鑰對(duì)CA證書簽名。后者被稱為自簽名證書。CA可以維護(hù)CA所發(fā)行的所有證書的數(shù)據(jù)庫,并且還可以維護(hù)被撤銷的證書的列表。
在一個(gè)典型過程中,證書機(jī)構(gòu)從其身份已知的實(shí)體接收未簽名的證書。未簽名的證書包括公鑰、一個(gè)或多個(gè)數(shù)據(jù)字段、以及證書中的數(shù)據(jù)的散列。CA用與CA證書上所包括的公鑰相對(duì)應(yīng)的私鑰對(duì)證書進(jìn)行簽名。CA然后可以將簽名的證書存儲(chǔ)在數(shù)據(jù)庫中,并將簽名的證書發(fā)行給實(shí)體。
“密碼隨機(jī)數(shù)”可以包括任何數(shù)字、字符串、位序列、或旨在關(guān)聯(lián)單個(gè)通信會(huì)話使用的其它數(shù)據(jù)值。在一些情況下,密碼隨機(jī)數(shù)可以是隨機(jī)或偽隨機(jī)生成的。通常,密碼隨機(jī)數(shù)具有足夠的長度以使多次獨(dú)立生成同一隨機(jī)數(shù)值的可能性不大。
“盲化密鑰(blinded key)”,諸如“盲化公鑰”可以包括通過與另一數(shù)據(jù)元素(如密碼隨機(jī)數(shù))結(jié)合而被模糊化或以其它方式修改了其原始值的密鑰。例如,在橢圓曲線密碼學(xué)中,公鑰可以乘以隨機(jī)數(shù)從而生成“盲化公鑰”。類似地,私鑰可以乘以隨機(jī)數(shù)從而生成“盲化私鑰”。
“臨時(shí)密鑰對(duì)”可以包括為單次交易或其它通信會(huì)話使用而生成的公鑰(即“臨時(shí)公鑰”)和私鑰(即“臨時(shí)私鑰”)。臨時(shí)密鑰對(duì)可以是任何適當(dāng)格式,諸如ECC或RSA。通常,一旦交易或通信會(huì)話已經(jīng)結(jié)束,就可以刪除臨時(shí)密鑰對(duì)。
“靜態(tài)密鑰對(duì)”可以包括在一段時(shí)間內(nèi)被保持的公鑰(即“靜態(tài)公鑰”)和私鑰(即“靜態(tài)私鑰”)。通常但不一定,靜態(tài)私鑰可以被安全地存儲(chǔ)在諸如硬件安全模塊(HSM)或安全元件(SE)中。通常但不一定,靜態(tài)公鑰可以通過使用數(shù)字證書綁定到身份。靜態(tài)密鑰對(duì)可以是任何適當(dāng)格式,諸如ECC或RSA。
“共享秘密”可以包括只對(duì)安全通信中的被授權(quán)方已知的任何數(shù)據(jù)值或其它信息。共享秘密可以以任何適當(dāng)方式由任何適當(dāng)數(shù)據(jù)生成。例如,可以使用基于Diffie-Hellman的算法,諸如橢圓曲線Diffie-Hellman(ECDH),以由私鑰和公鑰生成共享秘密。在一些情況下,共享秘密可以用來生成會(huì)話密鑰。
術(shù)語“識(shí)別數(shù)據(jù)”可以包括與用戶或裝置關(guān)聯(lián)的任何數(shù)據(jù)或信息。識(shí)別數(shù)據(jù)的示例可以包括與裝置關(guān)聯(lián)的用戶的姓名,與裝置關(guān)聯(lián)的組織,與裝置關(guān)聯(lián)的支付信息,諸如主賬號(hào)(PAN),裝置的到期日期,與裝置關(guān)聯(lián)的證書,裝置的IMEI或序列號(hào),等等。
術(shù)語“認(rèn)證數(shù)據(jù)”可以包括適于認(rèn)證用戶或裝置的任何數(shù)據(jù)或信息。認(rèn)證數(shù)據(jù)的示例可以包括口令或口令短語,秘密密鑰(例如,私鑰)等。
“識(shí)別因子”可以包括從識(shí)別數(shù)據(jù)和/或認(rèn)證數(shù)據(jù)確定的任何數(shù)據(jù)或信息。通常但不一定,識(shí)別因子可以通過對(duì)識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)的組合求散列來生成。
“加密密鑰”可以包括適用于用密碼加密數(shù)據(jù)的任何數(shù)據(jù)值或其它信息?!敖饷苊荑€”可以包括適用于對(duì)已加密的數(shù)據(jù)進(jìn)行解密的任何數(shù)據(jù)值或其它信息。在一些情況下,用于加密數(shù)據(jù)的同一密鑰可以可操作以解密數(shù)據(jù)。這種密鑰可以被稱作對(duì)稱加密密鑰。
術(shù)語“會(huì)話密鑰”可以包括用來加密或解密待被安全傳送的數(shù)據(jù)的任何密鑰。在一些情況下,會(huì)話密鑰可以從發(fā)送方和接收方都知道的共享秘密生成。例如,會(huì)話密鑰可以使用密鑰導(dǎo)出函數(shù)和共享秘密被導(dǎo)出。
具體實(shí)施方式
本發(fā)明的實(shí)施例涉及用于已認(rèn)證的通信的高效方法。例如,第一計(jì)算裝置和第二計(jì)算裝置能夠相互認(rèn)證并交換消息,而不會(huì)以明文形式暴露任何敏感信息。
在一個(gè)實(shí)施例中,第一計(jì)算裝置能夠生成包括臨時(shí)公鑰和臨時(shí)私鑰的臨時(shí)密鑰對(duì)。第一計(jì)算裝置能夠使用臨時(shí)私鑰和第二計(jì)算裝置的靜態(tài)第二裝置公鑰生成第一共享秘密。第一計(jì)算裝置能夠使用第一共享秘密加密請(qǐng)求數(shù)據(jù)以獲得已加密請(qǐng)求數(shù)據(jù)。第一計(jì)算裝置能夠向第二計(jì)算裝置發(fā)送包括已加密請(qǐng)求數(shù)據(jù)和臨時(shí)公鑰的請(qǐng)求消息。
一旦接收請(qǐng)求消息,第二計(jì)算裝置能夠使用臨時(shí)公鑰和靜態(tài)第二裝置私鑰生成第一共享秘密。第二計(jì)算裝置能夠使用第一共享秘密解密請(qǐng)求消息中的已加密請(qǐng)求數(shù)據(jù),以獲得請(qǐng)求數(shù)據(jù)。第二計(jì)算裝置然后能夠使用盲化靜態(tài)第二裝置私鑰和臨時(shí)公鑰生成第二共享秘密。第二計(jì)算裝置能夠使用第二共享秘密加密響應(yīng)數(shù)據(jù),以確定已加密響應(yīng)數(shù)據(jù)。第二計(jì)算裝置然后能夠向第一計(jì)算裝置發(fā)送包括已加密響應(yīng)數(shù)據(jù)和盲化靜態(tài)第二裝置公鑰的響應(yīng)消息。
一旦接收響應(yīng)消息,第一計(jì)算裝置能夠使用臨時(shí)私鑰和盲化靜態(tài)第二裝置公鑰確定第二共享秘密。第一計(jì)算裝置然后能夠解密來自響應(yīng)消息的已加密響應(yīng)數(shù)據(jù),以獲得響應(yīng)數(shù)據(jù)。
在一些實(shí)施例中,第一計(jì)算裝置能夠保存靜態(tài)第一裝置私鑰和靜態(tài)第一裝置公鑰,臨時(shí)密鑰對(duì)可以是包括臨時(shí)第一裝置公鑰和臨時(shí)第一裝置私鑰的臨時(shí)第一裝置密鑰對(duì)。在這樣的一些實(shí)施例中,由第一裝置發(fā)送的請(qǐng)求數(shù)據(jù)可以包括第一裝置證書,第一裝置證書包括靜態(tài)第一裝置公鑰,從第二計(jì)算裝置接收的響應(yīng)消息可以包括臨時(shí)第二裝置公鑰。相應(yīng)地,第一計(jì)算裝置能夠使用臨時(shí)第二裝置公鑰和靜態(tài)第一裝置私鑰生成輔助共享秘密,并使用輔助共享秘密解密已加密響應(yīng)數(shù)據(jù)。
本發(fā)明的實(shí)施例能夠保護(hù)參與到通信中的計(jì)算裝置的身份。例如,攻擊者可能企圖監(jiān)聽或以其它方式監(jiān)視在第一計(jì)算裝置(例如,移動(dòng)裝置)和第二計(jì)算裝置(例如,服務(wù)器計(jì)算機(jī))之間傳送的數(shù)據(jù)。由于本發(fā)明的實(shí)施例能夠避免以明文發(fā)送任何可識(shí)別信息(諸如靜態(tài)第一裝置公鑰或靜態(tài)第二裝置公鑰),所以保護(hù)計(jì)算裝置的身份不受未授權(quán)實(shí)體的攻擊。
實(shí)施例還能夠只使用單個(gè)請(qǐng)求消息和單個(gè)響應(yīng)消息實(shí)現(xiàn)雙向認(rèn)證的安全通信。這允許實(shí)現(xiàn)減少的延遲的快速認(rèn)證,并且允許將實(shí)施例的安全性質(zhì)集成到其它現(xiàn)有的請(qǐng)求/響應(yīng)流中,而不需要發(fā)送附加消息。例如,在一些實(shí)施例中,請(qǐng)求消息的內(nèi)容能夠被附加到可以為不同目的而發(fā)送的請(qǐng)求消息(對(duì)于響應(yīng)消息進(jìn)行必要改動(dòng))。
一些實(shí)施例還能夠提供前向保密的性質(zhì):即便靜態(tài)第一裝置私鑰或靜態(tài)第二裝置私鑰泄密,用來加密請(qǐng)求數(shù)據(jù)和響應(yīng)數(shù)據(jù)的共享秘密在通信會(huì)話結(jié)束之后不能被重新生成。例如,在一些實(shí)施例中,第一計(jì)算裝置能夠使用臨時(shí)第一裝置私鑰、盲化靜態(tài)第二裝置公鑰、靜態(tài)第一裝置私鑰和臨時(shí)第二裝置公鑰生成第二會(huì)話密鑰。在這些實(shí)施例中,即便盲化靜態(tài)第二裝置公鑰和臨時(shí)第二裝置公鑰在傳送中被偷聽者覺察到,靜態(tài)第一裝置私鑰稍后被泄密,第二會(huì)話密鑰也不能被攻擊者重新生成,原因是臨時(shí)第一裝置私鑰已經(jīng)從第一計(jì)算裝置刪除。沒有第二會(huì)話密鑰,使用第二會(huì)話密鑰加密的數(shù)據(jù)不能被解密。因此,即便在稍后第一計(jì)算裝置泄密的可能性不大的情況下,這些實(shí)施例也允許通信保持安全。
在另一示例中,第二計(jì)算裝置能夠使用臨時(shí)第一裝置公鑰、盲化靜態(tài)第二裝置私鑰、靜態(tài)第一裝置公鑰和臨時(shí)第二裝置私鑰生成第二會(huì)話密鑰。在這些實(shí)施例中,即便靜態(tài)第一裝置公鑰和臨時(shí)第一裝置公鑰在傳送中被偷聽者覺察到,并且靜態(tài)第二裝置私鑰稍后被泄密,第二會(huì)話密鑰也不能被攻擊者重新生成,原因是臨時(shí)第二裝置私鑰已經(jīng)從第二計(jì)算裝置上刪除。沒有第二會(huì)話密鑰,使用第二會(huì)話密鑰加密的數(shù)據(jù)不能被解密。因此,即便在稍后第二計(jì)算裝置泄密的可能性不大的情況下,這些實(shí)施例允許通信保持安全。
因此,即便通信的任何終點(diǎn)被泄密,實(shí)施例也能夠允許安全通信。
而且,實(shí)施例能夠在計(jì)算裝置以前進(jìn)行過通信的情況下提供更快速和更高效的通信。在一些實(shí)施例中,在第一計(jì)算裝置處的注冊(cè)可以用來存儲(chǔ)針對(duì)一個(gè)或多個(gè)第二計(jì)算裝置的未來共享秘密和未來第二裝置會(huì)話標(biāo)識(shí)符。在第二計(jì)算裝置處的類似注冊(cè)可以用來存儲(chǔ)針對(duì)一個(gè)或多個(gè)第一裝置的未來共享秘密和未來盲化靜態(tài)第二裝置公鑰值。因此,如果第一裝置和第二裝置通信多次,則可以使用存儲(chǔ)的數(shù)據(jù)。這能夠避免可能相對(duì)耗時(shí)和計(jì)算量大的某些操作,諸如橢圓曲線Diffie-Hellman(ECDH)算法。這還能夠給計(jì)算裝置的用戶提供改進(jìn)的體驗(yàn),原因是實(shí)施例允許處理減少,這能夠提高電池壽命,減少通信時(shí)間。例如,根據(jù)一些實(shí)施例,兩個(gè)裝置之間的安全和私密通信能夠在少于50毫秒內(nèi)進(jìn)行。
實(shí)施例還能夠看上去與對(duì)偷聽者不使用盲化密鑰的系統(tǒng)相同,原因是偷聽者不會(huì)知道從第一計(jì)算裝置傳送到第二計(jì)算裝置或從第二計(jì)算裝置傳送到第一計(jì)算裝置的公鑰是盲化公鑰還是非盲化公鑰。因此,實(shí)施例能夠提供針對(duì)協(xié)議的反向工程的保護(hù)。
I.系統(tǒng)
A.支付系統(tǒng)
圖1示出根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)。所述系統(tǒng)包括用戶(未示出),用戶可以操作用戶裝置101。用戶可以使用用戶裝置101與訪問裝置102通信來進(jìn)行支付交易。如本文中使用的“用戶裝置”可以包括桌面計(jì)算機(jī)、膝上型計(jì)算機(jī)、移動(dòng)電話、平板電腦、信用卡、借記卡或任何適當(dāng)計(jì)算裝置。如本文中使用的“訪問裝置”可以包括適于與用戶裝置通信的任何計(jì)算裝置,諸如銷售點(diǎn)(POS)終端或網(wǎng)絡(luò)服務(wù)器。在一些實(shí)施例中,訪問裝置102可以與用戶裝置101直接通信。在其它實(shí)施例中,訪問裝置102可以經(jīng)由接口裝置,諸如智能手表、智能眼鏡或任何其它適當(dāng)裝置與用戶裝置101通信。訪問裝置102可以連接到商家計(jì)算機(jī)103,商家計(jì)算機(jī)103可以連接到收單方計(jì)算機(jī)104。收單方計(jì)算機(jī)104可以經(jīng)由支付處理網(wǎng)絡(luò)105連接到發(fā)行方計(jì)算機(jī)106。任何一個(gè)或所有裝置101-106可以使用諸如服務(wù)器計(jì)算機(jī)的一個(gè)或多個(gè)計(jì)算裝置實(shí)現(xiàn)。
如本文中使用的“發(fā)行方(issuer)”通??梢灾妇S護(hù)用戶的金融賬戶并且常常向用戶發(fā)行或提供諸如信用或借記卡或移動(dòng)裝置的用戶裝置101的商業(yè)實(shí)體(例如銀行)?!吧碳摇蓖ǔJ菂⑴c交易并且能夠出售商品或服務(wù)的實(shí)體?!笆諉畏?acquirer)”通常是與特定商家或其它實(shí)體有商業(yè)關(guān)系的商業(yè)實(shí)體(例如商業(yè)銀行)。一些實(shí)體能夠既執(zhí)行發(fā)行方功能也執(zhí)行收單方功能。一些實(shí)施例可以包括這種單實(shí)體的發(fā)行方-收單方。每個(gè)實(shí)體可以包括一個(gè)或多個(gè)計(jì)算機(jī)設(shè)備(例如,訪問裝置102、商家計(jì)算機(jī)103、收單方計(jì)算機(jī)104、支付處理網(wǎng)絡(luò)105和發(fā)行方計(jì)算機(jī)106)以實(shí)現(xiàn)通信,或者執(zhí)行本文中描述的一個(gè)或多個(gè)功能。
支付處理網(wǎng)絡(luò)105可以包括數(shù)據(jù)處理子系統(tǒng)、網(wǎng)絡(luò)和用來支持和傳送證書機(jī)構(gòu)服務(wù)、授權(quán)服務(wù)、異常文件服務(wù)、交易評(píng)分服務(wù)和清算和結(jié)算服務(wù)的操作。示例性支付處理網(wǎng)絡(luò)可以包括VisaNetTM。諸如VisaNetTM之類的支付處理網(wǎng)絡(luò)能夠處理信用卡交易、借記卡交易和其它類型的商業(yè)交易。VisaNetTM具體包括處理授權(quán)請(qǐng)求的VIP系統(tǒng)(Visa集成支付系統(tǒng))和執(zhí)行清算和結(jié)算服務(wù)的Base II系統(tǒng)。
支付處理網(wǎng)絡(luò)105可以包括一個(gè)或多個(gè)服務(wù)器計(jì)算機(jī)。服務(wù)器計(jì)算機(jī)通常是一個(gè)功能強(qiáng)大的計(jì)算機(jī)或計(jì)算機(jī)集群。例如,服務(wù)器計(jì)算機(jī)可以是大的主機(jī)、小型計(jì)算機(jī)集群或像一個(gè)單元一樣工作的一組服務(wù)器。在一個(gè)示例中,服務(wù)器計(jì)算機(jī)可以是耦連到網(wǎng)絡(luò)服務(wù)器的數(shù)據(jù)庫服務(wù)器。支付處理網(wǎng)絡(luò)105可以使用任何適當(dāng)?shù)挠芯€或無線網(wǎng)絡(luò),包括互聯(lián)網(wǎng)。
在一些支付交易中,用戶在商家處使用用戶裝置101購買商品或服務(wù)。用戶裝置101能夠在與商家計(jì)算機(jī)103關(guān)聯(lián)的商家處與訪問裝置102交互。例如,用戶可以對(duì)著訪問裝置102中的NFC閱讀器敲擊用戶裝置101。替代性地,諸如在離線或電子商務(wù)交易中,用戶可以通過計(jì)算機(jī)網(wǎng)絡(luò)給商家指示支付細(xì)節(jié)。
用于交易的授權(quán)請(qǐng)求消息可以由訪問裝置102或商家計(jì)算機(jī)103生成,然后轉(zhuǎn)發(fā)到收單方計(jì)算機(jī)104。在接收授權(quán)請(qǐng)求消息后,收單方計(jì)算機(jī)104將授權(quán)請(qǐng)求消息發(fā)送到支付處理網(wǎng)絡(luò)105。支付處理網(wǎng)絡(luò)105然后將授權(quán)請(qǐng)求消息轉(zhuǎn)發(fā)到與發(fā)行方關(guān)聯(lián)的相應(yīng)發(fā)行方計(jì)算機(jī)106,用戶或用戶裝置101與發(fā)行方關(guān)聯(lián)。
“授權(quán)請(qǐng)求消息”可以是電子消息,其被發(fā)送到交易處理網(wǎng)絡(luò)和/或發(fā)行方以請(qǐng)求交易的授權(quán)。根據(jù)一些實(shí)施例的授權(quán)請(qǐng)求消息可以遵守ISO 8583,ISO 8583是交換與用戶使用支付裝置或支付賬戶進(jìn)行的支付關(guān)聯(lián)的電子交易信息的系統(tǒng)的標(biāo)準(zhǔn)。授權(quán)請(qǐng)求消息可以包括發(fā)行方賬戶標(biāo)識(shí)符,其可以與支付裝置或支付賬戶關(guān)聯(lián)。授權(quán)請(qǐng)求消息還可以包括與“識(shí)別信息”對(duì)應(yīng)的附加數(shù)據(jù)元素,包括但只作為示例:服務(wù)代碼、CVV(卡驗(yàn)證值)、dCVV(動(dòng)態(tài)卡驗(yàn)證值)、到期日期等。授權(quán)請(qǐng)求消息還可以包括“交易信息”,諸如與當(dāng)前交易關(guān)聯(lián)的任何信息,諸如交易金額、商家標(biāo)識(shí)符、商家位置等以及可以用來確定是否識(shí)別和/或授權(quán)交易的任何其它信息。授權(quán)請(qǐng)求消息還可以包括其它信息,諸如識(shí)別生成授權(quán)請(qǐng)求消息的訪問裝置的信息,關(guān)于訪問裝置的位置的信息等。
在發(fā)行方計(jì)算機(jī)106接收授權(quán)請(qǐng)求消息之后,發(fā)行方計(jì)算機(jī)106將授權(quán)響應(yīng)消息發(fā)送回支付處理網(wǎng)絡(luò)105,以指示當(dāng)前交易是被授權(quán)(或不被授權(quán))。支付處理網(wǎng)絡(luò)105然后將授權(quán)響應(yīng)消息轉(zhuǎn)發(fā)回收單方計(jì)算機(jī)104。在一些實(shí)施例中,例如根據(jù)欺詐風(fēng)險(xiǎn)評(píng)分的值,即便發(fā)行方計(jì)算機(jī)106已經(jīng)授權(quán)交易,支付處理網(wǎng)絡(luò)105也可以拒絕交易。收單方計(jì)算機(jī)104然后將響應(yīng)消息發(fā)送回商家計(jì)算機(jī)103。
“授權(quán)響應(yīng)消息”可以是由發(fā)行方計(jì)算機(jī)106和/或支付處理網(wǎng)絡(luò)105生成的對(duì)授權(quán)請(qǐng)求消息的電子消息應(yīng)答。授權(quán)響應(yīng)消息可以包括(只作為示例)以下狀態(tài)指示符中的一個(gè)或多個(gè):批準(zhǔn)-交易被批準(zhǔn);拒絕-交易不被批準(zhǔn);或呼叫中心-響應(yīng)未決的更多信息,商家必須呼叫免費(fèi)授權(quán)電話號(hào)碼。授權(quán)響應(yīng)消息還可以包括授權(quán)代碼,其可以是發(fā)行方響應(yīng)于電子消息中的授權(quán)請(qǐng)求消息(直接地或者通過支付處理網(wǎng)絡(luò)105)返回商家計(jì)算機(jī)103的指示交易被批準(zhǔn)的代碼。此代碼可以用作授權(quán)的證據(jù)。如上文指出的,在一些實(shí)施例中,支付處理網(wǎng)絡(luò)105可以生成或一般通過收單方計(jì)算機(jī)104將授權(quán)響應(yīng)消息轉(zhuǎn)發(fā)到商家。
在商家計(jì)算機(jī)103接收授權(quán)響應(yīng)消息之后,商家計(jì)算機(jī)103然后可以為用戶提供授權(quán)響應(yīng)消息。響應(yīng)消息可以由訪問裝置102顯示,或者可以打印在物理收條上。替代性地,如果交易是在線交易,則商家可以以虛擬收條提供授權(quán)響應(yīng)消息的網(wǎng)頁或其它指示。收條可以包括交易的交易數(shù)據(jù)。
在一天結(jié)束時(shí),常規(guī)的清算和結(jié)算處理可以由支付處理網(wǎng)絡(luò)105進(jìn)行。清算處理是在收單方和發(fā)行方之間交換財(cái)務(wù)細(xì)節(jié)以促進(jìn)發(fā)布到客戶的支付賬戶并對(duì)賬用戶的結(jié)算位置的過程。
B.計(jì)算裝置
圖2示出根據(jù)一些實(shí)施例的計(jì)算裝置200的示例。計(jì)算裝置200的示例可以包括移動(dòng)電話、平板電腦、桌面和膝上型計(jì)算機(jī)、可穿戴裝置(例如,智能手表、健身手環(huán)、腳鏈、戒指、耳環(huán)等)、服務(wù)器計(jì)算機(jī)或適于接收、存儲(chǔ)和傳送數(shù)據(jù)的任何其它計(jì)算裝置。計(jì)算裝置200可以包括通信耦連到網(wǎng)絡(luò)接口202的處理器201、存儲(chǔ)器203和計(jì)算機(jī)可讀介質(zhì)210。
處理器201可以包括一個(gè)或多個(gè)CPU,每個(gè)CPU可以包括至少一個(gè)處理器內(nèi)核,其可操作以執(zhí)行用于執(zhí)行用戶和/或系統(tǒng)生成的請(qǐng)求的程序組件。CPU可以是微處理器,諸如AMD的速龍、毒龍和/或皓龍;IBM和/或摩托羅拉的PowerPC;IBM和索尼的Cell處理器;因特爾的賽揚(yáng)、安騰、奔騰、Xeon和/或XScale;和/或類似的處理器。CPU通過通過導(dǎo)管的信號(hào)與存儲(chǔ)器交互,以根據(jù)傳統(tǒng)的數(shù)據(jù)處理技術(shù)執(zhí)行存儲(chǔ)的信號(hào)程序代碼。在一些情況下,處理器201可以包括通過網(wǎng)絡(luò)耦連的多個(gè)CPU,諸如在分布式或集群式計(jì)算系統(tǒng)中。
網(wǎng)絡(luò)接口202可以被配置成允許計(jì)算裝置200使用一個(gè)或多個(gè)通信網(wǎng)絡(luò)與諸如裝置101-106的其它實(shí)體、其它計(jì)算裝置等通信。網(wǎng)絡(luò)接口可以接受、通信和/或連接到通信網(wǎng)絡(luò)。網(wǎng)絡(luò)接口可以使用以下的連接協(xié)議,這些協(xié)議諸如但不限于:直連、以太網(wǎng)(粗的,細(xì)的,雙絞線10/100/1000Base T等等)、令牌環(huán)網(wǎng)、諸如IEEE 802.11a-x的無線連接,等等。通信網(wǎng)絡(luò)可以是以下的任何一個(gè)和/或組合:直接互連;互聯(lián)網(wǎng);局域網(wǎng)(LAN);城域網(wǎng)(MAN);安全定制連接;廣域網(wǎng)(WAN);無線網(wǎng)絡(luò)(例如,使用諸如但不限于無線應(yīng)用協(xié)議(WAP)、I-模式等等的協(xié)議);等等。
存儲(chǔ)器203可以用來存儲(chǔ)數(shù)據(jù)和代碼。存儲(chǔ)器203可以在內(nèi)部或外部(例如基于云的數(shù)據(jù)存儲(chǔ))耦連到處理器201,并且可以包括易失性和/或非易失性存儲(chǔ)器的任何組合,諸如RAM、DRAM、ROM、閃存或任何其它適當(dāng)?shù)拇鎯?chǔ)器裝置。
計(jì)算機(jī)可讀介質(zhì)210可以是存儲(chǔ)器的形式(例如,閃存,ROM等),并且可以包括由處理器201執(zhí)行的用于實(shí)現(xiàn)本文中描述的方法的代碼。計(jì)算機(jī)可讀介質(zhì)210可以包括認(rèn)證模塊211、加密模塊212和應(yīng)用模塊213。
認(rèn)證模塊211可以包括適于對(duì)另一計(jì)算裝置認(rèn)證計(jì)算裝置200或在計(jì)算裝置200處認(rèn)證另一計(jì)算裝置的任何程序、軟件或其它代碼。例如,認(rèn)證模塊211可以被配置成生成并將認(rèn)證請(qǐng)求消息發(fā)送到另一計(jì)算裝置,接收并處理來自其它計(jì)算裝置的認(rèn)證響應(yīng)消息。類似地,認(rèn)證模塊211可以被配置成從另一計(jì)算裝置接收并處理認(rèn)證請(qǐng)求消息,生成并將認(rèn)證響應(yīng)消息發(fā)送到其它計(jì)算裝置。在各個(gè)實(shí)施例中,認(rèn)證模塊211可以被配置成執(zhí)行圖4、6、10、12、16和17的方法400、600、1000、1200、1600或1700的一些或全部。
加密模塊212可以包括適于執(zhí)行與加密相關(guān)的操作的任何程序、軟件或其它代碼。例如,加密模塊可以被配置成諸如使用密鑰協(xié)商協(xié)議(諸如Diffie-Hellman)生成共享秘密。加密模塊212還可以被配置成諸如使用密鑰導(dǎo)出函數(shù)(KDF)從共享秘密導(dǎo)出會(huì)話密鑰。在一些實(shí)施例中,加密模塊212可以被配置成存儲(chǔ)一個(gè)或多個(gè)靜態(tài)密鑰,諸如靜態(tài)第一裝置私鑰或靜態(tài)第二裝置私鑰。在一些實(shí)施例中,加密模塊212可以使用軟件(諸如主機(jī)卡模擬或HCE)和硬件(諸如硬件安全模塊或HSM)的任意組合實(shí)現(xiàn)。
應(yīng)用模塊213可以包括適于運(yùn)行一個(gè)或多個(gè)應(yīng)用的任何程序、軟件或其它代碼。例如,應(yīng)用模塊213可以包括可操作以執(zhí)行支付交易的支付應(yīng)用。在一些實(shí)施例中,支付應(yīng)用可以被配置成允許用戶選擇要購買的商品和服務(wù),從支付賬戶的發(fā)行方獲得安全憑證(例如密碼密鑰),和/或發(fā)起或執(zhí)行支付交易(例如使用安全憑證)。應(yīng)用模塊313可以包括可操作以服務(wù)于一個(gè)或多個(gè)計(jì)算裝置處的支付應(yīng)用的支付應(yīng)用服務(wù)。在一些實(shí)施例中,支付應(yīng)用服務(wù)可以被配置成允許用戶選擇要購買的商品和服務(wù),向計(jì)算裝置提供安全憑證(例如密碼密鑰),和/或發(fā)起或執(zhí)行支付交易。
II.認(rèn)證的通信方法
實(shí)施例可以使用上文描述的系統(tǒng)和設(shè)備執(zhí)行用于已認(rèn)證的通信的方法。圖3-7描述了這樣一些方法。
圖3示出圖解說明根據(jù)一些實(shí)施例第一計(jì)算裝置301和第二計(jì)算裝置302之間的通信的簡化流程圖。計(jì)算裝置301和302在一些實(shí)施例中可以根據(jù)圖2的計(jì)算裝置200實(shí)現(xiàn)。如圖3所示,第一計(jì)算裝置301可以向第二計(jì)算裝置302發(fā)送使用識(shí)別數(shù)據(jù)生成的請(qǐng)求消息。通常,識(shí)別數(shù)據(jù)是加密的或另外受保護(hù)的。在一些實(shí)施例中,請(qǐng)求消息可能經(jīng)過不可信網(wǎng)絡(luò)303。第二計(jì)算裝置302能夠處理請(qǐng)求消息,以獲得并驗(yàn)證識(shí)別數(shù)據(jù)。第二計(jì)算裝置302然后能夠加密有效載荷數(shù)據(jù),并將已加密有效載荷數(shù)據(jù)在響應(yīng)消息中傳送到第一計(jì)算裝置301。第一計(jì)算裝置301然后能夠處理響應(yīng)消息,以獲得有效載荷數(shù)據(jù)。
第二計(jì)算裝置302能夠保存包括靜態(tài)第二裝置公鑰和靜態(tài)第二裝置私鑰的靜態(tài)第二裝置密鑰對(duì)。類似地,第一計(jì)算裝置301能夠保存包括靜態(tài)第一裝置公鑰和靜態(tài)第一裝置私鑰的靜態(tài)第一裝置密鑰對(duì)。此外,第一計(jì)算裝置301和/或第二計(jì)算裝置302能夠生成臨時(shí)密鑰對(duì)(即,分別是臨時(shí)第一裝置密鑰對(duì)或臨時(shí)第二裝置密鑰對(duì))。一個(gè)或多個(gè)這些密鑰能夠用來加密或解密請(qǐng)求消息和/或響應(yīng)消息。
在各個(gè)實(shí)施例中,計(jì)算裝置301和302中的一個(gè)可以是裝置、網(wǎng)絡(luò)或計(jì)算機(jī)101-105中任何一個(gè)的一部分。例如,在一些實(shí)施例中,第一計(jì)算裝置301可以是用戶裝置101,第二計(jì)算裝置302可以是訪問裝置102或服務(wù)器計(jì)算機(jī)。在這些實(shí)施例中,當(dāng)用戶進(jìn)行交易時(shí),第一計(jì)算裝置301與第二計(jì)算裝置302通信。在各個(gè)實(shí)施例中,通信可以根據(jù)圖4、6、10、12、16和17的方法400、600、1000、1200、1600或1700進(jìn)行。
A.第一計(jì)算裝置
圖4-5示出根據(jù)一些實(shí)施例安全地對(duì)第二計(jì)算裝置302認(rèn)證并從第二計(jì)算裝置302獲得響應(yīng)數(shù)據(jù)的方法400。在一些實(shí)施例中,方法400可以由第一計(jì)算裝置301執(zhí)行。不過,在其它實(shí)施例中,方法400的一些或所有步驟可以由其它實(shí)體執(zhí)行。
在步驟401,生成臨時(shí)密鑰對(duì)。“臨時(shí)密鑰對(duì)”可以包括供單次交易或其它通信會(huì)話使用而生成的公鑰(即“臨時(shí)公鑰”)和私鑰(即“臨時(shí)私鑰”)。臨時(shí)密鑰對(duì)可以是任何適當(dāng)形式,諸如ECC或RSA。通常,一旦使用臨時(shí)密鑰的通信會(huì)話結(jié)束,或者一旦使用臨時(shí)密鑰對(duì)生成了一個(gè)或多個(gè)共享秘密,臨時(shí)密鑰對(duì)可以被刪除。
在步驟402,使用識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)計(jì)算識(shí)別因子。識(shí)別數(shù)據(jù)可以包括與用戶或第一計(jì)算裝置301關(guān)聯(lián)的任何數(shù)據(jù)或信息。識(shí)別數(shù)據(jù)的示例可以包括與第一計(jì)算裝置301關(guān)聯(lián)的用戶的姓名,與第一計(jì)算裝置301關(guān)聯(lián)的組織,與第一計(jì)算裝置301關(guān)聯(lián)的支付信息,諸如主賬號(hào)(PAN),與第一計(jì)算裝置301關(guān)聯(lián)的到期日期,與第一計(jì)算裝置301關(guān)聯(lián)的證書,第一計(jì)算裝置301的IMEI或序列號(hào),等等。認(rèn)證數(shù)據(jù)可以包括適于認(rèn)證用戶或第一計(jì)算裝置301的任何數(shù)據(jù)或信息。認(rèn)證數(shù)據(jù)的示例可以包括口令或口令短語,秘密密鑰(例如私鑰)等。認(rèn)證因子可以包括從識(shí)別數(shù)據(jù)和/或認(rèn)證數(shù)據(jù)確定的任何數(shù)據(jù)或信息。例如,在一些實(shí)施例中,識(shí)別因子可以通過對(duì)識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)的組合求散列來生成。
在步驟403,將識(shí)別因子與臨時(shí)公鑰和臨時(shí)私鑰組合。結(jié)果,可以確定組合臨時(shí)公鑰和組合臨時(shí)私鑰。組合密鑰可以包括通過與另一數(shù)據(jù)元素或值結(jié)合已經(jīng)被模糊化或以其它方式修改其原始值的密鑰。例如,組合臨時(shí)公鑰可以是臨時(shí)公鑰和識(shí)別因子的組合。類似地,組合臨時(shí)私鑰可以是臨時(shí)私鑰和識(shí)別因子的組合。在一些實(shí)施例中,將密鑰與數(shù)據(jù)元素組合可以包括執(zhí)行密鑰和數(shù)據(jù)元素的點(diǎn)乘。
在步驟404,使用組合臨時(shí)私鑰和靜態(tài)第二裝置公鑰生成第一共享秘密。靜態(tài)第二裝置公鑰可以包括由第二計(jì)算裝置302保存在諸如安全元件中的靜態(tài)公鑰。在一些實(shí)施例中,靜態(tài)第二裝置公鑰可以從第二計(jì)算裝置302的數(shù)字證書確定,該數(shù)字證書之前可能已經(jīng)由第一計(jì)算裝置301獲得,并且由可信證書機(jī)構(gòu)簽名。
共享秘密可以使用任何適當(dāng)方法由組合臨時(shí)私鑰和靜態(tài)第二裝置公鑰生成。例如,在使用橢圓曲線密碼學(xué)的實(shí)施例中,共享秘密可以使用橢圓曲線Diffie-Hellman協(xié)議(ECDH)確定。
在步驟405,使用第一共享秘密和第一補(bǔ)充數(shù)據(jù)生成第一會(huì)話密鑰。第一補(bǔ)充數(shù)據(jù)可以包括用來生成第一會(huì)話密鑰的任何其它數(shù)據(jù)。第一補(bǔ)充數(shù)據(jù)的示例可以包括第二裝置標(biāo)識(shí)符和/或被截?cái)嗟呐R時(shí)公鑰。
會(huì)話密鑰可以是任何適當(dāng)格式(例如,AES,DES,Blowfish等),任何適當(dāng)長度,使用任何適當(dāng)密鑰導(dǎo)出函數(shù)(KDF)生成。例如,在一個(gè)實(shí)施例中,會(huì)話密鑰可以使用基于口令的密鑰導(dǎo)出函數(shù)2(Password-Based Key Derivation Function 2,PBKDF2)算法生成。在一些實(shí)施例中,其它數(shù)據(jù),諸如第一裝置標(biāo)識(shí)符可以用作密鑰導(dǎo)出函數(shù)的附加輸入。
在步驟406,使用第一會(huì)話密鑰加密臨時(shí)公鑰、識(shí)別數(shù)據(jù)和第一裝置標(biāo)識(shí)符,以生成已加密請(qǐng)求數(shù)據(jù)。“第一裝置標(biāo)識(shí)符”可以包括適于識(shí)別第一計(jì)算裝置的任何標(biāo)識(shí)符。
在步驟407,向第二計(jì)算裝置302發(fā)送包括組合臨時(shí)公鑰和已加密請(qǐng)求數(shù)據(jù)的認(rèn)證請(qǐng)求消息。在一些實(shí)施例中,認(rèn)證請(qǐng)求消息在達(dá)到第二計(jì)算裝置302之前可以經(jīng)過一個(gè)或多個(gè)媒介(例如,不可信網(wǎng)絡(luò)303)。
在步驟408,從第二計(jì)算裝置302接收包括盲化靜態(tài)第二裝置公鑰和已加密響應(yīng)數(shù)據(jù)的認(rèn)證響應(yīng)消息。通常,盲化靜態(tài)第二裝置公鑰可以是步驟404生成第一共享秘密使用的靜態(tài)第二裝置公鑰的盲化形式。
在步驟409,使用臨時(shí)私鑰和在步驟408中從第二計(jì)算裝置302接收的盲化靜態(tài)第二裝置公鑰生成第二共享秘密。第二共享秘密可以使用任何適當(dāng)方法,諸如ECDH由臨時(shí)私鑰和盲化靜態(tài)第二裝置公鑰生成。
在步驟410,使用第二共享秘密和第二補(bǔ)充數(shù)據(jù)生成第二會(huì)話密鑰。第二補(bǔ)充數(shù)據(jù)可以包括用來生成第二會(huì)話密鑰的任何其它數(shù)據(jù)。第二補(bǔ)充數(shù)據(jù)的示例可以包括第二裝置標(biāo)識(shí)符,第一裝置標(biāo)識(shí)符和/或被截?cái)嗟呐R時(shí)公鑰。第二會(huì)話密鑰可以使用任何適當(dāng)KDF生成。
在步驟411,使用第二會(huì)話密鑰解密已加密響應(yīng)數(shù)據(jù),以獲得密碼隨機(jī)數(shù)、第二裝置證書鏈和有效載荷數(shù)據(jù)。第二裝置證書鏈可以包括從根CA證書到第二裝置證書的一個(gè)或多個(gè)簽名證書鏈,由此,該證書鏈確立第二裝置證書的真實(shí)性。有效載荷數(shù)據(jù)可以包括任何適當(dāng)數(shù)據(jù)。例如,有效載荷數(shù)據(jù)可以包括交易的確認(rèn),用戶的賬戶余額,能夠用來執(zhí)行未來交易的密碼密鑰,諸如限制使用密鑰(LUK)。
在步驟412,驗(yàn)證第二裝置證書鏈。第二裝置證書鏈可以使用任何適當(dāng)在線或離線方法來驗(yàn)證。例如,對(duì)于鏈中的一個(gè)或多個(gè)證書中的每一個(gè),證書的數(shù)字簽名可以使用已知的可信公鑰(例如,證書機(jī)構(gòu)的公鑰或由CA適當(dāng)授權(quán)的實(shí)體的公鑰)來驗(yàn)證。例如,在一些實(shí)施例中,數(shù)字簽名算法,諸如橢圓曲線數(shù)字簽名算法(ECDSA)可以用來驗(yàn)證證書。
在步驟413,使用第二裝置證書和密碼隨機(jī)數(shù)驗(yàn)證盲化靜態(tài)第二裝置公鑰。驗(yàn)證盲化靜態(tài)第二裝置公鑰可以包括確保盲化靜態(tài)第二裝置公鑰與預(yù)期值匹配。例如,在一些情況下,第二盲化靜態(tài)第二裝置公鑰可以使用第二裝置證書上包括的靜態(tài)第二裝置公鑰和步驟411解密的密碼隨機(jī)數(shù)生成。然后,第二盲化靜態(tài)第二裝置公鑰可以與步驟408接收的盲化靜態(tài)第二裝置公鑰比較,以確保這兩個(gè)密鑰匹配。替代性地,在一些情況下,可以通過將步驟408接收的盲化靜態(tài)第二裝置公鑰與存儲(chǔ)的盲化靜態(tài)第二裝置公鑰比較,來驗(yàn)證盲化靜態(tài)第二裝置公鑰。如果密鑰匹配,則第二計(jì)算裝置302可以被認(rèn)證。否則,認(rèn)證可能失敗。
應(yīng)當(dāng)注意,此認(rèn)證方法(即驗(yàn)證盲化靜態(tài)公鑰)能夠提供這樣的優(yōu)點(diǎn),即可能被認(rèn)為是敏感的(因?yàn)樗赡芙沂镜诙?jì)算裝置302的身份)靜態(tài)第二裝置公鑰不需要以明文發(fā)送。因此,能夠在完成第二計(jì)算裝置302的認(rèn)證的同時(shí),保護(hù)第二計(jì)算裝置302的身份不被捕獲認(rèn)證請(qǐng)求消息的偷聽者攻擊。
在步驟414,使用有效載荷數(shù)據(jù)執(zhí)行交易。在一些實(shí)施例中,有效載荷數(shù)據(jù)可以包括支付憑證(例如,PAN或密碼密鑰)。在這些實(shí)施例中,交易可以使用支付憑證執(zhí)行。例如,如果有效載荷數(shù)據(jù)包括密碼密鑰,則用于交易的密碼可以使用密碼密鑰生成。該密碼在進(jìn)行交易時(shí)則能夠使用。
B.第二計(jì)算裝置
圖6-7示出根據(jù)一些實(shí)施例安全地處理來自第一計(jì)算裝置301的認(rèn)證請(qǐng)求消息并向第一計(jì)算裝置301提供認(rèn)證響應(yīng)消息的方法600。在一些實(shí)施例中,方法600可以由第二計(jì)算裝置302執(zhí)行。不過,在其它實(shí)施例中,方法600的一些或所有步驟可以由其它實(shí)體執(zhí)行。
通常,在方法600之前,第二計(jì)算裝置302保存靜態(tài)第二裝置密鑰對(duì)。靜態(tài)第二裝置密鑰對(duì)可以包括公鑰(即“靜態(tài)第二裝置公鑰”)和私鑰(即“靜態(tài)第二裝置私鑰”)。第二計(jì)算裝置302還可以包括“第二裝置證書”,其包括靜態(tài)第二裝置公鑰。第二裝置證書可以由證書機(jī)構(gòu)簽名,證書機(jī)構(gòu)諸如支付處理網(wǎng)絡(luò)105或發(fā)行方計(jì)算機(jī)106。
在步驟601,從第一計(jì)算裝置301接收包括組合臨時(shí)公鑰和已加密請(qǐng)求數(shù)據(jù)的認(rèn)證請(qǐng)求消息。通常,組合臨時(shí)公鑰可以由第一計(jì)算裝置301使用臨時(shí)公鑰和識(shí)別因子(例如,根據(jù)方法400的步驟403)生成。
在步驟602,使用在步驟601接收的組合臨時(shí)公鑰和靜態(tài)第二裝置私鑰生成第一共享秘密。共享秘密可以使用任何適當(dāng)方法,諸如ECDH從組合臨時(shí)公鑰和靜態(tài)第二裝置私鑰生成。
在步驟603,使用第一共享秘密和第一補(bǔ)充數(shù)據(jù)生成第一會(huì)話密鑰。第一補(bǔ)充數(shù)據(jù)可以包括用來生成第一會(huì)話密鑰的任何其它數(shù)據(jù)。通常,在步驟603可以使用與在第一計(jì)算裝置處(例如,根據(jù)方法400的步驟405)生成第一會(huì)話密鑰使用的相同的數(shù)據(jù)。
在步驟604,使用第一會(huì)話密鑰解密已加密請(qǐng)求數(shù)據(jù),以獲得包括臨時(shí)公鑰、第一裝置標(biāo)識(shí)符和識(shí)別數(shù)據(jù)的請(qǐng)求數(shù)據(jù)。臨時(shí)公鑰可以對(duì)應(yīng)于在步驟601接收的組合臨時(shí)公鑰。第一裝置標(biāo)識(shí)符可以包括適于識(shí)別第一計(jì)算裝置301的任何數(shù)據(jù)。識(shí)別數(shù)據(jù)可以包括與用戶或第一計(jì)算裝置301關(guān)聯(lián)的任何數(shù)據(jù)或信息。識(shí)別數(shù)據(jù)的示例可以包括與第一計(jì)算裝置301關(guān)聯(lián)的用戶的姓名,與第一計(jì)算裝置301關(guān)聯(lián)的組織,與第一計(jì)算裝置301關(guān)聯(lián)的支付信息,諸如主賬號(hào)(PAN),與第一計(jì)算裝置301關(guān)聯(lián)的到期日期,與第一計(jì)算裝置301關(guān)聯(lián)的證書,第一計(jì)算裝置301的IMEI或序列號(hào),等等。
在步驟605,使用第一裝置標(biāo)識(shí)符驗(yàn)證識(shí)別數(shù)據(jù)。例如,在一些實(shí)施例中,可以使用第一裝置標(biāo)識(shí)符從裝置數(shù)據(jù)庫檢索對(duì)應(yīng)的識(shí)別數(shù)據(jù)。然后,通過與接收的識(shí)別數(shù)據(jù)比較,能夠驗(yàn)證已解密識(shí)別數(shù)據(jù)。
在步驟606,檢索與第一裝置標(biāo)識(shí)符關(guān)聯(lián)的認(rèn)證數(shù)據(jù)和/或識(shí)別數(shù)據(jù)。認(rèn)證數(shù)據(jù)可以包括適于認(rèn)證用戶或第一計(jì)算裝置301的任何數(shù)據(jù)或信息。認(rèn)證數(shù)據(jù)的示例可以包括口令或口令短語,秘密密鑰(例如,私鑰)等。在一些實(shí)施例中,可以從裝置數(shù)據(jù)庫檢索認(rèn)證數(shù)據(jù)。
在步驟607,使用檢索到的認(rèn)證數(shù)據(jù)和識(shí)別數(shù)據(jù)生成識(shí)別因子。識(shí)別因子可以包括從識(shí)別數(shù)據(jù)和/或認(rèn)證數(shù)據(jù)確定的任何數(shù)據(jù)或信息。例如,在一些實(shí)施例中,識(shí)別因子可以通過對(duì)識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)的組合求散列來生成。通常,以與在第一計(jì)算裝置301處(例如,根據(jù)步驟402)相同的方式在步驟607執(zhí)行識(shí)別因子的生成。
在步驟608,使用臨時(shí)公鑰和識(shí)別因子驗(yàn)證組合臨時(shí)公鑰。驗(yàn)證組合臨時(shí)公鑰可以包括確保組合臨時(shí)公鑰與預(yù)期值匹配。例如,在一些情況下,可以使用在步驟604獲得的臨時(shí)公鑰和在步驟607確定的識(shí)別因子,生成第二組合臨時(shí)公鑰。然后,可以將第二組合臨時(shí)公鑰與在步驟601接收的組合臨時(shí)公鑰比較,以確保密鑰匹配。如果密鑰匹配,第一計(jì)算裝置301可以被認(rèn)證。否則,認(rèn)證可能失敗。
應(yīng)當(dāng)注意,此認(rèn)證方法(即,驗(yàn)證組合臨時(shí)密鑰)提供這樣的優(yōu)點(diǎn),即可能是敏感的認(rèn)證數(shù)據(jù)不需要以明文甚至不需要以加密形式傳送。因此,即便靜態(tài)第二裝置私鑰稍后被泄密(不過不太可能),明文認(rèn)證數(shù)據(jù)也不會(huì)被暴露。而且,由于密鑰的盲化(blinding)通常是不可逆的,所以攻擊者即使知道組合臨時(shí)公鑰和臨時(shí)公鑰,也不能導(dǎo)出識(shí)別因子,更不用說用來生成識(shí)別因子的認(rèn)證數(shù)據(jù)。
在步驟609,生成密碼隨機(jī)數(shù)。密碼隨機(jī)數(shù)可以是使用任何適當(dāng)方法生成的隨機(jī)或偽隨機(jī)數(shù)據(jù)值。
在步驟610,使用密碼隨機(jī)數(shù)和識(shí)別因子對(duì)靜態(tài)第二裝置公鑰和靜態(tài)第二裝置私鑰進(jìn)行盲化。結(jié)果,可以確定盲化靜態(tài)第二裝置公鑰和盲化靜態(tài)第二裝置私鑰。盲化密鑰可以包括通過與一個(gè)或多個(gè)其它數(shù)據(jù)元素組合已經(jīng)被模糊化或以其它方式修改其原始值的密鑰。例如,組合臨時(shí)公鑰可以是臨時(shí)公鑰、密碼隨機(jī)數(shù)和識(shí)別因子的組合(例如點(diǎn)乘)。類似地,組合臨時(shí)私鑰可以是臨時(shí)私鑰、密碼隨機(jī)數(shù)和識(shí)別因子的組合。
在步驟611,使用盲化靜態(tài)第二裝置私鑰和臨時(shí)公鑰生成第二共享秘密。共享秘密可以使用任何適當(dāng)方法,諸如ECDH由組合臨時(shí)公鑰和靜態(tài)第二裝置私鑰生成。
在步驟612,使用第二共享秘密和第二補(bǔ)充數(shù)據(jù)生成第二會(huì)話密鑰。第二補(bǔ)充數(shù)據(jù)可以包括用來生成第二會(huì)話密鑰的任何其它數(shù)據(jù)。通常,在步驟612,可以使用與在第一計(jì)算裝置處(例如,根據(jù)方法400的步驟410)生成第二會(huì)話密鑰使用的相同的數(shù)據(jù)。
在步驟613,使用第二會(huì)話密鑰加密密碼隨機(jī)數(shù)、第二裝置證書鏈和有效載荷數(shù)據(jù),以生成已加密響應(yīng)數(shù)據(jù)。第二裝置證書鏈可以包括從根CA證書到第二裝置證書的一個(gè)或多個(gè)簽名證書鏈,由此,該證書鏈確立第二裝置證書的真實(shí)性。有效載荷數(shù)據(jù)可以包括任何適當(dāng)數(shù)據(jù)。例如,有效載荷數(shù)據(jù)可以包括交易的確認(rèn),用戶的賬戶余額,能夠用來執(zhí)行未來交易的密碼密鑰,諸如限制使用密鑰(LUK),等等。
在步驟614,向第一計(jì)算裝置301發(fā)送包括盲化靜態(tài)第二裝置公鑰和已加密響應(yīng)數(shù)據(jù)的認(rèn)證響應(yīng)消息。在一些實(shí)施例中,在到達(dá)第一計(jì)算裝置301之前,認(rèn)證響應(yīng)消息可以經(jīng)過一個(gè)或多個(gè)媒介(例如,不可信網(wǎng)絡(luò)303)。
III.認(rèn)證的通信流
圖8和圖9是圖解說明根據(jù)本發(fā)明的一些實(shí)施例各個(gè)數(shù)據(jù)元素的計(jì)算和傳輸?shù)臄?shù)據(jù)流程圖。如圖8和圖9所示,矩形框指示數(shù)據(jù)元素(例如,識(shí)別因子),圓指示要執(zhí)行的操作(例如,密鑰生成)。指向圓的每個(gè)箭頭指示用于相應(yīng)操作符的操作數(shù),離開圓的每個(gè)箭頭指示相應(yīng)操作符的結(jié)果。不過,應(yīng)當(dāng)注意,一些實(shí)施例可以不使用某操作的所有示出的操作數(shù),一些實(shí)施例可以使用示出的操作的額外操作數(shù)。此外,實(shí)施例不一定執(zhí)行所有示出的操作,和/或可以執(zhí)行圖8和圖9中沒有示出的額外的操作。
A.認(rèn)證請(qǐng)求消息
圖8示出圖解說明根據(jù)一些實(shí)施例在生成、傳送和處理認(rèn)證請(qǐng)求消息時(shí)執(zhí)行的操作的數(shù)據(jù)流程圖。
如圖8中所示,第一計(jì)算裝置301使用公/私鑰對(duì)生成器(KeyGen)來生成臨時(shí)公鑰(ePubF)和臨時(shí)私鑰(ePrivF)。臨時(shí)公鑰(ePubF)與識(shí)別因子(IdFactor)組合,以生成組合臨時(shí)公鑰(ePubF)。類似地,臨時(shí)私鑰(ePrivF)與識(shí)別因子(IdFactor)組合,以生成組合臨時(shí)私鑰(ePrivF*)。第一計(jì)算裝置301使用組合臨時(shí)私鑰(ePrivF*)和靜態(tài)第二裝置公鑰(PubS)作為橢圓曲線Diffie-Hellman(ECDH)運(yùn)算的輸入,以生成第一共享秘密(Z1)。第一共享秘密用作密鑰導(dǎo)出函數(shù)(KDF)的輸入,以導(dǎo)出第一會(huì)話密鑰(SK1)。第一計(jì)算裝置301使用第一會(huì)話密鑰(SK1)借助認(rèn)證加密(AE)算法加密第一裝置標(biāo)識(shí)符(IdF)和識(shí)別數(shù)據(jù)(IdData),產(chǎn)生已加密請(qǐng)求數(shù)據(jù)。已加密請(qǐng)求數(shù)據(jù)和組合臨時(shí)公鑰(ePubF*)在請(qǐng)求消息中被發(fā)送到第二計(jì)算裝置302。
一旦第二計(jì)算裝置302接收請(qǐng)求消息,第二計(jì)算裝置302使用接收的組合臨時(shí)公鑰(ePubF*)和靜態(tài)第二裝置私鑰(PrivS)生成第一共享秘密(Z1)。密鑰導(dǎo)出函數(shù)(KDF)使用第一共享秘密用來導(dǎo)出第一會(huì)話密鑰(SK1)。第二計(jì)算裝置302然后使用第一會(huì)話密鑰(SK1)解密已加密請(qǐng)求數(shù)據(jù),以確定識(shí)別數(shù)據(jù)(IdData)和第一裝置標(biāo)識(shí)符(IdF)。第一裝置標(biāo)識(shí)符(IdF)可以用來檢索(查詢)之前存儲(chǔ)的針對(duì)第一計(jì)算裝置301的識(shí)別數(shù)據(jù)(IdData2)。如果檢索的識(shí)別數(shù)據(jù)(IdData2)和解密的識(shí)別數(shù)據(jù)(IdData)匹配,則第一計(jì)算裝置301的認(rèn)證成功。否則,認(rèn)證失敗。
B.認(rèn)證響應(yīng)消息
圖9示出圖解說明根據(jù)一些實(shí)施例在生成、傳送和處理認(rèn)證響應(yīng)消息中執(zhí)行的操作的數(shù)據(jù)流程圖。
如圖9中所示,第二計(jì)算裝置302將靜態(tài)第二裝置私鑰(PrivS)與密碼隨機(jī)數(shù)(NonceS)組合(MUL),以生成盲化靜態(tài)第二裝置私鑰(PrivS*)。類似地,靜態(tài)第二裝置公鑰(PubS)與密碼隨機(jī)數(shù)(NonceS)和識(shí)別因子(IdFactor)組合(MUL),以生成盲化靜態(tài)第二裝置公鑰(PubS*)。
盲化靜態(tài)第二裝置私鑰(ePrivS*)和組合臨時(shí)第一裝置公鑰(ePubF*)已經(jīng)根據(jù)圖8在請(qǐng)求消息中接收,他們使用橢圓曲線Diffie-Hellman(ECDH)運(yùn)算組合,以確定第二共享秘密(Z2)。第二共享秘密(Z2)用于密鑰導(dǎo)出函數(shù)(KDF),以確定第二會(huì)話密鑰(SK2)。第二計(jì)算裝置302加密密碼隨機(jī)數(shù)(NonceS)和第二裝置證書(CertS),以確定已加密響應(yīng)數(shù)據(jù)。第二計(jì)算裝置302然后向第一計(jì)算裝置301發(fā)送包括已加密響應(yīng)數(shù)據(jù)和盲化靜態(tài)第二裝置公鑰(PubS*)的響應(yīng)消息。
一旦第一計(jì)算裝置301接收響應(yīng)消息,第一計(jì)算裝置301使用接收的已經(jīng)根據(jù)圖8生成的盲化靜態(tài)第二裝置公鑰(PubS*)和臨時(shí)私鑰(ePrivF),以使用橢圓曲線Diffie-Hellman(ECDH)算法生成第二共享秘密(Z2)。密鑰導(dǎo)出函數(shù)(KDF)可以用來使用第二共享秘密(Z2)生成第二會(huì)話密鑰(SK2)。第二計(jì)算裝置302然后使用第二會(huì)話密鑰(SK2)解密已加密響應(yīng)數(shù)據(jù),以確定第二裝置證書(CertS)、密碼隨機(jī)數(shù)(NonceS)和靜態(tài)第二裝置公鑰(PubS),他們可以從第二裝置證書(CertS)提取。
第二計(jì)算裝置302可以組合(MUL)密碼隨機(jī)數(shù)(NonceS)和靜態(tài)第二裝置公鑰(PubS),以生成第二裝置會(huì)話標(biāo)識(shí)符(PubS*2)。第二裝置會(huì)話標(biāo)識(shí)符(PubS*2)然后與從第二計(jì)算裝置302接收的盲化靜態(tài)第二裝置公鑰(PubS*)比較。認(rèn)證可以要求第二裝置會(huì)話標(biāo)識(shí)符(PubS*2)和盲化靜態(tài)第二裝置公鑰(PubS*)匹配。
此外,第二計(jì)算裝置302使用橢圓曲線數(shù)字簽名算法(ECDSA)和可信證書機(jī)構(gòu)的公鑰(PubCA)驗(yàn)證第二裝置證書(CertS)。在一些實(shí)施例中,認(rèn)證可以要求驗(yàn)證盲化靜態(tài)第二裝置公鑰(PubS*)和第二裝置證書(CertS)兩者。
IV.前向保密認(rèn)證的通信方法
在本發(fā)明的一些實(shí)施例中,第一計(jì)算裝置301可以保存包括公鑰(即“靜態(tài)第一裝置公鑰”)和私鑰(即“靜態(tài)第一裝置私鑰”)的靜態(tài)第一裝置密鑰對(duì)。實(shí)施例可以使用靜態(tài)第一裝置密鑰對(duì)來生成用來加密并解密響應(yīng)消息中的響應(yīng)數(shù)據(jù)的第二會(huì)話密鑰。這可以允許實(shí)施例提供響應(yīng)消息的前向保密性質(zhì)—后面裝置301或裝置302的泄密不會(huì)暴露已加密響應(yīng)數(shù)據(jù)。因此,下面描述的實(shí)施例可以提供附加的數(shù)據(jù)傳輸安全性。
A.第一計(jì)算裝置
圖10-11示出根據(jù)一些實(shí)施例安全地對(duì)第二計(jì)算裝置302認(rèn)證并從第二計(jì)算裝置302獲得響應(yīng)數(shù)據(jù)的第二方法1000。在一些實(shí)施例中,方法1000可以由第一計(jì)算裝置301執(zhí)行。不過,在其它實(shí)施例中,方法1000的一些或所有步驟可以由其它實(shí)體執(zhí)行。
通常,在方法1000之前,第一計(jì)算裝置301可以保存包括“靜態(tài)第一裝置私鑰(其可以存儲(chǔ)在安全元件中)和“靜態(tài)第一裝置公鑰”的“靜態(tài)第一裝置密鑰對(duì)”。靜態(tài)第一裝置公鑰可以包括于由第二計(jì)算裝置302認(rèn)可的證書機(jī)構(gòu)簽名的第一裝置證書中。
類似地,第二計(jì)算裝置302可以保存包括“靜態(tài)第二裝置私鑰(其可以存儲(chǔ)在硬件安全模塊中)和“靜態(tài)第二裝置公鑰”的“靜態(tài)第二裝置密鑰對(duì)”。靜態(tài)第二裝置公鑰可以包括于由第一計(jì)算裝置301認(rèn)可的證書機(jī)構(gòu)簽名的第二裝置證書中。
在步驟1001,生成臨時(shí)第一裝置密鑰對(duì)?!芭R時(shí)第一裝置公鑰對(duì)”可以包括供單次交易或其它通信會(huì)話使用而生成的公鑰(即“臨時(shí)第一裝置公鑰”)和私鑰(即“臨時(shí)第一裝置私鑰”)。臨時(shí)第一裝置密鑰對(duì)可以是任何適當(dāng)格式。通常,一旦使用臨時(shí)第一裝置密鑰對(duì)的通信會(huì)話結(jié)束,或一旦已經(jīng)使用臨時(shí)第一裝置密鑰對(duì)生成一個(gè)或多個(gè)共享秘密,臨時(shí)第一裝置密鑰對(duì)可以被刪除。
在步驟1002,使用識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)計(jì)算識(shí)別因子。在一些實(shí)施例中,識(shí)別因子可以以與方法400的步驟402描述的相似方式計(jì)算。
在步驟1003,使用識(shí)別因子對(duì)臨時(shí)第一裝置公鑰和臨時(shí)第一裝置私鑰進(jìn)行盲化。結(jié)果,可以確定組合臨時(shí)第一裝置公鑰和組合臨時(shí)第一裝置私鑰。在一些實(shí)施例中,密鑰可以以與方法400的步驟403描述的相似方式被盲化。
在步驟1004,使用組合臨時(shí)第一裝置私鑰和靜態(tài)第二裝置公鑰生成第一共享秘密。靜態(tài)第二裝置公鑰可以包括由第二計(jì)算裝置302保存在諸如安全元件中的靜態(tài)公鑰。在一些實(shí)施例中,第一共享秘密可以以與方法400的步驟404描述的相似方式生成。
在步驟1005,使用第一共享秘密和第一補(bǔ)充數(shù)據(jù)生成第一會(huì)話密鑰。在一些實(shí)施例中,第一會(huì)話密鑰可以以與方法400的步驟405描述的相似方式生成。
在步驟1006,使用第一會(huì)話密鑰加密臨時(shí)第一裝置公鑰、識(shí)別數(shù)據(jù)、第一裝置標(biāo)識(shí)符和第一裝置證書,以生成已加密請(qǐng)求數(shù)據(jù)?!暗谝谎b置標(biāo)識(shí)符”可以包括適于識(shí)別第一計(jì)算裝置的任何標(biāo)識(shí)符。“第一裝置證書”可以包括任何數(shù)字證書,其包括靜態(tài)第一裝置公鑰并由第二計(jì)算裝置302認(rèn)可的證書機(jī)構(gòu)簽名。
在步驟1007,向第二計(jì)算裝置302發(fā)送包括組合臨時(shí)第一裝置公鑰和已加密請(qǐng)求數(shù)據(jù)的認(rèn)證請(qǐng)求消息。在一些實(shí)施例中,在到達(dá)第二計(jì)算裝置302之前,認(rèn)證請(qǐng)求消息可能通過一個(gè)或多個(gè)媒介(例如,不可信網(wǎng)絡(luò)303)。
在步驟1008,從第二計(jì)算裝置302接收認(rèn)證響應(yīng)消息。認(rèn)證響應(yīng)消息包括盲化靜態(tài)第二裝置公鑰、臨時(shí)第二裝置公鑰和已加密響應(yīng)數(shù)據(jù)。通常,盲化靜態(tài)第二裝置公鑰可以是步驟1004生成第一共享秘密使用的靜態(tài)第二裝置公鑰的盲化形式。臨時(shí)第二裝置公鑰可以是由第二計(jì)算裝置302響應(yīng)于接收認(rèn)證請(qǐng)求消息生成的臨時(shí)密鑰對(duì)的公鑰。例如,在一些實(shí)施例中,臨時(shí)第二裝置公鑰可以根據(jù)方法1200的步驟1213生成。
在步驟1009,使用臨時(shí)第一裝置私鑰和盲化靜態(tài)第二裝置公鑰生成第二共享秘密。在一些實(shí)施例中,第二共享秘密可以以與方法400的步驟409描述的相似方式生成。
在步驟1010,使用在步驟1108接收的臨時(shí)第二裝置公鑰和靜態(tài)第一裝置私鑰生成輔助共享秘密。輔助共享秘密可以使用任何適當(dāng)方法,諸如ECDH從臨時(shí)第二裝置公鑰和盲化靜態(tài)第一裝置私鑰生成。
在步驟1011,使用輔助共享秘密和輔助補(bǔ)充數(shù)據(jù)生成輔助會(huì)話密鑰。輔助補(bǔ)充數(shù)據(jù)可以包括用來生成輔助會(huì)話密鑰的任何其它數(shù)據(jù)。輔助補(bǔ)充數(shù)據(jù)的示例可以包括第一裝置標(biāo)識(shí)符和/或被截?cái)嗟呐R時(shí)第二裝置公鑰。
在步驟1012,使用第二共享秘密、第二補(bǔ)充數(shù)據(jù)和輔助會(huì)話密鑰生成第二會(huì)話密鑰。第二補(bǔ)充數(shù)據(jù)可以包括用來生成第二會(huì)話密鑰的任何其它數(shù)據(jù)。第二補(bǔ)充數(shù)據(jù)的示例可以包括第二裝置標(biāo)識(shí)符、第一裝置標(biāo)識(shí)符和/或被截?cái)嗟呐R時(shí)公鑰。第二會(huì)話密鑰可以使用任何適當(dāng)KDF生成。
在步驟1013,使用第二會(huì)話密鑰解密已加密響應(yīng)數(shù)據(jù),以獲得密碼隨機(jī)數(shù)、第二裝置證書鏈和有效載荷數(shù)據(jù)。第二裝置證書鏈可以包括從根CA證書到第二裝置證書的一個(gè)或多個(gè)簽名證書鏈,由此,該證書鏈確立第二裝置證書的真實(shí)性。有效載荷數(shù)據(jù)可以包括任何適當(dāng)數(shù)據(jù)。例如,有效載荷數(shù)據(jù)可以包括交易的確認(rèn),用戶的賬戶余額,能夠用來執(zhí)行未來交易的密碼密鑰,諸如限制使用密鑰(LUK),等等。
在步驟1014,驗(yàn)證第二裝置證書鏈。第二裝置證書鏈可以使用任何適當(dāng)?shù)脑诰€或離線方法驗(yàn)證。在一些實(shí)施例中,第二裝置證書鏈可以以與方法400的步驟412描述的相似方式驗(yàn)證。
在步驟1015,使用第二裝置證書和密碼隨機(jī)數(shù)驗(yàn)證盲化靜態(tài)第二裝置公鑰。驗(yàn)證盲化第二裝置公鑰可以包括確保盲化第二裝置公鑰與預(yù)期值匹配。在一些實(shí)施例中,盲化靜態(tài)第二裝置公鑰可以以與方法400的步驟413描述的相似方式驗(yàn)證。
在步驟1116,使用有效載荷數(shù)據(jù)執(zhí)行交易。在一些實(shí)施例中,有效載荷數(shù)據(jù)可以包括支付憑證(例如,PAN或密碼密鑰)。在這些實(shí)施例中,交易可以使用支付憑證執(zhí)行。例如,如果有效載荷數(shù)據(jù)包括密碼密鑰,則能夠使用密碼密鑰生成交易的密碼。該密碼然后能夠在執(zhí)行交易時(shí)使用。
應(yīng)當(dāng)注意,如上文描述的使用輔助會(huì)話密鑰生成第二會(huì)話密鑰能夠提供針對(duì)認(rèn)證響應(yīng)消息的前向保密的優(yōu)點(diǎn)。例如,即使盲化靜態(tài)第二裝置公鑰和臨時(shí)第二裝置公鑰在傳送中被偷聽者覺察到,且靜態(tài)第一裝置私鑰稍后被泄密,第二會(huì)話密鑰也不能被攻擊者重新生成,原因是臨時(shí)第一裝置私鑰(生成第二會(huì)話密鑰必須的)已經(jīng)刪除。沒有第二會(huì)話密鑰,已加密響應(yīng)數(shù)據(jù)不能被解密。因此,即使在以后第一計(jì)算裝置301泄密的不太可能的情況下,這些實(shí)施例允許通信保持安全。
B.第二計(jì)算裝置
圖12-13示出根據(jù)一些實(shí)施例安全地處理來自第一計(jì)算裝置301的認(rèn)證請(qǐng)求消息并向第一計(jì)算裝置301提供認(rèn)證響應(yīng)消息的第二方法1200。在一些實(shí)施例中,方法1200可以由第二計(jì)算裝置302執(zhí)行。不過,在其它實(shí)施例中,方法1200的一些或所有步驟可以由其它實(shí)體執(zhí)行。
通常,在方法1200之前,第一計(jì)算裝置301可以保存包括“靜態(tài)第一裝置私鑰”(其可以存儲(chǔ)在安全元件中)和“靜態(tài)第一裝置公鑰”的“靜態(tài)第一裝置密鑰對(duì)”。靜態(tài)第一裝置公鑰可以包括于由第二計(jì)算裝置302認(rèn)可的證書機(jī)構(gòu)簽名的第一裝置證書中。
類似地,第二計(jì)算裝置302可以保存包括“靜態(tài)第二裝置私鑰”(其可以存儲(chǔ)在硬件安全模塊中)和“靜態(tài)第二裝置公鑰”的“靜態(tài)第二裝置密鑰對(duì)”。靜態(tài)第二裝置公鑰可以包括于由第一計(jì)算裝置301認(rèn)可的證書機(jī)構(gòu)簽名的第二裝置證書中。
在步驟1201,從第一計(jì)算裝置301接收包括組合臨時(shí)第一裝置公鑰和已加密請(qǐng)求數(shù)據(jù)的認(rèn)證請(qǐng)求消息。通常,組合臨時(shí)第一裝置公鑰可以由第一計(jì)算裝置301使用臨時(shí)第一裝置公鑰和識(shí)別因子(例如,根據(jù)方法1000的步驟1103)生成。
在步驟1202,使用在步驟1201接收的組合臨時(shí)第一裝置公鑰和靜態(tài)第二裝置公鑰生成第一共享秘密。在一些實(shí)施例中,第一共享秘密可以以與方法600的步驟602描述的相似方式生成。
在步驟1203,使用第一共享秘密和第一補(bǔ)充數(shù)據(jù)生成第一會(huì)話密鑰。第一補(bǔ)充數(shù)據(jù)可以包括用來生成第一會(huì)話密鑰的任何其它數(shù)據(jù)。通常,在步驟1203,可以使用與在第一計(jì)算裝置處生成第一會(huì)話密鑰(例如,根據(jù)方法1000的步驟1005)使用的相同補(bǔ)充數(shù)據(jù)。
在步驟1204,使用第一會(huì)話密鑰解密已加密請(qǐng)求數(shù)據(jù),以獲得包括臨時(shí)第一裝置公鑰、第一裝置標(biāo)識(shí)符、識(shí)別數(shù)據(jù)和第一裝置證書的請(qǐng)求數(shù)據(jù)。臨時(shí)第一裝置公鑰可以對(duì)應(yīng)于在步驟1201接收的組合臨時(shí)公鑰。第一裝置標(biāo)識(shí)符可以包括適于識(shí)別第一計(jì)算裝置301的任何數(shù)據(jù)。識(shí)別數(shù)據(jù)可以包括與用戶或第一計(jì)算裝置301關(guān)聯(lián)的任何數(shù)據(jù)或信息。第一裝置證書可以包括包含靜態(tài)第一裝置公鑰的任何數(shù)字證書。
在步驟1205,使用第一裝置標(biāo)識(shí)符驗(yàn)證識(shí)別數(shù)據(jù)。在一些實(shí)施例中,識(shí)別數(shù)據(jù)可以以與方法600的步驟605描述的相似方式驗(yàn)證。
在步驟1206,檢索與第一裝置標(biāo)識(shí)符關(guān)聯(lián)的認(rèn)證數(shù)據(jù)和/或識(shí)別數(shù)據(jù)。在一些實(shí)施例中,認(rèn)證數(shù)據(jù)可以以與方法600的步驟606描述的相似方式檢索。
在步驟1207,使用檢索到的認(rèn)證數(shù)據(jù)和識(shí)別數(shù)據(jù)生成識(shí)別因子。在一些實(shí)施例中,識(shí)別因子可以以與方法600的步驟607描述的相似方式生成。
在步驟1208,使用臨時(shí)第一裝置公鑰和識(shí)別因子驗(yàn)證組合臨時(shí)第一裝置公鑰。在一些實(shí)施例中,組合臨時(shí)第一裝置公鑰可以以與方法600的步驟608描述的相似方式驗(yàn)證。
在步驟1209,驗(yàn)證第一裝置證書。例如,在一些實(shí)施例中,可以使用數(shù)字簽名算法,諸如橢圓曲線數(shù)字簽名算法(ECDSA)來驗(yàn)證裝置證書。如果組合臨時(shí)第一裝置公鑰和裝置證書分別被驗(yàn)證并確認(rèn)有效,則第一計(jì)算裝置301被認(rèn)證。否則,第一計(jì)算裝置301的認(rèn)證可能失敗。
在步驟1210,生成密碼隨機(jī)數(shù)。密碼隨機(jī)數(shù)可以是使用任何適當(dāng)方法生成的隨機(jī)或偽隨機(jī)數(shù)據(jù)值。
在步驟1211,使用密碼隨機(jī)數(shù)和識(shí)別因子對(duì)靜態(tài)第二裝置公鑰和靜態(tài)第二裝置私鑰進(jìn)行盲化。結(jié)果,可以確定盲化靜態(tài)第二裝置公鑰和盲化靜態(tài)第二裝置私鑰。在一些實(shí)施例中,密鑰可以以與方法600的步驟610描述的相似方式被盲化。
在步驟1212,使用盲化靜態(tài)第二裝置私鑰和臨時(shí)第一裝置公鑰生成第二共享秘密。第二共享秘密可以使用任何適當(dāng)方法諸如ECDH從臨時(shí)第一裝置公鑰和盲化靜態(tài)第二裝置私鑰生成。
在步驟1213,生成臨時(shí)第二裝置密鑰對(duì)。“臨時(shí)第二裝置密鑰對(duì)”可以包括供單次交易或其它通信會(huì)話使用而生成的公鑰(即“臨時(shí)第二裝置公鑰”)和私鑰(即“臨時(shí)第二裝置私鑰”)。臨時(shí)第二裝置密鑰對(duì)可以是任何適當(dāng)格式。通常,一旦使用臨時(shí)第二裝置密鑰對(duì)的通信會(huì)話結(jié)束,或者一旦已經(jīng)使用臨時(shí)第二裝置密鑰對(duì)生成一個(gè)或多個(gè)共享秘密,臨時(shí)第二裝置密鑰對(duì)可以被刪除。
在步驟1214,使用臨時(shí)第二裝置私鑰和靜態(tài)第一裝置公鑰生成輔助共享秘密。輔助共享秘密可以使用任何適當(dāng)方法諸如ECDH從臨時(shí)第二裝置私鑰和靜態(tài)第一裝置公鑰生成。
在步驟1215,使用輔助共享秘密和輔助補(bǔ)充數(shù)據(jù)生成輔助會(huì)話密鑰。輔助補(bǔ)充數(shù)據(jù)可以包括用來生成輔助會(huì)話密鑰的任何其它數(shù)據(jù)。通常,在步驟1215,可以使用與在第一計(jì)算裝置處(例如,根據(jù)方法1000的步驟1011)生成輔助會(huì)話密鑰使用的相同的輔助補(bǔ)充數(shù)據(jù)。
在步驟1216,使用第二共享秘密、第二補(bǔ)充數(shù)據(jù)和輔助會(huì)話密鑰生成第二會(huì)話密鑰。通常,在步驟1216,可以使用與在第一計(jì)算裝置處(例如,根據(jù)方法1000的步驟1012)生成第二會(huì)話密鑰使用的相同的補(bǔ)充數(shù)據(jù)。第二會(huì)話密鑰可以使用任何適當(dāng)KDF生成。
在步驟1217,使用第二會(huì)話密鑰加密密碼隨機(jī)數(shù)、第二裝置證書鏈和有效載荷數(shù)據(jù),以生成已加密響應(yīng)數(shù)據(jù)。第二裝置證書鏈可以包括從根CA證書到第二裝置證書的一個(gè)或多個(gè)簽名證書鏈,由此,該證書鏈確立第二裝置證書的真實(shí)性。有效載荷數(shù)據(jù)可以包括任何適當(dāng)數(shù)據(jù)。例如,有效載荷數(shù)據(jù)可以包括交易的確認(rèn),用戶賬戶的余額,能夠用來執(zhí)行未來交易的密碼密鑰,諸如限制使用密鑰(LUK),等等。
在步驟1218,向第一計(jì)算裝置301發(fā)送包括盲化靜態(tài)第二裝置公鑰、臨時(shí)第二裝置公鑰和已加密響應(yīng)數(shù)據(jù)的認(rèn)證響應(yīng)消息。在一些實(shí)施例中,認(rèn)證響應(yīng)消息在到達(dá)第一計(jì)算裝置301之前,可能經(jīng)過一個(gè)或多個(gè)媒介(例如,不可信網(wǎng)絡(luò)303)。
應(yīng)當(dāng)注意,如上文描述使用輔助會(huì)話密鑰生成第二會(huì)話密鑰能夠提供針對(duì)認(rèn)證響應(yīng)消息的前向保密的優(yōu)點(diǎn)。例如,即便盲化靜態(tài)第二裝置公鑰和臨時(shí)第二裝置公鑰在傳送中被偷聽者覺察到,且靜態(tài)第二裝置私鑰稍后被泄密,第二會(huì)話密鑰也不能被攻擊者重新生成,原因是臨時(shí)第二裝置私鑰(重新生成第二會(huì)話密鑰必須的)已經(jīng)被刪除。沒有第二會(huì)話密鑰,已加密響應(yīng)數(shù)據(jù)不能被解密。因此,即便在第二計(jì)算裝置302后來泄密的可能性不大的情況下,這些實(shí)施例允許通信保持安全。
V.前向保密認(rèn)證的通信流
圖14和15是圖解說明根據(jù)本發(fā)明的一些實(shí)施例各個(gè)數(shù)據(jù)元素的計(jì)算和傳輸?shù)臄?shù)據(jù)流程圖。如圖8和9所示,矩形框指示數(shù)據(jù)元素(例如,識(shí)別因子),圓指示要執(zhí)行的操作(例如,密鑰生成)。指向圓的每個(gè)箭頭指示相應(yīng)操作符的操作數(shù),離開圓的每個(gè)箭頭指示相應(yīng)操作符的結(jié)果。不過,應(yīng)當(dāng)注意,一些實(shí)施例可以不使用對(duì)于某操作所有示出的操作數(shù),一些實(shí)施例可以使用所示操作的額外的操作數(shù)。此外,實(shí)施例可以不一定執(zhí)行所有示出的操作,和/或可以執(zhí)行圖14和15沒有示出的額外操作。
A.認(rèn)證請(qǐng)求消息
圖15示出圖解說明根據(jù)一些實(shí)施例在生成、傳送和處理認(rèn)證請(qǐng)求消息的第二方法中執(zhí)行的操作的數(shù)據(jù)流程圖。
如圖15所示,第一計(jì)算裝置301使用公/私鑰對(duì)生成器(KeyGen)生成臨時(shí)第一裝置公鑰(ePubF)和臨時(shí)第一裝置私鑰(ePrivF)。臨時(shí)第一裝置公鑰(ePubF)與識(shí)別因子(IdFactor)組合,以生成組合臨時(shí)第一裝置公鑰(ePubF)。類似地,臨時(shí)第一裝置私鑰(ePrivF)與識(shí)別因子(IdFactor)組合,以生成組合臨時(shí)第一裝置私鑰(ePrivF*)。第一計(jì)算裝置301使用組合臨時(shí)第一裝置私鑰(ePrivF*)和靜態(tài)第二裝置公鑰(PubS)作為橢圓曲線Diffie-Hellman(ECDH)操作的輸入,以生成第一共享秘密(Z1)。第一共享秘密用作密鑰導(dǎo)出函數(shù)(KDF)的輸入,以導(dǎo)出第一會(huì)話密鑰(SK1)。第一計(jì)算裝置301使用第一會(huì)話密鑰(SK1)借助認(rèn)證加密(AE)算法加密第一裝置標(biāo)識(shí)符(IdF)和識(shí)別數(shù)據(jù)(IdData),產(chǎn)生已加密請(qǐng)求數(shù)據(jù)。已加密請(qǐng)求數(shù)據(jù)、組合臨時(shí)第一裝置公鑰(ePubF*)和第一裝置證書(CertF)在請(qǐng)求消息中發(fā)送到第二計(jì)算裝置302。
一旦第二計(jì)算裝置302接收請(qǐng)求消息,第二計(jì)算裝置302使用接收的組合臨時(shí)第一裝置公鑰(ePubF*)和靜態(tài)第二裝置私鑰(PrivS)生成第一共享秘密(Z1)。使用第一共享秘密,密鑰導(dǎo)出函數(shù)(KDF)用來導(dǎo)出第一會(huì)話密鑰(SK1)。第二計(jì)算裝置302然后使用第一會(huì)話密鑰(SK1)解密已加密請(qǐng)求數(shù)據(jù),以確定識(shí)別數(shù)據(jù)(IdData)和第一裝置標(biāo)識(shí)符(IdF)。第一裝置標(biāo)識(shí)符(IdF)能夠用來檢索(查詢)之前存儲(chǔ)的針對(duì)第一計(jì)算裝置301的識(shí)別數(shù)據(jù)(IdData2)。如果檢索的識(shí)別數(shù)據(jù)(IdData2)和解密的識(shí)別數(shù)據(jù)(IdData)匹配,則第一計(jì)算裝置301的認(rèn)證可能是成功的。否則,認(rèn)證可能失敗。
此外,第二計(jì)算裝置302使用數(shù)字簽名算法(ECDSA)和可信證書機(jī)構(gòu)的公鑰(PubCA)驗(yàn)證第一裝置證書(CertF)。在一些實(shí)施例中,第一計(jì)算裝置301的成功認(rèn)證可能需要驗(yàn)證識(shí)別數(shù)據(jù)(IdData)和第一裝置證書(CertF)兩者。
B.認(rèn)證響應(yīng)消息
圖16示出圖解說明根據(jù)一些實(shí)施例在生成、傳送和處理認(rèn)證響應(yīng)消息的第二方法中執(zhí)行的操作的數(shù)據(jù)流程圖。
如圖16所示,第二計(jì)算裝置302將靜態(tài)第二裝置私鑰(PrivS)與密碼隨機(jī)數(shù)(NonceS)組合(MUL),以生成盲化靜態(tài)第二裝置私鑰(PrivS*)。類似地,靜態(tài)第二裝置公鑰(PubS)與密碼隨機(jī)數(shù)(NonceS)和識(shí)別因子(IdFactor)組合(MUL),以生成盲化靜態(tài)第二裝置公鑰(PubS*)。
已經(jīng)根據(jù)圖15在請(qǐng)求消息中接收的盲化靜態(tài)第二裝置私鑰(ePrivS*)和組合臨時(shí)第一裝置公鑰(ePubF*)使用橢圓曲線Diffie-Hellman(ECDH)運(yùn)算組合,以確定第二共享秘密(Z2)。
此外,第二計(jì)算裝置302使用公/私鑰對(duì)生成器(KeyGen)來生成臨時(shí)第二裝置公鑰(ePubS)和臨時(shí)第二裝置私鑰(ePrivS)。然后,已經(jīng)從圖15的第一裝置證書(CertF)提取的臨時(shí)第二裝置私鑰(ePrivS)和靜態(tài)第一裝置公鑰(PubF)使用橢圓曲線Diffie-Hellman(ECDH)算法組合,以確定輔助共享秘密。
輔助共享秘密和第二共享秘密(Z2)用于密鑰導(dǎo)出函數(shù)(KDF),以確定第二會(huì)話密鑰(SK2)。第二計(jì)算裝置302加密密碼隨機(jī)數(shù)(NonceS)和第二裝置證書(CertS),以確定已加密響應(yīng)數(shù)據(jù)。第二計(jì)算裝置302然后向第一計(jì)算裝置301發(fā)送包括已加密響應(yīng)數(shù)據(jù)、盲化靜態(tài)第二裝置公鑰(PubS*)和臨時(shí)第二裝置公鑰的響應(yīng)消息。
一旦第一計(jì)算裝置301接收響應(yīng)消息,第一計(jì)算裝置301使用接收的根據(jù)圖15生成的盲化靜態(tài)第二裝置公鑰(PubS*)和臨時(shí)私鑰(ePrivF),通過使用橢圓曲線Diffie-Hellman(ECDH)算法,以生成第二共享秘密(Z2)。此外,第一計(jì)算裝置301使用接收的可以保存在第一計(jì)算裝置301處的臨時(shí)第二裝置公鑰(ePubS)和靜態(tài)第一裝置私鑰(PrivF)作為橢圓曲線Diffie-Hellman(ECDH)算法的輸入,生成輔助共享秘密。
密鑰導(dǎo)出函數(shù)(KDF)可以用來使用輔助共享秘密和第二共享秘密(Z2)生成第二會(huì)話密鑰(SK2)。第二計(jì)算裝置302然后使用第二會(huì)話密鑰(SK2)解密已加密響應(yīng)數(shù)據(jù),以確定第二裝置證書(CertS)、密碼隨機(jī)數(shù)(NonceS)和靜態(tài)第二裝置公鑰(PubS),他們可以從第二裝置證書(CertS)提取。
第二計(jì)算裝置302能夠?qū)⒚艽a隨機(jī)數(shù)(NonceS)和靜態(tài)第二裝置公鑰(PubS)組合(MUL),以生成第二裝置會(huì)話標(biāo)識(shí)符(PubS*2)。第二裝置會(huì)話標(biāo)識(shí)符(PubS*2)然后與從第二計(jì)算裝置302接收的盲化靜態(tài)第二裝置公鑰(PubS*)比較。認(rèn)證可以要求第二裝置會(huì)話標(biāo)識(shí)符(PubS*2)和盲化靜態(tài)第二裝置公鑰(PubS*)匹配。
此外,第二計(jì)算裝置302使用橢圓曲線數(shù)字簽名算法(ECDSA)和可信證書機(jī)構(gòu)的公鑰(PubCA)來驗(yàn)證第二裝置證書(CertS)。在一些實(shí)施例中,認(rèn)證可以要求驗(yàn)證盲化靜態(tài)第二裝置公鑰(PubS*)和第二裝置證書(CertS)兩者。
VI.優(yōu)化認(rèn)證的通信方法
在本發(fā)明的一些實(shí)施例中,第一計(jì)算裝置301和第二計(jì)算裝置302各自可以保存過去發(fā)生過通信的裝置的注冊(cè)。每個(gè)注冊(cè)裝置可以與下一共享秘密和/或用在與注冊(cè)裝置關(guān)聯(lián)的未來通信會(huì)話中的其它數(shù)據(jù)關(guān)聯(lián)。以此方式,實(shí)施例能夠避免在兩個(gè)裝置之間的任何隨后的通信中的某些操作,諸如Diffie-Hellman密鑰協(xié)商。因此,實(shí)施例能夠減少建立通信會(huì)話所需的時(shí)間量和處理。此外,實(shí)施例能夠在獲得這些好處的同時(shí),保護(hù)第二計(jì)算裝置302的身份,這將在下面更加詳細(xì)地描述。
A.第一計(jì)算裝置
圖16示出根據(jù)一些實(shí)施例安全地對(duì)第二計(jì)算裝置302認(rèn)證并從第二計(jì)算裝置302獲得響應(yīng)數(shù)據(jù)的優(yōu)化方法1600。在一些實(shí)施例中,方法1600可以由第一計(jì)算裝置301執(zhí)行。不過,在其它實(shí)施例中,方法1600的一些或所有步驟可以由其它實(shí)體執(zhí)行。
在步驟1601,執(zhí)行方法400的步驟401-408。具體地,生成包括臨時(shí)公鑰和臨時(shí)私鑰的臨時(shí)密鑰對(duì)。使用識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)計(jì)算識(shí)別因子。臨時(shí)公鑰和臨時(shí)私鑰使用識(shí)別因子組合。結(jié)果,可以確定組合臨時(shí)公鑰和組合臨時(shí)私鑰。使用組合臨時(shí)私鑰和靜態(tài)第二裝置公鑰生成第一共享秘密。使用第一共享秘密和第一補(bǔ)充數(shù)據(jù)生成第一會(huì)話密鑰。使用第一會(huì)話密鑰加密臨時(shí)公鑰、識(shí)別數(shù)據(jù)和第一裝置標(biāo)識(shí)符,以生成已加密請(qǐng)求數(shù)據(jù)。向第二計(jì)算裝置302發(fā)送包括組合臨時(shí)公鑰和已加密請(qǐng)求數(shù)據(jù)的認(rèn)證請(qǐng)求消息。然后,從第二計(jì)算裝置302接收包括盲化靜態(tài)第二裝置公鑰和已加密響應(yīng)數(shù)據(jù)的認(rèn)證響應(yīng)消息。這些步驟的進(jìn)一步描述可以參照方法400的相應(yīng)步驟找到。
在步驟1602,確定第二裝置會(huì)話標(biāo)識(shí)符。在一些實(shí)施例中,第二裝置會(huì)話標(biāo)識(shí)符可以是在認(rèn)證響應(yīng)消息中接收的盲化靜態(tài)第二裝置公鑰的子集(例如,最后4位或8位)。
在步驟1603,確定第二裝置會(huì)話標(biāo)識(shí)符是否注冊(cè)。例如,在一些實(shí)施例中,可以搜索注冊(cè)表尋找第二裝置會(huì)話標(biāo)識(shí)符。如果注冊(cè),方法1600前進(jìn)到步驟1604。否則,方法1600前進(jìn)到步驟1605。
如果注冊(cè)第二裝置會(huì)話標(biāo)識(shí)符,則在步驟1604,獲得與第二裝置會(huì)話標(biāo)識(shí)符關(guān)聯(lián)的共享秘密。例如,在一些實(shí)施例中,共享秘密可以從與第二裝置會(huì)話標(biāo)識(shí)符關(guān)聯(lián)的注冊(cè)的記錄中檢索。方法1600然后前進(jìn)到步驟1606。
如果第二裝置會(huì)話標(biāo)識(shí)符沒有注冊(cè),則在步驟1605,執(zhí)行方法400的步驟409。具體地,使用臨時(shí)私鑰和在認(rèn)證響應(yīng)消息中接收的盲化靜態(tài)第二裝置公鑰生成第二共享秘密。
在步驟1606,執(zhí)行方法400的步驟410-414。具體地,使用第二共享秘密和第二補(bǔ)充數(shù)據(jù)生成第二會(huì)話密鑰。使用第二會(huì)話密鑰解密在認(rèn)證響應(yīng)消息中接收的已加密響應(yīng)數(shù)據(jù),以獲得密碼隨機(jī)數(shù)、第二裝置證書鏈和有效載荷數(shù)據(jù)。第二裝置證書鏈被驗(yàn)證。交易然后使用有效載荷數(shù)據(jù)進(jìn)行。
在步驟1607,使用共享秘密生成下一共享秘密和下一第二裝置會(huì)話標(biāo)識(shí)符。下一共享秘密和下一第二裝置會(huì)話標(biāo)識(shí)符可以以任何適當(dāng)方式從共享秘密生成。例如,在一些實(shí)施例中,下一共享秘密和下一第二裝置會(huì)話標(biāo)識(shí)符可以使用密鑰導(dǎo)出函數(shù)確定。例如,在步驟1606用來生成第二會(huì)話密鑰的密鑰導(dǎo)出函數(shù)還可以生成下一共享秘密。
在步驟1608,注冊(cè)下一第二裝置會(huì)話標(biāo)識(shí)符并與下一共享秘密關(guān)聯(lián)。例如,在一些實(shí)施例中,下一第二裝置會(huì)話標(biāo)識(shí)符和下一共享秘密可以存儲(chǔ)在注冊(cè)表或數(shù)據(jù)庫中。
B.第二計(jì)算裝置
圖17示出根據(jù)一些實(shí)施例安全地處理來自第一計(jì)算裝置301的認(rèn)證請(qǐng)求消息并向第一計(jì)算裝置301提供認(rèn)證響應(yīng)消息的優(yōu)化方法1700。在一些實(shí)施例中,方法1700可以由第二計(jì)算裝置302執(zhí)行。不過,在其它實(shí)施例中,方法1700的一些或所有步驟可以由其它實(shí)體執(zhí)行。
在步驟1701,執(zhí)行方法600的步驟601-608。具體地,從第一計(jì)算裝置301接收包括組合臨時(shí)公鑰和已加密請(qǐng)求數(shù)據(jù)的認(rèn)證請(qǐng)求消息。使用組合臨時(shí)公鑰和靜態(tài)第二裝置私鑰生成第一共享秘密。使用第一共享秘密和第一補(bǔ)充數(shù)據(jù)生成第一會(huì)話密鑰。使用第一會(huì)話密鑰解密已加密請(qǐng)求數(shù)據(jù),以獲得包括臨時(shí)公鑰、第一裝置標(biāo)識(shí)符和識(shí)別數(shù)據(jù)的請(qǐng)求數(shù)據(jù)。使用第一裝置標(biāo)識(shí)符驗(yàn)證識(shí)別數(shù)據(jù)。檢索與第一裝置標(biāo)識(shí)符關(guān)聯(lián)的認(rèn)證數(shù)據(jù)和/或識(shí)別數(shù)據(jù)。使用檢索的認(rèn)證數(shù)據(jù)和識(shí)別數(shù)據(jù)生成識(shí)別因子。使用臨時(shí)公鑰和識(shí)別因子驗(yàn)證組合臨時(shí)公鑰。這些步驟的進(jìn)一步描述可以參照方法600的相應(yīng)步驟找到。
在步驟1702,確定第一裝置標(biāo)識(shí)符是否注冊(cè)。例如,在一些實(shí)施例中,可以搜索注冊(cè)表尋找第一裝置標(biāo)識(shí)符。如果注冊(cè),則方法1700前進(jìn)到步驟1703。否則,方法1700前進(jìn)到步驟1704。
如果注冊(cè)第一裝置標(biāo)識(shí)符,則在步驟1703,獲得與第一裝置標(biāo)識(shí)符關(guān)聯(lián)的共享秘密和盲化靜態(tài)第二裝置公鑰。例如,在一些實(shí)施例中,可以從與第一裝置標(biāo)識(shí)符關(guān)聯(lián)的注冊(cè)表的記錄中檢索共享秘密和盲化靜態(tài)第二裝置公鑰。方法1700然后前進(jìn)到步驟1705。
如果沒有注冊(cè)第一裝置標(biāo)識(shí)符,則在步驟1704,執(zhí)行方法600的步驟709-711。具體地,生成密碼隨機(jī)數(shù)。使用密碼隨機(jī)數(shù)和識(shí)別因子對(duì)靜態(tài)第二裝置公鑰和靜態(tài)第二裝置私鑰進(jìn)行盲化。然后使用盲化靜態(tài)第二裝置私鑰和臨時(shí)公鑰生成第二共享秘密。
在步驟1705,執(zhí)行方法600的步驟712-714。具體地,使用第二共享秘密和第二補(bǔ)充數(shù)據(jù)生成第二會(huì)話密鑰。使用第二會(huì)話密鑰加密密碼隨機(jī)數(shù)、第二裝置證書鏈和有效載荷數(shù)據(jù),以生成已加密響應(yīng)數(shù)據(jù)。然后向第一計(jì)算裝置301發(fā)送包括盲化靜態(tài)第二裝置公鑰和已加密響應(yīng)數(shù)據(jù)的認(rèn)證響應(yīng)消息。
在步驟1706,使用共享秘密生成下一共享秘密和下一盲化第二裝置公鑰。下一共享秘密和下一盲化第二裝置公鑰可以以任何適當(dāng)方式從共享秘密生成。例如,在一些實(shí)施例中,下一共享秘密可以使用密鑰導(dǎo)出函數(shù)確定。例如,在步驟1705用來生成第二會(huì)話密鑰的密鑰導(dǎo)出函數(shù)還可以生成下一共享秘密。
在步驟1707,注冊(cè)第一裝置標(biāo)識(shí)符并與下一共享秘密和下一盲化第二裝置公鑰關(guān)聯(lián)。例如,在一些實(shí)施例中,下一盲化第二裝置公鑰和下一共享秘密可以存儲(chǔ)在與第一裝置標(biāo)識(shí)符對(duì)應(yīng)的注冊(cè)表或數(shù)據(jù)庫表項(xiàng)中。
VII.偽代碼列表
下面的表1和2示出根據(jù)本發(fā)明的一些實(shí)施例實(shí)現(xiàn)認(rèn)證的數(shù)據(jù)通信的安全方法的偽代碼列表。
A.第一計(jì)算裝置
表1
表1示出根據(jù)一些實(shí)施例實(shí)現(xiàn)安全地認(rèn)證并獲得響應(yīng)數(shù)據(jù)的方法的偽代碼列表。下文描述的一些步驟可以根據(jù)與第二計(jì)算裝置302通信的第一計(jì)算裝置301。不過,在本發(fā)明的實(shí)施例中,一些或所有步驟可以由另一適當(dāng)實(shí)體執(zhí)行。
在方法之前,第一計(jì)算裝置301可以可選地保存一個(gè)或多個(gè)數(shù)據(jù)元素,諸如認(rèn)證數(shù)據(jù)(AuthDataF),識(shí)別數(shù)據(jù)(IdDataF),第二裝置證書(Cs),持久性綁定注冊(cè)表(PB注冊(cè)表),加密套件規(guī)范(CipherSpec),靜態(tài)第一裝置私鑰(dsF)和/或第一裝置證書(CF)。
此外,在一些實(shí)施例中,可能要求第一計(jì)算裝置301保存第一裝置標(biāo)識(shí)符(IDsF)和指示通信的協(xié)議數(shù)據(jù)的第一裝置控制字節(jié)(CBF)。
在步驟F1,如果保存識(shí)別數(shù)據(jù),但第二裝置證書不可用,則識(shí)別數(shù)據(jù)無效。換言之,識(shí)別數(shù)據(jù)不會(huì)在請(qǐng)求消息中發(fā)送。
在步驟F2,生成臨時(shí)第一裝置密鑰對(duì)。臨時(shí)第一裝置密鑰對(duì)包括臨時(shí)第一裝置私鑰(deF)和臨時(shí)第一裝置公鑰(QeF)。在使用橢圓曲線密鑰的實(shí)施例中,可以在與第二裝置證書(如果可用)相同的曲線上生成臨時(shí)密鑰。
在步驟F3,執(zhí)行檢查以確定識(shí)別數(shù)據(jù)或認(rèn)證數(shù)據(jù)是否可用。如果其中之一可用,則在步驟F4,通過對(duì)識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)的組合求散列,并取結(jié)果的最高有效(most significant)4字節(jié)(T4)生成識(shí)別因子(IdFactor)。否則,在步驟F5,識(shí)別因子被分配1(即乘法單位)。
在步驟F6,通過確定識(shí)別因子和臨時(shí)第一裝置公鑰的點(diǎn)乘積,計(jì)算組合臨時(shí)第一裝置公鑰(QeF*)。
在步驟F7,如果認(rèn)證數(shù)據(jù)可用,則第一裝置控制字節(jié)修改為指示認(rèn)證數(shù)據(jù)應(yīng)當(dāng)用來認(rèn)證第一計(jì)算裝置301。
在步驟F8,執(zhí)行檢查,以確定第二裝置證書是否可用。如果第二裝置證書可用,則執(zhí)行步驟F9-F13。否則,方法前進(jìn)到步驟14。
在步驟F9,認(rèn)證第二裝置證書(例如,其數(shù)字簽名可以被驗(yàn)證)。一旦認(rèn)證,從第二裝置證書中提取靜態(tài)第二裝置公鑰(QsS)和第二裝置證書標(biāo)識(shí)符(CfpS)。
在步驟F10,使用橢圓曲線Diffie-Hellman(ECDH)算法生成第一共享秘密(Z1)。ECDH算法的輸入是組合臨時(shí)第一裝置私鑰(從識(shí)別因子和臨時(shí)第一裝置私鑰生成)和靜態(tài)第二裝置公鑰。
在步驟F11,使用密鑰導(dǎo)出函數(shù)(KDF)導(dǎo)出第一會(huì)話密鑰(SK1)。KDF的輸入是第一共享秘密、期望的輸出長度(len)和第二裝置標(biāo)識(shí)符(IDsS)和組合臨時(shí)第一裝置公鑰的最高有效16字節(jié)(T16)的組合。
在步驟F12,使用認(rèn)證加密(AE)算法,第一會(huì)話密鑰用來生成已加密請(qǐng)求數(shù)據(jù)(EncDataF)。請(qǐng)求數(shù)據(jù)包括預(yù)定定義的標(biāo)題(“KC_0_V”)、第一裝置標(biāo)識(shí)符、第一裝置控制字節(jié)、加密套件規(guī)范、識(shí)別數(shù)據(jù)和第一裝置證書。
在步驟F13,使用預(yù)定義值(OPTY)、第二裝置證書標(biāo)識(shí)符、組合臨時(shí)第一裝置公鑰和已加密數(shù)據(jù)形成請(qǐng)求消息(CData)。
在步驟F14,如果第二裝置證書不可用,則在步驟F15,使用第一裝置標(biāo)識(shí)符、組合臨時(shí)第一裝置公鑰、第一裝置控制字節(jié)和加密套件規(guī)范形成請(qǐng)求消息。
在步驟F16,發(fā)送請(qǐng)求消息。
在步驟F16之后,等待,直到接收響應(yīng)消息。響應(yīng)消息包括盲化靜態(tài)第二裝置公鑰(BDataS)、臨時(shí)第二裝置公鑰(QeS)(可能是丟失的)和已加密響應(yīng)數(shù)據(jù)(EncDataS)。
在步驟F17,檢查盲化靜態(tài)第二裝置公鑰和臨時(shí)第二裝置公鑰,以確保他們屬于適當(dāng)?shù)臋E圓曲線域。
在步驟F18,通過取盲化靜態(tài)第二裝置公鑰的前8字節(jié)(T8),確定第二裝置會(huì)話標(biāo)識(shí)符(IDsS)。
在步驟F19,審查持久綁定注冊(cè)表,以確定是否存在第二裝置會(huì)話標(biāo)識(shí)符的表項(xiàng)。在步驟F20,執(zhí)行檢查以確定是否注冊(cè)第二裝置會(huì)話標(biāo)識(shí)符。如果注冊(cè),則方法前進(jìn)到步驟F21。否則,方法前進(jìn)到步驟F28。
在步驟F21,執(zhí)行檢查以確定靜態(tài)第一裝置公鑰(QsF)是否可用。如果可用,則執(zhí)行步驟F22和F23。否則,方法前進(jìn)到步驟F24。
在步驟F22,使用ECDH算法確定輔助共享秘密(Zaux)。ECDH的輸入包括靜態(tài)第一裝置私鑰和臨時(shí)第二裝置公鑰。
在步驟F23,使用密鑰導(dǎo)出函數(shù)導(dǎo)出輔助會(huì)話密鑰(SKaux)。密鑰導(dǎo)出函數(shù)的輸入包括輔助共享秘密、期望密鑰長度以及第一裝置標(biāo)識(shí)符和臨時(shí)第二裝置公鑰的前16字節(jié)的組合。方法然后前進(jìn)到步驟F26。
在步驟F24,如果靜態(tài)第一裝置公鑰不可用,則在步驟F25,輔助共享秘密被設(shè)置成空(NULL)值。
在步驟F26,使用臨時(shí)第一裝置私鑰和盲化靜態(tài)第二裝置公鑰生成第二共享秘密(Z2)。
在步驟F27,使臨時(shí)第一裝置私鑰歸零。歸零可以包括例如安全徹底地刪除一個(gè)值。方法然后前進(jìn)到步驟F30。
在步驟F28,如果注冊(cè)第二裝置會(huì)話標(biāo)識(shí)符,則從持久綁定注冊(cè)表檢索第二共享秘密。
在步驟F30,使用密鑰導(dǎo)出函數(shù)(KDF)生成第二會(huì)話密鑰(SKCFRM)、幾個(gè)其它密鑰(SKMAC、SKENC、SKRMAC)、下一共享秘密(NextZ)和下一盲化因子(NextBlind)。KDF的輸入包括第二共享秘密、期望密鑰長度、輔助會(huì)話密鑰以及其它數(shù)據(jù)的組合,其它數(shù)據(jù)諸如第二裝置標(biāo)識(shí)符、第一裝置標(biāo)識(shí)符和臨時(shí)第一裝置公鑰的前16字節(jié)。
在步驟F31,使第二會(huì)話密鑰和輔助會(huì)話密鑰歸零。
在步驟F32,第二會(huì)話密鑰用來解密(AE-1)已加密響應(yīng)數(shù)據(jù)。所產(chǎn)生的響應(yīng)數(shù)據(jù)包括預(yù)定義標(biāo)題(Header)、第二裝置證書、密碼隨機(jī)數(shù)(NS)、第二裝置控制字節(jié)(CBS)、要在未來通信中使用的新第二裝置證書(NewCS)、要在未來通信中使用的新加密套件規(guī)范(NewCipherSpec)和有效載荷(Payload)。
在步驟F33,通過檢查預(yù)定義標(biāo)題與預(yù)期值匹配,驗(yàn)證預(yù)定義標(biāo)題。第二裝置控制字節(jié)也被驗(yàn)證。
在步驟F34,使第二會(huì)話密鑰歸零。
在步驟F35,執(zhí)行檢查以確定服務(wù)器控制字節(jié)是否指示應(yīng)當(dāng)重新建立持久綁定,服務(wù)器控制字節(jié)是否指示不支持持久綁定,或者第二裝置會(huì)話標(biāo)識(shí)符是否在注冊(cè)表中沒有找到。如果以上的任何一個(gè)為真,則方法前進(jìn)到步驟F36-F38。否則,方法前進(jìn)到步驟F39。
在步驟F36,使用橢圓曲線數(shù)字簽名算法(ECDSA)驗(yàn)證第二裝置證書的數(shù)字簽名。
在步驟F37,從第二裝置證書提取靜態(tài)第二裝置公鑰(QsS)。
在步驟F38,通過使用密碼隨機(jī)數(shù)的前四位和靜態(tài)第二裝置公鑰重新計(jì)算盲化靜態(tài)第二裝置公鑰來對(duì)其進(jìn)行驗(yàn)證。
在步驟F39,如果服務(wù)器控制字節(jié)指示持久綁定要被初始化或以其它方式執(zhí)行,則執(zhí)行步驟F40和F41。
在步驟F40,通過取下一盲化因子和靜態(tài)第二裝置公鑰的點(diǎn)乘積的前8字節(jié),計(jì)算下一第二裝置會(huì)話標(biāo)識(shí)符(NextIdsS)。
在步驟F41,注冊(cè)下一第二裝置會(huì)話標(biāo)識(shí)符并與下一共享秘密關(guān)聯(lián)。
B.第二計(jì)算裝置
表2
表2示出根據(jù)一些實(shí)施例實(shí)現(xiàn)安全地處理認(rèn)證請(qǐng)求消息并提供認(rèn)證響應(yīng)消息的方法的偽代碼列表。下面所描述的一些步驟可以根據(jù)與第一計(jì)算裝置301通信的第二計(jì)算裝置302。不過,在本發(fā)明的實(shí)施例中,一些或所有步驟可以由另一適當(dāng)實(shí)體執(zhí)行。
在方法之前,第二計(jì)算裝置302可以可選地保存一個(gè)或多個(gè)數(shù)據(jù)元素,諸如用于第一計(jì)算裝置301或關(guān)聯(lián)用戶的認(rèn)證數(shù)據(jù)(AuthDataS),持久綁定(PB)注冊(cè)表,和/或數(shù)據(jù)有效載荷(Payload),其也可以響應(yīng)于請(qǐng)求消息確定。
此外,在一些實(shí)施例中,可能要求第二計(jì)算裝置302保存或訪問包括靜態(tài)第二裝置公鑰(QsS)和靜態(tài)第二裝置私鑰(dsS)的靜態(tài)第二裝置密鑰對(duì),指示協(xié)議數(shù)據(jù)的第二裝置控制字節(jié)(CBS),加密套件偏好的列表(CSList)和/或可以用來與第二計(jì)算裝置302通信的證書的列表(CertList)。
在步驟S1,接收請(qǐng)求消息(CData)。請(qǐng)求消息可以包括指示存在已加密數(shù)據(jù)的預(yù)定義值(OPTY),第二裝置證書標(biāo)識(shí)符(CfpS),組合臨時(shí)第一裝置公鑰(QeF*)和已加密請(qǐng)求數(shù)據(jù)(EncDataF)。替代性地,在一些情況下,請(qǐng)求消息可以包括第一裝置標(biāo)識(shí)符(IDsF)、組合臨時(shí)第一裝置公鑰、第一裝置控制字節(jié)(CBF)和加密套件規(guī)范(CipherSpec)。
在步驟S2,審查請(qǐng)求消息的前四個(gè)字節(jié)(T4),以確定其是否包括預(yù)定義值。如果包括,則方法前進(jìn)到步驟S3。否則,方法前進(jìn)到步驟S8。
在步驟S3,隔離請(qǐng)求消息的數(shù)據(jù)元素。具體地,由于請(qǐng)求消息包括預(yù)定義值,所以確定第二裝置證書標(biāo)識(shí)符、組合臨時(shí)第一裝置公鑰和已加密請(qǐng)求數(shù)據(jù)(EncDataF)。
在步驟S4,第二裝置證書標(biāo)識(shí)符和證書的列表用來檢索與請(qǐng)求消息關(guān)聯(lián)的第二裝置證書。此外,能夠確定與檢索到的證書對(duì)應(yīng)的靜態(tài)第二裝置私鑰。
在步驟S5,使用橢圓曲線Diffie-Hellman(ECDH)算法生成第一共享秘密(Z1)。算法的輸入包括接收的組合臨時(shí)第一裝置公鑰和靜態(tài)第二裝置私鑰。
在步驟S6,使用密鑰導(dǎo)出函數(shù)(KDF)導(dǎo)出第一會(huì)話密鑰(SK1)。KDF的輸入包括第一共享秘密、期望密鑰長度(len)以及第二裝置會(huì)話標(biāo)識(shí)符(IDsS)和組合臨時(shí)第一裝置公鑰的前16字節(jié)(T16)的組合。
在步驟S7,第一會(huì)話密鑰用來使用認(rèn)證解密(AE-1)函數(shù)解密已加密請(qǐng)求數(shù)據(jù)。產(chǎn)生的請(qǐng)求數(shù)據(jù)包括:具有預(yù)期值的預(yù)定義標(biāo)題字符串(“KC_0_V”)、第一裝置標(biāo)識(shí)符、第一裝置控制字節(jié)、加密套件規(guī)范、識(shí)別數(shù)據(jù)(IdDataF),可選地還有第一裝置證書(CF)。方法然后前進(jìn)到步驟S10。
在步驟S8,如果請(qǐng)求消息的前四個(gè)字節(jié)不包括預(yù)定義值,則在步驟S9,請(qǐng)求消息中的數(shù)據(jù)元素被隔離。具體地,確定第一裝置標(biāo)識(shí)符、組合臨時(shí)第一裝置公鑰、第一裝置控制字節(jié)和加密套件規(guī)范。
在步驟S10,如果確定識(shí)別數(shù)據(jù)來自第一裝置,且識(shí)別數(shù)據(jù)的認(rèn)證失敗,則在步驟S11,返回包括控制字節(jié)的響應(yīng)消息,該控制字節(jié)指示認(rèn)證失敗。
在步驟S12,如果第一裝置控制字節(jié)指示認(rèn)證數(shù)據(jù)曾用來生成請(qǐng)求消息,則使用第一裝置標(biāo)識(shí)符檢索認(rèn)證數(shù)據(jù)(AuthDataS)。例如,可以從裝置數(shù)據(jù)庫檢索認(rèn)證數(shù)據(jù)。
在步驟S13,如果認(rèn)證數(shù)據(jù)不能被成功地檢索(例如,沒有可用的第一裝置標(biāo)識(shí)符,或沒有任何認(rèn)證數(shù)據(jù)可用于第一裝置標(biāo)識(shí)符),則在步驟S14,返回包括控制字節(jié)的響應(yīng)消息,該控制字節(jié)指示認(rèn)證失敗。
在步驟S15,如果不支持從請(qǐng)求消息確定的加密套件規(guī)范,則在步驟S16,返回包括控制字節(jié)的響應(yīng)消息,該控制字節(jié)指示加密套件無效。
在步驟S17,如果加密套件規(guī)范不充分或不被允許,則方法前進(jìn)到步驟S18-S20。
在步驟S18,第二裝置控制字節(jié)被修改以指示加密套件要被改變。在步驟S19,新加密套件規(guī)范(NewCipherSpec)被設(shè)置到加密套件偏好的列表。在步驟S20,新第二裝置證書(NewCS)被設(shè)置到可以用在通信中的證書的列表。方法然后前進(jìn)到步驟S22。
在步驟S21,如果加密套件規(guī)范是充分的允許的,則新密套件規(guī)范與(當(dāng)前的)加密套件規(guī)范相同,新第二裝置證書與(當(dāng)前的)第二裝置證書相同。
步驟S21之后的步驟一般涉及形成并發(fā)送響應(yīng)消息。這些步驟可以使用加密套件規(guī)范和以前做出的服務(wù)器證書確定。例如,如果在步驟S20,新第二裝置證書用于形成響應(yīng)消息,則對(duì)靜態(tài)第二裝置公鑰(QsS)或靜態(tài)第二裝置私鑰(dsS)的任何引用可以引用與新第二裝置證書對(duì)應(yīng)的那些,這與對(duì)應(yīng)于關(guān)聯(lián)請(qǐng)求消息的第二裝置證書的密鑰不同。
在步驟S22,如果從請(qǐng)求消息確定第一裝置證書,則方法前進(jìn)到步驟S23和S24。否則,方法前進(jìn)到步驟S25。
在步驟S23,從第一裝置證書提取靜態(tài)第一裝置公鑰(QsF)。靜態(tài)第一裝置公鑰被驗(yàn)證以確保其屬于正確的橢圓曲線域。
步驟S24,生成臨時(shí)第二裝置密鑰對(duì)。臨時(shí)第二裝置密鑰對(duì)包括臨時(shí)第二裝置私鑰(deS)和臨時(shí)第二裝置公鑰(QeS)。方法然后前進(jìn)到步驟S26。
在步驟S25,如果從請(qǐng)求消息中沒有確定第一裝置證書,則臨時(shí)第二裝置公鑰被設(shè)置成空值。
在步驟S26,使用第一裝置控制字節(jié)準(zhǔn)備第二裝置控制字節(jié)。
在步驟S27,生成密碼隨機(jī)數(shù)(NS)。
在步驟S28,確定(1)第一裝置標(biāo)識(shí)符是否未注冊(cè),或(2)第一裝置控制字節(jié)是否指示不要求持久綁定。如果這兩個(gè)條件中的任何一個(gè)為假,則方法前進(jìn)到步驟S29。否則,如果這兩個(gè)條件都為真,則方法前進(jìn)到步驟S39。
在步驟S29,驗(yàn)證臨時(shí)第一裝置公鑰,以確保其屬于正確的橢圓曲線域。
在步驟S30,執(zhí)行檢查,以確定是識(shí)別數(shù)據(jù)可用還是認(rèn)證數(shù)據(jù)可用。如果其中任一個(gè)可用,則方法前進(jìn)到步驟S31。否則,方法前進(jìn)到步驟S33。
在步驟S31,通過對(duì)識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)的組合求散列并取結(jié)果的最高有效四字節(jié)(T4)來生成識(shí)別因子(IdFactor)。
在步驟S32,使用臨時(shí)第一裝置公鑰和識(shí)別因子重新計(jì)算組合臨時(shí)第一裝置公鑰。如果重新計(jì)算的密鑰和接收的密鑰不匹配,則返回包括控制字節(jié)的響應(yīng)消息,該控制字節(jié)指示認(rèn)證失敗。
在步驟S33,如果識(shí)別數(shù)據(jù)和認(rèn)證數(shù)據(jù)都不可用,則識(shí)別因子被設(shè)置為1(即,乘法單位)。
在步驟S34,如果靜態(tài)第一裝置公鑰可用,則方法前進(jìn)到步驟S35-S36。否則,方法前進(jìn)到步驟S37。
在步驟S35,用臨時(shí)第二裝置私鑰和靜態(tài)第一裝置公鑰作為ECDH算法的輸入計(jì)算輔助共享秘密(Zaux)。在步驟S36,使用KDF用輔助共享秘密、期望密鑰長度以及第一裝置標(biāo)識(shí)符和臨時(shí)第二裝置公鑰的前16字節(jié)的組合作為輸入,導(dǎo)出輔助會(huì)話密鑰(Kaux)。方法然后前進(jìn)到步驟S38。
在步驟S37,如果靜態(tài)第一裝置公鑰不可用,則輔助會(huì)話密鑰被設(shè)置成空值。
在步驟S38,使用ECDH算法計(jì)算第二共享秘密(Z2)。ECDH算法的第一輸入包括密碼隨機(jī)數(shù)的前四字節(jié)和靜態(tài)第二裝置私鑰的組合。ECDH算法的第二輸入包括組合臨時(shí)第一裝置公鑰。
在步驟S39,通過組合識(shí)別因子、密碼隨機(jī)數(shù)的前四字節(jié)和靜態(tài)第二裝置公鑰,計(jì)算盲化靜態(tài)第二裝置公鑰(BDataS)。方法然后前進(jìn)到步驟S43。
在步驟S40,如果第一裝置標(biāo)識(shí)符注冊(cè),且第一裝置控制字節(jié)指示要求持久綁定,則方法前進(jìn)到步驟S41和S42。否則,方法前進(jìn)到步驟S43。
在步驟S41,從與第一裝置標(biāo)識(shí)符對(duì)應(yīng)的持久綁定注冊(cè)表項(xiàng)讀第二共享秘密和盲化靜態(tài)第二裝置公鑰。在步驟S42,第二裝置控制字節(jié)被修改,以指示持久綁定已啟用。
在步驟S43,通過取盲化靜態(tài)第二裝置公鑰的前八字節(jié),計(jì)算第二裝置會(huì)話標(biāo)識(shí)符(IDsS)。
在步驟S44,使用密鑰導(dǎo)出函數(shù)(KDF)生成第二會(huì)話密鑰(SKCFRM)、幾個(gè)其它密鑰(SKMAC、SKENC、SKRMAC)、下一共享秘密(NextZ)和下一盲化因子(NextBlind)。KDF的輸入包括第二共享秘密、期望密鑰長度、輔助會(huì)話密鑰以及其它數(shù)據(jù)的組合,其它數(shù)據(jù)諸如第二裝置會(huì)話標(biāo)識(shí)符、第一裝置標(biāo)識(shí)符和臨時(shí)第一裝置公鑰的前16字節(jié)。
在步驟S45,第二共享秘密和輔助會(huì)話密鑰歸零。
在步驟S46,如果第一計(jì)算裝置301和第二計(jì)算裝置302都支持持久綁定,并且或者第一裝置標(biāo)識(shí)符沒有注冊(cè)或者第一裝置控制字節(jié)指示持久綁定應(yīng)當(dāng)被初始化,則方法前進(jìn)到步驟S47-S48。否則,方法前進(jìn)到步驟S49。
在步驟S47,通過組合下一盲化因子和靜態(tài)第二裝置公鑰,確定下一盲化靜態(tài)第二裝置公鑰(NextBDataS)。然后注冊(cè)第一裝置標(biāo)識(shí)符,并與下一共享秘密和下一盲化靜態(tài)第二裝置公鑰關(guān)聯(lián)。在步驟S48,第二裝置控制字節(jié)被修改以指示持久綁定要被初始化。方法然后前進(jìn)到步驟S51。
在步驟S49,如果步驟S46的條件不為真,則在步驟S50,第二裝置控制字節(jié)被修改,以指示持久綁定一直未用于響應(yīng)消息。
在步驟S51,第二會(huì)話密鑰用來使用認(rèn)證加密(AE)函數(shù)生成已加密響應(yīng)數(shù)據(jù)(EncDataS)。響應(yīng)數(shù)據(jù)包括預(yù)定義標(biāo)題(“KC_1_V”)、密碼隨機(jī)數(shù)、第二裝置控制字節(jié)、第二裝置證書、新第二裝置證書、新加密套件規(guī)范和有效載荷。有效載荷可以包括任何適當(dāng)數(shù)據(jù)。
在步驟S52,第二會(huì)話密鑰歸零。
在步驟S53,發(fā)送包括盲化靜態(tài)第二裝置公鑰、臨時(shí)第二裝置公鑰和已加密響應(yīng)數(shù)據(jù)的響應(yīng)消息(RData)。
VIII.計(jì)算機(jī)設(shè)備
圖18示出示例性計(jì)算機(jī)設(shè)備的框圖。它是可以用來實(shí)現(xiàn)上文描述的任何實(shí)體或組件的計(jì)算機(jī)系統(tǒng)的高級(jí)框圖。圖18中所示的子系統(tǒng)經(jīng)由系統(tǒng)總線1875互連。附加子系統(tǒng)包括打印機(jī)1803、鍵盤1806、固定磁盤1807和監(jiān)視器1809,監(jiān)視器1809耦連到顯示適配器1804。外圍設(shè)備和輸入/輸出(I/O)裝置耦連到I/O控制器1800,外圍設(shè)備和輸入/輸出(I/O)裝置能夠通過本領(lǐng)域已知的任何手段諸如串行端口連接到計(jì)算機(jī)系統(tǒng)。例如,串行端口1805或外部接口1808能夠用來將計(jì)算機(jī)設(shè)備連接到廣域網(wǎng)(諸如互聯(lián)網(wǎng))、鼠標(biāo)輸入裝置或掃描器。經(jīng)由系統(tǒng)總線1875的互連允許中央處理器1802與每個(gè)子系統(tǒng)通信,并控制來自系統(tǒng)存儲(chǔ)器1801或固定磁盤1807的指令的執(zhí)行以及信息在這些子系統(tǒng)之間的交換。系統(tǒng)存儲(chǔ)器1801和/或固定磁盤可以體現(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í)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì),包括RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多用途盤(DVD)或其它光存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其它磁存儲(chǔ)裝置、數(shù)據(jù)信號(hào)、數(shù)據(jù)傳輸或可以用來存儲(chǔ)或傳輸期望信息并且可以由計(jì)算機(jī)訪問的任何其它介質(zhì)。基于本文中提供的公開和教導(dǎo),本領(lǐng)域技術(shù)人員會(huì)認(rèn)識(shí)到實(shí)現(xiàn)各個(gè)實(shí)施例的其它方式和/或方法。
以上描述是示意性的不是限制性的。本領(lǐng)域技術(shù)人員在閱讀本公開后,會(huì)明白本發(fā)明的許多變形。因此,本發(fā)明的范圍可以不參照上文描述確定,而是可以參照所附權(quán)利要求連同其全部范圍或等同物確定。
應(yīng)當(dāng)理解,本發(fā)明的任何實(shí)施例可以用控制邏輯的形式以模塊化或集成方式使用硬件(例如,專用集成電路或現(xiàn)場可編程門陣列)和/或使用計(jì)算機(jī)軟件用通用可編程處理器來實(shí)現(xiàn)。如本文中使用的,處理器包括單核處理器、相同集成芯片上的多核處理器或單個(gè)電路板上或聯(lián)網(wǎng)的多個(gè)處理單元?;诒疚闹刑峁┑墓_和教導(dǎo),本領(lǐng)域技術(shù)人員可以明白并認(rèn)識(shí)到使用硬件及硬件和軟件的組合實(shí)現(xiàn)本發(fā)明的實(shí)施例的其它方式和/或方法。
本申請(qǐng)中描述的任何軟件組件或功能可以實(shí)現(xiàn)為使用任何適當(dāng)計(jì)算機(jī)語言(比方說例如Java、C、C++、C#、Objective-C、Swift)或腳本語言(諸如Perl或Python),使用例如傳統(tǒng)的或面向?qū)ο蟮募夹g(shù)由處理器執(zhí)行的軟件代碼。軟件代碼可以存儲(chǔ)為計(jì)算機(jī)可讀介質(zhì)上的一系列指令或命令以用于存儲(chǔ)和/或傳輸。適當(dāng)?shù)姆撬矐B(tài)計(jì)算機(jī)可讀介質(zhì)可以包括隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、磁介質(zhì)(諸如硬盤或軟盤)或光介質(zhì)(諸如光盤(CD)或DVD(數(shù)字多用途盤))、閃存,等等。計(jì)算機(jī)可讀介質(zhì)可以是這些存儲(chǔ)或傳輸裝置的任何組合。
這些程序還可以使用載波信號(hào)編碼和傳輸,載波信號(hào)適于通過遵循各種協(xié)議的有線、光和/或無線網(wǎng)絡(luò)(包括互聯(lián)網(wǎng))進(jìn)行傳輸。因此,根據(jù)本發(fā)明的實(shí)施例的計(jì)算機(jī)可讀介質(zhì)可以使用用這些程序編碼的數(shù)據(jù)信號(hào)來創(chuàng)建。用程序代碼編碼的計(jì)算機(jī)可讀介質(zhì)可以與兼容裝置封裝或者單獨(dú)地由其它裝置提供(例如,通過互聯(lián)網(wǎng)下載)。任何這種計(jì)算機(jī)可讀介質(zhì)可以駐存在單個(gè)計(jì)算機(jī)產(chǎn)品上或駐存在單個(gè)計(jì)算機(jī)產(chǎn)品(例如,硬盤、CD或整個(gè)計(jì)算機(jī)系統(tǒng))內(nèi),可以位于系統(tǒng)或網(wǎng)絡(luò)中的不同計(jì)算機(jī)產(chǎn)品或在系統(tǒng)或網(wǎng)絡(luò)中的不同計(jì)算機(jī)產(chǎn)品上。計(jì)算機(jī)系統(tǒng)可以包括監(jiān)視器、打印機(jī)、或用于給用戶提供本文中提到的任何結(jié)果的其它適當(dāng)?shù)娘@示器。
本文中描述的任何方法可以完全或部分地用包括一個(gè)或多個(gè)處理器的可以被配置成執(zhí)行步驟的計(jì)算機(jī)系統(tǒng)執(zhí)行。因此,實(shí)施例可以涉及被配置成執(zhí)行本文中描述的任何方法的步驟的計(jì)算機(jī)系統(tǒng),可能用不同組件執(zhí)行各個(gè)步驟或各組步驟。盡管表示為有編碼的步驟,但本文中的方法的步驟可以同時(shí)或者以不同次序執(zhí)行。另外,這些步驟中的一部分可以與來自其它方法的其它步驟一起使用。同樣,一個(gè)步驟的所有或部分可以是可選的。另外,任何方法的任何步驟可以用模塊、單元、電路或用于執(zhí)行這些步驟的其它手段實(shí)現(xiàn)。
在不偏離本發(fā)明的實(shí)施例的精神和范圍下,特定實(shí)施例的具體細(xì)節(jié)可以以任何適當(dāng)方式被組合。不過,本發(fā)明的其它實(shí)施例可以涉及關(guān)于每個(gè)單獨(dú)方面的具體實(shí)施例,或者這些單獨(dú)方面的具體組合。
出于圖示和描述目的,已經(jīng)呈現(xiàn)了對(duì)本發(fā)明的示例性實(shí)施例的上述描述。不旨在是排他性的或?qū)⒈景l(fā)明限制到所描述的精確形式,根據(jù)上文的教導(dǎo)許多改進(jìn)和變形是可行的。
除非明確指示有相反的意思,“一(a)”、“一(an)”、“所述(the)”的敘述旨在表示“一個(gè)或多個(gè)”。除非明確指示有相反的意思,“或者”的使用旨在表示“包括性的或”而不是“排它性的或”。
本文提到的所有專利、專利申請(qǐng)、公開和描述出于所有目的通過引用被全部并入本文中。不承認(rèn)他們?yōu)楝F(xiàn)有技術(shù)。