【问题标题】:AES GCM mechanism parameters in CC中的AES GCM机制参数
【发布时间】:2018-10-18 19:04:54
【问题描述】:

我在设置 AES GCM 机制的参数时遇到问题。 我收到以下错误

#define CKR_MECHANISM_PARAM_INVALID           0x00000071UL

我做错了什么?

CK_BYTE iv[12] = { 0 };    
CK_MECHANISM mechanismAES = { CKM_AES_GCM, NULL_PTR, 0 };
CK_GCM_PARAMS params = {
    .pIv=iv,
    .ulIvLen=12,
    .ulIvBits=96,
    .pAAD=NULL,
    .ulAADLen=0,
    .ulTagBits=0
};
mechanismAES.pParameter = &params;
mechanismAES.ulParameterLen = sizeof(params);
C_EncryptInit(hSession, &mechanismAES, hKey);

【问题讨论】:

    标签: aes pkcs#11 aes-gcm


    【解决方案1】:

    .ulTagBits=0 很可能是问题所在。标签大小是身份验证标签的大小。如果您将其排除在外,您将不会拥有经过身份验证的加密模式。

    GCM 的有效标签大小为 128、120、112、104 或 96 位。一些 API 可以接受较小的标签大小,例如 64 位。但是强烈建议您保持 128 位标记大小,因为 GCM 的安全性很大程度上取决于它。

    如果错误没有消失,您可能还需要指定 IV len 或 IV 位。

    【讨论】:

    • 不走运,我尝试了以下但仍然相同的东西 CK_GCM_PARAMS params = { .pIv=iv, .ulIvLen=sizeof(iv), .pAAD=NULL_PTR, .ulAADLen=0, .ulTagBits= 128 };
    • 您能否提供实际代码并指明问题的语言?我看到您也将 NULL 更改为 NULL_PTR。我看不出位大小是参数结构的一部分。发生了太多奇怪的事情,所以实际代码似乎是必需的。
    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 2013-07-17
    • 2016-12-19
    • 1970-01-01
    • 2014-03-19
    • 2017-10-15
    • 2018-10-29
    • 1970-01-01
    相关资源
    最近更新 更多