- •Криптографія та захист інформації
- •Класифікація сучасних криптосистем, їх переваги та недоліки. Комбіновані криптосистеми.
- •[Ред.]Властивості системи шифрування
- •Симетричні криптосистеми.
- •Класифікація симетричних криптоалгоритмів
- •Асиметричні криптосистеми.
- •Принцип роботи
- •Опис алгоритму
- •Генерація ключів
- •Функції хешування, вимоги до них та особливості використання.
- •Список алгоритмів
- •Застосування хешування
- •Хешування паролів
- •Криптографічні хеш-функції
- •Поняття електронного цифрового підпису та його призначення.
- •Поняття та ознаки електронного документа
- •Електронний цифровий підпис: поняття, ознаки, правовий статус
- •Управління ключами
- •Застосувуння електронного цифрового підпису
- •Цифровий підпис в інших країнах
- •Класифікація загроз інформації в сучасних комп’ютерних системах та методи боротьби з основними загрозами.
- •Критерії оцінки захищеності інформації від несанкціонованого доступу.
- •Нормативний документ тзі 2.5-004-99
- •Функціональні критерії
- •Конфіденційність
- •Нормативна документація
- •Формальні моделі доступу та їх реалізація в сучасних операційних системах загального призначення.
- •Аналіз захищеності сучасних операційних систем загального призначення.
- •Архітектура та основні механізми захисту протоколів ssl, tls, https тощо.
Опис алгоритму
Безпека алгоритму RSA побудована на принципі складності факторизації. Алгоритм використовує два ключі — відкритий (public) і секретний (private), разом відкритий і відповідний йому секретний ключі утворюють пари ключів (keypair). Відкритий ключ не потрібно зберігати в таємниці, він використовується для шифрування даних. Якщо повідомлення було зашифровано відкритим ключем, то розшифрувати його можна тільки відповідним секретним ключем.
Генерація ключів
Для того, щоб згенерувати пари ключів виконуються такі дії:
-
вибираються два великих простих числа и
-
обчислюється їх добуток
-
обчислюється Функція Ейлера
-
вибирається ціле таке, що та взаємно просте з
-
за допомогою розширеного алгоритма Евкліда знаходиться число таке, що
Число називається модулем, а числа і — відкритою й секретною експонентами, відповідно. Пари чисел є відкритою частиною ключа, а — секретною. Числа і після генерації пари ключів можуть бути знищені, але в жодному разі не повинні бути розкриті.
Шифрування й розшифрування
Для того, щоб зашифрувати повідомлення обчислюється
.
Число і використовується в якості шифртексту. Для розшифрування потрібно обчислити
.
Неважко переконатися, що при розшифруванні ми відновимо вихідне повідомлення:
З умови
виходить, що
для деякого цілого , отже
Згідно теореми Ейлера:
,
тому
Цифровий підпис
RSA може використовуватися не тільки для шифрування, але й для цифрового підпису. Підпис повідомлення обчислюється з використанням секретного ключа за формулою:
Для перевірки правильності підпису потрібно переконатися, що виконується рівність
Довжина ключа
Число n повинне мати розмір не менше 512 біт. У даний момент (2007 рік) система шифрування на основі RSA вважається надійною, починаючи з величини N в 1024 біта.
Застосування RSA
Система RSA використовується для захисту програмного забезпечення й у схемах цифрового підпису. Також вона використовується у відкритій системі шифрування PGP.
Через низьку швидкість шифрування (близько 30 кбіт/сек при 512 бітному ключі на процесорі 2 ГГц), повідомлення звичайно шифрують за допомогою більш продуктивнихсиметричних алгоритмів з випадковим ключем (сеансовий ключ), а за допомогою RSA шифрують лише цей ключ.
-
Функції хешування, вимоги до них та особливості використання.
Хеш функція — функція, що перетворює вхідні дані будь-якого (як правило, великого) розміру в дані фіксованого розміру.
Криптографічна геш-функція повинна забезпечувати:
-
стійкість до колізій (два різні набори даних повинні мати різні результати перетворення);
-
необоротність (неможливість обчислити вхідні дані за результатом перетворення).
Геш-функції також використовуються в деяких структурах даних — геш таблицях і декартових деревах. Вимоги до геш-функції в цьому разі інші:
-
добра перемішуваність даних;
-
швидкий алгоритм обчислення.
Список алгоритмів
-
HAVAL
-
MD2
-
MD4
-
MD5
-
N-Hash
-
RIPEMD-160
-
SHA
-
Snefru
-
Tiger
-
Whirlpool
Хешування — перетворення вхідного масиву даних довільної довжини у вихідний бітовий рядок фіксованої довжини. Такі перетворення також називаються функцією хешування, або хеш-функцією.
Хеш функція – це деяка функція h(K), яка бере ключ K і повертає адресу, по якому проводиться пошук в хеш-таблиці, щоб отримати інформацію, пов'язану з K. Колізія — це ситуація, коли h(K1) = h(K2). У цьому випадку, очевидно, необхідно знайти нове місце для зберігання даних. Очевидно, що кількість колізій необхідно мінімізувати. Хеш-функція повинна задовольняти двом вимогам:
-
її обчислення повинно виконуватися дуже швидко;
-
вона повинна мінімізувати число колізій.
Отже, перша властивість хеш-функції залежить від комп'ютера, а друга — від даних. Якщо б всі дані були випадковими, то хеш-функції були б дуже прості (кілька бітів ключа, наприклад). Однак на практиці випадкові дані зустрічаються вкрай рідко, і доводиться створювати функцію, яка залежала б від усього ключа. Теоретично неможливо визначити хеш-функцію так, щоб вона створювала випадкові дані з реальних невипадкових файлів. Однак на практиці реально створити достатньо хорошу імітацію за допомогою простих арифметичних дій. Більш того, часто можна використовувати особливості даних для створення хеш-функцій з мінімальним числом колізій (меншим, ніж при істинно випадкових даних). Можливо, одним з найбільш очевидних і простих способів хешування є метод середини квадрата, коли ключ піднімається до квадрату і береться декілька цифр у середині. Тут і далі передбачається, що ключ спочатку заокруглюється до цілого числа, для здійснення з ним арифметичних операцій. Однак такий спосіб добре працює до моменту, коли немає великої кількості нулів зліва або справа. Численні тести показали хорошу роботу двох основних типів хешування, один з яких заснований на розподілі, а інший на множенні. Втім, це не єдині методи, які існують, більш того, вони не завжди є оптимальними.