- •Безпека даних
- •Вступ. Основні поняття безпеки. Конфіденційність, цілісність та доступність даних. Класифікація загроз. Сервіси та механізми захисту.
- •Основні поняття і визначення криптографічного захисту даних.
- •Порушення, механізми і служби захисту.
- •Традиційне шифрування. Модель традиційного шифрування. Криптографія і криптоаналіз. Класична техніка шифрування: підстановки і перестановки.
- •Потокові і блокові шифри. Дифузія і конфузія. Шифр Файстеля. Диференційний та лінійний крипто аналіз. Принципи побудови блокових шифрів
- •Стандарт шифрування даних (des). Критерії, що лежать в основі конструкції des. Алгоритми "Подвійний" та "Потрійний" des.
- •Режими роботи блочних шифрів. Проблема та схеми розподілу ключів симетричного шифрування.
- •1. Режим електронної шифрувальної книги
- •2. Режим зчеплення шифрованих блоків
- •3. Режим шифрованого зворотного зв'язку
- •Генерування випадкових чисел. Використання та джерела випадкових чисел. Генератори псевдовипадкових чисел.
- •Криптографія з відкритим ключем. Принципи побудови криптосистем з відкритим ключем.
- •Алгоритм rsa
- •Порівняння основних характеристик симетричних та асиметричних алгориммів
- •Управління ключами і схема Діффі–Хеллмана.
- •1. Публічне оголошення
- •2. Публічно доступний каталог
- •3. Авторитетне джерело відкритих ключів
- •4. Сертифікати відкритих ключів
- •1. Простий розподіл секретних ключів
- •2. Розподіл секретних ключів із забезпеченням конфіденційності і аутентифікації
- •3. Гібридна схема
- •Аутентифікація повідомлень і функції хешування. Вимоги та функції аутентифікації.
- •1.1. Шифрування повідомлення
- •1.1.1. Традиційне шифрування
- •Коди автентичності повідомлень та функції хешування.
- •1. Коди автентичності повідомлень
- •1.1. Необхідні властивості кодів автентичності повідомлень
- •1.2. Коди автентичності повідомлень на основі des
- •2. Функції хешування
- •2.1. Вимоги, що пред'являються до функції хешування
- •2.2. Прості функції хешування
- •2.3. Атаки, в основі яких лежить парадокс задачі про дні народження
- •3. Захист функцій хешування і кодів автентичності повідомлень
- •3.1. Атаки з перебором всіх варіантів
- •3.2. Функції хешування
- •Алгоритми хешування. Алгоритм hmac.
- •1.1. Цілі розробки нмас
- •1.2. Алгоритм нмас
- •1.3. Захищеність нмас
- •Цифрові підписи та протоколи аутентифікації. Вимоги до цифрового підпису. Стандарт цифрового підпису dss.
- •1. Цифрові підписи
- •1.1. Вимоги
- •1.2. Безпосередній цифровий підпис
- •1.3. Арбітражний цифровий підпис
- •Протоколи аутентифікації. Взаємна та одностороння аутентифікація. (прочитати уважно номери малюнків і т.Д.)
- •2. Підходи на основі традиційного шифрування
- •3. Підходи на основі шифрування з відкритим ключем
- •4. Одностороння аутентифікація
- •5. Підхід на основі традиційного шифрування
- •6. Підходи на основі шифрування з відкритим ключем
- •Програмна реалізація криптографічних алгоритмів. Використання криптографічних функцій Microsoft CryptoApi в прикладному пз. Поняття про безпечний цикл розробки пз (sdl).
- •1. Будова і можливості Crypto api
- •2. Криптопровайдери
- •3. Контейнери ключів
- •4. Алгоритми
- •5. Сертифікати
- •6. Базові функції
- •6.1. Шифрування
- •6.2. Експорт сесійних ключів
- •6.3. Імпорт сесійних ключів
- •6.4. Розшифрування
- •6.5. Хешування
- •6.6. Цифровий підпис
- •6.7. Перевірка цифрового підпису
- •Методи і засоби створення захищеного програмного забезпечення.
- •3. Класифікація вразливостей захисту
- •4. Огляд існуючих аналізаторів
- •Відношення Історія експонатів
- •Список літератури
3.2. Функції хешування
Здатність функції хешування протистояти атакам з перебором всіх варіантів залежить виключно від довжини хеш-коду, породжуваного алгоритмом. Нагадаємо, що функція хешування повинна мати такими трьома властивостями.
Однобічність. Для будь-якого коду h практично неможливо обчислити таке х, що H(x) = h.
Слабка опірність колізій. Для будь-якого блоку х повинно бути практично неможливо обчислити таке у≠х, що H(x) = H(y).
■ Сильна опірність колізій. Практично неможливо обчислити будь-яку пару різних значень х та у, для яких Н(х) = H(у).
Для коду довжини n порядок необхідних зусиль, як ми вже бачили, пропорційний наступним величинам.
Однобічність |
2n |
Слабка опірність колізіям |
2n |
Сильна опірність колізіям |
2n/2 |
При необхідності забезпечити сильну опірність колізій (що бажано для хеш-кодів загального призначення) стійкість хеш-коду щодо атак з перебором всіх варіантів характеризується значенням 2n/2. Ооршот (Oorschot) і Вінер (Wiener) в [OORS94] запропонували проект створення машини пошуку колізій для MD5 вартістю 10 мільйонів доларів, яка могла б виявити колізію при 128-бітової довжині хеш-коду за 24 дні. Таким чином, 128-бітовий код можна вважати достатнім. Наступне значення довжини, якщо хеш-код розглядати як послідовність 32-бітових сегментів, становитиме 160 бітів. При такій довжині хеш-коду тій же машині для пошуку колізії потрібно понад чотирьох тисяч років. В даний час два найбільш популярнихалгорітма обчислення хеш-кодів, SHA-1 і RIPEMD-160, якраз забезпечують хеш-код 160-бітової довжини.
Алгоритми хешування. Алгоритм hmac.
Можна простежити цілий ряд аналогій в еволюції функцій хешування і симетричних блокових шифрів. Ми вже бачили, що зростаючі можливості атак з перебором всіх варіантів і досягнення криптоанализа привели до падіння популярності DES і створенню нових алгоритмів шифрування з довшими ключами і з новими властивостями, що дають можливість протистояти різним видам криптоаналізу. Точно так само досягнення обчислювальної техніки та криптоаналізу функцій хешування привели до зниження популярності спочатку MD4, а потім і MD5 - двох функцій хешування, що застосовувалися найчастіше. У відповідь на ситуацію, що склалася були розроблені нові алгоритми хешування з довшими хеш-кодами і спеціальними властивостями, покликаними протистояти конкретним методам криптоаналізу. Іншою аналогією є загальне небажання відмовлятися від уже напрацьованих схем. Алгоритм шифрування DES базується на шифрі Файстеля, який, у свою чергу, спирається на запропоновану ще Шенноном підстановлювально-перестановочну схему (substitutional-permutational network). Після цього практично всі заслуговуючі уваги блокові шифри будувалися за схемою Файстеля, оскільки в цю схему виявлялося можливим додати захист від нових криптоаналітичних загроз. Якщо замість схеми симетричного блочного шифрування використовувати абсолютно нову схему, будуть потрібні значні зусилля, щоб з'ясувати, чи не є нова схема ареною для нових успішних криптоаналітичних атак, з якими сторона, яка захищається, досі не мала справи. Точно так же структура найбільш важливих з сучасних функцій хешування відповідає одній базовій структурі, показаної на рис. 8.10. Знову ж, на практиці ця структура виявилася надійною, тому нові розробки полягають в удосконаленні базової структури і збільшенні довжини хеш-коду.
1. HMAC
У главі 8 ми розглянули приклад алгоритму обчислення коду автентичності повідомлення (MAC), заснованого на використанні симетричного блочного шифру, а саме алгоритм аутентифікації даних, визначений у FIPS PUB 113. Традиційно застосовуваний цим алгоритмом підхід був найбільш загальним підходом до створення MAC. В останні роки зріс інтерес до методу обчислення MAC на основі криптографічних хеш-кодів. Пояснюється це наступними обставинами.
Таблиця 13.1. Порівняння швидкості роботи деяких функцій хешування (реалізація на С + +, процесор Pentium 266 МГц)
Алгоритм |
Мбіт/сек |
MD5 |
32,4 |
SHA-1 |
14,4 |
RIPEMD-160 |
13,6 |
Криптографічні функції хешування, наприклад MD5 і SHA-1, у вигляді програмної реалізації звичайно виконуються швидше, ніж симетричні блокові шифри, наприклад DES.
Програмні бібліотеки для криптографічних функцій хешування широко доступні.
Для криптографічних функцій хешування немає обмежень на експорт з США або інших країн, тоді як для симетричних блокових шифрів вони передбачені, навіть у разі використання шифру для обчислення значень MAC.
Функція хешування типу MD5 була розроблена для використання в якості засобу обчислення значень MAC і не може застосовуватися для цього безпосередньо, оскільки не залежить від секретного ключа. Був запропонований ряд варіантів додавання секретного ключа у вже існуючий алгоритм хешування. Найбільшу підтримку отримав підхід, званий НМАС [BELL96a, BELL96b]. Алгоритм НМАС був представлений в документі RFC 2104, прийнятий як обов'язковий для реалізації в протоколі безпеки IP і використовується в інших протоколах Internet, наприклад в SSL.
