Використання Інтернет-мережі для зберігання/передавання платіжних та інших конфіденційних даних вимагає наявність надійного каналу зв'язку між комп'ютером користувача та веб-сервером. Утворення такого каналу можливе в разі застосування протоколів шифрування та аутентифікації даних, одним з яких є SSL/TLS. Розглянемо його основні характеристики і можливості, а також принципи застосування на практиці.
Загальні відомості
SSL/TLS належить до класу криптографічних протоколів, покликаних забезпечити безпечний обмін даними між учасниками мережі на основі застосування криптографічних алгоритмів і перетворень.
Спочатку було розроблено SSL (Secure Sockets Layer), останню версію SSL 3.0 якого було опубліковано в 1996 р., але вже за два десятки років було визнано застарілою через наявність багатьох вразливостей і недосконалості архітектури.
На базі SSL 3.0 було створено протокол TLS (Transport Layer Security), актуальна версія якого на даний момент часу - TLS 1.3. Оскільки абревіатура SSL у колі фахівців набула широкого поширення, її все ще використовують, хоча технічна реалізація, як правило, ґрунтується вже на TLS, як більш надійному варіанті.
На основі використання SSL було створено HTTPS, який "упаковує" дані, що передаються, у "криптографічний формат" SSL. Для сервера як ідентифікатор застосування шифрування в протоколі гіпертексту виступає номер використовуваного ним порту - 443. Це спрощує налагодження зв'язку при створенні нового з'єднання між сервером і клієнтом.
SSL є сполучною ланкою між одним із прикладних протоколів (HTTP, TELNET, FTP тощо) і протоколом транспортного рівня, виконуючи водночас роль своєрідного фільтра, що захищає дані.
SSL, як і будь-який інший криптографічний протокол, покликаний виконувати такі основні функції:
- Формування, обмін і поділ ключів;
- Автентифікація взаємодіючих сторін;
- Забезпечення конфіденційності та цілісності даних;
- Забезпечення цілісності з'єднання.
Для реалізації кожної з перерахованих функцій застосовується низка алгоритмів.
Для роботи з ключами в основному використовують алгоритми Diffie-Hellman, SRP, ECDH і вже застарілий RSA.
Для аутентифікації - ECDSA, RSA та деякі інші.
Для шифрування - DES, RC4, AES та інші.
Для хеш-функцій, які забезпечують перевірку цілісності даних - MD5, SHA.
Процес утворення захищеного каналу із сервером
Утворенню захищеного каналу між клієнтом і сервером передує процедура підтвердження зв'язку, квітування SSL або, як кажуть, "рукостискання", під час якої відбувається узгодження параметрів встановлення захищеного з'єднання. Як клієнт зазвичай виступає браузер користувача, який заходить на веб-сайт, розміщений на сервері. Наведемо тут основні кроки цієї процедури.
- З боку клієнта надходить запит до сервера на встановлення захищеного з'єднання;
- Серверу передається інформація про технології шифрування, які доступні клієнтській стороні;
- Сервер повідомляє клієнту про те, які з доступних клієнту алгоритмів кодування даних були ним обрані;
- Сервер передає цифровий сертифікат разом із відкритим ключем для можливості його автентифікації;
- На клієнтській стороні відбувається перевірка переданого сертифіката на предмет його автентичності на основі наявних на стороні клієнта кореневих сертифікатів перевірених центрів сертифікації;
- У разі успішної перевірки генерується загальний секретний сеансовий ключ, який необхідний для кодування сесії. Ключ може бути згенерований з використанням одного з наведених вище алгоритмів, наприклад, RSA або Діффі-Хеллмана, як найбільш надійного.
У разі успішного завершення зазначеного процесу між його учасниками відбувається встановлення безпечного з'єднання з утворенням каналу, готового для передавання закодованих даних із використанням методів симетричного шифрування. Канал існуватиме доти, доки з'єднання не буде завершено.
У разі якщо сторони з якихось причин "не домовляться", з'єднання не буде встановлено, і процес буде завершено з видачею відповідної помилки.
Використання цифрових сертифікатів
Щоб переконатися в автентичності власника відкритого ключа, протокол SSL/TLS задіює можливості цифрового сертифіката, який може бути як самопідписаним, так і виданим одним із довірених центрів сертифікації. Цей документ може "працювати" на рівні домену (Domain Validation), організації (Organization Validation) або проводити повну або розширену перевірку (Extended Validation).
З'ясувати, який тип сертифіката використовується для того чи іншого сайту, можна, клацнувши на зображення замка, зображеного ліворуч від адресного рядка браузера.
Рівень використовуваного на сайті сертифіката дає змогу оцінити ступінь довіри до нього з боку користувачів. Тому дуже часто банківські установи використовують сертифікати найвищого рівня - Extended Validation. У цьому разі сертифікаційні центри здійснюють не тільки формальну перевірку домену, а й ідентифікацію його власника - юридичної або фізичної особи, що значно підвищує рівень довіри до сайту.