
Стандарт цифрового підпису держстандарт 3410
У стандарті ДЕРЖСТАНДАРТ 3410, прийнятому в 1994 році, використовується алгоритм, аналогічний алгоритму, реалізованому в стандарті DSS. Обидва алгоритми ставляться до сімейства алгоритмів ElGamal.
У стандарті ДЕРЖСТАНДАРТ 3410 використовується хеш-функція ДЕРЖСТАНДАРТ 3411, що створює хеш-код довжиною 256 біт. Це багато в чому спричиняєть вимоги до обираних простих чисел p і q:
р повинне бути простим числом у діапазоні
2509 < p < 2512 або 21020 < p < 21024
q повинне бути простим числом у діапазоні 2254 < q < 2256, q також повинне бути дільником (р-1).
Аналогічно вибирається й параметр g. При цьому потрібно, щоб
gq (mod p) = 1.
Відповідно до теореми Ферма це еквівалентно умові в DSS, що
g = h( p-1)/q mod p.
Закритим ключем є довільне число х: 0 < x < q
Відкритим ключем є число y: y = gx mod p
Для створення підпису вибирається випадкове число k: 0 < k < q
Підпис складається із двох чисел (r, s), що обчислюються по наступних формулах:
r = (gk mod p) mod q, s = (k H(M) + xr) mod q
Ще раз оберенемо увагу на відмінності DSS і ДЕРЖСТАНДАРТ 3410.
Використовуються різні хеш-функції: у ДЕРЖСТАНДАРТ 3410 застосовується вітчизняний стандарт на хеш-функції ГОСТ 3411, в DSS використовується SHA-1, які мають різну довжину хеш-кода. Звідси й різні вимоги на довжину простого числа q: у ДЕРЖСТАНДАРТ 3410 довжина q повинна бути від 254 біт до 256 біт, а в DSS довжина q повинна бути від 159 біт до 160 біт.
По-різному обчислюється компонент s підпису. У ДЕРЖСТАНДАРТ 3410 компонента s обчислюється по формулі
s = (k H(M) + xr) mod q
В DSS компонента s обчислюється по формулі
s = [ k-1 (H(M) + xr)] mod q
Остання відмінність приводить до відповідних відмінностей у формулах для перевірки підпису.
Одержувач обчислює
w = H(M)-1 mod q , u1 = w s mod q
u2 = ( q-r) w mod q, v = [(gu1 yu2) mod p] mod q
Підпис коректний, якщо v = r.
Структура обох алгоритмів досить цікава. Помітимо, що значення r зовсім не залежить від повідомлення. Замість цього r є функція від k і трьох загальних компонентів відкритого ключа. Мультиплікативна інверсія k (mod p) (у випадку DSS) або саме значення k (у випадку ДЕРЖСТАНДАРТ 3410) подається у функцію, що, крім того, як вхід має хеш-код повідомлення й закритий ключ користувача. Ця функція така, що одержувач може обчислити r, використовуючи вхідне повідомлення, підпис, відкритий ключ користувача й загальний відкритий ключ.
У силу складності обчислення дискретних логарифмів порушник не може відновити k з r або х з s. Інше важливе зауваження полягає в тому, що експонентні обчислення при створенні підпису необхідні тільки для gk mod p. Так як це значення від повідомлення, що підписується, не залежить, воно може бути обчислене заздалегідь. Користувач може заздалегідь прорахувати деяку кількість значень r і використовувати їх у міру необхідності для підпису документів. Ще одна завдання полягає у визначенні мультиплікативної інверсії k-1 (у випадку DSS). Ці значення також можуть бути обчислені заздалегідь.
Підписи, створені з використанням стандартів ДЕРЖСТАНДАРТ 3410 або DSS, називаються рандомізованими, так як для того самого повідомлення з використанням того самого закритого ключа щораз будуть створюватися різні підписи (r,s), оскільки щораз буде використовуватися нове значення k. Підписи, створені із застосуванням алгоритму RSA, називаються детермінованими, так як для того самого повідомлення з використанням того самого закритого ключа щораз буде створюватися той же самий підпис.