一种适用于物联网的密钥更新方法
技术领域
本发明涉及物联网,尤其涉及一种适用于物联网的密钥更新方法。
背景技术
物联网技术在农业和林业自动化、智能家居、智能交通、智能建筑等领域得到了广泛的应用。典型的物联网由众多能量受限(靠电池供应)的无线通信模块或节点(以下简称节点)和能量通常不受限的中央控制器(以下简称中控)组成。当中控与特定节点进行数据通信时,鉴于无线通信的开放性,数据在传输前应先加密,以保障特定节点和中控之间数据传输的安全性。因此每个节点和中控都需要专门共享一个会话密钥。
物联网节点通常没有基本的输入界面(键盘、触摸屏等),因此节点生产厂商会给节点内嵌出厂口令。中控通常具有输入输出界面或是可以通过网络界面进行配置,因此用户可以在中控上相应地输入各个节点的出厂口令。节点和中控通信时,双方可以利用该出厂口令生成会话密钥,并用该会话密钥对数据进行加密传输。这种静态的会话密钥生成方式虽然用起来简单方便,但是给攻击者提供了便利。攻击者只需要获取到中控和节点之间的会话密钥,便能够窃听节点与中控之间的加密通信,甚至冒充中控向节点发送恶意指令,从而带来极大的安全隐患。为了解决这一问题,需要对加密数据的会话密钥进行更新。
目前常用的密钥更新方式是由中控主导的,我们称之为显式密钥更新。此时,中控主动产生包含新会话密钥的密钥更新报文,该密钥更新报文被现有会话密钥加密后发送给节点;节点接收到加密的密钥更新报文后,利用现有会话密钥解密得到新会话密钥,并用新会话密钥取代现有会话密钥。这种密钥更新方式虽然增强了通信的安全性,但是由于节点能量有限,频繁地接收中控发送的无线密钥更新报文会消耗较多的能量,从而缩短节点电池的使用寿命。
本发明提出了一种密钥更新方法,方法中节点和中控无须收发任何额外的密钥更新报文,密钥更新过程由节点自身发起完成,中控利用穷举法匹配出并更新现有会话密钥,以与节点保持同步。此方法避免了显式密钥更新给节点造成的能量损耗,延长了节点电池的使用寿命,从而提高了整个物联网的整体生存时间。
发明内容
本发明所要解决的技术问题是如何在物联网中提供一种不依赖显式密钥更新报文的密钥更新方法,以克服现有技术中节点能量消耗过快的缺陷。
为了解决上述技术问题,本发明提供了一种适用于物联网的密钥更新方法,所述物联网包括中控和各类节点;所述中控和所述各类节点(以下简称所述节点)之间共享一个会话密钥并事先约定一族输出结果长度等于会话密钥长度的生成函数;所述节点利用该族生成函数中的某一个对现有会话密钥进行更新,生成新会话密钥;所述节点用所述新会话密钥对传输的数据进行加密;所述中控接收到加密数据后,基于共享会话密钥逐一尝试各生成函数得到所述新会话密钥。
该方法包括如下步骤:
所述节点向所述中控发送数据前,所述节点从该族生成函数中随机选取一个并应用于现有会话密钥,计算得到的结果称为生成密钥,此时该生成密钥即为新会话密钥;所述节点用所述新会话密钥对数据进行加密,得到密文数据,并将所述密文数据汇报给所述中控;
所述中控接收得到所述密文数据后,基于现有会话密钥逐一尝试各生成函数,直到某个候选密钥能解出正确有效的明文为止,此时该候选密钥即为所述节点使用的所述新会话密钥;相应地,所述中控把现有会话密钥更新为该候选密钥。
优选地,所述节点从该族生成函数中随机选取一个并应用于现有会话密钥,生成所述新会话密钥的步骤,包括:
所述节点和中控事先约定的一族生成函数F:
F={fi|i=1,2,...,N},其中N为节点出厂时的设定值,用户通过中控的控制界面为中控设置同样的N,每个fi为哈希函数(也称散列函数、杂凑函数等),其特点是输入任意但输出长度固定(此处等于所述会话密钥的长度);
所述节点采用如下公式生成所述新会话密钥k′:
k′=fr(k);
其中,
k为现有会话密钥,本申请的实施例提供了第一次通信时初始会话密钥k的生成方法,即k=h(pw),其中pw为所述节点的出厂口令(即便是同一品牌的节点,各pw也可能不一样),h是一个哈希函数,其输出结果长度与所述会话密钥长度一致;
fr是从所述F中选取的一个函数;
r(1≤r≤N)是所述节点从N种可能值中随机选取的。
优选地,所述节点从所述F中随机选取一个,这个随机性至少应部分地来自真实的物理世界。例如,节点的上电时间、节点测得的数据等都可以一并作为随机信息源以用于过程初始化等。
优选地,所述中控接收得到所述密文数据后,基于现有会话密钥逐一尝试所述fi,直到某个生成的候选密钥能解出正确有效的明文的步骤,包括:
从所述F中按某种方式(比如顺序、逆序、随机等)选取一个函数fr′,并计算生成候选密钥k″,也即k″=fr′(k),其中k为现有会话密钥。
所述中控利用候选密钥k″对密文进行解密,若得到编码正确且语义合理的明文,则所述k″为所述节点使用的所述新会话密钥k′;相应地,所述中控把现有会话密钥k更新为该候选密钥k″,以与节点保持同步;若不能得到编码正确且语义合理的明文,则重复以上所述步骤。
与现有技术相比,本发明提供的技术方案避免了显式密钥更新给节点造成的能量损耗,延长了节点电池的使用寿命,从而提高了整个物联网的整体生存时间。
附图说明
图1为本发明实施例的系统架构示意图;
图2为本发明实施例的密钥更新方法的流程示意图。
具体实施方式
以下结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达到相应技术效果的实现过程能充分理解并据以实施。
本发明的技术方案中,节点和中控无须收发任何额外的密钥更新报文,密钥更新过程由节点自身发起完成,中控利用穷举法匹配出并更新现有会话密钥,以与节点保持同步。此技术方案避免了显式密钥更新给节点造成的能量损耗,延长了节点电池的使用寿命,从而提高了整个物联网的整体生存时间。
智能家居网络是物联网中的一种,目前得到了广泛的应用和关注。本发明提出的密钥更新方法不仅适用于智能家居网络,也适用于农业和林业自动化、智能交通、智能建筑等其它需要保障数据通信安全的网络。
实施例一、智能家居网络的密钥更新方法
图1为本实施例的系统架构示意图,图2为本实施例的更新方法的流程示意图。
如图1所示,智能家居网络是一种网状结构,中央控制器(以下简称中控)是具有较高处理能力、资源充足的中心,而各电器、传感器上的无线收发模块或装置(以下简称装置,图中示出了装置1、装置2、装置3)为外围节点。各装置通过无线通信技术,接收中控的指令并向中控返回数据;同时中控接入互联网,方便用户通过手机、电脑等工具访问智能家居网络。在部署网络时,出于安全和隐私的考虑,中控与各个装置之间的数据通信都必须用会话密钥进行加密。
图2所示的本实施例,是以装置1为例来说明本发明方法的技术方案,主要包括如下步骤:
步骤S210,装置1出厂时内嵌出厂口令pw,中控与装置都据此利用公式(1)生成它们第一次通信时共享的初始会话密钥k:
k=h(pw) (1)
其中,h是一个密码学中的哈希函数,本发明中哈希函数的输出结果长度与所述会话密钥长度一致;
步骤S220,中控和装置事先约定一族输出结果长度等于会话密钥长度的生成函数F={fi|i=1,2,...,N},其中N为装置出厂时的设定值,用户通过中控的控制界面为中控设置同样的N;此外对于不同装置,N的大小可以不一样,例如装置1厂家将N设为800,装置2厂家将N设为1024,装置3厂家将N设为1600;
本步骤中,fi的实现可以根据公式(2)获得,但不限于这种简单的形式:
fi(x)=f(x||i) (2)
其中,f是单向哈希函数,其特点是从输出反推输入在实际计算上不可行,x为传递给生成函数的数据,||表示比特串的拼接。
步骤S230,每次装置向中控发送数据前,装置从上述F中随机选取一个并应用于会话密钥k,计算得到生成密钥,该生成密钥即为新会话密钥k′;
本步骤中,典型地,根据公式(3)获得新会话密钥k′:
k′=fr(k) (3)
其中,fr是从上述F中选取的一个函数,r的实现方式是从N个连续的正整数1,2,3,...,N中随机选取;
生成函数在会话密钥的每一次更新中都是从上述F中随机选取的(不能重复利用上一次的生成函数),所以装置所选择的新会话密钥将以一种随机的方式进行“演变”。
装置从上述F中随机选取一个,这个随机性至少应部分地来自真实的物理世界。例如,装置的上电时间、装置测得的读数(洗澡水的温度、室内空气的湿度、家用天然气的剩余量等)都可以一并作为随机信息源以用于过程初始化等。
步骤S240,装置用新会话密钥k′对数据进行加密,得到密文数据,并将密文数据汇报给中控;
步骤S250,中控接收到密文数据后,从上述F中按某种方式(比如顺序、逆序、随机等)选取一个并应用于会话密钥k,生成候选密钥k″;
步骤S260,中控利用候选密钥k″尝试解密密文,若能得到编码正确且语义合理的明文,执行步骤S270;反之,则跳转到步骤S250;
步骤S270,k″即为装置使用的新会话密钥k′;相应地,中控将会话密钥k更新成它;当下一次装置向中控发送数据时,返回步骤S230;
本实施例中,装置在本地完成密钥更新,中控经过通常不超过N次解密尝试就能完成密钥更新。显然,在这种密钥更新方法中,装置和中控无须收发任何额外的密钥更新报文,密钥更新过程由节点自身发起完成,中控利用穷举法匹配出并更新现有会话密钥,以与节点保持同步。此方法避免了显式密钥更新给装置造成的能量损耗,延长了装置电池的使用寿命,从而提高了整个智能家居网络的整体生存时间。
虽然本发明所揭露的实施方式如上,但上述内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。在不脱离本发明所揭露的精神及范围的前提下,可在实施的形式上及细节上作任何的修饰与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。