在今年5月份发布的NVMe Spec 1.3中,对数据安全方面增加了一个“Sanitize”功能,如下图。其实,Sanitize清除功能并不是NVMe新创,SATA和SAS硬盘早已支持的这个功能,现在终于加入到NVMe协议上面了。
当你手上有一块NVMe SSD不想使用或者想改换其他用途,为了保证SSD的数据不被泄露,你可能会想到用Secure Erase安全擦除的命令。但是,值得警惕的是,Secure Erase只会擦除映射表并标记无效数据,也就是说物理上的数据并没有被删除。而Sanitize则是直接从block级别在物理擦除SSD上的数据。
Sanitize清除的数据很彻底,对FTL映射表、User Data(包括已经写入NAND和仍在cache里的)、Meta Data、安全密匙、CMB中SQ/CQ相关信息、可能含有用户数据的log等等会全部清除。不过,sanitize操作不会改变RPMB、boot分区、不包含用户数据的cache等内容。
RPMB是Replay Protected Memory Block的缩写,他的存在目的是用来给系统存放一些特殊的、需要进行访问授权的数据。
NVMe Spec中定义了三种Sanitize类型:Block Erase, Crypto Erase和Overwirte.
-
Block Erase:采用block级别清除所有的用户数据;
-
Crypo Erase: 擦除安全密匙;
-
Overwrite: 用特定的pattern数据覆盖用户数据。不过这个对NAND-based SSD不提倡,因为会降低NAND的使用寿命。
一旦启动了Sanitize操作,是不能中断的,除非fail了。即使power cycle或者controller level reset之后,santize会继续执行。
另外,在Sanitize执行过程中,不允许执行任何NVMe IO command, 但是允许执行一部分的NVMe admin command, 具体包括:
精彩推荐:
更多精彩内容,敬请关注微信公众号: 存储随笔,Memory-logger.
同时也可以关注头条号【存储随笔】获取更多活动内容。