ДСТУ ISO/IEC 14888-3-2002 сторінка 2 з 8
У цьому підрозділі описаний процес підписування для певного класу механізмів підписування. У межах цього класу функція підписування для використовуваного механізму отримується заміною (А, В, С) на (S, Ті Т2), яку визначають коефіцієнти рівняння підпису:
АК+ ВХ + С = 0 (mod Q).
Ця заміна буде визначена чи погоджена під час установлення системи підписування.
Процес підписування і формування підписаного повідомлення складається з восьми етапів (див. рис. 1):
-
Рисунок 1 — Процес підписування з рандомізованим свідоцтвомстворювання рандомізатора;
-
створювання попереднього підпису;
-
готування повідомлення для підписування;
-
обчислювання свідоцтва (перша частина підпису);
-
обчислювання призначення;
-
обчислювання другої частини підпису;
-
побудова доповнення;
-
побудова підписаного повідомлення.
У цьому процесі підписувач використовує особистий ключ підпису X і параметри проблемної області Е, G і Q.
-
Створювання рандомізатора
Підписувач створює секретний рандомізатор, що є цілим числом К, таким, що 0 < К < Q і gcd (К, Q) = 1. Виходом цього етапу є значення К, що підписувач тримає в секреті.
Примітка. Допускається вилучення з розгляду ряду цілих чисел як можливих значень К.
-
Створювання попереднього підпису
Входом у цьому етапі є рандомізатор К, за допомогою якого підписувач обчислює в Е П = ЄК.
Виходом цього етапу є попередній підпис П.
-
Гзтування повідомлення для підписування
Повідомлення розбивається на дві частини, що будуть називатися вхідними даними і М2. Одна з цих частин може бути порожня і дві частини не обов’язково повинні бути різними (більш докладно в ISO/IEC 14888-1).
-
Обчислювання свідоцтва (першоїчастини підпису)
Змінні на цьому етапі — це попередній підпис П із 6.2.2 і М- з 6.2.3. Значення цих змінних вважаються входами функції свідоцтва. Виходом функції свідоцтва є свідоцтво R.
-
Обчислювання призначення
Входами для функції призначення є перша частина підпису (свідоцтво) R з 6.2.4 І М2 з 6.2.3. Вихід для функції призначення — призначення Т = (ТьТ2), де і Т2— цілі числа такі, що
0 <ТУ І < Q, 0 < |Т2| < Q.
-
Обчислювання другої частини підпису
Входи для цього етапу — рандомізатор К з 6.2.1, ключ підпису X, призначення Т= (Ті, Т2) з 6.2.5, заміна (А, В, С) на (S, T1t Г2) ■ параметр проблемної області Q, визначений у 6.1.1. Підписувач формує рівняння підпису
(АК + ВХ + С) = 0 (mod Q)
і розв’язує його відносно S, другої частини підпису, де 0 < S < Q. Пара (R, S) буде називатися підписом Е.
-
Побудова доповнення
Доповнення будується з підпису і додаткового текстового поля text у такий спосіб: ((/?, S), text). Це текстове поле могло б включати сертифікат, що криптографічно ув’язує відкритий перевірковий ключ з даними ідентифікації підписувана.
Примітка. Як зазначалося в ISO/IEC 14888-1, залежно від застосовання існують різні шляхи формування доповнення І додавання його в кінець повідомлення. Загальна вимога полягає в тому, щоб перевірювач мав можливість установити правильний підпис до повідомлення. Для успішного перевіряння також важливо, щоб до процесу перевіряння перевірювач мав змогу ув'язати правильний перевірковий ключ Із цим підписом.
-
Побудова підписаного повідомлення
Підписане повідомлення отримується за допомогою конкатенації повідомлення М доповнення МІ І ((R, S), text).
6.3 Процес перевіряння
Процес перевіряння складається з чотирьох етапів (рис. 2):
-
) готування повідомлення для перевіряння;
) відновлення свідоцтва;
-
) обчислювання функції перевіряння:
-
відновлювання призначення;
-
повторне обчислювання попереднього підпису;
-
повторне обчислювання свідоцтва;
-
) підтвердження свідоцтва.
У цьому процесі перевірювач користується перевірковим ключем підписувача У і параметрами проблемної області: кінцева група Е, елемент G в Е і його порядок Q.
-
.3.1 Готування повідомлення для перевіряння
Перевірювач відновлює М з підписаного повідомлення і поділяє повідомлення на дві частини: Ц і М2.
-
.3.2 Відновлення свідоцтва
Перевірювач відшукує підпис (R, S) у доповненні і поділяє його на свідоцтво R і другу частину підпису S.
-
.3.3 Обчислювання функції перевіряння
-
Відновлювання призначення
-
Цей етап ідентичний етапу 6.2.5. Входи функції призначення складають свідоцтво R з 6.3.2 і М2 з 6.3.1. Повторно обчислене призначення Т = (ТьТ2) є виходом функції призначення.
-
Повторне обчислювання попереднього підпису
Входами для цього етапу є набір параметрів Z проблемної області, перевірковий ключ У, призначення Т = (7, Т2) з 6.3.3.1 і друга частина підпису S з 6.3.2. Перевірювач призначає коефіцієнтам (А, В, С) значення (S, ТьТ2) в порядку, визначеному функцією підписування, та обчислює елемент П в Е у такий спосіб:
П =УтGn, де m = -А-1В mod Q і n = -А-1 С mod Q.
-
Повторне обчислювання свідоцтва
Обчислювання на цьому етапі ті самі, що й на етапі 6.2.4. Перевірювач обчислює функцію свідоцтва, де входи — П з 6.3.3.2 і М- з 6.3.1, а вихід — повторно обчислене свідоцтво R.
-
.3.4 Підтвердження свідоцтва
Підпис засвідчений, якщо повторно обчислене свідоцтво R з 6.3.3.3 дорівнює R з 6.3.2. Можуть знадобитися додаткові перевіряння (як приклад інших перевірянь див. А. 1.2.4.6).
7 МЕХАНІЗМИ ЦИФРОВОГО ПІДПИСУВАННЯ, ЗАСНОВАНІ НА ФАКТОРИЗАЦЇЇ
Механізми цифрового підписування, засновані на факторизацїї, використовують детерміноване свідоцтво, але самі можуть бути як рандомізовані, так і детерміновані, і виконують підпис, що складається з однієї частини (детально в ISO/IEC 14888-1 на рис. 2 і 4). У будь-якому випадку такий механізм як складник перевіркового ключа використовує ціле число N, чия факторизація є частиною ключа підпису. Передбачається, що для обчислювання неможливо розкласти N на прості множники. На генерування ключа підпису треба накласти обмеження, щоб зробити факторизацію досить складною.
-
Процес генерування ключа
-
Генерування параметрів проблемної області
-
Для механізмів цифрового підписування, заснованих на факторизацїї, набір Z параметрів проблемної області може містити ціле число v, яке використовується як частина перевіркового ключа, що відповідає умовам, визначеним у 7.1.2.
-
Генерування ключа підпису і перевіркового ключа
-
Генерування ключа підпису
-
Ключ підпису для підписувача — таємно згенерована сукупність X = ({P-і, P2,...,Pr}, s), що складається з набору випадково чи псевдовипадково обраних, але не обов’язково різних, простих цілих чисел Pj і цілого числа s. Мінімальна кількість різних простих чисел дорівнює двом.
-
Гэнерування перевіркового ключа
Перевірковий ключ У — це пара цілих чисел (А/, и), де N — добуток П Р{, всі Р{— прості числа, av— ціле число, що задовольняє умову, яка залежить від ключа підпису.
Якщо v визначають як параметр проблемної області, то на ключ підпису могли би бути накладені додаткові обмеження так, щоб v задовольняло відповідну умову.
-
Процес підписування
-
Створювання попереднього підпису (необов'язково)
-
Рандомізований механізм підписування застосовує попередній підпис, що залежить тільки від рандомізатора і ключа підпису. Попередній підпис обчислюють у два етапи.
-
Створювання рандомізатора
Підписувач таємно створює рандомізатор, що є цілим числом К по модулю N, що може підлягати додатковим обмеженням. Вихід цього етапу — К, який підписувач тримає в секреті.
-
Обчислювання попереднього підпису
Попередній підпис є функцією рандомізатора і не залежить від повідомлення. Входом для цього етапу є рандомізатор К і ключ підпису. Вихід цього етапу — попередній підпис, що позначається П.
-
Готування повідомлення для підписування
Повідомлення використовують, щоб побудувати вхідні дані Л4| і М2. Друга частина, М2, може виявитися порожньою, дві частини не обов’язково повинні бути різними.
-
Обчислювання свідоцтва
Вхід для цього етапу — вхідні дані Мр Вихід — геш-атрибут Н, визначений для Відзначимо, що геш-атрибут інтерпретують як ціле число по mod N таке, що 0 < Н < N.
-
Обчислювання підпису
Входи для цього етапу — свідоцтво, обчислене в 7.2.3, ключ підпису з 7.1.2.1 і, можливо, М2 (див. ISO/IEC 14888-1, рис. 2). Для рандомізованого механізму входами також є рандомізатор К і попередній підпис П. Вихід — підпис, що складається з однієї частини І = S.
-
Побудова доповнення
Доповнення будують з підпису І і додаткового текстового поля text. Це текстове поле може включати сертифікат, що криптографічно ув’язує відкритий перевірковий ключ з даними ідентифікації підписувана.
-
Побудова підписаного повідомлення
Підписане повідомлення одержують за допомогою конкатенації повідомлення М і доповнення, отриманого в 7.2.5:
M||(S, text).
-
Процес перевіряння
-
Готування повідомлення для перевіряння
-
Перевірювач відновлює М з підписаного повідомлення і визначає дві частини вхідних даних М, і /W2, як визначено в 7.2.2.
-
Відновлення свідоцтва
Перевірювач відновлює значення свідоцтва Н як деяку функцію вхідних даних що відповідає функції свідоцтва, визначеній у 7.2.3.
-
Обчислювання функції перевіряння
Використовуючи ціле число у, отримане або з множини параметрів проблемної області Z, або як перевірковий ключ Y, перевірювач використовує функцію перевіряння, щоб одержати повторно обчислене СВІДОЦТВО Н.
-
Підтвердження свідоцтва
Підпис має силу, якщо значення відновленого свідоцтва Н узгоджується зі значенням повторно обчисленого свідоцтва Н за допомогою функції перевіряння.ДОДАТОК А
(обов’язковий)
ПРИКЛАДИ ЦИФРОВИХ ПІДПИСІВ З ДОПОВНЕННЯМ
НА ОСНОВІ СЕРТИФІКАТІВ, ЩО БАЗУЮТЬСЯ
НА ДИСКРЕТНИХ ЛОГАРИФМАХ
Нижче наведені приклади таких механізмів підписування, а саме: алгоритм цифрового підпису (Digital Signature Algorithm, DSA) U.S. NIST, алгоритм Pointcheval/Vaudenay та механізми підписування, що базуються на еліптичних кривих.
Групи, які використовуються для таких механізмів підписування, включають мультиплікативну групу Z*P, де Р — просте число (DSA і Pointcheval/Vaudenay), та адитивну групу, яка утворена точками еліптичної кривої над кінцевим полем (Elliptic Curve DSA).
А.1 Приклади механізмів, що не базуються на еліптичних кривих
А.1.0 Символи та система позначання
Р — просте ціле число;
ZP — множина цілих чисел U, таких, що 0 < U < Р;
Z*P — множина цілих чисел U, таких, що 0 < U < Р
А.1.1 Американський алгоритм цифрового підпису (DSA)
Цей приклад взятий з публикацїі Федеральних стандартів з питань обробки інформації Американського національного інституту стандартів та технології (U.S. National Institute of Standards and Technology, NIST) (FIPS PUB 186, від 19 травня 1994). Основні параметри, визначені в пункті 6, повинні бути подані у відповідній формі. Познаки частково змінені щодо FIPS PUB 186, щоб відповідати познакам, які використано у цьому стандарті.
DSA — механізм підписування, коли Е = Z*P, де Р — просте число, a Q — простий дільник Р-1. Повідомлення розбивається таким чином, що M-t порожня, а М2= М.
Функція свідоцтва визначається виразом
Р = П mod Q, а функція призначення — виразом
(Гі,Т2) = (-Р, -Н), де Н = h (М) — геш-атрибут повідомлення М, перетворений в ціле число згідно з правилом перетворення, наведеним у додатку С. Геш-функція h — це алгоритм безпечного перемішування (Secure Hash Algorithm, SHA), прийнятий у США (NIST) як стандарт безпечного перемішування (Secure Hash Standard, SHS) (FIPS PUB 180-1, від 17 квітня 1995).
Алгоритм SHA описаний також в ISO/IEC DIS 10118-3. (Відзначимо, що контрольне поле з ідентифікатором геш-функції в DSA не потрібне, так що геш-атрибут — це h(/W), див. ISO/IEC 14888-1).
Коефіцієнти (А, В, С) рівняння підпису в DSA визначаються в такий спосіб:
(А,В,С) = (5,ТйТ2).
Таким чином, рівняння підпису набуває вигляду:
Побачили розбіжність з офіційним текстом?
Дивіться також
Сборник ГОСТ ЕСКД
Збірник із 154 стандартів