HSM KitHSM 工具箱
中文

TR-31 密钥块格式详解

密钥管理# TR-31# 密钥块# ANSI X9.143# HSM
最后更新: 2026年1月16日4 分钟阅读By HSM Kit Team
现在需要计算吗?
使用我们免费的在线 TR-31 密钥块工具 工具。

TR-31(也称为 ANSI X9.143)是安全包装和传输加密密钥的行业标准格式。本指南提供该格式的全面概述。

什么是 TR-31?

TR-31 是一种密钥块规范,提供:

  • 密钥加密:在传输过程中保护密钥
  • 密钥绑定:将密钥属性与密钥材料绑定
  • 完整性保护:检测篡改
  • 密钥用途控制:定义密钥的使用方式

密钥块结构

TR-31 密钥块由几个部分组成:

[版本][块长度][密钥用途][算法][模式][密钥版本][可导出性][可选块][密钥数据][MAC]

头部字段

字段长度描述
版本 ID1'A' (TDES), 'B' (TDES-KD), 'C' (TDES-V), 'D' (AES)
块长度4总块长度(十六进制字节)
密钥用途2密钥的用途 (P0, K0, B0 等)
算法1密钥算法 (T=TDES, A=AES)
使用模式1密钥使用方式 (E=仅加密等)
密钥版本2版本号
可导出性1导出限制 (E, N, S)
可选块数2可选块的数量

密钥用途代码

常见密钥用途代码:

代码描述
P0PIN 加密密钥
B0BDK 基础派生密钥
K0密钥加密/包装密钥
M0ISO 9797-1 MAC(算法 1)
M3ISO 9797-1 MAC(算法 3)
D0数据加密对称密钥
V0PIN 验证密钥 (VISA PVV)

使用模式

代码描述
B加密和解密
C计算(仅 MAC 生成)
D仅解密
E仅加密
G生成密钥
N无特殊限制
S仅签名
V验证(仅 MAC 验证)
X密钥派生

可导出性

代码描述
E可导出(在受信任的密钥块中)
N不可导出
S敏感(仅可导出到不可导出)

版本差异

版本 A(原始 TDES)

  • 使用 TDES 密钥包装
  • 16 字节 MAC
  • 基本安全性

版本 B(TDES 密钥派生)

  • 在包装前使用密钥派生
  • 改进的加密绑定
  • 16 字节 MAC

版本 C(TDES 变体)

  • 使用 CMAC 代替 X9.19 MAC
  • 更好的完整性保护

版本 D(AES)

  • 使用 AES 进行密钥包装(AES-256 KBPK)
  • CMAC 用于认证
  • 最强安全性
  • 推荐用于新实现

编码示例

让我们编码一个 PIN 加密密钥 (P0):

输入:

  • 密钥:0123456789ABCDEFFEDCBA9876543210
  • KBPK:00112233445566778899AABBCCDDEEFF
  • 用途:P0(PIN 加密)
  • 算法:T(TDES)
  • 模式:B(双向)
  • 可导出性:E

结果:

D0112P0TB00E0000...

解码密钥块

当您收到 TR-31 密钥块时:

  1. 验证头部:检查版本、用途、算法
  2. 验证 MAC:使用您的 KBPK
  3. 解密密钥:使用派生的加密密钥
  4. 应用密钥:根据用途和模式

安全最佳实践

  1. 使用版本 D:基于 AES 的保护最强
  2. 强 KBPK:使用 256 位 AES KBPK
  3. 使用前验证:在解密前始终验证 MAC
  4. 遵守限制:尊重可导出性和模式标志
  5. 密钥轮换:定期轮换 KBPK

常见问题

"MAC 验证失败"

  • KBPK 不匹配
  • 密钥块损坏
  • 错误的版本解码

"无效的密钥长度"

  • 算法不匹配
  • 填充问题

"未知密钥用途"

  • 不支持或供应商特定的代码

亲自尝试

使用我们的 TR-31 密钥块工具:

  • 将密钥编码为 TR-31 格式
  • 解码和验证现有密钥块
  • 查看所有头部字段和属性
  • 支持所有版本(A、B、C、D)

所有处理都在您的浏览器本地进行,以确保最大安全性。

相关工具
TR-31 密钥块工具