Протокол TLS шифрує інтернет-трафік усіх видів, тим самим роблячи безпечними спілкування та продаж в інтернеті. Ми розповімо про те, як протокол працює та що на нас чекає в майбутньому.
Що таке SSL
SSL, або шар захищених сокетів, була оригінальною назвою протоколу, який розробила компанія Netscape у середині 90-х. SSL 1.0 ніколи не був публічно доступним, а у версії 2.0 були серйозні недоліки. Протокол SSL 3.0, випущений в 1996, був повністю перероблений і поставив тон наступної стадії розвитку.
Що таке TLS
Коли наступну версію протоколу випустили 1999 року, її стандартизувала спеціальна робоча група проєктування мережі Інтернет і дала їй нову назву: захист транспортного рівня, або TLS. Як говориться в TLS-документації, «різниця між цим протоколом та SSL 3.0 не є критичною». TLS і SSL формують серію протоколів, що постійно оновлюються, і їх часто об’єднують під назвою SSL/TLS.
Протокол TLS шифрує інтернет-трафік будь-якого виду. Найпоширеніший вид — вебтрафік. Ви знаєте, коли ваш браузер встановлює з’єднання TLS — якщо посилання в адресному рядку починається з «https».
TLS також використовується іншими програмами, наприклад, у пошті та системах телеконференцій.
Як працює TLS
Шифрування необхідно, щоб безпечно спілкуватися в інтернеті. Якщо ваші дані не шифруються, будь-хто може проаналізувати їх та прочитати конфіденційну інформацію.
Найбезпечніший метод шифрування — це асиметричне шифрування. Для цього потрібно 2 ключі, 1 публічний та 1 приватний. Це файли з інформацією, найчастіше дуже великі числа. Механізм складний, але якщо просто — ви можете використовувати публічний ключ, щоб шифрувати дані, але вам потрібен приватний ключ, щоб розшифровувати їх. Два ключі пов’язані з допомогою складної математичної формули, яку складно хакнути.
Можна подати публічний ключ як інформацію про розташування закритої поштової скриньки з отвором, а також приватний ключ як ключ, який відкриває скриньку. Будь-хто, хто знає, де знаходиться ящик, може покласти туди листа. Але щоб прочитати його, людині потрібний ключ, щоб відкрити скриньку.
Оскільки в асиметричному шифруванні використовуються складні математичні розрахунки, необхідно багато обчислювальних ресурсів. TLS вирішує цю проблему, використовуючи асиметричне шифрування лише на початку сесії, щоб зашифрувати спілкування між сервером та клієнтом. Сервер та клієнт повинні домовитися про один ключ сесії, який вони будуть удвох використовувати, щоб зашифрувати пакети даних.
Процес, згідно з яким клієнт і сервер домовляються про ключ сесії, називається рукостисканням. Це момент, коли два комп’ютери, що спілкуються, представляються друг другу.
Процес TLS-рукостискання
Процес TLS-рукостискання досить складний. Кроки внизу відображають процес загалом, щоб ви розуміли, як це працює.
- Клієнт зв’язується із сервером та запитує безпечне з’єднання. Сервер відповідає списком шифрів — алгоритмічним набором для створення зашифрованих з’єднань — яким він знає, як користуватися. Клієнт порівнює список зі своїм списком шифрів, що підтримуються, вибирає відповідний і дає серверу знати, який вони будуть використовувати вдвох.
- Сервер надає свій цифровий сертифікат — електронний документ, підписаний третьою стороною, який підтверджує автентифікацію сервера. Найважливіша інформація в сертифікаті — це публічний ключ до шифру. Клієнт підтверджує справжність сертифіката.
- Використовуючи публічний ключ сервера, клієнт і сервер встановлюють ключ сесії, який вони обидва будуть використовувати протягом всієї сесії, щоб шифрувати спілкування. І для цього є кілька методів. Клієнт може використовувати публічний ключ, щоб шифрувати довільне число, яке потім відправляється на сервер для розшифрування, і обидві сторони потім використовують це число, щоб встановити ключ сесії.
Ключ сесії дійсний лише протягом однієї безперервної сесії. Якщо з якоїсь причини спілкування між клієнтом та сервером перерветься, потрібно буде нове рукостискання, щоб встановити новий ключ сесії.
Вразливості протоколів TLS 1.2 та TLS 1.2
TLS 1.2 — найпоширеніша версія протоколу. Ця версія встановила вихідну платформу опцій шифрування сесій. Однак, як і деякі попередні версії протоколу, цей протокол дозволяв використовувати старішу техніку шифрування, щоб підтримувати старі комп’ютери. На жаль, це призвело до вразливостей версії 1.2, оскільки ці старіші механізми шифрування стали вразливішими.
Наприклад, протокол TLS 1.2 став особливо вразливим до атак типу активного втручання у з’єднання, у яких хакер перехоплює пакети даних серед сесії та відправляє їх після прочитання чи зміни. Багато з цих проблем виявилися за останні 2 роки, тому стало необхідним терміново створити оновлену версію протоколу.
TLS 1.3
Версія 1.3 протоколу TLS, яка скоро буде фіналізована, вирішує безліч проблем із уразливістю тим, що відмовляється від підтримки застарілих систем шифрування.
У новій версії є сумісність із попередніми версіями: наприклад, з’єднання відкотиться до версії TLS 1.2, якщо одна зі сторін не зможе використовувати новішу систему шифрування в списку дозволених алгоритмів протоколу версії 1.3. Однак при атаці типу активного втручання у з’єднання, якщо хакер примусово спробує відкотити версію протоколу до 1.2 посеред сесії, ця дія буде помічена, і з’єднання перерветься.
Як увімкнути підтримку TLS 1.3 у браузерах Google Chrome та Firefox
Firefox і Chrome підтримують TLS 1.3, але ця версія не включена за промовчанням. Причина в тому, що вона існує поки що тільки в чорновому варіанті.
Mozilla Firefox
Введіть about:config в адресний рядок браузера. Підтвердьте, що ви розумієте ризики.
- Відкриється редактор налаштувань Firefox.
- Введіть у пошуку security.tls.version.max
- Змініть значення на 4, зробивши подвійне клацання мишею на нинішнє значення.
Google Chrome
- Введіть chrome://flags/ в адресний рядок браузера, щоб відкрити панель експериментів.
- Знайдіть опцію #tls13-variant
- Натисніть меню і поставте Enabled (Draft).
- Перезапустіть браузер.
Як перевірити, що ваш браузер використовує версію 1.2
Нагадуємо, що версія 1.3 ще не використовується привселюдно. Якщо ви не бажаєте
Використовуючи чорновий варіант, ви можете залишитися на версії 1.2.
Щоб перевірити, чи ваш браузер використовує версію 1.2, зробіть ті ж кроки, що й в інструкціях вище, і переконайтеся, що:
- Для Firefox значення security.tls.version.max дорівнює 3. Якщо воно нижче, поміняйте його на 3, зробивши подвійне клацання мишею на нинішнє значення.
- Для Google Chrome: натисніть меню браузера — виберіть Settings — виберіть Show advanced settings — опустіться до розділу System і натисніть Open proxy settings…:
- У вікні, натисніть на вкладку Security і перевірте, щоб для поля Use TLS 1.2 стояла галочка. Якщо не варто — поставте та натисніть OK:
Зміни набудуть чинності після перезавантаження комп’ютера.
Швидкий інструмент для перевірки версії протоколу SSL/TLS браузера
Зайдіть до онлайн-інструменту перевірки версії протоколу SSL Labs. Сторінка покаже в реальному часі використовувану версію протоколу та чи піддається браузер якимось вразливостям.
Джерела: переклад статті з видання CSO та переклад статті з технологічного блогу Ghacks