Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота 4.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
46.53 Кб
Скачать

4.2 Протокол tls

TLS (англ. Transport Layer Security — захист на транспортному рівні), та їхні попередники SSL — криптографічні протоколи що надають можливості безпечної передачі даних в Інтернет для навігації, отримання пошти, спілкування та передачі інших даних. Існують незначні відмінності між TLS та SSL, але, в основі, протокол той самий.

TLS надає можливості автентифікації і безпечної передачі даних через Інтернет з використанням криптографічних засобів. Часто відбувається лише автентифікація сервера, а клієнт залишається неавтентифікованим. Для взаємної автентифікації кожна з сторін мусить підтримувати інфраструктуру відкритого ключа (PKI), яка дозволяє захистити клієнт-серверні додатки від перехоплення, редагування повідомлень або ж створення підроблених.

SSL включає три основні фази:

  • Діалог між сторонами, метою якого є вибір алгоритму шифрування.

  • Обмін ключами на основі криптосистем з відкритим ключем або ж автентифікація на основі сертифікатів.

  • Передача даних, що шифруються за допомогою симетричних алгоритмів шифрування

В даній поточній версії протоколу доступні такі алгоритми:

  • Для обміну ключами і перевірки їх справжності використовують комбінації алгоритмів: RSA (асиметричний шифр), Diffie-Hellman (безпечний обмін ключами), DSA (алгоритм цифрового підпису) і алгоритми технології Fortezza.

  • Для симетричного шифрування: RC2, RC4, IDEA, DES, Triple DES або AES;

  • Для хеш-функцій: MD5 або SHA.

Алгоритми можуть доповнюватися в залежності від версії протоколу.

Перелічимо завдання протоколу TLS у порядку їхнього пріоритету.

  • Криптографічна безпека: TLS повинен використовуватися для встановлення безпечного з'єднання між двома учасниками.

  • Інтероперабельність: незалежні розробники можуть створювати додат-ки, які будуть взаємодіяти за протоколом TLS, що дозволить установ-лювати безпечні з'єднання.

  • Розширюваність: TLS формує загальний каркас, у який можуть бути вбудовані нові алгоритми відкритого ключа та симетричного шифру-вання. Це також рятує від необхідності створювати новий протокол, що в свою чергу викличе появу нових слабких місць, і запобігає необхід-ності повністю реалізовувати нову бібліотеку безпеки.

  • Відносна ефективність: криптографічні операції інтенсивно викори-стовують центральний процесор, особливо операції з відкритим клю-чем. Для цього вводиться поняття сесії, для якої визначаються алгорит-ми та їхні параметри. У рамках однієї сесії може бути створено кілька з'єднань (наприклад, ТСР). TLS дозволяє кешувати сесії для зменшення кількості виконуваних дій при встановленні з'єднання. Це знижує навантаження як на центральний процесор, так і на трафік.

  • Протокол складається із двох рівнів. Нижнім рівнем, розташованим вище деякого надійного протоколу (а саме, протоколу ТСР) є протокол Запису. Протокол Запису забезпечує безпеку з'єднання, яка основана на таких двох властивостях.

  • Конфіденційність з'єднання. Для захисту даних використовується один з алгоритмів симетричного шифрування. Ключ для цього алгоритму створюється для кожної сесії та базується на секреті, про який домовляються в протоколі Рукостискання. Протокол Запису також може використовуватися без шифрування.

  • Цілісність з'єднання. Забезпечується перевірка цілісності повідом-лення за допомогою МАС із ключем. Для обчислення МАС використо-вуються безпечні хеш-функції SHA-1 й MD5. Протокол Запису може виконуватися без обчислення МАС, але звичайно функціонує в цьому режимі.

Протокол Запису використовується для інкапсуляції різних прото-колів більш високого рівня. Одним із протоколів більш високого рівня є протокол Рукостискання, який використовує протокол Запису як тран-спорт для ведення переговорів про параметри безпеки. Протокол Рукостискання дозволяє серверу й клієнтові автентифікувати один одного та домовитися про алгоритми шифрування і криптографічні ключі до того, як прикладний протокол, який виконується на тому ж рівні, почне передавати або приймати перші байти даних.

Протокол Рукостискання забезпечує безпеку з'єднання, яка основана на таких властивостях.

  • Учасники автентифіковані з використанням криптографії з відкритим ключем (тобто з використанням алгоритмів RSA, DSS і т.д.). Ця автентифікація може бути необов'язковою, але звичайно потрібна для сервера.

  • Переговори про розділений секрет безпечні, тобто цей загальний секрет неможливо підглянути.

  • Переговори про розділений секрет надійні, якщо виконана автентифікація хоча б однією зі сторін. У такому випадку атакуючий, розташований у середині з'єднання, не може модифікувати переданий секрет непомітно для учасників з'єднання.

Одна з переваг TLS полягає в тому, що він незалежний від прикладного протоколу. Протоколи більш високого рівня можуть прозоро розташовуватися поверх протоколу TLS.

В протоколі TLS використовується чотири криптографічні операції: цифровий підпис, потокове шифрування, блокове шифрування й шифрування з відкритим ключем.

В операції цифрового підпису вхідними даними для алгоритму підпису є результат застосування однобічної хеш-функції, яка підписує дані. Довжина входу визначається алгоритмом підпису. При використанні алгоритму RSA підписується 36-байтова структура, що складається з конкатенації 20 байтів хеш-коду SHA-1 та 16 байтів хеш-коду MD5. При використанні DSS 20 байтів хеш-коду SHA-1 подаються на вхід алгоритму DSA без додаткового хешування. При цьому створюється значення r та s.

При потоковому шифруванні для незашифрованого тексту виконується операція XOR з тією ж кількістю значень, створених крип-тографічно безпечним (із ключем) генератором псевдовипадкових чисел.

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

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

Для одержання МАС використовується НМАС, тому якщо не знати секрету МАС, підробити МАС неможливо. НМАС може використовуватися з різними хеш-алгоритмами. TLS задіє при Рукостисканні два алгоритми, MD5 й SHA-1, позначуваних як HMAC_MD5 (secret, data) і HMAC_SHA (secret, data). Можуть бути визначені додаткові хеш-алгоритми. В алгоритмі визначена функція, яка розширює секрет до потрібної довжини для створення всіх необхідних ключів. Така псевдовипадкова функція, (PRF), одержує як вхід секрет, seed (значення, що з однієї сторони є випадковим, а з іншої сторони не є секретним, тобто може стати відоме опонентові) та ідентифікаційну мітку, а також створює вихідне значення необхідної довжини. Для того, щоб зробити псевдовипадкову функцію якомога більш безпечною, використовуються два безпечних хеш-алгоритми. По-перше, визначається функція розширення даних P_hash (secret, data), що застосовує єдину хеш-функцію для розширення секрету й seed:

P_hash (secret, seed) = HMAC_hash (secret, A(1) + seed) + + HMAC_hash (secret, A(2) + seed) + HMAC_hash (secret, A(3) + seed) + ...,

де + – позначає конкатенацію.

А() – визначається в такий спосіб: А(0) = seed, A (i) = HMAC_hash (secret, A (i – 1)).

P_hash може мати стільки ітерацій, скільки необхідно для створення необхідної кількості даних. Наприклад, якщо P_SHA-1 використовується для створення 64 байтів даних, то кількість ітерацій повинна дорівнювати 4, при цьому буде створено 80 байтів даних; останні 16 байтів заключної ітерації будуть відкинуті, щоб залишити тільки 64 байти вихідних даних.

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

PRF(secret,label,seed)=P_MD5(S1,label+seed)P_SHA-1(S2,label+seed);

де Label – фіксований текстовий рядок.

Оскільки MD5 створює 16-байтові значення, а SHA-1 створює 20-байтові значення, то границі внутрішніх ітерацій не будуть збігатися. Наприклад, для створення 80-байтового значення необхідно виконати 5 ітерацій P_MD5 й 4 ітерації P_SHA-1.

Протокол Запису складається з декількох рівнів. На кожному рівні повідомлення можуть включати поля довжини, опису та вмісту. Протокол Запису фрагментує повідомлення на блоки потрібної довжини, здійснює стискання даних, застосовує МАС і зашифровує їх, після чого результат передається по мережі. На іншому кінці з'єднання отримані дані дешифруються, перевіряється їхня цілісність, далі вони декомпресуються, дефрагментуються та передаються протоколам більш високого рівня.

Поверх протоколу Запису можуть розташовуватися такі протоколи: протокол Рукостискання, Аlert-протокол, протокол Зміни параметрів шифрування й протокол прикладних даних. Для того щоб мати можливість розширення протоколу TLS, протокол Запису допускає створення нових типів записів. Якщо реалізація TLS одержує незрозумілий або непідтри-муваний тип запису, то він ігнорується. Тип і довжина запису не зашифровані, отже ці значення не повинні містити секретних даних.

Параметрами виконання протоколу Запису є алгоритм стиснення, алгоритм шифрування та МАС-алгоритм, а також параметри цих алгоритмів, тобто секрети МАС, ключі алгоритму шифрування та вектори ініціалізації. Для кожного напрямку (відповідно читання або запис) параметри з'єднання можуть розрізнятися. Існує чотири стани з'єднання: поточні та очікувані стани читання/запису. Параметри безпеки для очікуваних станів установлюються протоколом Рукостискання.