- •Безпека даних
- •Вступ. Основні поняття безпеки. Конфіденційність, цілісність та доступність даних. Класифікація загроз. Сервіси та механізми захисту.
- •Основні поняття і визначення криптографічного захисту даних.
- •Порушення, механізми і служби захисту.
- •Традиційне шифрування. Модель традиційного шифрування. Криптографія і криптоаналіз. Класична техніка шифрування: підстановки і перестановки.
- •Потокові і блокові шифри. Дифузія і конфузія. Шифр Файстеля. Диференційний та лінійний крипто аналіз. Принципи побудови блокових шифрів
- •Стандарт шифрування даних (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. Огляд існуючих аналізаторів
- •Відношення Історія експонатів
- •Список літератури
6.4. Розшифрування
Базова функція розшифрування має наступний опис:
BOOL CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE* pbData, DWORD* pdwDataLen); |
Першим параметром цієї функції передається ініціалізований контекст сесійного ключа, вживаного для розшифрування даних. Другий параметр, як і в попередньому прикладі, пов'язаний, здебільшого, з функцією отримання та перевірки цифрового підпису. Зазвичай він не використовується і встановлюється в 0. Параметр dwFlags найчастіше не використовується і також встановлюється в 0. Параметри pbData і pdwDataLen використовуються точно так само, як і у CryptEncrypt і являють собою посилання на вхідний / вихідний масив даних і довжину цього масиву даних.
6.5. Хешування
Під хешуванням розуміють застосування деякої математичної функції (званої хеш-функцією) до деяких даних. При застосуванні хеш-функції до довільного обсягу даних завжди виходить масив даних фіксованого розміру. До хеш-значенням ставиться вимога «стійкості до колізій». Це означає, що хеш-функція тим краще, чим важче знайти два таких випадкових вхідних масиви даних, для яких збігалися б хеш-значення, які генеруються. При обробці одних і тих же даних хеш-функція зобов'язана повертати одне і те ж хеш-значення. Ця властивість хеш-функцій використовується, насамперед, для контролю над цілісністю даних. Адже якщо ми змінимо хоч біт у вхідному масиві інформації, то результат роботи хеш-функції (з високою ймовірністю) буде іншим.
У Crypto API для маніпуляції з хешем використовується спеціальний хеш-об'єкт. Взаємодія з цим об'єктом здійснюється за допомогою наступних трьох функцій:
CryptCreateHash;
CryptHashData;
CryptGetHashParam.
Для первинної ініціалізації хеш-об'єкта застосовують функцію CryptCreateHash. Дана функція має наступний опис:
BOOL CryptCreateHash(HCRYPTPROV hProv, ALG_ID AlgId, HCRYPTKEY hKey, DWORD dwFlags, HCRYPTHASH* phHash); |
В якості першого параметра даної функції передається ініціалізований контекст криптопровайдера. Другим параметром вказується алгоритм отримання значення хешу. Параметр hKey необхідний лише у разі застосування спеціалізованих алгоритмів типу MAC і HMAC.
ПОРАДА MAC (Message Authentication Code, російський термін - «имитовставка»), перекладається як «код перевірки достовірності повідомлення». Фактично, MAC призначений для перевірки значення хеш-значення тільки людьми, що мають необхідний ключ. Можна сприймати це як додаткове шифрування значення, отриманого за допомогою хеш-функції (хоча це і не зовсім так). Також MAC можна використовувати в якості найпростішого цифрового підпису. HMAC (Hash-based Message Authentication Code) є різновидом MAC. |
Параметр dwFlags зарезервований під можливе майбутнє використання і повинен бути завжди рівний 0. Через параметр phHash функція повертає хендл створеного їй хеш-об'єкта. Після того, як хеш-об'єкт стане непотрібним, потрібно звільнити хеш-об'єкт за допомогою виклику функції CryptDestroyHash.
Після ініціалізації хеш-об'єкта можна почати передачу даних хеш-функції за допомогою виклику CryptHashData. Дана функція має наступний опис:
BOOL CryptHashData(HCRYPTHASH hHash, BYTE* pbData, DWORD dwDataLen, DWORD dwFlags); |
В якості першого параметра даної функції передається раніше ініціалізований хендл хеш-об'єкта. Другим параметром передається порція даних для хеш-функції. Параметр dwDataLen являє собою довжину переданих даних. Параметр dwFlags зазвичай рівний нулю.
Після повної передачі всього масиву вхідних даних функції CryptHashData виникає необхідність в отриманні значення хеш-функції. Дане завдання вирішується із застосуванням функції CryptGetHashParam. Дана функція має наступний опис:
BOOL CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, BYTE* pbData, DWORD* pdwDataLen, DWORD dwFlags); |
В якості першого параметра даної функції передається раніше ініціалізований хендл хеш-об'єкта. Другий параметр, dwParam, функції визначає тип запитуваного значення. Для отримання хеш-значення необхідно передати другим аргументом значення HP_HASHVAL. Параметри pdData і pdwDataLen відповідають за блок пам'яті, використовуваний під значення, яке повертається. Параметр dwFlags зарезервований для майбутнього використання і повинен бути рівний нулю.
Для перевірки правильності хеш-значення потрібно отримати хеш-значення даних і звірити його з хеш-значенням, яке перевіряється.
