- •Безпека даних
- •Вступ. Основні поняття безпеки. Конфіденційність, цілісність та доступність даних. Класифікація загроз. Сервіси та механізми захисту.
- •Основні поняття і визначення криптографічного захисту даних.
- •Порушення, механізми і служби захисту.
- •Традиційне шифрування. Модель традиційного шифрування. Криптографія і криптоаналіз. Класична техніка шифрування: підстановки і перестановки.
- •Потокові і блокові шифри. Дифузія і конфузія. Шифр Файстеля. Диференційний та лінійний крипто аналіз. Принципи побудови блокових шифрів
- •Стандарт шифрування даних (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. Огляд існуючих аналізаторів
- •Відношення Історія експонатів
- •Список літератури
5. Сертифікати
Повне пояснення з даного поняття буде дано в окремому розділі. Тут же про сертифікати згадано, оскільки сертифікати таки використовуються в високорівневих функціях обробки криптографічних повідомлень типу CryptSignMessage. Поки важливо розуміти, що сертифікати в системі використовуються для:
зберігання додаткової інформації про власника сертифіката;
зберігання значення публічного ключа власника;
отримання посилання на контейнер ключів. З сертифікатом, встановленим у системі, може бути фізично пов'язаний контейнер ключів.
Тобто, маючи тільки посилання на контекст сертифікату можна встановити однозначний зв'язок з секретним ключем і використовувати це, наприклад, при перевірці цифрового підпису або розшифровуванні даних.
У спрощеному вигляді сертифікати можна вважати деякими посвідченнями особи. Правами видавати сертифікати (як і паспорта), в ідеалі повинні володіти тільки довірені центри (наприклад, ФСБ чи міліція). Але, в принципі, можна генерувати сертифікати і самому. У цьому випадку той користувач, який буде використовувати даний сертифікат, має право або довіряти, або не довіряти сертифікату («... паспорт можна і самому намалювати ...»). Для цілей подальшого вивчення високорівневих функцій обробки криптографічного інформації нам важливі лише два останніх випадки використання сертифікатів з перерахованих: сертифікати зберігають публічний ключ і можуть бути пов'язані з контейнером ключів, в якому зберігається секретний ключ. Цієї інформації на даному етапі буде достатньо.
Якщо ви не мали досвіду роботи з сертифікатами, то для ознайомлення з ними, можна викликати Internet Explorer, вибрати в його меню пункт «Сервіс / Властивості оглядача» («Tools / Internet Options»), а потім на закладці «Зміст» («Content ») натиснути на кнопку« Сертифікати »(« Certificates »). Вашій увазі буде представлено список сертифікатів, встановлених в системі
6. Базові функції
6.1. Шифрування
Базова функція шифрування даних має таке оголошення:
BOOL CryptEncrypt(HCRYPTKEY hKey, HCRYPTHAS hHash, BOOL Final, DWORD dwFlags, BYTE* pbData, DWORD* pdwDataLen, DWORD dwBufLen); |
Першим параметром цієї функції передається хендл сесійного ключа, застосовуваного для шифрування. Другий параметр досить рідко використовується і призначений для отримання хешу даних одночасно з їх шифруванням. Така можливість досить корисна при формуванні одночасно як шифрованих даних, так і цифрового підпису цих же даних.
Ця функція може обробляти дані блоками. Тобто немає необхідності відразу завантажувати в пам'ять цілком весь масив даних, а лише потім передавати посилання на нього криптографічній функції. Досить передавати масив даних по блоках, спеціальним чином відзначивши лише останній блок даних (це зазвичай потрібно, щоб криптопровайдер провів деякі дії після використання сесійної ключа). Для вказівки того, що це останній блок даних, в функції CryptEncrypt використовується третій параметр Final. Четвертий параметр служить покажчиком на масив вхідних / вихідних даних. Тут потрібно відразу відзначити деяку загальну схему роботи з даними в Crypto API. Якщо повернені дані можуть бути будь-якого розміру (а це можливо, адже, скажімо, в алгоритмі може відбуватися проста заміна, коли одна буква кодується чотирма цифрами), то робота з функцією складається з двох етапів. На першому етапі у функцію передається загальний розмір вхідних даних і NULL в якості посилання на сам масив вихідних даних. Функція повертає довжину вихідного масиву даних, користувач инициализирует пам'ять необхідного розміру і лише потім заново передає функції посилання на цей масив. Така ж схема використовується і в роботі з функцією CryptEncrypt. Параметр pdwDataLen служить для повернення розміру даних, що повертаються функцією. Параметр dwBufLen служить для вказівки довжини вхідного буфера даних. Параметр dwFlags зазвичай не використовується і встановлюється в 0.
