專(zhuān)利名稱(chēng):安全地產(chǎn)生共享密鑰的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及在兩個(gè)消息收發(fā)系統(tǒng)之間建立可信和安全的關(guān)系以交換數(shù)據(jù)的裝置和方法。更具體地,本申請(qǐng)描述了使用基于口令的認(rèn)證方法、在無(wú)線(xiàn)手持設(shè)備(“移動(dòng)設(shè)備”)與消息中心或主機(jī)系統(tǒng)之間建立可信關(guān)系的裝置和方法。這里描述的裝置和方法可應(yīng)用于陸地線(xiàn)路環(huán)境以及無(wú)線(xiàn)環(huán)境。
背景技術(shù):
在計(jì)算機(jī)工業(yè)中,有多種當(dāng)前已知的強(qiáng)大的基于口令的加密機(jī)制。這些實(shí)現(xiàn)方式中的一些包括加密密鑰交換(EKE)、口令推導(dǎo)模(Password Derived Moduli,PDM)、以及簡(jiǎn)單認(rèn)證口令指數(shù)密鑰交換(SPEKE)。這些機(jī)制在實(shí)現(xiàn)方式方面受限,沒(méi)有處理對(duì)移動(dòng)設(shè)備的需求。另外,這些機(jī)制沒(méi)有處理對(duì)實(shí)現(xiàn)完備前向(forward)保密的需求,使得在破壞安全性確實(shí)發(fā)生時(shí),所有先前交換的消息保持安全。協(xié)議提供了即使泄露了長(zhǎng)期密鑰,過(guò)去的會(huì)話(huà)密鑰也不會(huì)泄露的完備前向保密。(例如,見(jiàn)Menezes et al.,Handbook of AppliedCryptography,1996,p.496)。完備前向保密也稱(chēng)為后向阻斷保護(hù),表示不論未來(lái)發(fā)生任何事情,所有先前安全交換的消息應(yīng)當(dāng)保持安全。
發(fā)明內(nèi)容
根據(jù)在此公開(kāi)的示教,提供了針對(duì)兩個(gè)系統(tǒng)之間的安全通信的系統(tǒng)和方法。例如,方法可以包括產(chǎn)生的第一密鑰對(duì)和第二密鑰對(duì),后者包括根據(jù)共享秘密產(chǎn)生的第二公共密鑰。向第二系統(tǒng)發(fā)送第一和第二公共密鑰,并從第二系統(tǒng)接收第三和第四公共密鑰。根據(jù)共享秘密,產(chǎn)生第四公共密鑰。根據(jù)第一私用密鑰、第二私用密鑰、第三公共密鑰和第四公共密鑰,計(jì)算用于加密消息的主密鑰。為了重置密鑰,產(chǎn)生具有新的第二公共密鑰和新的第二私用密鑰的新的第二密鑰對(duì),以及接收新的第四公共密鑰。使用新的第二私用密鑰和新的第四公共密鑰,利用橢圓曲線(xiàn)計(jì)算來(lái)計(jì)算新的主密鑰。
作為另一示例,第一系統(tǒng)用于建立至第二系統(tǒng)的安全雙向通信路徑,以交換一個(gè)或多個(gè)消息。第一系統(tǒng)包括存儲(chǔ)器和與存儲(chǔ)器相連的處理單元。處理單元配置來(lái)執(zhí)行以下步驟產(chǎn)生具有第一公共密鑰和第一私用密鑰的第一密鑰對(duì);產(chǎn)生具有第二公共密鑰和第二私用密鑰的第二密鑰對(duì),第二公共密鑰是根據(jù)第一系統(tǒng)和第二系統(tǒng)已知的共享秘密產(chǎn)生的;向第二系統(tǒng)發(fā)送第二公共密鑰和第一公共密鑰;接收由第二系統(tǒng)產(chǎn)生的第三公共密鑰和第四公共密鑰,第四公共密鑰是根據(jù)共享秘密產(chǎn)生的;根據(jù)第一私用密鑰、第二私用密鑰、第三公共密鑰和第四公共密鑰,計(jì)算第一主密鑰,其中,第一主密鑰配置來(lái)用在對(duì)一個(gè)或多個(gè)消息的加密中;產(chǎn)生具有新的第二公共密鑰和新的第二私用密鑰的新的第二密鑰對(duì);從第二系統(tǒng)接收新的第四公共密鑰,以及使用橢圓曲線(xiàn)計(jì)算,根據(jù)第一私用密鑰、新的第二私用密鑰、第三公共密鑰和第四公共密鑰,計(jì)算新的主密鑰。
圖1示出了固定和無(wú)線(xiàn)系統(tǒng)之間的第一示例通信系統(tǒng)的方框圖。
圖2示出了兩個(gè)無(wú)線(xiàn)系統(tǒng)之間的第二示例通信系統(tǒng)的方框圖。
圖3示出了兩個(gè)固定系統(tǒng)之間的第三示例通信系統(tǒng)的方框圖。
圖4示出了用于實(shí)現(xiàn)圖1通信系統(tǒng)的示例數(shù)據(jù)交換集的消息交換圖,其中,用戶(hù)是數(shù)據(jù)交換的發(fā)起者。
圖5示出了用于實(shí)現(xiàn)圖1通信系統(tǒng)的示例性數(shù)據(jù)交換集的消息交換圖,其中,服務(wù)提供商是數(shù)據(jù)交換的發(fā)起者。
圖6示出了用于執(zhí)行圖4步驟、在用戶(hù)軟件內(nèi)的步驟的數(shù)據(jù)流圖,其中,用戶(hù)是密鑰交換的發(fā)起者。
圖7示出了用于執(zhí)行圖4步驟、在服務(wù)軟件內(nèi)的步驟的數(shù)據(jù)流圖,其中,用戶(hù)是密鑰交換的發(fā)起者。
圖8示出了在圖1、2和3所示的環(huán)境中重新產(chǎn)生另一密鑰時(shí),服務(wù)用戶(hù)重置密鑰序列的步驟的數(shù)據(jù)流圖。
圖9示出了在圖1、2和3所示的環(huán)境中重新產(chǎn)生另一密鑰時(shí),服務(wù)提供商重置密鑰序列所需步驟的數(shù)據(jù)流圖。
具體實(shí)施例方式
參照?qǐng)D1,示出了固定和無(wú)線(xiàn)系統(tǒng)之間的第一示例通信系統(tǒng)的方框圖。該總纜圖示出了使用本發(fā)明網(wǎng)絡(luò)環(huán)境。該圖示出了本發(fā)明的示例實(shí)施例,并且集中在包括無(wú)線(xiàn)移動(dòng)設(shè)備的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)上。該圖中有提供服務(wù)的系統(tǒng)20和22、以及使用服務(wù)的系統(tǒng)30和32。在服務(wù)提供(這里也稱(chēng)為服務(wù)提供商)與服務(wù)用戶(hù)之間有一個(gè)或多個(gè)網(wǎng)絡(luò)、以及實(shí)現(xiàn)兩個(gè)系統(tǒng)之間數(shù)據(jù)流的一個(gè)或多個(gè)連接。
現(xiàn)在轉(zhuǎn)向圖1,服務(wù)提供20或22可以是向用戶(hù)提供服務(wù)的許多可能的計(jì)算機(jī)。對(duì)于本領(lǐng)域的技術(shù)人員,一些著名的服務(wù)提供商可以是互聯(lián)網(wǎng)服務(wù)提供(ISP)或應(yīng)用服務(wù)提供(ASP)局內(nèi)互聯(lián)網(wǎng)上的計(jì)算機(jī)。服務(wù)提供20和22還可以是在如銀行、股票經(jīng)紀(jì)公司、保險(xiǎn)經(jīng)紀(jì)公司或一些其它面向服務(wù)的公司等私營(yíng)或公共公司內(nèi)運(yùn)行的一臺(tái)或多臺(tái)計(jì)算機(jī)。服務(wù)提供20或22還可以作為世界范圍操作的計(jì)算機(jī)集群的一部分而運(yùn)行,構(gòu)成統(tǒng)一描述、發(fā)現(xiàn)和集成集群(UDDI集群)。所有這些服務(wù)提供20和22中的共同要素在于,這些服務(wù)提供20和22需要建立與用戶(hù)之間的安全數(shù)據(jù)信道。在UDDI的情況下,可能需要安全關(guān)系,以交換私用服務(wù)列表,或者甚至允許UDDI來(lái)代理服務(wù)提供。
可以按照多種不同方式來(lái)對(duì)移動(dòng)設(shè)備和服務(wù)主機(jī)進(jìn)行尋址。在一些實(shí)施例中,可以使用IP(因特網(wǎng)協(xié)議)地址進(jìn)行尋址。在其它實(shí)施例中,可以通過(guò)電子郵件地址對(duì)主機(jī)系統(tǒng)進(jìn)行尋址。在另一實(shí)施例中,目的地地址可以是主機(jī)系統(tǒng)內(nèi)移動(dòng)設(shè)備用戶(hù)的電子郵件地址。
本領(lǐng)域技術(shù)人員將會(huì)理解,服務(wù)用戶(hù)30和32可以是移動(dòng)超文本傳輸協(xié)議(HTTP)瀏覽器、移動(dòng)無(wú)線(xiàn)應(yīng)用協(xié)議(WAP)瀏覽器、基于專(zhuān)有傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)的應(yīng)用程序或一些專(zhuān)有合作解決方案。在該領(lǐng)域中,存在迅速發(fā)展的新方法,例如,包括針對(duì)蜂窩電話(huà)和個(gè)人數(shù)字助理(PDA)等小型無(wú)線(xiàn)移動(dòng)設(shè)備的新Java 2Micro Edition(J2ME)解決方案。對(duì)于使用J2ME的設(shè)備,通過(guò)服務(wù)提供附著并下載軟件的選擇變得很平常。類(lèi)似地,服務(wù)提供20和22可以基于HTTP網(wǎng)服務(wù)器解決方案、Java企業(yè)解決方案、基于無(wú)線(xiàn)標(biāo)記語(yǔ)言(WML)的服務(wù)提供或?yàn)樘囟康亩鴦?chuàng)建的一些專(zhuān)有服務(wù)解決方案。
要理解,這里所指的移動(dòng)系統(tǒng)和主機(jī)系統(tǒng)的每一個(gè)都可以包括一個(gè)或多個(gè)各自的存儲(chǔ)器(例如,包含處理指令)、以及一個(gè)或多個(gè)各自的處理單元,例如,那些常規(guī)已知的通用處理單元、和/或諸如專(zhuān)用集成電路(ASIC)和現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)之類(lèi)的專(zhuān)用處理單元,其中,可以配置(例如,使用適合的軟件和/或固件指令編程,和/或使用專(zhuān)用硬件電路制作)處理單元,以執(zhí)行這里所述的方法。這些系統(tǒng)中的每一個(gè)還可以包括任何適合的接口,如那些常規(guī)已知的,這些接口可以與單獨(dú)的處理單元相結(jié)合,進(jìn)行操作,以使與其它系統(tǒng)的通信更加便利。
通信路徑中的端點(diǎn)通過(guò)一個(gè)或多個(gè)數(shù)據(jù)網(wǎng)絡(luò)相連,這些數(shù)據(jù)網(wǎng)絡(luò)允許交換數(shù)據(jù)、語(yǔ)音、視頻、音樂(lè)、照片或者可以通過(guò)數(shù)據(jù)通信信道交換的任何其它數(shù)字媒體。包含于本示例中的兩個(gè)主要網(wǎng)絡(luò)是廣域網(wǎng)(WAN)26,最普遍的是互聯(lián)網(wǎng),以及無(wú)線(xiàn)網(wǎng)絡(luò)28。無(wú)線(xiàn)網(wǎng)絡(luò)28可以是GSM/GPRS網(wǎng)絡(luò)、CDMA/1XRTT網(wǎng)絡(luò)、CDMA2000網(wǎng)絡(luò)、如EDGE或UMTS之類(lèi)的第三代網(wǎng)絡(luò)、或者許多很快可用的其它公共無(wú)線(xiàn)網(wǎng)絡(luò)。在示例系統(tǒng)中,使用如ISDN、T1、以太網(wǎng)(陸地線(xiàn)路和802.11)、幀中繼、ATM、ADSL或一些其它高速互聯(lián)網(wǎng)連接之類(lèi)的鏈路24,將這些網(wǎng)絡(luò)與主機(jī)服務(wù)10b連接。隨著更大量的數(shù)據(jù)交換,很明顯,需要改善安全性,并使其更加可靠,防止黑客和竊聽(tīng)者的攻擊。本發(fā)明使用這些現(xiàn)有數(shù)據(jù)通信路徑,提供高級(jí)的基于口令的認(rèn)證。這種安全等級(jí)提供了更大確信,確信任何通信數(shù)據(jù)的接收方正是預(yù)期的實(shí)體。在主機(jī)系統(tǒng)服務(wù)提供22與移動(dòng)設(shè)備32上的服務(wù)用戶(hù)之間,示出了針對(duì)數(shù)據(jù)通信路徑36的一個(gè)實(shí)施例。在UDDI服務(wù)提供20與移動(dòng)設(shè)備30上的服務(wù)用戶(hù)之間,示出了針對(duì)數(shù)據(jù)通信路徑40的另一實(shí)施例。
在一個(gè)實(shí)施例中,主機(jī)系統(tǒng)服務(wù)提供22具有與移動(dòng)設(shè)備32的用戶(hù)進(jìn)行的帶外通信34(即,在任何適合的安全信道上的通信)。帶外通信路徑34用于交換共享秘密、避免需要變得安全的不安全路徑。由于UDDI服務(wù)云提供特定安全等級(jí),所以UDDI服務(wù)云可以用于定位服務(wù),并接收帶有最終目的地服務(wù)的帶外共享秘密。以下是帶外通信路徑34和38的一些示例(a)移動(dòng)設(shè)備用戶(hù)30或32和主機(jī)系統(tǒng)20或22處的運(yùn)營(yíng)商建立彼此之間的電話(huà)通話(huà),以交換共享秘密。然后將秘密輸入每一個(gè)系統(tǒng),并用在創(chuàng)建加密密鑰的過(guò)程中。
(b)移動(dòng)設(shè)備用戶(hù)30或32無(wú)線(xiàn)地、或通過(guò)有線(xiàn)網(wǎng)絡(luò)與安全網(wǎng)站20或22連接,并請(qǐng)求密鑰。接收密鑰,并將其手動(dòng)輸入移動(dòng)設(shè)備30或32。主機(jī)系統(tǒng)20或22可以從網(wǎng)絡(luò)服務(wù)器自動(dòng)接收密鑰,或者還可以手動(dòng)輸入密鑰。在一些實(shí)施例中,在請(qǐng)求共享密鑰之后,自動(dòng)產(chǎn)生記錄。
(c)移動(dòng)設(shè)備30或32的用戶(hù)請(qǐng)求服務(wù),主機(jī)系統(tǒng)20或22通過(guò)電子郵件,將共享秘密郵寄到已知在安全區(qū)域的用戶(hù)的公司郵箱。用戶(hù)從電子郵箱中獲取共享秘密,并將其手動(dòng)輸入移動(dòng)設(shè)備30或32。
(d)移動(dòng)設(shè)備30或32的用戶(hù)作出請(qǐng)求服務(wù),服務(wù)20或22處的運(yùn)營(yíng)商產(chǎn)生共享秘密,并將該共享秘密給予已知為可信任和安全的特定人。此人可以是給定組群的秘書(shū)或管理員;理想地,此人是可以確認(rèn)發(fā)出請(qǐng)求的用戶(hù)的身份的某個(gè)人。然后,這個(gè)可信任的人將共享秘密給予移動(dòng)設(shè)備30或32的最終用戶(hù),將共享秘密手動(dòng)地輸入移動(dòng)設(shè)備30或32。
這個(gè)簡(jiǎn)短的列表顯示了有許多可信地將共享秘密給予移動(dòng)設(shè)備20b用戶(hù)的方式。這些示例帶外通信34和38的共同特點(diǎn)是,應(yīng)當(dāng)在作出的選擇中構(gòu)建或假設(shè)特定的認(rèn)證等級(jí)。優(yōu)選地,該認(rèn)證的通信路徑應(yīng)當(dāng)不同于未認(rèn)證的數(shù)據(jù)通信路徑。
一旦交換了共享秘密,則創(chuàng)建安全通信路徑的下一步驟會(huì)發(fā)生36和40。用于創(chuàng)建安全和認(rèn)證的鏈接的熟知方法之一是,使用類(lèi)似于SPEKE的強(qiáng)基于口令的加密方法。SPEKE是一種用于基于知識(shí)的認(rèn)證的加密方法,其中基于知識(shí)的認(rèn)證利用并保護(hù)易于記憶的口令,即,共享秘密。SPEKE是已知強(qiáng)口令方法中最簡(jiǎn)單的方法,它是認(rèn)證口令的Diffie-Hellman交換,其中,口令形成交換的基礎(chǔ)或“產(chǎn)生器”。(在標(biāo)準(zhǔn)Diffie-Hellman中,基礎(chǔ)通常是固定公共數(shù)字。)一旦使通過(guò)WAN26和無(wú)線(xiàn)網(wǎng)絡(luò)28的通信路徑安全,則可以發(fā)起重置密鑰序列。重置密鑰序列允許在預(yù)定數(shù)量的周或月之后, 產(chǎn)生新的密鑰集。在該重置密鑰序列期間,長(zhǎng)期加密密鑰的高級(jí)使用允許完備前向保密的實(shí)現(xiàn)。一旦認(rèn)證秘密(共享秘密)用于創(chuàng)建安全路徑,則可以在之后的日期再用于創(chuàng)建新的密鑰。通過(guò)使用本發(fā)明,密鑰重置操作不泄露先前的密鑰,以及所有先前的會(huì)話(huà)在未來(lái)都是保密的。
轉(zhuǎn)向圖2,圖2示出了根據(jù)本發(fā)明的實(shí)施例,兩個(gè)無(wú)線(xiàn)系統(tǒng)之間的示例通信系統(tǒng)的方框圖。在本實(shí)施例中,可以在兩個(gè)移動(dòng)設(shè)備之間創(chuàng)建安全路徑。在本實(shí)施例中,移動(dòng)設(shè)備1 46和移動(dòng)設(shè)備2 48交換秘密,并能夠使用該共享秘密,建立共用密鑰??梢酝ㄟ^(guò)雙方之間的電話(huà)呼叫、面對(duì)面會(huì)議,或者使用上述其它方法之一或任何其它合適方法,進(jìn)行帶外會(huì)話(huà)50。一旦共享了秘密,則可以將其手動(dòng)鍵入移動(dòng)設(shè)備46和48,并且一個(gè)站可以發(fā)起消息的交換,以創(chuàng)建共用主安全密鑰。這種實(shí)施例可以普遍用于專(zhuān)用點(diǎn)對(duì)點(diǎn)電子郵件會(huì)話(huà),還可以用于點(diǎn)對(duì)點(diǎn)安全即時(shí)消息收發(fā)數(shù)據(jù)交換。在高級(jí)使用中,提供服務(wù)的移動(dòng)設(shè)備1 46可以在移動(dòng)設(shè)備46上運(yùn)行網(wǎng)絡(luò)服務(wù)器,并提供特定形式的移動(dòng)的安全服務(wù)提供。
轉(zhuǎn)向圖3,圖3示出了根據(jù)本發(fā)明的實(shí)施例,在兩個(gè)固定系統(tǒng)之間的示例通信系統(tǒng)的方框圖。在本實(shí)施例中,在兩個(gè)主機(jī)系統(tǒng)60和62之間進(jìn)行通信。在本示例中,服務(wù)提供60和服務(wù)消費(fèi)者62進(jìn)行帶外會(huì)話(huà)66,并交換秘密密鑰。如已描述的,該帶外通信可以是電話(huà)呼叫;通過(guò)帶有安全SSL連接的瀏覽器、以產(chǎn)生和獲取密鑰的通信;或者如之前提供的一些其它適合的通信。一旦交換了密鑰,則可以使用類(lèi)似于SPEKE的強(qiáng)基于口令的密鑰產(chǎn)生方法來(lái)產(chǎn)生加密密鑰。在本示例中,交換密鑰的通信路徑可以通過(guò)類(lèi)似互聯(lián)網(wǎng)26的WAN網(wǎng)絡(luò)、通過(guò)內(nèi)部?jī)?nèi)聯(lián)網(wǎng)64、或者諸如或類(lèi)似于802.11或藍(lán)牙鏈接之類(lèi)的其它適合的通信路徑。在這些后面的示例中,服務(wù)消費(fèi)者62可以運(yùn)行膝上電腦或掌上電腦,并已可以有限地訪(fǎng)問(wèn)內(nèi)聯(lián)網(wǎng),但是還需要或要求更強(qiáng)的安全性。在本領(lǐng)域眾所周知的是,802.11b缺乏大多數(shù)公司內(nèi)部大型計(jì)算機(jī)部門(mén)所需的魯棒的安全要求。本實(shí)施例示出了,可以在使用基于口令的認(rèn)證機(jī)制時(shí),使用本發(fā)明來(lái)提供完備前向保密的選項(xiàng)。一旦交換合適消息以創(chuàng)建主密鑰,數(shù)據(jù)通信路徑68可以用于高度安全地秘密交換所有格式的數(shù)據(jù)。
轉(zhuǎn)向圖4,圖4示出了消息交換圖,該圖示出了用于產(chǎn)生和驗(yàn)證主密鑰的示例數(shù)據(jù)交換集,其中,用戶(hù)是數(shù)據(jù)交換的發(fā)起者。本示例示出了示例步驟和服務(wù)消費(fèi)者100(用戶(hù))與服務(wù)提供商102之間的消息交換。在本示例中,認(rèn)為連接的一端是服務(wù)消費(fèi)者或用戶(hù)100,已經(jīng)標(biāo)記為系統(tǒng)A。連接的另一端看作是服務(wù)提供商(也稱(chēng)作服務(wù)提供)或主機(jī)系統(tǒng)102,已經(jīng)標(biāo)記為系統(tǒng)B。在本示例中,用戶(hù)100發(fā)起數(shù)據(jù)交換,以創(chuàng)建安全連接。在系統(tǒng)A和系統(tǒng)B之間是在如圖1示出的一個(gè)或多個(gè)數(shù)據(jù)通信網(wǎng)絡(luò)上的消息交換。與圖1、2和3中所示的相似,用戶(hù)可以是移動(dòng)設(shè)備30、32或48、或者主機(jī)系統(tǒng)62。同樣,服務(wù)提供商可以是移動(dòng)設(shè)備46或主機(jī)系統(tǒng)20、22或60。
如步驟104所示,用戶(hù)100通過(guò)上述用于帶外通信的方法之一、或者通過(guò)的另一合適方法,聯(lián)系已知服務(wù)提供商102,交換共享秘密。服務(wù)提供商102想要方便這次交換,并發(fā)布秘密口令或簡(jiǎn)單、易于記憶的口令串(步驟106)。通過(guò)這種機(jī)制,在雙方之間產(chǎn)生并交換共享秘密。用戶(hù)100接收并保存該秘密,以幫助產(chǎn)生加密密鑰??蛇x地,服務(wù)提供商102可以從用戶(hù)100處接收秘密口令(共享秘密)。在任何一種情況下,服務(wù)提供商保存有關(guān)該用戶(hù)的共享秘密。
在交換共享秘密之后,用戶(hù)100發(fā)起(在本示例中)產(chǎn)生密鑰對(duì)(步驟108)和向服務(wù)提供商傳輸密鑰信息(步驟110)的步驟。具體地,用戶(hù)100在步驟108產(chǎn)生長(zhǎng)期加密密鑰對(duì),即加密密鑰的公共和私用部分。用戶(hù)100還在步驟108產(chǎn)生短期認(rèn)證密鑰對(duì)。由于短期密鑰對(duì)是使用如下進(jìn)一步論述的共享秘密產(chǎn)生的,所以在本示例中,將短期密鑰對(duì)稱(chēng)為認(rèn)證密鑰對(duì)。
一旦產(chǎn)生了用戶(hù)的短期和長(zhǎng)期密鑰對(duì),則在步驟110,將公共密鑰傳輸至服務(wù)提供商102,以進(jìn)一步產(chǎn)生最終的主密鑰(也稱(chēng)為主秘密)。由于只有發(fā)布共享秘密的主機(jī)系統(tǒng)102可以理解并使用短期認(rèn)證密鑰來(lái)產(chǎn)生主密鑰,所以該傳輸在不安全鏈接上進(jìn)行。一旦服務(wù)提供商接收到用戶(hù)的公共密鑰(步驟112),則驗(yàn)證用戶(hù),并重新調(diào)用(recall)針對(duì)該用戶(hù)的共享秘密112。一旦驗(yàn)證了用戶(hù),并重新調(diào)用了用戶(hù)的共享秘密,服務(wù)提供商102使用共享秘密,產(chǎn)生自己的短期認(rèn)證密鑰對(duì)(步驟114)。服務(wù)提供商102還產(chǎn)生自己的長(zhǎng)期加密密鑰對(duì)(步驟114)。如步驟116所示,服務(wù)提供商102使用由用戶(hù)100產(chǎn)生的公共密鑰,并使用共享秘密,產(chǎn)生主加密密鑰(或主秘密)。共享秘密提供要信任交換的信息所必需的認(rèn)證。向用戶(hù)發(fā)送服務(wù)提供商的短期公共認(rèn)證密鑰、服務(wù)提供商的長(zhǎng)期公共長(zhǎng)期加密密鑰、由服務(wù)提供商使用最新產(chǎn)生的主加密密鑰而計(jì)算的密鑰確認(rèn)值、以及一些已知串(步驟116)。
用戶(hù)接收從服務(wù)提供商102處發(fā)送的、包括服務(wù)提供商的短期和長(zhǎng)期公共密鑰的信息(步驟118),產(chǎn)生用戶(hù)自己的主密鑰(步驟120)。用戶(hù)使用該主密鑰,驗(yàn)證密鑰確認(rèn)值(步驟120)。在本示例中,密鑰確認(rèn)值可以是由用戶(hù)和服務(wù)提供商一致同意的主密鑰和服務(wù)名稱(chēng)、或一些其它已知串的散列(hash)。如果密鑰確認(rèn)值未得到驗(yàn)證,則用戶(hù)100創(chuàng)建的主密鑰不可信,并假設(shè)有人試圖泄露該連接。如果由用戶(hù)100產(chǎn)生的主加密密鑰看上去有效,則用戶(hù)將最終的密鑰確認(rèn)值發(fā)送回服務(wù)提供商(步驟122)。服務(wù)提供商接收該消息,驗(yàn)證該密鑰確認(rèn)值,將該用戶(hù)標(biāo)記為就緒(步驟124)。從服務(wù)提供商看來(lái),這允許進(jìn)行完全數(shù)據(jù)交換(步驟128)。在用戶(hù)方,一旦發(fā)送了驗(yàn)證消息,傳輸會(huì)稍微暫停,然后可以開(kāi)始完全數(shù)據(jù)交換(步驟126)。
傳輸可以包括電子郵件消息,諸如XML(可擴(kuò)展標(biāo)記語(yǔ)言)、WML(無(wú)線(xiàn)標(biāo)記語(yǔ)言)之類(lèi)的基于HTTP(超文本傳輸協(xié)議)的通信業(yè)務(wù),或者其它類(lèi)型的通信業(yè)務(wù)。
在一些實(shí)施例中,在將最終確認(rèn)值從移動(dòng)設(shè)備發(fā)送至主機(jī)系統(tǒng)之前,該主機(jī)系統(tǒng)能夠在發(fā)送給移動(dòng)設(shè)備的消息中,發(fā)送數(shù)據(jù)有效載荷。該消息中的有效載荷可以是定義主機(jī)系統(tǒng)處的主機(jī)服務(wù)的服務(wù)預(yù)定(book)條目。在一些實(shí)施例中,服務(wù)預(yù)定條目可以是定義所訪(fǎng)問(wèn)的主機(jī)系統(tǒng)處的主機(jī)服務(wù)屬性的UDDI服務(wù)條目。
要理解,這里描述的由第一方(例如,用戶(hù))產(chǎn)生的長(zhǎng)期加密密鑰對(duì)更一般地是第一密鑰對(duì)的示例,其中,公共密鑰部分和私用密鑰部分可以稱(chēng)為第一公共密鑰和第一私用密鑰。類(lèi)似地,這里描述的由第一方(例如,用戶(hù))產(chǎn)生的短期認(rèn)證密鑰對(duì)(也稱(chēng)為短期加密密鑰對(duì))更一般地是第二密鑰對(duì)的示例,其中,公共密鑰部分和私用密鑰部分可以稱(chēng)為第二公共密鑰和第二私用密鑰。此外,這里描述的由第二方(例如,服務(wù)提供商)產(chǎn)生的長(zhǎng)期加密密鑰對(duì)更一般地是第三密鑰對(duì)的示例,其中,公共密鑰部分和私用密鑰部分可以稱(chēng)為第三公共密鑰和第三私用密鑰。類(lèi)似地,這里描述的由第二方(例如,服務(wù)提供商)產(chǎn)生的短期加密密鑰對(duì)更一般地是第四密鑰對(duì)的示例,其中,公共密鑰部分和私用密鑰部分可以稱(chēng)為第四公共密鑰和第四私用密鑰。產(chǎn)生第一和第二密鑰對(duì)的第一方可以是如在以上示例中描述的用戶(hù),或者是如在以下示例中描述的服務(wù)提供商。
轉(zhuǎn)向圖5,圖5示出了消息交換圖,該圖示出了用于產(chǎn)生和驗(yàn)證主密鑰的示例數(shù)據(jù)交換集,其中,服務(wù)提供商是數(shù)據(jù)交換的發(fā)起者。除了服務(wù)提供商進(jìn)行第一步驟之外,圖5內(nèi)的步驟實(shí)質(zhì)上與圖4內(nèi)的步驟相對(duì)應(yīng)。本示例突出,用戶(hù)或服務(wù)提供商均可以是數(shù)據(jù)交換的發(fā)起者。在本示例中,連接的一端看作用戶(hù)100,標(biāo)記為系統(tǒng)A-服務(wù)消費(fèi)者。連接的另一端看作服務(wù)102,標(biāo)記為系統(tǒng)B-服務(wù)提供商。在系統(tǒng)A 100和系統(tǒng)B 102之間,是在諸如圖1、2和3所示的一個(gè)或多個(gè)數(shù)據(jù)通信網(wǎng)絡(luò)26、28和64上的消息交換。類(lèi)似地,如圖1、2和3所示,用戶(hù)可以是移動(dòng)設(shè)備30、32或48,或者主機(jī)系統(tǒng)20、22、46或60。
如步驟200/202所示,服務(wù)提供商102聯(lián)系用戶(hù)100(在本示例中),以交換共享秘密??蛇x地,用戶(hù)可以發(fā)起該通信??紤]主機(jī)公司102內(nèi)的管理員可以聯(lián)系用戶(hù)100,并通知該用戶(hù),該用戶(hù)必須對(duì)提供的共享秘密執(zhí)行特定動(dòng)作。使用從已經(jīng)提供的帶外通信的擴(kuò)展列表中選擇的任何適合的方法、或者一些其它適合的方法,產(chǎn)生和交換共享秘密(步驟200和202)。用戶(hù)組件接收并保存共享秘密,以幫助產(chǎn)生加密密鑰??蛇x地,服務(wù)提供商102可以從用戶(hù)100處接收秘密口令(共享秘密)。在任何一種情況下,服務(wù)提供商保存關(guān)于用戶(hù)的共享秘密。
在交換了共享秘密之后,服務(wù)提供商102可以發(fā)起(在本示例中)產(chǎn)生密鑰對(duì)(步驟204)和將密鑰信息傳輸至用戶(hù)100(步驟206)的步驟。具體地,服務(wù)提供商102產(chǎn)生短期認(rèn)證密鑰對(duì)和長(zhǎng)期加密密鑰對(duì)(步驟204)。這與圖4中的步驟108相對(duì)應(yīng)。
一旦產(chǎn)生服務(wù)提供商的短期和長(zhǎng)期密鑰對(duì),則將公共密鑰傳輸至用戶(hù)(步驟206),以進(jìn)一步產(chǎn)生最終的主密鑰(也稱(chēng)為主秘密)。由于只有共享秘密的所有者能夠理解并使用短期認(rèn)證密鑰來(lái)產(chǎn)生主密鑰,所以可以在不安全鏈路上進(jìn)行該傳輸。用戶(hù)接收服務(wù)提供商的公共密鑰,并檢查存儲(chǔ)器,以驗(yàn)證服務(wù)創(chuàng)建是預(yù)期的,而且已在存儲(chǔ)器中保存了共享秘密(步驟208)。用戶(hù)重新調(diào)用針對(duì)服務(wù)提供商102的共享秘密,并使用該共享秘密產(chǎn)生短期認(rèn)證密鑰對(duì)(步驟210)。用戶(hù)還產(chǎn)生長(zhǎng)期加密密鑰對(duì)(步驟210)。如步驟212所示,用戶(hù)100使用由服務(wù)提供商102產(chǎn)生和發(fā)送的公共密鑰,并使用共享秘密,產(chǎn)生主加密密鑰(或主秘密)。在產(chǎn)生主密鑰之后,用戶(hù)100還通過(guò)將已知串(即,對(duì)自身和服務(wù)提供是已知的)與主密鑰組合,來(lái)產(chǎn)生密鑰確認(rèn)值(步驟212)。將用戶(hù)的短期公共認(rèn)證密鑰、長(zhǎng)期公共加密密鑰和密鑰確認(rèn)值發(fā)送至服務(wù)提供商(步驟212)。
服務(wù)提供商接收用戶(hù)的公共密鑰和密鑰確認(rèn)值,驗(yàn)證信息的發(fā)送方(步驟214),還重新調(diào)用針對(duì)該用戶(hù)的共享秘密。服務(wù)提供商使用接收到的用戶(hù)公共密鑰值,重新調(diào)用自己保存的針對(duì)該用戶(hù)的私用密鑰值(步驟214)。使用接收的用戶(hù)公共密鑰和服務(wù)提供商保存的私用密鑰,服務(wù)提供商現(xiàn)在可以產(chǎn)生主密鑰(步驟216)。在產(chǎn)生主密鑰之后,服務(wù)提供商102通過(guò)使用已知串和最新創(chuàng)建的主密鑰來(lái)計(jì)算自身的密鑰確認(rèn)值、并將其與接收的密鑰確認(rèn)值進(jìn)行比較,來(lái)驗(yàn)證密鑰確認(rèn)值(步驟216)。如果密鑰確認(rèn)值未得到驗(yàn)證,則創(chuàng)建的主密鑰不可信,并且假設(shè)有人試圖泄露該連接。如果的確驗(yàn)證了密鑰確認(rèn)值,則認(rèn)為主加密密鑰有效,以及服務(wù)提供商102將最終的密鑰確認(rèn)值發(fā)送回用戶(hù)(步驟218)。用戶(hù)接收該消息(步驟220),驗(yàn)證該密鑰確認(rèn)值,并將該用戶(hù)標(biāo)記為就緒(步驟220)。從用戶(hù)看來(lái),這允許進(jìn)行完全數(shù)據(jù)交換(步驟222)。在服務(wù)提供方,一旦發(fā)送了驗(yàn)證消息,則傳輸會(huì)暫停,然后可以開(kāi)始完全數(shù)據(jù)交換(步驟224)。在大多數(shù)情況下,將會(huì)是用戶(hù)發(fā)起首次數(shù)據(jù)交換;所以向用戶(hù)發(fā)送確認(rèn)確實(shí)具有一些優(yōu)點(diǎn)。
傳輸可以包括電子郵件消息,諸如XML(可擴(kuò)展標(biāo)記語(yǔ)言)、WML(無(wú)線(xiàn)標(biāo)記語(yǔ)言)之類(lèi)的基于HTTP(超文本傳輸協(xié)議)的通信業(yè)務(wù),或者其它類(lèi)型的通信業(yè)務(wù)。
圖6是在用戶(hù)是密鑰交換的發(fā)起者時(shí),由用戶(hù)(例如,在用戶(hù)軟件中)執(zhí)行的用于實(shí)現(xiàn)圖4所示示例方式的示例步驟的數(shù)據(jù)流圖。當(dāng)用戶(hù)發(fā)現(xiàn)新服務(wù)并想進(jìn)行訪(fǎng)問(wèn)(步驟300)時(shí),第一步驟發(fā)生。這可以通過(guò)類(lèi)似于UDDI的服務(wù)、通過(guò)公司內(nèi)聯(lián)網(wǎng)服務(wù)、通過(guò)瀏覽萬(wàn)維網(wǎng)、通過(guò)與朋友的會(huì)話(huà)或者通過(guò)電話(huà)呼叫進(jìn)行。一旦服務(wù)和用戶(hù)已經(jīng)連接,則交換僅是二者知道的共享秘密(步驟302)。已詳細(xì)描述了用于該交換的示例方法。稍后,將像PIN(個(gè)人標(biāo)識(shí)號(hào)碼)一樣使用該共享秘密,進(jìn)行用戶(hù)和服務(wù)的相互認(rèn)證。當(dāng)用戶(hù)準(zhǔn)備訪(fǎng)問(wèn)服務(wù)時(shí),用戶(hù)(例如,以軟件形式)產(chǎn)生針對(duì)所請(qǐng)求的服務(wù)的長(zhǎng)期密鑰對(duì)(步驟304)。該長(zhǎng)期密鑰對(duì)是未來(lái)密鑰重置操作期間所用的密鑰值之一。對(duì)于在本申請(qǐng)剩余部分(remainder)中的所有數(shù)學(xué)計(jì)算,假設(shè)該事務(wù)涉及的所有成員方都事先就群G、大小order(G)、以及G的元素g達(dá)成一致,使得q=order(g)是較大的素?cái)?shù)。G和g可以是公知的,即,不需要保密。創(chuàng)建密鑰值的示例數(shù)學(xué)計(jì)算如下(使用SPEKE方法),盡管以下示出的示例計(jì)算利用了乘法群,但是很明顯,可以使用加法群執(zhí)行適合的計(jì)算選取長(zhǎng)期密鑰對(duì)(例如,由用戶(hù)進(jìn)行)
選取隨機(jī)數(shù)a,1<a<q-1;計(jì)算A=gn;如果A=1,則繼續(xù)選擇不同的a,直至A◇1。
值‘A’是用戶(hù)的長(zhǎng)期公共密鑰(或者,更一般地,第一公共密鑰),以及值‘a(chǎn)’是用戶(hù)的長(zhǎng)期私用密鑰(或者,更一般地,第一私用密鑰)。
在該示例中,所選的數(shù)字‘a(chǎn)’大于1并小于素?cái)?shù)q-1。一旦選擇了私用密鑰(即,‘a(chǎn)’),并產(chǎn)生了公共密鑰(即,‘A’),則安全地存儲(chǔ)私用密鑰‘a(chǎn)’,并最終將公共密鑰‘A’傳輸至服務(wù)提供商。
用戶(hù)還根據(jù)共享秘密‘s’,產(chǎn)生短期認(rèn)證密鑰對(duì)(步驟306)。使用SPEKE密鑰產(chǎn)生方法之后的類(lèi)似的計(jì)算,該步驟的示例數(shù)學(xué)計(jì)算是(例如,使用之前針對(duì)q和‘a(chǎn)’的相同假設(shè)(現(xiàn)在針對(duì)x))選取短期認(rèn)證密鑰對(duì)(例如,由用戶(hù)進(jìn)行)選取隨機(jī)數(shù)x,1<x<q-1;計(jì)算X=sx;如果X=1,則繼續(xù)選擇不同的x,直至X◇1。
值‘X’是用戶(hù)的短期公共密鑰(或者,更一般地,第二公共密鑰),以及值‘x’是用戶(hù)的短期私用密鑰(或者,更一般地,第二私用密鑰)。值‘s’是共享秘密。
本示例中,在1與素?cái)?shù)q-1之間選擇‘x’。然后,如步驟308所示,用戶(hù)軟件將公共密鑰值‘A’和‘X’發(fā)送至服務(wù)提供(服務(wù)提供商)。如圖7所示,該步驟前進(jìn)至(A),其中,服務(wù)提供接收值并執(zhí)行附加計(jì)算。如以下結(jié)合圖7進(jìn)一步的討論,一旦服務(wù)提供完成了這些計(jì)算,則將類(lèi)似的自身公共密鑰值‘B’和‘Y’對(duì)與密鑰確認(rèn)值一起返回給用戶(hù),用于驗(yàn)證(步驟312)。在圖6中,這示為來(lái)自圖7的輸入(B)示出。在該點(diǎn),用戶(hù)能夠使用‘B’和‘Y’,例如,利用高級(jí)SPEKE計(jì)算來(lái)創(chuàng)建主密鑰。通過(guò)共同使用‘B’和‘Y’來(lái)產(chǎn)生主密鑰,加密方法允許實(shí)現(xiàn)完備前向保密。這在稍后示出的重置密鑰序列中更加明顯可見(jiàn)。示例的主密鑰計(jì)算如下
計(jì)算主密鑰(例如,由用戶(hù)進(jìn)行)k1=Y(jié)x;k2=Ba;檢查是否k1,k2?。?,1,或者order(G)-1;k=hash(k1‖k2),其中,‖是級(jí)聯(lián)(concatentation)函數(shù)。
這里,‘x’是用戶(hù)的短期私用認(rèn)證密鑰(或者,更一般地,第二私用密鑰),以及‘Y’是接收到的服務(wù)提供的短期公共認(rèn)證密鑰(或者,更一般地,第四公共密鑰)。此外,‘a(chǎn)’是用戶(hù)長(zhǎng)期私用加密密鑰(或者,更一般地,第一私用密鑰),以及‘B’是服務(wù)提供的接收的長(zhǎng)期公共加密密鑰(或者,更一般地,第三公共密鑰)。
值‘k’代表可以用于在用戶(hù)與服務(wù)之間加密數(shù)據(jù)的主密鑰。值‘k’是中間密鑰‘k1’(根據(jù)短期認(rèn)證密鑰)和‘k2’(根據(jù)長(zhǎng)期加密密鑰)的組合。可以在步驟314,對(duì)中間密鑰值k1和k2上進(jìn)行檢查,以驗(yàn)證這兩個(gè)值不是0,1或order(G)-1;否則,表示有人試圖進(jìn)行安全攻擊。如果密鑰被強(qiáng)制到全部可能密鑰的小子集,則會(huì)導(dǎo)致攻擊發(fā)生。如果攻擊者發(fā)送X=0或Y=0,則通信方會(huì)得到產(chǎn)生的密鑰值0。這種快速檢查將確保不發(fā)起攻擊。然而,如果k1或k2的值落入這些小子集群之一內(nèi),針對(duì)密鑰的協(xié)商可能中止(步驟316)。
如果未檢測(cè)到子集攻擊,則用戶(hù)可以使用主密鑰‘k’來(lái)測(cè)試由服務(wù)提供發(fā)送的密鑰確認(rèn)值(步驟318)。產(chǎn)生密鑰確認(rèn)值的一種方法是,使用諸如公共密鑰‘A’中的字節(jié)之類(lèi)的已知串來(lái)對(duì)密鑰進(jìn)行散列計(jì)算。測(cè)試密鑰確認(rèn)值的示例計(jì)算可以是測(cè)試密鑰確認(rèn)值“接收的hA”=hA=hash(k‖公共密鑰“A”的字節(jié)),其中“接收的hA”來(lái)自服務(wù)提供,以及‘k’是本地主密鑰。
如果針對(duì)‘A’的軟件產(chǎn)生密鑰確認(rèn)值與接收的密鑰確認(rèn)值不匹配(步驟320),則該值是不正確的(步驟322)。不正確的密鑰確認(rèn)值可以表示中間人攻擊,或者正在嘗試一些其它攻擊。在這種情況下,將會(huì)中止操作(步驟322)。如果兩個(gè)確認(rèn)值匹配,則假設(shè)已經(jīng)建立了完全安全的鏈接(步驟324)。將該鏈接標(biāo)記為有效的,短暫的時(shí)延之后,該鏈接將用于通信(步驟324)。用戶(hù)使用最新產(chǎn)生的認(rèn)證密鑰,將該值發(fā)送回服務(wù)(步驟326)。這在標(biāo)記(C)之后返回圖6。在暫停片刻,即,確保服務(wù)提供接收到確認(rèn)之后,用戶(hù)可以開(kāi)始交換數(shù)據(jù)(步驟328)。
任何適合的加密和解密方法都可以用于使用主密鑰,對(duì)消息加密和解密,例如,類(lèi)似于高級(jí)加密標(biāo)準(zhǔn)(AES)(Federal InformationProcessing Standards Publication 197,2001年11月26日,NationalInstitute of Standards and Technology)的對(duì)稱(chēng)密鑰加密/解密方法。
圖7是在用戶(hù)是如圖4所示的密鑰交換的發(fā)起者時(shí),由服務(wù)提供(例如,在服務(wù)提供商軟件內(nèi))執(zhí)行的用于實(shí)現(xiàn)圖4所示示例方法的示例步驟的數(shù)據(jù)流圖。當(dāng)用戶(hù)‘帶外’地聯(lián)系服務(wù)提供商,以交換共享秘密(步驟398)時(shí),開(kāi)始該過(guò)程。這與用戶(hù)設(shè)備上的圖6中的步驟302相對(duì)應(yīng)。已經(jīng)多次討論了該帶外交換,還提供了用戶(hù)和服務(wù)自報(bào)身份的認(rèn)證等級(jí)。一旦完成該交換,用戶(hù)在任何時(shí)間點(diǎn)自由聯(lián)系服務(wù),以開(kāi)始該過(guò)程。從圖6用戶(hù)流程圖中到達(dá)的消息(A)示出,一旦用戶(hù)聯(lián)系主機(jī)服務(wù),則認(rèn)證新用戶(hù)(步驟400)。由于服務(wù)提供商可能擁有成百上千個(gè)相在任何時(shí)候開(kāi)始使用其服務(wù)的用戶(hù),所以在用戶(hù)決定他想開(kāi)始服務(wù)之前,服務(wù)提供商是被動(dòng)的。即使已經(jīng)交換了共享秘密,也幾乎沒(méi)有意義,如果用戶(hù)不能在那段時(shí)間內(nèi)連接,則甚至可能在特定天數(shù)之后,清除舊的共享秘密。消息的到達(dá)允許服務(wù)提供商發(fā)現(xiàn)新用戶(hù),并驗(yàn)證共享秘密存在(步驟400)。消息中有基于共享秘密的用戶(hù)的公共短期認(rèn)證密鑰(步驟400)。消息還包含用戶(hù)的公共長(zhǎng)期加密密鑰(步驟400),這可以在圖7和圖8中的重置密鑰操作發(fā)生時(shí),用于創(chuàng)建完備前向保密的實(shí)現(xiàn)。
服務(wù)提供以與用戶(hù)創(chuàng)建長(zhǎng)期加密密鑰對(duì)相似的方式,產(chǎn)生針對(duì)該用戶(hù)的長(zhǎng)期加密密鑰對(duì)(步驟402)。創(chuàng)建服務(wù)提供的長(zhǎng)期加密密鑰對(duì)的示例數(shù)學(xué)計(jì)算如下(例如,使用SPEKE方法)選取長(zhǎng)期密鑰對(duì)(例如,由服務(wù)提供商進(jìn)行)
選取隨機(jī)數(shù)b,1<b<q-1;計(jì)算B=gb;如果B=1,則繼續(xù)選擇不同的b,直至B◇1。
值‘B’是服務(wù)提供(服務(wù)提供商)的長(zhǎng)期公共密鑰(或者,更一般地,第三公共密鑰),值‘b’是服務(wù)提供的長(zhǎng)期私用密鑰(或者,更一般地,第三私用密鑰)。
在本示例中,所選的數(shù)字‘b’大于1并小于素?cái)?shù)q-1。一旦選擇了私用密鑰(即,‘b’)和產(chǎn)生了公共密鑰(即,‘B’),則安全地存儲(chǔ)私用密鑰‘b’,并最終將公共密鑰‘B’傳輸回用戶(hù),從而他可以在計(jì)算中使用該公共密鑰‘B’。
服務(wù)提供還根據(jù)共享秘密,產(chǎn)生短期認(rèn)證密鑰對(duì)(步驟404)。使用SPEKE密鑰產(chǎn)生方法之后的類(lèi)似計(jì)算,用于該步驟的示例數(shù)學(xué)計(jì)算是(例如,使用之前針對(duì)q和針對(duì)x(現(xiàn)在針對(duì)y)的相同假設(shè))選取短期認(rèn)證密鑰對(duì)(例如,由服務(wù)提供商進(jìn)行)選取隨機(jī)數(shù)y,1<y<q-1;計(jì)算Y=sy;如果Y=1,則繼續(xù)選擇不同的y,直至Y◇1。
值‘Y’是服務(wù)提供(服務(wù)提供商)的公共短期認(rèn)證密鑰(或者,更一般地,第四公共密鑰),值‘y’是服務(wù)提供的私用短期認(rèn)證密鑰(或者,更一般地,第四私用密鑰)。
在本示例中,在1與素?cái)?shù)q-1之間選擇‘y’。公共密鑰值‘B’和‘Y’將會(huì)最終發(fā)送至用戶(hù),以產(chǎn)生用戶(hù)自己的主密鑰。
然后,服務(wù)提供使用從用戶(hù)處接收的公共密鑰‘A’和‘X’、以及剛計(jì)算的私用密鑰,產(chǎn)生主密鑰(步驟406)。通過(guò)共同使用‘A’和‘X’來(lái)創(chuàng)建主密鑰,加密方法提供了完備前向保密。為了提供完備前向保密,如果需要,實(shí)施方式還可以在任何重置密鑰序列期間,在后續(xù)密鑰的重新產(chǎn)生過(guò)程中使用私用密鑰。示例的主密鑰計(jì)算如下計(jì)算主密鑰(例如,由服務(wù)提供商進(jìn)行)
k1=Xy;k2=Ab;檢查k1,k2?。?,1,或者order(G)-1;k=hash(k1‖k2)。
這里,‘y’是服務(wù)提供的短期私用認(rèn)證密鑰(或者,更一般地,第四私用密鑰),‘X’是用戶(hù)的接收的短期公共認(rèn)證密鑰(或者,更一般地,第二公共密鑰)。此外,‘b’是服務(wù)提供的長(zhǎng)期私用密鑰(或者,更一般地,第三私用密鑰),‘A’是接收的用戶(hù)的長(zhǎng)期公共加密密鑰(或者,更一般地,第一公共密鑰)。
值‘k’代表由服務(wù)提供產(chǎn)生的主密鑰,它與由用戶(hù)產(chǎn)生的主密鑰相同。該主密鑰可以用于加密服務(wù)與用戶(hù)之間的數(shù)據(jù)。值‘k’是中間密鑰‘k1’(基于短期認(rèn)證密鑰)和‘k2’(基于長(zhǎng)期加密密鑰)的組合??梢栽诓襟E408,對(duì)中間密鑰值k1和k2進(jìn)行檢查,驗(yàn)證這兩個(gè)值不是0,1或order(G)-1;否則,表示有人試圖進(jìn)行安全攻擊。如果密鑰被強(qiáng)制到全部可能密鑰的小子集中,則導(dǎo)致攻擊發(fā)生。如果攻擊者發(fā)送X=0或Y=0,則通信方可以得到結(jié)果密鑰值0。該快速檢查將確保不發(fā)起攻擊。然而,如果k1或k2的值落入這些小子集組之一內(nèi),則可能中止針對(duì)密鑰的協(xié)商(步驟410)。
如果未檢測(cè)到子集攻擊,則服務(wù)提供可以使用主密鑰‘k’來(lái)測(cè)試由用戶(hù)發(fā)送的密鑰確認(rèn)值(步驟416)。產(chǎn)生密鑰確認(rèn)值的一種方法是,使用諸如公共密鑰‘B’中的字節(jié)之類(lèi)的已知串來(lái)對(duì)密鑰進(jìn)行散列計(jì)算。測(cè)試該串(密鑰確認(rèn)值)的示例計(jì)算可以是測(cè)試密鑰確認(rèn)值hB=hash(k‖公共密鑰“B”的字節(jié))。
然后,服務(wù)提供將會(huì)把測(cè)試字符串發(fā)送至用戶(hù),從而可以驗(yàn)證由用戶(hù)產(chǎn)生的主密鑰與由服務(wù)提供產(chǎn)生的主密鑰匹配。然后,服務(wù)提供將長(zhǎng)期公共加密密鑰‘B’、短期公共認(rèn)證密鑰‘Y’(或者,第四公共密鑰)以及認(rèn)證字符串hB發(fā)送至用戶(hù)(步驟414)。
一旦用戶(hù)已經(jīng)產(chǎn)生了自己的主密鑰‘k’,則發(fā)送回最終的密鑰確認(rèn)值,以確保服務(wù)提供知道一切都工作正常(C)。該最終步驟(C)作為步驟416中服務(wù)提供的輸入在圖7中示出。如果根據(jù)‘A’計(jì)算密鑰確認(rèn)值,并將其發(fā)送至服務(wù)提供(步驟416),則這正是測(cè)試所尋找的(步驟418)。如果密鑰確認(rèn)值與預(yù)期值不匹配,則中止操作(步驟420)。如果密鑰確認(rèn)值匹配,則假設(shè)完全雙向加密和安全的數(shù)據(jù)通信路徑存在(步驟422)。
重置密鑰數(shù)據(jù)流序列圖8是示出了在圖1、2和3所示環(huán)境中重新產(chǎn)生另一密鑰時(shí),針對(duì)重置密鑰序列的用戶(hù)內(nèi)(例如,在軟件內(nèi))的示例步驟的數(shù)據(jù)流圖。該過(guò)程示出了使用長(zhǎng)期加密密鑰來(lái)實(shí)現(xiàn)完備前向保密。當(dāng)用戶(hù)或服務(wù)提供確定需要或要求新密鑰時(shí),該過(guò)程開(kāi)始。對(duì)于本示例,假設(shè)主機(jī)在運(yùn)行加密密鑰期滿(mǎn)計(jì)時(shí)器。然而,還有可以重新產(chǎn)生加密密鑰的許多其它方式。用戶(hù)可以確定到了新密鑰的時(shí)間,用戶(hù)或服務(wù)可能擔(dān)心有人正試圖攻擊并確定當(dāng)前密鑰值。無(wú)論情況怎樣,都需要或要求新密鑰,并可以使用不基于原始共享秘密的唯一的方法,產(chǎn)生新密鑰。
如圖8的示例中示出的,用戶(hù)接收重置密鑰請(qǐng)求,或者用戶(hù)決定剪裁新密鑰(步驟430)。當(dāng)然,可以由服務(wù)提供商替代用戶(hù),執(zhí)行步驟430。用戶(hù)軟件產(chǎn)生新的短期加密密鑰(步驟432)。示例數(shù)學(xué)計(jì)算是基于SPEKE的,并使用如前所示的相同序列選取短期加密密鑰對(duì)(例如,由用戶(hù)進(jìn)行)選取隨機(jī)數(shù)x,1<x<q-1;計(jì)算X=gx;如果X=1,則繼續(xù)選擇x,直至X◇1。
這里,值‘x’是針對(duì)用戶(hù)的短期私用加密密鑰而產(chǎn)生的“新”值。由于值‘x’引起了這兩方面,所以可以將值‘x’稱(chēng)為“加密”密鑰或者“認(rèn)證”密鑰(如先前所稱(chēng))。在該示例中,在1與素?cái)?shù)q-1之間選擇‘x’。然后,用戶(hù)軟件將最新產(chǎn)生的公共密鑰值‘X’發(fā)送至服務(wù)提供商434。該步驟前進(jìn)至(D),在這里,服務(wù)提供商接收值并執(zhí)行附加計(jì)算。步驟(D)作為連接的服務(wù)提供商側(cè)的輸入進(jìn)入圖9。
一旦服務(wù)提供商使用圖9所示的(D)完成了這些計(jì)算,則返回具有密鑰確認(rèn)值的類(lèi)似的新公共加密密鑰值‘Y’(以下進(jìn)一步討論)用于用戶(hù)驗(yàn)證(E)。這以圖8中的輸入(E)示出。在該點(diǎn),例如,在高級(jí)SPEKE計(jì)算之后,用戶(hù)能夠使用服務(wù)提供商的新的‘Y’密鑰,與服務(wù)提供商較舊的長(zhǎng)期公共‘B’密鑰一起來(lái)創(chuàng)建主密鑰。加密方法通過(guò)共同使用現(xiàn)有的‘B’和新的‘Y’,可以實(shí)現(xiàn)完備前向保密。由于現(xiàn)有的‘B’或新的‘Y’均不是基于原始共享秘密,并且將現(xiàn)有的‘B’與新的‘Y’進(jìn)行組合,創(chuàng)建不直接基于先前密鑰的新密鑰,所以可以實(shí)現(xiàn)完備前向保密。另外,現(xiàn)有的‘B’密鑰攜帶了一些用原始共享秘密產(chǎn)生的認(rèn)證。只有最初擁有共享秘密的經(jīng)認(rèn)證的服務(wù)用戶(hù),才能夠在盤(pán)中保存的私用密鑰‘b’。這會(huì)在創(chuàng)建新的主密鑰‘k’的示例重置密鑰數(shù)學(xué)計(jì)算中更加清楚地看到計(jì)算主密鑰(例如,由用戶(hù)進(jìn)行)k1=Y(jié)x;k2=Ba;檢查k1,k2?。?,1,或者order(G)-1;k=hash(k1‖k2)。
這里,‘x’是用戶(hù)的新短期私用加密密鑰,以及‘Y’是新的接收的由服務(wù)提供商產(chǎn)生的短期公共加密密鑰。值‘a(chǎn)’是用戶(hù)現(xiàn)有的長(zhǎng)期私用加密密鑰,以及‘B’是服務(wù)提供商現(xiàn)有的長(zhǎng)期公共加密密鑰。
值‘k’代表可以用于加密用戶(hù)與服務(wù)之間的數(shù)據(jù)的新的主密鑰。值‘k’是中間密鑰‘k1’(基于短期加密密鑰)和‘k2’(基于長(zhǎng)期加密密鑰)的組合??梢詫?duì)中間密鑰值k1和k2進(jìn)行檢查(步驟442),以驗(yàn)證這兩個(gè)值不是0,1或order(G)-1;否則,表示有人正試圖進(jìn)行安全攻擊(步驟442)。然而,如果k1或k2的值落入這些小子集群之一內(nèi),則可以中止密鑰的協(xié)商(步驟444)。
如果未檢測(cè)到子集攻擊,則如步驟446所示,新的主密鑰‘k’可以用于測(cè)試由服務(wù)提供(服務(wù)提供商)發(fā)送的密鑰確認(rèn)值。產(chǎn)生密鑰確認(rèn)值的一種方法是,使用諸如公共密鑰‘A’的字節(jié)之類(lèi)的已知串對(duì)密鑰進(jìn)行散列計(jì)算。計(jì)算密鑰確認(rèn)值的方式可以與先前描述的相同。如果計(jì)算的密鑰確認(rèn)值與接收的不匹配(步驟448),則假設(shè)密鑰錯(cuò)誤(步驟450)。不正確的密鑰確認(rèn)值表示正在嘗試中間人攻擊,或者一些其它攻擊。否則,用戶(hù)使用主密鑰‘k’產(chǎn)生最終的密鑰確認(rèn)值(步驟452)。將密鑰確認(rèn)值作為最終的確認(rèn)發(fā)送至服務(wù)提供商(步驟454);如在圖8的點(diǎn)(F)所示。然后,在短暫的暫停之后,將新的加密密鑰用于用戶(hù)軟件內(nèi)(步驟456)。在短時(shí)間段內(nèi),還有先前傳輸?shù)南⒖赡艿竭_(dá)的窗口。在這個(gè)幾分鐘的時(shí)間段內(nèi),如果發(fā)生解密錯(cuò)誤,則保持并嘗試舊密鑰(步驟456)。
現(xiàn)在轉(zhuǎn)向圖9,圖9表示在圖1、2和3所示的環(huán)境中重新產(chǎn)生另一密鑰時(shí),在用于重置密鑰序列的服務(wù)提供商內(nèi)的示例步驟的數(shù)據(jù)流圖。該過(guò)程示出了結(jié)合短期加密密鑰來(lái)使用長(zhǎng)期加密密鑰,以實(shí)現(xiàn)完備前向保密。在本實(shí)施例中,假設(shè)如圖8所示,用戶(hù)已經(jīng)開(kāi)始該過(guò)程,并已經(jīng)創(chuàng)建了新的短期加密(或者認(rèn)證)密鑰對(duì)。以輸入(D)示出了短期公共加密密鑰‘X’的到達(dá)。接收公共密鑰,重新調(diào)用并檢查用戶(hù)的配置信息(步驟406)。然后,服務(wù)提供產(chǎn)生新的短期加密密鑰對(duì),用于在下一時(shí)間段上使用(步驟462)。除了未使用共享秘密之外,創(chuàng)建新短期加密密鑰的示例數(shù)學(xué)計(jì)算與之前示出的相似。
選取新的短期加密密鑰對(duì)(例如,由服務(wù)提供商進(jìn)行)選取隨機(jī)數(shù)y,1<y<q-1;計(jì)算Y=gy;如果Y=1,則繼續(xù)選擇隨機(jī)數(shù)y,直至Y◇1。
在本示例中,在1與素?cái)?shù)q-1之間選擇‘y’。值‘Y’將會(huì)最終發(fā)送至用戶(hù),以產(chǎn)生主密鑰(步驟472)。
在選擇新的短期加密密鑰對(duì)之后,服務(wù)提供商使用剛從用戶(hù)處接收的值‘X’和最新產(chǎn)生的值‘y’,產(chǎn)生主密鑰。通過(guò)共同使用‘A’和‘X’來(lái)創(chuàng)建主密鑰,加密方法提供了完備前向保密。示例的主密鑰計(jì)算如下計(jì)算主密鑰(例如,由服務(wù)提供商進(jìn)行)k1=Xy;k2=Ab;檢查k1,k2!=0,1,或者order(G)-1;k=hash(k1‖k2)。
這里,‘y’是服務(wù)提供商的短期私用加密密鑰,‘X’是新接收的由用戶(hù)產(chǎn)生的短期公共加密密鑰。值‘b’是服務(wù)提供商的現(xiàn)有長(zhǎng)期私用加密密鑰,‘A’是用戶(hù)現(xiàn)有的長(zhǎng)期公共加密密鑰。
值‘k’代表用于服務(wù)提供的主密鑰(步驟464)。這將用于加密服務(wù)提供與用戶(hù)之間的所有數(shù)據(jù)。值‘k’是中間密鑰‘k1’(基于新的短期加密密鑰)和‘k2’(基于長(zhǎng)期加密密鑰)的組合?!甼’的計(jì)算不直接依據(jù)原始共享秘密‘s’,但是值‘A’和‘b’會(huì)攜帶一些最初由‘s’提供的認(rèn)證??梢詫?duì)中間密鑰值k1和k2進(jìn)行檢查(步驟466),以驗(yàn)證這兩個(gè)值不是0,1或order(G)-1;否則,表示有人正試圖進(jìn)行安全攻擊。如果k1或k2的值落入這些小子集群之一內(nèi),則可以中止密鑰的協(xié)商(步驟468)。
如果未檢測(cè)到子集攻擊,則主密鑰‘k’可以用于測(cè)試由服務(wù)提供發(fā)送的密鑰確認(rèn)值(步驟470)。產(chǎn)生密鑰確認(rèn)值的一種方法是,使用類(lèi)似于公共密鑰‘B’的字節(jié)之類(lèi)的已知串來(lái)對(duì)密鑰進(jìn)行散列計(jì)算(步驟470)。該計(jì)算可以與先前描述的相同。然后,服務(wù)提供將會(huì)把新的短期公共加密密鑰‘Y’和密鑰確認(rèn)值hB傳輸至用戶(hù)(步驟472)。在圖9中的傳輸方框(E)處示出了密鑰值和密鑰確認(rèn)值的傳輸。
如在(F)處示出的,一旦用戶(hù)已經(jīng)產(chǎn)生了自己的主密鑰‘k’,則發(fā)送回最終的密鑰確認(rèn)值,以確保服務(wù)提供知道一切工作正常(圖8的步驟454)。該最終步驟(F)作為服務(wù)提供的輸入(步驟474)在圖9中示出。如果針對(duì)‘A’計(jì)算密鑰確認(rèn)值,并將其發(fā)送至服務(wù)提供(步驟474),則這正是測(cè)試所尋找的(步驟476)。如果密鑰確認(rèn)值與預(yù)期值不匹配,則中止操作(步驟478)。如果密鑰確認(rèn)值得到驗(yàn)證,則假設(shè)完全的雙向加密和安全的數(shù)據(jù)通信路徑存在(步驟480)。服務(wù)器將先前的密鑰保持幾分鐘,以防止在該新密鑰的產(chǎn)生階段,分組正在路由中(步驟480)。
可以修改上述方法,以利用其它安全密鑰的示例的產(chǎn)生計(jì)算方法(例如,空中下載(over-the-air))。例如,用戶(hù)(例如,諸如移動(dòng)臺(tái)30或32的移動(dòng)臺(tái))和服務(wù)提供商(例如,諸如主機(jī)系統(tǒng)20或22之類(lèi)的主機(jī)系統(tǒng))可以首先共享通過(guò)諸如那些先前描述的帶外方法獲得的小秘密密鑰(例如,在加密方面較弱的秘密密鑰),然后,自舉為更大的在加密方面較強(qiáng)的密鑰。以這樣的方式進(jìn)行自舉,防止了在線(xiàn)和離線(xiàn)詞典(dictionary)攻擊。
例如,以下描述的示例協(xié)議可以允許用戶(hù)(例如,移動(dòng)臺(tái))和服務(wù)提供商(例如,主機(jī)系統(tǒng))通過(guò)假設(shè)為不安全的信道的空中下載,協(xié)商密碼密鑰。在本示例中,第一協(xié)議用于初始密鑰交換,第二協(xié)議用于密鑰的重新產(chǎn)生(密鑰重置)。
根據(jù)一個(gè)示例,第一協(xié)議并行地運(yùn)行SPEKE和Diffie-Hellman(DH)密鑰交換協(xié)議。產(chǎn)生的主密鑰是由SPEKE和DH協(xié)議產(chǎn)生的密鑰的組合。SPEKE將小共享秘密與DH密鑰協(xié)定協(xié)議組合,來(lái)協(xié)商共享密鑰,以這樣的方式,排除了離線(xiàn)詞典攻擊。具體地,SPEKE使用小共享秘密來(lái)替換DH密鑰協(xié)定的基點(diǎn)(base point)。
第二協(xié)議是本領(lǐng)域已知的MQV技術(shù)(Menezez-Qu-Vanstone密鑰協(xié)定方案)。在D.Hankerson,A.Menezes和S.Vanstone(紐約Springer-Verlag,2004)的Guide to Elliptic Curve Cryptography中,描述了該技術(shù)的示例版本;為了說(shuō)明該技術(shù)領(lǐng)域的一般公知狀態(tài),將該參考的MQV論述在此一并引入,作為參考。
在示例實(shí)現(xiàn)方式中,用戶(hù)100(例如,移動(dòng)臺(tái))和服務(wù)提供商(或主機(jī)系統(tǒng))可以共享以下加密系統(tǒng)參數(shù)Fq-素?cái)?shù)階(order)q的有限域;E(Fq)-Fq上的橢圓曲線(xiàn),如NIST(國(guó)家標(biāo)準(zhǔn)技術(shù)研究所)認(rèn)可的Fq上的512比特隨機(jī)橢圓曲線(xiàn),其中的曲線(xiàn)具有輔助因子1(見(jiàn)Federal Information Processing Standards Publication,“DigitalSignature Standard(DSS)”,2000年1月27日,附錄6,位于http://csrc.nist.gov/publications/fips/fip186-2/fips186-2-changel.pdf);P-產(chǎn)生素?cái)?shù)階r的子群E(Fq)的E的任何點(diǎn);xR-代表橢圓曲線(xiàn)標(biāo)量乘法,其中,x是標(biāo)量,R是E(Fq)上的點(diǎn);以及 -其中,x是橢圓曲線(xiàn)點(diǎn)R的x坐標(biāo)的整數(shù)表達(dá),以及f是r的比特長(zhǎng)度(bit length)(即,f=log2r+1)。
用戶(hù)100和主機(jī)系統(tǒng)102同意使用上述參數(shù)、或者其它適合的參數(shù),這些參數(shù)可以是公知的或者專(zhuān)用的參數(shù)。除了可以在Zr(其中,Zr表示以r為模的整數(shù))中進(jìn)行一些MQV操作之外,所有數(shù)學(xué)操作可以在群E(Fq)中進(jìn)行。
初始密鑰交換如上所述,第一示例協(xié)議共同利用了SPEKE和DH,進(jìn)行初始密鑰交換。在以下對(duì)該示例的描述中,將參照先前描述的圖4的流程圖,該流程圖示出了示例處理步驟,其中,用戶(hù)100(例如,移動(dòng)臺(tái))是數(shù)據(jù)交換的發(fā)起者。當(dāng)然,圖5同樣是可應(yīng)用的,其中,圖5示出了服務(wù)提供商(即,主機(jī)系統(tǒng))是數(shù)據(jù)交換的發(fā)起者的示例處理步驟。此外,示例步驟不需要按照已述順序進(jìn)行。
為了產(chǎn)生和交換共享秘密(步驟104),用戶(hù)100和主機(jī)系統(tǒng)102可以使用如先前描述的任何適合的方法。任何一方都可以產(chǎn)生秘密,并通過(guò)帶外通信與另一方共享。
用戶(hù)100(例如,移動(dòng)臺(tái)30或32)可以通過(guò)選取隨機(jī)數(shù)a,以及通過(guò)計(jì)算A=aP(橢圓曲線(xiàn)標(biāo)量乘積),來(lái)產(chǎn)生長(zhǎng)期密鑰對(duì)(步驟108),其中,1<a<r-1,a是用戶(hù)的長(zhǎng)期私用密鑰(或第一私用密鑰),A是用戶(hù)的長(zhǎng)期公共密鑰(或第一公共密鑰),P和r如上所述。因此,在本示例中,使用橢圓曲線(xiàn)計(jì)算,產(chǎn)生用戶(hù)的長(zhǎng)期公共密鑰。然后,用戶(hù)100(例如,移動(dòng)臺(tái))可以安全地存儲(chǔ)a和A。
為了產(chǎn)生短期密鑰對(duì)(步驟108),用戶(hù)100可以首先將共享秘密s轉(zhuǎn)換為E(Fq)上的點(diǎn),該點(diǎn)可以標(biāo)記為S。然后,用戶(hù)可以選擇隨機(jī)數(shù)x(其中,1<x<r-1),計(jì)算X=xS(橢圓曲線(xiàn)標(biāo)量乘積)。數(shù)量x是用戶(hù)的短期密鑰對(duì)(也稱(chēng)為短期認(rèn)證密鑰對(duì))的短期私用密鑰(或第二私用密鑰),以及X是用戶(hù)的短期公共密鑰(或第二公共密鑰)。
然后,用戶(hù)100將第二公共密鑰X和第一公共密鑰A同第一輔助數(shù)據(jù)(‘Aux DataD’)一起發(fā)送至主機(jī)系統(tǒng)102。如以下進(jìn)一步討論的,第一輔助數(shù)據(jù)將用于產(chǎn)生密鑰確認(rèn)值。實(shí)質(zhì)上,第一輔助數(shù)據(jù)可以是諸如隨機(jī)數(shù)據(jù)串之類(lèi)的任何數(shù)據(jù)串,或者可以是其它有用數(shù)據(jù),例如可由主機(jī)系統(tǒng)用于配置主機(jī)系統(tǒng)端的一個(gè)或多個(gè)設(shè)備的設(shè)備配置信息。通信方預(yù)先對(duì)第一輔助數(shù)據(jù)的大小達(dá)成一致。
主機(jī)系統(tǒng)102接收用戶(hù)100的長(zhǎng)期和短期公共密鑰,并重新調(diào)用共享秘密s(步驟112)。主機(jī)系統(tǒng)可以通過(guò)選取隨機(jī)數(shù)b,并通過(guò)計(jì)算B=bP(橢圓曲線(xiàn)標(biāo)量乘法),來(lái)產(chǎn)生長(zhǎng)期密鑰對(duì)(步驟114),其中,1<b<r-1,b是主機(jī)系統(tǒng)的長(zhǎng)期私用密鑰(或第三私用密鑰),B是主機(jī)系統(tǒng)的長(zhǎng)期公共密鑰(或第三公共密鑰),P和r如上所述。因此,在本示例中,還使用橢圓曲線(xiàn)計(jì)算,產(chǎn)生主機(jī)系統(tǒng)的長(zhǎng)期公共密鑰。然后,主機(jī)系統(tǒng)102可以安全地存儲(chǔ)b和B。當(dāng)然,各種步驟可以按照任何適合的順序進(jìn)行,例如,主機(jī)系統(tǒng)可以在從用戶(hù)100處接收任何公共密鑰信息之前,計(jì)算長(zhǎng)期公共和私用密鑰。
為了產(chǎn)生短期密鑰對(duì)(步驟114),主機(jī)系統(tǒng)可以首先將共享秘密s轉(zhuǎn)換為E(Fq)上的點(diǎn),以及該點(diǎn)可以標(biāo)記為S。然后,用戶(hù)100和主機(jī)系統(tǒng)102在共享參數(shù)的框架內(nèi)進(jìn)行操作,所以用戶(hù)100和主機(jī)系統(tǒng)102都針對(duì)S,產(chǎn)生相同值。然后,主機(jī)系統(tǒng)可以選擇隨機(jī)數(shù)y,其中,1<y<r-1,以及可以計(jì)算Y=y(tǒng)S(橢圓曲線(xiàn)標(biāo)量乘積)。數(shù)值y是主機(jī)系統(tǒng)的短期密鑰對(duì)(也稱(chēng)為短期認(rèn)證密鑰對(duì))的短期私用密鑰(或第四私用密鑰),Y是主機(jī)系統(tǒng)的短期公共密鑰(或第四公共密鑰)。
然后,主機(jī)系統(tǒng)102可以使用用戶(hù)的長(zhǎng)期和短期公共密鑰(第一和第二公共密鑰),利用以下示例計(jì)算來(lái)計(jì)算(步驟116)主密鑰(或主秘密)計(jì)算主密鑰(例如,由主機(jī)系統(tǒng)進(jìn)行)
k1=y(tǒng)X;k2=bA;如果k1=0,1,-1,則設(shè)置k1=隨機(jī)數(shù);如果k2=0,1,-1,則設(shè)置k2=隨機(jī)數(shù);以及(k,kconf)=SHA-512(k1‖k2)。
在上述步驟的最后,SHA-512表示本領(lǐng)域普通技術(shù)人員已知的512比特“安全散列算法”,‘‖’是達(dá)成一致的級(jí)聯(lián)函數(shù)(見(jiàn)FederalInformation Processing Standards Publication 180-2,“Secure HashStandard ”,2002年8月1日,位于http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf)。當(dāng)然,還可以使用諸如那些使用不同比特?cái)?shù)之類(lèi)的本領(lǐng)域已知的其它安全散列算法。參照(k,kconf)表示來(lái)自SHA-512計(jì)算的結(jié)果的前半部分(前256比特)是所計(jì)算的主秘密密鑰k,以及結(jié)果的后半部分(后256比特)是如以下所討論的將會(huì)用于計(jì)算主機(jī)系統(tǒng)的密鑰確認(rèn)值hB(或測(cè)試串)的數(shù)值kconf。測(cè)試k1和k2以檢查二者中的任何一個(gè)是否等于0、1或-1的步驟,與先前討論的在圖6的步驟314處作出的用于測(cè)試是否存在可能的攻擊的檢查相類(lèi)似。如果滿(mǎn)足條件,則將k1和k2之一或全部都設(shè)置為隨機(jī)數(shù),則計(jì)算的主密鑰k將與用戶(hù)的主密鑰不匹配,基于共享主(秘密)密鑰的雙向安全通信將不會(huì)發(fā)生。當(dāng)然,如果滿(mǎn)足條件,則可以在該階段簡(jiǎn)單地中止該過(guò)程。
主機(jī)系統(tǒng)102可以使用以下計(jì)算來(lái)計(jì)算密鑰確認(rèn)值hB(步驟116)hB=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII1)。在該計(jì)算中,HMAC-256表示本領(lǐng)域普通技術(shù)人員已知的256比特“散列消息認(rèn)證碼”算法(見(jiàn)“HMACKeyed-Hashing for MessageAuthentication”,H.Krawczyk et al.,Network Working Group Request firComments2104,1997年2月,第11頁(yè),可從互聯(lián)網(wǎng)中的http://www.faqs/org/rfcs/rfc2104.html處進(jìn)行訪(fǎng)問(wèn))。當(dāng)然,還可以使用諸如那些使用不同比特?cái)?shù)之類(lèi)的其它版本的散列消息認(rèn)證碼。數(shù)量kconf(先前參照的)是作為HMAC-256算法的輸入提供的比特串。如上所述,Aux DataB是由用戶(hù)100提供的第一輔助數(shù)據(jù)。Aux DataB表示由主機(jī)系統(tǒng)產(chǎn)生的第二輔助數(shù)據(jù)。實(shí)質(zhì)上,第二輔助數(shù)據(jù)可以是諸如隨機(jī)數(shù)據(jù)串之類(lèi)的任何數(shù)據(jù)串,或者可以是諸如可由用戶(hù)用于配置用戶(hù)端的一個(gè)或多個(gè)設(shè)備的設(shè)備配置信息之類(lèi)的其它有用數(shù)據(jù)。第二輔助數(shù)據(jù)的大小由通信方預(yù)先達(dá)成一致,并與第一輔助數(shù)據(jù)大小相同。符號(hào)‘‖’是達(dá)成一致的級(jí)聯(lián)函數(shù)。A、X、B和Y是第一至第四公共密鑰,以及ASCII1是編程為HMAC算法的自變量的任何預(yù)定的ASCII碼(例如,針對(duì)字母“B”)。
然后,主機(jī)系統(tǒng)102可以將短期公共密鑰(第四公共密鑰)Y、長(zhǎng)期公共密鑰(第三公共密鑰)B和密鑰確認(rèn)值(測(cè)試字符串)hB發(fā)送至用戶(hù)100(步驟116)。在該階段,主機(jī)系統(tǒng)102還可以將第二輔助數(shù)據(jù)(Aux DataB)發(fā)送至用戶(hù)100。在接收該信息(步驟118)之后,用戶(hù)可以執(zhí)行主密鑰的計(jì)算。
用戶(hù)100可以根據(jù)主機(jī)系統(tǒng)的長(zhǎng)期和短期公共密鑰(第三和第四公共密鑰),使用以下示例計(jì)算,執(zhí)行主密鑰(或者主秘密)的計(jì)算(步驟120)計(jì)算主密鑰(例如,由用戶(hù)進(jìn)行)k1=xY;k2=aB;如果k1=0,1,-1,則設(shè)置k1=隨機(jī)數(shù);如果k2=0,1,-1,則設(shè)置k2=隨機(jī)數(shù);以及(k,kconf)=SHA-512(k1‖k2)。
在上述步驟的最后,SHA-512表示本領(lǐng)域普通技術(shù)人員已知的512比特“安全散列算法”,‘‖’是達(dá)成一致的級(jí)聯(lián)函數(shù)。參照(k,kconf)表示來(lái)自SHA-512計(jì)算的結(jié)果的前半部分(前256比特)是計(jì)算的主秘密密鑰k,以及結(jié)果的后半部分(后256比特)是如以下所討論的將會(huì)用于計(jì)算用戶(hù)密鑰確認(rèn)值hA(或測(cè)試串)的數(shù)量kconf?;谝陨纤?,很明顯,用戶(hù)的計(jì)算意在產(chǎn)生與由主機(jī)系統(tǒng)的計(jì)算產(chǎn)生的值相同的k和kconf值。
然后,用戶(hù)100可以根據(jù)以下測(cè)試,檢查(步驟120)主機(jī)系統(tǒng)的密鑰確認(rèn)值(測(cè)試串)如果hB?。紿MAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII1),則中止。
如上所述,數(shù)值A(chǔ)SCII1是預(yù)定的ASCII碼。數(shù)值A(chǔ)SCII1不僅編程為主機(jī)系統(tǒng)端用于生成hB的HMAC算法的自變量,而且編程為用戶(hù)端用于檢查hB的HMAC算法的自變量。如本領(lǐng)域普通技術(shù)人員所知的,符號(hào)“!=”表示“不等于”。
然后,用戶(hù)100可以根據(jù)以下示例計(jì)算,產(chǎn)生不同于主機(jī)系統(tǒng)的密鑰確認(rèn)值hB的自己的密鑰確認(rèn)值(測(cè)試串)hA(步驟122)hA=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII2)在該計(jì)算中,各種數(shù)量如上所述,ASCII2是編程為用于產(chǎn)生hA的HMAC算法的自變量的預(yù)定ASCII碼(例如,用于字母“A”)。ASCII2可以設(shè)置為不同于ASCII1的值,以確保hA與hB不同。然后,用戶(hù)100可以將hA發(fā)送至主機(jī)系統(tǒng)102(步驟122)。
然后,主機(jī)系統(tǒng)102可以根據(jù)以下測(cè)試來(lái)檢查(步驟124)用戶(hù)的密鑰確認(rèn)值(測(cè)試串)如果hA?。紿MAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII2),則中止。
為了執(zhí)行該計(jì)算,很明顯,預(yù)定ASCII碼ASCII2編程為在主機(jī)系統(tǒng)端用于檢查hA的HMAC算法的自變量。如果用戶(hù)100(例如,移動(dòng)臺(tái))進(jìn)行了多于預(yù)定數(shù)量(例如,10)的失敗嘗試,則主機(jī)系統(tǒng)102可以拒絕對(duì)該用戶(hù)的服務(wù)。
最后,用戶(hù)100可以將數(shù)量s、x、k1、k2和kconf置零(zero out),并且可以安全地存儲(chǔ)B(主機(jī)系統(tǒng)的長(zhǎng)期公共密鑰)和k(共享主密鑰)。同樣,主機(jī)系統(tǒng)102可以將s、y、k1、k2和kconf置零,并且可以安全地存儲(chǔ)A(用戶(hù)的長(zhǎng)期公共密鑰)和k(共享主密鑰)。
現(xiàn)在提供對(duì)于以上方法的多種安全性考慮的討論。
竊聽(tīng)攻擊共享秘密是分量k1=y(tǒng)X=xY=xyS。攻擊者面對(duì)的是僅知道X和Y而計(jì)算xyS。這是個(gè)Diffie-Hellman問(wèn)題,并且較難。
中間人攻擊傳統(tǒng)上,Diffie-Hellman密鑰協(xié)定易遭受中間人攻擊。然而,用于該協(xié)議的基點(diǎn)是共享秘密密鑰。為了發(fā)起中間人攻擊,所有通信方必須正在使用相同的基點(diǎn)。由于攻擊者不知道共享秘密,所以他將不能夠成功地計(jì)算k1,因而不能計(jì)算k。
假扮(impersonate)移動(dòng)臺(tái)由于攻擊者不知道秘密s,所以他或她必須將X=xP發(fā)送至主機(jī)系統(tǒng),而不是xS。主機(jī)系統(tǒng)將會(huì)計(jì)算k1=y(tǒng)X=y(tǒng)xP。為了計(jì)算相同的密鑰,攻擊者需要根據(jù)Y來(lái)確定y。這是個(gè)離散對(duì)數(shù)問(wèn)題,并且較難。
假扮主機(jī)系統(tǒng)由于攻擊者不知道秘密s,所以他或她必須將Y=y(tǒng)P發(fā)送至用戶(hù)(例如,移動(dòng)臺(tái)),而不是yS。用戶(hù)設(shè)備將會(huì)計(jì)算k1=xY=xyP。為了計(jì)算相同的密鑰,攻擊者需要從X中確定x。這是個(gè)離散對(duì)數(shù)問(wèn)題,并且較難。
防止離線(xiàn)詞典攻擊由于主機(jī)系統(tǒng)發(fā)送第一密鑰確認(rèn)值,所以攻擊口令的最佳位置是假扮移動(dòng)臺(tái)。這允許攻擊者嘗試不同的口令,并且檢查他或她是否已經(jīng)作出了正確的選擇。
假設(shè)攻擊者將將X=xP發(fā)送至主機(jī)系統(tǒng),而不是xS。主機(jī)系統(tǒng)將使用Y=xS來(lái)進(jìn)行應(yīng)答,并計(jì)算k1 HOST=y(tǒng)X=y(tǒng)xP。同時(shí),攻擊者將針對(duì)特定z,計(jì)算k1 attacker=xY=y(tǒng)xS=y(tǒng)xzP,使得S=zP。攻擊者使用密鑰確認(rèn)值hB,需要找到值w,使得wk1 attacker=wxY=wyxzP=xyP=k1 HOST。然而,注意w=z-1mod r。因此,找到w等于找到z,這與解決針對(duì)S的離散對(duì)數(shù)問(wèn)題相對(duì)應(yīng)。這比較困難。
防止在線(xiàn)詞典攻擊由于主機(jī)系統(tǒng)發(fā)送第一密鑰確認(rèn)值,所以攻擊口令的最佳位置是假扮移動(dòng)臺(tái)。在每次運(yùn)行中,移動(dòng)臺(tái)嘗試不同的口令,并檢查他或她是否已經(jīng)相對(duì)于hB作出了正確的選擇。這通過(guò)限制移動(dòng)臺(tái)確定正確的秘密s的嘗試的預(yù)定次數(shù)(例如,10),得以避免。
小子群攻擊小子群攻擊是一種攻擊者試圖強(qiáng)迫密鑰協(xié)定結(jié)果來(lái)自小值集的攻擊。例如,如果攻擊者選擇X作為無(wú)窮遠(yuǎn)處的點(diǎn),則無(wú)論主機(jī)系統(tǒng)針對(duì)Y作出什么選擇,k1都將是無(wú)窮遠(yuǎn)處的點(diǎn)。因此,通過(guò)檢查X不是無(wú)窮遠(yuǎn)處的點(diǎn)、1或負(fù)1,可以避免這種威脅。
新主密鑰的重新產(chǎn)生(使用MQV的密鑰重置)如上所述,在本示例框架中,可以使用本領(lǐng)域技術(shù)人員已知的MQV算法,進(jìn)行新主密鑰的重新產(chǎn)生(密鑰重置)。在以下示例中,將參照先前描述的圖8和9的特定一般處理步驟對(duì)其進(jìn)行修改。
如圖8所示,由用戶(hù)100接收密鑰重置請(qǐng)求,或者用戶(hù)100決定剪裁新密鑰(步驟430)。當(dāng)然,可以由服務(wù)提供商替代用戶(hù)來(lái)執(zhí)行步驟430。
用戶(hù)產(chǎn)生新的短期加密密鑰對(duì)(步驟432)。根據(jù)示例數(shù)學(xué)計(jì)算,用戶(hù)100選擇新的隨機(jī)數(shù)x,作為新的私用短期認(rèn)證密鑰(新的第二私用密鑰),并計(jì)算X=xP,其中,1<x<r-1,P如先前所述,以及X是用戶(hù)的新公共短期認(rèn)證密鑰,也稱(chēng)為新公共短期加密密鑰(新第二公共密鑰)。用戶(hù)100將X發(fā)送至主機(jī)系統(tǒng)102(步驟434),以及還與X一起發(fā)送第一輔助數(shù)據(jù)(Aux DataD),其中,第一輔助數(shù)據(jù)如先前所述。
主機(jī)系統(tǒng)102接收用戶(hù)的新公共短期認(rèn)證密鑰(步驟460),并產(chǎn)生自己的新短期認(rèn)證(或加密)密鑰對(duì)(步驟462)。根據(jù)示例計(jì)算,主機(jī)系統(tǒng)選擇新的隨機(jī)數(shù)y,作為新的私用短期認(rèn)證密鑰(新的第四私用密鑰),其中,1<y<r-1,并計(jì)算Y=y(tǒng)P,其中,Y是主機(jī)系統(tǒng)的新公共短期認(rèn)證密鑰(新第四密鑰)。
然后,主機(jī)系統(tǒng)102可以使用以下示例計(jì)算來(lái)計(jì)算(步驟464)新的主密鑰計(jì)算新主密鑰(例如,由主機(jī)系統(tǒng)進(jìn)行)sB=(y+Yb)modr;Z=sB(X+XA);如果Z是無(wú)窮遠(yuǎn)處的點(diǎn),則選擇新的y并重新計(jì)算sB和Z;(k,kconf)=SHA-512(xZ),其中,xZ是Z的x坐標(biāo)。
在以上中,分別使用MQV協(xié)議中的已知方法,根據(jù)X和Y,計(jì)算X和Y。即,為了計(jì)算X,獲取X的橫坐標(biāo)(x坐標(biāo))值(注意,X是具有x坐標(biāo)值和y坐標(biāo)值的橢圓曲線(xiàn)點(diǎn)),舍棄橫坐標(biāo)比特值的前半部分(左半部分),并在舍棄的比特的位置處插入首位(leading)“1”。以同樣的方式,根據(jù)Y計(jì)算Y。如先前所述,SHA計(jì)算結(jié)果的比特的前半部分是主密鑰k,以及比特的后半是kconf的值。在本示例中,在密鑰重置期間不產(chǎn)生獨(dú)立的k1和k2值,以及不執(zhí)行類(lèi)似于步驟466的步驟。
主機(jī)系統(tǒng)可以按照先前所述的方式,使用以下計(jì)算來(lái)計(jì)算(步驟470)密鑰確認(rèn)值hB(測(cè)試串)hB=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII1)。
然后,主機(jī)系統(tǒng)102將Y和hB同第二輔助數(shù)據(jù)(Aux DataB)一起發(fā)送至用戶(hù)100(步驟472)。在接收該信息之后,用戶(hù)可以執(zhí)行新主密鑰的計(jì)算。
用戶(hù)100可以使用以下示例計(jì)算來(lái)執(zhí)行新主密鑰(或者主秘密)的計(jì)算(步驟440)計(jì)算新主密鑰(例如,由用戶(hù)進(jìn)行)
sA=(x+Xa)modr;Z=sA(Y+YB);如果Z是無(wú)窮處的點(diǎn),則將Z設(shè)置為E(Fq)的隨機(jī)點(diǎn);(k,kconf)=SHA-512(xZ),其中,xZ是Z的x坐標(biāo)。在以上描述中,如前所述,根據(jù)X和Y,計(jì)算X和Y。計(jì)算的其它方面類(lèi)似于先前所描述的。此外,在本示例中,在密鑰重置期間不產(chǎn)生獨(dú)立的k1和k2值,以及不執(zhí)行類(lèi)似于步驟466的步驟。在這段時(shí)間內(nèi),如果不能使用當(dāng)前的主密鑰或先前的主密鑰(如果仍然可用)來(lái)解密接收的消息,則可以嘗試待定的主密鑰(即,將成為新主密鑰的最新計(jì)算的數(shù)量k)。
然后,如前所述,用戶(hù)100可以根據(jù)以下測(cè)試來(lái)檢查(步驟466)主機(jī)系統(tǒng)的密鑰確認(rèn)值(測(cè)試串)如果hB?。紿MAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII1),則中止。
如果數(shù)量hB與預(yù)期值匹配,則用戶(hù)100將最新計(jì)算值k設(shè)置為新的主密鑰。
然后,如前所述,用戶(hù)100可以以下示例計(jì)算,產(chǎn)生不同于主機(jī)系統(tǒng)的密鑰確認(rèn)值hB(步驟452)的自己的確認(rèn)密鑰值(測(cè)試串)hAhA=HMAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII2)。然后,用戶(hù)100可以將hA發(fā)送至主機(jī)系統(tǒng)102(步驟454)。
然后,主機(jī)系統(tǒng)102可以根據(jù)以下測(cè)試來(lái)檢查(步驟474)用戶(hù)的密鑰確認(rèn)值(測(cè)試串)如果hA?。紿MAC-256kconf(Aux DataD‖Aux DataB‖A‖B‖X‖Y‖ASCII2),則中止。
如果數(shù)量hA與預(yù)期值匹配,則主機(jī)系統(tǒng)102將最新計(jì)算值k設(shè)置為新的主密鑰。
最后,用戶(hù)100可以將數(shù)值sA、x和kconf置零,以及能夠安全地存儲(chǔ)k(共享主密鑰)。通常,主機(jī)系統(tǒng)102可以將數(shù)值sB、y和kconf置零,以及能夠安全地存儲(chǔ)k(共享主密鑰)。
現(xiàn)在提供對(duì)于以上方法的多種安全性考慮的討論。
中間人攻擊根據(jù)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所(NIST),該攻擊對(duì)抗MQV密鑰產(chǎn)生方案,將不會(huì)成功。只要長(zhǎng)期私用密鑰a和b保持秘密,則不可能有中間人攻擊(見(jiàn)NIST Special Publication 800-56Recommendation onKey Establishment schemes,Draft 2.0,2003年1月,國(guó)家標(biāo)準(zhǔn)技術(shù)研究所,見(jiàn)http://csrc.nist.gov/CryptoToolkit/tkkeymgmt.html)。
完備前向保密注意,從一個(gè)密鑰建立事務(wù)到下一個(gè),共享秘密發(fā)生變化。如果丟失了來(lái)自特定事務(wù)的靜態(tài)(長(zhǎng)期)和瞬息(短期)的私用密鑰,則由于不同的瞬息私用密鑰用于每一個(gè)處理,所以不會(huì)泄露來(lái)自其它合法事務(wù)的共享秘密。
偽裝攻擊NIST指示,如果攻擊者泄露受害人的長(zhǎng)期私用密鑰在MQV中,攻擊者不能偽裝為針對(duì)受害人的第三方(見(jiàn)NIST Special Publication800-56Recommendation on Key Establishment schemes,Draft 2.0,2003年1月,國(guó)家標(biāo)準(zhǔn)技術(shù)研究所,可見(jiàn)http://csrc.nist.gov/CryptoToolkit/tkkeymgmt.html)。防止偽裝攻擊的能力是在用于空中下載密鑰產(chǎn)生的密鑰重置過(guò)程中利用MQV的上述方式的優(yōu)點(diǎn),這是由于如果缺少該特征,以及如果泄露了主機(jī)系統(tǒng)的長(zhǎng)期私用密鑰,則持有密鑰的攻擊者可以潛在地偽裝成為針對(duì)主機(jī)系統(tǒng)的任何移動(dòng)臺(tái)。
已經(jīng)描述了分別用于密鑰產(chǎn)生和密鑰重置的上述其它示例第一和第二協(xié)議,現(xiàn)在將描述其它示例方案。例如,可以使用在兩個(gè)系統(tǒng)之間安全雙向通信的方法。產(chǎn)生第一密鑰對(duì)和第二密鑰對(duì),后者包括根據(jù)共享密鑰產(chǎn)生的第二公共密鑰。將第一和第二公共密鑰發(fā)送至第二系統(tǒng),以及從第二系統(tǒng)中接收第三和第四公共密鑰。根據(jù)共享密鑰產(chǎn)生第四公共密鑰。根據(jù)第一私用密鑰、第二私用密鑰、第三公共密鑰和第四公共密鑰,計(jì)算用于加密消息的主密鑰。為了重置密鑰,產(chǎn)生具有新的第二公共密鑰和新的第二私用密鑰的新的第二密鑰對(duì),并接收新的第四公共密鑰。使用新的第二私用密鑰和新的第四公共密鑰,利用橢圓曲線(xiàn)計(jì)算來(lái)計(jì)算新的主密鑰。
作為另一示例,第一系統(tǒng)用于建立與第二系統(tǒng)的安全雙向通信路徑,以交換一個(gè)或多個(gè)消息。第一系統(tǒng)包括存儲(chǔ)器和與存儲(chǔ)器相連的處理單元。處理單元配置以執(zhí)行以下步驟產(chǎn)生具有第一公共密鑰和第一私用密鑰的第一密鑰對(duì);產(chǎn)生具有第二公共密鑰和第二私用密鑰的第二密鑰對(duì),第二公共密鑰是根據(jù)第一系統(tǒng)和第二系統(tǒng)已知的共享密鑰產(chǎn)生的;將第二公共密鑰和第一公共密鑰發(fā)送至第二系統(tǒng);接收由第二系統(tǒng)產(chǎn)生的第三公共密鑰和第四公共密鑰,第四公共密鑰是根據(jù)共享秘密產(chǎn)生的;根據(jù)第一私用密鑰、第二私用密鑰、第三公共密鑰和第四公共密鑰來(lái)計(jì)算第一主密鑰,其中,第一主密鑰配置以用于一個(gè)或多個(gè)消息的加密;產(chǎn)生具有新的第二公共密鑰和新的第二私用密鑰的新的第二密鑰對(duì);從第二系統(tǒng)中接收新的第四公共密鑰,以及根據(jù)第一私用密鑰、新的第二私用密鑰、第三公共密鑰和新的第四公共密鑰,使用橢圓曲線(xiàn)計(jì)算,計(jì)算新的主密鑰。
根據(jù)另一方案,任何形式的計(jì)算機(jī)可讀載體可以包含適用于使處理單元執(zhí)行在此所述的方法的處理指令。計(jì)算機(jī)可讀載體可以是任何適合類(lèi)型的載體,如,固態(tài)存儲(chǔ)器(例如,只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)等)、磁存儲(chǔ)器、光存儲(chǔ)器、其它類(lèi)型的存儲(chǔ)器、或者包含使處理單元執(zhí)行在此所述的技術(shù)的適合計(jì)算機(jī)指令集的調(diào)制波/信號(hào)(如,射頻、音頻、或光頻調(diào)制波/信號(hào))。
根據(jù)另一方案,計(jì)算機(jī)可讀載體包含適用于使處理單元執(zhí)行上述步驟的處理指令。
已經(jīng)描述了在無(wú)線(xiàn)或有線(xiàn)環(huán)境中,并且在需要時(shí)具有完備前向保密的示例的基于口令的加密通信系統(tǒng)。該系統(tǒng)包括與使用共享秘密產(chǎn)生的短期認(rèn)證密鑰對(duì)相組合地使用長(zhǎng)期密鑰對(duì),以允許實(shí)現(xiàn)完備前向保密。用認(rèn)證公共密鑰捎帶長(zhǎng)期公共密鑰,以實(shí)現(xiàn)可信的長(zhǎng)期密鑰的交換。這使得擁有共享秘密的對(duì)應(yīng)方能夠接收并能夠使用長(zhǎng)期公共密鑰。
已經(jīng)具體地描述了本發(fā)明的示例實(shí)施例,包括操作的示例操作方法,要理解,可以使用不同的要素和步驟來(lái)執(zhí)行這里描述的操作。示例實(shí)施例僅作為示例提出,并不是旨在限制本發(fā)明的范圍,本發(fā)明的范圍由所附權(quán)利要求限定。
權(quán)利要求
1.一種由第一系統(tǒng)執(zhí)行、以在第一系統(tǒng)與第二系統(tǒng)之間建立用于交換一個(gè)或多個(gè)消息的安全雙向通信路徑的方法,所述方法包括產(chǎn)生具有第一公共密鑰和第一私用密鑰的第一密鑰對(duì);產(chǎn)生具有第二公共密鑰和第二私用密鑰的第二密鑰對(duì),所述第二公共密鑰是根據(jù)所述第一系統(tǒng)和所述第二系統(tǒng)已知的共享秘密產(chǎn)生的;將所述第二公共密鑰和所述第一公共密鑰發(fā)送至所述第二系統(tǒng);接收由所述第二系統(tǒng)產(chǎn)生的第三公共密鑰和第四公共密鑰,所述第四公共密鑰是根據(jù)所述共享秘密產(chǎn)生的;根據(jù)所述第一私用密鑰、第二私用密鑰、第三公共密鑰和第四公共密鑰,計(jì)算第一主密鑰,其中,所述第一主密鑰配置以用于一個(gè)或多個(gè)消息的加密;產(chǎn)生具有新的第二公共密鑰和新的第二私用密鑰的新的第二密鑰對(duì);從所述第二系統(tǒng)接收新的第四公共密鑰,以及根據(jù)所述第一私用密鑰、新的第二私用密鑰、第三公共密鑰和新的第四公共密鑰,使用橢圓曲線(xiàn)計(jì)算,計(jì)算新的主密鑰。
2.如權(quán)利要求1所述的方法,還包括產(chǎn)生第一測(cè)試串;將所述第一測(cè)試字符串發(fā)送至所述第二系統(tǒng);接收由所述第二系統(tǒng)產(chǎn)生的第二測(cè)試串;以及使用所述第二測(cè)試串和所述第一主密鑰或所述新主密鑰,認(rèn)證所述第二系統(tǒng)。
3.如權(quán)利要求2所述的方法,還包括步驟在接收由所述第二系統(tǒng)產(chǎn)生的第二測(cè)試串的步驟之前,接收具有通用描述、發(fā)現(xiàn)和集成(UDDI)服務(wù)條目的數(shù)據(jù)有效載荷。
4.如權(quán)利要求1所述的方法,其中,所述第一系統(tǒng)是無(wú)線(xiàn)移動(dòng)設(shè)備。
5.如權(quán)利要求4所述的方法,其中,所述第二系統(tǒng)是提供服務(wù)的主機(jī)系統(tǒng)。
6.如權(quán)利要求4所述的方法,其中,所述共享秘密是在安全帶外信道上通信的。
7.如權(quán)利要求6所述的方法,其中,所述共享秘密是由所述主機(jī)系統(tǒng)自動(dòng)產(chǎn)生的個(gè)人標(biāo)識(shí)號(hào)碼(PIN)。
8.如權(quán)利要求6所述的方法,其中,在所述第一系統(tǒng)的請(qǐng)求之后,通過(guò)網(wǎng)絡(luò)接口從所述第二系統(tǒng)接收所述共享秘密。
9.如權(quán)利要求5所述的方法,其中,一個(gè)或多個(gè)消息的交換包括電子郵件消息、基于http的XML消息、或者基于http的WML消息的交換。
10.如權(quán)利要求5所述的方法,其中,使用電子郵件地址或IP地址,對(duì)所述無(wú)線(xiàn)移動(dòng)設(shè)備和所述主機(jī)系統(tǒng)進(jìn)行尋址。
11.如權(quán)利要求5所述的方法,其中,橢圓曲線(xiàn)計(jì)算用于計(jì)算所述第一主密鑰。
12.如權(quán)利要求1所述的方法,其中,所述第一系統(tǒng)是提供服務(wù)的主機(jī)系統(tǒng),以及所述第二系統(tǒng)是移動(dòng)無(wú)線(xiàn)設(shè)備。
13.如權(quán)利要求1所述的方法,其中,計(jì)算所述第一主密鑰利用安全散列算法(SHA)。
14.如權(quán)利要求1所述的方法,其中,計(jì)算新的主密鑰利用Menezez-Qu-Vanstone(MQV)算法。
15.如權(quán)利要求2所述的方法,其中,產(chǎn)生所述第一測(cè)試串利用散列消息認(rèn)證碼(HAMC)。
16.如權(quán)利要求1所述的方法,還包括使用所述第一主密鑰或新主密鑰來(lái)加密一個(gè)或多個(gè)消息。
17.一種數(shù)字信號(hào),包含根據(jù)權(quán)利要求16所述方法加密的一個(gè)或多個(gè)消息。
18.一種計(jì)算機(jī)可讀載體,包含適用于使處理單元執(zhí)行如權(quán)利要求1所述方法的處理指令。
19.一種第一系統(tǒng),用于建立與第二系統(tǒng)的安全雙向通信路徑,來(lái)交換一個(gè)或多個(gè)消息,所述第一系統(tǒng)包括用于產(chǎn)生具有第一公共密鑰和第一私用密鑰的第一密鑰對(duì)的裝置;用于產(chǎn)生具有第二公共密鑰和第二私用密鑰的第二密鑰對(duì)的裝置,所述第二公共密鑰是根據(jù)所述第一系統(tǒng)和所述第二系統(tǒng)已知的共享秘密產(chǎn)生的;用于將所述第二公共密鑰和所述第一公共密鑰發(fā)送至所述第二系統(tǒng)的裝置;用于接收由所述第二系統(tǒng)產(chǎn)生的第三公共密鑰和第四公共密鑰的裝置,所述第四公共密鑰是根據(jù)所述共享秘密產(chǎn)生的;用于根據(jù)所述第一私用密鑰、第二私用密鑰、第三公共密鑰和第四公共密鑰來(lái)計(jì)算第一主密鑰的裝置,其中,所述第一主密鑰配置以用于一個(gè)或多個(gè)消息的加密;用于產(chǎn)生具有新的第二公共密鑰和新的第二私用密鑰的新的第二密鑰對(duì)的裝置;用于從所述第二系統(tǒng)接收新的第四公共密鑰的裝置,以及用于根據(jù)所述第一私用密鑰、新的第二私用密鑰、第三公共密鑰和新的第四公共密鑰、使用橢圓曲線(xiàn)計(jì)算來(lái)計(jì)算新的主密鑰的裝置。
20.一種第一系統(tǒng),用于建立與第二系統(tǒng)的安全雙向通信路徑,來(lái)交換一個(gè)或多個(gè)消息,所述第一系統(tǒng)包括存儲(chǔ)器;以及處理單元,與所述存儲(chǔ)器相連,其中,所述處理單元配置以執(zhí)行以下步驟產(chǎn)生具有第一公共密鑰和第一私用密鑰的第一密鑰對(duì);產(chǎn)生具有第二公共密鑰和第二私用密鑰的第二密鑰對(duì),所述第二公共密鑰是根據(jù)所述第一系統(tǒng)和所述第二系統(tǒng)已知的共享秘密產(chǎn)生的;將所述第二公共密鑰和所述第一公共密鑰發(fā)送至所述第二系統(tǒng);接收由所述第二系統(tǒng)產(chǎn)生的第三公共密鑰和第四公共密鑰,所述第四公共密鑰是根據(jù)所述共享秘密產(chǎn)生的;根據(jù)所述第一私用密鑰、第二私用密鑰、第三公共密鑰和第四公共密鑰來(lái)計(jì)算第一主密鑰,其中,所述第一主密鑰配置以用于一個(gè)或多個(gè)消息的加密;產(chǎn)生具有新的第二公共密鑰和新的第二私用密鑰的新的第二密鑰對(duì);從所述第二系統(tǒng)接收新的第四公共密鑰,以及根據(jù)所述第一私用密鑰、新的第二私用密鑰、第三公共密鑰和新的第四公共密鑰,使用橢圓曲線(xiàn)計(jì)算,來(lái)計(jì)算新的主密鑰。
全文摘要
描述了一種用于在兩個(gè)系統(tǒng)之間進(jìn)行安全雙向通信的方法。產(chǎn)生第一密鑰對(duì)和第二密鑰對(duì),后者包括根據(jù)共享秘密產(chǎn)生的第二公共密鑰。向第二系統(tǒng)發(fā)送第一和第二公共密鑰,并從第二系統(tǒng)中接收第三和第四公共密鑰。根據(jù)共享秘密生成第四公共密鑰。根據(jù)第一私用密鑰、第二私用密鑰、第三公共密鑰和第四公共密鑰,計(jì)算用于加密消息的主密鑰。為了密鑰重置,產(chǎn)生具有新的第二公共密鑰和新的第二私用密鑰的新的第二密鑰對(duì),以及接收新的第四公共密鑰。利用橢圓曲線(xiàn)計(jì)算,使用新的第二私用密鑰和新的第四公共密鑰來(lái)計(jì)算新的主密鑰。
文檔編號(hào)H04L9/14GK1969501SQ200580019680
公開(kāi)日2007年5月23日 申請(qǐng)日期2005年5月2日 優(yōu)先權(quán)日2004年4月30日
發(fā)明者邁克爾·K·布朗, 赫伯特·A·利特爾, 大衛(wèi)·維克托·麥克法蘭, 邁克爾·S·布朗, 黛娜·萊亞·瑪麗·戴維斯 申請(qǐng)人:捷訊研究有限公司