system: [SYSTEM]

user: 3. 防御方案 目前，针对这四类恶意攻击，现有的网络编码防御方案主要是基于信息论和密码学。 对广义污染攻击来说，现有的网络编码防御方案可大致分为三类：污染纠错、污染检测和污染源定位，其中污染纠错主要是基于信息论，通过构建网络纠错码，而污染检测和污染源定位主要是基于密码学，通过利用同态哈希函数、同态签名、线性子空间签名和认证码等手段。 图2. 污染攻击 图3. 窃听攻击 Table 2 Relationship and differenc 联系 区别 熵攻击、拜占庭攻击和污染攻击的目的都是主动干扰信宿译码出有用数据，降低网络吞吐量。所以它们都是主动攻击。 窃听攻击的目的是窃听到有用数据，但不主动干扰通信网络。所以它是被动攻击，并且人们常说的被动攻击一般都特指窃听攻击。 拜占庭攻击和污染攻击属于广义污染攻击这一大类，攻击手段都以发送伪造的错误数据来污染有用数据为主。 拜占庭攻击因其为内部攻击，所以内部恶意节点还有窃取网络传输的有用数据这一次要攻击手段。而污染攻击因其为外部攻击，所以不能窃取。 拜占庭攻击和污染攻击发送的是伪造的错误数据， 所以发送的数据是非法数据。 熵攻击把前时隙的旧数据在当前时隙按合法的网络编码规则进行编码后发出，所以发送的数据是“合法”数据。 熵攻击因其发送的是“合法”数据，拜占庭攻击因其发动攻击的是“合法”内部节点，窃听攻击因其不主动攻击通信网络，所以都具有隐蔽性。 污染攻击不具有隐蔽性。 表2. 联系与区别 对于窃听攻击来说，基于信息论的网络编码防御方案一般是通过限制窃听者的窃听能力来设计网络编码规则，使窃听者译码不出有用数据，从而达到弱安全。而基于密码学的网络编码防御方案一般是对信源数据或编码系数进行加密，使窃听者不能解出有用数据，从而达到弱安全。 3.1. 熵攻击 熵攻击的基本防御思想是通过各种手段来检测接收到的数据是否为非创新数据，若是则舍弃，若不是则进行译码得到有用数据。 Gkantsidis等人[ 4 ] 首次提出了熵攻击的概念，并设计了一种防御熵攻击的方案，即检测已编码数据间的线性相关性来判断哪个已编码数据为非创新数据，然后舍弃。但该防御方案的缺点是在一个很大的有限域内进行，所以其计算量很大，耗时很长，大幅降低了网络吞吐量。 Jiang等人[ 5 ] 基于自适应概率子集的线性相关性检测算法(S-PSLD)，设计了一种高效的非创新数据过滤方案来防御熵攻击，此方案改进了文献[ 4 ] 提出的防御方案，大幅降低了计算量。 缓冲监视(BM) [ 6 ] 的防御思想见图4所示，X是被怀疑需要监视的节点，W是监视节点，A，B，C是X的上游邻节点。实线表示用于数据传输的无线信道，虚线表示监视节点接收数据的信道。由于无线通信的广播性，W会接收到A，B，C三节点发给X的数据和X发给下游节点的数据，若W发现X发出的数据是非创新数据的话，就可以判定X为恶意节点。 3.2. 拜占庭攻击 针对拜占庭攻击的网络编码防御方案主要分为基于信息论和基于密码学两类。 3.2.1. 基于信息论的防御方案 Cai等人[ 7 ] 将经典纠错码的思想引入到网络编码系统中，提出了网络纠错编码这一概念，即在某一时刻通信网络中发生符号错误的链路数没有超出纠错能力范围时，信宿可以通过译码将错误进行纠正。 文献[ 8 ] [ 9 ] 给出了当信道存在噪声时网络纠错编码的具体编译码算法。 Jaggi等人[ 10 ] 设计了一种分布式随机网络编码防御方案对拜占庭攻击进行纠错。根据恶意节点攻击能力的不同，作者提出了三种算法，但三种算法的基本思想都是将恶意节点视为第二信源。因为信宿接收到的数据是来自信源和恶意节点数据的线性组合，所以只要信宿接收到足够多线性独立的编码数据，就可以译码出来自信源和来自恶意节点的数据，并根据一些限制条件判断出来哪些是来自信源的有用数据，哪些是来自恶意节点的污染数据。 基于信息论的防御方案的纠错或检错效率往往比较高，但是普遍都存在一些局限性：一是都是以攻 图4. BM防御 击者的攻击能力受限为前提；二是攻击者的攻击能力越强，需要用来纠检错的冗余数据就越多，而冗余数据越多会导致编码率越低，消耗的网络资源越多；三是这些方案只能使信宿被动地对接收到的数据进行纠错或检测，而不能主动地定位、丢弃恶意节点，这样就加长了信宿的译码时间，降低了网络吞吐量。 3.2.2. 基于密码学的防御方案 两不相邻的监视方案[ 11 ] 假设信源和信宿是可信的，而其他任何中间节点都可能是恶意节点，但只有相邻节点可以共谋。见图5所示是两个X型的网络拓扑结构，从信源到信宿的数据流有两条：S 1 到T 1 ，S 2 到T 2 。C 1 和C 2 是进行网络编码的中间节点。每条数据流被两个监视节点监视，因为两个监视节点不相邻，所以它们不能共谋。 以S 1 到T 1 这一数据流为例，R 1 是被怀疑节点，S 1 和R 2 是两个不相邻监视节点，所以R 1 和R 2 ，S 1 和R 2 之间都不能交流。在第一时隙，S 1 将 传输至R 1 和C 1 。在第二时隙，R 1 将 传输至T 1 和C 2 。在第三时隙，R 2 从C 1 接收到网络编码后的数据( )，此时R 2 利用第一时隙从S 2 得到的 即可解码得到 。在第四时隙，R 2 从C 2 接收到网络编码后的数据( )，此时R 2 利用第二时隙它传输的 即可解码得到 。接下来进行判断，若 ，那么R 1 就不是恶意节点，反之则是。 3.3. 污染攻击 由于污染攻击和拜占庭攻击同属于广义污染攻击，所以针对污染攻击的网络编码防御方案也主要分为基于信息论和基于密码学两类。 3.3.1. 基于信息论的防御方案 防御拜占庭攻击的基于信息论的方案对于污染攻击来说同样适用。 3.3.2. 基于密码学的防御方案 利用同态哈希函数的防御方案：Li等人[ 12 ] 利用同态哈希函数来检测污染攻击。在此方案中，见图6 图5. 两个X型网络拓扑结构 图6. 利用同态哈希函数的防御方案 所示，数据x被分为 这n块数据块，每块 又被进一步分为 这m块子数据块。 。将哈希函数H(x)应用于 上得到相应哈希值的 ， ， ，并且哈希函数H(x)具有同态性质即 。这n个哈希值 被提前发至各个节点。因为网络编码后的x应该是 的线性组合，编码系数为 ，即 ，所以根据哈希函数的同态性，如果中间节点或信宿接收到的数据的哈希值等于 ，那么消息没被污染，反之则已被污染。 利用线性子空间签名的防御方案：基于正交向量检测污染攻击的网络编码防御方案[ 13 ] 的基本思想是计算出子空间的正交向量并将其发送给中间节点和信宿，这些节点可以利用正交向量检测接收到的数据向量是否被污染。比如，信源发送h个数据，每个数据是N维向量，那么信源发送的消息矩阵就是： (1) 消息矩阵中 ，网络中边e上传输的数据是 的线性组合，记为 ， 是全局编码向量，所以 。因为向量 且线性独立，所以它们可以构成一子空间X，由于y(e)是 线性组合，所以 。子空间X中的每一个向量都可以视为合法数据，那么求出满足 的子空间X的正交向量 。将正交向量v提前发给网络中的其它节点，若中间节点或信宿接收到的数据向量点乘v等于0则数据没有被污染，反之则已被污染。并且可以根据上游节点的点乘值来判断恶意节点的具体位置。 3.4. 窃听攻击 针对窃听攻击的网络编码防御方案也主要分为基于信息论和基于密码学两类。 3.4.1. 基于信息论的防御方案 Cai等人[ 14 ] 提出了搭线窃听的网络通信模型GSTW，并构造了在信息论意义下的安全网络编码防御方案，即窃听者无论窃听所给定窃听集内的哪个窃听子集都无法恢复出原始数据。随后，他们进一步提出了r-安全网络编码防御方案[ 15 ] [ 16 ] ，该方案也需限制窃听者的窃听能力，即窃听信道数小于加入的随机数个数r。 Bhattad等人[ 17 ] 适当合理地降低了安全条件，提出了弱安全网络编码的概念，只要窃听者无法获得任何有用数据即可。当窃听者不能获得信源发送的任何原始数据时，我们称之为信息论安全网络编码；当窃听者不能获得信源发送的任何有用数据时，我们称之为弱安全网络编码。由于弱安全网络编码放宽了安全条件，但又很好地保护了有用数据，相对于信息论安全网络编码来说，又提高编码的最大多播速率，因此，现在人们研究的防窃听网络编码防御方案基本上都是追求达到弱安全。 文献[ 18 ] 已知网络的拓扑结构，设计了防窃听的网络编码防御方案。图7是窃听者位置已知的简单双向通信防御方案：s为信源，d为信宿，e为窃听节点，假设e的窃听能力受限，因为e在靠近s的sd直线上，所以s广播给d的数据会被e窃听到，而d广播s的数据则不会。因此，根据此网络拓扑结构设计的网络编码防御方案是：第一步，d产生一个随机数k并发送给s，第二步，s利用接收到的k对有用数据x进行网络编码如c = x♁k，然后发送给d。则d有c和k即可解码出x，而e只有c而没有k则解码不出x。 图8是两个窃听者位置已知但不共谋的防御方案：s，d，a，b是合法节点，e 1 ，e 2 是两个位置已知但不共谋的窃听节点，e 1 在s到a的传输路线上，e 2 在s到b的传输路线上。根据此网络拓扑结构设计的 网络编码防御方案是：a，b分别生成随机数k 1 和k 2 并发送给s和d，然后s将进行网络编码c = x♁k 1 ♁k 2 并将c发送给a和b，最后由a或者b将c发送给d。d由于接收到c，k 1 ，k 2 就可以解码出x，而e 1 由于只窃听到c和k 1 ，e 2 由于只窃听到c和k 2 ，所以都不能解码出x。 图9是两个窃听者位置未知但不共谋的防御方案：s，d，r 1 ，r 2 ，r 3 ，r 4 是合法节点，e 1 ，e 2 是两个位置未知但不共谋的窃听节点，并且窃听节点位置不会与合法节点位置相重。在此，我们假设两个窃听节点位于最好的窃听位置(见图9所示分别位于两个方格拓扑结构中央，这样就可以窃听到最大量的数据)。根据此拓扑结构设计的网络编码防御方案是：第一步，r 1 ，r 2 分别生成随机数k 1 ，k 2 并沿发送路径发送，第二步，s利用k 1 ，k 2 进行网络编码c = x♁k 1 ♁k 2 并沿发送路径发送。各路径传输完毕后可知，d由于接收到c，k 1 ，k 2 所以可以解码出x，而e 1 和e 2 由于分别缺少k 2 和k 1 所以解码不出x。 3.4.2. 基于密码学的防御方案 基于信息论的防御方案以限制窃听者的窃听能力为前提，当它们面对窃听能力更强的窃听者时便不能保证网络的安全性。因此，用密码学手段来设计防窃听的网络编码防御方案受到了广泛的关注。 通过对编码后数据及编码向量进行排列加密操作的防窃听的网络编码方案，称之为P-Coding [ 19 ] 。其基本思想见图10所示，经过排列加密操作后，编码后数据和其编码向量可以混合和重新排序。由于在随机网络编码中的编码后数据是源数据的组合，要恢复出源数据就需要利用编码向量对其进行解码。而排列加密函数将编码向量的元素和编码后数据的元素随机混合后，窃听者很难定位到哪些是编码向量的 图7. 简单双向通信防御方案 图8. 两个窃听者位置已知但不共谋防御方 图9. 两个窃听者位置未知但不共谋防御方案 图10. 在已编码数据上进行排列加密 元素，哪些是编码后数据的元素，也就无法解码出源数据。 防窃听的VSWNC方案[ 20 ] 要求信源信宿共享一个随机数生成器，其次信源可用随机数r在随机数生成器上生成一个范德蒙行列式P，随后用P对信源数据进行预编码处理，最后信宿可通过r得到P从而能够正确解码。把VSWNC方案应用于随机网络编码中，在牺牲少量带宽的情况下能保证以概率1达到弱安全。 信源编码： 信源在有限域Μ中选取一个随机数r，然后用r在随机数生成器上生成n − 1个随机数。 这n − 1个数构成了范德蒙行列式。r是对窃听者绝对保密的。 (2) X左乘P可得到 。 (3) 在 后加入单位冗余得到Y，其中 为M上的随机数。 (4) 经过以上变换，信源就把Y发送出去。Y在网络中进行网络编码，即Z = FY。 信宿解码： 信宿收到Z后可用公式 获得Y，然后得到r和 。信宿再利用r访问随机数生成器，来获得 ，进而得到P。又因为 ，所以信宿就可以获得信源数据X了。 3.5. 万能攻击 就像我们会想方设法地保护网络的安全性一样，攻击者也会采取各种手段来达成他们的目的。在现实中，攻击者往往会采用多类恶意攻击来同时攻击网络，因此，设计出能同时防御多类恶意攻击的网络编码防御方案是大势所趋，我们称此类防御方案为抗万能攻击方案。 文献[ 21 ] 利用哈希函数和安全信道对随机单跳网络编码进行改进，采用一个 维随机向量 和两个哈希函数 ， 来同时防御窃听攻击和广义污染攻击。该方案仅改变了信源和信宿的编解码方式，而未改变中间节点的网络编码方式。 信源编码： 信源产生的原始数据M要经过2次变换： (5) 为原始数据向量，其中 。在有限域 上选取随机向量 ，且服从均匀分布。使用哈希函数 使得 。我们通过 构建新的数据向量： (6) 经过第一次变换，得到了新的数据矩阵 。使用哈希函数 ： ，得到哈希值 并附加在 数据向量之后，使之形成新的向量 。 (7) 经过第二次变换后，信源形成了新的数据向量 ，每个数据向量由k + l位符号组成，前k位符号为数据消息 ，后l位符号由 的哈希函数值 构成。 信宿译码： 信宿收到一个消息矩阵D，其由n个线性独立的数据组成。 (8) T为n个数据系数组成的系数矩阵，求出逆矩阵 ，解码出数据矩阵 。数据向量 的前k位是数据消息 ，通过安全信道接受到随机向量 ，信宿可以从 中解出 。稍后信宿通过哈希函数 计算出 ，与收到的矩阵对比，如果值相同，则说明没有受到污染攻击。反之则受到，那么就丢弃此数据矩阵D。 对于窃听攻击，由于随机向量 是由安全信道传输的，攻击者无法窃听到，即使攻击者窃听到n个线性独立的数据，解码出 ，但由于没有得到随机向量 ，因此无法解码出M，所以该方案防窃听攻击。并且，攻击者虽然知道了哈希函数 ，但是没有解码出M，因而无法得到正确的哈希值 ，所以该方案也防广义污染攻击。然而，信宿只能检测出污染并丢弃整个数据矩阵，而不能进行纠错，这样就延长了传输时间，降低了网络吞吐量。Xu等人[ 22 ] 先是利用稀疏矩阵对信源数据进行矩阵变换达到了防窃听的目的，再利用列表译码法在信宿处进行译码，有效地进行了纠错，也达到了防广义污染攻击的目的，并进一步缩短了传输时间。 在文献[ 5 ] 的基础上出现了一种增强型的抗万能攻击方案[ 23 ] 。该方案通过计算信宿接收到的数据的线性相关性来判断其是否为非创新数据，再检测其是否为污染数据，只要有一样是，就将其过滤掉，达到了既防熵攻击又防广义污染攻击的目的。