JPEG图像文件头取证
2019-11-11邢文博杜志淳
邢文博 杜志淳
摘 要: 通过WinHex软件提取JPEG格式图像数据,对获取的数据进行解析,获取JPEG图像文件头的信息。从JPEG格式图像文件头中提取到图像的Exif信息,GPS信息,缩略图信息,量化表等数据。对从JPEG图像文件头得到的图像信息进行判断,可以确定JPEG格式图像是否经过图像处理软件处理。
关键词: 图像文件头; Exif信息; GPS信息; 数字图像取证
中图分类号:TP391 文献标志码:A 文章编号:1006-8228(2019)10-11-05
Abstract: Extracting JPEG format image data by WinHex software, parsing the acquired data, get the information of the JPEG image file header. Then extract the Exif (Exchangeable image file format) information, GPS (Global Positioning System) information, Thumbnail information, and Quantization table from the JPEG format image header. By judging the image information obtained from the JPEG image file header, it is possible to determine whether the image has been processed by image processing software.
Key words: image file header; Exif information; GPS information; digital image forensics
0 引言
JPEG圖像文件的后缀是.jpg或.jpeg。由于它是有损压缩图像文件,所以图像文件小,但图像质量能满足人眼的观察要求。其在图像的网络传输以及图像存储中都有广泛应用。人们在日常生活中从数码相机、手机、扫描仪等图像获取设备中得到的数字图像大多是JPEG格式的数字图像。数字图像处理软件的易用性,使得数字图像很容易被篡改,修饰等操作,改变数字图像记录内容的真实性。数字图像一旦作为证据使用,首先要确保数字图像的真实性。JPEG图像文件头中包含了数字图像文件的很多信息,从JPEG图像文件头中提取图像文件信息,以证实图像文件的一些基本事实。所以对于JPEG格式的数字图像取证必须从图像文件头开始。
Farid[1]利用JPEG格式图像量化表对其进行取证,Kornblum[2]从JPEG图像量化表判断图像被处理的软件,Farid[3]从JPEG图像缩列图来判断图像的真实性,Kee[4]利用JPEG图像文件头信息判断图像的真实性。卢启萌[5]等利用JPEG格式图像中的Exif信息对其进行取证,邢赛鹏[6]等对JPEG图像文件头数据进行了初步的分析。对JPEG格式数字图像进行取证,我们需要认识了解JPEG格式图像文件结构以及内容。
1 JPEG格式图像压缩重建过程
JPEG是联合图像专家组(Joint Photographic Experts Group)的缩写,这个图像压缩标准是国际电信联盟(International Telecommunication Union,ITU)、国际标准化组织(International Organization for Standardization,ISO)和国际电工委员会(International Electrotechnical Commission,IEC)合作努力的成果。JPEG标准正式地称为ISO/IEC IS(国际标准)10918-1连续色调静态图像数字压缩和编码(Digital Compression and Coding of Continuous-tone Still Images)和ITU-T建议T.81[7]。
JPEG的压缩模式有以下四种。
⑴ 顺序式编码(Sequential Encoding)
依次将图像由左到右、由上到下顺序处理。
⑵ 递增式编码(Progressive Encoding)
当图像传输的时间较长时,可将图像分数次处理,以从模糊到清晰的方式来传送图像。
⑶ 无损编码(Lossless Encoding)
⑷ 阶梯式编码(Hierarchical Encoding)
图像以数种分辨率来压缩,其目的是为了让具有高分辨率的图像也可以在较低分辨率的设备上显示。
现在流行的JPEG图像文件格式是顺序式的基于DCT变换的有损压缩编码模式。
由于人眼对亮度的改变比对色彩的改变敏感的多,将图像从RGB彩色系统转换为YCbCr彩色系统,以便对彩色信息进行降采样处理,提高图像的压缩率。JPEG采用YUV411或YUV422两种采样方式。YUV411采样方式是每取4个Y数据,取1个Cb数据,取1个Cr数据,在数据没有被处理前数据已经被压缩了50%。YUV422采样方式是指每取4个Y数据,取2个Cb数据,2个Cr数据,在数据没有被处理前已经被压缩了1/3。
连续色调静态图像数字压缩和编码对图像从左到右、从上到下进行的8×8像素的分块,不足部分补0。然后通过零偏置,将每个像素的值从0-255转变为-128-127。再对每一个图像块进行正向离散余弦变换,并用量化表中量化步长对变换的像素值进行量化并取整,在此造成图像信息的损失,在图像重建时只能近似恢复,而不能完全重建,所以是图像的有损压缩。随后在最小处理单元内对量化的直流成分进行差分编码,对量化的交流部分进行行程编码,然后再对形成的数据进行哈夫曼编码,最后形成对图像的压缩编码数据。
图像重建过程就是对图像的压缩数据进行解码。对图像压缩数据按照图像编码的逆过程进行解码,得到图像像素的量化数据,再对得到的量化数据按照量化表进行去量化,得到图像中每个像素的离散余弦变换数据,随后对得到的数据进行逆离散余弦变换,根据原图像的大小进行数据裁切,得到图像的像素值并将其值转化为0-255范围,然后将其转化为RGB像素值得到重建的数字图像。
为了在JPEG图像文件数据中区分数据的各个部分,连续色调静态图像数字压缩和编码标准规定了各个数据部分的标记,表示各部分数据的起始位置。
2 JPEG图像文件结构
JPEG本身只是描述如何将一个图像转换为字节的数据串流(Data Streaming),但并没有说明这些字节如何在任何特定的储存媒体上被封存起来。JPEG文件交换格式JFIF[8](JPEG File Interchange Format)对JPEG图像数据流进行了封装,可以使JPEG图像数据流在不同的平台及应用程序之间进行数据交换的最小的文件格式。图1是JFIF格式JPEG图像压缩文件基本结构。
JFIF把JPEG格式图像中的量化表,哈夫曼表与图像的数据流组合在一起,形成了复杂的JPEG格式图像文件头。用APP0标记确认是使用JFIF格式的JPEG文件交换格式,并紧跟在JPEG格式图像标识0XFFD8后面。没有缩略图的APP0一般有16个字节。其中两个字节用来表示APP0应用程序段的长度,五个字节是JFIF+NUL的ASCII字符,两个字节标示JFIF的版本号,一个字节表示像素单位,两个字节表示水平像素密度,两个字节表示垂直像素密度,一个字节0表示缩略图的水平像素,一个字节0表示缩略图的垂直像素。如果缩略图的像素数不是0,则后面紧跟RGB缩略图像素。如果缩略图像素是0,则APP0应用程序段结束。此后可以有JFIF的扩展APP0应用程序,两个字节的扩展APP0长度,扩展JFIF(Extension JFIF)标志的JFXX+NUL的ASCII码,不同的扩展代码代表缩略图的存储格式不同,有JPEG压缩的缩略图,索引图像的缩略图,以及每个像素用3个字节存储的无压缩缩略图。
在2010年4月,日本相机图像产品协会(Camera & Imaging Products Association CIPA)和日本电子信息技术工业协会(Japan Electronics and Information Technology Industries Association JEITA)联合制定了数码相机的可交换图像文件格式Exif(Exchangeable image file format for digital still cameras)并在2012年12月修订为 Exif Versin 2.3[9]。数码相机中的JPEG格式图像文件就具有交换图像文件的内容。图2是具有压缩缩略图的Exif图像文件结构。
Exif格式的JPEG图像文件是应用APP1应用程序,而没有APP0的应用程序。在APP1应用程序中,一般有2个图像文件目录IFD(Image File Directory),第0个图像文件目录(0th IFD),第1个图像文件目录(1th IFD)。在JPEG格式图像标记0XFFD8后面是APP1的标记,随后的两个字节表示APP1应用程序的字节数,4个字节是Exif的ASCII码,2个字节的0,8个字节的TIFF文件头,0X4D4D或0X4949。0X4D4D表示大端在前,0X4949表示小端在前,002A是固定的字节,为十进制数42,进一步确认该图像文件是TIFF格式。4个字节表示图像文件目录的开始时相对TIFF文件头的偏移量。随后是第0个图像文件目录的内容,开始后的2个字节表示在第0个图像文件目录中包含的图像标签(Tag)个数。紧接着是图像标签的内容。每一个标签有12个字节,2个字节表示图像标签(Tag),2个字节表示该标签的类型,4个字节表示该标记类型的数量,如果标记内容小于4个字节,后面的4个字节表示标签内容,如果多于4个字节,则这4个字节表示该图像文件目录内容相对于TIFF文件头的偏移量。如果没有下一个图像文件目录则以4个字节的00000000结束。如果还有下一个图像文件目录,在这个图像文件目录的最后的2个字节,表示下一个图像文件目录(1th IFD)相对于TIFF文件头的偏移量。下一个图像文件目录的开始的2个字节表示在这个图像文件目录中应有的标签数量。随后是每一个标签的内容。JPEG格式图像文件所具有的缩略图就在这个图像文件目录内,标签0X0201是JPEG交换格式的标签,0X0004表示是32位无符号整数类型,4个字节表示32位无符号整数的个数,4个字节表示缩略图数据相对于TIFF头的偏移量,标签0X0202表示缩略图数据字节长度,0X0004表示缩略图字节长度是32位无符号整数类型,4个字节表示32位无符号整数的个数,4个字节表示缩略图数据的字节数。如果没有其他的图像文件目录,在标签结束后以4个字节00000000结束。缩略图数据是一个完整的JFIF格式的JPEG图像压缩数据。
在第0个图像文件目录中有Exif专有的图像文件目录指针标签,GPS的图像文件目录指针标签,互操作的文件目录指针标签。Exif的图像文件目录指针标签0X8769,在偏移量处的2个字节表示Exif标签的数量,随后是Exif的标签。Exif2.3规定了69个Exif图像文件的标签(Tag),另外还有30个TIFF Ver.6.0版中的標签应用在Exif信息中以及自定义的一些标签。GPS的图像文件目录指针标签0X8825,在偏移量处的2个字节表示GPS信息的数量,随后是GPS的标签。Exif2.3规定了32个GPS信息标记。互操作的文件目录指针标签0XA005。
3 JPEG图像数据的解读
Winhex、UltraEdit软件直接对JPEG格式图像读取图像文件头信息。可根据文件头信息对JPEG图像的信息进行解读,以获取图像文件的相关信息。分别以Windows画图板生成一副100×100蓝色的JPEG图像,以PhotoshopCS4生成一副100×100蓝色的JPEG图像,用数码相机Canon D70拍摄一副JPEG图像,用小米redmi Note4手机拍摄一副JPEG图像,对用数码相机和手机拍摄的图像用Photoshop进行裁切,并存储为JPEG格式的图像,来分析这6副图像图像文件头的差异。图3是将要提取图像文件头的6副图像。
1是Windows画图板生成的图像。2是Photoshop生成的图像。3是CanonD70拍摄的图像。4是CanonD70拍摄的图像经过Photoshop裁切的图像。5是小米手机红米Note4拍摄的图像。6是小米手机红米Note4拍摄图像经Photoshop裁切的图像
图4是Windows画图板生成JPEG图像JFIF格式的图像文件头数据,它使用了APP0应用程序。在JPEG图像文件开始代码0XFFD8后面是APP0应用程序代码0XFFE0。0X0010表示APP0应用程序长度是16个字节,0X4A46494600是应用程序标示JFIF与NUL的ASCII码,0X0101是JFIF的版本号,表示1.01版。0X01是像素密度单位,表示每英寸多少个点(dots per inch)。0X0060是水平像素密度,表示每英寸96个像素。0X0060是垂直像素密度,表示每英寸96个像素。0X00是缩略图水平像素数,表示缩略图水平像素为0。0X00是缩略图垂直像素数,表示缩略图垂直像素为0。
PhotoshopCS4生成的JPEG图像具有APP0应用程序,以及APP1应用程序。其中APP1应用程序标示图像的Exif信息,在APP0应用程序后面是APP1应用程序代码0XFFF1。0X045C是应用程序的长度,表示APP1应用程序所具有的字节数。0X457869660000是应用程序Exif与2个NUL的ASCII代码。0X4D4D是TIFF(Tag Image File Format)格式文件开始代码。0X002A是TIFF文件确认数字即10进制的42。0X00000008是第0个图像文件目录(0th IFD)相对于TIFF文件头的偏移量。0X0007是第0个图像文件目录包含的标签数量,即7个标签。随后每12个字节表示一个标签(Tag)内容。7个标签后的0X000000D0是第1个图像文件目录(1th IFD)相对于TIFF文件头的偏移量。在第1个图像文件目录中有JPEG图像文件的缩略图数据。
数码相机Canon D70拍摄JPEG图像是Exif格式的图像文件头。它没有APP0应用程序,只有APP1应用程序。0X51F0是APP1应用程序的字节数。0X4949是TIFF文件格式代码,表示数据的小端在前。0X2A00是TIFF文件的确认数字是10进制数42。0X08000000是第0个图像文件目录(0th IFD)相对于TIFF文件头的偏移量。0X0C00是第0个图像文件目录包含的标签数量,是12个标签。随后每12个字节表示一个标签(Tag)内容。0X6987是Exif图像文件目录的指针标签,0X0400是指针的类型,表示指针是32为无符号整数,0X01000000是指针的数量,表示是1个指针。0X68010000是Exif信息相对于TIFF文件头的偏移量。在那里有数码相机记录的Exif信息。0X2588是GPS信息指针标签,0X0400是指针的类型,表示指针是32为无符号整数,0X01000000是指针的数量,表示是1个指针。0XB8240000是GPS信息相对于TIFF文件头的偏移量。在那里有数码相机记录的GPS信息,12个标签后的0XBA2A0000是第1个图像文件目录(1th IFD)相对于TIFF文件头的偏移量。在第1个图像文件目录中有JPEG图像文件的缩略图数据。
数码相机Canon D70拍摄的图像经过Photoshop处理,其部分文件数据具有APP0、APP1应用程序。
小米手机redmi Note 4拍摄的图像,它有APP1应用程序,其中具有一些自定义的一些标签如0X2002,0X2102,0X2502等。
小米手机redmi Note 4拍摄的图像经过Photoshop处理,其文件数据有APP0、APP1应用程序。
4 JPEG图像文件缩略图差异
Windows画图板生成的图像没有自带的缩略图数据。Photoshop CS4生成的图像、佳能D70数码相机,红米手机等拍摄的JPEG图像文件头中都有缩略图数据。图像经过Photoshop处理过后的图像都有缩略图数据。图5是从图像文件头中提取的图像缩略图。
1是Photoshop CS4生成图像缩略图,2是数码相机Canon D70拍摄图像缩略图,3是数码相机Canon D70拍摄图像经过Photoshop CS4处理后生成图像缩略图,4是小米手机Redmi Note 4拍摄图像缩略图,5是小米手机Redmi Note 4拍摄图像经过Photoshop CS4处理后生成图像的缩略图。
根据DCF(Design rule for Camera File system)2.0版的规定,数码相机拍摄图像的缩略图像素应该是160×120,如果拍摄图像本身的大小不是4:3,则会将图像以0填补成4:3,则图像会生成黑边。所以我们看到数码相机Canon D70拍摄的图像图3中的3图,图像大小是5184×3456,其图像文件中的缩略图是图5中的2图,具有黑边。其他JPEG图像文件中的缩略图根据各自的采样规则生成大小不同的缩略图。Photoshop CS4生成100×100像素图像的缩略图像素是100×100。数码相机Canon D70拍摄的图像经过Photoshop CS4处理后的图像是图3中的4图,大小是3918×2574,图像文件中缩略图大小是160×105即圖5中的3图,小米手机Redmi Note 4拍摄的图像是图3中的5图大,小是4160×3120,图像文件中缩略图的大小是192×144即图5中的4图,小米手机Redmi Note 4拍摄的图经过Photoshop CS4处理后的图像是图3中的6号,大小是3250×2982,图像文件中缩略图大小是160×147即图5中的5号。
5 Exif信息查看修改軟件
Opanda PowerExif采用图形用户界面可以查看编辑Exif信息,功能强大,操作简单,可以修改Exif信息,添加Exif信息,删除Exif信息,全部清除Exif信息。
只有Exif信息的JPEG格式图像,全部清除Exif信息后,会给图像加上APP0应用程序,使图像具备JFIF格式的Jpeg格式图像。如果删除Exif信息进行保存或另存为处理,则在文件头中加入APP1应用程序头,但没有应用程序内容。在没有Exif信息的JPEG格式的图像中添加Exif信息,将在图像文件头中添加APP1应用程序,同时保留APP0应用程序。
6 量化表的提取和查看
JPEGsnoop软件查看JPEG图像文件头信息,提取图像Exif信息,量化表,哈夫曼表,缩略图的量化表,哈夫曼表等信息,并根据压缩特征与Exif元数据的分析对检测图像进行评估分级。JPEGsnoop的原图检测一共有四个等级,Class 1表明可以确定照片被修改过,Class 2表明照片极可能被修改过,Class 3表明照片极可能是原图,Class 4表明JPEGsnoop无法匹配到原图特征。
JPEG图像的量化表和Exif信息可以通过Winhex或UltraEdit进行修改。可以改变图像被处理过程中附加的应用程序信息。
图6是对画图板图像添加数码相机拍摄图像的Exif信息,并从添加数码相机Exif信息的画图板图像中提取缩略图图像。
1是画图板图像。2是数码相机拍摄的具有Exif信息的图像。3是将2图中的Exif信息添加到1图中的图像。4是从3图中提取的Exif信息中的缩略图。
图像的元数据本该是标示图像真实性的一组数据,但是它可被数据处理软件修改,从而改变图像元数据记录图像数据的真实性。图像元数据与数码相机记录的元数据一致并不能当然认定图像的真实性。
7 结论
JPEG图像文件格式分为JFIF的JPEG图像文件格式以及Exif的JPEG图像文件格式。从图像文件头中可以提取图像文件的一些信息,比如图像量化表,图像获取时数码相机的相关参数,图像获取时的GPS参数,以及图像获取设备生产的图像缩略图等。在图像文件头信息没有被修改时,可以从中获取图像被篡改的相关信息。在图像文件头信息被修改后,没有获取图像被篡改信息,并不等于图像没有被篡改。要获取图像被篡改信息还需要对图像数据进行分析取证。JPEG图像文件头信息,是对数字图像进行分析取证首先要做的工作。
参考文献(References):
[1] Farid H. Digital Image Ballistics from JPEG Quantization[J].Comput.sci.dartmouth College Tech.rep,2008.
[2] Kornblum J D.Using JPEG quantization tables to identify imagery processed by software[J].Digital Investigation,2008.5(1):21-25
[3] Farid H. Digital image authentication from thumbnails[C]//Media Forensics and Security II.DBLP,2009:75410
[4] Kee E, Johnson M K, Farid H. Digital Image Authentication From JPEG Headers[J]. IEEE Transactions on Information Forensics & Security,2011.6(3):1066-1075
[5] 卢启萌,施少培.Exif信息在数码照片真实性鉴定中的应用[J].中国司法鉴定,2012.5:86-90
[6] 邢赛鹏,平西建,詹杰勇.JPEG图像数据格式简明分析[J]. 微计算机信息,2005.26:166-168
[7] CCITT T.81,Information Technology Digital Compression and Coding of Continuous -Tone Still Images Requirements and Guidelines.[S].
[8] Hamilton E.JPEG File Interchange Format[M].Fer Publishing,2004.
[9] CIPA DC -008 -Translation_2010,Exchangeable image file format for digital still cameras:Exif Version 2.3.[S].