水声传感器网络基于深度信息的安全路由协议
2020-01-17彭春燕杜秀娟
彭春燕,杜秀娟
青海师范大学 计算机学院,西宁810008
1 引言
近些年,随着水声传感器网络逐步成为研究热点问题,安全威胁在水声传感器网络中日益凸显。在水下采用水声进行通信,水声信道具有高误码、长时延和窄带宽的特点。水下节点通常部署比较稀疏,大多数节点可以被动随水流或其他水下活动而移动,一些节点更容易发生硬件故障或因能量耗尽而消亡,网络拓扑通常更容易发生动态变化。另外,当水下通信涉及到商业应用、科学研究和军事通信等领域时,数据以及节点身份等敏感信息容易遭受非法访问,水声信道的开放共享性还使得水下通信更容易被窃听和干扰,需要研究人员进一步开发新的安全路由协议[1-4]。
2015 年,Zuba 等人主要针对水声网络中的拒绝服务攻击和对策进行了研究,利用加密机制,内隐认知(I-ACKS),地理限制和随机原理来实现其数据包自适应的分组传送[5]。2017年,Du等人提出了一种水声网络安全路由设计方案[6],无需在线可信第三方的短签名算法,在认证路由设置过程中使用了源节点与目的节点对,解决了密钥托管问题,实现了水下环境中安全匿名通信。同年,Bharamagoudra等人[7]将代理的思想应用于水声传感器网络的安全路由协议中,所提出的方案包括安全、路由、水下网关和AUV 四个代理模块,通过四个代理的协同工作有效抵制虫洞攻击。Dini 等人第一次为保护UASNs的完整性和机密性提供了一个由安全路由协议和一组加密原语(SRCP)组成的安全套件,被称为安全的泛洪协议(SeFLOOD),作者采用128位组密钥和数字签名机制利用椭圆曲线ECC-180 实现了对消息的加密保护[8]。Yan等人提出了一个用于水声传感器网络的标准地理路由协议,称为基于节点深度信息的路由协议,简称为DBR(Depth-Based Routing protocol)[9]。Zuba等人曾分析了在一个标准的DBR协议中由于所面临的一些安全漏洞而导致的一些极为严重的安全问题[10]。因此,在标准的路由协议中通过设置一些安全机制用来加强安全通信协议是非常有必要的。本文使用节点的深度信息在源路由的基础上增加了匿名安全路由通信部分从而实现了安全、实用、有效的水声匿名安全路由协议,文中所提出的通信安全框架可以提供身份保密、位置隐私和路由的匿名性,并保证了源节点和Sink节点之间端到端的机密性和完整性,其匿名算法主要结合了节点深度信息和双线性对的理论,理论上分析仅仅引入了有限的通信、计算开销以及较少的存储消耗,更适合用于资源有限的水声传感器网络中。
2 水声传感器网络DBR路由协议
2.1 DBR的协议分析
水声传感器网络的DBR路由协议利用多Sink节点的网络结构,只需要节点的深度信息进行通信,属于地理位置的路由协议,它主要是采用贪婪路由根据所有节点的位置信息来转发数据包,当中间节点接收到数据包时,总是试图将数据包转发到距离目的Sink节点最近的邻居节点。DBR 路由协议只关注每个节点的深度信息,使得恶意攻击者很容易伪造深度信息而冒充合法节点来转发数据包,该协议的通信体系结构如图1所示。
2.2 算法架构
图1 DBR的网络架构
本文所提出的安全协议采用基于节点深度信息的路由转发协议的原因主要是:(1)它不需要全维位置信息。(2)支持水下动态网络。(3)利用多个Sink 节点接收数据,路由算法简单易行,不会引入额外计算存储开销。匿名安全路由协议的实现主要分为以下两个阶段:一个是路由发现阶段,另一个是路由恢复阶段。在路由发现阶段,发送节点需要根据自己节点的深度、包含在数据包中前一个节点的深度和系统所设置的深度阈值来决定是否转发数据,如果符合条件,将数据分组传送到下一跳,否则就丢弃该数据包,以此类推下一跳节点继续进行判断转发,直到到达水面Sink节点。在路由恢复阶段,水面Sink节点将恢复数据包按照刚才的路径返回源节点,当恢复数据包的路径不止一条时,源节点会将用时最短最先到达的一条路径作为最佳路径,该过程如图2所示。
图2 路由发现和恢复阶段
考虑到水声传感器网络中节点能量和计算资源非常有限,加密算法不能太过复杂。因此,在选取加密算法时应尽可能选取复杂度较低的算法,尽可能地降低算法所增加的计算和存储开销,因此在设计中采用了双线性对的理论。
3 安全路由协议详细设计
3.1 双线性
双线性映射可以由Weil 配对或椭圆曲线Tate 配对构建[11-12]。假设G1和G2阶为q 的两个群。G1是一个加法群,G2是一个乘法群,设p 代表群G1的生成元,离散对数群G1和群G2是一个NP 困难问题,一个映射e从群G1到群G2:G1×G1→G2为双线性映射,如果满足以下性质:
(1)双线性:对于所有整数a,b,∀P,Q,R ∈G1,e(P,Q+R)= e(P,Q)e(P,R),e(P+Q,R)= e(P,R)e(Q,R),e(aP,bQ)=e(P,Q)ab。
(2)非退化性:∃P,Q ∈G1,e(P,Q)≠1。
(3)可计算性:∀P,Q ∈G1,可以在有效的多项式时间内完成计算。
3.2 符号说明
先介绍在新方案中用到的几种符号。表1 总结了所用到的符号及其对应的含义。
表1 符号说明
3.3 系统初始化
假设每个节点具有相同的传输范围,并且每个节点事先已经获得唯一的ID 值。此外,所有Sink 目的节点都具有相同的ID值。
首先,自主水下航行器或水面基站Sink节点在水声传感器网络中均可以进行密钥分发从而充当私钥产生中心(Private Key Generator,PKG),并且Galindo和Roman 等人已经提出了水声传感器网络中有效的非交互式密钥协议[13],同样,此方案也可以作为本文密钥协商方案。PKG 生成系统参数p,G1,G2,e:G1×G1→G2和一个哈希函数:H(·):{0,1}→G1。
PKG 生成一对系统公钥和私钥(Spub,Spri),Spub=Sprip,然后每个节点确认自己的节点身份信息IDi,并计算其公钥Pi=H(IDi),私钥Si=SpriPi。
3.4 安全协议
所提出的安全协议分为路由发现、路由恢复和数据传输三个阶段。
(1)路由发现
在发送数据包之前需要在源节点N0生成路由发现数据包,并将其广播到下一跳节点,使得通信节点之间预先建立至少一条路由。
①源节点N0先随机选择一个随机数Rand ,然后计算Kij=H(e(Si,Pj)),求出X=H(IDi)⊕H(e(Spub,Pj))。
②源节点N0通过计算M0=[Rreq_seq||RandPi||Hop||X||EKij(H(IDj))]生成路由发现数据包。这里的Rreq_seq是该路由发现包的唯一标识。 RandPi用于检测该节点是否已在请求阶段已经处理过该数据包。Hop 表示数据包传输过程中允许的最大跳数,主要用来限制数据包在传输过程中的生命周期。X 用于源节点N0的身份信息IDi的加密,EKij(H(IDj))表示用公钥Kij加密下一跳节点Nj的身份信息IDj。
③当中间节点接收到路由发现数据包时,节点先检查表达式hop-->0 是否成立,当判断hop--的值大于0 时,可以接收数据包并进行下一步验证;否则说明hop 值已经到达极限将立刻丢弃该数据包。在下一时刻,中间节点将检查路由缓冲表中Rreq_seq是否存在该路由项。如果Rreq_seq存在,说明该数据包已经在此节点收到并进行了转发,立即丢弃该数据包;否则,节点将会把结果RandPi存储在其缓冲区中。然后用公式(1)来计算H(e(p,Sj))并验证是否正确:
源节点的身份信息IDi可以由公式(2)计算得出:
所以,可由公式(3)进行验证Kji=Kij是否成立:
然后可以用EKij(H(IDj))解密目的节点的身份信息IDj,并继续向其他中间节点转发M0,然后将此路由项Rreq_seq添加节点IDj的缓存中。
(2)路由恢复
①目的节点Nn选择一个随机数Rrec_seq作为路由数据恢复包的唯一标识ID,并用公式(4)来计算当前此次通信的会话密钥SKji:
②会话密钥生成以后目的节点Nn开始构建路由恢复包。路由恢复包M1可以用公式(5)计算得出,转发过程中,目的节点Nn根据节点的深度信息值选择转发节点。
这里,Rrec_seq是路由恢复包的唯一标识ID,RandPn表示Sink节点Nn正在发送路由恢复包。
③当中间节点接收到路由恢复包时,如果是源节点,由公式(6)计算得出的会话密钥与目的节点共享的会话密钥是相同的;如果不相同,说明该节点是中间路由转发节点。
如果它是转发节点,当接收到路由恢复包时,它可以根据深度阈值dth继续广播到其他相邻节点,直到找到源节点为止。当找到源节点,若SKij=SKji,并且SKji等于公式(4)中计算出来的SKji,那么就表示此时可以在这两个节点之间传输数据。
(3)安全数据传输
当经过路由发现阶段和路由恢复阶段之后,在源节点N0和目的节点Nn之间就可以开始数据的安全传输。
①假设源节点N0向目的节点Nn要发送消息M ,先在本地路由表中查找根据Rrec_seq找到下一跳节点。在公开密钥Pi和会话密钥SKij确定之后,源节点N0可以根据公式(7)生成加密数据包并根据节点的深度信息在其允许的范围内进行传送到下一跳路由节点:
这里,Rdata_seq是数据包的唯一标识,ESKij(M)表示用源节点和目的节点之间的会话密钥的加密结果。
②当节点接收到该包时,首先检查RandPi节点是否在路由表中,然后使用M′=DSKij(ESKij(M))解密M′和计算RandPi,如果计算得出的RandPi等于在缓冲区中的RandPi,则它是目的节点,会话密钥SKij可用于解密C 从而获取数据M 。如果是中间节点,则路由数据包将继续按照路由条目找到通信中的下一跳节点即可。
4 性能分析及实验仿真
4.1 安全性分析
如果一个节点泄漏了通信的此次会话密钥SKij,但可以保证之前用该会话密钥进行的通信是安全的;另外,当以前从源节点Ni到节点Nj通信会话密钥SKij被泄漏了,以后所使用的会话密钥SKij′ 仍然安全。当数据包经历了路由发现过程和路由恢复过程后,在源节点N0和目的Sink 节点Nn之间会建立不止一条路由,并为此次通信建立会话密钥。从公式(6)可以看出,会话密钥取决于随机数rand、公钥Pi和传感器节点的私钥Si。因为分解问题被认为是一个数学问题,即使攻击者可以同时获得randP0和randPn,也无法计算会话密钥。计算SKij=SKji是基于两个通信节点的私钥和公钥,在每个节点上这些值是不相同的,因此,该路由协议能够保证通信的安全性。
假设在通信过程中,有攻击节点进行窃听时,截获了路由发现数据包M0=[Rreq_seq||RandPi||Hop||H(IDi)⊕H(e(Spub,Pj))||EKij(H(IDj))]时,由于不知道目的节点Nj的私钥与源节点和目的节点共享的密钥Kji,因而不能进行解密得到RandPi,也不能通过公式(6)得到此次的会话密钥,所以本方案也能有效抵抗敌手的窃听攻击。
4.2 能耗分析
在陆地无线传感器网络中有多种轻量级匿名路由协议,如Zhu 等人提出了一种移动Ad Hoc 网络匿名路由通信方案,称为ASR[14]。Seys 和Preneel 提出了一个名为ARM 匿名通信方案[15],它需要预共享会话密钥列表,因而这个方案需要更多的存储空间。Lu 等人提出了一种称为SAR的匿名路由协议[16],它可以从源节点向目的节点提供匿名通信,并提供了身份验证的密钥交换协议,由于计算的复杂性,这些现有的匿名机制不能很好地适合用于水声环境中。
如果采用大量的公钥计算,虽然保障了安全性,但会使加密算法消耗更高的能量和更多的计算时间。本文所提出的协议与其他匿名路由协议如ASR、ARM、SAR 相比,只执行了一次哈希操作,具有最低的计算复杂度,是一种较为高效节能的水下路由安全匿名协议。图3是与ASR、ARM和SAR总能耗的开销比较,由于考虑到水下环境通信特点,所设计的算法更加节能、更具时效性,协议的设计也尽可能减少了公开密钥操作的成本,且能耗最小。
图3 各协议能量消耗比较
4.3 复杂度分析
本文所提出的协议SDBR 与其他匿名路由协议如ASR、ARM、SAR 相比,用Th代表哈希操作所用的时间,Tasym定义为私钥加密时间,Tsym代表的是公共密钥加密的时间,双线性对的运算时间用Te表示,指数的运行时间用Texp表示,在表2中列出了所有不同协议的计算复杂度。从表2的结果可以看出SDBR在计算复杂度上有一定的优势。
表2 复杂度比较
4.4 实验仿真
实验采用NS2仿真平台,利用其水声传感器网络的仿真实验的扩展包Aqua-Sim-1.0对算法的时延、能耗等方面做出评估。在NS2仿真实验中,传感器节点随机布置于长宽高为5 000 m 的3-D 区域中,先后进行了5 个点、9 个点、19 个点、25 个点、28 个点的不同数量节点的测试。每个包的大小设置为50 Byte,平均每3 s发一个包,带宽为5 Kb/s,节点的最大传输范围R 均为1 500 m,传输节点之间的数据流采用TCP/CBR 传输发生器产生,MAC层协议采用Slotted FAMA[17],这些参数的选择是基于UWM1000[18]真实水下Modem设备的参数设置,发送功耗为2 W,接收功率是0.75 W,闲置功率设置为0.01 W。每次实验时长为240 s,当节点数从5 增加到30 时,测试了深度阈值设置为0、20、40 m 时的总能耗、平均端到端的时延和数据包的交付率。在仿真中,Sink节点数量和DBR仿真中相等都是5个,从图4中可以观察到当深度阈值设置越大时,参与转发数据包的节点越少,总能耗会稍微降低;然而从图5 中也发现相同参数设置下,由于参与转发数据包的有效节点的减少,数据交付率也随之下降。
图4 能耗比较
图5 数据包交付率比较
从图6 中可以看出,随着深度阈值的增加,端到端时延会有少量的下降,这是因为深度阈值的增加使得选择合适节点的范围缩小,相互干扰更少,更容易找到符合条件的下一跳节点,平均时延略微降低。从图5中还可以看出,随着节点数量的增加,当深度阈值设置为20 m时,平均时延基本维持在2 s左右。
图6 平均时延比较
5 结束语
本文基于水声传感器网络节点的深度信息利用双线性对提出了一种安全的新型匿名路由协议,实现了节点身份信息、节点位置和路由信息的保密,并能满足匿名路由的安全要求,防止敌手对敏感信息的窃取。本文所采用的是对称密钥机制,降低了系统的计算复杂度和带宽消耗。
仿真结果表明,与其他轻量级的匿名路由协议比较该协议所需能耗更小,计算复杂度更低,因而更适合水声传感器网络的安全通信。