sanitize---硬盘数据的防护衣

 转自微信公众号:存储随笔

在今年5月份发布的NVMe Spec 1.3中,对数据安全方面增加了一个“Sanitize”功能,如下图。其实,Sanitize清除功能并不是NVMe新创,SATA和SAS硬盘早已支持的这个功能,现在终于加入到NVMe协议上面了。

sanitize---硬盘数据的防护衣_第1张图片


当你手上有一块NVMe SSD不想使用或者想改换其他用途,为了保证SSD的数据不被泄露,你可能会想到用Secure Erase安全擦除的命令。但是,值得警惕的是,Secure Erase只会擦除映射表并标记无效数据,也就是说物理上的数据并没有被删除。而Sanitize则是直接从block级别在物理擦除SSD上的数据。

sanitize---硬盘数据的防护衣_第2张图片


Sanitize清除的数据很彻底,对FTL映射表、User Data(包括已经写入NAND和仍在cache里的)、Meta Data、安全密匙、CMB中SQ/CQ相关信息、可能含有用户数据的log等等会全部清除。不过,sanitize操作不会改变RPMB、boot分区、不包含用户数据的cache等内容。

BPRMB是Replay Protected Memory Block的缩写,他的存在目的是用来给系统存放一些特殊的、需要进行访问授权的数据。

sanitize---硬盘数据的防护衣_第3张图片


NVMe Spec中定义了三种Sanitize类型:Block Erase, Crypto Erase和Overwirte.

  • Block Erase:采用block级别清除所有的用户数据;

  • Crypo Erase: 擦除安全密匙;

  • Overwrite: 用特定的pattern数据覆盖用户数据。不过这个对NAND-based SSD不提倡,因为会降低NAND的使用寿命。

sanitize---硬盘数据的防护衣_第4张图片


一旦启动了Sanitize操作,是不能中断的,除非fail了。即使power cycle或者controller level reset之后,santize会继续执行。


另外,在Sanitize执行过程中,不允许执行任何NVMe IO command, 但是允许执行一部分的NVMe admin command, 具体包括:

sanitize---硬盘数据的防护衣_第5张图片



知乎网友问答:

flash的删除有3种机制,erase,trim,discard。 区别是erase对一个erase group操作,trim对一个block操作(通常是512byte),这两种结束后数据就彻底没了。 discard是标记数据为无效,但并不意味着数据就没了。discard后如果有一个sanitize(相当于磁盘碎片整理)操作的话,数据就彻底没了。

sanitize是由状态机触发的,后台操作。可以被HPI(高优先级的命令)打断。

在用户层面,你根本不知道删除文件后,SD卡做了多少的sanitize,因此最后的数据极有可能是部分老数据,部分未知。

除了普通的删除,还有secure erase,trim。 区别是会把数据的所有copy(为什么有copy,涉及到flash的存储方式,不展开了)也删掉。



作者:gemglory
链接:https://www.zhihu.com/question/30629668/answer/88872199
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



你可能感兴趣的:(SATA)