Віктор Турський про програмування / навігатор

концепції / https-tls

HTTPS і TLS

Канал раз у раз повертається до прямолінійної тези: HTTPS гарантує зашифрований канал і сертифікат, що відповідає URL, — і нічого більше. У watch party по Google I/O він пояснює, чому Chrome замінив замочок нейтральною іконкою-«тюнером»: замочок «нічого не каже про надійність вмісту», а фішингові сайти отримують точнісінько такий самий замочок, який користувачі помилково читають як знак довіри (watch party Google I/O 2023). Q&A добиває тему: у мережі під контролем атакувальника HTTPS ламається кількома способами — даунгрейд до HTTP з фальшивою сторінкою, редирект на схожий домен із власним валідним HTTPS, що проксіює ваші запити, підсунута установка підставного сертифіката CA («для інтернету в кафе потрібен цей сертифікат») для MITM усього HTTPS, або браузерні 0-day на кшталт Spectre/Meltdown із JS. HSTS блокує даунгрейд і редирект, але великі сайти на кшталт Rozetka його не виставляють; VPN закриває весь цей клас атак (чи захистить вас HTTPS).

З механіки: випуск про затримки показує, що TLS-handshake (Hello, сертифікат, обмін ключами в кожен бік) додає ~200 мс, тож реальний HTTPS-запит виміряно на ~800 мс проти ~400 мс за звичайний HTTP (швидкість світла і затримка сайтів). Випуск про криптографію пояснює гібридний дизайн — симетричний шифр для даних, асиметрія для обміну ключем — і зазначає, що сучасний HTTPS перейшов з RSA-обміну ключами на Diffie-Hellman заради Perfect Forward Secrecy, підсвічуючи досі не розв'язаного «слона в кімнаті» — як безпечно роздати публічний ключ, для чого й існують сертифікати та ієрархія CA (асиметричне шифрування і цифрові підписи). Випуск про глибоке навчання бере TLS як приклад забування: глядач прочитав цілу книжку про TLS і за два місяці забув деталі протоколу, але гілка лишилася — ланцюжки сертифікатів, симетричний сесійний ключ, forward secrecy гарантована лише з Diffie-Hellman (вчитися глибоко і пам'ятати).

Ще два ракурси: відкликання сертифікатів — бойова історія за випуском про фільтр Блума: OCSP додавав окремий запит на кожен сайт, тож браузери від нього відмовилися, натомість скоротили строк життя сертифікатів (Let's Encrypt: 3 місяці); Chrome возить лише топ ~1% відкликань (600 KB), лишаючи малі сайти беззахисними, а CRLite у Firefox покриває всі (фільтр Блума у Firefox). І про Basic Auth: облікові дані летять у Base64 (читабельно) з кожним запитом — «єдине, що мене захищає, — це HTTPS; сам Basic Auth не додає нічого» (як працює Base64).

Розібрано у відео

Повʼязане

Що захищає твої дані й гроші від хакерів? Асиметричне шифрування та цифровий підпис — машинерія обміну ключами під капотом TLS Шифрування — симетричне vs асиметричне, деталі, які TLS поєднує Фільтр Блума — структура, якою Firefox перевіряє відкликання DNS (Domain Name System) — підмінений DNS ловиться перевіркою сертифіката DHCP (Dynamic Host Configuration Protocol) — атаки у ворожій мережі, які TLS переживає або ні Затримка і швидкість світла — handshake як велика складова затримки Практики безпеки — модель загроз «чи захистить вас HTTPS»