【问题标题】:Extract key Value form HSM从 HSM 中提取键值
【发布时间】:2021-02-25 14:28:18
【问题描述】:

我在我的 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


    【解决方案1】:

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

    如果可能,您可以Wrap 并使用C_DeriveKey/C_WrapKey 调用将其导出。

    检查您的密钥的CKA_WRAP 属性。

    【讨论】:

    • 能够从 HSM 中提取密钥从安全角度来看是一个严重的设计缺陷...
    • 如果 HSM 允许包装密钥,这不是一个缺陷。
    • 我正在使用的另一种解决方案是包装然后解密包装的密钥。但我希望找到一种最简单的方法来直接获取键值。
    • 这已经是最简单的方法了。直接获取只有公钥才有可能的键值。
    猜你喜欢
    • 2020-05-03
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2016-08-08
    相关资源
    最近更新 更多