專利名稱:消息鑒別碼的加密整數(shù)置換的生成的制作方法
背景技術:
I.發(fā)明領域本發(fā)明一般屬于通信領域并尤其涉及在用于消息鑒別碼的模N整數(shù)集合上構(gòu)造加密置換。
II.背景消息鑒別碼(MAC)是由密碼上得到的項,為了檢驗從特定用戶產(chǎn)生的消息它可附加于特定消息,并且它不由任何其他用戶改變。毫無疑問MAC用于許多通信領域。示例的領域是無線通信。
無線通信領域具有許多應用,包括例如無繩電話、尋呼、無線本地環(huán)路、諸如個人數(shù)字助理(PDA)的無線數(shù)據(jù)應用、諸如蜂窩和PCS電話系統(tǒng)的無線電話、移動因特網(wǎng)協(xié)議(IP)電話以及衛(wèi)星通信系統(tǒng)。特別重要的應用是移動用戶的無線電話。
開發(fā)了各種空中接口用于無線通信系統(tǒng),包括頻分多址(FDMA)、時分多址(TDMA)和碼分多址(CDMA)。在與它們的連接中,建立了各種國內(nèi)和國際的標準,包括例如高級移動電話業(yè)務(AMPS)、全球移動通信系統(tǒng)(GSM)和臨時標準95(IS-95)。
示例的無線電話通信系統(tǒng)是碼分多址(CDMA)系統(tǒng)。由電信工業(yè)協(xié)會(TIA)或其他熟知的標準實體發(fā)布IS-95標準和它的派生IS-95A、ANSI J-STD-008、IS-95B、所提出的第三代標準IS-95C和IS-2000、所提出的數(shù)據(jù)專用CDMA標準來指定蜂窩或PCS電話通信系統(tǒng)的CDMA空中接口的使用。在美國專利第5103459號以及第4901307號中描述了大致根據(jù)IS-95標準使用配置的示例無線通信系統(tǒng),它已轉(zhuǎn)讓給本發(fā)明的受讓人并通過引用完整合并在這里。
對通過無線系統(tǒng)發(fā)送的數(shù)據(jù)進行加密的一種方法是數(shù)據(jù)加密標準(DES),它由國家標準與技術學會在FIPS PUB 46-2(1993年12月30日)中發(fā)布,它采用Feistel網(wǎng)絡把二進制編碼信息轉(zhuǎn)換為密碼。在DES中使用Feistel網(wǎng)絡轉(zhuǎn)換長度為64位的數(shù)據(jù)塊。首先,對數(shù)據(jù)64位塊進行初始置換步驟。把所置換的數(shù)據(jù)塊分為兩半長度為32位,其中一個塊標為L另一個標為R。隨后使用以下關系對塊進行迭代過程Li=RI-1,Ri=Li-1f(Ri-1,Ki)其中Ki是用于第i循環(huán)的子密鑰,而f是任意函數(shù)。函數(shù)f也稱作為“循環(huán)”函數(shù),由于每個迭代步驟稱為循環(huán)。在DES算法中,循環(huán)函數(shù)f由四個操作組成。首先從56位密鑰選擇48位子密鑰。隨后循環(huán)函數(shù)f包括通過擴充置換把數(shù)據(jù)的右半塊從32位擴充到48位的步驟、通過異或運算把這個結(jié)果與48位子密鑰結(jié)合的步驟、通過8個替換框發(fā)送結(jié)果的步驟(它產(chǎn)生32個附加位)以及置換結(jié)果的步驟。通過另一異或運算把函數(shù)f的輸出與左半塊結(jié)合,并且結(jié)果用作新的右半塊,同時舊的右半塊用作下一循環(huán)的新的左半塊。DES循環(huán)是可逆的,因為在每個循環(huán)中可以重新構(gòu)造f以滿足關系式Li-1f(Ri-1,Ki)f(Ri-1,Ki)=Li-1。
由于數(shù)據(jù)塊的二進制格式,諸如DES現(xiàn)有技術方法把明碼文本消息(它的元素是n項笛卡爾積Z2×Z2×...×Z2集合的項)加密為加密文本消息(它的元素也是n項笛卡爾積Z2×Z2×...×Z2集合的項)。如這里所采用的,Zm是模m加法下的循環(huán)集合{0,1,...,m-1}。因此,DES的目的不是改變明碼文本(例如初始數(shù)據(jù))消息中的位順序,而是產(chǎn)生密碼文本,其中密碼文本的每個位都依照明碼文本的所有位。
由于DES是可逆的并在密鑰的控制下把264個輸入轉(zhuǎn)換為264輸出,所以DES也可以看作用于密鑰來選擇整數(shù)集合{0,1,...,264-1}置換的方法,這樣由密鑰選擇的置換必須保持對非授權(quán)用戶的隱藏。
在一般通信中,MAC是函數(shù)的輸出,其中消息和只由消息發(fā)出者和接收者知道的共用密鑰K是函數(shù)的輸入。如果所選的特定函數(shù)是固定的,那么可以中斷及潛在修改所發(fā)送消息的活動攻擊者不會發(fā)現(xiàn)密鑰K,也不會產(chǎn)生具有合理概率有效地由接收者接受的消息。
一種新的MAC在1999年8月9日提交的美國專利申請09/371147題為《METHODAND APPARATUS FOR GENERATING A MESSAGE AUTHENTICATION CODE》的專利申請中提出,它已轉(zhuǎn)讓給本發(fā)明的受讓人并通過引用在這里合并,其中MAC依賴于在一些密鑰的影響下對m位數(shù)據(jù)塊的位進行重新排序,并依賴于構(gòu)造x位的循環(huán)冗余校驗(CRC),它是重排序m位塊的線性函數(shù)。這個MAC稱作為CRC-MAC。發(fā)送者把初始m位數(shù)據(jù)塊連同CRC-MAC發(fā)送給接收者。接收者使用共用密鑰來對所接收的數(shù)據(jù)消息進行重新排序。隨后接收者從最終塊中計算CRC。采用這個方法,接收機能檢測在發(fā)送中是否改變了數(shù)據(jù),并修正在發(fā)送期間產(chǎn)生的少量差錯,同時使活動攻擊者仍舊難以偽造或改變消息。
熟知當m+x=2x-1-1時m和x是最佳的。在美國專利申請09/371147中詳細討論了x位CRC-MAC的構(gòu)造。本領域的普通技術人員知道16位CRC是特定用于無線通信領域的。使用以上關系式中數(shù)x=16,用于構(gòu)造CRC-MAC的數(shù)據(jù)塊最佳容量是m=(215-1)-16=32751位。
如上對于m和x的最佳值所示,CRC-MAC需要使用密鑰通過對初始m位數(shù)據(jù)塊的位進行重新排序構(gòu)造m位中間塊的方法,其中m=(2x-1-1)。如美國專利申請19/371147中所述,可以使用兩種算法進行m位中間塊的構(gòu)造。第一算法處理m位數(shù)據(jù)塊的每個位位標。對于與m位數(shù)據(jù)塊每位位置相關的每個位標x,第一算法進行第二算法以確定與x相同范圍中的唯一位標y,其中y是從x共用密鑰確定的。隨后第一算法把中間塊的位位置y的值設為數(shù)據(jù)塊位置x的位值。
在第一算法對范圍{0,1,...,m-1}中的每個位標x進行這些步驟后,中間塊將是包含不同順序數(shù)據(jù)塊位的m位塊。對于固定的CRC-MAC,對任何給定密鑰第一算法在中間塊的相同位置不放置來自數(shù)據(jù)塊的兩位。只有當對每個密鑰第二算法限定集合{0,1,...,m-1}到它上面的一對一映射才滿足條件。本領域中通常把一對一映射稱為置換。因此,CRC-MAC需要使用密鑰限定在集合{0,1,...,m-1}上的置換。此外,由密鑰選擇的置換必須保持對非授權(quán)用戶的隱藏。
DES可看作使用密鑰確定在整數(shù)集合{0,1,...,264-1}上置換的方法,這樣由密鑰選擇的置換必須對非授權(quán)用戶保持隱藏。如果m的值是264,那么DES要滿足第二算法的需求。然而DES和其他塊的密碼不能用作第二算法,因為這樣的密碼只為了產(chǎn)生順序2M集合之間的一對一關系而構(gòu)造,并不限定其他順序的集合之間的一對一關系。另外,塊密碼的特性滿足第二算法所需條件,而第二算法為了相同的安全概念而實現(xiàn)。
諸如RSA算法以及El-Gamal算法的一些公共密鑰算法揭示了用于密鑰限定對于某個N值而不是2的冪的ZN上的置換。然而,這些方法不應與CRC-MAC一起使用,因為這些公共密鑰對于較小值的N(比如32751)是不安全的。對于CRC-MAC所需N的值,由密鑰選擇的置換必須對非授權(quán)用戶隱藏。
因此,當前存在一種用于CRC-MAC置換大量數(shù)據(jù)位N的需要。在以上所述的最佳情況中,數(shù)據(jù)塊應該保持32751位。如上所述,置換N位需要一種用于限定集合{0,1,...,N-1}=ZN上置換的密鑰的方法,這樣由密鑰選擇的置換保持對非授權(quán)組的隱藏。需要這樣的方法應用于任何N的值,其中N可以是質(zhì)數(shù)也可以是合數(shù)。質(zhì)數(shù)是大于1的整數(shù),它的因數(shù)只有1和它本身。合數(shù)是大于1的不是質(zhì)數(shù)的整數(shù)。這樣的方法可應用于超越電信系統(tǒng)中消息授權(quán)和糾錯的各種應用。
發(fā)明概述當N的值不是2的冪時,本發(fā)明針對一種方法的需求,其中密鑰限定集合ZN上的置換,這樣由密鑰選擇的置換保持對非授權(quán)用戶的隱藏。本發(fā)明應用于所有大于或等于13的整數(shù)。根據(jù)N是合數(shù)還是質(zhì)數(shù)使用不同的方法。
本發(fā)明針對一種置換N位數(shù)據(jù)塊的方法,其中N位塊的每位與多個N位標中的位標相關。如果N是合數(shù),并且N能被分解為大于1的整數(shù)p和大于1的整數(shù)q,那么本發(fā)明就針對一種通過進行幾個循環(huán)從輸入值中得到輸出值的方法,每個循環(huán)包括的步驟有把輸入值分為第一部分和第二部分,其中的第一部分通過集合Zp構(gòu)造,而第二部分通過集合Zq構(gòu)造,并且輸入值表示為第二部分和第一部分的組合,其中的第一部分乘以整數(shù)q;構(gòu)造第一半循環(huán)密鑰和第二半循環(huán)密鑰;從第二部分和第一半循環(huán)密鑰中得到第一半循環(huán)值,其中第一半循環(huán)值是在第二部分和第一半循環(huán)密鑰上運算的第一非線性函數(shù)的輸出;使用模p加法器組合第一半循環(huán)值和第一部分以產(chǎn)生第三部分;從第三部分和第二半循環(huán)密鑰地到第二半循環(huán)值,其中第二半循環(huán)值是在第三部分和第二半循環(huán)密鑰上運算的第二非線性函數(shù)的輸出;使用模q加法器組合第二半循環(huán)值和第二部分;以及通過把第三部分乘以整數(shù)q并之后加上第二半循環(huán)值從循環(huán)中構(gòu)造輸出值。
如果N是質(zhì)數(shù),并且大于13,那么N被寫成兩個合數(shù)S和T的和,這樣集合ZN就分為兩個集合A和B,其中集合A中的元素數(shù)等于S,而集合B中的元素數(shù)等于T。用于合數(shù)N的以上方法可用于限定關于集合A的置換以及限定關于集合B的置換,其中通過近幾個循環(huán)從輸入值得到輸出值,其中每個由質(zhì)數(shù)循環(huán)和混合循環(huán)組成,還有最終循環(huán)只包含質(zhì)數(shù)循環(huán)。質(zhì)數(shù)循環(huán)包括的步驟有確定循環(huán)輸入值是在集合A中還是集合B中;如果值在集合A中,那么使用由以上所述的循環(huán)密鑰限定的關于集合A的置換從輸入確定第一值,而如果值在集合B中,那么使用由以上所述的循環(huán)密鑰限定的關于集合B的置換從輸入確定第一值;而混合循環(huán)包括的步驟把第一值輸入到關于整個集合ZN的簡單置換以產(chǎn)生循環(huán)輸出,其中簡單置換具有近似把A中的值的S/N映射A中的值的特性。
附圖簡述
圖1是現(xiàn)有技術稱為DES的加密計算的流程圖。
圖2是本發(fā)明實施例加密計算的框圖,其中加密計算使用模p加法器以及模q加法器。
圖3是使用處理器的整數(shù)置換設備的框圖。
圖4是在Z32752上進行加密計算的框圖。
圖5是示出如在圖4加密計算中實現(xiàn)的得到半循環(huán)密鑰K1i和K2i的流程圖。
圖6是在Z32752上進行另一加密計算的框圖。
圖7是示出如在圖6加密計算中實現(xiàn)的得到半循環(huán)密鑰K1i和K2i的流程圖。
圖8是本發(fā)明是示例加密計算的框圖,其中在ZN上進行加密計算且N為質(zhì)數(shù)。
較佳實施例詳述圖1是如由在FIPS PUB 46-2(1993年12月30日)公布的數(shù)據(jù)加密標準(DES)指定的現(xiàn)有技術加密算法的框圖。根據(jù)初始置換步驟101對64位輸入塊100進行置換。初始置換步驟101的結(jié)果是塊L0102和塊R0103。
在第一循環(huán),塊R0103和密鑰位塊K1104通過函數(shù)f105進行運算。使用模2加法器106組合函數(shù)f105的輸出和塊L0102以形成塊R1113。把塊L1112設置為等于塊R0103。
在第二循環(huán),塊R1113和密鑰位塊K2114通過函數(shù)f115進行運算。使用模2加法器116組合函數(shù)f115的輸出和塊L1112以形成塊R2123。把塊L2122設置為等于塊R1113。
重復以上對于第一循環(huán)和第二循環(huán)所述的過程直到完成16次循環(huán)。在第n次循環(huán)中,密鑰位塊Kn124和塊Rn通過函數(shù)f125進行運算。使用模2加法器126組合這個運算的輸出和塊Ln。在最后循環(huán),把塊R16142和塊L16143輸入到反向初始置換步驟144以形成輸出145。
DES方法操作于位塊,而其他塊加密也操作于位塊。因此,現(xiàn)有技術的情況針對于2n的塊容量的加密,其中n一般是塊的位數(shù),本發(fā)明是針對來自任意容量集合的值的加密的改進。
圖2是本發(fā)明一個循環(huán)的示例實施例的框圖,其中在ZN上構(gòu)造加密整數(shù)置換(KIP)且N不是質(zhì)數(shù)。對于p>1以及q>1使N=pq。把輸入Ci200分為兩個部分,部分Li210和部分Ri211,這樣Ci=Li_q+Ri,Li∈Zp且Rq∈Zq。部分Ri211和半循環(huán)密鑰K1i212通過非線性函數(shù)f1213進行運算以形成半循環(huán)值vi。使用模p加法器215把半循環(huán)值vi加上部分Li以形成部分L’i220。部分L’i220和半循環(huán)密鑰K2i222通過非線性函數(shù)f2223進行運算以形成半循環(huán)值v’i。使用模q加法器225把半循環(huán)值v’i加上部分Ri211以得到部分R’i221。通過等式Ci+1=L’i_q+R’i形成輸出部分Ci+1230。在備選中,部分L’i220和部分R’i221可用于下一個迭代循環(huán)。
圖2所示的方法是可逆的,即從Ci+1可以確定Ci。首先,把Ci+1分為部分L’i和R’i,滿足關系式Ci+1=L’i_q+R’i。為了得到R’i,得出v’i=f2(L’i,K2i)并從R’i(模q)減去半循環(huán)值v’i。結(jié)果值是Ri。一旦已知Ri,從計算vi=f1(Ri,K1i)并在L’i(模p)減去半循環(huán)值vi來得到值Li。結(jié)果值是Li。由Ci=Li_q+Ri確定Ci的值。
圖3是使用處理器的整數(shù)置換設備的框圖??刂破?20連接于處理器322并包括指示處理器322操作的指令集合??刂破?20可以包括軟件程序或微代碼集合。處理器322是進行置換設備所需操作的硬件。處理器322可實現(xiàn)為設計進行這里所述操作的微控制器、微處理器或數(shù)字信號處理器。存儲器元件324連接到處理器322并用于存儲值和指令。存儲器元件324可實現(xiàn)為隨機存取存儲器或其他設計為進行這里所述操作的存儲設備。在只讀存儲器或隨機存取存儲器或任何其他存儲設備中存儲指令和值。
如在圖2廣泛討論的通過ZN產(chǎn)生加密整數(shù)置換的方法可根據(jù)p和q的不同選擇而改變。圖4是加密整數(shù)置換方法的一個循環(huán)實施例的框圖,其中p=178而q=184,這樣N=32752。此外,數(shù)32752可分解因數(shù)為89×23×24,其中89×2=178而23×24=184。把輸入Ci400分為兩個部分,部分Li410和部分Ri411,這樣Ci=184_Li+Ri。部分Li410從Li=Cidiv 184(A div B是A÷B的整數(shù)部分)得到。部分Ri411從Ri=Cimod 184得到。
通過模356乘法器414把部分Ri411與常數(shù)α413相乘以產(chǎn)生乘積u。通過模356加法器416把乘積u和半循環(huán)密鑰值K1i412相加以產(chǎn)生組合值w。應該注意整數(shù)356=2*178。在步驟419,通過關系式w=x*m+y把組合值w分解為替換指示符值x和替換輸入值y,其中替換指示符值x是集合Z2的元素,替換輸入值y是集合Zm的元素,并設m等于p(在特定實施例中p=178)。替換指示符值x用于選擇兩個替換框S0420和S1421之一,其中每個替換框S0420和S1421是通過Z178的置換。在使用替換指示符值x選擇替換框Sx之后,通過替換框Sx運算替換輸入值y以得到半循環(huán)值vi。通過模178加法器423運算半循環(huán)值vi和部分Li410以得到部分L’i424。
通過模368乘法器424把部分L’i411與常數(shù)β425相乘以產(chǎn)生乘積u’。應該注意整數(shù)368=2*184。通過模368加法器429把乘積u’和半循環(huán)密鑰值K2i428相加以產(chǎn)生組合結(jié)果w’。在步驟430,通過關系式w’=x’*n+y’把組合值w’分解為替換指示符值x’和替換輸入值y’,其中替換指示符值x’是集合Z2的元素,替換輸入值y’是集合Zn的元素,并設n等于q(在特定實施例中p=184)。替換指示符值x’用于選擇兩個替換框T0433和T1434之一,其中替換框T0433和T1434是通過Z186的置換。在使用替換指示符值x’選擇替換框Tx’之后,通過每個替換框Tx’運算替換輸入值y’以得到半循環(huán)值v’i。通過模178加法器436運算半循環(huán)值v’i和部分Ri411以得到部分R’i437。
為加密整數(shù)置換選擇的兩個函數(shù)f1480函數(shù)和f2490在結(jié)構(gòu)上互相類似的。函數(shù)f1480把輸入乘以常數(shù)并產(chǎn)生模2p的結(jié)果,為值u。在以上所述本發(fā)明的實施例中,2p=356。函數(shù)f2490把輸入乘以常數(shù)β=368并產(chǎn)生模2q(2q=368)的結(jié)果,為值u’。選擇常數(shù)α和β以使α和356互質(zhì),而β和368互質(zhì)。例如,可設常數(shù)α等于整數(shù)33,因為33與356互質(zhì)。接著該乘法運算,以模356相加半循環(huán)密鑰,產(chǎn)生輸出值w,表示為w=x*m+y,其中x∈Z2,y∈Zi,并且j分別具有值p或q。使用x的值選擇兩個替換框之一。在函數(shù)f1480中,這兩個替換框表示為S0、S1,并且每個替換框是通過Z178的置換。在函數(shù)f2490中,這兩個替換框表示為T0、T1,并且每個替換框是通過Z184的置換。f1的輸出是vi=Sx(y),同時f2的輸出是v’i=Tx(y)。
半循環(huán)密鑰值K1i和K2i的確定在本發(fā)明該實施例中的半循環(huán)密鑰值可由SOBER II流密碼產(chǎn)生,它在1997年9月22日提交的美國專利申請08/934582題為《METHOD AND APPARATUS FORGENERATING ENCRYPTION STREAM CIPHERS》、1997年10月24日提交的美國專利申請08/957571題為《METHOD AND APPARATUS FOR GENERATING ENCRYPTION STREAMCIPHERS》、1998年8月28日提交的美國專利申請09/143441題為《METHOD ANDAPPARATUS FOR GENERATING ENCRYPTION STREAM CIPHERS》以及1999年9月8日提交的美國專利申請09/246366題為《METHOD AND APPARATUS FOR GENERATINGENCRYPTION STREAM CIPHERS》的專利申請中有所描述。以上所述專利申請已轉(zhuǎn)讓給本發(fā)明的受讓人,但這里不作討論。然而,應該注意任何流密碼可用于產(chǎn)生半循環(huán)密鑰值,如果流密碼產(chǎn)生均勻分配的字節(jié)。注意如果這樣的流密碼產(chǎn)生表示為s0,s1,...sr...的輸出字節(jié),那么兩個連續(xù)字節(jié)的整數(shù)值zt=256s2t+s2t+1會在Z65536上均勻分配。在本發(fā)明實施例的示例中,使用話路密鑰和可能的一些附加數(shù)據(jù)初始化SOBER-II,以產(chǎn)生足夠字節(jié)的輸出,表示為s0,s1,...sr...。把半循環(huán)密鑰設計為均勻分配。一種產(chǎn)生均勻分配半循環(huán)密鑰的方法就是使用兩個連續(xù)字節(jié)的整數(shù)值zt=256s2t+s2t+1,只有當zt小于65504。由于65504可由整數(shù)356(2p=356)和368(2q=368)整除,所以模356或模368約減的在0到65503之間均勻分配的數(shù)zt也分別在Z356和Z368上均勻分配。
以t=0開始,計算zt的值。如果zt不小于65504,那么就遞增t并對新的t值計算zt的值。重復這個過程直到發(fā)現(xiàn)zt的值小于65504。隨后模356約減這個小于65504的zt值以得到K11。在確定K11之后,就遞增t的值并對于新的t值計算zt的值。如果zt不小于65504,那么就遞增t并對新的t值計算zt的值。重復這個過程直到發(fā)現(xiàn)新的zt的值小于65504。隨后模368約減這個小于65504的zt值以得到K21。確定了K11和K21,就遞增t并且過程回到方法的開始,但不設t位0。重復該方法以確定K12和K22、K13和K23等等直到得到所有半循環(huán)密鑰。圖5為詳細描述這個迭代過程的流程圖。
在步驟500,把位標t設為0并把循環(huán)號i設為1。在步驟510由關系式zt=256s2t+s2t+1確定中間值zt。如果zt小于65504,就到達步驟520。如果zt不小于65504,就到達步驟530。在步驟520,設K11等于ztmod356、遞增位標t并且流程到達步驟540。在步驟530,遞增位標t并且流程到達步驟510。在步驟540由關系式zt=256s2t+s2t+1確定值zt,其中在步驟520遞增了位標t。如果zt小于65504,就到達步驟550,否則到達步驟560。在步驟550,設K21等于ztmod368、并遞增位標t和i。如果i<r,就回到步驟510。在步驟560,遞增位標t并且流程到達步驟540。
在本發(fā)明的另一實施例中,圖2中廣泛討論的加密整數(shù)置換通過Z32751實現(xiàn),且p=33,q=1213。(注意32751=33×1213。)圖6是采用p=33而q=1213的方法的一個循環(huán)的框圖。把輸入Ci600分為兩個部分,部分Li601和部分Ri602,這樣Ci=Li*1213+Ri。部分Li601由關系式Li=Cidiv(1213)確定,而部分Ri602由關系式Ri=Cimod(1213)確定。通過模273乘法器604把部分Ri602與常數(shù)α603相乘以得到乘積u。從集合Z19683選擇常數(shù)α603以使常數(shù)α603和數(shù)273(273=19683)互質(zhì)。在步驟609,u由關系式u=272u1+27u2+u3分解因數(shù)以得到項u1、u2和u3。
使用模27加法器613把項u1和子密鑰值K1Ai610相加以得到替換輸入值g1。使用模27加法器614把項u2和子密鑰值K1Bi611相加以得到替換輸入值g2。使用模27加法器615把項u3和子密鑰值K1Ci612相加以得到替換輸入值g3。應該注意這里所描述的方法具有多種可能的實現(xiàn)形式,它根據(jù)p和q或u的適當選擇。例如如果u被分解為四或更多項(例如u=273u1+272u2+27u3+u4)而不是用于步驟609的三項,那么就要增加加法器的數(shù)量。增加了加法器的數(shù)量,也就需要合適的子密鑰值的數(shù)量。從集合Z27的元素中選擇子密鑰值K1Ai610、K1Bi611和K1Ci612并以以下所述的方法確定。采用該方法產(chǎn)生更多子密鑰值而沒有過多的試驗以滿足本發(fā)明的其他實施例,比如當把u分解為四個或更多項的情況。
通過替換框S1619運算替換輸入值g1以得到替換值h1。通過替換框S2620運算替換輸入值g2以得到替換值h2。通過替換框S3621運算替換輸入值g3以得到替換值h3。通過模27加法器625相加替換值h1、替換值h2和替換值h3以確定半循環(huán)值vi。使用模27加法器627把半循環(huán)值vi和部分Li601相加以得到部分L’i628。
通過模1213乘法器655把部分L’i628與常數(shù)β650相乘以得到乘積u’。從集合Z1213的非零元素中選擇常數(shù)β650。使用模1213加法器656把乘積u’和半循環(huán)密鑰值K2i653相加以得到替換輸入值g’。把替換輸入值g’發(fā)送到替換框T657以得到半循環(huán)值v’i。使用模1213加法器658把半循環(huán)值v’i和部分Ri602以得到部分R’i659。部分L’i628和部分R’i659用于下一迭代循環(huán)。在備選中,部分L’i628乘以數(shù)值=1213并隨后與部分R’i659相加以形成部分Ci+1660。
半循環(huán)密鑰值K1i={K1Ai,K1Bi,K1Ci}和K2i的確定在本發(fā)明該實施例中的半循環(huán)密鑰值可由SOBER II流密碼產(chǎn)生。然而,如果流密碼產(chǎn)生均勻分配的字節(jié),任何流密碼可用于產(chǎn)生半循環(huán)密鑰值。注意如果這樣的流密碼產(chǎn)生表示為s0,s1,...sr...的輸出字節(jié),那么兩個連續(xù)字節(jié)的整數(shù)值zt=256s2t+s2t+1會在Z65536上均勻分配。
通過觀察如果數(shù)在0和59048(其中59049=3×273)均勻分配并被模273約減,那么數(shù)也在Z27×Z27×Z27上均勻分配,來確定子密鑰集合K1i={K1Ai,K1Bi,K1Ci}。通過觀察如果數(shù)在0和65501(其中65502=54×1213)均勻分配并被模1213約減,那么數(shù)也在Z1213上均勻分配,來確定子密鑰集合K2i。使用這些觀察,用于確定K1i={K1Ai,K1Bi,K1Ci}和K2i的值(其中1≤i≤r)的示例方法包括的步驟在圖7中詳述。
在步驟700,把位標t設為0并把循環(huán)號i設為1。在步驟710由關系式zt=256s2t+s2t+1確定中間值zt。如果zt小于59049,就到達步驟720。如果zt不小于59049,就到達步驟730。在步驟730,遞增位標t并且流程到達步驟710。在步驟720,設K11等于ztmod19683并遞增位標t。在步驟725,確定K1Ai,K1Bi,K1Ci的值以使K1i=272K1Ai+27K1Bi+K1Ci。在步驟725之后,流程到達步驟740。在步驟740由關系式zt=256s2t+s2t+1確定值zt,其中在步驟720遞增了位標t。如果zt小于65502,就到達步驟750,否則到達步驟760。在步驟750,設K21等于ztmod1213、并遞增位標t和i。如果i<r,就回到步驟710。在步驟760,遞增位標t并且流程到達步驟740。
使用以上所述的方法,每個子密鑰K1Ai,K1Bi,K1Ci(其中1≤i≤r)在Z27上均勻分配,而第二半循環(huán)密鑰K2i(其中1≤i≤r)在Z1213上均勻分配。選擇替換框滿足加密特性比如非線性和隨機。如果均勻分配半循環(huán)密鑰,那么到替換框的輸入也是均勻分配和獨立的。
希望以上所述加密整數(shù)置換方法用于消息授權(quán)碼,但也可用于任何需要整數(shù)集合加密置換的地方。例如,這里所述本發(fā)明的實施例也可用于以相似于DES把集合{0,1,...,264-1}中的整數(shù)加密為集合{0,1,...,264-1}中的其他整數(shù)的方式把集合{0,1,...,N-1}中的整數(shù)加密為集合{0,1,...,N-1}中的其他整數(shù)。
這里所述的加密整數(shù)置換的解密過程與加密過程相同,除了把每個循環(huán)內(nèi)的兩個半循環(huán)函數(shù)的順序反向、把每個循環(huán)內(nèi)的兩個半循環(huán)密鑰值的順序反向、從Li模p減去輸出vi以及從Ri模q減去輸出v’i以外。
圖8是本發(fā)明另一示例實施例的框圖,其中通過ZN構(gòu)造加密整數(shù)置換且N是質(zhì)數(shù)。使N=S+T。應該注意對于每個N≥13的值,存在兩個合數(shù)S和T使N=S+T。因此,在步驟800,把N個位標的集合分為由S個位標組成的區(qū)段A801以及由T個位標組成的區(qū)段B802。區(qū)段A801的位標重新標為{a0,a1....aS-1},而區(qū)段B802的位標重新標為{b0,b1....bS-1}。根據(jù)加密整數(shù)置換KIPS810置換區(qū)段A801的位標??梢愿鶕?jù)以上所述本發(fā)明的實施例實現(xiàn)加密整數(shù)置換KIPS810。根據(jù)加密整數(shù)置換KIPT811置換區(qū)段B802的位標。可以根據(jù)以上所述本發(fā)明的實施例實現(xiàn)加密整數(shù)置換KIPT811。
因此,KIPN的質(zhì)數(shù)循環(huán)可定義為KIPA,B(x)=KIPS(x),如果x∈{a0,a1....aS-1}或KIPT(x),如果x∈{b0,b1....bS-1}。
在步驟820,KIPA,B(x)的輸出經(jīng)歷“混合”運算,比如仿射運算Affs(x)=U*x+V(modN),其中1≤U≤N-1,并且U和V的值可根據(jù)安全密鑰。數(shù)學上,如果由Br=Ar+b定義算子BC_D,其中C,DR,b是D的固定元素,r是C的元素且A是把C映射到D上的線性算子,那么B就是仿射算子。
圖8的一般方法就是把具有質(zhì)數(shù)數(shù)量的集合分為兩個或更多集合,其中每個集合由非質(zhì)數(shù)數(shù)量的元素組成,并且隨后在合數(shù)集合上進行如圖2以及本發(fā)明其他各種實施例所述的加密整數(shù)置換。由于一個集合元素的置換產(chǎn)生由那一個集合定義的輸出,所以進行混合運算以在每個循環(huán)后把一個集合的元素與另一集合交替。
在本發(fā)明的一個實施例中,如圖8所述,其中N是質(zhì)數(shù),使N=S+T,以使S和T是合數(shù),定義A={0,1,S-1}和B={S,...,N-1},這樣集合A中元素的數(shù)量|A|=S,而集合B中元素的數(shù)量|B|=T。隨后可把質(zhì)數(shù)循環(huán)定義為KIPA,B(x)=KIPS(x),如果0≤x≤S-1,以及KIPA,B(x)=S+KIPT(x-S),如果S≤x≤N-1。
在本發(fā)明的另一個實施例中,如圖8所述,其中N是質(zhì)數(shù),使N=2T+1,以使T和T+1是合數(shù),定義A={0,2,4,...,2T}={2yy∈ZT+1}和B={1,3,5,...,2T-1}={2y+1y∈ZT}。因此,集合A包含偶數(shù)值,而集合B包含奇數(shù)值??砂奄|(zhì)數(shù)循環(huán)定義為KIPA,B(x)=2KIPT+1(x),如果x=2y,以及KIPA,B(x)=1+2KIPT(y),如果x=2y+1。
還是在本發(fā)明的另一個實施例中,如圖8所述,在步驟820的仿射映射運算中使用固定常數(shù)。選擇U和V的值以使Prob(AffU,V(x)在A中x在A中)近似為|A|/N。U和V的值根據(jù)集合A和B中元素的區(qū)分。選擇集合A和B以使|A|~|B|~(N/2)。置換Y3=KIPN(X0)具有四個質(zhì)數(shù)循環(huán)和三個仿射循環(huán),其中置換定義為Y0=KIPA,B(X0),X1=AffU,V(Y0),Y1=KIPA,B(X1),X2=AffU,V(Y1),Y2=KIPA,B(X2),X3=AffU,V(Y2),以及Y3=KIPA,B(X3)。
假設KIPA和KIPB用密鑰長度等于KIPN的密鑰長度是安全的。KIPN必須具有密鑰次序表(比如SOBER II)以得到在四個質(zhì)數(shù)循環(huán)中KIPA和KIPB所需的八個半循環(huán)密鑰。確信這個構(gòu)造產(chǎn)生安全的置換。
可以實現(xiàn)其他實施例采用大量質(zhì)數(shù)循環(huán)和/或密鑰相關的仿射循環(huán)。如果采用更多質(zhì)數(shù)循環(huán),那么可從較弱加密整數(shù)置換構(gòu)造質(zhì)數(shù)循環(huán)函數(shù)以增加速度。
這樣,描述了一種通過ZN構(gòu)造加密整數(shù)置換的方法。提供該描述使本領域的技術人員能實施或采用本發(fā)明。對于本領域技術人員對這些實施例的各種修改是很明顯的,并且這里所定義的一般原理可應用于其他實施例而不使用創(chuàng)造性才能。這樣,不希望本發(fā)明限于這里所示的實施例,但要根據(jù)符合這里所揭示原理和新穎性特點的最寬范圍。
權(quán)利要求
1.一種從ZN中的輸入值中得到ZN中輸出值的方法,其中N=pq,而p>1,q>1,包括多個循環(huán),每個循環(huán)包括的步驟有產(chǎn)生第一密鑰和第二密鑰;把循環(huán)輸入分為第一部分和第二部分,其中的第一部分是Zp的元素,而第二部分是Zq的元素;把第一密鑰應用到第二部分以產(chǎn)生第三部分,其中第三部分是Zp的元素;用模p加法器相加第一部分和第三部分以產(chǎn)生第四部分;把第二密鑰應用到第四部分以產(chǎn)生第五部分,其中第五部分是Zq的元素;用模q加法器相加第五部分和第二部分以產(chǎn)生第六部分;組合第四部分和第六部分以形成循環(huán)輸出;以及如果該循環(huán)是最終循環(huán),那么該循環(huán)輸出是本發(fā)明的輸出值,否則該循環(huán)輸出成為下一循環(huán)的輸入。
2.一種置換N位數(shù)據(jù)塊的方法,其中N位數(shù)據(jù)塊的每位與多個N位標中的位標相關,其中N能被分解為大于1的整數(shù)p和大于1的整數(shù)q,包括的步驟有把多個N位標分為第一部分和第二部分,其中的第一部分通過集合Zp構(gòu)造,而第二部分通過集合Zq構(gòu)造,以使多個N位標表示為第二部分和第一部分多個值的組合,其中所述多個值由整數(shù)值q限定;構(gòu)造第一半循環(huán)密鑰和第二半循環(huán)密鑰;從第二部分和第一半循環(huán)密鑰中得到第一半循環(huán)值,其中第一半循環(huán)值是在第二部分和第一半循環(huán)密鑰上運算的第一非線性函數(shù)的輸出;使用模p加法器組合第一半循環(huán)值和第一部分以產(chǎn)生第三部分;從第三部分和第二半循環(huán)密鑰得到第二半循環(huán)值,其中第二半循環(huán)值是在第三部分和第二半循環(huán)密鑰上運算的第二非線性函數(shù)的輸出;以及使用模q加法器組合第二半循環(huán)值和第二部分以產(chǎn)生第四部分。
3.按權(quán)利要求2所述的方法,其特征在于在多個循環(huán)中重復每個循環(huán)的步驟,其中每個循環(huán)產(chǎn)生的第三部分和第四部分用作之后循環(huán)的輸入。
4.按權(quán)利要求3所述的方法,其特征在于之后循環(huán)是最后循環(huán),該方法進一步包括的步驟有用整數(shù)值q乘最后循環(huán)產(chǎn)生的第三部分;用最后循環(huán)產(chǎn)生的第四部分組合乘積第三部分以產(chǎn)生最終結(jié)果;根據(jù)最終結(jié)果置換N位數(shù)據(jù)塊。
5.按權(quán)利要求2所述的方法,其特征在于由流密碼產(chǎn)生第一半循環(huán)密鑰和第二半循環(huán)密鑰。
6.按權(quán)利要求2所述的方法,其特征在于由密鑰生成方法產(chǎn)生第一半循環(huán)密鑰和第二半循環(huán)密鑰,該方法包括的步驟有產(chǎn)生多個均勻分配的字節(jié);把第一對連續(xù)的多個均勻分配的字節(jié)元素相加以產(chǎn)生第一中間值,其中第一對連續(xù)元素的一個首先乘以乘數(shù);檢測第一中間值以確定第一中間值是否小于第一預定量;如果第一中間值大于第一預定量就回到把第一對連續(xù)的多個均勻分配的字節(jié)元素相加的步驟;由第一整數(shù)值模約減第一中間值以產(chǎn)生第一半循環(huán)密鑰;把第二對連續(xù)的多個均勻分配的字節(jié)元素相加以產(chǎn)生第二中間值,其中第二對連續(xù)元素的一個首先乘以乘數(shù);檢測第二中間值以確定第二中間值是否小于第二預定量;如果第二中間值大于第二預定量就回到把第二對連續(xù)的多個均勻分配的字節(jié)元素相加的步驟;由第二整數(shù)值模約減第二中間值以產(chǎn)生第二半循環(huán)密鑰;重復密鑰生成方法的步驟以產(chǎn)生多對第一半循環(huán)密鑰和第二半循環(huán)密鑰,其中多對第一半循環(huán)密鑰和第二半循環(huán)密鑰的每對與多個循環(huán)中的每個循環(huán)相關。
7.按權(quán)利要求6所述的密鑰生成方法,其特征在于第一預定量等于第二預定量。
8.按權(quán)利要求6所述的密鑰生成方法,其特征在于密鑰生成方法進一步包括的步驟有確定多個子密鑰值{a1,i,a2,i...,an,i},以使第一半循環(huán)密鑰K1i=xn-1a1,i+xn-2a2,i+...+an,i,其中n≥2,x是第一預定量的因數(shù),而i標識迭代循環(huán)。
9.按權(quán)利要求2所述的方法,其特征在于第一非線性函數(shù)的方法包括的步驟有把第二部分乘以第一常數(shù)值以產(chǎn)生第一乘積;把第一乘積與第一半循環(huán)密鑰組合以產(chǎn)生第一組合結(jié)果;用第一組合結(jié)果的置換替換第一組合結(jié)果以產(chǎn)生第一半循環(huán)值。
10.按權(quán)利要求9所述的方法,其特征在于替換第一組合結(jié)果的步驟包括的步驟有把第一組合值分解為替換指示符值和替換輸入值;使用替換指示符值選擇第一多個替換框之一;以及把替換輸入值輸入從第一多個替換框選擇的替換框以產(chǎn)生第一半循環(huán)值。
11.按權(quán)利要求2所述的方法,其特征在于第二非線性函數(shù)的方法包括的步驟有把第三部分乘以第二常數(shù)值以產(chǎn)生第二乘積;把第二乘積與第二半循環(huán)密鑰組合以產(chǎn)生第二組合結(jié)果;用第二組合結(jié)果的置換替換第二組合結(jié)果以產(chǎn)生第二半循環(huán)值。
12.按權(quán)利要求11所述的方法,其特征在于替換第二組合結(jié)果的步驟包括的步驟有把第二組合值分解為替換指示符值和替換輸入值;使用替換指示符值選擇第二多個替換框之一;以及把替換輸入值輸入從第二多個替換框選擇的替換框以產(chǎn)生第二半循環(huán)值。
13.按權(quán)利要求8所述的方法,其特征在于第一非線性函數(shù)的方法包括的步驟有把第二部分乘以第一常數(shù)值以產(chǎn)生第一乘積;把第一乘積分解為多項,表示為un,這樣第一乘積等于xn-1u1+xn-2u2+...+un;把多項的每項與多個子密鑰a1,i,a2,i,...,an,i的相關一個模相加以產(chǎn)生多個替換輸入值;把多個替換輸入值的每個輸入多個替換框的相關一個以產(chǎn)生多個替換值;以及把多個替換值的至少兩個模相加以產(chǎn)生第一半循環(huán)值。
14.一種從ZN中的輸入值中得到ZN中輸出值的方法,其中N是質(zhì)數(shù)并大于或等于十三(13),并且S和T是合數(shù)值使N=S+T,其中該方法包括多個循環(huán),每個循環(huán)包括的步驟有產(chǎn)生第一密鑰和第二密鑰;把S個輸入值的第一集合的每個元素分配到集合{0,...,S-1}中的唯一位標;把T個輸入值的第二集合的每個元素分配到集合{0,...,T-1}中的唯一位標;如果多個輸入位標是集合{0,...,S-1}的元素,就在多個輸入位標上進行第一加密整數(shù)置換以產(chǎn)生第一多個輸出位標,其中第一加密整數(shù)置換采用第一密鑰;如果多個輸入位標是集合{0,...,T-1}的元素,就在多個輸入位標上進行第二加密整數(shù)置換以產(chǎn)生第二多個輸出位標,其中第二加密整數(shù)置換采用第二密鑰;以及把第一多個輸出位標與第二多個輸出位標混合。
15.按權(quán)利要求14所述的方法,其特征在于從把第一多個輸出位標與第二多個輸出位標混合的步驟的輸出用作之后循環(huán)的輸入。
16.按權(quán)利要求15所述的方法,其特征在于之后循環(huán)是最后循環(huán),方法進一步包括的步驟有根據(jù)從把第一多個輸出位標與第二多個輸出位標混合的步驟的輸出,把輸入位排列重新排列為輸出位排列。
17.一種無線通信設備,包括處理器;以及存儲介質(zhì),其中存儲介質(zhì)存儲由置換N位數(shù)據(jù)塊的處理器可執(zhí)行的指令,其中每位與多個N位標的位標相關,其中由一種方法置換多個N位標,該方法包括的步驟有把多個N位標的每個分為第一部分和第二部分,其中的第一部分通過集合Zp構(gòu)造,而第二部分通過集合Zq構(gòu)造,以使多個N位標的每個表示為第二部分和第一部分多個值的組合,其中所述多個值由整數(shù)值q限定;構(gòu)造第一半循環(huán)密鑰和第二半循環(huán)密鑰;從第二部分和第一半循環(huán)密鑰中得到第一半循環(huán)值,其中第一半循環(huán)值是在第二部分和第一半循環(huán)密鑰上運算的第一非線性函數(shù)的輸出;使用模p加法器組合第一半循環(huán)值和第一部分以產(chǎn)生第三部分;從第三部分和第二半循環(huán)密鑰得到第二半循環(huán)值,其中第二半循環(huán)值是在第三部分和第二半循環(huán)密鑰上運算的第二非線性函數(shù)的輸出;以及使用模q加法器組合第二半循環(huán)值和第二部分以產(chǎn)生第四部分。
18.一種無線通信設備,包括處理器;以及存儲介質(zhì),其中存儲介質(zhì)存儲由置換N位數(shù)據(jù)塊的處理器可執(zhí)行的一組指令,其中N是合數(shù)或是質(zhì)數(shù),其中如果N是合數(shù),處理器就執(zhí)行一組指令在N位數(shù)據(jù)塊上進行加密整數(shù)置換,但如果N是質(zhì)數(shù),處理器就執(zhí)行一組指令把N位數(shù)據(jù)塊分為第一集合和第二集合并在第一集合上進行第一加密整數(shù)置換,而在第二集合上進行第二加密整數(shù)置換。
19.一種從ZN中的輸入值中得到ZN中輸出值的設備,其中N=pq,而p>1,q>1,包括產(chǎn)生第一密鑰和第二密鑰的裝置;把循環(huán)輸入分為第一部分和第二部分的裝置,其中的第一部分是Zp的元素,而第二部分是Zq的元素;把第一密鑰應用到第二部分以產(chǎn)生第三部分的裝置,其中第三部分是Zp的元素;用模p加法器相加第一部分和第三部分以產(chǎn)生第四部分的裝置;把第二密鑰應用到第四部分以產(chǎn)生第五部分的裝置,其中第五部分是Zq的元素;用模q加法器相加第五部分和第二部分以產(chǎn)生第六部分的裝置;以及組合第四部分和第六部分以形成循環(huán)輸出的裝置。
20.一種從ZN中的輸入值中得到ZN中輸出值的設備,其中N是質(zhì)數(shù)并大于或等于十三(13),并且S和T是合數(shù)值使N=S+T,其中該方法包括多個循環(huán),每個循環(huán)包括的步驟有產(chǎn)生第一密鑰和第二密鑰的裝置;把S個輸入值的第一集合的每個元素分配到集合{0,...,S-1}中的唯一位標的裝置;把T個輸入值的第二集合的每個元素分配到集合{0,...,T-1}中的唯一位標的裝置;如果多個輸入位標是集合{0,...,S-1}的元素,就在多個輸入位標上進行第一加密整數(shù)置換以產(chǎn)生第一多個輸出位標的裝置,其中第一加密整數(shù)置換采用第一密鑰;如果多個輸入位標是集合{0,...,T-1}的元素,就在多個輸入位標上進行第二加密整數(shù)置換以產(chǎn)生第二多個輸出位標的裝置,其中第二加密整數(shù)置換采用第二密鑰;以及把第一多個輸出位標與第二多個輸出位標混合的裝置。
21.一種授權(quán)在第一站點和第二站點之間發(fā)送的N位數(shù)據(jù)消息的方法,其中N是合數(shù)或質(zhì)數(shù),包括的步驟有在第一站點對集合ZN的多個元素使用加密整數(shù)置換以產(chǎn)生置換順序;根據(jù)置換順序?qū)位數(shù)據(jù)消息中的多個位進行重新排序以形成置換的N位消息;根據(jù)置換的N位消息產(chǎn)生第一循環(huán)冗余校驗(CRC)消息;把N位數(shù)據(jù)消息和第一CRC消息從第一站點發(fā)送到第二站點;在第二站點檢測所接收的N位數(shù)據(jù)消息和所接收的CRC消息;在第二站點對所接收的N位數(shù)據(jù)消息使用加密整數(shù)置換以得到第二置換順序;根據(jù)第二置換順序產(chǎn)生第二CRC消息;以及比較所接收的CRC消息和第二CRC消息,由此如果所接收的CRC消息和第二CRC消息是匹配的就授權(quán)所接收的N位數(shù)據(jù)消息。
22.按權(quán)利要求21所述的方法,其特征在于該方法可用于糾錯,進一步包括步驟確定比較所接收的CRC消息和第二CRC消息的步驟是否產(chǎn)生少于或等于預定閾值的差錯量;如果比較步驟產(chǎn)生的差錯量少于或等于預定閾值就糾正所接收的N位數(shù)據(jù)消息,其中糾正步驟使用所接收CRC消息;以及如果比較步驟產(chǎn)生的差錯量多于預定閾值就請求N位數(shù)據(jù)消息的重新發(fā)送。
全文摘要
一種根據(jù)集合Z
文檔編號H04L9/32GK1435026SQ01810848
公開日2003年8月6日 申請日期2001年5月1日 優(yōu)先權(quán)日2000年5月2日
發(fā)明者P·霍克斯, G·G·羅斯, 小R·F·奎克 申請人:高通股份有限公司