点击上方【蓝字】关注我们
隐写术(Steganography)是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或信息的内容。隐写术的起源可以追溯到动植物界中存在的“拟态”,是一种很好的自我保护方式。
隐写术的特点和原理
1、与加密技术相比,隐写术的主要特点为:隐藏传输的信息是嵌入在一个看似无关联的载体上进行的。而加密通信是通过算法的伪装使信息不可破解。由于隐写术选择的信息载体具有迷惑性,而其信息本身仍然可以使用算法进行混淆,因此,隐写术的检测比一般加密算法的破解更复杂。
到了互联网时代,计算机的普及使隐写术又有了质的飞跃。现代隐写术的发展,主要表现在几个分支:语言隐写、数字媒体信息隐藏、文件系统隐写术、网络流量隐写等。
2、隐写术核心原理:插入和替换
插入:通过插入的方法隐藏信息会插入一些额外的内容,这种方法通常会利用文件格式中的空白部分。
替换:通过替换的方法隐藏信息会改变消息中的字节或者交换字节顺序,以使人们看不到或是听不见文件内容。
图片文件的隐写
图像文件的隐写方法主要是针对图像数据进行修改,以达到信息隐藏的目的。其原理是利用图像本身丰富的信息量和冗余,在进行部分修改的情况下,不会影响整体视觉效果。
1、按照隐藏的位置可分为空间域隐写和变换域隐写:
空间域隐写包括:最低有效位隐写、位平面替换隐写、调色板隐写、图像变形隐写等,这些方法具有容量大、处理简单的优点,但是隐藏的信息抵抗各种处理(如滤波、压缩等)的能力比较弱;
变换域隐写包括:傅里叶变换(DFT)隐写、离散余弦变换(DCT)隐写、小波变换(DWT)隐写等。
2、按照修改的数据位置可分为以下几种方式:
修改文件格式特征:去掉文件后缀名、去掉文件头或者尾、文件后缀名伪装;
文件内容的变化:修改宽高,EXIF修改,特定结构的修改(jpg中DHT、DCT等、LSB最低位隐写<隐写的类型有字符串、文件等>),调色板修改;
文件附加:在文件尾部附加各种类型的其他文件、在gif文件帧中添加、多张图片文件合并。
3、除此之外还有一些诸如盲水印、加密隐写等技术手段逐渐涌现,不断新兴的隐写技术越来越隐蔽。
隐写的检测与分析
1、针对图片文件的隐写检测,大致思路可采用处理这类问题的“三板斧”:
分析文件整体结构:分析文件中是否存在包含、附加等;
分析文件内部结构:分析文件内部结构,检测针对文。件内容的隐写;
特殊隐写的检测:针对常见的特色隐写技术方案进行检测。
2、列出一些常用的检测工具与平台:
Binwalk / Foremost:用于分析文件附加类隐写的首选工具。它们可以自动扫描并分离出嵌入在文件中的其他文件。
ExifTool:读取、修改和排除EXIF元数据信息的命令行工具,用于检查和处理EXIF类隐写。
Stegsolve:一款Java开发的图形化工具,用于LSB隐写分析。它可以对图像进行各种平面(RGB, HSV等)和位平面(Bit Plane)的分离,是查看LSB隐写最常用、最强大的辅助工具。
zsteg:一款专用于PNG和BMP图片的LSB隐写检测工具,支持多种检测算法和自动提取。
Jsteg / Jphide:经典的JPEG DCT系数隐写工具,jphide的安全性比jsteg更高。
F5:一种基于JPEG DCT域的隐写算法,以其高安全性和抗统计检测能力而闻名。
Aperi‘Solve在线工具:提供在线隐写分析和服务,集成了多种工具的全能在线平台。
3、大部分隐写程序嵌入数据时都会对数据进行加密,有效提取分析到的隐写数据,并结合隐写算法、加密算法等进行隐写信息的提取和解密。通常确认文件中信息隐写算法的方法有:
通过对载体文件的隐写内容的检测,根据文件内容特征来破解加密算法;
通过分析生成载体文件的存储介质中隐写应用程序的痕迹,来判别加密算法检。
在确定了加密算法或工具的基础上,就可以用已知的解密方法和数据字典来提取可疑信息,或者通过常用密码字典来破解。
常见的图片隐写文件格式
最为常见的信息隐写的图像文件中的3种文件格式进行介绍,分别为PNG、JPEG、GIF。这3种文件格式是日常使用最多且最容易被隐写的文件格式,且针对它们的隐写工具非常之多。
1、PNG文件格式介绍:PNG定义了两种类型的数据块,一种是称为关键数据块(critical chunk),这是标准的数据块,另一种叫做辅助数据块(ancillary chunks),这是可选的数据块。关键数据块定义了4个标准数据块,每个PNG文件都必须包含它们,分别是IHDR、IDAT、IEND。
PNG图片结构中使用的CRC校验算法代码如下:
unsigned long crc_table[256];int crc_table_computed = 0;void make_crc_table(void){unsigned long c;int n, k;for (n = 0; n < 256; n++) {c = (unsigned long)n;for (k = 0; k < 8; k++) {if (c & 1)c = 0xedb88320L ^ (c >> 1);elsec = c >> 1;}crc_table[n] = c;}crc_table_computed = 1;}unsigned long long update_crc(unsigned long crc, unsigned char *buf,int len){long long c = crc;int n;if (!crc_table_computed)make_crc_table();for (n = 0; n < len; n++) {c = crc_table[(c ^ buf[n]) & 0xff] ^ (c >> 8);}return c;}unsigned long long crc(unsigned char *buf, int len){return update_crc(0xffffffffL, buf, len) ^ 0xffffffffL;}
2、JPEG文件格式介绍:JPEG图片的结构如下,各子结构均采用TLV模式的结构特征,其中扩展信息子结构为非必要项。
3、GIF文件格式介绍:GIF图片基于颜色列表(存储的数据是该点的颜色对应于颜色列表的索引值),最多只支持8位(256色)。GIF文件还通过LZW压缩算法压缩图像数据来减少图片尺寸。
一个GIF文件的结构可分为文件头(File Header)、GIF数据流(GIF Data Stream)和文件尾(Trailer)三个部分。文件头包含GIF文件署名(Signature)和版本号(Version),一般地,GIF文件头固定为0x474946, GIF文件版本号:87a(1987年5月)或89a (1989年7月)。GIF数据流由控制标识符、图像块(Image Block)和其他的一些扩展块组成;文件尾只有一个值为0x3B的字符(';'),表示文件结束。下表展示了一个GIF文件的组成结构:
4、针对常见的图片文件的文件结构特征总结汇总如下表所示:
随着隐写技术快速发展和广泛应用,越来越多的隐写载体类型和新兴的隐写技术手段对隐写取证带来更大的挑战,我们将持续致力于创建和收集更广发的信息隐写数据库,为取证分析提供更多的思路和方法。
点个 在看 你最好看

