ПРОТОКОЛИ SSL І TLS
Протокол Secure Sockets Layer (SSL) був розроблений корпорацією Netscape Communications для забезпечення аутентифікації, цілісності і секретності трафіку на сеансовому рівні моделі OSI (з точки зору чотирирівневої моделі стека протоколів TCP / IP - на прикладному рівні). У січні 1999 року на зміну SSL v3.0 прийшов протокол TLS vl.O (Transport Layer Security) остання версія TLS v.1.2 описується в RFC 5246. З точки зору виконуваних дій, відмінності між цими протоколами SSL і TLS досить невеликі, в той Водночас, вони несумісні один з одним [11].
SSL забезпечує захищене з'єднання, яке можуть використовувати протоколи більш високого рівня - HTTP, FTP, SMTP і т. Д. Найбільш широко він використовується для захисту даних, що передаються по HTTP (режим HTTPS). Для цього повинні використовуватися SSL-совместімис web-ссрвср і браузер.
Протокол предусмагрівает два етапи взаємодії клієнта і сервера:
- 1) встановлення SSL-ссссіі (процедура «рукостискання», від англ, «handshake»), на цьому етапі може проводитися аутентифікація сторін з'єднання, розподіл ключів сесії, визначаються настроюються параметри з'єднання;
- 2) захищене взаємодія.
Протоколом SSL використовуються наступні криптоалгоритми:
- - асиметричні алгоритми RSA і Діффі-Хеллмана;
- - алгоритми обчислення хеш-функцій MD5 і SHA1;
- - алгоритми симетричного шифрування RC2, RC4, DES, Tri- pleDES, IDEA.
У протоколі SSL v 3.0 і TLS перелік підтримуваних алгоритмів є розширюваним. Для підтвердження автентичності відкритих ключів використовуються цифрові сертифікати формату Х.509.
Протокол SSL дозволяє проводити наступні варіанти аутентифікації сторін взаємодії:
- - аутентифікація сервера без аутентифікації клієнта (одностороння аутентифікація) - це найбільш часто використовуваний режим, що дозволяє встановити справжність сервера, але не проводить перевірки клієнта (адже подібна перевірка вимагає і від клієнта наявності сертифіката);
- - взаємна аутентифікація сторін (перевіряється справжність як клієнта, так і сервера);
- - відмова від аутентифікації - повна анонімноегь; в даному випадку SSL забезпечує шифрування каналу і перевірку цілісності, але нс може захистити від атаки шляхом підміни учасників взаємодії.
Розглянемо більш докладно процедуру рукостискання в режимі аутентифікації сервера без аутентифікації клієнта. Вона включає наступні кроки [13].
- 1. Клієнт посилає серверу запит на встановлення захищеного з'єднання, в якому передає, зокрема, такі параметри:
- - дату і поточний час;
- - сгенерированную клієнтом випадкову послідовність (RAND_CL);
- - перелік підтримуваних клієнтом алгоритмів шифрування, хешування і стиснення (якщо стиск використовується).
- 2. Сервер обробляє запит від клієнта і передасть йому узгоджений набір параметрів:
- - ідентифікатор SSL-сесії;
- - ідентифікатори криптографічних алгоритмів з числа запропонованих клієнтом, які будуть використовуватися в даній сесії (якщо з якої-небудь причини запропоновані алгоритми або їх параметри не задовольняють вимогам сервера, сесія закривається);
- - цифровий сертифікат сервера формату Х.509;
- - випадкову послідовність (RANDSERV).
- 3. Клієнт перевіряє отриманий сертифікат і відповідність ролі ключа його призначенням, наведеним у Сертифікаті. При негативному результаті перевірки сесія закривається, а при позитивному клієнт виконує наступні дії:
- - генерує випадкову 48-байтную послідовність, звану Pre_MasterSecret, призначену для розрахунку загального секретного ключа;
- - шифрує значення Pre_MasterSecret з використанням відкритого ключа сервера, взятого з сертифіката, і посилає криптограму сервера;
- - за допомогою узгодженої з сервером хеш-функції формує загальний секретний ключ (MasterSecret), використовуючи в якості параметрів послідовність Prc MastcrSecrct, послану раніше сервера випадкову послідовність RAND CL і отриману від нього випадкову послідовність RAND SERV;
- - використовуючи значення MasterSecret, обчислює криптографічні параметри SSL-сесії: формує загальні з сервером сеансу секретні ключі для симетричного шифрування і обчислення хеш функцій;
- - переходить в режим захищеної взаємодії.
- 4. Сервер, використовуючи свій секретний ключ, розшифровує отримане значення Pre_MasterSecret і виконує ті ж операції, що і клієнт:
- - за допомогою узгодженої з клієнтом хеш-функції формує загальний секретний майстер-ключ (MasterSecret), використовуючи в якості параметрів значення Pre_MasterSecret, а також послану клієнту випадкову послідовність RANDSERV і отриману від нього випадкову послідовність RAND_CL;
- - використовуючи значення MasterSecret, обчислює криптографічні параметри SSL-сесії: формує загальні з клієнтом сеансу секретні ключі для симетричного шифрування і обчислення хеш функцій;
- - переходить в режим захищеної взаємодії.
Так як при формуванні параметрів SSL-сесії і клієнт, і сервер користувалися одними і тими ж вихідними даними (узгодженими алгоритмами, спільної секретної послідовністю Pre_MasterSecret і випадковими послідовностями RAND_CL і RAND_SERV), то очевидно, що в результаті описаних вище дій вони виробили однакові сеансу секретні ключі. Для перевірки ідентичності парамегров SSL-сесії клієнт і сервер посилають один одному тестові повідомлення, зміст яких відомо кожної зі сторін:
- - клієнт формує повідомлення з власних посилок на адресу сервера на кроці 1 і посилок, отриманих від сервера на кроці 2, вносячи елемент випадковості у вигляді послідовності MasterSecret, унікальною для даної сесії; формує код для перевірки цілісності повідомлення (MAC), шифрує повідомлення на загальному сеансовому секретному ключі і відправляє серверу;
- - сервер, в свою чергу, формує повідомлення з власних посилок на адресу клієнта на кроці 2, посилок, отриманих від клієнта на кроці 1, і послідовності MasterSecret; формує код для перевірки цілісності повідомлення (MAC), шифрує повідомлення на загальному сеансовому секретному ключі і відправляє клієнту;
- - в разі успішної розшифровки і перевірки кожної зі сторін цілісності отриманих тестових повідомлень SSL-ссссія вважається встановленої, і сторони переходять в штатний режим захищеної взаємодії.
Необов'язкова друга фаза рукостискання дозволяє аутентифицировать клієнта. Вона полягає в тому, що сервер шле запит клієнта, клієнт аутентифікує себе, повертаючи підписане повідомлення (запит сервера) і свій цифровий сертифікат.
В процесі захищеної взаємодії з встановленими криптографічними параметрами SSL-сесії виконуються наступні дії:
- - кожна сторона при передачі повідомлення формує імі- товставку (MAC) для подальшої перевірки цілісності повідомлення і потім зашифровує вихідне повідомлення разом з MAC по сеансовому секретного ключа;
- - кожна сторона при прийомі повідомлення розшифровує його і перевіряє на цілісність (обчислюється поточне значення MAC і звіряється зі значенням, отриманим разом з повідомленням); в разі виявлення порушення цілісності повідомлення, SSL-сесія закривається.
Протоколи SSL і TLS набули широкого поширення, насамперед завдяки їх використанню для захисту графіка, переданого по протоколу HTTP в мережі Інтернет. У той же час надаються SSL послуги не є прозорими для додатків, т. Е. Мережеві додатки, які хочуть скористатися можливостями SSL, повинні включати в себе реалізацію протоколу (або підключати її у вигляді якихось зовнішніх модулів).