论文部分内容阅读
随着计算机技术和互联网技术的飞速发展,计算机的应用范围不断扩大,人们对信息的安全性要求越来越高。如何有效地进行数字化信息的安全传输和存储已引起人们的广泛关注,加密技术容易暴露信息本身的重要性,不能很好地解决这个问题,信息隐藏技术也就应运而生,并已成为信息安全领域的一个研究热点,为数字化信息的安全存储、通信提供了一种新的思路和方法。PE文件是Win32环境下可执行文件的标准格式,应用非常广泛。PE文件的多样性、文件大小的不确定性、文件结构的复杂性和文件格式的单一性,使得PE文件非常适合作为信息隐藏的载体,特别适合用于大容量的信息隐藏。现有的基于PE文件的信息隐藏方法主要利用PE文件的冗余空间和冗余字段,由于隐藏信息没有与程序功能相关联,没有与指令代码结合,存在隐藏信息过于集中、隐蔽性较差、鲁棒性不好等问题。本文对PE文件代码节、资源节、导入表、增量链接等进行了深入的剖析,针对代码节、图标资源、导入表、增量链接的特点,研究代码融合的PE文件信息隐藏算法,主要研究内容与研究成果如下:(1)提出一种大容量的基于函数迁移的信息隐藏算法。首先通过反汇编引擎反汇编PE文件代码节,然后进行函数识别并将识别出来的系统函数或用户自定义函数的函数代码迁移到PE文件最后一个节中,最后在函数原代码区域进行信息隐藏。为进一步提高隐蔽性和抗攻击能力,将待隐藏的信息加密并指令化,然后封装成一个标准的函数即函数化。这样,使得隐藏的信息与PE文件的主要功能结合在一起,隐藏的信息与PE文件的关键代码耦合在一起,进一步增强了系统的隐蔽性和抗攻击能力。同时,为了使隐藏了信息的指令具有一定的逻辑关系,提出一种替换函数原代码区域指令中常量操作数的信息隐藏算法。隐藏过程中只改变了指令中的常量操作数,没有改变指令操作码等其它部分,指令的基本形式没有改变,整个函数的语义和指令间的逻辑关系也没有任何变化,大大提高了系统的隐蔽性。为进一步提高隐藏容量,我们提出一种无限量的信息隐藏和提取算法,将信息函数化、指令化以后隐藏在迁移后的两个函数之间,这样只要能够识别出2个或2个以上的函数,通过函数迁移在函数原代码区域隐藏信息后,可将余下的大容量的信息隐藏在两个函数之间,实现无限量的信息隐藏。实验结果表明,所提出的算法分别从函数级、指令级、操作数级三种不同粒度进行信息隐藏的研究,算法隐藏容量大,隐蔽性好,抗攻击能力强。(2)提出一种基于编译器增量链接特性的信息隐藏算法。采用增量链接的目的是为了提高编译速度和方便程序调试。通过分析采用增量链接模式生成的PE文件的特点,提出一种基于编译器增量链接特性的信息隐藏算法。该方案将隐秘信息嵌入到相邻的两个函数指令代码之间的填充区域中,函数的指令代码与嵌入的秘密信息关联在一起,提高了系统的隐蔽性和抗攻击能力。对Windows应用程序来说,编译器将添加一系列的系统初始化函数,生成的目标文件填充字节多,隐藏容量大。信息嵌入后,不会增加PE文件的长度,也不会影响程序的性能,隐蔽性好。(3)在分析PE文件图标资源特点的基础上,利用带调色板图标和32位图标透明显示的原理,提出两种在PE文件图标资源的透明区域隐藏信息的算法。理论分析与实验结果表明,该隐藏算法隐藏容量大,隐秘性好,嵌入信息后的图标和原始图标的显示效果完全相同,没有造成任何视觉失真,并且不会增加程序的长度,也不会影响程序性能。同时,通过在PE文件中添加一个或多个图标的方式可以进一步提高隐藏容量。为提高隐蔽性,新增加的图标通过复制PE文件原来的图标来实现,使新增加的图标与PE文件原来的图标资源样式一致。(4)利用PE文件导入表和PE文件加载器的工作原理,提出基于PE文件IAT表和迁移PE文件导入表两种信息隐藏算法。理论分析与实验结果表明,算法较好地克服了传统PE文件信息隐藏算法中隐藏信息过于集中、交换PE文件导入表数据结构元素将破坏隐藏信息的不足,提高了隐蔽性和抗攻击性。本文研究将为PE文件信息隐藏算法提供新方法与关键技术,研究成果将为互联网隐蔽通信提供技术保障,可以广泛应用于隐蔽通信、版权保护等信息安全领域。