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