基于滑动窗口中包排序的网络隐写方法

2021-09-10 07:22王婧雨王开西

王婧雨 王开西

摘要:针对TCP传输控制协议的网络隐写方法存在着受限于网络环境、隐藏容量低等问题,提出了基于滑动窗口中包排序的网络隐写方法。利用TCP协议中发送方可根据网络环境构造滑动窗口大小和TCP可靠传输的特点,通过滑动窗口数值的奇偶性和滑动窗口中包的顺序隐藏秘密消息。与其他方法相比,在不增加其他资源开销的情况下,发送方在发送秘密消息时利用的数据流量更符合当前网络环境状况,且当滑动窗口中数据包超过4个时隐藏容量大于1bit/包。

关键词:TCP协议;滑动窗口;包排序;隐藏容量

中图分类号:TP309.7

文献标志码:A

收稿日期:2020-10-09

基金项目:

国家自然科学基金(批准号:U1536113)资助。

通信作者:

王开西,男,博士,副教授,主要研究方向为信息隐藏等。E-mail: kxwang@qdu.edu.cn

目前,互聯网技术的飞速发展促进了各类网络传输层协议的产生,其中传输控制协议(Transmission Control Protocol,TCP)作为一种面向连接的、可靠的、基于字节流的传输层通信协议应用尤为广泛[1-2]。TCP协议本身存在着一些可以被利用的冗余,为创建网络隐蔽信道提供了条件,基于TCP的网络隐写方法主要有三种类型:基于TCP首部字段的网络隐写方法,如通过修改TCP首部ISN字段隐藏秘密消息[3];基于改变网络吞吐量的网络隐写方法,如发送方通过控制吞吐量隐藏秘密消息[4-7];基于包排序的网络隐写方法,如通过不同端口发送包的顺序隐藏秘密消息[8]、通过错序或丢包隐藏秘密消息[9-10]。其中基于TCP报文首部字段的网络隐写方法需要修改具体字段,对数据包本身做了改动,其不可见性较低,隐藏容量也较低,而且攻击者可以通过隐写分析检测出数据包存在异常[11]。通过改变网络吞吐量和基于包排序传递秘密消息的网络隐写方法不需要对载体即数据包做任何改动,但都会受当前网络环境影响,导致隐藏容量较低[12]。针对以上问题,本文提出了一种基于滑动窗口中包排序的网络隐写方法,此方法在不修改数据包本身的同时还兼顾了网络环境状况,根据滑动窗口中包个数的奇偶性,对滑动窗口中包顺序采用不同的编码方式,提高了隐藏容量。

1 相关知识介绍

1.1 TCP传输控制协议与滑动窗口

由于互联网中存在不同的网络拓扑结构、网络吞吐量和时延,导致在互联网上传输的部分数据不能按时、安全到达。因此,互联网需要一种基于字节流的可靠数据传输协议来保证数据安全无误的传输。TCP传输控制协议应运而生,支持多种网络应用程序并能在大部分网络上运行[13]。通信时,通信双方不会考虑到当前网络环境状况而是直接发送数据,如果当前网络状况过于拥塞,可能会造成数据包的延迟、丢失等问题。为了解决上述问题,TCP启用了滑动窗口机制,滑动窗口是TCP协议中一种以字节为单位控制流量的技术,TCP根据网络拥塞情况控制发送窗口的大小提高传输效率。影响发送窗口大小的因素有以下两方面:接收方的缓冲区大小和发送方的拥塞窗口大小,发送窗口的上限取值为上述两个数值中较小者[14]。滑动窗口的大小并不是一直不变的。因为发送数据时发送方是不知道当前的网络环境是否拥塞,所以发送窗口需要由小到大缓慢变化用以探测当前网络环境,这就是滑动窗口的慢开始算法。当网络拥塞的情况频繁出现时,通常会采用AIMD算法控制滑动窗口大小,减小由于网络拥塞引起的丢包率[15]。可以看出,在网络环境允许的情况下,发送方只需要遵循滑动窗口大小不大于接收方的缓冲区大小和发送方的拥塞窗口大小的原则,就可以在一定范围内构造不同大小的滑动窗口。

1.2 康托展开

康托展开是一个全排列到一个自然数的双射,可以计算当前排列在所有由小到大全排列中的顺序的算法[16]

A=bNN-1!+bN-1N-2!+…bN-kN-k-1!…+b1·0 !(1)

其中,A是当前排列在所有由小到大全排列中的位置顺序,b1至bN均为整数,且0≤bf<f,1≤f≤N。康托展开是一个可逆运算,其逆运算是由一个十进制数到一个全排列的映射,可以通过式(1)计算逆康托展开运算,即通过十进制数A计算出一组数全排列后按照由小到大的顺序排列的第A位排列。

2 算法描述

2.1 具体算法

本文的隐蔽通道建立基础是TCP的滑动窗口。首先,收发双方经历三次握手建立端到端的通信连接[17];然后,发送方构造出自己的发送窗口,将要发送的秘密消息利用ASCII码转换成二进制串M并通过滑动窗口大小对M进行分段,分段规则如下:

(1) 选择第n个合适的滑动窗口,将其大小记为ji,ji遵循滑动窗口增长或减小的规律;

(2) 滑动窗口中的包个数记为iji=i,表示的最长二进制秘密消息片段位数记为R(R∈N),若i为偶数,必须满足2R≤i!即R≤logi!2, 若i为奇数,必须满足2R≤i!-i即R≤logi!-i2;

(3) 第n个滑动窗口中传输的第n个二进制片段mnji的长度是R,mnji的十进制数表示为An,即整个秘密消息M经过划分后得到二进制比特串Mb,Mb=[m1jt,m2jt+1,m3jt+3,…,mnji,…,mgjf],Mb的十进制表示形式为Md,Md=A1,A2,A3,…,An,…,Ag,其中An为Md中第n个十进制片段,Ag为Md中最后一个十进制片段。

假设网络状况良好,没有丢包,发送方在不修改序号字段的前提下,将滑动窗口中的i个数据包重排序并发送:把每个窗口中的i个数据包按序号从小到大编号1~i,对这i个数进行全排列,可以得到i!个不同的排列。将i!个全排列看作是i!个十进制数,把这i!个数从小到大排序。当i为偶数时,i!个数由小到大全排列顺序中的位于第H位的数表示为AH;当i为奇数时,i!个数由小到大全排列顺序中的位于第(H+i)位的数表示AH。

2.2 隐写过程

发送方对秘密消息预处理后得到二进制串M,收发双方建立TCP连接。隐写过程如图1所示,发送方构造滑动窗口,根据窗口中的包个数对秘密消息M进行分段,并对滑动窗口中的数据包重新排序后发送;接收方接收到这些数据包后根据数据包的到达顺序解码秘密消息。

2.2.1 嵌入过程 对秘密消息进行预处理得到M。

Step 1 发送方与接收方进行三次握手,建立TCP连接;

Step 2 发送方构造滑动窗口,构造的第n个滑动窗口中包个数为i,根据i对M分段分得第n段为mnji,其长度为R(当imod 2=0时,R≤logi!2,当imod 2=1,R≤logi!-i2),mnji的十进制为An;

Step 3 根据滑动窗口中包个数i构造A'n和窗口映射排列组合order,当imod 2=0时,A'n=An,可以通过康托展开算出A'n对应的包排序ordere,此时为偶窗口映射order=ordere,当imod 2=1时,A'n=An+i,可以通过康托展开算出A'n对应的包排序ordero,此时为奇窗口映射order=ordero;

Step 4 在不改变数据包序号字段前提下,发送方按照order中数的顺序重新排序i个数据包并发送;

Step 5 收到来自接收方的确认消息后继续重复Step 2至Step 6,直到M发送完毕;

Step 6 发送方发送FIN字段为1的连接释放报文,与接收方完成四次挥手后释放TCP连接,结束通信。

2.2.2 提取过程 秘密消息嵌入后,需要提取。

Step 1 接收方与发送方三次握手后建立TCP连接;

Step 2 接收方收到第n个滑动窗口中的i个数据包后,记录接收的数据包顺序order,并向发送方发送确认;

Step 3 接收方根据第n个滑动窗口中包个数i的奇偶性,开始解码:根据order,计算A'n:A'n=bii-1!+bi-1i-2!+bi-k(i-k-1)!+……+b1·0 !。其中,0<bf<f,1≤f≤i,bk是第k小的数在当前未出现的元素中所排位数,如果imod 2=0,此时为偶窗口映射order=ordere,An=A'n,如果imod 2=1,此时为奇窗口映射order=ordero, An=A'n-i;

Step 4 接收方按照与发送方相应的处理方式,可以得到与An相对应的秘密消息片段mnji,拼接已解码的二进制片段;

Step 5 当接收方收发送方发送的FIN字段为1的连接释放报文时,即秘密消息发送完毕,接收方拼接所有二进制片段得到完整的秘密消息,收发双方释放TCP连接,结束通信。

3 实例

3.1 嵌入过程实例

对秘密消息“S”通过ASCII转化为二进制串Mb=[01010011]。

Step 1 发送方与接收方进行三次握手,建立TCP连接;

Step 2 发送方构造滑动窗口,第1个窗口大小为6,窗口中数据包的个数为6,根据分段规则对秘密消息M进行分段,R≤log6!2即R最大可以为9,因为此处M为8位所以R取8,Mb的第1段秘密消息片段为m166,m166=01010011,Md中第1个十进制数为A1=83;

Step 3 发送方根据秘密消息,对即将发送的数据包重新排序:

A1=83,由于滑动窗口中包个数是6,因此需要构造偶窗口映射,即A'1=A1=83,现有序号字段为32,33,34,35,36,37的数据包,那么32是第1小的数,33可以看作是第2小的数,依此类推,37是第6小的数,即(32,36,34,35,37,33)→(1,5,3,4,6,2),通过1,2,3,4,5,6和83可以计算ordere,具体过程如下:83/5!=0余83,b6=0说明ordere中比首位小的有0个,所以首位为1,83/4!=3余11,b5=3说明ordere中在第二位之后比第二位小的有3个,所以第二位为5,11/3!=1余5,b4=1说明ordere中在第三位之后比第三位小的有1个,所以第三位为3,1/2!=0余1,b3=0说明ordere中在第四位之后比第四位小的有0个,所以第四位为4,1/1!=1余0,b2=1说明ordere中在第五位之后比第五位小的有1个,第五位是6,剩下的数是2,那么,(1,5,3,4,6,2)→(32,36,34,35,37,33),因此order=ordere=(32,36,34,35,37,33);

Step 4 在不改变数据包序号字段前提下,发送方按照order=(32,36,34,35,37,33)重新排序6个数据包并发送;

Step 5 发送方收到来自接收方的确认消息;

Step 6 发送方发送FIN字段为1的连接释放报文,与接收方完成四次挥手后释放TCP连接,结束。

3.2 提取过程实例

Step 1 接收方与发送方三次握手后建立TCP连接;

Step 2 接收方收到第1个滑动窗口中的6个数据包,記录接收的数据包顺序order=(32,36,34,35,37,33),并向发送方发送确认;

Step 3 接收方根据第1个滑动窗口中包个数的奇偶性,开始解码,解码方式如下:

由收到包的顺序可以得到一个1~6的全排列即(1,5,3,4,6,2),i=6。首位是1,则小于1的数个数为0,b6=0,那么首位小于1的所有排列组合为0×6-1!=0;第二位是5,则小于5的数有三个为2、3、4,b5=3,那么第二位小于3的所有排列组合为3×6-2!=72;第三位是3,首位是1,所以比3小的只有一个是2,所以b4=1,那么第三位小于3的所有排列组合为b4×6-3!=6;第四位是4,小于4的数出除去首位1和第三位中的3只有一个是2,所以b3=1,那么第四位小于4的所有排列组合为b2×6-4=2;第五位是6,6之后小于6的数只有一个是2,所以b1=1,那么第五位小于6的所有排列组合为b2×6-5!=1;最后一位是2,所以b1=0,那么末尾小于2的所有排列组合为0×(6-6)!=0,最终得到A=0(6-1)!+3(6-2)!+1(6-3)!+1(6-4)!+1(6-5)!+0(6-6)!=83。因为i=6, 6mod 2=0,所以,order=ordere为偶窗口映射A1=A'1=83;

Step 4 接收方按照與发送方相应的处理方式,可以得到与A1相对应的秘密消息片段mr66=01010011,A1=83;

Step 5 接收方收到发送方发送的FIN字段为1的连接释放报文,意味着接收方发送完全部秘密消息,随后释放TCP连接,结束整个通信过程,得到秘密消息 “S”。

4 算法分析

4.1 性能分析

(1)隐写成功率。文献[6]通过接收方在固定时间间隔内是否接收到数据包来传递“0”和“1”,文献[3]通过在固定时间间隔内是否发包来传递“0”和“1”,以上两种方法均受限于网络环境,同时也存在数据包提前到达产生错位的情况。从编码角度看,秘密消息M能映射为一组数据包的排序是本方法隐写成功的重要条件,所以只需要满足R≤logi!2或R≤logi!-i2就可以利用i个数据包隐藏R位的秘密消息,而当秘密消息M过长时,可以根据滑动窗口大小对秘密消息分段,分别为每一个mnji构造一组重新排序后的数据包。因此,在滑动窗口构造合适的前提下,隐写成功率可以达到100%。

(2)隐藏容量。隐藏容量定义为每个数据包携带的秘密消息平均比特位数,即C=logi!2/i bits/包。当i=4时,隐藏容量达到最小值Cmin=0.167 bits/包。随着滑动窗口的增大,窗口中的数据包也增多,当i≥4之后2i的增长率远不如i!,所以隐藏容量也会增大。

(3)不可感知性。文献[17]中提出的RSTEG隐写方法通过重发数据包将秘密消息嵌入数据包的载荷中,但是在正常网络环境中多次的重发势必会引起检测者的怀疑,而本方法不利用重发数据包和数据包的任何字段传输秘密消息,含密数据包和原始数据包的所有字段没有任何区别,秘密消息仅与数据包排序有关,因此不可感知性较好。

(4)鲁棒性。文献[7]的方法是通过发送方在时延下限到时延上限的时间段内是否发送数据包来隐藏“0”和“1”,但是当攻击者有意在网络中注入噪声就会造成真正的时延下限到时延上限增加,进而造成接收方不能准确的解码所有秘密消息。本文的方法中,当攻击者在网络环境中注入一定范围内的噪声时,而秘密消息仅与数据包的排序有关与数据包时延程度无关,所以本文的鲁棒性也是较好的。

(5)统计不可检测性。在本文中,未对数据包的任何字段做改动,秘密消息片段和一组数据包的重排顺序是一一对应的。实际网络环境中滑动窗口的大小即滑动窗口中的包个数并不是一直不变的,一条秘密消息可以由多组不同序号的数据包排序表示,所以统计不可检测性也较好。因此,每次发送秘密消息片段时,通过选用不同大小的滑动窗口可以提高统计不可检测性。

4.2 与其他方法对比

本文方法与基于滑动窗中包个数[5]、基于TCP重传[18]等方法在隐藏容量、鲁棒性、隐写成功率等性能的对比情况如表1。

5 结论

利用不同滑动窗口中包个数的奇偶性对秘密消息做了不同的编码处理,并且通过康托展开将编码后的秘密消息映射成为滑动窗口中的一组包排序。与现有的基于包排序的网络隐写方法相比本文方法的隐藏容量虽然最差的时候仅为0.167 bits/包,但是随着滑动窗口中数据包的增加隐藏容量也是逐步增加的可以超过1bit/包。本文方法的鲁棒性依赖于运行时的网络环境,因此后续研究中应着重提高隐藏方法的鲁棒性,可以与数据包乱序程度相结合提高本方法的鲁棒性。

参考文献

[1]Information Sciences Institute. Transmission control protocol (TCP)[S]. RFC 793, Internet Engineering Task Force, September 1981:1-2.

[2]孟朝霞,吴晨晖.影响TCP协议安全性的几个要素[J].现代电子技术,2003(16):63-65+69.

[3]BELLOVIN S. Defending against sequence number attacks[S/OL].(2012-02-24)[2020-09-12]. RFC1948, https://www.rfc-editor.org/pdfrfc/rfc1948.txt.pdf,May 1996:1-4.

[4]REZAEI F, HEMPEL M, SHRESTHA P L, et al. Achieving robustness and capacity gains in covert timing channels[C]// 2014 IEEE International Conference on Communications(ICC). Sydney, 2014: 969-974.

[5]LUO X, CHAN E, CHANG R. TCP covert timing channels: Design and detection[C]// IEEE International Conference on Dependable Systems & Networks with Ftcs & Dcc. Anchorage, 2008: 420-429.

[6]CABUK S, BRODLEY C E, SHIELDS C. IP covert timing channels: Design and detection[C]// Acm Conference on Computer & Communications Security. ACM, 2004.

[7]YAO L, ZI X, PAN L, et al. A study of on/off timing channel based on packet delay distribution[J]. Computers & Security, 2009, 28(8):785-794.

[8]魏三強,杨威,沈瑶.一种基于可靠包排序的隐秘通信方法[J].小型微型计算机系统,2016,37(1):124-128.

[9]CHAKINALA R C, KUMARASUBRAMANIAN A, MANOKARAN R, et al. Steganographic communication in ordered channels[C]// 8th International Workshop on Information Hidin. Alexandria, 2006.

[10] KUNDUR D, AHSAN K. Practical internet steganography: Data hiding in IP[C]// Proceedings of the Texas Workshop on Security of Information Systems, 2003.

[11] 赵丹阳.基于卷积神经网络的网络隐写分析方法研究[J].无线互联科技,2020,17(6):36-37,44.

[12] 于翔美,王开西.基于汉字笔画编码矩阵的文本隐写方法[J].青岛大学学报(自然科学版),2019,32(2):43-47+54.

[13] COMER D, STEVENS D L. Internetworking with TCP/IP[M]. 北京:人民邮电出版社, 2002.

[14] 周明天, 汪文勇. TCP/IP网络原理与技术[M]. 北京:清华大学出版社, 1993.

[15] YANG Y R, LAM S S. General AIMD congestion control[C]// Proceedings 2000 International Conference on Network Protocols. Osaka, 2000: 187-198.

[16] SVOZIL S K. Randomness relative to Cantor expansions[J]. Communications in Nonlinear Science and Numerical Simulation, 2005: DOI:10.1016/j.cnsns.2004.05.003.

[17] 谢希仁.计算机网络(第七版)[M].北京:电子工业出版社,2017:224-230.

[18] MAZURCZYK W, SMOLARCZYK M, SZCZYPIORSKI K. Retransmission steganography and its detection[J]. Soft Computing, 2011, 15(3):505-515.

The Network Steganography Method of Packet Sequencing on Sliding Window

WANG Jing-yu,WANG Kai-xi

(College of Computer Science & Technology, Qingdao University, Qingdao 266071, China)

Abstract:

The network steganography based on TCP (Transmission Control Protocol) has restricted network environment, low hiding capacity and other problems. To solve these problems, a network steganography based on packet sequencing in sliding window is proposed. Because the sender in TCP can construct the size of the sliding window according to the network environment and TCP has reliable transmission, the secret message is hidden through the parity of the sliding window value and the order of the packets in the sliding window. Compared with other methods, without increasing the cost of other resources the secret message data stream is more in conformity with the current network environment. When there are over 4 data packets in the sliding window, the hidden capacity is greater than 1bit/packet.

Keywords:

TCP; sliding window; packet sequencing; hiding capacity