1. Правова система ipLex360
  2. Законодавство
  3. Наказ


ЗАТВЕРДЖЕНО
Наказ Адміністрації Державної служби
спеціального зв'язку та захисту інформації України
27 жовтня 2020 року N 687
Зареєстровано
в Міністерстві юстиції України
21 грудня 2020 р.
за N 1273/35556
ТЕХНІЧНІ СПЕЦИФІКАЦІЇ
до RFC 5652
1. Ці технічні специфікації доповнюють рекомендації Комітету із інженерних питань Інтернету RFC 5652 "Cryptographic Message Syntax (CMS)" (далі RFC 5652) в частині формування повідомлення типу "ContentInfo", що містить дані типу "enveloped-data" ("захищені дані"), з використанням законодавства у сфері електронних довірчих послуг та вітчизняних криптографічних алгоритмів, визначених національними стандартами:
ДСТУ 4145-2002 "Інформаційні технології. Криптографічний захист інформації. Цифровий підпис, що ґрунтується на еліптичних кривих. Формування та перевіряння" (далі - ДСТУ 4145-2002);
ДСТУ 7564:2014 "Інформаційні технології. Криптографічний захист інформації. Функція ґешування" (далі - ДСТУ 7564:2014);
ДСТУ 7624:2014 "Інформаційні технології. Криптографічний захист інформації. Алгоритм симетричного блокового перетворення" (далі - ДСТУ 7624:2014);
ДСТУ ГОСТ 28147:2009 "Системы обработки информации. Защита криптографическая. Алгоритмы криптографического преобразования" (далі - ДСТУ ГОСТ 28147:2009);
ГОСТ 34.311-95 "Информационная технология. Криптографическая защита информации. Функция хеширования" (далі - ГОСТ 34.311-95).
2. Доповнення до пункту 6.1 RFC 5652 "EnvelopedData Type"
Номер версії синтаксису, що визначається полем "Version" структури "EnvelopedData", повинен мати значення "2".
3. Доповнення до підпунктів 6.2.2 "KeyAgreeRecipientInfo" та 10.1.3 "KeyEncryptionAlgorithmIdentifier":
1) під час застосування динамічного механізму узгодження ключів у групі точок еліптичної кривої поле "algorithm" поля "originatorKey" для алгоритму цифрового підпису ДСТУ 4145-2002 може мати такі значення:
для поліноміального базису:
Dstu4145WithDstu7564(256)pb OBJECT IDENTIFIER ::= {iso(1) member-body(2) Ukraine(804) root (2) security(1) cryptography(1) ua-pki (1) alg(1) asym (3) Dstu4145WithDstu7564(6) 256(1) pb(1)};
Dstu4145WithGost34311(pb) OBJECT IDENTIFIER ::= {iso(1) member-body(2) Ukraine(804) root(2) security(1) cryptography(1) ua-pki (1) alg(1) asym (3) Dstu4145WithGost34311(1) pb(1)};
для оптимального нормального базису:
Dstu4145WithDstu7564(256)оnb OBJECT IDENTIFIER ::= {iso(1) member-body(2) Ukraine(804) root (2) security(1) cryptography(1) ua-pki (1) alg(1) asym (3) Dstu4145WithDstu7564(6) 256(1) оnb(2)};
Dstu4145WithGost34311оnb OBJECT IDENTIFIER ::= { iso(1) member-body(2) Ukraine(804) root (2) security(1) cryptography(1) ua-pki (1) alg(1) asym (3) Dstu4145WithGost34311(1) onb(2)};
2) параметри алгоритму поля "algorithm" в "originatorKey" повинні бути ASN.1 NULL;
3) поле "originatorKey publicKey" повинно містити відкритий ключ відправника (маркер), що має такий формат:
PublicKey:: = OCTET STRING, що інкапсулюється в BIT STRING.
Відкритий ключ ДСТУ 4145-2002 - послідовність байтів, яка є елементом основного поля (пункт 5.3 розділу 5 ДСТУ 4145-2002), який є стиснутим зображенням (пункт 6.9 розділу 6 ДСТУ 4145-2002) точки на еліптичній кривій. Розмір зображення в байтах дорівнює m/8, заокруглений до найближчого цілого у більшу сторону;
4) об'єктні ідентифікатори (OID) протоколу узгодження ключа в групі точок еліптичної кривої (ECDH):
з використанням геш-функції ДСТУ 7564:2014:
алгоритм з кофакторним множенням:
id-dhSinglePass-cofactorDH-Dstu7564kdf-scheme OBJECT IDENTIFIER ::= {iso(1) member-body(2) Ukraine(804) root(2) security(1) cryptography(1) ua-pki (1) alg (1) asym (3) dhSinglePass-cofactorDH- Dstu7564kdf (7) };
алгоритм без кофакторного множення:
id-dhSinglePass-stdDH- Dstu7564kdf-scheme OBJECT IDENTIFIER ::= {iso(1) member-body(2) Ukraine(804) root(2) security(1) cryptography(1) ua-pki (1) alg (1) asym (3) dhSinglePass- stdDH- Dstu7564kdf (8) };
з використанням геш-функції ГОСТ 34.311-95:
алгоритм з кофакторним множенням:
id-dhSinglePass-cofactorDH-gost34311kdf-scheme OBJECT IDENTIFIER ::= {iso(1) member-body(2) Ukraine(804) root(2) security(1) cryptography(1) ua-pki (1) alg (1) asym (3) dhSinglePass-cofactorDH-gost34311kdf (4) };
алгоритм без кофакторного множення:
id-dhSinglePass-stdDH-gost34311kdf-scheme OBJECT IDENTIFIER ::= {iso(1) member-body(2) Ukraine(804) root(2) security(1) cryptography(1) ua-pki (1) alg (1) asym (3) dhSinglePass- stdDH-gost34311kdf (5) };
5) параметри протоколу узгодження ключа в групі точок еліптичної кривої повинні бути визначені такою ASN.1 структурою:
ECDHParameters ::= SEQUENCE {
q INTEGER,
FR INTEGER,
a INTEGER,
b INTEGER,
G ECPoint,
n INTEGER,
h INTEGER,
dke OCTET STRING OPTIONAL},
де q - довжина поля (field size) у бітах, що дорівнює степеню основного поля (m);
FR - індикатор представлення поля або зведений поліном (reduction polynomial);
a та b - два елементи поля, які визначають криву (коефіцієнти рівняння еліптичної кривої);
G - базова точка еліптичної кривої (Base Point) з координатами (xG, yG);
n - порядок базової точки (order of the point) G;
h - кофактор, еквівалентний порядку кривої, поділеному на n (для еліптичних кривих з ДСТУ 4145-2002 h = 2 (якщо параметр еліптичної кривої a = 1) або h = 4 (якщо параметр еліптичної кривої a = 0));
значенням точки еліптичної кривої ECPoint повинен бути рядок байтів, який є закодованою точкою еліптичної кривої:
ECPoint ::= OCTET STRING;
процедура кодування точки (Point-to-Octet-String Conversion):
вхідними даними є точка еліптичної кривої P = (Xp, Yp), яка не є нульовою;
вихідними даними є рядок байтів РО - зображення у нестисненому форматі (uncompressed form) точки P як рядка байтів;
байт PC = 0х04 (ознака нестисненого формату);
результуючий рядок байтів PO повинен бути об'єднанням (конкатенацією): PO = PC || Xp || Yp.
Рядком байтів для представлення нульового елемента групи точок еліптичної кривої O = (0, 0) (infinity) повинен бути один нульовий байт: PO = 0х00;
процедура обчислення FR:
поліномом є примітивний многочлен, що наведений у таблиці 1 ДСТУ 4145-2002. Значенням зведеного полінома є ціле число як рядок бітів;
для оптимального нормального базису FR = 0;
обчислення значення FR для поліноміального базису, де: m - ступінь основного поля, ks[len] - масив цілих чисел ks[0]=k3, ks[1]=k2, ks[2]=k1, що є ступенями примітивного многочлена. Поліном має вигляд x^m + x^k3 + x^k2 + x^k1 + 1, де: m ' k3 ' k2 ' k1 '= 1, len - довжина масиву ks, для тричлена (trinomial) len = 1 та для п'ятичлена (pentanomial) len = 3, якщо len = 1, то k2 = k1 = 0;
для визначення FR як рядка бітів необхідно:
встановити FR = 1 (встановити біт 0);
встановити у FR біт m та відповідно біти k1, k2, k3;
6) при визначенні механізму узгодження ключів повинна виконуватися операція порівняння загальносистемних параметрів "ECDHParameters" покомпонентно (еквівалентність параметрів q, FR) або як порівняння масивів байтів DER-кодованої структури "ECDHParameters". Якщо загальносистемні параметри еквівалентні, застосовується статичний механізм узгодження ключів, в інших випадках - динамічний;
7) формат сертифіката відкритого ключа, призначеного для узгодження симетричного ключа шифрування (далі - сертифікат шифрування), повинен відповідати вимогам законодавства у сфері електронних довірчих послуг.
Сертифікат шифрування повинен мати розширення "використання ключа", що має об'єктний ідентифікатор id-ce-keyUsage OBJECT IDENTIFIER::= {id-ce 15}із значенням "узгодження ключа" ("keyAgreement").
4. Доповнення до підпункту 10.1.4 "ContentEncryptionAlgorithmIdentifier" та пункту 12 "Security Considerations":
1) як алгоритм шифрування даних "contentEncryptionAlgorithm" структури "EncryptedContentInfo" можуть використовуватися алгоритми:
ДСТУ 7624:2014 у режимах "Калина-256/256-OFB" (режим гамування зі зворотним зв'язком за шифротекстом відповідно до розділу 8 ДСТУ 7624:2014) та "Калина-256/256-CFB" (режим гамування зі зворотним зв'язком за шифрограмою відповідно до розділу 11 ДСТУ 7624:2014), які мають такі об'єктні ідентифікатори:
id-Dstu7624ofb(256) OBJECT IDENTIFIER ::= {iso(1) member-body(2) Ukraine(804) root(2) security(1) cryptography(1) ua-pki (1) alg (1) sym (1) dstu7624 (3) ofb (6) 256(2)};
id-Dstu7624cfb(256) OBJECT IDENTIFIER ::= {iso(1) member-body(2) Ukraine(804) root(2) security(1) cryptography(1) ua-pki (1) alg (1) sym (1) dstu7624 (3) cfb (3) 256(2)};
ДСТУ ГОСТ 28147:2009 в режимах "id-gost28147-ofb" (режим гамування, розділ 3 ДСТУ ГОСТ 28147:2009) та "id-gost28147-cfb" (режим гамування зі зворотним зв'язком, розділ 4 ДСТУ ГОСТ 28147:2009), які мають такі об'єктні ідентифікатори:
id-gost28147-ofb OBJECT IDENTIFIER ::= {iso(1) member-body(2) Ukraine(804) root(2) security(1) cryptography(1) ua-pki(1) alg(1) sym(1) gost28147(1) ofb(2)};
id-gost28147-cfb OBJECT IDENTIFIER ::= {iso(1)member-body(2) Ukraine(804) root(2) security(1) cryptography(1) ua-pki(1) alg(1) sym(1) gost28147(1) cfb(3)};
2) параметри алгоритму ДСТУ ГОСТ 28147:2009:
GOST28147Parameters ::= SEQUENCE {
iv OCTET STRING (SIZE (8)),
dke OCTET STRING (SIZE (64)) },
де "iv" - вектор ініціалізації, що обирається випадково;
"dke" - довгостроковий ключовий елемент (ДКЕ) для ДСТУ ГОСТ 28147:2009, що відповідає вимогам Інструкції N 114;
3) параметри алгоритму ДСТУ 7624:2014:
Dstu7624Parameters::= SEQUENCE {
iv OCTET STRING (SIZE (32))},
де "iv" - вектор ініціалізації, що обирається випадково;
4) для шифрування ключових даних чи інших даних, що підлягають захисту, при формуванні "захищених даних" повинен застосовуватися алгоритм захисту ключа шифрування даних "KeyWrapAlgorithm";
5) алгоритм захисту ключа шифрування даних "KeyWrapAlgorithm" ґрунтується на стандарті ДСТУ 7624:2014, що позначається як "Dstu7624Wrap", або ДСТУ ГОСТ 28147:2009, що позначається як "GOST28147Wrap";
6) алгоритм криптографічного перетворення за ДСТУ 7624:2014 застосовується у режимі "Калина-256/256-CFB-256" (гамування зі зворотним зв'язком за шифртекстом відповідно до розділу 8 ДСТУ 7624:2014);
7) алгоритм криптографічного перетворення за ДСТУ ГОСТ 28147:2009 застосовується у режимі CFB (гамування зі зворотним зв'язком відповідно до розділу 4 ДСТУ ГОСТ 28147:2009);
8) алгоритм "KeyWrapAlgorithm", що ґрунтується на стандарті ДСТУ 7624:2014, має такий синтаксис:
Dstu7624WrapParameters ::= CHOICE {
NULL, parameters Dstu7624Parameters},
Dstu7624Parameters::= SEQUENCE {
iv OCTET STRING (SIZE (32))},
де "iv" - вектор ініціалізації, що обирається випадково;

................
Перейти до повного тексту