UFS 安全机制

Contents

          • UFS安全特性
          • 安全模式
          • 数据擦除
            • Erase
            • Discard
            • Purge
            • Wipe
            • bSecureRemovalTypeParameter
          • 写保护

UFS安全特性

    UFS 协议中强制定义了几种安全特性:重放保护内存块(RPMB)、安全模式和不同类型的逻辑单元写保护。

安全模式

    在安全模式下,所有导致设备上数据删除或停用的操作都将以安全的方式进行,即操作的对象为存储介质,数据将彻底从设备上删除。安全模式应用于逻辑单元级别,因此不同的逻辑单元具有不同的安全模式。
    从UFS设备安全删除数据的方式取决于实现UFS设备的内存技术类型。常见有三种,UFS设备至少支持一种:

  • Host controller向寻址地址发出擦除操作命令。即设备控制器擦除(Erase)要被删除的逻辑块所对应的物理地址空间;
  • Host Controller使用单个字符覆盖寻址位置并擦除设备。即设备控制器用单一字符覆盖写要被删除的逻辑块所对应的物理地址空间,然后擦除设备;
  • Host Controller使用字符、其补码和随机字符覆盖寻址位置。即设备控制器用单一字符、字符补码和随机字符,依次覆盖写要被删除的逻辑块所对应的物理地址空间。
数据擦除

    UFS数据擦除相关的操作有四种:Erase、discard、purge和wipe device。
    如果擦除指令比作丢弃垃圾,erase就像是日记本,丢掉后就不希望会被再找回来;discard像是丢弃塑料瓶,只是不需要了而已,并不在乎是否会被捡回;而Purge就是下发命令,彻底粉碎已经丢弃的数据。

Erase

    Erase时设备所做的操作就是解除映射,Host不能从Erase后的LBA中读取到数据。Erase的最小单位是write的最小单位。 Erase靠unmap命令实现,另一个条件是单元描述符中的bProvisioningType参数设置为03h(TPRZ = 1),表示erase功能启用。
    注意,这个“擦除”操作不是擦除存储介质,不是闪存层面的擦除操作,而是UFS层面的擦除操作。数据写在闪存上,UFS设备内部有个逻辑地址到物理地址的映射,擦除操作通过切断这种映射,主机就不能获得擦除掉的数据。
    Erase启用后特性:

  • Unmap执行成功且没有错误,则其会把处理好LBA从映射状态过渡到未分配状态。
  • Erase功能启动,TPRZ位设置为1,Read一个未分配的LBA会返回0。
  • 解除映射后的LBA会一直保持未分配状态,直达成功写入数据才会改变
  • 对于 UFS,如果 TPRZ 位设置为 1 ,然后发生LBA从未分配状态到映射状态的自主转换(成功写入数据),则会把LBA 映射到所有位都清零的物理块。
  • 需要擦除的LBA与dEraseBlockSize 参数值的倍数对齐,这样可以降低对性能的 影响。dEraseBlockSize包含在单元描述符中。
Discard

    丢弃是擦除功能的与一个非安全变体,Discard和Erase的区别在于,经过Discard的LBA,host再去读取可能会返回任何数据,包括原始数据。Discard命令也是靠unma来实现的,只是单元描述符中的bProvisioningType参数设置为02h(TPRZ = 0),表示discard功能启用。
    不管是丢弃操作还是擦除操作,都不能保证数据从存储介质上删除。如果直接操作闪存的话,还是有可能把删除的数据找回来。

Purge

    Purge是从物理上擦除unmap的物理地址。Purge操作是通过带有bPurgeStatus Attributes和fPurgeEnable Flags的Query函数实现的。以下是它们的描述:
UFS 安全机制_第1张图片

    Purge操作在各种情况下的描述和状态转换如下:
UFS 安全机制_第2张图片

Wipe

    主机通过发送FORMAT UNIT命令格式化所有的逻辑单元(RPMB LU除外)。不过,对那些写保护的逻辑单元,FORMAT UNIT命令会失败。
    FORMAT UNIT的命令对象是Device well know LU,它格式化除RPMB之外所有无写保护的逻辑单元。
    FORMAT UNIT会切断逻辑块到物理空间的映射。但如果要让数据彻底从设备上清除,UFS设备还需要执行Purge操作,这样数据才能彻底删除。

bSecureRemovalTypeParameter

    设备描述符中的 bSecureRemovalType 参数定义了清除操作使用何种方式从物理内存删除数据。

  • 03h:使用厂商自定义方式进行擦除。
  • 02h:通过用字符、补码和随机字符覆盖寻址位置来删除所有信息。
  • 01h:通过使用单个字符覆盖写,然后再擦除
  • 00h:默认将垃圾数据从闪存空间擦除。
写保护

    每个逻辑单元(除了RPMB)有写保护属性。写保护包括永久写保护和上电写保护,前者的意思是说,一旦该逻辑单元写保护使能,将终生是写保护(不能改回去了);而后者写保护只对某次上电有效,如果设备重上电或者重启,写保护将失效。
    写保护定义在逻辑单元级别,单元描述符的bUWriteProtect参数可配置不同类型的写保护。

  • 00h:逻辑单元未配置写保护或安全写保护。
  • 01h:逻辑单元上电写保护。逻辑单元未配置写保护或安全写保护。
  • 01h:逻辑单元上电写保护。
  • 02h:逻辑单元永久写保护。

你可能感兴趣的:(嵌入式存储,ufs)