專利名稱:配置和供應(yīng)無線手持設(shè)備的制作方法
技術(shù)領(lǐng)域:
本申請涉及一種在兩個消息系統(tǒng)之間建立可靠和安全的關(guān)系以交換數(shù)據(jù)的裝置和方法。更具體地,本申請說明了使用基于密碼認(rèn)證的方法在無線手持設(shè)備(“移動設(shè)備”)與消息中心或主機(jī)系統(tǒng)之間建立可靠關(guān)系的裝置和方法。這里說明的裝置和方法可以應(yīng)用于陸地線路環(huán)境和無線環(huán)境。
背景技術(shù):
當(dāng)前在計算機(jī)產(chǎn)業(yè)業(yè)中公知的基于密碼的堅固加密機(jī)制有多種。這些實現(xiàn)中的一些包括加密密鑰交換(EKE)、密碼導(dǎo)出模數(shù)(PDM)和簡單密碼認(rèn)證指數(shù)密鑰交換(SPEKE)。這些機(jī)制限于其實現(xiàn)并且不能達(dá)到移動設(shè)備的需求。另外,這些機(jī)制不能達(dá)到實現(xiàn)理想前向保密的需求,在理想前向保密中如果發(fā)生了安全破壞,那么所有先前交換的消息將保持安全。提供理想前向保密的協(xié)議即使在長期密鑰遭到泄密時,已進(jìn)行的通話密鑰也不會泄密(例如參見Menezes等著,Handbook of Applied Cryptography,1996,第496頁)。理想前向保密,也被稱為破壞后向保護(hù),意味著不論之后出現(xiàn)了什么情況,所有先前交換的消息都應(yīng)該保持安全。
發(fā)明內(nèi)容
描述了一種在無線或有線環(huán)境中具有理想前向保密的、基于密碼的加密通信系統(tǒng)。所述系統(tǒng)包括使用所產(chǎn)生的短期認(rèn)證密鑰對與使用共享秘密產(chǎn)生的而產(chǎn)生的長期密鑰對相結(jié)合,來實現(xiàn)理想前向保密。長期公有密鑰與認(rèn)證公有密鑰相關(guān)(piggy-back),以能夠進(jìn)行長期密鑰的認(rèn)證交換。這使擁有共享秘密的對應(yīng)方能夠接收并使用長期公有密鑰。
根據(jù)一個方面,描述了一種由第一系統(tǒng)執(zhí)行的方法,用于在第一系統(tǒng)與第二系統(tǒng)之間建立安全的雙向通信路徑以交換一個或多個消息。所述方法包括產(chǎn)生具有第一公有密鑰和第一私有密鑰的第一密鑰對;產(chǎn)生具有第二公有密鑰和第二私有密鑰的第二密鑰對。第二公有密鑰基于第一系統(tǒng)和第二系統(tǒng)已知的共享秘密而產(chǎn)生。所述方法還包括向第二系統(tǒng)發(fā)送第二公有密鑰和第一公有密鑰,并接收由第二系統(tǒng)產(chǎn)生的第三公有密鑰和第四公有密鑰,其中第四公有密鑰基于共享秘密而產(chǎn)生。所述方法還包括基于第一私有密鑰、第二私有密鑰、第三公有密鑰和第四公有密鑰來計算主密鑰,其中主密鑰被配置用于一個或多個消息的加密。
根據(jù)另一方面,系統(tǒng)包括存儲器和與存儲器相連的處理器,其中配置處理器以執(zhí)行上述步驟。
根據(jù)另一方面,計算機(jī)可讀載體包含適于使處理單元執(zhí)行上述步驟的處理指令。
圖1示出了位于固定系統(tǒng)和無線系統(tǒng)之間的第一典型通信系統(tǒng)的框圖。
圖2示出了位于兩個無線系統(tǒng)之間的第二典型通信系統(tǒng)的框圖。
圖3示出了位于兩個固定系統(tǒng)之間的第三典型通信系統(tǒng)的框圖。
圖4示出了用于實現(xiàn)圖1中的通信系統(tǒng)的典型數(shù)據(jù)集交換的消息交換圖,其中用戶是數(shù)據(jù)交換的發(fā)起者。
圖5示出了用于實現(xiàn)圖1中的通信系統(tǒng)的典型數(shù)據(jù)集交換的消息交換圖,其中服務(wù)提供商是數(shù)據(jù)交換的發(fā)起者。
圖6示出了用于實現(xiàn)圖4中的步驟的用戶軟件內(nèi)的步驟的數(shù)據(jù)流圖,其中用戶是密鑰交換的發(fā)起者。
圖7示出了用于實現(xiàn)圖4中的步驟的服務(wù)軟件內(nèi)的步驟的數(shù)據(jù)流圖,其中用戶是密鑰交換的發(fā)起者。
圖8示出了當(dāng)在圖1、2和3中示出的環(huán)境中再生另一個密鑰時再生密鑰序列的服務(wù)用戶內(nèi)的步驟的數(shù)據(jù)流圖。
圖9示出了當(dāng)在圖1、2和3中示出的環(huán)境中再生另一個密鑰時為再生密鑰序列提供的服務(wù)內(nèi)所需步驟的數(shù)據(jù)流圖。
具體實施例方式
參考圖1,示出了位于固定系統(tǒng)和無線系統(tǒng)之間的第一典型通信系統(tǒng)的框圖。這個概觀圖示出了使用本發(fā)明的網(wǎng)絡(luò)環(huán)境。本圖示出了本發(fā)明的典型實施例并集中于包括無線移動設(shè)備的網(wǎng)絡(luò)拓?fù)?。在圖中,具有服務(wù)提供系統(tǒng)20和22,以及服務(wù)使用系統(tǒng)30和32。在服務(wù)提供(這里也稱為服務(wù)提供商)與服務(wù)用戶之間是一個或多個網(wǎng)絡(luò)和一個或多個連接,用于使數(shù)據(jù)能夠在兩個系統(tǒng)之間流動。
轉(zhuǎn)向圖1,服務(wù)提供20和22能夠是向用戶提供服務(wù)的多種可能的計算機(jī)。對于本領(lǐng)域的技術(shù)人員來說,一些公知的服務(wù)提供商可以是因特網(wǎng)上的因特網(wǎng)服務(wù)提供商(ISP)或應(yīng)用服務(wù)提供商(ASP)辦公室內(nèi)部的計算機(jī)。服務(wù)提供20和22還可以是一個或多個運(yùn)行在私有或上市公司內(nèi)部的計算機(jī),例如銀行、股票經(jīng)紀(jì)人、保險經(jīng)紀(jì)人或其它一些面向服務(wù)的公司。服務(wù)提供20和22還可以作為在世界范圍內(nèi)操作的組成通用描述、發(fā)現(xiàn)和集成群集(UDDI群集)的計算機(jī)群集的一部分而運(yùn)行。所有這些服務(wù)提供20和22中的共同點(diǎn)是這些服務(wù)提供20和22需要與用戶建立安全數(shù)據(jù)信道。對于UDDI來說,可能需要安全關(guān)系以交換私有服務(wù)清單或甚至允許UDDI代理服務(wù)提供。
可以以多種不同的方式來尋址移動設(shè)備和服務(wù)主機(jī)。在一些實施例中,可以利用IP(互聯(lián)網(wǎng)協(xié)議)地址對移動設(shè)備和服務(wù)主機(jī)進(jìn)行尋址。在其它實施例中,主機(jī)系統(tǒng)可以由電子郵件地址來尋址。在另一實施例中,目的地址可以是主機(jī)系統(tǒng)內(nèi)部的移動設(shè)備的用戶的電子郵件地址。
本領(lǐng)域的技術(shù)人員將會理解,服務(wù)30和32的用戶可以是移動超文本傳輸協(xié)議(HTTP)瀏覽器、移動無線應(yīng)用協(xié)議(WAP)瀏覽器、基于私有傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP)的應(yīng)用或一些私有公司解決方案。在這個領(lǐng)域中,正在快速開發(fā)新的方法,與蜂窩電話和個人數(shù)字助理(PDA)相同,包括例如小型無線移動設(shè)備的新Java 2微型版(J2ME)解決方案。對于使用J2ME的設(shè)備,對通過服務(wù)提供來附加或下載軟件的選擇正在變得普通。相似地,服務(wù)提供20和22能夠基于HTTP網(wǎng)絡(luò)服務(wù)器解決方案、Java企業(yè)解決方案、基于無線標(biāo)記語言(WML)服務(wù)提供或針對特定目的創(chuàng)建的一些私有服務(wù)解決方案。
可以理解的是,這里所指的移動系統(tǒng)和主機(jī)系統(tǒng)每一個都能包括一個或多個各自的存儲器(例如包含處理指令)以及一個或多個各自的處理單元,例如那些通常公知的通用目的處理單元和/或特殊目的處理單元,例如專用集成電路(ASIC)和現(xiàn)場可編程門陣列(FPGA),其中處理單元能夠被配置(例如利用適合的軟件和/或固件指令進(jìn)行編程,和/或利用專門的硬件電路制造)用于實現(xiàn)這里描述的方法。這種系統(tǒng)中的每一個還能夠包括任意適合的接口,例如那些通常公知的、與各個處理單元相結(jié)合地操作以便與其它系統(tǒng)進(jìn)行通信的接口。
通信路徑中的端點(diǎn)通過允許交換數(shù)據(jù)、語音、視頻、音樂、照片或能夠通過數(shù)據(jù)通信信道進(jìn)行交換的任意其它數(shù)字媒體的一個或多個數(shù)據(jù)網(wǎng)絡(luò)相連。圖中包括的兩個主要網(wǎng)絡(luò)是因特網(wǎng)上最常見的廣域網(wǎng)(WAN)26和無線網(wǎng)絡(luò)28。無線網(wǎng)絡(luò)28可以是GSM/GPRS網(wǎng)絡(luò)、CDMA/1XRTT網(wǎng)絡(luò)、CDMA2000網(wǎng)絡(luò)、例如EDGE或UMTS的第三代網(wǎng)絡(luò)或即將可用的多種其它類型的公共無線網(wǎng)絡(luò)。在典型系統(tǒng)中,這些網(wǎng)絡(luò)使用例如ISDN、T1、以太網(wǎng)(陸地線路和802.11)幀中繼、ATM、ADSL或一些其它高速因特網(wǎng)連接的鏈路24連接到主機(jī)服務(wù)10b。隨著更多數(shù)量的數(shù)據(jù)被交換,可以明確的是需要改進(jìn)安全性并且對于黑客和竊聽者更加安全可靠。本發(fā)明對現(xiàn)有數(shù)據(jù)通信路徑進(jìn)行研究,以提供改進(jìn)的基于密碼的認(rèn)證。這種等級的安全性提供了更好的可信度,任意被傳送數(shù)據(jù)的接收方正是所期望的實體。在服務(wù)提供主機(jī)系統(tǒng)22與移動設(shè)備32上的服務(wù)用戶之間示出了數(shù)據(jù)通信路徑36的一個實施例。在UDDI服務(wù)提供20與移動設(shè)備30上的服務(wù)用戶之間示出了數(shù)據(jù)通信路徑40的另一實施例。
在一個實施例中,服務(wù)提供主機(jī)系統(tǒng)22具有與移動設(shè)備32的用戶有關(guān)的帶外(out-of-band)通信34(即,在任意適合的安全信道上的通信)。帶外通信34用于交換共享秘密,以避免不安全路徑被當(dāng)做安全路徑。由于UDDI服務(wù)云提供了一定等級的安全性,UDDI服務(wù)云可以用于定位服務(wù)并利用最終目的服務(wù)來接收帶外共享秘密。下面是帶外通信34和38的一些例子(a)移動設(shè)備用戶30或32以及主機(jī)系統(tǒng)20或22處的操作員彼此之間建立電話呼叫以交換共享秘密。然后,將秘密輸入入每一個系統(tǒng)并在建立加密密鑰的過程中使用。
(b)移動設(shè)備用戶30或32通過無線網(wǎng)絡(luò)或有線網(wǎng)絡(luò)中任意一種連接到安全網(wǎng)址20或22并請求密鑰。接收密鑰并手動地將密鑰輸入移動設(shè)備30或32。主機(jī)系統(tǒng)20或22可以自動地從網(wǎng)絡(luò)服務(wù)器接收密鑰,或者還可以手動地輸入。在一些實施例中,在請求共享秘密后自動地產(chǎn)生記錄。
(c)移動設(shè)備30或32的用戶為服務(wù)做出請求,并且共享秘密由主機(jī)系統(tǒng)20或22通過電子郵件發(fā)送至它們的公司郵箱(已知處于安全區(qū)域中)。用戶從他們的電子郵箱中檢索共享秘密,并手動地將其輸入到移動設(shè)備30或32。
(d)移動設(shè)備30或32的用戶為服務(wù)做出請求,并且服務(wù)20或22處的操作員產(chǎn)生共享秘密并將其提供給已知是可信和安全的特定個人。這個人可以是特定群組的秘書或管理者;理想地,可以是能夠確認(rèn)做出請求的用戶的身份的人。然后,這個可信的人將共享秘密提供給移動設(shè)備30或32的最終用戶,并且共享秘密被手動地輸入移動設(shè)備30或32。
這個短列表示出了有多種方式向移動設(shè)備20b用戶可信地提供共享秘密。這些典型帶外通信34和38的共同特性是其內(nèi)置了一定等級的認(rèn)證或假定了做出的選擇。這種認(rèn)證的通信路徑不同于未認(rèn)證的數(shù)據(jù)通信路徑。
一旦交換了共享秘密,創(chuàng)建安全通信路徑36和40的下一步驟能夠進(jìn)行。一種用于創(chuàng)建安全的和認(rèn)證的鏈路的已知方法是使用例如SPEKE的基于密碼的堅固加密方法。SPEKE是一種基于知識的認(rèn)證的加密方法,用于支持(leverage)并保護(hù)易于記憶的密碼(即共享秘密)。SPEKE是一種公知的最簡單的堅固密碼方法。它是認(rèn)證密碼Diffie-Hellman交換,其中密碼形成了交換的基數(shù)或“生成因素”(在標(biāo)準(zhǔn)Diffie-Hellman中,基數(shù)通常是固定公有數(shù))。一旦通過WAN26和無線網(wǎng)絡(luò)28的通信路徑是安全的,就可以發(fā)起再生密鑰序列。再生密鑰序列允許在預(yù)定數(shù)目的周或月之后產(chǎn)生新的密鑰集。在這個再生密鑰序列期間,對長期加密密鑰的高級使用允許實現(xiàn)理想前向保密。一旦認(rèn)證秘密(共享秘密)用于創(chuàng)建安全路徑,它在以后可以再使用以創(chuàng)建新的密鑰。通過使用本發(fā)明,再生密鑰操作不再包括先前的密鑰,并且所有先前的會話在將來會保持秘密。
轉(zhuǎn)向圖2,示出了根據(jù)本發(fā)明實施例的位于兩個無線系統(tǒng)之間的典型通信系統(tǒng)的框圖。在這個實施例中,能夠在兩個移動設(shè)備之間創(chuàng)建安全路徑。在這個實施例中,移動設(shè)備146和移動設(shè)備248交換秘密,并且能夠使用所述共享秘密來建立公共密鑰。帶外會話50可以通過兩方之間的電話呼叫、或面對面會議、使用已經(jīng)概述的其它方法之一或任意其它適合的方法來產(chǎn)生。一旦秘密被共享,它可以被手動地鍵入移動設(shè)備46和48,并且一個站可以發(fā)起消息交換以創(chuàng)建公共主安全密鑰。這種類型的實施例通常可以用于私有的點(diǎn)對點(diǎn)電子郵件會話。它還可以用于點(diǎn)對點(diǎn)的安全即時消息數(shù)據(jù)交換。在移動設(shè)備146的高級使用中,提供服務(wù)的一方可以在移動設(shè)備46上運(yùn)行網(wǎng)絡(luò)服務(wù)器,并提供一些移動形式的安全服務(wù)提供。
轉(zhuǎn)向圖3,示出了根據(jù)本發(fā)明實施例的位于兩個固定系統(tǒng)之間的典型通信系統(tǒng)的框圖。在這個實施例中,在兩個主機(jī)系統(tǒng)60和62之間發(fā)生通信。在圖中,服務(wù)提供60和服務(wù)消費(fèi)者62具有帶外會話66并交換秘密密鑰。如前所述,這個帶外通信可以是電話呼叫、通過具有安全SSL連接的瀏覽器以產(chǎn)生和檢索密鑰的通信或其它一些適合的通信(例如上文提出的)。一旦交換了秘密,就能夠使用例如SPEKE的基于密碼的堅固密鑰產(chǎn)生方法來產(chǎn)生加密密鑰。圖中用于交換密鑰的通信路徑可以基于例如因特網(wǎng)26的WAN網(wǎng)絡(luò)、通過互聯(lián)的內(nèi)部網(wǎng)64、其它適合的通信路徑(例如802.11或藍(lán)牙鏈路或與之類似)。在后面的這些示例中,服務(wù)消費(fèi)者62可以運(yùn)行膝上電腦或掌上電腦并已經(jīng)具有受限的內(nèi)部網(wǎng)訪問,但是需要更高的安全性。本領(lǐng)域中所公知的是,802.11b缺乏大多數(shù)公司內(nèi)部的大型計算機(jī)部門所請求的健壯安全需求。本實施例示出了本發(fā)明能夠在使用基于密碼的認(rèn)證機(jī)制時用于提供理想前向保密的選擇。一旦交換了適合的消息以創(chuàng)建主密鑰,數(shù)據(jù)通信路徑68能夠用于以較高的安全性秘密地交換所有形式的數(shù)據(jù)。
轉(zhuǎn)向圖4,示出了表示用于產(chǎn)生和驗證主密鑰的典型數(shù)據(jù)集交換的消息交換圖,其中用戶是數(shù)據(jù)交換的發(fā)起者。該圖示出了服務(wù)消費(fèi)者100(用戶)與服務(wù)提供商102之間的典型步驟和消息交換。圖中連接的一端被看作服務(wù)消費(fèi)者或用戶100,被標(biāo)記為系統(tǒng)A。連接的另一端被看作服務(wù)提供商(也被稱為服務(wù)提供)或主機(jī)系統(tǒng)102,被標(biāo)記為系統(tǒng)B。在這個示例中,用戶100發(fā)起數(shù)據(jù)交換以創(chuàng)建安全連接。系統(tǒng)A與系統(tǒng)B之間是通過一個或多個數(shù)據(jù)通信網(wǎng)絡(luò)(例如圖1中所示)的消息交換。與圖1、2和3所示相似,用戶可以是移動設(shè)備30、32或48,或是主機(jī)系統(tǒng)62。同樣,服務(wù)提供商可以是移動設(shè)備46或主機(jī)系統(tǒng)20、22或60。
如步驟104所示,用戶100通過針對帶外通信已經(jīng)描述的方法之一或通過另一適合的方法與已知服務(wù)提供商102聯(lián)系以交換共享秘密。該服務(wù)提供商102希望利于該交換并發(fā)出秘密密碼或簡單并易于記憶的密碼串(步驟106)。通過這種機(jī)制,產(chǎn)生共享秘密并在兩方之間交換。用戶100接收并保存秘密以助于加密密鑰生成??蛇x擇地,服務(wù)提供商102能夠從用戶100接收秘密密碼(共享秘密)。在任一情況下,服務(wù)提供商存儲與該用戶有關(guān)的共享秘密。
在交換了共享秘密后,用戶100發(fā)起(在本示例中)產(chǎn)生密鑰對的步驟(步驟108),并且將密鑰信息傳送到服務(wù)提供商(步驟110)。具體地,在步驟108處,用戶100產(chǎn)生長期加密密鑰對(即加密密鑰的公有和私有部分)。在步驟108處,用戶100還產(chǎn)生短期認(rèn)證密鑰對。在本示例中,這個短期密鑰對被稱為認(rèn)證密鑰對,因為其使用下文進(jìn)一步討論的共享秘密而產(chǎn)生。
一旦產(chǎn)生了用戶的短期和長期密鑰對,在步驟110處將其公有密鑰發(fā)送至服務(wù)提供商102以進(jìn)一步產(chǎn)生最終主密鑰(也被稱為主秘密)。該傳輸可以在不安全的鏈路上發(fā)生,這是由于發(fā)出共享秘密的主機(jī)系統(tǒng)102能夠理解并使用短期認(rèn)證密鑰以產(chǎn)生主密鑰。一旦服務(wù)提供商接收到用戶的公有密鑰(步驟112),驗證用戶,并且再次調(diào)用該用戶的共享秘密112。一旦驗證了用戶且再次調(diào)用了用戶的共享秘密,服務(wù)提供商102使用共享秘密繼續(xù)產(chǎn)生其自有的短期認(rèn)證密鑰對(步驟114)。服務(wù)提供商102還產(chǎn)生其自有的長期加密密鑰對(步驟114)。使用由用戶100產(chǎn)生的公有密鑰并使用共享秘密,服務(wù)提供商102產(chǎn)生主加密密鑰(或主秘密),如步驟116所示。共享秘密提供了必要的認(rèn)證以信任所交換的信息。服務(wù)提供商的短期公有認(rèn)證密鑰、服務(wù)提供商的長期公有加密密鑰以及由服務(wù)提供商使用最新產(chǎn)生的主加密密鑰和一些已知串計算出的密鑰確認(rèn)值被發(fā)送到用戶(步驟116)。
用戶從服務(wù)提供商102接收包括服務(wù)提供商的短期和長期公有密鑰的信息(步驟118),并產(chǎn)生用戶自有的主密鑰(步驟120)。用戶利用這個主密鑰驗證密鑰確認(rèn)值(步驟120)。在這個示例中,密鑰確認(rèn)值可以是主密鑰和服務(wù)名稱或其它一些已知串的散列,由用戶和服務(wù)提供商商議確定。如果密鑰確認(rèn)值沒有得到驗證,那么由用戶100創(chuàng)建的主密鑰是不可信的,這可能是某人試圖泄密連接。如果由用戶100產(chǎn)生的主控加密密鑰看起來是有效的,那么用戶返回向服務(wù)提供商發(fā)送最終密鑰確認(rèn)值(步驟122)。服務(wù)提供商接收消息,驗證密鑰確認(rèn)值并將用戶標(biāo)記為準(zhǔn)備好進(jìn)行下一步(步驟124)。這允許從服務(wù)提供商的角度進(jìn)行完全的數(shù)據(jù)交換(步驟128)。在用戶端,一旦發(fā)送了驗證消息,傳輸中將會出現(xiàn)輕微的暫停,但之后能夠開始進(jìn)行完全的數(shù)據(jù)交換(步驟126)。
傳輸可以包括電子郵件消息、基于HTTP(超文本傳輸協(xié)議)的業(yè)務(wù)(例如XML(擴(kuò)展標(biāo)記語言)、WML(無線標(biāo)記語言)等)或其它類型的業(yè)務(wù)。
在一些實施例中,主機(jī)系統(tǒng)能夠在最終確認(rèn)值從移動設(shè)備發(fā)送至主機(jī)系統(tǒng)前,在發(fā)送至移動設(shè)備的消息中發(fā)送數(shù)據(jù)有效載荷。消息中的有效載荷可以是定義了主機(jī)系統(tǒng)處的主機(jī)服務(wù)的服務(wù)分錄。在一些實施例中,服務(wù)分錄可以是定義了被訪問的主機(jī)系統(tǒng)處的主機(jī)服務(wù)的屬性的UDDI服務(wù)條目。
可以理解的是,這里描述的由第一方(例如用戶)產(chǎn)生的長期加密密鑰對是第一密鑰對的更一般示例,其中第一密鑰對的公有密鑰部分和私有密鑰部分可以被稱為第一公有密鑰和第一私有密鑰。相似地,這里描述的由第一方(例如用戶)產(chǎn)生的短期加密密鑰對是第二密鑰對的更一般示例,其中第二密鑰對的公有密鑰部分和私有密鑰部分可以被稱為第二公有密鑰和第二私有密鑰。同樣,這里描述的由第二方(例如服務(wù)提供商)產(chǎn)生的長期加密密鑰對是第三密鑰對的更一般示例,其中第三密鑰對的公有密鑰部分和私有密鑰部分可以被稱為第三公有密鑰和第三私有密鑰。相似地,這里描述的由第二方(例如服務(wù)提供商)產(chǎn)生的短期認(rèn)證(或加密)密鑰對是第四密鑰對的更一般示例,其中第四密鑰對的公有密鑰部分和私有密鑰部分可以被稱為第四公有密鑰和第四私有密鑰。產(chǎn)生第一和第二密鑰對的第一方可以是用戶,如上文中的示例中所描述;或者是服務(wù)提供商,如下文中的示例中所描述。
轉(zhuǎn)向圖5,示出了表示用于產(chǎn)生和驗證主密鑰的典型數(shù)據(jù)集交換的消息交換圖,其中服務(wù)提供商是數(shù)據(jù)交換的發(fā)起者。除了由服務(wù)提供商做出第一步,圖5中的步驟實質(zhì)上與圖4中的步驟相對應(yīng)。這個示例突出了用戶或服務(wù)提供商中任意一方都可以是數(shù)據(jù)交換的發(fā)起者。圖中連接的一端被看作用戶100,并被標(biāo)記為系統(tǒng)A-服務(wù)消費(fèi)者。連接的另一端被看作服務(wù)102,并被標(biāo)記為系統(tǒng)B-服務(wù)提供商。系統(tǒng)A100與系統(tǒng)B102之間是通過例如圖1、2和3中所示的一個或多個數(shù)據(jù)通信網(wǎng)絡(luò)的消息交換。相似地,如圖1、2和3中所示,用戶可以是移動設(shè)備30、32或48,或是主機(jī)系統(tǒng)20、22、46或60。
如步驟200/202所示,服務(wù)提供商102聯(lián)系用戶100(在本示例中)以交換共享秘密??蛇x擇地,用戶可以發(fā)起這個通信??梢栽O(shè)想,主機(jī)公司102內(nèi)部的管理者可以聯(lián)系用戶100并向用戶通知用戶已經(jīng)利用提供的共享秘密執(zhí)行了一些動作。使用從已經(jīng)提供的帶外通信的擴(kuò)展列表選擇的任意適合方法或其它一些適合方法,共享秘密得以產(chǎn)生并交換(步驟200和202)。用戶組件接收并保存共享秘密以幫助加密密鑰生成??蛇x擇地,服務(wù)提供商102能夠從用戶100接收共用密碼(共享秘密)。在任一情況下,服務(wù)提供商保存與該用戶有關(guān)的共享秘密。
在交換了共享秘密后,服務(wù)提供商102能夠發(fā)起(在本示例中)產(chǎn)生密鑰對的步驟(步驟204)并向用戶100傳輸密鑰信息(步驟206)。具體地,服務(wù)提供商102產(chǎn)生短期認(rèn)證密鑰對和長期加密密鑰對(步驟204)。這對應(yīng)于圖4中的步驟108。
一旦產(chǎn)生了服務(wù)提供商的短期和長期密鑰對,服務(wù)提供商的公有密鑰被發(fā)送至用戶(步驟206)以進(jìn)一步產(chǎn)生最終主密鑰(也被稱為主秘密)。該傳輸可以在不安全的鏈路上發(fā)生,由于共享秘密的擁有者將能夠理解并使用短期認(rèn)證密鑰以產(chǎn)生主密鑰。用戶接收服務(wù)提供商的公有密鑰,并檢查存儲器以驗證服務(wù)創(chuàng)建是期望的,并且具有保存在存儲器中的共享秘密(步驟208)。用戶再次調(diào)用服務(wù)提供商102的共享秘密并使用共享秘密產(chǎn)生短期認(rèn)證密鑰對(步驟210)。用戶還產(chǎn)生長期加密密鑰對(步驟210)。使用由服務(wù)提供商102產(chǎn)生并發(fā)送的公有密鑰并使用共享秘密,用戶100產(chǎn)生主加密密鑰(或主秘密),如步驟212處所示。在產(chǎn)生主密鑰后,用戶100還通過將已知串(即對其自身和服務(wù)提供已知)與主密鑰相結(jié)合來產(chǎn)生密鑰確認(rèn)值(步驟212)。用戶的短期公有認(rèn)證密鑰、長期公有加密密鑰和密鑰確認(rèn)值被發(fā)送至服務(wù)提供商(步驟212)。
服務(wù)提供商接收用戶的公有密鑰和密鑰確認(rèn)值并驗證信息的發(fā)送方(步驟214),并且還再次調(diào)用該用戶的共享秘密。利用接收到的用戶的公有密鑰值,服務(wù)提供商再次調(diào)用其自身保存的該用戶的私有密鑰值(步驟214)。使用接收到的用戶的公有密鑰和服務(wù)提供商保存的私有密鑰,現(xiàn)在服務(wù)提供商能夠產(chǎn)生主密鑰(步驟216)。在產(chǎn)生主密鑰后,服務(wù)提供商102通過計算其自有密鑰確認(rèn)值、使用已知串和最新創(chuàng)建的主密鑰以及將其與接收到的密鑰確認(rèn)值相比較,來驗證密鑰確認(rèn)值(步驟216)。如果密鑰確認(rèn)值沒有得到驗證,那么創(chuàng)建的主密鑰是不可信的,這可能是某人試圖泄密連接。如果密鑰確認(rèn)值得到了驗證,那么主控加密密鑰被看作是有效的,并且服務(wù)提供商102向用戶發(fā)送返回最終密鑰確認(rèn)值(步驟218)。用戶接收消息(步驟220),驗證密鑰確認(rèn)值,并將服務(wù)提供商標(biāo)記為準(zhǔn)備好進(jìn)行下一步(步驟220)。這允許從用戶的角度進(jìn)行完全的數(shù)據(jù)交換(步驟222)。在服務(wù)提供端,一旦發(fā)送了驗證消息,傳輸中將會出現(xiàn)輕微的暫停,但之后能夠開始進(jìn)行完全的數(shù)據(jù)交換(步驟224)。在多數(shù)情況下將是用戶發(fā)起第一數(shù)據(jù)交換;所以將確認(rèn)發(fā)送至用戶確實具有一些優(yōu)勢。
傳輸可以包括電子郵件消息、基于HTTP(超文本傳輸協(xié)議)的業(yè)務(wù)(例如XML(擴(kuò)展標(biāo)記語言)、WML(無線標(biāo)記語言)等)或其它類型的業(yè)務(wù)。
圖6是用于實現(xiàn)圖4中所示典型方法的由用戶執(zhí)行(例如在用戶軟件中)的典型步驟的數(shù)據(jù)流圖,其中用戶是密鑰交換的發(fā)起者。當(dāng)用戶發(fā)現(xiàn)新的服務(wù)并希望訪問該服務(wù)時,開始第一步(步驟300)。這可以通過例如UDDI服務(wù)、通過公司內(nèi)部網(wǎng)服務(wù)、通過瀏覽萬維網(wǎng)、通過與朋友會話或通過電話呼叫而出現(xiàn)。一旦連接了服務(wù)和用戶,它們交換只有它們兩個知道的共享秘密‘s’(步驟302)。對用于這種交換的典型方法已經(jīng)做了詳細(xì)的描述。這個共享秘密‘s’將在后文用作例如PIN(個人標(biāo)識號碼)以對用戶和服務(wù)彼此之間進(jìn)行認(rèn)證。當(dāng)用戶準(zhǔn)備好訪問服務(wù)時,用戶(例如在軟件中)產(chǎn)生所請求的服務(wù)的長期密鑰對(步驟304)。這個長期密鑰對是在將來再生密鑰操作期間所使用的密鑰值之一。對于本申請其余部分中的所有數(shù)學(xué)計算,假定參與交易的所有方已經(jīng)事先在組G、組的大小order(G)和G中的元素g(q=order(G)是一個較大的素數(shù))上達(dá)成一致。G和g可以是公知的,即,它們不需要保密。下文給出創(chuàng)建密鑰值的典型數(shù)學(xué)計算(使用SPEKE方法),雖然下文示出的典型計算利用了乘法組,可以明顯看出能夠使用加法組來實現(xiàn)適合的計算選擇長期密鑰對(例如,由用戶)
任選a,1<a<q-1;計算A=ga;如果A=1,繼續(xù)選擇不同的a直到A<>1。
數(shù)值‘A’是用戶的長期公有密鑰(或更一般地,是第一公有密鑰),數(shù)值‘a(chǎn)’是用戶的長期私有密鑰(或更一般地,第一私有密鑰)。
選擇的數(shù)字‘a(chǎn)’大于1并且小于素數(shù)q-1。一旦選擇了私有密鑰(即‘a(chǎn)’)并產(chǎn)生了公有密鑰(即‘A’),私有密鑰‘a(chǎn)’被安全地存儲,并且最終將公有密鑰‘A’發(fā)送至服務(wù)提供商。
用戶還基于共享秘密‘s’產(chǎn)生了短期認(rèn)證密鑰對(步驟306)。使用SPEKE密鑰產(chǎn)生方法之后的類似計算,這一步的典型數(shù)學(xué)計算是(例如使用像上文那樣對q和‘a(chǎn)’相同的假定(現(xiàn)在應(yīng)用到x))選擇短期認(rèn)證密鑰對(例如,由用戶)任選x,1<x<q-1;計算X=sx;如果X=1,繼續(xù)選擇新的x直到X<>1。
數(shù)值‘X’是用戶的短期公有密鑰(或更一般地,是第二公有密鑰),數(shù)值‘x’是用戶的短期私有密鑰(或更一般地,第二私有密鑰)。數(shù)值‘s’是共享秘密。
對‘x’的選擇在1和素數(shù)q-1之間。然后,用戶軟件將公有密鑰值‘A’和‘X’發(fā)送至服務(wù)提供(服務(wù)提供商),如步驟308所示。這一步驟繼續(xù)進(jìn)行到(A),其中服務(wù)提供接收數(shù)值并執(zhí)行附加計算,如圖7所示。一旦服務(wù)提供完成了那些計算,它向用戶返回服務(wù)提供自有的相似公有密鑰數(shù)值對‘B’和‘Y’以及密鑰確認(rèn)值,用于進(jìn)行驗證(步驟312),這將在下文結(jié)合圖7進(jìn)一步討論。這一步在圖6中示出為來自圖7的輸入(B)。在此處,用戶能夠使用‘B’和‘Y’,以使用例如高級SPEKE計算來創(chuàng)建主密鑰。通過同時使用‘B’和‘Y’以產(chǎn)生主密鑰,加密方法能夠?qū)崿F(xiàn)理想前向保密。這一點(diǎn)可以在后文示出的再生密鑰序列中更清楚地看到。典型的主密鑰計算如下計算主密鑰(例如,由用戶)k1=Y(jié)x;k2=Ba;檢查k1,k2?。?、1或order(G)-1;k=hash(k1||k2),其中||是concatentation函數(shù)。
這里,‘x’是用戶的短期私有認(rèn)證密鑰(或更一般地,是第二私有密鑰),‘Y’是接收到的服務(wù)提供的短期公有認(rèn)證密鑰(或更一般地,是第四公有密鑰)。此外,‘a(chǎn)’是用戶的長期私有加密密鑰(或更一般地,是第一私有密鑰),‘B’是接收到的服務(wù)提供的長期公有加密密鑰(或更一般地,是第三公有密鑰)。
數(shù)值‘k’表示能夠用于在用戶和服務(wù)之間加密數(shù)據(jù)的主密鑰。數(shù)值‘k’是中間密鑰‘k1’(基于短期認(rèn)證密鑰)和‘k2’(基于長期加密密鑰)的組合。能夠在步驟314處對中間密鑰k1和k2的值進(jìn)行重要檢查,以驗證這兩個數(shù)值不是0、1或order(G)-1;否則意味著出現(xiàn)了正在嘗試的安全攻擊314。這個攻擊將會造成密鑰是否被迫成為所有可能的密鑰中的小的子集。如果攻擊者發(fā)送X=0或Y=0,通信方將得到值為0的結(jié)果密鑰。這個快速的檢查將確保攻擊不會升級。如果k1或k2的數(shù)值沒有落入這些小的子集組中之一,那么能夠中止密鑰的協(xié)商316。
如果沒有檢測到子集攻擊,用戶能夠使用主密鑰‘k’來測試由服務(wù)提供發(fā)送的密鑰確認(rèn)值(步驟318)。一種用于產(chǎn)生密鑰確認(rèn)值的方法是利用例如公有密鑰‘A’中字節(jié)的已知串對密鑰進(jìn)行散列。測試密鑰確認(rèn)值的典型計算如下測試密鑰確認(rèn)值“接收到的hA” =hA=hash(k||公有密鑰‘A’中的字節(jié)),其中“接收到的hA”來自服務(wù)提供,且‘k’為本地主密鑰。
如果軟件的已產(chǎn)生密鑰確認(rèn)值‘A’與接收到的密鑰確認(rèn)值不匹配(步驟320),那么它是不正確的(步驟322)。不正確的密鑰確認(rèn)值可能意味著中間位置的人發(fā)動攻擊或嘗試進(jìn)行其它一些攻擊。這種情況下操作將會中止(步驟322)。如果兩個確認(rèn)值相匹配,則假定已經(jīng)建立了完全安全的鏈接(步驟324)。鏈接被標(biāo)記為有效,并且在短的延遲后將用于通信(步驟324)。使用最新產(chǎn)生的認(rèn)證密鑰,用戶發(fā)送這個值返回到服務(wù)(步驟326)。在標(biāo)號(C)之后回到圖6。在片刻的暫停后(即確保確認(rèn)值被服務(wù)提供所接收),用戶能夠交換數(shù)據(jù)(步驟328)。
任意適合的加密和解密方法能夠用于使用主密鑰對消息進(jìn)行加密和解密,例如像高級加密標(biāo)準(zhǔn)(AES)(Federal InformationProcessing Standards Publication197,November26,2001,NationalInstitute of Standards and Technology)的對稱密鑰加密/解密方法。
圖7是由服務(wù)提供(例如在服務(wù)提供商軟件內(nèi))執(zhí)行的典型步驟的數(shù)據(jù)流圖,用于實現(xiàn)圖4中示出的典型方法,其中用戶是圖4中所示密鑰交換的發(fā)起者。當(dāng)用戶聯(lián)系服務(wù)提供商以“帶外”的形式交換共享秘密時,該過程開始(步驟398)。這對應(yīng)于圖6中用戶設(shè)備上的步驟302。這個帶外交換已經(jīng)被多次討論,并且還提供了認(rèn)證等級,即,用戶和服務(wù)是它們自稱的用戶和服務(wù)。一旦這個交換完成,用戶可以在任意時間聯(lián)系服務(wù)以開始所述過程。一旦用戶沒有聯(lián)系主機(jī)服務(wù),由來自圖6中的用戶的流圖的消息(A)所示,新用戶得以驗證(步驟400)。因為服務(wù)提供商可能具有上千個希望在任意時間開始使用其服務(wù)的用戶,服務(wù)提供商是被動的,直到用戶決定希望開始服務(wù)。即使已經(jīng)交換了共享秘密,這可能意味著非常少且舊的共享秘密在用戶不能在那個時間周期中連接的一定天數(shù)后被清除。消息的到達(dá)允許服務(wù)提供商查找新用戶并驗證存在共享秘密(步驟400)。消息中是基于共享秘密的、用戶的公有短期認(rèn)證密鑰(步驟400)。消息還包含用戶的公有長期加密密鑰(步驟400),該密鑰能夠用于實施方式中,從而當(dāng)再生密鑰操作發(fā)生時創(chuàng)建理想前向保密,如圖7和8。
服務(wù)提供以與用戶創(chuàng)建的長期加密密鑰對相似的方式產(chǎn)生用戶的長期加密密鑰對(步驟402)。創(chuàng)建服務(wù)提供的長期加密密鑰對的典型數(shù)學(xué)計算如下(例如使用SPEKE方法)選擇長期密鑰對(例如,由服務(wù)提供商)任選b,1<b<q-1;計算B=gb如果B=1,繼續(xù)選擇不同的b直到B<>1。
數(shù)值‘B’是服務(wù)提供的(服務(wù)提供商的)長期公有密鑰(或更一般地,是第三公有密鑰),數(shù)值‘b’是服務(wù)提供的長期私有密鑰(或更一般地,是第三私有密鑰)。
選擇的數(shù)字‘b’大于1并小于素數(shù)q-1。一旦選擇了私有密鑰‘b’且產(chǎn)生了公有密鑰‘B’,那么私有密鑰‘b’被安全地存儲,并且最終公有密鑰‘B’被發(fā)送返回到用戶,從而用戶能夠在他的計算中使用公有密鑰‘B’。
服務(wù)提供還基于共享秘密產(chǎn)生短期認(rèn)證密鑰對(步驟404)。使用符合SPEKE密鑰產(chǎn)生方法的相似的計算,這一步的典型數(shù)學(xué)是(例如使用像上文那樣的對q和x相同的假定(現(xiàn)在應(yīng)用到y(tǒng)))選擇短期認(rèn)證密鑰對(例如,由服務(wù)提供商)任選y,1<y<q-1;計算Y=sy;如果Y=1,繼續(xù)選擇y直到Y(jié)<>1。
數(shù)值‘Y’是服務(wù)提供的(服務(wù)提供商的)公有短期認(rèn)證密鑰(或更一般地,是第四公有密鑰),數(shù)值‘y’是服務(wù)提供的私有短期認(rèn)證密鑰(或更一般地,是第四私有密鑰)。
對‘y’的選擇在1和素數(shù)q-1之間。公有密鑰值‘B’和‘Y’最終被發(fā)送至用戶以產(chǎn)生用戶自有的主密鑰。
然后,服務(wù)提供使用從用戶接收的公有密鑰‘A’和‘X’以及剛剛計算的私有密鑰來產(chǎn)生主密鑰(步驟406)。通過同時使用‘A’和‘X’以產(chǎn)生主密鑰,加密方法提供了理想前向保密。為了提供理想前向保密,本實施方式還使用任意再生密鑰序列期間中的后續(xù)密鑰的再發(fā)生的私有密鑰。典型的主密鑰計算如下計算主密鑰(例如,由服務(wù)提供商)k1=Xy;k2=Ab;檢查k1,k2?。?、1或order(G)-1;k=hash(k1||k2)。
這里,‘y’是服務(wù)提供的短期私有加密密鑰(或更一般地,是第四私有密鑰),‘X’是接收到的用戶的短期公有加密密鑰(或更一般地,是第二公有密鑰)。此外,‘b’是服務(wù)提供的長期私有密鑰(或更一般地,是第三私有密鑰),‘A’是接收到的用戶的長期公有加密密鑰(或更一般地,是第一公有密鑰)。
數(shù)值‘k’表示了由服務(wù)提供產(chǎn)生的主密鑰,它與由用戶產(chǎn)生的主密鑰相同。這個主密鑰能夠用于對服務(wù)和用戶之間的數(shù)據(jù)進(jìn)行加密。數(shù)值‘k’是中間密鑰‘k1’(基于短期認(rèn)證密鑰)和‘k2’(基于長期加密密鑰)的組合。在步驟408處能夠?qū)χ虚g密鑰k1和k2的數(shù)值進(jìn)行重要檢查,以驗證這兩個數(shù)值不是0、1或order(G)-1;否則意味著出現(xiàn)了正在嘗試的安全攻擊。這個攻擊將會造成密鑰是否被迫成為所有可能的密鑰中的小的子集。如果攻擊者發(fā)送X=0或Y=0,通信方將得到值為0的結(jié)果密鑰。這個快速的檢查將確保攻擊不會升級。如果k1或k2的數(shù)值沒有落入這些小的子集組中之一,那么能夠中止密鑰的協(xié)商(步驟410)。
如果沒有檢測到子集攻擊,服務(wù)提供能夠使用主密鑰‘k’來測試由用戶發(fā)送的密鑰確認(rèn)值(步驟416)。一種用于產(chǎn)生密鑰確認(rèn)值的方法是利用例如公有密鑰‘B’中的字節(jié)的已知串對密鑰進(jìn)行散列。測試串(密鑰確認(rèn)值)的典型計算如下測試密鑰確認(rèn)值hB=hash(k||公有密鑰“B”中的字節(jié))。
然后,服務(wù)提供將向用戶發(fā)送測試串,從而能夠?qū)τ脩舢a(chǎn)生的主密鑰和服務(wù)提供創(chuàng)建的主密鑰的匹配進(jìn)行驗證。然后,服務(wù)提供向用戶發(fā)送長期公有加密密鑰‘B’、短期公有認(rèn)證密鑰‘Y’(或第四公有密鑰)和驗證串hB(步驟414)。
一旦用戶已經(jīng)產(chǎn)生了其自有主密鑰‘k’,用戶發(fā)送返回最終密鑰確認(rèn)值,以確保服務(wù)提供知道一切工作正常(C)。這個最終步驟(C)在圖7中示出,作為步驟416處的服務(wù)提供的輸入。如果密鑰確認(rèn)值基于‘A’計算并被發(fā)送至服務(wù)提供(步驟416),則這正是測試所期待的(步驟418)。如果密鑰確認(rèn)值與期望值不匹配,那么操作中止(步驟420)。如果密鑰確認(rèn)值是匹配的,則假定存在完全的雙向加密和安全的數(shù)據(jù)通信路徑(步驟422)。
再生密鑰數(shù)據(jù)流序列圖8是示出了當(dāng)在圖1、2和3中示出的環(huán)境中再生另一個密鑰時,再生密鑰序列的用戶(例如軟件)內(nèi)的典型步驟的數(shù)據(jù)流圖。該過程示出了使用長期加密密鑰以實現(xiàn)理想前向保密的實用程序。當(dāng)用戶或服務(wù)提供兩者之一決定需要新密鑰時,所述過程開始。對于這個示例,將假定主機(jī)(服務(wù)提供商)正在運(yùn)行加密密鑰期滿定時器。然而,可以有多種其它方式來再生加密密鑰。用戶可以決定新密鑰的時間,用戶或服務(wù)可能擔(dān)心某人已經(jīng)嘗試攻擊并確定了當(dāng)前密鑰的值。不管怎樣,期望新的密鑰,并且能夠使用不是基于初始共享秘密的唯一方法來產(chǎn)生新的密鑰。
如圖8中的示例所示,用戶接收到再生密鑰請求,或者用戶決定刪節(jié)(cut)新的密鑰(步驟430)。當(dāng)然,步驟430可以由服務(wù)提供商而不是用戶來執(zhí)行。用戶軟件產(chǎn)生新的短期加密密鑰(步驟432)?;赟PEKE并使用相同序列的典型數(shù)學(xué)計算如下所示選擇新的短期加密密鑰對(例如,由用戶)任選x,1<x<q-1;計算X=gx;如果X=1,繼續(xù)選擇x直到X<>1。
這里,‘x’是為用戶的短期私有加密密鑰而產(chǎn)生的“新的”數(shù)值。數(shù)值‘x’能夠被稱為“加密”密鑰或“認(rèn)證”密鑰(如前所述),因為數(shù)值‘x’對兩個方面都有所貢獻(xiàn)。對‘x’的選擇必須在1和素數(shù)q-1之間。然后,用戶軟件將最新產(chǎn)生的公有密鑰值‘X’發(fā)送至服務(wù)提供商434。這一步繼續(xù)執(zhí)行到(D),服務(wù)提供商接收數(shù)值并執(zhí)行附加計算。步驟(D)進(jìn)入圖9,作為連接中的服務(wù)提供商端的輸入。
一旦服務(wù)提供商完成了圖9中(D)所示的那些計算,它返回相似的新的公有加密密鑰‘Y’(下文進(jìn)一步討論)和用于用戶驗證的密鑰確認(rèn)值(E)。這一步如圖8中的輸入(E)所示。這時,用戶能夠使用服務(wù)提供商的新的‘Y’密鑰和服務(wù)提供商的舊的長期公有‘B’密鑰,以利用例如高級SPEKE計算來創(chuàng)建主密鑰。通過同時使用現(xiàn)有‘B’和新的‘Y’以產(chǎn)生密鑰,加密方法能夠提供理想前向保密的實施方式。因為現(xiàn)有‘B’或新的‘Y’都不基于初始共享秘密,而且現(xiàn)有‘B’與新的‘B’相結(jié)合以創(chuàng)建新的密鑰不是直接基于先前的密鑰,所以能夠?qū)崿F(xiàn)理想前向保密。另外,現(xiàn)有‘B’密鑰攜帶了一些與初始共享秘密產(chǎn)生的認(rèn)證。只有認(rèn)證后的服務(wù)用戶(即初始擁有共享秘密的用戶)才能夠?qū)⑺接忻荑€‘b’保存到盤??梢栽趧?chuàng)建新的主密鑰‘k’的典型再生密鑰數(shù)學(xué)計算中更清楚地看出這一點(diǎn)計算主密鑰(例如,由用戶)k1=Y(jié)x;k2=Ba;
檢查k1,k2!=0、1或order(G)-1;k=hash(k1||k2)。
這里,‘x’是用戶的新的短期私有加密密鑰,‘Y’是接收到的、由服務(wù)提供商產(chǎn)生的新的短期公有加密密鑰。數(shù)值‘a(chǎn)’是用戶的現(xiàn)有長期私有加密密鑰,‘B’是服務(wù)提供商的現(xiàn)有長期公有加密密鑰。
數(shù)值‘k’表示了能夠用于對在用戶和服務(wù)提供商之間的數(shù)據(jù)進(jìn)行加密的新的主密鑰。數(shù)值‘k’是中間密鑰‘k1’(基于短期加密密鑰)和‘k2’(基于長期加密密鑰)的組合。能夠?qū)χ虚g密鑰k1和k2的值進(jìn)行重要檢查(步驟442)以驗證這兩個數(shù)值不是0、1或order(G)-1;否則意味著出現(xiàn)了正在嘗試的安全攻擊(步驟442)。如果k1或k2的數(shù)值沒有落入這些小的子集組中之一,那么能夠中止密鑰的協(xié)商(步驟444)。
如果沒有檢測到子集攻擊,新的主密鑰‘k’能夠用于測試由服務(wù)提供(服務(wù)提供商)發(fā)送的密鑰確認(rèn)值,如步驟446所示。一種用于產(chǎn)生密鑰確認(rèn)值的方法是對密鑰與例如公有密鑰‘A’中的字節(jié)的已知串進(jìn)行散列。用于計算密鑰確認(rèn)值的方法可以與上述方法相同。如果計算的密鑰確認(rèn)值與接收到的值不匹配(步驟448),則假定密鑰錯誤(步驟450)。不正確的密鑰確認(rèn)值可能意味著中間位置的人發(fā)動攻擊或嘗試進(jìn)行其它一些攻擊。否則用戶使用主密鑰‘k’來產(chǎn)生最終密鑰確認(rèn)值(步驟452)。密鑰確認(rèn)值被發(fā)送至服務(wù)提供商(步驟454)作為最終確認(rèn);如圖8中(F)處所示。然后在片刻的暫停后,新的加密密鑰在用戶軟件內(nèi)部使用(步驟456)。在短暫時期內(nèi),還出現(xiàn)了先前發(fā)送的消息能夠進(jìn)入的窗口。在這個幾分鐘的時期內(nèi),舊的密鑰得到保留并試驗是否出現(xiàn)解密錯誤(步驟456)。
現(xiàn)在轉(zhuǎn)向圖9,圖9示出了當(dāng)在圖1、2和3中示出的環(huán)境中再生另一個密鑰時,為再生密鑰序列提供的服務(wù)內(nèi)的典型步驟的數(shù)據(jù)流圖。這個過程示出了使用長期加密密鑰來實現(xiàn)理想前向保密的實用程序。在本實施例中,假定用戶已經(jīng)發(fā)起了過程并且已經(jīng)創(chuàng)建了圖8中所示的新的短期加密(或認(rèn)證)密鑰對。短期公有加密密鑰‘X’的到來被示為輸入(D)。接收到公有密鑰,且再次調(diào)用并檢查了用戶的配置信息(步驟460)。然后,服務(wù)提供產(chǎn)生新的短期加密密鑰對,用于在下一個時間段使用(步驟462)。創(chuàng)建新的短期加密密鑰的典型數(shù)學(xué)與上文已經(jīng)示出的相似,除了不使用共享秘密‘s’。
選擇新的短期加密密鑰對(例如,由服務(wù)提供商)隨機(jī)選擇y,1<y<q-1;計算Y=gy;如果Y=1,繼續(xù)隨機(jī)選擇y直到Y(jié)<>1。
對‘y’的選擇在1和素數(shù)q-1之間。最終將數(shù)值‘Y’發(fā)送至用戶以產(chǎn)生主密鑰(步驟472)。
在選擇了新的短期加密密鑰對后,服務(wù)提供商使用剛剛從用戶接收的數(shù)值‘X’和最新產(chǎn)生的數(shù)值‘y’產(chǎn)生了主密鑰。通過同時使用‘A’和‘X’以產(chǎn)生密鑰,加密方法提供了理想前向保密。典型主密鑰計算如下計算主密鑰(例如,由服務(wù)提供商)k1=Xy;k2=Ab;檢查k1,k2?。?、1或order(G)-1;k=hash(k1||k2)。
這里,‘y’是服務(wù)提供商的新的短期私有加密密鑰,‘X’是接收到的、由用戶產(chǎn)生的新的短期公有加密密鑰。數(shù)值‘b’是服務(wù)提供商的現(xiàn)有長期私有加密密鑰,‘A’是用戶的現(xiàn)有長期公有加密密鑰。
數(shù)值‘k’表示了服務(wù)提供的主密鑰(步驟464),將用于對在服務(wù)提供商和用戶之間的所有數(shù)據(jù)進(jìn)行加密。數(shù)值‘k’是中間密鑰‘k1’(基于新的短期加密密鑰)和‘k2’(基于長期加密密鑰)的組合。對‘k’的計算不是直接取決于初始共享秘密‘s’,而是取決于攜帶一些‘s’所初始提供的認(rèn)證的數(shù)值‘A’和‘b’。能夠?qū)χ虚g密鑰k1和k2的值進(jìn)行重要檢查(步驟466)以驗證這兩個數(shù)值不是0、1或order(G)-1;否則意味著出現(xiàn)了正在嘗試的安全攻擊。如果k1或k2沒有落入這些小的子集組中之一,那么能夠中止密鑰的協(xié)商(步驟468)。
如果沒有檢測到子集攻擊,主密鑰‘k’能夠用于測試由服務(wù)提供發(fā)送的密鑰確認(rèn)值(步驟470)。一種用于產(chǎn)生密鑰確認(rèn)值的方法是對密鑰與例如公有密鑰‘B’中的字節(jié)的已知串進(jìn)行散列(步驟470)。該計算可以與已經(jīng)描述的方法相似。然后服務(wù)提供將其新的短期公有加密密鑰‘Y’和密鑰確認(rèn)值hB發(fā)送至用戶(步驟472)。圖9至的傳輸箱(E)示出了對密鑰值和密鑰確認(rèn)值的傳輸。
一旦用戶已經(jīng)產(chǎn)生其自有的主密鑰‘k’,用戶就發(fā)送返回最終的密鑰確認(rèn)值以確保服務(wù)提供知道一切工作正常(圖8中的步驟454),如(F)所示。圖9中所示(F)處的最終步驟作為服務(wù)提供的輸入(步驟474)。如果計算了‘A’的密鑰確認(rèn)值并將其發(fā)送至服務(wù)提供(步驟474),則這就是測試所期望的(步驟476)。如果密鑰確認(rèn)值與期望值不匹配,則中止操作(步驟478)。如果密鑰確認(rèn)值得到驗證,則假定存在完全的雙向加密的和安全的數(shù)據(jù)通信路徑(步驟480)。服務(wù)器保持先前的密鑰幾分鐘以防在這個新的密鑰產(chǎn)生階段路由上出現(xiàn)分組。
根據(jù)另一方面,任意形式的計算機(jī)可讀載體能夠包含適于使處理單元執(zhí)行這里描述的方法的處理指令。計算機(jī)可讀載體可以是任意適合類型的載體,例如固態(tài)存儲器(例如只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)等)、磁性存儲器、光存儲器、其它類型的存儲器或調(diào)制的波形/信號(例如射頻、音頻或光頻調(diào)制的波形/信號),所述計算機(jī)可讀載體包含能使處理單元執(zhí)行這里描述的技術(shù)的合適的計算機(jī)指令集。
對包括典型操作方法的本發(fā)明的典型實施例進(jìn)行了詳細(xì)描述,可以理解的是,這里描述的操作可以利用不同的元件和步驟來執(zhí)行。示出典型實施例僅為了示例的目的,不意味著限制了本發(fā)明的范圍。本發(fā)明的范圍由所附權(quán)利要求來限定。
權(quán)利要求
1.一種由第一系統(tǒng)執(zhí)行的方法,用于在第一系統(tǒng)與第二系統(tǒng)之間建立安全的雙向通信路徑以交換一個或多個消息,所述方法包括產(chǎn)生具有第一公有密鑰和第一私有密鑰的第一密鑰對;產(chǎn)生具有第二公有密鑰和第二私有密鑰的第二密鑰對,第二公有密鑰基于第一系統(tǒng)和第二系統(tǒng)已知的共享秘密而產(chǎn)生;向第二系統(tǒng)發(fā)送第二公有密鑰和第一公有密鑰;接收由第二系統(tǒng)產(chǎn)生的第三公有密鑰和第四公有密鑰,第四公有密鑰基于所述共享秘密而產(chǎn)生;以及基于第一私有密鑰、第二私有密鑰、第三公有密鑰和第四公有密鑰來計算主密鑰,其中主密鑰被配置成用于一個或多個消息的加密。
2.根據(jù)權(quán)利要求1所述的方法,還包括產(chǎn)生測試串;向第二系統(tǒng)發(fā)送第一測試串;接收由第二系統(tǒng)產(chǎn)生的第二測試串;以及利用第二測試串和主密鑰來認(rèn)證第二系統(tǒng)。
3.根據(jù)權(quán)利要求2所述的方法,還包括步驟在接收由第二系統(tǒng)產(chǎn)生的第二測試串的步驟之前,接收具有通用描述、發(fā)現(xiàn)和集成(UDDI)服務(wù)條目的數(shù)據(jù)有效負(fù)荷。
4.根據(jù)權(quán)利要求1所述的方法,其中第一系統(tǒng)是無線移動設(shè)備。
5.根據(jù)權(quán)利要求4所述的方法,其中第二系統(tǒng)是服務(wù)提供主機(jī)系統(tǒng)。
6.根據(jù)權(quán)利要求4所述的方法,其中通過安全帶外信道來傳送共享秘密。
7.根據(jù)權(quán)利要求6所述的方法,其中共享秘密是由主機(jī)系統(tǒng)自動產(chǎn)生的個人標(biāo)識號碼(PIN)。
8.根據(jù)權(quán)利要求6所述的方法,其中通過網(wǎng)絡(luò)接口在第一系統(tǒng)的請求之后從第二系統(tǒng)接收共享秘密。
9.根據(jù)權(quán)利要求5所述的方法,其中交換一個或多個消息包括交換電子郵件消息、基于http的XML消息或基于http的WML消息。
10.根據(jù)權(quán)利要求5所述的方法,其中利用電子郵件地址或IP地址來尋址無線移動設(shè)備和主機(jī)系統(tǒng)。
11.根據(jù)權(quán)利要求5所述的方法,其中使用修改的簡單密碼指數(shù)密鑰交換(SPEKE)方法來計算主密鑰。
12.根據(jù)權(quán)利要求1所述的方法,其中第一系統(tǒng)是服務(wù)提供主機(jī)系統(tǒng),并且其中第二系統(tǒng)是移動無線設(shè)備。
13.根據(jù)權(quán)利要求1所述的方法,還包括使用主密鑰來加密一個或多個消息。
14.一種數(shù)字信號,包含根據(jù)權(quán)利要求13所述的方法加密的一個或多個消息。
15.一種計算機(jī)可讀載體,包含適于使處理單元執(zhí)行權(quán)利要求1的所述方法的處理指令。
16.一種第一系統(tǒng),用于建立與第二系統(tǒng)的安全的雙向通信路徑以交換一個或多個消息,所述第一系統(tǒng)包括產(chǎn)生具有第一公有密鑰和第一私有密鑰的第一密鑰對的裝置;產(chǎn)生具有第二公有密鑰和第二私有密鑰的第二密鑰對的裝置,基于第一系統(tǒng)和第二系統(tǒng)已知的共享秘密來產(chǎn)生第二公有密鑰;向第二系統(tǒng)發(fā)送第二公有密鑰和第一公有密鑰的裝置;接收由第二系統(tǒng)產(chǎn)生的第三公有密鑰和第四公有密鑰的裝置,基于共享秘密來產(chǎn)生第四公有密鑰;以及基于第一私有密鑰、第二私有密鑰、第三公有密鑰和第四公有密鑰來計算主密鑰的裝置,其中主密鑰被配置成用于一個或多個消息的加密。
17.一種第一系統(tǒng),用于建立與第二系統(tǒng)的安全的雙向通信路徑以交換一個或多個消息,所述第一系統(tǒng)包括存儲器;以及與存儲器相連的處理單元,其中處理單元被配置為執(zhí)行以下步驟產(chǎn)生具有第一公有密鑰和第一私有密鑰的第一密鑰對;產(chǎn)生具有第二公有密鑰和第二私有密鑰的第二密鑰對,基于第一系統(tǒng)和第二系統(tǒng)已知的共享秘密來產(chǎn)生第二公有密鑰;向第二系統(tǒng)發(fā)送第二公有密鑰和第一公有密鑰;接收由第二系統(tǒng)產(chǎn)生的第三公有密鑰和第四公有密鑰,基于共享秘密產(chǎn)生第四公有密鑰;以及基于第一私有密鑰、第二私有密鑰、第三公有密鑰和第四公有密鑰計算主密鑰,其中主密鑰被配置成用于一個或多個消息的加密。
全文摘要
描述了一種由第一系統(tǒng)執(zhí)行的方法,用于在第一系統(tǒng)與第二系統(tǒng)之間建立安全的雙向通信路徑以交換一個或多個消息。產(chǎn)生了具有第一公有密鑰和第一私有密鑰的第一密鑰對,并產(chǎn)生了具有第二公有密鑰和第二私有密鑰的第二密鑰對?;诘谝幌到y(tǒng)和第二系統(tǒng)已知的共享秘密來產(chǎn)生第二公有密鑰。第二公有密鑰和第一公有密鑰被發(fā)送至第二系統(tǒng)。接收由第二系統(tǒng)產(chǎn)生的第三公有密鑰和第四公有密鑰,其中基于共享秘密來產(chǎn)生第四公有密鑰?;诘谝凰接忻荑€、第二私有密鑰、第三公有密鑰和第四公有密鑰來計算主密鑰,其中主密鑰被配置成用于一個或多個消息的加密。
文檔編號H04L9/08GK101023622SQ200580017552
公開日2007年8月22日 申請日期2005年3月30日 優(yōu)先權(quán)日2004年4月2日
發(fā)明者赫伯特·A·利特爾, 邁克爾·K·布朗 申請人:捷訊研究有限公司