專利名稱:用來產(chǎn)生消息鑒別碼的方法和設(shè)備的制作方法
背景技術(shù):
I.發(fā)明領(lǐng)域本發(fā)明總的說來涉及通信領(lǐng)域,更具體地說,涉及消息鑒別碼的產(chǎn)生。
II.背景消息鑒別碼(MAC)是一密碼導(dǎo)出項(xiàng),該密碼導(dǎo)出項(xiàng)可附加到某消息以驗(yàn)證該消息源自某方且示被任一其他方改動(dòng)。這代表了MAC用于電信的許多領(lǐng)域中的原因。一個(gè)示例的領(lǐng)域是無線通信。
無線通信領(lǐng)域有許多應(yīng)用,包括,例如,無繩電話,尋呼,無線本地環(huán)路,諸如個(gè)人數(shù)字助理(PDA)的無線數(shù)據(jù)應(yīng)用,諸如蜂窩和PCS電話系統(tǒng)的無線電話,移動(dòng)因特網(wǎng)協(xié)議(IP)電話和衛(wèi)星通信系統(tǒng)。一個(gè)特別重要的應(yīng)用是移動(dòng)用戶的無線電話。
已為無線通信系統(tǒng)開發(fā)多種空中接口,包括,例如,頻分多址(FDMA),時(shí)分多址(TDMA)和碼分多址(CDMA)。與此相關(guān),已建立多種國內(nèi)和國際標(biāo)準(zhǔn),包括,例如,高級移動(dòng)電話業(yè)務(wù)(AMPS),全球移動(dòng)通信系統(tǒng)(GSM)和過渡性標(biāo)準(zhǔn)95(IS-95)。
一個(gè)示例無線電話通信系統(tǒng)是碼分多址(CDMA)系統(tǒng)。IS-95標(biāo)準(zhǔn)及其變體IS-95A,ANSI J-STD-008,IS-95B、提議的第三代標(biāo)準(zhǔn)IS-95C和IS-200,提議的專用于數(shù)據(jù)的高數(shù)據(jù)速率CDMA標(biāo)準(zhǔn)等(這里統(tǒng)稱為IS-95)由電信工業(yè)協(xié)會(huì)(TIA)和其他知名的標(biāo)準(zhǔn)組織公布,以規(guī)定CDMA空中接口在蜂窩或PCS電話通信系統(tǒng)中的使用?;旧习凑誌S-95標(biāo)準(zhǔn)的使用而配置的示例無線通信系統(tǒng)在專利號為5,103,459和4,901,307的美國專利中有描述,這些專利已轉(zhuǎn)讓給本發(fā)明的受讓人,在此完全引述作參考。
在一典型通信中,MAC m是用(長度LM的)消息M和只有該消息始發(fā)方和接收方知道的共享密鑰K作為一函數(shù)的輸入而計(jì)算出的該函數(shù)的輸出。如果所選的函數(shù)安全,那么,能夠截取并潛在地修改該發(fā)送消息的主動(dòng)攻擊者既不能發(fā)現(xiàn)密鑰K也不能產(chǎn)生有適當(dāng)概率被接收方接受作為有效消息的消息。如果MAC的長Lm(位),則攻擊者總是會(huì)簡單地猜出所需消息的m的一個(gè)值,猜中的概率1/2Lm。因此,對MAC安全性的任一保證實(shí)質(zhì)上是概率。不管是有意還是隨機(jī)引入,MAC一般提供不了比這種概率更好的對檢測差錯(cuò)的保證。特別是,消息中的一單個(gè)位差錯(cuò)一般與任一其他替換有同樣的機(jī)會(huì)匹配附加在該消上的MAC。盡管這種概率小,仍然意義重大。
循環(huán)冗余碼校(CRC)是公知的檢錯(cuò)與糾錯(cuò)碼(ECC)的一個(gè)例子。在數(shù)據(jù)發(fā)送可能被訛誤的許多應(yīng)用中及當(dāng)希望接收機(jī)能檢測最常見的訛誤并加以糾正時(shí)使用ECC。CRC對計(jì)算是有效的并具有有用的差錯(cuò)檢測特性。如果接收的消息M在任何小數(shù)目的位中有差錯(cuò),CRC將保證檢測已出差錯(cuò)并實(shí)際上指示(假定差錯(cuò)盡可能小)哪些位出錯(cuò)。這使糾錯(cuò)能夠進(jìn)行。CRC是通過認(rèn)為該消息的這些位是一多項(xiàng)式的系數(shù)并在該多項(xiàng)式除以度為L的多項(xiàng)式P時(shí)計(jì)算余數(shù)而計(jì)算的。仔細(xì)選擇多項(xiàng)式P給出所需的檢錯(cuò)和糾錯(cuò)特性。盡管CRC用于檢測發(fā)送期間引起的隨機(jī)差錯(cuò)的類型是好的,它們在防止任一種類的主動(dòng)攻擊沒有用處,因?yàn)楣粽吣苋菀椎赜?jì)算對消息的任一修改的CRC的影響。攻擊者亦可相應(yīng)地修改CRC。即使有秘密信息合并在CRC的計(jì)算中但不與該消息一起發(fā)送,這一點(diǎn)仍是真的。
需要提供一種組合的MAC/CRC,即一個(gè)代碼,該代碼包括通過消息與其MAC的失配將檢測已經(jīng)通過CRC檢測的小的隨機(jī)差錯(cuò)的保證。該代碼還會(huì)有益的是,同時(shí)保證不知道秘密信息K的主動(dòng)攻擊者將不能發(fā)現(xiàn)K或“偽造”消息,概率優(yōu)于1/(2k-1)。(應(yīng)注意的是,正如本領(lǐng)域中專業(yè)人員所知的,概率值中額外“-1”源自以下事實(shí)攻擊者知道,在此情況下,原始MAC將不用于與攻擊者正在修改的消息大部分相同的消息,所以攻擊者反而將隨機(jī)地選擇其他可能的MAC之一)。因此,需要一種產(chǎn)生具有保證的訛誤檢測特性的MAC的方法。
發(fā)明概要本發(fā)明針對一種產(chǎn)生具有保證的訛誤檢測特性的MAC的方法。相應(yīng)地,在本發(fā)明的一方面中,一種有益地產(chǎn)生消息鑒別碼的方法包括以下步驟以一種依賴密鑰的方式偽隨機(jī)地把第一批多個(gè)消息位分配到第二批多個(gè)位中;產(chǎn)生包含第二批多個(gè)位的循環(huán)冗余碼校驗(yàn)的第三批多個(gè)位;及發(fā)送第一批多個(gè)消息位和包含第三批多個(gè)位的消息鑒別碼。
在本發(fā)明的另一方面中,配置成有益地產(chǎn)生一消息鑒別碼的發(fā)生器,包括以下裝置用來以一種依賴密鑰的方式偽隨機(jī)地把第一批多個(gè)消息位分配到第二批多個(gè)位中的裝置;用來產(chǎn)生包含第二批多個(gè)位的循環(huán)冗余碼校碼的第三批多個(gè)位的裝置;及用來發(fā)送第一批多個(gè)消息位和包含第三批多個(gè)位的消息鑒別碼的裝置。
在本發(fā)明的另一方面中,配置成有益地產(chǎn)生一消息鑒別碼的發(fā)生器,包括配置成以一種依賴密鑰的方式偽隨機(jī)地把第一批多個(gè)消息位分配到第二批多個(gè)位中的處理器,耦合到該分配器并配置成產(chǎn)生包含第二批多個(gè)位的循環(huán)冗余碼校驗(yàn)的第三批多個(gè)位的發(fā)生器,及耦合到該發(fā)生器并配置成發(fā)送第一批多個(gè)消息位和包含第三批多個(gè)位的消息鑒別碼的發(fā)射器。
在本發(fā)明的一實(shí)施例中,一種有益地偽隨機(jī)地分配消息的位的方法,包括以下步驟計(jì)算多項(xiàng)式xi的剩余模數(shù)P,這里i是一個(gè)預(yù)定的消息位的位置而P是一個(gè)循環(huán)冗余碼校碼多項(xiàng)式;及對消息的等于1的每個(gè)消息位,逐位地執(zhí)行CRC位和計(jì)算出的余數(shù)的“異或”運(yùn)算。
附圖簡述
圖1是蜂窩電話系統(tǒng)的方框圖。
圖2是用來產(chǎn)生消息及相關(guān)的消息鑒別碼(MAC)的處理器和相關(guān)的存儲(chǔ)元件的方框圖。
圖3是用來產(chǎn)生消息和相關(guān)的MAC的發(fā)生器的方框圖。
圖4是可用于圖3的發(fā)生器中以使用一種鍵控偽隨機(jī)數(shù)(PRN)消息位分配技術(shù)的寄存器的原理圖。
圖5是可用于圖3的發(fā)生器中的循環(huán)冗余碼校驗(yàn)(CRC)發(fā)生器的原理圖。
圖6是流程圖,說明由諸如圖3的發(fā)生器之類的發(fā)生器執(zhí)行的方法步驟,產(chǎn)生消息的MAC。
圖7是流程圖,說明由諸如圖3的發(fā)生器之類的發(fā)生器執(zhí)行的方法步驟,產(chǎn)生消息的MAC。
較佳實(shí)施例詳述這里在下面描述的示例實(shí)施存在于配置成使用CDMA空中接口的無線電話通信系統(tǒng)中。然而,本領(lǐng)域中的熟練人士明白,具體體現(xiàn)發(fā)明的特點(diǎn)的MAC產(chǎn)生方法和設(shè)備可存在于使用本領(lǐng)域中熟練人員所知的寬范圍的技術(shù)的多種通信系統(tǒng)中的任一種。
如圖1所示,CDMA無線電話系統(tǒng)通常包括一批移動(dòng)用戶單元10。一批基站12,基站控制器(BSC)14及一個(gè)移動(dòng)交換中心(MSC)16。MSC16置成與普通公共交換電話網(wǎng)(PSTN)18相接。MSC16還配置成與BSC14相接。BSC14通過日程線路耦合到基站12?;爻叹€路可配置成支持幾個(gè)知名的接口,包括,例如,E1/T1,ATM,IP,PPP幀中繼,HDSL,ADSL或XDSL中的任何一個(gè)??梢岳斫獾氖?,系統(tǒng)中可有不止兩個(gè)BSC14。每個(gè)基站12有益地包括至少一扇區(qū)(未示出),每一扇區(qū)包含一全向天線或一指向?yàn)榻?jīng)向離開基站12的某方向的天線?;蛘?,每一扇區(qū)可包含用于分集接收的兩個(gè)天線。每個(gè)基站12可有益地設(shè)計(jì)成支持一批頻率指配。一扇區(qū)與一頻率指配的相交區(qū)可稱為一CDMA信道?;?2亦可稱為基站收發(fā)機(jī)子系統(tǒng)(BTS)12?;蛘撸瑯I(yè)界可用“基站”統(tǒng)稱BSC14與一個(gè)或更多BTS12。BTS12亦可概指“小區(qū)站點(diǎn)”12?;蛘咭唤o定BTS12的單個(gè)扇區(qū)亦稱為小區(qū)站點(diǎn)。移動(dòng)用戶單元10典型地是蜂窩或PCS電話機(jī)10。系統(tǒng)有益地配置成用于IS-95標(biāo)準(zhǔn)。
在蜂窩電話系統(tǒng)的典型運(yùn)行期間,基站12接收來自移動(dòng)單元10組的一組組反向鏈路信號。移動(dòng)單元10在進(jìn)行電話呼叫或其他通信。由一給定基站12接收的每個(gè)反向鏈路信號在該基站12內(nèi)處理。結(jié)果數(shù)據(jù)提交給BSC14。BSC14提供呼叫資源分配和移動(dòng)性管理功能,包括基站12間軟切換的協(xié)調(diào)的結(jié)合。BSC14還向MSC16發(fā)送接收的數(shù)據(jù),MAC16提供另外的路由選擇業(yè)務(wù)經(jīng)和PSTN18相接。類似地,PSTN18與MAC16相接,MAC16與BSC14相接,它們依次控制基站12向移動(dòng)單元10組發(fā)送前向鏈路信號組。
按照一實(shí)施例,如圖2所示,用來產(chǎn)生包括MAC的消息的機(jī)構(gòu)100包括一處理器102,一軟件模塊104及一存儲(chǔ)媒介106。處理器102有益地是一微處理器或諸如數(shù)字信號處理(DSP)的一專用處理器,但可以選擇地是處理器,控制器,微控制器或狀態(tài)機(jī)的任一普通形式。處理器102耦合到軟件模塊104,軟件模塊104有益地實(shí)施為容納指導(dǎo)處理器102的運(yùn)行的軟件指令的RAM存儲(chǔ)器。軟件指令可包含一軟件程序或一組微碼。RAM存儲(chǔ)器104可以是板上RAM,或者處理器102和RAM存儲(chǔ)器104可駐留于ASIC中。在一可選實(shí)施例中,固件指令替代軟件模塊104。存儲(chǔ)媒介106耦合到處理器102,并有益地實(shí)施為RAM存儲(chǔ)器與諸如ROM存儲(chǔ)器的任一形式的普通非易失存儲(chǔ)器的組合。如下所述,存儲(chǔ)媒介106用來實(shí)施一線性反饋移位寄存器(LFSR)以產(chǎn)生MAC,并存儲(chǔ)預(yù)先計(jì)算的表和指令。例如,指令和表存儲(chǔ)于ROM存儲(chǔ)器組件中而寄存器存儲(chǔ)于RAM存儲(chǔ)器組件中??蛇x地。存儲(chǔ)媒介106可實(shí)施為一磁盤存儲(chǔ)器或一可由處理器102訪問的閃存??蛇x地,存儲(chǔ)媒介106可實(shí)施為寄存器。機(jī)構(gòu)100可駐留于諸如移動(dòng)用戶單元10的任一普通通信裝置或圖1的CDMA無線電話系統(tǒng)中的基站12中。
如圖3所示,在一實(shí)施例中,用來產(chǎn)生消息和相關(guān)的MAC的發(fā)生器200包括鍵控偽隨機(jī)數(shù)(PRN)分配器202,循環(huán)冗余碼校碼(CRC)發(fā)生器204,調(diào)制器206及發(fā)射機(jī)208。消息M的消息位提供給鍵控PRM分配器202。如下所詳述,鍵控PRN分配器202偽隨機(jī)地以一種依賴密鑰的方式把這些消息位分配到位序列中。包括被分配的消息位的位序列提供給CRC發(fā)生器204。CRC發(fā)生器204按照本領(lǐng)域中的熟練人士所知的任一普通CRC計(jì)算方法計(jì)算包括被分配的位的位序列的CRC。
CRC發(fā)生器204產(chǎn)生CRC位,CRC位將用作這些消息位的MAC。MAC位和消息位提供給調(diào)制器206。調(diào)制器206調(diào)制接收的位以在一通信信道上發(fā)送。調(diào)制方案隨通信系統(tǒng)和正在使用的通信信道的類型而異。在一實(shí)施例中,調(diào)制方案是CDMA方案且通信系統(tǒng)是圖1的無線電話系統(tǒng)。調(diào)制器206向發(fā)射機(jī)208提供調(diào)制的消息和MAC信號。發(fā)射機(jī)在通信信道上發(fā)送該調(diào)制的消息和MAC信號。
按照參考圖3所描述的實(shí)施例,計(jì)算較大“消息”(位序列)的CRC并作為MAC發(fā)送,其中原始消息,M,的各個(gè)位已經(jīng)以一種不有被攻擊者預(yù)測的,依賴密鑰的方式得到分配。這樣,小的隨機(jī)差錯(cuò)可由通常的CRC機(jī)制檢測與糾正,而主動(dòng)攻擊(即,對一不然則合法的消息的有意修改)只有有限的成功概率。
有益地,通過較大消息分配原始消息M的位的方法隨消息而異。分配方法中的變異阻止攻擊者收集消息從而逐漸提高成功攻擊的概率。因?yàn)镸AC必須保證檢測小差錯(cuò),如果發(fā)送兩類似的消息(根據(jù)定義有不同的MAC),則與這兩個(gè)類似的消息相似但不同的另一消息的MAC也必須是不同的。以便攻擊者只能從2L-2個(gè)可能的MAC等中隨機(jī)地選擇。有益地,表示為“鹽”S的信息用來把諸如發(fā)送消息的時(shí)刻的特定消息的相關(guān)信息或序列號與分配消息位的方式聯(lián)系起來。這類似以下事實(shí),流密碼應(yīng)決不產(chǎn)生兩不同消息或單個(gè)消息的兩個(gè)不同段的輸出的相同流。
相應(yīng)地,必須以一種攻擊者不可預(yù)測的且無助于攻擊者發(fā)現(xiàn)關(guān)于共享密鑰K的信息的方式把來自原始消息M的位分配到較大“消息”中。這樣,按照參考圖3所描述的實(shí)施例,產(chǎn)生均勻分配的PRN以在較大消息內(nèi)控制消息位的分配。均勻分配的PRN有益地以一種攻擊者不可預(yù)測的方式從共用密鑰K和鹽S導(dǎo)出。
在一示例實(shí)施例中,稱為SDBER的流密碼的輸出用作PRN的源,SOBER流密碼在1999年2月8日送交的申請?zhí)枮?9/246366,標(biāo)題為用來產(chǎn)生加密流密碼的方法和設(shè)備的美國申請中描述。該申請已轉(zhuǎn)讓給本發(fā)明的受讓者。流密碼是偽隨機(jī)產(chǎn)生的位流,對這些位流逐位地用要發(fā)送的消息的各個(gè)位進(jìn)行“異或”運(yùn)算(XDR)從而產(chǎn)生一加密的消息,接收該加密的消息時(shí),用同一流密碼對其進(jìn)行“異或”運(yùn)算,以產(chǎn)生原始消息。在可選實(shí)施例中,其他形式的PRN發(fā)生器可替代該流密碼。特別是,提供的安全性較流密碼為小的PRN發(fā)生器可用來代替該流密碼。
在一實(shí)施例中,如圖4所示,消息M300的位是在一鍵控PRN發(fā)生器(未示出)的控制下分配的,方法是在較大消息302中以某一偏置開始并順序安置位,在兩個(gè)位之間跳過該較大消息302中的不可預(yù)測的數(shù)目的位置。當(dāng),或者如果遇到該較大消息302的端頭,分配位置重新開始于該較大消息302的開頭。有益地確定該較大消息302的位之間跳過的位置的最大數(shù)目,使得分配位置不完全繞回,即,使得不抵達(dá)或經(jīng)過該較大消息302中的起始位置。這保證消息M300中沒有兩個(gè)位分配給該較大消息302中的同一位置,假如兩個(gè)位分配給該較大消息302中的同一位置,這兩個(gè)位的同時(shí)變化將相互抵消且不被檢測到,從而實(shí)現(xiàn)不了目標(biāo)??紤]到最壞的情況,其中,被分配的位之間的每一間隙是最大長度,必須限制最大差距長度。然而平均間隙長度僅為最大差距長度的一半。因此,平均地,消息位只分配在該較大消息的一半內(nèi)。這種分配技術(shù)有益地提供富足的安全性和實(shí)施的相對輕松。
在另一實(shí)施例中,消息位300是這樣分配的把該較大消息302分成大小近乎相等的塊中,以一隨機(jī)偏置開始并繞回,以隨機(jī)位置把一個(gè)位放在每個(gè)塊內(nèi)。這種分配技術(shù)有這樣一個(gè)理想的特性這些位在整個(gè)該較大消息中得到好的分配。
該較大消息302的位提供給CRC發(fā)生器304,CRC發(fā)生器304計(jì)算接收的位的CRC。CRC位306用作消息M 300的MAC 306。應(yīng)指出的是,如結(jié)合下面參考圖6所描述的其他實(shí)施例所示,不必實(shí)際產(chǎn)生較大消息302以取得所需的效果。
在一示例實(shí)施例中,CRC/MAC的長Lm是16位。對其應(yīng)用差錯(cuò)檢測保證的最大消息是包括CRC自身的216位。(假如(1-x)乘以原始多項(xiàng)式用作CRC的發(fā)生器,最大的消息長度將是215-1位)。輸入消息M300的長度Lm有益地保持為遠(yuǎn)比215-16位小。按照上述的第二個(gè)實(shí)施例,如果較大消息302分為大致相等大小的塊,輸入消息M 300的長度Lm有益地限于比215-16位的一半小。按照上述第一實(shí)施例,如果位位置在較大消息302內(nèi)跳過,輸入消息M300的長度Lm有益地限于比215-16位的四分之一小。
在安置了消息M300的第一個(gè)位后,剩余的Lm-1位被置于剩余的215-17個(gè)位置中,如果輸入消息M的長度Lm是1520位,最大分配間隔或塊的大小,將是比32751/1519小的最大整數(shù)或21位。然而,PRN發(fā)生器可視為產(chǎn)生一位流。相應(yīng)地,使用2的冪的一個(gè)數(shù)目而不使用21位有益地可以更有效。如果2的冪用作最大分配間隔或塊大小。0至15的范圍內(nèi)的隨機(jī)數(shù)目可通過從PRN發(fā)生器取輸出的4個(gè)位產(chǎn)生。這些隨機(jī)數(shù)接著有益地調(diào)整為在5至20的范圍內(nèi)。本領(lǐng)域中的熟練人士的應(yīng)當(dāng)理解,位之間的平均間隔或塊的大小必須至少為2。因此,間隔或塊大小的最優(yōu)值是2的冪在22和24之間。消息M 300的每個(gè)位的安置因而需要PRN輸出的兩至四個(gè)位。
如下所述,即使位的位置中的不確定性受限于接受較少的PRN發(fā)生器輸出,把這些位擴(kuò)展得更開可以是有益的。不管是固定的還是可變,最小擴(kuò)展尺寸或最小塊尺寸都可使用。
在另一實(shí)施例中,通過使用諸如塊密碼的鍵控置換功能而分配消息位,以從原始位位置導(dǎo)出新的位位置。在某實(shí)施例中,結(jié)合較大消息302中的隨機(jī)偏置位置命名用塊大小為14位的塊密碼。應(yīng)注意的是,對每個(gè)消息使用一不同的置換的需要要求該塊密碼對每個(gè)消息300使用一不同的密鑰。盡管這在理論上是可能的,實(shí)踐中效率是低的。
在一實(shí)施例中,如圖5所,CRC發(fā)生器400實(shí)施為寄存器,該寄存器包括16個(gè)一位存儲(chǔ)元件402a-g(為了簡化,圖中只有存儲(chǔ)元件402示出),三個(gè)模數(shù)-2加法器404,406,408及三個(gè)開關(guān)410,412,414。在一可選實(shí)施例中,如上面參考圖2所描述,CRC發(fā)生器用運(yùn)行一組軟件指令并訪問查閱表(LUT)的微處理器實(shí)施,該組軟件指令有益地包含在RAM存儲(chǔ)器中,而查閱表有益地包含在ROM存儲(chǔ)器或閃存中。
在CRC發(fā)生器400中,輸入消息位提供給轉(zhuǎn)換410,開關(guān)410或者設(shè)置為接收這些輸入消息位或者設(shè)置為接收1的數(shù)字值。開關(guān)412或者設(shè)置為接收0的數(shù)字值或者設(shè)置為接收來自模數(shù)-2加法器408的一個(gè)值。開關(guān)414或者設(shè)置為接收來自開關(guān)410的一個(gè)值或者設(shè)置為接收來自開關(guān)412和模數(shù)-2加法器408的一個(gè)值,從開關(guān)414取輸出CRC。模數(shù)-2加法器404位于第五個(gè)一位存儲(chǔ)元件402c與第六個(gè)一位存儲(chǔ)元件402d之間。模數(shù)-2加法器406位于第十二個(gè)一位存儲(chǔ)元件402e與第十三個(gè)一位存儲(chǔ)元件402f之間。模數(shù)-2加法器408位于第十六個(gè)一位存儲(chǔ)元件402h后且配置成接收來自開關(guān)410的一個(gè)值。CRC的發(fā)生器多項(xiàng)式g(x)等于x16+x12+x5+1,由模數(shù)-2加法器404,406,408的布局限定。
在運(yùn)行中,開關(guān)410,412,414起初設(shè)置在“上”位置(如附圖所示)。寄存器定時(shí)k次,這里k定義為輸入消息加8位的長度。寄存器是一個(gè)移位寄存器,這樣隨著每個(gè)時(shí)鐘周期這些位各自向右移動(dòng)一個(gè)存儲(chǔ)元件(如附圖所示)。開關(guān)410,412,414接著設(shè)置為“下”位置(如附圖所示)。寄存器接著定時(shí)附加十六次。十六個(gè)附加的輸出位包含該消息的CRC字段,以這些位出現(xiàn)在CRC發(fā)生器400的輸出上的順序發(fā)送這些位。
輸入消息位構(gòu)成“較大消息”,該較大消息的CRC字段用作消息M的MAC。然后有益地該MAC包括CRC的固有安全性利益。因?yàn)橛?jì)算的MAC實(shí)際上是CRC,關(guān)于應(yīng)用到CRC的檢錯(cuò)和糾錯(cuò)的保證亦應(yīng)用于MAC,應(yīng)用于“突發(fā)差錯(cuò)”的保證除外。違反突發(fā)差錯(cuò)保證是因?yàn)檫B續(xù)位在計(jì)算期間得到分離因而不再形成“突發(fā)”。
基本上有兩種針對MAC的攻擊。第一種針對MAC的攻擊是竊取業(yè)務(wù)。攻擊者在觀察其他的有效消息后試圖產(chǎn)生具有有效MAC的消息?;蛘?,攻擊者試圖推演密鑰K,允許攻擊者隨意產(chǎn)生偽造的消息。第二種針對MAC的攻擊選擇消息。攻擊者試圖精巧地制作特別的消息并出于某原因設(shè)計(jì)系統(tǒng)以計(jì)算有效MAC,希望恢復(fù)密鑰K。
希望對有有效MAC的消息僅作一個(gè)位的改變的攻擊者則需要能夠計(jì)算對CRC的對應(yīng)改變;這又要求能夠預(yù)測該位在擴(kuò)展消息中的位置。由于只有該位的在2L-1個(gè)可能位置下,攻擊者所做的只能比猜測MAC稍好。
針對任一種類的MAC的一種可能攻擊是所謂的選定明文攻擊。在該類型的攻擊中,攻擊者可以某種方式安排伴隨著有效MAC得到所發(fā)送的的消息,這樣該消息有由該攻擊者選擇的某內(nèi)容。例如,攻擊者可局接收方發(fā)送電子郵件,電子郵件最終通過發(fā)送信道傳送并具有有效MAC計(jì)算并附上,攻擊者可制作由單個(gè)“1”位隨后全部是“0”位構(gòu)成的消息。通過觀測計(jì)算的CRC,攻擊者能推算起始位置及至PRN發(fā)生器的一些輸出。這是不利的,因?yàn)檫@可導(dǎo)致一種預(yù)測未來輸出的方法。相應(yīng)地,在一實(shí)施例中,較大消息的其他一個(gè)位設(shè)置為1。該其他的一個(gè)位被選擇在一隨機(jī)位置上。
攻擊者可選地發(fā)送包含所有零的消息。觀測的CRC給攻擊者PRN發(fā)生器的輸出的Lm個(gè)位,PRN發(fā)生器須安全得足以防止密鑰信息K的恢復(fù),鑒于這種揭示。
如果攻擊者試圖除預(yù)測這些位的起始位置外還對該消息作多位的改變,攻擊者亦必須確定這些位的離差。這會(huì)使成功的概率小于只對一個(gè)位作改變。
還有一種修改攻擊可運(yùn)用。如果攻擊者能作出一改變且該改變將擴(kuò)展到一是CRC多項(xiàng)式的倍數(shù)的模式中,對計(jì)算的MAC將無影響。這有效地抵消這些位的起始位置的不可預(yù)測性。如果使用小數(shù)目的流密碼位是有利的,選擇考慮該具體CRC多項(xiàng)式地?cái)U(kuò)展這些位是有益的,以使該類型的攻擊對多項(xiàng)式的小倍數(shù)是不可能的且對多項(xiàng)式的大倍數(shù)在統(tǒng)計(jì)上是困難的。
在一實(shí)施例中,在“較大消息”上執(zhí)行CRC計(jì)算,產(chǎn)生輸入消息M的MAC,實(shí)際沒有產(chǎn)生較大消息。對將要分配在該想象的“較大消息”中的輸入消息M的每個(gè)位來說,必須計(jì)算多項(xiàng)式Xi的余項(xiàng)模數(shù)P,i是該較大消息中的消息位的預(yù)定位置。因?yàn)镃RC是線性的,如果該消息的該具體位是一個(gè)1,余項(xiàng)計(jì)算可用多項(xiàng)式加法,即,“異或”(XOR)運(yùn)算,加到現(xiàn)有CRC上。全零消息的CRC是零,所以通過把XOR多項(xiàng)式加法技術(shù)依法運(yùn)用到輸入消息M中的每個(gè)位,還通過只執(zhí)行Lm計(jì)算,可以不產(chǎn)生較大消息地而計(jì)算CRC。類似地,具有一個(gè)非零位的輸入消息的初始種子等同于為計(jì)算選擇一隨機(jī)啟動(dòng)CRC。
可以多種方法計(jì)算Ximod(模)P,這里i在范圍0至32767中(假定Lm是16)。在某實(shí)施例中,使用一對查閱表(LUT)。應(yīng)指出的是,一個(gè)給出對應(yīng)上面的等式中的i的每個(gè)可能的值的CRC的LUT便足夠,但需求216個(gè)16位的表目。相反,i有益地以256hi+lo的形式表達(dá),hi和lo分別是i的高階8個(gè)位和低階8個(gè)位。預(yù)計(jì)算兩個(gè)LUT似分別給出CRC計(jì)算X256himod P與Xlomod P的結(jié)果,這樣,用第二個(gè)LUT中的對應(yīng)項(xiàng)執(zhí)行對第一個(gè)LUT中的每個(gè)項(xiàng)的“異或”運(yùn)算等同于計(jì)算CRC。相應(yīng)地,需要兩上LUT,每個(gè)LUT有256個(gè)16位的表目,且輸入消息M的每非零位執(zhí)行兩個(gè)表查閱以計(jì)算CRC。
當(dāng)通過較大消息分配這些位時(shí),hi的彎化不迅速,這樣同一值的重復(fù)查閱會(huì)相互抵消,在軟件實(shí)施中注意這一點(diǎn)亦是有益的。hi的每個(gè)值是否已用過奇數(shù)次才是在最實(shí)際起影響作用的。
在一實(shí)施例中,按照圖6的流程圖所示的算法步驟,PRN產(chǎn)生輸入消息M的MAC作為一想象的“較大消息”的CRC而無需產(chǎn)生該較大消息。在該實(shí)施例中,Lm是16位而Lm是1520位。CRC多項(xiàng)式P是16位的CRC-CCITT多項(xiàng)式P(X)=X16+X12+X5+1。本領(lǐng)域中的熟練人士明白,可容易地計(jì)算用來查尋CRC值的具體LUT。記號Rn,這里n是一整數(shù),在下文中用來表示應(yīng)取PRN發(fā)生器(未示出)的輸出的下n個(gè)位。在該實(shí)施例中,使用5位的一固定最小間隔,使用PRN輸出的3個(gè)位,使均勻分配的位間的間隔為5至12位。變量C表示最終的輸出MAC的累加器。變量K表示將置于“較大消息”中的下一位的位置。變量i表示在輸入消息M中的位的位置。
在步驟500中,發(fā)生器設(shè)置C等于R16,這等同于選擇一將設(shè)置為1的隨機(jī)位位置。發(fā)生器輸出的下16個(gè)位將形成CRC。發(fā)生器然后進(jìn)行到步驟502。在步驟502中發(fā)生器設(shè)置K等于R15模數(shù)32751,這實(shí)際是將要分配的輸入消息M的第一個(gè)位的位置。發(fā)生器然后進(jìn)行到步驟504。在步驟504中發(fā)生器設(shè)置i等于零。產(chǎn)生然后進(jìn)行到步驟506。
在步驟506中,發(fā)生器確定位M[i](當(dāng)前分配的輸入消息位)是否設(shè)置為1。如果位M[i]未設(shè)置為1,發(fā)生器進(jìn)行到步驟508。另一方面,如果位M[i]設(shè)置為1,產(chǎn)生器進(jìn)行到步驟510。在步驟510中,發(fā)生器計(jì)算XK模數(shù)P并按照上述多項(xiàng)式加法技術(shù)按位對C和XK模數(shù)P執(zhí)行XOR運(yùn)算。C的新值設(shè)置為等于XOR計(jì)算產(chǎn)生的位。發(fā)生器然后進(jìn)行到步驟508。
在步驟508中,發(fā)生器計(jì)算K、5、R3(發(fā)生器輸出的下三個(gè)位)、模數(shù)32751的和。結(jié)果設(shè)置為等于K,這樣K更新為輸入消息的下一位將被分配給的位置。這種計(jì)算是在分配當(dāng)前位M[i]后在步驟510中執(zhí)行的。發(fā)生器然后進(jìn)行到步驟512。在步驟512中發(fā)生器對i加1。然后發(fā)生器進(jìn)行到步驟514。在步驟514中發(fā)生器確定i是否大于1519。如果i不大于1519,發(fā)生器返回步驟506以處理下一輸入消息位M[i]。另一方面,如果i大于1519,發(fā)生器進(jìn)行到步驟516。在步驟516中發(fā)生器返回C的為輸入消息的MAC。
在一可選實(shí)施例中,步驟508中執(zhí)行的計(jì)算是計(jì)K、10、R4(發(fā)生器輸出的下4個(gè)位)、系65521的和。結(jié)果再次設(shè)置為等于K。按照該實(shí)施例,發(fā)生器在步驟502中設(shè)置K等于R16模數(shù)65521。按照該實(shí)施例可以使用的一原始多項(xiàng)式是x16+x14+x12+x7+x6+x5+x2+x+1。
在另一實(shí)施例中,PRN發(fā)生器按照圖7的流程圖所示的算法步驟產(chǎn)生輸入消息M的MAC作為一想象的“較大消息”的CRC而無需產(chǎn)生該較大消息。在該實(shí)施例中,Lm是16位而LM是1520位。CRC多項(xiàng)式P是16位的CRC-CCITT多項(xiàng)式P(x)=x16+x12+x5+1。本領(lǐng)域中的熟練人士明白,可容易地計(jì)算用來查尋CRC值的具體LUT。記號Rn,n是一整數(shù),在下文中用來表示應(yīng)取PRN發(fā)生器(未示出)的輸出的下n個(gè)位。在該實(shí)施例中,使用5位的一固定最小間隔,使用PRN輸出的3個(gè)位,使均勻分配的位間的間隔為5至12位。變量C表示最終的輸出MAC的累加器。變量K表示將置于“較大消息”中的下一位的位置。變量i表示在輸入消息M中的位的位置。
在步驟600中,發(fā)生器設(shè)置C等于R16,這等同于選擇一將設(shè)置為1的隨機(jī)位位置。發(fā)生器輸出的下16個(gè)位將形成CRC。發(fā)生器然后進(jìn)行到步驟602。在步驟602中發(fā)生器設(shè)置K等于R15模數(shù)32751,這實(shí)際是將要分配的輸入消息M的第一個(gè)位的位置。發(fā)生器然后進(jìn)行到步驟604。在步驟504中發(fā)生器設(shè)置i等于零。產(chǎn)生然后進(jìn)行到步驟606。
在步驟606中,發(fā)生器確定位M[i](當(dāng)前分配的輸入消息位)是否設(shè)置為1。如果位M[i]未設(shè)置為1,發(fā)生器進(jìn)行到步驟608。另一方面,如果位M[i]設(shè)置為1,產(chǎn)生呂進(jìn)行到步驟610。在步驟610中,發(fā)生器計(jì)算XK模數(shù)P并按照上述多項(xiàng)式加法技術(shù)按位對C和xK模數(shù)P執(zhí)行XOR運(yùn)算。C的新值設(shè)置為等于XOR計(jì)算的結(jié)果位。發(fā)生器然后進(jìn)行到步驟608。
在步驟608中發(fā)生器對i加1。發(fā)生器然后進(jìn)行到步驟612。在步驟612中發(fā)生器確定i是否大于1519。如果i不大于1519,發(fā)生器進(jìn)行到步驟614。另一方面,如果i大于1519,發(fā)生器進(jìn)行到步驟616。在步驟616中發(fā)生器返回C的值作為輸入消息的MAC。在步驟614中發(fā)生器計(jì)算K、5、R3(發(fā)生器輸出的下三個(gè)位)、模數(shù)32751的和。結(jié)果設(shè)置為等于K。這樣K更新為輸入消息的下一位被分配的位置。當(dāng)要分配一新位時(shí)執(zhí)行對該新位位置的這種計(jì)算。執(zhí)行步驟614的計(jì)算后,發(fā)生器返回步驟606以處理下一輸入消息位M[i]。
在一可選實(shí)施例中,步驟608中執(zhí)行的計(jì)算是計(jì)K、10、R4(發(fā)生器輸出的下4個(gè)位)、系65521的和。結(jié)果再次設(shè)置為等于K。按照該實(shí)施例,發(fā)生器在步驟602中設(shè)置K等于R16模數(shù)65521。按照該實(shí)施例可以使用的一原始多項(xiàng)式是x16+x14+x12+x7+x6+x5+x2+x+1。
這樣,已描述一種新穎的、用來產(chǎn)生MAC的方法和設(shè)備。本領(lǐng)域中的熟練人士明白這里揭示的,結(jié)合實(shí)施例描述的各種說明性邏輯塊和算法步驟可用數(shù)字信號處理器(DSP)、專用集成電器(ASIC)離散門或晶體管邏輯、諸如寄存器和FIFO的離散硬件組件、執(zhí)行一組固件指令的處理器或任一普通的可編程軟件模塊及一處理器實(shí)施或執(zhí)行。處理器可有益地是微處理器,但或者,處理器可以是任一普通處理器、控制器、微控制器或狀態(tài)機(jī)。軟件模塊可駐留于RAM存儲(chǔ)器、閃存、寄存器或業(yè)界所示右的任一其他形式的可寫存儲(chǔ)媒介中。熟練人士還會(huì)認(rèn)識(shí)到在上述整個(gè)描述中可參考的數(shù)據(jù)、指令、命令、信息、信號、位、符號和碼頭有益地用電壓、電流、電磁波、磁場或磁粒子、光場或光粒子或它們的任一組合表示。
這樣已示出并描述本發(fā)明的較佳實(shí)施例。然而,對本領(lǐng)域中有普通技能的人顯而易見的是,可不脫離本發(fā)明的精神或范圍地對這里揭示的實(shí)施例作出許多改變。因此,除按照下列權(quán)利要求外,本發(fā)明是不受限制的。
權(quán)利要求
1.一種產(chǎn)生消息鑒別碼的方法,其特征在于它包含以下步驟以一種依賴密鑰的方式偽隨機(jī)地把第一組多個(gè)消息位分配到第二組多個(gè)位中;產(chǎn)生第三組多個(gè)位,它包含所述第二組多個(gè)位的循環(huán)冗余碼較驗(yàn);及發(fā)送所述第一組消息位和包含所述第三組多個(gè)位的一消息鑒別碼。
2.如權(quán)利要求1所述的方法,其特征在于,所述產(chǎn)生步驟用微處理器、由該微處理器可訪問的查閱表及由該微處理器可執(zhí)行的一組軟件指令執(zhí)行。
3.如權(quán)利要求1所述的方法,其特征在于,所述產(chǎn)生步驟用一移位寄存器執(zhí)行。
4.如權(quán)利要求1所述的方法,其特征在于,所述偽隨機(jī)地分配步驟包含以下步驟把所述第一組多個(gè)位的第一個(gè)位置于所述第二組多個(gè)位中的一個(gè)偏移位位置中;及從所述偏移位位置跳過所述第二組多個(gè)位中的不可預(yù)測數(shù)目的位位置。
5.如權(quán)利要求4所述的方法,還包含把所述第一組多個(gè)位的下一位放到所述第二組多個(gè)位的起始位位置中的步驟。
6.如權(quán)利要求4所述的方法,還包含確定在跳過步驟中跳過的位位置的最大數(shù)目以致于不抵達(dá)或通過第二組多個(gè)位的起始位位置的步驟。
7.如權(quán)利要求4所述的方法,其特征在于,在跳過步驟中跳過的位位置的數(shù)目是2的4至16次冪,包括4和16。
8.如權(quán)利要求1所述的方法,其特征在于,偽隨機(jī)分配步驟包含以下步驟把第二組多個(gè)位分成塊大小大致均勻的塊;及把第一組多個(gè)位放在每個(gè)塊內(nèi)的隨機(jī)位位置中,每個(gè)塊中放入一個(gè)位。
9.如權(quán)利要求8所述的方法,其特征在于,均勻的塊大小是2的4至16(包括4和16)次冪。
10.如權(quán)利要求1所述的方法,其特征在于,偽隨機(jī)分配步驟包含用一鍵控置換函數(shù)從在第二組多個(gè)位中的第一組多個(gè)位的起始位位置導(dǎo)出新的位位置的步驟。
11.如權(quán)利要求1所述的方法,其特征在于,偽隨機(jī)分配步驟包含以下步驟;計(jì)算多項(xiàng)式x1的余項(xiàng)模數(shù)P,這里i是在第二組多個(gè)位中的一個(gè)預(yù)期位位置而P是從第三組多個(gè)位導(dǎo)出的一循環(huán)冗余碼校驗(yàn)多項(xiàng)式;及對第一組多個(gè)位的等于1的每個(gè)位,逐位地執(zhí)行第三組多個(gè)位和計(jì)算出的余項(xiàng)的“異或”運(yùn)算。
12.一種配置成產(chǎn)生一消息鑒別碼的發(fā)生器,它包含用來以一種依賴密鑰的方式偽隨機(jī)地把第一組消息位分配到第二組多個(gè)位中的裝置;用來產(chǎn)生包含第二組多個(gè)位的循環(huán)冗余碼較驗(yàn)的第三組多個(gè)位的裝置;及用來發(fā)送第一組消息位和包含第三組多個(gè)位的消息鑒別碼的裝置。
13.如權(quán)利要求12所述的發(fā)生器,其特征在于,所述產(chǎn)生裝置包含一微處理器,可由該微處理器訪問的查閱表及可由該微處理器執(zhí)行的一組軟件指令。
14.如權(quán)利要求12所述的發(fā)生器,其特征在于,所述產(chǎn)生裝置包含一移位寄存器。
15.如權(quán)利要求12所述的發(fā)生器,其特征在于,用來偽隨機(jī)分配的裝置包含用來把第一組多個(gè)位的第一個(gè)放到第二組多個(gè)位中的一個(gè)偏移位位置中的裝置;及用來從該偏移位位置跳過第二組多個(gè)位中的不可預(yù)測的數(shù)目的位位置的裝置。
16.如權(quán)利要求15所述的發(fā)生器,還包括用來把第一組多個(gè)位的下一位置于第三組多個(gè)位的起始位位置中的裝置。
17.如權(quán)利要求15所述的發(fā)生器,還包含用來確定跳過的位位置的最大數(shù)目以致于不抵達(dá)或通過第二組多個(gè)位的初始位位置的裝置。
18.如權(quán)利要求15所述的發(fā)生器,其特征在于,跳過的位位置的數(shù)目是2的4至16(包括4和16)次冪。
19.如權(quán)利要求12所述的發(fā)生器,其特征在于,用來偽隨機(jī)分配的裝置包含用來把第二組多個(gè)位分成塊大小大致均勻的塊的裝置;及用來把第一組多個(gè)位放到每個(gè)塊內(nèi)的隨機(jī)位位置中且每個(gè)塊中置入一個(gè)位的裝置。
20.如權(quán)利要求19所述的發(fā)生器,其特征在于,均勻塊大小是2的4至16(包括4和16)次冪。
21.如權(quán)利要求12所述的發(fā)生器,其特征在于,用來偽隨機(jī)分配的裝置包含用一鍵控置換函數(shù)從在第二組多個(gè)位中的第一組多個(gè)位的起始位位置導(dǎo)出新的位位置的裝置。
22.如權(quán)利要求12所述的發(fā)生器,其特征在于,用來偽隨機(jī)分配的裝置包含用來計(jì)算多項(xiàng)式xi的余項(xiàng)模數(shù)P的裝置,這里i是在第二組多個(gè)位中的一個(gè)預(yù)期的位位置而P是從第三組多個(gè)位導(dǎo)出的循環(huán)冗余碼校碼多項(xiàng)式;及用來對第一組多個(gè)位的等于1的每個(gè)位,逐位地執(zhí)行第三組多個(gè)位和計(jì)算出的余項(xiàng)的“異或”運(yùn)算的裝置。
23.一種配置成產(chǎn)生消息鑒別碼的發(fā)生器,其特征在于它包含配置成以一種依賴密鑰的方式偽隨機(jī)地把第一組消息位分配到第二組多個(gè)位中的處理器。耦合到該分配器且配置成產(chǎn)生包含第二組多個(gè)位的循環(huán)冗余碼校驗(yàn)的第三組多個(gè)位的發(fā)生器;及耦合到該發(fā)生器且配置成發(fā)送第一組消息位和包含第三組多個(gè)位的消息鑒別碼的發(fā)射器。
24.如權(quán)利要求23所述的發(fā)生器,其特征在于,該發(fā)生器包含可由該微處理器訪問的查閱表,及存儲(chǔ)在存儲(chǔ)器元件中并由該微處理器可執(zhí)行的一組軟件指令。
25.如權(quán)利要求23所述的發(fā)生器,其特征在于,該發(fā)生器包含一移位寄存器。
26.如權(quán)利要求23所述的發(fā)生器,其中處理器還配置成把第一組多個(gè)位的第一個(gè)位放在第二組多個(gè)位中的一個(gè)偏移位位置中并從該偏移位位置跳過第二組多個(gè)位中的不可預(yù)測的數(shù)目的位位置。
27.如權(quán)利要求26所述的發(fā)生器,其特征在于,處理器還配置成把第一組多個(gè)位的下一個(gè)位置于第二組多個(gè)位的起始位位置中。
28.如權(quán)利要求23所述的發(fā)生器,其特征在于,處理器還配置成把第二組多個(gè)位分成塊大小大致均勻的塊及把第一組多個(gè)位放在每個(gè)塊內(nèi)的隨機(jī)位位置中,每個(gè)塊中置入一個(gè)位。
29.如權(quán)利要求23所述的發(fā)生器,其特征在于,處理器包含一計(jì)算器和一多項(xiàng)式加法器,所述計(jì)算器配置成計(jì)算多項(xiàng)式xi的余項(xiàng)模數(shù)P,這里i是在第二組多個(gè)位中的一個(gè)預(yù)期的位位置而P是從第三組多個(gè)位導(dǎo)出的循環(huán)冗余碼檢驗(yàn)多項(xiàng)式,而所述多項(xiàng)式加法器配置成對第一組多個(gè)位的等于1的每個(gè)位逐位地執(zhí)行第三組多個(gè)位和計(jì)算出的余項(xiàng)的“異或”運(yùn)算。
全文摘要
一種用來產(chǎn)生消息鑒別碼(MAC)的方法,包括按照偽隨機(jī)數(shù)分配格式把一消息的位分配到一較大消息中的步驟。計(jì)算該較大消息的循環(huán)冗余碼校碼(CRC)位并將其用作該消息的MAC。不必產(chǎn)生該較大消息。計(jì)算余項(xiàng)模數(shù)多項(xiàng)式x
文檔編號G09C1/00GK1369157SQ00811485
公開日2002年9月11日 申請日期2000年8月7日 優(yōu)先權(quán)日1999年8月9日
發(fā)明者G·G·羅斯, P·E·本德, 小R·F·奎克, J·K·沃爾夫 申請人:高通股份有限公司