持久内存 - 🔐 一、AUTH_Failure 认证失败消息详解(图 440~442) (第388页)
NVME2.0协议解读 1 min read

持久内存 - 🔐 一、AUTH_Failure 认证失败消息详解(图 440~442) (第388页)

Blog Author

我们继续深入讲解 NVMe Base Specification 2.0b 第 8.13.4.2 ~ 8.13.5.1 节 的内容,这部分是 认证失败消息(AUTH_Failure)机制DH-HMAC-CHAP 协议概览,是整个 NVMe In-band Authentication(带内认证)机制的核心组成。


🔐 一、AUTH_Failure 认证失败消息详解(图 440~442)

认证过程中,如果认证失败,主机或控制器会主动发送 AUTH_Failure 消息中止事务,并提供失败原因。

🧾 消息格式(图 440):

字节范围 字段 说明
Byte 0 AUTH_TYPE = 00h 通用认证消息
Byte 1 AUTH_ID = F1h(控制器发送)
F0h(主机发送)
区分方向
Byte 3:2 Reserved 保留字段
Byte 5:4 T_ID 与认证事务关联的事务 ID
Byte 6 Reason Code 认证失败主因(见下图 441)
Byte 7 Reason Code Explanation 补充解释(见下图 442)

❗ 失败主因(图 441):

描述
01h Authentication Failure:认证失败
其他 保留

📚 失败解释(图 442):

解释说明
01h 主机或控制器身份验证失败
02h 协议不被接受(控制器不支持或拒绝主机提供的认证协议)
03h 安全通道连接策略不匹配(主机未请求但控制器强制要求)
04h 哈希函数不被接受(见 8.13.5.2)
05h DH 组不被接受(见 8.13.5.2)
06h 接收到的 Payload 不正确
07h 协议消息顺序不正确

🔄 AUTH 消息与命令的映射(8.13.4.3)

消息类型 方向 使用的命令
AUTH_Negotiate 主机 → 控制器 Authentication Send
AUTH_Failure2 主机 → 控制器 Authentication Send
AUTH_Failure1 控制器 → 主机 Authentication Receive

🔑 二、DH-HMAC-CHAP 协议概览(8.13.5.1)

DH-HMAC-CHAP 是 NVMe In-band Authentication 当前唯一已定义的认证协议(Protocol ID = 01h)。

✳️ 名称组成解析:

名称部分 含义
DH Diffie-Hellman 密钥协商机制(可选)
HMAC 哈希消息认证码(比传统 CHAP 更强)
CHAP 挑战-响应认证机制(Challenge-Handshake Authentication Protocol)

⚙️ 协议特性:

  • 基于密钥(Keyed) 的双向或单向认证机制
  • 增强的哈希强度(使用 HMAC 替代原始 MD5)
  • 可选择是否使用 Diffie-Hellman 密钥交换,增强密钥协商安全性

⚠️ 安全注意事项:

若使用 HMAC-CHAP(不带 DH)时使用了弱随机密钥,则存在被被动监听者通过离线暴力破解方式推导出共享密钥的风险(具体见 §8.13.5.7)。


🧠 适用场景总结:

场景 推荐方案
高安全性要求 使用 DH-HMAC-CHAP(含 DH)
主机性能受限,连接仅做基本认证 使用 HMAC-CHAP(无 DH)
对带内认证无需求 可忽略整个机制(由 AUTHREQ = 0 控制)

如果你需要下一步我们可以继续深入分析:

  • §8.13.5.2:DH-HMAC-CHAP 协议协商过程(包含哈希函数、DH 组 ID 选择)
  • 或我可为你绘制一张完整的 AUTH 消息时序图(从 AUTH_Negotiate 到 AUTH_Success)

告诉我你接下来想要深入哪一段 😊