SSL Сертифікати: як працює SSL
Протокол SSL використовує середовище з декількома шарами, що і забезпечує безпеку обміну інформацією. Конфіденційність спілкування встановлюється за рахунок того, що безпечне підключення відкривається лише цільовим користувачам.
Багатошарове середовище SSL
Безпечний SSL протокол розміщується між двома протоколами: протоколом, який використовує програма-клієнт (HTTP, FTP, IMAP, LDAP, Telnet та ін.) та транспортним протоколом TCP/IP. Створюючи свого роду заслінки з обох сторін, він захищає та передає дані на транспортний рівень. Завдяки роботі за багатошаровим принципом, SSL протокол може підтримувати багато різних протоколів програм-клієнтів.
Роботу протоколу SSL можна розділити на два рівні. Перший рівень – шар протоколу підтвердження підключення (Handshake Protocol Layer). Він складається із трьох підпротоколів: протокол підтвердження підключення (Handshake Protocol), протокол зміни параметрів шифру (Change Cipher Spec Protocol) та попереджувальний протокол (Alert protocol). Другий рівень – це шар протоколу запису. На мал.1 схематично зображені рівні шарів SSL
Рівень підтвердження підключення складається із трьох підпротоколів:
- Підтвердження підключення. Цей підпротокол використовується для узгодження даних сесії між клієнтом та сервером. В дані сесії входять:
- ідентифікаційний номер сесії;
- сертифікати обох сторін;
- параметри алгоритму шифрування, який буде використаний;
- алгоритм стиснення інформації, який буде використовуватися;
- «загальний секрет», застосований для створення ключів; відкритий ключ
- Зміна параметрів шифрування . Цей підпротокол використовується для зміни даних ключа (keyingmaterial), який використовується для шифрування даних між клієнтом та сервером. Дані ключа - це інформація, яка використовується для створення ключів шифрування. Підпротокол зміни параметрів шифрування складається із одного-єдиного повідомлення. В цьому повідомленні сервер говорить, що відправник хоче змінити набір ключів. Далі, ключ обчислюється з інформації, якою обмінялися сторони на рівні підпротоколу підтвердження підключення.
- Попередження. Попереджувальне повідомлення показує сторонам зміну статусу чи повідомляє про можливу помилку. Існує безліч попереджувальних повідомлень, які сповіщають сторони, як при нормальному функціонуванні, так і про виникнення помилок. Як правило, попередження надсилаються тоді, коли підключення закрите чи отримане неправильне повідомлення, повідомлення неможливо розшифрувати чи користувач відміняє операцію.
Підпротокол підтвердження забезпечує реалізацію багатьох функцій безпеки. Він проводить ланцюг обміну даними, що в свою чергу починає перевірку справжності сторін та узгоджує шифрування, алгоритми хешування та стискання.
Встановлення справжності учасників
Для визначення справжності учасників обміну даними, протокол підтвердження підключення використовує сертифікат стандарту Х.509. Це є доказом для однієї сторони, оскільки допомагає підтвердити справжність іншої сторони, яка володіє сертифікатом та секретним ключем. Сертифікат - це цифровий спосіб ідентифікації, який випускає центр сертифікації. В сертифікаті міститься ідентифікаційна інформація, період дії, публічний ключ, серійний номер і цифрові підписи емітенту.
Сертифікаційний центр – це третя сторона, якій за замовчуванням довіряють обидві сторони. При спробі встановити підключення в режимі SSL сесії, сертифікаційний центр перевіряє ініціатора (зазвичай в цій ролі виступає користувач, компютер клієнта), а потім видає йому сертифікат. Якщо необхідно, сертифікаційний центр оновлює чи конфіскує сертифікати. Перевірка справжності проходить за схемою:
- клієнту наданий сертифікат сервера;
- компютер клієнта намагається співставити емітента сертифікату серверу із списком довірчих сертифікаційних центрів;
- якщо емітент сертифікату - довірчий сертифікаційний центр, то клієнт звязуєтья з цим центром і перевіряє, чи є сертифікат справжнім, а не підробленим;
- після перевірки сертифікату у сертифікаційного центру, клієнт приймає сертифікат як свідчення справжності серверу.
Шифрування даних
Існує два основних способи шифрування даних: симетричний ключ (ще називається «загальний секретний ключ») та асиметричний ключ (друга назва - «відкритий ключ» чи «схема -секретний ключ»). Протокол SSL використовує як симетричні, так і асиметричні ключі для шифрування даних.
SSL-ключ – це зашифровані дані, які використовуються для визначення схеми шифрування даних під час сесії. Чим довший ключ, тим важче його зламати. Як правило, алгоритми асиметричних ключів більш стійкі, їх практично неможливо зламати.
Симетричний ключ. При шифруванні симетричним ключем, використовується один і той же ключ для шифрування та розшифрування даних. Якщо дві сторони хочуть обмінятися зашифрованими повідомленнями в безпечному режимі, то обидві сторони повинні мати однакові симетричні ключі. Шифрування симетричним ключем зазвичай використовується для шифрування великого обєму даних, оскільки цей процес проходить швидше, ніж при асиметричному шифруванні. Зазвичай використовуються алгоритми DES (Data Encryption Standard – стандарт шифрування даних), 3-DES (потрійний DES), RC2, RC4, и AES (Advanced Encryption Standard – сучасний стандарт шифрування).
Асиметричний ключ. Шифрування із застосуванням асиметричного (відкритого) ключа використовує кілька ключів, обидва з яких були отримані після цілого комплексу математичних обчислень. Один із ключів використовується в якості відкритого, як правило, сертифікаційний центр публікує відкритий ключ в самому сертифікаті власника (зазвичай це є заголовком (subject)). Секретний ключ тримається в таємниці і ніколи нікому не відкривається. Ці ключі працюють в парі: один ключ використовується для запуску протилежних функцій іншого ключа. Так, якщо відкритий ключ використовується щоб шифрувати дані, то розшифрувати їх можна лише секретним ключем. Якщо дані шифруються секретним ключем, то відкритий ключ повинен це розшифровувати. Такий взаємозвязок дозволяє, використовуючи схему шифрування відкритим ключем, робити дві важливі речі. По-перше, будь-який користувач може отримати відкритий ключ за призначенням та використовувати його для шифрування даних, розшифрувати які зможе лише користувач, у якого є секретний ключ. По-друге, якщо заголовок шифрує дані, використовуючи свій секретний ключ, кожен може розшифрувати дані, використовуючи відповідний відкритий ключ. Саме це є основною для цифрових підписів. Найпоширеніший алгоритм, що використовується при шифруванні із асиметричними ключами – RSA (названий на честь розробників Rivest, Shamir, Adleman).
Протокол SSL використовує шифрування з відкритим ключем для того, щоб підтвердити клієнту справжність серверу, і навпаки. Шифрування відкритим ключем також використовується для визначення ключа сесії. Ключ сесії використовується симетричними алгоритмами для шифрування великого обєму даних. Це обєднує асиметричне шифрування (для перевірки справжності) та швидке симетричне шифрування обємних даних (що не потребує великих затрат обчилювальних ресурсів та часу).
Хешування
Під час підтвердження підключення узгоджується також і хеш-алгоритм. Хеш-функція - це одностороння математична функція, яка приймає на вході повідомлення довільної довжини та обчислює з нього рядок фіксованої довжини. Хеш-значення грає роль ідентифікаційної відмітки, "відбиток повідомлення". Як відбитки пальців унікальні для кожної людини, хеш-значення також унікальні. Окрім того, як відбитки пальців значно менші, ніж сама людина, так і хеш-функція набагато менше оригінального повідомлення. Хешування використовується для забезпечення цілісності передачі даних. Найпопулярнішими хеш-алгоритмами є MD5 (Message Digest 5 – дайджест повідомлення, 5 версія) та SHA-1 (Standard Hash Algorithm – стандартний алгоритм хешування). MD5 створює 128 бітне хеш-значення, а SHA-1 створює 160 бітне хеш-значення. Існують також нові, більш стійкі алгоритми хешування: WHIRLPOOL, SHA-512, SHA-384, HAVAL, Tiger(2).
Результатом роботи хеш-алгоритму виступає значення, яке використовується для перевірки цілісності переданих даних. Це значення створюється з використанням або MAC, або HMAC. MAC - Message Authentication Code – код перевірки повідомлення. Він використовує функцію відображення та надає дані у вигляді значень фіксованого розміру, а потім - хешує саме повідомлення. MAC гарантує, що дані не були змінені під час передачі. Різниця між MAC і цифровим підписом полягає в тому, що цифрові підписи - це також спосіб підтвердження справжності. SSL використовує MAC.
HMAC - Hashed Message Authentication Code – хешований код перевірки повідомлення . HMAC схожий на MAC, але при цьому використовується хеш-алгоритм разом з загальним секретним ключем. Загальний секретний ключ прикріпляється до даних, які хешуються. Це дозволяє зробити хешування більш безпечним, оскільки обидві сторони повинні мати однакові секретні ключі для підтвердження справжності даних. HMAC використовується лише протоколом TLC.
Рівень запису
Протокол на рівні шару запису отримує зашифровані дані від програми-клієнта та передає його на транспортний шар. Протокол запису бере дані, розбиває на блоки розміром, який підходить криптографічному алгоритму, використовує MAC (чи HMAC) і потім шифрує (розшифровує) дані. При цьому використовується інформація, яка була узгоджена під час протоколу підтвердження даних. В деяких випадках на цьому рівні проходить стискання (розпакування) даних.
Якщо у Вас виникли запитання з приводу роботи SSL чи захисту Вашого сайту – можете цілодобово звертатися у наш відділ технічної підтримки . Щоб замовити сертифікат, будь ласка, звертайтесь у відділ продажу.
Використання матеріалів HostPro.ua дозволяється за умови посилання на джерело.