一种基于对称密码的弱认证和密钥协商方法转让专利

申请号 : CN201010243957.0

文献号 : CN101917270B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 武传坤滕济凯

申请人 : 中国科学院软件研究所

摘要 :

本发明公开了一种基于对称密码的弱认证和密钥协商方法,其步骤包括:1)在任意两个网络节点设备A和B之间预置一长期共享密钥k;2)在节点A和B上各自设置一时钟,各时钟与标准时间的误差不超过T0秒;3)在节点A和B点之间内置加密算法E;4)利用加密算法E和长期共享密钥k在节点A和B之间建立认证和会话密钥。本发明的方法需要的计算和通信能耗低,执行速度快,认证效率高,非常适用于资源受限通信环境中。本发明由于使用了对称密码算法DES或AES,那么敌手截获认证消息获得长期共享密钥或者密文的困难程度也相当于破译DES或AES算法的困难程度,保证了密文和密钥的安全性。

权利要求 :

1.一种基于对称密码的弱认证和密钥协商方法,包括如下步骤:

1)在任意两个网络节点设备A和B之间预置一长期共享密钥k;

2)在节点A和B上各自设置一时钟,节点设备A与B的时钟设置为几乎同步;

3)在节点A和B点之间内置加密算法E和hash函数H(x);

4)在节点A和B之间建立认证和会话密钥,方法为:

节点A发送经加密算法E和长期共享密钥k加密的密文和A的相关信息给节点B,节点A计算会话密钥;节点B利用解密算法和长期共享密钥k对密文解密,节点B将解密后的信息与节点A的相关信息进行对照,如果解密后的节点设备A的身份信息合法,并且节点设备A发送所述密文的时间与节点设备B收到所述密文的时间之差在预先设定的时间延迟范围内,认证通过,则节点A和B之间共享会话密钥;会话密钥为hash函数H(x)。

2.如权利要求1所述的基于对称密码的弱认证和密钥协商方法,其特征在于所述节点A和B之间建立认证和会话密钥的具体过程如下:(1)节点A将至少包含有经加密算法E加密的密文和节点A身份信息的数据(IDA,C)发送给节点B,其中IDA为节点A的身份信息,密文C=Ek(IDA,T),k为密钥,E为加密算法,T为节点A发送时当前时间;

(2)节点B收到节点A发出的信息,对密文进行解密,获得解密后的IDA′和T;进行认证,判断ID′A=IDA和T′-T≤ΔT是否成立,其中T′为节点B收到密文时的当前时间,ΔT为预先设定的时间延迟范围,若两者都成立,认证通过;

(3)认证通过后,节点B与节点A共享会话密钥,其会话密钥为sk=H(IDA,IDB,k,T)或sk=H(k,T)。

3.如权利要求2所述的基于对称密码的弱认证和密钥协商方法,其特征在于节点A发送数据后,在认证的同时计算会话密钥。

4.如权利要求3所述的基于对称密码的弱认证和密钥协商方法,其特征在于所述节点A发送给节点B的信息中还包括节点B的身份信息IDB。

5.如权利要求3或4所述的基于对称密码的弱认证和密钥协商方法,其特征在于在节点B与节点A建立共享会话密钥后还增加节点A对节点B的认证,其步骤如下:节点B在对节点A的认证成功之后,返回应答信息给节点A,应答信息为经加密算法E′加密后的密文E′sk(X),其中,X为IDB、IDA和T中的一个或它们的任意组合,sk为共享会话密钥,T为节点B发送应答信息时的当前时间;节点A收到应答信息后进行解密并检查解密后信息的合法性。

6.如权利要求3或4所述的基于对称密码的弱认证和密钥协商方法,其特征在于在节点B与节点A建立共享会话密钥后还增加节点A对节点B的认证,其步骤如下:节点B在对节点A的认证成功之后,返回应答信息给节点A,应答信息为经加密算法E′加密后的密文E′sk(X,M),其中X为IDB、IDA和T中的一个或它们的任意组合,M为数据,sk为共享会话密钥,T为节点B发送应答信息时的当前时间;节点A收到应答信息后进行解密并认证解密后的信息。

7.如权利要求5所述的基于对称密码的弱认证和密钥协商方法,其特征在于所述的加密算法E和E′为对称密钥加密算法。

8.如权利要求7所述的基于对称密码的弱认证和密钥协商方法,其特征在于所述加密算法E和E′为AES或DES密码算法。

9.如权利要求6所述的基于对称密码的弱认证和密钥协商方法,其特征在于所述的加密算法E和E′为对称密钥加密算法,

10.如权利要求9所述的基于对称密码的弱认证和密钥协商方法,其特征在于所述加密算法E和E′为AES或DES密码算法。

说明书 :

一种基于对称密码的弱认证和密钥协商方法

技术领域

[0001] 本发明属于身份认证技术领域,尤其涉及基于对称密码的身份弱认证和密钥协商方法,该方法适用于资源受限的网络环境中节点间的快速认证及共享密钥的建立。技术背景
[0002] 在网络环境下,通信是连接网络节点的必要条件,而通信过程又是最容易造成信息泄露的危险途径。因此在网络中通过一定的协议规则来进行通信,规范用户的网络行为来保护信息的安全是一项重要研究内容。
[0003] 保护数据不被窃取的基本技术手段是使用加密措施,而在实施加密措施之前,要对通信双方的身份通过某种身份认证机制来证明它们的身份,即验证用户的身份与所宣称的是否一致,并且协商一个会话密钥用于消息的加解密,这就是关键的认证与密钥协商(Authentication and Key Agreement,AKA)过程。AKA过程的基本步骤是先完成认证,然后进行密钥协商。有时候认证与密钥协商过程是结合在一起进行的。
[0004] 传统的网络认证技术包括数字签名技术、挑战应答技术等,但这些技术都需要消耗较大的计算和通信资源。这些消耗对资源丰富的网络单元来说不算什么,但对特殊网络来说则可能是负担不起的,比如资源受限的无线传感器网络节点的计算资源和通信方面的能力就非常有限。因此将传统的AKA技术用于资源受限的通信环境是不适合的,需要有更高效的AKA方法。
[0005] 随着物联网技术与产业的快速推进,将有大量资源受限的传感网连接到互联网或移动网上,并与远程终端进行连接和控制。这样对传感网本身的安全需求也会提高,因此使用高效的AKA方法是必然选择。

发明内容

[0006] 本发明针对现有技术的网络认证技术不适合资源受限通信环境的问题,提供一基于对称密码的身份认证和密钥协商方法,可高效、安全地用于具有大量资源受限节点的物联网。
[0007] 本发明的技术方案为:一种基于对称密码的弱认证和密钥协商方法,包括如下步骤:
[0008] 1)在任意两个网络节点设备A和B之间预置一长期共享密钥k。如何预置这样的共享密钥不是本发明的内容,已经有许多现有技术可以完成,比如通过密钥预分配和密钥池等方法使得每个节点都存有和其它节点共享的长期密钥,这些长期密钥存放在用户的某个数据库中,存储方式是(节点名,共享密钥)。
[0009] 2)在任意两个网络节点设备A和B上各自设置一时钟,所述各时钟与标准时间的误差不超过T0秒,T0秒可以为2到3秒,因此节点设备A与B的时钟设置为几乎同步。
[0010] 3)在节点设备A和B之间内置加密算法E和hash函数H(x)。
[0011] 4)利用加密算法E在节点设备A和B之间建立认证和会话密钥,具体方法为:
[0012] 节点设备A发送经加密算法E和长期共享密钥k加密的密文和节点设备A的相关信息给节点设备B,节点A计算会话密钥;节点设备B利用解密算法和长期共享密钥k对密文解密,节点设备B将解密后的信息与设备A的相关信息进行对照认证,认证通过,如果信息合法,则节点设备A和节点设备B之间共享会话密钥,会话密钥为hash函数H(x)。当设备A和B之间并不存长期共享密钥时,则认证无法通过,会话密钥无法共享。
[0013] 节点设备A和B之间建立认证和会话密钥的具体过程如下:
[0014] (1)节点设备A将至少包含有经加密算法E加密的密文和节点设备A的身份信息的数据发送给节点设备B,具体为(IDA,C),其中IdA为节点设备A的身份信息,密文C=Ek(IDA,T),k为密钥,E为加密算法,T为节点设备A发送消息时的当前时间;
[0015] (2)节点设备B收到节点设备A发出的数据,对密文进行解密,获得解密后的IDA′和T;进行认证,判断ID′A=IDA和T′-T≤ΔT是否成立,其中T’为节点B收到密文时的当前时间戳,ΔT为预先设定的时间延迟范围,若两者都成立,认证通过;
[0016] (3)认证通过后,节点B与节点设备A共享会话密钥,其共享的会话密钥为sk=H(IDA,IDB,k,T)或sk=H(k,T)。会话密钥在A节点设备和B节点设备分别计算,但会话密钥的计算和认证可以同时进行,例如节点设备A发出数据后,认证的同时就可以计算会话密钥,不需要等到认证完成再计算会话密钥。当认证通过时,则节点设备A和节点设备B就可以共享该会话密钥。
[0017] 所述节点设备A发送给节点设备B的信息中还包括节点设备B的身份信息IDB。
[0018] 当上述协议的前3个步骤被执行完后,如果节点设备A按照步骤进行,则B一定能根据A的身份查找到长期共享密钥k,从而进行正确解密,并进行认证。如果认证通过,则B有理由相信对方的确是A,这是因为k是A和B共享的密钥,只有A能够产生有效的密文Ek(IDA,T),B解密得到(IDA′,T)后,就可以确定对方是否的确是A。
[0019] 为了更进一步提高认证和密钥协商方法的正确性和安全性,在节点B与节点设备A建立共享会话密钥后还可增加节点设备A对节点B的反认证,其步骤如下:
[0020] 节点设备B在对节点设备A的认证成功之后,返回应答信息给节点设备A,应答信息为经加密算法E’加密后的密文E′sk(X),其中X为IDB、IDA和T中的一个或它们的任意组合,sk为共享会话密钥,T为节点B发送应答信息时的当前时间;节点设备A收到应答信息后进行解密并认证解密后的信息,解密和认证方法与步骤(2)中节点B对节点设备A的解密和认证方法相同,都是通过判断解密后的身份信息和与发送来的身份信息是否相同,以及时间的延迟是否超出设定的范围来确定认证是否能通过。
[0021] E′sk(X)具体可为E′sk(IDA,IDB,T)、E′sk(IDA,T)、E′sk(IDB,T)、E′sk(IDA,IDB)、E′sk(IDA)、E′sk(IDB)、E′sk(T)。加密算法E’可以与E为同一算法或另一算法。
[0022] 节点设备A对节点设备B的另一认证方法如下:
[0023] 节点设备B在对节点设备A的认证成功之后,返回应答信息给节点设备A,应答信息为经加密算法E’加密后的密文E′sk(X,M),其中X为IDB、IDA和T中的一个或它们的任意组合,sk为共享会话密钥,T为节点B发送应答信息时的当前时间;节点设备A收到应答信息后进行解密并认证解密后的信息,解密和认证方法与步骤(2)中节点B对节点设备A的解密和认证方法相同。在这种认证方法中,在确定B的身份的同时也得到B传输的数据。
[0024] E′sk(X,m)具体可为E′sk(IDA,IDB,T,M)、E′sk(IDA,T,M)、E′sk(IDB,T,M)、E′sk(IDA,IDB,M)、E′sk(IDA,M)、E′sk(IDB,M)、E′sk(T,M)。
[0025] 上述两种方法中,节点B可以对节点设备A进行反认证,节点设备A首先计算出会话密钥sk,然后解密后经过数据对比就可以确定对方是否为B,因为只有B才可能产生正确的会话密钥并产生正确的密文,无论密文是否包括真正的通信数据M。
[0026] 所述加密算法E和E’为对称密钥加密算法。
[0027] 所述加密算法E和E’可以是AES或DES等对称密码算法。
[0028] 本发明的有益效果:
[0029] 效率分析:与现有技术相比,本发明的认证过程在计算方面只需要对称密钥密码算法的加密和解密运算,在通信代价方面只需要单方向传输身份信息和密文。如果身份信息为32比特字符串,密文为128比特字符串,那么要传输的数据仅为160比特。会话密钥的计算也是一个hash函数的执行,其速度非常快。
[0030] 安全性分析:由于所使用的对称密码算法E为DES或AES,那么敌手从截获的认证消息中要获得长期共享密钥或者密文的困难程度也相当于破译DES或AES算法的困难程度。敌手重放攻击的机会也很小,只有在时间延迟所允许的范围内才是有效的。而且即使重放攻击成功,因为消息都是密文传送,敌手也不能得到有价值的信息。因此,只有拥有共享密钥的用户才能解密出消息,进行身份认证,最后建立会话密钥。虽然消息在传输中有可能被敌手截获或者篡改,妨碍节点间的身份认证和会话密钥建立,并且可以发起重放攻击。但是敌手无法假冒某节点进行身份认证,从而达到建立会话密钥的目的。也就是说,节点之间不一定能够成功完成身份认证并建立会话密钥,但是只有合法的节点之间才能成功完成这一过程。在认证信息中加入了当前时间信息,并把时间信息嵌入到会话密钥中,使每次的身份认证信息都会不同,这样的话,即使用户在某个终端上发出的某次身份认证信息被泄漏,也不会危及用户以后的身份认证和会话密钥的安全。
[0031] 总体来说,本发明的方法需要的计算和通信能耗低。认证只用到对称密码算法,对称密码算法需要的密钥长度较短,加解密速度快。用于认证的数据量小,需要的通信带宽也小。在认证成功后,会话密钥马上可以形成。而且,双向认证可以通过简单消息回复来实现,或结合实际加密使用的消息一起完成,实现效率上的提高。
[0032] 具体地,通信方A通过简单加密计算就可产生认证数据,将此数据传输给B用于认证,B在完成对A的认证的同时可以生成一个会话密钥,A在发送完消息后就可以建立会话密钥,会话密钥的建立和身份认证几乎可以同时进行。在会话密钥的建立过程中,只需计算一个hash函数,效率非常高。B可以回复一个消息用于A对B的认证,也可以将认证数据融合到加密后的消息中,这样更能节省通信资源,非常适用于资源受限通信环境中。

附图说明

[0033] 图1为实施例1中节点设备A和B之间建立认证和会话密钥流程框图;
[0034] 图2为实施例2中节点设备A和B之间建立认证和会话密钥流程框图。

具体实施方式

[0035] 本发明在具体实施过程中,因为使用对称加密算法,通信双方要求有预置的共享密钥。在每个节点上预置共享密钥的密钥预分配的方法必须是高效的,因为在每个节点的能量是非常有限的。其次,密钥的安全性也是一个很重要的因素,要求每个节点都能够安全存放共享密钥。如果长期的共享密钥一旦泄露,就会带来很大的安全隐患,敌手可以假冒用户进行身份的认证和会话密钥的建立,因此必须确保每个节点的长期共享密钥是不可读的。一个被俘获的节点,一旦被打开,这个节点的包括长期共享密钥的一些数据就会消失,以确保长期密钥不被窃取。用户进行身份认证时,要求时钟几乎同步,因此,如果两个节点不在一个时区内,可以通过一时钟服务器定期调节节点的时间。用户在消息(IDA,Ek(IDA,T))中都加入了时间戳T是用来保证消息的新鲜性,并且在收到消息后,要检查时间延迟是否在规定的范围以内。这个允许的时间延迟的设定要大小适中,如果允许的时间延迟偏小,则会因为网络传输速度等原因造成协议的可用性差。如果允许的时间延迟偏大,则会给重放攻击创造条件。在物连网环境下,允许的时间延迟相对较小,因为在物连网中节点的生命周期相对较小,时间延迟偏大有可能会在节点的生命周期内,完成的通信量较少,使得网络不实用。在身份认证完成后,双方建立的会话密钥中含有时间戳,因为时间戳是一时鲜值,可以随机化最后的会话密钥,提高会话密钥的安全性。需要说明的是,节点间长期共享密钥的建立可以通过一些安全有效的密钥预分配方案实现,具体的实现方式不在本发明的考虑范围内。
[0036] 实施例1:使用对称密钥加密算法DES的单向认证
[0037] 如上所述,本发明是基于对称密码,在任意两个节点之间已经建立了共享密钥,而且在时钟几乎同步的前提下进行身份认证并建立会话密钥的。其具体步骤如下:
[0038] 1)在任意两个网络节点设备A和B之间预置一长期共享密钥k。
[0039] 在密钥预分配阶段,首先产生一个大的密钥池G和密钥标识;然后随机抽取不重复的几个密钥组成密钥链;最后把不同的密钥链装载到不同传感器节点。每个节点都要发现周围与其有共享密钥的节点,仅仅存在共享密钥的节点之间才被认为是连接的。在任意两个节点都有共享密钥的情况下,如果用户A要向用户B发起认证并建立会话密钥,用户A找到和用户B的共享密钥k,密钥长度为64位。
[0040] 2)在任意两个网络节点设备A和B上各自设置一时钟,所述时钟与标准时间的误差不超过T0秒,T0秒为2-3秒,节点设备A与节点B的时钟设置为几乎同步。
[0041] 3)在节点设备A和B点之间内置对称密钥加密算法E,E为DES算法。
[0042] DES算法使用一个56位的密钥以及附加的8位奇偶校验位,产生最大64位的分组大小。这是一个迭代的分组密码,使用称为Feistel的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES使用16个循环。
[0043] 4)在节点设备A和B之间建立认证和会话密钥。
[0044] (1)节点设备A对消息进行加密,得到密文C=DESk(IDA,T),将密文和节点设备A的身份信息发送给节点B,具体为(IDA,DESk(IDA,T)),其中IDA为节点设备A的身份信息,k为密钥,加密算法E为DES算法,T为节点设备A发送时当前时间;同时节点设备A计算会话密钥sk=H(IDA,IDB,k,T);
[0045] (2)节点B收到节点设备A发出的信息,找到与节点设备A的共享密钥k,做解密运算 得到(ID′A,T),然后检查ID′A=IDA和T′-T≤ΔT是否都成立,其中T′为B收到消息的时间,ΔT是预先设定的时间延迟范围,可以设定为3至5秒钟。如果这两项有一项不成立,抛弃密文。如果两者都成立,则认证通过。
[0046] (3)认证通过后,节点B与节点设备A共享会话密钥,共享的会话密钥为sk=H(IDA,IDB,k,T)或sk=H(k,T)。
[0047] 实施例2:使用对称密钥加密算法AES的双向认证
[0048] 1)在任意两个网络节点设备A和B之间预置一长期共享密钥k。长期共享密钥k通过一个服务器产生,密钥长度128位。
[0049] 随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES。AES是分组密钥,算法输入128位数据,密钥长度也是128位。每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey的参与。由于外部输入的加密密钥K长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。
[0050] 2)在任意两个网络节点设备A和B上各自设置一时钟,所述时钟与标准时间的误差不超过T0秒,T0秒的范围为2-3秒,节点设备A与节点B的时钟设置为几乎同步。
[0051] 3)在节点设备A和B点之间内置对称密钥加密算法E,E为AES算法。
[0052] 4)在节点设备A和B之间建立认证和会话密钥。
[0053] (1)节点设备A对消息进行加密,得到密文C=AESk(IDA,T),将密文和节点设备A的身份信息发送给节点B,具体为(IDA,AESk(IDA,T)),k为密钥,加密算法E为AES算法,T为节点设备A发送时当前时间;
[0054] (2)节点B收到节点设备A发出的加密信息,找到与节点设备A的共享密钥k,做解密运算 得到(ID′A,T),然后检查ID′A=IDA和T′-T≤ΔT是否都成立,其中T′为B收到消息的时间,ΔT是预先设定的时间延迟范围,可以设定为3至5秒钟。如果这两项有一项不成立,抛弃密文。如果两者都成立,则认证通过。
[0055] (3)认证通过后,节点B与节点设备A共享会话密钥,共享的会话密钥为sk=H(IDA,IDB,k,T)或sk=H(k,T)。
[0056] (4)节点B对节点设备A的认证通过后,如果还需要返回数据用于A对B的认证,这时可以与数据M的加密一起进行,加密密文为E′sk(IDB,M),发送应答信息AESsk(IDA,IDB,T,M)给A。A通过计算会话密钥sk,可以成功解密得到(IDA,IDB,T,M),其中前面的部分数据用于A对B的认证,即认证节点B的身份是否正确;后面部分数据是拟接收的消息M。
[0057] 需要注意的是,在本实施例中节点B给节点设备A的应答信息中,使用了同一AES算法,但不同的加密密钥,这在实际中为了节约资源,特别是资源受限系统常用的方法。当然,在资源不是非常受限的情况下,B对A的应答可以使用不同的AES算法。
[0058] 同时B也可以单独发送认证数据给A,不包括数据M,这与跟数据M一起加密没有本质区别,但在A首先给B发送数据的情况下有必要。