第18章 固态驱动器的安全文件删除
摘要
固态驱动器由于其可靠性、性能和低功耗,正变得越来越流行用于数据存储。随着这些驱动器上存储的敏感数据量增加,安全擦除敏感信息的需求也变得更加重要。然而,这个问题具有挑战性,因为传统硬盘上使用的工具和技术由于内部架构的差异,并不总能在固态驱动器上有效工作。由于磨损均衡及相关特性,单个文件清理在固态驱动器上极不可靠且难以实现。本章提出了一种在固态驱动器上进行单个文件清理的可靠方法。该方法称为FTLSec,它在通用闪存转换层中集成了一个基于页的加密系统。通过FlashSim固态驱动器模拟器对FTLSec的有效性进行了测量。结果与知名的FAST闪存转换层方案以及理想化的页映射闪存转换层进行了比较。
关键词
固态驱动器,闪存转换层,安全文件删除
引言
大量敏感数据存储在数字存储介质中。当不再需要这些敏感数据,或个人或组织希望更换过时的计算设备时,处理这些敏感数据就变得尤为重要。安全数据删除也是政府和商业企业处理政策中的关键组成部分。
安全删除是指删除数据,使其变得不可恢复。安全删除也称为清除、净化和擦除。对于硬盘驱动器等传统存储设备,已有多种用于安全删除的工具、技术和标准。
然而,由于固态驱动器(SSD)相对较新,针对此类介质的标准和技术较少。固态驱动器相较于机械旋转硬盘具有一些优势,但其使用的闪存存在一些固有的限制,例如有限擦除次数和先擦除后写入。固态驱动器将数据存储在NAND闪存中,该闪存被划分为块和页。每个页包含多个块。页是读写操作的基本单位,而擦除则以块为单位进行。页的写入必须先进行擦除操作。由于原子性上的差异,擦除操作比读取或写入操作代价更高。此外,擦除还会显著降低闪存的整体写入性能——每个块只能被擦除有限的次数(通常为10,000到100,000次),之后便会变得不可靠。
为了减少擦除次数,现代闪存固态硬盘包含一个闪存转换层(FTL)。闪存转换层使用一张将逻辑地址映射到物理地址的映射表,以异地更新方法替代先擦除后写入的方式。在写入新页时,闪存转换层选择一个已经空闲或已被擦除的页进行写入,使该页之前的版本变为无效,并更新映射表。为实现此方法,闪存转换层采用垃圾回收器(GC),通过将块中的有效页面(如果存在)复制到一个新的已擦除块中,然后擦除整个原始块,从而回收该块中的无效页。为了延长固态驱动器的寿命,闪存转换层实现了一种磨损均衡算法,以将写入操作均匀地分布在闪存固态硬盘的所有块上。磨损均衡可防止数据持续写入相同的位置。
固态驱动器和硬盘驱动器具有不同的内部架构和存储机制。因此,应用于硬盘驱动器的全盘清理或单个文件清理技术在固态驱动器上可能无效。由于垃圾回收和磨损均衡,对固态驱动器上的单个文件进行安全删除是一项相对具有挑战性的任务。异地更新后的无效页上残留的数据也使安全删除任务更加复杂。
为了在固态驱动器上实现单个文件的安全删除,需要对通用闪存转换层进行某些修改。本章描述了一种基于需求的闪存转换层(DFTL)的修改方案,该方案包含一个基于页的加密系统(PES)。修改后的闪存转换层技术称为FTLSec(带安全擦除的闪存转换层),它提供了一种从固态驱动器中安全删除单个文件的方法。实验已进行以证明FTLSec的有效性及其相比其他闪存转换层方案的优越性能。
背景
为硬盘驱动器提供逻辑块地址(LBAs)数组是合理的,因为其扇区可以被覆盖。然而,这种方法并不适用于闪存。因此,需要一个额外的组件,即闪存转换层,来隐藏NAND闪存的内部特征,并仅向操作系统暴露一个逻辑块地址数组。闪存转换层位于固态驱动器控制器中。闪存转换层的主要功能是地址转换,即将操作系统所见的逻辑地址转换为NAND闪存的物理地址。闪存转换层所使用的映射表及其他数据结构存储在一个小型、快速的基于片上静态随机存取存储器(SRAM)的缓存中。由于SRAM容量有限,限制了闪存转换层实现高性能的能力。此外,固态驱动器中的数据越多,意味着SRAM中存储的数据也越多,这是不理想的,因为SRAM每字节的价格高于固态驱动器。
除了地址转换外,闪存转换层还实现垃圾回收和磨损均衡。垃圾回收在后台运行,将无效页转换为空闲页。由于固态驱动器的擦除次数有限,因此采用磨损均衡来延长驱动器的寿命,通过尽量均匀分布数据,使每个块的磨损程度相同。
闪存转换层方案根据其映射粒度分为三种类型:(i) 页级映射;(ii) 块级映射;和 (iii) 混合映射。这三种方案大致按其复杂程度排序。每种闪存转换层方案在性能、内存开销和寿命方面都有各自的权衡。
页级映射方案是一种简单直接的方法,其中每个逻辑页都被映射到一个对应的物理页。因此,如果n个逻辑页被映射到物理页,则映射表的大小为 n。该方案提供了相当大的灵活性,但需要较大的映射表,从而需要大量SRAM,这可能会显著增加制造成本。例如,一个页面大小为2KB的1GB闪存芯片需要2MB的SRAM来存储映射表。
块级映射方案将逻辑地址划分为逻辑块和偏移量,仅逻辑块地址被映射到物理块地址(PBAs)。与页级映射相比,块级映射能够处理更大的SRAM。逻辑块中的逻辑块偏移量与物理块中的物理块偏移量相同。该映射方案所需的SRAM内存比页级映射方案少64倍(每块页数为64)。
混合映射方案是页级映射和块级映射方案的结合。所有混合闪存转换层方案都共享一个基本思想:日志块映射,该方法类似于日志结构文件系统。在此方案中,物理块被分为两组:(i)数据块;和(ii)日志块。数据块构成闪存固态硬盘的主要部分,并通过块映射方案进行映射;少量固定的块被标记为日志块,并以页粒度进行维护。当收到对数据块中某页的更新请求时,混合日志块方案将新数据写入从池中分配的日志块,并使之前存储在数据块中的数据版本失效。注意,对于每个写入请求,页的逻辑地址也会存储在每个页的带外(OOB)区域中。
相关工作
本节讨论与NAND闪存驱动器上安全删除相关的现有工作。用户通过接口与物理介质进行交互。该接口提供将用户数据对象转换为适合在物理介质上存储形式的函数。这种转换还可包括加密、纠错和冗余等操作。在用户应用程序与存储数据的物理介质之间存在多个层次和接口。
层和接口
最低层是物理介质,也称为存储管理层。NAND存储器驱动器通过控制器进行访问,具体来说,是通过执行固件代码的嵌入式处理器。NAND闪存通过闪存转换层控制器进行访问,该控制器将操作系统的逻辑地址映射到闪存芯片上的物理块地址。与硬盘驱动器控制器不同,闪存转换层控制器不支持原地更新覆盖并重新映射到新位置,留下陈旧数据;这使安全删除变得复杂。
安全删除的层级选择
安全删除可以应用于任何层。在最低层进行安全删除可确保数据被安全删除且不可恢复;相比之下,在用户层进行安全删除便于识别数据块。物理层的安全删除更为理想,因为用户不知道需要删除哪些数据块。而用户层方法虽然易于识别待删除的数据块,但无法获知数据块的具体位置。文件系统层的安全删除方法介于物理层方法和用户层方法之间。
控制器级别方法
闪存转换层负责管理通过ATA和SCSI等标准接口可见的逻辑块地址与闪存的物理页之间的映射。这些接口提供内置擦除命令,可指示板载固件在闪存驱动器上执行清理协议。这些命令更可靠,但并非所有闪存驱动器都支持。此外,内置命令适用于全盘清理,而不适用于单文件安全删除。
ATA接口规范定义了ERASEUNIT和增强型擦除单元命令,用于安全擦除所有用户可寻址区域。ATA/ATAPI命令集‐3(ACS‐3)工作草案中包含了块擦除扩展命令,该命令仅在设备支持清理功能集时才能成功执行。
魏等人发现,并非所有固态驱动器都支持ATA命令。一些驱动器支持ATA命令,但未正确实现,导致数据在驱动器上保持完整。其他驱动器则正确实现了ATA命令。因此,ATA命令的支持和实现取决于供应商。斯旺森等人提出了一种可靠的全盘清理方法,该方法使用密钥加密要存储在闪存驱动器上的数据,随后销毁该密钥。在这种情况下,每个块都会被擦除并用定义的模式写入,然后再一次擦除。最后,通过向闪存控制器提交一个新的(不同的)密钥来重新初始化闪存设备。
文件系统级方法
应用级方法存在局限性,因为它们无法直接访问物理介质。控制器级方法难以区分已删除数据和有效数据,因为它们无法访问物理数据位置和元数据。文件系统级方法介于这两种方法之间。文件系统通常不了解物理介质,并通过设备驱动程序接口来访问它。
数据压缩
压缩可平衡写入和擦除粒度之间的不对称性。它会压缩包含已删除数据的块(擦除单元),将有效的共存数据复制到其他位置,然后执行擦除操作。复制数据后再擦除整个块是一种开销较大的操作,同时也会增加NAND闪存固态硬盘的磨损。然而,目前尚无基于擦除的即时安全删除方法能够优于每次删除一个擦除单元的擦除。即时安全删除至少需要一次擦除。任何进一步减少每次删除所擦除擦除单元数量的改进方法,都必须批量删除并执行间歇性安全删除。
单文件安全删除
日志结构文件系统通常被用作闪存文件系统。李等人提出了一种针对日志结构文件系统的高效的单文件安全删除方法。在这种方法中,文件数据被加密,密钥存储在同一块中。为了安全地删除文件数据和元数据,需删除对应的密钥对块上的文件进行简单擦除。该方法已适配到YAFFS实现。Reardon等人为UBIFS闪存文件系统实现了一种安全删除方法。每当数据写入文件系统数据节点时,该数据会被加密;当从闪存设备读取数据时,数据会被解密。通过清除存储所有密钥的逻辑密钥存储区中的密钥,实现安全删除。
魏等人提出了一种称为擦除(scrubbing)的闪存即时安全删除方法。该方法通过重新编程各个页,将所有剩余位变为零。该方法可通过擦除闪存阵列中包含无效数据的页来清除数据残留,或在写入新版本时擦除包含旧版本的页以防止数据残留的产生。擦除闪存擦除单元是恢复存储单元电荷的唯一方法,但使用写入操作也可耗尽存储单元的电荷。这些存储单元无法再用于存储新数据,但其上的敏感数据会立即失效。幸运的是,擦除单元上共存的其他数据仍可正常使用。关于擦除的一个问题是其表现出未定义的行为。魏等人研究了不同类型内存的错误率,结果显示错误率差异很大。擦除在某些设备中频繁引发错误,而在其他设备中则不会产生错误。
应用层方法
在应用层,安全删除方法由与符合POSIX的文件系统交互的用户应用程序执行。主要方法包括:(i)在正常删除(解除链接)之前覆写文件内容;(ii)解除链接文件并填充驱动器上的空闲空间;(iii)通过调用驱动器控制器中的安全删除例程来覆写整个分区或驱动器。
覆写通过使用不同的比特模式进行多次写入操作来清理文件。由于NAND闪存驱动器不允许就地覆写,因此覆写工具不一定能有效安全删除单个文件。
空闲空间填充工具会写入驱动器上的空闲空间,确保敏感数据已从驱动器中安全删除。显然,填充空闲空间的代价与可用空闲空间成正比。如果可用空闲空间较大,则需要更长时间来完成填充;这可能导致闪存设备产生较高的磨损。
应用级填充空闲空间是YAFFS中唯一可用于用户级别安全删除数据的方法。Reardon等人提出了两种适用于YAFFS文件系统的方法:(i)清除;和(ii)膨胀。清除会立即擦除空闲空间,而膨胀则通过使文件系统充满垃圾数据来频繁执行安全删除,从而导致更频繁的YAFFS垃圾回收。
安全擦除整个驱动器可删除存储在NAND闪存中的数据,包括元数据和目录结构。此过程所需时间取决于驱动器的大小;对于大容量驱动器,擦除可能需要很长时间。
跨层方法
如上所述,在最低层进行安全删除时,无法获知已删除数据对象的位置信息。因此,可以利用较高层将已删除数据的信息传递到最低层,从而实现对已删除数据对象的安全删除。TRIM和TrueErase采用此类方法。
TRIM命令使操作系统能够擦除因用户或操作系统删除操作而产生的包含无效数据的页。修剪(Trimming)允许固态驱动器处理垃圾回收开销,否则会显著减慢对相关块的未来写入操作。TRIM按需擦除无效页,因此可确保数据的安全删除。TRIM命令的设计初衷并非用于安全擦除,而是为了加速在闪存介质上的写入操作。然而,无法仅将TRIM命令限制于敏感块,这意味着底层安全删除数据的机制必须高效。只有当操作系统和固态驱动器均支持时,TRIM命令才有效。
TrueErase可不可逆地擦除硬盘驱动器和固态驱动器上的数据和元数据。TrueErase是一种按文件、无加密的安全删除方法,能够跟踪存储路径中的敏感数据。有关已删除块的信息通过在设备驱动程序和文件系统之间新增的通信通道传递至最低层。为确保安全删除,设备驱动程序经过修改,利用其底层接口实现即时安全删除。与TRIM命令相比,TrueErase能在更小的粒度上删除数据,且不存在延迟删除,因此更加有效。
提出的安全删除方法
提出的安全删除方法使用基于页的加密系统(PES)来安全擦除文件。该方法还对通用闪存转换层进行了一些修改。该方法包括三个步骤:(i)在将每个页写入NAND之前对其进行加密;(ii)将密钥存储在称为密钥存储区(KSA)的固定区域中;以及(iii)当需要删除特定文件时,擦除存储文件加密密钥的块。图2显示了数据被写入新页的过程,而图3显示了从页中读取数据的过程。
密钥存储区
密钥存储区被保留。NAND闪存固态硬盘的迁移块用于存储所有页的加密/解密密钥。某一页的加密/解密密钥的位置存储在该页的页头中。这些位置对应于逻辑密钥存储区编号和偏移量。为了删除一个密钥(该密钥可解密已删除数据),需对密钥存储区中的块进行处理。
密钥存储区必须定期擦除。当页在删除或更新时变为无效,该页在密钥存储区中维护的加解密密钥将被标记为已删除。此方法不同于文件删除——每当一个页被丢弃时,其对应的加解密密钥就会被标记为已删除。已删除密钥会一直保持已删除标记,直到被清除并由一个新的随机密钥取代;这个新的密钥将被标记为未使用。
Purging
清除是一个定期清除密钥存储区中密钥的过程。清除在密钥存储区的每个块上进行。在此过程中,选择一个新的密钥存储区块来复制位于相同位置的已使用密钥,并将已删除或未使用的密钥替换为新的未使用的随机数据。这种随机数据生成成本低且容易生成,在需要时被分配给新密钥。
在密钥存储区中,被标记为未使用的密钥在逻辑上是固定的,因为其对应的页已存储在NAND闪存固态硬盘上,直到在密钥位置执行擦除操作为止。所有包含无效数据的块都将被擦除,从而清除未使用和已删除的密钥及其加密的页。
Key State Map
密钥状态图将密钥位置映射到密钥状态。密钥可以处于三种状态之一:未使用、已使用或已删除。未使用的密钥是可以被分配并随后标记为已使用的密钥。已使用的密钥用于加密/解密有效页面;这些密钥确保用户数据的可用性。已删除密钥是用于加密/解密已删除数据的密钥,具体来说,是指文件系统不再需要的页,应由文件系统安全擦除以实现安全删除的目标。清除操作会用新值替换未使用和已删除的密钥;而已使用的密钥则保留在存储介质上。
闪存转换层修改
为了实现单个文件的安全删除,对通用闪存转换层进行了修改,并在其内部集成了一种基于页的加密系统。所有输入的数据在写入NAND闪存之前均被加密,并在每次读取操作时进行解密。密钥存储在预留密钥存储区域中,且为每个页的数据分配了密钥位置。修改后的闪存转换层的页级映射表还存储了对加密/解密密钥位置的引用,以便于一种将逻辑页映射到物理页的算法,同时也构建相应的加密/解密密钥位置。
密钥位置包含两个部分:(i)逻辑密钥存储区块编号;以及(ii)密钥存储区块内的偏移量。与每个密钥存储区块相关的元数据,包括逻辑密钥存储区块编号和时期编号,存储在每个逻辑密钥存储区块的最后一页中。
实验结果
目前没有公开可用的闪存固态驱动器原型用于测试闪存转换层方案。因此,实验使用了一个名为FlashSim的开源、经过验证的闪存固态驱动器模拟器进行。该模拟器被用来评估文献中提出的各种闪存转换层方案。FlashSim采用模块化架构,便于集成新的闪存转换层方案。在实验中,FlashSim被用来评估提出的闪存转换层(FTLSec)以及另外两种传统闪存转换层方案:(i) 一种混合闪存转换层方案(快速);以及 (ii) 一种理想的页映射闪存转换层方案。
实验设置
实验模拟了16GB NAND闪存。表1列出了模拟参数。额外块的数量从总块数的5%到9%不等。这些额外块被混合闪存转换层方案FAST用作日志块。
表1. 模拟参数。
| 参数 | 值 |
|---|---|
| 固态硬盘容量 | 16 GB |
| 页面大小 | 2 KB |
| 页面预留空间 | 64 B |
| 每块页数 | 64页 |
| 额外块百分比 | 5% 到 9% |
| 页面读取延迟 | 0.1309 毫秒 |
| 页面写入延迟 | 0.4059 毫秒 |
| 块擦除延迟 | 2 ms |
实验工作负载. 使用真实世界轨迹作为工作负载,以测量FTLSec相对于混合闪存转换层方案FAST和理想化的页映射闪存转换层方案的性能。选择了不同类型用于评估存储系统性能的轨迹。
表2. 实验工作负载。
| 工作负载 | 平均请求大小 (KB) | Read (%) | 写入 (%) |
|---|---|---|---|
| Financial1 | 3.00 | 9.0 | 76.8 |
| 网页搜索 | 14.86 | 97.3 | 2.70 |
| 交换 | 12.00 | 46.4 | 53.6 |
Financial1取自两个大型金融机构运行的OLTP应用(事务处理(OLTP应用I/O))。Financial1跟踪以写入为主。WebSearch跟踪是读取为主的 I/O 跟踪(搜索引擎I/O)。Exchange跟踪来自 Microsoft Exchange邮件服务器。
性能指标. 模拟中使用了两个指标:(i) 擦除块数量(垃圾回收效率的指标);以及 (ii) 平均响应时间(设备服务时间加上在驱动器队列中的等待时间)。
垃圾回收开销
垃圾回收在服务更新请求时可能涉及多种类型的合并操作(例如,交换、部分和完全)。这些合并操作在块擦除以及将块(受害块)中的有效页面复制到其他(空闲)块时会产生开销。
图6显示了垃圾回收开销的影响。结果表明,对于所有工作负载,FTLSec的垃圾回收操作比快速(FAST)更少。此外,当日志块使用的额外块数量增加时,垃圾回收操作的数量减少。图6还显示了块擦除的数量在WebSearch工作负载下最低。这是因为WebSearch以读取为主,且写入请求数量较少。因此,与Financial1和Exchange跟踪相比,WebSearch的垃圾回收开销更低。
(a) 块擦除。
(b) Financial1 traces.
(c) WebSearch 跟踪。
(d) Exchange 跟踪。
额外块的影响
如上所述,额外块用于在垃圾回收期间支持合并操作。实验中额外块的数量从总块数的5%到9%不等,同时在整个实验过程中保持固态驱动器容量不变。
对抗安全删除
为了应对固态驱动器上的安全删除等反取证方法,数字取证调查员必须充分了解用于安全删除驱动器内容的工具和技术。本节重点介绍了一些反反取证技术,以应对一个或多个文件被安全删除以及整个驱动器被清除的情况。
抵御单个文件清理
大多数隐私保护工具的目标是即时通讯聊天记录、图片、文档和视频文件。使用覆写技术安全删除这些文件并不能保证完全清除,仍会留下一些痕迹。这些痕迹包括:
最近事件: 浏览器历史记录、Skype 和 Hangout 聊天记录、文档和下载等最近事件仍可能存在于 Pagefile.sys 和 Hiberfil.sys 文件中。
多个副本: Windows 经常会为某些类型的文件创建多个副本。这些副本在复制或移动文件、临时保存工作文档以及压缩和解压文件时生成。仅对目标文件执行安全删除操作,其他副本仍将保留完整,这意味着数字取证调查人员可能定位并提取这些副本。
文件碎片: 如果通过覆盖方式擦除固态驱动器上的文件,由于大多数操作系统存在文件系统碎片,文件的碎片仍可能残留在驱动器上。如果碎片在重新整理前未被覆盖,则有可能部分恢复该文件。
易失性证据: 被扣押时正在运行的计算机或笔记本电脑,其内存中可能仍保留有相关痕迹。
卷影复制: 文件的旧版本可能存在于卷影复制中。
对抗全盘清理
整个固态驱动器的清理通过厂商定义的命令执行,这些命令反过来会调用TRIM。现代固态驱动器符合DRAT(修剪后确定读取)或 DZAT(修剪后置零)标准。这使得固态驱动器控制器返回全零或垃圾数据,即使驱动器上仍存在实际数据。在这种情况下,恢复固态驱动器数据是一项困难且耗时的任务。然而,如果固态硬盘固件未更新或存在缺陷,数据仍可能在磁盘上被找到。
结论
采用NAND闪存的固态驱动器正日益普遍地用于存储敏感数据。这使得固态驱动器的清理变得愈发重要。固态驱动器是数据管理的关键组件。本章介绍的FTLSec(具有安全擦除功能的文件转换层)方法可可靠地清除固态驱动器上的单个文件。FTLSec通过在通用闪存转换层中集成基于页的加密系统来实现其功能。实验表明,与著名的FAST闪存转换层方案和理想化的页映射闪存转换层方案相比,FTLSec的块擦除和垃圾回收操作更少。
1334

被折叠的 条评论
为什么被折叠?



