ufs2.2 协议扫盲(十五)

12.3 Device Data Protection
12.3.1 Description and Requirements

UFS 设备数据内容可以在逻辑单元级别受到保护。 应提供以下保护模式:
 永久写保护(永久:一旦启用就无法撤消)
 上电写保护(写保护可以通过重启或硬件复位事件clear)
 安全写保护(写保护只能使用安全认证方法配置和启用/禁用)
这些写保护模式未在 RPMB well known logical unit中实现。还应该有一种方法,为 a logical unit读取当前启用的保护模式。
12.3.2 Implementation
可以在逻辑单元级别定义保护模式,配置 Unit Descriptor的 bLUWriteProtect 参数。 写保护模式编码如下:
00h:逻辑单元未写保护(如果设置了一个或多个安全写保护条目,则为安全写保护)
01h:逻辑单元上电写保护
02h:逻辑单元永久写保护

被设置为 power on write protected logical unit(即bLUWriteProtect = 01h)的unit,这些逻辑单元仅当fPowerOnWPEn = 0时才可以被写。fPowerOnWPEn 标志在 a power cycle or hardware reset event后设置为零,一旦设置为 1,它就不能被主机切换或清除。
fPermanentWPEn 标志应设置为 1 以启用所有永久写保护逻辑单元的写保护 (即 bLUWriteProtect = 02h); 如果 fPermanentWPEn 标志等于 0b,才可以写入逻辑单元。 fPermanentWPEn 标志只写一次:一旦设置就不能切换或清除。 fPermanentWPEn 标志在设备制造后应为零。
逻辑单元内的 LBA 区域可以使用安全写保护模式进行写保护。
安全写保护区域通过设置 Secure Write Protect Configuration Block进行配置,并且只能在配置为“未写保护”的逻辑单元中创建 (即 bLUWriteProtect=00h)。一个逻辑单元最多可以有四个安全写保护区域。 但是,设备中安全写保护区域的总数不得超过 bNumSecureWPArea
只有在相关的安全写保护条目( WPF flag = 0b)中禁用写保护时,才能写入安全写保护区域。 有关详细信息,请参阅 12.4.3.1。

建议在所有命令队列为空的情况下设置 fPowerOnWPEn 标志、fPermanentWPEn 标志或 WPF 标志,并等待设备查询响应后再将写入命令,入队列。如果 LBA 是写保护的,那么请求取消映射、格式化或更改与该 LBA 相关的介质的其他有效命令将被拒绝,并带有 CHECK CONDITION 状态,并将检测键设置为 DATA PROTECT。
总结:UFS logical unit有三种写保护永久写保护、上电写保护、安全写保护(除了RPMB logical unit),这三种通过bLUWriteProtect进行配置,配置上之后, fPowerOnWPEn用来控制是否生效上电写保护, fPermanentWPEn 用来控制是否生效永久写保护,由于RPMB资源的有限,被配置为安全写保护的unit的相关区域(这些区域又通过 Secure Write Protect Configuration Block进行配置),通过 WPF控制是否生效安全写保护如果 LBA 是写保护的,那么有关请求该LBA的操作都将被拒绝。

12.4 RPMB
12.4.1 Introduction

提供了对 Replay Protected Memory Block的签名访问。 此功能为系统提供了以经过验证和重放保护的方式将数据存储到特定内存区域的方法。 这是通过首先将认证密钥信息编程到 UFS 设备内存(共享密钥)来提供的。由于在此阶段还不能对系统进行身份验证,因此身份验证密钥编程必须在 OEM 生产等安全环境中进行。 此外,验证密钥用于使用消息验证代码 (MAC) 对对重放保护存储区域进行的读取和写入访问进行签名。 随机数生成和计数寄存器的使用提供了额外的保护,防止消息重放,其中消息可能被攻击者记录和回放。
12.4.2 RPMB Well Known Logical Unit Description
RPMB 包含在一个唯一的众所周知的逻辑单元中,其大小在RPMB Unit Descriptor中定义。 RPMB 众所周知的逻辑单元大小应为 128 KB 的倍数,因此其最小大小为 128 KB。 RPMB well known logical unit的内容只能通过成功验证的读写访问来读取或写入。 数据可能会被主机覆盖,但永远无法擦除。所有对 RPMB 的访问都将引用特定的 RPMB well known logical unit number (W-LUN)。
12.4.3 Requirements
12.4.3.1 RPMB Resources
Authentication Key
o 类型:一次写入,不可擦除或可读
o 大小:32 字节
o 描述:身份验证密钥寄存器,用于在何时对访问进行身份验证 计算 MAC。
Write Counter
o 类型:只读
o 大小:4 字节
o 描述:主机发出的,成功验证数据写入请求的总数,的计数器值。 该寄存器产生后的初始值为00000000h。 随着每次成功的编程访问,UFS 设备将自动将该值加一。 该值无法重置。 计数器达到最大值 FFFF FFFFh 后,将不再递增(防止溢出)。
RPMB Data Area
o 类型:可读可写
o 大小:RPMB 单元描述符中定义的 128 KB 的倍数  最小 128 KB,最大 16 MB。
o 描述:只能通过成功验证的读/写访问权限进行读写的数据。 该数据可能会被主机覆盖,但永远无法擦除。
Secure Write Protect Configuration Block
o 类型:可读可写
o 大小:256 字节
o 描述:该块用于在逻辑单元中配置安全写保护区域。 每个逻辑单元都有一个安全写保护配置块。 每个安全写保护配置块最多有四个安全写保护条目。 每个条目代表一个安全写保护区域。 如果未使用条目,则相关字段应包含零值。 安全写保护配置块的结构如表 12-1 所示。
a) LUN
LUN 字段指示应应用安全写保护的逻辑单元。 有效值从 0 到 bMaxNumberLU 指定的 LU 数。
b) DATA LENGTH
DATA LENGTH 字段指定安全写保护条目的字节长度(一个条目为 16,两个条目为 32,等等)。 在写请求中,设备应忽略从 DATA LENGTH + 16 到 255 的字节,并将安全写保护配置块的这些字节设置为零。
c) Secure Write Protect Entry 0 to Entry 3
安全写保护配置块可能只包含条目 0、条目 0 和 1、条目 0、1 和 2,或所有四个条目。
d) WPT (Write Protect Type)
写保护类型字段 (WPT) 指定如何修改 WPF 位。
Code
Definition
00bNV型
WPF 位保持不变,即使电源循环和硬件复位。 WPFlag 值只能通过写入安全写保护配置块进行更改。
01b
P-type
WPF 位在上电或硬件复位后自动设置为0b。
10b
NV-AWP-type
WPF 位在电源循环或硬件复位后自动设置为 1b
11b
Reserved
 
e) WPF (Write Protect Flag)
0b : Secure Write Protection is disabled。
1b : Secure Write Protection is enabled。
设置为 1 的 WPF 指定逻辑单元应禁止在 LOGICAL BLOCK ADDRESS 字段和 NUMBER OF LOGICAL BLOCKS 字段指示的范围内更改 LBA 的介质。 需要写入介质的命令应以 CHECK CONDITION 状态终止,感应键设置为 DATA PROTECT,附加感应代码设置为 WRITE PROTECTED。包含缓存的逻辑单元应在启用写保护之前将所有缓存的逻辑块写入介质。 (例如,在响应 SYNCHRONIZE CACHE 命令时,将逻辑块地址字段和逻辑块数字段设置为安全写保护条目中指示的值)。 设置为零的 WPF 位指定逻辑单元可以允许写入介质,这取决于逻辑单元实现的其他写入禁止机制。 WPF 应在设备制造后设置为零。
f) LOGICAL BLOCK ADDRESS
该字段指定安全写保护区域的第一个逻辑块的 LBA。 
g) NUMBER OF LOGICAL BLOCKS
此字段指定属于 Secure Write Protect 区域的连续逻辑块的数量,如果逻辑块数量字段设置为零,则安全写保护将应用于整个逻辑单元。 在这种情况下,只需配置 Entry-0 即可为整个逻辑单元启用安全写保护。
12.4.3.2 Algorithm and Key for MAC Calculation
消息验证码 (MAC) 使用 [HMAC SHA] 中定义的 HMAC SHA-256 计算。 HMAC SHA-256 计算将密钥和消息作为输入。 生成的 MAC 为 256 位(32 字节),作为请求或响应的一部分嵌入数据帧中。 用于 MAC 计算的密钥始终是存储在 UFS 设备中的 256 位身份验证密钥。 用作 MAC 计算输入的消息是 RPMB 数据包中字段的串联。
12.4.3.3 RPMB Message Components
每个 RPMB 消息都包含特定的组件。 
1)Request Message Type
2)Response Message Type
3)Authentication Key(
该组件仅在对Authentication Key 进行编程时使用 )
4)MAC(
消息验证码 )
5)Result(具体在下边RPMB Operation Result)
6)Write Counter(
认证成功的数据写入操作总数 )
7)Address(
要编程到 RPMB 或从 RPMB 读取的数据的逻辑块地址 )
8)Nonce(Random number generated by the host for the requests and copied to response by the RPMB engine
)
9)Data(要通过签名访问写入或读取的数据 )
10)Block Count(请求读取或编程的 256 字节单位的逻辑块的数量).
12.4.3.4 Request Message Types
定义了以下请求消息类型以支持 RPMB。 这些消息从主机发送到设备。
 身份验证密钥编程请求
 写计数器读请求
 认证的数据写入请求
 认证的数据读取请求
 结果读取请求
 安全写保护配置块写请求
 安全写保护配置块读取请求
表 12-5 定义了各种消息的请求消息类型代码。
Code
Request Message Types
0001h
Authentication Key programming request
0002h
Write Counter read request
0003h
Authenticated data write request
0004h
Authenticated data read request
0005h
Result read request
0006h
Secure Write Protect Configuration Block write request
0007h
Secure Write Protect Configuration Block read request
Others
Reserved
 
12.4.3.5 Response Message Types

 身份验证密钥编程响应
 写计数器读响应
 认证数据写入响应
 认证数据读取响应
 安全写保护配置块写响应
 安全写保护配置块读取响应

Code
Request Message Types
0100h
Authentication Key programming response
0200h
Write Counter read response
0300h
Authenticated data write response
0400h
Authenticated data read response
0500h
Result read response
0600h
Secure Write Protect Configuration Block write response
0700h
Secure Write Protect Configuration Block read response
Others
Reserved
 
12.4.3.6 RPMB Operation Result
 RPMB 消息的结果部分由两个字节组成。 最高有效字节被保留并应设置为零。
 结果字段的第 7 位应指示写计数器是否已过期(即达到其最大值)
o 值为 1 表示写计数器过期
o 值为 0 表示有效的写计数器
其他位指示操作状态
o Operation Okay (00h)
o General Failure (01h)
o Authentication Failure (02h)
MAC比较不匹配,MAC计算失败
o Counter Failure (03h)
计数器比较不匹配,计数器递增失败
o Address Failure (04h)
 Address out of range, wrong address alignment
o Write Failure (05h)
Data, Counter or Result write failure
o Read Failure (06h)
Data, Counter or Result write failure
o Authentication key not yet programmed (07h)
Authentication Key has been programmed 之前,该值是唯一有效的结果,之后它将永远不会再次出现
o Secure Write Protect Configuration Block access failure (08h).
Secure Write Protect Configuration read or write failure.
o Invalid Secure Write Protect Block Configuration parameter (09h).
Invalid LUN (or logical unit not enabled), DATA LENGTH, LOGICAL BLOCK  ADDRESS, NUMBER OF LOGICAL BLOCKS, or overlapped areas.
o Secure Write Protection not applicable (0Ah).
 Logical unit configured with other write protection modes (permanent or power-on)
Result data structure 两个字节如下
Bit[15:8]
Bit[7]
Bit[6:0]
Reserved
Write Counter Status
Operation Status
 
12.4.4 Implementation
12.4.4.1 RPMB Message
一个 RPMB 消息可以由一个或多个 RPMB 消息数据帧组成。RPMB 消息数据帧大小为 512 字节,其结构如表 12-9 所示。

12.4.4.2 MAC Calculation
用于 MAC 计算的密钥始终是存储在设备中的 256 位身份验证密钥。 MAC 计算的输入是 RPMB 消息数据帧中从字节 228 到字节 511 的字段的串联(不包括填充字节和 MAC)。如果 RPMB 消息由多个 RPMB 消息数据帧组成,则 MAC 的输入消息是每个数据帧的字节 [228:511] 以数据帧的发送顺序串联。 MAC 仅在最后一个数据帧中有效。
12.4.4.3 RPMB Message Data Frame Delivery
RPMB 消息使用SCSI security protocol commands传递:
 SECURITY PROTOCOL IN 用于向设备发送请求消息
SECURITY PROTOCOL OUT用于向设备请求发送响应消息。
12.4.5 SECURITY PROTOCOL IN/OUT Commands
[SPC] 中定义的 SECURITY PROTOCOL IN 命令和 SECURITY PROTOCOL OUT 命令用于在主机和设备之间封装和传递任何安全协议的数据包,而不需要对数据包进行解释、分解或重新组装以进行传递。SECURITY PROTOCOL IN 命令和 SECURITY PROTOCOL OUT 命令包含一个 SECURITY PROTOCOL 字段。 T10 为 JEDEC UFS 应用程序分配了一个唯一的安全协议 ID。
SECURITY PROTOCOL = ECh (JEDEC Universal Flash Storage)
该标准为 SECURITY PROTOCOL IN 命令和 SECURITY PROTOCOL OUT 命令的 SECURITY PROTOCOL SPECIFIC 字段分配一个唯一标识符。
 RPMB Protocol ID = 0001h
12.4.5.1 CDB format of SECURITY PROTOCOL IN/OUT commands



RPMB 众所周知的逻辑单元应支持以下安全协议字段值:
 00h: Security protocol information
 ECh: JEDEC Universal Flash Storage (security protocol ID assigned for JEDEC UFS application)
Other values are invalid.

SECURITY PROTOCOL IN/OUT 命令应将分配给 JEDEC UFS 应用程序的唯一安全协议 ID 视为唯一有效的安全协议 ID。
INC_512 位应设置为零以指定 ALLOCATION LENGTH 或 TRANSFER LENGTH 字段表示要传输的字节数。
如果 SECURITY PROTOCOL IN 命令中的 ALLOCATION LENGTH 字段不等于 512 的整数倍,则该命令应以 CHECK CONDITION 状态终止。
如果 SECURITY PROTOCOL OUT 命令中的 TRANSFER LENGTH 字段不等于 512 的整数倍,则该命令应以 CHECK CONDITION 状态终止。

 

 

 

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心无杂念可否?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值