专利名称:一种使用对称密码算法实现轻量级认证加密的方法
技术领域:
本发明涉及密码算法的使用和轻量级认证加密功能的实现,适用于为物联网系统能量受限的器件提供低能耗认证与加密功能。
背景技术:
随着通信网络的发展和通信设备成本的降低,通信已经成为人们生活中必须的元素。物联网产业的发展使得无线通信和轻量级密码技术得以更广泛的使用。在传统的保密通信中,密码模块的基本功能是实现密码算法,包括加密和解密算法、消息完整性算法、数字签名算法等。作为保密通信系统中至关重要的认证问题,传统上常使用数字签名方法。当通信双方共享ー个密钥时,使用对称密钥密码算法也可以实现一些认证功能,如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日
发明者武传坤 申请人:武传坤