Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 Контент вільний від AI. Цей пост на 100% написаний людиною, як і все на моєму блозі. Насолоджуйтесь!

24.12.2022

Основи TLS - як працює HTTPS

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

Архітектура інтернету така, що кожний протокол розв’язує задачі конкретного рівня абстракції, та спирається на інші протоколи для більш базових потреб. HTTP займається вебсторінками. Для того, щоб відправити запит HTTP та отримати назад сторінку, необхідна наявність сталого каналу комунікації. Тож HTTP побудований на базі протоколу TCP, який і створює такий канал між клієнтом та сервером. (Без зайвих деталей скажу, що існують і інші режими комунікації, залежно від потреб.)

Чого протокол TCP не дає, так це жодних гарантій безпеки. Дані пересилаються у відкритому вигляді; крім того, автентичність сервера не перевіряється.

Для надання цих двох гарантій існує протокол TLS. Він ніби “апгрейдить” підключення TCP - функціонально це той самий сталий канал, але тепер вже зашифрований. Так от, HTTPS - це абсолютно той же самий HTTP - єдина різниця в тому, що запити проходять по зашифрованому каналу TLS. Та це гарний приклад: так само працюють й інші протоколи, якім потрібне шифрування, наприклад, SMTP, про який я вже писав.

Щоб зробити з підключення TCP підключення TLS, потрібна процедура рукостискання. Перше, що присилає сервер клієнту після підʼєднання — це свій сертифікат. Клієнт аутентифікує сертифікат за допомогою своїх кореневих сертифікатів, як я писав раніше. Головне, що у сертифікаті сервера зазначено його доменне імʼя, та воно обовʼязково має збігатися з тим, куди відбувається підключення.

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

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

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