6

使用 HSM 命令 A0(生成密钥),我得到以下响应。

HEADA100U7D4213E0422F4E08E9455D9837E09FDDRA0072B1TX00S000073C35FF96F7A8C7D35D440CCBDA06FFED3AC7017F27B0A0E8896FFC971F0B9
HEAD (Message Header)
A1   (Response Code)
00   (Error Code)
U7D4213E0422F4E08E9455D9837E09FDD (Key under LMK)
RA0072B1TX00S000073C35FF96F7A8C7D35D440CCBDA06FFED3AC7017F27B0A0E8896FFC9 (Key under TMK - export tr31 key block)
71F0B9 (Key Check Value)

我的问题是:

如何从 tr31 密钥块中提取密钥(在 tmk 下)?

有谁知道如何解码 tr31 密钥块?

4

2 回答 2

4

看看 TR31 标准(法律上不能免费获得,因为 ANSI 想让你的生活变得悲惨)。

  • R似乎不是 TR31 块的一部分,我只能假设是泰雷兹特有的东西
  • A是密钥块版本 id(标头的第一个字段)并描述了正在使用的密钥绑定方法。A已弃用并使用关键变体绑定方法。
  • 0072是整个 TR31 密钥块的十进制数字的长度,如果我们忽略前导,它恰好适合R
  • B1是密钥用法,即 Initial DUKPT Key
  • T是密钥的算法,即 Triple-DES(或 TR31 表示法中的 Triple-DEA)
  • X是使用模式,即“用于派生其他密钥的密钥”
  • 00是密钥版本号,这意味着该密钥没有使用密钥版本控制
  • S是密钥的可导出性,即“敏感”
  • 00是十进制的可选块数。
  • 00保留以供将来使用,并且始终必须是两个 ASCII 零。由于没有可选块,因此该字段是标头的最后一个字段。
  • 73C35FF96F7A8C7D35D440CCBDA06FFED3AC7017F27B0A0E是十六进制编码的加密密钥(标题后面的所有内容,除了最后 8 个字符)。它是 24 字节长,适合 16 字节长的密钥(2 字节密钥长度,16 字节密钥,6 字节填充以获得完整的 8 字节块大小)。
  • 8896FFC9是 MAC(最后 8 个字符(对于密钥块版本 id A)是 Triple-DES CBC-MAC 的最左边 32 位)

要更进一步(解密加密密钥),我需要密钥块保护密钥(可能是 TMK?)。

于 2019-03-18T10:19:02.373 回答
0

“R”是泰雷兹使用的方案标志,表示密钥的格式是TR-31。这通常不会包含在发送给对等设备的任何消息中,因为它不是 TR-31 格式的一部分。

于 2020-10-21T20:35:14.923 回答