Что CKA_VALUE используется в шаблоне генерации секретного ключа AES?
Я пытаюсь интегрировать Safenet HSM с нашим приложением. Я пишу программу на языке C. Я имею в виду стандартный документ по криптоки PKCS11 v2.20 из лаборатории RSA. Мне нужно сгенерировать 256-битный ключ AES. При определении шаблона для генерации ключа я не уверен, какое значение нужно передать для CKA_VALUE. При создании ключа DES3 я не предоставил этот атрибут и смог создать ключ.
Я искал примеры программ для CKA_LABEL, но не смог найти надежных примеров на C. Я нашел пару программ на Java, где они использовали CKA_VALUE_LEN вместо CKA_VALUE. Я не уверен, что это сработает.
Это фрагмент, приведенный в документе. Большинство сайтов приводят только этот фрагмент в качестве примера. Ничего не указано для значения массива.
CK_OBJECT_CLASS class = CKO_SECRET_KEY;
CK_KEY_TYPE keyType = CKK_AES;
CK_UTF8CHAR label[] = “An AES secret key object”;
CK_BYTE value[] = {...};
CK_BBOOL true = CK_TRUE;
CK_ATTRIBUTE template[] = {
{CKA_CLASS, &class, sizeof(class)},
{CKA_KEY_TYPE, &keyType, sizeof(keyType)},
{CKA_TOKEN, &true, sizeof(true)},
{CKA_LABEL, label, sizeof(label)-1},
{CKA_ENCRYPT, &true, sizeof(true)},
{CKA_VALUE, value, sizeof(value)}
};
1 ответ
CKA_VALUE
фактическое значение ключа. Когда вы говорите HSM сгенерировать секретный ключ, он сгенерирует для вас ключ на оборудовании на основе атрибутов, которые вы передаете в шаблоне секретного ключа, и установите значение, сгенерированное в CKA_VALUE
, Однако этот атрибут не может быть считан / извлечен и не может быть установлен при генерации ключа, потому что HSM не позволит вам ввести ключ (напрямую) из программного обеспечения и не позволит вам извлечь его из HSM (напрямую).
CKA_VALUE_LEN
длина ключа, который вы можете указать HSM для генерации. Ключ AES может иметь длину 128, 192 или 256 бит. В зависимости от размера ключа вы хотите установить CKA_VALUE_LEN
как 16, 24 или 32 (размер ключа в байтах).