- •Безпека даних
- •Вступ. Основні поняття безпеки. Конфіденційність, цілісність та доступність даних. Класифікація загроз. Сервіси та механізми захисту.
- •Основні поняття і визначення криптографічного захисту даних.
- •Порушення, механізми і служби захисту.
- •Традиційне шифрування. Модель традиційного шифрування. Криптографія і криптоаналіз. Класична техніка шифрування: підстановки і перестановки.
- •Потокові і блокові шифри. Дифузія і конфузія. Шифр Файстеля. Диференційний та лінійний крипто аналіз. Принципи побудови блокових шифрів
- •Стандарт шифрування даних (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. Огляд існуючих аналізаторів
- •Відношення Історія експонатів
- •Список літератури
Програмна реалізація криптографічних алгоритмів. Використання криптографічних функцій Microsoft CryptoApi в прикладному пз. Поняття про безпечний цикл розробки пз (sdl).
1. Будова і можливості Crypto api
Насамперед, постараємося описати коло завдань, на вирішення яких орієнтований Crypto API:
надійне приховування даних;
можливість передачі прихованих даних третім особам;
надійна система перевірки достовірності що прийшла від третіх осіб інформації;
розшифрування отриманих конфіденційних даних;
робота з «ідентифікаційними посвідченнями» третіх осіб;
забезпечення роботи з визнаними криптографічними стандартами;
можливість розширення та роботи з поки ще невідомими алгоритмами.
Спершу я постараюся розглянути рішення задачі розширення. У Crypto API цю задачу вирішили досить елегантно. Реалізація всіх алгоритмів (шифрування, цифрового підпису тощо) повністю виведена зі складу самого Crypto API і реалізується в окремих, незалежних динамічних бібліотеках - «криптопровайдерів» (Cryptographic Service Provider - CSP). Сам же Crypto API просто висуває певні вимоги до набору функцій (інтерфейсу) криптопровайдера і надає кінцевому користувачеві уніфікований інтерфейс роботи з CSP. Кінцевому користувачеві для повноцінного використання всіх функцій криптопровайдера досить знати його строкове ім'я та номер типу.
Крім завдання розширення одним з основних завдань Crypto API є можливість однозначної ідентифікації передавальної / приймаючої сторони в протоколі передачі даних. Загальновизнаним рішенням у даному питанні є використання механізму сертифікатів. Сертифікати ніби стали «цифровими паспортами», які несуть інформацію про своїх власників. Повна розповідь про даний механізмі послідує дещо пізніше, а зараз варто згадати, що Crypto API також повно реалізує весь спектр функцій роботи з ним. Більшість функцій Crypto API, що працюють з переданими даними, так чи інакше, використовують сертифікати у своїй роботі.
У програмних рішеннях рано чи пізно постає питання стандартизації переданих між додатками даних. У сфері криптографії для вирішення даного питання вже давно й успішно застосовує набір стандартів «PKCS», запропонований компанією RSA Security. У даному комплекті стандартів враховуються всі можливі випадки, що виникають у криптографічних додатках. Передбачені стандарти для обміну сертифікатами, зашифрованими і підписаними даними і багато іншого. Crypto API, як основна бібліотека для забезпечення роботи з криптографічними даними в Windows, також досить повно підтримує даний комплект стандартів і дозволяє формувати криптографічні додатки, які можуть бути оброблені надалі будь-якими програмними продуктами.
Таким чином, ми можемо розділити весь інтерфейс Crypto API на 5 функціональних груп:
1. Базові криптографічні функції:
шифрування / розшифрування даних;
хешування та отримання цифрового підпису даних;
ініціалізації криптопровайдера та роботи з отриманим контекстом;
генерації ключів;
обміну ключами.
2. Функції кодування / декодування. Під кодуванням в даному випадку мається на увазі отримання на виході інформації, кодованої у форматі ASN.1 (Abstract Syntax Notation One).
3. Функції роботи з сертифікатами.
4. Високорівневі функції обробки криптографічних повідомлень.
5. Низькорівневі функції обробки криптографічних повідомлень.
