本文由金恒源编译,由陈裕铭、Roe校对,转载请注明。
在系列文章的第一篇中,回顾了几种现代常用的固态硬盘(M.2、PCI-E、NVMe设备),并谈到了这些设备的数据获取。本文将讨论外置固态硬盘和eMMC的相关内容,并将涉及eMMC的trim机制。
eMMC存储的出现
eMMC是一种基于闪存的非易失性存储设备,多用于小型设备和移动设备。eMMC存储用于大多数Android智能手机、Android和Windows平板电脑,以及一些并不昂贵的Windows二合一设备(译者注:在国外,Windows二合一设备一般分为两大类:屏幕可以360°旋转的笔记本称为Convertible;屏幕与键盘可拆分的笔记本称为Detachable)、低端上网本和超薄便携本,特别是那些配备较小显示屏和英特尔凌动系列处理器的设备。
在传统意义上,固态硬盘体积庞大且价格昂贵。近几代的Windows平板电脑、可折叠电脑和超轻台式机(其中大部分采用英特尔Atom芯片组)采用了一种体积更小、价格更便宜、运行速度并不快的eMMC芯片形式的存储。eMMC芯片本质上是一种SD卡,以BGA芯片的形式焊接在主板上。同SSD驱动器一样,eMMC芯片有一个内置的控制器,但eMMC控制器与SSD驱动器中使用的控制器相比要简单得多,速度也慢得多。因此,虽然eMMC可能采用与SSD驱动器相同的技术(即预留空间、重映射、TRIM和背景擦除),但可能阉割了其他的一些功能。(例如许多安全功能,如DRAT或DZAT)即使eMMC控制器实现了后台垃圾收集机制,但与SSD驱动器相比,它的工作速度也会慢得多,因为只有一个单一通道可被用于所有的读写操作。eMMC芯片并不具有SSD驱动器的大规模并行性,因此读取或写入数据的速度会慢很多。
(译者注:Trim机制分为不同的类型:
• 非确定性TRIM:TRIM后每个对逻辑区块地址(LBA)的读取命令可能返回不同的数据。
• 确定性TRIM(DRAT,Deterministic Read After Trim):TRIM后对LBA的所有读取命令都返回相同的数据。
• TRIM后确定性读零(RZAT,Read Zero After Trim):TRIM后对LBA的所有读取命令都将返回零。)。
值得注意的是,eMMC标准正确定义了对空块的trim活动。那么,位于eMMC芯片上的trim块会发生什么呢?与固态硬盘类似的是,它们在任何时候都可能被映射到可寻址空间之外,也可能不被映射到可寻址空间之外。与固态硬盘不同的是,eMMC标准没有定义DRAT或DZAT,这使得eMMC制造商可以自行定义当试图读取trim后的数据块时,存储控制器到底返回什么。根据经验,eMMC芯片中被trim标记过但尚未被擦除的数据块,仍然可以通过物理转储手段进行读取(如通过物理采集、JTAG、ISP或飞线等手段)。
与SSD驱动器相比,eMMC芯片镜像中,在trim块中保留数据的概率要高得多。
与固态硬盘类似,eMMC芯片可能有一个超额配置的区域,是不可寻址的,外部无法访问。也没有可行的方法可以从超额配置区提取信息。由于超额配置的数据块没有被映射到可用地址空间上,所以物理采集、JTAG、ISP或飞线都看不到该区域。只有内置控制器可以访问这些数据块。没有接口允许从芯片外部读取它们。即使你把芯片取出来直接读取,你也无法访问超额配置的数据块,因为eMMC芯片的飞线提取仍然依赖于向eMMC控制器发送的命令。
关于外置固态硬盘:UASP的到来
在最初的文章中,曾写过外置固态硬盘和USB外壳不提供Trim功能。但从那时起,出现了一个相对新的发展。
一种专门为USB连接固态存储而开发的新的存储连接协议。USB Attached SCSI(UAS or UASP)是一种新的协议,它使用标准的SCSI指令集,而不是目前大多数产品中使用的旧的USB大容量存储协议。
从本质上讲,新协议通过支持SCSI "unmap "命令进行trim机制。然而,为了使trim工作顺利进行,必须满足以下所有条件。
• 对UASP的硬件全面支持:计算机主板、固态硬盘和机箱内的存储控制器必须全部支持UASP
• 操作系统支持:自Windows 8以来,Windows原生支持UASP
• 驱动程序:只有少数符合UASP的芯片组有Windows驱动程序支持
• 数据线和USB端口:只有当设备用USB3.0数据线连接到USB3.0端口时,UASP才能工作。用其他数据线连接或使用传统的USB2.0端口,在大多数情况下会导致不兼容。(硬盘仍然可以作为USB大容量存储设备使用,但不支持trim)
符合UASP标准的外置存储设备自2014年底以来一直存在,所以现在是时候把它们列入我们的新文章了。
eMMC:在Windows和Android中的Trim机制
Trim在Windows和Android设备之间是不同的。由于你可能会在Android智能手机或平板电脑中遇到eMMC内存,因此将在本文中有所提及,但更专业的Android文献会给你更多的技术细节。
Windows
Trim命令是在操作系统释放一个数据块后立即向操作系统发出的。Trim只适用于NTFS格式的分区。此外,Windows 8及更高版本有一个内置的磁盘优化和碎片整理工具,可以定期运行并对固态介质上的整个未分配空间进行Trim。虽然Windows 7也有一个磁盘碎片整理工具,但它不带有对固态介质的优化。换而言之,一旦通过Windows操作系统从eMMC上删除一个文件,可以认为它的磁盘空间已经被Trim(但不一定被eMMC控制器删除)。
Android
Android系统只有在4.3版本的果冻豆中才支持完整的Trim功能。
译者注:从Android 1.5开始,Google将Android版本以甜品命名,如Android4.1至4.3,其版本以“Jelly Bean”,即“果冻豆”命名。下文中的“Android4.4 KitKat(奇巧巧克力)”“Android 5.0 Lollipop(棒棒糖)”同理
此外,可以肯定的是,当且仅当设备最初安装的是Android4.3系统或更新版本时,安卓设备才支持主动Trim。许多装有安卓4.2系统的设备后来被更新到安卓Kit Kat甚至Lollipop,但它们的制造商从未提供Trim支持(但其他一些设备却有)。
据Google称,所有活跃的安卓设备中约有25%运行的是安卓4.2或更早版本。在那些运行Kit Kat的34%的设备中,有一个未知的数字是从早期的安卓版本更新而来的,没有得到完整的Trim支持。那么这些旧设备怎么办?
早期版本的安卓系统依靠Linux fstream来清理未使用的数据块。由于没有 "实时"Trim,每次设备关闭时都要进行清理(Trim)。这是ACPO指南制定的原因之一,该指南详细说明了在原始状态下扣押和储存移动设备的过程("如果是开机状态,就不要关闭")。
译者注:英国首席警官协会(Association of Chief Police Officers,ACPO)成立于1948年,是一个非营利性组织,监管英格兰、威尔士和北爱尔兰的警务实践。为使实践工作能符合取证的原则和标准,ACPO推出了《电子证据取证的最佳实战指南》,并随着实践工作的转变而新增、修订和完善指南内容。
在该指南中提出了计算机取证的4条基本原则:执法机构及人员采取的任何举措均不能导致计算机及其存储介质中的可能向法庭提交的数据发生改变;在必须接触计算机及其存介质中的原始数据时,接触人员必须能够胜任,而且能够解释证据的关联性以及取证行为的相关性;计算机取证所有过程必须创建审计追溯记录或其他记录,并加以保存,任何独立的第三方机构经过程验证都可以得出相同的结果;负责调查的人员(案件负责人)要对法律和原则的遵行情况全面负责。
——引用自 国家保密局 科学技术司 网站文章《国内外电子数据取证标准规范研究》
如果你正在处理一个较老的安卓设备,你也许可以转储其eMMC芯片的物理镜像,并完全访问其未分配空间。
参考链接:https://belkasoft.com/ssd-2016-part2