Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursova.doc
Скачиваний:
2
Добавлен:
08.09.2019
Размер:
1.71 Mб
Скачать
  1. Криптопровайдер Windows csp

Криптографічний провайдер (CSP) містить реалізацію криптографічних стандартів та алгоритмів. Як мінімум, CSP складається з динамічно підключених бібліотек (DLL), які реалізують функції в CryptoSPI ( програмний інтерфейс системи ). [8]

Криптографічний захист забезпечується завдяки криптопровайдеру Microsoft Base Cryptographic Provider, що починаючи з Windows 98 був автоматично доданий до операційної системи.

Microsoft Base Cryptographic Provider є базовим криптографічним провайдером, що поширюється починаючи з CryptoAPI версії 1,0 і 2,0. Це криптопровайдер загального призначення, який підтримує цифровий підпис та шифрування даних.

RSA алгоритм відкритого ключа використовується для всіх відкритих ключів операцій.

Для підтримки зворотної сумісності з більш ранніми версіями нової версії постачальник зберігає версії 1,0 призначення ім'я в Wincrypt.h. Однак, у версії 2.0 цей провайдер в даний час неоднозначний. Для визначення фактичної версії, необхідно здійснити виклик CryptGetProvParam з dwParam аргументом встановленим в PP_VERSION. Якщо повертається 0x0200 в pbData, то дана версія 2.0.

Для шифрування даних спочатку необхідно створити контейнер для ключа. Через використання простого паролю, що передається по мережі, на його основі варто створити хеш – об’єкт (таким чином можна також перевіряти цілісність паролю). На основі хеш – об’єкту генерується сесійний ключ, якій і буде використовуватися для шифрування та дешифрування (ключ симетричний).

Ключ в додатках формується на основі двох частин: паролю клієнта та паролю сервера методом простого додавання. Шифрування відбувається такими ж блоками, що й передача по каналу зв’язку.

Для шифрування використовується алгоритм CALG_RC4 (рис.2).

Рис.2. Генератор ключового потоку RC4

Ядро алгоритму складається з функції генерації ключового потоку. Ця функція генерує послідовність бітів (ki), яка потім об'єднується з відкритим текстом (mi) за допомогою підсумовування по модулю два. Так виходить шифрограма (ci): .

Розшифровка полягає в регенерації цього ключового потоку (ki) та складання його і шифрограми (ci) по модулю два. З огляду на властивостей підсумовування за модулем два на виході ми отримаємо вихідний незашифрований текст (mi): .[9]

Режим шифрування, що використовується, має назву Electronic Codebook (ECB).

Рис.3. Electronic Codebook в режимі зашифровування.

Повідомлення ділиться на блоки, і кожен блок шифрується окремо (рис.3). Недоліком цього методу є те, що одинакові блоки тексту повідомлення шифруються в однакові блоки шифротексту, і тому недостатньо добре ховають структуру даних.[10]

Розділ 2. Алгоритм програми

У розділі описані алгоритми, за якими були втілені механізми виконання поставленої задачі. Програма, що реалізовує передачу, складається з двох додатків – клієнтської частини та серверної частини.

  1. Сервер

Блок-схема показує етапи створення сокету, очікування клієнта, підключення (рис.4).

Рис.4. Блок – схема роботи додатку «сервер»

Циклічна передача повідомлень починається з читання команди клієнта, а далі відбувається почергова передача повідомлень. Блок – схема циклічної передачі повідомлень зображена на рис.5.

Рис.5. Блок – схема циклічного обміну даними зі сторони сервера

Для отримання незахищеного файлу від клієнта потрібно відкрити пустий файл, та писати в нього всі отримані блоки даних. Файл відкривається в бінарному режимі, тому запис відбувається блоками зі встановленим розміром байт. Блок схема незахищеної передачі файлу зображена на рис.6.

Рис.6. Блок – схема прийому незахищеного файлу на стороні сервера

Прийом захищеного файлу потребує отримання передачі паролю, тому він є дещо складнішим. Клієнт повинен відправити свою частину паролю, а сервер у відповідь – свою.

Рис.7. Блок – схема прийому захищеного файлу на стороні сервера

Коли відбувається прийом, повідомлення попередньо треба зберегти в файл із зашифрованими даними, потім розшифрувати, і лише тоді зберігати в кінцевий файл. Блок – схема прийому зашифрованого файлу зображена на рис.7.

Процес розшифровування становить декілька етапів. Спочатку ініціалізується криптопровайдер, далі створюється контейнер для ключа. Розмір сесійного ключа становить 8 байт. Він створюється на основі паролів клієнта та сервера. Блок – схема розшифровування зображена на рис.8.

Рис.8. Блок – схема розшифровування даних на стороні сервера

  1. Клієнт

Блок-схема клієнта показує, на якому етапі клієнт намагається підключитися до сервера. Також показано функції приймання та надсилання повідомлення. Для екстреного розриву зв’язку передбачена команда shutdown. Загальний механізм роботи клієнта показаний на рис.9.

Рис.9. Блок – схема роботи додатку «клієнт»

Для обміну повідомленнями не можна встановити попередньо кількість повідомлень, що будуть передані. Тому завершення листування символізує повідомлення «Bye». Переписка відбувається послідовно → клієнт → сервер. Не можна послати два повідомлення підряд. Увімкнення режимів передачі відбувається завдяки A-mode та B-mode командам (рис.10).

Рис.10. Блок – схема циклічного обміну даними на стороні клієнта.

Передача файлів відбувається блоками. Спочатку файл відкривається для читання як бінарний. Потім – проходить безпосередньо читання. Передача відбувається доки не прочитаються усі блоки або не станеться помилка. Такими ж блоками і відбувається пересилання на інший бік. Після кожного надходження на сторону сервера приходить відповідь «Ок». Таким чином, якщо відповідь не надійде, наступний блок не буде надісланий. Блок – схема простої передачі файлу зображена на рис.11.

Рис.11. Блок – схема простої передачі файлу на стороні клієнта

Захищений режим відрізняється від незахищеного лише тим, що блоки, які передаються по мережі, перед тим шифруються завдяки ключам, заснованим на паролях клієнта та сервера. А на протилежній стороні вони розшифровуються. Тобто при перехопленні файлу в мережі розшифрувати його буде важко. Блок – схема захищеної передачі файлу зображена на рис.12.

Рис. 12. Блок – схема захищеної передачі файлу на стороні клієнта

Для шифрування використовуються інтерфейс програмування Crypto API за допомогою криптопровайдера. Для зашифровування треба створити контейнер для ключа, створити хеш – об’єкт на основі спільного паролю, зашифрувати блоки даних. Блок – схема зашифровування блоку даних зображена на рис.13.

Рис.13. Блок – схема зашифровування блоку даних на стороні клієнта

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]