首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解密safeNet封装的密钥?

如何解密safeNet封装的密钥?
EN

Stack Overflow用户
提问于 2020-08-23 16:13:08
回答 1查看 784关注 0票数 1

我已经使用一个名为KMU的工具将3 3DES密钥从我的SafeNet HSM导出到一个文件中。此工具在使用另一个3 3DES键提取之前包装密钥。我可以访问第二个键的纯文本值。

问题是“如何解密包装的文件以获得包装密钥的纯文本值?”

更新:

最后导出的文件如下所示:

代码语言:javascript
复制
L1: 000001f4 000001a800000001000001a0
L2: 00000020 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
L3: 00000140 0000001b0000010300000001010100000162000000010101800001290000000101010000016500000001010000000164000000010100000000010000000101010000000200000001010100000170000000010101000000030000000f014949494949494949494949494949490000010c000000010101000001040000000101010000010a000000010101000001060000000101010000010500000001010100000108000000010101000001070000000101018000012b000000010100000001610000000401000000100000000000000004010000000400000100000000040100000014800001030000000000000001020000000000000001100000000000000001110000000000800001280000000101000000016300000001010080000102000000100132303131313232383136323032313030000000000000000000000000
L4: 00000010 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
L5: 00000020 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxx
L6: 00000020 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
L7: 00000020 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

“x”部分是原始文件中看起来加密的数据,因此我将它们替换为“x”。我还添加了行号、空格和新行,以使内容更加可读性!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-24 18:50:55

有关总体方案说明,请参阅文档密钥管理实用程序用户(KMU)参考中的“关键备份功能教程”一章。

不幸的是,该文档尚未更新到该方案的最后版本,该方案使用AES、tK和HMAC进行M_mK。

据我所知,可以告诉KMU使用较早的DES3方案和-3命令行选项。

我有一个工作实现,但不幸的是不能提供代码。

主要恢复步骤摘要:

  • 检查整个文件结构(魔术0x000001f4 \ varLen编码的有效载荷\4字节MAC \ varLen包装的MAC密钥\ varLen包装传输密钥)
  • 解包AES传输密钥(使用包密钥及其特定密钥类型的算法,例如CKM_RSA_PKCS)
  • 解开通用秘密MAC密钥(使用AES传输密钥和CKM_AES_ECB )。长度为32)
  • 验证编码有效载荷的MAC (使用MAC密钥和CKM_SHA512_HMAC_GENERAL)
  • 从有效载荷中打开所有备份密钥(使用AES传输密钥与CKM_WRAPKEY_AES_CBC和零IV)

您可能希望使用PKCS#11记录器库(请参阅PTK编程指南),并在密钥恢复期间记录KMU实用程序的活动,以验证算法的详细信息。

祝你的项目好运!

EDIT>文件的总体结构(给定示例数据):

代码语言:javascript
复制
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

请参阅CBCCBC中用于在编码有效载荷中编码单个导出的密钥数据(#1..#n)的格式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63549232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档