ufs2.2 协议扫盲(十六)

12.4.6 RPMB Operations
12.4.6.1 Request Type Message Delivery
 任何时候都只能执行一个 RPMB 操作。
 主机向 RPMB 知名逻辑单元发送请求类型消息,以请求 RPMB 知名逻辑单元执行操作。
 为了传递请求类型的消息,主机在 SCSI 事务的命令阶段的 COMMAND UPIU 中发送 SECURITY PROTOCOL OUT 命令。 
 对于经过认证的数据写入请求,要写入RPMB数据区的数据包含在请求消息中。 单个 Authenticated Data Write 请求中的最大数据大小等于 bRPMB_ReadWriteSize × 256 字节; 如果所需的数据大小超过此值,则应执行多个 Authenticated Data Write 操作。
 对于 SECURITY PROTOCOL OUT 命令,COMMAND UPIU 中的 Flags.W 设置为 1,因为数据从主机传输到设备。
 表 12-16 为各种情况定义了 COMMAND UPIU 中的预期数据传输长度字段值
ufs2.2 协议扫盲(十六)_第1张图片
 设备向主机指示它已准备好接收请求类型消息,发送 READY TO TRANSFER UPIU 。 如果预期数据传输长度为 512 字节,则数据缓冲区偏移字段应设置为零值,数据传输计数字段应设置为值 512。
 在单个 READY TO TRANSFER UPIU 中请求的字节数不得大于 bMaxDataOutSize 属性指示的值。
 为了完成操作,设备在状态阶段返回一个带有操作状态的 RESPONSE UPIU。
12.4.6.2 Response Type Message Delivery
 主机请求 RPMB 众所周知的逻辑单元发送 response type message以读取先前操作的结果、读取写入计数器、从 RPMB 数据区域读取数据,或读取 Secure Write Protect Configuration Block的内容。
 为了请求传递 response type message的消息,主机在 SCSI 事务的命令阶段中的 COMMAND UPIU 中发送 SECURITY PROTOCOL IN 命令。
 对于经过验证的数据,从 RPMB 数据区读取的数据包含在响应消息中。
 对于 SECURITY PROTOCOL IN 命令,COMMAND UPIU 中的 Flags.R 设置为 1,因为数据是从设备传输到主机的。
表 12-17 为各种情况定义了 COMMAND UPIU 中的预期数据传输长度字段值。
ufs2.2 协议扫盲(十六)_第2张图片
 设备返回 RPMB 消息中请求的结果或数据。 RPMB 消息通过在数据阶段发送一个或多个 DATA IN UPIU 来传递。
 DATA IN UPIU 中的数据大小不得超过 bMaxDataInSize 属性指示的值。
 为了完成操作,设备在状态阶段发送一个带有操作状态的 RESPONSE UPIU
12.4.6.3 Authentication Key Programming
 验证密钥编程由 SECURITY PROTOCOL OUT 命令启动
 从主机传送到设备的 RPMB 数据帧包括 Request Message Type = 0001h 和 Authentication Key
 当 Authentication Key 编程完成时,设备在状态响应中返回 GOOD 状态
 主机通过发出 SECURITY PROTOCOL OUT 命令来启动 Authentication Key 编程验证过程,其中 RPMB 数据帧包含请求消息类型 = 0005h
 当验证结果准备好检索时,设备在状态响应中返回 GOOD 状态
 主机通过发出 SECURITY PROTOCOL IN 命令检索验证结果
 设备返回包含响应消息类型 = 0100h(Authentication Key programming response) 和结果代码的 RPMB 数据帧
如果 Authentication Key 编程失败,则返回结果为 0005h(写入失败)。 如果在 Authentication Key 编程期间发生其他错误,则返回结果为 0001h(一般故障)。
在对认证密钥进行编程之前,无法访问 RPMB 数据区。 可以通过尝试向 RPMB 数据区域写入/读取数据来检查设备的状态:如果验证密钥未编程,则响应消息中的结果字段将设置为 0007h(验证密钥尚未编程) .
总的流程见下图:
ufs2.2 协议扫盲(十六)_第3张图片
ufs2.2 协议扫盲(十六)_第4张图片
ufs2.2 协议扫盲(十六)_第5张图片
12.4.6.4 Read Counter Value
 读取计数器值序列由 SECURITY PROTOCOL OUT 命令启动。
 从主机传送到设备的 RPMB 数据帧包括 Request Message Type = 0002h 和 Nonce(随机数,用来加强安全性)。
 当主机在设备的状态响应中收到 GOOD 状态时,它会向设备发送一个 SECURITY PROTOCOL IN 命令以检索写计数器值。
 设备返回响应消息类型 = 0200h 的 RPMB 数据帧、请求中收到的 Nonce 副本、写入计数器值、MAC 和结果。 如果读取计数器值失败,则返回结果为 0006h(读取失败)。 如果发生其他错误,则结果为 0001h(一般故障)。 如果计数器已过期,则返回结果中的第 7 位也设置为 1(结果值分别为 0080h、0086h 和 0081h)。
总的流程见下图:
ufs2.2 协议扫盲(十六)_第6张图片
ufs2.2 协议扫盲(十六)_第7张图片
还有以下四种操作,在协议中都有详细的步骤,流程图和文字介绍的很详细:
12.4.6.5 Authenticated Data Write
12.4.6.6 Authenticated Data Read

12.4.6.7 Authenticated Secure Write Protect Configuration Block Write
12.4.6.8 Authenticated Secure Write Protect Configuration Block Read

 

你可能感兴趣的:(UFS,linux,c语言,驱动开发,C,架构)