У цьому підрозділі описаний процес підписування для певного класу механізмів підписування. У межах цього класу функція підписування для використовуваного механізму отримується заміною (А, В, С) на (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).
Таким чином, рівняння підпису набуває вигляду: