SSL TLS приймати всі сертифікати. Переконайтеся, що протоколи ssl та tls включені

Мережеві протоколи SSL і TLS є криптографічними протоколами, що забезпечують аутентифікацію та захист від несанкціонованого доступу, порушення цілісності даних, що передаються. Протоколи SSL/TLS призначені для виключення заміни ідентифікатора на стороні клієнта або сервера, розкриття або спотворення даних. Для цього використовується надійний метод аутентифікації, застосовуються шифрування каналу зв'язку та коди цілісності повідомлень. Стандартним портом, що встановлюється за умовчанням для SSL/TLS, є порт 443 для HTTPS, 465 для SMTPS (електронна пошта), 636 для LDAPS, 563 для NNTPS, 994 для IRCS (чат), 995 для POP3S.

Протокол SSL

Протокол SSL розроблений компанією Netscape для захисту даних між сервісними та транспортними протоколами. Першу оприлюднену версію було випущено в 1995 році. Широко використовується для VoIP-програм, сервісів обміну миттєвими повідомленнями. SSL є безпечним каналом, що має наступні властивості:

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

Протокол SSL використовує як симетричний, і асиметричний ключі.

Особливості та призначення протоколу SSL

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

Багатошарова структура представлена ​​шаром протоколу підтвердження підключення та шаром протоколу запису. Першим шаром виступає транспортний протокол, наприклад TCP — разом із SSL Record Protocol дані шари утворюють ядро ​​SSL, яке згодом бере участь у формуванні складних інфраструктур.

Серед основних особливостей протоколу SSL слід зазначити програмно-платформну незалежність. В даний час протокол SSL не забезпечує належного захисту – на зміну йому прийшов протокол TLS.

Протокол TLS

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

До основних заходів безпеки, які забезпечує протокол TLS, відносяться:

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

Особливості та призначення протоколу TLS

У протоколі TLS використовуються такі алгоритми:

  • RC4, Triple DES, SEED, IDEA та ін. для симетричного шифрування.
  • RSA, DSA, Diffie-Hellman та ECDSA для перевірки справжності ключів.
  • MD5, SHA та SHA-256/384 для хеш-функцій.

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

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

Що таке TLS-рукостискання і як воно влаштоване

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

Один із ключових аспектів протоколу – це рукостискання. Саме про нього ми поговоримо у цій статті.

"Рукостискання SSL/TLS" - це назва етапу установки HTTPS-з'єднання. Більшість роботи, що з протоколом SSL/TLS, виконується саме цьому етапі. Минулого року IETF допрацював TLS 1.3, повністю оновивши процес рукостискання.
У статті будуть освітлені два види рукостискання - для протоколів TLS 1.2 та TLS 1.3, які ми розглянемо, починаючи з абстрактного рівня та поступово заглиблюючись особливо:

  • узгодження криптографічних протоколів;
  • автентифікація за допомогою SSL-сертифіката;
  • генерація сеансового ключа

Як відбувається TLS-рукостискання

У HTTPS-з'єднанні беруть участь дві сторони: клієнт (ініціатор з'єднання, зазвичай веб-браузер) та сервер. Мета рукостискання SSL/TLS - виконати всю криптографічну роботу для встановлення безпечного з'єднання, у тому числі перевірити справжність використовуваного SSL-сертифіката та згенерувати ключ шифрування.

Узгодження шифронабору

кожне програмне забезпеченняунікально. Тому навіть найпопулярніші веб-браузери мають різну функціональність. Аналогічно і на стороні сервера Windows Server, Apache та NGINX також відрізняються один від одного. Все стає ще складніше, коли ви додаєте конфігурації користувача.

Саме тому перший крок TLS-рукостискання – обмін інформацією про свої можливості між клієнтом та сервером для подальшого вибору підтримуваних криптографічних функцій.

Як тільки клієнт і сервер узгоджують шифронабір, сервер відправляє клієнту свій SSL-сертифікат.

Аутентифікація

Отримавши сертифікат, клієнт перевіряє його справжність. Це надзвичайно важливий крок. Щоб з'єднання було безпечним, потрібно не лише зашифрувати дані, але ще й переконатися, що вони відправляються на правильний веб-сайт. Сертифікати SSL/TLS забезпечують цю автентифікацію, а те, як вони це роблять, залежить від використовуваного шифронабору.

Усі довірені SSL сертифікати випускаються центром сертифікації (ЦС). ЦС повинен дотримуватись суворих правил видачі та перевірки сертифікатів, щоб йому довіряли. Ви можете вважати ЦС кимось на кшталт нотаріуса – його підпис означає, що дані у сертифікаті реальні.

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

На цьому етапі клієнт опосередковано перевіряє, чи належить серверу закритий ключ, пов'язаний із сертифікатом.

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

Якщо використовується інша криптосистема, алгоритм може змінитись, але перевірка іншої сторони на справжність все одно залишиться.

Обмін ключами

Остання частина TLS-рукостискання включає створення «сеансового ключа», який буде використовуватися для захищеного зв'язку.

Сеансові ключі є «симетричними», тобто той самий ключ використовується для шифрування та дешифрування.

Симетричне шифрування продуктивніше, ніж асиметричне, що робить його більш підходящим для надсилання даних HTTPS-з'єднання. Точний метод генерації ключа залежить від обраного шифронабору, два найпоширеніші з них - RSA і Діффі-Хеллман.

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

Все SSL-рукостискання відбувається за кілька сотень мілісекунд. Це перше, що станеться під час з'єднання HTTPS, навіть до завантаження веб-сторінки. Після SSL-рукостискання починається зашифроване та автентифіковане HTTPS-з'єднання, і всі дані, що надсилаються та одержуються клієнтом та сервером, захищені.

Аж до TLS 1.3 щоразу, коли ви відвідували сайт, рукостискання відбувалося заново. Рукостискання TLS 1.3 підтримує 0-RTT або нульовий час відновлення прийому-передачі, що значно збільшує швидкість для відвідувача, що повернувся.

Покроковий процес рукостискання в TLS 1.2

Розглянемо TLS-рукостискання з використанням RSA докладніше. Використання алгоритму Діффі-Хеллмана буде описано нижче.

  1. Перше повідомлення називається "Client Hello". У цьому повідомленні перераховані можливості клієнта, щоб сервер міг вибрати шифронабір, який використовуватиме зв'язку. Також повідомлення включає велике випадково обране просте число, зване «випадковим числом клієнта».
  2. Сервер ввічливо відповідає повідомленням Server Hello. Там він повідомляє клієнту, які параметри з'єднання були вибрані, і повертає своє випадково обране просте число, яке називається «випадковим числом сервера». Якщо клієнт і сервер не мають спільних шифронаборів, з'єднання завершується невдало.
  3. У повідомленні «Certificate» сервер відправляє клієнту свій ланцюжок SSL-сертифікатів, що включає листовий і проміжні сертифікати. Отримавши їх клієнт виконує кілька перевірок для верифікації сертифіката. Клієнт також повинен переконатися, що сервер має закритим ключемсертифіката, що відбувається у процесі обміну/генерації ключів.
  4. Це необов'язкове повідомлення, необхідне лише для певних методів обміну ключами (наприклад, для алгоритму Діффі-Хеллмана), які вимагають від сервера додаткових даних.
  5. Повідомлення "Server Hello Done" повідомляє клієнта, що сервер закінчив передачу даних.
  6. Потім клієнт бере участь у створенні ключа сеансу. Особливості цього кроку залежать від методу обміну ключами, обраного у вихідних повідомленнях Hello. Оскільки ми розглядаємо RSA, клієнт згенерує випадковий рядок байтів, звану секретом (pre-master secret), зашифрує її з допомогою відкритого ключа сервера і передасть назад.
  7. Повідомлення "Change Cipher Spec" дозволяє іншій стороні дізнатися, що сеансовий ключ згенерований і можна перейти на зашифроване з'єднання.
  8. Потім надсилається повідомлення Finished, що означає, що на стороні клієнта рукостискання завершено. З цього моменту з'єднання захищене сесійним ключем. Повідомлення містить дані (MAC), за допомогою яких можна переконатися, що рукостискання не було підроблено.
  9. Тепер сервер розшифровує pre-master secret та обчислює сеансовий ключ. Потім надсилає повідомлення "Change Cipher Spec", щоб повідомити, що він перемикається на зашифроване з'єднання.
  10. Сервер також відправляє повідомлення Finished, використовуючи щойно згенерований симетричний сеансовий ключ, і перевіряє контрольну суму для перевірки цілісності всього рукостискання.

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

На цьому етапі можуть бути відправлені перші байти веб-додатки (дані, що належать до фактичного сервісу - HTML, Javascript і т.д.).

Покроковий процес рукостискання в TLS 1.3

Рукостискання TLS 1.3 значно коротше, ніж попередник.

  1. Як і у випадку TLS 1.2, повідомлення "Client Hello" запускає рукостискання, але цього разу воно містить набагато більше інформації. TLS 1.3 скоротив кількість шифрів, що підтримуються, з 37 до 5. Це означає, що клієнт може вгадати, яка угода про ключі або протокол обміну буде використовуватися, тому на додаток до повідомлення відправляє свою частину загального ключа з передбачуваного протоколу.
  2. Сервер відповість повідомленням "Server Hello". Як і в рукостисканні 1.2, на цьому етапі надсилається сертифікат. Якщо клієнт правильно вгадав протокол шифрування з приєднаними даними та сервер на нього погодився, останній відправляє свою частину загального ключа, обчислює сеансовий ключ та завершує передачу повідомленням Server Finished.
  3. Тепер, коли клієнт має всю необхідну інформацію, він верифікує SSL-сертифікат і використовує два спільні ключі для обчислення своєї копії сеансового ключа. Коли це зроблено, він надсилає повідомлення "Client Finished".

Витрати TLS-рукостискання

Історично одна з претензій до SSL/TLS полягала в тому, що він перенавантажував сервери додатковими витратами. Це вплинуло на неіснуюче уявлення, що HTTPS повільніше, ніж HTTP.

Рукостискання до TLS 1.2 вимагали багато ресурсів і у великих масштабах могли серйозно навантажити сервер. Навіть рукостискання TLS 1.2 можуть уповільнити роботу, якщо їх відбувається багато часу. Аутентифікація, шифрування та дешифрування – дорогі процеси.

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

Поліпшення рукостискання TLS 1.3 у порівнянні з TLS 1.2

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

У рукостискання TLS 1.2 можна виділити дві фази. Іноді можуть бути потрібні додаткові, але коли йдеться про кількість, за умовчанням мається на увазі оптимальний сценарій.

На відміну від 1.2, рукостискання TLS 1.3 укладається в одну фазу, хоча вірніше буде сказати у півтори, але це все одно значно швидше, ніж TLS 1.2.

Скорочення шифронаборів

Ніхто ніколи не збирався використовувати 37 наборів для шифрування даних, тому еволюціонував протокол. Щоразу, коли додавали новий алгоритм, додавали нові комбінації, і незабаром IANA адмініструвала 37 різних шифронаборів.

Це погано з двох причин:

  1. Така зміна призводить до помилкових конфігурацій, які роблять інтернет-користувачів уразливими для відомих експлойтів.
  2. Це зробило налаштування SSL більш заплутаним.

IETF виключив у TLS 1.3 підтримку всіх алгоритмів, крім найбезпечніших, прибираючи плутанину за рахунок обмеження вибору. Зокрема, було прибрано вибір методу обміну ключами. Ефемерна схема Діффі-Хеллмана стала єдиним способом, що дозволяє клієнту відправити інформацію про свій ключ разом із «Client Hello» у першій частині рукостискання. Шифрування RSA було повністю видалено разом з іншими схемами обміну статичними ключами.

При цьому є одна потенційна ахіллесова п'ята TLS 1.3.

Нульовий час поновлення прийому-передачі - 0-RTT

0-RTT - це те, чого прагнув весь технологічний світ, і ось воно тут із TLS 1.3. Як вже було згадано, рукостискання TLS історично було не швидким, тому було важливо прискорити його. 0-RTT робить це шляхом збереження деякої секретної інформації про клієнта, зазвичай ідентифікатора сеансу або сеансових тикетів, щоб використовувати їх під час наступного з'єднання.

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

Проте використовувати експлойт непросто. Ймовірно, такий ризик – невелика ціна за надзвичайно корисну функцію.

Безпека

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

У рукостисканні TLS 1.2 етапи узгодження не були захищені, натомість використовувалася проста MAC-функція, щоб ніхто не втрутився у передачу. У етап узгодження входять повідомлення "Client Hello" та "Server Hello".

Функція MAC діє як індикатор, але не дає жодних гарантій безпеки. Можливо, ви чули про атаку, яка змушує сторони використовувати менш безпечні протоколи та функції (downgrade attack). Якщо сервер і клієнт підтримують застарілі шифронабори - інформацію про це легко отримати, прослуховуючи з'єднання, - зловмисник може змінити шифрування, обране сервером, на слабкіше. Такі атаки не небезпечні самі по собі, але відчиняють двері для використання інших відомих експлойтів тих шифронаборів, на які було змінено спочатку.

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

Тепер подивимося, як ці оновлення для рукостискання TLS 1.3 будуть реалізовані у всіх трьох основних функціях самого рукостискання SSL/TLS.

Шифронабори TLS-рукостискання

Шифронабір – це набір алгоритмів, що визначають параметри безпечного з'єднання.

На початку будь-якого з'єднання перша взаємодія, «Client Hello», являє собою список підтримуваних шифронаборів. Сервер вибирає найкращий, найбезпечніший варіант, який підтримується ним та відповідає його вимогам. Ви можете подивитися на шифронабір і з'ясувати всі параметри рукостискання та з'єднання.

Шифронабори TLS 1.2

  • TLS – протокол.
  • ECDHE – алгоритм обміну ключами.
  • ECDSA – алгоритм аутентифікації.
  • AES 128 GCM – алгоритм симетричного шифрування.
  • SHA256 – алгоритм хешування.

У наведеному вище прикладі використовується ефемерна система Діффі-Хеллмана (DH) з еліптичною кривою для обміну ключами та алгоритм цифрового підпису еліптичної кривої для аутентифікації. DH також може бути з'єднаний з RSA (що функціонує як алгоритм цифрового підпису) для виконання аутентифікації.

Ось список найбільш широко підтримуваних шифронаборів TLS 1.2:

Шифронабори TLS 1.3

  • TLS – протокол.
  • AES 256 GCM – алгоритм автентифікованого шифрування з приєднаними даними (AEAD).
  • SHA384 – алгоритм функції формування хешованого ключа (HKFD).

Ми вже знаємо, що будемо використовувати якусь версію обміну ефемерними ключами Діффі-Хеллмана, але не знаємо параметрів, тому перші два алгоритми в шифронаборі TLS 1.2 більше не потрібні. Ці функції все ще виконуються, їх просто не потрібно узгоджувати під час рукостискання.

З наведеного вище прикладу видно, що використовується AES (Advanced Encryption Standard) для шифрування великого обсягу даних. Він працює в режимі лічильника Галуа із використанням 256-бітних ключів.

Ось п'ять шифронаборів, які підтримуються в TLS 1.3:

  • TLS_AES_256_GCM_SHA384;
  • TLS_CHACHA20_POLY1305_SHA256;
  • TLS_AES_128_GCM_SHA256;
  • TLS_AES_128_CCM_8_SHA256;
  • TLS_AES_128_CCM_SHA256.

Що змінилося у TLS 1.3 у порівнянні з TLS 1.2?

Важливо пам'ятати, що під час створення версії 1.3 головним було підвищення безпеки та продуктивності. Для цього в TLS 1.3 було перероблено алгоритм генерації ключів і виправлено відомі вразливості.

У рукостисканні TLS 1.3 також стали кращими деякі процеси, наприклад автентифікація повідомлень та цифрові підписи.

Нарешті, крім поступового відмови від старих алгоритмів генерації ключів чи обміну ними, TLS 1.3 усуває старі симетричні шифри. TLS 1.3 повністю виключили блокові шифри. Єдиний дозволений TLS 1.3 тип симетричних шифрів називається шифруванням з автентичністю з використанням додаткових даних (AEAD). Він об'єднує шифрування та автентифікацію повідомлень (MAC) в одну функцію.

Аутентифікація в TLS-рукостисканні

Історично двома основними варіантами обміну ключами є RSA та Діффі-Хеллман (DH), у наші дні DH часто асоціюється з еліптичними кривими (ECDH). Незважаючи на деякі основні подібності між цими двома підходами до обміну ключами є фундаментальні відмінності.

Іншими словами, TLS-рукостискання RSA відрізняється від TLS-рукостискання ECDH.

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

Діффі-Хеллмана іноді називають експоненційним обміном ключами, що вказує на зведення у ступінь (на додаток до модульної арифметики), але насправді сам DH взагалі нічого не шифрує та не дешифрує. Тому називати його "методом шифрування" замість "математичного обґрунтування" може бути трохи невірно.

Невеликий екскурс в історію може пояснити цей момент.

Ще в 1976 році Вітфілд Діффі і Мартін Хеллман створили протокол обміну ключами, заснований на роботі Ральфа Меркля, чиє ім'я, на думку обох, має також бути присутнім у назві протоколу.

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

Це можна вважати народженням криптографії з відкритим ключем та ІОК. Незабаром після того, як Діффі та Хеллман представили свій протокол обміну ключами, були завершені ранні версії криптосистеми RSA. Діффі та Хеллман створили концепцію шифрування з відкритим ключем, але ще не вигадали саму функцію одностороннього шифрування.

Саме Рон Рівест (R RSA) створив концепцію, яка в результаті стала криптосистемою RSA.

Багато в чому RSA є духовним наступником DH. Він здійснює:

  • генерацію ключів;
  • обмін ключами;
  • шифрування;
  • дешифрування.

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

У той час як RSA здійснює аутентифікацію та обмін ключами, Діффі-Хеллман лише полегшує обмін ключами. Існує чотири поширені варіанти сімейства DH:

  • Діффі-Хеллман (DH);
  • ефемерний (короткостроковий) Діффі-Хеллман (DHE);
  • еліптична крива Діффі-Хеллмана (ECDH);
  • еліптична крива ефемерного Діффі-Хеллмана (ECDHE).

Знову ж таки, Діффі-Хеллман сам по собі нічого не аутентифікує. Його потрібно використовувати у парі з алгоритмом цифрового підпису. Так, наприклад, якщо ви використовували ECDH або ECDHE, більшість шифронаборів будуть пов'язані з алгоритмом цифрового підпису еліптичної кривої (ECDSA) або RSA.

Аутентифікація в рукостисканні TLS 1.2

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

З іншого боку, якщо Діффі-Хеллман не виконує автентифікацію, що він робить? Як було сказано вище, DH часто використовують спільно з криптографією на основі еліптичних кривих, щоб забезпечити аутентифікацію та обмін ключами.

Еліптична криптографія (ECC) має набагато менші розміри ключів, які відповідають еліптичній кривій, на якій вони ґрунтуються. Для цього контексту є п'ять відповідних кривих:

  • 192 біт;
  • 224 біти;
  • 256 біт;
  • 384 біт;
  • 521 біт.

Але це не єдина різниця між відкритими/закритими ключами ECC та ключами RSA. Вони використовуються для двох абсолютно різних цілей під час рукостискання TLS.

У RSA пара відкритий/закритий ключ використовується як автентифікації сервера, так обмінюватися симетричним ключем сеансу. Фактично, саме успішне використання секретного ключа для розшифрування секрету (pre-master secret) автентифікує сервер.

З Діффі-Хеллманом пара відкритий/закритий ключ НЕ використовується для обміну симетричним сеансовим ключем. Коли задіяний Діффі-Хеллман, закритий ключ фактично пов'язаний з алгоритмом підпису (ECDSA або RSA), що додається.

RSA-автентифікація

Процес RSA-автентифікації пов'язаний із процесом обміну ключами. Точніше обмін ключами є частиною процесу аутентифікації.

Коли клієнту надається SSL-сертифікат сервера, він перевіряє кілька показників:

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

Якщо всі ці перевірки пройшли, проводиться останній тест - клієнт шифрує pre-master secret за допомогою відкритого ключа сервера і відправляє його. Будь-який сервер може спробувати видати будь-який SSL/TLS сертифікат за свій. Зрештою, це загальнодоступні сертифікати. А так клієнт може провести аутентифікацію сервера, побачивши закритий ключ "в дії".

Таким чином, якщо сервер може розшифрувати pre-master secret і використовувати його для обчислення сесійного ключа, він отримує доступ. Це підтверджує, що сервер є власником пари з відкритого і закритого ключа.

DH-автентифікація

Коли використовуються Діффі-Хеллман і ECDSA/RSA, автентифікація та обмін ключами розвертаються пліч-о-пліч. І це повертає нас до ключів та варіантів їх використання. Відкритий/закритий ключ RSA використовується як для обміну ключами, так і для автентифікації. У DH + ECDSA/RSA асиметрична пара ключів використовується лише для етапу цифрового підпису або автентифікації.

Коли клієнт отримує сертифікат, він все ще проводить стандартні перевірки:

  • перевіряє підпис на сертифікаті,
  • ланцюжок сертифікатів,
  • термін дії,
  • статус відкликання.

Але володіння закритим ключем підтверджується інакше. Під час обміну ключами рукостискання TLS (крок 4) сервер використовує свій закритий ключ для шифрування випадкового числа клієнта і сервера, а також свій DH-параметр. Він діє як цифровий підпис сервера і клієнт може використовувати пов'язаний відкритий ключ для перевірки, що сервер є законним власником пари ключів.

Аутентифікація в рукостисканні TLS 1.3

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

  • RSA (тільки підпис),
  • алгоритм цифрового підпису еліптичної кривої (ECDSA),
  • алгоритм цифрового підпису Едвардса (EdDSA)

На відміну від рукостискання TLS 1.2, автентифікаційна частина рукостискання TLS 1.3 не пов'язана із самим обміном ключами. Швидше вона обробляється паралельно з обміном ключами та автентифікацією повідомлень.

Замість запуску симетричної схеми MAC для перевірки цілісності рукостискання сервер підписує весь хеш розшифровки, коли повертає «Server Hello» зі своєю частиною загального ключа.

Клієнт отримує всю інформацію, що передається із «Server Hello», і виконує стандартну серію автентифікації сертифіката SSL/TLS. Вона включає перевірку підпису на сертифікаті, а потім перевірку на відповідність підпису, яка була додана в хеш розшифровки.

Збіг підтверджує, що сервер має секретний ключ.

Обмін ключами в TLS-рукостисканні

Якщо виділити головну думку цього розділу, вона звучатиме так:

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

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

Обмін ключами RSA

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

Ось як це відбувається:

  1. xі y
  2. Клієнт генерує pre-master secret(a), а потім використовує відкритий ключ сервера для його шифрування та надсилання на сервер.
  3. Сервер розшифровує pre-master secretза допомогою відповідного закритого ключа. Тепер обидві сторони мають усі три вхідних змінних і змішують їх із деякими псевдовипадковими функціями (PRF) для створення майстер-ключа.
  4. Обидві сторони змішують майстер-ключ із ще більшою кількістю PRF і отримують сеансові ключі, що збігаються.

Обмін ключами DH

Ось як працює ECDH:

  1. Клієнт та сервер обмінюються двома простими числами ( xі y), які називають випадковими числами.
  2. Одна сторона вибирає секретний номер pre-master secret(a), і обчислює: x a mod y. Потім надсилає результат (A) іншому учаснику.
  3. Інша сторона робить те саме, вибираючи свій власний pre-master secret(b) і обчислює x b mod y, потім відправляє назад своє значення (B).
  4. Обидві сторони закінчують цю частину, приймаючи задані значення та повторюючи операцію. Один обчислює b a mod y, інший обчислює a b mod y.

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

Рукостискання TLS 1.2 для DH

Тепер, коли ми дізналися, чим DH відрізняється від RSA, подивимося, як виглядає рукостискання TLS 1.2 на основі DH.

Знову ж таки, між цими двома підходами існує безліч подібностей. Ми будемо використовувати ECDHE для обміну ключами та ECDSA для автентифікації.

  1. Як і у випадку з RSA, клієнт починає з повідомлення «Client Hello», яке включає список шифронаборів, а також випадкове число клієнта.
  2. Сервер відповідає своїм повідомленням «Server Hello», яке включає обраний шифронабір і випадкове число сервера.
  3. Сервер надсилає свій SSL-сертифікат. Як і при TLS-рукостисканні RSA клієнт виконає серію автентифікації сертифіката, але, оскільки сам DH не може аутентифікувати сервер, необхідний додатковий механізм.
  4. Щоб провести аутентифікацію, сервер бере випадкові числа клієнта та сервера, а також параметр DH, який буде використовуватися для обчислення сеансового ключа, та шифрує їх за допомогою свого закритого ключа. Результат буде виконувати роль цифрового підпису: клієнт використовує відкритий ключ для перевірки підпису і те, що сервер є законним власником пари ключів, і відповість власним параметром DH.
  5. Сервер завершує цю фазу повідомленням "Server Hello Done".
  6. На відміну від RSA, клієнту не потрібно відправляти pre-master secret на сервер з використанням асиметричного шифрування, натомість клієнт та сервер використовують параметри DH, якими вони обмінялися раніше, щоб отримати pre-master secret. Потім кожен використовує pre-master secret, який він щойно розрахував для отримання однакового сеансового ключа.
  7. Клієнт надсилає повідомлення "Change Cipher Spec", щоб повідомити іншу сторону про свій перехід на шифрування.
  8. Клієнт відправляє фінальне повідомлення Finished, щоб повідомити, що він завершив свою частину рукостискання.
  9. Аналогічно, сервер надсилає повідомлення "Change Cipher Spec".
  10. Рукостискання завершується повідомленням Finished від сервера.

Переваги DHE перед RSA

Існує дві основні причини, з яких співтовариство криптографів вважає за краще використовувати DHE, а не RSA: досконала пряма секретність і відомі вразливості.

Досконала пряма секретність

Раніше ви, можливо, ставили питання, що означає слово «ефемерний» наприкінці DHE та ECDHE. Ефемерний буквально означає "недовговічний". І це допоможе зрозуміти досконалу пряму секретність (Perfect Forward Secrecy, PFS), яка є особливістю деяких протоколів обміну ключами. PFS гарантує, що сесійні ключі, якими обмінюються сторони, не можуть бути скомпрометовані, навіть якщо скомпрометовано закритий ключ сертифіката. Іншими словами, він захищає попередні сесії від вилучення та дешифрування. PFS отримала найвищий пріоритет після виявлення помилки Heartbleed. Це є основним компонентом TLS 1.3.


Вразливість обміну ключами RSA

Існують уразливості, які можуть використовувати заповнення ( padding), що використовується під час обміну ключами у старих версіях RSA (PKCS #1 1.5). Це один із аспектів шифрування. З RSA pre-master secret повинен бути зашифрований відкритим ключем та розшифрований закритим ключем. Але коли цей менший за довжиною pre-master secret міститься у більший відкритий ключ, він має бути доповнений. У більшості випадків, спробувавши вгадати заповнення і відправивши підроблений запит на сервер, ви помилитеся, і він розпізнає невідповідність і відфільтрує його. Але є велика ймовірність, що ви зможете відправити на сервер достатню кількість запитів, щоб вгадати правильне заповнення. Тоді сервер відправить помилкове повідомлення, що, в свою чергу, звузить можливе значення pre-master secret. Це дозволить зловмиснику розрахувати та скомпрометувати ключ.

Ось чому RSA був видалений на користь DHE у TLS 1.3.

Обмін ключами в рукостисканні TLS 1.3

У рукостисканні TLS 1.3 через обмежений вибір схем обміну ключами клієнт може успішно вгадати схему та відправити свою частину загального ключа під час початкового етапу (Client Hello) рукостискання.

RSA не була єдиною схемою обміну ключами, яка була видалена в TLS 1.3. Неефемерні схеми Діффі-Хеллмана також були ліквідовані, як і перелік недостатньо безпечних параметрів Діффі-Хеллмана.

Що мають на увазі під недостатньо безпечними параметрами? Не заглиблюючись у математику, складність Діффі-Хеллмана та більшості криптосистем з відкритим ключем – це складність розв'язання задач дискретного логарифму. Криптосистема має бути досить складною для обчислення, якщо невідомі вхідні параметри (випадкові числа клієнта та сервера), інакше вся схема виявиться марною. Схеми Діффі-Хеллмана, які могли забезпечити досить великі параметри, були виключені в TLS 1.3.

  1. На початку рукостискання TLS 1.3, знаючи, що використовуватиметься DHE-схема угоди про ключі, клієнт включає свою частину загального ключа на основі передбачуваної схеми обміну ключами у своє повідомлення «Client Hello».
  2. Сервер отримує цю інформацію і, якщо клієнт вгадав, повертає свою частину загального ключа в Server Hello.
  3. Клієнт та сервер обчислюють сеансовий ключ.

Це дуже схоже на те, що відбувається з DH в рукостисканні TLS 1.2, крім того, що TLS 1.3 обмін ключами відбувається раніше.

Замість ув'язнення

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

Принаймні поки що щось не піде не так, як потрібно.

За вимогами російського законодавства визнається лише використання TLS-з'єднань, встановлених за російським криптографічним алгоритмамГОСТ 28147-89, ГОСТ Р 34.10-94, ГОСТ Р 34.11-94 та ГОСТ Р 34.10-2001. Тому, якщо вам потрібне використання сайтів, які використовують шифрування за ГОСТ алгоритмами, необхідно встановити програму « КриптоПро CSP» .

В операційних системах Windowsвикористовується програма КриптоПро CSP - набір криптографічних утиліт для генерації електронного підпису, роботи із сертифікатами

Для встановлення КриптоПро CSP скористайтесь матеріалами з офіційного сайту:

Після встановлення КриптоПро CSP браузерперевіряє наявність та працездатність цієї програми.

Сайти, що вимагають шифрування ГОСТ TLS

Якщо веб-сайт запитує шифрування ГОСТ TLS, браузер перевіряє, чи встановлено програму КриптоПро CSP. Якщо програму встановлено, їй передається керування.

Приклади сайтів, що вимагають шифрування: www.gosuslugi.ru , сайти на домені .gov.ru , .kamgov.ru , .nalog.ru .

Якщо сайту немає в списку, запитується додаткове підтвердження. Якщо ви довіряєте сайту і з'єднання має бути зроблено за допомогою шифрування ГОСТ TLS, натисніть кнопку Продовжити .

Всі наші міркування будуються на тому, що використовується Windows XP або пізніша (Vista, 7 або 8), на які встановлені всі належні оновлення та «латки». Тепер ще одна умова: ми говоримо про останні на сьогодні версії браузерів, а не «сферичного Огнеліса у вакуумі».

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

А теорія нам каже, що хоч Internet Explorerвже з версії 8 підтримує TLS 1.1 і 1.2, під Windows XP і Vista ми його до цього не примусимо. Натискаємо: Сервіс/Властивості оглядача/Додатково та в розділі «Безпека» знаходимо: SSL 2.0, SSL 3.0, TLS 1.0... знайшли ще щось? Вітаю, у вас буде TLS 1.1/1.2! Не знайшли – у вас Windows XP або Vista, і в Редмонді вас вважають відсталим.

Так ось, галочки з усіх SSL - знімаємо, на всі наявні TLS - ставимо. Якщо доступний тільки TLS 1.0 - значить, так тому і бути, якщо більш актуальні версії - краще вибрати тільки їх, а з TLS 1.0 зняти галочку (і не дивуватися потім, що частина сайтів не відкриваються за HTTPS). Після цього тиснемо кнопки «Застосувати», «ОК».

З Opera простіше – вона влаштовує нам справжній бенкет з різних версійпротоколів: Інструменти/Загальні налаштування/Розширені/Безпека/Прото колеса безпеки. Що ми бачимо? Весь набір, з якого залишаємо галочки лише на TLS 1.1 і TLS 1.2, після чого тиснемо кнопку «Докладніше» і там прибираємо галочки з усіх рядків, окрім тих, що починаються з «256 bit AES» – вони наприкінці. На початку списку є рядок «256 bit AES ( Anonymous DH/SHA-256), з неї теж знімаємо галку. Тиснемо «ОК» і радіємо захищеності.

Втім, Opera має одну дивну властивість: якщо включений TLS 1.0, то при необхідності встановити захищене з'єднання вона відразу використовує саме цю версію протоколу, незалежно від підтримки сайтом більш актуальних. Типу, навіщо напружуватись – і так все чудово, все захищено. При включенні тільки TLS 1.1 і 1.2 спочатку буде спроба використання більш досконалої версії, і тільки якщо вона не підтримується сайтом, браузер переключиться на версію 1.1.

А ось сферичний Огнеліс Firefox нас зовсім не порадує: Інструменти/Налаштування/Додатково/Шифрування: все, що ми можемо - це відключити SSL, TLS доступний тільки у версії 1.0, робити нічого - його і залишаємо з галочкою.

Втім, погане пізнається у порівнянні: Chrome та Safari взагалі не містять налаштувань, який протокол шифрування використовувати. Наскільки відомо, Safari не підтримує TLS актуальніших версій, ніж 1.0 у версіях під ОС Windows, а оскільки випуск нових його версій під цю ОС припинено, то й не буде.

Chrome, як відомо, підтримує TLS 1.1, але, як і у випадку з Safari, відмовитися від використання SSL ми не можемо. Відключити в Chrome TLS 1.0 теж ніяк. А ось з реальним використанням TLS 1.1 – велике питання: його спочатку включили, потім вимкнули через проблеми в роботі і, наскільки можна судити, поки не включили. Тобто, підтримка є, але вона як би вимкнена, і включити її назад самому користувачеві - ніяк. Та ж історія і з Firefox - підтримка TLS 1.1 в ньому, насправді, є, але користувач поки що недоступна.

Резюме з вищенаведеного багатобуквію. Чим взагалі загрожує використання застарілих версій протоколів шифрування? Тим, що хтось сторонній влізе у ваше захищене з'єднання з сайтом та отримає доступ до всієї інформації «туди» та «звідти». У практичному аспекті – отримає повний доступдо ящика електронної пошти, акаунту у системі клієнт-банк тощо.

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

В іншому випадку – вибору немає: тільки Opera і тільки TLS 1.2 (TLS 1.1 – це лише вдосконалення TLS 1.0, яке частково успадкувало його проблеми з безпекою). Втім, наші улюблені сайти можуть і не підтримувати TLS 1.2:(

TLS є послідовником SSL, протоколу, який дає надійне та безпечне з'єднанняміж вузлами в Інтернеті Його використовують при розробці різних клієнтів, включаючи браузери та клієнт-серверні програми. Що таке TLS в Internet Explorer?

Трохи про технологію

Усі підприємства та організації, які займаються фінансовими операціями, використовують даний протоколдля виключення прослуховування пакетів та здійснення несанкціонованого доступу зловмисниками. Ця технологія створена для захисту важливих з'єднань від атак зловмисників.

Здебільшого у своїй організації використовують вбудований браузер. В деяких випадках - Mozilla Firefox.

Увімкнення та вимкнення протоколу

На деякі сайти іноді неможливо зайти через відключення підтримки технологій SSL і TLS. В браузері спливає відповідне повідомлення. Отже, як же включити протоколи, щоб користуватися безпечним зв'язком?
1.Відкрийте Панель керування через Пуск. Ще один спосіб: відкрити Експлорер та натиснути на іконку шестерні у правому верхньому кутку.

2.Зайдіть у розділ «Властивості браузера» та відкрийте блок «Додатково».

3.Поставте галочки поруч із «Використовувати TLS 1.1 та TLS 1.2».

4.Клікніть по ОК для збереження внесених змін. Якщо ви захочете відключити протоколи, що вкрай не рекомендується робити, особливо якщо ви користуєтеся інтернет-банкінгом, зніміть позначки з цих пунктів.

Чим відрізняються 1.0 від 1.1 та 1.2? 1.1 – це лише трохи вдосконалений варіант TLS 1.0, який частково успадкував його недоопрацювання. 1.2 є найбезпечнішою версією протоколу. З іншого боку, не всі сайти можуть відкриватися за цієї включеної версії протоколу.

Як відомо, месенджер Скайп безпосередньо пов'язаний із Internet Explorer як компонентом Windows. Якщо у вас не буде позначено галочкою протокол TLS у налаштуваннях, то зі Скайпом можуть виникнути проблеми. Програма просто не зможе з'єднатися із сервером.

Якщо під час налаштування Інтернет Експлорер вимкнено підтримку TLS, всі функції програми, пов'язані з мережею, не працюватимуть. Більше того, від цієї технології залежить збереження ваших даних. Не нехтуйте її, якщо виконуєте фінансові операціїу цьому браузері (купівлі в інтернет-магазинах, переказ грошей через інтернет-банкінг або електронний гаманець тощо).



Завантаження...
Top