ПРОТОКОЛИ 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, повинні включати в себе реалізацію протоколу (або підключати її у вигляді якихось зовнішніх модулів).

 
Переглянути оригінал
< Попер   ЗМІСТ   ОРИГІНАЛ   Наст >