- •Безпека даних
- •Вступ. Основні поняття безпеки. Конфіденційність, цілісність та доступність даних. Класифікація загроз. Сервіси та механізми захисту.
- •Основні поняття і визначення криптографічного захисту даних.
- •Порушення, механізми і служби захисту.
- •Традиційне шифрування. Модель традиційного шифрування. Криптографія і криптоаналіз. Класична техніка шифрування: підстановки і перестановки.
- •Потокові і блокові шифри. Дифузія і конфузія. Шифр Файстеля. Диференційний та лінійний крипто аналіз. Принципи побудови блокових шифрів
- •Стандарт шифрування даних (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. Огляд існуючих аналізаторів
- •Відношення Історія експонатів
- •Список літератури
2.2. Прості функції хешування
Всі функції хешування побудовані на наступних загальних принципах. Введене значення (повідомлення, файл і т.д.) розглядається як послідовність n-бітових блоків. Введені дані обробляються послідовно блок за блоком, щоб у результаті отримати n-бітове значення функції хешування.
Однією з найпростіших функцій хешування є зв'язування всіх блоків операцією порозрядного виключного "АБО" (XOR). Це можна записати в наступному вигляді:
де
Сi — i-й біт хеш-кода, 1 < i < п,
т — число n-бітових блоків введення,
bij — i-й біт в j-ому блоці,
— операція XOR.
Ця процедура показана на рис. 12.2. Вона здійснює простий побітовий контроль парності і зазвичай називається поздовжнім контролем парності. Така процедура досить ефективна при контролі цілісності даних у разі даних довільного виду. Тоді будь-яке га-бітове значення функції хешування виявляється однаково імовірним. Значить, ймовірність того, що при появі помилки в даних значення функції хешування залишиться колишнім, дорівнює 2-n. Якщо ж мова йде про більш прогнозовані форматовані дані, така функція менш ефективна. Наприклад, в текстових файлах із звичайним англійським текстом старший розряд кожного байта завжди дорівнює нулю. Тому якщо використовувати 128-бітове значення функції хешування, то замість ефективності 2-128 функція хешування для цього типу даних покаже ефективність, рівну 2-112.
Найпростіше удосконалити таку схему, розглянувши можливість виконання однобітового циклічного зсуву або повороту значення функції хешування після завершення обробки кожного чергового блоку. Така процедура складається з наступних етапів.
1. Початкова ініціалізація n-бітового значення функції хешування нульовим значенням.
2. Послідовна обробка n-бітових блоків даних за наступним правилом.
• Виконання циклічного зсуву поточного значення функції хешування вліво на один біт.
• Додавання поточного блоку до значення функції хешування за допомогою операції XOR.
Ця процедура демонструє ефект "рандомізаціі" даних, що вводяться і руйнування регулярностей, які спостерігаються для вводимих даних. Ці два типи функцій хешування ілюструються для 16-бітових значень на рис. 12.3.
|
Біт 1 |
Біт 2 |
. . . |
Біт n |
Блок 1 |
b11 |
b21 |
|
bn1 |
Блок 2 |
b12 |
b22 |
|
bn2 |
|
... |
... |
. . . |
. . . |
Блок m |
b1m |
b2m |
|
bnm |
Хеш-код |
C1
|
C2
|
|
Cn |
|
|
|
|
|
Рис. 12.2. Проста функція хешування, що виконує операцію XOR
Рис.12.3. Дві прості функції хешування
Хоча друга з вищезазначених процедур і забезпечує хорошу можливість контролю цілісності даних, вона практично марна для захисту даних, коли з відкритим повідомленням передається шифрований хеш-код, як це має місце у випадках, показаних на рис. 11.5 (6) і (в). Маючи деяке повідомлення, зовсім неважко створити нове повідомлення, якому буде відповідати той же самий хеш-код: просто підготуйте будь-яке необхідне альтернативне повідомлення і приєднайте до нього відповідний n-бітовий блок, який разом з новим повідомленням сформує бажаний хеш-код.
Хоча просте виконання операції XOR або тієї ж операції з циклічним зрушенням (RXOR) у разі шифрування тільки хеш-коду виявляється недостатнім, ви можете переконатися, що така проста функція може бути корисна, коли шифруються і хеш-код, і повідомлення (див. рис . 11.5 (a)). Але тут потрібне бути уважним. Технологія, оригінально запропонована Національним бюро стандартів (National Bureau of Standards), передбачає виконання простої операції XOR стосовно 64-бітових блоків повідомлення і подальше шифрування всього повідомлення в режим зчеплення блоків (СВС). Така схема може бути описана таким чином. Маючи повідомлення, що складається з послідовності 64-бітових блоків Х1, Х2, ..., XN, спочатку слід обчислити хеш-код С, рівний результату зв'язування всіх блоків за допомогою операції XOR, а потім приєднати отриманий хеш-код до кінця повідомлення в якості ще одного блоку:
Після цього всі повідомлення
разом з приєднаним хеш-кодом шифрується
в режимі СВС, в результаті чого виходить
шифрування повідомлення
. В [JUEN85] було зазначено кілька способів,
за допомогою яких шифрований текст
такого повідомлення можна реорганізувати
таким чином, щоб це не вплинуло на
хеш-код. Наприклад, за визначенням режиму
СВС (див. рис. 3.12 в розділі
3), ми маємо
Але значення XN+1 є значенням хеш-коду:
Зважаючи на те що доданки попереднього рівняння можуть зв'язуватися операцією XOR в будь-якому порядку, хеш-код не повинен змінюватися при зміні порядку проходження блоків шифрованого тексту.
