HTTPS і TLS: як насправді працює замок у браузері
Замок у браузері означає, що трафік зашифровано за допомогою TLS. Дізнайтеся, як працюють сертифікати HTTPS, які версії TLS важливі та що насправді доводить цей замок.
Зміст
Що таке HTTPS — і чим він не є
Коли ви заходите на сайт і бачите в адресному рядку https:// разом з іконкою замка, перед вами HTTPS — HyperText Transfer Protocol Secure. Це означає, що з'єднання між вашим браузером і веб-сервером зашифроване.
Але ось що дивує більшість людей: HTTPS не означає, що сайт надійний або легітимний. Фішинговий сайт може — і часто дійсно використовує — HTTPS. Замок лише підтверджує, що ваше з'єднання з цим сервером зашифроване, але не те, що сервер належить саме тому, кому ви думаєте.
HTTPS працює на основі TLS (Transport Layer Security) — криптографічного протоколу. TLS прийшов на зміну старішому SSL, хоча ці терміни досі використовують як синоніми. Якщо хтось каже «SSL-сертифікат» — майже напевно мається на увазі TLS-сертифікат.
TLS-рукостискання: як встановлюється захищене з'єднання
Кожного разу, коли браузер підключається до HTTPS-сайту, він виконує TLS-рукостискання за лічені мілісекунди. Ось що відбувається:
- Client Hello: браузер надсилає серверу повідомлення з підтримуваними версіями TLS і наборами шифрів.
- Server Hello: сервер відповідає, вибираючи узгоджену версію TLS і набір шифрів, та надсилає свій цифровий сертифікат.
- Перевірка сертифіката: браузер звіряє сертифікат зі списком довірених центрів сертифікації (CA), вбудованих в ОС і браузер. Він перевіряє, що сертифікат дійсний, не прострочений і виданий для правильного домену.
- Обмін ключами: браузер і сервер виконують обмін ключами (за допомогою алгоритмів на кшталт ECDHE), щоб отримати спільний сесійний ключ — не передаючи сам ключ по мережі.
- Початок зашифрованої комунікації: всі подальші дані шифруються симетрично за допомогою сесійного ключа.
Геніальність підходу в тому, що навіть якщо хтось записав кожен пакет вашого TLS-рукостискання, вивести з нього сесійний ключ неможливо — це і є пряма секретність (forward secrecy).
Що таке TLS-сертифікат?
TLS-сертифікат — це цифровий документ, що підтверджує ідентичність сервера. Він містить:
- Доменне ім'я, для якого він виданий
- Відкритий ключ сервера
- Видавця — центр сертифікації
- Термін дії
- Цифровий підпис від CA
Центри сертифікації — це організації, яким довіряють підтверджувати, що домен контролює саме та особа, яка заявляє про право на нього. Існує три рівні перевірки:
- Перевірка домену (DV): CA підтверджує, що ви контролюєте домен. Швидко і дешево (часто безкоштовно через Let's Encrypt). Особу не перевіряють.
- Перевірка організації (OV): CA верифікує існування організації та право власності на домен. Вища довіра, складніший процес.
- Розширена перевірка (EV): ретельна перевірка юридичної особи. Раніше назва компанії відображалася зеленим у браузерах — більшість браузерів скасували цей візуальний індикатор.
Для більшості цілей сертифікати DV (наприклад, від Let's Encrypt) забезпечують надійне шифрування. Рівень перевірки не впливає на стійкість шифрування — лише на обсяг ідентифікації.
Від чого захищає TLS
TLS забезпечує три властивості безпеки:
- Конфіденційність: дані зашифровані і нечитабельні для того, хто перехоплює трафік.
- Цілісність: MAC (Message Authentication Code) гарантує, що дані не можна змінити під час передачі непомітно.
- Автентифікація: сертифікат підтверджує, що ви спілкуєтесь із потрібним сервером (якщо ви довіряєте ланцюжку CA).
Це робить TLS дуже ефективним проти пасивного підслуховування — той, хто прослуховує трафік у публічній Wi-Fi-мережі, не зможе прочитати ваш HTTPS-трафік.
Від чого TLS не захищає
- Скомпрометовані пристрої: якщо на вашому пристрої є шкідливе ПЗ, воно може перехоплювати дані до шифрування або після розшифрування.
- Шкідливі сайти з дійсними сертифікатами: легітимний сертифікат на шахрайському сайті означає, що ваш трафік до нього зашифрований — але вас усе одно обманюють.
- Компрометація центру сертифікації: якщо CA зламано або він видав підроблені сертифікати, зловмисники можуть видавати себе за легітимні сайти. Це вже траплялося (наприклад, DigiNotar у 2011 році).
- Вміст на сервері: TLS захищає дані лише під час передачі. Те, що сервер робить з вашими даними після їх отримання, — зовсім інша тема.
Версії TLS і чому це важливо
Не всі версії TLS однакові:
- TLS 1.0 і 1.1: застарілі. Мають відомі вразливості. Жоден сучасний браузер їх не приймає.
- TLS 1.2: широко підтримується, загалом безпечний при правильному налаштуванні.
- TLS 1.3: найактуальніша версія. Швидше рукостискання, видалено застарілі набори шифрів, обов'язкова пряма секретність. Використовуйте саме її при налаштуванні сервера.
Перевірити версію TLS на сайті можна, натиснувши на замок у браузері та переглянувши деталі сертифіката, або за допомогою інструментів на кшталт тесту серверів SSL Labs (ssllabs.com/ssltest).
Практичні висновки
- Завжди переконуйтесь, що сайти з чутливими даними (банківські, магазини, облікові записи) використовують HTTPS — дивіться на замок
- Не вважайте сайт із замком захищеним від шахрайства — уважно перевіряйте доменне ім'я
- HTTPS не захищає ваші дані після того, як вони потрапляють на сервер
- Перевіряйте налаштування TLS свого сайту за допомогою SSL Labs
- Надавайте перевагу сайтам із TLS 1.3 і заголовком HSTS (який примусово вмикає HTTPS-з'єднання)