MP2P网络中基于非完全合作节点识别的路由选择

简介

P2P模式中资源稀缺性加剧了移动对等网络(MP2P)节点的自私,使节点表达非完全合作(NCC)态度。因此,在本文中提出了非完全合作节点的识别并针对 MP2P 提出了相应的信任路由方案

直接信任内部状态推荐信任三个维度组成的卦限来评估。

识别NCC节点的难点

  • 难点1:节点只能直接得知相邻节点状态,全局信息只能通过推荐。
  • 难点2:如何区分善意节点因为资源不足而拒绝服务。
  • 共谋恶意节点(CNCC),更难发现且危害更大。

目前可以做到的工作

  1. 通过三个评估标准构成卦限来建立信任模型。

  2. INCC可以通过模型准确识别,CNCC可以基于INCC的识别结果通过余弦相似度进行识别。

  3. 对MP2P网络基于NCC识别构建一条信任路由。

攻击方式

  1. 灰洞攻击:以一定概率不转发收到的数据包。
  2. 黑洞攻击:不转发收到的数据包。
  3. bad mouthing:说好节点坏话。
  4. ballot stuffing:说坏节点好话。
  5. self-promoting attacks:吹自己。
  6. Collusive Attack:共谋攻击,同时协作攻击相同对象。

定义

直接信任

一种直接监控,根据被监控节点正确转发的数据包和收到的数据包进行评估。

节点 $v_i$ 在时间 $t$ 对节点 $v_j$ 的直接信任值为 $T^d_{i,j}(t)$ 。

推荐信任

一些节点超出了传输范围因而不能获取直接信任,需要通过共同相邻节点进行对被监控节点的信息获取。

节点 $v_i$ 在时间 $t$ 对节点 $v_j$ 提供关于 $v_k$ 的推荐为 $T^r_{i,j,k}(t)$ 。

好节点直接发送综合信任,坏节点会有波动。

信任度reliability

是间接信任的可靠性的评估

表示一个节点对另一个节点的综合信任度。

节点 $v_i$ 对 $v_j$ 在时间 $t$ 的信任度为:
$$
\begin{array}{r}
T_{i, j}^{c}(t)=w_{s} \times\left(1-\left|T_{j, i, i}^{r}(t)-T_{i, i}^{d}(t)\right|\right)
+
w_{b}
\times
\frac
{\sum\limits_{v_{k} \in\left(N\left(v_{i}\right) \cap N\left(v_{j}\right)\right)} {\left(1-\left|T_{j, i, k}^{r}(t)-T_{i, k}^{d}\right|\right) }}
{\left|N\left(v_{i}\right) \cap N\left(v_{j}\right)\right|}

  • \
    w_{r} \times
    \frac
    {\sum\limits_{\left(v_{j}, v_{k} \in N\left(v_{i}\right) \cap v_{j} \neq v_{k}\right), v_{l} \notin N\left(v_{i}\right), v_{l} \neq v i}{\left(1-\left|T_{j, i, l}^{r}(t)-T_{k, i, l}^{r}\right|\right) }}
    {N-\left|N\left(v_{i}\right)\right|-1}

\end{array}
$$

$w_s, w_b, w_r$ 是三个加权系数,分别代表节点对自己的评价差异,节点对相邻结点的评价差异,节点对不相邻结点的评价差异。

间接信任

间接信任:根据可信邻节点所提供的推荐信任建立的信任关系。

节点 $v_i$ 在时间 $t$ 对节点 $v_k$ 的间接信任值 $T^i_{i, k}(t) = T^r_{i, j, k}(t) \times T^c_{i,j}(t)$。

综合信任

基于直接信任和间接信任的最终信任。

节点 $v_i$ 在时间 $t$ 对节点 $v_j$ 的综合信任 $T_{i, j}(t) = w_d \times T^d_{i, j}(t) + (1 - w_d) \times T^i_{i, j}(t)$ ,其中 $w_d$ 是权重因子,用于 调整重视程度。

内部状态

表示一个节点的内部资源,即使主观合作节点仍会因为内部状态而表现不佳。

路径信任

从 $v_i$ 到 $v_j$ 的路径信任记为 $T^p_{i, j}$ 。

MP2P是动态变化的,我们可以监听的只有直接信任推荐信任,并根据这两个来更新信任度、间接信任、综合信任、路径信任。并将时间划分为时间间隔 $\Delta t$ ,更新方案为 $T^d_{i,j}(t+\Delta t)=\beta \times T^d_{i,j}(t)+(1-\beta)\times \Delta T^d_{i,j}(t+\Delta t)$ , $\Delta T^d_{i,j}(t+\Delta t)$是节点 $v_i$ 对 $v_j$ 在时间 $t+\Delta t$ 的直接信任。

公式方面总体来说

直接信任(direct trust),推荐信任(reliability),内部状态(internal state)三个维度。

通过计算直接信任(direct trust) $T^d_{i,j}(t)=\dfrac{正确转发的数据包}{收到的包}$。

信任度(reliability)即为:
$$
\begin{array}{r}
T_{i, j}^{c}(t)=w_{s} \times\left(1-\left|T_{j, i, i}^{r}(t)-T_{i, i}^{d}(t)\right|\right)
+
w_{b}
\times
\frac
{\sum\limits_{v_{k} \in\left(N\left(v_{i}\right) \cap N\left(v_{j}\right)\right)} {\left(1-\left|T_{j, i, k}^{r}(t)-T_{i, k}^{d}\right|\right) }}
{\left|N\left(v_{i}\right) \cap N\left(v_{j}\right)\right|}

  • \
    w_{r} \times
    \frac
    {\sum\limits_{\left(v_{j}, v_{k} \in N\left(v_{i}\right) \cap v_{j} \neq v_{k}\right), v_{l} \notin N\left(v_{i}\right), v_{l} \neq v i}{\left(1-\left|T_{j, i, l}^{r}(t)-T_{k, i, l}^{r}\right|\right) }}
    {N-\left|N\left(v_{i}\right)\right|-1}

\end{array}
$$
间接信任由推荐信任和信任度得到:$T^i_{i, k}(t) = T^r_{i, j, k}(t) \times T^c_{i,j}(t)$。

综合信任由直接信任和间接信任得到:$T_{i, j}(t) = w_d \times T^d_{i, j}(t) + (1 - w_d) \times T^i_{i, j}(t)$。

INCC的检测

根据直接信任内部状态推荐信任三个维度组成的卦限来评估。
状态(Good/Bad)、直接信任(High/Low)和可靠性(True/False),由于内部状态差的时候不可能有较好的转发率,BHX是不存在的,GHF可能会发动诽谤攻击,GLT可能发动灰洞攻击,BLT和BLF需要再进一步确定。

算法

  1. 对于每个时间片都进行如下操作

    1. 通过监控邻居节点获得直接信任

    2. 从邻居节点获取推荐信任

    3. 计算信任度

    4. 根据检测结果检测内部状态

    5. 基于当前时间片的新的信任值进行更新

    6. 基于卦限确定INCC

CNCC的检测

假设共谋节点来自相同类型,忽略合作节点GTH节点、恶意节点GLF、BLF。直接关注GHF、GLT、BLT三种节点,并通过余弦相似度。

算法

  1. 对于每个时间片都进行如下操作
    1. 对于每个在GTL(综合可靠、直接信任度低)象限的点进行如下操作
      1. 计算每两个节点在直接信任和信任度的相似度
      2. 若大于阈值,则识别为黑洞攻击的共谋节点
    2. 对于每个在GFH(综合不可靠、直接信任度高)象限的点进行如下操作
      1. 计算每两个节点在直接信任和信任度的相似度
      2. 若大于阈值,则识别为假情报攻击的共谋节点
    3. 对于每个在GFL(综合不可靠、直接信任度低)象限的点进行如下操作
      1. 计算每两个节点在直接信任和信任度的相似度
      2. 若大于阈值,则识别为黑洞攻击假情报攻击的共谋节点

信任路由模型

我们基于无线自组网按需平面距离向量路由协议和NCC识别提出了 NCCTR 信任路由模型,描述如下:

  1. 当一个源节点 $v_s$ 有数据包要发给目的节点 $v_d$ , $v_s$ 首先检测是否存在可用路由,如果存在则随机选择一条并转到7,否则转到2。

  2. $v_S$ 向其直接信任值大于门限 $\gamma$ 的相邻节点进行广播路由请求包RREQ。

  3. 中间节点第一次收到RREQ时会判断当前路径是否合适,如果合适则继续向向其直接信任值大于门限 $\gamma$ 的相邻节点进行广播,否则直接cut。

  4. 若任何一个节点有一个可用路径到达 $v_d$ ,则生成路由回复包 RREP 回溯发送给 $v_s$ 。否则重复步骤3。

  5. 目的节点 $v_d$ 收到几个 RREQ包时,会选择最大信任路径回复给 $v_s$ 。

  6. $v_s$ 收到RREP时,会建立一个或多个信任路由路径。

  7. $v_S$ 按照信任路由路径发送数据包。

  8. 一条路径失效,可以使用其余的。若没有其他剩下的,转到步骤2。

模拟实验环境

1000m*1000m的矩形场,50 个移动节点,节点覆盖半径250m,每个节点移动
以随机速度从一个随机的起点到一个随机的目的地,一旦到达目标节点,暂停一段时间后随机选择另一个目的地。

使用UDP作为协议,Constant Bit Rate作为编码的码率控制的10个数据包?数据包生成频率1个/s,大小为512字节,起点终点随机。

  • 服务器初始没有数据,位置固定
  • 暂时不考虑恶意服务器
  • 内部状态由发出数据报/转发数据报评估,只有好/坏两个状态
  • 服务器定期广播请求所有数据
  • 物层节点初始数据,每个都有,正态分布。假数据落在范围外

非完全合作节点模拟状态如下

  • Black Hole Attack:节点会拒绝转发所有数据包。

  • Bad-mouthing Attack:针对行为良好的节点的信息打差评,破坏他们的信任价值。

  • Ballot Stuffing Attack:为行为不良的节点提供良好的推荐信息以提高他们的信任价值。

  • Collusive Attack:这些节点同时协作发起攻击。他们有相同的攻击对象。

评估指标

  • 物层召回率True Positive Ratio (TPR):positives节点识别的正确率,识别出的恶意节点/恶意节点总数。
  • 物层误检率False Positive Ratio (FPR): negative events误识为positive数目与实际上 negative events数目的比率。
  • 物层精度Precision Ratio (PR):true positive correct results数目与positive events数目的比率。
  • Packet Delivery Ratio (PDR):数据包成功接收比率。
  • Average End-to-end Delay (AED):数据包平均发送时间。
  • Average Overhead(AOH):控制包数和数据包数比率的平均值。

前三个可以评估非完全合作节点检测方法的有效性,后三个可以评估MP2P中路由选择方案的能力。

不理解的部分

  • 评估标准里actual positives、negative events、true positive correct results指的都是什么
  • 10个Constant Bit Rate是以恒定比特率方式进行编码?不太理解。
  • 论文里没说脏数据、恶意服务器的事,要自己加fake data、fake service。
  • 连服务器的事都没说(可能我没看仔细
  • 实现的具体细节要去看代码
  • 为什么聚类实现在Node里,每个节点都自行识别吗
  • 边缘服务器的分布好奇怪,位置是固定的吗。物层节点位置是随机的,但好像并没有在移动。
  • 可靠服务器获取资源时也会有±1的误差,恶意服务器获取资源会有±10的误差,但资源都是全的。
  • 节点只有一部分资源,误差同上(模拟假数据?)。
  • Node里面的包含数据为什么要弄成映射而不是集合,是资源有精度误差而给资源编号吗。
  • 精度好像不太行?为什么全是0
  • 对于不相邻结点的评估是否纳入考量
  • 在哪里using namespace std;了……
  • 邻接表adjacencyList好像炸了
  • 服务器的计算量会更大,然后它的资源也更多,但是我们其实没有在模型里面体体体现这个
  • 聚类函数在node.cpp第361行
  • 服务器判断识别恶意节点的方法和物层节点不同
  • Node第328行,this只记录了来自source的数据place的最近记录…
  • 服务器的聚类似乎没有运行过,可能是测试规模太小了

接下来要干的

  • 看一下网上RIP路由怎么模拟实现的
  • 弄清楚一些细节概念,评估函数具体含义
  • 弄清楚各个矩阵计算方法
  • 是否对物层节点加入移动,调一下邻接表。
  • 对校一下信任矩阵和评估函数的实现,看一下是否要拆出来写。

工作进度(直接copy过来的)

目前处于编码测试阶段。

代码中已经实现的部分有:

  1. 网络的构建(构建网络拓扑,构建结点的rip表,模拟结点发包转包)
  2. 实现了TRUSTCOM这篇论文里计算信任的方法(即信任模型)
  3. 写了一个边缘服务器的聚类模型,但这个模型还在调试中
  4. 实现了灰洞攻击和虚假数据的攻击
  5. 计算了三个测试指标

待完善的部分:

  1. 聚类算法的调试(聚类算法,即边缘服务器对物层恶意结点的识别这里做得一直不是很理想)
  2. 加入更多的攻击模型(共谋攻击,诽谤攻击)