一种由接收方发起的安全的MAC协议的制作方法

文档序号:23988997发布日期:2021-02-20 12:51阅读:98来源:国知局
一种由接收方发起的安全的mac协议
技术领域
[0001]
本发明属于水下无线传感器网络通信技术领域,涉及一种安全的mac协议。


背景技术:

[0002]
水下无线传感器网络在海洋资源探测、海洋环境检测、灾害预警、海岸线保护等方面应用越来越广泛,由于水下无线传感器网络工作在环境更为恶劣的水下,这给水下无线传感器网络的设计带来了大量的困难,特别是给mac协议的设计带来了艰巨的挑战。水声信道是一种开放性信道,因此水下无线传感器网络容易受到各种类型的攻击,没有有效的措施,水下无线传感器网络的安全就无法得到保证。
[0003]
传统的mac协议可以大致分为两大类:基于竞争的mac协议和基于调度的mac协议。在具有握手机制的基于竞争的mac协议中,当存在多个节点竞争获取信道时,竞争阶段可能会持续很长时间。许多现有的基于竞争的mac协议只允许竞争节点中的一个访问信道,从而降低了信道的效率。fdma、cdma、tdma是三种最典型的基于调度的mac协议。在tdma等基于调度的mac协议中,由于传播时延较长,时隙很长,当这些时隙分配给没有数据包传输的节点时,可能会浪费一些时隙,在基于调度的mac协议中,由于水下无线传感器网络传输时延长、传输速率低,分组传输时间长,信道效率低。因此,基于调度的mac协议应该考虑某些节点没有数据包可供传输的事实。由于水下节点的自身限制和所处的水下环境的恶劣性,水下无线传感器网络面临着更为严重的安全威胁。现有的安全通信技术主要包括密码技术、身份认证技术等,现在大部分关于水下无线传感器网络的研究都是以提高网络吞吐量、节省能耗、延长网络生存周期为出发点,没有考虑潜在的安全问题,在现实应用中存在大量的安全隐患。因此设计了一种由接收方发起的安全的mac协议。
[0004]


技术实现要素:

[0005]
为了提高水下无线传感器网络的信道利用率、吞吐量以及通信的安全性,本发明提供了一种由接收方发起的安全的mac协议,接收方根据与发送方的距离信息和一次传输过程中数据包数量信息调度发送方的传输时刻,根据上述已有的调度进行节点间id身份信息交互,基于身份的密钥分发,身份验证,用于数据的加密和验证数据来源的合法性。技术方案如下:一种由接收方发起的安全的mac协议的设计,包括下列步骤:(1)建立系统模型:在某一海域,一共有n个群集成员节点和一个群集头节点,群集成员节点到群集头节点的距离为单跳距离,节点在部署之前,每个节点都被分配唯一的id和其它身份信息,每个节点都被分配唯一的主密钥s用于网络初始化阶段的安全通信(2)将n个群集成员节点按与群集头节点的传播时延从大到小的顺序排序,并为每个群集头节点标号:t1≥t2≥... ≥t
n
其中下标为成员按时延大小的编号。5个阶段分别使用5类报文config、rts、order、data、ack。config、order、ack这三类控制包是由群集头节点广播
到群集中的,不需要进行调度,rts、data两类报文是群集成员节点向群集头节点发送的报文,需要群集头节点的调度(3)根据上述已有的调度进行节点间id身份信息交互,基于身份的密钥分发,身份验证,用于验证数据来源的合法性。
[0006]
本发明提供了一种由接收方发起的安全的mac协议,通过发送方的合理调度和安全因素的引入,提高了网络的吞吐量和信道利用率的同时还提高了通信的安全性。
[0007]
具体实施方案
[0008]
本发明提供了一种由接收方发起的安全的mac协议,接收方根据与发送方的距离信息和一次传输过程中数据包数量信息调度发送方的传输时刻,根据上述已有的调度进行节点间id身份信息交互,基于身份的密钥分发,身份验证,用于数据的加密和验证数据来源的合法性,提升了网络的通信性能和安全性。
[0009]
提出的安全mac协议是针对基于集群的单跳水无线传感器网络通信场景,即节点随机部署在某一海域中,网络中的一个节点被选为主节点,其它节点称为从节点,从节点与主节点之间的距离为单跳距离。集群被部署在需要探测的区域,当一个集群无法覆盖全部区域时,则使用多个集群去探测需要探测的区域。在单个集群中,从节点收集信息,并将收集的信息传输给主节点,数据在主节点进行处理融合,主节点再将处理过的数据通过链路或者水声信道传输到水面基站,然后基站通过射频方式将数据发送到用户。具体的操作流程针对单个集群。
[0010]
本发明的具体操作流程如下:(1)建立系统模型:在单个集群中,一共有n个群集成员节点和一个群集头节点,群集成员节点到群集头节点的距离为单跳距离,节点在部署之前,每个节点都被分配唯一的id和其它身份信息,每个节点都被分配唯一的主密钥s用于网络初始化阶段的安全通信。每个节点在部署之前预先设置基于身份的公钥加秘算法。
[0011]
(2)将n个群集成员节点按与群集头节点的传播时延从大到小的顺序排序,并为每个群集头节点标号:t1≥t2≥... ≥t
n
其中下标集成员按距离后的编号。5个阶段分别使用5类报文config、rts、order、data、ack。config、rts、order、ack为控制包,data为数据包。config、order、ack这三类控制包是由群集头节点广播到群集中的,不需要进行调度,rts、data两类报文是群集成员节点向群集头节点发送的报文,需要群集头节点的调度。具体调度步骤如下:a.群集头将等待发送时间表2t
1-2t
i
+

+(i-1)t+2(i-1)
ꢀ℮
,i=1,2, ... ,n加入到config控制包中,其中t为控制包的传输时延,

是为了平衡网络中因节点漂移而带来的时间误差,各个成员节点在完整的收到config包后根据收到config控制包的等待发送时间表,等待相应的时间后,各个成员节点开始向群集头节点发送rts控制包。
[0012]
b.群集头节点在收到最后一个群集成员节点n的rts控制包后,根据收到的rts控制包内的数据包数量的信息,计算得到各个成员节点的等待传输时间:成员节点1:

成员节点2:2t
1-2t2+

+l1t
data
+2

成员节点i:2t
1-2t
i
+

+(l1+ ...+l
i-1
) t
data +2(i-1)
ꢀ℮
,i=3,4, ... ,n并将等待传输时间表加入到order控制包中,其中t
data
为一个数据包的传输时延,l
i
为节点i需要传输的数据包数,群集头节点在成功接收最后一个rts控制包并等待

后开始广播order控制包,当群集成员节点成功收到order控制包后按照order控制包中的等待时间表等待相应的时间后,开始传输自己的数据包。
[0013]
c.群集头节点在完成了所有数据的接收后,向群集成员广播ack控制包告知数据包接收成功与否。在等待t1+2

时间后,一轮通信结束,可以开始下一轮的数据传输。
[0014]
(3)根据上述已有的调度进行节点间id身份信息交互,基于身份的密钥分发,身份验证,用于验证数据来源的合法性,具体步骤如下:a.群集头节点将自身的id信息id
cm
、传输时刻t0和根据上面介绍的调度方法计算得到等待时间利用预存的密钥s进行加密,并将其加入到config包中,在t0时刻将config控制包广播到群集,群集成员利用预存的主密钥s解密得到id
cm
、传输时刻t0等信息。各个成员节点利用群集头节点的id身份信息id
cm
并根据预先设置的基于身份的公钥加秘算法计算得到群集头基于身份的公钥pid
cm
,并将自身的id身份信息利用群集头基于身份的公钥pid
cm
进行加密后加入到rts控制包中,例如节点i的id身份信息为id
i
,并在等待时间过后向群集头发送rts控制包。群集头节点收到各个成员节点发送的rts控制包后,用自身基于身份的私钥prid
cm
进行解密,得到各个成员节点的id身份信息。
[0015]
b.群集头作为可信的pkg根据各个成员节点的id身份信息计算得到各个成员节点的公钥pid
i i=1,2, ...,n,并根据计算所得的公钥再次计算各个成员节点的私钥prid
i i=1,2, ...,n,并将私钥使用prid
cm
进行加密,将所得的密文加入到config控制包内,并广播到群集。成员节点收到config控制包后,使用群集头的公钥进行解密得到私钥信息,并只存储自己的私钥,并根据config控制包里的等待时间等待结束后回复一个ack确认包。
[0016]
c.群集头节点生成(id
cm
||sm),其中sm是群集头存储的用于验证身份的秘密消息,群集头将该消息使用私钥加密得到密文m=e(prid
cm
,id
cm
||sm),并将其加入到config控制包中广播到群集中。各个成员节点收到config控制包后,使用群集头的公钥pid
cm
进行解密得到(id
cm
||sm),成员节点使用单向哈希函数生成身份验证消息auth
i
=h(id
i
,prid
i
,pid
cm
)节点储存各自的身份验证消息,然后各个节点将(sm|| h(id
i
,prid
i
,pid
cm
)) 使用pid
cm
加密后加入到rts控制包中,在等待时间过后发送给群集头节点。群集头节点收到来自各个成员节点的rts控制包,解密得到各个成员节点的身份验证消息auth
i
=h(id
i
,prid
i
,pid
cm
),群集头节点存储各个节点的身份验证消息用于后续验证数据包来源的合法性。在群集成员节点向群集头节点发送数据data
i
时,节点利用哈希算法得到d
i
=h(auth
i
||data
i
),再将data
i
与d
i
=h(auth
i
||data
i
)一块加密后按调度方案发送给群集头节点。群集头节点收到后解密得到数据data
1i
,再利用储存的身份验证信息使用同样的哈希算法得到d
1i
=h(auth
i
||data
1i
),如果d
1i
=d
i
,则认为数据来源是合法的。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1