Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КРИПТОГРАФІЯ ТА ЗАХИСТ ІНФОРМАЦІЇ.doc
Скачиваний:
32
Добавлен:
28.10.2018
Размер:
282.62 Кб
Скачать

Опис алгоритму

Безпека алгоритму RSA побудована на принципі складності факторизації. Алгоритм використовує два ключі — відкритий (public) і секретний (private), разом відкритий і відповідний йому секретний ключі утворюють пари ключів (keypair). Відкритий ключ не потрібно зберігати в таємниці, він використовується для шифрування даних. Якщо повідомлення було зашифровано відкритим ключем, то розшифрувати його можна тільки відповідним секретним ключем.

Генерація ключів

Для того, щоб згенерувати пари ключів виконуються такі дії:

  1. вибираються два великих простих числа  и 

  2. обчислюється їх добуток 

  3. обчислюється Функція Ейлера 

  4. вибирається ціле  таке, що  та  взаємно просте з 

  5. за допомогою розширеного алгоритма Евкліда знаходиться число  таке, що 

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

Шифрування й розшифрування

Для того, щоб зашифрувати повідомлення  обчислюється

.

Число  і використовується в якості шифртексту. Для розшифрування потрібно обчислити

.

Неважко переконатися, що при розшифруванні ми відновимо вихідне повідомлення:

З умови

виходить, що

 для деякого цілого , отже

Згідно теореми Ейлера:

,

тому

Цифровий підпис

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

Для перевірки правильності підпису потрібно переконатися, що виконується рівність

Довжина ключа

Число n повинне мати розмір не менше 512 біт. У даний момент (2007 рік) система шифрування на основі RSA вважається надійною, починаючи з величини N в 1024 біта.

Застосування RSA

Система RSA використовується для захисту програмного забезпечення й у схемах цифрового підпису. Також вона використовується у відкритій системі шифрування PGP.

Через низьку швидкість шифрування (близько 30 кбіт/сек при 512 бітному ключі на процесорі 2 ГГц), повідомлення звичайно шифрують за допомогою більш продуктивнихсиметричних алгоритмів з випадковим ключем (сеансовий ключ), а за допомогою RSA шифрують лише цей ключ.

  1. Функції хешування, вимоги до них та особливості використання.

Хеш функція — функція, що перетворює вхідні дані будь-якого (як правило, великого) розміру в дані фіксованого розміру.

Криптографічна геш-функція повинна забезпечувати:

  • стійкість до колізій (два різні набори даних повинні мати різні результати перетворення);

  • необоротність (неможливість обчислити вхідні дані за результатом перетворення).

Геш-функції також використовуються в деяких структурах даних — геш таблицях і декартових деревах. Вимоги до геш-функції в цьому разі інші:

  • добра перемішуваність даних;

  • швидкий алгоритм обчислення.

Список алгоритмів

  • HAVAL

  • MD2

  • MD4

  • MD5

  • N-Hash

  • RIPEMD-160

  • SHA

  • Snefru

  • Tiger

  • Whirlpool

Хешування — перетворення вхідного масиву даних довільної довжини у вихідний бітовий рядок фіксованої довжини. Такі перетворення також називаються функцією хешування, або хеш-функцією.

Хеш функція – це деяка функція h(K), яка бере ключ K і повертає адресу, по якому проводиться пошук в хеш-таблиці, щоб отримати інформацію, пов'язану з K. Колізія — це ситуація, коли h(K1) = h(K2). У цьому випадку, очевидно, необхідно знайти нове місце для зберігання даних. Очевидно, що кількість колізій необхідно мінімізувати. Хеш-функція повинна задовольняти двом вимогам:

  • її обчислення повинно виконуватися дуже швидко;

  • вона повинна мінімізувати число колізій.

Отже, перша властивість хеш-функції залежить від комп'ютера, а друга — від даних. Якщо б всі дані були випадковими, то хеш-функції були б дуже прості (кілька бітів ключа, наприклад). Однак на практиці випадкові дані зустрічаються вкрай рідко, і доводиться створювати функцію, яка залежала б від усього ключа. Теоретично неможливо визначити хеш-функцію так, щоб вона створювала випадкові дані з реальних невипадкових файлів. Однак на практиці реально створити достатньо хорошу імітацію за допомогою простих арифметичних дій. Більш того, часто можна використовувати особливості даних для створення хеш-функцій з мінімальним числом колізій (меншим, ніж при істинно випадкових даних). Можливо, одним з найбільш очевидних і простих способів хешування є метод середини квадрата, коли ключ піднімається до квадрату і береться декілька цифр у середині. Тут і далі передбачається, що ключ спочатку заокруглюється до цілого числа, для здійснення з ним арифметичних операцій. Однак такий спосіб добре працює до моменту, коли немає великої кількості нулів зліва або справа. Численні тести показали хорошу роботу двох основних типів хешування, один з яких заснований на розподілі, а інший на множенні. Втім, це не єдині методи, які існують, більш того, вони не завжди є оптимальними.