一种高效的无线传感器网络方案

时间:2007-09-24
 

  摘要:提出了一种基于单向密钥链的传感器网络方案,该方案能够提供实时,较好地满足了时延和存储量要求,且能有效地防止重放、假冒和拒绝服务等各种攻击,并具有低开销和可扩展性强等特点。同时,考虑到节点计算速度、电源能量、通信能力和存储空间非常有限的特点,相关的协议和算法都设计得比较简单,并避开了代价昂贵的公钥运算,因而方案的计算、存储和通信开销都较小,执行效率大大提高。此外,本方案在不排除网内处理和节点被动加入的情况下,支持数据源。

 

  关键词:传感器网络;;密钥建立;被动加入

 

   近年来,随着无线通信、集成电路、嵌入式计算及微机电系统等技术的飞速发展和日益成熟,具有感知能力、计算能力和通信能力的微型无线传感器开始在世界范围内出现。这些传感器具有低成本、低功耗、多功能等特点和无线通信、数据采集、信息处理、协同合作等功能。由这些微型传感器节点构成的传感器网络,能够协作地实时监测、感知和采集网络分布区域内的各种环境或监测对象的信息,并对这些数据进行处理,从而获得详尽而准确的信息,将其传送到需要这些信息的用户。因此,传感器网络是信息感知和采集的一场革命,它能够在任何时间、任何地点和任何环境条件下提供大量详实可靠的信息,因而可以被广泛应用于军事斗争、国家安全、环境监测、交通管理、医疗卫生、制造业和反恐抗灾等领域。

 

由于传感器网络一般配置在恶劣环境、无人区域或敌方阵地中,加之无线网络本身固有的脆弱性,因而传感器网络安全引起了人们的极大关注。传感器网络的许多应用(如目标的监测和跟踪等) 在很大程度上取决于网络的安全运行,一旦传感器网络受到攻击或破坏,将可能导致灾难性的后果。如何在节点计算速度、电源能量、通信能力和存储空间非常有限的情况下,通过设计安全机制,提供机密性保护和身份功能,防止各种恶意攻击,为传感器网络创造相对安全的工作环境,是一个关系到传感器网络能否真正走向实用的关键性问题。

 

本文的结构如下:首先全面描述了密钥建立协议、基站与传感器节点之间的广播协议和传感器节点之间的数据源协议;然后详细分析了方案的有关性能;对全文进行总结得出结论。

 

基本协议

 

协议中所用到符号的意义: x RN 表示x 在集合N 中随机地选取, H1 () , H2 () 分别表示两个不同的碰撞自由的单向散列函数(MD5 SHA1) , ‖表示字符串连接操作符,{ M} Ki表示使用秘密密钥Ki 对消息M 进行加密。

 

密钥建立协议

在传感器网络中,一个完整的密钥建立过程通常包括3 个阶段,即密钥预分发、单跳密钥发现和多跳密钥建立。

 

①基站产生n 个密钥及其对应的标识符(217 n 220) ,这些密钥和标识符形成一个密钥池P ,P = K D

K = { k1 , k2 ,L , kn} , D = { ID1 , ID2 ,L , IDn} ,

其中ki 为基站生成的密钥, IDi 为密钥ki 对应的标识符。

②基站根据传感器节点的生命周期和单个密钥的使用时间决定单向密钥链的长度N , 并选择一个随机数KN (称为密钥链的根) ,根据公式

Ki = H ( Ki + 1)

KN 进行N 次散列计算,其中i = N - 1 , N - 2 ,L ,1 ,0。这样基站就生成了一个单向密钥链{ KN ,KN - 1 ,L , K1 , K0} , K0 称为该密钥链的锚。

③基站为每个传感器节点加载密钥环及相关参数。以节点A 为例, 基站从n 个密钥中随机选出r 个密钥,组成某个传感器节点A 的密钥环RA ,并将密钥环和密钥链的锚K0 加载到A 存储器,

RA = KA DA ,

KA = { kA1 , kA2 ,L , kAr} ,  KAi RK,

DA = { IDA1 , IDA2 ,L , IDAr} ,

其中kAi RK 表示kAi在集合K 中随机地选取, IDAi为密钥kAi对应的标识符。基站保存每个传感器节点的密钥环(包括r 个密钥及其对应的标识符)

④传感器节点A 计算与基站共享的密钥KBA

KBA = { IDB } KAM,

KAM = kA1©kA2©L ©kAr ,

并将其加载到存储器中。其中, IDB 表示基站的身份标识,{ M} Ki表示使用秘密密钥Ki 对消息M 进行加密。

至此,密钥预分发阶段结束,该阶段保证了簇内任意两个节点能够以某一概率在各自的密钥环上找到双方共享的会话密钥。

⑤传感器网络配置时, 节点A 被随机或者特定地散布在指定的感知区域内。在簇形成过程结束后,它广播一个信息

A *:DA , LA ,

*表示传感器网络内的任意节点, LA 表示节点A的位置信息。

⑥收到该信息的所有节点将确信它在节点A的传输范围内, 即二者在同一个簇中, 并通过遍历其密钥环,检查是否存在与A 广播的密钥标识符集相交的元素。假定节点C 在其密钥环上发现存在与A 标识符集相交的元素IDAC , 则证明节点CA 共享有与IDAC对应的会话密钥KAC 。于是, 节点C 返回给A 一响应消息

C A :{ DAC , LC} KAC

A 使用共享会话密钥KAC对响应消息进行解密,确信其密钥环与节点C 有交集。

    单跳密钥发现过程使得节点能够通过广播消息的方式,找到簇内与其共享有密钥环上某个会话密钥的节点。在单跳密钥发现过程结束后,节点A保存已找到共享实体的密钥,并将密钥环上其余密钥删除。

⑧对于簇内尚未与A 建立共享密钥的节点来说,可以通过如下过程生成会话密钥。假定节点D 在单跳密钥发现过程结束后, 仍未与节点A 建立共享密钥, 但它找到与节点C 共享的会话密钥KDC ,且节点A 与节点C 也共享有密钥KAC 。此时,A 发送一个挑战信息给节点C 在对其进行身份后,该信息包含A D 共享的密钥KADA 的位置信息LA

A C :{ KAD , LA} KAC

⑨节点C 解密消息, 并将其使用密钥KDC对消息再次加密后转发给节点D

C D :{ KAD , LA} KDC

⑩节点D 验证挑战消息的合法性,并发送一个响应信息给节点A

D A :{ Nonce , LD} KAD,

其中, Nonce 是一个随机数, LD 是节点D 的位置信息。

   lv 节点A 使用共享密钥KAD对响应消息进行解密,确信与D 共享的密钥已经建立。

在多跳密钥建立过程结束后,簇内任意两个节点之间都共享有一个会话密钥。

  

基站与传感器节点之间的广播协议

①基站将时间分成多个相等的间隔T1 , T2 ,., Tk ,每个时间间隔长度为Tint , T0 为计时开始时刻, TB 为消息发送时刻。基站广播一个挑战信息,

其格式如下

B *:{ TB , T0 , Tint , TK} K0

②所有收到该信息的传感器节点使用存储器中保存的K0 对消息进行解密,并计算与基站的时间同步误差。假定节点A 接收到该消息的本地时刻为TA ,则它与基站的时间同步误差

ΔA = { TA - TB }

③基站将密钥链上的密钥与时间间隔对应起来,且在同一个时间间隔内发送的数据包使用同一密钥来进行加密,如图1 所示。假定基站在时间间隔T1 中需要发送的数据包为P1 , P2 ,则广播消息的格式如下

 

④网络中的传感器节点接收基站发送的广播消息。如节点A 收到该消息后, 首先验证安全条件TB1 TA1 - ΔA ( TA1为节点A 接收到数据包P1 ,P2 的本地时刻) 是否成立, 然后检查K0 =?H( K1) ,若上述两项验证通过,则接收该消息。

⑤当个广播消息被接收后, 基站即可重复发送( Mi , i) ,其中Mi 为第i 个时间间隔内需要发送的数据包信息的连接,此时广播消息的格式为

B *:{ Mi , Ki , TBi} Ki - 1

⑥网络中的传感器节点接收基站发送的广播消息。如节点A 收到该消息后, 首先验证安全条件TBi TAi - ΔA ( TAi为节点A 接收到第i 个时间间隔中广播消息的本地时刻) 是否成立, 然后检查Ki - 1 =?H ( Ki ) 。如此循环往复, 直到广播消息传输结束。

  

传感器节点之间的数据源协议

简单的传感器节点与节点之间的身份识别是使用共享会话密钥进行,但这种方法限制了节点的被动加入。为提高传感器网络的可靠性并有效地防止选择转发攻击,节点的被动加入是必要的。下面我们给出一种支持节点被动加入的传感器节点之间的数据源方案。

 

节点D 将时间分成多个相等的间隔TD1 , TD2 ,., TDk ,每个时间间隔长度为TDint , TD0为计时开始时刻, TD 为消息发送时刻。同时, 节点D 根据传感器节点的生命周期和单个密钥的使用时间决定单向密钥链的长度p , 并选择一个随机数Kp(称为密钥链的根) ,根据公式

Ki = H( Ki + 1)

Kp 进行p 次散列计算,其中i = p - 1 , p - 2 ,L ,1 ,0。这样基站就生成了一个单向密钥链{ Kp ,Kp - 1 ,L , K1 , K0} , K0 ,为该密钥链的锚。

 

节点D 生成一个挑战信息, 并使用与欲建立通信连接的邻近节点共享的密钥加密后进行单播通信。若假定节点D 需要与节点C 进行单播通信,则挑战消息的格式如下:

D C :{ TD , TD0 , TDint , K0} KDC

假定节点C 接收到该消息的本地时刻为TC ,则它与基站的时间同步误差

ΔC = TC - TD

后续步骤和基站与传感器节点之间的广播协议相似,不再赘述。

 

性能分析

 

 安全性分析

在广播协议中,由于初始广播消息使用密钥K0 进行了加密( K0 是在节点配置前加载到存储器中的) ,且后续消息是使用密钥链上的密钥计算形成的密文, 因而攻击者无法获取相关的敏感信息,也无法冒充基站发布虚假的广播信息;在传感器节点之间的数据源协议中, 密钥链的锚K0是使用与欲建立通信连接的邻近节点共享的密钥加密后进行单播通信的, 因而其安全性得到了保证。安全条件的应用既能够保证消息的新鲜性,也能有效地避免重放攻击和拒绝服务攻击。因为攻击者对发送消息进行复制后传输,会不可避免地产生时延,从而使其不能满足安全条件而被接收者丢弃。

 

效率分析

在构建传感器网络身份方案时,我们充分考虑到节点计算速度、电源能量、通信能力和存储空间非常有限的特点,基站与传感器节点之间的广播及传感器节点之间的数据源协议和算法都设计得比较简单,并避开了代价昂贵的公钥运算,完全使用对称加密算法来实现,计算、存储和通信开销都较小, 从而使得方案的执行效率大大提高。同时,本方案能够提供实时,每个数据包含有对应于该时间间隔的单向密钥链上的密钥,相关的接收者可以使用保存过的前一个密钥值进行解密和验证,从而有效地避免了时延和存储量偏大等问题。

 

支持节点被动加入

节点的被动加入对于提高传感器网络的传输能力和可靠性是非常必要的,它是网内处理的重要形式之一。假定节点A 注意到节点B 向节点C 发送了数据包, 但节点C 没有将该数据包转发给另外的节点,则节点A 将以一定的概率负责转发该数据包。这种节点被动加入的方式能够有效地防止选择性转发攻击,但它要求部分邻近节点能够解密和发送方传输的信息,这就意味着消息必须使用局部共享的密钥进行加密。

 

在本方案中,单向密钥链的锚值是以某种安全的方式(由基站预先加载到节点的存储器中或使用与欲建立通信连接的邻近节点共享的密钥加密后进行单播通信) 进行分发的,后续发送的数据包都是使用单向密钥链上的密钥进行加密的,每个接收者也可以使用保存的前一个密钥值进行解密和验证。因此,在本方案中,部分邻近节点能够解密和发送方传输的信息,它具有支持节点被动加入的特性。

 

 结论

 

本文提出一种传感器网络中的方案,它包括密钥建立协议、基站与传感器节点之间的广播协议和传感器节点之间的数据源协议等3个部分。考虑到传感器节点资源有限的特点,方案中的各协议和算法都设计得比较简单,并避开了代价昂贵的公钥运算, 完全使用对称加密算法来实现,从而使得方案的计算、存储和通信开销都较小,执行效率大大提高。同时, 本方案提供了实时,避免了时延和存储量偏大等问题, 并能有效地防止重放、假冒和拒绝服务等攻击,具有低开销、可扩展性强、支持节点内部处理和被动加入等特点。

 


  
上一篇:论C8051F005单片机的比例电磁铁控制技术
下一篇:测量压电式微压传感器灵敏度的新方法

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料