RPL拓扑下的网络安全

  • 什么是RPL协议
  • RPL树中可能出现的攻击
  • 如何阻断攻击?
    • Hello-Flood
    • 版本号攻击
    • 天坑攻击
    • 黑洞攻击

什么是RPL协议

RPL (Routing Protocol for low - power and Lossy Networks)是一种低功耗、易丢包的无线网络路由协议。它是一种基于距离向量的主动协议,运行在IEEE 802.15.4和上,为多跳和多对一通信进行了优化,但也支持一对一的消息。

RPL协议中有关键的三种控制用数据报文,分别是DAO,DIO,DIS。而RPL协议下构成的网络呈现有向无循环图的样式,其中每个拓扑的一个子域被称为DODAG。在这个树图中,与根节点最近的一级秩为1,然后逐层递加。
如上图所示,DAG可以构造为一个树图,其中根节点具有最大的路由表,知道整个RPL网络中的各地路由路径与评估方法。

控制数据包 作用
DIS 当一个网络即将形成之前,网络还不存在拓扑结构,但是已经选定了根节点(根节点很多种选择方式),此时根节点会向整个网络中的邻居节点发送DIS数据包,并请求将它们的信息告诉自己。
DIO 当某节点收到了DIS请求,则会回复DIO数据包告知对方自己节点的信息。包括自己的物理地址、Rank(秩)、节点类型等
DAO 用于进行一对一的请求,请求某一个就具体目标,这个目标是它的唯一的父节点。当存在复数个可以称为父节点的节点存在时,需要通过算法最终选择一个最佳节点并作为父节点,然后传送DAO。DAO用于通知父节点自己已更新完路由表,并准备好提供服务,当所有节点的DAO汇聚于根节点,则网络拓扑完成。

因此,整个组网过程就是由根节点进行DIS广播,然后所有节点回复DIO,中继节点以此过程开始确认父节点,最终形成一个DAG。而每一个父节点下的小树状图都称为DODAG。

RPL树中可能出现的攻击

由于这是一个网络拓扑结构,因此,所有的攻击基于计算机网络的一些原理。

Hello-Flood:是一种类似TCP、IP的SYN或Land攻击的一种。某恶意节点收到DIS报文后,会持续不断向根发送当前节点的DIO报文。这会导致根节点不断地处理这些DIO数据,并且计算对应的秩和距离,但是这种计算是冗余的。这是一种浪费计算机资源的攻击方式,因为中继节点与根节点都在处理大量的无用信息。
版本号攻击:当网络出现变动,如某条链路不能工作或某路由器故障,甚至某节点新加入网络,都需要更新当前拓扑结构以及路由表。更新后整个网络的版本号会增加且不可逆。而攻击者利用某些微小的变动或恶意的变动,就会导致网络一直更新,版本号一直增加。网络更新需要消耗整个网络中的计算资源与时间,会对网络整体造成很大的效率影响。
恶意攻击包括且不限于以下几种形式:

  • 删除节点后更新拓扑,再增加该节点并更新拓扑。如此反复
  • 置入恶意节点影响网络路由,并等待网络进行修复,修复网络需要大量的时间和资源,这里面涉及到多个路由重定向和路由表重建的工作,这些工作从结果上会变得没有意义。

天坑攻击:天坑攻击是指某些节点篡改自己的秩(Rank)。由于在这种DAG的结构中,RANK决定了分级,对于RPL网络就是决定了网络中的路由表,这会导致路由重定向和更新路由表的情况发生,与此同时,由于更改了RANK导致原本正在传输的数据因路由路径问题大量丢包,进而形成了接收端接收信息不完全、无法还原数据整体,无法对接收到的数据解码等一系列问题。根据路由路径的选择不同,可能会有更多数据流经恶意节点,恶意节点也有更多的机会进行附加操作。

黑洞攻击: 这是一种人为的对DODAG再生的利用。当某路径丢失的时候,会根据节点间的距离,节点之间的状态,和能量级别等诸多因素形成一个新的DODAG。这种情况下,每次丢包结束都会形成新的DODAG,这是最大限度增加网络节点的计算开销和资源消耗。这是一种刻意控制丢包来阻断网络效率,进而阻断服务的一种攻击方式。

如何阻断攻击?

一般而言攻击是无法中断的,只有未发生和已发生两种状态。我们能做的是尽可能监控网络中的数据流量,有异常时对其进行排查,确认是否属于恶意攻击,如果是则我们尝试处理这种恶意攻击(一般是撤销它在网络中的地位或者已经认证的行为,但是无法阻断正在进行的行为,如转发数据)

那么对于上述四种攻击,我们有一个比较简单的阈值来逐层判定它们是否是恶意攻击。如果满足所有的阈值条件,则被认定为恶意攻击。并采取相应的撤销操作。

Hello-Flood

检测网络中DIS与DIO数据报文的数量,当且仅当
Count:DIS>DIOCount:DIS>DIOCount:DIS>DIO
则说明即将形成新的DAG,此时判断
Time:DIS<DAOACK(Avg)Time: DIS<DAO_{ACK}(Avg)Time:DIS<DAOACK​(Avg)
出现异常,DAO的反应时间过长说明在DODAG生成上花了过多时间。此时撤销本次DIS,并进一步对恶意场景进行筛选
如果DIO的最大间隔时间大于DAO的ACK平均时间且DIS的长度比平均DIO数据包长。则判定为HF攻击

版本号攻击

DAO包的数量要大于当前版本号,不然不需要更新。当有更新行为发生时,测量DIO的最大长度和数据 平均长度,如果数据长度比DIO这种控制数据很要小,说明有问题 ,此时计算DIO的平均时间和数据包的间隔时间,如果数据间隔时间更长则说明是恶意攻击,舍弃当前版本更新的请求。

天坑攻击

检测自己的Rank和父节点的RANK,如果自己的级别更高,则比较DIO和最大长度和DAO-ACK的最大长度,如果DAO-ACK更长,则计算DAO-ACK的平均时间和DAO的最大间隔时间,如果平均ACK时间更长,则说明是天坑攻击,舍弃本次DIO报文。

黑洞攻击

检测自己的Rank和上一级的最小RANK节点,如果自己的RANK更大,则计算最大的DAO时间和平均DAO-ACK时间,如果DIO包的最大长度大于DAO-ACK,则找一个rank-1级的节点,用这个节点发一个最短的数据报文,如果接受时间比发送时间长,则正常。否则检查数据的平均到达时间和最小到达时间,如果最小大大事件比最大的DAO时间还要小,则说明这是一个恶意节点,此时我们标记他并丢弃他所有的DIO包。并尝试选择新的合适的节点作为转发节点。

RPL协议的原理与安全机制相关推荐

  1. 以太坊完整工作原理和运行机制!

    以太坊完整工作原理和运行机制! 2018年04月28日 00:00:00 阅读数:26 作者 | Preethi Kasireddy 编译 | 老曹.Aholiab 链圈的人提起「以太坊」三个字想必是 ...

  2. 比特币的原理及运作机制

    这篇文章的定位会比较科普,尽量用类比的方法将比特币的基本原理讲出来.这篇文章不会涉及算法和协议中比较细节的部分. 在这篇文章中我会给出一个虚拟的村庄叫"比特村",整个文章会以讲故事 ...

  3. 虚拟路由器冗余协议VRRP原理详解!

    虚拟路由器冗余协议VRRP原理详解! https://virtual.51cto.com/art/201905/596666.htm?pc 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前 ...

  4. PrivacyIN Week2 | 张宇鹏博导开讲经典零知识证明协议设计原理

    前言 隐私研究院[PrivacyIN]第一期ZK训练营课程精讲内容上线,本期课堂邀请到美国德州农工大学(Texas A&M University)计算机科学与工程学院的助理教授张宇鹏,主要介绍 ...

  5. ARP和RARP协议工作原理

    ARP和RARP协议工作原理 MAC地址与IP地址是计算机网络通信中非常重要的两类地址,缺一不可.因为在OSI/RM网络层以上是通过IP地址进行寻址的,而在OSI/RM网络层以下则是通过MAC地址进行 ...

  6. netty对http协议解析原理解析

    转载自 https://blog.csdn.net/xiangzhihong8/article/details/52029446 本文主要介绍netty对http协议解析原理,着重讲解keep-ali ...

  7. http协议解决粘包拆包半包 的编码解码过程、 以及netty 使用http协议的原理

    本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...

  8. 计算机网络——IP协议基础原理

    摘要 IP协议提供的一种统一的地址格式.它为互联网上的每一个网络和主机分配一个逻辑地址所以IP地址也叫逻辑地址,用来屏蔽物理地址的差异,MAC地址每一个机器都有一个编码.IP地址是32位二进制数据分为 ...

  9. SIP协议-02 原理讲解

    文章目录 1 SIP实现机制 2 SIP网络元素 2.1 用户代理 2.2 代理服务器 2.3 重定向服务器 2.4 位置服务器 2.5 注册服务器 3 SIP中的几个重要概念 3.1 Message ...

  10. 深入浅出学习透析Nginx服务器的架构分析及原理分析「底层技术原理+运作架构机制」

    Nginx再次回顾 也许你已经忘记了Nginx是做什么的?我来再次给你夯实一下概念. 多协议反向代理 Nginx是个高性能的Web和反向代理服务器及HTTP服务器,它能反向代理HTTP,HTTPS和邮 ...

最新文章

  1. 高性能javascript 文件加载阻塞
  2. AutoBench+Httperf的安装、测试
  3. 深入讲解微信小程序上传图片与JAVA后台的结合
  4. linux之man命令用法入门
  5. 安卓逆向_1 --- 逆向环境配置、APK 文件结构、APK 打包流程
  6. 分享一个Android源码在线阅读的网址
  7. 简单shellcode编写
  8. 求和函数java_java函数求和要怎么写?java求和代码实现
  9. cpu缓冲区大小怎么设置_FL Studio中音频ASIO4ALL的设置
  10. Eucalyptus云服务平台
  11. 音响在线测试软件,汽车音响调音在线大师班(1):调音第一步,RTA检测播放表现...
  12. 0x00007FF872444FD9 处(位于 Project1.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000F11
  13. 使用GCJ编译Java程序供Matlab调用Java对象方法实践
  14. mysql左连接查询慢
  15. Exchange 日常管理六之:创建邮箱数据库
  16. 快车解密php,PHP迅雷、快车、旋风下载专用链转换代码
  17. macOS 10.14配置APUE环境
  18. proteus三输入与非门名字_proteus元件名称中文名说明
  19. 19. RDMA之iWARP Soft-iWARP
  20. 飞利浦净化器还能走多远

热门文章

  1. 在SQL server 2008 R2进行数据查询操作时提示 “对象名无效”的问题
  2. win7系统安装网银助手时提示您尚未正确安装错误的两种解决方法图文教程
  3. python的彪悍特性--自省
  4. 尝试手写一个框架(二)手写一个MVC的框架
  5. The kernel appears to have died. It will restart automatically
  6. matlab画贝塞尔曲线给出图题,matlab练习程序(贝塞尔曲线)
  7. matlab画s域零极点图,信号与系统的S域分析.ppt
  8. HTML5教程之FileList文件列表对象的应用
  9. BAT齐聚阿里安全-ASRC生态大会:呼吁联合共建网络安全白色产业链
  10. 【完美解决】用python自带IDLE 进行turtle画图时,老是报错 AttributeError: module 'turtle' has no attribute 'fd'等问题