学那么久取证还没搞懂“文件签名”? – 作者:adela505

熟悉取证或数据恢复的人,应该都知道文件签名,但要深究起来究竟什么是文件签名、为什么文件签名可以这样用,许多人除了引用一段干巴巴的定义,还真说不出个所以然来。

在CDF电子取证训练营第18期学员的作业里,我也发现了这个问题,用倒是会用,但细究起来却有很多谬误之处。

所以今天我们就好好掰扯一下,文件签名究竟怎么个回事儿。

什么是文件签名?

如果你在百度上搜索“文件签名”,会觉得莫名其妙:

1.jpg

上图的文件签名又称数字签名,指的是公钥加密的方式,跟我们所说的“文件签名”完全不是一概念

如果想找资料,可以用英文”file signature“查询,如下图:

2.jpg

我们在取证和数据恢复中常使用的【文件签名】,对应的其实是【文件格式】这个概念,但又比通常所说的”格式“在含义上要更底层一点,后面我们会详细辨析的。

我们先来了解文件格式的定义:

【文件格式】是指电脑为了存储信息而使用的对信息的特殊编码方式,是用于识别内部储存的资料。比如有的储存图片,有的储存程序,有的储存文字信息。每一类信息,都可以一种或多种文件格式保存在电脑存储中。

下面划重点!!!

文件签名就是指各种文件格式中一段独特的字节。

每一种格式都有和其他格式不同的字节段,这一段字节即【文件签名】,一般来说它的存在可以告诉我们某个文件是什么格式的,就好像画家会把自己的名字藏在画中,只要找到就能知道是谁画的一样。(也许这是file signature取名由来吧)

举个例子看看文件签名长什么样子:

3.jpg

这是一个压缩文件的文件签名示例,可以看到这个文件的格式是Rar,其特有的文件签名为”52 61 72 21“字节段。也正是通过这个字节段,取证工具能解读并判断出来它是Rar格式的文件。

其他各种文件格式的文件签名都有所不同,如下图一些常见的文件格式签名:

注:都还记得计算机储存信息的方式是0和1二进制对吧,为了方便大多数文件底层的展现都是用的16进制。

不同格式的文件签名不同,有的长些,有的短些,有的在文件的开头,也有的可能在文件的中间或者结尾。一般情况下,我们在一个文件的16进制中发现了某段签名,基本可以判断它是什么格式的文件了。

4.jpg针对文件签名的辨析

明白了文件签名是什么,我们现在进一步地辨析几个概念,加深理解。

你能分清以下四个概念的区别吗?

文件类型、文件扩展名、文件格式、文件签名

Wendy认为有种类比的方式,能更好地帮助理解,如图:

5.jpg

为什么要这样比喻呢?

因为有些误区和例外就很好理解了。

误区1:文件扩展名就是文件类型和文件格式。

辨析:

一般情况下,文件扩展名所标记的就是该文件的格式,但是文件扩展名是可以修改的,因此我们会发现有些文件的扩展名和它的实际文件格式并不符合,从而无法正确打开。(好比白色皮肤的人不一定是白种人)

误区2:只要找到了文件签名的那段特殊字符,就一定是那种格式的文件。

辨析:

通常来说是可以的,但也有可能会出现巧合——例如:其他格式的文件内容中碰巧也有一段字节是”52 61 72 21“,却不是压缩文件。这个时候,我们一要看这段特殊字节的位置(通常是在文件头),二要看能否按照这个格式正常打开文件。

误区3:所有的文件都有文件签名。

辨析:

不一定。

我们已经知道,某个格式在被创造出来的时候,就已经定义了其特殊的存储方式,文件签名只是从不同的存储方式中提炼出来的一种简洁的体现形式,可以看作是对文件格式底层规律的总结。我们一一收集这些规律,汇总到一起,所以才知道 “52617221”开头的文件是RAR格式,  “FFD8FFE1”开头的文件是JPEG 格式。但是还有些文件,并没有这样的规律,或者说我们并无法总结出来固定的规律,例如txt文本文件,就没有文件签名。

说明:

1. 以上比喻只是为了更好帮助理解不同概念之间的差别,对”喻体“在生物学上的含义不做深究。

2. 有时候,文件类型和文件格式指的是相同概念,文件格式比文件类型可能更具体,当然这取决于使用情景。

我相信,通过今天的辨析,大家应该彻底明白了文件签名的本质了。下期我们继续讲”文件签名的功能和应用“——只有明白了最底层的规律,才能真正掌握知识。

6.gif

来源:freebuf.com 2019-05-16 16:21:35 by: adela505

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论