UFS协议-Security

在块设备中,擦除数据的代价是很大的,大部分的设备都对该操作进行了优化。擦除操作不会立即进行物理删除,只是在逻辑上将数据进行删除,删除的数据很容易就被恢复了,数据的安全尤为重要了。

数据结构

了解 UFS 的数据安全之前,先了解一下UFS设备内部的数据格式。

暂时无法在飞书文档外展示此内容

  1. Page:flash实际可以写入的最小大小

  2. Block:flash实际可以擦除的最小大小

  3. PBA:物理块,UFS协议规定的最小操作的大小,为4K。

LBA就是主机可以操作的地址,在UFS设备内部是使用一个映射表映射管理LBA与PBA。               

删除操作 

Descriptor

删除数据相关的描述符。

  1. bProvisioningType:决定UNMAP具体行为的,00h表示每一个逻辑块都有固定映射的物理块,再UFS设备中一般不会使用00h。

  2. bSecureRemovalType:决定Purge的具体行为

Discard

会将 LBA 与 PBA 解映射,LBA 可能会随机的与任何一个 PBA 映射,因此 Discard 之后,再次访问该逻辑块会读取到随机的数据,包括原数据。

Erase

也是进行解映射,但是 LBA 会再与一个空的 PBA 进行映射,所以总会访问到'0'。

Purge

上述的两个操作都没有进行物理上的擦除,Purge 就是真正意义上的物理擦除。

Purge 是通过设置 Attributes and Flags 实现的,使用 Query Requrst UPIU 。

  1. fPurgeEnable flag :只写易失性标志,上电或复位后置零。当此标志等于1时,启用 purge 操作,否则禁用。该标志只能在所有逻辑单元的命令队列为空时设置。当操作完成或出现错误情况时,UFS设备会自e动清除此标志。主机可以清除此标志以中断正在进行的 purge 操作。

  2. bPurgeStatus attribute :

    1. 00h:空闲 (禁用清除操作)

    2. 01h:正在进行purge操作

    3. 02h:主机提前停止purge操作

    4. 03h:purge操作成功完成。

    5. 04h:purge操作失败,原因是逻辑单元队列不空

    6. 05h:purge操作失败

  3. bSecureRemovalType :

    1. 00h :直接擦除物理flash

    2. 01h :用一个字符覆盖后,再进行擦除

    3. 02h :使用一个字符、补码、随机字符,依次覆盖

    4. 03h :供应商自定义的擦除方式

通过 fPurgeEnable 写 '1' 启用 purge 操作,通过读取 bPurgeStatus ,获取 purge 执行的结果。

Wipe Device

主机通过发送FORMAT UNIT命令格式化逻辑单元(RPMB LU除外)。不过,对那些写保护的逻辑单元,FORMAT UNIT命令会失败。FORMAT UNIT的命令对象是Device well know LU,它格式化除RPMB之外所有无写保护的逻辑单元。

FORMAT UNIT会切断逻辑块到物理空间的映射。但如果要让数据彻底从设备上清除,UFS设备还需要执行Purge操作,这样数据才能彻底删除。

总结

所有的删除操作都是解映射,实际的擦除操作都需要进行 purge 操作才可行。

Data Protection

通过配置unit Desriptor 的 bLUWriteProtect ,可以在逻辑单元(LU)级别定义保护模式

bLUWriteProtect parameter

  1. 00h :逻辑单元不受写保护

  2. 01h :逻辑单元上电写保护,通过重新上电或硬件复位可以清除

  3. 02h :逻辑单元永久写保护,开启后不可改变

fPermanentWPEn flag :启用上电写保护,置 '1' 时才会使永久写保护的LU不可写,只写一次,设置后能再改变

fPowerOnWPEn flag :启用上电写保护,置 '1' 时才会使上电写保护的LU不可写,重新上电或硬件复位会清零

### UFS协议简介 UFS(Universal Flash Storage)是一种基于MIPI M-PHY和Unipro技术的高速存储接口标准,广泛应用于移动设备和其他高性能嵌入式系统中。该协议由JEDEC固态技术协会制定,旨在提供更高的性能、更低的功耗以及更可靠的存储解决方案。 #### 协议版本演进 UFS的发展经历了多个重要阶段,其中一些关键版本及其特性如下: - **UFS 2.1**:于2016年由JEDEC发布,在此版本中引入了HS-G3通道作为必选项[^3]。这使得数据传输速率显著提升,并增强了整体系统的可靠性。 - **UFS 3.1**:这是目前较为先进的版本之一,它不仅继承和发展了前代产品的优点,还通过优化命令队列管理等功能进一步提高了效率与速度[^1]。 #### 工作原理概述 UTP(UFS Transport Protocol Layer Specification)层的设计具有以下几个突出特点: - 支持全双工通信模式,允许读取和写入操作同时进行; - 利用SCSI架构模型来定义逻辑单元号(LUN),从而实现多任务处理能力; - 提供多种机制保障信息安全,比如对于写保护功能而言,在EMMC上独立存在的概念被改变为依赖RPMB LU来进行安全管理[^2]; 此外,在驱动程序加载过程中会经历一系列必要的初始化步骤,包括但不限于完成数据结构设置、注册相应中断源、分配并配置控制器所需的DMA缓冲区资源等动作[^4]。 #### 技术优势分析 相比其他类型的非易失性存储介质如eMMC来说,UFS具备明显的技术领先之处,主要体现在以下几个方面: - 更高的吞吐量; - 出色的能量利用率表现; - 增强的数据完整性和安全性措施. ```python def initialize_ufs_controller(): """ Simulates the initialization process of a UFS controller as described. Returns: str: A message indicating successful initialization. """ data_structure_initialized = True interrupts_registered = True dma_memory_configured = True if all([data_structure_initialized,interrupts_registered,dma_memory_configured]): return "UFS Controller Initialized Successfully" else: return "Initialization Failed" print(initialize_ufs_controller()) ``` 上述代码片段模拟了一个简化版的UFS 控制器初始化流程函数 `initialize_ufs_controller` ,展示了如何验证不同组件的状态以确认整个过程顺利完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值