Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Общие атрибуты объектов ключей

Атрибут

Тип данных

Значение

CKA_KEY_TYPE1,2

CK_KEY_TYPE

Тип ключа

CKA_ID3

Byte array

Идентификатор ключа (по умолчанию пусто)

CKA_START_DATE3

CK_DATE

Дата начала действия ключа (по умолчанию пусто)

CKA_END_DATE3

CK_DATE

Дата окончания действия ключа (по умолчанию пусто)

CKA_DERIVE3

CK_BBOOL

CK_TRUE, если ключ поддерживает

деривацию

выработку ключей обмена (из исходного ключа можно извлечь другие ключи). По умолчанию принимает значение CK_FALSE

CKA_LOCAL4,5,6

CK_BBOOL

CK_TRUE, если ключ был сгенерирован на токене вызовом функций C_GenerateKey или C_GenerateKeyPairили создан вызовом функции C_CopyObjectкак копия ключа с атрибутом CKA_LOCAL, установленным в значение CK_TRUE

CKA_KEY_GEN_MECHANISM4,5,6

CK_MECHANISM_TYPE

Идентификатор механизма, используемого при генерации ключа

CKA_ALLOWED_MECHANISMS

CK_MECHANISM_TYPE _PTR, указатель на массив CK_MECHANISM_TYPE

Список механизмов, которые можно использовать с этим ключом. Число механизмов в массиве равно отношению переменной ulValueLen атрибута к размеру CK_MECHANISM_TYPE.

1   должен быть определен при создании объекта с помощью функции C_CreateObject.

...

Общие атрибуты объектов открытых ключей (стандартные и определенные производителем)

Атрибут

Тип данных

Значение

Общие атрибуты открытых ключей (Common Public Key Attributes)

CKA_SUBJECT1

Byte array

Имя ключа в DER-кодировке (по умолчанию пусто)

CKA_ENCRYPT1

CK_BBOOL

CK_TRUE, если ключ поддерживает шифрование2

CKA_VERIFY1

CK_BBOOL

CK_TRUE, если ключ поддерживает проверку подписи, представленной в виде приложения к данным2

CKA_VERIFY_RECOVER1

CK_BBOOL

CK_TRUE, если ключ поддерживает проверку подписи с восстановлением (восстанавливаемую из данных)2

CKA_WRAP1

CK_BBOOL

CK_TRUE, если ключ поддерживает маскирование других ключей (то есть может быть использован для шифрования других ключей)2

CKA_TRUSTED3

CK_BBOOL

Ключ может быть доверенным для приложения, которым был создан. Ключ шифрования может быть использован для шифрования (маскирования) ключей со значением атрибута  CKA_WRAP_WITH_TRUSTED равным CK_TRUE.

CKA_WRAP_TEMPLATE

CK_ATTRIBUTE_PTR

Для ключей шифрования ключей (маскирования). Шаблон атрибутов для всех ключей, которые могут быть зашифрованы с помощью данного ключа шифрования. Число атрибутов в массиве равно отношению переменной ulValueLen атрибута к размеру CK_ATTRIBUTE.

Атрибуты открытых ключей, определенные производителем (Rutoken Vendors Defined Public Key Attributes)

CKA_CAPI_ID

 

Идентификатор ключевой пары (по умолчанию 0)

CKA_PUBLIC_KEY_RSF_ID

 


Идентификатор RSF–файла, хранящего открытый ключ (по умолчанию 0)

CKA_PRIVATE_KEY_RSF_ID

 


Идентификатор RSF–файла, хранящего соответствующий закрытый ключ (по умолчанию 0)

CKA_VENDOR_KEY_JOURNALCK_BBOOLЕсли CK_TRUE, то ключ может использован только для работы с журналом Рутокен PINPad

может быть изменен после создания объекта с помощью функции C_SetAttributeValue

...

Соответствие флагов стандарта Х.509 атрибутам открытых ключей стандарта PKCS #11

Использование флагов для открытых ключей в сертификатах X.509 открытого ключа

Соответствующие атрибуты стандарта PKCS #11 для открытых ключей

dataEncipherment

CKA_ENCRYPT

digitalSignature, keyCertSign, cRLSign

CKA_VERIFY

digitalSignature, keyCertSign, cRLSign

CKA_VERIFY_RECOVER

keyAgreement

CKA_DERIVE

keyEncipherment

CKA_WRAP

nonRepudiation

CKA_VERIFY

nonRepudiation

CKA_VERIFY_RECOVER

к содержанию ↑

Объект CKO_PUBLIC_KEY, тип CKK_RSA (определен стандартом)

...

Атрибуты объекта CKO_PUBLIC_KEY, тип CKK_RSA

Атрибут

Тип данных

Значение

Атрибуты открытого ключа RSA (RSA Public Key Attributes)
CKA_MODULUS1,2Big integer

Модуль n

CKA_MODULUS_BITS3,4

CK_ULONGДлина модуля n в битах
 CKA_PUBLIC_EXPONENT1 Big integerОткрытая экспонента e

1 должен быть определен при создании объекта с помощью функции C_CreateObject.

...

Атрибуты объекта CKO_PUBLIC_KEY, тип CKK_GOSTR3410

Атрибут

Тип данных

Значение

Атрибуты открытого ключа ГОСТ Р 34.10-2001 / ГОСТ Р 34.10-2012 (GOST R 3410 Public Key Attributes)
CKA_VALUE1,2Byte array

Открытый ключ длиной 64 байта: 32 байта для каждой координаты Х и У точки (Х, У) на эллиптической кривой в порядке, начиная с младшего байта (little endian) 

CKA_GOSTR3410PARAMS1,3

Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ Р 34.10-2001 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR3410 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID
CKA_GOSTR3411PARAMS1,3,4Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ Р 34.11-94 или ГОСТ Р 34.11-2012 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR3411 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID
CKA_GOST28147_PARAMS4Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ 28147-89 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR28147 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID. Значение атрибута может быть пропущено

1 должен быть определен при создании объекта с помощью функции C_CreateObject.

...

Атрибуты объекта CKO_PUBLIC_KEY, тип CKK_GOSTR3410

Атрибут

Тип данных

Значение

Атрибуты открытого ключа ГОСТ Р 34.10-2012
CKA_VALUE1,2Byte array

Открытый ключ длиной 128 байт: 64 байта для каждой координаты Х и У точки (Х, У) на эллиптической кривой в порядке, начиная с младшего байта (little endian) 

CKA_GOSTR3410PARAMS1,3

Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ Р 34.10-2012 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR3410 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID
CKA_GOSTR3411PARAMS1,3,4Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ Р 34.11-2012 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR3411 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID
CKA_GOST28147_PARAMS4Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ 28147-89 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR28147 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID. Значение атрибута может быть пропущено

должен быть определен при создании объекта с помощью функции C_CreateObject.

...

Общие атрибуты закрытых ключей

Атрибут

Тип данных

Значение

Общие атрибуты закрытых ключей (Common Private Key Attributes)

CKA_SUBJECT1

Byte array

Имя владельца сертификата в DER-кодировке (по умолчанию пусто)

CKA_SENSITIVE1,2

CK_BBOOL

CK_TRUE, если ключ является чувствительным (не может быть извлечен из токена в открытом виде)3

CKA_DECRYPT1

CK_BBOOL

CK_TRUE, если ключ поддерживает расшифрование3

CKA_SIGN1

CK_BBOOL

CK_TRUE, если ключ поддерживает формирование подписи, которая представлена в виде приложения к данным3

CKA_SIGN_RECOVER1

CK_BBOOL

CK_TRUE, если ключ поддерживает формирование подписи с восстановлением данных3

CKA_UNWRAP1

CK_BBOOL

CK_TRUE, если ключ поддерживает расшифрование ключей (размаскирование, т.е. может быть использован для расшифрования других ключей)3

CKA_EXTRACTABLE1,4

CK_BBOOL

CK_TRUE¸если ключ является извлекаемым и может быть зашифрован3

CKA_ALWAYS_SENSITIVE5,6,7

CK_BBOOL

CK_TRUE, если ключ всегда имеет значение атрибута CKA_SENSITIVE равным CK_TRUE

CKA_NEVER_EXTRACTABLE5,6,7

CK_BBOOL

CK_TRUE, если ключ никогда не имеет значение атрибута CKA_EXTRACTABLE равным CK_TRUE

CKA_WRAP_WITH_TRUSTED2

CK_BBOOL

CK_TRUE, если ключ может быть зашифрован только с помощью ключа шифрования ключей со значением атрибута CKA_TRUSTED равным CK_TRUE. По умолчанию имеет значение CK_FALSE.

CKA_UNWRAP_TEMPLATE

CK_ATTRIBUTE_PTR

Для ключей шифрования ключей. Шаблон атрибутов для всех ключей, которые могут быть расшифрованы с помощью ключа шифрования ключа. Число атрибутов в массиве равно отношению переменной атрибута ulValueLen к размеру CK_ATTRIBUTE.

CKA_ALWAYS_AUTHENTICATE

CK_BBOOL

Если CK_TRUE, то для каждого действия с ключом требуется ввод PIN-кода пользователя. По умолчанию имеет значение CK_FALSE.

Атрибуты закрытых ключей, определенные производителем (Rutoken Vendors Defined Private Key Attributes)

CKA_CAPI_ID

 

Идентификатор ключевой пары (по умолчанию 0).

CKA_PUBLIC_KEY_RSF_ID

 


Идентификатор RSF–файла, хранящего соответствующий открытый ключ (по умолчанию 0).

CKA_PRIVATE_KEY_RSF_ID

 


Идентификатор RSF–файла, хранящего закрытый ключ (по умолчанию 0).

CKA_VENDOR_KEY_PIN_ENTERCK_BBOOL

Если CK_TRUE, то при каждой операции подписи или шифрования/расшифрования данным ключом требуется ввод PIN-кода пользователя на экране Рутокен PINPad.

CKA_VENDOR_KEY_CONFIRM_OPCK_BBOOLЕсли CK_TRUE, то при каждой операции или шифрования/расшифрования требуется подтверждение на экране Рутокен PINPad.
CKA_VENDOR_KEY_JOURNALCK_BBOOLЕсли CK_TRUE, то ключ может использован только для работы с журналом Рутокен PINPad

может быть изменен после создания объекта с помощью функции C_SetAttributeValue

...

Атрибуты объекта CKO_PRIVATE_KEY, тип CKK_RSA

Атрибут

Тип данных

Значение

Атрибуты закрытого ключа RSA (RSA Private Key Attributes)
CKA_MODULUS1,2,3Big integer

Модуль n

CKA_PUBLIC_EXPONENT2,3

Big integerОткрытая экспонента e
CKA_PRIVATE_EXPONENT1,2,3,4Big integerЗакрытая экспонента d
CKA_PRIME_12,3,4Big integerПростое число p
CKA_PRIME_22,3,4Big integerПростое число q
CKA_EXPONENT_12,3,4Big integerЗакрытая экспонента d по модулю p-1
CKA_EXPONENT_22,3,4Big integerЗакрытая экспонента d по модулю q-1
CKA_COEFFICIENT2,3,4Big integerКоэффициент CTR (КТО, Китайская теорема об остатках) RSA q-1 по модулю p

1 должен быть определен при создании объекта с помощью функции C_CreateObject.

...

к содержанию ↑

Объект CKO_PRIVATE_KEY, тип CKK_GOSTR3410 (определен стандартом)

Объекты закрытого ключа типа ГОСТ Р 34.10 (объект CKO_PRIVATE_KEY, тип CKK_GOSTR3410) содержат закрытые ключи ГОСТ Р 34.10-2001 или ГОСТ Р 34.10-2012 длиной 256 бит.  

Объект CKO_PRIVATE_KEY типа CKK_GOSTR3410 содержит как общие атрибуты объектов класса CKO_PRIVATE_KEY, так и специфические, которые приведены в следующей таблице.

Атрибуты объекта CKO_PRIVATE_KEY, тип CKK_GOSTR3410

Атрибут

Тип данных

Значение

Атрибуты закрытого ключа ГОСТ Р 34.10-2001 / ГОСТ Р 34.10-2012 (GOST R 3410 Private Key Attributes)
CKA_VALUE1,2,3,4Byte array

Закрытый ключ длиной 32 байта в порядке, начиная с младшего байта (little endian)

CKA_GOSTR3410PARAMS1,2,3

Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ Р 34.10-2001 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR3410 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID
CKA_GOSTR3411PARAMS1,2,3,5Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ Р 34.11-94 или ГОСТ Р 34.11-2012 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR3411 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID
CKA_GOST28147_PARAMS2,3,5Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ 28147-89 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR28147 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID. Значение атрибута может быть пропущено

1 должен быть определен при создании объекта с помощью функции C_CreateObject.

должен остаться незаданным при генерации объекта с помощью функций C_GenerateKey или C_GenerateKeyPair

3 должен остаться незаданным при расшифровании объекта с помощью функции C_UnwrapKey

4 не может быть раскрыт если объект имеет атрибут CKA_SENSITIVE, установленным в положение CK_TRUE или атрибут CKA_EXTRACTABLE в положение CK_FALSE.

5 может быть модифицирован после создания объекта с помощью вызова функции C_SetAttributeValue.

Обратите внимание, что при генерации закрытого ключа типа ГОСТ Р 34.10-2001/2012 доменные параметры не указываются в шаблоне ключа.Это обусловливается тем, что закрытые ключи этого типа генерируются только как часть ключевой пары ГОСТ Р 34.10-2001/2012 и доменные параметры для пары указываются в шаблоне открытого ключа.

Warning

Устройства Рутокен, сертифицированные ФСБ, не поддерживают создание (импорт) ключей функцией C_CreateObject по алгоритмам ГОСТ 28147-89, ГОСТ 34.10-2001 и ГОСТ 34.10-2012 в долговременную память (с флагом CKA_TOKEN = TRUE).


Code Block
titleШаблон создания закрытого ключа ГОСТ Р 34.10-2001
CK_OBJECT_CLASS your_class = CKO_PRIVATE_KEY;
CK_KEY_TYPE keyType = CKK_GOSTR3410;
CK_UTF8CHAR label[] = "A GOST R34.10-2001 private_key object";
CK_BYTE keyPairIdGost[] = {"GOST R 34.10-2001 sample key pair 1 ID (Aktiv Co.)"};
CK_BYTE gostR3410params_oid[] = {0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x23, 0x00};
CK_BYTE gostR3411params_oid[] = {0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1e, 0x00};
CK_BYTE gost28147params_oid[] = {0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1f, 0x00};
CK_BYTE value[32] = {...};
CK_BBOOL IsTrue = CK_TRUE;

CK_ATTRIBUTE template[] = {
    {CKA_CLASS, &your_class, sizeof(your_class)},
    {CKA_KEY_TYPE, &keyType, sizeof(keyType)},
    {CKA_TOKEN, &IsTrue, sizeof(IsTrue)},
    {CKA_LABEL, label, sizeof(label)-1},
	{CKA_ID, &keyPairIdGost, sizeof(keyPairIdGost)-1},
	{CKA_PRIVATE, &IsTrue, sizeof(IsTrue)},  
	{CKA_GOSTR3410PARAMS, gostR3410params_oid, sizeof(gostR3410params_oid)},
	{CKA_GOSTR3411PARAMS, gostR3411params_oid, sizeof(gostR3411params_oid)},
	{CKA_VALUE, value, sizeof(value)}
};


Code Block
titleШаблон создания открытого ключа ГОСТ Р 34.10-2012 (256 бит)
CK_OBJECT_CLASS your_class = CKO_PRIVATE_KEY;
CK_KEY_TYPE keyType = CKK_GOSTR3410;
CK_UTF8CHAR label[] = "A GOST R34.10-2012 private_key object";
CK_BYTE keyPairIdGost_256[] = {"GOST R 34.10-2012(256) sample key pair (Aktiv Co.)"};
CK_BYTE parametersGostR3410[] = {0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x23, 0x01};
CK_BYTE parametersGostR3411_256[] = {0x06, 0x08, 0x2a, 0x85, 0x03, 0x07, 0x01, 0x01, 0x02, 0x02};
CK_BYTE parametersGost28147[] = {0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1f, 0x00};
CK_BYTE value[32] = {...};	
CK_BBOOL IsTrue = CK_TRUE;
CK_ATTRIBUTE template[] = {
    {CKA_CLASS, &your_class, sizeof(your_class)},
    {CKA_KEY_TYPE, &keyType, sizeof(keyType)},
    {CKA_TOKEN, &IsTrue, sizeof(IsTrue)},
    {CKA_LABEL, label, sizeof(label)-1},
	{CKA_ID, &keyPairIdGost_256, sizeof(keyPairIdGost_256)-1},
	{CKA_PRIVATE, &IsTrue, sizeof(IsTrue)},  
	{CKA_GOSTR3410PARAMS, parametersGostR3410, sizeof(parametersGostR3410)},
	{CKA_GOSTR3411PARAMS, parametersGostR3411_256, sizeof(parametersGostR3411_256)},
	{CKA_VALUE, value, sizeof(value)}
};
 


Объект CKO_PRIVATE_KEY, тип CKK_GOSTR3410_512 (определен расширением стандарта)

Объекты закрытого ключа CKO_PRIVATE_KEY типа CKK_GOSTR3410 содержат закрытые ключи ГОСТ Р 34.10-2012 длиной 512 бит.  

Объект CKO_PRIVATE_KEY типа CKK_GOSTR3410 содержит как общие атрибуты объектов класса CKO_PRIVATE_KEY, так и специфические, которые приведены в следующей таблице.

Атрибуты объекта CKO_PRIVATE_KEY, тип CKK_GOSTR3410

Атрибут

Тип данных

Значение

Атрибуты закрытого ключа ГОСТ Р 34.10-2001 / ГОСТ Р 34.10-2012 (GOST R 3410 Private Key Attributes)
CKA_VALUE1,2,3,4Byte array

Закрытый ключ длиной 64 байта в порядке, начиная с младшего байта (little endian)

CKA_GOSTR3410PARAMS1,2,3

Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ Р 34.10-2012 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR3410 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID
CKA_GOSTR3411PARAMS1,2,3,5Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ Р 34.11-2012 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR3411 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID
CKA_GOST28147_PARAMS2,3,5Byte arrayИдентификатор, указывающий на тип объекта данных ГОСТ 28147-89 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOSTR28147 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID. Значение атрибута может быть пропущено

должен быть определен при создании объекта с помощью функции C_CreateObject.

должен остаться незаданным при генерации объекта с помощью функций C_GenerateKey или C_GenerateKeyPair

3 должен остаться незаданным при расшифровании объекта с помощью функции C_UnwrapKey

не может быть раскрыт если объект имеет атрибут CKA_SENSITIVE, установленным в положение CK_TRUE или атрибут CKA_EXTRACTABLE в положение CK_FALSE.

может быть модифицирован после создания объекта с помощью вызова функции C_SetAttributeValue.

Обратите внимание, что при генерации закрытого ключа типа ГОСТ Р 34.10-2012 доменные параметры не указываются в шаблоне ключа.Это обусловливается тем, что закрытые ключи этого типа генерируются только как часть ключевой пары и доменные параметры для пары указываются в шаблоне открытого ключа ГОСТ Р 34.10-2012.

Code Block
titleШаблон создания закрытого ключа ГОСТ Р 34.10-2012 (512 бит)
CK_OBJECT_CLASS your_class = CKO_PRIVATE_KEY;
CK_KEY_TYPE keyType = CKK_GOSTR3410_512;
CK_UTF8CHAR label[] = {"A GOST R34.10-2012 private_key object"};
CK_BYTE keyPairIdGost_512[] = {"GOST R 34.10-2012(512) sample key pair (Aktiv Co.)"};
CK_BYTE parametersGostR3410_512[] = {0x06, 0x09, 0x2a, 0x85, 0x03, 0x07, 0x01, 0x02, 0x01, 0x02, 0x01};
CK_BYTE parametersGostR3411_512[] = {0x06, 0x08, 0x2a, 0x85, 0x03, 0x07, 0x01, 0x01, 0x02, 0x03 };
CK_BYTE parametersGost28147[] = {0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1f, 0x00};
CK_BYTE value[64] = {...};	
CK_BBOOL IsTrue = CK_TRUE;

CK_ATTRIBUTE template[] = {
    {CKA_CLASS, &your_class, sizeof(your_class)},
    {CKA_KEY_TYPE, &keyType, sizeof(keyType)},
    {CKA_TOKEN, &IsTrue, sizeof(IsTrue)},
    {CKA_LABEL, label, sizeof(label)-1},
	{CKA_ID, &keyPairIdGost_512, sizeof(keyPairIdGost_512)-1},
	{CKA_PRIVATE, &IsTrue, sizeof(IsTrue)},  
	{CKA_GOSTR3410PARAMS, parametersGostR3410_512, sizeof(parametersGostR3410_512)},
	{CKA_GOSTR3411PARAMS, parametersGostR3411_512, sizeof(parametersGostR3411_512)},
	{CKA_VALUE, value, sizeof(value)}
};

 


Объекты секретных ключей

Table of Contents
minLevel2
include.*CKO_SECRET_KEY.*

Объекты секретных ключей (класс объектов CKO_SECRET_KEY) содержат секретные ключи. Следующая таблица определяет общие атрибуты для всех секретных ключей в дополнение к общим атрибутам, определенным для этого класса объектов.

Общие атрибуты секретных ключей

Атрибут

Тип данных

Значение

Общие атрибуты секретных ключей (Common Secret Key Attributes)

CKA_SENSITIVE1,2

CK_BBOOL

CK_TRUE, если объект является чувствительным (не может быть извлечен из токена  в открытом виде). По умолчанию имеет значение CK_FALSE

CKA_ENCRYPT1

CK_BBOOL

CK_TRUE, если ключ поддерживает шифрование3

CKA_DECRYPT1

CK_BBOOL

CK_TRUE, если ключ поддерживает расшифрование3

CKA_SIGN1

CK_BBOOL

CK_TRUE, если ключ поддерживает создание подписи (код аутентификации), где подпись представлена в виде приложения к данным 3

CKA_VERIFY1

CK_BBOOL

CK_TRUE, если ключ поддерживает проверку подписи (код аутентификации), где подпись представлена в виде приложения к данным 3

CKA_WRAP1

CK_BBOOL

CK_TRUE, если поддерживает шифрование ключей (маскирование, т.е. может быть использован для шифрования других ключей)3

CKA_UNWRAP1

CK_BBOOL

CK_TRUE, если ключ поддерживает расшифрование ключей (размаскирование, т.е. может быть использован для расшифрования других ключей)3

CKA_EXTRACTABLE1,4

CK_BBOOL

CK_TRUE если ключ является извлекаемым и может быть зашифрован3

CKA_ALWAYS_SENSITIVE5,6,7

CK_BBOOL

CK_TRUE, если ключ всегда имеет значение атрибута CKA_SENSITIVE равным CK_TRUE

CKA_NEVER_EXTRACTABLE5,6,7

CK_BBOOL

CK_TRUE , если ключ никогда не имеет значение атрибута CKA_EXTRACTABLE равным CK_TRUE

CKA_CHECK_VALUE

Byte array

Контрольная сумма ключа

CKA_WRAP_WITH_TRUSTED2

CK_BBOOL

CK_TRUE, если ключ может быть зашифрован только с помощью ключа шифрования со значением атрибута CKA_TRUSTED равным CK_TRUE. По умолчанию имеет значение CK_FALSE.

CKA_TRUSTED8

CK_BBOOL

Ключ шифрования  может быть использован для шифрования ключей со значением атрибута CKA_WRAP_WITH_TRUSTED равным CK_TRUE.

CKA_WRAP_TEMPLATE

CK_ATTRIBUTE_PTR

Для ключей шифрования ключей. Шаблон атрибутов для всех ключей, которые зашифрованы с помощью данного ключа шифрования. Число атрибутов в массиве равно отношению переменной ulValueLen атрибута к размеру CK_ATTRIBUTE.

CKA_UNWRAP_TEMPLATE

CK_ATTRIBUTE_PTR

Для ключей шифрования ключей. Шаблон атрибутов для всех ключей, которые могут быть расшифрованы с помощью данного ключа шифрования. Число атрибутов в массиве равно отношению переменной ulValueLen атрибута к размеру CK_ATTRIBUTE.

Атрибуты секретных ключей, определенные производителем (Rutoken Vendors Defined Secret Key Attributes)
CKA_SECRET_KEY_RSF_ID 

Идентификатор RSF–файла, хранящего секретный ключ (по умолчанию 0)

может быть изменен после создания объекта с помощью функции C_SetAttributeValue

после установки атрибута в значение CK_TRUE он становится read-only

значение по умолчанию определяется Рутокен и может зависеть от значения других атрибутов

после установки атрибута в значение CK_FALSE он становится read-only

должен остаться незаданным при создании объекта с помощью функции C_CreateObject

должен остаться незаданным при создании объекта с помощью функций C_GenerateKey или C_GenerateKeyPair

должен остаться незаданным при расшифровании ключа с помощью функции C_UnwrapKey

значение CK_TRUE может быть задано только Администратором

Если атрибут CKA_SENSITIVE имеет значение CK_TRUE или атрибут CKA_EXTRACTABLE имеет значение CK_FALSE, то некоторые атрибуты секретного ключа не могут быть извлечены из памяти токена в виде открытого текста. Такие атрибуты определяются отдельно для каждого типа секретного ключа.

Для объектов симметричных ключей атрибут значения проверки ключа (key check value — KCV) называется CKA_CHECK_VALUE, имеет данные типамассив байтов размером в 3 байта и работает подобно контрольной сумме ключа. Эти данные используются для перекрестной проверки симметричных ключей в системах, где применяются аналогичные ключи, а также для проверки корректности ключа при вводе его вручную или восстановлении из резервной копии.

Свойства:

  1. Для двух криптографически идентичных ключей значения этого атрибута должны быть одинаковы.
  2. Атрибут CKA_CHECK_VALUE не должен быть годен для восстановления какой-либо части значения ключа.
  3. Неуникальность. Два разных ключа могут иметь одинаковые значения атрибута CKA_CHECK_VALUE. Это маловероятно, но возможно.

Атрибут CKA_CHECK_VALUE является необязательным, но если поддерживается, то его значение всегда поставляется библиотекой независимо от того, как объект ключа был создан или получен. Атрибут может поставляться даже в случае запрета на выполнение операции шифрования для ключа (то есть когда CKA_ENCRYPT имеет значение CK_FALSE).

Если значение поставляется в шаблоне приложения (допускается, но не является обязательным), то оно должно соответствовать значению, вычисляемому библиотекой; в противном случае библиотека вернет ошибку CKR_ATTRIBUTE_VALUE_INVALID.

Генерация значения проверки ключа может быть предотвращена, если атрибут в шаблоне задан как «не имеющий значения» (нулевой длины). Приложение может запросить значение атрибута в любое время с помощью функции C_GetAttributeValue. Функция C_SetAttributeValue может быть использована для уничтожения атрибута, задав его как «не имеющий значения».

Если иное не указано в определении объекта, значение этого атрибута выводится из объекта ключа путем взятия первых трех байтов блока, состоящего из нулевых байтов (0x00) и зашифрованного способом и режимом по умолчанию (ECB, electronic codebook), ассоциированными с типом объекта секретного ключа.

В случае, когда нет возможности выяснить значение атрибута CKA_SECRET_KEY_RSF_ID, следует использовать значение по умолчанию, равное 0.

Атрибуты CKA_VENDOR_KEY_PIN_ENTER и CKA_VENDOR_KEY_CONFIRM_OP применимы только для Рутокен PINPad.

к содержанию ↑

Объект CKO_SECRET_KEY, тип CKK_GENERIC_SECRET (определен стандартом)

Объекты общего секретного ключа (объект CKO_SECRET_KEY, тип CKK_GENERIC_SECRET) содержат абстрактные симметричные ключи, по сути своей представляющие данные произвольной длины.  

Note
Ключи этого типа не поддерживают операции шифрования и расшифрования, однако из них могут быть получены другие ключи и они могут использоваться в операциях HMAC. Таким образом, механизм использования этих ключей пользователь определяет сам.

Объект CKO_SECRET_KEY типа CKK_GENERIC_SECRET содержит как общие атрибуты объектов класса CKO_SECRET_KEY, так и специфические.

Атрибуты объекта CKO_SECRET_KEY, тип CKK_GENERIC_SECRET

Атрибут

Тип данных

Значение

Атрибуты общего симметричного ключа (Generic Secret Key Attributes)
CKA_VALUE1,2,3,4Byte array

Значение (тело) ключа случайной длины

CKA_VALUE_LEN5,6CK_ULONGДлина значения ключа в байтах

1 должен быть определен при создании объекта с помощью функции C_CreateObject.

должен остаться незаданным при генерации объекта с помощью функций C_GenerateKey или C_GenerateKeyPair

3 должен остаться незаданным при расшифровании объекта с помощью функции C_UnwrapKey

4 не может быть раскрыт если объект имеет атрибут CKA_SENSITIVE, установленным в положение CK_TRUE или атрибут CKA_EXTRACTABLE в положение CK_FALSE.

5 должен остаться незаданным при создании объекта с помощью функции C_CreateObject

6 должен быть определен при генерации объекта с помощью функций C_GenerateKey или C_GenerateKeyPair

Code Block
titleШаблон создания общего симметричного ключа
CK_OBJECT_CLASS your_class = CKO_SECRET_KEY;
CK_KEY_TYPE keyType = CKK_GENERIC_SECRET;
CK_UTF8CHAR label[] = "A generic secret key object";
CK_BYTE value[] = {...};
CK_BBOOL IsTrue = CK_TRUE;

CK_ATTRIBUTE template[] = {
    {CKA_CLASS, &your_class, sizeof(your_class)},
    {CKA_KEY_TYPE, &keyType, sizeof(keyType)},
    {CKA_TOKEN, &IsTrue, sizeof(IsTrue)},
    {CKA_LABEL, label, sizeof(label)-1},
    {CKA_DERIVE,, &IsTrue, sizeof(IsTrue)},
    {CKA_VALUE, value, sizeof(value)}
};

к содержанию ↑

Объект CKO_SECRET_KEY, тип CKK_GOST (определен производителем)

Симметричный ключ CKO_SECRET_KEY типа CKK_GOST содержит общие атрибуты для объектов класса CKO_SECRET_KEY. Специфические (определенные пользователем) атрибуты для типа CKK_GOST приведены в таблице выше

Note
Объект CKO_SECRET_KEY типа CKK_GOST поддерживается библиотеками rtPKCS11 до версии 2.30.

 Атрибуты объекта CKO_SECRET_KEY, тип CKK_GOST

 

Атрибут

Тип данных

Значение

Атрибуты, определенные производителем (Rutoken Vendors Defined CKK_GOST Object Attributes)

CKA_VALUE

Byte Array

Тело ключа

CKA_GOST_KEY_OPTIONS


Опции ключа ГОСТ 28147-89 (режим шифрования: простая замена, гаммирование, гаммирование с обратной связью)

CKA_GOST_KEY_FLAGS

 

Флаги ключа ГОСТ 28147-89

к содержанию ↑

Объект CKO_SECRET_KEY, тип CKK_GOST28147 (определен стандартом)

Симметричный ключ GOST 28147-89 (объект CKO_SECRET_KEY, тип CKK_GOST28147) содержит как общие атрибуты для объектов класса CKO_SECRET_KEY, так и специфические, которые приведены в таблице ниже.

Note
Объект CKO_SECRET_KEY типа CKK_GOST28147 поддерживается библиотекой rtPKCS11 начиная с версии 2.30.

Атрибуты объекта CKO_SECRET_KEY, тип CKK_GOST28147

 

Атрибут

Тип данных

Значение

Атрибуты ГОСТ 28147 (GOST 28147 Attributes)
CKA_VALUE1,2,3,4Byte array

Тело ключа размером в 32 байта, записанное в порядке, начиная со младшего байта

CKA_GOST28147_PARAMS1,5,6Byte array

Идентификатор типа объекта данных ГОСТ 28147 (OID парамсета) в DER-кодировке. Когда ключ использует домен, параметр объекта ключа типа CKK_GOST28147 должен быть указан с тем же самым атрибутом CKA_OBJECT_ID

Атрибуты, определенные производителем (Rutoken Vendors Defined CKK_GOST Object Attributes)
CKA_SECRET_KEY_RSF_ID

Идентификатор RSF-файла, хранящего секретный ключ

1 должен быть определен при создании объекта с помощью функции C_CreateObject.

должен остаться незаданным при генерации объекта с помощью функций C_GenerateKey или C_GenerateKeyPair

3 должен остаться незаданным при расшифровании объекта с помощью функции C_UnwrapKey

4 не может быть раскрыт если объект имеет атрибут CKA_SENSITIVE,установленным в положение CK_TRUE или атрибут CKA_EXTRACTABLE в положение CK_FALSE.

5 должен быть определен при генерации объекта с помощью функций C_GenerateKey или C_GenerateKeyPair

6 долженбыть определен при расшифровании объекта с помощью функции C_UnwrapKey

Warning

Устройства Рутокен, сертифицированные ФСБ, не поддерживают создание (импорт) ключей функцией C_CreateObject по алгоритмам ГОСТ 28147-89, ГОСТ 34.10-2001 и ГОСТ 34.10-2012 в долговременную память (с флагом CKA_TOKEN = TRUE).


Code Block
titleШаблон создания симметричного ключа ГОСТ 28147-89
CK_OBJECT_CLASS your_class = CKO_SECRET_KEY;
CK_KEY_TYPE keyType = CKK_GOST28147;
CK_UTF8CHAR label[] = "A GOST 28147-89 secret key object";
CK_BYTE value[32] = {...};
CK_BYTE parametersGost28147[] = {0x06, 0x07, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x1f, 0x01};
CK_BBOOL IsTrue = CK_TRUE;

CK_ATTRIBUTE template[] = {
    {CKA_CLASS, &your_class, sizeof(your_class)},
    {CKA_KEY_TYPE, &keyType, sizeof(keyType)},
    {CKA_TOKEN, &IsTrue, sizeof(IsTrue)},
    {CKA_PRIVATE, &IsTrue, sizeof(IsTrue)},
    {CKA_LABEL, label, sizeof(label)-1},
    {CKA_ENCRYPT, &IsTrue, sizeof(IsTrue)},
    {CKA_DECRYPT, &IsTrue, sizeof(IsTrue)},
    {CKA_GOST28147PARAMS, parametersGost28147,sizeof(parametersGost28147)},
    {CKA_VALUE, value, sizeof(value)}
};
к содержанию ↑

...