Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Криптографічні методи захисту.doc
Скачиваний:
76
Добавлен:
02.05.2014
Размер:
331.26 Кб
Скачать

3.4 Алгоритми, засновані на складних математичних перетвореннях

Алгоритм RSA

Алгоритм RSA (по перших буквах прізвищ його творців Rivest-Shamir-Adleman) заснований на властивостях простих чисел (причому дуже великих). Простими називаються такі числа, які не мають дільників, окрім самих себе і одиниці. А взаємно простими називаються числа, що не мають загальних дільників, окрім 1.

Спершу виберемо два дуже великих простих числа (великі початкові числа потрібні для побудови великих криптостойких ключів. Наприклад, Unix-програма ssh-keygen за умовчанням генерує ключі завдовжки 1024 бита) .Определим параметр n як результат перемножування р і q. Виберемо велике випадкове число і назвемо його d, причому воно повинне бути взаємне простим з результатом множення (р -1)*(q -1). Відшукаємо таке число e, для якого вірне співвідношення

(e*d) mod ((р -1) *(q -1)) = 1

(mod — залишок від ділення, тобто якщо e, помножене на d, поділити на ((р -1) *(q -1)), то в залишку отримаємо 1).

Відкритим ключем є пара чисел e і n, а закритим — d і n. При шифруванні початковий текст розглядається як числовий ряд, і над кожним його числом ми здійснюємо операцію

C(i)= ( M(i)e ) mod n.

В результаті виходить послідовність C(i), яка і складе криптотекст. Декодування інформації відбувається по формулі

M(i)= ( C(i)d ) mod n.

Як бачите, розшифровка припускає знання секретного ключа.

Давайте спробуємо на маленьких числах. Встановимо р=3, q=7. Тоді n=р*q=21. Вибираємо d як 5. З формули (e*5) mod 12=1 обчислюваний e=17. Відкритий ключ 17, 21, секретний — 5, 21.

Зашифруємо послідовність «2345»:

C(2)= 217 mod 21 =11

C(3)= 317 mod 21= 12

C(4)= 417 mod 21= 16

C(5)= 517 mod 21= 17

Криптотекст — 11 12 16 17.

Перевіримо розшифровкою:

M(2)= 115 mod 21= 2

M(3)= 125 mod 21= 3

M(4)= 165 mod 21= 4

M(5)= 175 mod 21= 5

Як видимий, результат співпав.

Криптосистема RSA широко застосовується в Інтернеті. Коли ви під'єднуєтеся до захищеного сервера по протоколу SSL, встановлюєте на свій ПК сертифікат WebMoney або підключаєтеся до видаленого сервера за допомогою Oрen SSH або SecureShell, то всі ці програми застосовують шифрування відкритим ключем з використанням ідей алгоритму RSA. Чи дійсно ця система така надійна?

З моменту свого створення RSA постійно піддавалася атакам типа Brute-force attack (атака методом грубої сили, тобто перебором). У 1978 р. автори алгоритму опублікували статтю, де привели рядок, зашифрований тільки що винайденим ними методом. Першому, хто розшифрує повідомлення, було призначено винагороду у розмірі 100 дол., але для цього потрібно було розкласти на два співмножники 129-значное числа. Це був перший конкурс на злом RSA. Задачу вирішили тільки через 17 років після публікації статті.

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

Компанія RSA (httр://www.rsa.ru) регулярно проводить конкурси на злом власних (і не тільки власних) шифрів. Попередні конкурси виграла організація Distributed.net (httр://www.distributed. net/), що є Інтернет-співтовариством добровольців.

Учасники Distributed.net завантажують до себе на ПК невелику программу-клиент, яка під'єднується до центрального сервера і отримує шматочок даних для обчислень. Потім всі дані завантажуються на центральний сервер, і клієнт отримує наступний блок початкової інформації. І так відбувається до тих пір, поки всі комбінації не будуть перебрані. Користувачі, учасники системи, об'єднуються в команди, а на сайті ведеться рейтинг як команд, так і країн. Наприклад, що бере участь в конкурсі по злому RC5-64 (блоковий шифр компанії RSA, що використовує ключ завдовжки 64 бита) організації Distributed.net вдалося здійснити злом через п'ять років (1757 днів) роботи. За цей час в проекті брали участь 327 856 користувачів і було перебрано 15 268 315 356 922 380 288 варіантів ключа. З'ясувалося, що була (не без гумору) зашифрована фраза «some things are better left unread» («деякі речі краще залишати непрочитаними»). Загальні рекомендації по шифру RC5-64 такі: алгоритм достатньо стійкий для повсякденних потреб, але шифрувати їм дані, що залишаються секретними впродовж більше п'яти років, не рекомендується».