如何解决如何解密safeNet包装的导出密钥?
我已使用名为KMU的工具将3DES密钥从我的SafeNet HSM导出到文件中。该工具在使用另一个3DES密钥提取之前包装密钥。我可以访问第二个键的纯文本值。
问题是“如何解密包装文件以获得包装密钥的纯文本值?”
更新:
仅供参考:最终导出的文件如下:
L1: 000001f4 000001a800000001000001a0
L2: 00000020 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
L3: 00000140 0000001b0000010300000001010100000162000000010101800001290000000101010000016500000001010000000164000000010100000000010000000101010000000200000001010100000170000000010101000000030000000f014949494949494949494949494949490000010c000000010101000001040000000101010000010a000000010101000001060000000101010000010500000001010100000108000000010101000001070000000101018000012b000000010100000001610000000401000000100000000000000004010000000400000100000000040100000014800001030000000000000001020000000000000001100000000000000001110000000000800001280000000101000000016300000001010080000102000000100132303131313232383136323032313030000000000000000000000000
L4: 00000010 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
L5: 00000020 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxx
L6: 00000020 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
L7: 00000020 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
“ x”部分是原始文件中看起来已加密的数据,因此我将其替换为“ x”。我还添加了行号,空格和换行符,以使内容更具可读性!
解决方法
有关总体方案说明,请参见文档Key Management Utility User (KMU) Reference中的“ 密钥备份功能教程”一章。
不幸的是,该文档尚未更新为该方案的最新版本,该方案使用AES tK 和HMAC作为 M_mK 。
据我所知,可以通过-3
命令行选项告诉KMU使用较旧的DES3方案。
我有一个可行的实现,但不幸的是无法提供代码。
主要还原步骤摘要:
-
检查整体文件结构(魔术0x000001f4 | varLen编码的有效载荷| 4字节MAC | varLen包装的MAC密钥| varLen包装的传输密钥)
-
解开AES传输密钥(使用包装密钥及其特定于密钥类型的算法,例如
CKM_RSA_PKCS
) -
解开通用秘密MAC密钥(使用AES传输密钥和
CKM_AES_ECB
。长度为32) -
验证已编码有效载荷的MAC(使用带有
CKM_SHA512_HMAC_GENERAL
的MAC密钥) -
从有效负载中解开所有备份密钥(使用带有
CKM_WRAPKEY_AES_CBC
和零IV的AES传输密钥)
您可能想使用 PKCS#11记录程序库(请参阅《 PTK-C编程指南》 ),并在密钥还原期间记录KMU实用程序的活动以验证是否正常。算法的详细信息。
祝您项目顺利!
EDIT>文件的整体结构(根据您的示例数据):
000001f4 // Magic
000001a8 // Length of encoded payload
00000001 // Number of keys
000001a0 // Wrapped key #1 length
xxxx...xxxx // Wrapped key #1 data for CKM_WRAPKEY_AES_CBC
xxxxxxxx // Payload MAC
00000020 // Wrapped MAC key cryptogram length
xxxx...xxxx // Wrapped MAC key cryptogram
00000020 // Wrapped transport key cryptogram length
xxxx...xxxx // // Wrapped transport key cryptogram
有关用于对已编码有效载荷内部的单个导出密钥数据(#1 ..#n)进行编码的格式,请参见CKM_WRAPKEY_AES_CBC和CKM_WRAPKEY_DES3_CBC。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。