- •Безпека даних
- •Вступ. Основні поняття безпеки. Конфіденційність, цілісність та доступність даних. Класифікація загроз. Сервіси та механізми захисту.
- •Основні поняття і визначення криптографічного захисту даних.
- •Порушення, механізми і служби захисту.
- •Традиційне шифрування. Модель традиційного шифрування. Криптографія і криптоаналіз. Класична техніка шифрування: підстановки і перестановки.
- •Потокові і блокові шифри. Дифузія і конфузія. Шифр Файстеля. Диференційний та лінійний крипто аналіз. Принципи побудови блокових шифрів
- •Стандарт шифрування даних (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. Огляд існуючих аналізаторів
- •Відношення Історія експонатів
- •Список літератури
4. Алгоритми
У Crypto API всі криптографічні алгоритми реалізуються всередині криптопровайдерів. Таким чином, криптопровайдер дозволяє встановлювати або отримувати різні параметри алгоритму, отримувати вихідну інформацію алгоритму і багато іншого. Усередині Crypto API алгоритми прийнято ділити на наступні групи:
алгоритми шифрування / розшифрування;
алгоритми отримання значення хешу;
алгоритми отримання цифрового підпису;
алгоритми обміну криптографічними ключами.
Для подальшого розуміння сутності роботи з алгоритмами необхідно також ввести поняття симетричних і асиметричних алгоритмів шифрування. Симетричним алгоритмом називають алгоритм, в якому для шифрування і розшифрування використовується один і той же ключ. Асиметричними називають алгоритми, в яких використовується пара ключів (у загальному випадку може бути і більше двох ключів), один з яких використовується для шифрування (і тільки для шифрування) інформації, а інший - для розшифрування. В якості асиметричних алгоритмів прийнято застосовувати так звані алгоритми з відкритим ключем. У таких алгоритмах існує пара ключів - відкритий (публічний) і закритий (секретний) ключі. У більшості випадків для шифрування інформації використовується публічний ключ, а для розшифрування - секретний. Публічний ключ не є предметом секретності і призначений для передачі по відкритих каналах. Особа, яка отримала публічний ключ, може зашифрувати ним дані і відіслати їх по тим же відкритим каналам особі, що володіє секретним ключем. У свою чергу на стороні одержувача розшифрування можливе лише за наявності секретного ключа з тієї пари ключів, до якої належить публічний ключ, що застосовувався для шифрування. Таким чином, досягається можливість обмінюватися шифрованими повідомленнями, не піклуючись про те, що ключ може бути перехоплений в процесі пересилки.
Асиметричні алгоритми в звичайному житті мало застосовні. Причина цього - висока трудомісткість шифрування, обумовлена ??підвищеною складністю асиметричних алгоритмів. Зазвичай використовують наступну схему: шифрування даних виконується симетричним криптографічним алгоритмом деяким згенерованим для цього сесійним ключем. Потім для передачі одержувачу цей ключ шифрується за допомогою асиметричного алгоритму (довжина ключа несуттєво мала в порівнянні з можливим розміром даних). На стороні одержувача за допомогою асиметричного алгоритму розшифровується сесійний ключ, який використовується для розшифрування отриманих даних за допомогою симетричного алгоритму. Такий спосіб передачі шифрованої інформації дозволяє використовувати переваги обох підходів.
Саме такий підхід використаний у всіх ключових алгоритмах роботи Crypto API. Контейнери ключів зберігають пари ключів, необхідні для обміну сесійними ключами, а для безпосередньо шифрування даних необхідно кожен раз генерувати нові сесійні ключі.
Розглянемо основні операції, що виконуються над алгоритмами в Crypto API:
Перерахування всіх криптографічних алгоритмів. Виконується за допомогою виклику функції CryptGetProvParam з параметром dwParam, встановленим у PP_ENUMALGS.
Отримання параметрів алгоритмів. Зазвичай виконується прямо під час перерахування алгоритмів за допомогою виклику функції CryptGetProvParam з параметром dwParam встановленим в PP_ENUMALGS_EX. У цьому випадку отримувана структура може містити практично всю інформацію про алгоритм.
Даний ідентифікатор прийшов з специфікацій криптографічних стандартів фірми RSA Security і являє собою рядок, що складається з груп цифр, розділених крапками. У стандартах жорстко закріплено значення кожної групи цифр в OID, і за даним номером можна отримати деяку додаткову інформацію (наприклад, фірму-розробника алгоритму). Перетворення між типами номерів алгоритмів здійснюється функціями CertAlgIdToOID і CertOIDToAlgId.
