发明名称 一种面向WSN中Sybil攻击的检测方法
摘要 当WSN中突然出现新增节点(可能是单一Sybil攻击者伪造的多个虚假节点,也可能是真实的一个或多个WSN合法节点),以不同身份ID为基本凭据请求加入该WSN时,为预防Sybil攻击有必要对新增节点的合法性进行检测。基于此,本发明提供一种面向WSN的Sybil攻击检测方法,属于主动式检测方法。本方法中,邻近新增节点的WSN合法节点,将在接收到这些“新邻居”节点发出的广播请求后,启动BreakSybil检测算法,即将所有新增节点列为嫌疑节点,以其节点身份ID为序,逐一检测节点合法性,防止发生Sybil攻击。本方法能够有效防范“一个节点多个身份”类型的Sybil攻击。
申请公布号 CN105636053A 申请公布日期 2016.06.01
申请号 CN201610080997.5 申请日期 2016.02.04
申请人 中国人民解放军装甲兵工程学院 发明人 李皓;武卉明;毕建权;刘海燕;薛廷梅;屈强;王璇;常成;苏彦;蔡红柳;邢萌
分类号 H04W12/12(2009.01)I;H04W84/18(2009.01)I;H04L29/06(2006.01)I 主分类号 H04W12/12(2009.01)I
代理机构 常州佰业腾飞专利代理事务所(普通合伙) 32231 代理人 黄杭飞
主权项 一种面向WSN中Sybil攻击的检测方法,任何合法性未知的新增节点s试图接入WSN时,需要在WSN中广播其身份,声明其身份为s_id<sub>i</sub>,且i=1,2,…,sn,sn≥1,将WSN中新增的所有身份标识记为集合SID,SID的模记为sn;而将在WSN中收到身份广播信息的所有合法节点记为集合V,<img file="FDA0000922684820000011.GIF" wi="177" he="63" />V的模记为vn;v<sub>j</sub>为集合V中元素,j=1,2,…,vm,vm≥1,则v<sub>j</sub>将主动启动所述检测方法,其特征在于,所述检测方法包括以下步骤:步骤1,v<sub>j</sub>先在其内部存储器中建立一个Sybil检测记录表,利用所述Sybil检测记录表记录v<sub>j</sub>接收到的所有身份信息s_id<sub>i</sub>及其对应的检测次数、同步状态和检测结果,并将Sybil检测记录表发送至基站base,基站base对接收的所有Sybil检测记录表进行合并处理,形成全局检测记录表;然后v<sub>j</sub>在其当前工作周期结束后发出广播消息Msg_HelloBreak;其中,检测次数利用内部重发计数器记数count,且检测次数初始为0即置内部重发计数器count=0;同步状态为v<sub>j</sub>与基站base之间是否为同步状态,0表示未与基站base完成同步,1表示已于基站完成同步;检测结果为v<sub>j</sub>对收到的s_id<sub>i</sub>的检测结果,0表示s_id<sub>i</sub>对应的新增节点为合法节点,1表示s_id<sub>i</sub>对应的新增节点为Sybil恶意节点;步骤2.将接收到Msg_HelloBreak的节点记为接收节点,所述接收节点包括:新增节点s、N中除v<sub>j</sub>以外其他的合法节点和基站base;接收节点比较Msg_HelloBreak中s_id<sub>i</sub>的ID字段值与节点自身的ID字段值是否相等,并根据比较结果进行响应:①若相等,则接收节点缓存Msg_HelloBreak消息,并在其当前工作周期中产生中断,然后以最大发生功率广播消息Msg_JustBreak,之后进入休眠状态,休眠时长根据Msg_HelloBreak中的BreakTime值设定,BreakTime时长结束后该接收节点自动唤醒,但不向外发送任何数据,需要等待基站唤醒指令Msg_JustWake才能进入工作状态;②若不相等,或者接收节点为基站base,则接收节点缓存Msg_HelloBreak消息后,继续其自身工作状态,不再执行所述检测方法;步骤3.v<sub>j</sub>和基站base共同监听是否有Msg_JustBreak响应消息且其源节点ID为s_id<sub>i</sub>,并根据监听结果进行相应:①如果v<sub>j</sub>在收到Msg_HelloBreak后的三个工作周期内都未监听到Msg_JustBreak响应消息且v<sub>j</sub>内count&lt;3,则v<sub>j</sub>重发Msg_HelloBreak,并置内部重发计数器的计数加一;如果v<sub>j</sub>在收到Msg_HelloBreak后的三个工作周期内都未监听到Msg_JustBreak响应消息且count≥3,则v<sub>j</sub>认为新增节点为非法节点,并将向基站base发送Msg_SybilAlarm消息,同时v<sub>j</sub>将Sybil检测记录表中该s_id<sub>i</sub>对应的新增节点标记为Sybil恶意节点,基站base将全局检测记录表中该s_id<sub>i</sub>对应的新增节点标记为Sybil恶意节点,并由基站base向全网广播该状态,检测结束;②如果v<sub>j</sub>或基站base收到Msg_JustBreak且其源节点ID为s_ID<sub>i</sub>,但Msg_JustBreak消息数&gt;1且各Msg_JustBreak中的随机数RandNum不相等,说明当前WSN中有多个不同的物理节点均使用s_id<sub>i</sub>作为其身份标识,则收到Msg_JustBreak的v<sub>j</sub>将Sybil检测记录表中该s_id<sub>i</sub>对应的新增节点标记为Sybil恶意节点,然后v<sub>j</sub>和基站base将启动同步过程,将基站base的全局检测记录表中该s_id<sub>i</sub>对应的新增节点标记为Sybil恶意节点;并由基站base向全网广播该状态,检测结束;或收到Msg_JustBreak的基站base将全局检测记录表中该s_id<sub>i</sub>对应的新增节点标记为Sybil恶意节点,然后v<sub>j</sub>和基站base将启动同步过程,将v<sub>j</sub>的Sybil检测记录表中该s_id<sub>i</sub>对应的新增节点标记为Sybil恶意节点;并由基站base向全网广播该状态,检测结束;③如果v<sub>j</sub>或基站base收到了Msg_JustBreak且其源节点ID为s_id<sub>i</sub>,但Msg_JustBreak消息数=1,则v<sub>j</sub>和基站base将启动同步过程,在Sybil检测记录表和全局检测记录表中找到s_id<sub>i</sub>对应记录并将其同步标记修改为1,并由基站base向全网广播该状态,之后执行步骤4;步骤4.基站base广播Msg_CheckBreak消息,要求所有收到Msg_HelloBreak消息且处于唤醒状态的合法节点在接下来的BreakTime时间内执行CheckBreak动作,即监听是否仍然能够接收到来自s_id<sub>i</sub>的任何消息,若存在合法节点接收到s_id<sub>i</sub>的任何消息,该合法节点则向基站base发送SybilAlarm消息,则v<sub>j</sub>和基站base将启动同步过程,在Sybil检测记录表和全局检测记录表中找到s_id<sub>i</sub>对应记录并将其检测结果标记为Sybil恶意节点,并由基站base向全网广播该状态,检测结束;若不存在合法节点接收到s_id<sub>i</sub>的任何消息,则说明s_id<sub>i</sub>对应的新增节点处于休眠中,并继续执行步骤5;步骤5.判断身份为s_id<sub>i</sub>的集合的膜是否大于1,若大于1,,说明新增节点s使用了两个以上的身份ID,属于Sybil欺骗行为,那么执行CheckBreak的任一合法节点将向基站base发送SybilAlarm消息,基站base将在其全局检测记录表中找到s_id<sub>i</sub>对应记录并将其检测结果标记为Sybil恶意节点,同时向全网广播该状态,检测结束;若等于1,则继续执行步骤6;步骤6.基站base发出Msg_JustWake广播消息,唤醒身份为s_id<sub>i</sub>的新增节点并探测其是否进入工作状态,若s_id<sub>i</sub>未按要求进入工作状态,基站base将在其全局检测记录表中找到s_id<sub>i</sub>对应记录并将其检测结果标记为Sybil恶意节点,同时向全网广播该状态,检测结束;若s_id<sub>i</sub>按要求进入工作状态,则执行步骤7;步骤7.基站base将在其全局检测记录表中找到s_id<sub>i</sub>对应记录并将其检测结果标记为合法节点,同时向全网广播该状态;然后执行步骤8;步骤8.判断是否所有的身份信息s_id<sub>i</sub>均检测完毕,如果s_id<sub>i</sub>当前下标i&lt;sn,说明还有未检测的新增节点身份ID,则令i=i+1,然后执行步骤1至步骤7,如果s_id<sub>i</sub>当前下标i=sn,则检测结束。
地址 100072 北京市丰台区杜家坎21号院