Шифрування з відкритим ключем є основою сучасної безпеки Інтернету. У центрі цієї системи лежить Secure Sockets Layer (SSL). Ця технологія була розроблена компанією Netscape для забезпечення безпечної взаємодії між браузерами та веб-серверами. Однак спочатку вона не призначалася для використання як єдине і постійне рішення.

Сьогодні термін SSL вважається застарілим. Фактичним стандартом є Transport Layer Security (TLS).

Вам не потрібно бути програмістом, щоб помітити різницю у повсякденному веб-серфінгу. Вона знаходиться прямо в адресному рядку. Зверніть увагу на букву «s» у https.

Раніше ви бачили http. Тепер ви бачите https.

Зазвичай поряд з’являється невеликий значок замка. Іноді він знаходиться в рядку стану внизу вікна, а іноді в полі адреси URL. Сенс однаковий: ваші дані зашифровані. Якщо ви входите до банківського облікового запису або використовуєте PayPal, ви повинні бачити цей замок. Ваші платіжні реквізити не повинні передаватися у відкритому вигляді.

“TLS і SSL значною мірою покладаються на центри сертифікації для автентифікації.”

Але як саме браузер дізнається, що веб-сайт безпечний? Не магія. Це процес рукостискання з центром сертифікації (Certificate Authority, CA).

Коли ви запитуєте захищену сторінку, процес запускається. Браузер додає букву “s” до “http”, а потім перевіряє три конкретні умови перед завантаженням сторінки:

  1. Довіра : Чи видається сертифікат організацією, якій довіряє браузер?
  2. Діяльність : Чи активний сертифікат на даний момент і чи не минув його термін?
  3. Відповідність : Чи дійсно сертифікат належить сайту, який ви відвідуєте?

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

Рукостискання, яке захищає ваші дані

Саме тут відбувається справжній захист.

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

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

Натомість вони використовують гібридний підхід.

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

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

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

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

Коли сесія закінчується, ключ знищується. Він відкидається. Зникає.

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

“Після завершення сесії кожен комп’ютер відкидає симетричний ключ, використаний для цієї сесії.”

Це називається прямою таємністю (forward secrecy). Або принаймні її базовою версією. Це означає, що навіть якщо хакер викраде один ключ, він марний для чогось ще. Кожна сесія ізольована. Кожна сесія має свій унікальний замок.

Чому це важливо?

Тому що це обмежує збитки. Якщо HTTPS-з’єднання перехоплено, зловмисник отримує лише дані цієї однієї сесії. Він не отримує історії ваших паролів. Він не отримує ваші старі листи. Він не отримує ключа від усього королівства.

Ключ тимчасовий. Сесія ефемерна. Захист безперервний.

Це танець створення та знищення. Ключі народжуються. Дані течуть. Ключі вмирають.

І ви навіть не помічаєте цього.