Contents

JESS: Joint Entropy-Based DDoS Defense Scheme in SDN

Kalkan K , Altay L , Gur G , et al. JESS: Joint Entropy Based DDoS Defense Scheme in SDN[J]. IEEE Journal on Selected Areas in Communications, 2018:1-1.

该文提出了一种基于熵的DDoS攻击的检测与缓解办法。

introduction

SDN存在安全问题,如DDoS攻击,解决办法有:

  • 内在:structural attributes of SDN enviroment on the properties of traffic flows
  • 外在:statistical and ml Entropy shows randomness,DDoS decraese randomness.

related work

  • 网络虚拟化及其安全
  • SDN安全相关研究

Join Entropy Based DDoS Defense Scheme In SDN(JESS)

分为三个小步:

  • nominal stage:switch sends headers of all packets to controller,controller calculates joint entropies of each pair
  • preparatory stage:controller generate current pair profiles and calculates joint entropies,difference exceeds $\theta_j$,DDoS attack is detected,maximum difference is SuspiciousPair and send to switch
  • active mitigation stage:switch creates SC of SuspiciousPair and send to controller,controller calculates correspoinding score and generates scoretable ST,rule table $RT_C$ with a designated $\theta_s$,if score of entry under $\theta_s$ forward, otherwise drop.

剩下的是算法的细则,太多了建议看原文

Nominal Stage

  • Nominal Profile Generation 收集一些重要的参数,表示成:$\mathbb{P}={IP_{src},IP_{dst},P_{src},P_{dst},PROT,PKT_{size},TTC,TCP_{flag}}$,记$\left(\begin{aligned}\mathbb{P}\k\end{aligned}\right)$k个元组组成的集合,如$\left(\begin{aligned}\mathbb{P}\2\end{aligned}\right)={{IP_{src},IP_{dst}},\dots,{TTL,TCP_{flag}}}$记$\mathbb{A}i$是$\left(\begin{aligned}\mathbb{P}\2\end{aligned}\right)$的第i个元组,例$\mathbb{A}1={IP{src},IP{dst}}$,它有$2^{32}*2^{32}$个可能。$\mathbb{A}2={IP{src},P_{src}}$有$2^{32}*2^{16}$个可能。switch收集包头并发送给controller,收集到指定个数即可停。在指定包数被处理后假设有$\alpha$个包对,则组成$\alpha * k$矩阵,记为$E^{\mathbb{A}_i}$,$E^{\mathbb{A}_i}_j$表示为第j个元组,它的值为$E^{\mathbb{A}_i}_j=(a_j,b_j)$。$E^{\mathbb{A}_i}$可表示为: https://s2.ax1x.com/2019/03/27/Aab7QO.png 基于$E^{\mathbb{A}_i}$创建$N^{\mathbb{A}_i}$,记为:https://s2.ax1x.com/2019/03/27/AaXdXT.png 这里的$m_i$取决于这个阶段收集到不同属性的个数,这是一个$m \times (k+1)$的矩阵。这里的建$N^{\mathbb{A}_i}$就是Pair Nominal Profile,由controller形成。这里的$PAC^{\mathbb{A}_i}$指的是${\mathbb{A}_i}$的产生个数。

  • Nominal Profile of Order p 即p个历史阶段的Nominal Profile 第p个记为:https://s2.ax1x.com/2019/03/27/AavVzt.png 分阶段时,生成的profile为不同段的并集。用图表示如图4: https://s2.ax1x.com/2019/03/27/AddHgO.md.png

  • Joint Entropy Calculation for Nominal Profiles 在生成profile阶段计算出该阶段的熵,并存入profile中,当检测时,将当时的流量计算出来的熵与profile中的熵比较,超出$\theta_j$即可认定有DDoS发生,选相差最大的那个对作为主导对(determinant pair)。熵计算公式为: $$JN_{N^{A_i}}=-\sum_{n=1}^{m_i}(\frac{PAC^{A_i^n}}{\alpha})\log{(\frac{PAC^{A_i^n}}{\alpha})} \tag{4}$$ 简记: $$PN_{A_i^n}=PAC^{A_i^n}/\alpha \tag{5}$$ 而式(4)变为: $$JN_{N^{A_i}}=-\sum_{n=1}^{m_i}PN_{A_i^n}\log{(PN_{A_i^n})} \tag{6}$$ 归一化后最终得到的公式为: $$\bar{JN}{N^{A_i}}=JN{N^{A_i}}/\log[\alpha] \tag{7}$$ 使用时均用归一化的熵

Preparatory Stage

本阶段检测攻击,并决定最适合的pair(这个对即用来识别异常的对),分为三个阶段:

  • Current Profile Generation 第i个当前的profile表示为:https://s2.ax1x.com/2019/03/27/AdMbwD.png

  • Joint Entropy Calculation for current profile 对当前profile而言, $$PC_{A_i^n}=PAC^{A_i^n}/\alpha \tag{9}$$ 则当前的熵JC表示为: $$JC_{N^{A_i}}=-\sum_{n=1}^{m_i}PC_{A^n_i}\log{(PC_{A_i^n})} \tag{10}$$

  • Comparison $$\Delta J_{N^{A_i}}=JC_{N^{A_i}}-JN_{N^{A_i}} \tag{11}$$ 当这个值超过一个$\theta_j$,则认为检测到了DDoS攻击, 对所有的差值,JESS找到差值最大的对,将其标为SuspiciousPair。 如:对$\arrowvert\mathbb{P}\arrowvert = 8,k=2$时,$\Delta J_{MAX}=\max{\Delta J_{N^{A_1}},\Delta J_{N^{A_2}},\cdots,\Delta J_{N^{A_28}}}$,假设$\Delta J_{N^{A_2}}$是最大的,就将其标为suspiciousPair,Controller便将这个SuspiciousPair发送给switch。

Active Mitigation Stage

这个过程有五个步骤

  • SuspiciousPair Profile Generation switch已知SuspiciousPair,则在本地生成Profile SC,并将其发送到controller

  • Score Calculation: 对每个流计算$\beta$: $$\beta = \frac{PC_{A_i^n}}{PN_{A_i^n}} \tag{12}$$ 将计算所得的$\beta$存于表ST中。

  • 决定阈值 利用load shedding alporithm来决定,阈值$\theta_S$由当前阈值$\theta_C$和之前阈值$\theta_P$共同决定 $$\theta_S=\frac{\theta_C+\theta_P}{2} \tag{13}$$

  • Rule Generation 对每个SC中的entry进行计算,若打分超过阈值,drop it! otherwise,forwarded to the destination!

  • Differing Rules($\Delta - Rules$) determination 更新规则时,将当前规则与之前规则作对比,只发送不一样的那部分。

模拟与性能评估

  • 数据集:MAWI

  • 环境:RYU,8G RAM,Core i7-3610QM 2.3GHz CPU,Ubuntu 14.04 OS。

  • 拓扑结构(图5): https://s2.ax1x.com/2019/03/27/Addr40.png (这个拓扑也太简单了点吧。。。)

  • packet analysis in Mininet 利用mininet统计各种头信息,如表5 https://s2.ax1x.com/2019/03/27/AdwydA.md.png

  • 攻击种类 https://s2.ax1x.com/2019/03/27/AdwhQS.png

  • Performance Metrics 即评价标准:$FPR=\frac{FP}{FP+TN}$ $ACC=\frac{TP+TN}{TP+TN+FP+FN}$

  • Exprimental Results 结果分析 https://s2.ax1x.com/2019/03/28/AdhxdP.png https://s2.ax1x.com/2019/03/28/Ad4pi8.png 分析:误报率有时候会提高,原因是许多包有和攻击包一样的特征。为了提高效果,引入滑动窗口。 引入滑动窗口 网络拓扑为如图8 https://s2.ax1x.com/2019/03/28/Ad40QH.png 使用previous periods,也即意味着要存储这么多periods的所有的头值,如TCP滑动窗口般。(作 者经过计算,发现浪费不多 )结果如图10,结论为:效果确实提高了不少!https://s2.ax1x.com/2019/03/28/Ad5OEt.png 在不同攻击强度下效果对比 结果如图11所示: https://s2.ax1x.com/2019/03/28/Ad5xC8.png 结论:当攻击包与正常包数量相同时,难以区分。

  • 算法分析 结论:时间复杂度:$O(n^2)$,处理加载过程不需要额外缓存;所需空间少,对controller负担小,通信代价几乎可勿略不计。

问题:为什么先择两个特征而不是更多个,没有做对比!