專利名稱:一種使用對(duì)稱密碼算法實(shí)現(xiàn)輕量級(jí)認(rèn)證加密的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及密碼算法的使用和輕量級(jí)認(rèn)證加密功能的實(shí)現(xiàn),適用于為物聯(lián)網(wǎng)系統(tǒng)能量受限的器件提供低能耗認(rèn)證與加密功能。
背景技術(shù):
隨著通信網(wǎng)絡(luò)的發(fā)展和通信設(shè)備成本的降低,通信已經(jīng)成為人們生活中必須的元素。物聯(lián)網(wǎng)產(chǎn)業(yè)的發(fā)展使得無(wú)線通信和輕量級(jí)密碼技術(shù)得以更廣泛的使用。在傳統(tǒng)的保密通信中,密碼模塊的基本功能是實(shí)現(xiàn)密碼算法,包括加密和解密算法、消息完整性算法、數(shù)字簽名算法等。作為保密通信系統(tǒng)中至關(guān)重要的認(rèn)證問(wèn)題,傳統(tǒng)上常使用數(shù)字簽名方法。當(dāng)通信雙方共享ー個(gè)密鑰時(shí),使用對(duì)稱密鑰密碼算法也可以實(shí)現(xiàn)一些認(rèn)證功能,如GSM移動(dòng)通信中網(wǎng)絡(luò)對(duì)用戶頂SI卡認(rèn)證就是通過(guò)一種專門(mén)設(shè)計(jì)的算法實(shí)現(xiàn)的。SM卡的認(rèn)證是使用對(duì)稱密碼實(shí)現(xiàn)認(rèn)證的典型應(yīng)用之一,但在許多傳感器網(wǎng)絡(luò)和RFID節(jié)點(diǎn)應(yīng)用中,使用專門(mén)設(shè)計(jì)的獨(dú)立于加密算法的密碼算法實(shí)現(xiàn)認(rèn)證將增加許多成本,甚至不能忍受。而且,GSM系統(tǒng)中的SM卡也只能完成單向認(rèn)證,而許多傳感網(wǎng)和RFID應(yīng)用系統(tǒng)需要雙向認(rèn)證。而且,物聯(lián)網(wǎng)產(chǎn)業(yè)的發(fā)展急需輕量級(jí)密碼算法,包括加密算法和認(rèn)證算法。
發(fā)明內(nèi)容
本發(fā)明的目的是給出ー種使用加密和解密算法,該方法在實(shí)現(xiàn)數(shù)據(jù)機(jī)密性的同時(shí),實(shí)現(xiàn)認(rèn)證功能,同時(shí)具有抗重放攻擊的能力。本發(fā)明的特點(diǎn)是針對(duì)能量受限環(huán)境,提供ー種輕量級(jí)密碼模塊使用方法,使單次加密過(guò)程可以提供上述的所有功能。
為了實(shí)現(xiàn)本發(fā)明的目的,提出ー種使用對(duì)稱密碼算法實(shí)現(xiàn)輕量級(jí)認(rèn)證加密的方法,該方法使用的加密模塊包括加密算法E、存放密鑰k的秘密存儲(chǔ)單元和計(jì)數(shù)器CtrA,其加密過(guò)程包括如下步驟I)將計(jì)數(shù)器CtrA的值增加非零增幅δ,即令CtrA = CtrA+ δ ;2)所述加密模塊將要加密的數(shù)據(jù)data和計(jì)數(shù)器的值CtrA混合,然后連同存儲(chǔ)在秘密存儲(chǔ)單元的密鑰值k 一同送入加密算法E,得到密文c = Ek(CtrA, data);3)加密模塊輸出數(shù)組(CtrA,c)。在所述步驟2)中,所述加密模塊將一個(gè)初始向量值IV送入加密算法,對(duì)所述數(shù)據(jù)進(jìn)行加密得到密文c = Ekjiv (CtrA, data)。在所述步驟2)中,所述加密模塊先將計(jì)數(shù)器的值通過(guò)函數(shù)f O映射為初始向量并送入加密算法,對(duì)所述數(shù)據(jù)進(jìn)行加密得到密文c = EkJ.{Clrt){CtrA, data) ο在所述步驟I中,所述計(jì)數(shù)器的值CtrA來(lái)自于系統(tǒng)時(shí)鐘,所述增幅δ是兩次使用計(jì)數(shù)器的值所產(chǎn)生的時(shí)差。本發(fā)明還提出ー種使用對(duì)稱密碼算法實(shí)現(xiàn)輕量級(jí)認(rèn)證解密的方法,該方法使用的解密模塊包括解密算法D、存放密鑰k的秘密存儲(chǔ)單元和計(jì)數(shù)器CtrB,其解密過(guò)程包括如下步驟4)所述解密模塊將所述的加密模塊的輸出數(shù)據(jù)(CtrA,c)中計(jì)數(shù)器部分CtrA的值與所述解密模塊計(jì)數(shù)器的值CtrB進(jìn)行比較如果輸出數(shù)據(jù)(CtrA,c)的加密模塊使用過(guò)程中所述δ > O,則判斷是否滿足CtrA> CtrB ;如果輸出數(shù)據(jù)(CtrA,c)的加密模塊使用過(guò)程中所述δ <0,則判斷是否滿足CtrA< CtrB ;若條件不滿足,則輸出錯(cuò)誤信息I并停止;否則執(zhí)行如下步驟;5)使用所述秘密存儲(chǔ)單元中的密鑰k對(duì)所述數(shù)據(jù)(CtrA,c)進(jìn)行解密,得到d = Dk(c) = (Ctr/,data’),判斷等式Ctr/ = CtrA是否成立,若不成立,則輸出錯(cuò)誤信息2并停止,否則執(zhí)行如下步驟;6)更新所述計(jì)數(shù)器的值CtrB := CtrA ;輸出所述解密算法得到的部分計(jì)算結(jié)果data’。在步驟5),所述解密模塊將一個(gè)初始向量IV送入解密算法,對(duì)所述數(shù)據(jù)進(jìn)行解密過(guò)程為 d = Dkj IV (c) = (CtrA,, data,)。在步驟5),所述解密模塊先將計(jì)數(shù)器所述接收收據(jù)部分的計(jì)數(shù)器的值CtrA通過(guò)函數(shù)f()映射為初始向量IV = f(CtrA)并送入解密算法,對(duì)所述數(shù)據(jù)進(jìn)行解密的過(guò)程為d = Dk f(CtrA)(c) = {CtrA , data ) ο本發(fā)明進(jìn)一歩提出ー種使用對(duì)稱密碼算法實(shí)現(xiàn)輕量級(jí)認(rèn)證加密和解密的方法,所述方法使用的密碼模塊包括加密算法Ε、解密算法D、存儲(chǔ)密鑰k的秘密存儲(chǔ)單元和計(jì)數(shù)器Ctr,所述方法包括如下步驟a)所述密碼模塊從輸入ロ讀取ー個(gè)算法選擇指令,根據(jù)所述指令判斷是加密請(qǐng)求還是解密請(qǐng)求;b)如果所述算法選擇指令為加密請(qǐng)求,則執(zhí)行如下步驟所述密碼模塊將所述計(jì)數(shù)器的值更新為Ctr = Ctr+ δ,所述δ為非零數(shù);所述密碼模塊將計(jì)數(shù)器的值Ctr與被加密的數(shù)據(jù)data混合,然后連同秘密存儲(chǔ)單元中的密鑰值k 一同送入加密算法,得到密文c = Ek (Ctr, data),輸出數(shù)組(Ctr, c)作為對(duì)所述數(shù)據(jù)data的加密結(jié)果;c)如果所述算法選擇指令為解密請(qǐng)求,則執(zhí)行如下步驟所述解密模塊從被解密的輸入數(shù)據(jù)(Ctrl,Cl)分離出輸入計(jì)數(shù)器Ctrl和密文cl ;將Ctrl與所述密碼模塊內(nèi)存儲(chǔ)的計(jì)數(shù)器的值Ctr進(jìn)行比較如果步驟b)中的所述δ >0,則判斷是否滿足Ctrl > Ctr;如果步驟b)中的所述δ <0,則判斷是否滿足Ctrl < Ctr ;若條件不滿足,則輸出錯(cuò)誤信息I并停止;否則執(zhí)行如下步驟;d)使用秘密存儲(chǔ)單元中的密鑰k對(duì)所述解密數(shù)據(jù)中的Cl進(jìn)行解密,得到d =Dk(cl) = (Ctrl’,data’),判斷等式Ctrl’ = Ctrl是否成立,若不成立,報(bào)輸出錯(cuò)誤信息2并停止;否則執(zhí)行如下步驟;e)更新所述密碼模塊內(nèi)部計(jì)數(shù)器的值Ctr =Ctrl ;輸出所述解密的部分計(jì)算結(jié)果 data’ ο在步驟b)和步驟c),向所述加密算法和解密算法輸入初始向量IV,所述數(shù)據(jù)的加密過(guò)程為 c = Ekjiv(Ctr, data);所述數(shù)據(jù)的解密過(guò)程為 d = Dk,IV(c) = (Ctrl’,data,)。在步驟b),所述加密模塊先將所述密碼模塊內(nèi)部計(jì)數(shù)器的值Ctr通過(guò)函數(shù)f ()映射為初始向量IV = f (Ctr),對(duì)所述數(shù)據(jù)進(jìn)行的加密過(guò)程為C = Ekj f(ctr) (Ctr, data);在步驟c)所述解密模塊先將所從所述被解密數(shù)據(jù)中分離出的計(jì)數(shù)器的值Ctrl通過(guò)函數(shù)f O映射為初始向量IV = f (Ctrl),對(duì)所述數(shù)據(jù)進(jìn)行解密的過(guò)程為d = Dkjffctrl) (C) = (Ctrl’,data’ )。在步驟b),所述計(jì)數(shù)器Ctr的值更新為系統(tǒng)當(dāng)前時(shí)鐘。
圖I為認(rèn)證加密協(xié)議中加密模塊結(jié)構(gòu); 圖2為認(rèn)證加密協(xié)議中解密模塊結(jié)構(gòu);圖3為融加密模塊與解密模塊于一體的認(rèn)證密碼模塊結(jié)構(gòu);圖4為使用對(duì)稱密碼模塊實(shí)現(xiàn)機(jī)密性與認(rèn)證性的加解密過(guò)程實(shí)施例。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例和附圖,對(duì)本發(fā)明進(jìn)ー步詳細(xì)說(shuō)明。本發(fā)明有ー個(gè)加密模塊,包括一個(gè)加密算法E和一個(gè)密鑰k,ー個(gè)解密模塊,包括與加密算法E對(duì)應(yīng)的解密算法D和一個(gè)與加密模塊中相同的密鑰k,密鑰一般保存在秘密存儲(chǔ)單元。除配對(duì)的加密解密模塊(即有相同的共享密鑰)タト,我們還假定加密模塊和解密模塊共享ー個(gè)計(jì)數(shù)器Ctr,計(jì)數(shù)器有ー個(gè)共同的初始值。下面我們分別針對(duì)加密模塊和解密模塊的工作過(guò)程進(jìn)行描述。加密模塊假設(shè)加密模塊的計(jì)數(shù)器為CtrA,被加密的明文數(shù)據(jù)為data。當(dāng)明文數(shù)據(jù)data輸入加密模塊吋,該加密模塊首先將計(jì)數(shù)器的值增加,如CtrA = CtrA+ δ,其中δ為非零整數(shù),通常情況下為正整數(shù)。然后讀取秘密存儲(chǔ)單元中的密鑰k并對(duì)計(jì)數(shù)器連同輸入數(shù)據(jù)混合后進(jìn)行加密,得到密文c = Ek (CtrA,data),然后輸出計(jì)數(shù)器CtrA和密文C。如果加密算法需要初始向量(如序列密碼算法),則首先檢查是否有初始向量輸入,如果沒(méi)有,則通過(guò)ー個(gè)函數(shù)f的變換,將計(jì)數(shù)器的值映射為初始向量,即IV = f(CtrA)。見(jiàn)圖I。需要說(shuō)明的是,為使用方便,可將計(jì)數(shù)器與數(shù)據(jù)的混合器簡(jiǎn)化為兩個(gè)數(shù)的連接,SP將CtrA與data混合則得到(CtrA| | data)。但本領(lǐng)域的技術(shù)人員容易理解,其它變形的數(shù)據(jù)混合不影響本發(fā)明的本質(zhì),目的是容易將混合后的數(shù)據(jù)分離開(kāi)來(lái)。為敘述方便,我們將僅考慮使用簡(jiǎn)單連接的數(shù)據(jù)混合方式。將計(jì)數(shù)器的值映射為初始向量的方法有很多,而且與計(jì)數(shù)器的數(shù)據(jù)格式以及初始向量的數(shù)據(jù)格式都有關(guān)系。我們將在實(shí)施例中給出ー個(gè)具體例子說(shuō)明如何將計(jì)數(shù)器映射為加密和解密算法所需要的初始向量。解密模塊假設(shè)解密模塊的計(jì)數(shù)器為CtrB。本發(fā)明的解密模塊將負(fù)責(zé)對(duì)來(lái)自于加密模塊的數(shù)據(jù)進(jìn)行解密,同時(shí)實(shí)現(xiàn)認(rèn)證功能。當(dāng)解密模塊收到來(lái)自于加密模塊的輸出數(shù)據(jù)(CtrA, c)時(shí),其中CtrA*加密模塊A的輸出計(jì)數(shù)器值,如果δ > O,則首先判斷是否滿足CtrA > CtrB 否則判斷是否滿足CtrA < CtrB 如果條件不滿足,則輸出錯(cuò)誤信息I ;否則將c送入解密算法D進(jìn)行解密,同時(shí)解密算法D從秘密存儲(chǔ)單元讀取密鑰。如果解密算法需要初始向量(如序列密碼算法),則首先檢查是否有初始向量輸入,如果沒(méi)有,則通過(guò)一個(gè)函數(shù)f將以1^值映射為D所需要的初始向量。解密算法對(duì)c進(jìn)行解密后得到(Ctr/,data’),然后判斷是否滿足等式Ctr/ = CtrA,如果等式不成立,則輸出錯(cuò)誤信息2 ;否則輸出data’,同時(shí)將計(jì)數(shù)器CtrB的值更新為CtrA,即CtrB = CtrA。見(jiàn)圖2。當(dāng)ー個(gè)設(shè)備既需要加密又需要解密時(shí),在使用對(duì)稱密鑰密碼 算法的情況下,將加密模塊與解密模塊融合在一起將會(huì)節(jié)約大量資源,見(jiàn)圖3。首先密鑰和計(jì)數(shù)器是ー樣的,因此可以共享;其次加密算法與解密算法通常有許多共同部件,有時(shí)甚至完全相同,因此這些共性的東西可以在加密和解密算法中共用。對(duì)于輕量級(jí)密碼模塊,特別是ー些用于無(wú)線通信的密碼模塊,加密算法與解密算法的共同資源通常占絕大比例,而不同之處則很小。鑒于此,實(shí)用中的密碼模塊通常融加密模塊與解密模塊于一體,因此我們也以這種密碼模塊為基礎(chǔ)的對(duì)稱密碼使用方法進(jìn)行討論。對(duì)于只包括單個(gè)模塊的情況,可以看作是這個(gè)方法的退化版本。假設(shè)通信雙方分別為用戶A與用戶B,他們分別有一個(gè)預(yù)置共享密鑰k和計(jì)數(shù)器初值CtrA = CtrB = CtrO的密碼模塊Xa和Xb。則用戶A使用密碼模塊Xa對(duì)數(shù)據(jù)data進(jìn)行加密的過(guò)程如下(I)用戶A將加密選擇指令發(fā)送給Xa,可以選擇將初始向量IV發(fā)送給Xa,將數(shù)據(jù)data發(fā)送給Xa ; (2) Xa根據(jù)加密選擇指令執(zhí)行加密算法E ; (3)增加計(jì)數(shù)器CtrA的值,即令
CtrA^= CtrA+6,其中δ是ー個(gè)非零常數(shù),通常情況下取δ = I ; (4)如果加密算法需要
初始向量,又沒(méi)有初始向量輸入,則使用ー個(gè)映射函數(shù)f O將內(nèi)部的計(jì)數(shù)器CtrA映射為初始向量,即另IV = f(CtrA) ;(5)加密算法E從秘密存儲(chǔ)單元讀取種子密鑰k,讀取計(jì)數(shù)器的值CtrA,將CtrA與data進(jìn)行混合得到data2,通常這種混合是簡(jiǎn)單的連接,即data2 =(CtrA I data) ; (6)將data2送入加密算法E進(jìn)行加密得到密文數(shù)據(jù)c = Ek,IV(data2) = Ek,IV (CtrA data) ; (7)輸出數(shù)組(CtrA, c),該輸出就是用戶A使用加密模塊對(duì)數(shù)據(jù)data進(jìn)行加密的結(jié)果。當(dāng)用戶B需要使用密碼模塊Xb對(duì)上述密文數(shù)組(CtrA,c)進(jìn)行解密時(shí),其過(guò)程如下(I)用戶B將解密選擇指令連同收到的密文數(shù)組發(fā)送給Xb ; (2)Xb從密文數(shù)組中截取CtrA,并與自己的計(jì)數(shù)器CtrB進(jìn)行比較,當(dāng)δ > O時(shí),檢查是否滿足條件CtrA > CtrB 否則檢查是否滿足條件CtrA<CtrB 當(dāng)δ = I時(shí),根據(jù)加密過(guò)程可知,正常情況下顯然滿足CtrA > CtrB。如果條件不滿足,則Xb輸出錯(cuò)誤信息I并停止,否則繼續(xù)如下步驟;(3)如果解密算法D需要初始向量,則檢查是否有初始向量輸入,如果沒(méi)有,則使用函數(shù)f ()將接收到的CtrA映射為初始向量,即另IV = f(CtrA)。如果解密算法D不需要初始向量,則略去此步驟;(4) Xb從密文數(shù)組中截取c = Ekjiv (CtrA | data)并發(fā)送給解密算法D。解密算法D從密碼存儲(chǔ)單元讀取種子密鑰k,然后得到解密后的數(shù)據(jù)Dk, IV(c) = (Ctr/ I data,) ; (5)Xb判斷等式Ctra’ = Ctra是否成立。若不成立,則輸出錯(cuò)誤信息2并停止;(6) Xb的計(jì)數(shù)器更新為CtrB = CtrA,并輸出data’。見(jiàn)圖4.注意上述描述的密碼模塊需要對(duì)輸入進(jìn)行判斷,首先判斷是加密請(qǐng)求還是解密請(qǐng)求,然后對(duì)需要使用初始向量的加密模塊需要判斷是否有外部輸入的初始向量。在實(shí)現(xiàn)中可以通過(guò)使用不同的數(shù)據(jù)輸入口來(lái)簡(jiǎn)化這種判斷,例如使用三個(gè)數(shù)據(jù)輸入接ロ,分別用于請(qǐng)求類型判斷、初始向量和被加密的數(shù)據(jù)。這種變化的目的是一致的,該領(lǐng)域的專家應(yīng)該熟悉這種技木,這種對(duì)輸入接ロ的合并和拆分不影響本發(fā)明的本質(zhì)。說(shuō)明I :為什么驗(yàn)證CtrA > CtrB而不是CtrA = CtrB+l 因?yàn)榧用軘?shù)據(jù)可能會(huì)丟失或傳輸中出現(xiàn)錯(cuò)誤,從而導(dǎo)致重新傳輸,而重新傳輸可能需要重新進(jìn)行加密過(guò)程,從而可導(dǎo)致 CtrA > CtrB+l。實(shí)施例1(密碼模塊的設(shè)計(jì))假設(shè)加密算法是祖沖之密碼算法ZUC,此時(shí)加密算法和解密算法是完全相同的,因此我們用ZUC代表加密算法E和解密算法D。計(jì)數(shù)器Ctr為64比特(即8字節(jié))數(shù)組。我們假設(shè)輸入數(shù)據(jù)符格式和意義如下第一個(gè)比特1表示加密,O表示解密;第二個(gè)比特1表示首次請(qǐng)求,O表示請(qǐng)求繼續(xù);第三個(gè)比特1表示有初始向量,O表示無(wú)初始向量;具體地我們有111 :加密請(qǐng)求,首次請(qǐng)求,有初始向量;110 :加密請(qǐng)求,首次請(qǐng)求,無(wú)初始向量100 :加密請(qǐng)求,再次請(qǐng)求;011 :解密請(qǐng)求,首次請(qǐng)求,有初始向量;010 :解密請(qǐng)求,首次請(qǐng)求,無(wú)初始向量000 :解密請(qǐng)求,再次請(qǐng)求;001 :系統(tǒng)初始化。101 :預(yù)留第一個(gè)字節(jié)的其余5個(gè)比特留作擴(kuò)展用。對(duì)上述每種情況的數(shù)據(jù)格式定義如下(其中X表示O或1,缺省可取O)
權(quán)利要求
1.ー種使用對(duì)稱密碼算法實(shí)現(xiàn)輕量級(jí)認(rèn)證加密的方法,其特征在于,該方法使用的加密模塊包括加密算法E、存放密鑰k的秘密存儲(chǔ)單元和計(jì)數(shù)器CtrA,其加密過(guò)程包括如下步驟 .1)將計(jì)數(shù)器CtrA的值增加非零增幅δ,即令CtrA= CtrA+ δ ; .2)所述加密模塊將要加密的數(shù)據(jù)data和計(jì)數(shù)器的值CtrA混合,然后連同存儲(chǔ)在秘密存儲(chǔ)單元的密鑰值k 一同送入加密算法E,得到密文c = Ek(CtrA, data); .3)加密模塊輸出數(shù)組(CtrA,c)。
2.如權(quán)利要求I所述的方法,其特征在于,在所述步驟2中,所述加密模塊將一個(gè)初始向量值IV送入加密算法,對(duì)所述數(shù)據(jù)進(jìn)行加密得到密文c = Ek,IV(CtrA, data)。
3.如權(quán)利要求I所述的方法,其特征在于,在所述步驟2中,所述加密模塊先將計(jì)數(shù)器的值通過(guò)函數(shù)f O映射為初始向量并送入加密算法,對(duì)所述數(shù)據(jù)進(jìn)行加密得到密文C = Ek,f (Ctri)^ctrΛ ^ data、。
4.ー種使用對(duì)稱密碼算法實(shí)現(xiàn)輕量級(jí)認(rèn)證解密的方法,其特征在于,該方法使用的解密模塊包括解密算法D、存放密鑰k的秘密存儲(chǔ)單元和計(jì)數(shù)器CtrB,其解密過(guò)程包括如下步驟 .4)所述解密模塊將所述的加密模塊的輸出數(shù)據(jù)(CtrA,c)中計(jì)數(shù)器部分CtrA的值與所述解密模塊計(jì)數(shù)器的值CtrB進(jìn)行比較 如果輸出數(shù)據(jù)(CtrA,c)的加密模塊使用過(guò)程中所述δ >0,則判斷是否滿足CtrA>CtrB ; 如果輸出數(shù)據(jù)(CtrA,c)的加密模塊使用過(guò)程中所述δ <0,則判斷是否滿足CtrA<CtrB ; 若條件不滿足,則輸出錯(cuò)誤信息I并停止;否則執(zhí)行如下步驟; .5)使用所述秘密存儲(chǔ)單元中的密鑰k對(duì)所述數(shù)據(jù)(CtrA,c)進(jìn)行解密,得到d= Dk(C)=(Ctr/ , data’ ),判斷等式Ctr/ = CtrA是否成立,若不成立,則輸出錯(cuò)誤信息2并停止,否則執(zhí)行如下步驟; .6)更新所述計(jì)數(shù)器的值CtrB:=以1^;輸出所述解密算法得到的部分計(jì)算結(jié)果data’。
5.如權(quán)利要求4所述的方法,其特征在于,在步驟5),所述解密模塊將一個(gè)初始向量IV送入解密算法,對(duì)所述數(shù)據(jù)進(jìn)行解密過(guò)程為d = Dk,IV(c) = (Ctr/,data’ )。
6.如權(quán)利要求4所述的方法,其特征在于,在步驟5),所述解密模塊先將計(jì)數(shù)器所述接收收據(jù)部分的計(jì)數(shù)器的值CtrA通過(guò)函數(shù)f ()映射為初始向量IV = f(CtrA)并送入解密算法,對(duì)所述數(shù)據(jù)進(jìn)行解密的過(guò)程為ゴ=DkJUtr^c) =、CtrA’,data’)。
7.ー種使用對(duì)稱密碼算法實(shí)現(xiàn)輕量級(jí)認(rèn)證加密的方法,其特征在干,所述方法使用的密碼模塊包括加密算法E、解密算法D、存儲(chǔ)密鑰k的秘密存儲(chǔ)單元和計(jì)數(shù)器Ctr,所述方法包括如下步驟 a)所述密碼模塊從輸入口讀取ー個(gè)算法選擇指令,根據(jù)所述指令判斷是加密請(qǐng)求還是解密請(qǐng)求; b)如果所述算法選擇指令為加密請(qǐng)求,則執(zhí)行如下步驟所述密碼模塊將所述計(jì)數(shù)器的值更新為Ctr = Ctr+ δ,所述δ為非零數(shù); 所述密碼模塊將計(jì)數(shù)器的值Ctr與被加密的數(shù)據(jù)data混合,然后連同秘密存儲(chǔ)單元中的密鑰值k 一同送入加密算法,得到密文c = Ek (Ctr, data),輸出數(shù)組(Ctr, c)作為對(duì)所述數(shù)據(jù)data的加密結(jié)果; c)如果所述算法選擇指令為解密請(qǐng)求,則執(zhí)行如下步驟 所述解密模塊從被解密的輸入數(shù)據(jù)(Ctrl,Cl)分離出輸入計(jì)數(shù)器Ctrl和密文Cl ; 將Ctrl與所述密碼模塊內(nèi)存儲(chǔ)的計(jì)數(shù)器的值Ctr進(jìn)行比較如果步驟b)中的所述δ > O,則判斷是否滿足Ctrl > Ctr ;如果步驟b)中的所述δ < O,則判斷是否滿足Ctrl<Ctr ;若條件不滿足,則輸出錯(cuò)誤信息I并停止;否則執(zhí)行如下步驟; d)使用秘密存儲(chǔ)單元中的密鑰k對(duì)所述解密數(shù)據(jù)中的Cl進(jìn)行解密,得到d= Dk(Cl)=(Ctrl’,data’),判斷等式Ctrl’ = Ctrl是否成立,若不成立,報(bào)輸出錯(cuò)誤信息2并停止;否則執(zhí)行如下步驟; e)更新所述密碼模塊內(nèi)部計(jì)數(shù)器的值Ctr:= Ctrl ;輸出所述解密的部分計(jì)算結(jié)果data’。
8.如權(quán)利要求7所述的認(rèn)證加密的方法,其特征在于,在步驟b)和步驟d),向所述加密算法和解密算法輸入初始向量IV,所述數(shù)據(jù)的加密過(guò)程為c = Ek, IV(Ctr, data);所述數(shù)據(jù)的解密過(guò)程為 d = Dkjiv(cl) = (Ctrl’,data,)。
9.如權(quán)利要求7所述的認(rèn)證加密的方法,其特征在于,在步驟b),所述加密模塊先將所述密碼模塊內(nèi)部計(jì)數(shù)器的值Ctr通過(guò)函數(shù)f ()映射為初始向量IV = f (Ctr),對(duì)所述數(shù)據(jù)進(jìn)行的加密過(guò)程為c = Ek,f(ctr) (Ctr, data);在步驟c)所述解密模塊先將所從所述被解密數(shù)據(jù)中分離出的計(jì)數(shù)器的值Ctrl通過(guò)函數(shù)f ()映射為初始向量IV = f (Ctrl),對(duì)所述數(shù)據(jù)進(jìn)行解密的過(guò)程為 d = Dkjf(ctrl) (c) = (Ctrl’,data,)。
10.如權(quán)利要求7所述的認(rèn)證加密的方法,其特征在于,在步驟b),所述計(jì)數(shù)器Ctr的值更新為系統(tǒng)當(dāng)前時(shí)鐘。
全文摘要
本發(fā)明提供一種使用對(duì)稱密鑰密碼算法實(shí)現(xiàn)機(jī)密性與認(rèn)證性的方法,包括加密模塊的構(gòu)成和使用方法、解密模塊的構(gòu)成和使用方法、以及融加密模塊和解密模塊于一體的密碼模塊在實(shí)現(xiàn)機(jī)密性與認(rèn)證性時(shí)的使用方法。本發(fā)明通過(guò)對(duì)計(jì)數(shù)器的巧妙使用,無(wú)需信息交互,就可以在完成數(shù)據(jù)加密的同時(shí),實(shí)現(xiàn)認(rèn)證功能,而且可以有效抵抗重放攻擊。結(jié)合輕量級(jí)加密算法,適合能量受限環(huán)境如無(wú)線傳感器和RFID元器件的使用。
文檔編號(hào)H04L9/32GK102694652SQ201210009399
公開(kāi)日2012年9月26日 申請(qǐng)日期2012年1月13日 優(yōu)先權(quán)日2012年1月13日
發(fā)明者武傳坤 申請(qǐng)人:武傳坤