Рукостискання

Як тільки ви почали читати комікс, ваш браузер відобразив зелений замочок в адресному рядку браузера.

Що ж зараз сталось?

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

Але спочатку їм потрібно узгодити, як спілкуватись безпечно.

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

Цей процес перемовин між браузером і сервером зветься 'рукостисканням'.

Це відбувається дуже швидко. Ми покажемо вам, як це працює.

Пташка-браузер буде вашим браузером.
Песик-компуктер буде нашим сервером.

Нумо, друзі, зробіть це!

Готові? Ось як 'рукостискання' буде виглядати в сповільненій зйомці.

Зліва хлоп
Справа хлоп
Вертикальне хоп
Горизонтальне хоп і покрути
Лоскітки

Готово!

Давай ще раз, але швидше.

Зліва хлоп - Справа хлоп - Хоп - Хоп і покрути - Лоскітки.

Щ-Е Р-А-З!

Стоп!

Давайте розберемо все. Крок за кроком.

Перший крок: Зліва хлоп. Або ж привітання зі сторони клієнта.

Я надсилаю список SSL/TLS версій і алгортмів шифрування, з якими можу працювати Песику-компуктеру.

А по-модному, список алгоритмів шифрування називається 'набір шифрів' ('cipher suite').

Тепер ти як справжній гік.

SSL та TLS протоколи з часом еволюціонували (незабаром ми про це поговоримо).

І тоді я чекаю на відповідь від Песика-компуктера.

Крок два: Справа хлоп. Або ж привітання зі сторони сервера.

Я вибираю найкращі SSL/TLS та алгоритми шифрування серед тих, які надіслав мені браузер, також зважаючи й на мої уподобання.

Я відповідаю моїм сертифікатом, який містить мій публічний ключик, щоб можна було перевірити, хто я.

Крок три: Вертикальне хоп. Або ж обмін ключиками клієнта.

Я перевіряю сертифікат Песика-компуктера, щоб перевірити, що він справжній.

Я генерую 'попередній мастер ключик' ('pre-master key'), щоб ми могли використати його пізніше, коли створимо унікальний ключ.

Я шифрую цей попередній мастер ключик за допомогою публічного ключика Песика-компуктера і тоді надсилаю його Песику.

Крок чотири: Горизонтальне хоп і покрути. Або ж зміна специфікації шифру.

Я використовую свій приватний ключик, щоб дешифрувати попередній мастер ключик.

Досі уся комунікація між ними була відкритою. Жодне повідомлення не було захищене.

Вони використали асиметричні ключики (публічний та приватний), щоб зашифрувати попередній мастер ключик, тому ніхто не може підглянути за ним.

Тепер вони разом згенерували один і той же 'спільний секрет' ('shared secret'), який вони збираються використовувати, як симетричний ключик.
І Пташка-браузер надсилає тестове повідомлення.
Песик-компуктер відповідає.
Крок п'ять: Лоскітки. Або ж тепер все захищено.
Тепер усі дані, які передаються між Пташкою-браузером і Песиком-компуктером захищені до кінця сесії.

Паролі, дані банківських карт, взагалі будь-що.

Легко ж, правда?

Наступного разу, коли відкриваєте сайт через HTTPS, потисни ручку браузеру цим секретним рукостисканням.

Далі у 'як працює HTTPS'...

HTTPS, SSL, TLS, о-йой! Скрутили голову ці словечки. Що ж вони означають? Хіба вони не означають одне і те ж?

Продовжити читання