麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種使用對稱密碼算法實現輕量級認證加密的方法

文檔序號:7887185閱讀:358來源:國知局
專利名稱:一種使用對稱密碼算法實現輕量級認證加密的方法
技術領域
本發明涉及密碼算法的使用和輕量級認證加密功能的實現,適用于為物聯網系統能量受限的器件提供低能耗認證與加密功能。
背景技術
隨著通信網絡的發展和通信設備成本的降低,通信已經成為人們生活中必須的元素。物聯網產業的發展使得無線通信和輕量級密碼技術得以更廣泛的使用。在傳統的保密通信中,密碼模塊的基本功能是實現密碼算法,包括加密和解密算法、消息完整性算法、數字簽名算法等。作為保密通信系統中至關重要的認證問題,傳統上常使用數字簽名方法。當通信雙方共享ー個密鑰時,使用對稱密鑰密碼算法也可以實現一些認證功能,如GSM移動通信中網絡對用戶頂SI卡認證就是通過一種專門設計的算法實現的。SM卡的認證是使用對稱密碼實現認證的典型應用之一,但在許多傳感器網絡和RFID節點應用中,使用專門設計的獨立于加密算法的密碼算法實現認證將增加許多成本,甚至不能忍受。而且,GSM系統中的SM卡也只能完成單向認證,而許多傳感網和RFID應用系統需要雙向認證。而且,物聯網產業的發展急需輕量級密碼算法,包括加密算法和認證算法。

發明內容
本發明的目的是給出ー種使用加密和解密算法,該方法在實現數據機密性的同時,實現認證功能,同時具有抗重放攻擊的能力。本發明的特點是針對能量受限環境,提供ー種輕量級密碼模塊使用方法,使單次加密過程可以提供上述的所有功能。
為了實現本發明的目的,提出ー種使用對稱密碼算法實現輕量級認證加密的方法,該方法使用的加密模塊包括加密算法E、存放密鑰k的秘密存儲單元和計數器CtrA,其加密過程包括如下步驟I)將計數器CtrA的值增加非零增幅δ,即令CtrA = CtrA+ δ ;2)所述加密模塊將要加密的數據data和計數器的值CtrA混合,然后連同存儲在秘密存儲單元的密鑰值k 一同送入加密算法E,得到密文c = Ek(CtrA, data);3)加密模塊輸出數組(CtrA,c)。在所述步驟2)中,所述加密模塊將一個初始向量值IV送入加密算法,對所述數據進行加密得到密文c = Ekjiv (CtrA, data)。在所述步驟2)中,所述加密模塊先將計數器的值通過函數f O映射為初始向量并送入加密算法,對所述數據進行加密得到密文c = EkJ.{Clrt){CtrA, data) ο在所述步驟I中,所述計數器的值CtrA來自于系統時鐘,所述增幅δ是兩次使用計數器的值所產生的時差。本發明還提出ー種使用對稱密碼算法實現輕量級認證解密的方法,該方法使用的解密模塊包括解密算法D、存放密鑰k的秘密存儲單元和計數器CtrB,其解密過程包括如下步驟4)所述解密模塊將所述的加密模塊的輸出數據(CtrA,c)中計數器部分CtrA的值與所述解密模塊計數器的值CtrB進行比較如果輸出數據(CtrA,c)的加密模塊使用過程中所述δ > O,則判斷是否滿足CtrA> CtrB ;如果輸出數據(CtrA,c)的加密模塊使用過程中所述δ <0,則判斷是否滿足CtrA< CtrB ;若條件不滿足,則輸出錯誤信息I并停止;否則執行如下步驟;5)使用所述秘密存儲單元中的密鑰k對所述數據(CtrA,c)進行解密,得到d = Dk(c) = (Ctr/,data’),判斷等式Ctr/ = CtrA是否成立,若不成立,則輸出錯誤信息2并停止,否則執行如下步驟;6)更新所述計數器的值CtrB := CtrA ;輸出所述解密算法得到的部分計算結果data’。在步驟5),所述解密模塊將一個初始向量IV送入解密算法,對所述數據進行解密過程為 d = Dkj IV (c) = (CtrA,, data,)。在步驟5),所述解密模塊先將計數器所述接收收據部分的計數器的值CtrA通過函數f()映射為初始向量IV = f(CtrA)并送入解密算法,對所述數據進行解密的過程為d = Dk f(CtrA)(c) = {CtrA , data ) ο本發明進一歩提出ー種使用對稱密碼算法實現輕量級認證加密和解密的方法,所述方法使用的密碼模塊包括加密算法Ε、解密算法D、存儲密鑰k的秘密存儲單元和計數器Ctr,所述方法包括如下步驟a)所述密碼模塊從輸入ロ讀取ー個算法選擇指令,根據所述指令判斷是加密請求還是解密請求;b)如果所述算法選擇指令為加密請求,則執行如下步驟所述密碼模塊將所述計數器的值更新為Ctr = Ctr+ δ,所述δ為非零數;所述密碼模塊將計數器的值Ctr與被加密的數據data混合,然后連同秘密存儲單元中的密鑰值k 一同送入加密算法,得到密文c = Ek (Ctr, data),輸出數組(Ctr, c)作為對所述數據data的加密結果;c)如果所述算法選擇指令為解密請求,則執行如下步驟所述解密模塊從被解密的輸入數據(Ctrl,Cl)分離出輸入計數器Ctrl和密文cl ;將Ctrl與所述密碼模塊內存儲的計數器的值Ctr進行比較如果步驟b)中的所述δ >0,則判斷是否滿足Ctrl > Ctr;如果步驟b)中的所述δ <0,則判斷是否滿足Ctrl < Ctr ;若條件不滿足,則輸出錯誤信息I并停止;否則執行如下步驟;d)使用秘密存儲單元中的密鑰k對所述解密數據中的Cl進行解密,得到d =Dk(cl) = (Ctrl’,data’),判斷等式Ctrl’ = Ctrl是否成立,若不成立,報輸出錯誤信息2并停止;否則執行如下步驟;e)更新所述密碼模塊內部計數器的值Ctr =Ctrl ;輸出所述解密的部分計算結果 data’ ο在步驟b)和步驟c),向所述加密算法和解密算法輸入初始向量IV,所述數據的加密過程為 c = Ekjiv(Ctr, data);所述數據的解密過程為 d = Dk,IV(c) = (Ctrl’,data,)。在步驟b),所述加密模塊先將所述密碼模塊內部計數器的值Ctr通過函數f ()映射為初始向量IV = f (Ctr),對所述數據進行的加密過程為C = Ekj f(ctr) (Ctr, data);在步驟c)所述解密模塊先將所從所述被解密數據中分離出的計數器的值Ctrl通過函數f O映射為初始向量IV = f (Ctrl),對所述數據進行解密的過程為d = Dkjffctrl) (C) = (Ctrl’,data’ )。在步驟b),所述計數器Ctr的值更新為系統當前時鐘。


圖I為認證加密協議中加密模塊結構; 圖2為認證加密協議中解密模塊結構;圖3為融加密模塊與解密模塊于一體的認證密碼模塊結構;圖4為使用對稱密碼模塊實現機密性與認證性的加解密過程實施例。
具體實施例方式為使本發明的目的、技術方案和優點更加清楚明白,以下結合具體實施例和附圖,對本發明進ー步詳細說明。本發明有ー個加密模塊,包括一個加密算法E和一個密鑰k,ー個解密模塊,包括與加密算法E對應的解密算法D和一個與加密模塊中相同的密鑰k,密鑰一般保存在秘密存儲單元。除配對的加密解密模塊(即有相同的共享密鑰)タト,我們還假定加密模塊和解密模塊共享ー個計數器Ctr,計數器有ー個共同的初始值。下面我們分別針對加密模塊和解密模塊的工作過程進行描述。加密模塊假設加密模塊的計數器為CtrA,被加密的明文數據為data。當明文數據data輸入加密模塊吋,該加密模塊首先將計數器的值增加,如CtrA = CtrA+ δ,其中δ為非零整數,通常情況下為正整數。然后讀取秘密存儲單元中的密鑰k并對計數器連同輸入數據混合后進行加密,得到密文c = Ek (CtrA,data),然后輸出計數器CtrA和密文C。如果加密算法需要初始向量(如序列密碼算法),則首先檢查是否有初始向量輸入,如果沒有,則通過ー個函數f的變換,將計數器的值映射為初始向量,即IV = f(CtrA)。見圖I。需要說明的是,為使用方便,可將計數器與數據的混合器簡化為兩個數的連接,SP將CtrA與data混合則得到(CtrA| | data)。但本領域的技術人員容易理解,其它變形的數據混合不影響本發明的本質,目的是容易將混合后的數據分離開來。為敘述方便,我們將僅考慮使用簡單連接的數據混合方式。將計數器的值映射為初始向量的方法有很多,而且與計數器的數據格式以及初始向量的數據格式都有關系。我們將在實施例中給出ー個具體例子說明如何將計數器映射為加密和解密算法所需要的初始向量。解密模塊假設解密模塊的計數器為CtrB。本發明的解密模塊將負責對來自于加密模塊的數據進行解密,同時實現認證功能。當解密模塊收到來自于加密模塊的輸出數據(CtrA, c)時,其中CtrA*加密模塊A的輸出計數器值,如果δ > O,則首先判斷是否滿足CtrA > CtrB 否則判斷是否滿足CtrA < CtrB 如果條件不滿足,則輸出錯誤信息I ;否則將c送入解密算法D進行解密,同時解密算法D從秘密存儲單元讀取密鑰。如果解密算法需要初始向量(如序列密碼算法),則首先檢查是否有初始向量輸入,如果沒有,則通過一個函數f將以1^值映射為D所需要的初始向量。解密算法對c進行解密后得到(Ctr/,data’),然后判斷是否滿足等式Ctr/ = CtrA,如果等式不成立,則輸出錯誤信息2 ;否則輸出data’,同時將計數器CtrB的值更新為CtrA,即CtrB = CtrA。見圖2。當ー個設備既需要加密又需要解密時,在使用對稱密鑰密碼 算法的情況下,將加密模塊與解密模塊融合在一起將會節約大量資源,見圖3。首先密鑰和計數器是ー樣的,因此可以共享;其次加密算法與解密算法通常有許多共同部件,有時甚至完全相同,因此這些共性的東西可以在加密和解密算法中共用。對于輕量級密碼模塊,特別是ー些用于無線通信的密碼模塊,加密算法與解密算法的共同資源通常占絕大比例,而不同之處則很小。鑒于此,實用中的密碼模塊通常融加密模塊與解密模塊于一體,因此我們也以這種密碼模塊為基礎的對稱密碼使用方法進行討論。對于只包括單個模塊的情況,可以看作是這個方法的退化版本。假設通信雙方分別為用戶A與用戶B,他們分別有一個預置共享密鑰k和計數器初值CtrA = CtrB = CtrO的密碼模塊Xa和Xb。則用戶A使用密碼模塊Xa對數據data進行加密的過程如下(I)用戶A將加密選擇指令發送給Xa,可以選擇將初始向量IV發送給Xa,將數據data發送給Xa ; (2) Xa根據加密選擇指令執行加密算法E ; (3)增加計數器CtrA的值,即令
CtrA^= CtrA+6,其中δ是ー個非零常數,通常情況下取δ = I ; (4)如果加密算法需要
初始向量,又沒有初始向量輸入,則使用ー個映射函數f O將內部的計數器CtrA映射為初始向量,即另IV = f(CtrA) ;(5)加密算法E從秘密存儲單元讀取種子密鑰k,讀取計數器的值CtrA,將CtrA與data進行混合得到data2,通常這種混合是簡單的連接,即data2 =(CtrA I data) ; (6)將data2送入加密算法E進行加密得到密文數據c = Ek,IV(data2) = Ek,IV (CtrA data) ; (7)輸出數組(CtrA, c),該輸出就是用戶A使用加密模塊對數據data進行加密的結果。當用戶B需要使用密碼模塊Xb對上述密文數組(CtrA,c)進行解密時,其過程如下(I)用戶B將解密選擇指令連同收到的密文數組發送給Xb ; (2)Xb從密文數組中截取CtrA,并與自己的計數器CtrB進行比較,當δ > O時,檢查是否滿足條件CtrA > CtrB 否則檢查是否滿足條件CtrA<CtrB 當δ = I時,根據加密過程可知,正常情況下顯然滿足CtrA > CtrB。如果條件不滿足,則Xb輸出錯誤信息I并停止,否則繼續如下步驟;(3)如果解密算法D需要初始向量,則檢查是否有初始向量輸入,如果沒有,則使用函數f ()將接收到的CtrA映射為初始向量,即另IV = f(CtrA)。如果解密算法D不需要初始向量,則略去此步驟;(4) Xb從密文數組中截取c = Ekjiv (CtrA | data)并發送給解密算法D。解密算法D從密碼存儲單元讀取種子密鑰k,然后得到解密后的數據Dk, IV(c) = (Ctr/ I data,) ; (5)Xb判斷等式Ctra’ = Ctra是否成立。若不成立,則輸出錯誤信息2并停止;(6) Xb的計數器更新為CtrB = CtrA,并輸出data’。見圖4.注意上述描述的密碼模塊需要對輸入進行判斷,首先判斷是加密請求還是解密請求,然后對需要使用初始向量的加密模塊需要判斷是否有外部輸入的初始向量。在實現中可以通過使用不同的數據輸入口來簡化這種判斷,例如使用三個數據輸入接ロ,分別用于請求類型判斷、初始向量和被加密的數據。這種變化的目的是一致的,該領域的專家應該熟悉這種技木,這種對輸入接ロ的合并和拆分不影響本發明的本質。說明I :為什么驗證CtrA > CtrB而不是CtrA = CtrB+l 因為加密數據可能會丟失或傳輸中出現錯誤,從而導致重新傳輸,而重新傳輸可能需要重新進行加密過程,從而可導致 CtrA > CtrB+l。實施例1(密碼模塊的設計)假設加密算法是祖沖之密碼算法ZUC,此時加密算法和解密算法是完全相同的,因此我們用ZUC代表加密算法E和解密算法D。計數器Ctr為64比特(即8字節)數組。我們假設輸入數據符格式和意義如下第一個比特1表示加密,O表示解密;第二個比特1表示首次請求,O表示請求繼續;第三個比特1表示有初始向量,O表示無初始向量;具體地我們有111 :加密請求,首次請求,有初始向量;110 :加密請求,首次請求,無初始向量100 :加密請求,再次請求;011 :解密請求,首次請求,有初始向量;010 :解密請求,首次請求,無初始向量000 :解密請求,再次請求;001 :系統初始化。101 :預留第一個字節的其余5個比特留作擴展用。對上述每種情況的數據格式定義如下(其中X表示O或1,缺省可取O)
權利要求
1.ー種使用對稱密碼算法實現輕量級認證加密的方法,其特征在于,該方法使用的加密模塊包括加密算法E、存放密鑰k的秘密存儲單元和計數器CtrA,其加密過程包括如下步驟 .1)將計數器CtrA的值增加非零增幅δ,即令CtrA= CtrA+ δ ; .2)所述加密模塊將要加密的數據data和計數器的值CtrA混合,然后連同存儲在秘密存儲單元的密鑰值k 一同送入加密算法E,得到密文c = Ek(CtrA, data); .3)加密模塊輸出數組(CtrA,c)。
2.如權利要求I所述的方法,其特征在于,在所述步驟2中,所述加密模塊將一個初始向量值IV送入加密算法,對所述數據進行加密得到密文c = Ek,IV(CtrA, data)。
3.如權利要求I所述的方法,其特征在于,在所述步驟2中,所述加密模塊先將計數器的值通過函數f O映射為初始向量并送入加密算法,對所述數據進行加密得到密文C = Ek,f (Ctri)^ctrΛ ^ data、。
4.ー種使用對稱密碼算法實現輕量級認證解密的方法,其特征在于,該方法使用的解密模塊包括解密算法D、存放密鑰k的秘密存儲單元和計數器CtrB,其解密過程包括如下步驟 .4)所述解密模塊將所述的加密模塊的輸出數據(CtrA,c)中計數器部分CtrA的值與所述解密模塊計數器的值CtrB進行比較 如果輸出數據(CtrA,c)的加密模塊使用過程中所述δ >0,則判斷是否滿足CtrA>CtrB ; 如果輸出數據(CtrA,c)的加密模塊使用過程中所述δ <0,則判斷是否滿足CtrA<CtrB ; 若條件不滿足,則輸出錯誤信息I并停止;否則執行如下步驟; .5)使用所述秘密存儲單元中的密鑰k對所述數據(CtrA,c)進行解密,得到d= Dk(C)=(Ctr/ , data’ ),判斷等式Ctr/ = CtrA是否成立,若不成立,則輸出錯誤信息2并停止,否則執行如下步驟; .6)更新所述計數器的值CtrB:=以1^;輸出所述解密算法得到的部分計算結果data’。
5.如權利要求4所述的方法,其特征在于,在步驟5),所述解密模塊將一個初始向量IV送入解密算法,對所述數據進行解密過程為d = Dk,IV(c) = (Ctr/,data’ )。
6.如權利要求4所述的方法,其特征在于,在步驟5),所述解密模塊先將計數器所述接收收據部分的計數器的值CtrA通過函數f ()映射為初始向量IV = f(CtrA)并送入解密算法,對所述數據進行解密的過程為ゴ=DkJUtr^c) =、CtrA’,data’)。
7.ー種使用對稱密碼算法實現輕量級認證加密的方法,其特征在干,所述方法使用的密碼模塊包括加密算法E、解密算法D、存儲密鑰k的秘密存儲單元和計數器Ctr,所述方法包括如下步驟 a)所述密碼模塊從輸入口讀取ー個算法選擇指令,根據所述指令判斷是加密請求還是解密請求; b)如果所述算法選擇指令為加密請求,則執行如下步驟所述密碼模塊將所述計數器的值更新為Ctr = Ctr+ δ,所述δ為非零數; 所述密碼模塊將計數器的值Ctr與被加密的數據data混合,然后連同秘密存儲單元中的密鑰值k 一同送入加密算法,得到密文c = Ek (Ctr, data),輸出數組(Ctr, c)作為對所述數據data的加密結果; c)如果所述算法選擇指令為解密請求,則執行如下步驟 所述解密模塊從被解密的輸入數據(Ctrl,Cl)分離出輸入計數器Ctrl和密文Cl ; 將Ctrl與所述密碼模塊內存儲的計數器的值Ctr進行比較如果步驟b)中的所述δ > O,則判斷是否滿足Ctrl > Ctr ;如果步驟b)中的所述δ < O,則判斷是否滿足Ctrl<Ctr ;若條件不滿足,則輸出錯誤信息I并停止;否則執行如下步驟; d)使用秘密存儲單元中的密鑰k對所述解密數據中的Cl進行解密,得到d= Dk(Cl)=(Ctrl’,data’),判斷等式Ctrl’ = Ctrl是否成立,若不成立,報輸出錯誤信息2并停止;否則執行如下步驟; e)更新所述密碼模塊內部計數器的值Ctr:= Ctrl ;輸出所述解密的部分計算結果data’。
8.如權利要求7所述的認證加密的方法,其特征在于,在步驟b)和步驟d),向所述加密算法和解密算法輸入初始向量IV,所述數據的加密過程為c = Ek, IV(Ctr, data);所述數據的解密過程為 d = Dkjiv(cl) = (Ctrl’,data,)。
9.如權利要求7所述的認證加密的方法,其特征在于,在步驟b),所述加密模塊先將所述密碼模塊內部計數器的值Ctr通過函數f ()映射為初始向量IV = f (Ctr),對所述數據進行的加密過程為c = Ek,f(ctr) (Ctr, data);在步驟c)所述解密模塊先將所從所述被解密數據中分離出的計數器的值Ctrl通過函數f ()映射為初始向量IV = f (Ctrl),對所述數據進行解密的過程為 d = Dkjf(ctrl) (c) = (Ctrl’,data,)。
10.如權利要求7所述的認證加密的方法,其特征在于,在步驟b),所述計數器Ctr的值更新為系統當前時鐘。
全文摘要
本發明提供一種使用對稱密鑰密碼算法實現機密性與認證性的方法,包括加密模塊的構成和使用方法、解密模塊的構成和使用方法、以及融加密模塊和解密模塊于一體的密碼模塊在實現機密性與認證性時的使用方法。本發明通過對計數器的巧妙使用,無需信息交互,就可以在完成數據加密的同時,實現認證功能,而且可以有效抵抗重放攻擊。結合輕量級加密算法,適合能量受限環境如無線傳感器和RFID元器件的使用。
文檔編號H04L9/32GK102694652SQ201210009399
公開日2012年9月26日 申請日期2012年1月13日 優先權日2012年1月13日
發明者武傳坤 申請人:武傳坤
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 象州县| 突泉县| 砚山县| 江孜县| 定南县| 通化市| 晋州市| 乌拉特前旗| 泰安市| 霍林郭勒市| 洛浦县| 筠连县| 凉城县| 团风县| 隆尧县| 定南县| 长宁县| 历史| 临朐县| 民勤县| 阳朔县| 平谷区| 鹤峰县| 潼关县| 莱州市| 黄梅县| 霞浦县| 东山县| 晋州市| 青河县| 迁安市| 东光县| 巩留县| 贞丰县| 昭通市| 颍上县| 区。| 哈尔滨市| 郓城县| 万全县| 姚安县|