广东东卫环境科技有限公司

固态硬盘数据销毁技术综述

王经理    2023-06-27 06:26:38    507次浏览

1.固态硬盘的结构

固态硬盘(SolidStateDisk,SSD)是一种以固态半导体芯片为存储介质的大容量存储器。它主要使用两种固态半导体进行数据存储,一种是DRAM(易失性存储器),另一种是NANDFlash(闪存)。前者的优点在于存取速度较高,但需要独立电源。后者的优点在于无须独立电源即可工作,但存取速度相对较低。由于目前常见的固态硬盘主要以NANDFlash为存储介质,因此本文讨论的数据销毁方式仅适用于以NANDFlash为存储介质的固态硬盘。

固态硬盘由控制芯片、缓存芯片和闪存芯片三部分构成。

控制芯片的作用是合理调配数据在各个芯片上的负荷,连接闪存芯片和SATA接口。缓存芯片的作用与机械硬盘类似,主要完成读写数据的缓冲、存储较近访问数据等功能。闪存芯片的作用是存储用户数据,根据每单元(Cell)存储数据量的多少可分为SLC(Single-LevelCells)、MLC(Multi-LevelCells)和TLC(Trinary-LevelCell)三种。其中,SLC每单元存储1位数据,擦写寿命约为10万次,MLC每单元存储2位数据,擦写寿命约为3000-10000次,TLC每单元存储3位数据,擦写寿命约500-1000次。

固态硬盘不仅在存储介质上与机械硬盘有所不同,在管理和存储数据的方式上也有区别。固态硬盘维持了一个在操作系统存取数据的逻辑块地址和原始数据闪存地址的间接层来转换物理数据的储存。通过隐藏闪存特殊的接口和管理每个块的写入和擦除次数,该间接层增强了固态硬盘的存取性能和可靠性并大大提高了flash的使用寿命,但是它也产生了对于用户不可见的副本数据,而攻击者却可用其进行数据的恢复,对数据的安全造成极大隐患。

2.固态硬盘的数据销毁技术

近年来,针对硬盘的数据安全删除方法已经很成熟,但由于SSD和硬盘存在许多的不同,所以现有的硬盘安全删除方法并不全都适合运用到SSD.目前,针对固态硬盘的数据销毁技术可以分为三类:

2.1控制器层数据销毁技术传统的NAND存储介质的数据销毁方式主要利用内置于闪存设备固件中的数据清理机制,但是数据销毁的可靠性无法保证。如果绕开固件直接对闪存芯片进行读取,可以发现虽然已经执行了数据销毁,但是很多数据还完好的保留在闪存上。

除此之外,目前还有一种利用加密技术进行数据销毁的方法。用户的机密文件以加密的方式进行存储,当用户希望销毁数据时,直接删除密钥。由于密钥一般较小,因此数据销毁可以在很短的时间内完成。然而该方式主要存在两个问题:一是针对闪存芯片的侧信道攻击(SideChannelAttack)可能允许攻击者可以恢复出密钥和相关数据;第二是密钥管理不善也会给数据销毁方法的实现带来非常严重的安全漏洞。

Swanson[1]等结合以上两种数据销毁技术设计并实现了一种可验证的,效率较高的数据销毁方法SAFE(ScrambleandFi?

nallyErase)。该方法完成数据销毁需要两个步骤,首先SAFE先将密钥数据进行销毁,然后SAFE再对NAND的每一个物理页进行垃圾数据覆盖。通过执行SAFE后对NAND的检查,Swanson等证实了SAFE可以安全地销毁指定数据。

2.2文件系统层数据销毁技术闪存的读写单位为页,根据芯片的不同一般大小为4KB或8KB,但是操作系统读写数据是按照HDD(HardDiskDrive)的扇区尺寸进行的,一般为512Byte。更麻烦的是,闪存数据的写入需要先执行擦除动作,而擦除是以块为单位。这些与HDD明显不同的差异导致操作系统对闪存设备的管理必须采取一些不同的方法。一种是闪存设备通过在自身的固件(主控)程序实现一个FTL(FlashTranslationLayer)层[2],其中功能如图1所示,将闪存设备“虚拟”成一个类似于HDD的块设备,将文件系统对扇区的操作“翻译”成对闪存的操作。这种方法的优点在于操作系统不需要做出任何改变,只需要按照HDD的方法管理SSD即可。

另一种方法是设计专用于闪存的文件系统,如UBIFS、YAFFS。在专用的文件系统中已经设计了通过软件实现的FTL层,因此操作系统也可以直接将SSD视为HDD,对SSD进行“扇区”操作即可。FTL会将扇区的LBA地址翻译成SSD闪存中的物理地址。

从图1中可以看到,当文件系统发送指令要写入或者更新一个特定的逻辑页时,它会采用如日志结构的写入方式,FTL实际上是把数据写入到一个空闲物理页并更新映射表,当从逻辑块地址写入一个新数据时,旧数据将失效但是会保留在存储设备中,成为冗余的数据。为了加速这个扫面的进程,FTL储存了一个包含整个文件块的摘要信息在每个块的较后一页。

当需要再次写入到一个闪存块时,就需要先把块上的有效数据合并到一个空白块上再进行擦除,这个操作就是GC(Garbagecollection)垃圾回收。也可发送Trim指令给SSD主控,通知它哪些数据占用的地址是无效的,从而提高GC的效率,一次擦除多个无效块。

FTL在提高了闪存设备存取性能和闪存芯片使用寿命的同时,也使得找到实际物理存储区域变得困难,也导致数据销毁技术中对于HDD的覆写删除单个文件的方法不能直接应用于SDD。Lee[3]等人提出一种利用加密技术的数据销毁方法,该方法用密钥加密每个文件,密钥存储在相应的文件头里,操作系统只需要在储存所有文件头的擦除块中将其销毁就可使得所有数据的安全删除。

Wei[4]等人在实证评估基于驱动器的SSD内置清扫命令和软件方式对于SSD的擦除效果后发现:(1)大多数ATA命令运行正确,但有些可能包含几个bug,导致整个待擦除数据完好的保留在了驱动器中。(2)对于基于软件的整个磁盘的擦除方式,该技术并不总是有效,测试显示数据模式可能对覆写的有效性产生影响。(3)软件在SSD上对单个文件的擦除总是失败。可靠的单文件擦除要求改变闪存FTL层,该结论使用他们开始研究如何设计支持单文件擦除的FTL组件。

他们发现虽然从一个块中擦除某些页是困难的,但是编程单个文件确是可行的,所以一个可选的擦除方式是对页进行再编程使页中冗余数据从1变为0。根据使用环境的不同,擦洗又分为三种方式,即刻安全擦洗(immediatescrubbing)、后台式擦洗(backgroundscrubbing)和基于扫描的擦洗(scan-basedscrubbing)。其中即刻安全擦洗提供了较高级别的安全性,因为直到FTL擦洗以前页中包含的陈旧数据完成后,写操作才会完成;后台式擦洗提供了更高的性能通过允许写操作完成后在后台执行擦洗工作;基于扫描的擦洗在没有写入工作时通过添加一个命令来擦除一个范围的LBA到0,然后通过查找逻辑地址物理地址的映射表来擦洗存储了冗余数据的页,在该方式中FTL将读取每个块中的摘要表来确定其中的页是否包含了失效数据。擦洗操作的不足在于对于MLC(Multi-LevelCell)一个存储器存储单元存放了2位元(bit)的芯片,擦洗单个页总是会造成几个错误到另一页,这个bug是因为MLC存储单元阵列中,每个晶体管总是包含属于不同页的两位。

2.3用户应用程序层的数据销毁用户应用程序层的删除,可以很容易地删除特定数据对象,但保证数据不可恢复的程度较小,且会带来很高的磨损。

现有的数据安全删除方法,一般都是通过块擦除或零覆写和随机数据覆盖的方法实现该目的。

块擦除是通过擦除整块的密钥或原始数据,该方法可用于大量数据的删除,但是当块上含有有效密钥或数据时,就需要先将有效密钥或数据复制到有效页,然后擦除,必须导致额外的时间开销和更多设备磨损。零覆写是指通过将页中的位全部置零实现数据安全删除,比较的有Gutmann[5]算法和美国国防部USDoD5220-22.M[6]算法。

Gutmann方法的核心是增加数据覆盖的次数,按照古特曼教授的理论,在删除数据时,用特定的数据片段覆盖原始数据35次,从而有效避免任何形式的数据还原。但是,在增加覆盖次数的同时,该方法也会耗费相当长的时间。另外,古特曼方法不考虑性,只考虑数据销毁的彻底性。

USDoD5220-22.M方法是美国国防部标准中的一部分,这种方法仅仅需要覆盖数据几次,安全性没有古特曼方法高,但耗费的时间却相对较少。对于覆盖使用的数据,标准中也相应给出相应的建议,比如使用补码或随机数字等。

3.总结

由于固态硬盘和传统机械硬盘在存储介质和数据存取方式上存在明显不同,很多应用于机械硬盘的数据销毁方法对固态硬盘不再适用。本文在分析固态硬盘结构的基础上,分别对控制器层面、文件系统层面和用户应用程序层面具有代表性的数据安全销毁方法进行了总结。

店铺已到期,升级请联系 18670343956
联系我们一键拨号13798130815