分簇WSN基于有效负载握手的远程身份验证
2020-11-03严星
严 星
(新疆财经大学 信息管理学院,新疆 乌鲁木齐 830012)
0 引 言
由于电池电量、存储空间、数据速率和带宽等限制,有必须对无线传感器网络中资源受限的节点有效利用,从而提高无线传感器网络的整体性能[1]。此外,无线传感器网络节点易受物理篡改及其它远程攻击[2,3],所以安全高效的网络协议是无线传感器网络的关键组成部分。
近年来,许多研究人员对无线传感器网络协议的安全性均进行了研究。文献[4]提出的低功耗自适应集簇分层型协议(low energy adaptive clustering hierarchical pro-tocol, LEACH)是一种开创性的协议,该协议将整个传感器场划分为较小的地理区域——簇,但该协议采用概率性选择簇头的方法存在潜在风险,即在后续轮次的簇头选举中一些低能量的节点有很大可能会被选举为簇头。文献[5]提出一种sec-LEACH协议,该协议先使用随机密钥预分配方法生成密钥池,然后向每个节点分配这些密钥的子集,同时结合分簇路由协议以及数据汇聚协议,提高了基于簇的分层式无线传感器网络协议的安全性和效率。文献[6]提出一种基于LEACH协议的改进簇间多跳路由协议(imp-LEACH),该协议通过引入能量因子和距离因子来修正LEACH协议的阈值函数,以在簇头之间形成一个优化路径。
所给协议也是一种LEACH协议,是一种基于有效负载握手的双向身份验证协议(ah-LEACH),使用了集中式基于簇的分层无线传感器网络。通过选举出最优百分比的簇头,通过最小化节点的能量消耗实现网络负载平衡。每个被选举出的簇头使用4次握手消息,其中握手消息使用高级加密标准(AES)进行加密。所给协议与现有经典协议相比,在安全性、抵御各种攻击、握手持续时间等方面较优。
1 基于令牌的簇头选举
采用的网络模型由随机部署的异构传感器节点[7]组成。网络中共有100个普通节点和5个高能量节点。为减低操作成本,每个普通节点的初始能量为1 J,每个高能量节点的初始能量为5 J。所有节点在一个100m×100m的地理区域中。
在网络部署后,向每个普通节点分配一个令牌和一个预共享密钥λi。 令牌被用于基站和簇头之间提名包和确认消息的安全交换,而λi用于网络内邻近节点与其可能簇头之间的双向身份验证。
起始时,每个普通节点i创建一个控制包并将其发送到距离最近的高能量节点。每个普通节点i创建一个控制包并将其发送到距离最近的高能量节点。该控制包中包含节点i的剩余能量Ei以及标识IDi信息。通过下式计算出距离节点i最近的高能量节点的位置
(1)
每个高能量节点在其邻近节点中收集这些数据包,并检索数据包中的Ei和IDi, 将单个包含了这些数值的控制包向一个基站广播。随后,高能量节点进入睡眠模式,并将在下一轮开始时唤醒,启动上文所述的任务。在接收后,基站从每个控制包中对Ei和IDi进行检索。计算平均能量阈值
(2)
对于总数为N个节点的网络,所给ah-LEACH协议的kbest为5%。由于簇头的能量会由于资源密集型的任务迅速耗尽,所以若kbest的数值过小,将会使得基于簇的分层式网络的性能下降,若kbest的数值过大,则将会因较低的数据聚合率和数据融合率而造成基于簇的分层式网络效率较低[8]。
在每个轮次中,基站向当选的簇头广播候选包。候选包主要包括簇头的标识IDcls和邻近节点的标识IDNB, 它们均在候选包的有效负载内传输。为保证IDcls和IDNB的传输安全性,每个候选包的报头中均有一个16位的令牌。基站生成一个与当选簇头拥有的令牌相似的令牌,即对每个簇头生成一个令牌。接收后,每个簇头(用S表示)检查候选包中附加的令牌。若该令牌与簇头拥有的令牌相匹配,则簇头检索其邻近节点的附加标识IDadd。 每个簇头必须确认收到了一个候选包。簇头创建一个确认消息(ACK),然后将其令牌附加到ACK上发送到基站。攻击者可能拦截一个或多个候选包,但其无法重新生成检索附加标识所需的令牌。
2 所给协议设计
在成功接收到广播消息后,每个邻近节点就发起簇的形成。所给ah-LEACH协议采用128位的AES加密算法完成身份验证。这个加密模式要求的资源较少,对于节点生成的数据极为有利,而且能够让节点在受到攻击前有足够的时间对数据进行卸载,缺点是需要复杂的硬件和软件平台。
为满足上述要求,所给协议使用基于有效负载的轻量级双向身份验证技术,实现在每条信息的有效负载内进行身份验证。如图1所示,每个邻近节点与一个服务器节点交换多个握手信息。在4条超轻量级的握手消息中完成身份验证。一旦得到认证,每个邻近节点被允许发送数据到相应的簇头。通过以下4个阶段完成身份验证:①会话发起;②服务器节点质询;③客户端节点响应和质询;④服务器节点响应。
在会话发起阶段,每个邻近节点i创建出一个包含了IDi和IDs的加入请求消息。IDi表示源节点的标识,IDs为簇头S的目标节点标识。源节点和目标节点的标识均为8位。无论是合法节点还是恶意节点,每个邻近节点最多可以与服务器节点协商4次会话发起请求。IDi在有效负载内传输,IDs在每个加入请求消息的报头内传输。有效负载之后是一个可选的帧校验序列[9](frame check sequence, FCS),作为尾部附加,用于错误检测和校正。
图1 所给协议的双向身份验证
在服务器质询阶段,每个服务器节点在接收到的加入请求消息的报头中检索IDs,在该消息的有效负载中检索IDi。 若接收到的IDs与服务器节点的标识相匹配,则表明这个加入请求消息正是传送给该服务器节点的。若找不到匹配,则加入请求消息将被丢弃。为了进行会话协商,IDi必须与提供给该服务器节点的标识池内的一个标识相匹配,而只有在IDi∈IDadd的情况下,才会出现匹配。每个服务器节点从有效负载中检索IDi, 并搜索一个匹配的预共享密钥λi。 为了身份验证的目的,在IDadd内的每个标识IDi都与一个λi相关联。若发现匹配,服务器节点将使用AES算法,发送加密后的有效负载作为回应。为创建一条质询消息,服务器节点创建一个128位的伪随机临时数ηserve和一个128位的潜在公共会话密钥μkey。 临时数nonce是在整个加密通信过程中仅被客户端节点或服务器节点使用一次的一个临时数字。使用μkey和ηserve生成一个加密的有效负载。首先,使用在λi和μkey上执行异或运算,如式(3)所示
ψsyn=λi⊕μkey
(3)
然后,128位的ψsyn被附加于ηserve, 并采用λi加密,如式(4)所示,生成一个256位的有效负载。该有效负载为γser-load, 被作为质询发送到客户端节点
γser-load={λi,(ψsyn|ηserve)}AES128
(4)
在客户端节点响应和质询阶段,客户端节点需要对加密的有效负载γser-load解密,以检索潜在的会话密钥μkey。 若客户端节点成功解密,其将得到正确的ηserve和μkey。 根据物联网威胁模型[10],入侵者仅能对ηserve和μkey进行窃听,但不能窃听λi。 客户端节点使用自己的λi对有效负载解码,该客户端节点解码成功后即完成了对自己的身份验证。由于双向身份验证要求两方都要得到验证,所以服务器节点也需要对自己进行身份验证。与服务器节点相似,客户端节点生成一个新的加密有效负载,先在ηserve和λi上执行异或运算,如式(5)所示
ψsyn=ηserve⊕λi
(5)
然后,将128位的ψsyn被附加于ηserve, 使用μkey进行加密以生成一个有效负载,如式(6)所示。将得到的256位加密有效负载γser-load作为一个质询发送到服务器节点
γser-load={μkey,(ψsyn|ηcli)}AES128
(6)
最后,在服务器节点响应阶段,服务器节点对客户端节点的质询,即对加密有效负载γcli-load进行解密,并在其中寻找ηserve。 如果存在,则对服务器节点来说,该客户端节点已经成功完成了身份验证。如式(7)所示,服务器节点检索ηserve, 然后将ηserve附加到μkey上并以λi进行加密,以创建出一个自己的加密有效负载γser-load。 接着,将这个256位加密的有效负载γser-load作为对客户端节点质询的响应传送回客户端节点
γser-load={λi,(ηcli|μkey)}AES128
(7)
此时正在进行的会话从会话协商阶段变为对服务器节点的验证阶段,这是因为客户端节点i已经成功通过了身份验证,有资格将数据发送到服务器节点。但是客户端节点还需要对服务器节点的真实性进行验证。其对服务器节点发送的有效负载γser-load解密,并在其中寻找ηcli。 最终客户端节点和服务器节点都完成了双向身份验证,并在一个公用会话密钥μkey上进行数据包交换。在这个阶段,节点i和服务器节点相互进行身份验证。服务器节点为其簇内每个成员节点i创建一个排程表,并为簇内向每个成员节点分配TDMA时隙[11],以实现无争用通信,并对每个节点的占空比进行排程。
一旦客户端节点和服务器节点都通过了身份验证,则完成了簇建立阶段,并启动稳态阶段。在稳态阶段,每个簇头从其成员节点中采集数据,对数据进行聚合,并发送到传感器场内部或外部的一个基站。图2给出了所给协议完整的流程。
图2 所给协议的流程
3 仿真性能分析
下面将对所给协议进行仿真性能分析。仿真测试采用Matlab2011a平台。网络模型是将100个普通节点和5个高能量节点部署在一个100m×100m的区域内。
3.1 安全性分析
为了进行安全性分析,首先确保节点到节点的通信数据是真实、保密和新鲜[12]。表1给出了各方法在安全性上的比较。
表1 安全性分析
ah-LEACH使用两步程序进行身份验证。而imp-LEACH没有进行任何身份验证,仅将网络划分为簇。sec-LEACH使用消息验证码(MAC码)进行身份验证,利用密钥池对每条消息使用密钥进行加密。在成功解密消息后,接收方即可知道该消息是来自于传感器场中的一个合法节点。
ah-LEACH使用基于有效负载的方法确保消息的保密性。imp-LEACH未提供数据的保密性,而sec-LEACH同样采用MAC保密数据。ah-LEACH和sec-LEACH方案都使用临时数nonce来确保数据的新鲜性。因此,所给ah-LEACH协议更优。
3.2 抵御各种攻击的鲁棒性
表2给出了ah-LEACH协议抵御各种攻击和恶意活动的鲁棒性。所给ah-LEACH协议通过伪随机数Ri生成ηcli和ηserve, 并附加到一个定时器Ti上。Ti和Ri的结合确保了攻击者难以对过期的数据包进行重放。Ri的伪随机性质确保了ηcli和ηserve是不可重现的,而定时器Ti则确保了ηcli和ηserve的不可预测性。sec-LEACH使用散列函数H和密钥环kr来抵御重放攻击,而imp-LEACH没有提供任何抵御攻击的防护手段。
表2 抵御网络攻击的鲁棒性
在重放攻击之外,ah-LEACH在抵御资源耗竭攻击和DoS(拒绝服务)攻击时也具备较好的鲁棒性。所给 ah-LEACH 协议用λi对来自任何一个邻近节点的会话发起的请求进行认证。λi不存在于服务器表中,这确保了任何未验证的邻近节点不能与某个已知服务器节点建立一个或多个连接。因此,服务器的资源不会受到损耗,节点具有防纂改性。相反,sec-LEACH和imp-LEACH没有提供任何应对资源耗竭攻击和Sybil攻击的防御手段。
3.3 握手持续时间
表3给出了对于各种不同的簇规模下,各协议的平均握手持续时间比较。对于各种不同簇的规模,sec-LEACH的平均握手时间(ms)远高于ah-LEACH。这是由于sec-LEACH使用LEACH协议的随机分布式的底层簇分层方法,使用一个概率阈值进行簇头选举。但由于没有邻近节点的局部知识,簇头需要耗费更长的时间对其邻近节点进行身份验证。在ah-LEACH中,簇头则使用其邻近节点的局部知识来完成身份验证。每个簇头只需要在自己的表中查找,即可验证一个会话发起请求是否有效。λi的存在使得每个簇头可以进入一个4步握手协商过程,以进行双向身份验证。
表3 握手持续时间/ms
3.4 抵御各种攻击的鲁棒性
ah-LEACH协议使用的簇形成的集中式方法与imp-LEACH协议的有些类似。但是imp-LEACH没有提供安全的数据传输方法,易于受到很多恶意攻击。图3给出了 ah-LEACH 协议与imp-LEACH在平均能量消耗方面的比较。
图3 平均能量消耗
从图3可看出,ah-LEACH在大部分轮次中的平均能量消耗都略高于imp-LEACH。但ah-LEACH在能量消耗方面的增加是可以忽略的,因为其提供了进行身份验证和数据保护的一整套操作。但imp-LEACH没有提供安全特性,且簇头的选举过程过于复杂。imp-LEACH使用模拟退火算法进行簇头选举并形成簇,这个簇形成和簇头选举方法会造成过高的延时和较多的能量消耗。ah-LEACH则使用的簇头选举方法,消耗的能量较少,同时能抵御各种恶意攻击。
3.5 网络平均吞吐量
网络平均吞吐量一般定义为:在基站处成功接收的数据包总数与所发送数据包总数的比率。图4给出了ah-LEACH协议的网络平均吞吐量。如果不进行身份验证,传送到基站的数据包数量将会高得多,而进行身份验证则会造成数据包处理延迟、数据包丢失、排队延迟、增加重传次数等。ah-LEACH在簇头选举阶段和簇形成的过程中,都提供了身份验证。即使ah-LEACH协议进行两级身份验证,但是在大多数的轮次中数据包成功接收的百分比依然高得多。虽然ah-LEACH协议提供了一个具有鲁棒性和防御性的底层网络解决方法,但部署区域的性质和通信链路的质量在一定程度上也造成了数据包丢失和服务质量降低。
图4 平均网络吞吐量
4 结束语
通过基于簇的分层式无线传感器网络给出了一个轻量级的双向身份验证协议,所给协议利用基于簇的分层式体系结构的高能效性实现能耗最小化,并利用双向身份验证方案的轻量级特性确保了安全性。所给协议在抵御攻击的鲁棒性、握手持续时间、平均能量消耗和等网络平均吞吐量等多个性能指标上对ah-LEACH和现有其它经典协议进行了比较。实验结果表明,ah-LEACH能够很好地抵御重放、拒绝服务、Sybil和资源耗竭等多种攻击,其平均握手持续时间比sec-LEACH要短得多,能够以sec-LEACH所需时间大约一半的时间建立起通过了身份验证会话。