Товары в корзине: 0 шт Оформить заказ
Стр. 1 

44 страницы

448.00 ₽

Купить Р 50.1.110-2016 — бумажный документ с голограммой и синими печатями. подробнее

Распространяем нормативную документацию с 1999 года. Пробиваем чеки, платим налоги, принимаем к оплате все законные формы платежей без дополнительных процентов. Наши клиенты защищены Законом. ООО "ЦНТИ Нормоконтроль"

Наши цены ниже, чем в других местах, потому что мы работаем напрямую с поставщиками документов.

Способы доставки

  • Срочная курьерская доставка (1-3 дня)
  • Курьерская доставка (7 дней)
  • Самовывоз из московского офиса
  • Почта РФ

Рекомендации предназначены для применения в общедоступных информационно-телекоммуникационных, корпоративных сетях и информационных системах для защиты информации, не содержащей сведений, составляющих государственную тайну, с использованием механизмов шифрования и защиты аутентичности данных.

 Скачать PDF

Оглавление

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 г.

Information technology. Cryptographic data security. Storage key container

Нормативные ссылки:
Стр. 1
стр. 1
Стр. 2
стр. 2
Стр. 3
стр. 3
Стр. 4
стр. 4
Стр. 5
стр. 5
Стр. 6
стр. 6
Стр. 7
стр. 7
Стр. 8
стр. 8
Стр. 9
стр. 9
Стр. 10
стр. 10
Стр. 11
стр. 11
Стр. 12
стр. 12
Стр. 13
стр. 13
Стр. 14
стр. 14
Стр. 15
стр. 15
Стр. 16
стр. 16
Стр. 17
стр. 17
Стр. 18
стр. 18
Стр. 19
стр. 19
Стр. 20
стр. 20
Стр. 21
стр. 21
Стр. 22
стр. 22
Стр. 23
стр. 23
Стр. 24
стр. 24
Стр. 25
стр. 25
Стр. 26
стр. 26
Стр. 27
стр. 27
Стр. 28
стр. 28
Стр. 29
стр. 29
Стр. 30
стр. 30

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ТЕХНИЧЕСКОМУ РЕГУЛИРОВАНИЮ И МЕТРОЛОГИИ



РЕКОМЕНДАЦИИ ПО СТАНДАРТИЗАЦИИ


Р 50.1.110-2016


Информационная технология КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ

Контейнер хранения ключей


Издание официальное


Москва

Стандартинформ

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

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

В соответствии с 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,

1

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

1    Область применения

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

2    Нормативные ссылки

В настоящих рекомендациях использованы нормативные ссылки на следующие стандарты:

ГОСТ Р 34.10 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи

ГОСТ Р 34.11 Информационная технология. Криптографическая защита информации. Функция хэширования

ГОСТ 28147-89 «Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования»

Р 50.1.111—2016 Информационная технология. Криптографическая защита информации. Парольная защита ключевой информации

Р 50.1.112—2016 Информационная технология. Криптографическая защита информации. Транспортный ключевой контейнер

Р 50.1.113—2016 Информационная технология. Криптографическая защита информации. Криптографические алгоритмы, сопутствующие применению алгоритмов электронной цифровой подписи и функции хэширования

Примечание — При пользовании настоящими рекомендациями целесообразно проверить действие ссылочных стандартов (рекомендаций) в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет или по ежегодному информационному указателю «Национальные стандарты», который опубликован по состоянию на 1 января текущего года, и по выпускам ежемесячного информационного указателя «Национальные стандарты* за текущий год Если заменен ссылочный стандарт (рекомендации), на который дана недатированная ссылка, то рекомендуется использовать действующую версию этого стандарта (рекомендаций) с учетом всех внесенных в данную версию изменений Если заменен ссылочный стандарт (рекомендации), на который дана датированная ссылка, то рекомендуется использовать версию этого стандарта (рекомендаций) с указанным выше годом утверждения (принятия). Если после утверждения настоящих рекомендаций в ссылочный стандарт (рекомендации), на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение рекомендуется применять без учета данного изменения Если ссылочный стандарт (рекомендации) отменен без замены, то положение. в котором дана ссылка на него, применяется в части, не затрагивающей эту ссылку.

3 Термины, определения и обозначения

В настоящих рекомендациях применены термины, определения и обозначения, определенные в документах, приведенных в разделе «Библиография».

Издание официальное

4    Базовые типы [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

}

5    Объекты для хранения ключей

(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

6 Обеспечение конфиденциальности ключей

Для обеспечения конфиденциальности объектов закрытого и симметричного ключа в соответствии с [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

}

7 Обеспечение целостности информации

Для обеспечения целостности ключей результирующая структура PKCSISToken инкапсулирована в AuthenticatedData в соответствии с 9 |6] и Е.1.3 [1] с использованием алгоритма НМАС_ GOSTR3411_2012_512 no Р 50.1.113—2016.

6