持久内存与安全机制 - 第387页
NVME2.0协议解读 1 min read

持久内存与安全机制 - 第387页

Blog Author

非常好,我们继续深入分析 NVMe Base Specification 2.0b 第 8.13.4 节,本节主要讲解:


📌 NVMe 带内认证(In-band Authentication)协议:AUTH_Negotiate 与 AUTH_Failure 消息结构


✅ 一、AUTH_Negotiate 消息结构详解

这是主机发出的第一条认证消息,用来告诉控制器主机支持哪些认证协议,并是否希望将安全通道(Secure Channel)与认证绑定。

🔷 格式解析(图 437):

字节范围 字段名 含义
Byte 0 AUTH_TYPE = 00h 表示“通用消息”(Common message)
Byte 1 AUTH_ID = 00h 表示“AUTH_Negotiate” 消息
Byte 3:2 Reserved 保留
Byte 5:4 T_ID 16 位事务标识符,用于跟踪整个认证流程
Byte 6 SC_C Secure Channel Concatenation 值,指示是否需要同时协商加密通道
Byte 7 NAPD Authentication Protocol Descriptors 数量(每个 64 字节)
Byte 8~ 认证协议描述符 每个 64 字节(例如:DH-HMAC-CHAP)

🔶 SC_C 字段的定义(图 438):

含义 适用传输层
00h 不使用安全通道 无限制
01h 使用 TLS 协议安全通道 TCP
其他 保留值 -

🔶 认证协议标识(图 439):

协议
01h DH-HMAC-CHAP(详见 §8.13.5)
其他 保留

✅ 二、控制器处理 AUTH_Negotiate 的策略:

控制器收到 AUTH_Negotiate 后,有两种可能的拒绝情况:

❌ 不满足安全通道策略:

  • 主机未请求 SC_C=01h(即 TLS),但控制器要求必须绑定 TLS。
  • 响应动作
  • 发送 AUTH_Failure1 消息,说明:Secure channel concatenation mismatch
  • 断开连接。

❌ 不满足认证协议要求:

  • 主机未提供控制器认可的认证协议(例如没有 01h: DH-HMAC-CHAP)。
  • 响应动作
  • 发送 AUTH_Failure1 消息,说明:Authentication protocol not usable
  • 断开连接。

✅ 三、AUTH_Failure 消息结构(图 440)预告:

接下来的 §8.13.4.2 将介绍:

消息类型 发送方 用途
AUTH_Failure1 控制器 → 主机 表示认证失败或安全策略不匹配
AUTH_Failure2 主机 → 控制器 主动终止认证事务

🧠 总结知识点串联:

  • AUTH_Negotiate 是认证事务的起点,用于传达意图与能力;
  • T_ID 是事务唯一标识,全程跟踪使用;
  • 控制器的安全策略若不满足,则会拒绝连接,反馈 AUTH_Failure1
  • 当前规范支持的唯一认证协议是 DH-HMAC-CHAP,未来可扩展。

如果你希望我整理一张: - 完整认证消息时序图 - 或者一个 AUTH_Negotiate 报文结构表格 + 字节对照说明

我可以立即为你生成。你还想继续深入 §8.13.5 的 DH-HMAC-CHAP 协议解析吗?那部分是这套认证机制的核心协议细节。