專(zhuān)利名稱(chēng):基于糾錯(cuò)碼的消息認(rèn)證碼的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及根據(jù)消息認(rèn)證碼處理消息以確定標(biāo)記值。
背景技術(shù):
數(shù)據(jù)完整性及可認(rèn)證性是任何保密數(shù)據(jù)通信系統(tǒng)中的基本要求,它們可確保信息未被非受權(quán)修改者修改。在無(wú)線通信方案中,對(duì)手?jǐn)r截并可能修改所傳數(shù)據(jù)的風(fēng)險(xiǎn)尤其高,因此特別需要完整性保護(hù)和認(rèn)證。
數(shù)據(jù)完整性可由消息認(rèn)證碼(MAC)來(lái)提供。MAC用于數(shù)據(jù)通信凈荷的完整性保護(hù),因?yàn)樗鼈兛商峁┮环N保護(hù)數(shù)量大得多的數(shù)據(jù)的計(jì)算高效的方法。
MAC基于發(fā)送方和接收方之間的對(duì)稱(chēng)共享秘密密鑰。該秘密值稱(chēng)為密鑰。秘密密鑰是MAC計(jì)算的一個(gè)輸入變量,要保護(hù)的消息則是另一個(gè)輸入。MAC計(jì)算得到稱(chēng)為標(biāo)記值的完整性校驗(yàn)值。僅擁有正確秘密密鑰的人才能夠計(jì)算任何給定消息的標(biāo)記值。在常規(guī)自動(dòng)完整性保護(hù)方案中,將計(jì)算的標(biāo)記值附加到消息中之后,才通過(guò)通信信道將該消息和標(biāo)記值傳送到接收方。當(dāng)接收到受MAC保護(hù)的消息時(shí),接收方基于接收到的數(shù)據(jù)和所述共享秘密密鑰計(jì)算對(duì)應(yīng)的標(biāo)記值。如果計(jì)算出的標(biāo)記值等于接收到的標(biāo)記值,則將該消息作為可信消息接收。例如,已知MAC的示例包括用于消息認(rèn)證的所謂鍵控散列(Keyed-Hashing)(HMAC)算法,這種算法基于密碼單向散列函數(shù),如保密散列算法SHA-1和消息摘要算法MD5。
在手動(dòng)認(rèn)證方案中,無(wú)需將計(jì)算出的標(biāo)記值追加到所傳消息中。在這種方案中,標(biāo)記值可由發(fā)送消息的設(shè)備和接收消息的設(shè)備來(lái)計(jì)算。然后,用戶比較計(jì)算的標(biāo)記值或手動(dòng)將計(jì)算的標(biāo)記值從一個(gè)設(shè)備傳送到另一個(gè)設(shè)備,以便該設(shè)備進(jìn)行比較。類(lèi)似地,在某些應(yīng)用中,MAC可用于對(duì)兩個(gè)不同設(shè)備單獨(dú)生成的數(shù)據(jù)項(xiàng)執(zhí)行完整性校驗(yàn)。因此,在此情況中,不將數(shù)據(jù)項(xiàng)從發(fā)送方傳送到接收方,因此無(wú)需將標(biāo)記值附加到數(shù)據(jù)中才執(zhí)行傳輸。
C.Gehrmann和K.Nyberg所著文章“基于籃牙的安全性增強(qiáng)”(″Enhancements to Bluetooth baseband security″,Proceedings ofNordsec 2001,Copenhagen,November 2001)介紹了一個(gè)這樣的實(shí)例Diffie-Hellman共享密鑰人工認(rèn)證方案,其中所述Diffie-Hellman共享密鑰是兩個(gè)設(shè)備先前生成的,任何時(shí)候無(wú)需通過(guò)通信鏈路傳送。該方法基于如下假定如果Diffie-Hellman密鑰交換過(guò)程中存在中間人,則既定的Diffie-Hellman密鑰在合法設(shè)備中是不同的。根據(jù)此方法,按如下方式認(rèn)證所生成的共享密鑰人工交換秘密密鑰;根據(jù)生成的共享密鑰和秘密密鑰計(jì)算消息認(rèn)證碼的標(biāo)記值。
在這種包括用戶交互的情形中,需要使標(biāo)記值長(zhǎng)度很短,以便用戶比較或傳遞標(biāo)記值可行,即為了減少這種人工比較所需的時(shí)間以及降低出錯(cuò)的風(fēng)險(xiǎn)。
G.Kabatianskii、B.Smeets和T Johansson所著的“關(guān)于借助糾錯(cuò)碼的系統(tǒng)A-碼的基數(shù)”(″On the cardinality of systematic A-codes viaerror correcting codes″,IEEE transaction on Information theory,vol.IT-42,pp.566-578,1996)中描述了消息認(rèn)證碼和糾錯(cuò)碼之間的關(guān)系,并公開(kāi)了基于糾錯(cuò)碼的MAC的構(gòu)造,其中將所述糾錯(cuò)碼劃分成等效類(lèi),以便由單一碼字代替所有相差一個(gè)常數(shù)的碼字,從而生成新碼,即所說(shuō)的因子碼(factor code)。然后基于兩個(gè)密鑰由該因子碼的碼元計(jì)算標(biāo)記值。
發(fā)明概述本發(fā)明的目的在于提供一種甚至在標(biāo)記尺寸小且密鑰尺寸小的情況下提供高級(jí)防偽保護(hù)的消息認(rèn)證碼標(biāo)記值。
上述和其他目的通過(guò)一種根據(jù)消息認(rèn)證碼處理消息以由該消息和密鑰確定標(biāo)記值的方法來(lái)實(shí)現(xiàn),所述方法包括-選擇多個(gè)碼元之一,所述多個(gè)碼元構(gòu)成對(duì)從所述消息導(dǎo)出的數(shù)據(jù)項(xiàng)進(jìn)行編碼的碼字,所述碼字根據(jù)糾錯(cuò)碼對(duì)所述數(shù)據(jù)項(xiàng)進(jìn)行編碼,其中,所述密鑰確定選擇所述多個(gè)碼元中的哪一個(gè);以及-確定所述標(biāo)記值為所述選擇的碼元。
本發(fā)明人已認(rèn)識(shí)到,上述方法甚至在標(biāo)記尺寸小且密鑰尺寸小的情況下提供高級(jí)防偽保護(hù)。
另一個(gè)優(yōu)點(diǎn)是,通過(guò)直接選擇作為糾錯(cuò)碼碼字的碼元的標(biāo)記值,提供了計(jì)算有效的MAC構(gòu)造。
在一個(gè)實(shí)施例中,由消息導(dǎo)出的數(shù)據(jù)項(xiàng)是所述消息本身。因此,在本實(shí)施例中,消息直接用作糾錯(cuò)碼的輸入。
在另一個(gè)實(shí)施例中,由消息導(dǎo)出的數(shù)據(jù)項(xiàng)是由消息本身計(jì)算的單向散列函數(shù)的散列值,從而縮小了消息的尺寸并允許進(jìn)一步縮減所述密鑰和/或標(biāo)記值的尺寸,同時(shí)仍保持同樣等級(jí)的安全性。
還有一個(gè)優(yōu)點(diǎn)是,本發(fā)明提供的安全性基于MAC函數(shù)的絕對(duì)安全性,而非不像將使用長(zhǎng)散列碼的散列函數(shù)用作MAC函數(shù)的情況那樣依賴(lài)于計(jì)算安全性。
具體而言,本發(fā)明人已意識(shí)到,以上及以下所述的MAC構(gòu)造甚至為短標(biāo)記值和段密鑰(即長(zhǎng)度小于10-15個(gè)數(shù)字和/或字符和/或其他碼元的標(biāo)記和密鑰,例如4-6個(gè)十六進(jìn)制字符)提供了足夠低的偽造概率,從而允許用戶傳送和/或比較標(biāo)記值。
為說(shuō)明目的,術(shù)語(yǔ)“消息”意指包括任何要驗(yàn)證其完整性和/或可靠性的數(shù)字?jǐn)?shù)據(jù)項(xiàng)。消息的實(shí)例包括如通過(guò)無(wú)線通信鏈路從發(fā)送方傳送到接收方的數(shù)據(jù)項(xiàng)、不同設(shè)備單獨(dú)或或協(xié)作生成的數(shù)據(jù)項(xiàng)等。
在一個(gè)實(shí)施例中,通過(guò)第一通信信道將消息的至少一個(gè)成分從發(fā)送方發(fā)送到接收方;通過(guò)不同于所述第一信道的第二通信信道傳送所述標(biāo)記值和(可選的)密鑰。在一個(gè)實(shí)施例中,所述第二通信信道包括用戶交互。
例如,可以傳送整個(gè)消息,或者,在一些實(shí)施例中,參與通信的每個(gè)設(shè)備可以生成最終消息的一個(gè)成分并將該成分發(fā)送到相應(yīng)的另一個(gè)設(shè)備。兩個(gè)設(shè)備隨后生成該最終消息。在此情況中,可以通過(guò)以上和以下所述的方法對(duì)所傳送的一個(gè)或多個(gè)成分和/或最終消息進(jìn)行驗(yàn)證。
其他一些最佳實(shí)施例在從屬權(quán)利要求中公開(kāi)。
要注意,以上和以下所述方法的特征可以用軟件實(shí)現(xiàn),并且可以在數(shù)據(jù)處理系統(tǒng)或通過(guò)運(yùn)行計(jì)算機(jī)可執(zhí)行指令促成的其他處理裝置中執(zhí)行。所述指令可以是從存儲(chǔ)介質(zhì)或通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)從另一個(gè)計(jì)算機(jī)加載到存儲(chǔ)器(如RAM)中的程序代碼單元。或者,所述特征可以通過(guò)硬連線電路而非軟件的形式來(lái)實(shí)現(xiàn),或者以軟硬件結(jié)合的方式來(lái)實(shí)現(xiàn)。
本發(fā)明可以多種不同的方式實(shí)施,包括以上和以下所述的方法、通信設(shè)備及其他產(chǎn)品裝置;它們均具有結(jié)合首先描述的方法所述的一個(gè)或多個(gè)優(yōu)點(diǎn),并且均具有一個(gè)或多個(gè)對(duì)應(yīng)于結(jié)合首先描述的方法所述的以及在從屬權(quán)利要求中公開(kāi)的優(yōu)選實(shí)施例的優(yōu)選實(shí)施例。
本發(fā)明還涉及一種用于傳送數(shù)據(jù)消息的通信設(shè)備,所述通信設(shè)備包括處理裝置,其適于根據(jù)消息認(rèn)證碼由消息和密鑰確定標(biāo)記值;所述處理裝置適于-選擇多個(gè)碼元之一,所述多個(gè)碼元構(gòu)成對(duì)從所述消息導(dǎo)出的數(shù)據(jù)項(xiàng)進(jìn)行編碼的碼字,所述碼字根據(jù)糾錯(cuò)碼對(duì)所述數(shù)據(jù)項(xiàng)進(jìn)行編碼,其中所述密鑰確定選擇所述多個(gè)碼元中的哪一個(gè);以及-確定所述標(biāo)記值為所述選擇的碼元。
術(shù)語(yǔ)“通信設(shè)備”包括含有適合電路以接收和/或發(fā)送通信信號(hào)(例如無(wú)線電通信信號(hào)),以促進(jìn)數(shù)據(jù)通信的任何設(shè)備。此類(lèi)設(shè)備的實(shí)例包括便攜式無(wú)線電通信設(shè)備和其他手持或便攜式設(shè)備。術(shù)語(yǔ)“便攜式無(wú)線電通信設(shè)備”包括諸如移動(dòng)電話、傳呼機(jī)、通信器(即電子組織器)、智能電話、個(gè)人數(shù)字助理(PDA)、手持計(jì)算機(jī)之類(lèi)的所有設(shè)備。
通信設(shè)備的其他一些實(shí)例包括固定通信設(shè)備,例如包括無(wú)線通信接口的固定計(jì)算機(jī)或其他電子設(shè)備。在一個(gè)實(shí)施例中,這些設(shè)備之一可以是網(wǎng)絡(luò)設(shè)備,例如提供至計(jì)算機(jī)網(wǎng)絡(luò)如LAN的無(wú)線接入的計(jì)算機(jī)網(wǎng)絡(luò)接入點(diǎn)。
這里,術(shù)語(yǔ)“處理裝置”包括任何適于執(zhí)行上述功能的電路和/或設(shè)備。具體而言,上述術(shù)語(yǔ)包括通用或?qū)S每删幊涛⑻幚砥?、?shù)字信號(hào)處理器(DSP)、專(zhuān)用集成電路(ASIC)、可編程邏輯陣列(PLA)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、專(zhuān)用電子電路等或它們的組合。
附圖簡(jiǎn)介下面通過(guò)參考附圖描述本發(fā)明實(shí)施例,闡明本發(fā)明的上述和其他方面
圖1顯示涉及用戶交互的消息認(rèn)證方案的一個(gè)實(shí)例的流程圖;圖2顯示涉及用戶交互的消息認(rèn)證方案的另一個(gè)實(shí)例的流程圖;圖3顯示基于糾錯(cuò)碼計(jì)算消息認(rèn)證碼的方法的流程圖;圖4a-4b顯示基于里德-所羅門(mén)(Reed-Solomon)碼計(jì)算消息認(rèn)證碼的方法實(shí)例的流程圖;圖5是說(shuō)明對(duì)圖4a-4b的MAC構(gòu)造的多個(gè)構(gòu)造實(shí)例實(shí)施的替代攻擊的成功概率的表格;圖6顯示兩個(gè)通信設(shè)備的示意框圖;圖7說(shuō)明安全密鑰交換機(jī)制的一個(gè)實(shí)施例,其中,所生成的共享密鑰的成分通過(guò)無(wú)線通信鏈路傳送,并通過(guò)結(jié)合圖3和圖4a-4b所述的消息認(rèn)證方法進(jìn)行認(rèn)證。
優(yōu)選實(shí)施例的詳細(xì)描述圖1顯示涉及用戶交互的消息認(rèn)證方案的一個(gè)實(shí)例的流程圖。該消息認(rèn)證方案涉及兩個(gè)設(shè)備,一般地分別表示為A和B。流程圖左邊的步驟(一般地表示為引用號(hào)101)由設(shè)備A來(lái)執(zhí)行;流程圖右邊的步驟(一般地表示為引用號(hào)102)由設(shè)備B來(lái)執(zhí)行。
在圖1的實(shí)例中,兩個(gè)設(shè)備已存儲(chǔ)消息d,分別如方框103和109所示。例如,消息d可能已由這兩個(gè)設(shè)備之一生成,并發(fā)送到另一個(gè)設(shè)備;或者,這兩個(gè)設(shè)備可以從一個(gè)或多個(gè)其他設(shè)備接收消息d,或者它們可以彼此協(xié)作和/或與第三方設(shè)備協(xié)作生成該消息。
為了驗(yàn)證兩個(gè)設(shè)備已存儲(chǔ)了相同的消息,在初始步驟104,設(shè)備A生成密鑰k,例如長(zhǎng)度合適的、從合適的密鑰空間選擇的秘密字符串。在步驟105中,設(shè)備A例如通過(guò)無(wú)線通信鏈路或兩設(shè)備之間的另一種適合的數(shù)據(jù)連接將所生成的密鑰發(fā)送給設(shè)備B。在步驟110中,設(shè)備B接收該密鑰。下文中,將設(shè)備B接收的密鑰表示為k’。
在步驟106中,設(shè)備A將設(shè)備A存儲(chǔ)的消息和設(shè)備A生成的密鑰k用作輸入來(lái)計(jì)算MAC函數(shù)的標(biāo)記值t。類(lèi)似地,在步驟111,設(shè)備B將接收到的密鑰k和設(shè)備B存儲(chǔ)的消息d用作輸入來(lái)計(jì)算與設(shè)備A相同的MAC函數(shù)的對(duì)應(yīng)標(biāo)記值t′。
在步驟107中,設(shè)備A向設(shè)備A的用戶顯示計(jì)算的標(biāo)記值t和生成的密鑰k。類(lèi)似地,在步驟112中,設(shè)備B向設(shè)備B的用戶顯示設(shè)備B計(jì)算的標(biāo)記值t′和接收到的密鑰k’。用戶比較所顯示的值,以判斷它們是否相等,即是否t=t′。例如,如果設(shè)備在彼此附近,則用戶可以直接比較顯示的值。如果兩個(gè)設(shè)備彼此遠(yuǎn)離,則設(shè)備A的用戶可以從設(shè)備A讀出標(biāo)記值t和密鑰k,將該標(biāo)記值和密鑰傳給設(shè)備B的用戶,例如通過(guò)電話或其他通信方式傳送,由此,設(shè)備B的用戶可以執(zhí)行與設(shè)備B顯示的標(biāo)記值t′和密鑰k′的比較。
在步驟108和114中,如果標(biāo)記值和密鑰相等,則設(shè)備A和B的用戶分別通過(guò)例如按下“確定”按鈕來(lái)輸入上述比較結(jié)果;如果這兩個(gè)值不相等,則按下“取消”按鈕。
要明確的是,可以實(shí)施用戶輸入認(rèn)證結(jié)果的各種替代實(shí)施例。例如,可以只要求用戶在所述設(shè)備之一中輸入該結(jié)果。在另一個(gè)實(shí)施例中,如果用戶未在預(yù)定時(shí)間內(nèi)按下“確定”按鈕,則設(shè)備可以假定認(rèn)證未成功。
如果標(biāo)記值和密鑰相等,則存儲(chǔ)在兩個(gè)設(shè)備中的消息成功通過(guò)認(rèn)證,于是設(shè)備A和B可以繼續(xù)對(duì)消息進(jìn)行各自相應(yīng)的處理。因此,圖1的認(rèn)證方案涉及如虛線箭頭114所示的用戶交互,因?yàn)橛脩魧?duì)顯示的值進(jìn)行比較,并向設(shè)備指示比較結(jié)果。
圖2顯示涉及用戶交互的消息認(rèn)證方案的另一個(gè)實(shí)例的流程圖。該消息認(rèn)證方案也涉及兩個(gè)設(shè)備A和B,該流程圖左邊的步驟(一般地表示為引用號(hào)201)由設(shè)備A來(lái)執(zhí)行;流程圖右邊的步驟(一般地表示為引用號(hào)202)由設(shè)備B來(lái)執(zhí)行。
與上述示例一樣,兩個(gè)設(shè)備存儲(chǔ)消息d,分別如方框103和109所示。為了驗(yàn)證兩個(gè)設(shè)備已存儲(chǔ)相同的消息,在初始步驟104中,備A生成密鑰k。
在步驟205中,設(shè)備A將設(shè)備A存儲(chǔ)的消息d和設(shè)備A生成的密鑰k用作輸入來(lái)計(jì)算MAC函數(shù)的標(biāo)記值t。
在步驟206,設(shè)備A向設(shè)備A的用戶顯示生成的密鑰k和計(jì)算的標(biāo)記值t。例如,這些值可以顯示為兩個(gè)單獨(dú)的值或級(jí)聯(lián)成一個(gè)字符串。
設(shè)備A的用戶讀出所顯示的值,并將其輸入到設(shè)備B中(步驟208)。例如,該用戶可以通過(guò)設(shè)備B的鍵盤(pán)或小鍵盤(pán),或通過(guò)任何適合的輸入裝置來(lái)輸入這些值。要明確的是,例如如果兩個(gè)設(shè)備彼此遠(yuǎn)離,則設(shè)備A的用戶可以將這些值傳送給設(shè)備B的用戶,例如通過(guò)電話或其他通信手段傳送,以便設(shè)備B的用戶可以將這些值輸入設(shè)備B中。
在后續(xù)步驟209中,設(shè)備B將輸入的密鑰k和設(shè)備B存儲(chǔ)的消息d用作輸入來(lái)計(jì)算與設(shè)備A相同的MAC函數(shù)的標(biāo)記值t′。
在步驟210,設(shè)備B將計(jì)算的標(biāo)記值t′與設(shè)備B的用戶輸入的標(biāo)記值t進(jìn)行比較。如果這兩個(gè)標(biāo)記值相等,則該消息成功通過(guò)認(rèn)證(步驟211);否則消息d視為已被破壞而被拒絕(步驟212)。在一個(gè)實(shí)施例中,設(shè)備B可以向設(shè)備的用戶顯示對(duì)應(yīng)的消息,以指示認(rèn)證結(jié)果。作為替代或者補(bǔ)充,設(shè)備B可以向設(shè)備A發(fā)送對(duì)應(yīng)的消息。
圖2的認(rèn)證方案也涉及虛線箭頭213所示的用戶交互。
因此,以上描述了涉及用戶交互的兩個(gè)認(rèn)證方案實(shí)例。在上述方案中,用戶要讀出和/或輸入至少作為MAC函數(shù)輸入的密鑰k和通過(guò)MAC函數(shù)計(jì)算的標(biāo)記值t之一。用戶甚至可只需通過(guò)例如電話將這些值傳送給另一個(gè)用戶。因此,在上述的和相似的方案中,最好使標(biāo)記值和密鑰的尺寸很小,而又不會(huì)降低認(rèn)證方案提供的安全性。
還要明確的是,上述方案僅僅作為一些實(shí)例,存在許多其他涉及用戶交互的認(rèn)證方案。例如,在一個(gè)實(shí)施例中,可以由第三方設(shè)備生成密鑰k,并將其傳送到設(shè)備A和B,或者可以由用戶例如以PIN號(hào)碼的形式生成密鑰并將其輸入到兩個(gè)設(shè)備中,或者可以將密鑰硬編碼到兩個(gè)設(shè)備中,如此等等。此外,可以在進(jìn)行實(shí)際認(rèn)證很早以前就由設(shè)備A生成密鑰及(可能還有)標(biāo)記值。例如,結(jié)合設(shè)備A生成消息d,設(shè)備A可以生成密鑰和標(biāo)記值。在另一個(gè)實(shí)施例中,可以從設(shè)備A將傳送的參數(shù)(即圖1中的密鑰k或圖2中的密鑰和標(biāo)記值)傳送到設(shè)備B可訪問(wèn)的第三方設(shè)備。例如,如果設(shè)備B是計(jì)算機(jī)網(wǎng)絡(luò)的網(wǎng)絡(luò)設(shè)備,則可以將上述參數(shù)傳送到該計(jì)算機(jī)網(wǎng)絡(luò)的另一個(gè)計(jì)算機(jī),這些參數(shù)可以存儲(chǔ)在該計(jì)算機(jī)上并在以后由設(shè)備B檢索。
圖3顯示基于糾錯(cuò)碼計(jì)算消息認(rèn)證碼的方法的流程圖。在圖3的實(shí)例中,假定要利用消息認(rèn)證碼(MAC)認(rèn)證來(lái)自數(shù)據(jù)空間D的數(shù)據(jù)項(xiàng)d,例如與圖1所示步驟106和111中一樣,或者例如與圖2所示步驟205和209中一樣。例如,數(shù)據(jù)項(xiàng)d也將稱(chēng)為消息。
一般而言,MAC是從數(shù)據(jù)空間D和密鑰空間K到標(biāo)記空間C的映射f,即fD×K→C,其中消息d∈D和密鑰k∈K映射到標(biāo)記t∈C,即(d,K)→t。
MAC用于保護(hù)消息的完整性,即用于確保例如在消息從發(fā)送方傳送到接收方的傳輸過(guò)程中數(shù)據(jù)未被改動(dòng)過(guò)。在人工認(rèn)證的情況中,采用短的MAC值,即長(zhǎng)度短于10-15個(gè)數(shù)字和/或字符和/或其他碼元的標(biāo)記,從而允許用戶傳送和/或比較這些標(biāo)記值。在此類(lèi)人工認(rèn)證方案中,安全性取決于MAC函數(shù)的絕對(duì)安全性,而非計(jì)算的安全性。例如,如果將散列碼很長(zhǎng)的散列函數(shù)用作MAC函數(shù),則其安全性取決于計(jì)算的安全性。
可以通過(guò)考慮不同類(lèi)型的可能攻擊來(lái)確定MAC函數(shù)的絕對(duì)安全性。通??紤]的兩種主要攻擊類(lèi)型是假冒攻擊和替換攻擊。為了容易理解如下說(shuō)明,下面將簡(jiǎn)要說(shuō)明這些攻擊類(lèi)型。更詳細(xì)的說(shuō)明可參見(jiàn)G.Kabatianskii、B.Smeets和t Johansson所著的“關(guān)于借助糾錯(cuò)碼的系統(tǒng)A碼的基數(shù)”(″On the cardinality of systematic A-codes viaerror correcting codes″,IEEE transaction on Information theory,vol.IT-42,pp.566-578,1996),此文獻(xiàn)通過(guò)引用結(jié)合于本文中。
在假冒攻擊中,攻擊者嘗試使接收方?jīng)]有觀察合法發(fā)送方與接收方之間的任何先前數(shù)據(jù)交換而相信一些數(shù)據(jù)是從合法發(fā)送方發(fā)送的。另一方面,在替換攻擊中,攻擊者首先觀察一些數(shù)據(jù)d,然后將該觀測(cè)數(shù)據(jù)替換為一些其他數(shù)據(jù)d’≠d。攻擊者在假冒攻擊和替換攻擊中成功的概率分別表示為Pl和PS,它們可以如下公式表示Pl=maxc∈CP(c is valid),]]>PS=maxc,c′∈Cc∉c′P(c′is valid|c is observed).]]>例如,在以下結(jié)合圖7所述的密鑰交換協(xié)議的情況中,攻擊者將觀察數(shù)據(jù)d替換為某些其他數(shù)據(jù)d’的概率是密鑰交換方法安全性的相關(guān)量度,即以另一個(gè)公共密鑰替換密鑰交換過(guò)程中傳送的公共密鑰的概率。在此情況中,如果d’被接收方作為有效數(shù)據(jù)接受,則攻擊者的攻擊成功。在短距離無(wú)線通信方案如藍(lán)牙方案中,兩個(gè)設(shè)備物理上彼此靠近,如果兩個(gè)設(shè)備已發(fā)信號(hào)通知它們已經(jīng)準(zhǔn)備就緒,則可以被限制為僅接受數(shù)據(jù)。因此,與在這種方案中一樣,可以容易地避免假冒攻擊,所以替換攻擊的概率可以視為更相關(guān)的安全性量度。再者,在許多人工認(rèn)證方案中,由MAC函數(shù)計(jì)算的標(biāo)記值通過(guò)與發(fā)送數(shù)據(jù)的通信鏈路不同的單獨(dú)通信信道傳送。這與標(biāo)準(zhǔn)的MAC方案相反,在標(biāo)準(zhǔn)的MAC方案中,數(shù)據(jù)和標(biāo)記值一起傳送并且均可能被攻擊者觀測(cè)到。利用這些假設(shè),替換攻擊成功的概率可以表示為PS=maxd,d′∈Dd≠d′P(f(d,k)=f(d′,k)|d is observed).]]>因此,假定密鑰是從密鑰空間K隨機(jī)且唯一地選擇的,則上述概率可以表示為PS=naxd,d′∈Dd≠d′|{k∈K:f(d,k)=f(d′,k)}||K|,]]>其中|·|是集合的基數(shù),即|K|是K的基數(shù),上述等式中的分子是密鑰空間K中所有對(duì)于d和d’二者均得到相同MAC函數(shù)值的密鑰的集合的基數(shù)。因此,由上述等式可得出如下結(jié)論為了提供高安全性,MAC函數(shù)f的沖突概率應(yīng)該小。
如下MAC構(gòu)造實(shí)例基于糾錯(cuò)碼。出于說(shuō)明的目的,下文將考慮有限域Fq上的糾錯(cuò)碼。具體來(lái)說(shuō),將考慮Fq上的碼字長(zhǎng)度為n的q進(jìn)制碼,并且將其表示為V。一般來(lái)說(shuō),編碼是從消息到碼字的映射,使得每個(gè)消息對(duì)應(yīng)于唯一的碼字,而每個(gè)碼字包含若干碼元。因此,碼V由所有矢量v∈V={v(d)d∈D }構(gòu)成,其中v(d)=(v1(d),v2(d),...,vn(d)),]]>即vi(d)∈Fq是碼字v(d)的碼元。
兩個(gè)q進(jìn)制n元組x和y之間的漢明距離dH(x,y)是不相等的n元組分量的數(shù)量,即dH(x,y)=({i∈{1,...,n}xi≠yi}|。碼V的最小距離是dH(V)=minx,y∈Vx≠ydH(x,y),]]>即碼V的所有碼字之間的最小距離。
下面將參考圖3描述基于糾錯(cuò)碼的MAC構(gòu)造的實(shí)施例,即圖3是圖1、圖2和圖7所示各子處理步驟106、111、205、209、714中任一步驟的流程圖。
在初始步驟301中,提供MAC構(gòu)造的輸入數(shù)據(jù),即將待認(rèn)證消息d和密鑰k用作MAC函數(shù)的輸入。在一個(gè)實(shí)施例中,密鑰可以是一串碼元、數(shù)字、字符等。最好是密鑰包含少于10-15個(gè)碼元,最好小于7個(gè)碼元,例如4-6個(gè)十六進(jìn)制字符。
在步驟302中,選擇作為密鑰k的函數(shù)g的索引i∈{1,..,n},即i=g(k)。具體而言,如果密鑰空間K具有n個(gè)元素,即|K|=n,則每個(gè)k可以唯一地映射到這些碼元索引之一,每個(gè)索引對(duì)應(yīng)于一個(gè)密鑰。在一個(gè)實(shí)施例中,直接將密鑰用作索引,即i=k。
在步驟303中,將標(biāo)記值t確定為對(duì)應(yīng)于消息d的碼V的碼字v(d)的第i個(gè)碼元,即t=f(d,k)=vl(d)=vg(k)(d).]]>因此,將標(biāo)記值確定為從糾錯(cuò)碼的碼字中選擇的一個(gè)碼元,其中所述碼字是對(duì)應(yīng)于消息的碼字,并且所述碼元由密鑰指定。因此,在上述實(shí)例中,在密鑰空間尺寸等于n,消息空間尺寸等于編碼空間尺寸的情況下獲得MAC。此外,上述替換攻擊概率Ps由如下公式給出Ps=1-dH(V)/n。
圖4a-4b顯示基于里德-所羅門(mén)碼計(jì)算消息認(rèn)證碼的方法實(shí)例的流程圖。
術(shù)語(yǔ)“里德-所羅門(mén)(RS)”碼指一種糾錯(cuò)碼,其中碼字是通過(guò)一種與生成多項(xiàng)式的多項(xiàng)式除法來(lái)定義的,參見(jiàn)I.S.Reed和G.Solomon所著的“一些有限域上的多項(xiàng)式碼”(″Polynomial Codes overCertain Finite Fields″,journal of Soc.Ind.Appl.Math,vol.8,pp.300-304,1960),此文獻(xiàn)通過(guò)引用結(jié)合于本文中。術(shù)語(yǔ)“里德-所羅門(mén)(RS)”碼還包括里德-所羅門(mén)碼的各種變體,例如所謂的廣義里德-所羅門(mén)碼。
在圖4a的構(gòu)造過(guò)程中,在初始步驟401,提供MAC構(gòu)造的輸入數(shù)據(jù),即將待認(rèn)證消息d和密鑰k用作MAC函數(shù)的輸入,如結(jié)合圖3所述。
在步驟402中,該消息表示為Fq上的q進(jìn)制τ元組(q-ary τ-tuple),即d=d0,d1,...,dτ-1,其中di∈Fq。因此,對(duì)應(yīng)于消息的里德-所羅門(mén)(RS)編碼多項(xiàng)式定義為p(d)(X)=d0+d1x+d2x2+...+dτ-1xτ-1在步驟403中,通過(guò)在密鑰k指定的點(diǎn)上對(duì)該多項(xiàng)式求值來(lái)計(jì)算MAC的標(biāo)記值,即t=f(d,k)=Vk(d)=p(d)(k)=d0+d1k+d2k2+...+dτ-1kτ-1因此,密鑰k指定了用作標(biāo)記值的一個(gè)里德-所羅門(mén)碼碼元。要明確的是,如上所述,該碼元可以由任何適合的密鑰函數(shù)指定。
還要注意的是,在本構(gòu)造方法中,密鑰是從有限域Fq中選擇的,即,k∈Fq。因此,該構(gòu)造方法具有如下特性n=q=|K|和|D|=qτ=nτ。上述碼的最小距離為dH(V)=n-τ+1,因此,替換攻擊成功的概率為Ps=(τ-1)/n。里德-所羅門(mén)碼的優(yōu)點(diǎn)在于,它們是最小距離極大的長(zhǎng)碼,從而提供較高的安全性。
以上描述還意味著概率Ps隨消息空間D的尺寸增加。
圖4b顯示基于里德-所羅門(mén)碼的MAC構(gòu)造的另一個(gè)實(shí)施例的流程圖。
根據(jù)該實(shí)施例,同樣在初始步驟404,提供MAC構(gòu)造的輸入數(shù)據(jù),即將待認(rèn)證消息d和密鑰k用作MAC函數(shù)的輸入。
在步驟405中,對(duì)消息應(yīng)用單向散列函數(shù)h。出于說(shuō)明的目的,術(shù)語(yǔ)“單向散列函數(shù)”指取數(shù)據(jù)項(xiàng)(例如字符串)作為輸入并輸出固定長(zhǎng)度的二進(jìn)制值(散列)的算法。具體而言,此過(guò)程是不可逆的,即查找得到給定散列值的數(shù)據(jù)項(xiàng)應(yīng)該是計(jì)算上不可行的。類(lèi)似地,查找得到相同散列值的數(shù)據(jù)項(xiàng)也應(yīng)該是計(jì)算上不可行的。適合的散列函數(shù)的一個(gè)實(shí)例是標(biāo)準(zhǔn)的保密散列算法SHA-1。SHA-1算法取長(zhǎng)度小于264個(gè)比特的消息,得到160個(gè)比特的消息摘要。單向散列函數(shù)的其他實(shí)例包括MD4、MD5等。然后將散列函數(shù)δ=h(d)的輸出用作里德-所羅門(mén)碼的輸入。在一個(gè)實(shí)施例中,對(duì)散列函數(shù)的輸出進(jìn)行刪截,以進(jìn)一步縮減有效消息尺寸。
因此,在步驟406,散列值δ表示為Fq上的q進(jìn)制τ元組,即,δ=δ0,δ1,...,δτ-1,其中δi∈Fq。
在步驟407中,在密鑰k指定的點(diǎn)上對(duì)該里德-所羅門(mén)編碼多項(xiàng)式求值以計(jì)算出該MAC的標(biāo)記值t,即t=f(δ,k)=Vk(δ)=p(δ)(k)=δ0+δ1k+δ2k2+...+δτ-1kτ-1因此,通過(guò)首先將單向散列函數(shù)(如SHA-1)應(yīng)用于消息,縮減了消息空間的尺寸,從而降低了替換攻擊成功的概率Ps,而無(wú)需顯著增加密鑰長(zhǎng)度或MAC輸出的長(zhǎng)度,即標(biāo)記的長(zhǎng)度。因此,甚至為短密鑰和短消息標(biāo)記提供了安全的認(rèn)證,從而允許通過(guò)用戶交互傳送密鑰和消息標(biāo)記。
圖5是說(shuō)明針對(duì)圖4a-4b的多個(gè)MAC構(gòu)造實(shí)例的替代攻擊的成功概率的表格。標(biāo)記為log2|D|的第一列包含以比特?cái)?shù)表示的消息尺寸,標(biāo)記為log2(n)的第二列顯示以比特?cái)?shù)表示的密鑰尺寸,而最后一列顯示對(duì)應(yīng)的替換攻擊成功概率。例如,具有4個(gè)十六進(jìn)制數(shù)字的碼長(zhǎng)和4個(gè)數(shù)字的密鑰尺寸(n=q=164,即log2(n)=16)的碼對(duì)于128個(gè)比特長(zhǎng)的消息得到約為2-13至2-18的偽造概率。因此,刪截成128個(gè)比特的SHA-1輸出以及4個(gè)十六進(jìn)制比特的密鑰尺寸和碼尺寸產(chǎn)生足夠高的安全性。如果密鑰尺寸增加到5個(gè)數(shù)字(log2(n)=20),則此概率進(jìn)一步降低為約2-17或更低。
圖6以框圖顯示包括一般地表示為A和B的兩個(gè)通信設(shè)備的通信系統(tǒng)。通信設(shè)備A和通信設(shè)備B彼此通過(guò)通信鏈路605進(jìn)行通信。
通信設(shè)備A包括處理單元602、與該處理單元連接的無(wú)線電通信單元603、與該處理單元連接的存儲(chǔ)介質(zhì)604以及與該處理單元連接的用戶接口606。
無(wú)線電通信單元603將從處理單元602接收到的數(shù)據(jù)通過(guò)無(wú)線電鏈路605傳送到通信設(shè)備607,此設(shè)備從該無(wú)線電鏈路接收數(shù)據(jù),并將它們轉(zhuǎn)發(fā)給處理單元。例如,無(wú)線電通信單元603可以基于藍(lán)牙技術(shù),在2.45GHz上的ISM頻帶上進(jìn)行發(fā)送/接收。
處理單元602(例如適當(dāng)編程的微處理器)根據(jù)通信設(shè)備A實(shí)現(xiàn)的功能處理從其他設(shè)備接收到的數(shù)據(jù)以及待發(fā)送到其他設(shè)備的數(shù)據(jù)。具體而言,處理單元602經(jīng)過(guò)適當(dāng)編程,以執(zhí)行上述安全功能,具體為,如上所述生成密鑰和MAC函數(shù)的對(duì)應(yīng)標(biāo)記值。
存儲(chǔ)介質(zhì)604(例如EPROM、EEPROM、閃速存儲(chǔ)器等)適于存儲(chǔ)密鑰k以及用于上述消息認(rèn)證的必需參數(shù)。
用戶接口606包括用于顯示生成的密鑰k和對(duì)應(yīng)的標(biāo)記值t的顯示屏,以便用戶可以讀出所生成的值,并將其傳送到通信設(shè)備B。此外,用戶接口606可以包括數(shù)據(jù)輸入裝置,如鍵盤(pán)、小鍵盤(pán)、指示裝置、觸摸屏等。
通信設(shè)備B包括處理單元609、與該處理單元連接的無(wú)線電通信單元608、與該處理單元連接的存儲(chǔ)介質(zhì)610以及與該處理單元連接的用戶接口611。
無(wú)線電通信單元609對(duì)應(yīng)于通信設(shè)備A的無(wú)線電通信單元603,從而允許無(wú)線電通信設(shè)備A和B之間進(jìn)行無(wú)線電通信。
處理單元609(例如適當(dāng)編程的微處理器)根據(jù)通信設(shè)備所實(shí)現(xiàn)的功能處理從其他設(shè)備接收到的數(shù)據(jù)和要發(fā)送到其他設(shè)備的數(shù)據(jù)。具體而言,處理單元經(jīng)過(guò)適當(dāng)編程,以執(zhí)行上述安全功能,具體地而言為實(shí)施以上所述的、對(duì)應(yīng)于設(shè)備A所實(shí)現(xiàn)的認(rèn)證機(jī)制的認(rèn)證方法。
同樣地,存儲(chǔ)介質(zhì)604(例如EPROM、EEPROM、閃速存儲(chǔ)器等)適于存儲(chǔ)密鑰k和標(biāo)記值t。
用戶接口611包括輸入設(shè)備,如小鍵盤(pán)、鍵盤(pán)、觸摸屏等,以允許用戶輸入密鑰k和通信設(shè)備A生成的對(duì)應(yīng)標(biāo)記值t。此外,用戶接口606還可以包括顯示屏、指示裝置等。
因此,圖6的通信系統(tǒng)包括兩個(gè)通信設(shè)備,例如兩個(gè)便攜式無(wú)線電通信設(shè)備(如兩個(gè)移動(dòng)電話、一個(gè)移動(dòng)電話和一個(gè)便攜式計(jì)算機(jī))、兩個(gè)便攜式計(jì)算機(jī)或適于根據(jù)上述方法執(zhí)行消息認(rèn)證的類(lèi)似電子設(shè)備的任何組合。
在一個(gè)實(shí)施例中,處理單元和/或存儲(chǔ)介質(zhì)可以可移除方式插入相應(yīng)的通信設(shè)備中,從而允許獨(dú)立于實(shí)際的設(shè)備建立安全性關(guān)聯(lián)。例如,存儲(chǔ)介質(zhì)和/或處理單元可以由智能卡如SIM卡構(gòu)成。
還要注意,所述通信設(shè)備可以包括圖6的示意框圖中省略的其他組件。例如,根據(jù)認(rèn)證方案的實(shí)際實(shí)現(xiàn)方式,所述設(shè)備還可以包括其他的輸入和/或輸出裝置,用于輸入和/或輸出認(rèn)證方法的參數(shù)。例如,所述設(shè)備之一還可以包括另一個(gè)通信接口,例如網(wǎng)卡,用于從網(wǎng)絡(luò)服務(wù)器檢索密鑰或標(biāo)記值,或者還可以包括其他等。
圖7說(shuō)明安全密鑰交換機(jī)制的一個(gè)實(shí)施例,其中通過(guò)無(wú)線通信鏈路傳送所生成的共享密鑰成分,并以上述消息認(rèn)證方法進(jìn)行認(rèn)證。因此,在本實(shí)施例中,消息是共享秘密的成分之一。當(dāng)兩個(gè)設(shè)備(一般地分別表示為A和B)要執(zhí)行安全密鑰交換以建立共享秘密密鑰時(shí),它們會(huì)執(zhí)行如下步驟其中,流程圖左邊的步驟(一般地表示為引用號(hào)701)由設(shè)備A執(zhí)行;流程圖右邊的步驟(一般地表示為引用號(hào)702)由設(shè)備B執(zhí)行。
如下的密鑰交換基于用于密鑰協(xié)商的所謂“Diffie-Hellman”方法。為了易于理解如下說(shuō)明,將簡(jiǎn)要描述Diffie-Hellman密鑰協(xié)商方法。更詳細(xì)的描述可參見(jiàn)美國(guó)專(zhuān)利4200770,此專(zhuān)利通過(guò)引用全部結(jié)合于本文中。
當(dāng)兩個(gè)設(shè)備A和B希望建立共享秘密密鑰時(shí),它們就素?cái)?shù)p>2和基g(即本原元(primitive)modp)達(dá)成一致。參數(shù)p和g可以硬編碼到這兩個(gè)設(shè)備中,它們可以由兩個(gè)設(shè)備之一生成,并傳送到另一個(gè)設(shè)備,它們可以從第三方等檢索得到,或者依此類(lèi)推。例如,為了生成p和g,p值可以選擇為例如一個(gè)大隨機(jī)數(shù),例如包括1000個(gè)比特或更多比特的隨機(jī)數(shù),并可以執(zhí)行已知的素?cái)?shù)測(cè)試,以便測(cè)試p是否是素?cái)?shù)。如果不是素?cái)?shù),則可以選擇新的p值并進(jìn)行測(cè)試,直到找到素?cái)?shù)為止。然后,選擇隨機(jī)數(shù)g,并測(cè)試g是否是生成元(generator)。如果不是,則可以選擇新的g值并進(jìn)行測(cè)試,直到找到生成元為止。
每個(gè)設(shè)備生成小于p-1的秘密數(shù)字。下文中,將設(shè)備A生成的秘密數(shù)字稱(chēng)為x,將設(shè)備B生成的秘密數(shù)字稱(chēng)為y。然后每個(gè)設(shè)備基于該秘密值和上述參數(shù)生成公共密鑰設(shè)備A生成X=gxmod p,其中mod表示模函數(shù),即整數(shù)除法的余數(shù)。類(lèi)似地,設(shè)備B生成Y=gymod p。
這兩個(gè)設(shè)備交換它們的公共密鑰,每個(gè)設(shè)備根據(jù)如下公式計(jì)算共有秘密值S設(shè)備AS=(Y)xmod p,設(shè)備BS=(X)ymod p。
由此,設(shè)備A和B已創(chuàng)建了一個(gè)共有秘密密鑰S,而無(wú)需傳送秘密值x和y,因?yàn)?gymod p)xmod p=(gxmod p)ymod p。
現(xiàn)在參見(jiàn)圖7,在密鑰交換過(guò)程的初始步驟703中,設(shè)備A生成隨機(jī)值x、對(duì)應(yīng)的Diffie-Hellman公共密鑰X以及短秘密字符串K。Diffie-Hellman公共密鑰X如上所述基于對(duì)應(yīng)的參數(shù)g和p來(lái)計(jì)算,g和p已由設(shè)備A和B協(xié)商好。最好隨機(jī)地從適合的密鑰空間確定秘密字符串K,例如將其確定為4-6個(gè)十六進(jìn)制數(shù)字的字符串。
在后續(xù)步驟704中,設(shè)備A如上所述使用消息認(rèn)證碼(MAC),將秘密字符串K用作密鑰,由公共密鑰計(jì)算標(biāo)記值t。要明確的是,在一些實(shí)施例(其中在確定密鑰期間傳送附加數(shù)據(jù))中,可以由含有公共密鑰X和所述附加數(shù)據(jù)的消息計(jì)算標(biāo)記值,從而還為所述附加數(shù)據(jù)提供完整性保護(hù)。
在步驟705中,通過(guò)適合的通信信道將生成的秘密字符串K和計(jì)算的標(biāo)記值t傳送到設(shè)備B,如圖7中虛線箭頭706所示。例如,K和t的值可通過(guò)用戶交互從設(shè)備A傳送到設(shè)備B,例如通過(guò)從設(shè)備A的顯示屏讀出這些值并將其鍵入到設(shè)備B中。在另一個(gè)實(shí)施例中,這些值可以通過(guò)一些其他手段來(lái)傳送,例如通過(guò)電信網(wǎng)絡(luò),通過(guò)將這些值以加密消息如電子郵件、SMS等形式發(fā)送,或通過(guò)任何其他適合的通信信道,最好是不同于要?jiǎng)?chuàng)建保密通信的通信信道的通信信道。其優(yōu)點(diǎn)在于,設(shè)備A和B不必彼此建立通信鏈路,它們彼此甚至不必在位置上靠近。例如,設(shè)備A的用戶可以通過(guò)電話、郵件或任何其他適當(dāng)方式將秘密字符串和標(biāo)記值傳送給設(shè)備B的用戶。此外,可以在設(shè)備之間實(shí)際建立共享秘密密鑰(例如作為注冊(cè)過(guò)程的一部分)之前就提前傳送所生成的值K和t。在一個(gè)實(shí)施例中,標(biāo)識(shí)符ID與K和t一起傳送,以便后續(xù)檢索K和t。
在步驟707中,設(shè)備B接收K和t值,在步驟710中,將它們存儲(chǔ)在設(shè)備B的存儲(chǔ)介質(zhì)711中,例如存儲(chǔ)在便攜式設(shè)備的EPROM和EEPROM中,存儲(chǔ)在智能卡上,存儲(chǔ)在硬盤(pán)上,或者存儲(chǔ)在任何其他適合的數(shù)據(jù)存儲(chǔ)設(shè)備上。如果值K和t與標(biāo)識(shí)符ID相關(guān),則以與標(biāo)識(shí)符ID關(guān)聯(lián)的方式存儲(chǔ)值K和t,例如將標(biāo)識(shí)符用作索引。
類(lèi)似地,在步驟708中,設(shè)備A將秘密字符串K存儲(chǔ)(可選地以與標(biāo)識(shí)符ID相關(guān)聯(lián)的方式)在設(shè)備A的存儲(chǔ)介質(zhì)709上。此外,設(shè)備A還存儲(chǔ)據(jù)以計(jì)算公共密鑰X的秘密值x。
初始注冊(cè)過(guò)程就這樣結(jié)束了。當(dāng)設(shè)備A和B通過(guò)通信鏈路實(shí)際連接時(shí),執(zhí)行包括實(shí)際密鑰交換的如下步驟。這可以在上述初始注冊(cè)之后立刻執(zhí)行或稍后執(zhí)行,如圖7中線條727所示。
在步驟712中,設(shè)備A通過(guò)無(wú)線通信鏈路將公共密鑰X發(fā)送到設(shè)備B,以啟動(dòng)實(shí)際的密鑰交換。在秘密字符串K與標(biāo)識(shí)符ID相關(guān)的實(shí)施例中,設(shè)備A還傳送該標(biāo)識(shí)符。類(lèi)似地,在步驟704中,如果要對(duì)公共密鑰和一些附加數(shù)據(jù)計(jì)算標(biāo)記值t,則還要將該附加數(shù)據(jù)從設(shè)備A傳送到設(shè)備B。
在一個(gè)實(shí)施例中,當(dāng)設(shè)備B從設(shè)備A接收到公共密鑰X(步驟713)時(shí),在步驟714中,設(shè)備B基于標(biāo)識(shí)符ID從存儲(chǔ)介質(zhì)711檢索秘密字符串K。設(shè)備B基于秘密字符串K計(jì)算接收到的公共密鑰X的MAC標(biāo)記值t′。
在步驟715中,設(shè)備B將計(jì)算的標(biāo)記值t′與先前存儲(chǔ)的標(biāo)記值t進(jìn)行比較。如果這兩個(gè)標(biāo)記值不同,則拒絕所接收的公共密鑰(步驟716)。例如,設(shè)備B可以通過(guò)向設(shè)備A發(fā)送相應(yīng)的消息和/或就拒絕通知用戶(例如提供可視或可聞指示)來(lái)中止密鑰交換。否則,即如果這兩個(gè)標(biāo)記值相同,則在步驟717中接受該公共密鑰X并繼續(xù)執(zhí)行后續(xù)操作。
在步驟717中,設(shè)備B如上所述生成秘密值y和對(duì)應(yīng)的Diffie-Hellman公共密鑰Y。
在步驟718中,設(shè)備B生成對(duì)應(yīng)的Diffie-Hellman共享秘密密鑰S=(X)ymod p。
在步驟719中,設(shè)備B利用所生成的共享秘密密鑰S對(duì)從存儲(chǔ)介質(zhì)711中檢索出的秘密字符串K進(jìn)行加密,從而得到加密的秘密字符串K*。加密可以基于任何適合的基于對(duì)稱(chēng)秘密密鑰的加密方法。
在步驟720中,設(shè)備B將加密的字符串K*和Diffie-Hellman公共密鑰Y傳送到設(shè)備A。在一個(gè)實(shí)施例中,設(shè)備B還發(fā)送對(duì)應(yīng)的標(biāo)識(shí)符ID。
在步驟721中,設(shè)備A接收加密的字符串K*和Diffie-Hellman公共密鑰Y。
在步驟722中,設(shè)備A利用存儲(chǔ)在存儲(chǔ)介質(zhì)709中的秘密值x生成Diffie-Hellman共享秘密密鑰S=(Y)xmod p。
在步驟723中,設(shè)備A利用所生成的共享秘密密鑰S將接收到的加密秘密字符串K*解密以得到解密的秘密字符串K’。
在步驟724中,設(shè)備A將接收到的以及解密的秘密字符串K’與設(shè)備A最初生成并存儲(chǔ)在存儲(chǔ)介質(zhì)709中的秘密字符串K進(jìn)行比較。如果這兩個(gè)秘密字符串不相等,則拒絕所接收的公共密鑰Y,即丟棄所生成的共享秘密密鑰S(步驟725)。否則,過(guò)程繼續(xù)到步驟726。
在步驟726中,接受所接收的公共密鑰Y,即將計(jì)算的共享秘密密鑰S作為共享密鑰接受。在一個(gè)實(shí)施例中,將對(duì)應(yīng)的消息發(fā)送到設(shè)備,從而完成密鑰交換。所生成的共享秘密密鑰現(xiàn)在可以用于保護(hù)設(shè)備A和B之間的后續(xù)通信,例如通過(guò)對(duì)設(shè)備之間發(fā)送的消息進(jìn)行加密和/或完整性保護(hù)。
要明確的是,在替代實(shí)施例中,可以通過(guò)不同方法,例如通過(guò)根據(jù)上述方法計(jì)算MAC來(lái)認(rèn)證從設(shè)備B傳送到設(shè)備A的秘密密鑰Y。
要明確,本文所述的認(rèn)證方法還可以用于認(rèn)證先前建立的共享密鑰,例如通過(guò)匿名Diffie-Hellman密鑰協(xié)商生成的共享密鑰。因此,在此實(shí)施例中,該消息是兩個(gè)設(shè)備協(xié)作生成的共享密鑰。
應(yīng)強(qiáng)調(diào)的是,本說(shuō)明書(shū)所用的術(shù)語(yǔ)“包括/包含”要理解為指存在所聲明的特征、完整單元、步驟或組件,但并不排除存在或添加一個(gè)或多個(gè)其他特征、完整單元、步驟、組件或它們的組合。
雖然已描述并顯示了本發(fā)明的優(yōu)選實(shí)施例,但本發(fā)明并不局限于此,而是還可以在所附權(quán)利要求書(shū)中限定的范圍內(nèi)以其他方式來(lái)實(shí)施。
不同從屬權(quán)利要求中記載了某些措施這一事實(shí),并不表示不能利用這些措施的組合。
權(quán)利要求
1.一種根據(jù)消息認(rèn)證碼處理消息以由所述消息和密鑰確定標(biāo)記值的方法,所述方法包括如下步驟-選擇多個(gè)碼元之一,所述多個(gè)碼元構(gòu)成對(duì)從所述消息導(dǎo)出的數(shù)據(jù)項(xiàng)進(jìn)行編碼的碼字;所述碼字根據(jù)糾錯(cuò)碼對(duì)所述數(shù)據(jù)項(xiàng)進(jìn)行編碼;其中所述密鑰確定選擇所述多個(gè)碼元中的哪一個(gè);以及-確定所述標(biāo)記值為所述選擇的碼元。
2.如權(quán)利要求1所述的方法,其特征在于由所述消息導(dǎo)出的數(shù)據(jù)項(xiàng)由所述消息組成。
3.如權(quán)利要求1所述的方法,其特征在于還包括將所述數(shù)據(jù)項(xiàng)確定為由所述消息計(jì)算的單向散列函數(shù)的散列值。
4.如權(quán)利要求1所述的方法,其特征在于所述密鑰短得足以通過(guò)用戶交互傳送。
5.如權(quán)利要求1所述的方法,其特征在于所述糾錯(cuò)碼是里德-所羅門(mén)碼;所述標(biāo)記值通過(guò)在所述密鑰確定的點(diǎn)上對(duì)里德-所羅門(mén)編碼多項(xiàng)式求值來(lái)計(jì)算。
6.如權(quán)利要求1所述的方法,其特征在于所述標(biāo)記值是有限域中的元素。
7.如權(quán)利要求1所述的方法,其特征在于還包括通過(guò)第一通信信道將所述消息的至少一個(gè)成分從發(fā)送方發(fā)送到接收方;以及-通過(guò)與所述第一信道不同的第二通信信道將所述標(biāo)記值和/或所述密鑰從所述發(fā)送方傳送到所述接收方。
8.如權(quán)利要求7所述的方法,其特征在于所述第二通信信道包括用戶交互。
9.一種用于傳送數(shù)據(jù)消息的通信設(shè)備,所述通信設(shè)備包括適于根據(jù)消息認(rèn)證碼由消息和密鑰確定標(biāo)記值的處理裝置;所述處理裝置適于-選擇多個(gè)碼元之一,所述多個(gè)碼元構(gòu)成對(duì)從所述消息導(dǎo)出的數(shù)據(jù)項(xiàng)進(jìn)行編碼的碼字,所述碼字根據(jù)糾錯(cuò)碼對(duì)所述數(shù)據(jù)項(xiàng)進(jìn)行編碼;其中所述密鑰確定選擇所述多個(gè)碼元中的哪一個(gè);以及-確定所述標(biāo)記值為所述選擇的碼元。
10.一種計(jì)算機(jī)程序,包括當(dāng)所述程序在計(jì)算機(jī)上運(yùn)行時(shí)用于執(zhí)行如權(quán)利要求1至8中任何一項(xiàng)所述的步驟的程序代碼單元。
11.一種計(jì)算機(jī)程序產(chǎn)品,其包括存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上的程序代碼單元,所述程序代碼單元在所述計(jì)算機(jī)程序產(chǎn)品運(yùn)行于計(jì)算機(jī)上時(shí)用于執(zhí)行如權(quán)利要求1至8中任何一項(xiàng)所述的方法。
12.一種計(jì)算機(jī)可讀介質(zhì),其上存儲(chǔ)了程序代碼單元,所述程序代碼單元在所述程序運(yùn)行于計(jì)算機(jī)上時(shí)用于執(zhí)行如權(quán)利要求1至8中任何一項(xiàng)所述的步驟。
全文摘要
公開(kāi)了一種根據(jù)消息認(rèn)證碼處理消息以該消息和密鑰確定標(biāo)記值的方法。所述方法包括如下步驟選擇多個(gè)碼元之一,所述多個(gè)碼元構(gòu)成由對(duì)從所述消息導(dǎo)出的數(shù)據(jù)項(xiàng)進(jìn)行編碼的碼字組成;所述碼字根據(jù)糾錯(cuò)碼對(duì)所述數(shù)據(jù)項(xiàng)進(jìn)行編碼,其中所述密鑰確定選擇所述多個(gè)碼元中的哪一個(gè);以及確定所述標(biāo)記值為所述選擇的碼元。
文檔編號(hào)H04L9/32GK1729646SQ200380107074
公開(kāi)日2006年2月1日 申請(qǐng)日期2003年10月9日 優(yōu)先權(quán)日2002年10月24日
發(fā)明者C·格爾曼 申請(qǐng)人:艾利森電話股份有限公司