Купить Р 50.1.110-2016 — бумажный документ с голограммой и синими печатями. подробнее
Распространяем нормативную документацию с 1999 года. Пробиваем чеки, платим налоги, принимаем к оплате все законные формы платежей без дополнительных процентов. Наши клиенты защищены Законом. ООО "ЦНТИ Нормоконтроль"
Наши цены ниже, чем в других местах, потому что мы работаем напрямую с поставщиками документов.
Рекомендации предназначены для применения в общедоступных информационно-телекоммуникационных, корпоративных сетях и информационных системах для защиты информации, не содержащей сведений, составляющих государственную тайну, с использованием механизмов шифрования и защиты аутентичности данных.
1 Область применения
2 Нормативные ссылки
3 Термины, определения и обозначения
4 Базовые типы [1]
5 Объекты для хранения ключей
5.1 Представление ключа
5.2 Объект закрытого ключа
5.3 Объект открытого ключа
5.4 Объект симметричного ключа
6 Обеспечение конфиденциальности ключей
7 Обеспечение целостности информации
8 Общая структура контейнера хранения ключей
Приложение А (справочное) ASN.1 модуль контейнера хранения ключей
Приложение Б (справочное) Контрольный пример
Библиография
Дата введения | 01.06.2017 |
---|---|
Добавлен в базу | 05.05.2017 |
Актуализация | 01.01.2021 |
23.11.2016 | Утвержден | Федеральное агентство по техническому регулированию и метрологии | 1751-ст |
---|---|---|---|
Разработан | ТК 26 Криптографическая защита информации | ||
Издан | Стандартинформ | 2016 г. |
Чтобы бесплатно скачать этот документ в формате PDF, поддержите наш сайт и нажмите кнопку:
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ТЕХНИЧЕСКОМУ РЕГУЛИРОВАНИЮ И МЕТРОЛОГИИ
РЕКОМЕНДАЦИИ ПО СТАНДАРТИЗАЦИИ
Контейнер хранения ключей
Издание официальное
Москва
Стандартинформ
2016
1 РАЗРАБОТАНЫ подкомитетом 2 Технического комитета по стандартизации ТК 26 «Криптографическая защита информации»
2 ВНЕСЕНЫ Техническим комитетом по стандартизации ТК 26 «Криптографическая защита информации»
3 УТВЕРЖДЕНЫ И ВВЕДЕНЫ В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 23 ноября 2016 г. Ne 1751-ст
4 ВВЕДЕНЫ ВПЕРВЫЕ
Правила применения настоящих рекомендаций установлены в статье 26 Федерального закона от 29 июня 2015 г. № 162-ФЗ «О стандартизации в Российской Федерации» Информация об изменениях к настоящим рекомендациям публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты» В случае пересмотра (замены) или отмены настоящих рекомендаций соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
© Стандартинформ. 2016
Настоящие рекомендации не могут быть полностью или частично воспроизведены, тиражированы и распространены в качестве официального издания без разрешения Федерального агентства по техническому регулированию и метрологии
II
P 50.1.110—2016
AuthenticatedData SEQUENCE { version CMSVersion,
originatorlnfo (0) IMPLICIT Originatorlnfo OPTIONAL, recipientlnfos Recipientlnfos, macAlgorithm MessageAuthenticationCodeAlgorithm, digestAlgorithm (1) DigestAlgorithmldenlifier OPTIONAL. encapContentlnfo EncapsulatedContentlnfo, authAttrs [2] IMPLICIT AuthAttributes OPTIONAL, mac MessageAuthenticationCode. unauthAttrs (3) IMPLICIT UnauthAltributes OPTIONAL
MessageAuthenticationCodeAlgorithm ::= Algorithmldentifier Использован следующий идентификатор алгоритма: MessageAuthenticationCodeAlgorithm.algorithm = id-tc26-hmac-gost-3411-12-512 Параметры HMAC_GOSTR3411_2012_512 не указаны: MessageAuthenticationCodeAlgorithm. parameters = NULL
В соответствии с 7.3 и Е (1) контейнер хранения ключей может быть представлен в структурах трех видов:
1) структура PKCS15Token в соответствии с (1);
2) структура AuthenticatedData в соответствии с [6]. инкапсулирующая структуру PKCSISToken;
3) структура SignedData в соответствии с (6J и (8), инкапсулирующая структуру PKCS15Token. Структуры видов 2 и 3 используют в тех случаях, когда необходимо обеспечить целостность контейнера хранения ключей.
В соответствии с 7.3 [1] структура PKCSISToken определена, как:
PKCS15Token ::= SEQUENCE {
version INTEGER {vl(O)} (vl,...), keyManagementlnfo [0] KeyManagementlnfo OPTIONAL. pkcs150bjects SEQUENCE OF PKCS150bjects
>
KeyManagementlnfo ::= SEQUENCE OF SEQUENCE { keyld Identifier, keylnfo CHOICE {
recipientlnfo Recipientllnfo, passwordlnfo (0] Passwordlnfo
} (CONSTRAINED BY {- Each keylD must be unique -})
Passwordlnfo ::= SEQUENCE { hint Label OPTIONAL.
algid Algorithmldentifier {{KeyDerivationAlgorithms}},
} (CONSTRAINED BY {-keylD shall point to a KEKRecipientlnfo-})
При использовании представления информации в виде pwri в KeyManagementlnfo фактически дублируется информация о шифровании ключа в структуре EnvelopedData Данную информацию можно опционально использовать для выбора и предварительной проверки пароля в том случае, если для разных объектов используют разные пароли.
При использовании представления kekri идентификаторы в таблице ключей keyld обеспечивают однозначное сопоставление параметров выработки парольного ключа и ключа, зашифрованного на данном пароле в структуре KEKRecipientlnfo.
7
Приложение A (справочное)
ASN.1 модуль контейнера хранения ключей
PKCS15-GOST-V2-0 DEFINITIONS IMPLICIT TAGS ::=
BEGIN
IMPORTS
AuthenticatedData, SignedData
FROM CryptographicMessageSyntax2004 ( iso(l) member-body(2) us(840) rsadsi(113549) pkcs(l) pkcs-9(9) smime(16) modules(0) cms-2004(24) )
PKCSISToken, PrivateKeyObject, PublicKeyOperations, PublicKeyObject, ObjectValue, Operations, SecretKeyObject, SubjectPublicKeylnfo, Keylnfo
FROM PKCS-15 (iso(l) member-body(2) us(840) rsadsi(113549) pkcs(l) pkcs-15(15) modules(1) pkcs-15(l))
ALGORITHM-IDENTIFIER, id-PBKDF2, PBKDF2-params
FROM PKCS5v2-0 (iso(l) member-body(2) us(840) rsadsi(113549) pkcs(l) pkcs-5(5) modules(16) pkcs5v2-0(1))
GostR3410-2001-ParamSetParameters
FROM GostR3410-2001-ParamSetSyntax ( iso(l) member-body(2) ru(643) rans(2) cryptopro(2) other(1) modules(1) gostR3410-2001-ParamSetSyntax(12) 1 )
id-GostR3410-2001-TestParamSet, id-GostR3410-2001-CryptoPro-A-ParamSet, id-GostR3410-2001-CryptoPro-B-ParamSet, id-GostR3410-2001-CryptoPro-C-ParamSet, id-GostR3410-2001-CryptoPro-XchA-ParamSet, id-GostR3410-2001-CryptoPro-XchB-ParamSet FROM GostR3410-2001-PKISyntax { iso(l) member-body(2) ru(643) rans(2) cryptopro(2) other(1) modules(1) gostR3410-2001-PKISyntax(9) 1 )
id-Gost28147-89-CryptoPro-KeyWrap
FROM GostR3410-EncryptionSyntax ( iso(l) member-body(2) ru(643) rans(2) cryptopro(2) other(1) modules(1) gostR3410-EncryptionSyntax(5) 2 )
id-Gost28147-89, id-Gost28147-89-TestParamSet, id-Gost28147-89-CryptoPro-A-ParamSet, id-Gost28147-89-CryptoPro-B-ParamSet, id-Gost28147-89-CryptoPro-C-ParamSet, id-Gost28147-89-CryptoPro-D-ParamSet, id-Gost28147-89-CryptoPro-Oscar-l-1-ParamSet, id-Gost28147-89-CryptoPro-Oscar-l-0-ParamSet, id-Gost28147-89-CryptoPro-RIC-l-ParamSet, Gost28147-89-IV
FROM Gost28147-89-EncryptionSyntax ( iso(l) member-body(2) ru(643) rans{2) cryptopro{2) other(1) modules(1) gost28147-89-EncryptionSyntax(4) 1 )
Gost28147-89-ParamSetParameters
FROM Gost28147-89-ParamSetSyntax { iso(l) member-body(2) ru(643) rans{2) cryptopro(2) other(1) modules(1) gost28147-89-ParamSetSyntax(6) 1 )
— OID-ы
id-tc26 OBJECT IDENTIFIER ::=
( iso(l) member-body(2) ru(643) std-org(7) tc26(l) )
8
P 50.1.110—2016
id-tc26-algorithms OBJECT IDENTIFIER ::=
{ id-tc26 algorithms(1) }
id-tc26-digest OBJECT IDENTIFIER
( id-tc26-algorithms digest(2) )
id-tc26-gost3411-12-512 OBJECT IDENTIFIER ::=
( id-tc26-digest gost3411-12-512(3) J
id-tc26-mac OBJECT IDENTIFIER
( id-tc26-algorithms mac(4) }
id-tc26-hmac-gost3411-12-512 OBJECT IDENTIFIER ( id-tc26-mac hmac-gost3411-12-512(2) }
id-tc26-constants OBJECT IDENTIFIER ::=
{ id-tc26 constants(2) }
id-tc26-sign-constants OBJECT IDENTIFIER ::=
{ id-tc26-constants sign-constants(1) J
id-tc26-gost3410-12-512-constants OBJECT IDENTIFIER ::=
J id-tc26-sign-constants gost3410-12-512-constants(2) }
id-tc26-gost3410-12-512-paramSetTest OBJECT IDENTIFIER
{ id-tc26-gost3410-12-512-constants paramSetTest(0) }
id-tc26-gost3410-12-512-paramSetA OBJECT IDENTIFIER
{ id-tc26-gost3410-12-512-constants paramSetA(l) }
id-tc26-gost3410-12-512-paramSetB OBJECT IDENTIFIER ::=
{ id-tc26-gost3410-12-512-constants paramSetB{2) }
id-tc26-cipher-constants OBJECT IDENTIFIER ::=
| id-tc26-constants cipher-constants(5) )
id-tc26-gost-28147-constants OBJECT IDENTIFIER ::=
( id-tc26-cipher-constants gost-28147-constants(1) J
id-tc26-gost-28147-param-Z OBJECT IDENTIFIER
{ id-tc26-gost-28147-constants param-Z(l) J
id-infotecs-gost28147-algorithms OBJECT IDENTIFIER
{ iso(l) member-body(2) ru{643) rans(2) infotecs(4) algorithms(3) gost28147-89(2) )
id-Gost28147-89-cbc-imm OBJECT IDENTIFIER ::=
{ id-infotecs-gost28147-algorithms cbc-imm(2) )
id-Gost28147-89-cnt-imm OBJECT IDENTIFIER ::=
{ id-in£otecs-gost28147-algorithms cnt-imm(3) )
-- Контейнеры PKCS15-GOST
PKCS15-GOST-Token ::= PKCS15Token (CONSTRAINED BY (
— 1. Разделы 7.2, 7.3 и E.1.2 в "PKCS #15 vl.l: Cryptographic Token Information
Format Standard".
— 2. В структуре 'PathOrObjects' должны использоваться варианты 'objects' или
— 'direct-protected' (для открытых и зашифрованных объектов соответственно).
— 3. Все ссылки на 'ContentEncryptionAlgorithms' должны быть заменены на
'ContentEncryptionAlgorithmsGost'.
9
P 50.1.110—2016
— 4. Все ссылки на 'KeyDerivationAlgorithms* должны быть заменены на
'KeyDerivationAlgorithmsGost'.
— 5. Все ссылки на 'KeyEncryptionAlgorithms' должны быть заменены на
'KeyEncryptionAlgorithmsGost'.
— 6. В структурах 'Recipientlnfo' должны использоваться только варианты 'kekri'
и 'pwri'.
— 7. Все ссылки на 'PrivateKeyType' должны быть заменены на ' PrivateKeyTypeGost'.
— 8. Все ссылки на 'PublicKeyType' должны быть заменены на 'PublicKeyTypeGost'.
— 9. Все ссылки на 'SecretKeyType' должны быть заменены на 'SecretKeyTypeGost'.
))
PKCSl5-GOST-AuthenticatedToken ::= AuthenticatedData (CONSTRAINED BY {
— 1. Разделы 7.3 и E.1.3 в "PKCS #15 vl.l: Cryptographic Token Information
Format Standard".
— 2. Все ссылки на 'PKCS15Token' должны быть заменены на 'PKCS15-GOST-Token'.
— 3. Все ссылки на 'KeyEncryptionAlgorithms' должны быть заменены на
'KeyEncryptionAlgorithmsGost'.
— 4. Все ссыпки на 'DigestAlgorithms' должны быть заменены на 'DigestAlgorithmsGost'.
— 5. Все ссылки на 'MACAlgorithms' должны быть заменены на 'MACAlgorithmsGost'.
))
PKCS15-GOST-SignedToken ::= SignedData (CONSTRAINED BY {
— 1. Раздел 7.3b "PKCS #15 vl.l: Cryptographic Token Information Format Standard".
— 2. "Методические рекомендации TK 26. Использование алгоритмов ГОСТ 28147-89,
ГОСТ Р 34.11 и ГОСТ Р 34.10 в криптографических сообщениях формата CMS".
— 3. Все ссылки на 'PKCSISToken' должны быть заменены на 'PKCS15-GOST-Token'.
))
-- Типы для PKCS15-GOST
— OID-ы и наборы параметров
GostSecretKeyAlgs OBJECT IDENTIFIER ::= { id-Gost28147-89,
}
Gost28147-89-ParamSets OBJECT IDENTIFIER :{
Gost28147-89-CryptoPro-ParamSets |
Gost28147-89-TC26-ParamSets
Gost28147-89-CryptoPro-ParamSets OBJECT IDENTIFIER ::= {
id-Gost28147-89-TestParamSet I — Only for testing purposes id-Gost28147-89-CryptoPro-A-ParamSet I id-Gost28147-89-CryptoPro-B-ParamSet I id-Gost28147-89-CryptoPro-C-ParamSet I id-Gost28147-89-CryptoPro-D-ParamSet I id-Gost28147-89-CryptoPro-Oscar-l-l-ParamSet I id-Gost28147-89-CryptoPro-Oscar-l-0-ParamSet I id-Gost28147-89-CryptoPro-RIC-l-ParamSet
Gost28147-89-TC26-ParamSets OBJECT IDENTIFIER ::= ( id-tc26-gost-28147-param-Z,
Gost3410-2001-ParamSets OBJECT IDENTIFIER 1
id-GostR3410-2001-TestParamSet | — Only for testing purposes id-GostR3410-2001-CryptoPro-A-ParamSet I id-GostR3410-2001-CryptoPro-B-ParamSet I id-GostR3410-2001-CryptoPro-C-ParamSet I
P 50.1.110—2016
id-GostR3410-2001-CryptoPro-XchA-ParamSet | id-GostR3410-2001-CryptoPro-XchB-ParamSet,
Gost3410-2012-ParamSets OBJECT IDENTIFIER ::= (
id-tc26-gost3410-12-512-paramSetTest I — Only for testing purposes id-tc26-gost3410-12-512-paramSetA | id-tc26-gost3410-12-512-paramSetB,
ContentEncryptionAlgorithmsGost ALGORITHM-IDENTIFIER {
1 Gost28147-89-Parameters IDENTIFIED BY id-Gost28147-89 ) I 1 Gost28147-89-Parameters IDENTIFIED BY id-Gost28147-89-cbc-imm | I { Gost28147-89-Parameters IDENTIFIED BY id-Gost28147-89-cnt-imm },
KeyDerivationAlgorithmsGost ALGORITHM-IDENTIFIER {
( PBKDF2-Gost3411-2012-512-params IDENTIFIED BY id-PBKDF2 J,
KeyEncryptionAlgorithmsGost ALGORITHM-IDENTIFIER ::= {
( Gost28147-89-KeyWrapParameters IDENTIFIED BY id-Gost28147-89-CryptoPro-KeyWrap I,
DigestAlgorithmsGost ALGORITHM-IDENTIFIER ::= (
I NULL IDENTIFIED BY id-tc26-gost3411-12-512 },
MacAlgorithmsGost ALGORITHM-IDENTIFIER {
< NULL IDENTIFIED BY id-tc26-hmac-gost3411-12-512 },
Gost28147-89-Parameters ::= SEQUENCE ( iv Gost28147-89-IV,
encryptionParamSet OBJECT IDENTIFIER (Gost28147-89-ParamSets)
PBKDF2-Gost3411-2012-512-params PBKDF2-params (CONSTRAINED BY {
— Рекомендации по стандартизации P 50.1.111-2016 " Информационная технология.
— Криптографическая защита информации. Парольная защита ключевой информации"
))
Gost28147-89-KeyWrapParameters ::= SEQUENCE {
encryptionParamSet OBJECT IDENTIFIER (Gost28147-89-ParamSets) , ukm OCTET STRING (SIZE (8)) OPTIONAL
— Закрытый ключ
PrivateKeyTypeGost ::= CHOICE | privateGostR3410-2012Key
(27] PrivateKeyObject (PrivateGostR3410-2012KeyAttributes),
11
PrivateGostR3410-2012KeyAttributes ::= SEQUENCE [ value ObjectValue {GostR3410-2012PrivateKey},
keylnfo Keylnfo [GostPrivateKeyParameters, PublicKeyOperationsJ OPTIONAL,
)
GostR3410-2012PrivateKey ::= GostR3410-2012-KeyValueMask GostR3410-2012-KeyValueMask OCTET STRING (CONSTRAINED BY [
— Рекомендации по стандартизации P 50.1.112-2016 " Информационная технология.
Криптографическая защита информации. Транспортный ключевой контейнер"
))
GostPrivateKeyParameters CHOICE {
gostR3410-2012ParamSet OBJECT IDENTIFIER
(Gost3410-2001-ParamSets I Gost3410-2012-ParamSets), privateKeyParamSet (0) GostR3410-2001-ParamSetParameters,
1
— Открытый ключ
PublicKeyTypeGost ::= CHOICE { publicGostR3410-2012Key
[27J PublicKeyObject {PublicGostR3410-2012KeyAttributes},
}
PublicGostR3410-2012KeyAttributes ::= SEQUENCE {
value ObjectValue (GostR3410-2012PublicKeyChoice),
keylnfo Keylnfo [GostPrivateKeyParameters, PublicKeyOperations) OPTIONAL, ... — For future extensions
)
GostR3410-2012PublicKeyChoice ::= CHOICE { raw GostR3410-2012Point, spki SubjectPublicKeylnfoGost,
1
GostR3410-2012Point ::= GostR3410-2012-PublicKey
GostR3410-2012-PublicKey ::= OCTET STRING (CONSTRAINED BY {
— Рекомендации по стандартизации P 50.1.112-2016 " Информационная технология.
Криптографическая защита информации. Транспортный ключевой контейнер"
))
SubjectPublicKeylnfoGost ::= SubjectPublicKeylnfo (CONSTRAINED BY {
-- Методические рекомендации ТК 26 "Техническая спецификация использования алгоритмов ГОСТ Р 34.10, ГОСТ Р 34.11 в профиле сертификата и списке отзыва сертификатов
— (CRL) инфраструктуры открытых ключей Х.509" (проект)
})
— Secret Keys
SecretKeyTypeGost CHOICE [
gostKey [27] GostSecretKey,
)
12
P 50.1.110—2016
1 Область применения................................................................ 1
2 Нормативные ссылки................................................................ 1
3 Термины, определения и обозначения................................................. 1
4 Базовые типы [1]............................................
5 Объекты для хранения ключей.................................
5.1 Представление ключа....................................
5.2 Объект закрытого ключа...................................
5.3 Объект открытого ключа...................................
5.4 Объект симметричного ключа..............................
6 Обеспечение конфиденциальности ключей......................
7 Обеспечение целостности информации .........................
8 Общая структура контейнера хранения ключей...................
Приложение Б (справочное) Контрольный пример......................................... 14
Библиография....................................................................... 39
Приложение А (справочное) ASN.1 модуль контейнера хранения ключей
Настоящие рекомендации содержат описание расширения документа PKCS#15 «Cryptographic Token Information Format Standard» (1]. разработанного и опубпикованного RSA Laboratories. Он описывает синтаксис представпения ключевой информации, цифровых сертификатов, аутентификационной информации и других данных при их хранении на внешних носителях.
Данное расширение [1) позволяет использовать синтаксис базового стандарта для создания контейнеров хранения ключевой информации, используемой в криптографических алгоритмах по ГОСТ Р 34.10 и ГОСТ 28147-89.
Целесообразность разработки настоящих рекомендаций вызвана потребностью в унифицированном решении, использующем национальные криптографические стандарты и позволяющем обеспечить совместимость средств криптографической защиты разпичных разработчиков в части формата хранения ключевой информации на носителе пользователя.
Примечание — Основная часть настоящих рекомендаций дополнена приложениями А и Б
IV
РЕКОМЕНДАЦИИ ПО СТАНДАРТИЗАЦИИ
Информационная технология
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
Контейнер хранения ключей
Information technology Cryptographic data security Key storage container
Дата введения —2017—06—01
Настоящие рекомендации предназначены для применения в общедоступных информационнотелекоммуникационных. корпоративных сетях и информационных системах для защиты информации, не содержащей сведений, составляющих государственную тайну, с использованием механизмов шифрования и защиты аутентичности данных
В настоящих рекомендациях использованы нормативные ссылки на следующие стандарты:
ГОСТ Р 34.10 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
ГОСТ Р 34.11 Информационная технология. Криптографическая защита информации. Функция хэширования
ГОСТ 28147-89 «Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования»
Р 50.1.111—2016 Информационная технология. Криптографическая защита информации. Парольная защита ключевой информации
Р 50.1.112—2016 Информационная технология. Криптографическая защита информации. Транспортный ключевой контейнер
Р 50.1.113—2016 Информационная технология. Криптографическая защита информации. Криптографические алгоритмы, сопутствующие применению алгоритмов электронной цифровой подписи и функции хэширования
Примечание — При пользовании настоящими рекомендациями целесообразно проверить действие ссылочных стандартов (рекомендаций) в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет или по ежегодному информационному указателю «Национальные стандарты», который опубликован по состоянию на 1 января текущего года, и по выпускам ежемесячного информационного указателя «Национальные стандарты* за текущий год Если заменен ссылочный стандарт (рекомендации), на который дана недатированная ссылка, то рекомендуется использовать действующую версию этого стандарта (рекомендаций) с учетом всех внесенных в данную версию изменений Если заменен ссылочный стандарт (рекомендации), на который дана датированная ссылка, то рекомендуется использовать версию этого стандарта (рекомендаций) с указанным выше годом утверждения (принятия). Если после утверждения настоящих рекомендаций в ссылочный стандарт (рекомендации), на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение рекомендуется применять без учета данного изменения Если ссылочный стандарт (рекомендации) отменен без замены, то положение. в котором дана ссылка на него, применяется в части, не затрагивающей эту ссылку.
В настоящих рекомендациях применены термины, определения и обозначения, определенные в документах, приведенных в разделе «Библиография».
Издание официальное
Базовые типы подробно описаны в 6.1 (1). Этих базовых типов достаточно для спецификации информации о ключах, включая назначение ключей, сроки действия, данные о владельце, издателе и т. п.
В (1) отсутствует определение «имя контейнера», и для наименования объектов применена метка (61.3(1)).
Label ::= UTF8String (SIZE(0..pkcs15-ub-label))
Объекты закрытых, открытых ключей и сертификатов содержат идентификатор ГО (см. структуры CommonKeyAttributes. CommonCertificateAttributes (1)). Идентификатор имеет следующий тип:
Identifier ::= OCTET STRING (SIZE(0..pkcs15-ub-identifier).
Идентификатор является уникальным для объекта одного типа в рамках одного контейнера (1). Совпадение идентификаторов объектов разного типа означает их взаимосвязь. Например, соответствие закрытого ключа открытому ключу или соответствие ключа сертификату.
Для идентификации ключей также могут использоваться поля subjectName, содержащие имя субъекта ключа (см. структуры CommonPrivateKeyAttributes. CommonPublicKeyAttributes (1)).
В (1) объекты могут храниться как в виде значений, так и в виде ссылок на другие объекты. Для этого применен тип данных PathOrObjects (6.1.7 (1)).
PathOrObjects {ObjectType} ::= CHOICE { path Path.
objects (0) SEQUENCE OF ObjectType,
indirect-protected (1) ReferencedValue {EnvelopedData {SEQUENCE OF ObjectType}}.
direct-protected (2) EnvelopedData {SEQUENCE OF ObjectType},
Настоящие рекомендации определяют, что для хранения неконфиденциальных объектов (открытые ключи, сертификаты) должен использоваться вариант objects(O). а для хранения конфиденциальных объектов (закрытые и симметричные ключи) — вариант direct-protected(2).
Для идентификации параметров объектов и области их применения используется тип Keylnfo (6.1.13(1)).
Keylnfo {ParameterType. OperationsType} ::= CHOICE { reference Reference. paramsAndOps SEQUENCE { parameters ParameterType. supportedOperations OperationsType OPTIONAL
Сами объекты (1) представляют собой набор атрибутов разного уровня детализации, позволяющих описать всевозможные свойства объектов и при необходимости расширить перечень описываемых свойств.
PKCS150bject {ClassAttributes. SubClassAttributes. TypeAttributes} ::= SEQUENCE { commonObjectAttributes CommonObjectAttributes.
ClassAttributes ClassAttributes.
SubClassAttributes (0) SubClassAttributes OPTIONAL. typeAttributes (1) TypeAttributes
(1) определено, что в контейнере могут храниться ключи трех типов: закрытые, открытые и симметричные. Ниже определены расширения соответствующих структур для хранения ключей алгоритмов ГОСТ Р 34.10 и ГОСТ 28147-89
5.1 Представление ключа
Для обеспечения защиты закрытых и симметричных ключей от утечек по побочным каналам при считывании и проведении операций с ключами целесообразно использование маскированных
2
P 50.1.110—2016
ключей. Для хранения маскированных ключей и наборов масок использованы представления ключей в виде:
GostR3410-2012-KeyValueMask ::= OCTET STRING { KJM,|M2|....|Mk}
Gost28147-89-KeyValueMask OCTET STRING {KJM,|M2|....|Mk}
Подробное описание данных представлений ключей изложено в разделе 4 Р 50.1.112—2016.
5.2 Объект закрытого ключа
В соответствии с 6.3.1 [1):
PrivateKeyType ::= CHOICE {
privateRSAKeyPrivateKeyObject {PrivateRSAKeyAttributes}. privateECKey (0] PrivateKeyObject {PrivateECKeyAttributes}. privateDHKey (1) PrivateKeyObject {PrivateDHKeyAttributes}. privateDSAKey[2j PrivateKeyObject {PrivateDSAKeyAttributes}, privateKEAKey(3] PrivateKeyObject {PrivateKEAKeyAttributes},
... - For future extensions
}
PrivateKeyObject {KeyAttributes} ::= PKCS150bject {
CommonKeyAttributes. CommonPrivateKeyAttributes. KeyAttributes}
Для хранения ключей, выработанных по алгоритму ГОСТ Р 34.10. в структуру PrivateKeyType введен следующий тип ключа:
privateGostR3410-2012Кеу (27) PrivateKeyObject {
PrivateGostR3410-2012KeyAttributes}
PrivateGostR3410-2012KeyAttributes ::= SEQUENCE { value ObjectValue {GostR3410-2012PrivateKey}, keylnfo Keylnfo {GostPrivateKeyParameters, PublicKeyOperations}
OPTIONAL.
... -- For future extensions
}
GostR3410-2012PrivateKey .:= GostR3410-2012-KeyValueMask
GostPrivateKeyParameters CHOICE {
gostR3410-2012ParantSet OBJECT IDENTIFIER. privateKeyParamSet [0) GostR3410-2001-ParamSetParameters.
где gostR3410-2012ParamSet — идентификатор параметров алгоритма, который выбран в соответствии с «Идентификаторы объектов (OID) технического комитета по стандартизации)» (2). Рекомендуется использовать значение id-tc26-gost-3410-12-512-paramSetA.
Если структура keylnfo отсутствует, то предполагается значение параметров по умолчанию:
Keylnfo.paramsAndOps.parameters = id-tc26-gost-3410-12-512-paramSetA
5.3 Объект открытого ключа
В 6.4.1 (1) определены открытые ключи:
PublicKeyType ::= CHOICE {
publicRSAKey PublicKeyObject {PublicRSAKeyAttributes}. publicECKey [0] PublicKeyObject {PublicECKeyAttributes}. publicDHKey (1) PublicKeyObject {PublicDHKeyAttributes}. publicDSAKey (2j PublicKeyObject {PublicOSAKeyAttributes}, publicKEAKey (3) PublicKeyObject {PublicKEAKeyAttributes}.
... - For future extensions
3
P 50.1.110—2016
PublicKeyObject {KeyAttributes} ::= PKCSISObject {
CommonKeyAttributes. CommonPublicKeyAttributes. KeyAttributes}
Для хранения открытого ключа, выработанного по алгоритму ГОСТ Р 34.10, в структуру PublicKeyType введен следующий тип:
publicGostR3410-2012Кеу [27] PublicKeyObject {
PublicGostR3410-2012KeyAttributes}
PublicGostR3410-2012KeyAttributes SEQUENCE {
value ObjectValue {GostR3410-2012PublicKeyChoice}.
keylnfo Keylnfo {GostPrivateKeyParameters, PublicKeyOperations}
OPTIONAL.
... - For future extensions
}
GostR3410-2012PublicKeyChoice ::= CHOICE { raw GostR3410-2012Point, spki SubjectPublicKeylnfo.
}
При использовании SubjectPublicKeylnfo открытый ключ и его параметры должны быть представлены в соответствии с 4.3 (3). Поле SubjectPublicKeylnfo.algorithm.parameters не должно быть NULL.
При использовании GostR3410-2012Point открытый ключ должен иметь представление, описанное в Р 50.1.112—2016.
GostR3410-2012Point ::= GostR3410-2012-PublicKey.
Если структура keylnfo отсутствует, то предполагается значение параметров по умолчанию:
Keylnfo.paramsAndOps.parameters = id-tc26-gost-3410-12-512-paramSetA
5.4 Объект симметричного ключа
Структура симметричного секретного ключа определена в 6.5.1 (1}.
SecretKeyType ::= CHOICE {
genericSecretKey SecretKeyObject {GenericSecretKeyAttributes}. rc2key (0) SecretKeyObject {GenericSecretKeyAttributes}, rc4key (1) SecretKeyObject {GenericSecretKeyAttributes}. desKey (2) SecretKeyObject {GenericSecretKeyAttributes}, des2Key [3] SecretKeyObject {GenericSecretKeyAttributes}. des3Key [4] SecretKeyObject {GenericSecretKeyAttributes}. castKey [5] SecretKeyObject {GenericSecretKeyAttributes}. cast3Key (6) SecretKeyObject {GenericSecretKeyAttributes}. cast128Key (7) SecretKeyObject {GenericSecretKeyAttributes}. rc5Key (8) SecretKeyObject {GenericSecretKeyAttributes}. ideaKey [9] SecretKeyObject {GenericSecretKeyAttributes}. skipjackKey [10] SecretKeyObject {GenericSecretKeyAttributes}. batonKey [11] SecretKeyObject {GenericSecretKeyAttributes}. juniperKey [12] SecretKeyObject {GenericSecretKeyAttributes}. гсбКеу [13] SecretKeyObject {GenericSecretKeyAttributes}. otherKey [14] OtherKey.
... - For future extensions
SecretKeyObject {KeyAttributes} ::= PKCSISObject {
Common KeyAttributes. CommonSecretKeyAttributes. KeyAttributes}
Для хранения симметричного ключа для алгоритма ГОСТ 28147-89 в структуру SecretKeyType введен тип:
gostKey [27] GostSecretKey
4
P 50.1.110—2016
GostSecretKey ::= SEQUENCE {
keyTypeGost OBJECT IDENTIFIER.
keyAttr SecretKeyObject {GoslSecretKeyAttributes}
В качестве идентификатора типа ключа должен быть представлен идентификатор алгоритма в соответствии с 8.1 [4]:
keyTypeGost = id-Gost28147-89
Атрибуты симметричного ключа определены следующим образом:
GoslSecretKeyAttributes ::= SEQUENCE {
value ObjectValue {Gost28147-89-KeyValueMask}.
keylnfo Keylnfo {GostSecretKeyParameters. SecretKeyOperations}
OPTIONAL.
GostSecretKeyParameters ::= CHOICE {
cryptoProParamSet OBJECT IDENTIFIER. secretKeyParamSet [0] Gost28147-89-ParamSetParameters.
SecretKeyOperations ::= Operations
Идентификаторы параметров алгоритма cryptoProParamSet выбираются в соответствии с 8.1 RFC4357 (4] и разделом 4 (5].
Структура Gost28147-89-ParamSetParameters определена в 8.1 (4].
Если структура keylnfo отсутствует, то принимается значение по умолчанию:
Keylnfo. paramsAndOps.parameters = id-Gost28147-89-CryptoPro-A-ParamSet
Для обеспечения конфиденциальности объектов закрытого и симметричного ключа в соответствии с [1] использован тип EnvelopedData. Данный тип определен в разделе 6 (6).
EnvelopedData {Туре} ::= SEQUENCE {
version INTEGER {v0(0). vl(l). v2(2), v3(3). v4(4)}(v0|v1|v2....). originatorlnfo [0) Originatorlnfo OPTIONAL, redpientlnfos Recipientlnfos, encryptedContentlnfo EncryptedContentlnfo{Type}. unprotectedAttrs (1) SET SIZE (1..MAX) OF Attribute OPTIONAL
Зашифрованное содержимое контейнера представлено в виде:
EncryptedContentlnfo {Туре} ::= SEQUENCE { contentType OBJECT IDENTIFIER. contentEncryptionAlgorithm Algorithmldentifier {{ContentEncryptionAlgorithms}}. encryptedContent (0] OCTET STRING OPTIONAL «CONSTRAINED BY {
- encryptedContent' shall be the result of encrypting DER-encoded
- value of type - Type}
Тип инкапсупированных данных Type в соответствии с 7.3 (1) идентифицирован как: pkcsl5-ct-PKCS15Token OBJECT IDENTIFIER ::= {pkcs15-ct 1} pkcs15-ct OBJECT IDENTIFIER ::= {pkcsl5 3} pkcsl5 OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-15(15)}
При шифровании должен быть использован алгоритм ГОСТ 28147-89. Алгоритм и параметры шифрования contentEncryptionAlgorithm указывают в соответствии с 5.1 (7) и разделом 5 [5].
5
Могут быть использованы алгоритмы шифрования с завершающей имитовставкой:
Алгоритм гаммирования с обратной связью (раздел 4 ГОСТ 28147-89): id-Gost28147-89-cbc-imm OBJECT IDENTIFIER ::=
{iso(1) member-body(2) m(643) rans(2) infotecs(4) algorithms(3) gost28147-89(2) cbc-imm(2)}
Алгоритм гаммирования (раздел 3 ГОСТ 28147-89): id-Gost28147-89-cnt-imm OBJECT IDENTIFIER ::=
{iso(1) member-body(2) ru(643) rans(2) infotecs(4) algorithms(3) gost28147-89(2) cnt-imm(3)}
Параметры алгоритмов с завершающей имитовставкой указаны в соответствии с 5.1. [71 и раздел 5 (5). Зашифрованные данные содержат результат зашифрования конкатенированный с имитовставкой. вычисленной на тех же параметрах, что и при зашифровании.
В качестве ключа шифрования (Key Encryption Key. КЕК) использован симметричный ключ ГОСТ 28147-89. Информация о ключе шифрования размещена в структуре Recipientlnfo:
Recipientlnfo ::= CHOICE {
ktri KeyTransRecipientlnfo. kari (1) KeyAgreeRedpientlnfo. kekri (2) KEKRedpientlnfo. pwri (3) PasswordRecipientinfo. ori (4) OtherRedpientlnfo
Информация о шифровании в этом случае может быть представлена как в виде kekri. так и в виде pwri (6.2.3 и 6.2.4 [6] соответственно).
KEKRedpientlnfo ::= SEQUENCE {
version CMSVersion, -- always set to 4 kekid KEKIdentifier,
keyEncryplionAlgorithm KeyEncryptionAlgorithmldentifier. encryptedKey EncryptedKey
PasswordRecipientinfo ::= SEQUENCE {
version CMSVersion. - Always set to 0 keyDerivationAlgorithm (0) KeyDerivationAlgorithmldentifier OPTIONAL.
keyEncryplionAlgorithm KeyEncryptionAlgorithmldentifier. encryptedKey EncryptedKey
При использовании варианта pwri поле keyDerivationAlgorithm описывает алгоритм и параметры выработки ключа из пароля пользователя в соответствии с рекомендациями PKCS#5 по схеме PBKDF2 с использованием ГОСТ Р 34.11 в соответствии с 7.1 Р 50.1.111—2016.
При шифровании ключа должен быть использован алгоритм ГОСТ 28147-89. Алгоритм и параметры шифрования keyEncryplionAlgorithm указаны в соответствии с 5.1 (7) и разделом 5 [5].
Зашифрованный ключ представлен в виде:
Gost28147-89-EncryptedKey ::= SEQUENCE { encryptedKey Gost28147-89-Key. maskKey (0) IMPLICIT Gost28147-89-Key OPTIONAL, macKey Gost28147-89-MAC
Для обеспечения целостности ключей результирующая структура PKCSISToken инкапсулирована в AuthenticatedData в соответствии с 9 |6] и Е.1.3 [1] с использованием алгоритма НМАС_ GOSTR3411_2012_512 no Р 50.1.113—2016.
6