CN102694652B - 一种使用对称密码算法实现轻量级认证加密的方法 - Google Patents
一种使用对称密码算法实现轻量级认证加密的方法 Download PDFInfo
- Publication number
- CN102694652B CN102694652B CN201210009399.0A CN201210009399A CN102694652B CN 102694652 B CN102694652 B CN 102694652B CN 201210009399 A CN201210009399 A CN 201210009399A CN 102694652 B CN102694652 B CN 102694652B
- Authority
- CN
- China
- Prior art keywords
- ctr
- data
- value
- module
- enumerator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种使用对称密钥密码算法实现机密性与认证性的方法,包括加密模块的构成和使用方法、解密模块的构成和使用方法、以及融加密模块和解密模块于一体的密码模块在实现机密性与认证性时的使用方法。本发明通过对计数器的巧妙使用,无需信息交互,就可以在完成数据加密的同时,实现认证功能,而且可以有效抵抗重放攻击。结合轻量级加密算法,适合能量受限环境如无线传感器和RFID元器件的使用。
Description
技术领域
本发明涉及密码算法的使用和轻量级认证加密功能的实现,适用于为物联网***能量受限的器件提供低能耗认证与加密功能。
背景技术
随着通信网络的发展和通信设备成本的降低,通信已经成为人们生活中必须的元素。物联网产业的发展使得无线通信和轻量级密码技术得以更广泛的使用。在传统的保密通信中,密码模块的基本功能是实现密码算法,包括加密和解密算法、消息完整性算法、数字签名算法等。作为保密通信***中至关重要的认证问题,传统上常使用数字签名方法。当通信双方共享一个密钥时,使用对称密钥密码算法也可以实现一些认证功能,如GSM移动通信中网络对用户IMSI卡认证就是通过一种专门设计的算法实现的。
SIM卡的认证是使用对称密码实现认证的典型应用之一,但在许多传感器网络和RFID节点应用中,使用专门设计的独立于加密算法的密码算法实现认证将增加许多成本,甚至不能忍受。而且,GSM***中的SIM卡也只能完成单向认证,而许多传感网和RFID应用***需要双向认证。
而且,物联网产业的发展急需轻量级密码算法,包括加密算法和认证算法。
发明内容
本发明的目的是给出一种使用加密和解密算法,该方法在实现数据机密性的同时,实现认证功能,同时具有抗重放攻击的能力。本发明的特点是针对能量受限环境,提供一种轻量级密码模块使用方法,使单次加密过程可以提供上述的所有功能。
为了实现本发明的目的,提出一种使用对称密码算法实现轻量级认证加密的方法,该方法使用的加密模块包括加密算法E、存放密钥k的秘密存储单元和计数器CtrA,其加密过程包括如下步骤:
1)将计数器CtrA的值增加非零增幅δ,即令CtrA:=CtrA+δ;
2)所述加密模块将要加密的数据data和计数器的值CtrA混合,然后连同存储在秘密存储单元的密钥值k一同送入加密算法E,得到密文c=Ek(CtrA,data);
3)加密模块输出数组(CtrA,c)。
在所述步骤2)中,所述加密模块将一个初始向量值IV送入加密算法,对所述数据进行加密得到密文c=Ek,IV(CtrA,data)。
在所述步骤2)中,所述加密模块先将计数器的值通过函数f()映射为初始向量并送入加密算法,对所述数据进行加密得到密文
在所述步骤1中,所述计数器的值CtrA来自于***时钟,所述增幅δ是两次使用计数器的值所产生的时差。
本发明还提出一种使用对称密码算法实现轻量级认证解密的方法,该方法使用的解密模块包括解密算法D、存放密钥k的秘密存储单元和计数器CtrB,其解密过程包括如下步骤:
4)所述解密模块将所述的加密模块的输出数据(CtrA,c)中计数器部分CtrA的值与所述解密模块计数器的值CtrB进行比较:
如果输出数据(CtrA,c)的加密模块使用过程中所述δ>0,则判断是否满足CtrA>CtrB;
如果输出数据(CtrA,c)的加密模块使用过程中所述δ<0,则判断是否满足CtrA<CtrB;
若条件不满足,则输出错误信息1并停止;否则执行如下步骤;
5)使用所述秘密存储单元中的密钥k对所述数据(CtrA,c)进行解密,得到d=Dk(c)=(CtrA’,data’),判断等式CtrA’=CtrA是否成立,若不成立,则输出错误信息2并停止,否则执行如下步骤;
6)更新所述计数器的值:CtrB:=CtrA;输出所述解密算法得到的部分计算结果data’。
在步骤5),所述解密模块将一个初始向量IV送入解密算法,对所述数据进行解密过程为d=Dk,IV(c)=(CtrA’,data’)。
在步骤5),所述解密模块先将计数器所述接收收据部分的计数器的值CtrA通过函数f()映射为初始向量IV=f(CtrA)并送入解密算法,对所述数据进行解密的过程为
本发明进一步提出一种使用对称密码算法实现轻量级认证加密和解密的方法,所述方法使用的密码模块包括加密算法E、解密算法D、存储密钥k的秘密存储单元和计数器Ctr,所述方法包括如下步骤:
a)所述密码模块从输入口读取一个算法选择指令,根据所述指令判断是加密请求还是解密请求;
b)如果所述算法选择指令为加密请求,则执行如下步骤:
所述密码模块将所述计数器的值更新为Ctr:=Ctr+δ,所述δ为非零数;
所述密码模块将计数器的值Ctr与被加密的数据data混合,然后连同秘密存储单元中的密钥值k一同送入加密算法,得到密文c=Ek(Ctr,data),输出数组(Ctr,c)作为对所述数据data的加密结果;
c)如果所述算法选择指令为解密请求,则执行如下步骤:
所述解密模块从被解密的输入数据(Ctr1,c1)分离出输入计数器Ctr1和密文c1;
将Ctr1与所述密码模块内存储的计数器的值Ctr进行比较:如果步骤b)中的所述δ>0,则判断是否满足Ctr1>Ctr;如果步骤b)中的所述δ<0,则判断是否满足Ctr1<Ctr;若条件不满足,则输出错误信息1并停止;否则执行如下步骤;
d)使用秘密存储单元中的密钥k对所述解密数据中的c1进行解密,得到d=Dk(c1)=(Ctr1’,data’),判断等式Ctr1’=Ctr1是否成立,若不成立,报输出错误信息2并停止;否则执行如下步骤;
e)更新所述密码模块内部计数器的值:Ctr:=Ctr1;输出所述解密的部分计算结果data’。
在步骤b)和步骤c),向所述加密算法和解密算法输入初始向量IV,所述数据的加密过程为c=Ek,IV(Ctr,data);所述数据的解密过程为d=Dk,IV(c)=(Ctr1’,data’)。
在步骤b),所述加密模块先将所述密码模块内部计数器的值Ctr通过函数f()映射为初始向量IV=f(Ctr),对所述数据进行的加密过程为c=Ek,f(Ctr)(Ctr,data);在步骤c)所述解密模块先将所从所述被解密数据中分离出的计数器的值Ctr1通过函数f()映射为初始向量IV=f(Ctr1),对所述数据进行解密的过程为d=Dk,f(Ctrl)(c)=(Ctr1’,data’)。
在步骤b),所述计数器Ctr的值更新为***当前时钟。
附图说明
图1为认证加密协议中加密模块结构;
图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)。见图1。
需要说明的是,为使用方便,可将计数器与数据的混合器简化为两个数的连接,即将CtrA与data混合则得到(CtrA||data)。但本领域的技术人员容易理解,其它变形的数据混合不影响本发明的本质,目的是容易将混合后的数据分离开来。为叙述方便,我们将仅考虑使用简单连接的数据混合方式。将计数器的值映射为初始向量的方法有很多,而且与计数器的数据格式以及初始向量的数据格式都有关系。我们将在实施例中给出一个具体例子说明如何将计数器映射为加密和解密算法所需要的初始向量。
解密模块:假设解密模块的计数器为CtrB。本发明的解密模块将负责对来自于加密模块的数据进行解密,同时实现认证功能。当解密模块收到来自于加密模块的输出数据(CtrA,c)时,其中CtrA为加密模块A的输出计数器值,如果δ>0,则首先判断是否满足CtrA>CtrB?否则判断是否满足CtrA<CtrB?如果条件不满足,则输出错误信息1;否则将c送入解密算法D进行解密,同时解密算法D从秘密存储单元读取密钥。如果解密算法需要初始向量(如序列密码算法),则首先检查是否有初始向量输入,如果没有,则通过一个函数f将CtrA值映射为D所需要的初始向量。解密算法对c进行解密后得到(CtrA’,data’),然后判断是否满足等式CtrA’=CtrA,如果等式不成立,则输出错误信息2;否则输出data’,同时将计数器CtrB的值更新为CtrA,即CtrB:=CtrA。见图2。
当一个设备既需要加密又需要解密时,在使用对称密钥密码算法的情况下,将加密模块与解密模块融合在一起将会节约大量资源,见图3。首先密钥和计数器是一样的,因此可以共享;其次加密算法与解密算法通常有许多共同部件,有时甚至完全相同,因此这些共性的东西可以在加密和解密算法中共用。对于轻量级密码模块,特别是一些用于无线通信的密码模块,加密算法与解密算法的共同资源通常占绝大比例,而不同之处则很小。鉴于此,实用中的密码模块通常融加密模块与解密模块于一体,因此我们也以这种密码模块为基础的对称密码使用方法进行讨论。对于只包括单个模块的情况,可以看作是这个方法的退化版本。
假设通信双方分别为用户A与用户B,他们分别有一个预置共享密钥k和计数器初值CtrA=CtrB=Ctr0的密码模块Xa和Xb。则用户A使用密码模块Xa对数据data进行加密的过程如下:
(1)用户A将加密选择指令发送给Xa,可以选择将初始向量IV发送给Xa,将数据data发送给Xa;(2)Xa根据加密选择指令执行加密算法E;(3)增加计数器CtrA的值,即令
其中δ是一个非零常数,通常情况下取δ=1;(4)如果加密算法需要初始向量,又没有初始向量输入,则使用一个映射函数f()将内部的计数器CtrA映射为初始向量,即另IV=f(CtrA);(5)加密算法E从秘密存储单元读取种子密钥k,读取计数器的值CtrA,将CtrA与data进行混合得到data2,通常这种混合是简单的连接,即data2=(CtrA||data);(6)将data2送入加密算法E进行加密得到密文数据c=Ek,IV(data2)=Ek,IV(CtrA||data);(7)输出数组(CtrA,c),该输出就是用户A使用加密模块对数据data进行加密的结果。
当用户B需要使用密码模块Xb对上述密文数组(CtrA,c)进行解密时,其过程如下:(1)用户B将解密选择指令连同收到的密文数组发送给Xb;(2)Xb从密文数组中截取CtrA,并与自己的计数器CtrB进行比较,当δ>0时,检查是否满足条件CtrA>CtrB?否则检查是否满足条件CtrA<CtrB?当δ=1时,根据加密过程可知,正常情况下显然满足CtrA>CtrB。如果条件不满足,则Xb输出错误信息1并停止,否则继续如下步骤;(3)如果解密算法D需要初始向量,则检查是否有初始向量输入,如果没有,则使用函数f()将接收到的CtrA映射为初始向量,即另IV=f(CtrA)。如果解密算法D不需要初始向量,则略去此步骤;(4)Xb从密文数组中截取c=Ek,IV(CtrA||data)并发送给解密算法D。解密算法D从密码存储单元读取种子密钥k,然后得到解密后的数据Dk,IV(c)=(CtrA’||data’);(5)Xb判断等式Ctra’=Ctra是否成立。若不成立,则输出错误信息2并停止;(6)Xb的计数器更新为CtrB:=CtrA,并输出data’。见图4.
注意上述描述的密码模块需要对输入进行判断,首先判断是加密请求还是解密请求,然后对需要使用初始向量的加密模块需要判断是否有外部输入的初始向量。在实现中可以通过使用不同的数据输入口来简化这种判断,例如使用三个数据输入接口,分别用于请求类型判断、初始向量和被加密的数据。这种变化的目的是一致的,该领域的专家应该熟悉这种技术,这种对输入接口的合并和拆分不影响本发明的本质。
说明1:为什么验证CtrA>CtrB而不是CtrA=CtrB+1?因为加密数据可能会丢失或传输中出现错误,从而导致重新传输,而重新传输可能需要重新进行加密过程,从而可导致CtrA>CtrB+1。
实施例1(密码模块的设计):假设加密算法是祖冲之密码算法ZUC,此时加密算法和解密算法是完全相同的,因此我们用ZUC代表加密算法E和解密算法D。计数器Ctr为64比特(即8字节)数组。我们假设输入数据符格式和意义如下:
第一个比特:1表示加密,0表示解密;
第二个比特:1表示首次请求,0表示请求继续;
第三个比特:1表示有初始向量,0表示无初始向量;
具体地我们有:
111:加密请求,首次请求,有初始向量;
110:加密请求,首次请求,无初始向量
100:加密请求,再次请求;
011:解密请求,首次请求,有初始向量;
010:解密请求,首次请求,无初始向量
000:解密请求,再次请求;
001:***初始化。
101:预留
第一个字节的其余5个比特留作扩展用。
对上述每种情况的数据格式定义如下(其中x表示0或1,缺省可取0):
当输入口接收到111时,计算模块将计数器Ctr的值增加1,从输入数据中分别截取IV和要加密的数据data,执行算法c=ZUCk,IV(Ctr||data),并输出(Ctr,c);
当输入口接收到110时,计算模块将计数器Ctr的值增加1,将计数器映射为初始向量,一种简单映射方法是将计数器与其补向量进行并联,即令
从输入数据中截取要加密的数据data,然后执行算法c=ZUCk,IV(Ctr||data),并输出(Ctr,c);
当输入口接收到100时,计算模块直接将第三个字节和其之后的数据送入加密算法c=ZUCk,IV(data),其中IV是之前的初始向量,并输出c;这是对111和110情况下未完成加密过程的继续。
当输入口接收到011时,计算模块从输入数据中分别截取IV和要解密的数据(Ctr1,c),检查是否满足Ctr1>Ctr?其中Ctr是内部计数器的值。若条件不满足,输出错误信息1并停止;否则执行算法ZUCk,IV(c)=(Ctr’,data’),检查是否满足等式Ctr’=Ctr1?如果等式不成立,则输出错误信息2并停止;否则输出data’;在正常情况下有data’=data。
当输入口接收到010时,计算模块从输入数据中截取要解密的数据(Ctr1,c),检查是否满足Ctr1>Ctr?其中Ctr是内部计数器的值。若条件不满足,输出错误信息1并停止;否则根据外部计数器的值Ctr1产生初始向量
执行算法ZUCk,IV(c)=(Ctr’,data’),检查是否满足等式Ctr’=Ctr1?如果等式不成立,则输出错误信息2并停止;否则输出data’;在正常情况下有data’=data。
当输入口接收到000时,计算模块从输入数据中截取要解密的数据c并直接执行算法ZUCk,IV(c)=data,然后输出data’;这是对011和010情况下对数据部分未完成解密过程的继续。
当输入口接收到001时,计算模块从输入数据中截取128比特新密钥key1,新计数器值Ctr1,根据新计数器的值Ctr1产生初始向量执行算法ZUCk,IV(c)并验证其结果是否包含key1和Ctr1的信息,其中k为模块内存储的密钥。如果验证不同通过,则输出错误信息3并停止,否则执行如下操作:(1)令k=key1;(2)令Ctr=Ctr1;(3)输出
其中message可以取值0xFF表示操作成功;
实施例2(密码模块的应用):
假设用户U有一个如实施例1所描述的密码模块,服务器S与用户U之间建立双向保密通信。在***使用初期,服务器与用户之间共享一个预置初始密钥k0,在***启用后服务器希望更新用户的长久密钥,当然在使用过程中的任何阶段服务器都可以随时通过指令更新用户的长久密钥。
密钥更新(包括计数器更新)协议流程如下:服务器选择128-比特key1和64-比特计数器值Ctr1,给用户发送(Uid,001xxxxx,Ctr1,密文c,验证密文vc),其中Uid为用户身份标识,
验证密文
用户收到服务器发来的指令后将除Uid之后的部分传送给密码模块,密码模块根据001判断此为***初始化指令,于是将Ctr1映射为初始向量,即令
将密文c送入解密器得到
验证是否满足等式Ctr1’=Ctr1,如果不满足,则输出错误信息并推出,否则根据解密结果计算
并验证是否满足等式vc’=vc。如果验证不能通过,则输出错误信息,如0x00表示初始化失败;否则令k0=key1;Ctr=Ctr1;并输出
表示初始化成功。用户将Uid和模块输出结果发送给服务器。服务器检查是否成立,若成立,则更新用户U中的密钥和计数器的值;否则可以根据情况选择放弃或重试。为了***的稳定性,服务器应该保留用户最新的和上次的密钥和计数器的值。
当用户需要向服务器发送其他需要秘密传输的数据data时,首先将如下信息送入模块:(110xxxxx,129,data),其中129表示要加密的数据长度为129-1=128字节。用户模块根据指令110从内部计数器Ctr产生初始向量
执行算法c=ZUCk,IV(Ctr||data),然后将Ctr和加密结果c一同输出。客户端发送(Uid,Ctr,c)给服务器。当服务器对收到的(Uid,Ctr,c)时,根据Uid可选择用户U对应的密钥和计数器Ctr0,检查是否满足Ctr>Ctr0?如果不满足条件,则可能受到某种攻击或信息传输过程中发送错误,可根据策略确定是否继续执行解密过程。如果验证通过,则使用Ctr产生初始向量,使用解密算法对密文c进行解密,检查解密后的前64比特是否与接收到的Ctr相同。如果不同,则根据错误情况处理;否则输出正确解密结果data,至此用户已成功将数据data秘密传输给服务器。
当服务器需要向用户传递某些需要秘密传输的重要指令ord时,首先将用户计数器Ctr递增:Ctr=Ctr+1,将递增后的计数器Ctr映射为初始向量IV,使用ZUC算法对Ctr和ord进行加密得到c=ZUCk,IV(Ctr||ord),然后将(Uid,Ctr,c)发送给用户。用户端收到(Ctr,c)后,假设c的长度是20个字节,则用户端将(010xxxxx,29,Ctr,c)输入模块。用户模块根据010指令进行解密操作,首先检查Ctr是否大于内部计数器的值Ctr0?如果条件不满足,则输出错误信息;否则根据Ctr构造初始向量
将密文c送入ZUC进行解密得到ZUCk,IV(c)=(Ctr’||ord’),检查是否满足Ctr’=Ctr,如果等式不成立,则输出错误信息并停止,否则输出ord’,客户端则根据ord’的具体内容进行相应操作。如果操作成功,客户端传输一个成功信号给服务器,否则传输一个错误信号。当传递成功信号时,最好也使用密码模块进行处理。
注意在该例中我们在服务器端没使用与客户端对应的密码模块,因为服务器端可能要服务很多客户,如果针对每个客户都需要一个硬件模块的话,则不利于管理和***维护,成本也会很高。如何保护服务器端的安全不在本发明考虑的范围之内。
本领域的技术人员应该熟悉,上述实施例仅就特殊性况的设计和使用进行了可行性描述,不构成对通过其他类似方法实现同一功能的限制,比如将64比特计数器的值映射为128比特初始向量的方法有许多种,上述实施例只是众多可行的映射中的一种,而且计数器的长度可以不是64比特,在一些应用环境中,可能32比特长的计数器就足够了;初始向量也不一定是128比特,如果所使用的算法不是祖冲之算法的话,有些密码算法甚至不需要初始向量;计数器的递增也不一定每次增加1,可以增加任何其他数如2或3等,也可以使用***时钟对计数器进行递增,甚至可以让计数器递减而不是递增,这些显而易见的简单变形都不影响本发明的本质。
安全性和可靠性分析
本发明所设计的密码模块分加密模块和解密模块,两个模块都用到一个计数器,在加解密模块合并的密码模块设计中,这两个计数器是同一个。本发明的特点在于当使用密码模块对消息进行加密时,同时对内部计数器更新值也进行了加密,而且内部计数器更新值作为模块输出的一部分;当使用该模块对加密数据进行解密时,要解密的数据必须是满足加密模块输出的数据格式,即一个计数器的值和一个密文,而且密文中包含该计数器的值。在解密过程中,首先对输入计数器的值与内部计数器的值进行比对,如果外部计数器的值不比内部计数器的值大(在计数器正递增的情况下),则可能是之前通信消息的重放,因此模块作报错处理。针对具体应用环境,报错可以是直接放弃,也可以是完成解密过程后将报错信息和解密结果输出。该针对计数器的检查保证了消息的新鲜性,可以有效抵抗重放攻击。遗憾的是,这种对消息新鲜性的保护在许多实际安全***中都被忽略了。
但是,攻击者修改明文下的计数器是很容易的,因此修改外部计数器的值使其大于解密模块内部计数器的值是很容易的,但由于密文在成功解密后也包括外部计数器的值,解密后的计数器值与非法篡改后的计数器值不可能相同。如果对密文也进行非法篡改,则解密后的东西可以看作是一串随机数,其某个片段恰好与篡改后计数器的值相等的可能性微乎其微,完全可以忽略不计。因此,解密后对明、密文段的计数器值比较,可以有效防止重放攻击的同时,也有效抵抗伪造攻击,因为只有掌握密钥的合法通信者(服务器或合法终端)才可能制造出符合数据格式的密文。
因此可以说,检查CtrA>CtrB(其中CtrA为外部输入计数器值,CtrB为内部计数器值),是为了抵抗重放攻击;而检查CtrA’=CtrA(其中CtrA’为解密后得到的部分数据),是用来验证密文消息来源于可靠的通信方,起到认证的作用。
如果发信方A加密后的数据不能正确抵达收信方B,则可以重新发送,但重新发送不是简单地重放,而是每次将加密模块的计数器值递增,这样,在收信方B看来,计数器的增幅CtrA-CtrB可能没有规律性。但在任何情况下,都必须有等式CtrA’=CtrA成立。如果收信方B在成功接收后想发送另一个加密的消息给原始发信方A,由于收信方的计数器CtrB已经更新为发信方的计数器CtrA,因此将被正确接收;但如果收信方B在未成功接收发信方A上次的消息的情况下试图发送一个加密后的消息给A,由于此时B的计数器值小于A的计数器值,即使B的计数器在发送消息前递增,也不能满足大于A的计数器值,遇到这种情况时,只需让B多发送几次,一般情况下二次发送就会成功,三次以上仍不成功的可能性极小,除非传输信道遇到非常大的干扰。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种使用对称密码算法实现轻量级认证加密解密的方法,其特征在于,该方法使用的加密模块包括加密算法E、存放密钥k的秘密存储单元和计数器CtrA,解密模块包括解密算法D、存放密钥k的秘密存储单元和计数器CtrB,其加密过程包括如下步骤:
1)将计数器CtrA的值增加非零增幅δ,即令CtrA:=CtrA+δ;
2)所述加密模块将要加密的数据data和计数器的值CtrA混合,然后连同存储在秘密存储单元的密钥值k一同送入加密算法E,得到密文c=Ek , IV(CtrA,data),其中IV是一个初始向量,或是CtrA的某个函数值;
3)加密模块输出数组(CtrA,c);
所述计数器CtrA为***当前时钟,所述增幅δ是两次使用计数器的值所产生的时差;
其解密过程包括如下步骤:
1)所述解密模块将所述的加密模块的输出数据(CtrA,c)中计数器部分CtrA的值与所述解密模块计数器的值CtrB进行比较:
如果输出数据(CtrA,c)的加密模块使用过程中所述δ>0,则判断是否满足CtrA>CtrB;
如果输出数据(CtrA,c)的加密模块使用过程中所述δ<0,则判断是否满足CtrA<CtrB;
若条件不满足,则输出错误信息并停止;否则执行如下步骤;
2)使用所述秘密存储单元中的密钥k对所述数据(CtrA,c)进行解密,得到d=Dk , IV(c)=(CtrA’,data’),其中IV是一个初始向量,或是CtrA的某个函数值;判断等式CtrA’=CtrA是否成立,若不成立,则输出错误信息并停止,否则执行如下步骤;
3)更新所述计数器的值:CtrB:=CtrA;输出所述解密算法得到的部分计算结果data’。
2.一种使用对称密码算法实现轻量级认证加密解密的方法,其特征在于,所述方法使用的密码模块包括加密算法E、解密算法D、存储密钥k的秘密存储单元和计数器Ctr,所述方法包括如下步骤:
1)所述密码模块从输入口读取一个算法选择指令,根据所述指令判断是加密请求还是解密请求;
2)如果所述算法选择指令为加密请求,则执行如下步骤:
(a)所述密码模块将所述计数器的值更新为Ctr:=Ctr+δ,所述δ为非零数;
(b)所述密码模块将计数器的值Ctr与被加密的数据data混合,然后连同秘密存储单元中的密钥值k一同送入加密算法,得到密文c=Ek , IV(Ctr,data),其中IV是一个初始向量,或是Ctr的某个函数值;输出数组(Ctr,c)作为对所述数据data的加密结果;
3)如果所述算法选择指令为解密请求,则执行如下步骤:
(a)所述解密模块从被解密的输入数据(Ctr1,c1)分离出输入计数器Ctr1和密文c1;
(b)将Ctr1与所述密码模块内存储的计数器的值Ctr进行比较:如果步骤2)中的所述δ>0,则判断是否满足Ctr1>Ctr;如果步骤2)中的所述δ<0,则判断是否满足Ctr1<Ctr;若条件不满足,则输出错误信息并停止;否则执行如下步骤;
(c)使用秘密存储单元中的密钥k对所述解密数据中的c1进行解密,得到d=Dk , IV(c1)=(Ctr1’,data’),其中IV是一个初始向量,或是Ctr1的某个函数值;判断等式Ctr1’=Ctr1是否成立,若不成立,则输出错误信息并停止;否则执行 如下步骤;
(d)更新所述密码模块内部计数器的值:Ctr:=Ctr1;输出所述解密的部分计算结果data’;
所述计数器Ctr为***当前时钟。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210009399.0A CN102694652B (zh) | 2012-01-13 | 2012-01-13 | 一种使用对称密码算法实现轻量级认证加密的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210009399.0A CN102694652B (zh) | 2012-01-13 | 2012-01-13 | 一种使用对称密码算法实现轻量级认证加密的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102694652A CN102694652A (zh) | 2012-09-26 |
CN102694652B true CN102694652B (zh) | 2016-09-21 |
Family
ID=46859944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210009399.0A Expired - Fee Related CN102694652B (zh) | 2012-01-13 | 2012-01-13 | 一种使用对称密码算法实现轻量级认证加密的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102694652B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107947916B (zh) * | 2017-12-22 | 2020-08-04 | 四川大学 | 一种基于des算法的一体式加解密模块 |
CN108989309B (zh) * | 2018-07-16 | 2021-10-08 | 苏州大学张家港工业技术研究院 | 基于窄带物联网的加密通信方法及其加密通信装置 |
CN110866274A (zh) * | 2019-11-12 | 2020-03-06 | 支付宝(杭州)信息技术有限公司 | 一种数据融合方法、平台、***以及数据处理平台 |
CN115941204B (zh) * | 2022-12-06 | 2024-04-12 | 镁佳(北京)科技有限公司 | 一种基于hse的数据防重放方法及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101442401A (zh) * | 2007-11-19 | 2009-05-27 | 华为技术有限公司 | 数据发送、接收方法及其装置、以及数据传输*** |
CN101917270A (zh) * | 2010-08-03 | 2010-12-15 | 中国科学院软件研究所 | 一种基于对称密码的弱认证和密钥协商方法 |
-
2012
- 2012-01-13 CN CN201210009399.0A patent/CN102694652B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101442401A (zh) * | 2007-11-19 | 2009-05-27 | 华为技术有限公司 | 数据发送、接收方法及其装置、以及数据传输*** |
CN101917270A (zh) * | 2010-08-03 | 2010-12-15 | 中国科学院软件研究所 | 一种基于对称密码的弱认证和密钥协商方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102694652A (zh) | 2012-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104023013B (zh) | 数据传输方法、服务端和客户端 | |
Boyd et al. | Protocols for authentication and key establishment | |
Chen et al. | Physical layer based message authentication with secure channel codes | |
EP0651533B1 (en) | Method and apparatus for privacy and authentication in a mobile wireless network | |
CN110535868A (zh) | 基于混合加密算法的数据传输方法及*** | |
Saxena et al. | EasySMS: A protocol for end-to-end secure transmission of SMS | |
CN105049401B (zh) | 一种基于智能车的安全通信方法 | |
US7698556B2 (en) | Secure spontaneous associations between networkable devices | |
CN102065016B (zh) | 报文发送和接收方法及装置、报文处理方法及*** | |
CN107172056A (zh) | 一种信道安全确定方法、装置、***、客户端及服务器 | |
CN106656510A (zh) | 一种加密密钥获取方法及*** | |
CN102239714B (zh) | 基于应用层的移动金融业务的安全通信方法及其装置 | |
CN107094108A (zh) | 连接到数据总线的部件和在该部件中实现加密功能的方法 | |
KR20210153595A (ko) | 암호화 데이터 검증 방법 | |
CN105281910A (zh) | 带ca数字证书作为入网身份识别的物联网锁及其入网身份识别方法 | |
CN102694652B (zh) | 一种使用对称密码算法实现轻量级认证加密的方法 | |
CN110383755A (zh) | 网络设备和可信第三方设备 | |
CN114364062A (zh) | 一种车联网安全接入网关的方法 | |
JP2002232962A (ja) | 移動通信認証インターワーキング方式 | |
Dagdelen et al. | A cryptographic analysis of OPACITY | |
AlJabri et al. | [Retracted] A Comprehensive Review of Lightweight Authenticated Encryption for IoT Devices | |
CN109587149A (zh) | 一种数据的安全通信方法及装置 | |
CN108540287A (zh) | 物联网安全管理加密方法 | |
CN112765686A (zh) | 芯片内算法密钥的防功耗攻击架构及方法 | |
CN112039654A (zh) | 一种抵御中间人攻击的电表数据安全采集方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160921 Termination date: 20200113 |
|
CF01 | Termination of patent right due to non-payment of annual fee |