SSD和eMMC取证
本文由金恒源编译,由陈裕铭、Roe校对,转载请注明。
译者注:本文发表于2016年,距今已有7年之久,在这期间固态硬盘技术飞速发展,部分技术在当下已然称不上是“最新技术”。但知识不会过时,本文中所介绍内容仍具有借鉴意义。
本文延续了2012年发表的关于SSD取证的文章的系列。两年后,我们重新研究了SSD在自毁、解密trim机制、垃圾回收机制和数据重映射等技术。彼时,制造商接二连三地发布创新产品——3D TLC、更大更快的驱动器、压缩控制器的终结以及自带加密的SSD驱动器的推出都是大新闻。如今快进到2016年,市面上有大量且价格便宜的固态硬盘,在高科技战线中似乎没有什么变化。
除2.5英寸型号外,我们还注意到一种新的流行的外形尺寸,这种尺寸的固态硬盘常被用于超级本,以及一种由三星推出的用于许多移动终端设备的新型固态硬盘。在低端领域,我们看到eMMC芯片被用于低端Windows平板电脑和小型笔记本,这些芯片取代了传统的固态硬盘。在本文中,将试图弄清这一切对取证人员意味着什么。
Introduction/介绍
大约在十年前,固态硬盘(SSD)彻底改变了计算机存储,为人们带来了极快的访问速度、更低的功耗以及更少的机械零件(译者注:机械硬盘由大量且精密的零件构成,相比机械硬盘来讲,固态硬盘没有这些机械零件,只有一块集成电路板)。但与此同时固态硬盘也有严重的写入寿命限制。老式的固态硬盘在内存失效前只能承受一定数量的磨损。截至目前,固态硬盘的写入量仍然是一个限制。时至今日,尽管有着不断缩小的制程工艺和新型NAND闪存单元的发明(即TLC单元,每个物理单元可以保留3bit位信息,而不是MLC的2bit位和SLC单元的1bit位),但在写入量上仍然面对着同样的问题。
为了克服这些技术限制,并不断降低存储成本,制造商完善了一些非常智能的软件算法。这些算法确保单元之间的负载均匀分布,能够快速重新映射NAND单元的逻辑地址,以确保下一次写入操作发生在磨损最小的单元上。
基于闪存的另一个限制是,人们只能将新的数据写入空的单元中(即:擦除后的单元)。一旦固态硬盘被填满,每一个后续的写操作都会涉及到擦除数据块的内容,然后将新的数据写进单元。由于擦除闪存单元是一个比写入数据慢得多的过程,因此制造商会实行垃圾回收算法,擦除那些保存有已删除数据的单元。
那么SSD控制器如何知道数据块是否被使用呢?操作系统通过向控制器发送一个所谓的"trim"命令来告诉它。一旦trim命令发送,控制器就"知道"某些数据块中的数据不再被使用,并将它们添加到待清除列表中。这些块中的数据便会被内部的垃圾回收算法清除。
同时,系统不必在某一物理单元被擦除时等待。如果系统需要写一个新的数据块,SSD控制器会立即为操作系统所指的逻辑地址分配一个新的空闪存单元。这就是所谓的重映射。在今天的固态硬盘中,重映射一直在发生。
于取证而言,这其中最大的问题是:这些需要被清除的数据块会发生了什么?它的内容是否会立即消失,或者仍然可以从SSD中提取出来?答案是 "视情况而定"。
M.2: Thinner and Lighter SATA SSDs/M.2:更薄、更轻的SATA固态硬盘
M.2 是一种外形规格。符合 M.2 外形的设备可以使用 SATA、PCI-E 或 USB3.0 协议进行连接。大多数 M.2 SSD 驱动器都是使用 AHCI 作为逻辑接口的 SATA 或 PCI-E 设备。一些高端型号使用 PCI-E 连接和 NVMe 接口。配备 M.2 SSD 驱动器的笔记本电脑如果运行 Windows 7,则可能无法使用trim机制。
最初,固态硬盘只有2.5英寸规格(笔记本大小)的磁盘。这在制造超便携设备时成为了一个限制。为了克服这个问题,业界开始使用M.2,这是一个相对较新的用于轻薄设备的固态硬盘的外形尺寸。
英特尔530系列M.2固态硬盘驱动器
M.2设备有一个标准的PCI-E连接器。虽然大多数M.2固态硬盘符合AHCI规范,支持其全尺寸同类产品的所有功能,并可以被操作系统识别为标准的SATA固态硬盘,但一些型号符合较新的NVMe规范,需要不同的驱动程序。
M.2固态硬盘可以用于一些台式机主板
严格来说,以下的型号都属于M.2固态硬盘。
使用传统SATA协议的M.2硬盘。许多M.2固态硬盘采用了传统的SATA协议连接,并通过AHCI接口驱动。这些M.2驱动器的效果与标准的2.5英寸SSD驱动器没有区别。
使用AHCI的PCI-E设备。该标准用于那些利用PCI Express通道进行连接,并通过AHCI协议与设备连接的PCI-E固态硬盘。这些驱动器需要操作系统包含正确的驱动程序。
使用NVMe协议的PCI-E。这些是最快的SSD驱动器,由于它们非常新,所以兼容性最差。在没有适当的BIOS支持的情况下,将NVMe驱动器安装到PC上可能会导致系统无法启动。虽然许多主板不能从NVMe驱动器启动;但在较旧的主板上使用时,Windows系统也可以通过适当的驱动程序访问这些驱动器。截至目前,这样的产品并不是很多,一般存在于一些高端机型。
PCI Express (PCI-E) SSDs/PCI Express (PCI-E)固态硬盘
PCI-E,即PCI Express,是一种物理连接标准。PCI-E固态硬盘有多种形式,包括全尺寸台式机扩展板、M.2硬盘、专用焊接的便携式存储解决方案。PCI-E固态硬盘可以使用AHCI或NVMe进行对接。
从技术上讲,M.2 SSD是PCI-E设备。然而,PCI-E规范比M.2更广泛。因此,制造商可以生产不符合M.2标准的专有PCI-E固态硬盘,在符合M.2标准的计算机中可能无法使用。
PCI-E固态硬盘最常用于某些高端工作站(全尺寸规格),以及一些超薄型号设备(例如,Apple公司生产的MacBook 2015笔记本电脑)。这些专有的存储设备直接连接到计算机的PCI-E总线上,并要求操作系统使用正确的驱动程序。
大多数(而非所有)的PCI-E固态硬盘都支持与其全尺寸SATA连接的同类产品相同的技术。根据驱动程序的版本、操作系统的版本和PCI-E SSD驱动器的型号不同,这些磁盘在执行trim工作时可能会出现异常。
在逻辑接口层面,PCI-E SSD驱动器可以通过AHCI接口或NVMe接口工作。
英特尔NVMe SSD驱动器
一般来说,以下兼容性模型适用于PCI-E SSD。
• Mac OS X:所有出厂时安装有PCI-E SSD驱动器的苹果设备都支持trim。
• 运行Windows的Macbook电脑。苹果Macbook使用专有的PCI-E SSD驱动器。苹果的Bootcamp常被用来安装Windows作为双系统或唯一的操作系统,在适用的情况下,支持trim穿透(见下文)。
• Windows:对PCI-E驱动器的trim功能支持与否,取决于Windows版本和正确的驱动程序。
Windows 7:无论驱动器如何,PCI-E驱动器都不支持trim,即使PCI-E SSD接受trim命令也是如此。
Windows 8, 8.1 和 Windows 10: 使用微软的本地驱动程序支持trim。也支持基于NVM的PCI-E固态硬盘的trim。使用SCSI驱动的设备支持 "unmap",这是SATA中trim命令的完整模拟。(译者注:trim是一条ATA命令,主要用于垃圾回收,相似作用的命令有很多,根据不同接口有不同的命令,如作用于SATA的命令是TRIM,作用于SCSI的命令是UNMAP,作用于NVME的命令是Deallocate。)
NVM Express (NVMe) SSDs/NVM Express (NVMe)固态硬盘
NVMe是一种现代逻辑接口规范,取代了旧的AHCI。某些高端 PCI-E SSD 型号采用了各种外形尺寸的 NVMe。苹果MacBook 2015在焊接在主板上的SSD驱动器上有专用的NVMe接口。NVMe仍然相当新,一些主板无法识别NVMe存储作为可启动设备。
NVM Express,或称NVMe,是一个相对较新的逻辑驱动器接口,通过PCI Express(PCI-E)总线实现非易失性存储。NVMe的设计从头到尾都是为了闪存设备的低延迟和内部并行性的实现。
与作为2.5英寸驱动器和薄型M.2板的SATA固态硬盘类似,NVM Express设备也可作为全尺寸的PCI Express扩展卡、笔记本尺寸的主板和2.5英寸驱动器,看起来与SATA固态硬盘类似,只是通过U.2连接器利用PCI Express接口而不是SATA端口罢了。
NVMe将支持trim机制作为其可选的命令集的一部分。在现实生活中,NVMe SSD驱动器通常出现在高端系统中,这些系统被适当配置,可以启用trim功能。
参考链接:https://belkasoft.com/ssd-2016