Цифрові підписи
Цифрові підписи
Цифрові підписи є електронними відповідниками традиційних підписів. Власти-вості, що їх повинні задовольняти цифрові підписи, такі:
1. лише особа А може створити підпис особи А (підробка підпису не може бути реалізованою);
2. можливість однозначно ствердити, що цифровий підпис зроблений саме під
конкретним документом (копіювання підпису з одного документа на інший
не може бути реалізованим).
Звідси випливає, що цифрові підписи можуть гарантувати набагато вищий рівень безпеки, ніж традиційні.
Найпростіший спосіб реалізації цифрових підписів полягає у дотриманні такого протоколу. Нехай kD - приватний ключ особи А. Одночасно є відомими відповідний до ключа kD публічний ключ kЕ і асиметричний алгоритм, до якого належать ці ключі.
Підписують документ М так:
особа А утворює криптограму з документа М за допомогою ключа kD. Отри-
ману криптограму особа А публікує як підпис;
оригінальний документ пересилається разом з підписом;
абонент, який хоче перевірити підпис особи А, перетворює криптограму за до-помогою ключа kЕ. У такий спосіб він отримує текст, який підписала особа А.
Схема має ту ваду, що цифровий підпис є надто довгим. Проте маємо гарантію, що підпис не може бути перенесений на інші документи.
У розглянутому способі можна виділити три окремі етапи.
Початковий етап. Визначають усі необхідні параметри, за допомогою яких бу-дуть утворюватися підписи.
Утворення підпису. Виконуються обчислення, під час яких утворюється послі-довність, що є підписом конкретного документа.
Верифікація підпису. Перевіряють як автентичність підпису автора, так і автен-тичність підписаного документа. Верифікація має вигляд тесту, який витримує лише справжній підпис.
Приклад 6.1. Нехай р = 59 і q = 71. Тоді п = 4189 і ф(п) = 4060. Вибираємо є = 1229. Обчислюємо за допомогою алгоритму Евкліда НСД (1229, 4060) = 1.
Одночасно обчислюємо d= 1229-1 mod 4060 = 849. Згенеровано ключі алгоритму RSA: 1229, 4189 - публічний ключ, 849 - приватний ключ.
Що робить користувач А, коли хоче надіслати особі В повідомлення Перерахуйте сто тисяч ТОВ Роги і копита і додати до нього цифровий підпис? (Цифрове зобра-ження цього повідомлення, ігноруючи пропуски між словами, має вигляд 19062006200025231322062122182210213227220918022018031011141819102200).
Розбиває повідомлення на блоки по чотири цифри з огляду на значення модуля п: 1906 2006 2000 2523 1322 0621 2218 2210 2132 2722 0918 0220 1803
1011 1418 1910 2200.
Використовуючи свій приватний ключ d і число п, обчислює:
сторона А пересилає стороні В разом з повідомленням:*
Для перевірки цифрового підпису абонент В використовує публічний ключ є = 1229 абонента А:
Як бачимо, після застосування до прийнятого цифрового підпису публічного ключа абонента А абонент В отримав повідомлення, що збігається з прийнятим пові-домленням. Тому абонент В робить висновок, що отримані повідомлення й цифровий підпис справді належать абоненту А.
Хешувальні функції
Хешувальною (вкорочувальною) функцією (hash-function) називають процедуру перетворення інформації, що відображає початкову послідовність бітів довільної дов-жини, в послідовність бітів фіксованої довжини.
Нагадаємо (див. 1.2.4), що Л є однонапрямленою хешувальною функцією, якщо виконуються такі умови:
для кожного тексту X легко обчислити значення h(X);
h(X) має однакову довжину для всіх текстів X (тому довжина h(X) не дає жодної інформації про текст X);
3) практично неможливо для заданого У знайти таке X, що h(X) = Y.
Послідовність h{X) повинна бути досить довгою для того, щоб систематичний
пошук X був практично неможливим. Коли значення хешувальної функції складається з 128 бітів, то маємо 2128 можливих варіантів.
Зазначимо, що суттєво меншого вкорочення досягти неможливо, оскільки для до-вільної хешувальної функції, що вкорочує вхідну послідовність до 64 бітів, цілком реально знайти колізію методом дня народження.
Хешувальні функції повинні задовольняти три головні вимоги:
за відомим значенням функції h(X) повинно бути неможливо (дуже складно в
обчислювальному сенсі) знайти її аргумент X. Таку функцію називають стій-кою в сенсі обернення;
для заданого аргументу X повинно бути неможливим знайти такий інший ар-гумент Х1, що h{X) - h(X1). Таку функцію називають стійкою в сенсі обчислення колізій;
з погляду практичного застосування алгоритми обчислення хешувальних
функцій повинні бути швидкими, а ще ліпше - бути оптимізованими під кон-кретне апаратне обчислювальне середовище.
У контексті криптографічних застосувань ці функції можна використати у разі
зберігання паролів (гасел);
цифрових підписів;
засвідчення документів.
Пункти стосовно цифрових підписів та засвідчення документів буде розглянуто в розділах 6, 7, а тут розглянемо пункт, що стосується зберігання паролів.
Одна із широко вживаних у такому випадку технік є зберігання не паролів, а зна-чень певної хешувальної функції h на паролях:
користувач А подає свій пароль х;
операційна система обчислює h(x) і порівнює зі значенням, записаним у від-
повідній області для А; саме значення х в той же час усувається з пам'яті
процесора;*
якщо значення збігаються, то відкривається сесія користувача А.
Словникова атака є найпростішим методом розкриття паролів в операційних сис-темах. Атака має на меті не відшукання пароля певного користувача, а якогось пароля, використаного в цій системі. Це є так звані слабкі паролі (дати народжень, імена тощо). Атака відбувається так:
спочатку обчислюють значення функції А для слів з великого словника, який
охоплює слова з різних мов, географічні й власні назви. Крім того, добре увес-ти в словник слова, записані з невеликими змінами або помилками. Список
цих значень можна заготувати наперед;
копіюють область, яка містить значення функції h для паролів користувачів (у
багатьох системах вона доступна для читання);
на власному комп'ютері порівнюють зчитані та обчислені значення. Відшукавши відповідну пару, можна ідентифікувати пароль одного користувача.
З метою захисту паролів від атаки діють так. Для кожного користувача А утво-рюють запис, який складається з компонентів:
випадково вибраної послідовності