基于某测量船的隐蔽通信检测算法设计与软件开发
2018-02-26王婷马继先刘英杰
王婷+马继先+刘英杰
摘要:进入二十一世纪以来,我国海上探测能力进一步增强,测量船与指挥部,以及测量船相互之间的信息交流,相互合作也日益频繁,为了保证所传输的信息不被不法分子利用以及国外的间谍机构所探知,因此采取合适的隐写术对信息进行加密显得尤为重要。同时,在截获了不法分子的情报之后进行解密以便采取相应的措施也是一项艰巨的任务。因此,本文采取了Bitfield消息中的隐蔽通信检测算法设计与软件开发技术对信息进行隐蔽以及检测破译。应用本文中提出的方法,可以很好地区分针对矩阵编码的bitfield消息隐蔽通信中的正常数据和含密数据。
关键词:测量船;隐蔽通信;检测算法
中图分类号:U665.2 文献标识码:A 文章编号:1006—7973(2018)2-0049-05
BitTorrent网络是P2P网络的典型代表,它运行的是BitTorrent协议。在中国,它的使用率相对较大。它在具有P2P网络的本身特色的基础上,还有着“连接越多,下载越快”的特点。BitTorrent网络协议(简称BT协议)其实是一种发布文件的协议,它基于的是HTTP的协议。BT协议识别内容最关键的是依赖URL,另外,它还可以和Web进行无缝交接。Ben coding编码,Torrent文件格式,节点和Tracker服务器的通信协议以及节点之间的通信协议都是BitTorrent协议的重要组成部分。在BitTorrent网络中,发布和共享是文件共享最主要的两个步骤。本文研究重点是针对节点间通信的数据消息——Bitfield消息的隐蔽通信算法及其检测。通过与矩阵编码技术融合可以提高针对于Bitfield信息的隐蔽通信算法的嵌入效率。矩阵编码技术在F5密写算法后开始崭露头角。在矩阵编码技术的基础上,通过修改1个单位的信息把更多的秘密文本存放进去。最少地更改原先的数据,降低修改数据对BitTorrent功能造成的影响,提升嵌入效率,从而提高了该方法的隐蔽性。
网络隐写作为一种隐蔽通信方式,利用合法的数据流作为载体在网络中传递秘密文本。测量船通过利用网络隐信道进行隐秘通信,安全地传递重要信息。但同时,网络隐写也会被不法组织和个人利用,以传递核心信息,威胁国家安全。因此,检测网络隐写的存在,防止危害发生,是至关重要的环节。隐写的检测技术作为网络安全保护方面内的核心技术,引发研究热潮,而且目前为止已经取得了不少的研究成果。但是目前还没有公开文献给出其检测方法。
1 Bencoding 编码
Bencoding编码在BT协议中使用率很高。在BitTorrent早先开发的时候将Bencoding定义为它的编解码标准。因为BitTorrent客户端的开发语言是Python语言,所以Python自带的数据结构,列表和字典标准在Bencoding里全部包含。整数、字符串、列表以及字典都能够进行Bencoding编码,它们编码之后转化为字符串,这样有利于在网络上面传送。
在Bencoding内整数可以通过i
2 矩阵编码技术概述
从F5密写计技术,矩阵编码技术逐渐进入大众视野。在F4密写的基础上增添矩阵编码技术和混洗技术就形成了F5密写技术,它很大程度上提升了信息隐藏技术的可靠性,融入矩阵编码的首要目的是存放更多的秘密文本。将一个单位秘密文本嵌入到载体信息中会有百分之五十的可能更改初始数据,也有百分之五十的可能不更改初始数据。换言之,每更改一次数据都可以存放两个单位的秘密文本。与矩阵编码技术融合必然可以把更多的秘密文本存放进去,也就是说,最理想的情况下,可以达到只更改一个单位初始文本而存放k单位隐秘文本的效果。
当k>2时,把k个单位秘密文本存放到2k-1个初始数据负载中,这是矩阵编码的通用形式,此时的载体数据使用情况如下
嵌入前,倘若上面的式子全部满足,那么就不用改动。倘若存在等式不满足,就需要找到对应于上式的初始数据,并改动它们,使三个式子全部成立。倘若式(2.11)和式(2.13)不成立,找出它对应的原始数据a5(表2-1中a5下面的例子里有叉的位置对应于x1和x3),所以只需要改动a5。由于a5在式(2.11)与式(2.13)中出现,所以改动a5可以使它们从不成立变为成立;但是在式(2.12)没有a5中,因此改动a5并不足以更改式(2.12)的情况。因此当k=3时,矩阵编码的载体使用情况如下
3 基于Bitfield的信息隐藏算法
利用BitTorrent网络内节点之间通信的Bitfield消息来进行的信息隐藏就是基于Bitfield的信息隐藏算法,这个算法隐蔽性良好,且容易被发现。本节将系统地介绍基于Bitfield的信息隐藏算法的隐藏原理,隐藏算法和提取算法。
3.1隐藏算法
规则1嵌入秘密文本时,与矩阵编码融合,首先利用式(2.7)将原始数据的序号按二进制编码,得到bi,j,其中bi,j的取值设置成0或1。第二步,利用式(2.8)计算cj,其中式2.8)中ai为等候存放文本的Bitfield消息负载的第i位,x1,x2…xk是欲嵌入的秘密文本。最后,利用式(2.9)计算C的值,倘若C=0,则不作任何改动;否则改动ac。
为简便起见,在隐藏算法中,令Encrypt()表示预处理加密秘密文本M为S的函数(S=x1,x2…xk),Embed()是按照规则1将S嵌入载体的隐藏函数。
下面给出隐藏算法的主要步骤:
输入:信息载体Bitfield消息B,待隐藏的秘密文本M,密钥k。
输出:隐藏信息后的Bitfield消息B*。
步骤:Step1:S=Encrypt(M,k),并计算|S|;
Step2:计算Bitfield消息负载的长度L;
Step3:If L<2|S|-1
Step4:输出“嵌入失败(信息过长)”
Else
Step5:Embed(S);
Step6:输出B*
隐秘文本M在节点获取了节点分布信息的基础上,经过握手来存放文本的。文本在传送出去之前一直存放在Bitfield文本里面。在這个算法里面,工作的全部节点都不是空白的,它们都含有一些内容。同样的,要获取隐秘文本也必须在握手以后才能后进行。
3.2提取算法
规则2:根据矩阵编码规则,提取秘密文本时按式(2.10)计算xj(1≤j≤k),得到隐秘文本为x1x2…xk。在提取算法中,用Extract()表示按照规则2将S从Bitfield中提取的提取函数,Decrypt()是将经加密的秘密文本S转换为明文形式的秘密文本M。
下面给出提取算法的主要步骤:
输入:待获取Bitfield消息B*,密钥k。
输出:隐藏的秘密文本M。
步骤:Step 1:按照规则2从B*中提取S,S= Extract(B*);
Step 2:以明文的形式将S转换为秘密文本M,M=Decrypt(S,k);
Step3:输出M。
4 针对矩阵编码的Bitfield消息隐蔽通信检测方法
4.1检测算法
基于矩阵编码的隐蔽通信方式,我们在编写检测方法时,只要通过检测一定窗口内三个状态(-1,0,1)的转移矩阵,再对这个转移矩阵进行处理得到K-L散度,即可判断该窗口是否含有隐蔽通信。下图4-1是矩阵编码的原理示例图。
4.2建立模型库
一种针对矩阵编码的隐蔽通信检测方法,包括建立模型库和利用模型库进行检测,所述建立模型库具体包括如下步骤:
步骤一:设置数据捕获器
用Bit comet进行文件下载,然后通过wireshark捕获数据包,并在捕获的数据包中筛选出Bitfield消息。
步骤二:设置数据处理器
设置数据处理器,通过筛选将1192位Bitfield消息数据筛选得到负载数据为814位,然后利用Matlab对捕获的数据进行处理,将原来的十六进制数据转化为二进制数据,并合并成一个一维数组,再对前后捕获到的两组数组求差。
步骤三:设置窗口分割器
设置窗口分割器:窗口分割器将处理后的一维数组分为大小为w的窗口,共可分为 个窗口;每个窗口分成大小为L的小区间,一个窗口可分为 个小区间,若Bitfield消息中存在N条流, 为一个小区间内通过某条流的数据包的个数,统计每个小区间中每条流的占比,i=1、2、3…, ;本实施例中在原数据后面补6个0,以w=466的窗口大小,将其分为7个检测窗口。
步骤四:设置K-L散度求取器
计算前后两组数据的差值中所含的独立状态数个数,从小到大排列为一维矩阵E,先找出第i个状态的位置,然后通过判断下一个位置的状态来得到一个占位矩阵T,如果第i个状态的下一个位置的状态为E(j),则占位矩阵中对应的位置加一(即T(i,j)= T(I ,j)+1),不同则不做改变,并求得这个占位矩阵对于每一行的和的转移矩阵Q;最后利用K-L散度求取器根据公式(2.4)计算出各窗口数据的K-L散度D。本实施例中将-1,0,1看作三个独立状态,求出7个窗口的K-L散度。
步骤五:训练不同时间间隔的正常Bitfield消息数据模型,并设定检测阈值:在不同时间间隔的情况下,重复步骤(1)——(4),得到不同时间间隔的正常数据模型,对各模型进行分析,求不同时间间隔所含数据的均值M+、方差V+和检测阈值Th+=M++aV+,并使用自定义常量a来调整检测阈值。本实施例中经过步骤四得到7个窗口的K-L散度后,在不同时间间隔下建立正常通信的数据模型,并对每个模型进行分析。
步骤六:建立模型库:将步骤五中求得的不同时间间隔的正常Bitfield消息的检测阈值放入模型库中。
正常通信模型训练流程如下图4.2所示:
4.3利用模型库进行检测
(1)判断待测数据的时间间隔:根据时间间隔从模型库中调出相应的模型以及检测阈值Th+;endprint
(2)处理待测数据并计算K-L散度:利用数据处理器将捕获到的前后两组数据求差并转化为一个一维数组;利用窗口分割器将数组分割成大小均为ω的窗口;把0,1,-1看做三种状态,先找出0的位置,然后通过判断下一位的状态来得到一个占位矩阵,并求得这个占位矩阵对于每一行的和的转移矩阵Q;最后利用K-L散度求取器计算出各窗口数据的K-L散度D。
(3)判断待检测数据属性:将D与模型库中相应的检测阈值Th+作比较,小于Th+则待检测数据为含密数据,否则为正常数据。
步骤一中所述的数据捕获器即wireshark,所述过滤器为wireshark内置的过滤器。
步骤四中所述的K-L散度求取方法即相对熵,是相对于真实通信的转移矩阵而言的K-L散度。
其中(i,j)为真实通信的转移矩阵的第i行第j列;Q(i,j)为待测数据的转移矩阵的第i行第j列。
利用模型库进行检测的具体步骤如下图4-3所示:
4.4检测步骤
针对矩阵编码的Bitfield消息隐蔽通信检测方法的具体步骤如下。先把待测数据和正常数据转化为一维数组,并对前后两组一维数组求差,得到三种状态:0,1,-1,找出每个状态的位置,通过判断下一个位置的状态得到占位矩阵,再求得该矩阵K-L散度的差异,判断待检测数据流是否为含密数据流。并且在求出数据转移矩阵的基础上,与K-L散度的计算相结合,从而提高了检测效果,可以得到可靠的检测结果。
5 实验成果
图5-2为实验效果图,实线为正常数据,虚线为含密数据,由图可见,应用本文中提出的方法,可以很好的区分针对矩阵编码的bitfield消息隐蔽通信中的正常数据和含密数据。
6 结论
节点之间的连接,交互信息是十分关键的。它们可以用于完成文件共享。而文件资源共享更是BT网络中的核心之一。在这个过程中,节点首先利用自身的特点与其他部件相互连通。连通后将Bitfield消息传送出去。消息中涵盖了周边节点的分布图。这个图主要是为BitTorrent的文件服务。在这个文件中,片段摘选的规则就是由这个图来提供的。本文基于Bitfield消息,设计实现一种针对Bitfield的信息隐藏算法以及一种针对矩阵编码的Bitfield消息隐蔽通信检测方法。这种检测算法首先通过对比待检测数据和正常数据找出每个状态的位置,获得占位矩阵和转移矩阵。利用求得的K-L散度来判断是否为含密数据流,这种检测算法的效率更高结果更为可靠。
参考文献:
[1] 王育民. 信息隱藏: 理论与技术[N]. 第1版. 北京:清华大学出版社, 2006, (3): 115-123
[2] Y. Chawathe, S. Ratnasamy, L. Breslau, et al. Making Gnutella-like P2P Systems Scalable[J]. In: Proceeding of ACM SIGCOMM. New York: ACM, 2003, (5): 407-418
[3] D. Wallach. A Survey of Peer-to-Peer Security Issues[J]. In: International Symposium on Software Security. Berlin: Springer-Verlag,2003, 253-258
[4] T. W. Ngan, D. Wallach, P. Druschel. Enforcing Fair Sharing of Peer-to-Peer Resources[J]. In: Proceeding of the Second International Workshop on Peer-to-Peer Systems. Berkeley: Springer-Verlag, 2003, 110-115
[5] 陈亮, 龚俭, 大规模网络中BitTorrent流行为分析[N], 东南大学学报(自然科学版), vol. 38,no. 3, pp. 390-395, 2008.
[6] 徐钒文, 基于P2P的隐蔽匿名通信系统研究[D], 北京邮电大学硕士学位论文, 2013.
[7]BitTorrent. http://www.bittorrent.com/[Z], 2009-2-12
[8]Gnutella. http://www.gnutellaforums.com/[Z], 2009-2-12
[9] 杨榆, 钮心忻, 杨义先等. 网络协议信息隐藏技术综述[N]. In: Proceedings of CIHW2006. 哈尔滨: 哈尔滨工业大学学报, 2006, 38(7): 820-824, 856
[10] 张联峰, 刘乃按, 钱秀槟等. 综述: 对等网(P2P)技术[R]. 计算机工程与应用,2003, 39(12): 142-145endprint