从 HSM 中提取键值

问题描述 投票:0回答:2

我在 HSM 中创建了一个 AES 密钥,我想获取密钥值,我尝试了 C_FindObjects 但它只返回密钥 hundel。

    public long Find_AES_Key(String label) {
            long hkey = -1L; 
            try {
                 AESSecretKey keyTemplate = new AESSecretKey();
                 keyTemplate.getLabel().setCharArrayValue(label.toCharArray());
                 CK_ATTRIBUTE[] attributes = iaik.pkcs.pkcs11.objects.Object.getSetAttributes(keyTemplate);
                    
                 cryptoki.C_FindObjectsInit(ckiSession, attributes, false);
                 long[] found = cryptoki.C_FindObjects(ckiSession, 1L);
                 cryptoki.C_FindObjectsFinal(ckiSession);
                 
                 hkey = found[0];
                 // cryptoki.C_GetAttributeValue(ckiSession, hkey, attributes, true);
                                 
             }catch(Exception e) {
                 e.printStackTrace();
             }
            return hkey;
         }

谢谢您的帮助。

java wrapper pkcs#11 iaik-jce
2个回答
2
投票

这取决于您的 HSM,但在大多数情况下,如果密钥生成在 HSM 内部,则它们也不“可读”。

如果可能,您可以

Wrap
并使用
C_DeriveKey
/
C_WrapKey
调用将其导出。

检查您密钥的

CKA_WRAP
属性。


0
投票

大多数 HSM 使用 PKCS11 标准。当您创建 AES 密钥时,如果 CKA_SENSITIVE 为 FALSE,您可以使用 pkcs11admin 等开源工具或使用检索密钥值的小脚本来查看密钥的值。

© www.soinside.com 2019 - 2024. All rights reserved.