- •Безпека даних
- •Вступ. Основні поняття безпеки. Конфіденційність, цілісність та доступність даних. Класифікація загроз. Сервіси та механізми захисту.
- •Основні поняття і визначення криптографічного захисту даних.
- •Порушення, механізми і служби захисту.
- •Традиційне шифрування. Модель традиційного шифрування. Криптографія і криптоаналіз. Класична техніка шифрування: підстановки і перестановки.
- •Потокові і блокові шифри. Дифузія і конфузія. Шифр Файстеля. Диференційний та лінійний крипто аналіз. Принципи побудови блокових шифрів
- •Стандарт шифрування даних (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. Огляд існуючих аналізаторів
- •Відношення Історія експонатів
- •Список літератури
1.2. Коди автентичності повідомлень на основі des
Одна з найбільш широко використовуваних функцій обчислення значень MAC, звана алгоритмом аутентифікації даних (Data Authentication Algorithm), спирається на використання DES. Опис цього алгоритму існує і як публікація FIPS (PUB FIPS 113), і у вигляді стандарту ANSI (X9.17).
Алгоритм можна визначити як шифрування DES в режимі зчеплення блоків (СВС) з нульовим вектором ініціалізації. Дані (наприклад, повідомлення, запис, файл або програма), яким потрібна аутентифікація, представляються у вигляді послідовності 64-бітових блоків D1, D2, ..., DN. При необхідності, кінцевий блок доповнюється справа нулями, щоб утворився повний 64-бітовий блок. Використовуючи алгоритм Е шифрування DES і секретний ключ К, код автентичності даних (DAC - Data Authentication Code) можна обчислити таким чином (рис. 12.1):
Значення DAC являє собою або весь блок ОN, Або крайні зліва М бітів цього блоку, де 16 <М <64.
Виявляється, що цей алгоритм відповідає всім сформульованим вище вимогам.
2. Функції хешування
Значення функції хешування генерується функцією Н виду
h = Н(М),
де М позначає повідомлення довільної довжини, а H(М) - значення функції хешування фіксованої довжини. Значення функції хешування приєднується до повідомлення в системі відправника, де відомо або передбачається, що повідомлення є правильним. Одержувач встановлює автентичність повідомлення шляхом повторного обчислення значення функції хешування. Оскільки сама функція хешування секретною не рахується, потрібні засоби захисту самого значення функції хешування (див. рис. 11.5).
Рис.12.1. Алгоритм аутентифікації даних (PUB FIPS 113)
Ми почнемо обговорення з розгляду вимог, що пред'являються до функції хешування при використанні її для аутентифікації повідомлень. З огляду на те що функції хешування зазвичай є досить складними, є сенс почати з найпростіших прикладів, щоб краще зрозуміти використовувані тут ідеї. Після цього будуть описані різні підходи до побудови функцій хешування.
2.1. Вимоги, що пред'являються до функції хешування
Метою використання функції хешування є отримання "дактилоскопічної" характеристики файлу, повідомлення або взагалі будь-якого блоку даних. Щоб виявитися корисною для аутентифікації повідомлень, функція хешування Н повинна мати такі властивості (сформульовані тут на основі списку з [NECH92]).
Бути застосовною до блоку даних будь-якої довжини.
Давати на виході значення фіксованої довжини.
Значення H(x) повинно обчислюватися відносно легко для будь-якого заданого х, а алгоритм обчислення повинен бути практичним з точки зору як апаратної, так і програмної реалізації.
Для будь-якого даного коду h має бути практично неможливо обчислити х для якого H(x) = h. Таку властивість іноді називають односторонністю.
Для будь-якого даного блоку х повинно бути практично неможливо обчислити у≠ х, для якого H(x) = H(y). Така властивість іноді називають слабкою опірністю колізій.
Повинно бути практично неможливо обчислити будь-яку пару різних значень х та у, для яких H(x) = H(y). Таку властивість іноді називають сильною опірністю коллізіям.
Перші три з вказаних тут властивостей описують вимоги, що забезпечують можливість практичного застосування функції хешування для аутентифікації повідомлень.
Четверта властивість забезпечує
однобічність: легко отримати код на
основі наявного повідомлення, але
практично неможливо відтворити
повідомлення, маючи тільки відповідний
код. Ця властивість важлива тоді, коли
алгоритм аутентифікації припускає
використання секретного значення (див.
рис. 11.5 (д)). Саме секретне значення
безпосередньо не пересилається, але
якщо функція хешування не є односторонньою,
то противник може визначити секретне
значення досить легко: при можливості
спостерігати або перехоплювати потік
даних він отримає в розпорядження
повідомлення М
і хеш-код
. Потім він розгляне
функцію, зворотну функції хешування, і
отримає
Тепер, коли противник має і М,
і SAB
|| M, відновити значення
SAB
не складе для нього ніяких труднощів.
П'ята властивість гарантує те, що не вдасться знайти інше повідомлення, яке дає в результаті хешування те ж саме значення, що й дане повідомлення. Це запобігає можливість фальсифікації повідомлення в тому випадку, коли виконується шифрування хеш-коду (див. рис. 11.5 (6) і (в)). У такій ситуації противник може прочитати повідомлення і обчислити відповідний хеш-код. Однак він не має секретного ключа, а тому не може змінити повідомлення так, щоб це не було виявлено. Якщо цю властивість не виконано, противник може діяти за такою схемою: спочатку перехопити повідомлення разом з приєднаним до нього шифрованим хеш-кодом, потім обчислити нешифрований хеш-код повідомлення і нарешті створити альтернативне повідомлення з тим же хеш-кодом.
Шоста властивість визначає стійкість функції хешування до конкретного класу атак, відомих під назвою атак, побудованих на парадоксі задачі про дні народження (розглядаються нижче).
