发明名称 在线社会网络中Sybil攻击检测方法
摘要 本发明公开了一种在线社会网络中Sybil攻击检测方法,目的是提供一种在社会网络中Sybil攻击检测方法。技术方案是选取某一节点为验证节点,以成员关系为依据进行路径通告,构建到达验证节点的关系路径;通告过程中采用基于路径k相似的路径选择方法剔除冗余路径和共享路径;通告结束后将所有可达路径聚集到验证节点进行可信性检验,以防止私造或篡改路径;最终以每个节点可信路径的数量作为验证标准,由验证节点对其它节点是否为Sybil节点进行验证。本发明利用每个节点的可达路径数量判断该节点是否为Sybil节点,真实还原并利用了节点关系的差异性,准确性高、误报率低,且无需依靠关键基础设施或其它辅助设备的支持,具有轻量级、易部署的优势。
申请公布号 CN103812864A 申请公布日期 2014.05.21
申请号 CN201410037921.5 申请日期 2014.01.26
申请人 中国人民解放军国防科学技术大学 发明人 朱培栋;陈侃;郑倩冰;陈亮;曹华阳;胡罡;任浩;曹介南;蔡开裕;邵成成
分类号 H04L29/06(2006.01)I;H04L12/26(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 国防科技大学专利服务中心 43202 代理人 郭敏
主权项 1.一种在线社会网络中Sybil攻击检测方法,其特征在于包括以下步骤:第一步,选取某一节点为验证节点,标记为v,任意节点都可以作为验证节点,除验证节点之外的所有节点都为待验证节点,各节点进行初始化操作,方法是:1.1所有节点定义自己的加解密算法;1.2验证节点创建关系表,并定义任意的字符串T<sub>0</sub>作为初始化的标识;所有待验证节点创建关系表和路径表;其中关系表存储已经与自己建立起可信关系的其他节点,表中每一项都是一个节点标识;路径表用来存储到达验证节点的可达路径,表中每一项是一个二元组,表示为&lt;P<sub>i</sub>,Sign(P<sub>i</sub>)&gt;,1≤i≤M,其中M为网络中总路径数,P<sub>i</sub>表示第i条路径,Sgin(P<sub>i</sub>)表示Pi的标识,每一条路径都是一个有序的节点序列,每一个标识是一个加密后的字符串,关系表由各节点根据历史经验自己定义,路径表初始为空;第二步,由验证节点v对其它节点进行可达路径通告,方法是:2.1v发送通告信息M<sub>0</sub>给v的关系表中所有成员,M<sub>0</sub>的内容包括到达v的可达路径、可达路径的标识、可接受的最大差异系数K以及可接受的最大路径长度L,以v的加密算法对T<sub>0</sub>加密作为路径{v}的标识;可接受的最大差异系数K和可接受的最长路径长度L都由验证节点自己确定。2.2接收到了通告信息M<sub>0</sub>的节点u<sub>j</sub>首先对M<sub>0</sub>中路径的有效性进行检查,设M<sub>0</sub>中路径为P,标识为Sign(P),如果P相对于u<sub>j</sub>是有效的,执行步骤2.3,否则转步骤2.5;2.3u<sub>j</sub>将P添加到自己的路径表中,并删除路径表中与P的差异系数大于K且比P长的其它路径;2.4u<sub>j</sub>构造新的路径和标识:u<sub>j</sub>将自己添加到P的尾部构成新的路径P′,若P={u<sub>1</sub>,u<sub>2</sub>...u<sub>l</sub>},则P′={u<sub>1</sub>,u<sub>2</sub>...u<sub>l</sub>,u<sub>j</sub>},1≤l≤N,N为网络中节点个数,并使用u<sub>j</sub>自己的加密算法Crypt<sub>uj</sub>()对Sign(P)加密,构成新的路径标识,即Sogn(P′)=Crypt<sub>uj</sub>(Sign(P));2.5u<sub>j</sub>发送新的通告信息M<sub>1</sub>:使用原通告信息M<sub>0</sub>中K和L的值,与新的路径P′和标识Sign(P′)一起构成新的通告信息M<sub>1</sub>并发送给u<sub>j</sub>关系列表中的成员,并发送通告提醒给v,转步骤2.6;通告提醒的内容为u<sub>j</sub>的节点标识u<sub>j</sub>;2.6如果u<sub>j</sub>接收到新的通告信息M<sub>1</sub>,将M<sub>0</sub>的内容更新为M<sub>1</sub>,转步骤2.2,否则转步骤2.7;2.7验证节点v根据网络规模定义提醒时间间隔,并初始化提醒计时器并开始计时;设置提醒时间间隔τ,如果在τ时间内接收到了通告提醒,则重置计时器为零并转步骤2.2;如果计时器超出提醒时间间隔且没有接收到任何通告提醒,则执行第三步;第三步,所有待验证节点发送包含可达路径的验证请求给验证节点v,使所有的可达路径聚集到验证节点v处,然后由验证节点v检查所有可达路径是否可信,方法是:3.1所有待验证节点采用步骤2.4的方法构造新的路径和标识,并将新的路径和标识发送给验证节点v;3.2接收到来自所有待验证节点的验证请求后,验证节点v对所有路径按照长度排序,并依次进行路径可信性验证,方法为:3.2.1验证节点v将接收到的所有路径按照长度排序,加入待验证表unverified_table中,unverified_table的数据结构与路径表相同,每一项都由路径和标识组成,区别是unverified_table是按照路径长度排序的;3.2.2从unverified_table中取出最短路径P<sub>s</sub>及其对应的标识Sign(P<sub>s</sub>),设P<sub>s</sub>={u<sub>1</sub>,u<sub>2</sub>...u<sub>t</sub>},2≤t≤N,首先验证P<sub>s</sub>是否可信,方法为:3.2.2.1如果u<sub>1</sub>为验证节点v,转步骤3.2.2.2,否则转步骤3.2.2.8;3.2.2.2如果P<sub>s</sub>的长度等于2,转步骤3.2.2.3;否则转步骤3.2.2.4;3.2.2.3如果u<sub>2</sub>存在于v的关系表中,由u<sub>2</sub>利用自己的解密算法<img file="FDA0000462578670000021.GIF" wi="227" he="77" />()对Sign(P<sub>s</sub>)解密,并令结果<maths num="0001"><![CDATA[<math><mrow><mi>Res</mi><mrow><mo>(</mo><msub><mi>P</mi><mi>s</mi></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>Decrypt</mi><msub><mi>u</mi><mn>2</mn></msub></msub><mrow><mo>(</mo><mi>Sign</mi><mrow><mo>(</mo><msub><mi>P</mi><mi>s</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>如果结果Res(P<sub>s</sub>)等于初始字符串T<sub>0</sub>,则验证成功,转3.2.2.7;否则验证失败转步骤3.2.2.8;如果u<sub>t</sub>不存在于v的关系表中,说明有人假冒路径,验证失败,转步骤3.2.2.8;3.2.2.4检查P<sub>s-1</sub>={u<sub>1</sub>,u<sub>2</sub>,...,u<sub>t-1</sub>}是否存在于verified_table中,如果不存在,验证失败转步骤3.2.2.8;否则进入步骤3.2.2.5;3.2.2.5将P<sub>s-1</sub>和Sign(P<sub>s</sub>)发送给P<sub>s</sub>的最末端节点u<sub>t</sub>;3.2.2.6u<sub>t</sub>首先检查P<sub>s-1</sub>={u<sub>1</sub>,u<sub>2</sub>...u<sub>t-1</sub>}是否在u<sub>t</sub>的路径表中,然后使用u<sub>t</sub>的解密算法<img file="FDA0000462578670000031.GIF" wi="240" he="72" />对Sign(P<sub>s</sub>)进行解密,方法为Ren(P<sub>s</sub>)=<img file="FDA0000462578670000032.GIF" wi="252" he="74" />(Sign(P<sub>s</sub>)),并将结果与P<sub>s-1</sub>的标识Sign(P<sub>s-1</sub>)对比,如果Res(P<sub>s</sub>)=Sign(P<sub>s-1</sub>)则说明该路径未被篡改过,返回正反馈消息给v,转步骤3.2.2.7;否则说明路径被篡改,给出负反馈,转步骤3.2.2.8。3.2.2.7验证成功,转3.3;3.2.2.8验证失败,转3.4;3.3将P<sub>s</sub>从unverified_table移动到verified_table中,转步骤3.5;3.4将P<sub>s</sub>从unverified_table中删除,转步骤3.5;3.5如果unverified_table非空,转步骤3.2.2,否则转第四步;第四步,由验证节点根据每个节点的可信路径数量判断该节点是否为Sybil节点:4.1验证节点v将所有提交验证请求的节点加入待验证集合unverified_set,初始化Sybil集合sybil_set为空集,并设定判断阀值α,α根据需求自由调整;4.2从unverified_set取出一个节点u,计算可信路径集trusted_table(u)=path_table(u)∩verified_table,其中path_table(u)为u提交的路径表,如果trusted_table(u)中元素个数大于α则转步骤4.3,否则转步骤4.4;4.3验证成功即u不是Sybil节点,将u从unverified_set删除,转4.5;4.4验证失败即u是Sybil节点,将u从unverified_set删除并加入sybil_set中,转4.5;4.5如果unverified_set非空,转4.2,否则转4.6;4.6结束,集合sybil_set中的节点都为Sybil节点。
地址 410073 湖南省长沙市开福区德雅路109号