Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОЗІ / Лекц_ї / Лекц_я 9.doc
Скачиваний:
44
Добавлен:
05.06.2015
Размер:
122.88 Кб
Скачать

Стандарт цифрового підпису dss

Національний інститут стандартів і технології США (NIST) розробив федеральний стандарт цифрового підпису   DSS. Для створення цифрового підпису використовується алгоритм DSA (Digital Signature Algorithm). У якості хеш-алгоритму стандарт передбачає використання алгоритму SHA-1 (Secure Hash Algorithm). DSS спочатку був запропонований в 1991 році й переглянутий в 1993 році у відповідь на публікації, що стосуються безпеки його схеми.

Підхід DSS

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

Розглянемо відмінності підходу, використовуваного в DSS для створення цифрових підписів, від застосування таких алгоритмів як RSA.

Рисунок 9.1 – Створення й перевірка підпису за допомогою алгоритму RSA

Рисунок 9.2 – Створення й перевірка підпису за допомогою стандарту DSS

У підході RSA повідомлення, щопідписується , подається на вхід сильної хеш-функції, що створює хеш-код фіксованої довжини. Для створення підпису цей хеш-код шифрується з використанням закритого ключа відправника. Потім повідомлення й підпис пересилаються одержувачеві. Одержувач обчислює хеш-код повідомлення й перевіряє підпис, використовуючи відкритий ключ відправника. Якщо обчислений хеш-код дорівнює дешифрованому підпису, то вважається, що підпис коректний.

Підхід DSS також використовує сильну хеш-функцию. Хеш-код є входом функції підпису разом з випадковим числом k, створеним для цього конкретного підпису. Функція підпису також залежить від закритого ключа відправника KRa і безлічі параметрів, відомих всім учасникам. Можна вважати, що ця безліч складається із глобального відкритого ключа KUG. Результатом є підпис, що складається із двох компонентів, позначених як s і r.

Для перевірки підпису одержувач також створює хеш-код отриманого повідомлення. Цей хеш-код разом з підписом є входом у функцію верифікації. Функція верифікації залежить від глобального відкритого ключа KUG і від відкритого ключа відправника KUa. Виходом функції верифікації є значення, що повинне рівнятися компоненту r підпису, якщо підпис коректний. Функція підпису така, що тільки відправник, що знає закритий ключ, може створити коректний підпис.

Тепер розглянемо деталі алгоритму, використовуваного в DSS.

Алгоритм цифрового підпису

DSS заснований на труднощі обчислення дискретних логарифмів і базується на схемі, спочатку представленої ElGamal і Schnorr.

Загальні компоненти групи користувачів

Існує три параметри, які є відкритими й можуть бути загальними для великої групи користувачів.

  • 160-бітне просте число q, тобто 2159 < q < 2160.

  • Просте число р довжиною між 512 і 1024 бітами повинне бути таким, щоб q було дільником (р - 1), тобто 2 L-1 < p < 2L, де 512 < L < 1024 і ( p-1)/q є цілим.

  • g = h( p-1)/q mod p, де h є цілим між 1 і (р-1) і g повинне бути більше, ніж 1,10.

Знаючи ці числа, кожний користувач вибирає закритий ключ і створює відкритий ключ.

Закритий ключ відправника

Закритий ключ х повинен бути числом між 1 і ( q-1) і повинен бути обраний випадково або псевдовипадково .

x - випадкове або псевдовипадкове ціле, 0 < x < q ,

Відкритий ключ відправника

Відкритий ключ обчислюється із закритого ключа як в = gx mod p. Обчислити в по відомому х досить просто. Однак, маючи відкритий ключ в, розрахунково неможливо визначити х, що є дискретним логарифмом у по підставі g.

y = gx mod p

Випадкове число, унікальне для кожного підпису.

k - випадкове або псевдовипадкове ціле, 0 < k < q, унікальне для кожного підписування.

Підписування

Для створення підпису відправник обчислює дві величини, r і s, які є функцією від компонентів відкритого ключа (p, q, g), закритого ключа користувача (х), хеш-коду повідомлення Н(М) і цілого k, що повинне бути створене випадково або псевдовипадково й повинне бути унікальним при кожному підписуванні.

r = (gk mod p) mod q

s = [ k-1 (H (M) + xr) ] mod q

Підпис = (r, s)

Перевірка підпису

Одержувач виконує перевірку підпису з використанням наступних формул. Він створює величину v, що є функцією від компонентів загального відкритого ключа, відкритого ключа відправника й хеш-коду отриманого повідомлення. Якщо ця величина дорівнює компоненту r у підписі, то підпис вважається дійсним.

w = s-1 mod q

u1 = [ H (M) w ] mod q

u2 = r w mod q

v = [ (gu1 yu2) mod p ] mod q

підпис коректний, якщо v = r

Доведемо, що v = r у випадку коректного підпису.

Лема 1. Для будь-якого цілого t, якщо

g = h( p-1)/q mod p

те gt mod p = gt mod q mod p

По теоремі Ферма, так як h є взаимнопростим з p, то hp-1 mod p = 1. Отже, для будь-якого ненегативного цілого n

gnq mod p = (h( p-1)/q mod p)nq mod p = h(( p-1)/q) nq mod p = h( p-1)n mod p =

=((h( p-1) mod p)n) mod p = 1n mod p = 1

Таким чином, для ненегативних цілих n і z ми маємо

gnq+z mod p = (gnq gz) mod p= ((gnq mod p) (gz mod p )) mod p= gz mod p

Будь-яке ненегативне ціле t може бути представлено єдиним образом як t = nq + z, де n і z є ненегативними цілими й 0 < z < q. У такий спосіб z = t mod q.

Лема 2. Для ненегативних чисел a, b: g(a mod q + b mod q)mod p = g(a+b)mod qmod p

По лемі 1 ми маємо

g(a mod q + b mod q) mod p = g(a mod q + b mod q) mod q mod p = g(a + b) mod q mod p

Лема 3. y(rw) mod q mod p = g(xrw) mod q mod p

По визначенню y = gx mod p. Тоді:

y(rw) mod q mod p = (gx mod p)(rw) mod q mod p = gx ((rw) mod q) mod p

= g(x ((rw mod q))) mod q mod p = g(xrw) mod q mod p

Лема 4. ((H(M) + xr) w) mod q = k

По визначенню s = ( k-1 (H(M) + xr)) mod q. Крім того, так як q є простим, будь-яке ненегативне ціле менше q має мультиплікативну інверсію. Тобто

(k k-1) mod q = 1.

Тоді:

(ks) mod q = (k(( k-1(H(M) + xr))mod q)) mod q = (k ( k-1(H(M) + xr)))mod q

= (( kk-1) mod q) ((H(M) + xr)mod q) mod q = (H(M) + xr) mod q

По визначенню w = s-1 mod q, отже, (ws) mod q = 1. Отже:

((H(M) + xr) w) mod q = (((H(M) + xr) mod q) (w mod q)) mod q

= (((ks) mod q) (w mod q)) mod q = (kws) mod q

= (k mod q) ((ws) mod q)) mod q = k mod q

Так як 0 < k < q, то k mod q = k.

Теорема. Використовуючи визначення для v і r, доведемо, що v=r.

v = ((gu1 yu2) mod p) mod q ((g(H(M) w) mod q y(rw) mod q) mod p) mod q

= ((g(H(M) w) mod q g(xrw) mod q) mod p) mod q

= ((g(H(M) w) mod q + (xrw) mod q) mod p) mod q

= ((g(H(M) w + xrw) mod q) mod p) mod q = ((gw (H(M) + xr) mod q) mod p) mod q

= (gk mod p) mod q = r

Соседние файлы в папке Лекц_ї