Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
31.01.2021
Размер:
376.83 Кб
Скачать

1.1. Сімейство хеш-функцій sha2

SHA-2 – збірна назва односторонніх хеш-функцій SHA-224, SHA-256, SHA-384 і SHA-512. Хеш-функції також називають функціями згортки, а їх результати називають хешем, хеш-кодом, хеш-сумою або зведенням повідомлення. Алгоритм побудований таким чином, що найменша зміна повідомлення призводить до зовсім іншого результату внаслідок лавинного ефекту.

Початкове повідомлення після доповнення розбивається на блоки, кожен блок – на 16 слів. Алгоритм пропускає кожен блок повідомлення через цикл з 64-ма чи 80-ма ітераціями (раундами). На кожній ітерації 2 слова перетворюються, функцію перетворення задають інші слова. Результати обробки кожного блоку складаються, а ця сума і буде значенням функції.

Таблиця 1.1 – Порівняння характеристик хеш-функцій SHA2-256, SHA2-384, SHA2-512

Хеш-функція

Довжина блоку, біт

Макс. довжина повідомлення

Кілкість ітерацій

Швидкість

SHA2-256

512

264 – 1 біт

64

139 Мб/с

SHA2-384

1024

2128 – 1 біт

80

154 Мб/с

SHA2-512

1024

2128 – 1 біт

80

154 Мб/с

Сімейство хеш SHA-2 розпадається на два підряди - 32х бітових (SHA-224 і SHA-256) і 64х бітових (SHA-384, SHA-512, SHA-512/224, SHA-512/256) реалізацій алгоритму SHA-2 .

По суті, в усьому сімействі діє однаковий алгоритм роботи, але в 32м підряді робота йде з 8 блоками по 32 біта, а в 64м, відповідно, з 8 блоками по 64 біта. Ну і раундів у 32х битового варіанту буде 64, а у 64х битового - 80.

В результаті можна говорити про те, що по суті є всього 2 варіанти алгоритмів SHA-2 - SHA-256 і SHA-512; інші 4 варіанти являють собою урізані версії.

– SHA-224 – розраховуємо звичайний SHA-256, отримуємо 8 блоків по 32 біта, відкидаємо останній;

– SHA-384 – розраховуємо звичайний SHA-512, отримуємо 8 блоків по 64 біта, відкидаємо два останніх;

– SHA-512 / n – розраховуємо звичайний SHA-512, отримуємо 8 блоків по 64 біта, відкидаємо 512-n біт;

Важливий висновок полягає в тому, що всі "урізані" варіанти потребують стільки ж часу, скільки і основні.

Відповідно, має сенс порівнювати швидкість тільки у "основних" варіантів - SHA-256 і SHA-512.

Добре помітно, що чим більше даних підпадає під обчислення, тим більше помітна перевага SHA-512.

Можна прикинути, до якого саме співвідношенню результатів прагне цей ряд.

SHA-512 буде витрачати на чверть більше раундів (80 проти 64), ніж SHA-256. Але кожен раунд у SHA-512 обробляє 64 бітові операнди, а у SHA-256 - 32х бітові. Подвоєне ККД по операндам в поєднанні з гарантованою втратою чверті швидкості на додаткових раундах дасть 2 / (5/4) = 1.6 раз переваги. Безумовно, це умовні розрахунки і будуть додаткові витрати в плані доступу до пам'яті, використання шини і так далі - але можна говорити про те, що SHA-512 на робочих обсягах даних буде приблизно в 1.5 рази швидше, ніж SHA-256.

2. Електронно-цифровий підпис

2.1. Алгоритм dsa для створення ецп

Виділяють дві основні схеми побудови ЕЦП: асиметрична та симетрична.

Асиметрична схема застосування системи ЕЦП передбачає наявність мережі абонентів, що посилають один одному підписані електронні документи. Для кожного абонента генерується пара ключів: секретний і відкритий. Секретний ключ зберігається абонентом в таємниці і використовується ним для формування ЕЦП. Відкритий ключ відомий всім іншим користувачам і призначений для перевірки ЕЦП одержувачем підписаного електронного документа. Інакше кажучи, відкритий ключ є необхідним інструментом, що дозволяє перевірити справжність електронного документа і автора підпису. Відкритий ключ не дозволяє обчислити секретний ключ.

Для генерації пари ключів (секретного і відкритого) в алгоритмах ЕЦП, як і в асиметричних системах шифрування, використовуються різні математичні схеми, засновані на застосуванні односпрямованих функції. Ці схеми поділяються на дві групи. В основі такого поділу лежать відомі складних обчислювальних задач:

– завдання факторизації (розкладання на множники) великих цілих чисел;

– завдання дискретного логарифмування.

Симетрична схема ЕЦП передбачає наявність в системі третьої особи

DSA (Digital Signature Algorithm). Стійкість даного алгоритму заснована на складності рішення задачі дискретного логарифмування в мультиплікативної групі простого поля.

Відправник і одержувач електронного документа використовують при обчисленні великі цілі числа: G і Р - прості числа, L біт кожне (512 < L < 1024); q - просте число довжиною 160 біт (дільник числа (Р-1)). Числа G, Р, q є відкритими і можуть бути загальними для всіх користувачів мережі.

Відправник вибирає випадкове ціле число X, 1 <Х < q. Число Х є секретним ключем відправника для формування електронного цифрового підпису.

Потім відправник обчислює значення формулою (2.1)

𝑦 = 𝑔 𝑚𝑜𝑑 𝑝 (2.1)

Число У є відкритим ключем для перевірки підпису відправника. Число Y передається всім одержувачам документів.

Цей алгоритм також передбачає використання односторонньої функції хешування h (). У стандарті DSS визначено алгоритм безпечного хешування SНА (Secure Hash Algorithm).

Для того щоб підписати документ М, відправник хешує його в ціле хеш-значення m: за формулою (2.2):

𝑚 = ℎ(𝑀) (2.2)

потім генерує випадкове ціле число К, 1 <К <q, і обчислює число r за формулою (2.3)

𝑟 = (𝑔𝑘 𝑚𝑜𝑑 𝑝) 𝑚𝑜𝑑 𝑞 (2.3)

Потім відправник обчислює з помоіцью секретного ключа Х ціле число s за формулою (2.4):

𝑠 = (𝑚 + 𝑟 ∗ 𝑥) ∗ 𝑘 −1 𝑚𝑜𝑞 𝑞 (2.4)

Пара чисел r і s утворює цифровий підпис під документом М.

S = (r, s)

Таким чином, підписане повідомлення являє собою трійку чисел [М, r, s]. Одержувач підписаного повідомлення [М, r, s] перевіряє виконання умов 0 <r <q, 0 <s <q і відкидає підпис, якщо хоча б одна з цих умов не виконано. Потім одержувач обчислює значення формулою

𝑤 = 𝑠 −1 𝑚𝑜𝑑 𝑞 (2.5)

хеш-значення

𝑚 = ℎ(𝑀) (2.6)

і числа u1, u2 за формулами (2.7), (2.8)

𝑢1 = 𝐻(𝑚) ∗ 𝑤 𝑚𝑜𝑑 𝑞 (2.7)

𝑢2 = 𝑟 ∗ 𝑤 𝑚𝑜𝑑 𝑞 (2.8)

Далі одержувач за допомогою відкритого ключа У обчислює значення за формулою (2.9)

𝑣 = (𝑔 𝑢1 ∗ 𝑔 𝑢2 𝑚𝑜𝑑 𝑝) 𝑚𝑜𝑑 𝑞 (2.9)

і перевіряє виконання умови (2.10)

𝑣 = 𝑟 (2.10)

Якщо умова v = r виконується, тоді підпис

S = (r, s)

під документом М визнається одержувачем справжньої. Можна строго математично довести, що остання рівність буде виконуватися тоді, і тільки тоді, коли підпис S = (r, s) під документом М отримана за допомогою саме того секретного ключа X, з якого був отриманий відкритий ключ Y. Таким чином, можна надійно упевнитися, що відправник повідомлення володіє саме даними секретним ключем Х (не розплющуючи при цьому значення ключа X) і що відправник підписав саме даний документ М.

У порівнянні з алгоритмом цифрового підпису Ель Гамаля алгоритм DSА має наступні основні переваги:

1. При будь-якому допустимому рівні стійкості, тобто при будь-якій парі чисел G і Р (від 512 до 1024 біт), числа q, X, r, s мають довжину по 160 біт, скорочуючи довжину підписи до 320 біт.

2. Більшість операцій з числами К, r, s, Х при обчисленні підписи проводиться по модулю числа q довжиною 160 біт, що скорочує час обчислення підпису.

3. При перевірці підпису більшість операцій з числами u1, u2, v, w також проводиться по модулю числа q довжиною 160 біт, що скорочує обсяг пам'яті і час обчислення.

Недоліком алгоритму DSА є те, що при підписуванні і при перевірці підпису доводиться виконувати складні операції ділення по модулю q за формулами (2.4), (2.5), що не дозволяє отримувати максимальну швидкодію.

Слід зазначити, що реальне виконання алгоритму DSА може бути прискорене за допомогою виконання попередніх обчислень. Зауважимо, що значення r не залежить від повідомлення М і його хеш-значення m. Можна заздалегідь створити рядок випадкових значень К і потім для кожного з цих значень обчислити значення r. Можна також заздалегідь обчислити зворотні значення К-1 для кожного із значень К. Потім, під час вступу повідомлення М, можна обчислити значення s для даних значень r і К-1. Ці попередні обчислення значно прискорюють роботу алгоритму DSА.

Рисунок 2.1 – ЕЦП за схемою DSA

2.2 Алгоритм Ель-Гамаля для створення ЕЦП

Ідея ЕGSА заснована на тому, що для обґрунтування практичної неможливості фальсифікації цифрового підпису може бути використана більш складна обчислювальна задача, ніж розкладання на множники великого цілого числа, - завдання дискретного логарифмування. Крім того, Ель Гамалю вдалося уникнути серйозної слабкості алгоритму цифрового підпису RSА, пов'язаної з можливістю підробки цифрового підпису під деякими повідомленнями без визначення секретного ключа.

Розглянемо докладніше алгоритм цифрового підпису Ель Гамаля. Для того щоб генерувати пару ключів (відкритий ключ - секретний ключ), спочатку вибирають деяке велике просте ціле число Р і велике ціле число G, причому G <Р. Відправник і одержувач підписаного документа використовують при обчисленнях однакові великі цілі числа Р (~ 10308 або ~ 21024) і G (~ 10154 або ~ 2512), які не є секретними.

Відправник вибирає випадкове ціле число X, 1 < Х < (Р-1), і обчислює формулою (2.11)

𝑦 = 𝑔 𝑥 𝑚𝑜𝑑 𝑝 (2.11)

Число Y є відкритим ключем, що використовуються для перевірки підпису відправника. Число Y відкрито передається всім потенційним одержувачам документів.

Число Х є секретним ключем відправника для підписування документів і має зберігатися в секреті.

Для того щоб підписати повідомлення М, спочатку відправник хешірует його за допомогою хеш-функції h () в ціле число m (1 <m <(Р-1)), за формулою (2.12):

𝑚 = ℎ(𝑀) (2.12)

і генерує випадкове ціле число К, 1 <К <(Р-1), таке, що К і (Р-1) є взаємно простими. Потім відправник обчислює ціле число а за формулою (2.13):

𝑎 = 𝑔𝑘 𝑚𝑜𝑑 𝑝 (2.13)

і, застосовуючи розширений алгоритм Евкліда, обчислює за допомогою секретного ключа Х ціле число b з рівняння (2.14)

𝑚 = 𝑥 ∗ 𝑎 + 𝑘 ∗ 𝑏 𝑚𝑜𝑑 (𝑝 − 1) (2.14)

Пара чисел (а, b) утворює цифровий підпис S:

S = (а, b),

проставляється під документом М.

Трійка чисел (М, а, b) передається одержувачу, в той час як пара чисел (Х, К) тримається в секреті.

Після прийому підписаного повідомлення (М, а, b) одержувач повинен перевірити, чи відповідає підпис

S = (а, b)

повідомленням М. Для цього одержувач спочатку обчислює за прийнятим повідомленням М число m = h (М), тобто хешує прийняте повідомлення М.

Потім одержувач обчислює значення а за формулою (2.15)

𝑎 = 𝑦𝑎 ∗ 𝑎𝑏 𝑚𝑜𝑑 𝑝 (2.15)

і визнає повідомлення М справжнім, якщо, і тільки якщо виконується умова (2.16)

𝑎 = 𝑔𝑚 𝑚𝑜𝑑 𝑝 (2.16)

Інакше кажучи, одержувач перевіряє справедливість співвідношення (2.17)

𝑦 𝑎 ∗ 𝑎 𝑏 𝑚𝑜𝑑 𝑝 = 𝑔 𝑚 𝑚𝑜𝑑 𝑝 (2.17)

Можна строго математично довести, що остання рівність буде виконуватися тоді, і тільки тоді, коли підпис S = (а, b) під документом М отримана за допомогою саме того секретного ключа X, з якого був отриманий відкритий ключ Y. Таким чином, можна надійно упевнитися, що відправником повідомлення М був володар саме даного секретного ключа X, не розкриваючи при цьому сам ключ, і що відправник підписав саме цей конкретний документ М.

Слід зазначити, що виконання кожного підпису за методом Ель Гамаля вимагає нового значення К, причому це значення повинно вибиратися випадковим чином. Якщо порушник розкриє коли-небудь значення К, повторно використовується відправником, то він зможе розкрити секретний ключ Х відправника.

Рисунок 2.3 – ЕЦП за схемою Ель-Гамаля